{"version":3,"sources":["components/actionNav.js","components/buttons.js","components/dropdowns.js","components/filters.js","components/form.js","components/inputs.js","components/map.js","components/multiDropdown.js","components/nav.js","components/overlay.js","components/popups.js","components/progress.js","components/tables.js","components/tabs.js","global/forms.js","global/icons.js","helpers/date-input.js","helpers/date.js","helpers/dom.js","helpers/markerCluster.js","helpers/scrollLock.js","helpers/speech.js","helpers/util.js","sessions/mfa.js","sessions/session.js","sessions/sessionAjax.js","helpers/chartJS/Chart.min.js","modules/Administration/resetPassword.js","modules/Administration/resetPasswordAjax.js","modules/Authorizations/assessmentHistory.js","modules/Authorizations/authorizationLanding.js","modules/Authorizations/authorizations.js","modules/Authorizations/authorizationsAjax.js","modules/Authorizations/newVendorInfo.js","modules/Authorizations/vendorCertification.js","modules/Authorizations/vendorGeneral.js","modules/Authorizations/vendorInfo.js","modules/Authorizations/vendorLocationReview.js","modules/Authorizations/vendorProviderType.js","modules/Authorizations/vendorServices.js","modules/Authorizations/vendorUCR.js","modules/CaseNotes/caseNotes.js","modules/CaseNotes/caseNotesData.js","modules/CaseNotes/caseNotesOverview.js","modules/CaseNotes/caseNotesPhrases.js","modules/CaseNotes/caseNotesReports.js","modules/CaseNotes/caseNotesReviewTable.js","modules/CaseNotes/caseNotesTimer.js","modules/CaseNotes/clipboard.js","modules/CaseNotesOld/caseNotes.js","modules/CaseNotesOld/caseNotesAjax.js","modules/CaseNotesOld/caseNotesTimer.js","modules/CaseNotesOld/documentationTimer.js","modules/CaseNotesOld/editPhrases.js","modules/ConsumerFinances/cfEditAccount.js","modules/ConsumerFinances/ConsumerFinanceAttachments.js","modules/ConsumerFinances/ConsumerFinances.js","modules/ConsumerFinances/ConsumerFinancesAjax.js","modules/ConsumerFinances/NewEntryConsumerFinances.js","modules/covid/checklist.js","modules/covid/checklistActions.js","modules/covid/checklistFields.js","modules/covid/covidAjax.js","modules/covid/covidLanding.js","modules/Dashboard/dashboard.js","modules/Dashboard/home.js","modules/Dashboard/homeAjax.js","modules/Dashboard/psiLogin.js","modules/DayServices/dayServices.js","modules/DayServices/dayServicesAjax.js","modules/Employment/addEditEmployers.js","modules/Employment/Employment.js","modules/Employment/EmploymentAjax.js","modules/Employment/EmploymentInformation.js","modules/Employment/NewEmployment.js","modules/Employment/PositionTask.js","modules/Employment/WagesBenefits.js","modules/Employment/WorkSchedule.js","modules/ESignatures/esignatures.js","modules/ESignatures/esignaturesAjax.js","modules/Forms/forms.js","modules/Forms/formsAjax.js","modules/FSS/EditFamilies.js","modules/FSS/EditFamilyHeader.js","modules/FSS/EditFamilyInformation.js","modules/FSS/EditMembers.js","modules/FSS/FSS.js","modules/FSS/FSSAjax.js","modules/IncidentTracking/incidentTracking.js","modules/IncidentTracking/incidentTrackingAjax.js","modules/Infal/infal.js","modules/Infal/infalAjax.js","modules/MultiTabs/multiTabs.js","modules/OneSpan/oneSpan.js","modules/OneSpan/oneSpanAjax.js","modules/OOD/employers.js","modules/OOD/OOD.js","modules/OOD/OODAjax.js","modules/Outcomes/addEditOutcomeServices.js","modules/Outcomes/addOutcomes.js","modules/Outcomes/addServicesForm.js","modules/Outcomes/importServices.js","modules/Outcomes/outcomes.js","modules/Outcomes/outcomesAjax.js","modules/Outcomes/outcomesReview.js","modules/Plan/plan.js","modules/Plan/planAjax.js","modules/Plan/planAttachments.js","modules/Plan/planData.js","modules/Plan/planDates.js","modules/Reports/reports.js","modules/Reports/reportsAjax.js","modules/Roster/roster.js","modules/Roster/rosterAjax.js","modules/Roster/rosterWorkflow.js","modules/Scheduling/scheduling.js","modules/Scheduling/schedulingAjax.js","modules/Settings/defaults.js","modules/Settings/defaultsAjax.js","modules/Settings/help.js","modules/Settings/information.js","modules/SingleEntry/timeEntry.js","modules/SingleEntry/timeEntryAjax.js","modules/SingleEntry/timeEntryDetailsPopup.js","modules/SimpleMar/simpleMar.js","modules/SimpleMar/simpleMarAjax.js","modules/Transportation/transportationLanding.js","modules/Transportation/transportationLandingAjax.js","modules/WaitingList/waitingList.js","modules/WaitingList/waitingListAssessment.js","modules/WaitingList/waitingListData.js","modules/WaitingList/waitingListOverview.js","modules/Workshop/permissions.js","modules/Workshop/workshop.js","modules/Workshop/workshopAjax.js","modules/Workflow/workflow.js","modules/CaseNotes/archive/Notifications.js","modules/CaseNotes/archive/Tutorial.js","modules/CaseNotes/archive/Validations.js","modules/CaseNotes/components/ConfirmationPopup.js","modules/CaseNotes/components/DateNav.js","modules/CaseNotes/components/RequestVisualizer.js","modules/CaseNotes/components/RosterCard.js","modules/CaseNotes/components/RosterPicker.js","modules/CaseNotes/components/WarningPopup.js","modules/CaseNotes/UI/Attachments.js","modules/CaseNotes/UI/Button.js","modules/CaseNotes/UI/Checkbox.js","modules/CaseNotes/UI/CheckboxGroup.js","modules/CaseNotes/UI/Dialog.js","modules/CaseNotes/UI/Form.js","modules/CaseNotes/UI/Icon.js","modules/CaseNotes/UI/Input.js","modules/CaseNotes/UI/Portrait.js","modules/CaseNotes/UI/Radio.js","modules/CaseNotes/UI/Select.js","modules/CaseNotes/UI/Spinner.js","modules/CaseNotes/UI/Table.js","modules/CaseNotes/UI/Textarea.js","modules/CaseNotes/UI/Toast.js","modules/CaseNotes/utils/DOM.js","modules/CaseNotes/utils/UTIL.js","modules/CaseNotesOld/overview/cnFilters.js","modules/CaseNotesOld/overview/notesOverview.js","modules/CaseNotesOld/note/cnAttachment.js","modules/CaseNotesOld/note/insertPhrases.js","modules/CaseNotesOld/note/newNote.js","modules/CaseNotesOld/note/newNoteSSA.js","modules/CaseNotesOld/note/note.js","modules/CaseNotesOld/note/noteSSA.js","modules/CaseNotesOld/note/reviewNote.js","modules/Dashboard/Absent/absent.js","modules/Dashboard/Absent/absentAjax.js","modules/Dashboard/AdminSingleEntry/adminSingleEntry.js","modules/Dashboard/AdminSingleEntry/adminSingleEntryAjax.js","modules/Dashboard/CaseNotesProductivity/caseNotesProductivity.js","modules/Dashboard/CaseNotesProductivity/caseNotesProductivityAjax.js","modules/Dashboard/CaseNotesRejected/caseNotesRejected.js","modules/Dashboard/CaseNotesRejected/caseNotesRejectedAjax.js","modules/Dashboard/CNCaseLoad/cnCaseLoad.js","modules/Dashboard/CNCaseLoad/cnCaseLoadAjax.js","modules/Dashboard/ConsumerProgressNotes/consumerProgressNotes.js","modules/Dashboard/CustomLinksAndMessages/linksAndMessages.js","modules/Dashboard/CustomLinksAndMessages/linksAndMessagesAjax.js","modules/Dashboard/ConsumerFinances/ConsumerFinances.js","modules/Dashboard/ConsumerFinances/ConsumerFinancesAjax.js","modules/Dashboard/DayServiceClockedIn/clockedIn.js","modules/Dashboard/DayServiceClockedIn/clockedInAjax.js","modules/Dashboard/HoursWorked/hoursWorked.js","modules/Dashboard/HoursWorked/hoursWorkedAjax.js","modules/Dashboard/IncidentTracking/incidentTracking.js","modules/Dashboard/IncidentTracking/incidentTrackingAjax.js","modules/Dashboard/InfalTimeClock/infalTimeClock.js","modules/Dashboard/InfalTimeClock/infalTimeClockAjax.js","modules/Dashboard/locationNotes/unreadLocationNotesWidget.js","modules/Dashboard/RosterToDoList/RosterToDoList.js","modules/Dashboard/RosterToDoList/RosterToDoListAjax.js","modules/Dashboard/PlanToDoList/planWorkflowWidget.js","modules/Dashboard/RemainingDailyServices/remainingDailyServices.js","modules/Dashboard/RemainingDailyServices/remainingDailyServicesAjax.js","modules/Dashboard/Schedule/schedule.js","modules/Dashboard/Schedule/scheduleAjax.js","modules/Dashboard/Signatures/missingSignatures.js","modules/Dashboard/Signatures/signaturesAjax.js","modules/Dashboard/TimeClock/timeClock.js","modules/Dashboard/TimeClock/timeClockAjax.js","modules/Dashboard/UnapprovedTimeEntries/singleEntryCount.js","modules/Dashboard/UnapprovedTimeEntries/singleEntryCountAjax.js","modules/IncidentTracking/incident/incident.js","modules/IncidentTracking/incident/newIncident.js","modules/IncidentTracking/incident/permissions.js","modules/IncidentTracking/incident/reviewIncident.js","modules/IncidentTracking/incidentCard/incidentCard.js","modules/IncidentTracking/overview/incidentOverview.js","modules/OOD/Form10/OODFormTransportation.js","modules/OOD/Form16/summerYouthWorkExperience.js","modules/OOD/Form16/summerYouthWorkExperienceSummary.js","modules/OOD/Form4/MonthlyPlacement.js","modules/OOD/Form4/MonthlySummary.js","modules/OOD/Form6/Tier1andJDPlan.js","modules/OOD/Form8/communityBasedAssessment.js","modules/OOD/Form8/communityBasedAssessmentSummary.js","modules/Plan/ISP/ISP.js","modules/Plan/assessment/assessment.js","modules/Plan/assessment/assessmentAjax.js","modules/Plan/workflow/planWorkflow.js","modules/Plan/PlanValidation/planValidation.js","modules/Plan/PlanValidation/planValidationAjax.js","modules/Roster/absent/absent.js","modules/Roster/absent/absentAjax.js","modules/Roster/groups/rosterGroupIndividuals.js","modules/Roster/groups/rosterGroups.js","modules/Roster/groups/rosterGroupsAjax.js","modules/Roster/info/consumerInfo.js","modules/Roster/info/demographics.js","modules/Roster/intellivue/intellivue.js","modules/Roster/notes/locationNotes.js","modules/Roster/notes/locationNotesAjax.js","modules/Roster/notes/progressNotes.js","modules/Roster/notes/progressNotesAjax.js","modules/Scheduling/ApproveRequestOff/schedulingApproveRequest.js","modules/Scheduling/Calendar/schedulingCalendar.js","modules/Scheduling/RequestOff/schedulingRequestTimeOff.js","modules/Settings/widget/widgetSettings.js","modules/Settings/widget/widgetSettingsAjax.js","modules/SingleEntry/Signature/signature.js","modules/SingleEntry/Signature/signatureAjax.js","modules/SingleEntry/TimeEntry/timeEntryCard.js","modules/SingleEntry/TimeEntry/timeEntryEdit.js","modules/SingleEntry/TimeEntry/timeEntryNew.js","modules/SingleEntry/Reports/reports.js","modules/SingleEntry/Reports/reportsAjax.js","modules/SingleEntry/TimeReview/timeEntryReview.js","modules/SingleEntry/TimeApproval/timeApproval.js","modules/Transportation/addRoute/addRoute.js","modules/Transportation/addRoute/addRouteAjax.js","modules/Transportation/myRoutes/myRoute.js","modules/Transportation/myRoutes/myRouteAjax.js","modules/Transportation/myRoutes/selectedRoutePopup.js","modules/Transportation/manageRoutes/editRoute.js","modules/Transportation/manageRoutes/manageRoutes.js","modules/Transportation/manageRoutes/manageRoutesAjax.js","modules/Transportation/manageRoutes/manageRoutesFilter.js","modules/Transportation/manageRoutes/updatePopup.js","modules/Workflow/Viewer/editResponsibleRelationships.component.js","modules/Workflow/Viewer/editWorkflowStep.component.js","modules/Workflow/Viewer/formsWorkflowStep.component.js","modules/Workflow/Viewer/workflow.component.js","modules/Workflow/Viewer/workflowDocument.component.js","modules/Workflow/Viewer/workflowGroup.component.js","modules/Workflow/Viewer/workflows.component.js","modules/Workflow/Viewer/workflowStep.component.js","modules/Workflow/Viewer/workflowViewer.ajax.js","modules/Workflow/Viewer/workflowViewer.component.js","modules/Transportation/vehicleInspection/inspectionLanding.js","modules/Transportation/vehicleInspection/reviewInspectionFilter.js","modules/Transportation/vehicleInspection/reviewInspections.js","modules/Transportation/vehicleInspection/vehicleInspection.js","modules/Transportation/vehicleInspection/vehicleInspectionAjax.js","modules/IncidentTracking/incidentCard/sections/consumerSectionNew.js","modules/IncidentTracking/incidentCard/sections/detailsSection.js","modules/IncidentTracking/incidentCard/sections/employeeSection.js","modules/IncidentTracking/incidentCard/sections/peopleSection.js","modules/Plan/ISP/ConsentAndSign/assignCaseload.js","modules/Plan/ISP/ConsentAndSign/consentAndSign.js","modules/Plan/ISP/ConsentAndSign/consentAndSignAjax.js","modules/Plan/ISP/ConsentAndSign/relationships.js","modules/Plan/ISP/ConsentAndSign/salesforce.js","modules/Plan/ISP/ConsentAndSign/signature.js","modules/Plan/ISP/ConsentAndSign/teamMember.js","modules/Plan/ISP/ConsentAndSign/vendor.js","modules/Plan/ISP/ContactInformation/contactInformation.js","modules/Plan/ISP/ContactInformation/contactInformationAjax.js","modules/Plan/ISP/ContactInformation/importantPeople.js","modules/Plan/ISP/ContactInformation/importantPlaces.js","modules/Plan/ISP/ContactInformation/inportantGroups.js","modules/Plan/ISP/Introduction/introduction.js","modules/Plan/ISP/Introduction/introductionAjax.js","modules/Plan/ISP/Outcome/outcomes.js","modules/Plan/ISP/Outcome/outcomesAjax.js","modules/Plan/ISP/RestrictiveMeasures/restrictiveMeasures.js","modules/Plan/ISP/RestrictiveMeasures/restrictiveMeasuresAjax.js","modules/Plan/ISP/ServicesSupports/servicesSupports.js","modules/Plan/ISP/ServicesSupports/servicesSupportsAjax.js","modules/Plan/ISP/Summary/Summary.js","modules/Plan/ISP/Summary/SummaryAjax.js","modules/Plan/assessment/assessmentCard/assessmentCard.js","modules/Plan/assessment/assessmentCard/questionsAndAnswers.js","modules/Plan/assessment/assessmentCard/tableOfContents.js","modules/Settings/widget/cnCaseLoadSettings/cnCaseLoadSettings.js","modules/Settings/widget/cnProductivitySettings/cnProductivitySettings.js","modules/Settings/widget/cnProductivitySettings/cnProductivitySettingsAjax.js","modules/Settings/widget/cnRejectedSettings/cnRejectedSettings.js","modules/Settings/widget/wfPlanSettings/wfPlanSettings.js","modules/Transportation/myRoutes/routeDocumentation/consumerCard.js","modules/Transportation/myRoutes/routeDocumentation/routeDocumentation.js","modules/Transportation/myRoutes/routeDocumentation/routeDocumentationAjax.js"],"names":["ACTION_NAV","nav","setColumns","count","classList","remove","add","hide","show","clear","innerHTML","populate","elements","length","forEach","ele","appendChild","handleNavEvents","event","target","dataset","actionNav","activeModule","actioncenter","activeSection","newNote","handleActionNavEvent","newNoteSSA","reviewNote","dayServices","outcomesReview","outcomes","newIncident","rosterAbsent","rosterGroupIndividuals","roster","timeEntryCard","timeEntryReview","timeApproval","workshop","assessmentHistory","authorizations","plan","covidChecklist","TRANS_routeDocumentation","TRANS_manageEditRoute","TRANS_addRoute","forms","OOD","resetPassword","ConsumerFinances","CFEditAccount","Employment","FSS","miniRosterBtn","document","querySelector","init","addEventListener","button","build","options","createElement","id","icon","iconPos","text","icons","toLowerCase","style","type","toggle","setAttribute","btnText","toggled","toggleText","classNames","Array","isArray","c","attributes","att","key","value","callback","tabindex","tabIndex","dropdown","dropdownId","className","label","readonly","wrap","select","e","selectedOption","selectedIndex","notch","inlineBuild","span","hiddenDropdown","hidOpt","data","defaultVal","getElementById","d","option","a","populateStyle","groupingPopulate","opt","nonGroupedData","group","groupLabel","groupId","dropdownValues","input","opts","charLimit","tab","accept","pointerEvents","callbackType","onBlurCallback","characterCount","undefined","initialLength","innerText","checkOverLimit","handleEvents","forceCharLimit","subString","substring","sttBtn","azureSTTConnection","stt","SPEECH","addSTTContinuousRecEvent","eyeBtn","preventDefault","togglePasswordVisibility","buildCheckbox","checkbox","isChecked","isDisabled","buildNativeCheckbox","buildRadio","radio","checked","name","disableInputField","element","inputEle","nodeName","parentElement","radios","querySelectorAll","enableInputField","removeAttribute","passwordInput","passwordToggleBtn","isVisible","getAttribute","passwordHide","passwordShow","GOOGLE_MAP","map","bounds","markerCluster","insertLocation","mapElement","clearMap","initMap","zoom","arguments","center","markers","google","maps","Map","maxZoom","fullscreenControl","latLngObj","markerArray","location","i","Marker","position","marker","infoWindow","InfoWindow","content","markerLabels","addListener","open","get","MarkerClusterer","imagePath","fitBounds","panToBounds","calcCenter","pos1","pos2","geometry","spherical","interpolate","createBoundry","array","LatLngBounds","pos","extend","createLatLngObj","LatLng","createMarkerArray","el","createMarkerLabel","displayText","MarkerLabel","multiDropdown","activeDropdownOptions","optionAddedFunction","optionRemovedFunction","optionAddedCallback","optionRemovedCallback","multiple","menu","contains","replace","dd","noOptions","console","warn","multiOption","display","buildChip","push","stopPropagation","chip","close","filter","prepend","getActiveOptions","NAVIGATION","NAV_MOBILE","MODULE_MENU","UTIL_MENU","mobileNav","handleNavClick","moduleMenu","utilMenu","isNavItem","currentlyOpen","targetMenu","subMenu","slice","call","gridContainer","elementsWithClass","handleMenuClick","loadModule","simpleMar","simpleMarLogin","bodyScrollLock","enableBodyScroll","loadApp","overlay","currToggleState","keyArrowRight","addAttr","keyArrowLeft","removeAttr","utilMenuBtn","modalOverlay","getElementsByClassName","disableBodyScroll","mainMenu","defaultsMenu","informationMenu","settings","widgetSettingsMenu","helpMenu","action","url","$","session","applicationName","win","window","focus","defaults","help","buildPage","widgetSettings","information","error","MINI_MODULE_MENU","menuClone","DOM","clearActionCenter","removeChild","cloneNode","menuHeader","menuInner","insertBefore","appName","multiTabs","newTabOpen","isIE","popup","parent","POPUP","header","onChangeCallback","closePopBtn","ACTIONCENTER","body","overflow","closeCallback","hideX","modal","background","appendTo","removeFrom","successfulSave","message","noPopup","sspopup","asPopup","removeOverlay","successfulSavePopup","failSave","failSavePopup","pendingSave","spinnerWrap","spinnerMessage","spinnerBar","fulfill","reject","PROGRESS","_show","progressBar","removeProperty","_hide","SPINNER","newSpinner","spinnerMessageElement","speed","PROGRESS__ANYWHERE","insertElement","containingElement","smallSpinnerWrap","smallSpinnerBar","PROGRESS__BTN","btnSpinnerWrap","buttonTextCache","btnElement","cache","set","width","clientWidth","delete","table","tableBody","tableId","sortable","Sortable","handle","draggable","onSort","evt","onSortCallback","oldIndex","newIndex","row","item","plain","headline","headerRow","td","columnHeadings","heading","startIcon","startIconHeader","startIconHeaderCallback","firstChild","endIcon","endIconHeading","secondendIcon","secondendIconHeading","allowCopy","isSortable","disabled","overlap","hasError","onClick","cell","drag","values","v","startIconCallback","endIconCallback","secondendIconCallback","onCopyClick","copy","addRows","rowData","updateRows","rowId","oldRow","newRow","replaceChild","deleteRow","getRowCount","tableRows","sortTableByHeader","headers","directions","from","index","sortColumn","transform","parseFloat","Date","parse","direction","multiplier","rows","newRows","sort","rowA","rowB","cellA","childNodes","cellB","b","tabs","active","tabWrap","tabNav","tabBody","sections","sec","navItem","section","secClass","activeTab","targetSection","tabNavCallback","TABS","buildTabs","buildTabsNav","tabsNav","buildTabsBody","tabsBody","buildNavItem","navText","isActive","ISPValidationCheck","planValidation","returnIspValidation","assessmentValidationCheck","returnAssessmentValidationData","navAlertDiv","createTooltip","complete","contactSectionComplete","summaryRisksValidation","buildTabSection","sectionMarkup","tabSection","tabsData","markup","targetTab","targetTabIndex","targetSectionId","navOnClick","toggleNavStatus","status","form","formInputs","formElements","fi","tag","INPUT","SELECT","tmpReports","reportForm","formStyle","attachment","absent","arrowBack","arrowNext","bell","calendar","camera","car","checkmark","edit","deSelectAll","download","eraser","ellipsis","info","keyArrowUp","keyArrowDown","multiSelect","no","note","openNew","outcomeNew","people","save","search","stamp","warning","refresh","selectAll","send","thumbUp","thumbDown","thumbUpDown","microphone","microphoneFilled","medicineBottle","peopleGroup","PDFForm","attachmentSmall","phone","Empty","Email","Delete","Gear","PDFFormWhite","workflow","t","exports","module","define","amd","n","r","o","loaded","m","p","__esModule","addPickerToOtherInputs","supportsDateInput","addPickerToDateInputs","Object","defineProperty","Math","self","Function","__g","hasOwnProperty","f","u","TypeError","Symbol","store","version","__e","s","l","F","G","h","S","y","P","B","W","g","x","apply","virtual","R","U","keys","enumerable","configurable","writable","random","concat","toString","split","propertyIsEnumerable","prototype","ceil","floor","isNaN","valueOf","charAt","M","w","O","D","k","T","_","A","E","j","C","N","entries","src","contentWindow","write","create","defineProperties","getOwnPropertyNames","getOwnPropertySymbols","String","getFullYear","getMonth","getDate","setDate","getDay","getTimezoneOffset","setHours","getHours","test","masks","ddd","i18n","dayNames","dddd","mm","mmm","monthNames","mmmm","yy","yyyy","hh","H","HH","MM","ss","L","round","tt","TT","Z","match","pop","abs","shortDate","mediumDate","longDate","fullDate","shortTime","mediumTime","longTime","isoDate","isoTime","isoDateTime","isoUtcDateTime","expiresHeaderFormat","locale","format","localeText","getLocaleText","valueAsDate","valueAsNumber","NaN","attachTo","keyCode","pingInput","sync","indexOf","substr","days","months","today","ja","thePicker","date","isOpen","container","year","createRangeSelect","setYear","refreshDaysMatrix","month","setMonth","textContent","setInput","daysHead","hasAttribute","parseInt","removeClickOut","parentNode","removeBlur","blur","removeEventListener","setTimeout","onpopstate","getBoundingClientRect","top","height","documentElement","scrollTop","trim","right","left","scrollLeft","refreshLocale","absoluteDate","join","Event","createEvent","initEvent","dispatchEvent","getTime","constructor","next","done","isExtensible","preventExtensions","NEED","KEY","fastKey","getWeak","onFreeze","getOwnPropertyDescriptor","getPrototypeOf","charCodeAt","max","min","_t","_i","_k","Arguments","JSON","stringify","J","I","Y","z","QObject","findChild","iterator","K","V","q","Q","X","et","nt","for","keyFor","useSetter","useSimple","refs","parts","css","media","sourceMap","insertAt","nextSibling","Error","splice","rel","singleton","bind","URL","createObjectURL","revokeObjectURL","Blob","btoa","href","styleSheet","cssText","createTextNode","unescape","encodeURIComponent","navigator","userAgent","head","getElementsByTagName","Boolean","locals","dates","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_DAY","MILLISECONDS_IN_WEEK","toDate","argument","argStr","toInteger","dirtyNumber","number","Number","cloneDate","getTimezoneOffsetInMilliseconds","utcDate","UTC","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","isValid","dirtyDate","leadingZero","num","getTodaysDateObj","todaysDate","getTodaysDateISOString","getDaysInMonth","monthIndex","lastDayOfMonth","setFullYear","addHours","amount","newDateValue","addDays","dirtyAmount","addWeeks","addMonths","desiredMonth","dateWithDesiredMonth","daysInMonth","addYears","subHours","subDays","subWeeks","subMonths","subYears","endOfWeek","dirtyOptions","weekStartsOn","UTIL","RangeError","day","diff","startDayOfWeek","util","startOfDay","endOfMonth","_date","startOfMonth","startOfWeek","differenceInDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeftTime","timestampRightTime","timestampLeft","timestampRight","differenceInWeeks","startOfWeekLeft","startOfWeekRight","differenceInMonths","dateLeft","dateRight","yearDiff","monthDiff","differenceInYears","isAfter","dirtyDateToCompare","dateToCompare","isBefore","isEqual","dirtyLeftDate","dirtyRightDate","isDateInCurrentWeek","currentDate","curentWeekStart","curentWeekEnd","isDateInFuture","checkFormat","dateString","isoFormatPattern","standardFormatPattern","formatISO","originalDate","representation","result","tzOffset","dateDelimiter","timeDelimiter","offset","absoluteOffset","hourOffset","minuteOffset","sign","hour","minute","second","separator","time","formateToISO","splitBy","YYYY","DD","formateToStandard","joinBy","shorten","shortenYear","eachDayOfInterval","interval","startDate","start","endDate","end","endTime","step","convertFromMilitary","amPm","convertToMilitary","timeString","amPM","formatSecondsToFullTime","totalSeconds","hours","minutes","seconds","_UTIL","padNumberWithZero","getMilitaryTimeDifference","startTime","timeDifference","totalMinutes","formattedTime","removeTimestamp","splitDate","BODY","GRID_CONTAINER","autosizeTextarea","textarea","textareas","area","scrollHeight","toggleHeaderOpacity","removeHeaderOpacity","toggleNavLayout","isMobile","actionBtn","requestAnimFrame","cb","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","scrollToTopOfPage","opt_markers","opt_options","OverlayView","map_","MARKER_CLUSTER_IMAGE_PATH_","MARKER_CLUSTER_IMAGE_EXTENSION_","markers_","clusters_","sizes","styles_","ready_","zIndex_","MAX_ZINDEX","gridSize_","minClusterSize_","maxZoom_","imagePath_","imageExtension_","zoomOnClick_","averageCenter_","setupStyles_","setMap","prevZoom_","getZoom","that","minZoom","mapTypes","getMapTypeId","resetViewport","redraw","addMarkers","obj1","obj2","object","property","onAdd","setReady_","draw","size","fitMapToMarkers","getMarkers","getPosition","setZIndex","zIndex","getZIndex","setStyles","styles","getStyles","isZoomOnClick","isAverageCenter","getTotalMarkers","setMaxZoom","getMaxZoom","calculator_","numStyles","dv","setCalculator","calculator","getCalculator","opt_nodraw","pushMarkerTo_","isAdded","repaint","addMarker","removeMarker_","removeMarker","removed","removeMarkers","markersCopy","ready","createClusters_","getTotalClusters","getMap","getGridSize","setGridSize","getMinClusterSize","setMinClusterSize","getExtendedBounds","projection","getProjection","tr","getNorthEast","lat","lng","bl","getSouthWest","trPix","fromLatLngToDivPixel","blPix","ne","fromDivPixelToLatLng","sw","isMarkerInBounds_","clearMarkers","opt_hide","cluster","oldClusters","distanceBetweenPoints_","p1","p2","dLat","PI","dLon","sin","cos","atan2","sqrt","addToClosestCluster_","distance","clusterToAddTo","getCenter","isMarkerInClusterBounds","newCluster","Cluster","mapBounds","getBounds","markerClusterer","markerClusterer_","center_","bounds_","clusterIcon_","ClusterIcon","isMarkerAlreadyAdded","calculateBounds_","len","updateIcon","getMarkerClusterer","getSize","mz","sums","setCenter","setSums","opt_padding","padding_","cluster_","div_","sums_","visible_","triggerClusterClick","clusterBounds","trigger","getPosFromLatLng_","createCss","panes","getPanes","overlayMouseTarget","addDomListener","latlng","width_","height_","onRemove","text_","index_","useStyle","url_","textColor_","anchor_","textSize_","backgroundPosition_","backgroundPosition","txtColor","txtSize","global","factory","mod","_toConsumableArray","arr","arr2","hasPassiveEvents","passiveTestOptions","passive","isIosDevice","platform","locks","documentListenerAdded","initialClientY","previousBodyOverflowSetting","previousBodyPaddingRight","allowTouchMove","some","lock","rawEvent","touches","setOverflowHidden","_reserveScrollBarGap","reserveScrollBarGap","scrollBarGap","innerWidth","paddingRight","restoreOverflowSetting","isTargetElementTotallyScrolled","targetElement","clientHeight","handleScroll","clientY","targetTouches","ontouchstart","ontouchmove","_lock","clearAllBodyScrollLocks","speechConfig","audioConfig","textField","listening","continuousListening","recognizer","SpeechSDK","SpeechRecognizer","recognizing","recognized","reason","ResultReason","RecognizedSpeech","firstElementChild","bubbles","NoMatch","log","canceled","CancellationReason","errorCode","errorDetails","errorCB","startContinuousRecognitionAsync","stop","stopContinuousRecognitionAsync","observNode","config","observer","mutationList","mutation","attributeName","disconnect","MutationObserver","observe","SpeechConfig","fromSubscription","azureSTTApi","speechRecognitionLanguage","enableDictation","setServiceProperty","ServicePropertyChannel","UriQueryParameter","AudioConfig","fromDefaultMicrophoneInput","alert","abbreviateDateYear","dateArr","camelize","str","chr","toUpperCase","capitalize","calculateTotalHours","dirtyStart","dirtyEnd","tempDate","timeDiff","hoursDiff","minutesDiff","toFixed","chunkArray","chunkSize","detectBrowser","ua","msie","ver","trident","rv","versionNumber","edge","formatDateToIso","formatDateFromIso","formatDateFromDateObj","dirtyDateObj","dateObj","formatTimeString","formatPhoneNumber","phoneNumberString","cleaned","findAndSlice","itemFind","findIndex","getGeoLocation","handleSuccess","coords","latitude","long","longitude","geoLocationPosition","handleFirstRunError","geolocation","getCurrentPosition","handleSecondRunError","enableHighAccuracy","protocol","hostname","getFormattedDateFromDate","getDBDateNow","getTodaysDate","returnObj","getCurrentTime","now","getRange","isObject","obj","iterationCopy","prop","parseXml","xmlString","parser","xmlDoc","DOMParser","parseFromString","removeDecimals","removeQuotes","string","removeNonIntegerCharactersFromString","inputString","validateTime","splitTime","validateDateFromInput","dateArray","inputDate","removeUnsavableNoteText","romanize","digits","roman","warningPopup","acceptBtn","btnWrap","rejectBtn","warningMessage","deromanize","validator","token","CM","CD","XC","XL","IX","IV","exec","LS","getStorage","user","UserId","state","localStorage","getItem","setStorage","setItem","checkValidDateRange","toggleMenuItemHighlight","current","toggleHighlight","btn","mfa","mfaPopup","submitBtn","codeInput","messageArea","buildPopup","mainElement","submitCode","cancelBtn","overlayElement","eventListeners","pleaseWait","textAlign","code","authenticatedLogin","mfaReject","errorReason","clearUNPW","errorMessage","errorBox","unInput","pwInput","firstRunShit","ViewMyInformation","UpdateMyInformation","DayServiceView","DayServiceInsert","DayServiceUpdate","DayServiceDelete","DayServiceNonBillable","DayServiceOverRide","DayServiceCaseLoad","DenyStaffClockUpdate","DenyClockUpdate","DemographicsView","DemographicsUpdate","DemographicsBasicDataView","DemographicsRelationshipsView","DemographicsPictureUpdate","DemographicsPictureDelete","DemographicsNotesView","DemographicsViewAttachments","viewLocationSchedulesKey","DemographicsViewDOB","DemographicsViewMedicaid","DemographicsViewMedicare","DemographicsViewResident","DemographicsViewSSN","DemographicsViewLocalId","DemographicsViewConsumerNumber","DemographicsUpdateRelationship","GoalsView","GoalsUpdate","InsertOutcomes","UpdateOutcomes","OutcomesReview","InsertServices","UpdateServices","UpdatePlan","ServiceActivityCaseLoad","CaseNotesView","CaseNotesTablePermissionView","CaseNotesViewEntered","CaseNotesUpdate","CaseNotesUpdateEntered","CaseNotesCaseloadRestriction","CaseNotesSSANotes","SingleEntryView","SingleEntryUpdate","anywhereMainPermission","WorkshopView","WorkshopUpdate","WorkshopCaseLoad","isCurrentlySingleEntry","groupNoteId","caseNoteEditSecond","caseNoteLocationCodePreference","caseNoteLocationNamePreference","caseNoteNeedCodePreference","caseNoteNeedNamePreference","caseNoteServiceCodePreference","caseNoteServiceNeedPreference","caseNoteBillingCodeCodePreference","caseNoteBillingCodeNamePreference","caseNoteBillingCodeServiceFundingPreference","caseNoteDisplayGroupNoteDivPreference","caseNoteDisplayGroupNoteCheckedPreference","locationRequiredCheck","serviceRequiredCheck","needRequiredCheck","contactRequiredCheck","vendorRequiredCheck","caseNoteListResponse","vendorFlag","groupConsumerCount","consumersForGroupCounter","timeOverlapConsumers","overlapNoteIds","consumerIdArray","caseNoteConsumerId","caseNoteTimeCheck","groupNamesExist","existingGroupNoteIdForUpdate","startTimeForGroupNoteUpdateCompare","endTimeForGroupNoteUpdateCompare","serviceDateForGroupNoteUpdateCompare","serviceOrBillingCodeForGroupNoteUpdateCompare","caseNotePreferencesSet","consumerEditId","updateAllGroupDropDowns","isSingleEdit","changeFromSingleToGroupNote","editingConsumerId","dontLoadAppAfterDelete","consumerGroupCount","groupSaveCounter","editOnLoad","groupOverlapCheckCounter","overlapScreenLock","UpdateCaseNotesDocTime","batchedNoteEdit","groupNoteAttemptWithDocTime","sendToDODD","sendToPortal","dobString","defaultIncidentTrackingDaysBack","editNoteMileageOnLoadFlag","SEViewAdminWidget","ciBShow","singleEntry15minDoc","Roster","Name","LName","isAdmin","PeopleId","StaffLocId","Token","browser","browserVer","OS","locations","locationids","lastMenuSelection","defaultDayServiceLocation","dsCertified","defaultDayServiceLocationFlag","defaultRosterLocation","defaultRosterLocationFlag","defaultStaffLocation","defaultDayServiceLocationName","defaultWorkshopLocation","defaultWorkshopLocationValue","defaultRosterLocationName","defaultRosterGroupValue","defaultDSTimeClockValue","defaultDSTimeClockName","defaultMoneyManagementLocation","defaultMoneyManagementLocationValue","areInSalesForce","RosterDeleteAbsent","defaultStaffLocationName","selectedLocation","strongPassword","selectedGroupId","deletedGroupId","changePasswordLinkSelected","advancedPasswordLength","dsLocationHistoryFlag","dsLocationHistoryValue","initialTimeOut","initialTimeIn","singleLoadedConsumerId","passwordSpecialCharacters","daysBackGoalsEdit","singleLoadedConsumerName","serviceStartDate","serviceEndDate","defaultCaseNoteReviewDays","defaultProgressNoteReviewDays","defaultProgressNoteChecklistReviewDays","countCheck","viewableGoalTypeIds","outcomesPermission","dayServicesPermission","caseNotesPermission","singleEntryPermission","workshopPermission","intellivuePermission","passwordResetPermission","anywhereResetPasswordPermission","anywhereConsumerFinancesPermission","anywhereFSSPermission","anywhereEmploymentPermission","selectedConsumerIdForGoalsDateBack","caseNoteEdit","consumerIdToEdit","planPeopleId","showDynamic","singleEntryUseServiceLocations","editCaseNoteId","updateEmail","tempServiceFunding","usePersonalPrefernces","defaultSeviceId","defaultSeviceName","useSessionFilterVariables","filterServiceStart","filterServiceEnd","filterDateEnteredStart","filterDateEnteredEnd","filterBillerId","filterBillerName","groupAddOnNames","intellivueSessionID","singleEntryApproveEnabled","anAdmin","ViewAdminSingleEntry","communityIntegrityRequired","singleEntryAddConsumersOnBillable","workshopBatchId","infiniteLoopFlag","incidentTrackingPermission","singleEntryLocationRequired","SingleEntryEditTimeEntry","singleEntryGottenById","singleEntrycrossMidnight","SingleEntryCaseLoad","incidentTrackingView","incidentTrackingViewPerm","incidentTrackingReviewedBy","incidentTrackingUpdate","incidentTrackingInsert","incidentTrackingDelete","incidentTrackingViewCaseLoad","defaultIncidentTrackingReviewDays","incidentTrackingPopulateIncidentDate","incidentTrackingPopulateIncidentTime","incidentTrackingPopulateReportedDate","incidentTrackingPopulateReportedTime","incidentTrackingEmailIncident","incidentTrackingCaseLoad","infalHasConnectionString","isPSI","anywhereMinutestotimeout","useAbsentFeature","useProgressNotes","singleEntryEditLocationHack","HideProgressNotes","RosterCaseLoad","firstLoad","portraitPath","isASupervisor","seAdminRemoveMap","removeGoalsWidget","createTimeEntries","changeEmailSent","evvDataCache","singleEntryShowConsumerSignature","singleEntryShowConsumerNote","schedulingUpdate","schedulingView","schedulingStartDayOfWeek","schedAllowCallOffRequests","schedRequestOpenShifts","hideAllScheduleButton","authorizationsView","authorizationsVendorInfoView","authorizationsCaseLoad","planUpdate","planDelete","planView","planInsertNewTeamMember","planAssignCaseload","downloadPlans","planSignatureUpdateDOB","planSignatureUpdateBuildingNumber","planClearSignature","PlanCaseLoad","waitingListInsert","waitingListView","waitingListUpdate","waitingListDelete","WaitingListAssessmentCaseLoad","transportationUpdate","transportationView","transportationManageRoute","transportationAddRoute","transportationCaseLoad","emarView","emarCaseLoad","sttEnabled","formsDelete","formsInsert","formsUpdate","formsView","formsCaseload","formsFormtype","OODDelete","OODInsert","OODUpdate","OODView","OODCaseLoad","OODInsertEmployers","CFDelete","CFInsert","CFUpdate","CFView","CFADDPayee","CFEditAccountEntries","CFInsertAccounts","CFUpdateEditAccounts","CFViewEditAccounts","CFViewChecking","CFViewCraditCard","CFViewFoodStamp","CFViewPettyCash","CFViewShaving","CFViewChristmasClub","CFViewSystem20183A","CFViewSystem20183","CFViewOhioEBT","CFViewViewFoodStampDebitCardEBT","ConsumerFinanceCaseLoad","ResetPasswordView","ResetPasswordUpdate","EmploymentView","EmploymentUpdate","EmploymentDelete","InsertEmployers","UpdateEmployers","EmploymentCaseLoad","consumerId","FSSView","FSSUpdate","FSSDelete","InsertFSS","FSSCaseLoad","sendWaitingListEmail","stateAbbreviation","deviceGUID","isActiveUsers","isActiveFamilies","billableTransportation","requireTimeEntryTransportationTimes","ohioEVVChangeDate","anyRequireEndTime","resize","setDefaultLoc","createCookie","saveDefaultLocationValueAjax","setTime","expires","toGMTString","escape","cookie","readCookie","nameEQ","ca","eraseCookie","setSessionVariables","cookieInnards","permissionString","tmpWindows","tmpWindow","window_name","tmpPerm","permission","tmpSpec","special_data","removeClass","ProductName","informationMenuBtn","setSessionJQUERY","each","getUserPermissions","setInterval","tokenCheck","setSession","checkforErrors","xmlReturn","retVal","ErrorText","setCookieOnFail","checkForErrors","errorXml","customPasswordChangeClick","customPasswordChange","setUpPasswordResetMessages","res","success","html","reset","toResetPage","resetPasswordClick","backToLoginPage","reload","BrowserDetect","searchString","dataBrowser","searchVersion","appVersion","dataOS","dataString","dataProp","versionSearchString","versionSearch","identity","vendor","opera","convertMilitaryTimeToAMPM","inputTime","convertedTime","overClicky","outStr","last","lastStr","compared","startsWith","IsPasswordStrong","password","preSpecialCharCheckString","replaceAll","specCharNoCommas","withCommas","specChar","RegExp","checkChangePasswordLoginValues","pass","pass1","pass2","checkPass","specialCharDisplay","getMonthName","getShortMonthName","setDefaultValue","mySrc","srcElement","parents","typeName","switchCase","saveDefaultLocationNameAjax","getConsumerGroups","tabletFocus","inputId","customTextVersionWork","customText","checkVersions","updateVersionAjax","getFormattedTime1","getAMPM","ampm","allowAccess","testInt","checkModulePermissions","addClass","disableModules","anywhereSchedulingPermission","covidPermission","transportationPermission","emarPermission","formsPermission","OODPermission","anywherePlanPermission","setUpAdminPermissions","generateURL","endPoint","webServer","address","port","serviceName","md5Hash","encoder","TextEncoder","encode","hashBuffer","crypto","subtle","digest","hashArray","Uint8Array","hashHex","padStart","logIn","loginBtn","userId","val","localDeviceId","insertData","hash","crypt","method","source","deviceId","ajax","contentType","beforeSend","dataType","response","xhr","resXML","getLogInResult","windowName","loginWarningPopup","okButton","username","is","hasClass","logInChangePassword","patchIt","strongPasswordValue","passwordInfo","setESignaturesMessage","sendCode","newCode","sendBtn","backgroundColor","Promise","resolve","generatedCodeSuccessfully","fetchData","tempUserId","generateAuthenticationCodeResult","updateHTMLAfterCodeSent","newCodeMessageDiv","popupMessageText","params","URLSearchParams","loginMessageData","redactedName","getSignerLoginMessageDataResult","maskedFirstName","maskedLastName","signerEmail","tempUserEmail","messageDiv","locationNoticeText","verifyCodeBtnWrap","sendCodeAgainBtn","verifyBtn","checkVerificationCode","hashedPassword","codeVerification","verifyESignLoginResult","esignatures","errorMessageDiv","getCustomLoginTextAndVersion","getCustomTextAndAnywhereVersionResult","changeIt","changeBtn","newPW","passwordChangeError","inactiveUser","passwordReuseError","activeElement","passwordChangeConfPOPUP","okBtn","marginBottom","resetIt","postError","errNum","errMsg","errLvl","curr_month","strDate","locationId","locationName","checkLogin","checkInfalConnectionAjax","CheckInfalConnectionResult","infalOnly","dashboard","load","getUserPermissionsResult","caseNotesPerm","find","supervisorPerm","docTimePerm","caseNoteDocTimePerm","adminSEPerm","featureLogging","featureDescription","getDefaultAnywhereSettings","getDefaultAnywhereSettingsJSONResult","admistrator","setting_value","notes_days_back","incidentTracking_days_back","checklist_days_back","minutesToTimeout","removeSEAdminMap","watchingConnection","azureSttApi","reportSeconds","incidentTrackingShowCauseAndContributingFactors","incidentTrackingShowPreventionPlan","updateIncidentSummaryText","appendITSummary","updateIncidentActionText","appendITImmediateAction","updateIncidentPreventionText","appendITPreventionPlan","updateIncidentCauseText","appendITCause","planFormCarryover","application","schedulingPermission","webPermission","seShowConsumerSignature","seShowConsumerNote","singleEntryShowTransportation","seShowTransportation","allowCallOffRequests","requestOpenShifts","oneSpan","defaultrosterlocation","defaultrosterlocationname","defaultrostergroup","defaultdayservicelocation","defaultdayservicelocationname","defaulttimeclocklocation","defaulttimeclocklocationName","defaultworkshoplocation","defaultworkshoplocationname","defaultMoneyManagementLocationName","RequireViewPlan","caseNotesWarningStartTime","warningStartTime","caseNotesWarningEndTime","warningEndTime","defaultRosterLocationValue","defaultDayServiceLocationValue","defaultTimeClockLocationValue","defaultTimeClockLocationName","defaulttimeclocklocationname","defaultWorkshopLocationName","defaultRosterGroupName","defaultrostergroupname","userName","genKey","authenticatedLoginResult","require","Chart","moment","default","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","pow","unshift","conversion","raw","getRgba","getHsla","getRgb","getHsl","getHwb","getAlpha","hexString","rgbString","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","valid","alpha","setValues","lightness","whiteness","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","hue","saturation","saturationv","blackness","rgbNumber","luminosity","contrast","level","dark","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","mix","toJSON","clone","spaces","maxes","getValues","Color","noop","uid","isNullOrUndef","isFinite","valueOrDefault","valueAtIndexOrDefault","arrayEquals","_merger","merge","_mergerIf","mergeIf","merger","assign","inherits","__super__","_deprecated","callCallback","getValueOrDefault","getValueAtIndexOrDefault","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","effects","easingEffects","ctx","clearRect","roundedRect","moveTo","arc","closePath","rect","drawPoint","translate","drawImage","restore","beginPath","lineTo","SQRT1_2","fill","stroke","_isPointInArea","bottom","clipArea","clip","unclipArea","steppedLine","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","drawRoundedRectangle","_set","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","toLineHeight","toPadding","_parseFont","fontSize","family","fontFamily","lineHeight","fontStyle","weight","cacheable","_factorize","log10","LOG10E","getRtlAdapter","setWidth","xPlus","leftForLtr","overrideTextDirection","canvas","getPropertyValue","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","easing","math","rtl","initialize","_type","hidden","pivot","_view","_model","_start","transition","tooltipPosition","hasValue","isNumber","chart","currentStep","numSteps","render","onAnimationProgress","onAnimationComplete","animation","duration","onProgress","onComplete","animations","request","addAnimation","animating","cancelAnimation","startDigest","advance","_chartjs","listeners","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","scales","getDataset","xAxisID","xAxes","yAxisID","yAxes","datasets","getDatasetMeta","getScaleForId","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","_update","destroy","_data","createMetaDataset","_chart","_datasetIndex","createMetaData","_index","addElementAndReset","updateElement","buildOrUpdateElements","resyncElements","_configure","_config","_cachedDataOpts","update","getStyle","_resolveDatasetElementOptions","_resolveDataElementOptions","borderColor","custom","datasetIndex","hover","dataIndex","freeze","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","insertElements","onDataPush","onDataPop","onDataShift","shift","onDataSplice","onDataUnshift","it","at","startAngle","endAngle","pixelMargin","outerRadius","innerRadius","rt","borderAlign","lineWidth","lineJoin","fullCircles","ot","inLabelRange","radius","hoverRadius","inRange","getAngleFromPoint","angle","getCenterPoint","getArea","circumference","fillStyle","strokeStyle","st","lt","line","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","ut","spanGaps","_children","_loop","previousItem","skip","lineCap","setLineDash","lineDashOffset","dt","ht","ct","hitRadius","point","pointStyle","ft","inXRange","inYRange","padding","rotation","gt","pt","mt","base","vt","bt","borderSkipped","horizontal","xt","rectangle","yt","outer","inner","fillRect","kt","wt","Mt","St","Arc","Line","Point","Rectangle","Ct","Pt","At","barThickness","stackCount","pixels","_length","getTicks","getPixelForTick","scale","categoryPercentage","barPercentage","chunk","ratio","mode","gridLines","offsetGridLines","bar","Dt","stack","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","_updateElementGeometry","getBasePixel","isHorizontal","calculateBarValuePixels","calculateBarIndexPixels","_getStacks","_getMatchingVisibleMetas","stacked","getStackCount","getStackIndex","getPixelForValue","_startPixel","_endPixel","_parseValue","chartArea","Tt","It","tooltips","callbacks","title","xLabel","yLabel","Ft","getPixelForDecimal","_options","Lt","Ot","Rt","zt","animateRotate","animateScale","legendCallback","outerHTML","legend","generateLabels","controller","cutoutPercentage","Nt","getRingIndex","isDatasetVisible","_getRingWeight","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","offsetX","offsetY","total","calculateTotal","_getRingWeightOffset","calculateCircumference","axis","horizontalBar","Bt","Et","Wt","Vt","Ht","ticks","reverse","jt","qt","Ut","_showLine","showLine","lineTension","_scale","updateBezierControlPoints","calculatePointY","stepped","getRightValue","_getSortedVisibleDatasetMetas","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","previous","Yt","angleLines","circular","pointLabels","beginAtZero","Gt","_starts","_angles","_updateRadius","countVisibleElements","_computeAngle","getVisibleDatasetCount","xCenter","yCenter","getDistanceFromCenterForValue","doughnut","Xt","Kt","Zt","getPointPositionForValue","scatter","$t","bubble","polarArea","pie","radar","Jt","native","getRelativePosition","Qt","te","ee","POSITIVE_INFINITY","ie","intersect","ae","modes","single","x-axis","nearest","re","oe","where","se","le","ue","box","maxPadding","getPadding","outerWidth","outerHeight","de","he","fullWidth","ce","layout","fe","ge","addBox","boxes","_layers","removeBox","configure","leftAndTop","rightAndBottom","vertical","availableWidth","vBoxMaxWidth","hBoxMaxHeight","pe","__proto__","me","ve","be","xe","ye","_e","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","ke","we","Me","Se","Ce","Pe","Ae","resizer","_reset","maintainAspectRatio","renderProxy","animationName","reflow","offsetParent","De","Te","disableCSSInjection","_enabled","_ensureLoaded","getRootNode","containsStyles","host","acquireContext","getContext","initial","aspectRatio","releaseContext","proxies","addEvent","removeEvent","Ie","Fe","plugins","Le","_plugins","_cacheId","register","unregister","getAll","notify","descriptors","plugin","$plugins","_invalidate","Oe","constructors","registerScaleType","getScaleConstructor","getScaleDefaults","updateScaleDefaults","addScalesToLayout","Re","ze","enabled","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","Ne","average","distanceBetweenPoints","Be","Ee","We","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","opacity","legendColorBackground","Ve","He","je","_lastActive","getTitle","getBeforeBody","getBody","before","lines","after","getAfterBody","getFooter","_active","caretX","caretY","_eventPosition","getLabelForIndex","itemSort","labelColors","labelTextColors","dataPoints","reduce","measureText","font","fontString","drawCaret","getCaretPosition","x1","y1","x2","y2","x3","y3","drawTitle","textBaseline","fillText","drawBody","strokeRect","drawFooter","drawBackground","quadraticCurveTo","globalAlpha","handleEvent","getElementsAtEventForMode","qe","Ue","positioners","Ye","Ge","Xe","Ke","ensureScalesHaveIDs","buildOrUpdateScales","tooltip","Ze","$e","Je","events","onHover","animationDuration","responsive","responsiveAnimationDuration","Qe","construct","_bufferedRender","instances","retinaScale","devicePixelRatio","bindEvents","initToolTip","getMaximumWidth","getMaximumHeight","onResize","dtype","dposition","isDefault","mergeTicksOptions","buildOrUpdateControllers","destroyDatasetMeta","order","resetElements","lazy","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","meta","drawDatasets","_drawTooltip","_getSortedDatasetMetas","drawDataset","easingValue","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","tn","Controller","types","configMerge","scaleMerge","en","nn","formats","startOf","endOf","_create","override","an","rn","formatters","toExponential","logarithmic","on","sn","ln","un","dn","hn","major","minor","gc","first","widest","highest","cn","drawTicks","tickMarkLength","fn","gn","color","fontColor","pn","mn","vn","drawBorder","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","bn","zeroLineIndex","paddingLeft","paddingTop","paddingBottom","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","sampleSize","maxWidth","maxHeight","margins","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","minSize","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","_isVisible","labelRotation","_getLabelSizes","toDegrees","toRadians","handleMargins","isFullWidth","_getScaleLabel","getValueForPixel","getDecimalForPixel","getBaseValue","maxTicksLimit","_tickSize","_computeGridLineItems","_alignPixel","tx1","ty1","tx2","ty2","ticksLength","borderValue","_computeLabelItems","textOffset","_drawGrid","_drawLabels","_drawTitle","_draw","xn","yn","_n","minIndex","maxIndex","_startValue","_valueRange","kn","_defaults","wn","Mn","Sn","handleTickRangeOptions","suggestedMin","suggestedMax","getTickLimit","stepSize","_computeTickLimit","handleDirectionalChanges","maxTicks","precision","fixedStepSize","niceNum","_decimalPlaces","almostWhole","almostEquals","ticksAsNumbers","_endValue","Cn","Pn","neg","relativePoints","An","Dn","NEGATIVE_INFINITY","Tn","In","Fn","Ln","On","Rn","minNotZero","tickValues","_getFirstTickValue","_valueOffset","zn","Nn","Bn","En","Wn","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","Vn","Hn","jn","qn","Un","Yn","Gn","drawingArea","_pointLabelSizes","getPointPosition","longestText","getIndexAngle","setReductions","setCenterPoint","getBasePosition","Xn","Kn","Zn","$n","Jn","MIN_SAFE_INTEGER","Qn","MAX_SAFE_INTEGER","ti","millisecond","common","steps","week","quarter","ei","ni","ii","ai","ri","lo","hi","oi","_adapter","si","li","ui","di","adapters","displayFormats","unit","_table","_timestamps","getLabelCapacity","distribution","minUnit","unitStepSize","isoWeekday","_unit","_majorUnit","_offsets","factor","tooltipFormat","datetime","tickFormatFunction","getPixelForOffset","_getLabelSize","getLabelWidth","displayFormat","ci","category","radialLinear","_id","filler","propagate","gi","boundary","pi","mi","cx","cy","scaleBottom","scaleTop","scaleZero","vi","visible","bi","xi","yi","ki","afterDatasetsUpdate","$filler","mapper","beforeDatasetsDraw","wi","Mi","Si","Ci","usePointStyle","boxWidth","align","onLeave","lineDash","Pi","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","lineWidths","columnWidths","columnHeights","SQRT2","_getLegendItemAt","Ai","Di","_element","beforeInit","afterEvent","Ti","Ii","Fi","titleBlock","Li","Oi","Ri","zi","Ni","helpers","defaultView","_getParentNode","getComputedStyle","findNextWhere","findPreviousWhere","aliasPixel","currentDevicePixelRatio","EPSILON","model","deltaK","mK","oRequestAnimationFrame","originalEvent","clientX","getConstraintWidth","getConstraintHeight","_calculatePadding","currentStyle","garbageCollect","numberOfLabelLines","CanvasGradient","CanvasPattern","_adapters","Animation","animationService","controllers","DatasetController","Element","Interaction","layouts","Scale","scaleService","Ticks","Tooltip","Bi","Legend","Title","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","SEARCH_WRAP","SEARCH_BTN","SEARCH_INPUT","INACTIVE_CHKBOX","userTableData","tempUserTableData","displayedUsers","userTable","changePasswordPopup","savePasswordBtn","cancelPasswordBtn","confirmPasswordInput","newPasswordInput","isCardDisabled","newPasswordValue","confirmPasswordValue","selectedUserID","topNav","buildRosterTopNav","buildTable","tableUserSearch","loadReviewPage","click","buildSearchBtn","changePasswordBtn","buildInactiveChkBox","setCheckForInactiveUser","buildActiveChkBox","tableOptions","buildChangePasswordPopup","userFirstName","UserLastName","popupClassNames","class","headerSpace","errortext","confirmMessage","setupChangePasswordEvents","messagetext","savePassword","checkPassword","confirmPW","resetPasswordAjax","changeUserPassword","UserID","results","populateTable","IsFirstLoad","userID","User_ID","LastName","Last_Name","FirstName","First_Name","Active","additionalInformation","activeCheckbox","setCheckUpdateUserStatus","wrap1","updateActiveInactiveUser","searchValue","consumer","firstName","lastName","fullName","fullNameReversed","matchesName","matchesNameReverse","consumerObj","getActiveInactiveUserlist","dataObj","getActiveInactiveUserDateJSONResult","getUserCredDateJSONResult","myObj","getPassword","filterRow","assessmentEntriesTable","filterPopup","selectedConsumers","selectedConsumersName","selectedConsumersId","filterValues","startDateFrom","startDateTo","endDateFrom","endDateTo","priorAuthApplFrom","priorAuthApplTo","priorAuthRecFrom","priorAuthRecTo","methodologyValuesBtnWrap","scoreValuesBtnWrap","startDateBtnWrap","endDateBtnWrap","priorAuthApplyBtnWrap","priorAuthRecBtnWrap","priorAuthAmtFromBtnWrap","priorAuthAmtToBtnWrap","HistoryData","groupedHistory","historyGroupCount","activeGroup","loadMoreHistory","chunkedArray","targetAction","roster2","getActiveConsumers","loadAssessmentHistoryLanding","authorizationLanding","miniRosterinit","landingPage","ConsumerFinancesAjax","getConsumerNameByID","getConsumerNameByIDResult","FullName","buildNewFilterBtn","filteredBy","buildFilteredBy","buildAssessmentEntriesTable","LOAD_MORE_BTN","buildLoadMoreBtn","loadAssessmentHistoryPage","assessmentEntries","authorizationsAjax","getAssessmentEntriesAsync","methodology","score","priorAuthAmtFrom","priorAuthAmtTo","getAssessmentEntriesResult","groupHistoryData","tableData","entry","behaviorMod","medicalMod","DCMod","CCMod","priorAuthApplied","priorAuthReceived","priorAuthAmount","numberWithCommas","ID","pouplateHistory","history","chunkBy","vendorKeys","methodologyValues","scoreValues","filterButtonSet","filterBtn","buildFilterPopUp","methodologyValuesBtn","methodologyValuesCloseBtn","closeFilter","scoreValuesBtn","scoreValuesCloseBtn","startDateBtn","startDateCloseBtn","endDateBtn","endDateCloseBtn","priorAuthApplyBtn","priorAuthApplyCloseBtn","priorAuthRecBtn","priorAuthRecCloseBtn","priorAuthAmtFromBtn","priorAuthAmtFromCloseBtn","priorAuthAmtToBtn","priorAuthAmtToCloseBtn","IsShow","methodologyDropdown","scoreDropdown","APPLY_BTN","CANCEL_BTN","filterPopupCancelBtn","startDateWrap","endDateWrap","applDateWrap","recDateWrap","amtWrap","populateFilterDropdown","checkRequiredFieldsOfFilter","tmpMethodology","tmpScore","tmpStartDateFrom","tmpStartDateTo","tmpEndDateFrom","tmpEndDateTo","tmpPriorAuthApplFrom","tmpPriorAuthApplTo","tmpPriorAuthRecFrom","tmpPriorAuthRecTo","tmpPriorAuthAmtFrom","tmpPriorAuthAmtTo","populateScoreDropdown","minAmount","reg","includes","maxAmount","updateFilterData","newStartDateFrom","newStartDateTo","newEndDateFrom","newEndDateTo","newPriorAuthApplFrom","newPriorAuthApplTo","newPriorAuthRecFrom","newPriorAuthRecTo","newPriorAuthAmtFrom","newPriorAuthAmtTo","setBtnStatusOfFilter","hasErrors","methData","methodologyID","getScoreResult","Score","getScoreAsync","scoreData","scoreID","scoreDescription","setActiveModuleSectionAttribute","loadedApp","showMiniRoster","loadAuthorizationLanding","pasBtn","assessmentHistoryBtn","vendorInfoBtn","vendorInfo","setActiveModuleAttribute","authData","filterDropdownData","selectedConsumer","pageWrap","overviewTable","planTypeDropdown","vendorDropdown","matchSourceDropdown","completedDateStart","completedDateEnd","yearStartStart","yearStartEnd","yearEndStart","yearEndEnd","applyFilterBtn","plantypeBtnWrap","vendorBtnWrap","matchSourceBtnWrap","completedDateBtnWrap","yearStartBtnWrap","yearEndBtnWrap","newFilterValues","loadPage","clearAllData","completedDateStartInput","completedDateEndInput","yearStartStartInput","yearStartEndInput","yearEndStartInput","yearEndEndInput","groupChildData","pageDataChild","groupedChildren","child","pas_id","convertToCurrency","numberValue","Intl","NumberFormat","currency","getFreqName","freqObj","formatDate","initFilterValues","planType","matchSource","buildFilteredByData","currentFilterDisplay","getPlanTypeFullName","getVendorFullName","getMatchSourceName","showFilterPopup","plantypeBtn","plantypeCloseBtn","vendorBtn","vendorCloseBtn","matchSourceBtn","matchSourceCloseBtn","completedDateBtn","yearStartBtn","yearEndBtn","yearEndCloseBtn","applyFilter","checkFilterPopForErrors","errors","legnth","populatePlanTypeDropdown","populateVendorDropdown","planVendors","pv","vendorId","vendorName","populateMatchSourceDropdown","matchSources","ms","caption","filteredVendor","revisionNumber","filteredMatch","dateWrap","cancelFilterBtn","setupFilterEvents","spinner","getPageData","selectedConsumerId","planYearStartStart","planYearStartEnd","planYearEndStart","planYearEndEnd","buildOverviewTable","newfilteredByData","filteredByData","buildConsumerCard","card","mainHeading","pageDataParent","pasID","rowWrap","mainDataRow","CompletionDate","plan_year_start","plan_year_end","plantype","revisionNum","plVendorId","sourceAndCaption","subRowWrap","subHeading","itemnum","subDataRow","description","service_code","BeginDate","EndDate","MaxUnits","frequency","authCostFY1","authCostFY2","consumerCard","getFilterDropdownData","retrieveData","getAuthorizationPageDataResult","responseText","getVendorLandingPageInfoAsync","authorizationGetLandingPageDataResult","getAuthorizationFilterDataResult","consumerIds","MethodologyID","getVendorInfoAsync","DDNumber","localNumber","goodStanding","homeServices","takingNewReferrals","fundingSource","serviceCode","getVendorInfoResult","getVendorAsync","getFundingSourceAsync","getServiceCodeAsync","getVendorEntriesByIdAsync","vendorID","getVenderServicesEntriesAsync","getVenderUCREntriesAsync","getProviderTypeEntriesAsync","getVenderCertificationEntriesAsync","getVenderLocationReviewEntriesAsync","newVendorInfo","ispDiv","ispNav","ispBody","LocalNumber","Phone","vendorGeneral","getMarkup","vendorServices","vendorUCR","vendorProviderType","vendorCertification","vendorLocationReview","refreshVendor","DDNum","localNum","headingWrap","headingName","localNumberheading","ispWrap","BACK_BTN","vendorInfoLoad","newIspMarkup","toggleActiveNavItem","selectedNavItem","activeNavItem","toggleActiveSection","sectionId","buildNavigation","buildBody","certificationEntries","vendorCertificationWrap","importantTables","buildNewCertificationForm","vendorCertificationDiv","certificationEntriesTable","buildCertificationEntriesTable","column1","addNewCard","addNewCardBody","getVenderCertificationEntriesResult","Certifiction","oTable","vendorEntriesById","workScheduleWrap","buildVendorGeneralForm","employeeInfoDiv","nameInput","getVendorEntriesByIdResult","dbaInput","DBA","contactNameInput","contactName","contactPhoneInput","contactPhone","contactEmailInput","contactEmail","address1Input","address1","address2Input","address2","cityInput","city","stateInput","zipInput","zipCode","phoneInput","primaryPhone","firstNameInput","providerFirstName","lastNameInput","providerLastName","birthDateInput","providerBirthDate","buildingNumberInput","providerBuildingNumber","salesforceIDInput","salesforceId","DDStateNumberInput","DDStateNumber","einInput","ein","submitterInput","submitterId","localNumberInput","SSNInput","ssn","senderInput","sender","MHStateNumberInput","MHStateNumber","TDDStateNumberInput","TDDStateNumber","NPIInput","NPI","MHNPIInput","MHNPI","inGoodStandingchkBox","takingNewReferralschkBox","FSSVendorchkBox","FSSVendor","sanctionsAdministeredchkBox","sanctionsAdministered","inHomeServiceschkBox","consumerNameDisplay","dropWrap","dropWrap1","dropWrap2","consumerNameDisplay1","dropWrap3","dropWrap4","consumerNameDisplay2","dropWrap5","dropWrap6","consumerNameDisplay3","chkDiv","chkDiv1","chkDiv2","chkDiv3","chkDiv4","DDNumberBtnWrap","localNumberBtnWrap","goodStandingBtnWrap","homeServicesBtnWrap","takingNewReferralsBtnWrap","fundingSourceBtnWrap","serviceCodeBtnWrap","vendorsData","groupedVendors","vendorGroupCount","loadMoreVendors","fromFilter","handleVendorInfoTableEvents","contact","groupVendorData","DDNumberBtn","DDNumberBtn2","DDNumberCloseBtn","localNumberBtn","localNumberCloseBtn","goodStandingBtn","goodStandingCloseBtn","homeServicesBtn","homeServicesCloseBtn","takingNewReferralsBtn","takingNewReferralsCloseBtn","fundingSourceBtn","fundingSourceCloseBtn","serviceCodeBtn","serviceCodeCloseBtn","DDNumberInput","goodStandingDropdown","homeServicesDropdown","takingNewReferralsDropdown","fundingSourceDropdown","serviceCodeDropdown","tmpVendor","tmpDDNumber","tmpLocalNumber","tmpGoodStanding","tmpHomeServices","tmpTakingNewReferrals","tmpFundingSource","tmpServiceCode","getVendorResult","Vendor","vendorData","Description","getFundingSourceResult","FundingSource","fundingSourceData","getServiceCodeResult","ServiceCode","serviceCodeData","goodStandingData","homeServicesData","takingNewReferralsData","pouplateVendors","vendors","phoneNumber","phoneExt","phonebracket","phonenum","locationReviewEntries","locatationReviewWrap","buildNewVendorLocationReviewForm","locatationReviewDiv","locationReviewEntriesTable","buildLocationReviewEntriesTable","getVenderLocationReviewEntriesResult","reviewType","dueDate","completedDate","responsibleStaff","providerTypeEntries","vendorProviderWrap","buildNewVendorProviderTypeForm","vendorProviderDiv","providerTypeEntriesTable","buildProviderTypeEntriesTable","getProviderTypeEntriesResult","ProviderType","Notes","ServicesEntries","vendorServicesWrap","buildNewVendorServicesForm","vendorServicesDiv","serviceEntriesTable","buildServicesEntriesTable","getVenderServicesEntriesResult","serviceDescription","UCREntries","vendorUCRWrap","buildNewVendorUCRForm","vendorUCRDiv","UCREntriesTable","buildUCREntriesTable","getVenderUCREntriesResult","service","groupSize","serviceLocation","CDBCategory","assessmentAcuityScore","UCR","CaseNotes","caseNoteId","caseNoteGroupId","caseNoteEditData","caseNoteAttachmentsEditData","attachmentsForDelete","caseManagerId","selectedDate","selectedServiceCode","updatedInputs","allowGroupNotes","defaultServiceCode","isReadOnly","moduleWrap","cnHeader","cnDateNavWrap","cnFormWrap","cnRosterWrap","dateNavigation","rosterPicker","cnForm","cnOverview","cnPhrases","cnDocTimer","reqVisualizer","resetModuleData","_DOM","resetNoteData","resetModule","isNoteConfidential","setPermissions","checkServiceFundingADV","checkGroupNotesPermission","cnData","toggleMultiSelectOption","extractCaseNoteId","checkRequiredFields","isSaveDisabled","buttons","toggleDisabled","parseSessionTime","dirtyTime","timesWithinWorkHoursCheck","valuesToCheck","isWarningStartTimeValid","isWarningEndTimeValid","warnStart","warnEnd","validStart","validEnd","isFutureTime","isToday","selectedDateClone","isStartTimeBeforeEndTime","timeOverlapCheck","fetchTimeOverlapData","noteId","serviceDate","getOverlapData","deleteNote","deleteExistingCaseNoteResults","saveAttachments","attachmentsForSave","saveAttachmentPromises","promise","attachmentType","then","catch","saveAttachmentResults","allSettled","failedSaves","acc","saveGroup","savePromises","newGroupId","getGroupNoteIdResult","consumerid","serviceOrBillingCodeId","groupSaveResults","newGroup","saveNote","attachments","saveResponse","isNewGroup","saveCaseNoteResult","attachSaveResponse","fullfill","resp","areAllFormFieldsValid","invalidControls","checkFormForUnsavedChanges","inputName","newValue","originalNoteDataMap","mainbillingorservicecodeid","locationcode","servicelocationid","need","serviceneedcode","vendorid","contactcode","starttime","endtime","mileage","totalmiles","travelTime","traveltime","noteText","casenote","confidential","outcomeServiceMonitoring","cnFormToast","toggleFormButtonShowHide","toggleVisibility","toggleFormButtonsDisabled","updateVendorDropdownByConsumer","fetchVendorDropdownData","getVendorDropdownData","inputs","setValue","updateServiceLocationDropdownByConsumer","fetchServiceLocationDropdownData","servLocData","getServiceLocationDropdownData","formData","onServiceCodeChange","setConsumerRelatedDropdowns","canConsumerHaveMileage","onFileDelete","detail","onTimeChange","inputKey","startTimeVal","getValue","endTimeVal","isTimeFuture","setValidtyError","showError","isStartTimeFuture","isEndTimeFuture","isStartBeforeEnd","showWarning","clearErrorOrWarning","documentationTime","mileageRequired","isMileageRequired","isTravelTimeRequired","isDocTimeRequired","showAutoStartPopup","isServiceFunding","locationRequired","isLocationRequired","needRequired","isNeedRequired","contactRequired","isContactRequired","serviceRequired","isServiceRequired","toggleRequired","getLocationDropdownData","getServicesDropdownData","getNeedsDropdownData","getContactsDropdownData","onChangeCallbacks","_ref","_ref2","_ref3","hasDecimal","onFormChange","onKeyupCallbacks","_ref4","_ref5","words","textareaInput","fullscreen","textareaClone","disableCloseButon","InsertPhrases","onPhraseSelect","phraseText","textValue","updateCloneValue","setFocus","onFormKeyup","processAttachmentsForSave","attachmentDetails","getAttachmentDetails","onFormReset","setSelectedConsumers","onFormDelete","continueSave","deleteConfirmationPopup","onFormSubmit","submitter","buttonName","overlaps","overlapPopup","reviewRequiredData","fetchCaseManagerReviewData","saveData","caseNote","casenotemileage","casenotetraveltime","contactCode","corrected","locationCode","needCode","reviewRequired","serviceLocationCode","onConsumerSelect","onDateChange","newDate","RosterPicker","allowMultiSelect","consumerRequired","selectionDate","fetchConsumers","onOverviewCardDelete","onOverviewCardEdit","scrollToTop","getCaseNoteEditJSONResult","groupid","casemanagerid","totaldoctime","toggleRosterDisabled","servicecode","fetchAttachmentsGK","getAttachmentsList","addAttachments","credit","disableFormInputs","attachEvents","onChange","onKeyup","onDelete","onSubmit","onReset","populatePage","renderTo","loadPageSkeleton","initComponents","DateNavigation","allowFutureDate","Form","fields","required","getServiceBillCodeDropdownData","defaultValue","includeBlankOption","speechToText","styleType","Toast","CaseNotesPhrases","CaseNotesTimer","AsyncRequestVisualizer","ConfirmationPopup","WarningPopup","fromDashboard","CN_CaseLoadWidget","getCurrentlyselectedConsumerId","CaseNotesData","fetchDropdownData","getDefaultServiceCode","fetchConsumersThatCanHaveMileage","dealWithDropdownDataHugeString","decipherXML","billingCodes","bc","tmpServiceId","tmpServiceFunding","tmpServiceRequired","tmpLocationRequired","tmpNeedRequired","tmpContactRequired","tmpAllowGroupNotes","tmpMileageRequired","tmpDocTimeRequired","tmpTravelTimeRequired","contacts","services","needs","tmpObject","serviceId","serviceFunding","docTimeRequired","travelTimeRequired","loc","tmpLocName","tmpLocCode","locName","locCode","tmpContactName","tmpContactCode","tmpServiceName","tmpNeedName","tmpNeedCode","needName","beautifulObject","dropdownDataObj","caseLoadOnly","CaseNotesCaseloadRestrictions","viewEntered","caseLoadRestrictions","reviewGroups","reviewConsumers","dropdownData","vendorDropdownData","serviceLocationDropdownData","caseManagerReview","consumersThatCanHaveMileage","attachmentList","overlapData","populateDropdownDataResult","getConsumerSpecificVendorsJSONResult","getServiceLocationsForCaseNoteDropDownResult","getReviewRequiredForCaseManagerResult","reviewrequired","serviceid","getConsumersThatCanHaveMileageJSONResult","data2","getCaseNoteAttachmentsListForGroupNoteResult","caseNoteOverlapCheckResult","fetchReviewData","restrictionsResponse","getCaseLoadRestrictionResult","caseNoteReviewData","caseNotesFilteredSearchJSONResult","fetchNoteData","getReviewData","numberInGroup","groupnoteid","lastname","firstname","casenoteid","enteredByUser","enteredby","onCaseload","cl","isReviewRequired","getMainServiceCodeNameById","consumername","attachmentId","CaseNotesOverview","buildMostRecentUpdateElement","mostRecentUpdate","DateTimeFormat","weekday","buildEnteredByElement","enteredBy","originalUserFullName","buildStartTimeElement","buildEndTimeElement","buildTimeDiffElement","timDiff","buildConsumerElement","consumerFullName","consumerNameEle","portrait","Portrait","buildServiceInfoElement","mainService","buildNoteElement","showAllNotes","caseLoadReviewData","overviewWrap","overviewSearch","showAllNotesToggle","overviewCardsWrap","overviewCards","_init","_build","_setupEvents","showAllNotesLS","localStorageHandler","overviewHeader","Input","placeholder","Checkbox","debounce","_filterOverviewOnSearch","rd","_rd$serviceName","searchFields","isMatch","combo","isConfidential","attachmentCountGK","attachcount","overviewCardWrap","overviewCard","mostRecentUpdateEle","mostrecentupdate","enteredByEle","editButton","Button","deleteButton","customEvent","CustomEvent","cancelable","startTimeEle","endTimeEle","timeDurationEle","serviceInfoEle","noteTextEle","filteredSearchResponse","billerId","billingCode","billed","dateEnteredStart","dateEnteredEnd","reviewStatus","onCardEdit","cbFunc","onCardDelete","node","Node","CaseNotesAddPhrases","phrasesInstance","dialog","addPhraseForm","PhrasesInstance","Dialog","maxlength","setupEvents","shortcut","phrase","makePublic","public","insertCustomPhraseResult","CaseNotesInsertPhrases","phrasesData","showAllPhrases","showAllPhrasesToggle","addPhraseButton","phraseWrap","sortedKeys","localeCompare","phraseEle","handleClick","AddPhrases","showAll","getCustomPhrasesResult","phrase_id","phrase_shortcut","CaseNotesReports","detailReportForm","timeAnalysisReportForm","generateDetailReport","generateTimeAnalysisReport","debounceTime","doesReportExist","reportScheduleId","viewReport","tokenInput","attachmentInput","submit","CaseNotesReviewTable","rootElement","reviewTable","Table","headings","InactivityWarningPopup","yesButton","noButton","messageEle","TimerAutoStartPopup","prevDocumentationTime","timeOffset","elapsedTimeInSeconds","intervalId","inactivityIntervalId","inactivityWarningDialog","timeDisplay","playButton","stopButton","inactivityWarningPopup","timerAutoStartPopup","inactivityTimeoutId","clearTimeout","continueTimer","autoStart","prevDocTime","additionalTimeInSeconds","clearInterval","currentTime","caseNotes","loadCaseNotesLanding","newBtn","newSSABtn","noteSSA","overviewBtn","notesOverview","editPhrasesBtn","cnEditPhrases","tryNewCaseNotes","caseNotesAjax","getFilteredCaseNotesList","submitData","serviceDateStart","serviceDateEnd","enteredDateStart","enteredDateEnd","getCaseNoteEdit","getGroupNoteId","getDropdownData","getConsumersThatCanHaveMileage","getBillersListForDropDown","getBillersListForDropDownJSONResult","getReviewRequiredForCaseManager","getCaseNoteAttachmentsList","getCaseNoteAttachmentsListResult","getConsumerSpecificVendors","getServiceLocationsForCaseNoteDropDown","caseNoteOverlapCheck","saveSingleCaseNote","serviceMonitoring","saveGroupCaseNote","saveAdditionalGroupCaseNote","updateGroupNoteValues","deleteExistingCaseNote","deleteExistingCaseNoteResult","addCaseNoteAttachment","desc","buf","binary","bytes","byteLength","fromCharCode","abString","deleteCaseNoteAttachmentResult","deleteCaseNoteAttachment","viewCaseNoteAttachment","successFunction","getCustomPhrases","insertCustomPhrases","getCustomPhraseResult","getConsumersForCNFilter","getConsumersForCNFilterResult","generateCNDetailReport","billCodeText","consumerName","originallyEnteredStart","originallyEnteredEnd","generateCNDetailReportResult","generateCNTimeAnalysisReport","generateCNTimeAnalysisReportResult","checkIfCNReportExists","checkIfCNReportExistsResult","viewCaseNoteReport","getCNPopulateFilterDropdowns","serviceCodeId","getSSAServiceOptionsDropdown","getSSAServiceOptionsDropdownResult","getCaseLoadRestriction","getSSABillCodesFromService","servicePersonApproved","getSSABillCodesFromServiceResult","caseNotesTimer","clearTimerOnSave","inactTime","inactivityTime","documentTimeSeconds","onload","onmousemove","onkeypress","pauseTimer","fromInactive","inactiveTimeForClear","attr","displayDocTime","resetTimer","dontResetInactTimerFlag","logout","answer","confirm","startCaseNoteTimer","timeInSeconds","minutesLabel","documentationTimer","runningTime","saveTime","timer","startBtn","timerRunning","clearTimer","inactiveAlert","resetInactivityTimer","deltaMS","deltaS","newMinutes","minArea","getTimeFromInactivity","stopTimer","startPercisionTimer","prevTime","docTimerMutationObserver","prevTimeMS","startTimer","cardBody","shortcutInput","phraseInput","pubCheckbox","saveBtn","buildCard","cardHeader","buildInputs","savePhrase","checkForError","clipboardData","getData","CFConsumerBtns","consumerRow","consumerElement","accountId","BtnName","page","IsDisabledAccount","accountPermission","tempAccountPer","backPage","account","loadCFEditLanding","loadCFEditFromAccountRegister","Consumers","LineBr","getaccountPermission","resultAccount","getEditAccountAsync","getEditAccountResult","accountName","topButton","buildHeaderButton","border","importantAccountForm","buildAccountForm","populateAccountDropdown","buildButtonBar","buttonBar","minWidth","dropdownButtonBar","entryButtonBar","accountDropdown","entryBtn","marginLeft","disabledEnabledAccounts","classofAccount","dateClosed","lastReconciled","openingBalance","balance","dateOpened","nameTemp","numberTemp","typeTemp","statusTemp","classofAccountTemp","dateOpenedTemp","dateClosedTemp","openingBalanceTemp","descriptionTemp","getEditAccountInfoByIdAsync","getEditAccountInfoByIdResult","inputNumber","typeDropdown","statusDropdown","classDropdown","opendDate","closeDate","lastReconciledDate","inputOpeningBal","inputBal","inputDesc","SAVE_BTN","saveUpdateAccount","cancleAccount","backFromConsumerFinanceEditAccount","drWrap","drWrap1","drWrap2","drWrap3","populateDropdown","checkRequiredFieldsOfAccountInfo","accounts","dataAccount","totalBalance","getAccountClassResult","classAccount","getAccountClassAsync","dataClass","accountClass","SystemClass","typeData","statusData","getRequiredFieldsOfAccountInfo","openDateVal","closeDateVal","nameVal","typeVal","statusVal","setBtnStatusOfAccountInfo","clearSelectedConsumers","clearActiveConsumers","insertEditRegisterAccountAsync","insertEditRegisterAccountResult","defaultCFLocation","getLocation","setLocation","hideDate","consumerFinanceAttachment","ConsumerFinanceAttachment","regId","IsDisabled","attachID","attachmentsForQuestion","IsDisabledBtn","buildAttachmentButton","attachmentButton","attachmentPopup","attachmentsToDelete","attachmentsAdded","populateExistingAttachments","reviewAttachmentList","fileContainer","attachmentID","removeAttachmentBtn","addRemoveAttachmentToDeleteList","file","viewCFAttachment","attachmentElement","currentDeleteStatus","fileValidation","fileType","files","reFileTypeTest","addNewAttachment","addRemoveAttachmentEventListener","fileInput","lastAttachment","lastChild","newFileContainer","attachmentContainer","saveAction","saveAttachmentsToDB","attachmentSaveArray","attachmentArray","saveProm","arrayBuffer","addCFAttachment","attSaveRes","all","deleteCFAttachment","attachmentInputs","attachmentProms","inputElement","attPromise","attachmentObj","attachmentFile","attachmentName","registerID","Response","addAttachmentBtn","cleanAttachmentLists","newAttachmentList","newAttachmentsHeader","attachmentsToAdd","attachmentsToRemove","attId","attach","isAttacExist","attachmentBtn","NewEntryCF","buildNewEntryForm","getConsumerFinanceAttachments","regID","retData","getCFAttachmentsList","ConsumerFinanceEntriesTable","activityStartDateBtnWrap","activityEndDateBtnWrap","minamountBtnWrap","maxamountBtnWrap","transectionTypeBtnWrap","accountNameBtnWrap","payeeBtnWrap","categoryBtnWrap","enteredByBtnWrap","isattachmentBtnWrap","selectedConsumerIds","loadConsumerFinanceLanding","buildConsumerFinanceEntriesTable","ConsumerFinancesEntries","getAccountTransectionEntriesAsync","activityStartDate","activityEndDate","payee","minamount","maxamount","checkNo","Balance","isattachment","transectionType","getAccountTransectionEntriesResult","activityDate","theMonth","formatActivityDate","checkno","categoryCode","payee2","isExpance","handleAccountTableEvents","registerId","AttachmentsID","editButtonBar","editAccountBtn","getActiveAccountResult","getActiveAccountAsync","activityStartDateBtn","activityEndDateBtn","minamountBtn","maxamountBtn","transectionTypeBtn","transectionTypeCloseBtn","accountNameBtn","accountNameCloseBtn","payeeBtn","payeeCloseBtn","categoryBtn","categoryCloseBtn","enteredByBtn","enteredByCloseBtn","isattachmentBtn","isattachmentCloseBtn","fromDateInput","toDateInput","minAmountInput","maxAmountInput","transectionTypeFilterDropdown","accountFilterDropdown","payeeDropdown","categoryDropdown","lastUpdateDropdown","isAttachedDropdown","amountWrap","checkValidationOfFilter","tmpactivityStartDate","tmpactivityEndDate","tmpminAmount","tmpmaxAmount","tmpaccountName","tmpenteredBy","tmppayee","tmpcategory","tmpisattachment","tmptransectionType","fromDate","accountData","getPayeesResult","Payees","getPayeesAsync","payeeData","payees","CategoryID","categoryID","getCategoriesSubCategoriesResult","Category","getCategoriesSubCategoriesAsync","categoryData","CategoryDescription","getActiveUsedByResult","employees","getActiveEmployeesAsync","employee","condfidentialDropdownData","TransectionTypeDropdownData","ConsumersId","getCategoriesAsync","getSubCategoriesAsync","getCategoriesSubCategoriesByPayeeAsync","insertPayeeAsync","payeeName","payeeaddress1","payeeaddress2","payeecity","payeestate","payeezipcode","zipcode","insertAccountAsync","amountType","AccountID","subCategory","attachmentDesc","receipt","splitAmount","eventType","getAccountEntriesByIDAsync","deleteConsumerFinanceAccountAsync","addCFAttachmentResult","deletePlanAttachmentResult","getCFAttachmentsListResult","sectionInput","getSplitRegisterAccountEntriesByIDAsync","getSplitCategoriesSubCategoriesAsync","newDateInput","newAmountInput","newAccountDropdown","newPayeeDropdown","ADD_NEW_PAYEE_BTN","newCategoryDropdown","newSubCategoryDropdown","newCheckNoInput","newDescriptionInput","newReceiptInput","NEW_SAVE_BTN","NEW_CANCEL_BTN","prevAttachmentArray","lastUpdateBy","IsReconciled","IsAddNewPayDisable","IsSaveDisable","IsDeleteDisable","splitAmountInputN","splitCategoryDropdownN","splitDescriptionInputN","categoryOldVal","totalAmount","regTotalAmount","numberOfRows","splitTransPopup","tempAmountval","tempSplit","tempAmouts","totalAmountSaved","pageName","IsNewRefresh","getAccountEntriesByIdResult","accountID","accountType","reconciled","SplitDataresult","getSplitRegisterAccountEntriesByIDResult","sum","tempdate","tempamount","tempaccount","tempaccountType","temppayee","tempcategory","tempsubCategory","tempcheckNo","tempdescription","tempattachment","tempreceipt","column2","SPLIT_BTN","NEW_DELETE_BTN","expenseRadio","depositRadio","radioDiv","space","DisabledAllInputs","enableDisabledInputs","radioWrap","addRightCard","addRightHeader","addRightBody","questionAttachment","populatePayeeDropdown","populateCategoryDropdown","populateSubCategoryDropdown","checkRequiredFieldsOfNewEntry","getSplitdata","buildSplitTransectionPopUp","EnabledAllInputs","setBtnStatusOfNewEntry","buildNewPayeePopUp","saveNewAccount","deleteAccountPOPUP","errorPopup","getCategorySubCategorybyPayee","insertAccountResult","confirmPopup","YES_BTN","deleteAccount","NO_BTN","popupbtnWrap","getCategoriesSubCategoriesByPayeeResult","CategoriesSubCategory","SubCategoryDescription","getCatogoriesResult","getSubCatogoriesResult","SubCategory","payeeId","addPayeePopup","payeeInput","zipcodeInput","addPayeePopupDoneBtn","popUpEventHandlers","finalVal","setBtnStatus","insertPayeeResult","RegionID","duplicatePayeErrorPopup","duplicatePayeErrorConfPOPUP","btnWrapInputsN","regAmountTotalInput","amountTotalInput","totalBtnWrapInputs","saveSplitBtn","splitTransPopupSaveBtn","cancelSplitBtn","popUpSplitTransectionEventHandlers","populateSplitCategoryDropdown","splitAmountTotal","checkRequiredFieldsSplitTransection","SplitCategory","splitAmt","setBtnStatusSplitTransection","getSplitCategoriesSubCategoriesResult","categoryId","splitTransSaveData","errorConfPOPUP","yesBtn","noBtn","checklistTable","tableContainer","completedChecklistData","activeChecklistId","rosterLocations","checklistMode","typeOfChecklist","initialLoad","buildEmployeePage","checklistCard","mainSection","dateInput","timeInput","locationDropdown","settingInput","symptomHeading","symptomSection","symptomElements","otherInput","buttonDiv","buttonDiv2","deleteBtn","noEditWarning","populateLocationDropdown","buildEmployeeChecklistTable","peopleId","consumerChecklist","checklistResult","covidAjax","getCovidChecklists","getIndividualsCovidDetailsResult","displayDate","tableHeader","checklist","checklistData","assessmentTime","setting","settingType","cough","diarrhea","fever","malaise","nasalCong","nausea","tasteAndSmell","other","notes","shortnessBreath","soreThroat","assessmentId","covidChecklistActions","loadChecklist","rawLocations","covidLanding","defaultLocation","updateSelectedDate","insertUpdateChecklist","resetChecklist","cancel","deleteConfirmation","clearChecklist","deleteChecklist","deleteCovidChecklist","err","activeConsumer","removeConsumerFromActiveConsumers","covidChecklistElements","completedChecklists","checklistId","checklistType","assesmentDate","isConsumer","insertUpdateCovidChecklists","createInputs","symptoms","symptom","capSymptomNameArr","readableSymptomNameBaseArr","word","capWord","readableName","yesRadio","noRadio","symptomTitle","symptomContainer","assessmentDate","loadCovidLanding","myChecklist","consumerChecklists","rosterAjax","getRosterLocations","getLocationsJSONResult","widgets","setupFuncs","widgetIds","caseNotesProductivity","caseNotesCaseLoad","caseNotesRejected","planWorkflow","customLinks","unreadLocationNotes","consumerProgressNotes","timeClock","hoursWorked","goals","clockedIn","singleEntry","adminSingleEntry","schedule","incidentTracking","missingSignatures","moneyManagement","infal","systemMessages","rosterToDoList","appendFilterButton","widgetId","btnId","headerSelector","widgetHeader","filtersSelector","widgetFilters","appendAddMessageButton","addMessageBtn","linksAndMessages","buildAddMessagePopup","appendPDFButton","pdfBtn","generateReports","passFilterValuesForReport","showWarningPopup","buildFilterPopup","initAbsentWidget","showHide","getWidgetSettings","loadAbsentWidget","div","absentWidget","initLinksAndMessagesWidget","showHideCustomLinks","loadSysMessagesAndCustomLinksWidget","div2","initSystemMessagesWidget","initSingleEntryWidget","loadAdminSingleEntryWidget","singleEntryCountWidget","initAdminSingleEntryWidget","loadSingleEntryWidget","adminSingleEntryWidget","initTimeClockWidget","loadEmployeeDayServicesWidget","initHoursWorkedWidget","loadHoursWorkedWidget","hoursWorkedWidget","initScheduleWidget","loadScheduleWidget","initDailyServicesWidget","loadDailyServicesWidget","widgetSetup","remainingDailyServicesWidget","initClockedInWidget","loadDayServicesWidget","clockedInWidget","initIncidentTrackingWidget","loadIncidentTrackingWidget","incidentTrackingWidget","initConsumerProgressNotesWidget","loadConsumerProgressNotesWidget","consumerProgresNotes","initLocationProgressNotesWidget","loadLocationProgressNotesWidget","initCaseNotesProductivityWidget","hasPerm","loadCaseNotesProdictivityWidget","CN_ProductivityWidget","initCaseNotesCaseLoadWidget","loadCaseNotesCaseLoadWidget","initCaseNotesRejectedWidget","CN_RejectedWidget","initPlanWorkflowWidget","loadPlanWorkflowWidget","planWorkflowWidget","initRosterToDoListWidget","loadRosterToDoListWidget","rosterToDoListWidget","initInfalWidget","anonymousFunction","infalTimeClockWidget","initSignaturesWidget","loadSignatureWidget","signatureWidget","initMoneyManagementWidget","loadMoneyManagementWidget","consumerFinancesWidget","loadDashboardWidgets","widgetSetting","getInvalidDefaultLocations","widgetName","IsSystemMessageAvailable","widget","func","settingForWidget","widgetConfig","widgetOrder","refreshWidgetSettings","widgetSettingsAjax","getUserWidgetSettingsResult","preLoadWidget","getSetting","outcomeType","displayTimeSelect","validateError","numberOfCards","pad","ticktock","current_time","anywhere","popCalendar","startMessage","swapMessageBoxes","showDownArrow","stopTime","validTime","popDayStaffTimeBox","tagname","nonFormattedTime","originalText","convertTimeToMilitary","setupTimeInputBox","validateStaffTime","valueText","rowid","timein","timeout","timeOverlapError","getTimeClockInput","objId","pushStr","change","newText","textFieldEdit","showRemainingGoals","$goalsCount","$listTarget","$goalsConsumerCount","consumerCount","oid","first_name","last_name","names","append","displayChangeUser","HTMLresponse","getPSIUserOptionList","user_id","changeFromPSIAjax","psiLogin","isNumberKey","charCode","which","formatDateGFromDB","formatTimeFromDB","test2","convertTimeFromMilitary","identifier","removeBadNoteTextToDisplay","daysBetweenDates","checkDate","oneDay","changeDate","formatDateForDatabaseSave","convertTimeToMilitaryNew","AMPM","sHours","sMinutes","militaryTime","setSelectionRange","selectionStart","selectionEnd","createTextRange","range","collapse","moveEnd","moveStart","setCaretToPos","getDeviceLocation","setTimeToScreen","amOrPm","pmAM","timeDigitsEntered","originId","increment","PSmodal","incrementMessage","immediate","closeOnBlur","displayTimeBox","mobile","timeBox","marginTop","clearTimepadInputField","convertDaysBack","daysBackIn","dateOffset","daysBackDate","dateToPass","convertDaysBackGoals","popupCalendar","minDate","maxDate","currVal","dateFormat","theme","accent","preset","onSelect","inst","onShow","scroller","mobiscroll","openCaraSolva","enctype","scope","Anywhere","promptYesNo","yesCallback","noCallback","userPopup","userElemet","multiDeleteRecordBtn","multiSelectAllBtn","multiSelectNoneBtn","multiOutRecordBtn","multiInRecordBtn","filterLocationDropdown","filterGroupDropdown","filterDateInput","fitlerApplyBtn","batchedMessageDisplay","mulitSelectBtn","multiSelectAllNoneArea","dsCardArea","groupDropdown","initRosterSelection","activeConsumers","rosterGroupResults","locationID","filterGroupID","filterGroupRetrieveID","temp__locationID","temp__groupID","temp__retrieveID","temp__serviceDate","locationBtnWrap","serviceDateBtnWrap","selectedGroupNameBtnWrap","displayedConsumers","enabledConsumers","noLocationSet","enabledConsumerString","currentLocationBatched","locationCache","activityCache","dsConsumers","dsGroupsCache","dsDropdownData","ciDropdownData","groupDropdownData","selectedDSType","selectedGroup","locationDropdownData","enableMultiEdit","IsSaveBtnDisable","dsTypes","dsType","dsText","formatConsumersForClockIn","consumerString","formatConsumersForClockOut","act","Stop_Time","Start_Time","checkIfBatched","dayServiceAjax","getDSIsLocationBatched","checkForNoLocation","getDayServiceActivity","tempDsConsumers","getConsumerDayServiceActivity","Acuity","AllowNonBillable","Day_Service_Type","Service_Date","ciStaffID","isBatched","dsGroupId","Day_service_group_id","dsConsumerMap","has","checkForCI","errorPopupText","searchDS","convertDSValueToText","newtext","updateCurrentFilterDisplay","selectedGroupName","dayServicesFilterPopup","locationBtn","serviceDateBtn","selectedGroupNameBtn","selectedGroupNameCloseBtn","filterApplyAction","clockInOutChoicePopup","setupActionNav","multiSelectBtn","highlightedRows","multiDeleteRecord","selectedElms","highlightedHeaders","multiInOutRecord","populateFilterGroupDropdown","groupCodeObj","GroupCode","groupCode","groupName","GroupName","members","Members","RetrieveID","updateSelectedLocationId","rememberLastLocation","getDayServiceGetEnabledConsumers","allowedConsumers","consumer_id","setAllowedConsumers","doStuff","buildCards","getDayServiceGroups","groupDescription","handleDayServiceCardEvents","isRow","isHeader","rowPopup","textA","textB","cardBodyHeader","dsGroup","dsGroupValue","displayStartTime","displayEndTime","cardRow","dayServiceDisplay","placeholder1","placeholder2","placeholder3","placeholder4","enableMultiEditRows","multiBtn","recordsToDelete","inTime","deleteDSRecord","clockInOutActionPopup","groupID","newInTime","newOutTime","outTime","childElementCount","inTimeField","outTimeField","dsTypeDropdown","saveTypeAndCi","consumerDeleteString","consumerExistingDayServicePopup","consumerList","continueBtn","textArea","selectedDSTypeId","setBtnStatusOfSave","clockInBtn","idString","sc","clockedInConsumers","getDayServiceClockedInConsumers","consumerIdString","clockOutBtn","choice","inPopup","outPopup","timeInField","timeOutField","clockIn","clockOut","inCancelBtn","outCancelBtn","clockInConsumerString","selectedConsumerCount","dayServiceClockIn","overlapConsumers","accuityDisplay","clockOutConsumerString","updateDayServiceActivity","deleteDayServiceActivity","orgPopup","confPopup","confirmBtn","orgInTime","orgEndTime","ciStaffId","updateDSTypePromise","updateCIPromise","updateCIStaff","deleteCIPromise","deleteCIStaffId","buildPageComponents","allRows","allHeaders","isDisabld","getFilterValues","dayServiceLocation","dayServiceServiceDate","createMainReportButton","buttonsData","buttonData","showReportsPopup","reportsBtn","filterSelectReportBtnWrap","toggleActionCenterChildrenVisiblity","initialPageBuild","ds","addEventListeners","customGroupsAjax","getConsumerGroupsJSONResult","retrieveid","initPageLoad","dsEnabledConsumers","checkCiPromise","getDateToCheckShowCI","ciDateToCompare","Setting_Value","getCiStaffPromise","getCiStaff","getEnabledConsumersPromise","actObj","getGroupsPrommise","locationCheck","getDayServiceLocations","defaultDayServiceType","applyBtn","checkConsumersForDate","massUserCheckByDateJSONResult","getDayServiceGetEnabledConsumersResult","errorId","errorConsumerIds","tmpErrorCode","setErrorBox","dayServiceClockOut","getDateToCheckShowCIResult","getExistingCIStaffId","resIn","ciButtonId","staffId","getExistingCIStaffIDFromResponse","createCIDropdown","getDayServiceLocationsJSONResult","optionsHtml","showSelect","tmpName","tmpId","tmpId2","tmpRes","serviceLocationCount","locationIds","currentlocationId","resizeHeaderText","changeTheDSLocation","peopleList","retrieveId","getConsumerDayServiceActivityJSONResult","getCIStaffDropdownJSONResult","inputType","dayServiceType","getDSIsLocationBatchedResult","getDayServiceGroupsResult","getDayServiceClockedInConsumersResult","addEditEmployers","addNewEmployerBtn","rtnOODMainPageBtn","employerId","employerName","employeraddress1","employeraddress2","employercity","employerstate","employerzipcode","employerInput","openedPage","redirectInformation","BtnEventType","buildEmployerPopUp","loadEmploymentLanding","OODEmployersTable","buildEmployersTable","getActiveEmployersResult","activeEmployers","OODAjax","getActiveEmployersAsync","filteredActiveEmployers","employer","getEmployer","employerdata","postType","openpageName","redirectInfo","headingEmployer","editEmployerPopup","editEmployerPopupDoneBtn","employrInput","insertEmployerAsync","insertEmployerResult","employerID","NewEmployment","refreshEmployment","positionId","empName","posName","consumersName","consumersId","tabPositionIndex","updateEmployerAsync","updateEmployerResult","tableRow","deletepopup","deleteEmployerAsync","deleteEmployerResult","OKBtn","newFilterBtn","EmploymentEntriesTable","PositionBtns","employerBtnWrap","positionBtnWrap","positionStartDateBtnWrap","positionEndDateBtnWrap","jobStandingBtnWrap","reportValues","buildEmploymentEntriesTable","EmploymentsEntries","EmploymentAjax","getEmploymentEntriesAsync","positionStartDate","positionEndDate","jobStanding","getEmploymentEntriesResult","PeopleName","positionName","newPositionBtn","editEmployerBtn","getReportValues","EmployerID","positionID","jobStandingID","consumerID","employerBtn","employerCloseBtn","positionBtn","positionCloseBtn","positionStartDateBtn","positionEndDateBtn","positionEndDateCloseBtn","jobStandingBtn","jobStandingCloseBtn","positionDropdown","jobStandingDropdown","EmployerDropdown","tmpEmployer","tmpPosition","tmpJobStanding","tmpStartDate","tmpEndDate","tmpEmployerID","tmppositionID","tmpjobStandingID","getPositionsResult","Positions","getPositionsAsync","positionsData","positions","getEmployersResult","Employer","getEmployersAsync","getJobStandingsResult","JobStanding","getJobStandingsAsync","jobStandingData","jobStandingId","jobStandingName","getEmployeeInfoByIDAsync","insertEmploymentPathAsync","employmentPath","newStartDate","newEndDate","currentEndDate","peopleID","existingPathID","insertEmploymentInfoAsync","startDatePosition","endDatePosition","transportation","typeOfWork","selfEmployed","email","PositionId","typeOfEmployment","getJobStandingsDropDownAsync","getEmployerDropDownAsync","getPositionDropDownAsync","getTransportationDropDownAsync","getTypeOfWorkDropDownAsync","getTypeOfEmploymentDropDownAsync","getWagesEntriesAsync","getWagesCheckboxEntriesAsync","insertWagesAsync","hoursWeek","hoursWages","wagesID","saveCheckboxWagesAsync","chkboxName","IsChacked","textboxValue","getPositionTaskEntriesAsync","getInitialPerformanceDropdownAsync","insertPositionTaskAsync","task","initialPerformance","initialPerformanceNotes","employeeStandard","jobTaskID","getWorkScheduleEntriesAsync","isNewPositionEnableAsync","getEmployeementPathAsync","insertWorkScheduleAsync","dayOfWeek","WorkScheduleID","getLastTaskNumberAsync","deleteWagesBenefits","deleteWagesBenefitsResult","deleteWorkSchedule","deleteWorkScheduleResult","deletePostionTask","PositionID","deletePostionTaskResult","getEmployeeStatusDropDownAsync","createNewEmploymentPathAsync","currentStatus","pathToEmployment","pathToStartDate","EmploymentInformation","getEmployeeInfoByID","tempstartDatePosition","tempendDatePosition","tempposition","tempjobStanding","tempemployer","temptransportation","temptypeOfWork","tempselfEmployed","tempname","tempphone","tempemail","consumersID","getEmployeepath","existingEndDate","isNewPositionEnable","temptypeOfEmployment","PositionName","SelectedConsumersName","isNewPositionEnableResult","IsEmployeeEnable","employeeInforWrap","buildNewEmploymentForm","createEmploymentPathPopupBtn","getEmployeeInfoByIDResult","getEmployeementPathResult","existingStartDate","employerDropdown","transportationDropdown","typeOfWorkDropdown","typeOfEmploymentDropdown","isSelfEmployed","emailInput","saveEmployeeInfo","CancleValidate","UPDATE_BTN","updatePathPopupBtn","addEmployerBtn","messageHeading","msgWrap","infoWrap","populateDropdowns","checkRequiredFieldsOfEmployeeInfo","getRequiredFieldsOfEmployeeInfo","setBtnStatusOfEmployeeInfo","selectedConsumerOption","getPositionDropDownResult","getEmployerDropDownResult","getJobStandingsDropDownResult","getTransportationDropDownResult","Transportation","transportationData","transportationId","transportationName","getTypeOfWorkDropDownResult","TypeOfWork","typeOfWorkData","typeOfWorks","typeOfWorkId","typeOfWorkName","getTypeOfEmploymentDropDownResult","TypeOfEmployment","typeOfEmploymentData","typeOfEmployments","updatePathPopup","currentPathEndDate","newPathEmploymentDropdown","newPathStartDate","newPathEndDate","saveNewPathPopup","PopupEventListeners","populateNewPathEmploymentDropdown","checkRequiredFieldsOfEmploymentPath","newPathEmployment","CurrentEndDate","setBtnStatusOfEmploymentPath","pathName","insertEmploymentPathResult","pathId","insertEmploymentInfoResult","CancleEmploymentInfoPopup","createPathPopup","currentStatusDropdown","pathToEmploymentDropdown","pathToEmploymentStartDate","CONTINUE_BTN","createNewPath","CREATE_PATH_CANCEL_BTN","createEmploymentPathPopupEventListeners","populateEmploymentStatusDropdowns","checkRequiredFieldsOfCreateEmploymentPath","currentSts","pathToEmp","pathStartDt","setBtnStatusOfCreateEmploymentPath","getEmployeeStatusDropDownResult","EmpStatus","empStatus","empStatusId","empStatusName","createNewEmploymentPathResult","WagesBenefits","PositionTask","WorkSchedule","TabPosition","PositionEntriesTable","PositionEntries","LastTaskNumber","actualTaskNumber","positionWrap","buildNewPositionForm","positionDiv","NEW_POSITION_BTN","addPositionPopupBtn","buildPositionEntriesTable","getPositionTaskEntriesResult","jobTaskId","deletePositionTaskPOPUP","deletePositionTask","getLastTaskNumberResult","lastTaskNumber","initialPerformanceID","positionValue","addPositionPopup","taskInput","descriptionInput","initialPerformanceDropdown","initialPerformanceNotesInput","employeeStandardInput","checkRequiredFieldsOfPopup","saveNewPositionPopup","setBtnStatusOfPopup","getInitialPerformanceDropdownResult","InitialPerformance","initialPerformanceData","initialPerformanceId","initialPerformanceName","insertPositionTaskResult","WagesEntriesTable","CheckBoxEntries","vacationSickChk","retirementChk","medicialChk","DiscountChk","otherChk","otherValue","isOverLapRecord","eligibleBenefits","eligibleBenefitschkBox","vacationSickchkBox","medicalVisionchkbox","retirementchkBox","empDiscountchkBox","otherchkBox","wagesInfoWrap","buildNewWagesBenefitsForm","wagesDiv","otherInputText","getWagesCheckboxEntriesResult","vacationSick","retirement","medical","empDiscount","otherText","saveWagesChecked","checkBoxValidation","disableCheckBox","otherChecked","NEW_WAGES_BTN","addWagesPopupBtn","buildWagesEntriesTable","chk1Div","getWagesEntriesResult","hoursPerWeek","wagesPerHour","wagesId","deleteWagesBenefitsPOPUP","empValue","addWagesPopup","weekHours","wagesHours","saveNewWagesPopup","weekPerHour","insertWagesResult","saveCheckboxWagesResult","medicalVision","eligibleForBenifitConfirmPOPUP","workScheduleEntriesTable","ScheduleEntries","weekDaysSelection","nameOfEvent","toRemoveWeekName","totalHours","getWorkScheduleEntriesResult","buildNewWorkScheduleForm","workScheduleDiv","NEW_SHIFT_BTN","addWorkSchedulePopupBtn","buildworkScheduleEntriesTable","totalHourDiv","timeInHours","WorkScheduleId","deleteWorkSchedulePOPUP","eventName","workScheduleValue","addWorkSchedulePopup","checkboxlable","sundaylable","sundaychkBox","mondaylable","mondaychkBox","tuesdaylable","tuesdaychkBox","wednesdaylable","wednesdaychkBox","thursdaylable","thursdaychkBox","fridaylable","fridaychkBox","saturdaylable","saturdaychkBox","dayOfWeekDropdown","NewStartTime","NewEndTime","dayChkWrap","timebtnWrap","populateWeekDaysDropdown","weekDay","timeEnd","timeStart","sundaychk","mondaychk","tuesdaychk","wednesdaychk","thursdaychk","fridaychk","saturdaychk","chklable","dayOfWeekDropdownData","insertWorkScheduleResult","questions","esignerData","ssaDropdownData","providerDropdownData","paidSupportProviders","progressDiv","viewerContainer","formContainer","generateReportDownload","esignaturesAjax","downloadReportAfterSigning","_buffer","byteArray","blob","msSaveOrOpenBlob","fileURL","reports","handledProcessedReport","setSSADropdownInitialWidth","ssaDropdown","csChangeMindSSAPeopleId","ssaWidth","setVendorDropdownInitialWidth","vendorContactDropdown","csContactProviderVendorId","vendorWidth","updateSSADropdownWidth","hidden_opt","hidden_sel","updateVendorDropdownWidth","displayFormPopup","margin","buildDissentSection","dissentWrap","dissentTitle","dissentAreaDisagree","dissentHowToAddress","nonPaidSupportData","provider","paidSupportData","nonPaidSupportDropdownData","paidSupportDropdownData","paidSupport","nonPaidSupport","getSSADropdownData","ssa","populateDropdownSSA","csChangeMindQuestionDropdownData","populateDropdownVendor","contactQuestionDropdownData","nonGroupedDropdownData","paidSupportGroup","nonPaidSupportGroup","buildStandardQuestionSet","changeMindQuestion","csChangeMindQuestionText","csChangeMindQuestionDropdown","ssaPeopleId","validateForm","csChangeMindRadioContainer","csChangeMind","contactQuestion","contactQuestionText","csContactQuestionDropdown","csContactRadioContainer","csContact","standardQuestions","standardQuestionsWrap","question","questionContainer","questionText","questionRadioContainer","buildConsentSection","consentWrap","consentHeader","signatureInput","allFilled","updateQuestions","downloadExitPopup","paragraph","downloadPlanBtn","formPopup","teamMemberType","dissentingSection","signatureDisplay","openESignaturesPDFEditor","eSignerDataResult","getESignerDataResult","planId","csContactInput","csRightsReviewed","csAgreeToPlan","csFCOPExplained","csDueProcess","csResidentialOptions","csSupportsHealthNeeds","csTechnology","loadDropdownData","consentAndSignAjax","getPlanInformedConsentVendors","peopleid","getPlanInformedConsentSSAs","servicesSupports","getSelectedVendorIds","openESignaturesEditorResult","WebViewer","path","licenseKey","documentType","instance","FitMode","UI","setFitMode","FitWidth","disableElements","docViewer","Core","documentViewer","annotManager","annotationManager","setHeaderItems","img","binaryString","atob","loadDocument","filename","doc","getDocument","xfdfString","exportAnnotations","getFileData","tempUserIdInput","defaultval","displayfromBLOBBtn","documntId","newFormBtn","isFormLocked","templateId","typeId","templateDropdown","doneBtn","formIds","loadPDFFormsLanding","buildNewFormBtn","formsConsumer","hasAssignedFormTypes","getconsumerFormsResult","consumerForms","formsAjax","getconsumerFormsAsync","consumerForm","formCompleteDate","formatCompleteDate","formType","formDescription","formLastUpdated","formUserUpdated","formId","formEditPopup","isTemplate","documentEdited","isRefresh","createTemplatePopUp","selectTemplatePopup","thisCompleteDate","completeDateInput","templatePopupDoneBtn","doneButton","templatePopupCancelBtn","populateTypeDropdown","templateDropdownValidation","templateDropdownOptions","completeDate","getFormTypeResult","FormType","getFormTypeAsync","formTypeId","formTypeDescription","getUserFormTemplatesResult","templates","getUserFormTemplatesAsync","uniqueForms","template","exists","formTemplateId","viewer","viewerWrap","checkFormsLockValue","checkFormsLock","insertSeveralConsumerFormAsync","openFormEditor","displayStepFormPopup","stepId","docOrder","formName","openStepFormEditor","displayWFStepFormPopup","templateName","documntEdited","openEditor","openPDFEditor","deleteConsumerFormAsync","deleteConsumerFormResult","formeditpopup","updateConsumerFormCompletionDateAsync","openEditorResult","WorkflowViewerAjax","insertStepDocumentAsync","insertWorkflowStepDocumentResult","documentId","newDocObj","newStepDocComponent","WorkflowDocumentComponent","stepsContainer","documentsList","Tools","Annotations","openPDFEditorResult","updateStepDocumentAsync","updateWorkflowStepDocumentResult","updatedDocument","closeDocument","getPDFDocData","documentNotAllowedSaveAlert","openFormEditorResult","useEmbeddedPrint","formID","updateConsumerFormAsync","updateConsumerFormResult","insertConsumerFormAsync","insertConsumerFormResult","closewarningPopup","removeFormsLock","getPDFFormData","resultStepDoc","formtemplateid","formdata","formCompletionDate","closewarningpopup","continueNoSaveBtn","mustSaveBtn","checkFormsLockResult","removeFormsLockResult","EditFamilies","familyTableData","tempfamilyTableData","viewEditFamilyBtn","familyId","familyName","FamilyName","Address","PrimaryPhone","EditFamilyHeader","refreshFamily","FSSAjax","getActiveInactiveFamilylist","familyID","EditFamilyInformation","EditMembers","FamilyId","getFamilyInfoByID","IsValueChanged","zip","secondaryPhone","familyInfoWrap","buildFamilyForm","getFamilyInfoByIDResult","familyNameInput","primaryPhoneInput","secondaryPhoneInput","activeChk","notesInput","familyBtnWrap","addressNameDisplay","updateFamilyInfo","memberEntriesTable","familyEntries","memberName","memberId","addEditMemberPopup","newMemberId","getFamilyMembers","memberWrap","buildNewMemberForm","newMemberBtn","addMemberPopup","buildmemberEntriesTable","getFamilyMembersResult","deleteMemberPOPUP","deleteMember","deleteMemberInfo","memberIdd","memberValues","memberDropdown","yesActiveRadio","noActiveRadio","populateMemberDropdown","saveNewMemberPopup","memberNm","getMembersResult","getMembers","insertMemberInfo","fSSData","editFamily","filesList","backBtn","familyNameBtnWrap","primaryPhoneBtnWrap","addressBtnWrap","coPayVal","allocationVal","fundingSourceVal","startDateVal","endDateVal","authorizationPopup","UtilizationPopup","encumberedInputsVal","familyMemberDropdownVal","serviceCodeDropdownVal","paidAmountInputsVal","vendorDropdownVal","datePaidVal","loadFSSLanding","backbtnWrap","addInsertServicesBtnWrap","editFamiliesButton","backButton","getFSSPageData","familyNameBtn","familyNameCloseBtn","primaryPhoneBtn","primaryPhoneCloseBtn","addressBtn","addressCloseBtn","addressInput","btnFilterWrap","groupSubChildData","toggleIcon","fundingSourceID","fID","authId","encumbered","amtPaid","endIconSub","toggleIconSub","coPay","allocation","funding","addFamilyUtilization","subChildRowWrap","subChildHeading","pageDataSubChild","subChild","aID","paidAmt","subChildDataRow","paidDate","familyMember","addFamilyAuthorization","saveAuthorizationData","fundingDropdownPopulate","authorizationPopupEventListeners","authorizationRequiredFieldsOfPopup","allocate","cPay","setAuthorizationBtnStatusOfPopup","getFundingResult","Fundings","getFunding","fundings","insertAuthorization","familyMemberDropdown","encumberedInputs","paidAmountInputs","datePaid","UAPPLY_BTN","saveUtilizationData","UCANCEL_BTN","UtilizationDropdownPopulate","UtilizationPopupEventListeners","UtilizationRequiredFieldsOfPopup","familyMemberVal","serviceCodeVal","paidAmountval","setUtilizationBtnStatusOfPopup","getFamilyMembersDropDownResult","FamilyMembers","getFamilyMembersDropDown","familyMembersData","familyMembers","getServiceCodesResult","getServiceCodes","getVendorsResult","Vendors","getVendors","insertUtilization","paidAmount","authID","getFSSPageDataResult","getActiveInactiveFamilylistResult","updateFamilyInfoResult","insertMemberInfoResult","deleteMemberInfoResult","insertAuthorizationResult","insertUtilizationResult","involvementTypes","incidentLocations","categories","employeeNames","getInvolvementTypes","getLocations","getCategories","getEmployeeNames","getInvolvementTypesPromise","incidentTrackingAjax","getInvolvementTypeData","getIncidentCategoriesPromise","getIncidentCategories","getIncidentLocationDetailPromise","getIncidentLocationDetail","getEmployeesInvolvedEmployeeDropdownPromise","getEmployeesInvolvedEmployeeDropdown","loadLandingPage","newIncidentBtn","incidentOverview","sendNotification","notificationType","employeeId","incidentTypeDesc","incidentDate","incidentTime","subcategoryId","getITInvolvementTypeDataResult","getITIncidentCategoriesResult","getITIncidentLocationDetailResult","getConsumerServiceLocations","getITConsumerServiceLocationsResult","updateIncidentTrackingDaysBack","updatedReviewDays","updateIncidentTrackingDaysBackResult","getITReviewTableData","getITReviewTableDataResult","getReviewPageLocations","getLocationsIncidentTrackingReviewPageResult","getEmployeesInvolvedEmployeeDropdownResult","getITReviewPageEmployeeListAndSubList","supervisorId","getIncidentEditReviewDataAllObjects","incidentId","getIncidentEditReviewDataAllObjectsResult","deleteITIncident","saveUpdateITIncident","incidentData","notifyArr","notifyEmployeeString","employeeIdArr","employeeIdString","saveUpdate","saveUpdateITIncidentResult","getReviewedByDropdown","getReviewedByDropdownResult","getInjuryLocationsDropdown","getInjuryLocationsDropdownResult","getInjuryTypesDropdown","getInjuryTypesDropdownResult","getRiskAndCauseDropdown","GetRiskAndCauseDropdownsResult","getitConsumerFollowUpTypes","getitConsumerFollowUpTypesResult","getitConsumerBehaviorTypes","getitConsumerBehaviorTypesResult","getitReportingCategories","getitReportingCategoriesResult","getInterventionTypesDropdown","getInterventionTypesDropdownResult","getitConsumerInterventions","getitConsumerInterventionsResult","getitConsumerInjuries","getitConsumerInjuriesResult","getitConsumerReviews","getitConsumerReviewsResult","getitConsumerFollowUps","getitConsumerFollowUpsResult","getitConsumerReporting","getitConsumerReportingResult","getitConsumerBehavior","getitConsumerBehaviorsResult","itDeleteConsumerFollowUp","itConsumerFollowUpId","itDeleteConsumerFollowUpResult","saveUpdateITConsumerFollowUp","saveUpdateITConsumerFollowUpResult","saveUpdateITConsumerInjuries","saveUpdateITConsumerInjuriesResult","itDeleteConsumerInjuries","itConsumerInjuryId","itDeleteConsumerInjuriesResult","itDeleteConsumerInterventions","itConsumerInterventionId","itDeleteConsumerInterventionsResult","saveUpdateITConsumerInterventions","saveUpdateITConsumerInterventionsResult","itDeleteConsumerReporting","itConsumerReportingId","itDeleteConsumerReportingResult","saveUpdateITConsumerReporting","saveUpdateITConsumerReportingResult","itDeleteConsumerReviews","itConsumerReviewId","itDeleteConsumerReviewsResult","saveUpdateITConsumerReviews","saveUpdateITConsumerReviewsResult","itDeleteConsumerBehavior","itConsumerBehaviorId","itDeleteConsumerBehaviorsResult","saveUpdateITConsumerBehaviors","saveUpdateITConsumerBehaviorsResult","updateIncidentViewByUser","generateIncidentTrackingReport","generateIncidentTrackingReportResult","checkIfITReportExists","checkIfITReportExistsResult","sendIncidentTrackingReport","incidentTrackingEmailReportData","toAddresses","ccAddresses","bccAddresses","emailSubject","emailBody","sendIncidentTrackingReportResult","getRelationshipData","buildInfal","holder","headerText","InfalGetJobsAjax","getInfalUsernameDataSetter","empId","infalAjax","getInfalUserNameAjax","setInfalUserNameToScreen","InfalGetJobsResult","InfalGetClockInsAndOutsAjax","InfalGetClockInsAndOutsResult","InfalClockInAjax","resObj","InfalClockOutAjax","notifyOtherTabs","userActivityChannel","postMessage","BroadcastChannel","isOriginalTab","autoLogout","isPopupVisible","idleTime","logoutInterval","timerIncrement","timeLimit","logoutPopup","logoutMessage","unloadApp","newTabsPopup","handleLogoutButtonClick","oneSpanDocumentStatus","oneSpanDocumentData","checkOneSpanData","oneSpanAjax","oneSpanCheckDocumentStatus","signedStatus","oneSpanRetrieveData","packageId","assessmentID","oneSpanGetSignedDocuments","fireDataUpdateEvent","dataUpdateEvent","shouldBeDisabled","signatureTypeToCheck","updatedMemberData","getConsentAndSignData","signatureType","signature","buildPopupMessage","sendToOneSpanProgress","oneSpanPopup","sentStatus","oneSpanBuildSigners","pendingSavePopup","savePopup","failPopup","showOneSpanPopup","buildSendDocumentToOneSpanBtn","teamMemberData","sendDocumentToOneSpanBtn","versionID","extraSpace","isp","oneSpanBuildSignersResult","oneSpanGetSignedDocumentsResult","oneSpanCheckDocumentStatusResult","OODEmployers","loadOODLanding","isEmployerIdReferenced","serviceDateInput","CLEAREDSERVICEDATE","editEmployersBtn","createFormsBtn","createfilterPopupCreateBTN","updateEmploymentGoalBtn","employmentGoalText","newEntryBtn","newSummaryBtn","OODEntriesTable","OODConsumerBtns","createfilterPopup","selectedConsumerPeopleId","serviceDateStartInput","serviceDateEndInput","createServiceDateStartInput","createServiceDateEndInput","employeeDropdown","servicesDropdown","referenceNumbersDropdown","createreferenceNumbersDropdown","createFilterValues","thisStartDate","thisEndDate","serviceDateStartBtnWrap","serviceDateEndBtnWrap","employeeBtnWrap","serviceBtnWrap","referenceNumberBtnWrap","OODENTRIESFILTER","FORM4MONTHLYSUMMARYSERVICES","consumerServicesDropdown","consumerServicesDoneBtn","selectConsumerServicePopup","selectedConsumerServiceId","selectedConsumerReferenceNumber","selectedConsumerServiceType","selectedConsumerFormNumber","selectedConsumerServiceName","summaryServicesDropdown","summaryServicesDoneBtn","selectSummaryServicePopup","employmentGoalTextarea","planAjax","getConsumerPeopleId","getEmploymentGoalResult","EmploymentGoal","getEmploymentGoal","employmentGoalDIV","employmentGoalMessage","buildUpdateEmploymentGoalsBtn","buildOODEntriesTable","getOODEntriesResult","OODEntries","getOODEntriesAsync","referenceNumber","formatServiceDate","userUpdated","formNumber","rowConsumer","OODReportType","getForm4MonthlyPlacementEditData","Id","OODForm4MonthlyPlacement","getForm4MonthlySummary","OODForm4MonthlySummary","getForm6Tier1andJDPLan","Tier1andJDPlanForm","getForm8CommunityBasedAssessment","communityBasedAssessmentForm","getForm8MonthlySummary","communityBasedAssessmentSummaryForm","getForm10TransportationData","OODFormTransportation","getForm16SummerYouthWorkExperience","summerYouthWorkExperienceForm","getForm16MonthlySummary","summerYouthWorkExperienceSummaryForm","buildEntryServicePopUp","btnType","summaryBtn","buildSummaryServicePopUp","buildEditEmployersBtn","buildCreateFormsBtn","oodBtnsWrap","getConsumerServiceCodesResult","consumerServices","getConsumerServiceCodesAsync","buildNoServicesPopup","populateConsumerServiceCodeDropdown","servicePopupCancelBtn","serviceDateInputRequired","consumerServicesDropDownRequired","servicePopupDoneBtn","todayDate","thisServiceDate","noServicesPopup","populateMonthlySummaryServiceCodeDropdown","summaryServicesDropDownRequired","selectServicePopup","thisConsumer","thisselectedConsumerServiceId","thisselectedConsumerReferenceNumber","thisselectedConsumerServiceType","thisselectedConsumerFormNumber","thisselectedConsumerServiceName","generateAndTrackFormProgress","loggedInUserPersonId","generateForm4","generateForm6","generateForm8","generateForm10","generateForm16","formsPopup","buildIndividualFormBtn","formText","buildCreateFormPopUp","showCreateFormsPopup","buildEmploymentGoalPopUp","form4Btn","form6Btn","form8Btn","form10Btn","form16Btn","filteredDate","serviceDateStartBtn","serviceDateEndBtn","employeeBtn","employeeCloseBtn","serviceBtn","serviceCloseBtn","referenceNumberBtn","referenceNumberCloseBtn","filterPopupDoneBtn","populateEmployeeDropdown","populateServiceCodeDropdown","populateReferenceNumberDropdown","getActiveEmployeesResult","populateCreateEmployeeDropdown","getActiveServiceCodesResult","getActiveServiceCodesAsync","serviceType","getConsumerReferenceNumbersResult","referencenumbers","getConsumerReferenceNumbersAsync","referencenumber","populatecreateReferenceNumberDropdown","checkCreatePopupRequiredFields","employmentGoalPopupCancelBtn","employmentGoalPopup","toISOString","createfilterPopupDoneBtn","createeventListeners","createreferenceNumbersDropDown","updateEmploymentGoal","ServiceGoal","employmentGoalTitle","checkEmploymentGoalRequiredFields","checkEmploymentGoalEventListners","employmentGoalInput","getConsumerEmployersAsync","getEmployerJSONResult","updateEmploymentGoalResult","serviceCodeType","getContactTypesAsync","getOutcomesAsync","getContactMethodsAsync","formtype","getIndicatorsAsync","getForm4MonthlyPlacementEditDataJSONResult","updateForm4MonthlyPlacementEditData","SAMLevel","contactType","jobSeekerPresent","outcome","TSCNotified","bilingualSupplement","interview","updateForm4MonthlyPlacementEditDataResult","insertForm4MonthlyPlacementEditData","insertForm4MonthlyPlacementEditDataResult","deleteOODFormEntryAsync","emReviewId","getForm4MonthlySummaryJSONResult","updateForm4MonthlySummary","emReviewDate","emReferenceNumber","emNextScheduledReview","emEmploymentGoal","emReferralQuestions","emIndivInputonSearch","emPotentialIssueswithProgress","emPlanGoalsNextMonth","emNumberofConsumerContacts","emNumberEmployerContactsbyConsumer","emNumberEmployerContactsbyStaff","emNumberMonthsJobDevelopment","updateForm4MonthlySummaryResult","insertForm4MonthlySummary","insertForm4MonthlySummaryResult","deleteFormMonthlySummaryAsync","getForm6Tier1andJDPLanResult","updateForm6Tier1andJDPLan","contactMethod","narrative","updateForm6Tier1andJDPLanResult","insertForm6Tier1andJDPLan","insertForm6Tier1andJDPLanResult","getForm8CommunityBasedAssessmentResult","updateForm8CommunityBasedAssessment","behavioralIndicators","jobTaskQualityIndicators","jobTaskQuantityIndicators","interventions","updateForm8CommunityBasedAssessmentResult","insertForm8CommunityBasedAssessment","insertForm8CommunityBasedAssessmentResult","getForm8MonthlySummaryResult","updateForm8MonthlySummary","emSummaryIndivSelfAssessment","emSummaryIndivEmployerAssessment","emSummaryIndivProviderAssessment","emSupportandTransition","emReviewVTS","updateForm8MonthlySummaryResult","insertForm8MonthlySummary","insertForm8MonthlySummaryResult","OODTransportationId","getForm10TransportationDataResult","updateForm10TransportationData","numberInVehicle","startLocation","endLocation","updateForm10TransportationDataResult","insertForm10TransportationData","insertForm10TransportationDataResult","getForm16SummerYouthWorkExperienceResult","updateForm16SummerYouthWorkExperience","updateForm16SummerYouthWorkExperienceResult","insertForm16SummerYouthWorkExperience","insertForm16SummerYouthWorkExperienceResult","getForm16MonthlySummaryResult","updateForm16MonthlySummary","emOfferedHoursNotWorkNumber","updateForm16MonthlySummaryResult","insertForm16MonthlySummary","insertForm16MonthlySummaryResult","deleteOODForm10TransportationEntry","onsubmit","userIdInput","referenceNumberInput","peopleIdInput","serviceCodeIdInput","startDateInput","endDateInput","loggedInUserPersonIdInput","addEditOutcomeServices","outcomeServicesData","addOutCome","importServicesBtn","outcomeTypeDropdown","effectiveDateStart","effectiveDateEnd","importDate","outcomeTypeBtnWrap","effectiveDateBtnWrap","importDateBtnWrap","fromImportedServicesPage","selectedConsume","navigatedFromImport","buildNewOutcomeServices","addOutcomesButton","createUploadPopup","outcomesAjax","getOutcomeServicsPageData","outcomeTypeName","popupContent","dropArea","flexDirection","alignItems","justifyContent","dropText1","dropText2","dataTransfer","handleFiles","selectFilesButton","fileListDisplay","closeButton","hidePopup","importButton","processFilesForUpload","importServices","uploadBtnsWrap","displayFileNames","list","listItem","removeButton","cursor","removeFile","toggleButtonsDisabled","addOutcomes","backToOutcomeLoad","outcomeTypeBtn","outcomeTypeCloseBtn","effectiveDateBtn","importDateBtn","effectiveDateWrap","effectiveDateEndInput","importDateWrap","importDateInput","populateOutcomeTypeDropdown","getOutcomeTypeDropDownResult","OutcomeType","getOutcomeTypeDropDownAsync","outcomeTypeData","outcomeTypes","Goal_Type_ID","goal_type_description","goalID","goal_id","outcomeStatement","serviceTyp","serviceStatement","addServicesForm","objective_Id","currentTarget","goalId","buildNewOutcomes","importantOutcomeForm","buildOutComeForm","getGoalEntriesByIdAsync","getGoalEntriesByIdResult","outcomeDropdown","outcomeStatementInput","dateStart","dateEnd","saveUpdateOutcomes","populateOutcomeTypesDropdown","requiredFieldsOfAddOutcome","getLocationDropDownResult","locationDrop","getLocationDropDownAsync","locationData","locationDrops","locationDescription","checkRequiredFieldsOfAddOutcome","outcomeStatementVal","outComeVal","setBtnStatusOfAddOutcome","insertOutcomeInfoAsync","insertOutcomeInfoResult","servicesStatement","ServiceType","ServiceTypeName","frequencyModifier","frequencyPeriod","objectiveId","outcomeGoalId","ObjectiveID","buildNewServicesForm","buildServicesForm","getObjectiveEntriesByIdAsync","getObjectiveEntriesByIdResult","objective_type","objective_method","success_determination","frequency_modifier","frequency_occurance","frequency_peroid","ServiceTypeDropdown","servicesStatementInput","methodInput","successInput","frequencyModifierDropdown","frequencyInput","frequencyPeriodDropdown","durationInput","saveUpdateOutcomesService","addNewServiceCard","addNewServiceCardBody","durationWrap","populateOutcomeDropdown","populatefrequencyModifierDropdown","RequiredFieldsOfAddServiceForm","getServiceFrequencyTypeDropDownResult","ServiceFrequency","getServiceFrequencyTypeDropDownAsync","ServiceFrequencyData","serviceFrequency","serviceFrequencyType_id","serviceFrequencyType_name","getOutcomeServiceDropDownResult","getOutcomeServiceDropDownAsync","goal_serviceStatement","ServiceFrequencyType","serviceFrequencyType","frequencyPeriodDropdownData","getRequiredFieldsOfAddServiceForm","servicesStatementVal","insertOutcomeServiceInfoAsync","insertOutcomeServiceInfoResult","extractionData","currentlySelectedConsumer","existingOutcomesVendorData","selectedOutcomes","assessmentAreas","sectionToTableMap","importSelectedServicesPopup","knownAndLikelyRisksTable","experiencesTable","paidSupportsTable","additionalSupportsTable","professionalReferralsTable","outcomesServicesData","buildImportSections","headerCheckbox","rowCheckbox","formatDateToYYYYMMDD","handleCheckboxSelection","currentTable","closest","tableRowId","outcomeRowId","escapedOutcomeRowId","CSS","outcomeRowContainer","outcomeData","existingOutcomeGoalId","combinedData","selectedRow","toggleImportButton","handleHeaderCheckboxSelection","headerCheckboxSelector","tableSelector","rowCheckboxes","createAddToExistingOutcomesRow","isPaidSupportsTable","_existingOutcomesVend","serviceDateStartValue","importedOutcomesPDFDataResult","serviceDateEndValue","bDate","eDate","paidSupports","BeginDateEndDate","formattedBDate","formattedEDate","exitingOutcomDropdown","createAddToExistingOutcomesRowContainerDiv","appendToEachRow","insertAdjacentElement","riskAssessments","ra","tableValues","raData","mapRiskAssessmentsDataForTable","assessmentAreaId","experiences","ex","exData","mapExperiencesDataForTable","ps","psData","mapPaidSupportDataForTable","additionalSupports","as","asData","mapAdditionalSupportDataForTable","professionalReferrals","pr","prData","mapProfessionalReferralsDataForTable","importSelectedSerivcesAndCancelBtnWrap","importSelectedServicesBtn","showImportSelectedServicesPopup","checkboxes","anyChecked","allValid","dateInputs","isDropdownSelected","isStartDateValid","isEndDateValid","isDateRangeValid","importSelectedServicesPopupMessage","createDefaultImportedTable","assessmentArea","whatIsRisk","whatSupportMustLookLike","whatSupportLooksLike","riskRequiresSupervision","whatNeedsToHappen","howItShouldHappen","whoIsResponsible","whenHowOften","providerName","scopeOfService","howOftenValue","howOftenText","howOftenFrequency","whoSupports","newOrExisting","reasonForReferral","importedTables","tableDiv","escapedId","existingOutcomeContainer","esitingOutcomeContainerDropdown","additionalData","importSelectedServicesResult","getAssessmentAreaId","targetKey","provderId","WhatIsRisk","WhatSupportMustLookLike","RiskRequiresSupervision","WhoIsResponsible","AssessmentArea","WhatNeedsToHappen","HowItShouldHappen","WhenHowOften","ServiceName","ScopeOfService","HowOftenHowMuch","fundingSourceText","paidSupportsId","ProviderName","howOften","WhoSupports","whoSupportsText","WhatSupportLooksLike","additionalSupportsId","whenHowOftenDesc","NewOrExisting","ReasonForReferral","OUTCOMES_SECTION","filterButton","serviceDropdown","applyButton","currDate","currService","currOutcome","currOutcomeId","selectedConsumerObj","outcomesDataObj","outcomesPrompts","outcomesLocations","detailsPopup","primaryLocationDropdown","secondaryLocationDropdown","resultsDropdown","promptsDropdown","attemptsDropdown","cIDropdown","timeInputs","noteInput","edit__lastEditedByDetails","ciData","successObj","successType","successDetails","currResult","currReason","currAttempts","currPrompt","currCI","currNote","currStartTime","currEndTime","defaultObjLocationId","defaultGoalLocationId","personId","activityId","objdate","goalnote","notifyEmployee","promptType","promptNumber","locationSecondaryId","goalStartTime","goalEndTime","goalCILevel","dateSpanMessage","daysBack","useConsumerLocation","defaultPrimaryLocation","currentSection","todaysDateToDisplay","firstDayOfWeek","lastDayOfWeek","firstDayOfMonth","yearOfCurrentDay","dailyAbsent","initLoad","tmpService","tmpOutcome","tmpOutcomeId","editOutcomeBtn","viewPlanBtn","viewPlanPOPUP","updatePlanPopup","isViewedAvailableOSPlan","getAllowedConsumerIds","allowedConsumerIds","getDropdownValues","prompts","getDataForOverview","objLocationId","goalLocationId","primaryLocationId","disableNewOutcomeFields","disableOutcomeFieldsOtherUser","clearBackCardValues","sortOutcomes","occurrence","Objective_Recurrance","nullHourDaySuccesses","weekSuccesses","monthSuccesses","yearSuccesses","sortOutcomeLocations","Secondary","sortSuccessTypes","unOrderedSuccessObj","Objective_Success_Description","getObjectiveActivities","objectiveRecurrance","activities","initSaveData","Objective_id","saveNewOutcome","getInputValues","newOutcomeData","saveGoals","addReviewNote","objectiveActivityId","objectiveActivityDate","resetOutcomeSaveData","getConsumersWithRemainingGoals","loadCardView","applyOutComeFilter","promptTypeInput","promptNumberInput","goalnoteInput","deleteObjectiveActivity","deleteGoal","_successDetails","_successDetails2","_successDetails3","_successDetails4","_successDetails5","_successDetails6","_successDetails7","_successDetails8","_successDetails9","showAttempts","Show_Attempts","showPrompts","Show_Prompts","showTime","Show_Time","showCI","Show_Community_Integration","attemptsRequired","Attempts_Required","promptsRequired","Prompt_Required","timeRequired","Times_Required","ciRequired","Community_Integration_Required","noteRequired","Notes_Required","errorFree","validateStartEndTimes","checkErrors","startInput","endInput","checkShowFields","selectedConsumersToEnabledList","outcomeModuleBtn","dashButton","afterSelectionRoster","resetFilter","getOutcomesPrompts","getGoalsCommunityIntegrationLevelDropdown","ciResults","getDaysBackForEditingGoalsAndUseConsumerLocation","outcomes_use_consumer_location","consumer_location","setUpOutcomesTabSpans","dateForCalculations","closefilter","getOutcomeCompletion","recurrance","occurance","Frequency_Occurance","freqModifier","Frequency_Modifier","successArray","isComplete","filterOutcomes","filterByData","outcomeId","filteredOutcomesDataObj","filterObject","freqKeys","od","completion","tmpDate","getGoals","populateOutcomes","outcomeDd","outcomeTypeText","populateServiceDropdown","getOutcomeTypeForFilter","buildDateInput","dateinput","currDateCache","currDateCheck","daysBackDateCheck","loadOutcomesCards","buildPrimaryLocationDropdown","locId","Primary","pl","Location_ID","rePopSecondaryLocationDropdown","filteredOutcomesLocations","sl","primaryLocId","buildSecondaryLocationDropdown","buildResultsDropdown","Objective_Success","buildPromptsDropdown","op","Code","Caption","buildAttemptsDropdown","attempt","buildCommunityIntegrationDropdown","ciLevel","captionname","buildTimeInputs","buildNoteInput","buildReviewNoteInput","buildNotifyCheckbox","notifyEmployeeCheckbox","buildSaveButton","isEdit","buildDeleteButton","deleteIncident","buildCardDetails","editData","Objective_ID","lastEditedTime","Last_Update","lastEditHH","lastEditMM","lastEditedDate","lastEdited","Locations_Secondary_ID","objective_success_description","Prompt_Type","Prompt_Number","community_integration_level","start_time","end_time","Objective_Activity_Note","reviewNoteInput","submitted_by_user_id","buildCardEnteredByDetails","timeWrap","buildActivityTracker","activityCount","activityLimit","isAbsent","frequencySeparator","pathColor","percentComplete","dashOffset","path2Style","circle","buildSuccessPopup","successPopupText","successText","buildMethodPopup","methodPopupText","methodText","buildObjectiveActivities","objectiveActivities","outcomeRecurrance","activity","getObjectiveActivity","getOutcomesSuccessTypes","successTypes","getOutcomesPrimaryAndSecondaryLocations","buildCardOverview","Objective_Statement","hasPermission","typeDescription","goalStatement","Success_Determination","Objective_Method","lastUpdatedBy","editIconBtn","statement","lastUpdated","activityTracker","successBtn","methodBtn","successMethodWrap","wrapEdit","lastUpdatedDate","txtArea","buildCardContainer","populateNoFreqOutcomes","oc","populateHourlyOutcomes","populateDailyOutcomes","populateWeeklyOutcomes","populateMonthlyOutcomes","populateYearlyOutcomes","outcomesData","sortOutcomesAlpha","noFreqOutcomes","hourlyOutcomes","dailyOutcomes","weeklyOutcomes","monthlyOutcomes","yearlyOutcomes","defaultActiveSection","outcomeTabs","dashHandler","myconsumerId","myval","displayPlanViewPopup","topFilterDateWrap","date_Input","outcomesService","outcomesType","outcomesConsumer","outcomesDate","reviewOutcomesBtn","planViewPOPUP","showPopup","getPlanbyConsumerHistory","getPlanbyConsumerHistoryResult","isPlanAvailable","isViewPlabBtnDisabled","isViewPlabBtnDisabledResult","documentingForDiv","dayBackDateSpanWrap","daysBackDiv","outcomesTabs","goalsResp","getGoalsAsync","occur","buildAllowedConsumersObj","userIdsWithGoals","userIdsWithRemainingGoals","remainingGoalsIds","every","userReminingGoal","showAlert","showAlertIcon","getUserIdPromise","getUserIdsWithGoalsByDate","getRemainingDailyGoalsPromise","getRemainingDailyGoals","planNow","savePlanNow","planLater","savePlanLater","planUpdatePOPUP","getPlanHistorybyConsumer","getPlanHistorybyConsumerResult","isPlanLaterDisable","planNowBtn","closePopupBtn","resultCheckPlan","addOutcomePlanLater","addOutcomePlanNow","updatePlanPOPUP","popupDateWrap","addOutcomePlan","getViewableGoalIdsByPermission","goalDate","getGoalsByDateNewResult","getGoalSpecificLocationInfo","getGoalSpecificLocationInfoJSONResult","getIdsWithGoals","getUserIdsWithGoalsJSONResult","goalsCheckDate","getUserIdsWithGoalsByDateJSONResult","getDaysBackForEditingGoalsJSONResult","getViewableGoalIdsByPermissionJSONResult","ashLikesThisLoop","getRemainingDailyGoalsJSONResult","getGoalsCommunityIntegrationLevelJSONResult","getGoalsCommunityIntegrationRequired","getGoalsCommunityIntegrationRequiredJSONResult","getOutcomeTypeForFilterJSONResult","saveGoalResult","getObjectiveActivityResult","getOutcomesPromptsResult","goalTypeId","getOutcomesSuccessTypesResult","getOutcomesPrimaryAndSecondaryLocationsResult","getSuccessSymbols","getSuccessSymbolLookupResult","getOutcomeServicsPageDataResult","Type","getReviewTableData","getOutcomesReviewGridResult","getReviewTableDataSecondary","getOutcomesReviewGridSecondaryResult","getAllGoalTypes","getAllGoalTypesResult","updateReviewNoteResult","addOutcomePlanResult","addOutcomePlanLaterResult","isViewedAvailableOSPlanInput","isNewBtnDisabledByPlanHistory","goalTypeID","selectedConsumerCard","outcomesDataRaw","outcomesDataSecondaryRaw","exclamationIds","exclamationSecondaryIds","exclamationDateMap","timesDocByDate","activityRes","goalTypes","tabSections","servBtnWrap","typeBtnWrap","serviceFilterVal","outcomeTypeFilterVal","selectedDateSpan","to","unitType","spanLength","daysBackInput","isDaysBackFilter","outcomesReviewDiv","reviewNotePopup","NO_FREQ_SPAN","HOUR_SPAN","DAY_SPAN","WEEK_SPAN","MONTH_SPAN","YEAR_SPAN","NO_FREQ","HOUR","DAY","WEEK","MONTH","YEAR","FREQ_MAP","hourly","daily","weekly","monthly","yearly","MONTHS","FREQUENCY","OBJFMAL","OBJFMAN","OBJFMAR","OBJFMEX","OBJFMNM","RECURRANCE","newConsumerCardHeader","consumerCardHeader","newOutcomeTabs","populateTabSections","sortLocations","showAddReviewNotePopup","attempts","selectedConsumerName","topInfo","savebtn","cancelbtn","secLocId","sloc","buildAddNoteButton","lastUpdatedDateDirty","showDetailViewPopup","tmpData","primaryLoc","secLoc","prompt","notifyCheckbox","lastEditBy","_successDetails10","_successDetails11","_successDetails12","_successDetails13","updateData","Objective_Date","rnUpdateData","onDetailRowClick","getSuccessTypes","getActivity","calculateSpanFromDateRange","toWeekStart","fromWeekStart","isoToDate","isoFromDate","updateSpanInput","updateDateRangeInputs","updateFilterDates","daysBackToggleBtn","daysBackLabel","buildFilterDates","toggleButtonWrap","dateRangeToggleBtn","daysBackInputWrap","dateRangeInputWrap","dateRangeInnerWrap1","dateRangeInnerWrap2","fromDateLabel","toDateLabel","dateRange","setUnitType","buildCurrentFilterdisplay","dateFilter","filteredByWrap","buildTypesDropdown","_outcomeTypeFilterVal","typesDrop","goalTypeDescription","buildServiceDropdown","_serviceFilterVal","servDrop","tempServiceVal","tempTypeVal","typesDropdown","buildToggleIcon","showTabExclamation","mainRowWrap","mainRow","outcomeTypeId","showExclamation","mainTI","individual","timesDoc","successRate","mainRowSubWrap","showChildren","reviewDates","dateRowWrap","dateRow","dateTI","dateForRow","detailsTable","detailsHeading","details","detailRow","sectionTable","sectionID","outcometype","outcometypeid","showexclamation","tabNavItems","freq","getPercentForSuccessRate","topNumb","bottomNum","percent","setDatesForMiddleTier","occ","dObj","currentDateTime","setMinutes","setSeconds","loopLength","nextDate","stDate","weekStart","isoStartDate","stStartDate","weekEnd","isoEndDate","stEndDate","dateKey","setTabSections","sortReviewTableData","dirtyData","objIdSet","Set","objID","recurr","objectiveStatement","objectiveIncrement","frequencyIncrement","sortReviewTableDataSecondary","outcomeOjb","objective_date","top_number","bottom_number","dateThisBelongsTo","objectiveSuccessSymbol","objectiveSuccessDescription","objectiveActivityNote","splitStart","splitKey","afterDate","compareDate","objectiveDate","objectiveIdList","gridSecondary","rDate","freqMod","freqInc","timesDocDate","otherData","backbtn","filterDisplay","addConsumerToActiveConsumers","newPlanBtn","assignCaseLoadBtn","planSetupPage","setupWrap","prevPlanTable","datesBoxDiv","addedMemberPopup","planHeader","planHeaderButtons","planHeaderGeneralInfoBar","morePopup","morePopupMenu","editDatesScreen","updateStatusScreen","deleteScreen","reactivateScreen","addWorkflowScreen","reportsScreen","reportsAttachmentScreen","DODDScreen","portalScreen","sendToDODDScreen","changePlanTypeScreen","generalInfoBar","previousPlansData","planStatus","planActiveStatus","sentToOnet","downloadedFromSalesforce","hasPreviousPlans","priorConsumerPlanId","thisPreviousPlanId","selectedWorkflows","addWorkflowDoneBtn","planAttBody","workflowAttBody","signatureAttBody","portalPlanAttBody","portalWorkflowAttBody","portalSignatureAttBody","DODDplanAttBody","DODDsignAttBody","DODDworkflowAttBody","include","includeCheckbox","launchWorkflowViewer","processId","WorkflowProcess","CONSUMER_PLAN_REVISION","CONSUMER_PLAN_ANNUAL","WorkflowViewerComponent","pId","pageLoadCallback","offsetTop","consumerFirstName","consumerLastName","FN","LN","plans","getConsumerPlans","pd","consumerPlanId","assessmentData","assessment","getAssessmentData","effectiveStart","effectiveEnd","planDates","planYearStartDate","planYearStart","planYearEndDate","planYearEnd","effectiveStartDate","effectiveEndDate","planReviewDate","reviewDate","buildPlanPage","getSelectedConsumer","getCurrentPlanId","getCurrentPlanType","getPlanStatus","getPlanActiveStatus","getPlanDropdownData","getHasPreviousPlans","getISPValidation","setSelectedConsumer","setPlanId","newPlanId","setPlanType","newPlanType","setPlanStatus","newPlanStatus","setRevisionNumber","revNum","setPlanActiveStatus","newActiveStatus","clearAllDataKeepConsumer","clearData","assessmentCard","clearPlanId","refreshMoreMenu","newMorePopupMenu","buildMorePopupMenu","menuInnerWrap","buildEditDatesScreen","screen","validDates","updateBtn","dateBoxDiv","buildDatesBox","updatePlanDates","successDiv","refreshGeneralInfo","refreshAssessmentCard","ISP","refreshISP","resetPlanDatesToOriginal","updateBoxDateValues","buildUpdateStatusScreen","newStatus","updateConsumerPlanSetStatus","finalizeBtn","buildDeleteScreen","getEffectiveStartDate","formatedDate","splitFormatedDate","esDate","getConsumerNameFromCard","deletePlan","isNew","newOutcome","planOutcomesAjax","deletePlanOutcome","buildReactivateScreen","updateConsumerPlanReactivate","buildAddWorkflowScreen","templateID","wf","populateAddWorkflowScreen","getProcessId","wfvData","getWorkflowList","buildWorkflowList","workflowTemplateId","copyWorkflowtemplateToRecord","referenceId","buildReportsScreen","attachmentsWrap","attachHeading","planAttWrap","workflowAttWrap","signatureAttWrap","planHeading","workflowHeading","signHeading","buildReportsAttachmentsScreen","buildDODDScreen","DODDplanAttWrap","DODDsignatureAttWrap","DODDworkflowAttWrap","buildPortalScreen","portalPlanAttWrap","portalWorkflowAttWrap","portalSignatureAttWrap","buildSendToDODDScreen","buildChangePlanTypeScreen","origDateCache","origType","newType","previousPlansTable","newPlan","newPlanData","currentType","buildPreviousPlansTable","selectedPlan","planData","setRevisionPlanDates","previouslySeletedRow","resetPlanDatesFromChangeTypeMenu","updatePlanType","prevPlanId","getPlanYearStartDate","getPlanYearEndDate","getEffectiveEndDate","getPlanReviewDate","typeSelect","getAttachmentIds","idArray","getwfstepdocIds","workflowstepdocId","runReportScreen","selectedAttachmentsPlan","selectedAttachmentsWorkflow","selectedAttachmentsSignature","getPlanAndWorkFlowAttachments","sigAttachmentId","whereFrom","isSuccess","screenInner","checkboxArea","planAttachmentIds","wfAttachmentIds","sigAttachmentIds","generateReportWithAttachments","checkboxText","runPortalScreen","sendSuccess","transeferPlanReportToONET","sendToPortalAlert","runDODDScreen","assessmentAjax","sendSelectedAttachmentsToDODD","statusText","sendtoDODDSuccessMessage","sendtoDODDGeneralErrorMessage","sendtoDODDResponse","generalMessagePopup","generalBtnWrap","closeBtnWrap","alertokBtn","clipboard","writeText","showOKPopup","displayDetailBtn","sendtoDODDDetailErrorMessage","closeBtn","generalMessage","detailMessagePopup","detailBtnWrap","displayGeneralBtn","detailMessage","OKPopup","OKBtnWrap","OKMessage","sendtoDODDSuccessPopup","sendtoDODDSuccessMesssage","sendtoPortalResponse","alertPopup","alertbtnWrap","alertMessage","morepopupmenu","reportBtn","reportBtn2","reportSignatureBtn","reportBtn3","sendtoPortalBtn","sendToDODDBtn","editDatesBtn","statusBtn","reactivateBtn","changeTypeBtn","sentToOnetPDiv","targetScreen","targetScreenElement","showMorePopup","splitStringSentence","sentence","splitsentence","firstPart","secondPart","handleReportStream","report","mapResultsObj","rest","showFinalizePopup","currScreen","checkboxesSelected","finalizationResults","includeInAssessment","finalizePopup","screen1","screen2","screen3","heading1","heading2","selectedCheckboxes","selectAllCheck","finalizationActions","wfAttachmentStepIds","emailAddresses","selectedEmails","checkBoxes","toONET","signatureOnly","downloadReportCheck","resultsObj","actions","sendToDODDStatus","sendToOhioNetStatus","downloadReportStatus","emailReportStatus","DODD","sendToDODDStatusIcon","sendToOhioNetStatusIcon","ONET","downloadReportStatusIcon","REPORT","emailReportStatusIcon","EMAIL","sendToDODDCheck","sendToOhioNetCheck","emailReportCheck","emails","getDefaultEmailsForFinalization","checkboxWrap","addEmailBtn","autoIncrementId","deleteEmail","attachWraper","includeInAssessmentCheck","buildGeneralInfoBar","firstName2","lastName2","PlanStartDate","PlanEndDate","EffectiveStartDate","EffectiveEndDate","formatedDate2","splitFormatedDate2","edDate","formatedDate3","splitFormatedDate3","starDate","formatedDate4","splitFormatedDate4","dateSpan","dateSpanEff","typeAndNum","moreBtn","buildPlanHeader","getWorkflowMarkup","workflowMarkup","workflowViewer","addWorkflowBtn","addWorkflowPopup","loadingOrder","workflowDashboardCallback","loadingBar","planAttachment","getAttachments","assessmentWrap","workflowWrap","firstToLoad","defaultActiveTab","loadedAppPage","workflowLoadingBar","newWorkflowMarkup","assessmentMarkup","mainAssessment","markUnansweredQuestions","tableOfContents","showUnansweredQuestionCount","sortPreviousPlans","aStart","bStart","handleTypeChange","setAnnualPlanDates","handleDoneBtnClick","createNewPlan","workflowCallback","selectedwfForms","wfvPopup","thisannual_plan","wfFormsData","getWorkFlowFormsfromPreviousPlan","selectedWFTemplateIds","previousPlanId","wfFormsPopup","linebr","selectedPreviousWfForms","getselectedWorkFlowForms","wf_template_selected","buildWorkflowFormList","showWorkflowListPopup","getSelectedConsumerName","currentPlanId","workflowId","insertedSSA","workflowIds","wfDocIds","salesForceCaseManagerId","getStateCaseManagerforConsumer","planYearReviewDate","returnString","insertAnnualPlan","insertRevisedPlan","useLatestPlanVersion","wftemplateId","thiswfForms","thiswfFormslist","WFtemplateId","wantedFormAttachmentIds","priorReferenceId","autoworkflowIds","insertAutomatedWorkflows","autoWFIds","showAddedToTeamMemberNoCasemanagerFoundPopup","addedMemberNoCaseManagerPopup","displayWFwithMissingResponsibleParties","showAddedToTeamMemberPopup","forChangeType","callbackForChangeType","prevPlan","toggleNewPlanDoneBtn","disable","buildNewPlanSetupPage","showInvalidSalesForceWarningPopup","buildNewPlanBtn","isValidSalesforce","validateConsumerForSalesForceId","buildAssignCaseloadBtn","csAssignCaseload","showAssignCaseLoadPopup","buildDownloadPlanBtn","downloadPlanFromSalesforceProgress","downloadPlanFromSalesforce","saleforceIdClass","downloadedDate","downloadDate","sentToDODD","dateSentDODD","userSentDODD","setReviewPlanDates","aDate","aDateObj","bDateObj","checkForSalesForce","loadLanding","getConsumerPlansResult","getConsumerPlanYearInfo","getConsumerPlanYearInfoResult","getServiceAndSupportsDataResult","getPlanAndWorkFlowAttachmentsResult","insertConsumerPlanAnnualResult","insertConsumerPlanRevisionResult","insertAutomatedWorkflowsResult","addSelectedAttachmentsToReport","addSelectedAttachmentsToReportResult","updateConsumerPlanReactivateResult","updateConsumerPlanSetStatusResult","updateConsumerPlanSetAnnualDates","updateConsumerPlanSetAnnualDatesResult","updateConsumerPlanSetRevisionEffectiveDates","updateConsumerPlanSetRevisionEffectiveDatesResult","updateConsumerPlanReviewDate","updateConsumerPlanReviewDateResult","uploadPlanToDODD","uploadPlanToDODDResult","switchPlanTypeResult","deleteConsumerPlanResult","viewPlanAttachment","addPlanAttachment","addPlanAttachmentResult","deletePlanAttachment","getPlanAttachmentsList","getPlanAttachmentsListResult","getConsumerPeopleIdResult","getConsumerPeopleIdAsync","updatePlanSectionApplicable","updatePlanSectionApplicableResult","runReOrderSQL","runReOrderSQLResult","downloadPlanFromSalesforceResult","PlanAttachment","questionId","ro","planAttachmentId","attArray","newList","relativeCheckbox","planID","ispData","dropdowns","characterLimits","consentAndSign","contactInfo","moreDetail","restrictiveMeasures","rmKeepSelfSafe","rmFadeRestriction","rmWhatCouldHappenGood","rmWhatCouldHappenBad","rmOtherWayHelpGood","rmOtherWayHelpBad","introduction","likeAdmire","thingsImportantTo","thingsImportantFor","howToSupport","carryOverReason","whenHowOftenOther","whatWillHappen","whenToCheckIn","fundingSourceOther","howOftenHowMuch","howOftenOther","summary","aloneTime","importantTo","importantFor","skillsAndAbilities","getISPCharacterLimits","getAllISPcharacterLimts","getAssessmentCharacterLimits","removeDupRelationships","relationships","unique","flag","removeDups","flagN","setDropdownData","defaultDropdowns","serviceTypes","showWith","howOftenHowMuchFrequency","whenHowOftenFrequency","howOFtenExperiences","communicationType","dailyLifeDropdownType","levelsOfSupervision","outcomeStatus","relationshipsWithDups","refreshDropdownData","planSummary","planOutcomes","contactInformation","getRelationshipNameById","contactId","endsWith","supportData","getSelectedVendors","filteredService","providerId","populateRelationshipDropdown","dropdownEle","includeSupports","teamMemberGroup","nonTeamMemberGroup","paidSupportsGroup","signatureId","populateOutcomesReviewWhoDropdown","locationsGroup","theseVendors","member","theseLocations","effectiveStartDateInput","effectiveEndDateInput","reviewDateInput","dateErrorMessage","planYearInfo","dateChanged","reviewDateChanged","origPlanYearStartDate","origPlanYearEndDate","origEffectiveStartDate","origEffectiveEndDate","origPlanReviewDate","priorPlanYearEndDate","priorPlanYearStartDate","priorEffectiveStartDate","reviewDateOpts","showReviewDateWarningPopup","warningPop","cachedDates","cahce","previousPlans","startDay","startMonth","latestActivePlan","previousPlanStartDate","previousPlanCreatedOnDate","planStartDate","planEndDate","newReviewDate","activeConsumerPlans","createdOn","currentYear","newPlanReviewDate","newPlanYearStartDate","newPlanYearStart","newEffectiveStartDate","newEffectiveEndDate","newEffectiveStart","newEffectiveEnd","toggleDateInputDisable","forMoreMenu","effectiveStartInput","effectiveEndInput","validateAnnualDates","planStartTime","templateStartDate","validateRevisionDates","priorEffectiveStartTime","priorStartTime","planEndTime","effectiveStartTime","effectiveEndTime","startTimeError","endTimeError","handleDateBoxChange","isValidDate","isBeforeEnd","isAfterStart","reviewInput","fieldsValid","startDateOpts","endDateOpts","effectiveStartDateOpts","effectiveEndDateOpts","formatedSD","formatedESD","formatedED","formatedEED","formatedRD","endDateIinput","reportRunning","reportType","generateReportsAjax","generateReport","checkIfReportIsReadyInterval","createIndividualReportButton","reportWarningPopup","intSeconds","checkIfReportExists","callReport","reportData","generateReportResult","checkIfReportExistsResult","rosterGroups","rosterConsumers","groupedRosterConsumers","absentConsumers","consumersWithUnreadNotes","locationsWithUnreadNotes","ROSTER_LIST","ROSTER_WRAP","ROSTER_SPINNER","FILTER_BTN","SELECT_ALL_BTN","DESELECT_ALL_BTN","LOCATION_NOTES_BTN","MASS_ABSENT_BTN","FILTER_POPUP","loadingRosterWrap","loadRosterSpinner","MINI_ROSTER_BTN","MINI_ROSTER_POPUP","MINI_ROSTER_DONE","MINI_ROSTER_CANCEL","selectedLocationName","selectedLocationId","selectedGroupCode","hideDateFilter","selectedActive","filteredDateBtnWrap","selectedLocationNameBtnWrap","selectedActiveBtnWrap","totalConsumerCountBtnWrap","rosterListSelectable","selectedConsumerCache","consumersWithAlerts","totalConsumerCount","rosterGroupCount","islocationDisabled","MASS_SELECT_ALL_BTN","MASS_DESELECT_ALL_BTN","locationHasUnreadNote","isCaseLoad","selectedConsumersToActiveList","addConsumerToSelectedConsumers","removeConsumerFromSelectedConsumers","getSelectedConsumers","getSelectedConsumersCache","getSelectedConsumersMiniRoster","getAllRosterConsumers","getRosterData","getRosterConsumersData","clearHighlightedConsumers","consumers","selectNoneHighlightedConsumers","removeMiniRosterBtn","getSelectedLocationObj","getSelectedDate","getConsumersWithUnreadNotes","setRosterGroups","rosterData","setSelectedGroupData","defaultRosterGroup","defaultRosterGroupCode","defaultRosterGroupID","setSelectedLocationData","selectedLocationObj","setCustomDefaultLocationData","searchRoster","rc","middleName","MN","rosterlists","rl","groupRosterConsumers","populateRoster","updateTotalConsumerCount","filteredBy1","filteredDateBtn","selectedLocationNameBtn","selectedLocationNameCloseBtn","selectedActiveBtn","totalConsumerCountBtn","groupResults","getConsumerGroupsData","toggleMassAbsentBtn","filterApply","buildLocationDropdown","buildGroupDropdown","buildActiveDropdown","activeDropdown","DATE_INPUT","LOCATION_DROPDOWN","GROUP_DROPDOWN","ACTIVE_DROPDOWN","setupFilterEvent","populateGroupDropdown","populateActiveDropdown","defaultValName","Residence","hasUnreadLocationNote","loc_id","allOpt","activeDropdownData","oldDate","oldLocationName","oldLocationId","oldGroupCode","oldGroupId","oldGroupName","oldRosterGroups","locationDropdownEvent","toggleLocationNotesBtn","hasUnreadNote","hasunreadnote","filterUpdateDisplay","consumerInfo","toggleHideShowAbsentMenuSection","customGroups","customRosterApplyFilterEvent","useAbsent","buildFilterBtn","buildSelectAllBtn","buildDeSelectAllBtn","buildLocationNotesBtn","locationNotesBtnClassNames","buildMassAbsentSelectAllBtn","buildMassAbsentDeselectAllBtn","buildMassAbsentBtn","buildManageGroupsBtn","MANAGE_GROUPS_BTN","wrap2","wrap3","updateSalesforceIds","populateConsumerCardPortraits","consumerCards","consumerData","fName","lName","mName","serviceLocations","LId","primaryLocation","conL","ac","isSelected","hasAlert","cwa","dateOfBirth","dob","SalesforceID","isInactive","IDa","statusCode","isAllowed","alertIcons","ICONS","iconsSVG","iconSVG","hideOrShow","actionCenterChildren","children","actionNavCallback","buildActioNav","getMiniRosterHeadline","consumercount","buildMiniRosterPopup","rosterMarkup","miniRosterWrap","showMiniRosterPopup","rosterOptions","getRosterLocationsData","locationDisabled","buildRoster","selectable","disabledLocation","toggleMiniRosterBtnVisible","showBtn","getLocationsWithUnreadNotesData","locationNotesAjax","getLocationsWithUnreadNotes","getLocationsWithUnreadNotesResult","getConsumersByGroupData","getConsumerByGroupData","getConsumersByGroup","getConsumersByGroupJSONResult","getConsumersWithUnreadNotesByEmployeeAndLocationData","progressNotesAjax","getConsumersWithUnreadNotesByEmployeeAndLocation","getConsumersWithUnreadNotesByEmployeeAndLocationResult","forceGroupFilter","seenIds","consumersWithUnreadNotesResults","progressNotes","createConsumersWithUnreadNotesObj","getAbsentConsumers","toggleRosterListLockdown","lockItDown","refreshRosterList","rosterEventSetup","showCard","isConsumerSelected","currentlySelectedConsumerId","groupCount","nextGroup","initMassAbsent","loadManageGroupsPage","locationNotes","loadAllNotesPage","loadingMore","rosterGroupKeys","otherOpts","loadRosterInfo","showActionNavCancel","forMiniRoster","consumerInfoCard","getIndividualAbsentData","checkForIndividualAbsentJSONResult","getAllAttachments","getAllAttachmentsResult","getConsumerDemographics","getConsumerDemographicsJSONResult","getConsumerRelationships","getConsumerRelationshipsJSONResult","getDemographicsNotes","getDemographicsNotesJSONResult","getConsumerScheduleLocation","getConsumerScheduleLocationResult","getConsumerSchedule","scheduleData","populateConsumerScheduleResult","updatePortrait","imageFile","getPSIUserOptionListJSONResult","updateConsumerDemographics","updateDemographicsRecordResult","removeConsumerPhoto","removeConsumerPhotoResult","verifyDefaultEmailClient","getEditConsumerRelationships","getRelationshipsType","getRelationshipsName","getRelationshipsNameByID","selectedValue","relationType","insertEditRelationship","consumerRelationshipsNew","consumerRelationships","consumerRelationshipsNewList","consumerRelationshipsList","rosterWorkflow","strWorkflowIds","convertedstrWorkFlowIds","getWFwithMissingResponsibleParties","constrWorkFlowIds","responsibleData","workflowNames","strWorkflowNames","missingResponsiblePartyAlert","showAddWorkflowPopup","wfPopup","getManualWorkflowList","notPlan","workflowList","wfvItem","newScreen","buildWorkflowScreen","onResetViewer","getWorkflowScreen","onResetViewerFunc","workflowConsumerId","workflowConsumerName","scheduling","loadSchedulingLanding","schedulingCalendarBtn","schedulingCalendar","schedulingRequestTimeOffBtn","schedulingRequestTimeOff","schedulingApproveRequestBtn","schedulingApproveRequest","schedulingAjax","getLocationDropdownForSchedulingAjax","getLocationDropdownForSchedulingResult","getSchedulesForSchedulingModuleAjax","getSchedulesForSchedulingModuleResult","requestDaysOffSchedulingAjax","getCallOffDropdownReasonsAjax","getCallOffDropdownReasonsResult","getCallOffDropdownEmployeesAjax","shiftDate","getCallOffDropdownEmployeesResult","getRequestTimeOffDropdownEmployees","getRequestTimeOffDropdownEmployeesResult","saveSchedulingCallOffRequestAjax","saveSchedulingCallOffRequestResult","getDayOfWeekScheduleAjax","getDayOfWeekScheduleResult","getScheduleApptInformationAjax","getScheduleApptInformationResult","saveOpenShiftRequestSchedulingAjax","saveOpenShiftRequestSchedulingResult","getOverlapStatusforSelectedShiftAjax","shiftId","getOverlapDataforSelectedShiftAjax","cancelRequestOpenShiftSchedulingAjax","requestShiftId","cancelRequestOpenShiftSchedulingResult","approveDenyOpenShiftRequestSchedulingAjax","approveDenyOpenShiftRequestSchedulingResult","approveDenyCallOffRequestSchedulingAjax","approveDenyCallOffRequestSchedulingResult","approveDenyDaysOffRequestSchedulingAjax","approveDenyDaysOffRequestSchedulingResult","getScheduleMyApprovalDataAjax","getScheduleMyApprovalDataResult","rosterLocationDropdown","rosterGroupDropdown","dayServicesLocationDropdown","timeClockLocationDropdown","WorkshopLocationDropdown","moneyManagementLocationDropdown","rosterRLLCheckBox","dayServicesRLLCheckBox","timeClockRLLCheckBox","WorkshopRLLCheckBox","moneyManagementRLLCheckBox","itDaysBackInput","caseNotesDaysBackInput","progressNotesDaysBackInput","rosterLocation","rosterGroup","rosterGroupName","dayServicesLocation","timeClockLocation","WorkshopLocation","moneyManagementLocation","rosterRLL","dayServicesRLL","timeClockRLL","workshopRLL","moneyManagementRLL","defaultRosterLocationFixed","dayServiceDropdownData","workshopDropdownData","moneyManagementDropdownData","timeClockDropdownData","rosterLocDropdownData","rosterGroupDropdownData","defaultsAjax","saveDefaultLocationValue","setRememberLastLocation","saveDefaultLocationName","getGroup","setGroup","dayServiceLocationPromise","workshopLocationPromise","workshopAjax","WorkshopLocations","timeClockLocationPromise","rosterLocPromise","rosterGroupPromise","moneyManagementLocationPromise","repopulateRosterGroupDropdown","defaultsPage","currMenu","rosterSection","rosterSectionHeader","dayServiceSection","dayServiceSectionHeader","timeClockSection","timeClockSectionHeader","WorkshopSection","WorkshopSectionHeader","incidentTrackingSection","incidentTrackingSectionHeader","moneyManagementSection","moneyManagementSectionHeader","caseNotesSection","caseNotesSectionHeader","rosterChecboxDiv","dayServicesChecboxDiv","timeClockChecboxDiv","workshopChecboxDiv","moneyManagementChecboxDiv","checkInitialRememberLastLocation","newVal","updateConsumerNotesDaysBack","groupDropdownOptions","updateCaseNotesDaysBack","invalidDefaults","getInvalidDefaults","invalidDefaultNotificationPopup","listHeader","def","moduleDefault","getInvalidDefaultsResult","updateConsumerNotesChecklistDaysBack","updatedChecklistDays","updatedDaysBack","updateCaseNotesReviewDaysResult","helpPage","linkButton","demographicInfo","mobileCarriersData","emailError","infoPage","carrierDropdown","getStaffDemographicInformation","GetDemographicInformationResult","updateStaffDemographicInformation","mergeUpdateWithDemo","UpdateDemographicInformationResult","getMobileCarrierDropdown","getMobileCarrierDropdownResult","updateInformationData","newDemoInfo","emailSectionBody","errorEle","updatedKeys","saveEle","addressOne","addressTwo","mobilePhone","getValidateEmailInformation","GetValidateEmailInformationResult","emailValidation","isEmailExist","emailDuplicationPopUp","emailDuplicationPOPUP","splitNumber","formatZipCode","setCaretPosition","elem","caretPos","move","stringAdd","newSubStr","populateCarrierDropdown","carrier","carrierId","carrierName","buildAddressSection","addressSection","stateZipWrap","buildNumbersSection","validPhone","numberSection","saveValue","buildEmailSection","emailSection","updateButton","phoneNumberSection","timeEntry","adminPayPeriods","payPeriods","currentAdminPayPeriod","currentPayPeriod","currentAdminDate","residenceLocations","workCodes","evvReasonCodes","crossmidnightisadminedit","crossmidnightpayperiod","saveAndSubmit","requiredFields","isDestinationRequired","isNoteRequired","isOdometerRequired","isLicensePlateRequired","isReasonRequired","supervisorApproval","reconfigImportFile","useFiveCharWorkCode","overlapLocationsPopup","overlapLocationsDropdown","overlapLocationsDoneBtn","duplicateconsumerIds","consumerswithUniqueLocations","consumerswithMultipleLocations","overlapconsumerlocationdata","selectedOverlapLocIds","getEntryData","keyStartStop","saveAndSubmitBool","singleEntryAjax","singleEntryOverlapCheck","showOverlapPopup","showMultipleEntriesPopup","getSaveUpdateData","saveEntryData","saveData1","checkHours","crossMidnightCheckHours","day1TotalHours","defaultStartTimeChanged","evvReason","checkDeviceType","deviceType","saveData2","day2TotalHours","destination","licensePlateNumber","odometerEnd","odometerStart","transportationReimbursable","transportationUnits","dateOfService","nextDay","defaultEndTimeChanged","insertSingleEntryNew","entryId","updateObj","singleEntryIdString","updateSingleEntryStatus","clearAllGlobalVariables","newTimeEntry","results2","entryId2","updateObj2","getSelectedConsumerLocations","preInsertSingleEntry","singleEntryId","displayOverlapLocationsPopup","updateSingleEntry","isAdminEdit","payPeriod","refreshPage","saveAndUpdateEntryForMidnightCross","updateResults","updateObj1","saveResults","updateEntry","deleteEntry","deleteSingleEntryRecord","updateorsave","messageText","enableSaveButtons","popup2","message2","yesBtn2","noBtn2","getConsumerswithOverlappingLocations","consumerlocatons","checkOverlapPopupForErrors","erros","populateOverlapLocationsDropdown","locDrop","thisconsumersLocations","buildOverlapLocationsDropdown","overlappedLocationsEntriesMessage","seletedOverlapLocId","overlapConsumerlist","listofSingleEntryIdsSaved","saveSingleEntrywithLocationOverlaps","enableSaveButton","selectedOverlapConsumerId","savedLocationsSingleEntryPairs","overlapSavedLocationsSingleEntryPairs","duplocationIds","listofDuplicateLocationIds","duplocatId","nonoverlapconsumerswithsamelocation","strConsumerIds","locationid","singleentryid","nonoverlapconsumerswithUniqueLocations","foundlocation","seletedOverlapLocationId","insertConsumerforSavedSingleEntry","saveOverlapLocationasSingleEntry","concatsavedLocationsSingleEntryPairs","getSingleEntryConsumersPresentAsync","numberOfConsumersPresent","singleEntryIdArray","setRequiredFields","destinationrequired","noterequired","odometerrequired","licenseplaterequired","reasonrequired","supervisorapproval","reconfigimportfile","use5characterworkcode","setSelectedPayPeriod","tmpStart","tmpEnd","sortPayPeriods","adminDatesSet","datesSet","adminDefaultDates","defaultDates","anywhereClosed","anywhereclosed","sendEvvData","sendevvdata","startdate","enddate","startDateIso","endDateIso","newObj","startDateObj","endDateObj","getPayPeriods","admin","getCurrentPayPeriod","getCurrentDate","getEvvReasonCodes","getResidenceLocations","getWorkCodes","useAllWorkCodes","allWorkCodes","getWorkCodesAsync","getRequiredFields","getInitialData","promises","getSingleEntryPayPeriods","getSingleEntryLocations","getRequiredSingleEntryFields","getLocationsAndResidences","checkLocationServicesEnabled","locationsWarningpopup","loadNewTimeEntryPage","getExistingTimeEntry","getExistingTimeEntryResult","endDateWarningPopup","loadTimeEntryReviewPage","loadTimeEntryApprovalPage","loadSingleEntryLanding","timeEntryBtn","timeReviewBtn","timeApprovalBtn","getSingleEntryConsumersPresent","getSingleEntryConsumersPresentJSONResult","getSubEmployeeListAndCountInfo","getSubEmployeeListAndCountInfoJSONResult","getSingleEntryPayPeriodsJSONResult","getRequiredSingleEntryFieldsJSONResult","getWorkCodesJSONResult","getAllWorkCodes","getSingleEntryLocationsJSONResult","getSingleEntryUsersByLocation","seDate","getSingleEntryByDate","statusIn","getSingleEntryByDateJSONResult","getSingleEntryById","getSingleEntryByIdJSONResult","signatureAjax","getConsumersSignaturesAndNotes","savedSingleEntryId","saveSignatureAndNote","preInsertSingleEntryResult","consumersWithLocIdZero","filteredResults","getSelectedConsumerLocationsResult","singleEntryOverlapCheckJSONResult","updateSingleEntryResult","adminUpdateSingleEntryStatus","adminStatusData","approveSingleEntryRecord","getSingleEntryEmployees","getSingleEntrySupervisorsJSONResult","getSingleEntrySupervisors","getEmployeeListAndCountInfoJSONResult","getAdminSingleEntryLocations","getAdminSingleEntryLocationsJSONResult","singleEntryFilterAdminList","filterData","singleEntryFilterAdminListJSONResult","getAddressByLatLong","googleMapAPI","formatted_address","getUserSingleEntryLocationsForPayPeriod","getSingleEntryUsersWC","getUserData","getSingleEntryUsersWCJSONResult","getLocationsAndResidencesJSONResult","getSingleEntryEvvReasonCodesJSONResult","getEvvEligibility","entryDate","getSingleEntryEvvEligibilityJSONResult","getEvvEligibilityAsync","timeEntryDetailsPopup","consumerSection","loadingSection","transportationSection","buildConsumerSection","consumerArr","consumerDiv","buildTransportationSection","ed","entryData","Transportation_Units","trans_type","Transportation_reimbursable","trans_milage","trans_odStart","odometerstart","trans_odEnd","odometerend","trans_destination","trans_licenseplate","trans_reason","consumersPresent","getSEData","getSEConsumers","resConsumers","simpleMarModuleButton","showEMARfailurePopup","signOnFailerPop","simpleMarAjax","loginURL","simpleMarLoginResult","TRANS_mainLanding","drivers","inspectionCategories","vehicles","altAddresses","loadTransportationLanding","myRoutesBtn","TRANS_myRoute","manageRoutesBtn","TRANS_manageRoutes","newRouteBtn","vehicleInspectionBtn","TRANS_vehicleInspectionLanding","getVehicles","getAlternateAddress","updateAltAddress","TRANS_mainLandingAjax","getAltAddresses","tempAltAddresses","getAlternateAddressesResult","tempAltAddressesMap","addArr","getAllDrivers","catEndDate","catStartDate","termDate","driverLookup","vehicleLookup","ret","locationLookup","vehicleFilteredLookup","gatherComplete","tmpDrivers","getDriversResult","tempCategories","getInspectionCategoriesResult","tempVehicles","getVehicleDropdownResult","tempLocations","tmpDriversMap","tempCategoriesMap","tempVehiclesMap","tempLocationsMap","driver","Person_ID","allowNA","vehicle","vehicleInformationId","driversProm","getDrivers","categoryProm","TRANS_vehicleInspectionAjax","getInspectionCategories","vehicleProm","locationProm","altAddressProm","WaitingList","unload","WaitingListAssessment","moduleWrapEle","moduleHeaderEle","moduleBodyEle","WaitingListOverview","moduleHeader","moduleBody","isNewAssessment","wlData","wlLinkID","wlCircID","wlNeedID","wlDocuments","wlParticipants","maxQueueSize","isFormComplete","isAssessmentComplete","contributingCircumstancesWrap","needsWrap","tocLinks","doucmentsList","updateQueue","wlForms","participantsTable","sendEmailButton","sendEmailPopup","sendEmailForm","documentsButton","documentsForm","documentsPopup","waitingListInfo","dbtable","participants","conditions","currentAvailableServices","contributingCircumstances","primaryCaregiver","behavioral","physical","riskMitigation","icfDischarge","intermittentSupports","childProtectionAgency","adultDayEmployment","dischargePlan","immediateNeeds","currentNeeds","waiverEnrollment","conclusion","sectionResets","forceSendUpdates","findFieldTypeById","targetId","fieldtype","addNewDocumentToList","fileName","documentItem","deleteIcon","Icon","getIcon","toggleTocLinksDisabledStatus","links","link","updateFormCompletionStatus","requiredInputs","checkValidity","checkIsAssessmentComplete","incompleteSections","toggleSendEmailDisabledStatus","setAnswerValueForInsertUpdate","getLinkIdForInsertUpdate","updateOrInsert","getFundingSources","fundingSources","getWaitingListFundingSourcesResult","fs","fundingSourceId","saveDocument","attachDetails","waitingListInformationId","includeOnEmail","addWLSupportingDocumentResult","supportingDocumentId","insertNewWaitingListAssessment","linkId","propertyName","valueTwo","insertOrUpdate","insertUpdateWaitingListValueResult","updateAssessmentData","insertAssessmentData","insertUpdateAssessmentData","wlFormInfo","newRecordId","addUpdate","mapDataBySection","wlInfoId","circumstanceId","needId","participantData","particpant","conditionId","activeServiceId","primaryCaregiverId","riskId","physicalNeedId","medicalNeedId","riskMitigationId","icfDischargeId","intermitentSupportsId","childProtectionId","requireWaiverFundingId","dischargePlanId","immediateNeedId","unmetNeedId","waiverEnrollmentId","personCompleting","personCompletingTitle","currentLivingArrangement","livingArrangementOther","areasPersonNeedsHelp","interviewDate","otherThanMentalHealth","before22","isConditionIndefinite","isCountyBoardFunding","isOhioEarlyInterventionService","isBCMHService","isFCFCService","isODEService","isOODService","isChildrenServices","isMedicaidStatePlanHomeHealthAideservice","isMedicaidStatePlanHomeHealthNursingService","isMedicaidStatePlanService","isOhioHomeCareWaiverservice","isPassportWaiverService","isAssistedLivingWaiverService","isMYCarewaiverService","isSelfWaiverService","isLevelOneWaiverService","isOtherService","otherDescription","isPrimaryCaregiverUnavailable","unavailableDocumentation","isActionRequiredIn30Days","actionRequiredDescription","isIndividualSkillsDeclined","declinedSkillsDocumentation","declinedSkillsDescription","additionalCommentsForUnavailable","risksIsNone","risksIsRiskToSelf","risksIsPhysicalAggression","risksIsSelfInjury","risksIsFireSetting","risksIsElopement","risksIsSexualOffending","risksIsOther","risksFrequencyDescription","risksHasNoDocument","risksHasPoliceReport","risksHasIncidentReport","risksHasBehaviorTracking","risksHasPsychologicalAssessment","risksHasOtherDocument","risksOtherDocumentDescription","physicalNeedsIsPhysicalCareNeeded","physicalNeedsIsNone","physicalNeedsIsPersonalCareNeeded","physicalNeedsIsRiskDuringPhysicalCare","physicalNeedsIsOther","physicalNeedsDescription","medicalNeedsIsLifeThreatening","medicalNeedsIsNone","medicalNeedsIsFrequentEmergencyVisit","medicalNeedsIsOngoingMedicalCare","medicalNeedsIsSpecializedCareGiveNeeded","medicalNeedsIsOther","medicalNeedsDescription","needsIsActionRequiredRequiredIn30Days","needsIsContinuousSupportRequired","rMIsSupportNeeded","rMIsNone","rMIsAdultProtectiveServiceInvestigation","rMIsCountyBoardInvestigation","rMIsLawEnforcementInvestigation","rMIsOtherInvestigation","rMdescription","rMIsActionRequiredIn3oDays","icfDetermination","icfIsICFResident","icfIsNoticeIssued","icfIsActionRequiredIn30Days","intSupDetermination","intSupIsSupportNeededIn12Months","intSupIsStayingLivingArrangement","intSupIsActionRequiredIn30Days","cpaDetermination","cpaIsReleasedNext12Months","cpaAnticipateDate","cpaHasUnaddressableNeeds","rwfWaiverFundingRequired","rwfNeedsMoreFrequency","rwfNeedsServiceNotMetIDEA","rwfNeedsServicesNotMetOOD","dischargeDetermination","dischargeIsICFResident","dischargeIsInterestedInMoving","dischargeHasDischargePlan","immNeedsRequired","immNeedsDescription","unmetNeedsHas","unmetNeedsSupports","unmetNeedsDescription","waivEnrollWaiverEnrollmentIsRequired","waivEnrollWaiverEnrollmentDescription","conclusionUnmetNeeds","conclusionResult","conclusionWaiverFunded12Months","conclusionDoesNotRequireWaiver","conclusionNotEligibleForWaiver","conclussionDeterminedBy","conclusionDeterminedByTitle","conclusionDeterminedOn","fieldType","enableSectionsForReview","isOtherThanMentalHealthYes","isBefore22Yes","isConditionIndefiniteYes","pgActionRequiredIn30Days","pgUnavailable","needOtherActionRequired","rmActionRequired","isAdultProtectiveServiceInvestigationChecked","isCountyBoardInvestigationChecked","isLawEnforcementInvestigationChecked","isOtherInvestigationChecked","enableInputsForReview","hasCheckBehavioral","hasCheckBehavioralDocs","hasCheckPhysical","hasCheckMedical","hasCheckRisksMitigation","showHideNeedsPages","showPages","properties","showHideRiskMitigation","isNeedsActionRequired","showRM","showHidePagesRelatedToICF","icfAnyNo","showHideICFDischarge","isRisksActionRequired","showICF","showHideImmediateNeeds","isRMChecked","isAnyCheckboxCheckedRiskMitigation","isActionRequiredRM","isActionRequiredOther","isPGActionRequiredIn30Days","noticeIssuedICF","isActionRequiredICF","isResidentICF","isAllYesICF","showImmediateNeeds","showHideCurrentNeeds","isAnyNoICF","showCurrentNeeds","isConditionInputsAllYes","isAnyCheckboxCheckedBehaviors","isAnyCheckboxCheckedBehaviorsDocs","isAnyCheckboxCheckedPhysical","isAnyCheckboxCheckedMedical","needsOtherCheck","hasCheckBehaviorOne","hasCheckBehaviorTwo","needsIsActionEnabled","intermittentSupportsDetermination","allHaveCheck","currentNeedsDetermination","icfDischargeDetermination","childProtectionAgencyDetermination","adultDayEmploymentDetermination","dischargePlanDetermination","updateTo","condition","immediateNeedsDetermination","setConclusion","conditionPageAllYes","waiverEnrollRequired","_ref6","_ref7","enableIsIndividualSkillsDeclined","_ref8","_ref9","risksIs","_ref10","isNotAppChecked","hasCheck","hasCheckDocs","risksIsRiskToSelfInputId","risksHas","_ref11","_ref12","physicalNeeds","_ref13","isPhysicalCareNeededInputId","medicalNeeds","_ref14","_ref15","isNeedsActionRequiredYes","rMIs","_ref16","cleardNotApp","hasOtherCheck","isRequired","_ref17","_ref18","_ref19","_ref20","_ref21","_ref22","_ref23","onChangeCallbacksFormWatch","_ref24","formsToDelete","checkboxGroupId","_event$target$closest","waitingListId","generateWaitingListAssessmentReportResult","intervalSeconds","intervalMilliseconds","reportExists","resp2","truncateFilename","participantsForm","participantName","participantRelationship","participantId","onRowClick","onRowDelete","primaryButtonWrap","isContributingCircumstancesSubSection","isNeedsSubSection","tocSection","tocSectionLink","statusIcon","sectionWrap","sectionHeader","convertCamelCaseToTitle","hideAllButtons","initFormInfo","columnSortable","allowDelete","RosterCard","AsyncQueue","responses","docResp","getWLSupportingDocumentListResult","WaitingListData","insertWaitingListAssessment","getReviewDataByConsumer","getLandingPageForConsumerResult","conclusionDate","selectedRowId","wlReviewTable","deleteWarningPopup","conclusionResults","alreadyHasAssessmentForToday","dateA","dateB","populateReviewTable","newAssessmentBtn","isNewAssessmentBtnDisabled","idkyet","waitingListAssessmentId","getWaitingListAssessmentResult","populateDeleteWarningPopup","confirmButton","cancelButton","removeRow","defaultWorkshopLocationId","jobDropdown","supervisorDropdown","clockOutNavBtn","consumerListBtn","locationFilterDropdownData","jobDropdownData","updateJobFilterDropdownData","jobFilterDropdownData","supervisorDropdownData","selectedBatchId","multiConsumerSelect","minStart","minDateIso","maxDateIso","maxEnd","displayDateIso","workshopFilterListData","jobStepId","batchId","filterCache","locationSelectedOpt","jobStepSelectedOpt","mainTableData","mainJobData","mainLocationData","initalRosterLoad","activeModulesConsumers","jobStepBtnWrap","compareSupList","nameA","nameB","comparison","checkOpenBatches","WorkshopPreBatchLoad","openBatches","batchPickerPopup","batchDropdown","defaultId","findCorrectDates","exitBtn","breakDownConsumerList","consumerArray","consumerIdList","buildSelectionFields","dateSelection","initialData","getEnabledConsumersForWorkshop","employee_id","filteredConsumer","WorkshopGetSupervisors","WorkshopGetJobCode","jobstepid","activityType","activitytype","jobString","shortdescription","customercode","jobcode","jobstep","updateJobDropdown","forFilter","updateJobDropdownData","buildWorkshopTable","workshopLocation","workshopJob","workshopDate","workshopStartDate","workshopEndDate","workshopTableOpts","jobactid","quantity","isPieceRate","trimedHour","supervisor","handleWorkshopTableEvents","workshopTable","jobAct","jobActivity","tableRowPopup","startTimeField","endTimeField","quantityField","tableRowApplyChange","deleteEntryBtn","deleteWorkshopEntry","changedStartTime","enteredEndTime","updateWorkshopClockIn","changedStartTimeDISPLAY","clockoutWorkshopSingle","enteredEndTimeDISPLAY","updateWorkshopQuantity","tableFilterPopup","filterApplyBtn","locationDropdownSelect","jobDropdownSelect","WorkshopFilterList","locationCloseBtn","jobStepBtn","jobStepCloseBtn","locationDisplay","dateDisplay","timeClockJobDropdown","timeClockJobDropdownField","supervisorID","jobStepIdInt","supervisorSelect","supSelectedIndex","inData","consumerids","jobActType","startOrEnd","WorkshopClockIn","overlapErrorPopup","outData","WorkshopClockOut","overlapRecords","inOutString","overlapDescriptionWrap","overlapRecord","correctBtn","overlapCorrection","miniRoster","sitenav","jobActid","timeEntered","singleClockOutData","jobActivityId","jobActId","deleteData","getDeleteWorkshopEntryResult","getWorkshopBatchById","getEnabledConsumersForWorkshopResult","updateClockInData","getUpdateWorkshopQuantityResult","absenceDate","WorkshopPreBatchLoadResult","dateSelected","WorkshopLocationsResult","getWorkshopSupervisorsResult","queryData","getWorkshopJobCodeResult","getWorkshopFilterListDataResult","GetWorkshopOverlapsResult","viewerBtnOpts","viewerBtn","Notifications","DEFAULT_OPTIONS","mergeObjects","notifications","itemEle","Tutorial","mergOptionsWithDefaults","userOptions","TutorialState","initialState","totalSteps","observers","subscribe","observerFunction","unsubscribe","setState","newState","back","tutorialState","tutorial","VallidationController","items","validationWrap","errorsWrap","warningsWrap","addWarning","itemInstance","ValidationMessage","addError","toggleErrorStatus","isError","displayStatus","callbackFunction","DAYS","DatePicker","parentEle","labelEle","showPicker","eachDayOfWeek","isCurrentWeek","navigationEle","weekWrapEle","prevWeekNavBtn","nextWeekNavBtn","customDatePicker","isDateCurrentlySelected","classArray","dateWrapEle","toDateString","dayOfWeekEle","dateEle","currentSelectedDate","messagePending","messageSuccess","messageError","iconWrap","clickOutToClose","Spinner","showPending","showSuccess","replaceWith","asyncSetTimeout","_this$middleName","fragment","DocumentFragment","filterDate","isCaseLoadDisabled","failedImageCache","rosterWrapEle","rosterSearchInput","rosterCaseLoadInput","rosterInActiveInput","messageEleIcon","_buildMobileButton","mobileRosterBtn","_updateMessage","tagName","_filterConsumersOnSearch","nameCombinations","cardEle","_scrollToTop","newIcon","cv","gridAnimationWrapper","inActive","rosterCard","pinCardIcon","forceAll","isLocked","lockdown","cid","Attachments","File","separateHTMLAttribrutes","inputGroup","filenamelength","targetID","forbiddenTypes","isFileTypeValid","validateFileType","newInputId","newInputInstance","_viewAttachment","newAttachments","newAttachment","classes","textNode","isDisbled","isHidden","updateText","inputWrap","inputNote","readOnly","setCustomValidity","updateLableValue","stringContainsHTML","CheckboxGroup","groupLabelEle","field","inputInstance","Confirmation","Alert","isModal","dialogDimensions","onClose","showModal","RadioGroup","tmpFix","Select","Textarea","submitButton","newButton","FormData","fromEntries","svg","arrowRight","arrowLeft","chevron","densitySmall","densityMedium","exitFullScreen","openFullScreen","micOn","micOff","pin","play","getIconButton","showcount","countMarkup","inputCount","dateformat","imgSource","defaultImgSource","image","onerror","loading","Radio","DEFAULT_OPTIONS_2","checkedInputId","sortByProperty","optionEle","onOff","removeElement","getNodeIndex","checkDateFormat","rowSortable","selectedRows","tableNav","tBodies","_multiSelect","newCheckbox","checkboxInput","th","tHead","cells","_columnSort","colIndex","lastDirection","lastHeading","clonedTableBody","_rowSort","newSort","rowEle","initRowSort","_this$options$heading","SpeechToText","textareaInstance","isSpeechInitialized","isListening","initSpeechRecognizer","mutationObserver","speechRecognizer","currValue","startSpeechRecognizer","stopSpeechRecognizer","closeSpeechRecognizer","FullscreenTextarea","fullScreenDialog","fullScreenCloseBtn","dupShowModalBtn","fullScreenShowBtn","inputClone","speechToTextBtn","autoClose","waitDuration","closeToastButton","tempDiv","htmlFragment","byte","isReferenceFree","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","props","matching","leftover","sectionName","regExp","scrollTo","behavior","regex","timeoutId","apiEndpoint","onSendComplete","queue","queueLength","failedUpdates","isSending","sendUpdates","forceUpdate","updatesToSend","sendPromises","setSendCompleteCallback","camelCaseStr","spacedStr","connectionWatch","statusPopup","statusMessage","wait","executedFunction","_len","args","_key","context","later","URL_BASE","fetch","ok","json","getDeviceType","isTablet","storedValue","updatedValue","baseObject","mergeObject","sortProp","aValue","bValue","splitObjectByPropNames","dirtyObj","maxLength","fileExtension","maxMainLength","firstPartLength","secondPartLength","watchVariable","initialValue","forbiddenTypesPattern","_event$target$files$","cnFilters","billersDropdown","consumerDropdown","billingCodeDropdown","reviewStatusDropdown","correctedDropdown","enteredDateStartInput","enteredDateEndInput","additionalFilterContainer","locationFilterCbox","serviceFiltercCbox","needFiltercCbox","contactFiltercCbox","confidentialFiltercCbox","showOverlapscCbox","billedFiltercCbox","attachmentsFiltercCbox","noteTextFiltercCbox","selectAllFilterCbox","needDropdown","contactDropdown","confidentialDropdown","outcomeServiceMonitoringDropdown","billedDropdown","attachmentsDropdown","noteTextDropdown","noteTextInput","activeAdditionalFilters","billerBtnWrap","consumerBtnWrap","billingServiceBtnWrap","reviewStatusBtnWrap","correctedBtnWrap","outcomeServiceMonitoringBtnWrap","serviceDatesBtnWrap","createdDatesBtnWrap","needBtnWrap","contactBtnWrap","confidentialBtnWrap","billedBtnWrap","attachmentsBtnWrap","showOverlapsBtnWrap","noteTextBtnWrap","consumerDropdownData","serviceBillingCodes","needDropdownData","serviceDropdownData","contactDropdownData","checkOverlaps","createFilterElements","createMoreFilterOptionElements","setCheckForOverLaps","setNewFilterValues","setFilterValFromPopup","moreFilterOptBtn","moreFilterOptionPopup","filterBtnWrap","addAdditionalFilters","serviceDateWrap","createDateWrap","moreFilterPopup","checkAdditionalFilters","cBoxContainer","getServiceDepententData","populateStaticFilters","reviewStatusDropdownData","billedDropdownData","attachmentDropdownData","correctedDropdownData","outcomeServiceMonitoringDropdownData","noteTextDropdownData","noteTextDefault","populateConsumerFilter","populateDropdownData","populateBillersDropdown","billers","billerName","populateDropdownsBasedOnServiceCode","selectedServiceBillCode","rawDropdownData","getCNPopulateFilterDropdownsResult","sortRawDropdownData","getConsumerDropdownData","getBillersDropdownData","note_code","reviewStatusText","correctedText","outcomeServiceMonitoringText","locationText","serviceText","needText","contactText","confidentialText","billedText","attachmentsText","showOverlapsText","noteTextText","dispalyServiceDateStart","dispalyServiceDateEnd","displayDateEnteredStart","dispalyDatesEnteredEnd","ShowHideFilter","noteTextValue","displayConsumerName","billerBtn","billerCloseBtn","consumerBtn","consumerCloseBtn","billingServiceCodeBtn","billingServiceCodeCloseBtn","reviewStatusBtn","reviewStatusCloseBtn","correctedBtn","correctedCloseBtn","outcomeServiceMonitoringBtn","outcomeServiceMonitoringCloseBtn","serviceDatesBtn","createdDatesBtn","needBtn","needCloseBtn","contactBtn","contactCloseBtn","confidentialBtn","confidentialCloseBtn","attachmentsBtn","attachmentsCloseBtn","billedBtn","billedCloseBtn","showOverlapsBtn","noteTextBtn","noteTextCloseBtn","overviewFilterValues","consumerPromise","billerPromise","race","caseLoadRestriction","groups","tableConsumers","caseloadOnly","datesEnteredStart","datesEnteredEnd","reviewConsumerId","selectedRosterId","isSSANote","noteIds","overLapIds","btnWrapFilter","getServiceDateDefaultValues","buildMutationObserver","resetFilterValues","showCNReportsPopup","detailBtn","passFilterValuesForDetailReport","checkIfCNReportIsReadyInterval","passFilterValuesForTimeEntryReport","checkCNReportExists","callCNReport","initFilterDisplay","biller","buildTopBtns","newNoteBtn","cnReportBtn","cnADVReportBtn","handleTableEvents","isssanote","getTableData","filteredData","fd","cnId","permissions_Table","groupCounts","hasOverlap","originalupdateTrim","originalupdate","servicedate","originalUpdate","lastupdatedby","thisendIcon","GKendIcon","ADVendIcon","isParentRow","testNoteId","thiscolumnheadings","GKcolumnheadings","ADVcolumnheadings","tableConsumerSearch","newTable","tDi","cIdx","mainEventListeners","disableMiniRosterBtn","promArray","caseloadRestrictionPromise","getBillersListPromise","dashHandeler","viewEnteredWidgetSetting","setInitFilterValues","onchange","reviewAttachments","cnAttachment","reviewAttachmentArray","allowedFileTypes","deleteExistingAttachment","remAttachment","addAttachmentsToCN","populateNewAttachments","removeAttachmentFromTempAttachmentArray","cnBatched","SSANote","cnInsertPhrases","phraseDropdown","allPhraseCheckbox","phraseNoteTextInput","insertPhraseBtn","fullPhraseDisplay","customPhrases","selectedPhraseId","currentNote","cursorSelection","cn_PhraseLS","createPopup","getPhrases","phrasesPopup","insertPhrase","phraseDone","allPhraseRadioDiv","initialCheckRadio","myPhraseRadio","allPhraseRadio","fullPhrase","trimedPhrase","insertPoint","noteStart","noteInsert","noteEnd","cnNoteField","cnPhrasesDone","moveConsumerToConsumerSection","enableCard","saveAndNew","saveAttachmentPromArray","groupSavePromises","cId","handleOverlapCheck","uniqueConsumers","warningText","saveSingle","saveResponseDoc","nodeValue","isGroup","handleGettingGroupNoteId","warningBtnFunction","checkMicError","NUSAI_popup","dashboardConsumer","noConsumerMessage","noteCard","buildCaseNoteCard","consumersList","buildConsumersList","disableCard","consumerNameArr","consumerFN","consumerLN","consumerobj","caseNoteCard","startTimeInput","endTimeInput","mileageInput","serviceLocationDropdown","myPhrasesBtn","deleteNoteBtn","cancelNoteBtn","timerStartBtn","timerStopBtn","saveAndNewNoteBtn","confidentialCheckbox","serviceMonitoringCheckbox","docTimeMinutesField","travelTimeMinutesField","groupNoteDisplay","dropdownDataKeys","pageLoaded","groupData","groupConsumers","billerDropdownData","gkLocationRequired","gkNeedRequired","gkContactRequired","gkServiceRequired","gkAllowGroupNotes","gkMileageRequired","serviceLocationId","tempAttachmentArray","attachmentCount","reviewData","reviewResults","reviewRejectReason","correctedCheckbox","isGroupNote","convertToGroupNote","viewOnly","advLocationRequired","advServiceRequired","advNeedRequired","advContactRequired","continueFunc","cancelFunc","hide_X","validateTimesWhenDateChange","isTimeValid","checkIfSameDates","dateEntered","setNoteValues","noteid","reviewresults","rejectionreason","lastupdate","originaluserid","batched","originalUserName","originaluserfullname","checkIfCredit","isCaseNoteReadOnly","showTimeWarningPopup","timeWarningPop","noteSaveUpdate","vendorInput","locationInput","serviceInput","needInput","contactInput","singleNoteToGroupNote","updateOverlapData","updateNote","checkServiceFunding","populateBillerDropdown","populateBillerRelatedDropdowns","checkGKRequiredFields","populateLocationDrodown","dropDownDisplay","populateServicesDrodown","populateContactsDrodown","populateNeedsDrodown","dropDown","populateServiceLocations","serviceLocData","newSelectedConsumers","sConsumer","checkConsumerForMileage","aConsumer","filteredConsumers","nsc","isTrue","buildDocTime","docTimeHeader","docTimeHeaderText","docTimeBody","docTime","minutesDisplay","docTimeMinVal","parseSessionTimes","isAMorPM","checkTimesAreWithinWorkHours","buildCardDetailsSection","saveBtnAction","preSave","listeningNodes","saveNoteBtn","hoursAreWithinWorkHours","cnPhrasesPopup","btnWrap2","grid_col_1","grid_col_2","lastUpdatedDisplay","lastUpdatedMessage","correctedCheckboxDiv","reviewText","reviewMessage","setupCardEvents","checkADVRequiredFields","cardDetails","docTimeRequiredPopup","docTimePopup","popupText","calledAction","serviceCodeDropdownOptions","docTimeDisplay","timerButtons","removeAllConsumersFromNote","tmpMileage","validObj","sameDate","tempServiceDate","mileageAllowed","cards","setGroupData","splitName","setInputstoReadOnly","checkConfidential","dashConsumer","advPromises","gkPromises","dropdownDataPromise","getConsumersThatCanHaveMileagePromise","getReviewRequiredForCaseManagerPromise","getAttachmentsPromise","pageToLoad","reviewNoteData","gd","consumerFromDash","selectedConsumerID","suppressDocTimePopup","serviceCodeName","servicename","mainbillingorservicecodename","ConsumerId","personApproved","defaultinlist","localservicePersonApproved","serviceCodeDDL","servicepersonapproved","person","filteredResult","arrItem","noteType","service_id","displayDocTimeSection","clearBillerRelatedDropdowns","alphabetizeDDL","controlWrap","chkboxWrap","btnAttachWrap","mileageInputField","emptydata","endtimeInput","updateGroup","cIdOfNote","updateSingle","overlapResults","batchedMessage","creditMessage","cnCredit","IsSSANote","absentWidgetDate","absentWidgetLocationId","absentWidgetLocationName","absentWidgetGroupId","absentWidgetGroupName","absentWidgetGroupCode","widgetBody","totalConsumers","applyFiltersBtn","widgetFilter","eventSetup","oldAbsentDate","oldGoupCode","absentDate","absentWidgetAjax","getLocationsForDashboardAbsent","populateAbsentWidgetLocations","getConsumerGroupsForDashboardAbsent","populateAbsentWidgetGroups","getAbsentWidgetFilterDataAjax","absentLocationId","absentGroupCode","custGroupId","populateAbsentWidgetResults","allFiterData","displayFilteredBy","absentObj","totalAbsentCount","totalAbsent","absentLocationsArray","getAbsentWidgetFilterDataResult","statuses","cachedResults","cachedResults_locations","selectedLocationDescription","entriesObj","consumerNames","populateConsumerDropdown","populateLocationsDropDown","locationNames","oldSelectedConsumerId","oldSelectedConsumerName","oldSelectedLocationId","oldSelectedLocationDescription","selectedLocationOption","groupCountInfo","populateCountInfo","pendingSection","approvalSection","rejectedSection","entryGroups","dateRanges","buildWidgetTabs","widgetTabs","tabOptions","Anywhere_Status","People_ID","adminSingleEntryWidgetAjax","getSingleEntryAdminLocations","getSingleEntryAdminApprovalNumbers","getSingleEntryAdminApprovalNumbersJSONResult","getSingleEntryAdminLocationsResult","cnProductivityChart","groupNotes","timeObj","daysBackWidgetSetting","getDates","addChartData","CN_ProductivityWidgetAjax","getCaseNoteProductivity","getDashboardCaseNoteProductivityResult","preBuildDataObj","originalEnteredDate","Original_Update","Case_Note_Group_ID","calculateDocTime","noteTime","diffMinutes","Travel_Time","Total_Doc_Time","noteID","initChart","caseNoteData","orgDate","calculateBackgroundColor","productivityPercentage","productivityThreshold","colors","reconfigureDataForChart","workHoursPerDay","minForProductivity","noteTimeDataset","travelTimeDataset","docTimeDataset","totalTime","colorArr","stepSixe","setDefaultIfConfigNull","setWidgetSettingConfig","rejectedNotes","strgroupids","objgroups","groupids","getRejectedData","CN_RejectedWidgetAjax","getCaseNotesRejected","Case_Note_ID","cnGroupId","first_Name","Service_Code","End_Time","lastUpdate","getRejectedcnGroups","getGroupsIds","getGroupCaseNotes","objgroupids","grpconsumer","grpconsumerObj","populateRejectedWidget","rejectedTable","tmpstartTime","frmtStartTime","tmpendTime","frmtEndTime","updateDate","cleanSettings","getDashboardCaseNotesRejectedResult","groupNoteIds","getDashboardGroupCaseNoteConsumerNamesResult","caseLoad","consumerCountlbl","currentRowConsumerId","viewNotesDaysBack","lastNoteEnteredDaysBack","viewEnteredByOtherUsers","lastNoteEnteredDaysBackDate","showSendReportPopup","emailData","cc","bcc","subject","sendReportPopup","emailTo","emailCC","emailBCC","showReportPopup","showReportDownloadPopup","createReportPopup","quickPrintPopup","createReportBtn","sendReportBtn","displayConsumerCount","populateCaseLoadWidget","caseLoadTable","caseLoadTableBody","resNumber","residentNumber","lastNoteDate","dateDisp","addressBlock","addressone","addresstwo","mailcity","mailstate","mailzipcode","contactInfoBlock","tempPrimaryPhone","primaryphone","tempSecondaryPhone","secondaryphone","pPhoneNumber","sPhoneNumber","pPhoneType","sPhoneType","pPhone","sPhone","reviewNotesBtn","getCaseLoadData","last_note_datetime","getDaysBackDate","CN_CaseLoadWidgetAjax","consumerProgresNoteslocationDropdown","progressNoteList","locationObject","locationLookupObject","tmpSelectedLocation","filteredLocation","filteredLocationExists","getNotesFiltered","getConsumersWithUnreadNotesByEmployeeAndLocationPermission","populateProgressNoteWidgetResult","progNote","noteTitle","populateLocationLookup","getlocations","getlocationsWithConsumersWithUnreadNotes","linksWidget","messagesWidget","messages","addMessagePopup","EmployeeListWrap","EmployeeNameList","selectMoreEmployeeBtn","expirationDate","expirationTime","messageInput","textMessage","timeOfExpiration","dateOfExpiration","selectedEmployee","consumerswithEmployeeIds","currentconsumersSelected","assignEmployeePopup","assignBtn","isMultiSelection","nameHeading","nameList","singleSelectedEmployee","loadCustomLinks","linksList","linkaddress","linkname","linktarget","linksAndMessagesWidgetAjax","loadCaraSolva","loadSystemMessages","messageList","separateLinksAndMessages","showAssignEmployeePopup","tomorrowDate","addSystemMessageAsync","addSystemMessageResult","NoteID","checkRequiredFieldsOfNewMessage","setBtnStatusOfNewMessage","getEmployeeListResult","toggleAssignButton","popupMessage","innerWrap","consumersContainer","cHeading","C_SEARCH_BTN","C_SEARCH_WRAP","C_SEARCH_INPUT","C_filterBtn","multiSelectBodyC","emp","C_btnWrap","consumerSearch","selected","cancelSelectBtn","getSystemMessagesAndCustomLinks","linkError","getSystemMessagesAndCustomLinksJSONResult","CaraSolvaURLResult","cfWidgetLocationId","cfWidgetLocationName","cfWidgetConsumerName","cfWidgetSortOrderId","cfWidgetSortOrderName","sortOrderDropdown","tempCFWidgetLocationName","tempCFWidgetConsumerName","tempCFWidgetSortOrderName","ConsumerFinancesWidgetAjax","getConsumerFinanceWidgetEntriesDataAjax","sortOrderName","populateConsumerFinanceResults","populateCFWidgetLocations","populateCFWidgetConsumers","populateCFWidgetDropdowns","sortData","cfTable","cfTableData","lastTransaction","getCFWidgetConsumers","getCFWidgetConsumersResult","getConsumerFinanceWidgetEntriesDataResult","clockedInStaff","asOfTime","populateLocations","populateCurrentClockInTime","populateConsumersNames","clockedinconsumername","consumersSorted","populateStaffNames","totalEmployees","staffclockedinname","employeeCount","clockedInWidgetAjax","getClockedInConsumerNamesDayServicesAjax","getClockedInStaffNamesDayServicesAjax","staffNames","getLocationsForDashboardDayServices","getDashboardDayServicesLocationsJSONResult","getClockedInConsumerNamesDayServicesJSONResult","getClockedInStaffNamesDayServicesJSONResult","hoursWorkedList","selectedWeekView","selectedWeekRange","selectedWeekRangeTxt","hoursList","weeksDropdown","populateWeeksDropdown","currStart","curr_start_date","currEnd","curr_end_date","prevStart","prev_start_date","prevEnd","prev_end_date","newCurrStart","newCurrEnd","newPrevStart","newPrevEnd","populateHoursWorkedList","workdate","check_hours","newHours","overlapDisclaimer","weekRange","dateText","isoWeek","oldSelectedWeekView","oldSelectedWeekRange","oldSelectedWeekRangeTxt","hoursWorkedWidgetAjax","getWorkWeeks","workWeeks","getHoursWorked","getWorkWeeksResult","getCompanyWorkWeekAndHoursResult","defaultShow","tempShow","incidentTrackingWidgetObj","showDropdown","populateIncidentTrackingWidget","showValue","showDropdownData","itTable","incidents","dupName","viewedBy","o1","o2","removeArray","viewedOn","orginUser","originallyEnteredBy","userHasViewed","showBold","incidentCategory","reviewIncident","incidentTrackingWidgetAjax","getITDashboardWidgetDataAjax","getITDashboardWidgetDataResult","tempID","jobs","timeData","timeDataLookup","currentJob","currentTimeRecord","infalPunchClockButton","infalTimeClockTable","jobSelectionSection","timeMessageSection","clockedInStatusMessage","setInfalId","idObj","App_Username","getJobs","returnJobs","populateJobDropDown","cacheTimeDataForLookup","getTimePunches","Job_Description_No","timeClockTable","clockedInRecord","record","OutTime","getCurrentRecord","Emp_Job_Description","InTime","Job_Description","selectedJob","selectedJobDescription","calcPosition","restOfStuff","inDate","startAMPM","empIdString","jobIdString","latInString","longInString","StartTime","StartAMPM","InfalClockInResult","updateTimeData","outDate","EndTime","EndTimeAMPM","recIdString","latOutString","longOutString","Memo","memoPopup","timeRecord","clearBtn","memoInput","Emp_Job_Id","buildComponents","infalTimeClockAjax","createJobButtonsHtml","infalClockInDataSetUp","EmpId","jobId","LatIn","LongIn","clockInData","checkClockInResult","infalClockOutDataSetUp","recId","LatOut","LongOut","memo","clockOutData","checkClockOutResult","checkAnticipo","locationNoteslocationDropdown","locationNoteList","locationNoteLocationObj","locationNoteLocationLookupObject","getLocationProgressNotesAndPermission","populateLocationProgressNoteWidgetResult","datecreated","Location","getLocationsWithUnreadNotesAndPermission","rosterWorkflows","planTasks","tasks","dueDateRange","dueDateFrom","dueDateTo","consumerMiddleName","workflowStepDescription","setFilterDueDates","dateRangeText","dueDates","populatePlanWorkflowWidget","buildHtmlFromData","showCustomDates","dueDateDropDownValue","fromDateInputValue","toDateInputValue","consumersDropDownValue","tasksDropDownValue","dueDateDropDown","consumersDropdown","tasksDropdown","dueDateRangeDropDownData","taskDropdownData","workflowStepDueDate","buildPlanWorkflowHTML","buildWorkflowStepHTML","workflowName","stepHTML","planTypeContainerHtml","planTypeHtml","dueDateLabelHtml","responsiblePartyId","workflowStepId","consumerPlanInfo","filterConsumerBy","getFilteredConsumer","getRosterToDoListWidgetDataResult","rosterToDoListWidgetAjax","getRosterToDoListWidgetData","planWorkflows","planEffectiveStart","planRevisionNumber","annualPlans","revisionPlans","getPlanWorkflowWidgetDataResult","getPlanWorkflowWidgetData","goalsWidgetDate","populateFilteredList","totalServices","serviceCount","populateOutcomeTypesFilter","dataArr","defaultOutcome","outcomesWidgetOutcomeTypeId","outcomesWidgetOutcomeTypeName","populateLocationsFilter","outcomeWidgetLocationId","outcomeWidgetLocationName","populateGroupsFilter","defaultGroup","outcomesWidgetGroupId","outcomesWidgetGroupName","oldFilter","oldOutcomesWidgetGoalsDate","oldOutcomesWidgetOutcomeTypeId","oldOutcomesWidgetOutcomeTypeName","oldOutcomeWidgetLocationId","oldOutcomeWidgetLocationName","oldOutcomesWidgetGroupId","oldOutcomesWidgetGroupName","goalsDate","oldGoalsDate","OutcomesWidgetOutcomeTypeId","OutcomesWidgetOutcomeTypeName","OutcomeWidgetLocationId","OutcomeWidgetLocationName","OutcomesWidgetGroupId","OutcomesWidgetGroupName","remainingDailyServicesWidgetAjax","outcomesWidgetgoalsDate","widgetBodyNav","makeAjaxCall","todaydate","outcomesWidgetLocationId","populateOutcomeTypesRemainingServicesWidgetFilterResult","populateLocationsRemainingServicesWidgetFilterResult","populateGroupsRemainingServicesWidgetFilterResult","remainingServicesWidgetFilterResult","weeks","scheduleObj","selectedWeek","selectedStart","selectedEnd","buildScheduleObj","service_date","difftime","timeSpan","initials","populateSchedule","filterBy","dataByDate","locationDates","locationDateEvents","timeKeys","scheduleList","divOne","divTwo","times","timeFrame","oldSelectedWeek","oldSelectedStart","oldSelectedEnd","oldMyscheduleWidgetLocationText","myscheduleWidgetLocationText","scheduleAjax","getSchedulingPeriodsDetailsAjax","currentWeek","getSchedulingPeriodsAjax","getSchedulingPeriodsResult","start_date","end_date","is_curr_date","getSchedulingPeriodsDetailsResult","missingSignatureData","signaturePlanStatus","signatureWidgetGroupId","signatureWidgetGroupName","signatureWidgetGroupCode","signatureWidgetLocationId","signatureWidgetLocationName","missingSignaturesList","planStatusDropdown","populatePlanStatusDropdown","locData","oldSignaturePlanStatus","oldSignatureWidgetGroupId","oldSignatureWidgetGroupName","oldSignatureWidgetGroupCode","oldSignatureWidgetLocationId","oldSignatureWidgetLocationName","filteredSignatures","populateMissingSignatures","statusName","aname","bname","newId","activeStatus","sigTable","missingSignatureAjax","getMissingPlanSignatures","getMissingPlanSignaturesResult","getGroupsDropdownData","widgetResults","clockInOutBtn","rowdataPopup","currentLocationId","currentStartTime","currentEndTime","giveInvalidTimeError","timeError","timeClockError","widgetError","punchClock","clockAction","timeClockAjax","clockInStaff","clockOutStaff","updateStaffTimeClock","updateKeys","newLocationData","newStartTimeData","newEndTimeData","newLocationId","newTime","updateStaffClockTime","getStaffActivity","processStaffActivity","populateLocationsDropdown","displayRowData","locationsDropdown","applyChanges","showTimeClockDeleteWarning","timeClockDeleteWarningPop","orgTime","isStartTime","checkedAgainstTime","lastClockOutTime","Staff_ID","location_code","resultsRow","jqXHR","timeClockDate","getStaffActivityJSONResult","getEntryInfo","populateSingleEntryCountInfo","groupSingleEntryCountInfo","singleEntryCountWidgetAjax","getSingleEntryCountInfo","getSingleEntryCountInfoJSONResult","incident","incidentTypeId","reportedDate","reportedTime","locationDetailId","prevention","contributingFactor","includeInCount","involvementId","consumerIncidentLocationIdString","consumerInvolvedIdString","employeeInvolvementIdString","othersInvolvedNameString","othersInvolvedCompanyString","othersInvolvedAddress1String","othersInvolvedAddress2String","othersInvolvedCityString","othersInvolvedStateString","othersInvolvedZipCodeString","othersInvolvedPhoneString","othersInvolvedInvolvementTypeIdString","othersInvolvedInvolvementDescriptionString","updateIncidentId","isNewIncident","consumersInvolvedIds","newConsumersInvolvedIds","clearUpdateData","datakeys","getIncidentId","setNewConsumerInvolvedIds","involvementIds","ids","involvedId","setUpdateIncidentId","getConsumersInvolvedUpdateData","consumerInvolvementIds","itConsumerSection","getConsumersInvolvedIds","consumerInvolvement","consumerIdKeys","consumerInvolvementId","getEmployeesInvolvedUpdateData","employeeRows","employeeIds","toNotify","employeeNameDropdown","involvementDropdown","notifyInput","employeeNameDropdownSelectedValue","employeeid","involvement","getPeopleInvolvedUpdateData","peopleRows","companies","addresses1","addresses2","cities","states","zips","phones","involevmentTypes","involevmentDescriptions","companyInput","company","getIncidentDetailsUpdateData","iDate","iTime","rTime","factors","updateIncidentSaveEditData","saveIncident","saveConsumerData","deleteConsumerData","deleteIncidentWarningPopup","cancelIncident","followUpData","consumerFollowUp","injuryData","consumerInjuries","interventionsData","consumerIntervention","consumerReview","consumerReporting","behaviorData","consumerBehavior","fupPromises","saveConsumerFollowUps","injPromises","saveConsumerInjuries","intPromises","saveConsumerInterventions","revPromises","saveConsumerReviews","repPromises","saveConsumerReports","behavPromises","saveConsumerBehaviors","consumerDataSavePromises","consumerInvolvedId","consumerFollowUpIdArray","followUpTypeIdArray","personResponsibleArray","dueDateArray","completedDateArray","notesArray","idKeys","idKey","fuData","updated","followUpTypeId","personResponsible","dateCompleted","savePromise","itConsumerInjuryIdArray","checkedByNurseArray","checkedDateArray","detailsArray","itInjuryLocationIdArray","itInjuryTypeIdArray","treatmentArray","causeOfInjuryIdArray","riskOfInjuryIdArray","iData","checkedByNurse","checkedDate","injuryDetails","injuryLocationId","injuryTypeId","injuryCauseId","injuryRiskId","injuryTreatment","itConsumerInterventionIdArray","aversiveArray","itConsumerInterventionTypeIdArray","startTimeArray","stopTimeArray","timeLengthArray","aversive","interventionType","interventionNotes","timeLength","itConsumerReviewIdArray","reviewedByArray","reviewedDateArray","noteArray","rData","reviewedBy","reviewedDate","consumerReportIdArray","reportDateArray","reportTimeArray","reportingCategoryIdArray","reportToArray","reportByArray","reportMethodArray","itConsumerReportId","dateReported","timeReported","reportingCategoryID","reportTo","reportBy","reportMethod","consumerBehaviorIdArray","behaviorTypeIdArray","endTimeArray","occurrencesArray","behaviorTypeId","occurrences","followUpDeletes","getDeleteData","injuryDeletes","interventionDeletes","reviewDeletes","reportDeletes","behaviorDeletes","fuKeys","fuKey","injKeys","injKey","intKeys","intKey","revKeys","revKey","repKeys","repKey","bhKeys","addConsumers","newIncidentCard","incidentCard","incidentPermissions","incidentDetails","nonEditableText","updatedText","popupElement","resetValue","permissions","originallyEnteredByUserId","incidentTrackingCard","itReviewData","consumersSection","detailsSection","employeeSection","peopleSection","nextBtn","prevBtn","cardActionBtns","itConsumerInvolved","itEmployeesInvolved","itOthersInvolved","currentSectionNumber","toggleSaveBtnStatus","disableBtn","toggleActionBtns","toggleNavBtns","showSection","currentlyVisibleSection","targetSectionSelector","nextSectionName","buildNav","buildActionBtns","buildSections","pageNumber","itDetailsSection","itEmployeeSection","itPeopleSection","cardNav","cardSections","consumerSectionHasError","checkforRequiredConsumer","selectedErroredConsumers","hasNoErrors","checkEntireIncidentCardforErrors","detailSectionHasErrors","peopleSectionHasErrors","consumerSectionHasErrors","toggleSave","incidentTrackingEmailData","alphaDropdown","betaDropdown","supervisorBtnWrap","fromDateBtnWrap","toDateBtnWrap","alphaName","beta","betaName","categoryName","changedSelectedAlphaBetas","alphaBetaData","selectedAlphaId","selectedBetaData","viewCaseLoad","emailString","selectedRelation","gkRelationships","relationshipDoneBtn","relationshipCancelBtn","populateSelectedFilterValues","selectedFilters","showBtnWrap","supervisorBtn","showCloseBtn","fromDateBtn","toDateBtn","populateOverviewTable","saveFilterData","alphaId","betaId","populateFilterDropdowns","populateCategoriesDropdown","populateUserAndEmployeeDropdowns","getFromDateValue","getToDateValue","filterDropdownEventSetup","setupFiltering","filterAndReportsBtnsWrap","ITLocation","ITConsumer","ITFromDate","ITToDate","tmpAlphaId","tmpAlphaName","tmpBetaId","tmpBetaName","tmpLocationId","tmpLocationName","tmpConsumerId","tmpConsumerName","tmpCategoryId","tmpCategoryName","tmpToDate","tmpFromDate","tmpShow","betas","populateBetas","toDateVal","populateAlphas","alphas","defaultOption","filteredBetas","allEmployees","getITReviewPageEmployeeListAndSubListResult","employeeobjectArray","employeeObject","alphaNode","betasNode","betaNode","alphaAndBeta","defaultAlpha","populateConsumersDropdown","showIncidentEmailPopup","incidentEmailPopup","importFromRelationshipsBtn","popFromRelationships","toAddress","inputField","ccAddress","bccAddress","checkIfITReportIsReadyInterval","getRelationshipDataResult","mainWrap","mainPopup","emailSendBtn","importPopup","relationshipSection","cleanName","cleanAddress","cityStateZip","cleanCityStateZip","relationshipDisp","checkITReportExists","callITReport","supervisorName","consumersInvolved","incidentEmailBtn","dateOne","dateTwo","newDateOne","newDateTwo","timeOne","timeTwo","updateNoteBtn","formReadOnly","currentEntryUserId","OODTransportationData","currentConsumer","currentRecordUserId","selectedServiceDate","clickSource","numberInVehicleInput","startLocationInput","endLocationInput","insertFormData","updateFormData","myconsumer","inputContainer0","updatecontainer","updatemessage","btnRow","numInVehicleInput","startLocInput","endLocInput","checkServiceDateInput","checkStartInputTime","checkEndInputTime","myservicedate","isDateBefore","currentserviceDate","checkTimeForAfterNow","isEndAfterStartTime","isEndTimeValid","isStartTimeValid","enteredTime","tempNow","nowHour","nowMinuet","saveType","deleteOODForm10TransportationEntryResult","interventionsInput","groupSizeInput","inputContainer1","inputContainer2","populateStaticDropDowns","populatePositionDropdown","populateIndicatorsDropdown","getOODPositionsResult","defaultGroupSize","getIndicatorsResult","indicators","indicator","yesNoDropdownData","numgroupSizeInput","interventionInpt","deleteOODFormEntryResult","monthYearDropdown","referenceNumberDropdown","nextScheduledReviewInput","selfAssessmentInput","providerAssessmentInput","reviewVTSDropdown","wasOfferedHoursNotWorkedDropdown","offeredHoursNotWorkedInput","emReviewDateDBValue","offeredHoursNotWorked","saveAndNewBtn","reviewStartDate","reviewEndDate","FORMNUMBER","OODMonthlySummariesTable","emReviewData","selectedServiceId","todaysdate","thisMonthFirstDay","getShortDate","nextScheduledReviewInputDIV","selfAssessmentLabel","providerAssessmentLabel","reviewVTSDropdownLabel","wasOfferedHoursNotWorkedDropdownLabel","LineBr2","LineBr3","thisDate","thisShortDate","setReviewStartandEndDates","dateparts","thisMonth","daysinMonth","thisYear","displaynoReferenceNumberPopup","noReferenceNumberPopup","mydate","arrayDates","firstDay","partialdate","fulldate","selfAssessmentInpt","providerAssessmentInpt","numofferedHoursNotWorkedInput","visibility","checknextScheduledReviewDateInput","thisNextReviewDate","updatedFullDate","buildOODMonthlySummariesTable","getReviewDate","DBValue","deleteFormMonthlySummaryResult","SAMLevelDropdown","contactMethodDropdown","jobSeekerPresentDropdown","TSCNotifiedDropdown","applicationSubmittedDropdown","interviewDropdown","bilingualSupplementDropdown","narrativeOutcomeInput","addEmployersBtn","popupSaveBtn","popupCancelBtn","populateConsumerEmployersDropdown","populateContactTypeDropdown","currentConsumerId","employers","employr","filtereddata","getContactTypesResult","contactTypes","contactCaption","getOutcomesResult","outcomeCode","outcomeCaption","SAMLevelDropdownData","checkPopupRequiredFields","referralQuestionsInput","individualsInputInput","issuesConcernswithProgressInput","planGoalsNextMonthInput","numberConsumerContactsInput","numberEmployerContactsbyConsumerInput","numberEmployerContactsbyStaffInput","numberMonthsinJobDevelopmentInput","employmentGoalInpt","referralQuestionsInpt","individualsInputInpt","issuesConcernswithProgressInpt","planGoalsNextMonthInpt","numberConsumerContactsInpt","numberEmployerContactsbyConsumerInpt","numberEmployerContactsbyStaffInpt","numberMonthsinJobDevelopmentInpt","narrativeInput","populateContactMethodDropdown","getContactMethodsResult","contactMethods","otherEmployerDropdown","behavioralIndicatorsDropdown","jobTaskQualityIndicatorsDropdown","jobTaskQuantityIndicatorsDropdown","positionDropDownData","wrapHeading","inputContainer3","populateOtherEmployerDropdown","filteredemployers","otherItem","positiondropdown","employerWrap","otheremployerdropdown","otherEmployerdropdown","employerAssessmentInput","supportAndTransitionInput","employerAssessmentLabel","supportAndTransitionLabel","employerAssessmentInpt","supportAndTransitionInpt","validationCheck","planRestrictiveMeasures","planConsentAndSign","getSectionMarkup","planIntroduction","servicesSupportsAjax","getServicesAndSupports","anywAssessmentId","ISPValidation","showDeleteWarning","deleteWarning","closeWarningBtn","summaryAlertDiv","returnSummaryRisksValidation","outcomesAlertDiv","missingExperiences","missingReviews","contactsAlertDiv","contactValidationCheck","getContactValidation","importantPeople","importantPlaces","bestWayToConnect","isPlanComplete","isPlanActive","hasUpdatePermission","sectionData","subsectionData","questionSetData","questionData","conditionalQuestionData","applicableSections","getApplicableSections","showApplicableWarningMessage","toggleIsSectionApplicable","isApplicable","applicable","toggleApplicability","getConditionalQuestions","conditionalQuestionId","getQuestionDataById","sortAssessmentDetails","answerData","subsectionId","questionSetId","sectionOrder","isAssessment","subsectionOrder","subsectionName","questionSetOrder","setType","questionSetType","allowRowInsert","questionSetAllowMultirowInserts","defaultAnswer","questionDefaultAnswer","answerRow","questionOrder","answerId","answerText","answerStyle","questionAnswerStyle","answerOptions","questionAnswerOptions","questionPrompt","requiredAnswer","questionRequiresAnswer","questionTag","skipped","conditionalAnswerText","questionConditionalAnswerText","questionConditionalQuestionId","getConsumerAssessment","getConsumerAssessmentResult","getConsumerRelationshipsData","getConsumerRelationshipsResult","getConsumerNameInfoData","getConsumerNameInfo","getConsumerNameInfoResult","getServiceAndSupportsData","getPlanAssessmentReport","getPlanAssessmentReportResult","DODDFlag","toDODD","getPlanAssessmentReportWithAttachments","successMessage","insertPlanReportToBeTranferredToONET","insertPlanReportToBeTranferredToONETResult","insertAssessmentGridRowAnswers","assessmentQuestionSetId","newRowData","insertAssessmentGridRowAnswersResult","deleteGridRows","rowsToDelete","deleteAssessmentGridRowAnswers","deleteAssessmentGridRowAnswersResult","getSentToONETDate","getSentToONETDateResult","transeferPlanReportToONETResult","sendSelectedAttachmentsToDODDResult","getDefaultEmailsForFinalizationResult","finalizationActionsResult","assessmentIDInput","versionIDInput","extraSpaceInput","toONETInput","ispInput","oneSpanInput","signatureOnlyInput","includeInput","planAttachmentIdsInput","wfAttachmentIdsInput","sigAttachmentIdsInput","updateConsumerAssessmentAnswers","updateConsumerAssessmentAnswer","answerObject","answers","updateAssessmentAnswersResult","transferPlanReportToONET","updateAssessmentAnswerRowOrder","selectedWorkflowForms","workflowListData","formListData","workflowFormList","formHeader","wfName","formItem","WFTemplateId","workflowID","WFTemplateID","workflowDiv","workingSectionCase","sectionsApplicable","servicesAndSupports","servicesAndSupportsChecked","noSupport","naturalSupport","technology","communitResource","professionalReferral","potentialOutcome","hasASectionApplicable","servicesAndSupportsError","IspValidationCheck","planProgressSummary","selectedProviders","paidSupportsProviders","invalidProviders","contactsValidation","servicesAndSupportsQuestionIds","noSupportQuestionIds","paidSupportQuestionIds","professionalReferralQuestionIds","potentialOutcomeQuestionIds","additionalSupportQuestionIds","naturalSupportQuestionIds","technologyQuestionIds","communityQuestionIds","attachedDiv","tooltipText","getAssessmentValidation","servicesAndSupportsData","planValidationAjax","getAssessmentValidationData","additionalSupportCounts","countOccurrences","additionalSupport","paidSupportCounts","professionalReferralCounts","potentialOutcomeCounts","assessmentOutcomes","allAssessmentAreasComplete","updatedAssessmenteValidation","tocAlertDiv","tocMobileAlertDiv","tocAssessmentCheck","servicesAndSupportsAllVisibleSectionsCheck","updateTocSectionHeaders","returnWorkingSectionCaseValue","updateAnswerWorkingSection","check","tocSectionHeader","paidSupportCount","additionalSupportCount","potentialOutcomeCount","communityResource","servicesAndSupportsBtnCheck","idsToCheck","paidSupportBtn","additionalSupportBtn","profRefBtn","outcomesBtn","paidSupportChecked","additionalSupportChecked","professionalReferralChecked","potentialOutcomeChecked","checkboxChecked","errorText","allSections","findQuestionIdCategory","counts","updateSectionApplicability","applied","matchingIndex","updateAssessmentValidationSection","updateAssessmentValidationProperty","questionIdCategory","getPlanSpecificOutcomes","planOutcomeExperiences","responsibility","planExperienceResponsibilities","responsibleProvider","paidSupportsIds","isSalesforceLocation","uniqueOutcomeIds","planOutcome","planReviews","outcomeExperienceOutcomeIds","outcomeReviewOutcomeIds","missingOutcomeExperiences","missingOutcomeReviews","progressSummary","checkAllOutcomesComplete","ispValidationContactCheck","summaryRisksValidationCheck","updatedIspOutcomesSetAlerts","ISPAlertDiv","outcomesNav","updateOutcomeDetails","emptyString","updateOutcome","reviewsValidationCheck","alertDiv","experiencesValidationCheck","checkResponsibleProvider","outcomeID","presetArray","planOutcomeExperience","experienceResponsibility","invalidProvidersCheck","contactsValidationCheck","_contactData$","contactData","getContactValidationData","importantPeopleData","importantPeopleType","typeOther","importantPeopleTypeOther","importantPlacesData","importantPlacesType","importantPlacesTypeOther","checkImportantPeople","checkImportantPlaces","checkBestWayToConnect","checkContactsValidation","place","bestWayToConnectAlertDiv","checkExperienceProviders","secondValues","checkExperiencesAfterAddingNewPaidSupport","divs","matches","summaryValidationData","getSummaryRiskValidationData","groupedByQuestionSetId","QuestionSetId","hasNullOrEmptyAnswer","Answer","hasNonEmptyAnswer","QuestionText","hasNullOrEmpty","setSummaryRiskValidation","alertCheckSummaryRisksValidation","isEverythingComplete","getAssessmentValidationDataResult","getContactValidationDataResult","getSummaryRiskValidationDataResult","absentReasons","notificationTypes","MASS_ABSENT_POPUP","CONSUMERS_SELECTED_INPUT","DATE_OF_ABSENSE_INPUT","DATE_REPORTED_INPUT","LOCATION_INPUT","NOTIFICATION_DROPDOWN","REPORTED_BY_INPUT","REASON_DROPDOWN","TIME_REPORTED_INPUT","SAVE_ABSENT_BTN","DELETE_ABSENT_BTN","CANCEL_ABSENT_BTN","absentLocation","notificationId","reportedBy","resonId","absentRecordId","doPreSaveCheck","showPreSaveWarningPopup","preSaveWarningPopup","saveSingleAbsent","singleSaveData","absentReasonId","absentNotificationId","preSaveData","updateAbsents","checkAbsentPreSave","absentAjax","oneLocationAbsentSave","absentPreSaveCheck","saveMassAbsent","getConsumersByLocationAbsentResults","getConsumersByLocationAbsent","getConsumersByLocationAbsentResult","absentConsumerIds","createAbsentConsumersObj","getAbsentFormDropdownData","selectAbsentNotificationTypes","selectAbsentReasons","setSaveData","absentData","tempLocation","tempLocationName","tempLocationId","tempDateOfAbsense","dateOfAbsence","tempReportedBy","reportedby","tempDatereported","tempTimereported","timereported","tempReasonId","reasonId","tempNotifiId","recordid","populateAbsentFormDropdowns","defaultValues","notifValue","notif","reasonValue","notificationTypeData","notifid","notifdesc","reasonsData","reasonid","reasondesc","setupFormEvents","selectedOpt","deleteAbsent","buildAbsentForm","dateOfAbsent","absentForm","ABSENT_BTN_WRAP","showAbsentPopup","setConsumerIdString","toggleActionNavBtns","buildAbsentActionNav","selectData","absentPreSaveResult","allLocationSaveAbsent","allLocationSaveAbsentResult","absentId","oneLocationAbsentTableSaveResult","selectAbsentNotificationTypesResult","selectAbsentReasonsResult","selectAbsent","selectAbsentResult","selectedConsumerIDs","addConsumerToCustomGroup","newGroupID","GROUP_ADMIN_POPUP","GROUP_LIST","customGroupData","newGroupName","updateCustomGroupData","showGroupDeleteWarningPopup","groupDeleteWarningPop","removeCustomGroup","populateGroupList","groupCheckboxEvent","inputEl","checkboxEl","addConsumerToGroup","removeConsumerFromGroup","groupDeleteEvent","addToGroupEvent","cg","groupMembers","isConsumerGroupMember","gm","itemAction","manageConsumerAction","buildGroupList","showAddNewGroupPopup","newGroupPop","addNewGroupInput","addNewGroupBtn","addCustomGroup","CustomGroupID","manageGroupPopup","buildManageGroupsPage","groupsPage","topSection","backToRoster","locationLabel","groupsList","manageGroupsPage","addCustomGroupJSONResult","consumerIDs","menuNewList","currentScreen","previousScreen","nextScreen","backwordBtn","forwardBtn","rosterList","editRelationshipPopup","hasADropdownN","startDateInputN","whoIsDropdownN","endDateInputN","deleteBtnN","showInactive","tempConsumer","relationshipPopupBtnWrap","dataName","isValueChanged","deletedIds","archiveConsumerRelationships","getImageOrientation","reader","FileReader","view","DataView","getUint16","getUint32","little","tags","readAsArrayBuffer","formatPortraitPath","splitPath","newPath","sp","updatePhotoToDefault","targetConsumerId","consumerCardFromRosterList","rosterPic","infoCardPic","updateConsumerPhoto","pic2","pic1","imageObj","Image","srcData","orientation","imageObjSrcVal","orderScheduleData","Sun","Mon","Tues","Wed","Thur","Fri","Sat","menulist","absentMenuItem","downloadAttachment","attachmentid","menuItem","locationObj","setConsumerToCard","closeCard","visibleSection","visibleSubSection","menuList","showCardSection","showCardSubSection","targetSubSection","currentlyVisibleSubSection","handleBackButtonClick","isMenuListHidden","sectionBackBtn","clearAllGlobalVariablesOnBack","isSubSection0Visible","subSec0","cardClone","populateAbsentSection","sectionInner","populatePhotoSection","removePhotoBtn","photoInput","populateGroupSection","groupList","populateNotesSection","noteDate","populateProgressNotesSection","viewAllNotesSection","buildViewAllNotesSection","addNoteSection","buildAddNoteSection","viewSingleNoteSection","buildViewSingleNoteSection","addMessageSection","buildAddMessageSection","populateAttachmentsSection","attachmentsList","showRelationshipDetails","companyName","detailWrap","donebtn","populateRelationshipsSection","relationshipTable","relationshipHeader","relationshipEditPopup","subDataRowPrimaryPhone","subDataRowSecondaryPhone","cellularPhone","subDataRowCellularPhone","subDataRowEmail","getEditConsumerRelationshipsJSONResult","popupHeader","headerWrap","createPopupElements","saveRelationshipBtn","editRelationshipSaveData","setupCard","AddRelationshipBtn","checkRequiredFieldsEditConsumerRelationships","cancelRelationshipBtn","resetPopupValues","populateEditRelationshipDropdown","deleteToId","selectedDropdownId","rePopulateEditRelationshipDropdown","hasA","whoIs","setBtnStatusEditConsumerRelationships","getRelationshipsNameJSONResult","RelationshipsName","relationshipsName","personID","getRelationshipsTypeJSONResult","RelationshipsType","relationshipsType","typeID","getRelationshipsNameByIDJSONResult","populateWorkflowSection","populateScheduleTable","showWeekOne","isWeekOneEmpty","showWeekTwo","isWeekTwoEmpty","tableWrap","scheduleTable1","scheduleTable2","table1Data","weekOne","table2Data","weekTwo","scheduleResults","scheduleResultsObj","scheduleResultsObjKeys","newkey","populateScheduleSection","al","populateIntellivueSection","applicationList","lineBR","appId","intellivue","getViewURL","cardInner","buildMenu","cardMenuList","menuItems","itemTitle","cardMenu","infoTask","arraynumber","statusDate","getConsumerNotes","locationResults","demographics","getApplicationListHostedWithUser","navBtnWrap","cardHeading","demoData","unEditabled","gkOnly","sectionLoad","dataLoad","consumerIDLoad","clearCurrentEdit","currentEdit","saveIcons","formatName","middle","formatMaritalStatus","formatDOB","formatSSN","SSN","formatOrganizationAddress","add1","add2","setInputType","pattern","getAgeFromDOB","birthDate","age","formatLabelText","splitText","formatViewInnerHTML","checkAlphabets","char","formatDataForDisplay","formattedPrimaryPhone","formattedSecondaryPhone","cellPhone","cellphone","DOB","socialSecurityNumber","medicaidNumber","MedicaidNumber","medicareNumber","MedicareNumber","ResidentNumber","consumerNumber","localID","county","County","organization","orgName","organizationAddress","orgAdd1","orgAdd2","orgCity","orgState","orgZipCode","formattedOrganizationPhone","orgPrimaryPhone","organizationPhone","middlename","generation","maritalStatus","gender","primaryLanguage","language","educationLevel","additional","demographic","buildInputGroupWrap","buildInputGroup","viewElement","editElement","phoneNumberEndIndex","phoneNumberStartIndex","saveIcon","validateEmail","validSocial","social","populateDemographicsSection","viewEle","buildPathToEmployment","groupWrap","buildAddressInfo","propValue","buildContactInfo","buildAdditionalInfo","viewElements","showDetailsoBtn","buildOrganizationInfo","buildDemographicInfo","isGK","addressInfo","additionalInfo","organizationInfo","redirectPopup","getLoginCredentials","getIntellivueAppIdResult","getApplicationListHostedWithUserResult","applicationobjectArray","Applications","refId","getIntellivueViewURLResult","showIntellivueRedirectWarning","allNotesPage","allNotesList","singleNotePage","singleNotesList","allNotesData","singleNoteData","formatTime","datecreatedArray","sortDataByDate","dateArrayA","dateArrayB","Date_Entered","buildNoteImage","buildNoteAuthorName","buildNoteDateTime","buildNoteTitle","buildNoteText","buildNoteDetails","dateTime","buildNoteMessageg","notePreview","buildNote","buildTitleInput","buildTextInput","buildSendBtn","getSingleNoteData","selectLocationNote","handleReplyToNoteBtnClick","notePopup","sendNoteBtn","updateLocationNote","loadSingleNotePage","populateSingleNotePage","noteAuthor","notetitle","emp_id","backToNotesMain","buildSingleNotePage","getLocationNotesData","getLocationProgressNotes","handleNewNoteBtnClick","noteTitleInput","insertLocationNote","populateAllNotesPage","noteRead","is_read","MainAuthor","updateLocationNoteDateRead","buildAllNotesPage","deleteLocationNote","doesLocationHaveUnreadNotes","datum","checkIfLocationHasUnreadNotesResult","getLocationsWithUnreadNotesAndPermissionResult","selectNotesByLocationResult","selectNotesByLocationAndPermissionResult","selectLocationNoteResult","VIEW_ALL_NOTES_SECTION","VIEW_SINGLE_NOTE_SECTION","ADD_NOTE_SECTION","ADD_MESSAGE_SECTION","ADD_NOTE_BTN","ADD_MESSAGE_BTN","selectedNoteId","newNoteTitle","newNoteText","newMessageText","consumerNotes","addNewNote","hideNote","insertConsumerNote","populateViewNotesSection","addNewMessage","updateConsumerNote","populateViewSingleNoteSection","cacheNotes","selectNotesByConsumerAndLocation","cacheSingleNoteData","selectConsumerNote","markNoteAsRead","noteElement","updateConsumerNoteDateRead","noteMenuItem","shortenNotePreview","noteString","shortenedNote","c_id","titleInput","singleNoteList","dateTimeArray","timeArray","hidenote","hasBeenRead","hideNoteCheckbox","hidenotedetail","clickableNoteAreas","tmpHideNote","updateHideNote","sendButton","addNoteBtn","notesList","deleteConsumerNote","getConsumersWithUnreadNotesByEmployeeAndLocationPermissionResult","selectNotesByConsumerAndLocationResult","selectConsumerNoteResult","getlocationsWithConsumersWithUnreadNotesResult","daysOffTable","callOffTable","openShiftTable","overlapWrap","overlapsExist","overlapApprovalData","overlapIds","daysOffOverlapConfirmed","areConsecutiveDates","date1","date2","buildApproveRequestPage","populateApprovalPage","selectedShiftCounter","requestData","daysOff","callOff","openShift","requestType","daysOffTableOpts","cycleApprovalStatus","openShiftTableOpts","callOffTableOpts","renderDaysOffSectionBody","dataForCallOffandOpenShifts","noRequestsMessage","approvalStatus","shifts","idA","idB","groupedShifts","lastSubArray","areDatesConsecutive","consecutiveReason","fromTime","toTime","shiftIds","dayOffId","reasonName","messageElement","submitApproveDenyRequest","displayApprovedOverlapPopup","overlapAlert","displayOverlapPopup","overlapApprovedShifts","openShiftRequests","openShiftRequestList","decision","selectedShifts","approvedShift","openShiftRequest","selectedStartTime","selectedEndTime","existingStartTime","existingEndTime","overlapIntro","overlapOKBtn","openShiftTableBody","callOffTableBody","callOffRequests","daysOffTableBody","daysOffRequests","getOverlapDataforSelectedShiftResult","overlapWithExistingShiftData","requestedShiftId","overlapShiftData","callOffShiftId","toLocaleDateString","toLocaleTimeString","approveDenyResponse","daysOffIdString","requestDataText","parentDiv","nestedDivs","nestedDivsObject","nestedDiv1","nestedDiv2","nestedDiv3","paragraphs","_scheduleArray","_schedules","_appointments","_locationsArr","_reasonsArr","_startDay","_currentWeekHours","_scheduleView","_currentView","detailsLocationId","shiftDateForCall","appendModuleContainer","moduleName","actionCenter","moduleContainer","removeInnerHtml","elementId","addMilliseconds","timestamp","addMinutes","MILLISECONDS_IN_MINUTE","getServiceDate","dateScheduled","serviceDateObj","serviceYear","serviceMonth","serviceMonthName","serviceDay","setStartDay","dayObj","weekDays","Day_of_Week","eachDateOfInterval","dirtyInterval","isWithinInterval","getTotalHours","startTimeDate","endTimeDate","startTimeMilliseconds","endTimeMilliseconds","milliseconds","midnightNextDay","timeArr","dirtyHours","dirtyMinutes","renderLocationDropdown","calContainer","scheduleViewWrap","populateSchedules","renderDetailsPopup","shiftDetails","openShiftDetails","pendingOpenShiftDetails","pendingCallOffDetails","appointmentDetails","appointmentId","medTrackingId","renderShiftDetails","renderOpenShiftDetails","renderPendingOpenShiftDetails","renderPendingCallOffDetails","renderAppointmentDetails","timeScheduled","shiftNotes","shiftType","workCode","workCodeDescription","callOffBtn","renderRequestOffPopup","requestShiftBtn","notifiedEmployeeId","getOverlapStatusforSelectedShiftResult","overlapWithExistingShift","renderSendShiftRequestPopup","existingShiftLocationName","overlapCancelBtn","sendRequestBtn","populateEmployeesDropdown","cancelRequestBtn","requestedById","populateReasonsDropdown","employeeName","employeeData","eventId","reasonDropdown","toggleView","scheduleView","renderScheduleViewBtn","scheduleViewBtn","populateShiftTotalHours","getDateRangeFromCalTitle","calTitle","dateString1","dateString2","calcWeekTotalHours","dateRangeObj","myShifts","withinInterval","doesIdMatch","hoursScheduled","wrapMarkup","populateAppointments","allDay","takenToApptBy","timeRegEx","groupPos","callOffStatus","requestShiftStatus","drawCalendar","ical","Web2Cal","loadEvents","onNewEvent","removeStuffWeDontWant","renderCalFooter","setupCalendarEvents","allday","defaultPlugins","rzCloseAddEvent","closeAddEvent","setupDateHeadingEvent","dateHeadings","monthBtn","weekBtn","dayBtn","eventDetails","appointmenttDetails","appointment","navWrap","leftNav","inliner1","inliner2","calNav","agendaBtn","workshiftBtn","resourceBtn","groupsBtn","calicon","collapseWrap","submitRequest","dateInterval","areDatesValid","fromTimeVal","toTimeVal","areTimesValid","employeeNotifiedId","requestResult","requestDaysOffSchedulingResult","buildRequestTimeOff","fromTimeInput","toTimeInput","submitRequestBtn","fromDateField","toDateField","reasonDropdownField","employeeDropdownField","widgetSettingsPage","sectionreorder","updatedListOrder","widgetsContainer","saveID","group1","group2","percentSymb","productivityThresholdPercentage","newDaysBack","newProductivity","newWorkHours","configString","viewNotesByOtherUsersCheckBox","lastNoteDaysBackInput","reviewNotesDaysBackInput","newViewNotesDaysBack","newLastNoteEnteredDaysBack","newViewEnteredByOthers","dueDateDropdown","setWidgetSettings","buildWidgetBodyInnerHTML","settingHTML","buildTeamMemberTable","sectionBody","teamMemberTable","allElmnts","setWidgetSettingOrder","sortedProducts","IsBuild","tableOBJ","control","emptySignatureDataURL","clearSavedSignaturesAndNotes","removeConsumerFromEVVCache","savedSignaturesAndNotes","currerntConsumer","_consumerID","_signatureDataUrl","_noteDataString","signatureImage","evvEntry","singleEntrySaveSignatureAndNote","validateEVV","signRequired","consumersArray","isValidEVV","hasSignature","hasNote","consumerEVV","EVV","_actionBtn","_evvContainer","_fromSave","fromSave","_signaturePad","signatureDataUrl","noteDataString","_consumerSECard","_consumerCard","_signatureImageMarkup","_signatureMarkup","_noteMarkup","_evvActionMarkup","_tempSigData","_renderEVVMarkup","_renderEVVActionMarkup","_initSignaturePad","_popupEvents","_signatureEvents","SignaturePad","_dataURLToBlob","dataURL","rawLength","uInt8Array","_saveSignatureData","isEmpty","dataUrl","_saveNoteData","_saveEVVInstance","_renderSignatureMarkup","_renderSignatureImageMarkup","_renderNoteMarkup","evvDiv","_evvSave","_saveSignature","_saveNote","_evvCancel","fromData","saveButton","_undoSignature","toData","_clearSignature","clearButton","undoButton","editInit","populatePopup","showSignature","showNote","getConsumersSignaturesAndNotesResult","evvOptions","evv","getSpecificConsumerSignatureAndNote","signOrNote","signatureAndNoteData","payPeriodData","workCodeData","crossMidnightTimeData","saveUserId","rejectedTime","payPeriodDropdown","workCodeDropdown","locationTypeDropdown","totalHoursInput","rejectionReasonInput","transportationBtn","transportationPopup","licenseplateInput","odometerStartInput","odometerEndInput","odometerTotalInput","destinationInput","reasonInput","saveTransBtn","deleteTransBtn","cancelTransBtn","transportationStartTimeInput","transportationEndTimeInput","saveOrUpdate","nowMinutes","rejectionReason","evvReasonCodeObj","evvReasonCode","locationTypeCode","wcServiceType","reasonRequired","eligibleConsumersObj","endTimeClicks","evvAttest","evvCommunity","defaultTimesChanged","timeOverlap","isBillable","startLatitude","startLongitude","endLatitude","endLongitude","transportationSaved","isTransportationValid","transportationEndTime","transportationStartTime","transportationType","tmpTransportationType","tmpTransportationReimbursable","tmpOdometerStart","tmpTransportationStartTime","tmpTransportationEndTime","tmpOdometerEnd","tmpTransportationUnits","tmpDestination","tmpReason","tmpLicenseplate","isEVVSingleEntry","reasonCodeValue","eVVChangeDate","isEndTimeChangePermission","moveConsumersToTimeCard","disableInput","enableInput","saveorupdate","consumer_Ids","deviceOS","updaterId","inComments","workCodeID","attest","attestCheckbox","community","communityCheckbox","evvLocationType","updateEVVReason","setStartTimeLocation","setEndTimeLocation","setTotalHours","hoursInput","totalHours1","totalHours2","day1StartTime","day1EndTime","day2StartTime","day2EndTime","updateDateValMinMax","resetDate","setEditDataValues","Single_Entry_ID","Date_of_Service","Work_Code_ID","Check_Hours","Comments","Number_Consumers_Present","billable","keytimes","rejected_time","transportationendtime","transportationstarttime","clearCard","reasonCodeDropdown","checkPermissions","clearConsumerSection","getAllowedConsumersBasedOffResidence","residence","getAllowedConsumersBasedOffServiceLocations","getSingleEntryUsersByLocationJSONResult","showConsumerExtras","consumercard","extras","extrasBtn","removeConsumerFromTimeCard","evvCheckConsumerEligibility","consumerWarningPopup","consumerWrap","evvCheckRemainingConsumers","saveTransportation","deleteTransportation","clearTransportationValues","calculateMileage","startVal","endVal","checkTransportationRequiredFields","checkOdometer","odoTotal","odoStartVal","odoEndVal","odoTotalVal","isStartValid","isEndValid","checkStartVal","checkEndVal","setToalMiles","totalMiles","startValue","endValue","totalValue","checkTotalMiles","totalMilesVal","checkReason","reasonVal","checkDestination","destinationVal","checkLicensePlate","licenseplateVal","checkTransportationStartEndTimes","transportationEndTimeVal","transportationStartTimeVal","setupTransportationEvents","oldTransportationType","oldlicenseplate","oldTransportationReimbursable","oldOdometerStart","oldOdometerEnd","oldTransportationEndTime","oldTransportationStartTime","oldTransportationUnits","oldDestination","oldReason","populateTransportationDropdown","buildTransportationPopup","buildTransportationBtn","checkDates","payPeriodStart","payPeriodEnd","newEntryDate","isDateAfter","isDateAfterToday","checkWorkcodes","workCodeSelect","currentValue","checkLocation","locationSelect","checkTimeAndHours","checkStartTimeInputsForAfterNow","convertedToday","splitServiceDate","entryDateObj","checkConsumers","consumerError","checkNote","checkEvv","reasonSelect","saveAndSumbitBtn","editSingleEntryCardStatus","sendevv","showDeleteEntryWarningPopup","checkAttestStatus","workCodeDropdownEvent","evvCheckConsumerEligibilityExistingConsumers","origStartTime","evvCheck","setEndTimeOnClick","origEndTime","systemDefaultForCheckEnd","insertType","saveAndUpdate","servicetype","tempEndTime","endTimeHour","endTimeMinute","populatePayPeriodDropdown","pp","startDateAbbr","endDateAbbr","populateWorkCodeDropdown","wcData","wc","workcodeid","workcodename","keyTimes","populateReasonCodeDropdown","reasonCode","reasonDescription","populateLocationTypeDropdown","locationTypeDropdownData","populateCard","showEvv","wcObj","ppObj","disableCardFields","buildPayPeriodDropdown","buildWorkCodeDropdown","buildEVVReasonDropdown","buildLocationTypeDropdown","buildEVVReasontext","buildStartTimeInput","buildEndTimeInput","buildTotalHoursInput","buildRejectionReasonInput","buildAttestCheckbox","buildCommunityCheckbox","buildTimeEntrySection","wrap4","wrap5","wrap6","wrap7","consumerSectionError","cp","buildSaveDeleteCancelButtons","payperiod","isOnlyEndTimeChangePermission","timeEntrySection","saveDeleteCancel","editTimeEntry","timeCard","seActivityElement","timeEntryData","isOrginUser","tx","recordActivityElement","Anywhere_Closed","dateofService","borderBottom","Work_Code_Name","reportCurrentlyProcessing","isTimeApproval","reportPopup","showTimeEntryReport","reportsAjax","getEmpSingleEntryDetailReportAjax","getEmpSingleEntrySupervisorDetailReportAjax","showOverlapReport","getOverlapSingleEntryDetailReportAjax","overlapBtn","BasicSingleEntryReportResult","workCodeId","BasicSingleEntrySupervisorReportResult","SingleEntryOverLapReportResult","payPeriodsDropdown","selectAllBtn","workCodeName","splitStartDate","splitEndDate","tmpWorkCodeId","tmpWorkCodeName","wcAbbreviation","statusLookup","enableSelectAll","entriesByDate","payPeriodBtnWrap","locationNameBtnWrap","workCodeNameBtnWrap","showSubmitError","submitEntries","statusDataObj","deleteEntries","deletePromises","submitEntry","payPeriodBtn","locationNameBtn","locationNameCloseBtn","workCodeNameBtn","workCodeNameCloseBtn","SE_Trans_Reimbursable","setupFilterEventListeners","WCCode","dropdownID","getDataForTimeEntryEdit","showRowDetails","entryStatus","editBtn","consumerDisplay","loadingDisplay","transportationDisplay","enableSelectAllRows","handleReviewTableEvents","sr","Location_Name","wcCode","abbStatus","comments","iconsBox","commentsBox","buildSERecordActivity","seData","seID","rejected","dateVal","timeVal","submittedUser","submit_date","approved_time","approvedUser","rejectedUser","buildTopNav","buildReportButton","buildReviewPage","fitleredBy","fromEdit","startPeriod","endPeriod","rejectionReasonText","supervisors","payPeriodText","statusBtnWrap","workCodeBtnWrap","tmpSupervisorId","tmpSupervisorName","tmpEmployeeId","tmpEmployeeName","tmpStatus","tmpStatusText","mapBtn","approveNavBtn","rejectNavBtn","submitNavBtn","workCodeLookup","sortedSelectedRows","rejectOrApprove","showMap","IsFilterDisable","sortSelectedRowsForUpdate","updateSelectAllStatus","updatePromiseArray","selectedRowKeys","statusUpdateData","updatePromise","updateEntryStatus","setApproveOrReject","approveOrReject","buildStatusChangePopupMessage","pCount","aCount","messageBody","pMessageContainer","pMessageWrap","pMessage","aMessageContainer","aMessageWrap","aMessage","aMessage2Wrap","aMessage2","aMessageBtnWrap","approveBtn","showStatusChangePopup","reviewTableData","actionNavEvent","dataMessage","notifyBtn","statusCloseBtn","workCodeBtn","workCodeCloseBtn","buildSupervisorDropdown","sup","aNameSplit","bNameSplit","aName","bName","buildEmployeeDropdown","repopulateEmployeeDropdown","shortDescription","buildStatusDropdown","checkDateValidation","setBtnStatusOfApplyFilter","rowName","rowDate","rowStartTime","rowEndTime","rowWorkCode","showRejectionPopup","workCodeText","Anywhere_status","workcode","transportation_units","svgElement","buildHoursWorked","addMap","dashStatus","markerLabelDate","markerLabelStartTime","markerLabelEndTime","markerLabelText","recordCnt","routeNameInput","driverDropdown","otherRiderDropdown","vehicleDropdown","milesRadio","tripsRadio","consumerSectionBody","noConsumerWarning","consumersOnRecord","routeInfoCard","routeInfoCardBody","autocomplete","saveRoute","consumerSectionCard","consumerSectionHeader","checkRequiredFieldsOfAddRoute","routeName","setBtnStatusOfAddRoute","vehicleDropdownData","driverDropdownData","otherRiderDropdownData","vehicleNumber","resetPageForNewDate","consumerRemoveAction","updateConsumerData","retrieveConsumerData","consumerDetails","TRANS_routeDocumentationAjax","getConsumerDetails","getConsumerDetailsResult","transportationCard","TRANS_consumerDocCard","createCard","driverddElement","otherRiderElement","otherRider","vehicleElement","locationElement","billingType","tripName","driverId","tripCompletedId","TRANS_addRouteAjax","insertTrip","insertTripCompletedResult","dbCallArr","alternateAddress","completedDetailId","pickupOrder","riderStatus","scheduledTime","specialInstructions","totalTravelTime","consumerDetailSubmit","tripDetailId","tripsCompletedId","insertUpdateTripConsumers","saveRoutePopup","tripDate","vehicleId","documentBtn","routeID","vehicleInfoId","TRANS_vehicleInspection","enterPath","vId","rId","routeDate","docLaterBtn","routeSection","warningDisp","trips","tripsStatus","buildRouteBtn","route","tripInspection","routeBtn","inspIcon","inspColor","TRANS_selectedRoutePopup","tripsResp","TRANS_myRotueAjax","getTrips","getTripsResult","tempTrips","trip","determineTripStatus","tempStatusMap","odoStart","odoStop","tripType","totalConsumersOnRecord","consumerNoStatus","serviceDateStop","tripInspectionEnteredBy","inspectionTime","inspectionNote","batchNumber","futureDate","warnDisp","vehicleInspBtn","batchedRoute","inspectionId","enteredById","inspectionDate","routeStartOdo","routeEndOdo","routeStartInput","routeEndInput","tripInfo","consumersToRemove","isAddHoc","selectedRouteId","selectedRouteName","vehicleInspection","deleteInspection","notTodeleteConsumers","selectedRouteInformation","readableDate","batchedWarninig","odometerStop","timeDiv","odometerDiv","deleteRoute","buildConsumerCards","odoCheck","dif","loadData","cleanData","getTripInformationResult","getTripConsumersResult","routeInfo","getRouteInformation","getRouteConsumers","deleteRouteAccept","deleteProms","deleteVehicleInspection","TRANS_manageRoutesAjax","deleteTrip","odoEnd","tripData","otherRiderId","updateManageTripDetails","IsSameInsertedConsumerFind","deleteConsumerFromTrip","routeId","addHocRoute","vehicleInspectionId","routesTable","selectedRoutes","filteredRoutes","filterOpts","multiEditEnabled","multiSelRoutes","updateDriverBtn","updateVehicleBtn","filteredDateStart","filteredDateStop","selectedDriver","selectedRouteStatus","totalRouteCount","selectedVehicle","filteredDateStartBtnWrap","selectedDriverBtnWrap","selectedLocationBtnWrap","selectedRouteStatusBtnWrap","selectedVehicleBtnWrap","totalRouteCountBtnWrap","routeStatus","filteredByDisplay","tripId","driverDisp","readDate","readStartTime","readEndTime","readOdoStart","readOdoStop","rowValues","batchWarnEl","TRANS_manageRoutesFilter","filteredDateStartBtn","selectedDriverBtn","selectedDriverCloseBtn","selectedLocationBtn","selectedLocationCloseBtn","selectedRouteStatusBtn","selectedRouteStatusCloseBtn","totalRouteCountBtn","selectedVehicleBtn","selectedVehicleCloseBtn","locationPermissions","tmpRoutes","routeMap","filterTripStatus","tripsWithFilteredStatus","tempFilteredRoutes","TRANS_updatePopup","updateType","massUpdateCallback","MouseEvent","massUpdateDriverVehicle","routeStatusDropdown","routeStatusDropdownData","IsFilterShow","updateDropdown","currentDisplay","routes","createCurrentDisplay","updateDescription","routeDisp","vehicleDisp","eventListener","routeIdConcat","newUpdateVal","routeIdString","updateVal","EditResponsibleRelationshipsComponent","editResponsibleRelationshipsFinished","wfStepPopup","editResponsibleRelationshipsCancelled","enableButton","enable","containsErrors","getResponsibleParties","getWFResponsibleParties","dropDownList","responsiblePartyType","original","modified","originalvalues","modifiedvalue","clickedddl","ddl","ddlobjects","raiseError","errorMsg","clearError","isMaxLengthExceeded","maxChars","inputValue","EditWorkflowStepComponent","populateResponsiblePartyClassificationDropdown","editWorkflowStepFinished","editWorkflowStepCancelled","doneDate","descriptionCharLimit","descriptionTextInput","validateDescription","combinedText","allowStepEdit","dueDateInput","changed","wfeventid","isChanged","eventTypeId","doneDateInput","responsiblePartyClassificationDropdown","poplateResponsibleDropDownbyTypeID","responsibleDropdown","commentsTextInput","responsibleParty","getResponsiblePartyIdforThisEditStep","responsiblePartyClassification","getResponsiblePartyClassification","responsiblePartyClassificationData","getPeopleNamesResult","getPeopleNamesAsync","FormsWorkflowStepComponent","formsWorkflowStepFinished","activeConsumerId","formsWorkflowStepCancelled","templateddl","formddl","fullNameArray","userFormDropdown","getTemplates","usrForm","WorkflowComponent","responsiblePeople","processName","currentStatusId","addedToPlan","setStatusAsync","statusId","getFirstAndLastName","workflowContainer","workflowSummaryContainer","workflowNameContainer","workflowDescriptionPopop","workFlowDescription","responsiblePartyContainer","ddlcache","workflowResponsibilityType","updateRelationshipResponsiblePartyID","workflowSteps","responsiblestep","statusContainer","setStatus","processEvent","processStepEventsAsync","wfActionsCompleted","processWorkflowStepEventResult","displaySteps","wfActionCompleted","StepId","ActionId","ActionDate","workflowProcessContainer","workflowDeleteContainer","appendWorkflowDeleteContainer","isWorkflowAutoCreatedAsync","isWorkflowAutoCreatedResult","workflowDetailContainer","innertHtml","WorkflowGroupComponent","deleteWorkflowAsync","deleteWorkflowResult","workflowsRemaining","workflowsContainer","documentDescription","documentDeleteBtn","documentDragBtn","docDesc","slug","slugify","myString","deleteDocumentAsync","deleteWorkflowStepDocumentResult","groupContainer","groupHeaderGrid","groupGridColumn1","groupExpandButton","groupGridColumn2","addStepBtnOpts","WorkflowStepComponent","stepOrder","editedData","insertStepAsync","insertWorkflowStepResult","groupNode","slideDown","groupBntAddStep","stepGrid","slideToggle","stepContainer","toggleClass","groupSteps","orderArray","setStepOrderAsync","WorkflowsComponent","workflows","workflowsComponent","isChecklist","responsiblePartytype","documents","isExpanded","isAttachmentValid","addStepDocument","stepActionsCompleted","stepsGrid","stepsGridColumn1","stepExpandButton","stepsGridColumn2","stepSummaryContainer","stepDescriptionContainer","stepCompleteCheckbox","stepDescription","summaryComponent","stepDetailContainer","editBtnOpts","updateStepAsync","existingNode","stepobjt","stepobject","stepActionData","stepActionObj","wfStatusId","stepBtnEdit","deleteBtnOpts","deleteStepAsync","stepBtnDelete","reponsiblePartyContainer","commentsContainer","documentsContainer","addDocBtnOpts","addFormBtnOpts","newDocumentComponent","attachmentLabelAddDoc","addDocumentBtn","addFormBtn","attachmentLabelAddForm","actionContainer","stepsGridColumn3","setStepDoneDateAsync","doneDateElement","stepDocuments","setDocumentOrderAsync","attachmentFileName","TypeId","getFormTemplatesAsync","getWorkflowsAsync","stepData","setStepDueDateAsync","documentOrderArray","stepOrderArray","thisEvent","getManualWorkflowListResult","getWorkFlowFormsfromPreviousPlanResult","copyWorkflowtemplateToRecordResult","getWFwithMissingResponsiblePartiesResult","getResponsiblePartyIdforThisEditStepResult","getWFResponsiblePartiesResult","WFID","getResponsiblePartyClassificationResult","formTemplates","buildWorkflowComponents","getWorkflowData","getWorkflowsResult","getFormTemplatesResult","workflowData","getWorkflowDataForRoster","fromRoster","viewerContent","buildViewer","ref_id","initializeViewer2","loadData2","getWorkflowData2","buildWorkflowComponents2","loadVehicleInspectionLanding","newInspectionBtn","reviewInspectionsBtn","TRANS_inspectionReview","TRANS_reviewInspectionFilter","enteredByDropdown","enteredByDropdownData","updateDates","inspectionTable","defaultFromDate","vehicleNumberBtnWrap","tmpInsp","getCompletedInspections","getCompletedInspectionsResult","inspMap","insp","inspections","readTime","vehicleNumberBtn","vehicleNumberCloseBtn","selectedRoute","selectedRouteDate","inspectionQuestionBody","questionResponses","enteredByOtherUser","inspectionEnterPath","routeInspection","currentlySelectedVehicle","allQuestionsAnswered","inspectionTIme","inspectionInfoCard","inspectionInfoBody","saveInspection","col1","col2","routeNameDisp","otherUserDisp","dtWrap","inspectionQuestionCard","inspectionQuestionHeader","buildInspectionQuestions","checkForAllRequiredFields","completedStatus","getInspectionDetailsForEdit","questionTitle","passCheck","failCheck","naCheck","passRadio","failRadio","checkAllQuestionsAnswered","allowNARadio","completedDetails","getVehicleInspectionDetails","getVehicleInspectionDetailsResult","completedDetailsMap","cat","inspectionCategory","categoryStatus","inspectionStatus","vddElement","mainData","updateVehicleInspection","insertVehicleInspection","insertVehicleInspectionResult","detailData","inspectionCatString","inspectionStatusString","insertUpdateVehicleInspectionDetails","acceptDelete","clearVar","consumersWrap","consumerSections","consumerInvolvedIdArray","getConsumersInvolved","showConsumersWrap","displayCount","countHolder","checkForRequiredConsumer","removeConsumerErrors","cardHasErrors","showConsumerError","cardId","moveConsumersToConsumersInvolved","initPromises","actConsumer","buildConsumer","initPromise","initConsumerData","removeConsumerFromConsumersInvolved","populateConsumersWrap","checkInvolvedRequirements","involvementDataLookup","involvementSec","checkOneHasPPI","cardWrap","consumerSubSections","showMenu","buildSection","consumersInvolvedData","removeConsumer","sectionsContainer","sectionsTopBar","sectionsMenu","followUpSection","injuriesSection","interventionSection","involvementSection","reportingSection","reviewSection","behaviorSection","visibleSectionHome","hideBackBtn","showBackBtn","showSectionMenu","populateSection","buildTopBar","topBar","oldCard","sectionItem","targetSectionName","sectionsInner","followUpHome","newFollowUpBtn","followUpReviewTable","followUpForm","followUpTypeDropdown","personResponsibleInput","completedDateInput","formButtons","followUpsData","followUpsDeleteData","followUpTypes","selectedFollowUpId","followUpNote","lastUpdatedOn","getDataForSave","getDataForDelete","clearFormDataDefaults","clearReviewTable","removedConsumerData","newFollowUpsData","deleteConsumerFollowUpData","deletedFollowUp","followUpTypeSelect","setFormDataDefaults","tmpFollowUpTypeId","tmpPersonResponsible","tmpDueDate","tmpCompletedDate","tmpNote","buildFollowUpTypeDropdown","followUptypeDrop","fu","itFollowUpTypeId","followUpTypeName","buildPersonResponsibleInput","personInput","buildDueDateInput","inputOptions","buildCompletedDateInput","buildNotesInput","buildFormBtns","buildDeleteBtn","buildNewFollowUpForm","showForm","isedit","filterFollowUpTypes","followUpType","buildReviewTable","buildAddNewFollowUpBtn","dateTimeCompleted","dueDateTime","injuriesHome","newInjuryBtn","injuriesReviewTable","injuryLocationDropdown","injuryTypeDropdown","injuryCauseDropdown","riskOfInjuryDropdown","checkedByNurseCheckbox","detailsInput","treatmentInput","dateCheckedInput","injuryDeleteData","injuryLocations","injuryTypes","injuryRisks","injuryCauses","selectedInjuryId","treatment","dateChecked","newInjuryData","deleteConsumerInjuryData","deletedInjury","riskAndCause","injuryRiskDropdown","injuryCauseDropdowns","injuryLocationSelect","injuryTypeSelect","tmpInjuryLocation","tmpInjuryType","tmpInjuryCause","tmpInjuryRisk","tmpCheckedBy","tmpDetails","tmpTreatment","tmpDateChecked","buildInjuryLocationDropdown","iLocDrop","injuryLocation","buildInjuryTypeDropdown","iTypeDrop","injuryType","buildInjuryCauseDropdown","iCauseDrop","injuryCauseDescription","buildRiskOfInjuryDropdown","iRiskDrop","injuryRiskdescription","buildCheckedByCheckbox","buildDetailsInput","dInput","buildTreatmentInput","tInput","buildDateCheckedInput","dcInput","buildNewInjuryForm","injuryForm","filteredLocations","iLoc","filteredTypes","iType","nurseChecked","buildAddNewInjuryBtn","interventionHome","newInterventionBtn","interventionReviewTable","interventionTypeDropdown","totalTimeInput","aversiveCheckbox","interventionData","interventionDeleteData","interventionTypes","selectedInterventionId","interventionTypeId","calculateTimeLength","stInput","etInput","ttInput","sTime","eTime","newInterventionData","deleteConsumerInterventionData","deletedIntervention","interventionTypeSelect","tTime","tmpInterventionType","tmpStartTime","tmpEndTime","tmpTimeLength","tmpAversive","buildInterventionTypeDropdown","buildTotalTimeInput","buildAversiveCheckbox","nInput","buildNewInterventionForm","interventionForm","filteredInterventionTypes","buildAddNewInterventionBtn","ppiCheckbox","actionBtns","involvementsData","consumerLocationData","removedConsumer","newInvolvementsData","setInvolvementsData","initConsumerInvolvementData","toggleSaveDisabled","allHaveLocation","oneHasPPI","doesAnotherConsumerHavePPIChecked","otherConsumerHasPPI","tmpInvolvementId","tmpPpi","setInvolvmentDropdownValue","involvmentSelect","setPPICheckboxValue","ppiCheckboxInput","buildInvolvementDropdown","iDropdown","lDropdown","buildBtns","saveText","reportingHome","newReportingBtn","reportingReviewTable","reportingCategoryDropdown","reportedByInput","reportedToInput","reportMethodInput","reportDateInput","reportTimeInput","reportNotesInput","reportingData","reportingDeleteData","reportingCategories","selectedReportId","reportTime","reportingCategoryId","reportNotes","newReportingData","deleteConsumerReportingData","deletedReport","reportCatSelect","tmpReportingCategoryId","tmpReportedBy","tmpReportedTo","tmpReportMethod","tmpReportDate","tmpReportTime","buildReportingCategoryDropdown","rCatDrop","itReportingCategoryId","itReportingCategoryName","buildReportedByInput","rbInput","buildReportedToInput","rtInput","buildReportMethodInput","rmInput","buildReportedDateInput","rdInput","buildReportedTimeInput","buildNewReportingForm","reportingForm","filteredCategories","rCat","reportedCategory","reviewsHome","newReviewBtn","reviewsReviewTable","reviewedByDropdown","reviewDeleteData","reviewedByDropdownData","selectedReviewId","reviewedById","reviewNotes","newReviewData","deleteConsumerReviewData","deletedReview","tmpReviewDate","tmpReviewedBy","currentReviewedBy","buildReviewDateInput","buildReviewedByDropdown","rbDrop","rb","buildNewReviewForm","reviewForm","dateReviewed","buildAddNewReviewBtn","behaviorHome","newBehaviorBtn","behaviorReviewTable","behaviorTypeDropdown","occurrencesInput","behaviorDeleteData","behaviorTypes","selectedBehaviorId","behaviorType","newBehaviorData","deleteConsumerBehaviorData","deletedBehavior","getTimeLength","parseStartTime","splittime","tmpBehaviorTypeId","tmpOccurrences","buildBehaviorTypeDropdown","behaviortypeDrop","itBehaviorTypeId","behaviorTypeName","buildOccurrencesInput","buildNewBehaviorForm","behaviorForm","behaviorDATA","filterBehaviorTypes","occurrencesNum","buildAddNewBehaviorBtn","summaryText","actionText","preventionText","factorsText","incidentDateInput","incidentTimeInput","reportedDateInput","reportedTimeInput","summaryTextarea","actionTextarea","preventionTextarea","causeTextarea","locationDetailDropdown","getSectionData","setSectionValues","defaultCategory","buildDateTimeInputs","incidentDateTimeWrap","reportedDateTimeWrap","incidentDateTime","reportedDateTime","buildDropdowns","dropdownWrap","itLocationId","defaultDropdownOption","buildTextAreas","cause","dateTimeInputs","textAreas","incidentDateInpt","detailshasErrors","employeesInvolved","addNewEmployeeRow","employeeCard","buildEmployeeCard","involvementType","involvementTypeId","employeeInvolvementTypeId","buildNameDropdown","nameDropdown","buildInvolvmentDropdown","involvmentTypeDropdown","checkedValue","employeeRow","delteBtn","addEmployeeBtn","othersInvolved","addNewPersonRow","peopleCard","buildOtherPersonCard","otherPeopleRow","involvementDropdownData","addPeopleBtn","consumerswithSaleforceIds","caseManagersfromOptionsTable","assignmentResults","currentCaseManagerSelected","assignCaseLoadPopup","showConfirmationPopup","selectedConsumerObjs","confirmCaseLoadPopup","assignedConsumerList","assignStateCaseManagertoConsumers","processedStateConsumerObjs","filteredStateConsumers","assignresult","getCaseManagersfromOptionsTable","getConsumerswithSaleforceIds","caseManagersContainer","cmHeading","CM_SEARCH_BTN","CM_SEARCH_WRAP","CM_SEARCH_INPUT","CM_filterBtn","multiSelectBodyCM","caseManager","existing","CM_btnWrap","caseManagerSearch","cs","displayedCaseManagers","thisCaseManager","effStartDate","effEndDate","csSSAPeopleIdGlobal","csrVendorIdGlobal","csContactInputGlobal","getTeamMembersHowTheyExistOnPlanNowWhileWeWaitOnDamnStateToMakeUpTheirMinds","teamMember","isSigned","dateSigned","planStatusChange","addMemberBtn","refreshTable","getConsentGlobalValues","SSA","VENDOR","CONTACT","isTeamMemberConsentable","isTeamMemberGuardian","getNames","getTeamMemberData","insertNewTeamMember","selectedMemberData","participated","parentOfMinor","relationship","salesForceId","buildingNumber","useExisting","relationshipImport","createRelationship","hasWetSignature","stuff","insertTeamMember","isMemberConsentable","shouldUpdateSSA","shouldUpdateVendor","shouldUpdateContact","updateTeamMebersGlobals","newSSA","newVendor","newContact","updateTeamMember","clearSignature","vendorRel","csVendor","getSelectedVendorRel","updatePlanConsentStatements","idToIgnore","deleteTeamMember","teamMemberPopup","deleteAccept","getSSAById","ssaId","filteredSSA","buildChangeMindRadios","radioContainer","buildChangeMindQuestion","changeMindRadios","buildContactRadios","buildContactQuestion","contactInputValue","oldTable","updateTableRowOrder","newPos","inPersonSignature","relationshipType","csTeamMember","getSignatureTypeByID","isNewMember","memberData","currentTeamMemberData","csSignature","dissentDate","addVendorBtn","showESignaturesPopup","ESignaturesPopup","webpageURL","origin","pathname","lastIndexOf","eSignatureTeamMemberData","successfulSend","sendESignaturesEmailPopup","saveReportAndSendESignEmailResult","checkboxCheck","requestESignaturesBtn","filteredTeamMemberData","doesIdExistInVendors","mergedData","filteredValue","invalidContactProviderVendorIdCheck","checkOneSpan","getAllActiveVendors","getSignaturesResult","getPlanInformedConsentSSAsResult","getPlanInformedConsentVendorsResult","getAllActiveVendorsResult","GetSalesForceId","GetSalesForceIdResult","getTeamMemberListFromState","getTeamMemberListFromStateResult","getStateGuardiansforConsumer","peopleIdData","getStateGuardiansforConsumerResult","getStateCaseManagerforConsumerResult","assignStateCaseManagertoConsumersResult","getTeamMemberBySalesForceId","getTeamMemberBySalesForceIdResult","getConsumerOrganizationId","getConsumerOrganizationIdResult","getCaseManagersfromOptionsTableResult","getConsumerswithSaleforceIdsResult","getLocationswithSalesforceId","getLocationswithSalesforceIdResult","insertPlanTeamMemberResult","updatePlanTeamMemberResult","updatePlanConsentStatementsResult","updatePlanSignatureOrderResult","deletePlanSignatureResult","setSalesForceIdForTeamMemberUpdate","setSalesForceIdForTeamMemberUpdateResult","validateConsumerForSalesForceIdResult","csRelationship","selectedRelationship","existingRelationshipPopup","relationshipsWrap","buildExistingPopupMessage","showExistingPopup","uniqueArray","removeExisting","teamMembers","teamMemberIDs","tm","buildRelationship","pplID","salesforceID","contactID","adress","relationshipDiv","nameEle","dobEle","addressEle","relationshipTypeEle","currSelected","showMainPopup","filteredMember","applySelectedRelationship","csSalesforce","salesforceRelationships","selectedSalesforce","salesforceWrap","relType","Role","relationshipEle","linkToSalesForce","showConsentStatments","signaturePopup","signatureSection","changeMindQ","complaintQ","sigPad","sigBody","sigCanvas","allowSignClear","prevDissentData","checkSignautrePopupForErrors","parseSignatureData","saveFromSignature","sigPadData","insertSuccess","checkForAllowClearSignature","activePlan","clearInputsOnSignatureClear","dissentAreaInput","dissentHowToInput","allRadios","clearMemberDataOnClear","resizeSigCanvas","sigWrap","offsetWidth","showClearConfirmationPopup","confirmPop","updatedSignatureSection","buildSignatureSection","signatureWrap","signatureTitle","signDate","sigDiv","sigImage","clearSignatureBtn","dbVal","getChangeMindMarkup","getContactMarkup","prevDateSigned","dissentSection","consentSection","cancelText","saveCancelWrap","insertAllowed","importedFromRelationship","stateGuardiansObj","selectedStateGuardian","selectedStateGuardianSalesForceId","DBteamMemberswithStateSalesForceId","currentTeamMemberList","linkToRelationshipBtn","linkToSalesforceBtn","teamMemberDropdown","stateGuardianDropdown","lNameInput","dateOfBirthInput","relationshipTypeInput","signatureTypeDropdown","radioDiv2","participatedYesRadio","participatedNoRadio","parentOfMinorYesRadio","parentOfMinorNoRadio","saveTeamMemberBtn","checkTeamMemberPopupForErrors","isConsentable","populateTeamMemberDropdown","populateSignatureTypeDropdown","populateGuardiansDropDown","guarddata","AccountName","calculateAge","dobStr","monthDifference","isDateBefore1900","relData","guardianSalesforceId","saveTeamMember","selectedSalesforceId","continueGuardianSave","continueSaveofGuardianTeamMember","existingPeopleId","usePerson","hasSalesForceIdBeenUsed","Scenario1ConfirmText","Scenario3ConfirmText","Scenario4ConfirmText","updatesuccess","selectedSalesForceID","isSaleForceIdUsed","buildParticipationRadios","radioContainerTitle","buildParentOfMinorRadios","isNoChecked","isYesChecked","buildDateSignedDisplay","dateSignedDisplay","dateSignedParsed","btnWrap3","orgId","selectedOptions","selectedTeamMember","isMinor","showStateGuardians","complaintQuestion","setStateofPopupFields","insertingConditionalFieldsintoPopup","checkIfDateBefore1900","isSelectedTeamMemberConsentable","insertingFieldsBasedonConsentable","isSelectedTeamMemberGuardian","insertingFieldsBasedonGuardian","globals","participationRadios","validEmail","parentOfMinorRadios","btns","csVendorPopup","checkcsVendorPopupForErrors","cleanedVendorName","selectedVendorData","selectedVendor","vendorAddress","removeV","populateVendorDropdownData","summaryVendors","outcomesVendors","servicesVendors","selectedVendors","facilitiesGroup","vendorGroup","nonVendorGroup","buildingNumberInputValue","mainCIData","bestWayToConnectData","uniqueFundingSources","allFundingSources","fundingSourceList","importantGroupsData","gkDemographicsData","prefNameInput","cityStateZipInput","countyInput","sexInput","maritalStatusInput","charLimits","newDropdownData","populateBestWayToConnectDropdown","buildContactInputs","inputSection","dateFundingSoureContainer","ispDatesSection","ispDatesHeader","ispFundingSuourcesSection","ispFundingSuourcesHeader","fsContainer","bestWayToConnectDropdown","otherTextInput","summaryAjax","updateBestWayToConnect","bestWayId","updateMoreDetail","bestWayToConnectBtnAlertDiv","bestWaytoConnectAlertDiv","combinedName","addNewLine","combinedAddress","updateInputsWithDeomgraphicsData","nickName","sex","ph","formatPhone","disp","validatePhone","genTelRegEx","phNum","phoneDigits","rawNumber","pos3","pos4","updateFundingSources","contactInformationAjax","getPlanContactFundingSources","fsSort","getFundingSourceById","onlyUnique","contactSection","refreshWrap","refreshBtn","importExistingContactInfo","toTimeString","lastrefresh","importantPeopleSection","isp_ci_importantPeople","importantGroupsSection","isp_ci_importantGroups","importantPlacesSection","isp_ci_importantPlaces","contactInformationSection","pID","getPlanContactInformation","AdditionalSummaryData","getAdditionalAssessmentSummaryQuestions","gkDemographicsDataProm","importantPeopleDataProm","getPlanImportantPeople","importantGroupsDataProm","getPlanImportantGroups","importantPlacesDataProm","getPlanImportantPlaces","fundingSourceProm","getPlanContactResult","importExistingContactInfoResult","getConsumerRelationshipsCIResult","getPlanContactImportantPeopleResult","getPlanContactImportantPlacesResult","getPlanContactImportantGroupsResult","getPlanContactFundingSourcesResult","insertPlanContactImportantPeople","insertPlanContactImportantPeopleResult","insertPlanContactImportantGroup","insertPlanContactImportantGroupResult","insertPlanContactImportantPlaces","insertPlanContactImportantPlacesResult","updatePlanContactImportantPeople","updatePlanContactImportantPeopleResult","updatePlanContactImportantGroup","updatePlanContactImportantGroupResult","updatePlanContactImportantPlaces","updatePlanContactImportantPlacesResult","updatePlanContactImportantOrder","updatePlanContactImportantOrderResult","updatePlanContact","updatePlanContactResult","deletePlanContactImportant","cID","rawPeopleTableData","relationshipInput","phoneInput2","phone2Ext","typeOtherInput","applyGKRelationship","popFromSignatures","signaturesSection","signatureNames","joinedAddress","phoneDisp","tablePopup","popupData","typeDD","relationshipVal","addressVal","phoneVal","phoneVal2","extVal","extVal2","emailVal","typeOtherVal","thisPhone","thisPhone2","phone2","importantPersonId","typeValueUpdate","typeValValidated","importantId","typeDropdownValues","importFromSignaturesBtn","phoneWrap","phoneWrap2","phnDisp","slicedValue","buildTableMarkup","peopleTable","oldPos","typeValidated","ipSection","addPersonBtn","rawPlacesTableData","scheduleVal","acuityVal","acuity","insertId","importantPlacesId","scheduleInput","acuityInput","placesTable","addPlaceBtn","rawGroupsTableData","statusDD","meetingInfoVal","whoHelpsVal","meetingInfo","whoHelps","importantGroupId","statusDropdownValues","meetingInfoInput","whoHelpsInput","igSection","addGroupBtn","usePlanImage","consumerIdForPhoto","consumerImage","consumerImageURL","updateIntroduction","planIntroductionAjax","updatePlanIntroduction","buildIntroduction","noPhotoRadio","fullpath","imgElement","displayNoPhoto","demoPhotoRadio","displayDemographicsPhoto","customPhotoRadio","planIntroductionData","getPlanIntroduction","displayPlanIntroductionPhoto","photoObj","photoFile","photoName","photoType","refreshPlanIntroductionPhoto","imageTitle","imageContainer","radioDiv1","radioDiv3","imageframe","photoSelectDiv","likeAdmireInput","thingsImportantToInput","thingsImportantForInput","howToSupportInput","customPhotoRadio2","myImage","noPhotoRadio1","urlCreator","webkitURL","myImage2","myImage3","getPlanIntroductionResult","updatePlanIntroductionResult","progressSummaryId","outcomesWrap","outcomesProgressSummary","addOutcomeBtn","addExpTableBtn","hasPreviousPlan","responseIdCache","respProviderIdToNameMap","mapOutcomesDetails","outcomeOrder","reviews","experienceId","experienceIds","experienceOrder","whatHappened","howHappened","responsibilities","responsibilityIds","responsibilityId","responsibleContact","responsibleProviderSalesforce","whenHowOftenValue","whenValue","whenFrequency","whenHowOftenText","whenOther","outcomeReviewId","whoReview","who","reviewIds","whoResponsible","reviewOrder","sortOutcomesByOrder","objA","objB","checkIfSummaryRequired","populateAssessmentAreaDropdown","populateStatusDropdown","populateExperiencesHowOftenDropdown","populateReviewsWhoDropdown","populateResponsibleProviderDropdown","defaultValueSalesForce","serviceVendors","salesforce","vendorIds","coflictingIds","conflictIndex","getPlanOutcomesPaidSupportProvidersResult","getPlanOutcomesPaidSupportProviders","selectedVendorIds","isSelectedVendor","tempData","saveUpdateProvider","populateResponsibleContactDropdown","getWhenHowOFtenFrequencyById","filteredFrequency","getWhoTypeById","filteredWho","isSalesforceLocationTrue","insertOutcome","fromAssessment","insertPlanOutcome","updatePlanOutcome","deleteOutcome","exp","respId","toggleAddNewOutcomePopupDoneBtn","inputsWithErrors","showAddNewOutcomePopup","hasInitialErros","outcomeText","detailsText","historyText","newOutcomePopup","assessmentAreaDropdown","carryoverInput","outcomeTextInput","detailsTextInput","historyTextInput","insertOutcomeExperience","expTableWrap","newTableData","insertPlanOutcomesExperience","respData","responsibleProviderName","respIds","insertPlanOutcomeExperienceResponsibility","getColTextForWhoResponsible","getColTextForWhenHowOften","showExperiencesPopup","experiencesDummyTable","onEnd","updatePlanOutcomesExperienceOrder","newDraggableIndex","oldDraggableIndex","updateOutcomeExperience","respPartysToDelete","updatePlanOutcomesExperience","isRespPartyForDelete","deletePlanOutcomeExperienceResponsibility","updatePlanOutcomeExperienceResponsibility","newExperiencesTable","oldExperiencesTable","deleteOutcomeExperience","deletePlanOutcomeExperience","outcomeDiv","expTable","filteredRelationship","toggleExperiencesPopupDoneBtn","saveUpdateData","experiencesPopup","whatHappenedInput","howHappenedInput","buildResponsiblePartyInputs","saveUpdateDataRef","dataRefKey","inputsWrap","whoReponsibleWrap","responsiblePersonDropdown","responsibleProviderDropdown","respDropdown","whenHowOftenValueInput","whenHowOftenFrequencyDropdown","whenHowOftenTextInputField","whenHowOftenTextInput","textInput","respPartyWrap","respParty","addRespPartyBtn","respLength","expTables","mainBtns","whoReponsibleInput","addExperienceTable","buildExperiencesTables","experiencesDiv","respObj","experienceBtnAlertDiv","experienceAlertDiv","insertOutcomeReview","reviewId","insertPlanOutcomesReview","tableID","showReviewsPopup","updateOutcomeReview","updatePlanOutcomesReview","deleteOutcomeReview","deletePlanOutcomeReview","toggleReviewsPopupDoneBtn","reviewsPopup","whatWillHappenInput","whoReviewDropdown","isCaseManager","whenToCheckinDropdown","populatewhenToCheckinDropdown","rowOrder","addReviewRow","buildReviewsTable","reviewsDiv","reviewsTable","updateOutcomesReviewOrder","addRowBtn","reviewsBtnAlertDiv","reviewAlertDiv","buildQuestion","awnser","questionInput","buildOutcome","outcomesUpdateData","deleteOutcomeBtn","assessmentPlanValidation","orderDiv","outcomeInput","historyInput","topRow","outcomesDataValues","textForSave","updatePlanOutcomeProgressSummary","sortedOutcomes","pyid","planOutcomesData","summaryId","insertPlanOutcomeProgressSummary","ddData","targetAssessmentVersionId","getPlanSpecificOutcomesResult","insertPlanOutcomeProgressSummaryResult","insertPlanOutcomeResult","insertPlanOutcomesExperienceResult","insertPlanOutcomeExperienceResponsibilityResult","insertPlanOutcomesReviewResult","updatePlanOutcomeProgressSummaryResult","updatePlanOutcomeResult","updatePlanOutcomesExperienceResult","updatePlanOutcomeExperienceResponsibilityResult","updatePlanOutcomesReviewResult","deletePlanOutcomeProgressSummary","deletePlanOutcomeProgressSummaryResult","deletePlanOutcomeResult","deletePlanOutcomeExperienceResult","deletePlanOutcomeExperienceResponsibilityResult","deletePlanOutcomeReviewResult","updatePlanOutcomesOrder","updatePlanOutcomesReviewOrderResult","updatePlanOutcomesExperienceOrderResult","rmData","rmDataArray","rmMainWrap","addSectionBtn","updateRMResponse","restrictiveMeasuresAjax","updatePlanRestrictiveMeasures","deleteRMData","rmId","informedConsentId","deletePlanRestrictiveMeasures","toggleRestrictiveMeasureQuestionsVisiblity","restrictiveMeasuresSectionID","insertPlanRestrictiveMeasures","newSection","createNewSection","isFirstSection","rmSections","buildRestrictiveMeasureQuestions","rmQuestionSection","rmHrcApprovalDate","rmHRCDate","rmKeepSelfSafeQuestion","rmKeepSelfSafeQuestionText","rmKeepSelfSafeQuestionResp","rmFadeRestrictionQuestion","rmFadeRestrictionQuestionText","rmFadeRestrictionQuestionResp","rmWhatCouldHappenQuestion","rmWhatCouldHappenQuestionText","rmWhatCouldHappenQuestionContainer","rmWhatCouldHappenQuestionGoodResp","rmWhatCouldHappenQuestionBadResp","rmOtherWayHelpQuestion","rmOtherWayHelpQuestionText","rmOtherWayHelpQuestionContainer","rmOtherWayHelpQuestionGoodResp","rmOtherWayHelpQuestionBadResp","buildToggleQuestions","rmSection","rmRestrictionsIdentifiedQuestion","rmRestrictionsIdentifiedQuestionText","rmRestrictionsIdentifiedRadioContainer","rmRestrictionsIdentifiedYesRadio","rmIdentified","rmRestrictionsIdentifiedNoRadio","rmItem","insertedRMID","rmQuestions","createAddSectionButton","toggleQuestion","getPlanRestrictiveMeasures","firstElement","getPlanRestrictiveMeasuresResult","insertPlanRestrictiveMeasuresResult","updatePlanRestrictiveMeasuresResult","deletePlanRestrictiveMeasuresResult","modificationsId","servicesSupportsData","selectedFundingSources","hasPaidSupports","selectedPaidSupportIds","selectedPaidSupportRows","multiEditBtn","multiEditUpdateBtn","multiEditCancelBtn","fundingSourceDropdownSelectedText","servicesDropdownSelectedText","servicesOtherDropdownSelectedText","providerDropdownSelectedText","hcbsSelected","serviceNameId","serviceNameOther","scopeOfservice","beginDate","getAssessmentAreaById","getProviderNameById","getServiceNameById","serviceOtherName","getOtherServiceNameById","fundingSourceDesc","howOftenFrequencyText","getHowOftenHowMuchFrequencyById","whatSupportsLookLike","getWhenHowOftenFrequencyById","mapProfessionalReferralDataForTable","professionalReferralId","newExisting","getNumberOfPaidSupports","getNumberOfAdditionalSupports","additionalSupportsCount","getNumberOfProfessionalReferrals","professionalReferralsCount","getHasPaidSupports","setInitialSelectedVendorIds","setInitialFundingSourceNames","getSelectedFudningSourceNames","populateFundingSourceDropdown","populateServiceNameDropdown","populateOtherServiceTypesDropdown","serviceTypesOther","serviceTypeDescription","populateMultiSelectServiceVendorsDropdown","thisSelectedArray","thisfundingSourceSelectedText","thisServiceNameSelectedText","completeVendorList","fundingSourceName","getPaidSupportsVendorsResult","vendorNumbers","getPaidSupportsVendors","test6","test7","test8","test9","duplicateVendors","minOccurancePaidSupports","removeDuplicatesBasedOnCount","minOccurancePaidSupportsFiltered","removeDuplicateObjects","vendorArray","thisVendorObject","populateServiceVendorsDropdown","ignoreGuardClauses","thisVendorDropDownData","populateHowOftenHowMuchFrequencyDropdown","populateWhenHowOftenFrequencyDropdown","populateNewOrExistingDropdown","filteredAssessment","filteredProvider","filteredFunding","insertPaidSupport","paidSupportId","insertPaidSupports","parsedId","showAddPaidSupportPopup","isCopy","rowNode","copiedData","numPaidSupports","checkForPaidSupports","updatePaidSupport","updatePaidSupports","deletePaidSupport","deletePaidSupports","updatePaidSupportsRowFromMultiEdit","multiSaveUpdateData","checkForMatchingFundingSourceAndSeriviceNames","paidSupportRows","psRow","toggleMultiEditUpdateBtn","showMultiEditPopup","multiEditPopup","thisSelectedPaidSupportItems","thisfundingSource","thisserviceName","thisSelectedObject","matchingRows","providerNameDropdown","beginDateInput","updateMultiPaidSupports","buildMultiRowEdit","togglePaidSupportDoneBtn","availableServiceTypes","servicesDropdownSelected","paidSupportPopup","serviceNameDropdown","serviceNameOtherDropdown","fundingSourceInputField","fundingSourceInput","validateServicesDropdown","validateProviderDropdown","servicesDropdownSelect","servicesOtherDropdownSelect","providerDropdown","scopeOfserviceInput","howOftenHowMuchValueInput","howOftenHowMuchFrequencyDropdown","howOftenHowMuchTextInputField","howOftenHowMuchTextInput","addPaidSupportRow","getPaidSupportsMarkup","paidSupportsDiv","supportId","updatePaidSupportsRowOrder","mutliEditBtnWrap","insertAdditionalSupport","additionalSupportId","insertAdditionalSupports","showAddAdditionalSupportPopup","updateAdditionalSupport","updateAdditionalSupports","deleteAdditionalSupport","additionalSupportData","deleteAdditionalSupports","toggleAdditionalSupportDoneBtn","additionalSupportPopup","whoSupportsDropdown","whatSupportLooksLikeInput","addAdditionalSupportRow","getAdditionalSupportsMarkup","additionalSupportsDiv","updateAdditionalSupportsRowOrder","addSupportId","insertProfessionalReferral","profRefId","showAddProfessionalReferralPopup","updateProfessionalReferral","deleteProfessionalReferral","toggleProfessionalReferralDoneBtn","professionalReferralPopup","newOrExistingDropdown","reasonForReferralInput","addProfessionalReferralRow","getProfessionalReferralsMarkup","professionalReferralsDiv","updateServiceReferralRowOrder","referralId","insertSSModification","insertSSModifications","updateSSModification","updateSSModifications","deleteSSModification","ssId","getSSModificationsMarkup","supportModification","medicalRate","behaviorRate","icfRate","complexRate","developmentalRate","childIntensiveRate","modificationDiv","tagline","checkboxGroup","medicalRateCheckbox","behaviorRateCheckbox","icfRateCheckbox","complexRateCheckbox","developmentalRateCheckbox","childIntensiveRateCheckbox","cbi","uniqueIds","isDuplicate","servicesSupportsDiv","paidSec","additionalSec","profRefSec","modsSec","getServicesAndSupportsResult","insertSSModificationsResult","insertProfessionalReferralResult","insertAdditionalSupportsResult","insertPaidSupportsResult","updateSSModificationsResult","updateProfessionalReferralResult","updateAdditionalSupportsResult","updatePaidSupportsResult","updateMultiPaidSupportsResult","updatePaidSupportsRowOrderResult","updateAdditionalSupportsRowOrderResult","updateServiceReferralRowOrderResult","deleteSSModifications","deleteSSModificationsResult","deleteProfessionalReferralResult","deleteAdditionalSupportsResult","deletePaidSupportsResult","summaryData","additionalSummaryData","sectionIdMap","sectionOrderMap","questionIdMap","questionSetIdMap","tablesToHide","amountOfTimeQuestion","backupPlanQuestion","mapSummaryData","sectionTitle","questionCol","importantTableData","skillsTableData","risksTableData","deleteTableRow","dataSection","SummaryData","getAssessmentSummaryQuestions","rowToDelete","rowsLeftOver","rowIdText","updateRowOrder","questionsetid","answerIds","answerids","populateDailyLifeDropdown","populateLevelsOfSupervisionDropdown","getLevelOfSupervisionById","getCommicationById","getDailyLifeById","addImportantTableRow","secTitle","rowOrderFromID","showImportantTablePopup","updateImportantTableRow","toggleImportantDoneBtn","importantToAnswerId","importantForAnswerId","importantPopup","importantToTextarea","importantForTextarea","upateSingleEmptyRowInsteadOfAddingNew","tableDataKeys","impToAnswer","impForAnswer","questionIds","insertAssessmentSummaryAnswers","anywQuestionIds","updateAssessmentSummaryAnswers","anywAnswerIds","rowCount","setId","buildImportTableBySection","importantTable","getImportantTablesMarkup","importantDiv","addSkillsTableRow","skillAbility","colText","showSkillsTablePopup","updateSkillsTableRow","toggleSkillsDoneBtn","skillAbilityId","communicationId","communication","dailyLifeId","dailyLife","skillsPopup","defaultTextInput","skillAbilityAnswer","buildSkillsTableBySection","skillsTable","getSkillsTablesMarkup","skillsDiv","questionsWrap","placeOnPathDropdown","placeOnPath","updatePlaceOnPath","placeId","addRisksTableRow","riskSupervision","whoResponsibleText","levelOfSupervision","showRisksTablePopup","updateRisksTableRow","oldData","toggleRisksDoneBtn","dataCache","whatIsRiskId","whatSupportLooksLikeId","riskSupervisionId","whoResponsibleId","risksPopup","whatIsRiskTextarea","whatSupportLooksLikeTextarea","levelsOfSupervisionDropdown","whoResponsibleDropdown","riskAnswer","whatIsRiskAnswer","supportAnswer","whoResponsibleAnswer","buildRisksTableBySection","risksTable","isRowEmpty","sectionHasErrors","buildDropdownLegend","getRisksTablesMarkup","risksWrap","dropdownLegend","risksDiv","numOfPaidSupports","getAdditionalSummaryQuestionMarkup","additionalQuestionDiv","amountOfTimeWrap","amountOfTimePrompt","aloneTimeAmount","providerBackUp","updateAdditionalAssessmentSummaryAnswers","backupPlanWrap","backupPlanPrompt","summaryWrap","skillsTables","risksTables","additionalSummaryMarkup","mappedSummaryData","getAssessmentSummaryQuestionsResult","getAdditionalAssessmentSummaryQuestionsResult","insertAssessmentSummaryAnswersResult","updateAssessmentSummaryAnswersResult","updateAdditionalAssessmentSummaryAnswerResult","updateBestWayToConnectResult","updatePlaceOnPathResult","updateMoreDetailResult","assessmentContainer","assessmentNav","tocMarkup","tableOfContentsBtn","unansweredQuestionToggleBtn","assessmentGeneralInfo","newAssessmentMarkup","handleNavbarEvents","innerTextValue","toggleUnansweredQuestionFilter","buildTopNavBar","navBar","addSections","sectionIdKeys","addSection","addSubSections","subsectionIdKeys","addSubSection","addQuestions","questionSetIdKeys","qsKey","addQuestionSet","buildAssessment","assessmentNavMarkupWrap","generalInfo","customSectionIds","subSections","questionSectionSets","questionSubSectionSets","sectionQuestionCount","subSectionsWithAttachments","assessmentDropdownData","colNameDropdownMap","deleteRowsActive","hideOrShowStatus","observerCallback","isIntersecting","intersectionRatio","highlightLink","IntersectionObserver","root","rootMargin","threshold","checkArrayConsistency","updateRowOrderAfterDelete","grid","gridBody","addAnswer","getSectionQuestionCount","relationshipDropdownData","toggleIntentionallyBlankCheckbox","setID","toggleConditionalQuestion","conditionalQuestions","questionSet","answered","sectionKeys","sectionKey","questionSetKeys","tableQuestionSets","questionSetKey","questionKeys","questionKey","leaveblank","questionDiv","rowElement","atLeastOneColumnAnswered","tableQuestionSetsKeys","setKey","tableHasAtLeastOneRowAnsered","tableElement","rowOrderKeys","rowOrderKey","awnseredQuestions","leftBlankQuestions","awnseredTables","leftBlankTables","handleAssessmentChangeEvents","isForRow","isforrow","answerid","questionid","setid","sectionid","textAreaInput","questionSetGridRows","questionSetActionButtons","rowCells","cellInput","questionRowId","sectionDiv","questionSetDiv","isCustomSection","radioLabelText","hideCheckbox","setGrid","buildSectionMarkup","sectionHeading","sectionHeadingInner","applicableCheckbox","sectionPrompt","buildSectionFooter","buildSubSectionMarkup","subSection","subSectionHeading","deleteSelectedRows","successfulDelete","buildGridHeaderRow","gridHeaderRow","buildGridHeaderCell","gridHeaderCell","buildGridRow","rok","gridRow","buildGridRowCell","colName","gridCell","hasStaticText","textAreaCharLimit","colKey","dataKey","dID","dText","buildQuestionGridMarkup","deleteRowsBtn","cancelDeleteRowsBtn","areAllGridAnswersEmpty","COL_NAME_MAP","tableRowData","rowIndex","rowKey","rowQuestions","cellData","cellId","columnName","inputData","gridCells","cellIds","isLeftBlankCheckboxChecked","questionOrderKeys","qok","questionIndex","gridActionRow","currentRowOrder","gridRows","isSeleted","prevSelectedRow","nrd","hideOnAssessment","isAnswered","firstCol","colInput","qId","isGridEmptyNow","intentionallyBlankCheckbox","questionInputMarkup","parentQuestion","parentAnswerText","buildTextareaInput","buildCheckboxInput","buildRadioInput","btnOpts","radioInput","buildQuestionMarkup","subSectionId","addAttachmentButton","attachButton","buildQuestionSetMarkup","setData","questionSetWrap","qoKey","questionWrap","questionGrid","belongsToSection","addSectionQuestions","questionSectionSetsOrderKeys","qssoKey","questionSetMarkup","addSubSectionQuestions","subSectionOrderKeys","ssoKey","subSectionMarkup","questionSubSectionSetsOrderKeys","subSectionTitle","footerMarkup","sectionOrderKeys","soKey","toc","tocInner","sectionGroup","scrollIntoView","block","inline","validateTableHasAtLeastOneRowAnswered","tableQuestions","questionCountObj","sectionUnawnseredQuestions","numOfQuestionsUnawnseredWrapDiv","numOfQuestionsUnawnseredDiv","numOfQuestionsUnawnsered","isWorkingSectionComplete","sectionNumber","tocSectionAlertDiv","tocHeader","tocMain","tocToggle","tocClose","cnCaseLoadSettings","CN_CASELOAD_SETTINGS","showHideCheckBox","viewNotesEnteredByOtherUsersCheckBox","getSettings","buildCNCaseLoadSettings","setSettings","getInputFieldValues","styleSaveBtnOnSave","cnProductivitySettings","CN_PRODUCTIVITY_SETTINGS","buildCNProductivity","cnProductivitySettingsAjax","getCaseNoteProductivitySettings","cnRejectedSettings","CN_REJECTED_SETTINGS","buildCNRejectedSettings","wfPlanSettings","WF_PLAN_SETTINGS","buildWfPlanSettings","scheduledTimeInput","travelMinInput","addressDropdown","directionsBtn","specialInstructionsBtn","cardData","middleI","hasDirections","hasSpecialInstructions","hasAltAddress","cardContainer","portraitContainer","altAddressWarning","nameContainer","expandBtn","expandCard","attendanceIcon","attendanceBtn","updateRiderStatus","billableCheckbox","setDefaultCheckForBillable","setCheckForBillable","headerButtons","googleAddress","createGoogleAddress","addressDiv","dirSpecInsPopup","dirSpecBtnWrap","travelContainer","pickupOrderInput","deleteConsumerBtn","removeConsumerCard","deleteConsumerBtnWrap","populateAddressDropdown","altAddressEventListener","addressCode","dir","specInstr","altAddress","altAddressInfo","getSectionConsumerData","updateSectionConsumerData","textinput","saveCallback","altAddressCode","addresses","addressChangeAction","expanded","accpetCallback","consumerDocCardBody","routeVehicle","routeVehicleDisplay","vehicleOnRoute","vehicleDescription","routeDocCard","routeDocCardBody","consumerDocCard","saveCloseBtn","once","closeTrip","tripDetailSubmit","updateTripDetails"],"mappings":"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kBAAkB;QACzBpB,IAAI,EAAE,MAAM;QACZD,KAAK,EAAE;MACT;IACF,CAAC,EACD;MACE6Z,GAAG,EAAE,OAAO;MACZ7W,IAAI,EAAE;QACJ3B,KAAK,EAAE,qBAAqB;QAC5BpB,IAAI,EAAE,UAAU;QAChBD,KAAK,EAAE;MACT;IACF,CAAC,CACF;IAED,IAAIia,UAAU,GAAGR,IAAI,CAACla,KAAK,CAAC;MAC1Boa,YAAY;MACZO,SAAS,EAAE;IACb,CAAC,CAAC;IAEF9L,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACsd,UAAU,CAAC;EAC1C;EACA,OAAO;IACL7a;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACzLJ,MAAMU,KAAK,GAAG;EACZ;EACAqa,UAAU,EAAE;AACd;AACA;AACA,WAAW;EACT;EACAC,MAAM,EAAE;AACV;AACA;AACA,WAAW;EACT;EACAne,GAAG,EAAE;AACP;AACA;AACA,WAAW;EACToe,SAAS,EAAE;AACb;AACA;AACA,WAAW;EACTC,SAAS,EAAE;AACb;AACA;AACA,WAAW;EACT;EACAC,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACT;EACAC,QAAQ,EAAE;AACZ;AACA;AACA,WAAW;EACTC,MAAM,EAAE;AACV;AACA;AACA;AACA,WAAW;EACTC,GAAG,EAAE;AACP;AACA;AACA,WAAW;EACT;EACAC,SAAS,EAAE;AACb;AACA;AACA,WAAW;EACT;EACAve,KAAK,EAAE;AACT;AACA;AACA,WAAW;EACTqO,KAAK,EAAE;AACT;AACA;AACA,WAAW;EACTqK,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACT8F,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACT;EACAzI,MAAM,EAAE;AACV;AACA;AACA,WAAW;EACT;EACA0I,WAAW,EAAE;AACf;AACA;AACA,WAAW;EACT;EACAC,QAAQ,EAAE;AACZ;AACA;AACA,WAAW;EACTvG,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACTqG,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACTG,MAAM,EAAE;AACV;AACA,SAAS;EACP;EACA9M,KAAK,EAAE;AACT;AACA,WAAW;EACT+M,QAAQ,EAAE;AACZ;AACA;AACA,WAAW;EACTtQ,MAAM,EAAE;AACV;AACA;AACA,WAAW;EACT;EACAmD,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACToN,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACT3O,aAAa,EAAE;AACjB;AACA,WAAW;EACTE,YAAY,EAAE;AAChB;AACA,WAAW;EACT0O,UAAU,EAAE;AACd;AACA,WAAW;EACTC,YAAY,EAAE;AAChB;AACA,WAAW;EACT;EACApL,OAAO,EAAE;AACX;AACA;AACA,WAAW;EACTqL,WAAW,EAAE;AACf;AACA;AACA,WAAW;EACT;EACAC,EAAE,EAAE;AACN;AACA;AACA,WAAW;EACTC,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACTC,OAAO,EAAE;AACX;AACA;AACA,WAAW;EACT;EACAC,UAAU,EAAE;AACd;AACA;AACA,WAAW;EACTzV,YAAY,EAAE;AAChB;AACA;AACA,WAAW;EACTD,YAAY,EAAE;AAChB;AACA;AACA,WAAW;EACT2V,MAAM,EAAE;AACV;AACA;AACA,WAAW;EACT;EACAC,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACT;EACAC,MAAM,EAAE;AACV;AACA;AACA,WAAW;EACT;EACAC,KAAK,EAAE;AACT;AACA,SAAS;EACP;EACAC,OAAO,EAAE;AACX;AACA,WAAW;EACTC,OAAO,EAAE;AACX;AACA;AACA;AACA,GAAG;EACDC,SAAS,EAAE;AACb;AACA;AACA,WAAW;EACT;EACA5f,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACT;EACA6f,IAAI,EAAE;AACR;AACA;AACA;AACA;AACA,WAAW;EACT;EACAC,OAAO,EAAE;AACX;AACA;AACA,SAAS;EACP;EACAC,SAAS,EAAE;AACb;AACA;AACA,SAAS;EACP;EACAC,WAAW,EAAE;AACf;AACA;AACA,SAAS;EACP;EACAC,UAAU,EAAE;AACd;AACA;AACA,UAAU;EACR;EACAC,gBAAgB,EAAE;AACpB;AACA;AACA,UAAU;EACR;EACAC,cAAc,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,CAAC,CAAE,CAAC;AC1FJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMtuB,eAAe,CAAC;EAClBwgB,WAAWA,CAACtiB,GAAG,EAAE+wB,WAAW,EAAEC,WAAW,EAAE;IACzC,IAAI,CAACpuB,MAAM,CAACd,eAAe,EAAEnB,MAAM,CAACC,IAAI,CAACqwB,WAAW,CAAC;IACrD,IAAI,CAACC,IAAI,GAAGlxB,GAAG;;IAEf;AACN;AACA;AACA;AACA;AACA;IACM,IAAI,CAACmxB,0BAA0B,GAAG,aAAa;;IAE/C;AACN;AACA;AACA;AACA;AACA;IACM,IAAI,CAACC,+BAA+B,GAAG,KAAK;IAC5C;AACN;AACA;AACA;IACM,IAAI,CAACC,QAAQ,GAAG,EAAE;;IAElB;AACN;AACA;IACM,IAAI,CAACC,SAAS,GAAG,EAAE;IAEnB,IAAI,CAACC,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;IAEjC;AACN;AACA;IACM,IAAI,CAACC,OAAO,GAAG,EAAE;;IAEjB;AACN;AACA;AACA;IACM,IAAI,CAACC,MAAM,GAAG,KAAK;IAEnB,IAAIl4B,OAAO,GAAGy3B,WAAW,IAAI,CAAC,CAAC;;IAE/B;AACN;AACA;IACM,IAAI,CAACU,OAAO,GAAGn4B,OAAO,CAAC,QAAQ,CAAC,IAAIoH,MAAM,CAACC,IAAI,CAACQ,MAAM,CAACuwB,UAAU,GAAG,CAAC;;IAErE;AACN;AACA;AACA;IACM,IAAI,CAACC,SAAS,GAAGr4B,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE;;IAE1C;AACN;AACA;IACM,IAAI,CA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CA;AACA;AACA;AACA;AACA,KAAK;IACGD,WAAW,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGM,gBAAgB,EAAE;AAC1B;AACA;AACA;AACA;AACA,KAAK;IACGG,KAAK,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,KAAK;IACGV,SAAS,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGM,QAAQ,EAAE;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGF,WAAW,EAAE;AACrB;AACA;AACA;AACA;AACA,KAAK;IACGO,cAAc,EAAE;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGZ,qBAAqB,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGD,mBAAmB,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGL,qBAAqB,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGC,iBAAiB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGC,iBAAiB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGC,YAAY,EAAE;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGY,iBAAiB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGC,eAAe,EAAE;AACzB;AACA;AACA;AACA;AACA,KAAK;IACGG,cAAc,EAAE;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;EACI,CAAC;;EAED;EACA,SAASC,kBAAkBA,CAACC,QAAQ,EAAEC,KAAK,EAAE;IACzC,IAAItjD,SAAS,GAAG1uG,QAAQ,CAACiD,cAAc,CAAC+uJ,KAAK,CAAC;IAC9C,IAAI,CAACtjD,SAAS,EAAE;MACZ,IAAIujD,cAAc,GAAG,IAAIF,QAAQ,kBAAkB;MACnD,IAAIG,YAAY,GAAGlyJ,QAAQ,CAACC,aAAa,CAACgyJ,cAAc,CAAC;MACzDvjD,SAAS,GAAGtuG,MAAM,CAACC,KAAK,CAAC;QACrBG,EAAE,EAAEwxJ,KAAK;QACTrxJ,IAAI,EAAE,QAAQ;QACdG,KAAK,EAAE,SAAS;QAChBC,IAAI,EAAE,MAAM;QACZN,IAAI,EAAE,QAAQ;QACdC,OAAO,EAAE,OAAO;QAChBmB,QAAQ,EAAE,SAAAA,CAAA,EAAY;UAClB,IAAIswJ,eAAe,GAAG,IAAIJ,QAAQ,mBAAmB;UACrD,IAAIK,aAAa,GAAGpyJ,QAAQ,CAACC,aAAa,CAACkyJ,eAAe,CAAC;UAC3DjlJ,OAAO,CAACjQ,IAAI,CAAC,CAAC;UACd8P,cAAc,CAACY,iBAAiB,CAACykJ,aAAa,CAAC;UAC/CA,aAAa,CAACv1J,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;QAC1C;MACJ,CAAC,CAAC;MACFm1J,YAAY,CAACz0J,WAAW,CAACixG,SAAS,CAAC;IACvC;EACJ;EAEA,SAAS2jD,sBAAsBA,CAACN,QAAQ,EAAEC,KAAK,EAAE;IAC7C,IAAIM,aAAa,GAAGtyJ,QAAQ,CAACiD,cAAc,CAAC+uJ,KAAK,CAAC;IAClD,IAAI,CAACM,aAAa,EAAE;MAChB,IAAIL,cAAc,GAAG,IAAIF,QAAQ,kBAAkB;MACnD,IAAIG,YAAY,GAAGlyJ,QAAQ,CAACC,aAAa,CAACgyJ,cAAc,CAAC;MACzDK,aAAa,GAAGlyJ,MAAM,CAACC,KAAK,CAAC;QACzBG,EAAE,EAAEwxJ,KAAK;QACTrxJ,IAAI,EAAE,KAAK;QACXG,KAAK,EAAE,SAAS;QAChBC,IAAI,EAAE,MAAM;QACZN,IAAI,EAAE,KAAK;QACXC,OAAO,EAAE,OAAO;QAChBmB,QAAQ,EAAE,SAAAA,CAAA,EAAY;UAClB0wJ,gBAAgB,CAACC,oBAAoB,CAAC,CAAC;QAC3C;MACJ,CAAC,CAAC;MACFN,YAAY,CAACz0J,WAAW,CAAC60J,aAAa,CAAC;IAC3C;EACJ;EAEA,SAASG,eAAeA,CAACV,QAAQ,EAAEC,KAAK,EAAE;IACtC,IAAIU,MAAM,GAAG1yJ,QAAQ,CAACiD,cAAc,CAAC+uJ,KAAK,CAAC;IAC3C,IAAI,CAACU,MAAM,EAAE;MACT,IAAIT,cAAc,GAAG,IAAIF,QAAQ,kBAAkB;MACnD,IAAIG,YAAY,GAAGlyJ,QAAQ,CAACC,aAAa,CAACgyJ,cAAc,CAAC;MACzDS,MAAM,GAAGtyJ,MAAM,CAACC,KAAK,CAAC;QAClBG,EAAE,EAAEwxJ,KAAK;QACTlxJ,KAAK,EAAE,SAAS;QAChBC,IAAI,EAAE,MAAM;QACZN,IAAI,EAAE,cAAc;QACpBC,OAAO,EAAE,OAAO;QAChBmB,QAAQ,EAAE,SAAAA,CAAA,EAAY;UAClB8wJ,eAAe,CAACC,yBAAyB,CAAC,0BAA0B,EAAE,IAAI,CAAC;UAC3ED,eAAe,CAACE,gBAAgB,CAAC,0BAA0B,CAAC;QAChE;MACJ,CAAC,CAAC;MACFX,YAAY,CAACz0J,WAAW,CAACi1J,MAAM,CAAC;IACpC;EACJ;EAEA,SAASI,gBAAgBA,CAAA,EAAG;IACxB,IAAI5oD,WAAW,GAAGlqG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/C2pG,WAAW,CAACrtG,SAAS,CAACE,GAAG,CAAC,iBAAiB,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,CAAC;IACvFmtG,WAAW,CAACjpG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9C,OAAOipG,WAAW;EACtB;;EAEA;EACA,SAAS6oD,gBAAgBA,CAAA,EAAG;IACxB,MAAMC,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACv1I,MAAM,CAAC,CAAC83I,QAAQ;IAC7D,IAAI,CAACrhG,SAAS,EAAE;MACZ,CAAC,SAASuhG,gBAAgBA,CAAA,EAAG;QACzB,IAAIC,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACv1I,MAAM,CAAC;QACnDi4I,GAAG,CAAC3yJ,EAAE,GAAG,qBAAqB;QAC9B2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;QACjCo2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAACtrC,MAAM;QAC3Bq1I,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAACgoJ,YAAY,CAAClzJ,IAAI,CAAC;MACtC,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAASmzJ,0BAA0BA,CAAA,EAAG;IAClC,MAAMC,mBAAmB,GAAGL,iBAAiB,CAACxC,SAAS,CAACK,WAAW,CAAC,CAACkC,QAAQ;IAC7E,CAAC,SAASO,mCAAmCA,CAAA,EAAG;MAC5C,IAAIC,IAAI,GAAGxzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACxCizJ,IAAI,CAACvyJ,YAAY,CAAC,WAAW,EAAEqyJ,mBAAmB,CAAC;MACnDE,IAAI,CAACvyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACK,WAAW,CAAC;MACzD0C,IAAI,CAAChzJ,EAAE,GAAG,iBAAiB;MAC3BgzJ,IAAI,CAAC32J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MAC5By2J,IAAI,CAAC32J,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;MACvCy2J,IAAI,CAACr2J,SAAS,GAAGqpD,IAAI,CAACsqG,WAAW;MACjCP,OAAO,CAACnlJ,IAAI,CAACooJ,IAAI,CAAC;MAClB;MACA,IAAI,CAAChD,UAAU,CAAC/+C,QAAQ,CAAC8gD,gBAAgB,CAACryJ,IAAI,CAAC,EAAE;QAC7CswJ,UAAU,CAACplJ,IAAI,CAACmnJ,gBAAgB,CAACryJ,IAAI,CAAC;MAC1C;IACJ,CAAC,EAAE,CAAC;EACR;EAEA,SAASuzJ,wBAAwBA,CAAA,EAAG;IAChC,CAAC,SAASF,mCAAmCA,CAAA,EAAG;MAC5C,IAAIJ,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC;MAClCkyJ,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACmB,cAAc,CAAC;MAC3DuB,GAAG,CAAC3yJ,EAAE,GAAG,yBAAyB;MAClC2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,sBAAsB,CAAC;MACzCo2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAACorG,cAAc;MACnCrB,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;;MAEjB;MACA,IAAI,CAAC3C,UAAU,CAAC/+C,QAAQ,CAAC8gD,gBAAgB,CAACryJ,IAAI,CAAC,EAAE;QAC7CswJ,UAAU,CAACplJ,IAAI,CAACmnJ,gBAAgB,CAACryJ,IAAI,CAAC;MAC1C;IACJ,CAAC,EAAE,CAAC;EACR;EAEA,SAASwzJ,qBAAqBA,CAAA,EAAG;IAC7B,MAAMV,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACY,WAAW,CAAC,CAAC2B,QAAQ;IAClE,IACI5kJ,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,IAC1CF,CAAC,CAACC,OAAO,CAACgkC,eAAe,IACzBjkC,CAAC,CAACC,OAAO,CAACsrC,qBAAqB,KAAK,sBAAsB,EAC5D;MACE;MACA,CAAC,SAASg6G,0BAA0BA,CAAA,EAAG;QACnC,IAAIR,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACY,WAAW,CAAC;QACxD8B,GAAG,CAAC3yJ,EAAE,GAAG,uBAAuB;QAChC2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;QACtCo2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAAC6qG,WAAW;QAChCd,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAACwoJ,sBAAsB,CAAC1zJ,IAAI,CAAC;MAChD,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAAS2zJ,0BAA0BA,CAAA,EAAG;IAClC,MAAMb,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACa,gBAAgB,CAAC,CAAC0B,QAAQ;IACvE,IACI5kJ,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,IAC1CF,CAAC,CAACC,OAAO,CAACqtC,oBAAoB,IAC9BttC,CAAC,CAACC,OAAO,CAAC4nC,iBAAiB,EAC7B;MACE;MACA,CAAC,SAAS69G,qBAAqBA,CAAA,EAAG;QAC9B,IAAIX,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACa,gBAAgB,CAAC;QAC7D6B,GAAG,CAAC3yJ,EAAE,GAAG,4BAA4B;QACrC2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;QAC3Co2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAAC8qG,gBAAgB;QACrCf,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAAC2oJ,sBAAsB,CAAC7zJ,IAAI,CAAC;MAChD,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAAS8zJ,mBAAmBA,CAAA,EAAG;IAC3B,MAAMhB,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACQ,SAAS,CAAC,CAAC+B,QAAQ;IAChE,IACI5kJ,CAAC,CAACC,OAAO,CAAC+uC,KAAK,IAAI,KAAK,IACxBhvC,CAAC,CAACC,OAAO,CAACwhC,gBAAgB,IAC1BzhC,CAAC,CAACC,OAAO,CAACorC,qBAAqB,KAAK,sBAAsB,EAC5D;MACE,CAAC,SAASw6G,6BAA6BA,CAAA,EAAG;QACtC,IAAId,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACQ,SAAS,CAAC;QACtDkC,GAAG,CAAC3yJ,EAAE,GAAG,qBAAqB;QAC9B2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;QACpCo2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAACyqG,SAAS;QAC9BV,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAAC6lJ,SAAS,CAAC/wJ,IAAI,CAAC;MACnC,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAASg0J,qBAAqBA,CAAA,EAAG;IAC7B,MAAMlB,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACS,WAAW,CAAC,CAAC8B,QAAQ;IAClE,IACI5kJ,CAAC,CAACC,OAAO,CAAC4nC,iBAAiB,KAAK,IAAI,IACnC7nC,CAAC,CAACC,OAAO,CAACwhC,gBAAgB,IAAIzhC,CAAC,CAACC,OAAO,CAACorC,qBAAqB,KAAK,sBAAuB,EAC5F;MACE,CAAC,SAAS06G,qBAAqBA,CAAA,EAAG;QAC9B,IAAIhB,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACS,WAAW,CAAC;QACxDiC,GAAG,CAAC3yJ,EAAE,GAAG,uBAAuB;QAChC2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;QACtCo2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAAC0qG,WAAW;QAChCX,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAACgpJ,iBAAiB,CAACl0J,IAAI,CAAC;MAC3C,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAASm0J,kBAAkBA,CAAA,EAAG;IAC1B,MAAMrB,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACc,QAAQ,CAAC,CAACyB,QAAQ;IAC/D,IACI5kJ,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,IAC1CF,CAAC,CAACC,OAAO,CAAC0lD,oBAAoB,KAAK,YAAY,EACjD;MACE,CAAC,SAASugG,kBAAkBA,CAAA,EAAG;QAC3B,IAAInB,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACc,QAAQ,CAAC;QACrD4B,GAAG,CAAC3yJ,EAAE,GAAG,oBAAoB;QAC7B2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;QACnCo2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAAC+qG,QAAQ;QAC7BhB,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAACmmJ,QAAQ,CAACrxJ,IAAI,CAAC;MAClC,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAASq0J,uBAAuBA,CAAA,EAAG;IAC/B,MAAMvB,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACU,KAAK,CAAC,CAAC6B,QAAQ;IAC5D,IACI5kJ,CAAC,CAACC,OAAO,CAACgjC,SAAS,IACnBjjC,CAAC,CAACC,OAAO,CAACmrC,kBAAkB,KAAK,mBAAmB,IACpD,CAACprC,CAAC,CAACC,OAAO,CAAC0vC,iBAAiB,EAC9B;MACE,CAAC,SAASy2G,uBAAuBA,CAAA,EAAG;QAChC,IAAIrB,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACU,KAAK,CAAC;QAClDgC,GAAG,CAAC3yJ,EAAE,GAAG,iBAAiB;QAC1B2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;QAChCo2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAAC2qG,KAAK;QAC1BZ,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QAEjB,SAASsB,WAAWA,CAAA,EAAG;UACnB;UACAC,4BAA4B,CAACx0J,IAAI,CAAC,CAAC;QACvC;QAEAswJ,UAAU,CAACplJ,IAAI,CAACqpJ,WAAW,CAAC;MAChC,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAASE,mBAAmBA,CAAA,EAAG;IAC3B,MAAM3B,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACW,SAAS,CAAC,CAAC4B,QAAQ;IAChE,IAAI5kJ,CAAC,CAACC,OAAO,CAACshC,cAAc,IAAIvhC,CAAC,CAACC,OAAO,CAACorC,qBAAqB,KAAK,sBAAsB,EAAE;MACxF,CAAC,SAASm7G,qBAAqBA,CAAA,EAAG;QAC9B,IAAIzB,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACW,SAAS,CAAC;QACtD+B,GAAG,CAAC3yJ,EAAE,GAAG,iBAAiB;QAC1B2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;QACpCo2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAAC4qG,SAAS;QAC9Bb,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAACypJ,eAAe,CAAC30J,IAAI,CAAC;MACzC,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAAS40J,0BAA0BA,CAAA,EAAG;IAClC,MAAM9B,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACe,gBAAgB,CAAC,CAACwB,QAAQ;IACvE,IACI,CAAC5kJ,CAAC,CAACC,OAAO,CAACwvC,aAAa,IAAIzvC,CAAC,CAACC,OAAO,CAAC+uC,KAAK,IAAI,IAAI,KAAMhvC,CAAC,CAACC,OAAO,CAACguC,oBAAoB,IAAI,IAAI,IAC/FjuC,CAAC,CAACC,OAAO,CAAC0tC,0BAA0B,KAAK,4BAA4B,EACvE;MACE,CAAC,SAASg5G,0BAA0BA,CAAA,EAAG;QACnC,IAAI5B,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACe,gBAAgB,CAAC;QAC7D2B,GAAG,CAAC3yJ,EAAE,GAAG,wBAAwB;QACjC2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;QACnCo2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAACgrG,gBAAgB;QACrCjB,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAAC4pJ,sBAAsB,CAAC90J,IAAI,CAAC;MAChD,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAAS+0J,+BAA+BA,CAAA,EAAG;IACvC,MAAMjC,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACO,qBAAqB,CAAC,CAACgC,QAAQ;IAC5E,IAAI5kJ,CAAC,CAACC,OAAO,CAAC+uC,KAAK,IAAI,IAAI,IAAIhvC,CAAC,CAACC,OAAO,CAACkvC,gBAAgB,KAAK,GAAG,EAAE;MAC/D,CAAC,SAAS23G,+BAA+BA,CAAA,EAAG;QACxC,IAAI/B,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACO,qBAAqB,CAAC;QAClEmC,GAAG,CAAC3yJ,EAAE,GAAG,6BAA6B;QACtC2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,4BAA4B,CAAC;QAC/Co2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAACwqG,qBAAqB;QAC1CT,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAAC+pJ,oBAAoB,CAACj1J,IAAI,CAAC;MAC9C,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAASk1J,+BAA+BA,CAAA,EAAG;IACvC,MAAMpC,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACM,mBAAmB,CAAC,CAACiC,QAAQ;IAC1E,IAAI5kJ,CAAC,CAACC,OAAO,CAAC+uC,KAAK,IAAI,IAAI,IAAIhvC,CAAC,CAACC,OAAO,CAACkvC,gBAAgB,KAAK,GAAG,EAAE;MAC/D,CAAC,SAAS83G,+BAA+BA,CAAA,EAAG;QACxC,IAAIlC,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACM,mBAAmB,CAAC;QAChEoC,GAAG,CAAC3yJ,EAAE,GAAG,6BAA6B;QACtC2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,4BAA4B,CAAC;QAC/Co2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAACuqG,mBAAmB;QACxCR,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAAC2lJ,mBAAmB,CAAC7wJ,IAAI,CAAC;MAC7C,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAASo1J,+BAA+BA,CAAA,EAAG;IACvC,MAAMl4G,KAAK,GACPhvC,CAAC,CAACC,OAAO,CAAC+uC,KAAK,IAAI,IAAI,IAAIhvC,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,GAAG,IAAI,GAAG,KAAK;IACxF,MAAMinJ,OAAO,GACTnnJ,CAAC,CAACC,OAAO,CAACqrC,mBAAmB,KAAK,oBAAoB,IAClDtrC,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,GACxC,IAAI,GACJ,KAAK;IACf,MAAM0kJ,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACC,qBAAqB,CAAC,CAACsC,QAAQ;IAE5E,IAAI51G,KAAK,IAAIm4G,OAAO,EAAE;MAClB,CAAC,SAASC,+BAA+BA,CAAA,EAAG;QACxC,IAAIrC,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACC,qBAAqB,CAAC;QAClEyC,GAAG,CAAC3yJ,EAAE,GAAG,6BAA6B;QACtC2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,6BAA6B,CAAC;QAChDo2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAACkqG,qBAAqB;QAC1CH,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAACqqJ,qBAAqB,CAACv1J,IAAI,CAAC;MAC/C,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAASw1J,2BAA2BA,CAAA,EAAG;IACnC,MAAM1C,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACE,iBAAiB,CAAC,CAACqC,QAAQ;IACxE,IACK5kJ,CAAC,CAACC,OAAO,CAAC+uC,KAAK,IAAI,IAAI,IAAIhvC,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,IACrEF,CAAC,CAACC,OAAO,CAACqrC,mBAAmB,KAAK,oBAAoB,IACnDtrC,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAa,EACjD;MACE,CAAC,SAASqnJ,2BAA2BA,CAAA,EAAG;QACpC,IAAIxC,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACE,iBAAiB,CAAC;QAC9DwC,GAAG,CAAC3yJ,EAAE,GAAG,mBAAmB;QAC5B2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,yBAAyB,CAAC;QAC5Co2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAACmqG,iBAAiB;QACtCJ,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAAC0vH,iBAAiB,CAAC56H,IAAI,CAAC;MAC3C,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAAS01J,2BAA2BA,CAAA,EAAG;IACnC,MAAM5C,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACG,iBAAiB,CAAC,CAACoC,QAAQ;IACxE,IACK5kJ,CAAC,CAACC,OAAO,CAAC+uC,KAAK,IAAI,IAAI,IAAIhvC,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,IACrEF,CAAC,CAACC,OAAO,CAACqrC,mBAAmB,KAAK,oBAAoB,IACnDtrC,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAa,EACjD;MACE,CAAC,SAASqnJ,2BAA2BA,CAAA,EAAG;QACpC,IAAIxC,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACG,iBAAiB,CAAC;QAC9DuC,GAAG,CAAC3yJ,EAAE,GAAG,mBAAmB;QAC5B2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,yBAAyB,CAAC;QAC5Co2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAACoqG,iBAAiB;QACtCL,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAACyqJ,iBAAiB,CAAC31J,IAAI,CAAC;MAC3C,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAAS41J,sBAAsBA,CAAA,EAAG;IAC9B,MAAM9C,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACI,YAAY,CAAC,CAACmC,QAAQ;IACnE,IACK5kJ,CAAC,CAACC,OAAO,CAAC+uC,KAAK,IAAI,IAAI,IAAIhvC,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,IACrEF,CAAC,CAACC,OAAO,CAAC28C,sBAAsB,IAAI,eAAe,IAChD58C,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAa,EACjD;MACE,CAAC,SAASynJ,sBAAsBA,CAAA,EAAG;QAC/B,IAAI5C,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACI,YAAY,CAAC;QACzDsC,GAAG,CAAC3yJ,EAAE,GAAG,cAAc;QACvB2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;QACvCo2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAACqqG,YAAY;QACjCN,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAAC4qJ,kBAAkB,CAAC91J,IAAI,CAAC;MAC5C,CAAC,EAAE,CAAC;IACR;EACJ;EAEA,SAAS+1J,wBAAwBA,CAAA,EAAG;IAChC,MAAMjD,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACoB,cAAc,CAAC,CAACmB,QAAQ;IACrE,IACK5kJ,CAAC,CAACC,OAAO,CAAC+uC,KAAK,IAAI,IAAI,IAAIhvC,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,IACrEF,CAAC,CAACC,OAAO,CAAC28C,sBAAsB,IAAI,eAAe,IAChD58C,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAa,EACjD;MACE,CAAC,SAAS4nJ,wBAAwBA,CAAA,EAAG;QACjC,IAAI/C,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACoB,cAAc,CAAC;QAC3DsB,GAAG,CAAC3yJ,EAAE,GAAG,gBAAgB;QACzB2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,sBAAsB,CAAC;QACzCo2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAACqrG,cAAc;QACnCtB,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAAC+qJ,oBAAoB,CAACj2J,IAAI,CAAC;MAC9C,CAAC,EAAE,CAAC;IACR;EACJ;EAEA,SAASk2J,eAAeA,CAAA,EAAG;IACvB,MAAMpD,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACkB,KAAK,CAAC,CAACqB,QAAQ;IAC5D,IACI5kJ,CAAC,CAACC,OAAO,CAACsjD,SAAS,IACnBvjD,CAAC,CAACC,OAAO,CAACC,eAAe,IAAI,YAAY,IACzCF,CAAC,CAACC,OAAO,CAAC8uC,wBAAwB,IAAI,IAAI,EAC5C;MACE,CAAC,SAASk5G,iBAAiBA,CAAA,EAAG;QAC1B,IAAIlD,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACkB,KAAK,CAAC;QAClDwB,GAAG,CAAC3yJ,EAAE,GAAG,0BAA0B;QACnC2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;QAChCo2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAACmrG,KAAK;QAC1BpB,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QAEjB3C,UAAU,CAACplJ,IAAI,CAACkrJ,oBAAoB,CAACp2J,IAAI,CAAC;MAC9C,CAAC,EAAE,CAAC;IACR;EACJ;EACA,SAASq2J,oBAAoBA,CAAA,EAAG;IAC5B,MAAMvD,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACgB,iBAAiB,CAAC,CAACuB,QAAQ;IACxE,IAAI,CAAC5kJ,CAAC,CAACC,OAAO,CAAC2wC,QAAQ,EAAE;IACzB,IAAI,CAAC2S,SAAS,EAAE;MACZ,CAAC,SAAS6kG,mBAAmBA,CAAA,EAAG;QAC5B,IAAIrD,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACgB,iBAAiB,CAAC;QAC9D0B,GAAG,CAAC3yJ,EAAE,GAAG,uBAAuB;QAChC2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,yBAAyB,CAAC;QAC5Co2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAACirG,iBAAiB;QACtClB,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAACqrJ,eAAe,CAACv2J,IAAI,CAAC;MACzC,CAAC,EAAE,CAAC;IACR;EACJ;EAEA,SAASw2J,yBAAyBA,CAAA,EAAG;IACjC,MAAM1D,QAAQ,GAAGC,iBAAiB,CAACxC,SAAS,CAACiB,eAAe,CAAC,CAACsB,QAAQ;IACtE,IACI5kJ,CAAC,CAACC,OAAO,CAAC2rC,kCAAkC,KAAK,4BAA4B,IAAI5rC,CAAC,CAACC,OAAO,CAAC+yC,MAAM,IAAI,IAAI,EAC3G;MACE,CAAC,SAASu1G,yBAAyBA,CAAA,EAAG;QAClC,IAAIxD,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvC4yJ,GAAG,CAAClyJ,YAAY,CAAC,WAAW,EAAE+xJ,QAAQ,CAAC;QACvCG,GAAG,CAAClyJ,YAAY,CAAC,eAAe,EAAEwvJ,SAAS,CAACiB,eAAe,CAAC;QAC5DyB,GAAG,CAAC3yJ,EAAE,GAAG,2BAA2B;QACpC2yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC3Bo2J,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;QACjCo2J,GAAG,CAACh2J,SAAS,GAAGqpD,IAAI,CAACkrG,eAAe;QACpCnB,OAAO,CAACnlJ,IAAI,CAAC+nJ,GAAG,CAAC;QACjB3C,UAAU,CAACplJ,IAAI,CAACwrJ,sBAAsB,CAAC12J,IAAI,CAAC;MAChD,CAAC,EAAE,CAAC;IACR;EACJ;EAEA,SAAS22J,oBAAoBA,CAAA,EAAG;IAC5B,IAAI74J,YAAY,GAAGgC,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC;IAC1DjF,YAAY,CAACb,SAAS,GAAG,EAAE;IAE3B0R,cAAc,CAACtR,OAAO,CAACu5J,aAAa,IAAI;MACpC;MACApoJ,QAAQ,CAACqoJ,0BAA0B,CAAC,CAAC;MAErC,IAAID,aAAa,CAACE,UAAU,IAAI,iBAAiB,EAAE;QAC/C,MAAOvD,wBAAwB,CAAC,CAAC,CAAC,CAAC;MACvC;;MAEA;MACA,IAAIqD,aAAa,CAACE,UAAU,IAAI,cAAc,EAAE;QAC1C,KAAM3D,0BAA0B,CAAC,CAAC,CAAC,CAAC;MAC1C,CAAC,MACI,IAAIyD,aAAa,CAACE,UAAU,IAAI,kBAAkB,EAAE;QACpD,KAAMjE,gBAAgB,CAAC,CAAC,CAAC,CAAC;MAC/B,CAAC,MACI,IAAI+D,aAAa,CAACE,UAAU,IAAI,wBAAwB,EAAE;QAC3D,KAAM1B,+BAA+B,CAAC,CAAC,CAAC,CAAC;MAC7C,CAAC,MACI,IAAIwB,aAAa,CAACE,UAAU,IAAI,kBAAkB,EAAE;QACrD,KAAMtB,2BAA2B,CAAC,CAAC,CAAC,CAAC;MACzC,CAAC,MACI,IAAIoB,aAAa,CAACE,UAAU,IAAI,qBAAqB,EAAE;QACxD,KAAMpB,2BAA2B,CAAC,CAAC,CAAC,CAAC;MACzC,CAAC,MACI,IAAIkB,aAAa,CAACE,UAAU,IAAI,iBAAiB,EAAE;QACpD,KAAMlB,sBAAsB,CAAC,CAAC,CAAC,CAAC;MACpC,CAAC,MACI,IAAIgB,aAAa,CAACE,UAAU,IAAI,yBAAyB,EAAE;QAC5D,KAAM5B,+BAA+B,CAAC,CAAC,CAAC,CAAC;MAC7C,CAAC,MACI,IAAI0B,aAAa,CAACE,UAAU,IAAI,4BAA4B,EAAE;QAC/D,KAAMtD,qBAAqB,CAAC,CAAC,CAAC,CAAC;MACnC,CAAC,MACI,IAAIoD,aAAa,CAACE,UAAU,IAAI,yBAAyB,EAAE;QAC5D,KAAM/B,+BAA+B,CAAC,CAAC,CAAC,CAAC;MAC7C,CAAC,MACI,IAAI6B,aAAa,CAACE,UAAU,IAAI,mBAAmB,EAAE;QACtD,MAAOnD,0BAA0B,CAAC,CAAC,CAAC,CAAC;MACzC,CAAC,MACI,IAAIiD,aAAa,CAACE,UAAU,IAAI,wBAAwB,EAAE;QAC3D,MAAOhD,mBAAmB,CAAC,CAAC,CAAC,CAAC;MAClC,CAAC,MACI,IAAI8C,aAAa,CAACE,UAAU,IAAI,cAAc,EAAE;QACjD,MAAO9C,qBAAqB,CAAC,CAAC,CAAC,CAAC;MACpC,CAAC,MACI,IAAI4C,aAAa,CAACE,UAAU,IAAI,aAAa,EAAE;QAChD,MAAO3C,kBAAkB,CAAC,CAAC,CAAC,CAAC;MACjC,CAAC,MACI,IAAIyC,aAAa,CAACE,UAAU,IAAI,gBAAgB,EAAE;QACnD,MAAOzC,uBAAuB,CAAC,CAAC,CAAC,CAAC;MACtC,CAAC,MACI,IAAIuC,aAAa,CAACE,UAAU,IAAI,cAAc,EAAE;QACjD,MAAOrC,mBAAmB,CAAC,CAAC,CAAC,CAAC;MAClC,CAAC,MACI,IAAImC,aAAa,CAACE,UAAU,IAAI,mBAAmB,EAAE;QACtD,MAAOlC,0BAA0B,CAAC,CAAC,CAAC,CAAC;MACzC,CAAC,MACI,IAAIgC,aAAa,CAACE,UAAU,IAAI,0BAA0B,EAAE;QAC7D,MAAOT,oBAAoB,CAAC,CAAC,CAAC,CAAC;MACnC,CAAC,MACI,IAAIO,aAAa,CAACE,UAAU,IAAI,kBAAkB,EAAE;QACrD,MAAON,yBAAyB,CAAC,CAAC,CAAC,CAAC;MACxC,CAAC,MACI,IAAII,aAAa,CAACE,UAAU,IAAI,mBAAmB,EAAE;QACtD,MAAOf,wBAAwB,CAAC,CAAC,CAAC,CAAC;MACvC;;MAEA;MAAOG,eAAe,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,IAAIa,wBAAwB,GAAGpoJ,cAAc,CAACmjD,IAAI,CAACzxC,CAAC,IAAIA,CAAC,CAACy2I,UAAU,IAAI,iBAAiB,CAAC,IAAI1yJ,SAAS,GAAG,IAAI,GAAG,KAAK;IACtH,IAAI2yJ,wBAAwB,EAAE;MACtB,MAAOxD,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAC3C;IAEA,IAAIz1J,YAAY,GAAGgC,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC;IAC1DstJ,OAAO,CAAChzJ,OAAO,CAAC25J,MAAM,IAAI;MACtBl5J,YAAY,CAACP,WAAW,CAACy5J,MAAM,CAAC;IACpC,CAAC,CAAC;IAEF1G,UAAU,CAACjzJ,OAAO,CAAC45J,IAAI,IAAIA,IAAI,CAAC,CAAC,CAAC;EACtC;EAEA,SAASlE,iBAAiBA,CAAClB,QAAQ,EAAE;IACjC,IAAI,CAACA,QAAQ,EAAE;MACX;MACA,OAAO;QACHiB,QAAQ,EAAE;MACd,CAAC;IACL;IAEA,MAAMoE,gBAAgB,GAAGvoJ,cAAc,CAACrD,MAAM,CAC1C0rJ,MAAM,IAAItvI,QAAQ,CAACsvI,MAAM,CAACnF,QAAQ,CAAC,KAAKnqI,QAAQ,CAACmqI,QAAQ,CAC7D,CAAC,CAAC,CAAC,CAAC;IACJ,IAAIqF,gBAAgB,EAAE;MAClB,OAAO;QACHrF,QAAQ,EAAEqF,gBAAgB,CAACrF,QAAQ;QACnCiB,QAAQ,EAAEoE,gBAAgB,CAACpE,QAAQ;QACnCqE,YAAY,EACRD,gBAAgB,CAACC,YAAY,KAAK,EAAE,GAAG,IAAI,GAAG7sI,IAAI,CAACxT,KAAK,CAACogJ,gBAAgB,CAACC,YAAY,CAAC;QAC3FL,UAAU,EAAEI,gBAAgB,CAACJ,UAAU;QACvCM,WAAW,EAAEF,gBAAgB,CAACE;MAClC,CAAC;IACL,CAAC,MAAM;MACH,OAAO;QACHvF,QAAQ,EAAEA,QAAQ;QAClBiB,QAAQ,EAAE,GAAG;QACbqE,YAAY,EAAE,IAAI;QAClBL,UAAU,EAAE,IAAI;QAChBM,WAAW,EAAE;MACjB,CAAC;IACL;EACJ;EAEA,eAAeC,qBAAqBA,CAAA,EAAG;IACnC1oJ,cAAc,GAAG,CAAC,MAAM2oJ,kBAAkB,CAACvE,iBAAiB,CAAC,CAAC,EAAEwE,2BAA2B;EAC/F;EAEA,eAAeC,aAAaA,CAAA,EAAG;IAC3B7oJ,cAAc,GAAG,CAAC,MAAM2oJ,kBAAkB,CAACvE,iBAAiB,CAAC,CAAC,EAAEwE,2BAA2B;IAE3F,SAASE,UAAUA,CAAC5F,QAAQ,EAAE;MAC1B,OAAOljJ,cAAc,CAACrD,MAAM,CAAC0rJ,MAAM,IAAI;QACnC,IAAIA,MAAM,CAACnF,QAAQ,KAAKA,QAAQ,EAAE,OAAOmF,MAAM;MACnD,CAAC,CAAC,CAAC,CAAC,CAAC;IACT;IAEAL,oBAAoB,CAAC,CAAC;IAEtB,OAAO;MACHc,UAAU,EAAEA;IAChB,CAAC;EACL;EAEA,SAASz3J,IAAIA,CAAA,EAAG;IACZw0J,4BAA4B,CAAClpJ,MAAM,CAACosJ,WAAW,GAAG,GAAG;IACrDlD,4BAA4B,CAAClpJ,MAAM,CAACvD,QAAQ,GAAG,GAAG;IAClDysJ,4BAA4B,CAAClpJ,MAAM,CAAC/H,KAAK,GAAG,GAAG;IAC/C8sJ,OAAO,GAAG,EAAE;IACZC,UAAU,GAAG,EAAE;IACfkH,aAAa,CAAC,CAAC;EACnB;EAEA,OAAO;IACH5F,kBAAkB;IAClBW,eAAe;IACfJ,sBAAsB;IACtBS,gBAAgB;IAChBG,iBAAiB;IACjBsE,qBAAqB;IACrB1lG,IAAI,EAAE3xD;EACV,CAAC;AACL,CAAC,CAAE,CAAC;ACp0BJ,IAAI23J,iBAAiB,GAAG,GAAG;AAC3B,IAAIC,aAAa,GAAG,EAAE;AACtB,IAAIC,aAAa,GAAG,CAAC;AAErB,SAASC,GAAGA,CAACz3I,CAAC,EAAE;EACf,OAAOA,CAAC,GAAG,EAAE,GAAG,GAAG,GAAGA,CAAC,GAAGA,CAAC;AAC5B;AAEA,SAAS03I,QAAQA,CAAA,EAAG;EACnB,IAAI/0J,CAAC,GAAG,IAAI6T,IAAI,CAAC,CAAC;EAClB,IAAIiJ,CAAC,GAAGg4I,GAAG,CAAC90J,CAAC,CAACqgB,QAAQ,CAAC,CAAC,CAAC;EACzB,IAAI/E,CAAC,GAAGw5I,GAAG,CAAC90J,CAAC,CAACsrB,UAAU,CAAC,CAAC,CAAC;EAC3B,IAAI5O,CAAC,GAAGo4I,GAAG,CAAC90J,CAAC,CAACurB,UAAU,CAAC,CAAC,CAAC;EAC3B,IAAIypI,YAAY,GAAG,CAACl4I,CAAC,EAAExB,CAAC,CAAC,CAACuK,IAAI,CAAC,GAAG,CAAC;AACpC;AAEA,SAASovI,QAAQA,CAAA,EAAG;EACnB3pJ,MAAM,CAACvG,QAAQ,GAAG,eAAe;AAClC;AAEA,SAASmwJ,WAAWA,CAACz6J,KAAK,EAAE;EAC3B,IAAIyQ,CAAC,CAAC,mBAAmB,CAAC,CAAC0d,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE;IACjD1d,CAAC,CAAC,mBAAmB,CAAC,CACpB0d,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CACnBA,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;EAC1B,CAAC,MAAM;IACN1d,CAAC,CAAC,mBAAmB,CAAC,CACpB0d,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CACnBA,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;EACzB;AACD;AAEA,SAASusI,YAAYA,CAAA,EAAG;EACvB,IAAIjqJ,CAAC,CAAC,eAAe,CAAC,CAACm+C,GAAG,CAAC,CAAC,IAAI,sBAAsB,EAAE;IACvDn+C,CAAC,CAAC,eAAe,CAAC,CAACm+C,GAAG,CAAC,EAAE,CAAC;EAC3B;AACD;AAEA,SAAS+rG,gBAAgBA,CAAA,EAAG;EAC3B,IAAIlqJ,CAAC,CAAC,kBAAkB,CAAC,CAAC0d,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE;IAChD1d,CAAC,CAAC,kBAAkB,CAAC,CACnB0d,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CACnBA,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;IACzB1d,CAAC,CAAC,eAAe,CAAC,CAChB0d,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CACnBA,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;IACxB1d,CAAC,CAAC,iBAAiB,CAAC,CAClB0d,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CACnBA,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;IACxB1d,CAAC,CAAC,oBAAoB,CAAC,CACrB0d,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CACnBA,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;EACzB,CAAC,MAAM;IACN1d,CAAC,CAAC,kBAAkB,CAAC,CACnB0d,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CACnBA,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;IACxB1d,CAAC,CAAC,eAAe,CAAC,CAChB0d,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CACnBA,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;IACzB1d,CAAC,CAAC,iBAAiB,CAAC,CAClB0d,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CACnBA,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;IACzB1d,CAAC,CAAC,oBAAoB,CAAC,CACrB0d,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CACnBA,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;EAC1B;AACD;AAEA,SAASysI,aAAaA,CAAA,EAAG;EACxB,IAAInqJ,CAAC,CAAC,UAAU,CAAC,CAAC9Q,MAAM,IAAI,CAAC,EAAE;IAC9B8Q,CAAC,CAAC,YAAY,CAAC,CACb0d,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CACnBA,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;EACzB,CAAC,MAAM;IACN1d,CAAC,CAAC,YAAY,CAAC,CACb0d,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CACnBA,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;EAC1B;AACD;AAEA,SAAS8f,YAAYA,CAACvV,SAAS,EAAEmiI,QAAQ,EAAE;EAC1C,IAAIC,SAAS,GAAG,CAAC;EACjB,IAAIpiI,SAAS,GAAGmiI,QAAQ,IAAIA,QAAQ,IAAI,UAAU,EAAE;IACnDC,SAAS,GAAG,CAAC;EACd;EACA,OAAOA,SAAS;AACjB;AACA;AACA;AACA,SAASC,kBAAkBA,CAACC,OAAO,EAAEh7J,KAAK,EAAE;EAC3C,IAAImtC,GAAG,GAAG18B,CAAC,CAAC,GAAG,GAAGuqJ,OAAO,CAAC;EAC1B7tH,GAAG,CAAC9iB,IAAI,CAAC,CAAC;EACV5Z,CAAC,CAAC,SAAS,CAAC,CAAC4Z,IAAI,CAAC,CAAC;EACnB5Z,CAAC,CAAC,UAAU,CAAC,CAAC4Z,IAAI,CAAC,CAAC;EACpB,IAAI5Z,CAAC,CAACC,OAAO,CAAC6hC,oBAAoB,IAAI,IAAI,EAAE;IAC3C;EACD;EACA,IAAIvF,GAAG,GAAG,IAAI5zB,IAAI,CAAC,CAAC;EACpB,IAAI6hJ,gBAAgB,GAAG,EAAE;EACzBC,YAAY,GAAGzqJ,CAAC,CAAC,GAAG,GAAGuqJ,OAAO,CAAC,CAACpsG,GAAG,CAAC,CAAC;EACrCqsG,gBAAgB,GAAGC,YAAY;EAC/B,IAAIF,OAAO,CAACnyI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;IACjC,IAAIqyI,YAAY,IAAI,EAAE,EAAE;MACvBA,YAAY,GAAGC,qBAAqB,CAACD,YAAY,CAAC;MAClDzqJ,CAAC,CAACC,OAAO,CAACsqC,cAAc,GAAGkgH,YAAY;MACvCzqJ,CAAC,CAACC,OAAO,CAACuqC,aAAa,GAAG,EAAE;IAC7B;EACD;EACA,IAAI+/G,OAAO,CAACnyI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;IAChCqyI,YAAY,GAAGC,qBAAqB,CAACD,YAAY,CAAC;IAClDzqJ,CAAC,CAACC,OAAO,CAACuqC,aAAa,GAAGigH,YAAY;IACtCzqJ,CAAC,CAACC,OAAO,CAACsqC,cAAc,GAAG,EAAE;EAC9B;EACAogH,iBAAiB,CAACjuH,GAAG,EAAEntC,KAAK,CAAC;EAC7B,OAAO,KAAK;AACb;AAEA,SAASq7J,iBAAiBA,CAACL,OAAO,EAAEM,SAAS,EAAE;EAC9C,IAAIA,SAAS,CAAC37J,MAAM,GAAG,CAAC,EAAE;IACzB,OAAO,KAAK;EACb;EACA,IAAI47J,KAAK,GAAG,EAAE;EACd,IAAIC,MAAM,GAAG,EAAE;EACf,IAAIC,OAAO,GAAG,EAAE;EAEhB,IAAIT,OAAO,CAACnyI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;IAChC0yI,KAAK,GAAGP,OAAO,CAAC9zJ,SAAS,CAAC,CAAC,CAAC;IAC5Bs0J,MAAM,GAAG/qJ,CAAC,CAAC,SAAS,GAAG8qJ,KAAK,CAAC,CAC3B3sG,GAAG,CAAC,CAAC,CACL3hD,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;IAClBuuJ,MAAM,GAAGL,qBAAqB,CAACK,MAAM,CAAC;IACtCC,OAAO,GAAGhrJ,CAAC,CAAC,GAAG,GAAGuqJ,OAAO,CAAC,CACxBpsG,GAAG,CAAC,CAAC,CACL3hD,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;IAClBwuJ,OAAO,GAAGN,qBAAqB,CAACM,OAAO,CAAC;EACzC;EAEA,IAAIT,OAAO,CAACnyI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;IAC/B0yI,KAAK,GAAGP,OAAO,CAAC9zJ,SAAS,CAAC,CAAC,CAAC;IAC5Bu0J,OAAO,GAAGhrJ,CAAC,CAAC,UAAU,GAAG8qJ,KAAK,CAAC,CAC7B3sG,GAAG,CAAC,CAAC,CACL3hD,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;IAClBwuJ,OAAO,GAAGN,qBAAqB,CAACM,OAAO,CAAC;IACxCD,MAAM,GAAG/qJ,CAAC,CAAC,GAAG,GAAGuqJ,OAAO,CAAC,CACvBpsG,GAAG,CAAC,CAAC,CACL3hD,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;IAClBuuJ,MAAM,GAAGL,qBAAqB,CAACK,MAAM,CAAC;EACvC;EACAA,MAAM,GAAGA,MAAM,CAACvuJ,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;EAChCwuJ,OAAO,GAAGA,OAAO,CAACxuJ,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;EAClC,IAAIwuJ,OAAO,CAAC97J,MAAM,GAAG,CAAC,EAAE,OAAO,IAAI;EACnC,IAAI87J,OAAO,GAAGD,MAAM,IAAIC,OAAO,IAAI,UAAU,IAAIA,OAAO,IAAI,SAAS,IAAIA,OAAO,IAAI,OAAO,EAAE;IAC5FtB,aAAa,GAAG,2CAA2C;IAC3DtpJ,MAAM,CAAC6qJ,gBAAgB,GAAG,KAAK,CAAC,CAAC;IACjC,OAAO,KAAK;EACb;EACA,OAAO,IAAI;AACZ;AAEA,SAASC,iBAAiBA,CAACC,KAAK,EAAEvjJ,KAAK,EAAE;EACxC,IAAI80B,GAAG,GAAG18B,CAAC,CAAC,GAAG,GAAGmrJ,KAAK,CAAC;IACvB54J,IAAI,GAAGmqC,GAAG,CAACnqC,IAAI,CAAC,CAAC;EAClBmqC,GAAG,CAACnqC,IAAI,CAAC,EAAE,CAAC;EACZ,IAAI64J,OAAO,GAAG,oDAAoD;EAClE;EACA,KAAK,IAAItxJ,CAAC,IAAIkG,CAAC,CAACC,OAAO,CAACyoC,SAAS,EAAE;IAClC,IAAI1oC,CAAC,CAACC,OAAO,CAACooC,UAAU,IAAIroC,CAAC,CAACC,OAAO,CAAC0oC,WAAW,CAAC7uC,CAAC,CAAC,EAAE;MACrDsxJ,OAAO,GAAGA,OAAO,GAAG,gBAAgB,GAAGprJ,CAAC,CAACC,OAAO,CAAC0oC,WAAW,CAAC7uC,CAAC,CAAC,GAAG,GAAG,GAAGkG,CAAC,CAACC,OAAO,CAACyoC,SAAS,CAAC5uC,CAAC,CAAC,GAAG,WAAW;IAC7G;EACD;EACA;EACA,KAAK,IAAIA,CAAC,IAAIkG,CAAC,CAACC,OAAO,CAACyoC,SAAS,EAAE;IAClC,IAAI1oC,CAAC,CAACC,OAAO,CAACooC,UAAU,IAAIroC,CAAC,CAACC,OAAO,CAAC0oC,WAAW,CAAC7uC,CAAC,CAAC,EAAE;MACrDsxJ,OAAO,GAAGA,OAAO,GAAG,gBAAgB,GAAGprJ,CAAC,CAACC,OAAO,CAAC0oC,WAAW,CAAC7uC,CAAC,CAAC,GAAG,GAAG,GAAGkG,CAAC,CAACC,OAAO,CAACyoC,SAAS,CAAC5uC,CAAC,CAAC,GAAG,WAAW;IAC7G;EACD;EACAsxJ,OAAO,GAAGA,OAAO,GAAG,WAAW;EAC/BprJ,CAAC,CAACorJ,OAAO,CAAC,CACR9oJ,QAAQ,CAACo6B,GAAG,CAAC,CACbyhB,GAAG,CAAC5rD,IAAI,CAAC,CACT8N,KAAK,CAAC,CAAC,CACPgrJ,MAAM,CAAC,YAAW;IAClB,IAAIC,OAAO,GAAGtrJ,CAAC,CAAC,+BAA+B,CAAC,CAACzN,IAAI,CAAC,CAAC;IACvD,IAAI6vH,QAAQ,GAAGpiH,CAAC,CAAC,+BAA+B,CAAC,CAACm+C,GAAG,CAAC,CAAC;IACvDzhB,GAAG,CAACnqC,IAAI,CAAC+4J,OAAO,CAAC,CAACtrB,IAAI,CAAC,OAAO,EAAE5d,QAAQ,CAAC;EAC1C,CAAC,CAAC;AACJ;AAEA,SAASmpC,aAAaA,CAACJ,KAAK,EAAE;EAC7B,IAAI54J,IAAI,GAAGyN,CAAC,CAAC,GAAG,GAAGmrJ,KAAK,CAAC,CAAC54J,IAAI,CAAC,CAAC;EAChCyN,CAAC,CAAC,GAAG,GAAGmrJ,KAAK,CAAC,CAAC54J,IAAI,CAAC,EAAE,CAAC;EACvByN,CAAC,CAAC,4BAA4B,GAAGzN,IAAI,GAAG,oDAAoD,CAAC,CAC3F+P,QAAQ,CAACtC,CAAC,CAAC,GAAG,GAAGmrJ,KAAK,CAAC,CAAC,CACxBhtG,GAAG,CAAC5rD,IAAI,CAAC,CACT2B,MAAM,CAAC,CAAC,CACR0lB,IAAI,CAAC,YAAW;IAChB,IAAI0xI,OAAO,GAAGtrJ,CAAC,CAAC,UAAU,CAAC,CAACggI,IAAI,CAAC,OAAO,CAAC;IACzChgI,CAAC,CAAC,GAAG,GAAGmrJ,KAAK,CAAC,CAAC54J,IAAI,CAAC+4J,OAAO,CAAC,CAAC,CAAC;EAC/B,CAAC,CAAC;AACJ;AAEA,SAASE,kBAAkBA,CAACtzG,GAAG,EAAEuzG,WAAW,EAAEC,WAAW,EAAEC,mBAAmB,EAAE;EAC/E,IAAIx9I,MAAM,GAAG,CAAC,CAAC;IACd3f,KAAK,GAAG,CAAC;IACTo9J,aAAa,GAAG,CAAC;EAClB5rJ,CAAC,CAAC,QAAQ,EAAEk4C,GAAG,CAAC,CAACf,IAAI,CAAC,YAAW;IAChC3oD,KAAK,EAAE;IACP,IAAIsxG,EAAE,GAAG9/F,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAACzN,IAAI,CAAC,CAAC;MAC5Bs5J,GAAG,GAAG7rJ,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAACzN,IAAI,CAAC,CAAC;MAC3Bu5J,UAAU,GAAG9rJ,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAACzN,IAAI,CAAC,CAAC;MACzCw5J,SAAS,GAAG/rJ,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAACzN,IAAI,CAAC,CAAC;MACvC0oG,QAAQ,GAAG,CAAC6wD,UAAU,EAAEC,SAAS,CAAC,CAACpxI,IAAI,CAAC,GAAG,CAAC;IAC7C,IAAI,CAACxM,MAAM,CAAC8sF,QAAQ,CAAC,EAAE9sF,MAAM,CAAC8sF,QAAQ,CAAC,GAAG,CAAC;IAC3C9sF,MAAM,CAAC8sF,QAAQ,CAAC,EAAE;EACnB,CAAC,CAAC;EACFwwD,WAAW,CAACl5J,IAAI,CAAC/D,KAAK,CAAC;EACvB,IAAIw9J,KAAK,GAAGt7I,MAAM,CAAC8B,IAAI,CAACrE,MAAM,CAAC;EAC/B;EACA69I,KAAK,CAAC78J,OAAO,CAAC,UAASuI,IAAI,EAAE;IAC5Bk0J,aAAa,EAAE;IACf,IAAI38D,EAAE,GAAGjvF,CAAC,CAAC,MAAM,CAAC,CAACzN,IAAI,CAACmF,IAAI,GAAG,KAAK,GAAGyW,MAAM,CAACzW,IAAI,CAAC,CAAC;IACpDg0J,WAAW,CAACO,MAAM,CAACh9D,EAAE,CAAC;EACvB,CAAC,CAAC;EACF08D,mBAAmB,CAACp5J,IAAI,CAACq5J,aAAa,CAAC;AACxC;AAEA,SAASM,iBAAiBA,CAAA,EAAG;EAC5B,IAAIptJ,OAAO,GAAGkB,CAAC,CAAC,OAAO,CAAC,CACtBo8C,QAAQ,CAAC,cAAc,CAAC,CACxB1+B,GAAG,CAAC;IACJuiC,eAAe,EAAE;EAClB,CAAC,CAAC,CACD39C,QAAQ,CAACtC,CAAC,CAAC,MAAM,CAAC,CAAC;EAErBA,CAAC,CAAC2+C,IAAI,CAAC;IACNhsD,IAAI,EAAE,KAAK;IACXoN,GAAG,EAAE,oCAAoC,GAAG,CAAC,IAAI4I,IAAI,CAAC,CAAC;IACvDwvC,OAAO,EAAE,SAAAA,CAASg0G,YAAY,EAAEjgJ,MAAM,EAAE8yC,GAAG,EAAE;MAC5C;MACA,IAAIksD,IAAI,GAAGlrG,CAAC,CAACmsJ,YAAY,CAAC;MAC1BnK,UAAU,CAACoK,oBAAoB,CAAC,UAAS9L,GAAG,EAAE3rJ,IAAI,EAAE;QACnDmK,OAAO,CACLy5F,KAAK,CAAC,YAAW;UACjBv4F,CAAC,CAAC,IAAI,CAAC,CAACtR,MAAM,CAAC,CAAC;QACjB,CAAC,CAAC,CACDu9J,MAAM,CAAC/gD,IAAI,CAAC;QAEdA,IAAI,CACF3S,KAAK,CAAC,UAASpkG,CAAC,EAAE;UAClBA,CAAC,CAAC8I,eAAe,CAAC,CAAC;QACpB,CAAC,CAAC,CACDkhB,IAAI,CAAC,QAAQ,EAAE,YAAW;UAC1Brf,OAAO,CAACpQ,MAAM,CAAC,CAAC;QACjB,CAAC,CAAC;QACHiG,IAAI,CAACxF,OAAO,CAAC,UAAS+vC,IAAI,EAAE;UACtB,IAAI+vD,EAAE,GAAGjvF,CAAC,CAAC,MAAM,CAAC,CAACzN,IAAI,CAAC,CAAC2sC,IAAI,CAAC6sH,SAAS,EAAE7sH,IAAI,CAAC4sH,UAAU,GAAE,IAAI,GAAC5sH,IAAI,CAACmtH,OAAO,GAAC,GAAG,CAAC,CAAC1xI,IAAI,CAAC,IAAI,CAAC,CAAC;UACjGs0E,EAAE,CAACsJ,KAAK,CAAC,YAAW;YACnBv4F,CAAC,CAACC,OAAO,CAACk/B,MAAM,GAAGD,IAAI,CAACmtH,OAAO;YAC/B;YACAC,iBAAiB,CAACptH,IAAI,CAACmtH,OAAO,CAAC;YAC/BnhD,IAAI,CAAC54E,OAAO,CAAC,QAAQ,CAAC;UACvB,CAAC,CAAC;UACFtyB,CAAC,CAAC,gBAAgB,CAAC,CAACisJ,MAAM,CAACh9D,EAAE,CAAC;QAC/B,CAAC,CAAC;MAEH,CAAC,CAAC;MACFs9D,QAAQ,CAACpsH,UAAU,CAACrhC,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IACD6B,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;MACnC;IAAA;EAEF,CAAC,CAAC;EACF;AACD;AAEA,SAAS6rJ,WAAWA,CAAClnJ,GAAG,EAAE;EACzB,IAAImnJ,QAAQ,GAAGnnJ,GAAG,CAAConJ,KAAK,GAAGpnJ,GAAG,CAAConJ,KAAK,GAAGn9J,KAAK,CAAC0oB,OAAO;EACpD,IAAIw0I,QAAQ,GAAG,EAAE,KAAKA,QAAQ,GAAG,EAAE,IAAIA,QAAQ,GAAG,EAAE,CAAC,EAAE,OAAO,KAAK;EAEnE,OAAO,IAAI;AACZ;AAEA,SAASE,iBAAiBA,CAACh0I,IAAI,EAAE;EAChCA,IAAI,GAAG,IAAIhQ,IAAI,CAACgQ,IAAI,CAAC;EACrBA,IAAI,GAAG,CAAC,GAAG,IAAIA,IAAI,CAAC9D,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE1W,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAGwa,IAAI,CAAC7D,OAAO,CAAC,CAAC,EAAE3W,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGwa,IAAI,CAAC/D,WAAW,CAAC,CAAC;EAClH,OAAO+D,IAAI;AACZ;AAEA,SAASi0I,gBAAgBA,CAACzmI,IAAI,EAAE;EAC/B,IAAI/Q,IAAI,GAAG+Q,IAAI,CAAC9N,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;EAC5B,IAAI8N,IAAI,CAAC9N,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI8N,IAAI,CAAC9N,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE;IACrDw0I,KAAK,GAAG1mI,IAAI,CAAC9N,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE;IAC9B;IACA8N,IAAI,GAAGA,IAAI,CAAC3pB,OAAO,CAAC2pB,IAAI,CAAC1vB,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAGo2J,KAAK,CAAC;EACvD,CAAC,MAAM,IAAI1mI,IAAI,CAAC9N,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE;IACnCw0I,KAAK,GAAG1mI,IAAI,CAAC9N,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE;IAC9B8N,IAAI,GAAGA,IAAI,CAAC3pB,OAAO,CAAC2pB,IAAI,CAAC1vB,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEo2J,KAAK,CAAC;IAChD;EACD,CAAC,MAAM,IAAI1mI,IAAI,CAAC9N,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE;IAClC8N,IAAI,GAAGA,IAAI,CAAC3pB,OAAO,CAAC2pB,IAAI,CAAC1vB,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7C;EACD;EACA;EACA0vB,IAAI,GAAGA,IAAI,CAAChoB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;EACvB;EACA,IAAIiX,IAAI,IAAI,EAAE,EAAE;IACf+Q,IAAI,GAAGA,IAAI,GAAG,KAAK;EACpB,CAAC,MAAM;IACNA,IAAI,GAAGA,IAAI,GAAG,KAAK;EACpB;EACA,OAAOA,IAAI;AACZ;AAEA,SAAS2mI,uBAAuBA,CAACt5J,KAAK,EAAE;EACvC,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK0C,SAAS,EAAE;IAC1C;IACA,IAAI1C,KAAK,CAAC4kB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI5kB,KAAK,CAAC4kB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACzD;MACA,OAAO5kB,KAAK;IACb,CAAC,MAAM;MACN,IAAIA,KAAK,CAACtE,MAAM,IAAI,CAAC,EAAE;QACtB;QACA,IAAI62B,IAAI,GAAGvyB,KAAK,CAACiD,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,IAAImxB,OAAO,GAAGp0B,KAAK,CAACiD,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,IAAIs2J,UAAU,GAAG,IAAI,CAAC,CAAC;;QAEvB,IAAIhnI,IAAI,IAAI,EAAE,EAAE;UACf;UACAgnI,UAAU,GAAG,IAAI;QAClB;QACA,IAAIhnI,IAAI,IAAI,CAAC,EAAE;UACd;UACAA,IAAI,GAAG,EAAE;QACV;QACA,IAAIA,IAAI,GAAG,EAAE,EAAE;UACd;UACAA,IAAI,GAAGA,IAAI,GAAG,EAAE;UAChB,IAAIA,IAAI,GAAG,EAAE,EAAE;YACdA,IAAI,GAAG,GAAG,GAAGA,IAAI;UAClB;UACAgnI,UAAU,GAAG,IAAI;QAClB;QACA,OAAOhnI,IAAI,GAAG,GAAG,GAAG6B,OAAO,GAAG,GAAG,GAAGmlI,UAAU,CAAC,CAAC;MACjD,CAAC,MAAM;QACN;QACA,OAAOv5J,KAAK;MACb;IACD;EACD;AACD;AAEA,SAASw5J,0BAA0BA,CAACh/I,IAAI,EAAE;EACzC,IAAIoH,IAAI,GAAGpH,IAAI,CAACoK,OAAO,CAAC,KAAK,CAAC;EAC9BpK,IAAI,GAAGA,IAAI,CAACxR,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;EAClC,IAAIwR,IAAI,CAACoK,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;IAC9BpK,IAAI,GAAGA,IAAI,CAACxR,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;EAClC;EACA,IAAIwR,IAAI,CAACoK,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;IAC9BpK,IAAI,GAAGA,IAAI,CAACxR,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;EACjC;EACA,IAAIwR,IAAI,CAACoK,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;IAC5BpK,IAAI,GAAGA,IAAI,CAACxR,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EAC/B;EACA,IAAIwR,IAAI,CAACoK,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;IAC5BpK,IAAI,GAAGA,IAAI,CAACxR,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;EAC9B;EACA,IAAIwR,IAAI,CAACoK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;IAC7BpK,IAAI,GAAGA,IAAI,CAACxR,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EAC/B;EACAwR,IAAI,GAAGA,IAAI,CAACxR,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EAC9BwR,IAAI,GAAGA,IAAI,CAACxR,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;EAC7BwR,IAAI,GAAGA,IAAI,CAACxR,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EAE9BwR,IAAI,GAAGA,IAAI;EACX,OAAOA,IAAI;AACZ;;AAEA;AACA,SAASi/I,gBAAgBA,CAACC,SAAS,EAAE;EACpC,IAAIC,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;EAChC,IAAItsI,UAAU,GAAG,IAAIlY,IAAI,CAAC,CAAC;EAC3B,IAAIukJ,SAAS,IAAIh3J,SAAS,EAAE;IAC3B,IAAIg3J,SAAS,GAAG,IAAIvkJ,IAAI,CAAC,CAAC;EAC3B;EACA,IAAIykJ,UAAU,GAAG,IAAIzkJ,IAAI,CAACukJ,SAAS,CAAC;EAEpC,OAAOt8I,IAAI,CAACuC,KAAK,CAAC,CAAC0N,UAAU,CAAC7F,OAAO,CAAC,CAAC,GAAGoyI,UAAU,CAACpyI,OAAO,CAAC,CAAC,IAAImyI,MAAM,CAAC;AAC1E;AAEA,SAASE,yBAAyBA,CAAC10I,IAAI,EAAE;EACxC,IAAIgxG,OAAO,GAAG,IAAIhhH,IAAI,CAACgQ,IAAI,CAAC;EAC5BA,IAAI,GAAGgxG,OAAO,CAAC/0G,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI+0G,OAAO,CAAC90G,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG80G,OAAO,CAAC70G,OAAO,CAAC,CAAC;EACvF,OAAO6D,IAAI;AACZ;AAEA,SAAS20I,wBAAwBA,CAAC9zG,SAAS,EAAE;EAC5C,IAAIA,SAAS,IAAI,EAAE,EAAE;IACpB,OAAO,MAAM;EACd;EACA,IAAIrzB,IAAI,GAAGqzB,SAAS;EACpB,IAAI7xB,KAAK,GAAGnO,QAAQ,CAAC2M,IAAI,CAACzP,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;EACjD,IAAIkR,OAAO,GAAGpO,QAAQ,CAAC2M,IAAI,CAACzP,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;EACnD,IAAI62I,IAAI,GAAGpnI,IAAI,CAACzP,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EACnC,IAAI62I,IAAI,IAAI,IAAI,IAAI5lI,KAAK,GAAG,EAAE,EAAEA,KAAK,GAAGA,KAAK,GAAG,EAAE;EAClD,IAAI4lI,IAAI,IAAI,IAAI,IAAI5lI,KAAK,IAAI,EAAE,EAAEA,KAAK,GAAGA,KAAK,GAAG,EAAE;EACnD,IAAI6lI,MAAM,GAAG7lI,KAAK,CAAC7U,QAAQ,CAAC,CAAC;EAC7B,IAAI26I,QAAQ,GAAG7lI,OAAO,CAAC9U,QAAQ,CAAC,CAAC;EACjC,IAAI6U,KAAK,GAAG,EAAE,EAAE6lI,MAAM,GAAG,GAAG,GAAGA,MAAM;EACrC,IAAI5lI,OAAO,GAAG,EAAE,EAAE6lI,QAAQ,GAAG,GAAG,GAAGA,QAAQ;EAC3C;EACA,OAAO,CAACD,MAAM,EAAEC,QAAQ,EAAE,IAAI,CAAC,CAAC9yI,IAAI,CAAC,GAAG,CAAC;AAC1C;;AAEA;AACA,SAAS+vI,qBAAqBA,CAAClxG,SAAS,EAAE;EACzC,IAAIhyB,IAAI,GAAG,EAAE;EACb,IAAIzB,IAAI,GAAG,EAAE;EACb,IAAIC,MAAM,GAAG,EAAE;EACf,IAAI0nI,YAAY,GAAG,EAAE;EACrB,IAAIl0G,SAAS,CAACtqD,MAAM,GAAG,CAAC,IAAIsqD,SAAS,IAAI,EAAE,EAAE;IAC5CA,SAAS,GAAG,GAAG,GAAGA,SAAS;EAC5B;EACA;EACA,KAAK,IAAI1/C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0/C,SAAS,CAACtqD,MAAM,EAAE4K,CAAC,EAAE,EAAE;IAC1C,IAAIsZ,KAAK,CAAComC,SAAS,CAAClmC,MAAM,CAACxZ,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI0/C,SAAS,CAAClmC,MAAM,CAACxZ,CAAC,CAAC,IAAI,GAAG,EAAE;MACtE,IAAIA,CAAC,GAAG,CAAC,EAAE;QACVisB,IAAI,GAAGA,IAAI,GAAGyzB,SAAS,CAAClmC,MAAM,CAACxZ,CAAC,CAAC;MAClC;MAEA,IAAIA,CAAC,IAAI,CAAC,IAAIA,CAAC,IAAI,CAAC,EAAE;QACrBksB,MAAM,GAAGA,MAAM,GAAGwzB,SAAS,CAAClmC,MAAM,CAACxZ,CAAC,CAAC;MACtC;IACD;IAEA,IAAI0/C,SAAS,CAAClmC,MAAM,CAACxZ,CAAC,CAAC,IAAI,GAAG,IAAI0/C,SAAS,CAAClmC,MAAM,CAACxZ,CAAC,CAAC,IAAI,GAAG,IAAI0/C,SAAS,CAAClmC,MAAM,CAACxZ,CAAC,CAAC,IAAI,GAAG,EAAE;MAC3F0tB,IAAI,GAAGA,IAAI,GAAGgyB,SAAS,CAAClmC,MAAM,CAACxZ,CAAC,CAAC;IAClC;EACD;;EAEA;EACA,IAAI0tB,IAAI,IAAI,IAAI,IAAIzB,IAAI,IAAI,IAAI,EAAE;IACjCA,IAAI,GAAG,IAAI;EACZ;;EAEA;EACA,IAAIyB,IAAI,IAAI,IAAI,EAAE;IACjB,IAAIzB,IAAI,IAAI,IAAI,EAAE;MACjB,IAAIA,IAAI,IAAI,IAAI,EAAE;QACjB,IAAI5T,CAAC,GAAG,CAAC4T,IAAI;QACb5T,CAAC,GAAGA,CAAC,GAAG,EAAE;QACV4T,IAAI,GAAGpR,MAAM,CAACxC,CAAC,CAAC;MACjB;IACD;EACD;;EAEA;EACAu7I,YAAY,GAAG3nI,IAAI,GAAG,GAAG,GAAGC,MAAM,GAAG,KAAK;EAE1C,OAAO0nI,YAAY;AACpB;;AAEA;AACA,SAASC,iBAAiBA,CAACl4J,KAAK,EAAEm4J,cAAc,EAAEC,YAAY,EAAE;EAC/D,IAAIp4J,KAAK,CAACk4J,iBAAiB,EAAE;IAC5Bl4J,KAAK,CAAC4K,KAAK,CAAC,CAAC;IACb5K,KAAK,CAACk4J,iBAAiB,CAACC,cAAc,EAAEC,YAAY,CAAC;EACtD,CAAC,MAAM,IAAIp4J,KAAK,CAACq4J,eAAe,EAAE;IACjC,IAAIC,KAAK,GAAGt4J,KAAK,CAACq4J,eAAe,CAAC,CAAC;IACnCC,KAAK,CAACC,QAAQ,CAAC,IAAI,CAAC;IACpBD,KAAK,CAACE,OAAO,CAAC,WAAW,EAAEJ,YAAY,CAAC;IACxCE,KAAK,CAACG,SAAS,CAAC,WAAW,EAAEN,cAAc,CAAC;IAC5CG,KAAK,CAAC75J,MAAM,CAAC,CAAC;EACf;AACD;AAEA,SAASi6J,aAAaA,CAAC14J,KAAK,EAAE6F,GAAG,EAAE;EAClCqyJ,iBAAiB,CAACl4J,KAAK,EAAE6F,GAAG,EAAEA,GAAG,CAAC;AACnC;AAEA,SAAS8yJ,iBAAiBA,CAAC36J,QAAQ,EAAE;EACpC,IAAIoG,QAAQ,CAACmiC,QAAQ,KAAK,QAAQ,IAAIniC,QAAQ,CAACoiC,QAAQ,KAAK,WAAW,EAAE;IACxE,IAAIld,SAAS,CAAC6c,WAAW,EAAE;MAC1B7c,SAAS,CAAC6c,WAAW,CAACC,kBAAkB,CAACpoC,QAAQ,EAAEA,QAAQ,EAAE;QAAEu3J,OAAO,EAAE;MAAK,CAAC,CAAC;IAChF,CAAC,MAAM;MACNv3J,QAAQ,CAAC,CAAC;IACX;EACD;AACD;;AAEA;AACA,SAAS46J,eAAeA,CAACC,MAAM,EAAE;EAChC,IAAIC,IAAI,GAAGD,MAAM;EACjB,IAAIE,iBAAiB,GAAGxuJ,CAAC,CAAC,mBAAmB,CAAC,CAACm+C,GAAG,CAAC,CAAC;EACpD,IAAIswG,QAAQ,GAAG,GAAG,GAAGzuJ,CAAC,CAAC,UAAU,CAAC,CAACggI,IAAI,CAAC,QAAQ,CAAC;EACjD,IAAIwuB,iBAAiB,CAACt/J,MAAM,GAAG,CAAC,EAAE;IACjCs/J,iBAAiB,GAAGA,iBAAiB,GAAG,KAAK;EAC9C,CAAC,MAAM;IACNA,iBAAiB,GAAGA,iBAAiB,CAAC/3J,SAAS,CAAC,CAAC,EAAE+3J,iBAAiB,CAACt/J,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,GAAGs/J,iBAAiB,CAACrwJ,KAAK,CAAC,CAAC,CAAC,CAAC;EACrH;EACA,IAAIqwJ,iBAAiB,CAACt/J,MAAM,GAAG,CAAC,EAAE;IACjCs/J,iBAAiB,GAAG,GAAG,GAAGA,iBAAiB;EAC5C;EACAA,iBAAiB,GAAGA,iBAAiB,GAAG,GAAG,GAAGD,IAAI;EAClD,IAAI74J,IAAI,GAAGsK,CAAC,CAAC,UAAU,CAAC,CAACrL,IAAI,CAAC,MAAM,CAAC;EACrC,IAAI+5J,SAAS,GAAGh5J,IAAI,CAACg5J,SAAS;EAC9B,IAAI9mI,OAAO,GAAG4mI,iBAAiB,CAACz7I,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAACA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC3D,IAAI4U,KAAK,GAAG6mI,iBAAiB,CAACz7I,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC3C,IAAI27I,SAAS,IAAI,CAAC,IAAIA,SAAS,IAAIx4J,SAAS,EAAE;IAC7C,IAAIsjB,QAAQ,CAACoO,OAAO,EAAE,EAAE,CAAC,GAAG8mI,SAAS,IAAI,CAAC,EAAE;MAC3C,OAAO1uJ,CAAC,CAACsjF,EAAE,CAACqrE,OAAO,CAAC;QACnB3sJ,IAAI,EAAEtM,IAAI,CAACk5J,gBAAgB;QAC3BC,SAAS,EAAE,IAAI;QACfC,WAAW,EAAE,KAAK;QAClBhwC,OAAO,EAAE,CACR;UACCvsH,IAAI,EAAE,IAAI;UACVkB,QAAQ,EAAE,SAAAA,CAAA,EAAW,CAAC;QACvB,CAAC;MAEH,CAAC,CAAC;IACH;EACD;EACA,IAAI+lB,QAAQ,CAACmO,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;IAC7B,OAAO3nB,CAAC,CAACsjF,EAAE,CAACqrE,OAAO,CAAC;MACnB3sJ,IAAI,EAAE,sDAAsD;MAC5D6sJ,SAAS,EAAE,IAAI;MACfC,WAAW,EAAE,KAAK;MAClBhwC,OAAO,EAAE,CACR;QACCvsH,IAAI,EAAE,IAAI;QACVkB,QAAQ,EAAE,SAAAA,CAAA,EAAW,CAAC;MACvB,CAAC;IAEH,CAAC,CAAC;EACH;EACA,IAAI+lB,QAAQ,CAACoO,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;IAC/B,OAAO5nB,CAAC,CAACsjF,EAAE,CAACqrE,OAAO,CAAC;MACnB3sJ,IAAI,EAAE,wDAAwD;MAC9D6sJ,SAAS,EAAE,IAAI;MACfC,WAAW,EAAE,KAAK;MAClBhwC,OAAO,EAAE,CACR;QACCvsH,IAAI,EAAE,IAAI;QACVkB,QAAQ,EAAE,SAAAA,CAAA,EAAW,CAAC;MACvB,CAAC;IAEH,CAAC,CAAC;EACH;EACA,IAAIiC,IAAI,CAACjC,QAAQ,EAAE;IAClBiC,IAAI,CAACjC,QAAQ,CAAC+6J,iBAAiB,CAAC;EACjC,CAAC,MAAM;IACNxuJ,CAAC,CAACyuJ,QAAQ,CAAC,CAACtwG,GAAG,CAACqwG,iBAAiB,CAAC;IAClCxuJ,CAAC,CAACyuJ,QAAQ,CAAC,CAACr2G,IAAI,CAACo2G,iBAAiB,CAAC;IACnCxuJ,CAAC,CAACyuJ,QAAQ,CAAC,CAACl8J,IAAI,CAACi8J,iBAAiB,CAAC;IACnCxuJ,CAAC,CAACyuJ,QAAQ,CAAC,CAACpD,MAAM,CAAC,CAAC;EACrB;EAEArrJ,CAAC,CAAC,cAAc,CAAC,CAACtR,MAAM,CAAC,CAAC;AAC3B;AAEA,SAASi8J,iBAAiBA,CAACjuH,GAAG,EAAEntC,KAAK,EAAEmG,IAAI,EAAE;EAC5C0oB,GAAG,GAAG,2CAA2C,CAAC,CAAC;EACnDpe,CAAC,CAAC2+C,IAAI,CAAC;IACNhsD,IAAI,EAAE,KAAK;IACXoN,GAAG,EAAEqe,GAAG,GAAG,OAAO,GAAG,CAAC,IAAIzV,IAAI,CAAC,CAAC;IAChCwvC,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE;MAC3B3G,IAAI,GAAG2G,QAAQ;MACfgwG,cAAc,CACb32G,IAAI,EACJ1b,GAAG,EACHntC,KAAK,EACLmG,IAAI,IAAI;QACPg5J,SAAS,EAAE,CAAC;QACZE,gBAAgB,EAAE;MACnB,CACD,CAAC;IACF;EACD,CAAC,CAAC;AACH;AAEA,SAASG,cAAcA,CAAC32G,IAAI,EAAE1b,GAAG,EAAEntC,KAAK,EAAEmG,IAAI,EAAE;EAC/C,IAAIyc,CAAC,EAAEL,CAAC;EACR,IAAI9R,CAAC,CAACgvJ,MAAM,EAAE;IACb78I,CAAC,GAAG,EAAE;IACNL,CAAC,GAAG,EAAE;EACP,CAAC,MAAM;IACNK,CAAC,GAAG5iB,KAAK,CAAC4iB,CAAC,GAAG,EAAE;IAChBL,CAAC,GAAGviB,KAAK,CAACuiB,CAAC,GAAG,EAAE;IAChB9R,CAAC,CAAC,kBAAkB,CAAC,CAAC0d,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;EAC1C;EACA,IAAI5e,OAAO,GAAGkB,CAAC,CAAC,wBAAwB,CAAC,CACvC0d,GAAG,CAAC;IACJuiC,eAAe,EAAE,qBAAqB;IACtCjmD,QAAQ,EAAE,UAAU;IACpBigB,GAAG,EAAE,GAAG;IACRugD,MAAM,EAAE,GAAG;IACXjgD,IAAI,EAAE,GAAG;IACTD,KAAK,EAAE,GAAG;IACV+R,MAAM,EAAE;EACT,CAAC,CAAC,CACDksE,KAAK,CAAC,YAAW;IACjBv4F,CAAC,CAAC,IAAI,CAAC,CAACtR,MAAM,CAAC,CAAC;IAChB,OAAO,KAAK;EACb,CAAC,CAAC;EACH,IAAIugK,OAAO,GAAGjvJ,CAAC,CAAC,eAAe,GAAG08B,GAAG,CAAC,CAAC,CAAC,CAACtqC,EAAE,GAAG,oBAAoB,GAAGgmD,IAAI,GAAG,QAAQ,CAAC,CACnFmgD,KAAK,CAAC,UAASpkG,CAAC,EAAE;IAClB,OAAO,KAAK;EACb,CAAC,CAAC,CACDQ,IAAI,CAAC,MAAM,EAAEe,IAAI,CAAC;EAEpBu5J,OAAO,CAACvxI,GAAG,CAAC;IACX+8D,OAAO,EAAE,gBAAgB;IACzBkqD,UAAU,EAAExyH,CAAC;IACb+8I,SAAS,EAAEp9I;EACZ,CAAC,CAAC;EAEFhT,OAAO,CAACmtJ,MAAM,CAACgD,OAAO,CAAC;EACvBjvJ,CAAC,CAAC,MAAM,CAAC,CAACisJ,MAAM,CAACntJ,OAAO,CAAC;AAC1B;AAEA,SAASqwJ,sBAAsBA,CAAA,EAAG;EACjCnvJ,CAAC,CAAC,mBAAmB,CAAC,CAACm+C,GAAG,CAAC,EAAE,CAAC;AAC/B;AAEA,SAASixG,eAAeA,CAACC,UAAU,EAAE;EACpC,IAAIC,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAGD,UAAU;EACjD,IAAIE,YAAY,GAAG,IAAI5mJ,IAAI,CAAC,CAAC;EAC7B4mJ,YAAY,CAAC35G,OAAO,CAAC25G,YAAY,CAACv0I,OAAO,CAAC,CAAC,GAAGs0I,UAAU,CAAC;EACzD,IAAIE,UAAU,GAAGD,YAAY,CAAC36I,WAAW,CAAC,CAAC,GAAG,GAAG,GAAG0N,IAAI,CAAC5B,WAAW,CAAC6uI,YAAY,CAAC16I,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAGyN,IAAI,CAAC5B,WAAW,CAAC6uI,YAAY,CAACz6I,OAAO,CAAC,CAAC,CAAC;EAClJ,OAAO06I,UAAU;AAClB;AAEA,SAASC,oBAAoBA,CAACJ,UAAU,EAAE;EACzC,IAAIC,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAGD,UAAU;EACjD,IAAIE,YAAY,GAAG,IAAI5mJ,IAAI,CAAC,CAAC;EAC7B4mJ,YAAY,CAAC35G,OAAO,CAAC25G,YAAY,CAACv0I,OAAO,CAAC,CAAC,GAAGs0I,UAAU,CAAC;EACzD,IAAID,UAAU,GAAG,EAAE,EAAE;IACpB,OAAO,IAAI1mJ,IAAI,CAAC4mJ,YAAY,CAAC36I,WAAW,CAAC,CAAC,EAAE26I,YAAY,CAAC16I,QAAQ,CAAC,CAAC,EAAE06I,YAAY,CAACz6I,OAAO,CAAC,CAAC,CAAC;EAC7F,CAAC,MAAM;IACN,OAAO,IAAInM,IAAI,CAAC4mJ,YAAY,CAAC36I,WAAW,CAAC,CAAC,EAAE26I,YAAY,CAAC16I,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE06I,YAAY,CAACz6I,OAAO,CAAC,CAAC,CAAC;EACjG;AACD;AAEA,SAAS46I,aAAaA,CAACh6J,IAAI,EAAE;EAC5B,IAAIi6J,OAAO,GAAGj6J,IAAI,CAACi6J,OAAO,IAAI,IAAI;IACjCC,OAAO,GAAGl6J,IAAI,CAACk6J,OAAO,IAAI,IAAI;IAC9BC,OAAO,GAAGn6J,IAAI,CAACm6J,OAAO,IAAI,IAAI;IAC9Bp8J,QAAQ,GAAGiC,IAAI,CAACjC,QAAQ,IAAI,YAAW,CAAC,CAAC;IACzCjE,MAAM,GAAGkG,IAAI,CAAClG,MAAM;EAErB,IAAIktC,GAAG,GAAG;IACTozH,UAAU,EAAE,UAAU;IACtBC,KAAK,EAAE,IAAI;IACXC,MAAM,EAAE,OAAO;IACflzJ,OAAO,EAAE,QAAQ;IACjB8rE,IAAI,EAAE,UAAU;IAChBqnF,MAAM,EAAE,MAAM;IACdC,QAAQ,EAAE,SAAAA,CAASrF,SAAS,EAAEsF,IAAI,EAAE;MACnC3gK,MAAM,CAAC+C,IAAI,CAACs4J,SAAS,CAAC;MACtBp3J,QAAQ,CAAC,CAAC;IACX,CAAC;IACD28J,MAAM,EAAE,SAAAA,CAAA,EAAW;MAClB,IAAIP,OAAO,IAAI,IAAI,EAAE;QACpB7vJ,CAAC,CAAC,IAAI,CAAC,CAACqwJ,QAAQ,CAAC,SAAS,EAAE,IAAI1nJ,IAAI,CAACknJ,OAAO,CAACj7I,WAAW,CAAC,CAAC,EAAEi7I,OAAO,CAACh7I,QAAQ,CAAC,CAAC,EAAEg7I,OAAO,CAAC/6I,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;MAC3G;MAEA9U,CAAC,CAAC,SAAS,CAAC,CAAC0d,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;IACpC;EACD,CAAC;EAED,IAAIiyI,OAAO,IAAI,IAAI,EAAE;IACpBjzH,GAAG,CAACizH,OAAO,GAAGA,OAAO;EACtB;EAEA,IAAIC,OAAO,IAAI,IAAI,EAAE;IACpBlzH,GAAG,CAACkzH,OAAO,GAAGA,OAAO;EACtB;EAEApgK,MAAM,CACJ8gK,UAAU,CAAC,CAAC,CACZ33I,IAAI,CAAC+jB,GAAG,CAAC,CACT4zH,UAAU,CAAC,MAAM,CAAC;AACrB;AAEA,SAASC,aAAaA,CAAA,EAAG;EACxB,IAAIpkJ,IAAI,GAAGnM,CAAC,CAAC,UAAU,EAAE;IACxBF,MAAM,EAAEE,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,mBAAmB;IACzIqB,MAAM,EAAE,MAAM;IACdhvD,MAAM,EAAE,QAAQ;IAChBghK,OAAO,EAAE;EACV,CAAC,CAAC;EACFrkJ,IAAI,CAACvd,IAAI,CAAC,CAAC,CAACq9J,MAAM,CAAC,wCAAwC,GAAGjsJ,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,MAAM,CAAC;EACvFn8B,IAAI,CAAC7J,QAAQ,CAACtC,CAAC,CAAC,MAAM,CAAC,CAAC;EACxBmM,IAAI,CAAC4sH,MAAM,CAAC,CAAC;AACd;AAEA,CAAC,UAAS03B,KAAK,EAAE;EAChB,IAAI,CAACA,KAAK,CAACC,QAAQ,EAAE;IACpBD,KAAK,CAACC,QAAQ,GAAG,CAAC,CAAC;EACpB;EACAD,KAAK,CAACC,QAAQ,CAACC,WAAW,GAAG,UAASluJ,OAAO,EAAEmuJ,WAAW,EAAEC,UAAU,EAAE;IACvE7wJ,CAAC,CAACsjF,EAAE,CAACqrE,OAAO,CAAC;MACZ3sJ,IAAI,EAAES,OAAO;MACbosJ,SAAS,EAAE,IAAI;MACf/vC,OAAO,EAAE,CACR;QACCvsH,IAAI,EAAE,KAAK;QACXkB,QAAQ,EAAE,SAAAA,CAAA,EAAW;UACpB,IAAIm9J,WAAW,EAAEA,WAAW,CAAC,CAAC;QAC/B;MACD,CAAC,EACD;QACCr+J,IAAI,EAAE,IAAI;QACVkB,QAAQ,EAAE,SAAAA,CAAA,EAAW;UACpB,IAAIo9J,UAAU,EAAEA,UAAU,CAAC,CAAC;QAC7B;MACD,CAAC;IAEH,CAAC,CAAC;EACH,CAAC;AACF,CAAC,EAAEzwJ,MAAM,CAAC;AChtBV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASksJ,iBAAiBA,CAACpuG,MAAM,EAAEzqD,QAAQ,EAAE;EAC5CuM,CAAC,CAAC2+C,IAAI,CAAC;IACNhsD,IAAI,EAAE,MAAM;IACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,iBAAiB;IACpIxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,eAAe,GAAG4V,MAAM,GAAG,IAAI;IACtEU,WAAW,EAAE,iCAAiC;IAC9CE,QAAQ,EAAE,MAAM;IAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;MACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;MAClC3I,WAAW,CAAC,SAAS,CAAC;MACtB,IAAIt3C,OAAO,GAAGlN,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC3C,IAAI6N,CAAC,CAAC,aAAa,EAAEk4C,GAAG,CAAC,CAACqH,EAAE,CAAC,GAAG,CAAC,IAAI/H,cAAc,CAACU,GAAG,CAAC,IAAI,CAAC,EAAE;QAC9D9B,WAAW,CAAC,KAAK,CAAC;QAClBV,YAAY,CAAC,KAAK,EAAEwC,GAAG,EAAE,CAAC,CAAC;QAC3BC,OAAO,GAAG,IAAI;QACdvmD,QAAQ,CAACiI,QAAQ,CAAC4kB,IAAI,GAAG,eAAe;MACzC,CAAC,MAAM,IAAIy5B,GAAG,CAAC9/B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;QACnC;QACA4/B,oBAAoB,CAAC,CAAC;MACvB,CAAC,MAAM;QACNh4C,CAAC,CAAC,QAAQ,CAAC,CAAC0d,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC;QAC/B1d,CAAC,CAAC,QAAQ,CAAC,CAAC0d,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;QACnC,IAAI1d,CAAC,CAAC,QAAQ,CAAC,CAACw/C,QAAQ,CAAC,kBAAkB,CAAC,EAAE;UAC7Cx/C,CAAC,CAAC,YAAY,CAAC,CAACzN,IAAI,CAAC,gDAAgD,CAAC;QACvE,CAAC,MAAM,IAAIyN,CAAC,CAAC,QAAQ,CAAC,CAACw/C,QAAQ,CAAC,gBAAgB,CAAC,EAAE;UAClDx/C,CAAC,CAAC,YAAY,CAAC,CAACzN,IAAI,CAAC,8BAA8B,CAAC;QACrD,CAAC,MAAM,IAAI2lD,GAAG,CAAC9/B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;UACnCpY,CAAC,CAAC,YAAY,CAAC,CAACzN,IAAI,CAAC,gDAAgD,CAAC;QACvE,CAAC,MAAM;UACSyN,CAAC,CAAC,YAAY,CAAC,CAACzN,IAAI,CAAC,gCAAgC,CAAC;QACtE;MACD;IACD,CAAC;IACDoO,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;MACnC;MACA;MACA;IAAA,CACA;IACD0K,QAAQ,EAAE,SAAAA,CAAA,EAAW;MACpB;MACArL,CAAC,CAAC,MAAM,CAAC,CAAC0d,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;IAChC;EACD,CAAC,CAAC;AACH;AC/GA,MAAM6uI,QAAQ,GAAI,YAAW;EAC3B,IAAIuE,SAAS;EAEb,SAAS3wH,UAAUA,CAAC4wH,UAAU,EAAE;IAE9BD,SAAS,GAAGnvJ,KAAK,CAAC1P,KAAK,CAAC;MACtB2P,MAAM,EAAE,eAAe;MACvBxP,EAAE,EAAE;IACN,CAAC,CAAC;IACF0+J,SAAS,CAACzhK,WAAW,CAAC0hK,UAAU,CAAC;IAEjCpvJ,KAAK,CAAC9S,IAAI,CAACiiK,SAAS,CAAC;EACzB;EAEE,OAAO;IACL3wH;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACjBJ,MAAMjwC,WAAW,GAAI,YAAY;EAC7B;EACA,IAAI8gK,oBAAoB;EACxB,IAAIC,iBAAiB;EACrB,IAAIC,kBAAkB;EACtB,IAAIC,iBAAiB;EACrB,IAAIC,gBAAgB;EACpB,IAAI9wD,SAAS;EACb,IAAI+wD,sBAAsB;EAC1B,IAAIC,mBAAmB;EACvB,IAAIx1D,WAAW;EACf,IAAIy1D,eAAe;EACnB,IAAIC,cAAc;EAClB,IAAIC,qBAAqB,GAAG7/J,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;EACxD,IAAIu/J,cAAc;EAClB,IAAIC,sBAAsB;EAC1B,IAAIC,UAAU,GAAGhgK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;EAC9Cy/J,UAAU,CAACnjK,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;EAEtC,IAAIsoG,WAAW;EACf,IAAIC,UAAU;EACd,IAAIC,YAAY;EAEhB,IAAI+qC,OAAO;EACX,IAAI2vB,aAAa;;EAEjB;EACA,IAAIC,mBAAmB;EACvB,IAAIC,eAAe;;EAEnB;EACA,IAAIC,kBAAkB;EACtB,IAAI/xC,WAAW;EACf,IAAIgyC,UAAU;EACd,IAAIC,aAAa;EACjB,IAAIC,qBAAqB;EACzB,IAAIC,gBAAgB;EACpB,IAAIC,aAAa;EACjB,IAAIC,gBAAgB;EACpB,IAAIC,iBAAiB;EACrB,IAAIp0H,OAAO;EACX,IAAIq0H,eAAe;EACnB,IAAIC,kBAAkB;EACtB,IAAIC,wBAAwB;;EAE5B;EACA,IAAIC,kBAAkB,GAAG,EAAE;EAC3B,IAAIC,gBAAgB;EACpB,IAAIC,aAAa;EACjB,IAAIC,qBAAqB;EACzB,IAAI/2D,iBAAiB;EACrB,IAAIg3D,sBAAsB;EAC1B,IAAIC,aAAa,GAAG,CAAC,CAAC;EACtB,IAAIC,aAAa,GAAG,CAAC,CAAC;EACtB,IAAIC,WAAW,GAAG,EAAE;EACpB,IAAIC,aAAa;EACjB,IAAIC,cAAc;EAClB,IAAIC,cAAc;EAClB,IAAIC,iBAAiB;EACrB,IAAIC,cAAc;EAClB,IAAIC,aAAa;EACjB,IAAIvpH,eAAe;EACnB,IAAIwpH,oBAAoB;EACxB,IAAIC,eAAe,GAAG,KAAK;EAC3B,IAAIC,gBAAgB,GAAG,IAAI;EAC3B;EACA;;EAEA,MAAMC,OAAO,GAAG,CACZ;IAAEC,MAAM,EAAE,GAAG;IAAEC,MAAM,EAAE;EAAY,CAAC,EACpC;IAAED,MAAM,EAAE,GAAG;IAAEC,MAAM,EAAE;EAAmB,CAAC;EAC3C;EACA;EACA;IAAED,MAAM,EAAE,GAAG;IAAEC,MAAM,EAAE;EAAiB,CAAC,EACzC;IAAED,MAAM,EAAE,GAAG;IAAEC,MAAM,EAAE;EAAiB,CAAC,EACzC;IAAED,MAAM,EAAE,GAAG;IAAEC,MAAM,EAAE;EAAoB,CAAC,EAC5C;IAAED,MAAM,EAAE,GAAG;IAAEC,MAAM,EAAE;EAAoB,CAAC,EAC5C;IAAED,MAAM,EAAE,GAAG;IAAEC,MAAM,EAAE;EAAY,CAAC,EACpC;IAAED,MAAM,EAAE,GAAG;IAAEC,MAAM,EAAE;EAAe;EACtC;EACA;;EAEA;EAAA,CACH;;EAED;EACA;EACA,SAASC,yBAAyBA,CAAC5mD,WAAW,EAAE;IAC5C,IAAI6mD,cAAc,GAAG7mD,WAAW,CAACx0G,GAAG,CAACvF,CAAC,IAAIA,CAAC,CAAChB,EAAE,CAAC,CAACuoB,IAAI,CAAC,GAAG,CAAC;IACzDq5I,cAAc,IAAI,GAAG;IACrB,OAAOA,cAAc;EACzB;EAEA,SAASC,0BAA0BA,CAAC9mD,WAAW,EAAE;IAC7CA,WAAW,GAAGA,WAAW,CAACx0G,GAAG,CAACvF,CAAC,IAAIA,CAAC,CAAChB,EAAE,CAAC;IACxC,IAAI4hK,cAAc,GAAG,EAAE;IACvB7mD,WAAW,CAACh+G,OAAO,CAACiD,EAAE,IAAI;MACtB6gK,aAAa,CAAC7gK,EAAE,CAAC,CAACjD,OAAO,CAAC+kK,GAAG,IAAI;QAC7B,IAAIA,GAAG,CAACC,SAAS,KAAK,EAAE,EAAE;UACtBH,cAAc,IAAI,GAAG5hK,EAAE,IAAI8hK,GAAG,CAACE,UAAU,GAAG;QAChD;MACJ,CAAC,CAAC;IACN,CAAC,CAAC;IACF,OAAOJ,cAAc;EACzB;EAEA,SAASK,cAAcA,CAAA,EAAG;IACtB,IAAI1iK,aAAa,GAAGC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;IAC9DyiK,cAAc,CAACC,sBAAsB,CAACtC,UAAU,EAAEhyC,WAAW,EAAE/nE,GAAG,IAAI;MAClE,IAAIA,GAAG,CAAChpD,MAAM,KAAK,CAAC,EAAE;QAClB6jK,sBAAsB,GAAG,IAAI;MACjC,CAAC,MAAM;QACHA,sBAAsB,GAAG,KAAK;MAClC;MACA,IAAIA,sBAAsB,EAAE;QACxB,IAAI/yJ,CAAC,CAACC,OAAO,CAACwhC,gBAAgB,EAAEiwH,cAAc,CAACjjK,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACxE,IAAIqR,CAAC,CAACC,OAAO,CAACwhC,gBAAgB,EAAE9vC,aAAa,CAAClD,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACvE8iK,qBAAqB,CAAChjK,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MACpD,CAAC,MAAM;QACH,IAAIsR,CAAC,CAACC,OAAO,CAACwhC,gBAAgB,EAAEiwH,cAAc,CAACjjK,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QAC3E,IAAIsR,CAAC,CAACC,OAAO,CAACwhC,gBAAgB,EAAE9vC,aAAa,CAAClD,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QAC1E+iK,qBAAqB,CAAChjK,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC7C6lK,kBAAkB,CAAC,CAAC;MACxB;IACJ,CAAC,CAAC;EACN;EAEA,SAASA,kBAAkBA,CAAA,EAAG;IAC1B,IAAI,CAACx0J,CAAC,CAACC,OAAO,CAACwhC,gBAAgB,EAAE,OAAO,CAAC;IACzC9vC,aAAa,GAAGC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;IAC1D,IAAIghK,aAAa,EAAE;MACflhK,aAAa,CAAClD,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvC+iK,cAAc,CAACjjK,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC5C,CAAC,MAAM;MACHgD,aAAa,CAAClD,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC1CgjK,cAAc,CAACjjK,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC/C;EACJ;EAEA,SAAS+lK,qBAAqBA,CAAChhK,QAAQ,EAAE;IACrCw/J,aAAa,GAAG,CAAC,CAAC;IAClB,IAAIyB,eAAe,GAAG,EAAE;IACxBxB,WAAW,GAAG,EAAE;IAChBP,kBAAkB,GAAG,EAAE;;IAEvB;IACAG,qBAAqB,GAAGF,gBAAgB,CAACj4I,IAAI,CAAC,IAAI,CAAC;IACnD,IAAIm4I,qBAAqB,CAAC16I,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE;MAC3D06I,qBAAqB,GAAGA,qBAAqB,CAAC34G,UAAU,CAAC,mBAAmB,EAAE,EAAE,CAAC;IACrF;IAEAm6G,cAAc,CAACK,6BAA6B,CACxC7B,qBAAqB,EACrB7yC,WAAW,EACXgyC,UAAU,EACVC,aAAa,EACbC,qBAAqB,EACrBj6G,GAAG,IAAI;MACHA,GAAG,CAAC/oD,OAAO,CAAC+oD,GAAG,IAAI;QACfxb,GAAG,GAAG;UACFk4H,MAAM,EAAE18G,GAAG,CAAC08G,MAAM;UAClBC,gBAAgB,EAAE38G,GAAG,CAAC28G,gBAAgB;UACtCC,gBAAgB,EAAE58G,GAAG,CAAC48G,gBAAgB;UACtCz6D,SAAS,EAAEniD,GAAG,CAACmiD,SAAS;UACxBF,QAAQ,EAAEjiD,GAAG,CAACiiD,QAAQ;UACtB46D,YAAY,EAAE78G,GAAG,CAAC68G,YAAY;UAC9BX,UAAU,EAAEl8G,GAAG,CAACk8G,UAAU;UAC1BD,SAAS,EAAEj8G,GAAG,CAACi8G,SAAS;UACxBa,SAAS,EAAE98G,GAAG,CAAC88G,SAAS;UACxBC,SAAS,EAAE/8G,GAAG,CAAC+8G,SAAS;UACxBC,SAAS,EAAEh9G,GAAG,CAACi9G;QACnB,CAAC;QACD95D,WAAW,GAAG;UACVjpG,EAAE,EAAE8lD,GAAG,CAAC4nD,EAAE;UACVzF,SAAS,EAAEniD,GAAG,CAACmiD,SAAS;UACxBF,QAAQ,EAAEjiD,GAAG,CAACiiD;QAClB,CAAC;QACD,IAAI84D,aAAa,CAAC/6G,GAAG,CAAC4nD,EAAE,CAAC,EAAE;UACvB9rE,GAAG,GAAGi/H,aAAa,CAAC/6G,GAAG,CAAC4nD,EAAE,CAAC;UAC3B9rE,GAAG,CAACh3B,IAAI,CAAC0/B,GAAG,CAAC;UACbu2H,aAAa,CAAC/6G,GAAG,CAAC4nD,EAAE,CAAC,GAAG9rE,GAAG;QAC/B,CAAC,MAAM;UACHi/H,aAAa,CAAC/6G,GAAG,CAAC4nD,EAAE,CAAC,GAAG,CAACpjE,GAAG,CAAC;QACjC;QACAg4H,eAAe,CAAC13J,IAAI,CAACq+F,WAAW,CAAC;QACjCpxD,eAAe,GAAGiO,GAAG,CAACi9G,oBAAoB;MAC9C,CAAC,CAAC;MACF;MACA,IAAIC,aAAa,GAAG,IAAI57J,GAAG,CAAC,CAAC;MAC7B,KAAK,MAAMmM,IAAI,IAAI+uJ,eAAe,EAAE;QAChC,IAAI,CAACU,aAAa,CAACC,GAAG,CAAC1vJ,IAAI,CAACvT,EAAE,CAAC,EAAE;UAC7BgjK,aAAa,CAAC1wJ,GAAG,CAACiB,IAAI,CAACvT,EAAE,EAAE,IAAI,CAAC;UAChC8gK,WAAW,CAACl2J,IAAI,CAAC;YACb5K,EAAE,EAAEuT,IAAI,CAACvT,EAAE;YACXioG,SAAS,EAAE10F,IAAI,CAAC00F,SAAS;YACzBF,QAAQ,EAAEx0F,IAAI,CAACw0F;UACnB,CAAC,CAAC;QACN;MACJ;MACA;MACA+4D,WAAW,CAAC/jK,OAAO,CAAC2rG,QAAQ,IAAI;QAC5B63D,kBAAkB,CAAC31J,IAAI,CAAC89F,QAAQ,CAAC1oG,EAAE,CAAC;MACxC,CAAC,CAAC;MACF;MACA,IAAIqB,QAAQ,EAAEA,QAAQ,CAAC,CAAC;IAC5B,CACJ,CAAC;EACL;EAEA,SAAS6hK,UAAUA,CAACzB,MAAM,EAAE;IACxB;IACA;;IAEA,IAAIlhK,IAAI,GAAGkhK,MAAM,GAAGA,MAAM,GAAGN,cAAc;IAE3C,QAAQ5gK,IAAI;MACR,KAAK,GAAG;QACJ,OAAO,IAAI;MACf,KAAK,GAAG;QACJ,OAAO,IAAI;MACf,KAAK,GAAG;QACJ,OAAO,IAAI;MACf,KAAK,GAAG;QACJ,OAAO,IAAI;MACf,KAAK,GAAG;QACJ,OAAO,IAAI;MACf,KAAK,GAAG;QACJ,OAAO,IAAI;MACf,KAAK,GAAG;QACJ,OAAO,IAAI;MACf;QACI,OAAO,KAAK;IACpB;EACJ;EAEA,SAAS8mJ,UAAUA,CAAClnJ,IAAI,EAAE;IACtB,IAAIknJ,UAAU,GAAG93I,KAAK,CAAC1P,KAAK,CAAC;MACzBG,EAAE,EAAE,YAAY;MAChBa,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,IAAIsiK,cAAc,GAAG3jK,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDojK,cAAc,CAAC9mK,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAC7C8qJ,UAAU,CAACpqJ,WAAW,CAACkmK,cAAc,CAAC;IACtCA,cAAc,CAACxmK,SAAS,GAAGwD,IAAI;IAC/BoP,KAAK,CAAC9S,IAAI,CAAC4qJ,UAAU,CAAC;EAC1B;;EAEA;EACA;EACA,SAAS+b,QAAQA,CAAC36D,WAAW,EAAE;IAC3B;IACA;IACA83D,kBAAkB,GAAG,EAAE;IACvB93D,WAAW,GAAGA,WAAW,CAACpoG,WAAW,CAAC,CAAC;IACvCygK,WAAW,CAAC/jK,OAAO,CAAC2rG,QAAQ,IAAI;MAC5B,IAAIC,SAAS,GAAGD,QAAQ,CAACT,SAAS,CAAC5nG,WAAW,CAAC,CAAC;MAChD,IAAIuoG,QAAQ,GAAGF,QAAQ,CAACX,QAAQ,CAAC1nG,WAAW,CAAC,CAAC;MAC9C,IAAIwoG,QAAQ,GAAG,GAAGD,QAAQ,KAAKD,SAAS,EAAE;MAC1C,IAAIG,gBAAgB,GAAG,GAAGF,QAAQ,KAAKD,SAAS,EAAE;MAClD,IAAII,WAAW,GAAGF,QAAQ,CAAC7iF,OAAO,CAACyiF,WAAW,CAAC;MAC/C,IAAIO,kBAAkB,GAAGF,gBAAgB,CAAC9iF,OAAO,CAACyiF,WAAW,CAAC;MAC9D,IAAI8R,YAAY,GAAG/6G,QAAQ,CAACC,aAAa,CAAC,qBAAqBipG,QAAQ,CAAC1oG,EAAE,IAAI,CAAC;MAE/E,IAAI+oG,WAAW,KAAK,CAAC,CAAC,IAAIC,kBAAkB,KAAK,CAAC,CAAC,EAAE;QACjDuR,YAAY,CAACl+G,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QACvCikK,kBAAkB,CAAC31J,IAAI,CAAC89F,QAAQ,CAAC1oG,EAAE,CAAC;MACxC,CAAC,MAAM;QACHu6G,YAAY,CAACl+G,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACpC,IAAI4Z,KAAK,GAAGoqJ,kBAAkB,CAACv6I,OAAO,CAAC0iF,QAAQ,CAAC1oG,EAAE,CAAC;QACnD,IAAImW,KAAK,GAAG,CAAC,CAAC,EAAEoqJ,kBAAkB,CAAC30I,MAAM,CAACzV,KAAK,EAAE,CAAC,CAAC;MACvD;IACJ,CAAC,CAAC;EACN;EAEA,SAASktJ,oBAAoBA,CAACjiK,KAAK,EAAE;IACjC,IAAIkiK,OAAO;IACX,QAAQliK,KAAK;MACT,KAAK,GAAG;QACJ83J,OAAO,GAAG,OAAO;QACjB;MACJ,KAAK,GAAG;QACJA,OAAO,GAAG,WAAW;QACrB;MACJ,KAAK,GAAG;QACJA,OAAO,GAAG,WAAW;QACrB;MACJ,KAAK,GAAG;QACJA,OAAO,GAAG,SAAS;QACnB;MACJ,KAAK,GAAG;QACJA,OAAO,GAAG,cAAc;QACxB;MACJ,KAAK,GAAG;QACJA,OAAO,GAAG,kBAAkB;QAC5B;MACJ;MACA;MACA;MACA;MACA;MACA;MACA,KAAK,GAAG;QACJA,OAAO,GAAG,gBAAgB;QAC1B;MACJ,KAAK,GAAG;QACJA,OAAO,GAAG,gBAAgB;QAC1B;MACJ,KAAK,GAAG;QACJA,OAAO,GAAG,mBAAmB;QAC7B;MACJ,KAAK,GAAG;QACJA,OAAO,GAAG,mBAAmB;QAC7B;MACJ;QACIA,OAAO,GAAG,aAAa;IAC/B;IACA,OAAOA,OAAO;EAClB;EAEA,SAASqK,0BAA0BA,CAAA,EAAG;IAElC,IAAIvtD,oBAAoB,GAAGx2G,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IAEpE,IAAI,CAACu2G,oBAAoB,EAAE;MACvBA,oBAAoB,GAAGx2G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACpDi2G,oBAAoB,CAAC35G,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MACpD0xG,eAAe,CAAC,CAAC;MACjB+H,oBAAoB,CAAC/4G,WAAW,CAAC8uC,OAAO,CAAC;IAC7C;IAEAiqE,oBAAoB,CAAC11G,KAAK,CAAC4yF,QAAQ,GAAG,MAAM;IAE5C,IAAI1zF,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,IAAI,IAAI,EAC9CjD,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,CAAC9F,SAAS,GAAG,YAAY,GAAGikK,aAAa,CAACf,UAAU,CAAC,CAAC9uG,YAAY;IAE5G,IAAIvxD,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC,IAAI,IAAI,EACjDjD,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC,CAAC9F,SAAS,GAAG,QAAQ,GAAGuzB,IAAI,CAACmY,iBAAiB,CAACwlF,WAAW,CAAC;IAExG,IAAI21C,iBAAiB,KAAK,UAAU,EAAE;MAClClD,wBAAwB,CAAChgK,KAAK,CAACoK,OAAO,GAAG,MAAM;IACnD,CAAC,MAAM;MACH,IAAIlL,QAAQ,CAACiD,cAAc,CAAC,sBAAsB,CAAC,IAAI,IAAI,EACvDjD,QAAQ,CAACiD,cAAc,CAAC,sBAAsB,CAAC,CAAC9F,SAAS,GAAG,SAAS,GAAG6mK,iBAAiB;MAC7FlD,wBAAwB,CAAChgK,KAAK,CAACoK,OAAO,GAAG,SAAS;IACtD;IACA,OAAOsrG,oBAAoB;EAC/B;EAEA,SAAS/H,eAAeA,CAAA,EAAG;IACvBC,SAAS,GAAGtuG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,cAAc;MAC1BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEoiK,sBAAsB,CAAC,KAAK,CAAC;MAAC;IACpD,CAAC,CAAC;IAEFC,WAAW,GAAG9jK,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,YAAY,GAAGygK,aAAa,CAACf,UAAU,CAAC,CAAC9uG,YAAY;MAC3DzwD,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAEoiK,sBAAsB,CAAC,aAAa,CAAC;MAAC;IAC5D,CAAC,CAAC;IAEFE,cAAc,GAAG/jK,MAAM,CAACC,KAAK,CAAC;MAC1BG,EAAE,EAAE,gBAAgB;MACpBG,IAAI,EAAE,QAAQ,GAAG+vB,IAAI,CAACmY,iBAAiB,CAACwlF,WAAW,CAAC;MACpDvtH,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAEoiK,sBAAsB,CAAC,gBAAgB,CAAC;MAAC;IAC/D,CAAC,CAAC;IAEFG,oBAAoB,GAAGhkK,MAAM,CAACC,KAAK,CAAC;MAChCG,EAAE,EAAE,sBAAsB;MAC1BG,IAAI,EAAE,SAAS,GAAGqjK,iBAAiB;MACnCljK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAEoiK,sBAAsB,CAAC,sBAAsB,CAAC;MAAC;IACrE,CAAC,CAAC;IACFI,yBAAyB,GAAGjkK,MAAM,CAACC,KAAK,CAAC;MACrCI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,sBAAsB,CAAC;MAAC;IAC1D,CAAC,CAAC;IAEFviE,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvCgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IACtCwvC,OAAO,CAAC9uC,WAAW,CAACixG,SAAS,CAAC;IAE9BkyD,eAAe,GAAG5gK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CqgK,eAAe,CAAC/jK,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvD6jK,eAAe,CAACnjK,WAAW,CAACymK,WAAW,CAAC;IACxC33H,OAAO,CAAC9uC,WAAW,CAACmjK,eAAe,CAAC;IAEpCC,kBAAkB,GAAG7gK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDsgK,kBAAkB,CAAChkK,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC1D8jK,kBAAkB,CAACpjK,WAAW,CAAC0mK,cAAc,CAAC;IAC9C53H,OAAO,CAAC9uC,WAAW,CAACojK,kBAAkB,CAAC;IAEvCC,wBAAwB,GAAG9gK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACxDugK,wBAAwB,CAACjkK,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAChE+jK,wBAAwB,CAACrjK,WAAW,CAAC2mK,oBAAoB,CAAC;IAC1D,IAAIh2J,CAAC,CAACC,OAAO,CAAC4hC,kBAAkB,KAAK,IAAI,IAAI7hC,CAAC,CAAC6kG,SAAS,KAAK,aAAa,EAAE,CAAE,CAAC,MAAM;MACjF6tD,wBAAwB,CAACrjK,WAAW,CAAC4mK,yBAAyB,CAAC;IACnE;IACAvD,wBAAwB,CAAC7/J,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAChEsrC,OAAO,CAAC9uC,WAAW,CAACqjK,wBAAwB,CAAC;EACjD;EAEA,SAAShyD,WAAWA,CAACA,WAAW,EAAE;IAC9B,IAAIA,WAAW,IAAI,sBAAsB,EAAE;MACvCk1D,iBAAiB,GAAG,UAAU;MAC9BvD,aAAa,GAAG,KAAK;IACzB;IACA6D,iBAAiB,CAACp6D,WAAW,CAAC;EAClC;;EAEA;EACA;EACA,SAAS/rG,oBAAoBA,CAACP,MAAM,EAAE;IAClC,IAAIiuG,YAAY,GAAGjuG,MAAM,CAACC,OAAO,CAACC,SAAS;IAE3C,QAAQ+tG,YAAY;MAChB,KAAK,gBAAgB;QAAE;UACnB1B,iBAAiB,GAAG2B,OAAO,CAACC,kBAAkB,CAAC,CAAC;UAChD5B,iBAAiB,CAAC5sG,OAAO,CAAC2rG,QAAQ,IAAI;YAClC,MAAMvyF,KAAK,GAAGqqJ,gBAAgB,CAACz3H,SAAS,CAAChpB,CAAC,IAAIA,CAAC,CAAC/f,EAAE,IAAI0oG,QAAQ,CAAC1oG,EAAE,CAAC;YAClE,IAAImW,KAAK,KAAK,CAAC,CAAC,EAAE;cACd;cACAqqJ,gBAAgB,CAAC51J,IAAI,CAAC89F,QAAQ,CAAC1oG,EAAE,CAAC;YACtC;UACJ,CAAC,CAAC;UACF0O,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrB00E,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;UAC9B8tB,qBAAqB,CAAC,CAAC;UAEvB;QACJ;MACA,KAAK,kBAAkB;QAAE;UACrB;UACA;UACA;UACAr1J,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrB;UACA;QACJ;IACJ;EACJ;EACA,SAASotI,cAAcA,CAAA,EAAG;IACtBC,cAAc,GAAGzkK,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;IAC1Dm8J,oBAAoB,GAAGh/J,MAAM,CAACC,KAAK,CAAC;MAChCM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB,IAAI6iK,eAAe,GAAG,EAAE,CAACn4J,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;QACtFs+J,iBAAiB,CAACD,eAAe,CAAC;QAClC;QACAjoK,UAAU,CAACO,IAAI,CAAC,CAAC;QACjB8kK,eAAe,GAAG,KAAK;QACvBpzD,SAAS,CAAC7xG,SAAS,CAACmE,MAAM,CAAC,UAAU,CAAC;QACtCyjK,cAAc,CAAC5nK,SAAS,CAACmE,MAAM,CAAC,SAAS,CAAC;QAC1CjB,aAAa,CAAClD,SAAS,CAACmE,MAAM,CAAC,UAAU,CAAC;QAC1C++J,sBAAsB,CAACljK,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC9C;QACA,IAAI6nK,YAAY,GAAG5kK,QAAQ,CAACqG,gBAAgB,CAAC,WAAW,CAAC;QACzD,EAAE,CAAC9I,OAAO,CAACiP,IAAI,CAACo4J,YAAY,EAAE,UAAU76J,EAAE,EAAE;UACxCA,EAAE,CAAClN,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACnC,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF0iK,gBAAgB,GAAGp/J,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,UAAU;MAChBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB,IAAIgjK,kBAAkB,GAAG,EAAE,CAACt4J,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;QAC3Fy+J,gBAAgB,CAAC,IAAI,EAAED,kBAAkB,CAAC;QAC1C;QACApoK,UAAU,CAACO,IAAI,CAAC,CAAC;QACjB8kK,eAAe,GAAG,KAAK;QACvBpzD,SAAS,CAAC7xG,SAAS,CAACmE,MAAM,CAAC,UAAU,CAAC;QACtCyjK,cAAc,CAAC5nK,SAAS,CAACmE,MAAM,CAAC,SAAS,CAAC;QAC1CjB,aAAa,CAAClD,SAAS,CAACmE,MAAM,CAAC,UAAU,CAAC;QAC1C++J,sBAAsB,CAACljK,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC9C;QACA,IAAI6nK,YAAY,GAAG5kK,QAAQ,CAACqG,gBAAgB,CAAC,WAAW,CAAC;QACzD,EAAE,CAAC9I,OAAO,CAACiP,IAAI,CAACo4J,YAAY,EAAE,UAAU76J,EAAE,EAAE;UACxCA,EAAE,CAAClN,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACnC,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEFyiK,iBAAiB,GAAGn/J,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,WAAW;MACjBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB,IAAIgjK,kBAAkB,GAAG,EAAE,CAACt4J,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;QAC3Fy+J,gBAAgB,CAAC,KAAK,EAAED,kBAAkB,CAAC;QAC3C;QACApoK,UAAU,CAACO,IAAI,CAAC,CAAC;QACjB8kK,eAAe,GAAG,KAAK;QACvBpzD,SAAS,CAAC7xG,SAAS,CAACmE,MAAM,CAAC,UAAU,CAAC;QACtCyjK,cAAc,CAAC5nK,SAAS,CAACmE,MAAM,CAAC,SAAS,CAAC;QAC1CjB,aAAa,CAAClD,SAAS,CAACmE,MAAM,CAAC,UAAU,CAAC;QAC1C++J,sBAAsB,CAACljK,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC9C;QACA,IAAI6nK,YAAY,GAAG5kK,QAAQ,CAACqG,gBAAgB,CAAC,WAAW,CAAC;QACzD,EAAE,CAAC9I,OAAO,CAACiP,IAAI,CAACo4J,YAAY,EAAE,UAAU76J,EAAE,EAAE;UACxCA,EAAE,CAAClN,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACnC,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEFL,UAAU,CAACS,KAAK,CAAC,CAAC;IAClBT,UAAU,CAACW,QAAQ,CAAC,CAACoiK,gBAAgB,EAAED,iBAAiB,EAAEH,oBAAoB,CAAC,CAAC;IAChF3iK,UAAU,CAACO,IAAI,CAAC,CAAC;EACrB;;EAEA;EACA;EACA,SAAS+nK,2BAA2BA,CAAA,EAAG;IACnC,IAAIC,YAAY,GAAG,CAAC,CAAC;IAErB,MAAMjiK,IAAI,GAAGq9J,kBAAkB,CAACr5J,GAAG,CAACsX,CAAC,IAAI;MACrC;MACA,IAAI,CAAC2mJ,YAAY,CAAC3mJ,CAAC,CAAC4mJ,SAAS,CAAC,EAAE;QAC5BD,YAAY,CAAC3mJ,CAAC,CAAC4mJ,SAAS,CAAC,GAAG;UACxBC,SAAS,EAAE7mJ,CAAC,CAAC4mJ,SAAS;UACtBE,SAAS,EAAE9mJ,CAAC,CAAC+mJ,SAAS;UACtBC,OAAO,EAAEhnJ,CAAC,CAACinJ,OAAO,GAAGjnJ,CAAC,CAACinJ,OAAO,CAACnkJ,KAAK,CAAC,GAAG,CAAC,GAAG9C,CAAC,CAACinJ;QAClD,CAAC;MACL;MAEA,OAAO;QACH;QACA1jK,KAAK,EAAEyc,CAAC,CAAC4mJ,SAAS;QAClBtkK,IAAI,EAAE0d,CAAC,CAAC+mJ,SAAS;QACjB3jK,UAAU,EAAE,CAAC;UAAEE,GAAG,EAAE,iBAAiB;UAAEC,KAAK,EAAEyc,CAAC,CAACknJ;QAAW,CAAC;MAChE,CAAC;IACL,CAAC,CAAC;IACF,IAAIn3J,CAAC,CAACC,OAAO,CAAC4hC,kBAAkB,KAAK,IAAI,IAAI7hC,CAAC,CAAC6kG,SAAS,KAAK,aAAa,EAAE;MACxEjwG,UAAU,GAAG,KAAK;IACtB,CAAC,MAAM;MACHA,UAAU,GAAG,CAACs9J,aAAa,IAAIA,aAAa,KAAK,GAAG,GAAG,KAAK,GAAGA,aAAa;IAChF;IACAt+J,QAAQ,CAAC5E,QAAQ,CAACsiK,mBAAmB,EAAE38J,IAAI,EAAEC,UAAU,CAAC;EAC5D;EACA,SAASihK,sBAAsBA,CAACp0D,MAAM,EAAE;IACpC3F,WAAW,GAAGn6F,KAAK,CAAC1P,KAAK,CAAC;MACtBgB,UAAU,EAAE,uBAAuB;MACnC2O,MAAM,EAAE,QAAQ;MAChBxP,EAAE,EAAE;IACR,CAAC,CAAC;IAEF+rC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvCgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACmiK,cAAc,CAAC;IAEnC,IAAI/vD,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,gBAAgB,EAC7C3F,WAAW,CAACzsG,WAAW,CAACkiK,eAAe,CAAC;IAC5C,IAAI9vD,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,aAAa,EAC1C3F,WAAW,CAACzsG,WAAW,CAACgiK,sBAAsB,CAAC;IACnD,IAAI5vD,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,sBAAsB,EACnD3F,WAAW,CAACzsG,WAAW,CAACiiK,mBAAmB,CAAC;IAChDx1D,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAChCx8B,KAAK,CAAC9S,IAAI,CAACitG,WAAW,CAAC;IAEvBloG,QAAQ,CAAC5E,QAAQ,CAACqiK,sBAAsB,EAAEoC,oBAAoB,EAAExB,UAAU,CAAC;IAC3E0E,2BAA2B,CAAC,CAAC;EACjC;EACA,SAAST,iBAAiBA,CAACz0J,KAAK,EAAE;IAC9B;IACA;;IAEA,IAAI8wJ,iBAAiB,EAAE;MACnBtyC,WAAW,GAAGsyC,iBAAiB;MAC/B70D,OAAO,CAACoiD,kBAAkB,CAAC7/B,WAAW,CAAC;IAC3C;IACA,IAAIoyC,aAAa,EAAE;MACfH,aAAa,GAAGG,aAAa;MAC7BF,qBAAqB,GAAGG,gBAAgB;IAC5C;;IAEA;IACAnvG,YAAY,GAAGkuG,sBAAsB,CAACt6H,iBAAiB,CAAC7kC,OAAO,CAACm/J,sBAAsB,CAACt6H,iBAAiB,CAAC1iC,aAAa,CAAC,CAAC+B,SAAS;IACjI67J,UAAU,GAAGZ,sBAAsB,CAACt6H,iBAAiB,CAAC7kC,OAAO,CAACm/J,sBAAsB,CAACt6H,iBAAiB,CAAC1iC,aAAa,CAAC,CAACb,KAAK;IAE3HkqG,OAAO,CAAC05D,wBAAwB,CAACnF,UAAU,EAAE9uG,YAAY,CAAC;IAC1D0vG,aAAa,GAAGZ,UAAU,KAAK,EAAE,GAAG,IAAI,GAAG,KAAK;IAChDuC,kBAAkB,CAAC,CAAC;;IAEpB;IACA,IAAIl0J,QAAQ,CAAC+2J,oBAAoB,CAAC,aAAa,CAAC,EAC5C/2J,QAAQ,CAACooI,WAAW,CAAC,aAAa,EAAEupB,UAAU,CAAC;IAEnD0D,0BAA0B,CAAC,CAAC;;IAE5B;IACA,IAAI;MACArB,cAAc,CAACgD,gCAAgC,CAACr3C,WAAW,EAAEgyC,UAAU,EAAE/5G,GAAG,IAAI;QAC5Es5G,cAAc,CAAC5qJ,QAAQ,GAAG,KAAK;QAE/B,MAAM2wJ,gBAAgB,GAAG,EAAE;QAC3Br/G,GAAG,CAAC/oD,OAAO,CAAC8gB,CAAC,IAAI;UACb,MAAMunJ,WAAW,GAAGvnJ,CAAC,CAACwkC,UAAU;UAChC8iH,gBAAgB,CAACv6J,IAAI,CAAC;YAAEw6J,WAAW,EAAEA;UAAY,CAAC,CAAC;UACnD5E,gBAAgB,CAAC51J,IAAI,CAACw6J,WAAW,CAAC;QACtC,CAAC,CAAC;QACF95D,OAAO,CAAC+5D,mBAAmB,CAACF,gBAAgB,CAAC;QAC7CG,OAAO,CAAC,CAAC;MACb,CAAC,CAAC;IACN,CAAC,CAAC,OAAO/2J,KAAK,EAAE;MACZ6wJ,cAAc,CAAC5qJ,QAAQ,GAAG,KAAK;MAC/BjF,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;IACrB;IAEA,SAASi2J,OAAOA,CAAA,EAAG;MACfjD,qBAAqB,CAAC,MAAM;QACxB;QACAJ,cAAc,CAAC,CAAC;QAChBzC,UAAU,CAAC7iK,SAAS,GAAG,EAAE;QACzB4oK,UAAU,CAAC,CAAC;MAChB,CAAC,CAAC;;MAEF;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;MAEA;MACArD,cAAc,CAACsD,mBAAmB,CAAC53J,CAAC,CAACC,OAAO,CAACqoC,KAAK,EAAE2pH,UAAU,EAAE/5G,GAAG,IAAI;QACnEi7G,aAAa,GAAG,CAAC,CAAC;QAClBG,iBAAiB,GAAGp7G,GAAG,CAACv/C,GAAG,CAAC,CAACtD,KAAK,EAAEkT,KAAK,KAAK;UAC1C,IAAI;YAAEhT,OAAO;YAAEsiK;UAAiB,CAAC,GAAGxiK,KAAK;UACzC,IAAIkT,KAAK,KAAK,CAAC,EAAE0hC,eAAe,GAAG10C,OAAO;UAE1C,IAAI,CAAC49J,aAAa,CAAC59J,OAAO,CAAC,EAAE;YACzB49J,aAAa,CAAC59J,OAAO,CAAC,GAAG;cACrBnD,EAAE,EAAEmD,OAAO;cACX/B,KAAK,EAAEqkK;YACX,CAAC;UACL;UAEA,OAAO;YACHzlK,EAAE,EAAEmD,OAAO;YACX/B,KAAK,EAAE+B,OAAO;YACdhD,IAAI,EAAEslK;UACV,CAAC;QACL,CAAC,CAAC;QACFvE,iBAAiB,CAAC/gG,OAAO,CAAC;UAAEngE,EAAE,EAAE,GAAG;UAAEoB,KAAK,EAAE,EAAE;UAAEjB,IAAI,EAAE;QAAG,CAAC,CAAC;MAC/D,CAAC,CAAC;IACN;EACJ;;EAEA;EACA;EACA,SAASulK,0BAA0BA,CAAClgK,OAAO,EAAEkjG,QAAQ,EAAE;IACnD,IAAIi9D,KAAK,GAAGxoK,KAAK,CAACC,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,YAAY,CAAC;IACzD,IAAIy7J,QAAQ,GAAGzoK,KAAK,CAACC,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,cAAc,CAAC;IAC9D;;IAEA,IAAI,CAACw7J,KAAK,IAAI,CAACC,QAAQ,EAAE,OAAO,CAAC;IACjC,IAAID,KAAK,EAAE;MACP,IAAIrE,eAAe,EAAE;QACjBnkK,KAAK,CAACC,MAAM,CAACf,SAAS,CAACmE,MAAM,CAAC,UAAU,CAAC;QACzC,IAAI0jK,eAAe,GAAG,EAAE,CAACn4J,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;QACtF,IAAIq+J,eAAe,CAACpnK,MAAM,GAAG,CAAC,EAAE;UAC5B8hK,oBAAoB,CAACviK,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACrD,CAAC,MAAM;UACHsiK,oBAAoB,CAACviK,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAClD;MACJ,CAAC,MAAM,IAAI,CAAC+kK,eAAe,EAAE;QACzBuE,QAAQ,CAACrgK,OAAO,EAAEkjG,QAAQ,CAAC;MAC/B;IACJ;IACA,IAAIk9D,QAAQ,EAAE;MACV,IAAItE,eAAe,EAAE;QACjBnkK,KAAK,CAACC,MAAM,CAACf,SAAS,CAACmE,MAAM,CAAC,UAAU,CAAC;QACzC,IAAI6jK,kBAAkB,GAAG,EAAE,CAACt4J,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;QAC3F,IAAIw+J,kBAAkB,CAACvnK,MAAM,GAAG,CAAC,EAAE;UAC/BiiK,iBAAiB,CAAC1iK,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UAC9C0iK,gBAAgB,CAAC3iK,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACjD,CAAC,MAAM;UACH0iK,gBAAgB,CAAC3iK,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UAC1CwiK,iBAAiB,CAAC1iK,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC/C;MACJ;IACJ;EACJ;EACA,SAASgpK,UAAUA,CAAA,EAAG;IAClB,IAAI,CAACzE,WAAW,IAAIA,WAAW,CAAChkK,MAAM,KAAK,CAAC,EAAE;MAC1C;MACA,MAAMuT,OAAO,GAAG,mJAAmJ;MACnKmvJ,UAAU,CAAC7iK,SAAS,GAAG,qBAAqB0T,OAAO,OAAO;MAC1D;IACJ;;IAEA;IACAywJ,WAAW,CAACjqJ,IAAI,CAAC,UAAUjU,CAAC,EAAEuU,CAAC,EAAE;MAC7B,IAAI2uJ,KAAK,GAAGljK,CAAC,CAACmlG,QAAQ,CAAC/gE,WAAW,CAAC,CAAC;MACpC,IAAI++H,KAAK,GAAG5uJ,CAAC,CAAC4wF,QAAQ,CAAC/gE,WAAW,CAAC,CAAC;MACpC,OAAO8+H,KAAK,GAAGC,KAAK,GAAG,CAAC,CAAC,GAAGD,KAAK,GAAGC,KAAK,GAAG,CAAC,GAAG,CAAC;IACrD,CAAC,CAAC;;IAEF;IACAjF,WAAW,CAAC/jK,OAAO,CAAC2rG,QAAQ,IAAI;MAC5B,IAAIoQ,IAAI,GAAGt5G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACxC+4G,IAAI,CAACz8G,SAAS,CAACE,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC;MACpDu8G,IAAI,CAACr4G,YAAY,CAAC,iBAAiB,EAAEioG,QAAQ,CAAC1oG,EAAE,CAAC;MACjD84G,IAAI,CAACr4G,YAAY,CAAC,IAAI,EAAE,WAAW,GAAGioG,QAAQ,CAAC1oG,EAAE,CAAC;MAElD,IAAIgwI,UAAU,GAAGxwI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC9CiwI,UAAU,CAAC3zI,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;MACxCyzI,UAAU,CAACvvI,YAAY,CAAC,iBAAiB,EAAEioG,QAAQ,CAAC1oG,EAAE,CAAC;MAEvD,IAAI0vI,QAAQ,GAAGlwI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC5C2vI,QAAQ,CAACrzI,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;MAEpCyzI,UAAU,CAACrzI,SAAS,GAAG;AACnC;AACA,oCAAoC+rG,QAAQ,CAAC1oG,EAAE;AAC/C;AACA;AACA,YAAY6gK,aAAa,CAACn4D,QAAQ,CAAC1oG,EAAE,CAAC,CAAC,CAAC,CAAC,CAACioG,SAAS,IAAI44D,aAAa,CAACn4D,QAAQ,CAAC1oG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC+nG,QAAQ;AAC7F,kCAAkC84D,aAAa,CAACn4D,QAAQ,CAAC1oG,EAAE,CAAC,CAAC,CAAC,CAAC,CAACwiK,MAAM,KAAK,EAAE,GACvD,EAAE,GACF,UAAU,GAAG3B,aAAa,CAACn4D,QAAQ,CAAC1oG,EAAE,CAAC,CAAC,CAAC,CAAC,CAACwiK,MAAM;AACvE,OACO;MAEK,IAAIwD,cAAc,GAAGxmK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAClDimK,cAAc,CAACrpK,SAAS,GAAG,+DAA+D,CAAC,CAAC;MAC5FqpK,cAAc,CAAC3pK,SAAS,CAACE,GAAG,CAAC,0BAA0B,CAAC;MACxDmzI,QAAQ,CAACzyI,WAAW,CAAC+oK,cAAc,CAAC;MAEpCltD,IAAI,CAAC77G,WAAW,CAAC+yI,UAAU,CAAC;MAC5Bl3B,IAAI,CAAC77G,WAAW,CAACyyI,QAAQ,CAAC;;MAE1B;MACAmxB,aAAa,CAACn4D,QAAQ,CAAC1oG,EAAE,CAAC,CAACjD,OAAO,CAAC+kK,GAAG,IAAI;QACtC,IAAImE,OAAO,GAAGlF,aAAa,CAACe,GAAG,CAACgB,SAAS,CAAC;QAC1C,IAAIoD,YAAY,GAAGD,OAAO,GAAGA,OAAO,CAAC7kK,KAAK,GAAG,IAAI;QACjD,IAAI+kK,gBAAgB,GAAGj2I,IAAI,CAAC8E,mBAAmB,CAAC8sI,GAAG,CAACE,UAAU,CAAC;QAC/D,IAAIoE,cAAc,GAAGl2I,IAAI,CAAC8E,mBAAmB,CAAC8sI,GAAG,CAACC,SAAS,CAAC;QAC5D,IAAIsE,OAAO,GAAG7mK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAC3CsmK,OAAO,CAAChqK,SAAS,CAACE,GAAG,CAAC,mBAAmB,EAAE,YAAY,CAAC;QAExD,IAAIulK,GAAG,CAACY,gBAAgB,KAAK,EAAE,EAC3B,IAAI4D,iBAAiB,GAAGjD,oBAAoB,CAACvB,GAAG,CAACY,gBAAgB,CAAC,CAAC,KAClE,IAAI4D,iBAAiB,GAAGlmK,KAAK,CAACmO,KAAK;;QAExC;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA83J,OAAO,CAAC5lK,YAAY,CAAC,cAAc,EAAEqhK,GAAG,CAACE,UAAU,CAAC;QACpDqE,OAAO,CAAC5lK,YAAY,CAAC,kBAAkB,EAAEioG,QAAQ,CAAC1oG,EAAE,CAAC;QAErDqmK,OAAO,CAAC1pK,SAAS,GAAG;AACpC,iBAAiBwpK,gBAAgB;AACjC,iBAAiBC,cAAc,KAAK,EAAE,GAAGhmK,KAAK,CAACmO,KAAK,GAAG63J,cAAc;AACrE,iBAAiBE,iBAAiB;AAClC,iBAAiBJ,YAAY,GAAGA,YAAY,GAAGpE,GAAG,CAACY,gBAAgB,KAAK,GAAG,IAAIZ,GAAG,CAACY,gBAAgB,KAAK,GAAG,GAAGtiK,KAAK,CAACmO,KAAK,GAAG,GAAG;AAC/H,WAAW;QACK;QACA;QACA,IAAIX,CAAC,CAACC,OAAO,CAACwhC,gBAAgB,EAAE;UAC5Bg3H,OAAO,CAAC1mK,gBAAgB,CAAC,OAAO,EAAE,YAAY;YAC1C+lK,0BAA0B,CAACvoK,KAAK,CAACC,MAAM,EAAEsrG,QAAQ,CAAC1oG,EAAE,CAAC;UACzD,CAAC,CAAC;QACN;QACA0vI,QAAQ,CAACzyI,WAAW,CAACopK,OAAO,CAAC;MACjC,CAAC,CAAC;MAEFr2B,UAAU,CAACrwI,gBAAgB,CAAC,OAAO,EAAE,YAAY;QAC7C+lK,0BAA0B,CAACvoK,KAAK,CAACC,MAAM,CAAC;MAC5C,CAAC,CAAC;MACFoiK,UAAU,CAACviK,WAAW,CAAC67G,IAAI,CAAC;IAChC,CAAC,CAAC;;IAEF;IACA,IAAIytD,YAAY,GAAG/mK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD,IAAIymK,YAAY,GAAGhnK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD,IAAI0mK,YAAY,GAAGjnK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD,IAAI2mK,YAAY,GAAGlnK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChDwmK,YAAY,CAAClqK,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAC7CiqK,YAAY,CAACnqK,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAC7CkqK,YAAY,CAACpqK,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAC7CmqK,YAAY,CAACrqK,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAC7CijK,UAAU,CAACviK,WAAW,CAACspK,YAAY,CAAC;IACpC/G,UAAU,CAACviK,WAAW,CAACupK,YAAY,CAAC;IACpChH,UAAU,CAACviK,WAAW,CAACwpK,YAAY,CAAC;IACpCjH,UAAU,CAACviK,WAAW,CAACypK,YAAY,CAAC;EACxC;;EAEA;EACA,SAASC,mBAAmBA,CAACC,QAAQ,EAAE;IACnC5C,cAAc,CAAC,CAAC;IAChBzkK,aAAa,GAAGC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;IAC1DF,aAAa,CAAClD,SAAS,CAACmE,MAAM,CAAC,UAAU,CAAC;IAE1C8gK,eAAe,GAAG,CAACA,eAAe;IAClCsF,QAAQ,CAACvqK,SAAS,CAACmE,MAAM,CAAC,SAAS,CAAC;IAEpC,IAAI8gK,eAAe,EAAE;MACjB/B,sBAAsB,CAACljK,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MACjDL,UAAU,CAACQ,IAAI,CAAC,CAAC;IACrB,CAAC,MAAM;MACH8iK,sBAAsB,CAACljK,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MAC9CN,UAAU,CAACO,IAAI,CAAC,CAAC;IACrB;IAEA,IAAI0nK,eAAe,GAAG,EAAE,CAACn4J,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;IACtFq+J,eAAe,CAACnnK,OAAO,CAACuW,GAAG,IAAIA,GAAG,CAACjX,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChE,IAAI+nK,kBAAkB,GAAG,EAAE,CAACt4J,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;IAC3Fw+J,kBAAkB,CAACtnK,OAAO,CAACyS,MAAM,IAAIA,MAAM,CAACnT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC,CAAC;EAC7E;EACA;EACA,SAAS6nK,iBAAiBA,CAACD,eAAe,EAAE;IACxCpW,kBAAkB,CACd,IAAI,EACHhoG,GAAG,GAAGA,CAAA,KAAM;MACT,IAAIA,GAAG,EAAE;QACL,IAAI+gH,eAAe,GAAG,EAAE;QACxB3C,eAAe,CAACnnK,OAAO,CAACuW,GAAG,IAAI;UAC3BuzJ,eAAe,IAAI,GAAGvzJ,GAAG,CAACjW,OAAO,CAACglD,UAAU,IAAI/uC,GAAG,CAACjW,OAAO,CAACypK,MAAM,GAAG;QACzE,CAAC,CAAC;QACFC,cAAc,CAACF,eAAe,CAAC;MACnC;IACJ,CACJ,CAAC;EACL;EACA;EACA,SAASvC,gBAAgBA,CAAC/jK,IAAI,EAAE8jK,kBAAkB,EAAE;IAChD16D,iBAAiB,GAAG,EAAE;IACtB06D,kBAAkB,CAACtnK,OAAO,CAACuW,GAAG,IAAI;MAC9Bg3B,GAAG,GAAG,CAAC,CAAC;MACRA,GAAG,CAAC,IAAI,CAAC,GAAGh3B,GAAG,CAACjW,OAAO,CAAC2xH,UAAU;MAClCrlB,iBAAiB,CAAC/+F,IAAI,CAAC0/B,GAAG,CAAC;IAC/B,CAAC,CAAC;IACF08H,qBAAqB,CAACzmK,IAAI,CAAC;EAC/B;;EAEA;EACA,SAASslK,QAAQA,CAACrgK,OAAO,EAAEkjG,QAAQ,EAAE;IACjC;IACA,IAAIi4D,sBAAsB,EAAE;MACxB;IACJ;IACA;IACA,IAAIiC,SAAS;IACb,IAAInB,MAAM;IACV,IAAIwF,OAAO;IACX,IAAIC,SAAS;IACb,IAAIC,UAAU;IAEd,IAAIC,OAAO,GACP5hK,OAAO,CAACyR,UAAU,CAAC,CAAC,CAAC,CAACowJ,iBAAiB,KAAK,CAAC,GACvC,IAAI,GACJn3I,IAAI,CAACgF,iBAAiB,CAAC1vB,OAAO,CAACyR,UAAU,CAAC,CAAC,CAAC,CAACta,SAAS,CAAC;IACjE,IAAImqK,MAAM,GAAG52I,IAAI,CAACgF,iBAAiB,CAAC1vB,OAAO,CAACyR,UAAU,CAAC,CAAC,CAAC,CAACta,SAAS,CAAC;IACpEkkK,aAAa,CAACn4D,QAAQ,CAAC,CAAC3rG,OAAO,CAAC+kK,GAAG,IAAI;MACnC,IAAIA,GAAG,CAACE,UAAU,KAAK8E,MAAM,EAAE;QAC3BlE,SAAS,GAAGd,GAAG,CAACc,SAAS;QACzBnB,MAAM,GAAGK,GAAG,CAACY,gBAAgB;QAC7BuE,OAAO,GAAGnF,GAAG,CAACgB,SAAS;MAC3B;IACJ,CAAC,CAAC;IAEF,IAAIzzJ,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACpBgB,UAAU,EAAE,oBAAoB;MAChC2O,MAAM,EAAE,GAAGqxJ,aAAa,CAACn4D,QAAQ,CAAC,CAAC,CAAC,CAAC,CAACT,SAAS,IAAI44D,aAAa,CAACn4D,QAAQ,CAAC,CAAC,CAAC,CAAC,CAACX,QAAQ,EAAE;MACxF/nG,EAAE,EAAE,WAAW0oG,QAAQ;IAC3B,CAAC,CAAC;IAEF,IAAI4+D,WAAW,GAAGjkK,KAAK,CAACxD,KAAK,CAAC;MAC1BG,EAAE,EAAE,QAAQ;MACZ2B,KAAK,EAAE,SAAS;MAChBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0lK;IACX,CAAC,CAAC;IACF,IAAIS,YAAY,GAAGlkK,KAAK,CAACxD,KAAK,CAAC;MAC3BG,EAAE,EAAE,SAAS;MACb2B,KAAK,EAAE,UAAU;MACjBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEgmK;IACX,CAAC,CAAC;IAEF,IAAII,cAAc,GAAGhmK,QAAQ,CAAC3B,KAAK,CAAC;MAChC4B,UAAU,EAAE,gBAAgB;MAC5BE,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF;IACA;IACA;IACA;IACA;IACAm/J,aAAa,GAAGj+J,QAAQ,CAAC3B,KAAK,CAAC;MAC3BG,EAAE,EAAE,eAAe;MACnByB,UAAU,EAAE,eAAe;MAC3BE,KAAK,EAAE,OAAO;MACdrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEFwvI,OAAO,GAAGlwI,MAAM,CAACC,KAAK,CAAC;MACnBM,IAAI,EAAE,MAAM;MACZH,EAAE,EAAE,YAAY;MAChBM,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,MAAM;MACZoB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB,IAAIkgK,gBAAgB,EAAE;UAClBiG,cAAc,GAAGhoK,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;UAC1D;UACAg9J,aAAa,GAAGjgK,QAAQ,CAACiD,cAAc,CAAC,eAAe,CAAC;UACxD;UACA,IAAIg9J,aAAa,EACb5nH,eAAe,GAAG4nH,aAAa,CAAC3/J,OAAO,CAAC2/J,aAAa,CAACx9J,aAAa,CAAC,CAACb,KAAK;UAC9E+/J,cAAc,GAAGqG,cAAc,CAAC1nK,OAAO,CAAC0nK,cAAc,CAACvlK,aAAa,CAAC,CAACb,KAAK;UAC3EqmK,aAAa,CACT/+D,QAAQ,EACRo+D,MAAM,EACNI,SAAS,EACTE,OAAO,EACPD,UAAU,EACVhG,cAAc,EACdyB,SAAS,EACT/qH,eACJ,CAAC;UACDtoC,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACrB;QACAkyJ,gBAAgB,GAAG,IAAI;MAC3B;IACJ,CAAC,CAAC;IACF,IAAI/V,SAAS,GAAG5rJ,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBN,IAAI,EAAE,QAAQ;MACdoB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBysJ,kBAAkB,CACdz+I,KAAK,EACJy2C,GAAG,GAAGA,CAAA,KAAM;UACT,IAAIA,GAAG,EAAE;YACL4hH,oBAAoB,GAAG,GAAGh/D,QAAQ,IAAIo+D,MAAM,GAAG;YAC/CC,cAAc,CAACW,oBAAoB,CAAC;YACpCn4J,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;UACrB;QACJ,CACJ,CAAC;MACL;IACJ,CAAC,CAAC;IAEFi4J,WAAW,CAAC3nK,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MACzC,IAAI2nK,WAAW,GAAG9nK,QAAQ,CAACiD,cAAc,CAAC,QAAQ,CAAC;MACnDykK,SAAS,GAAGI,WAAW,CAAClmK,KAAK;IACjC,CAAC,CAAC;IAEFmmK,YAAY,CAAC5nK,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MAC1C,IAAI4nK,YAAY,GAAG/nK,QAAQ,CAACiD,cAAc,CAAC,SAAS,CAAC;MACrD0kK,UAAU,GAAGI,YAAY,CAACnmK,KAAK;IACnC,CAAC,CAAC;IAEFomK,cAAc,CAAC7nK,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MAC5C,IAAIqC,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEk/J,cAAc,GAAGn/J,cAAc,CAACZ,KAAK;MACrCylJ,6BAA6B,CAAC,CAAC;MAC/B;MACA;MACA;MACA;MACA;MACA;MACA;IACJ,CAAC,CAAC;IAEF/W,OAAO,CAACnwI,gBAAgB,CAAC,UAAU,EAAExC,KAAK,IAAI;MAC1C,IAAIA,KAAK,CAAC0oB,OAAO,KAAK,EAAE,IAAIiqH,OAAO,CAACzzI,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;QAChEo3J,gBAAgB,GAAG,KAAK;MAC5B;IACJ,CAAC,CAAC;IAEF9B,aAAa,CAAC9/J,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MAC3C,IAAIqC,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEm/J,aAAa,GAAGp/J,cAAc,CAACgC,SAAS;MACxC6zC,eAAe,GAAG71C,cAAc,CAAChC,EAAE;MACnC6mJ,6BAA6B,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF96G,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvCgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC;IAC5B/jG,OAAO,CAAC9uC,WAAW,CAACuuJ,SAAS,CAAC;IAE9Bn8I,KAAK,CAACpS,WAAW,CAACqqK,WAAW,CAAC;IAC9Bj4J,KAAK,CAACpS,WAAW,CAACsqK,YAAY,CAAC;IAC/Bl4J,KAAK,CAACpS,WAAW,CAACuqK,cAAc,CAAC;IACjCn4J,KAAK,CAACpS,WAAW,CAACwiK,aAAa,CAAC;IAChC;IACA;IACApwJ,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;IAEjB7N,QAAQ,CAAC5E,QAAQ,CAAC4qK,cAAc,EAAExG,cAAc,EAAES,MAAM,CAAC;IACzD;IACAjgK,QAAQ,CAAC5E,QAAQ,CAAC6iK,aAAa,EAAEyB,iBAAiB,EAAE+F,OAAO,CAAC;IAC5DpgB,6BAA6B,CAAC,CAAC;EACnC;;EAEA;EACA,SAAS8gB,+BAA+BA,CAACC,YAAY,EAAE;IACnD,IAAIv4J,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACpB2P,MAAM,EAAE;IACZ,CAAC,CAAC;IAEF,IAAIq4J,WAAW,GAAGjoK,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,UAAU;MAChBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB23J,qBAAqB,CAAC,IAAI,CAAC;MAC/B;IACJ,CAAC,CAAC;IAEF,IAAI94H,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjBi8F,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;MAClC;IACJ,CAAC,CAAC;IAEF,IAAIlqG,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC4qK,WAAW,CAAC;IAChC97H,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAE9B,IAAI45H,QAAQ;IACZF,YAAY,CAAC7qK,OAAO,CAAC2rG,QAAQ,IAAI;MAC7Bo/D,QAAQ,GAAGtoK,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;MACtC+nK,QAAQ,CAACnrK,SAAS,GAAG;AACjC,uBAAuB+rG,QAAQ,CAACpjG,IAAI;AACpC,2BAA2BojG,QAAQ,CAACjhG,QAAQ;AAC5C,6BAA6BihG,QAAQ,CAAC7yE,SAAS;AAC/C,2BAA2B6yE,QAAQ,CAAC5zE,OAAO;AAC3C;AACA,SAAS;MACGzlB,KAAK,CAACpS,WAAW,CAAC6qK,QAAQ,CAAC;IAC/B,CAAC,CAAC;IAEFz4J,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACrB;EAGA,SAASw3I,6BAA6BA,CAAA,EAAG;IAErC,IAAIhvG,eAAe,GAAG,EAAE;IACxB,IAAIkwH,gBAAgB,GAAG,EAAE;IACzB,IAAI9kK,KAAK,GAAGzD,QAAQ,CAACiD,cAAc,CAAC,eAAe,CAAC;IACpD,IAAIg/J,MAAM,GAAGjiK,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;IACtD,IAAIQ,KAAK,EACL40C,eAAe,GAAG50C,KAAK,CAACnD,OAAO,CAACmD,KAAK,CAAChB,aAAa,CAAC,CAACb,KAAK;IAC9D,IAAIqgK,MAAM,EACNsG,gBAAgB,GAAGtG,MAAM,CAAC3hK,OAAO,CAAC2hK,MAAM,CAACx/J,aAAa,CAAC,CAACb,KAAK;IAEjE,IAAIy2C,eAAe,KAAK,EAAE,KAAKkwH,gBAAgB,IAAI,GAAG,IAAIA,gBAAgB,IAAI,GAAG,CAAC,EAAE;MAChFtI,aAAa,CAACpjK,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACxC,CAAC,MAAM;MACHkjK,aAAa,CAACpjK,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC3C;IACA0rK,kBAAkB,CAAC,CAAC;EACxB;EAEA,SAASA,kBAAkBA,CAAA,EAAG;IAC1B,IAAIj2D,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxBgzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACjC;IACJ,CAAC,MAAM;MACHuzI,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC;EACJ;;EAEA;EACA,SAASynK,qBAAqBA,CAAA,EAAG;IAC7B,IAAI10J,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACpB2P,MAAM,EAAE,yBAAyB;MACjCxP,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,IAAIioK,UAAU,GAAGroK,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,UAAU;MAChBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QAEjB,MAAM64J,QAAQ,GAAGv+D,iBAAiB,CAACpjG,GAAG,CAAC,UAAU4hK,EAAE,EAAE;UACjD,OAAOA,EAAE,CAACnoK,EAAE;QAChB,CAAC,CAAC,CAACuoB,IAAI,CAAC,GAAG,CAAC;;QAEZ;QACA,MAAM6/I,kBAAkB,GAAG,MAAMlG,cAAc,CAACmG,+BAA+B,CAAC;UAC5Ej8H,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBoyH,gBAAgB,EAAEJ,QAAQ;UAC1Br6C,WAAW,EAAEA,WAAW;UACxB/8D,UAAU,EAAE+uG;QAChB,CAAC,CAAC;;QAEF;QACA,IAAIuI,kBAAkB,CAACtrK,MAAM,KAAK,CAAC,EAAE;UACjCkqK,qBAAqB,CAAC,IAAI,CAAC;QAC/B,CAAC,MAAM;UACHW,+BAA+B,CAACS,kBAAkB,CAAC;QACvD;MACJ;IACJ,CAAC,CAAC;IACF,IAAIG,WAAW,GAAG3oK,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,WAAW;MACjBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB23J,qBAAqB,CAAC,KAAK,CAAC;MAChC;IACJ,CAAC,CAAC;IACF,IAAIj7H,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IACtCwvC,OAAO,CAAC9uC,WAAW,CAACgrK,UAAU,CAAC;IAC/Bl8H,OAAO,CAAC9uC,WAAW,CAACsrK,WAAW,CAAC;IAChCl5J,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACrB;;EAEA;EACA;EACA,SAAS23J,qBAAqBA,CAACwB,MAAM,EAAE;IACnC,IAAIC,OAAO,GAAGl5J,KAAK,CAAC1P,KAAK,CAAC;MACtB2P,MAAM,EAAE,UAAU;MAClBxP,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,IAAI0oK,QAAQ,GAAGn5J,KAAK,CAAC1P,KAAK,CAAC;MACvB2P,MAAM,EAAE,WAAW;MACnBxP,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,IAAIwoI,WAAW,GAAGt4G,IAAI,CAACga,cAAc,CAAC,CAAC;IAEvC,IAAIy+H,WAAW,GAAGtlK,KAAK,CAACxD,KAAK,CAAC;MAC1BG,EAAE,EAAE,QAAQ;MACZ2B,KAAK,EAAE,SAAS;MAChBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEonI;IACX,CAAC,CAAC;IAEF,IAAIogC,YAAY,GAAGvlK,KAAK,CAACxD,KAAK,CAAC;MAC3BG,EAAE,EAAE,SAAS;MACb2B,KAAK,EAAE,UAAU;MACjBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEonI;IACX,CAAC,CAAC;IAEF,IAAIy/B,UAAU,GAAGroK,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,UAAU;MAChBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBP,EAAE,EAAE,YAAY;MAChBqB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBwnK,OAAO,CAACF,WAAW,CAAC;QACpBp5J,KAAK,CAAC/S,IAAI,CAACisK,OAAO,CAAC;QACnBn9D,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;QAC9B;MACJ;IACJ,CAAC,CAAC;IAEF,IAAIsyB,WAAW,GAAG3oK,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,WAAW;MACjBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBynK,QAAQ,CAAC,CAAC;QACVx9D,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;QAC9B1mI,KAAK,CAAC/S,IAAI,CAACksK,QAAQ,CAAC;QACpB;MACJ;IACJ,CAAC,CAAC;IAEF,IAAIK,WAAW,GAAGnpK,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBiqG,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;QAC9B1mI,KAAK,CAAC/S,IAAI,CAACisK,OAAO,CAAC;MACvB;IACJ,CAAC,CAAC;IAEF,IAAIO,YAAY,GAAGppK,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBiqG,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;QAC9B1mI,KAAK,CAAC/S,IAAI,CAACksK,QAAQ,CAAC;MACxB;IACJ,CAAC,CAAC;IAEF,IAAI38H,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhCosK,WAAW,CAAChpK,gBAAgB,CAAC,QAAQ,EAAE,YAAY;MAC/C,IAAI2nK,WAAW,GAAG9nK,QAAQ,CAACiD,cAAc,CAAC,QAAQ,CAAC;MACnD,IAAI6kK,WAAW,CAAClmK,KAAK,KAAK,EAAE,EAAE;QAC1B6mK,UAAU,CAAC5rK,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACpCosK,WAAW,CAACtsK,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACtC,CAAC,MAAM;QACH0rK,UAAU,CAAC5rK,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACvCqsK,WAAW,CAACtsK,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACzC;IACJ,CAAC,CAAC;IAEFssK,YAAY,CAACjpK,gBAAgB,CAAC,QAAQ,EAAE,YAAY;MAChD,IAAI4nK,YAAY,GAAG/nK,QAAQ,CAACiD,cAAc,CAAC,SAAS,CAAC;MACrD,IAAI8kK,YAAY,CAACnmK,KAAK,KAAK,EAAE,EAAE;QAC3BmnK,WAAW,CAAClsK,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrCqsK,YAAY,CAACvsK,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACvC,CAAC,MAAM;QACHgsK,WAAW,CAAClsK,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACxCssK,YAAY,CAACvsK,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC1C;IACJ,CAAC,CAAC;IAEF,QAAQksK,MAAM;MACV,KAAK,IAAI;QAAE;UACPC,OAAO,CAACxrK,WAAW,CAAC0rK,WAAW,CAAC;UAChC58H,OAAO,CAAC9uC,WAAW,CAACgrK,UAAU,CAAC;UAC/Bl8H,OAAO,CAAC9uC,WAAW,CAAC8rK,WAAW,CAAC;UAChCN,OAAO,CAACxrK,WAAW,CAAC8uC,OAAO,CAAC;UAC5Bx8B,KAAK,CAAC9S,IAAI,CAACgsK,OAAO,CAAC;UACnB;QACJ;MACA,KAAK,KAAK;QAAE;UACRC,QAAQ,CAACzrK,WAAW,CAAC2rK,YAAY,CAAC;UAClC78H,OAAO,CAAC9uC,WAAW,CAACsrK,WAAW,CAAC;UAChCx8H,OAAO,CAAC9uC,WAAW,CAAC+rK,YAAY,CAAC;UACjCN,QAAQ,CAACzrK,WAAW,CAAC8uC,OAAO,CAAC;UAC7Bx8B,KAAK,CAAC9S,IAAI,CAACisK,QAAQ,CAAC;UACpB;QACJ;IACJ;EACJ;EAEA,SAASG,OAAOA,CAAA,EAAG;IACf,IAAI/B,MAAM,GAAGtnK,QAAQ,CAACiD,cAAc,CAAC,QAAQ,CAAC,CAACrB,KAAK;IACpD0lK,MAAM,IAAI,KAAK;IACf,IAAImC,qBAAqB,GAAGtH,yBAAyB,CAACh4D,iBAAiB,CAAC;IACxE,IAAIu/D,qBAAqB,GAAGv/D,iBAAiB,CAAC7sG,MAAM;IACpD;IACAolK,cAAc,CAACiH,iBAAiB,CAC5BF,qBAAqB,EACrBp7C,WAAW,EACXgyC,UAAU,EACViH,MAAM,EACNhhH,GAAG,IAAI;MACH;MACA,IAAIA,GAAG,CAAC9/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;QAC3B,IAAI2O,KAAK,GAAGmxB,GAAG,CAAC7pC,MAAM,CAAC,aAAa,CAAC;QACrC,IAAI4Y,GAAG,GAAGixB,GAAG,CAAC7pC,MAAM,CAAC,cAAc,CAAC;QACpC,IAAImtJ,gBAAgB,GAAGtjH,GAAG,CAACzhD,SAAS,CAACswB,KAAK,GAAG,EAAE,EAAEE,GAAG,GAAG,CAAC,CAAC,CAAClU,KAAK,CAAC,GAAG,CAAC;MACxE;MACA0hJ,qBAAqB,CAACrrI,EAAE,IAAI;QACxBwoI,UAAU,CAAC7iK,SAAS,GAAG,EAAE;QACzB4oK,UAAU,CAAC,CAAC;QACZ,IAAI6D,gBAAgB,EAAE;UAClBA,gBAAgB,CAACrsK,OAAO,CAAC2rG,QAAQ,IAAI;YACjC,IAAIoQ,IAAI,GAAGt5G,QAAQ,CAACiD,cAAc,CAAC,WAAW,GAAGimG,QAAQ,CAAC;YAC1DsnC,UAAU,GAAGl3B,IAAI,CAACr5G,aAAa,CAAC,eAAe,CAAC;YAChDuwI,UAAU,CAAC3zI,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;YACxC8sK,cAAc,GAAGr5B,UAAU,CAACvwI,aAAa,CAAC,iBAAiB,CAAC;YAC5D4pK,cAAc,CAAC1sK,SAAS,GAAG,cAAc;UAC7C,CAAC,CAAC;QACN;MACJ,CAAC,CAAC;IACN,CACJ,CAAC;IACDgtG,iBAAiB,GAAG,IAAI;EAC5B;EAEA,SAASm/D,QAAQA,CAAA,EAAG;IAChB,IAAI1B,OAAO,GAAG5nK,QAAQ,CAACiD,cAAc,CAAC,SAAS,CAAC,CAACrB,KAAK;IACtDgmK,OAAO,IAAI,KAAK;IAChB,IAAIkC,sBAAsB,GAAGzH,0BAA0B,CAACl4D,iBAAiB,CAAC;IAC1Eu4D,cAAc,CAACqH,wBAAwB,CACnCD,sBAAsB,EACtB,WAAW,EACXlC,OAAO,EACPv5C,WAAW,EACXgyC,UAAU,EACV,EAAE,EACFhoH,eAAe,EACfiO,GAAG,IAAI;MACH;MACA,IAAIA,GAAG,CAAC9/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;QAC3B,IAAI2O,KAAK,GAAGmxB,GAAG,CAAC7pC,MAAM,CAAC,aAAa,CAAC;QACrC,IAAI4Y,GAAG,GAAGixB,GAAG,CAAC7pC,MAAM,CAAC,cAAc,CAAC;QACpC,IAAImtJ,gBAAgB,GAAGtjH,GAAG,CAACzhD,SAAS,CAACswB,KAAK,GAAG,EAAE,EAAEE,GAAG,GAAG,CAAC,CAAC,CAAClU,KAAK,CAAC,GAAG,CAAC;MACxE;MACA0hJ,qBAAqB,CAACrrI,EAAE,IAAI;QACxBwoI,UAAU,CAAC7iK,SAAS,GAAG,EAAE;QACzB4oK,UAAU,CAAC,CAAC;QACZ,IAAI6D,gBAAgB,EAAE;UAClBA,gBAAgB,CAACrsK,OAAO,CAAC2rG,QAAQ,IAAI;YACjC,IAAIoQ,IAAI,GAAGt5G,QAAQ,CAACiD,cAAc,CAAC,WAAW,GAAGimG,QAAQ,CAAC;YAC1DsnC,UAAU,GAAGl3B,IAAI,CAACr5G,aAAa,CAAC,eAAe,CAAC;YAChDuwI,UAAU,CAAC3zI,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;YACxC8sK,cAAc,GAAGr5B,UAAU,CAACvwI,aAAa,CAAC,iBAAiB,CAAC;YAC5D4pK,cAAc,CAAC1sK,SAAS,GAAG,cAAc;UAC7C,CAAC,CAAC;QACN;MACJ,CAAC,CAAC;IACN,CACJ,CAAC;IACDgtG,iBAAiB,GAAG,IAAI;EAC5B;EAEA,SAASo9D,cAAcA,CAACW,oBAAoB,EAAE;IAC1C;IACAxF,cAAc,CAACsH,wBAAwB,CAAC9B,oBAAoB,EAAE75C,WAAW,EAAEgyC,UAAU,EAAE/5G,GAAG,IAAI;MAC1Fu8G,qBAAqB,CAACrrI,EAAE,IAAI;QACxBwoI,UAAU,CAAC7iK,SAAS,GAAG,EAAE;QACzB4oK,UAAU,CAAC,CAAC;MAChB,CAAC,CAAC;IACN,CAAC,CAAC;EACN;EACA;EACA,SAASzX,kBAAkBA,CAAC2b,QAAQ,EAAEpoK,QAAQ,EAAE;IAC5C,IAAIooK,QAAQ,EAAEl6J,KAAK,CAAC/S,IAAI,CAACitK,QAAQ,CAAC;IAElC,IAAIC,SAAS,GAAGn6J,KAAK,CAAC1P,KAAK,CAAC;MACxBgB,UAAU,EAAE;IAChB,CAAC,CAAC;IAEF,IAAIqtC,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,IAAI;MACVoB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAACktK,SAAS,CAAC;QACrB,IAAID,QAAQ,EAAEl6J,KAAK,CAAC9S,IAAI,CAACgtK,QAAQ,CAAC;QAClCpoK,QAAQ,CAAEykD,GAAG,GAAG,KAAM,CAAC;MAC3B;IACJ,CAAC,CAAC;IACF,IAAI6jH,UAAU,GAAG/pK,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,cAAc;MACpBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBP,EAAE,EAAE,eAAe;MACnBC,IAAI,EAAE,QAAQ;MACdoB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAACktK,SAAS,CAAC;QACrBroK,QAAQ,CAAEykD,GAAG,GAAG,IAAK,CAAC;MAC1B;IACJ,CAAC,CAAC;IAEF,IAAI/Z,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAC9BnC,OAAO,CAAC9uC,WAAW,CAAC0sK,UAAU,CAAC;IAE/B,IAAI7B,QAAQ,GAAGtoK,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC1C+nK,QAAQ,CAACzrK,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACzCurK,QAAQ,CAACnrK,SAAS,GAAG,8CAA8C;IACnE+sK,SAAS,CAACzsK,WAAW,CAAC6qK,QAAQ,CAAC;IAC/B4B,SAAS,CAACzsK,WAAW,CAAC8uC,OAAO,CAAC;IAC9Bx8B,KAAK,CAAC9S,IAAI,CAACitK,SAAS,CAAC;EACzB;;EAEA;EACA,SAASl7B,QAAQA,CACbnsF,UAAU,EACVunH,SAAS,EACT1C,SAAS,EACT2C,UAAU,EACV1C,UAAU,EACVhG,cAAc,EACd2I,SAAS,EACX;IACE,IAAIlI,cAAc,GAAG,GAAGv/G,UAAU,IAAIunH,SAAS,GAAG;;IAElD;IACA,IAAI1C,SAAS,IAAIC,UAAU,EAAE;MACzBD,SAAS,IAAI,KAAK;MAClBC,UAAU,IAAI,KAAK;MACnB,IAAI;QACA,IAAID,SAAS,GAAGC,UAAU,EAAE;UACxB,MAAM,SAAS;QACnB;QACAjF,cAAc,CAACqH,wBAAwB,CACnC3H,cAAc,EACd,YAAY,EACZsF,SAAS,EACTr5C,WAAW,EACXgyC,UAAU,EACV,EAAE,EACFhoH,eAAe,EACfiO,GAAG,IAAI;UACH,IAAIA,GAAG,CAAC9/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAEqhI,UAAU,CAAC,4CAA4C,CAAC;QAC3F,CACJ,CAAC;QACD6a,cAAc,CAACqH,wBAAwB,CACnC3H,cAAc,EACd,WAAW,EACXuF,UAAU,EACVt5C,WAAW,EACXgyC,UAAU,EACV,EAAE,EACFhoH,eAAe,EACfiO,GAAG,IAAI;UACH,IAAIA,GAAG,CAAC9/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAEqhI,UAAU,CAAC,2CAA2C,CAAC;UACtF;UACAgb,qBAAqB,CAAC,MAAM;YACxB;YACA7C,UAAU,CAAC7iK,SAAS,GAAG,EAAE;YACzB4oK,UAAU,CAAC,CAAC;UAChB,CAAC,CAAC;QACN,CACJ,CAAC;QACD2B,SAAS,GAAG,IAAI;QAChBC,UAAU,GAAG,IAAI;MACrB,CAAC,CAAC,OAAOplK,CAAC,EAAE;QACR,IAAIA,CAAC,KAAK,SAAS,EAAE;UACjBslJ,UAAU,CAAC,eAAe,CAAC;QAC/B;MACJ;IACJ;IACA;IAAA,KACK,IAAI6f,SAAS,IAAI,CAACC,UAAU,EAAE;MAC/BD,SAAS,IAAI,KAAK;MAClB,IAAI;QACA,IAAIA,SAAS,GAAG2C,UAAU,EAAE;UACxB,MAAM,SAAS;QACnB;QACA3H,cAAc,CAACqH,wBAAwB,CACnC3H,cAAc,EACd,YAAY,EACZsF,SAAS,EACTr5C,WAAW,EACXgyC,UAAU,EACV,EAAE,EACFhoH,eAAe,EACfiO,GAAG,IAAI;UACH,IAAIA,GAAG,CAAC9/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAEqhI,UAAU,CAAC,4CAA4C,CAAC;UACvF;UACAgb,qBAAqB,CAAC,MAAM;YACxB;YACA7C,UAAU,CAAC7iK,SAAS,GAAG,EAAE;YACzB4oK,UAAU,CAAC,CAAC;UAChB,CAAC,CAAC;QACN,CACJ,CAAC;QACD2B,SAAS,GAAG,IAAI;MACpB,CAAC,CAAC,OAAOnlK,CAAC,EAAE;QACR,IAAIA,CAAC,KAAK,SAAS,EAAE;UACjBslJ,UAAU,CAAC,mCAAmC,CAAC;QACnD;MACJ;IACJ;IACA;IAAA,KACK,IAAI8f,UAAU,IAAI,CAACD,SAAS,EAAE;MAC/BC,UAAU,IAAI,KAAK;MACnB,IAAI;QACA,IAAIA,UAAU,GAAGyC,SAAS,EAAE;UACxB,MAAM,SAAS;QACnB;QACA1H,cAAc,CAACqH,wBAAwB,CACnC3H,cAAc,EACd,WAAW,EACXuF,UAAU,EACVt5C,WAAW,EACXgyC,UAAU,EACV,EAAE,EACFhoH,eAAe,EACfiO,GAAG,IAAI;UACH,IAAIA,GAAG,CAAC9/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAEqhI,UAAU,CAAC,2CAA2C,CAAC;UACtF;UACAgb,qBAAqB,CAAC,MAAM;YACxB;YACA7C,UAAU,CAAC7iK,SAAS,GAAG,EAAE;YACzB4oK,UAAU,CAAC,CAAC;UAChB,CAAC,CAAC;QACN,CACJ,CAAC;QACD4B,UAAU,GAAG,IAAI;MACrB,CAAC,CAAC,OAAOplK,CAAC,EAAE;QACR,IAAIA,CAAC,KAAK,SAAS,EAAE;UACjBslJ,UAAU,CAAC,oCAAoC,CAAC;QACpD;MACJ;IACJ,CAAC,MACGgb,qBAAqB,CAAC,MAAM;MACxB;MACA7C,UAAU,CAAC7iK,SAAS,GAAG,EAAE;MACzB4oK,UAAU,CAAC,CAAC;IAChB,CAAC,CAAC;EACV;EAEA,SAASkC,aAAaA,CAClBplH,UAAU,EACVunH,SAAS,EACT1C,SAAS,EACT2C,UAAU,EACV1C,UAAU,EACVhG,cAAc,EACd2I,SAAS,EACTjyH,eAAe,EACjB;IACE,IAAI+pH,cAAc,GAAG,GAAGv/G,UAAU,IAAIunH,SAAS,GAAG;IAClD;IACA,IAAIG,mBAAmB,GAAG,IAAIj8G,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MAC7DgxJ,cAAc,CAACqH,wBAAwB,CACnC3H,cAAc,EACd,cAAc,EACdsF,SAAS,EACTr5C,WAAW,EACXgyC,UAAU,EACVsB,cAAc,EACdtpH,eAAe,EACf,MAAM;QACFkW,OAAO,CAAC,SAAS,CAAC;MACtB,CACJ,CAAC;IACL,CAAC,CAAC;;IAEF;IACA,IAAIm1G,UAAU,CAAC,CAAC,IAAI4G,SAAS,KAAK,EAAE,EAAE;MAClC,IAAIE,eAAe,GAAG,IAAIl8G,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;QACzDgxJ,cAAc,CAAC+H,aAAa,CACxB5nH,UAAU,EACVynH,SAAS,EACTF,SAAS,EACT/7C,WAAW,EACXgyC,UAAU,EACV,MAAM;UACF9xG,OAAO,CAAC,SAAS,CAAC;QACtB,CACJ,CAAC;MACL,CAAC,CAAC;IACN,CAAC,MAAM;MACH,IAAIm8G,eAAe,GAAG,IAAIp8G,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;QACzDgxJ,cAAc,CAACiI,eAAe,CAAC9nH,UAAU,EAAEunH,SAAS,EAAE/7C,WAAW,EAAEgyC,UAAU,EAAE,MAAM;UACjF9xG,OAAO,CAAC,SAAS,CAAC;QACtB,CAAC,CAAC;MACN,CAAC,CAAC;IACN;IAEA,IAAIi8G,eAAe,EAAE;MACjBl8G,OAAO,CAACmrF,GAAG,CAAC,CAAC8wB,mBAAmB,EAAEC,eAAe,CAAC,CAAC,CAAC17C,IAAI,CAAC,YAAY;QACjEkgB,QAAQ,CACJnsF,UAAU,EACVunH,SAAS,EACT1C,SAAS,EACT2C,UAAU,EACV1C,UAAU,EACVhG,cAAc,EACd2I,SACJ,CAAC;MACL,CAAC,CAAC;IACN,CAAC,MAAM,IAAII,eAAe,EAAE;MACxBp8G,OAAO,CAACmrF,GAAG,CAAC,CAAC8wB,mBAAmB,EAAEG,eAAe,CAAC,CAAC,CAAC57C,IAAI,CAAC,YAAY;QACjEkgB,QAAQ,CACJnsF,UAAU,EACVunH,SAAS,EACT1C,SAAS,EACT2C,UAAU,EACV1C,UAAU,EACVhG,cAAc,EACd2I,SACJ,CAAC;MACL,CAAC,CAAC;IACN;EACJ;EAEA,SAASM,mBAAmBA,CAAA,EAAG;IAC3B;IACAtlE,UAAU,GAAGllG,MAAM,CAACC,KAAK,CAAC;MACtBG,EAAE,EAAE,WAAW;MACfG,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEFskG,WAAW,GAAGrlG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C8kG,WAAW,CAACxoG,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAC3CwoG,YAAY,GAAGvlG,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC9CglG,YAAY,CAACtkG,YAAY,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC5DokG,WAAW,CAAC5nG,WAAW,CAAC6nG,UAAU,CAAC;IACnCD,WAAW,CAAC5nG,WAAW,CAAC8nG,YAAY,CAAC;IAGrCu6D,cAAc,GAAG1/J,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,cAAc;MACpBF,IAAI,EAAE,aAAa;MACnBK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,gBAAgB;MAC5Bb,EAAE,EAAE,gBAAgB;MACpBqB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBslK,mBAAmB,CAACrH,cAAc,CAAC;QACnCpxD,SAAS,CAAC7xG,SAAS,CAACmE,MAAM,CAAC,UAAU,CAAC;MAC1C;IACJ,CAAC,CAAC;IAEFq+J,iBAAiB,GAAGj/J,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,YAAY;MAClBF,IAAI,EAAE,WAAW;MACjBK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,mBAAmB;MAC/BQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB,IAAIid,MAAM,CAAC8B,IAAI,CAACygJ,aAAa,CAAC,CAAC/jK,MAAM,KAAKyjK,kBAAkB,CAACzjK,MAAM,EAAE;UACjE,IAAIutK,OAAO,GAAG,EAAE,CAACt+J,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,aAAa,CAAC,CAAC;UACrE,IAAIykK,UAAU,GAAG,EAAE,CAACv+J,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,eAAe,CAAC,CAAC;UAC1EwkK,OAAO,CAACttK,OAAO,CAACuW,GAAG,IAAIA,GAAG,CAACjX,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC,CAAC;UACrD+tK,UAAU,CAACvtK,OAAO,CAACyS,MAAM,IAAIA,MAAM,CAACnT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC,CAAC;UAC9D,IAAI8tK,OAAO,CAACvtK,MAAM,KAAK,CAAC,EAAE;YACtBiiK,iBAAiB,CAAC1iK,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;YAC9C0iK,gBAAgB,CAAC3iK,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;YAC7CsiK,oBAAoB,CAACviK,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UACrD;QACJ,CAAC,MAAM,IAAIikK,kBAAkB,CAACzjK,MAAM,KAAK,CAAC,EAAE;UACxCyjK,kBAAkB,CAACxjK,OAAO,CAAC2rG,QAAQ,IAAI;YACnC,IAAIoQ,IAAI,GAAGt5G,QAAQ,CAACiD,cAAc,CAAC,YAAYimG,QAAQ,EAAE,CAAC;YAC1DoQ,IAAI,CAACr5G,aAAa,CAAC,eAAe,CAAC,CAACpD,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;YAC7D,IAAIoa,IAAI,GAAGmiG,IAAI,CAACjzG,gBAAgB,CAAC,aAAa,CAAC;YAC/C8Q,IAAI,CAAC5Z,OAAO,CAACuW,GAAG,IAAIA,GAAG,CAACjX,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC,CAAC;YAClDwiK,iBAAiB,CAAC1iK,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;YAC9C0iK,gBAAgB,CAAC3iK,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;YAC7CsiK,oBAAoB,CAACviK,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UACrD,CAAC,CAAC;QACN;MACJ;IACJ,CAAC,CAAC;IAEFwiK,kBAAkB,GAAGl/J,MAAM,CAACC,KAAK,CAAC;MAC9BM,IAAI,EAAE,aAAa;MACnBF,IAAI,EAAE,aAAa;MACnBK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB09J,iBAAiB,CAAC1iK,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC3CyiK,gBAAgB,CAAC3iK,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC1CqiK,oBAAoB,CAACviK,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC9C,IAAI2nK,eAAe,GAAG,EAAE,CAACn4J,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;QACtFq+J,eAAe,CAACnnK,OAAO,CAACuW,GAAG,IAAIA,GAAG,CAACjX,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI+nK,kBAAkB,GAAG,EAAE,CAACt4J,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;QAC3Fw+J,kBAAkB,CAACtnK,OAAO,CAACyS,MAAM,IAAIA,MAAM,CAACnT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC,CAAC;MAC7E;IACJ,CAAC,CAAC;IAEF2iK,sBAAsB,GAAGz9J,QAAQ,CAAC3B,KAAK,CAAC;MACpC4B,UAAU,EAAE,oBAAoB;MAChCE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,IAAIiqK,SAAS,GAAG,KAAK;IACrB,IAAI38J,CAAC,CAACC,OAAO,CAAC4hC,kBAAkB,KAAK,IAAI,IAAI7hC,CAAC,CAAC6kG,SAAS,KAAK,aAAa,EAAE;MACxE83D,SAAS,GAAG,IAAI;IACpB;IAEArL,mBAAmB,GAAG19J,QAAQ,CAAC3B,KAAK,CAAC;MACjC4B,UAAU,EAAE,iBAAiB;MAC7BE,KAAK,EAAE,OAAO;MACdrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE2oK;IACd,CAAC,CAAC;IAEFpL,eAAe,GAAG97J,KAAK,CAACxD,KAAK,CAAC;MAC1BG,EAAE,EAAE,cAAc;MAClB2B,KAAK,EAAE,MAAM;MACbpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEysH,WAAW;MAClB5sH,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE8uB,IAAI,CAAC8Z,aAAa,CAAC;MAAE,CAAC;IAC5D,CAAC,CAAC;IAEFo1H,cAAc,GAAGx/J,MAAM,CAACC,KAAK,CAAC;MAC1BG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBuU,QAAQ,EAAE,KAAK;MACfnT,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB+9J,cAAc,CAAC5qJ,QAAQ,GAAG,IAAI;QAC9BsvJ,iBAAiB,CAACp6D,WAAW,CAAC;QAC9Bn6F,KAAK,CAAC/S,IAAI,CAACktG,WAAW,CAAC;MAC3B;IACJ,CAAC,CAAC;IAEF65D,0BAA0B,CAAC,CAAC;;IAE5B;IACA;;IAEAhE,sBAAsB,GAAG//J,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtDw/J,sBAAsB,CAACljK,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAC/CgjK,sBAAsB,CAAC9+J,YAAY,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACpE8+J,sBAAsB,CAACtiK,WAAW,CAAC4hK,iBAAiB,CAAC;IACrDU,sBAAsB,CAACtiK,WAAW,CAAC6hK,kBAAkB,CAAC;IACtDS,sBAAsB,CAACljK,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAE9C,SAASiuK,eAAeA,CAAA,EAAG;MACvB,OAAQ1gE,YAAY,GAAG;QACnB2gE,kBAAkB,EAAE5K,UAAU;QAC9B6K,qBAAqB,EAAE78C;MAC3B,CAAC;IACL;IACA;IACA,SAAS88C,sBAAsBA,CAACC,WAAW,EAAE;MACzC,OAAOhrK,MAAM,CAACC,KAAK,CAAC;QAChBM,IAAI,EAAE,SAAS;QACfF,IAAI,EAAE,KAAK;QACXK,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBM,UAAU,EAAE,WAAW;QACvBQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;UAClB;UACAupK,WAAW,CAAC7tK,OAAO,CAAC,UAAU8tK,UAAU,EAAE;YACtCA,UAAU,CAAC/gE,YAAY,GAAG0gE,eAAe,CAAC,CAAC;UAC/C,CAAC,CAAC;UAEFrY,eAAe,CAAC2Y,gBAAgB,CAACF,WAAW,CAAC;QACjD;MACJ,CAAC,CAAC;IACN;IACAG,UAAU,GAAGJ,sBAAsB,CAAC,CAAC;MAAExqK,IAAI,EAAE;IAAyC,CAAC,CAAC,CAAC;IAEzFk/J,qBAAqB,CAAC1iK,SAAS,GAAG,iDAAiD;IACnF0iK,qBAAqB,CAAChjK,SAAS,CAACE,GAAG,CAAC,uBAAuB,CAAC;IAC5D8iK,qBAAqB,CAAChjK,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAE7C,IAAIyuK,yBAAyB,GAAGxrK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7DirK,yBAAyB,CAAC3uK,SAAS,CAACE,GAAG,CAAC,SAAS,EAAE,2BAA2B,CAAC;IAC/E,IAAIqR,CAAC,CAACC,OAAO,CAACwhC,gBAAgB,EAAE27H,yBAAyB,CAAC/tK,WAAW,CAACqiK,cAAc,CAAC,CAAC,CAAC;IACvF0L,yBAAyB,CAAC/tK,WAAW,CAAC8tK,UAAU,CAAC;IACjDr8J,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC+tK,yBAAyB,CAAC;IACvD,IAAIp9J,CAAC,CAACC,OAAO,CAACwhC,gBAAgB,EAAE3gC,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACsiK,sBAAsB,CAAC,CAAC,CAAC;IACtF7wJ,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC4nG,WAAW,CAAC;IAEzC,MAAMoH,UAAU,GAAGs3D,0BAA0B,CAAC,CAAC;IAC/C70J,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACgvG,UAAU,CAAC;IAExCv9F,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACoiK,qBAAqB,CAAC;IACnD;IACA;IACA;;IAEA3wJ,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACuiK,UAAU,CAAC;IACxCl0D,OAAO,CAAC2/D,mCAAmC,CAAC,MAAM,CAAC;IACnD1F,UAAU,CAAC,CAAC;EAChB;EAEA,eAAe2F,gBAAgBA,CAAA,EAAG;IAC9BlK,cAAc,GAAGQ,OAAO,CAACj7J,GAAG,CAAC4kK,EAAE,IAAI;MAC/B,IAAInrK,EAAE,GAAG,MAAMmrK,EAAE,CAAC1J,MAAM,EAAE;MAC1B,IAAIrgK,KAAK,GAAG+pK,EAAE,CAAC1J,MAAM;MACrB,IAAIthK,IAAI,GAAGgrK,EAAE,CAACzJ,MAAM;MACpB,OAAO;QACH1hK,EAAE;QACFoB,KAAK;QACLjB;MACJ,CAAC;IACL,CAAC,CAAC;IACF,IAAIyN,CAAC,CAACC,OAAO,CAACC,eAAe,CAACzN,WAAW,CAAC,CAAC,KAAK,YAAY,EAAE;MAC1D2gK,cAAc,CAACp2J,IAAI,CAAC;QAAE5K,EAAE,EAAE,EAAE;QAAEoB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAG,CAAC,CAAC;IACzD;IACAiqK,mBAAmB,CAAC,CAAC;IACrBgB,iBAAiB,CAAC,CAAC;IACnB;IACA5rK,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAAC0jG,KAAK,CAAC,CAAC;IAC5Cy5D,kBAAkB,GAAG,CAAC,MAAMyL,gBAAgB,CAACliH,iBAAiB,CAAC02G,UAAU,CAAC,EACrEyL,2BAA2B;EACpC;EAEA,SAASF,iBAAiBA,CAAA,EAAG;IACzBtmE,UAAU,CAACnlG,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1C0nG,WAAW,CAACxoG,SAAS,CAACmE,MAAM,CAAC,YAAY,CAAC;MAC1CukG,YAAY,CAAC3jG,KAAK,GAAG,EAAE;MACvB2jG,YAAY,CAAC92F,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IACF82F,YAAY,CAACplG,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5CimK,QAAQ,CAACjmK,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC;IAChC,CAAC,CAAC;IAEF69J,sBAAsB,CAACt/J,gBAAgB,CAAC,QAAQ,EAAE,MAAMxC,KAAK,IAAI;MAC7D,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE+9J,gBAAgB,GAAGh+J,cAAc,CAACZ,KAAK;MAEvCw+J,kBAAkB,GAAG,CAAC,MAAMyL,gBAAgB,CAACliH,iBAAiB,CAAC62G,gBAAgB,CAAC,EAC3EsL,2BAA2B;MAChC/G,2BAA2B,CAAC,CAAC;IACjC,CAAC,CAAC;IAEFrF,mBAAmB,CAACv/J,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEg+J,aAAa,GAAGj+J,cAAc,CAACZ,KAAK;MACpC8+J,gBAAgB,GAAGl+J,cAAc,CAAC3E,OAAO,CAACkuK,UAAU;MACpD/H,iBAAiB,GAAGxhK,cAAc,CAACrF,SAAS;IAChD,CAAC,CAAC;IAEFwiK,eAAe,CAACx/J,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChDgjK,iBAAiB,GAAGhjK,KAAK,CAACC,MAAM,CAACgE,KAAK;IAC1C,CAAC,CAAC;;IAEF;IACA,IAAImkC,UAAU,GAAG/lC,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC;IACxD,IAAI+iC,MAAM,GAAG;MAAEvkC,UAAU,EAAE;IAAK,CAAC;IACjC,IAAII,QAAQ,GAAG,SAAAA,CAAUqkC,YAAY,EAAED,QAAQ,EAAE;MAC7C,KAAK,IAAIE,QAAQ,IAAID,YAAY,EAAE;QAC/B,IAAIC,QAAQ,CAACplC,IAAI,KAAK,YAAY,EAAE;UAChC,IAAIolC,QAAQ,CAACC,aAAa,KAAK,oBAAoB,EAAE;YACjDH,QAAQ,CAACI,UAAU,CAAC,CAAC;YACrBtmC,aAAa,GAAGC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;YAC1D,IAAIF,aAAa,EAAEA,aAAa,CAAClD,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;YAC7DglK,eAAe,GAAG,KAAK;UAC3B;QACJ;MACJ;IACJ,CAAC;IACD,MAAM77H,QAAQ,GAAG,IAAIK,gBAAgB,CAACzkC,QAAQ,CAAC;IAC/CokC,QAAQ,CAACM,OAAO,CAACR,UAAU,EAAEC,MAAM,CAAC;EACxC;EAEA,SAASgmI,YAAYA,CAAA,EAAG;IACpB,IAAIlJ,eAAe,GAAG,EAAE;IACxB,IAAImJ,kBAAkB;IACtB59C,WAAW,GAAG39F,IAAI,CAAC8Z,aAAa,CAAC,CAAC;;IAElC;IACA,MAAM0hI,cAAc,GAAG,IAAI59G,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MAC1DgxJ,cAAc,CAACyJ,oBAAoB,CAAC7lH,GAAG,IAAI;QACvC,IAAI1/B,KAAK,GAAG,IAAI7P,IAAI,CAAC,CAAC;QACtBq1J,eAAe,GAAG,IAAIr1J,IAAI,CAACuvC,GAAG,CAAC,CAAC,CAAC,CAAC+lH,aAAa,CAAC;QAChD,IAAID,eAAe,IAAIxlJ,KAAK,EAAE;UAC1BxY,CAAC,CAACC,OAAO,CAAC6nC,OAAO,GAAG,IAAI;QAC5B;QACAqY,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;;IAEF;IACA,MAAM+9G,iBAAiB,GAAG,IAAIh+G,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MAC7DgxJ,cAAc,CAAC6J,UAAU,CAACl+C,WAAW,EAAEgyC,UAAU,EAAE/5G,GAAG,IAAI;QACtDm7G,cAAc,GAAGn7G,GAAG,CAACv/C,GAAG,CAAC83F,EAAE,IAAI;UAC3B,IAAIr+F,EAAE,GAAG,MAAMq+F,EAAE,CAACr+F,EAAE,EAAE;UACtB,IAAIoB,KAAK,GAAGi9F,EAAE,CAACr+F,EAAE;UACjB,IAAIG,IAAI,GAAGk+F,EAAE,CAACwK,QAAQ;UACtB,OAAO;YACH7oG,EAAE;YACFoB,KAAK;YACLjB;UACJ,CAAC;QACL,CAAC,CAAC;QACF8gK,cAAc,CAAC9gG,OAAO,CAAC;UAAEngE,EAAE,EAAE,MAAM;UAAEoB,KAAK,EAAE,EAAE;UAAEjB,IAAI,EAAE;QAAG,CAAC,CAAC;QAC3D4tD,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;;IAEF;IACA,MAAMi+G,0BAA0B,GAAG,IAAIl+G,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MACtEgxJ,cAAc,CAACgD,gCAAgC,CAACr3C,WAAW,EAAEgyC,UAAU,EAAE/5G,GAAG,IAAI;QAC5E2lH,kBAAkB,GAAG3lH,GAAG,CAACv/C,GAAG,CAACsX,CAAC,IAAIA,CAAC,CAACwkC,UAAU,CAAC;QAC/C6/G,cAAc,CAACK,6BAA6B,CACxCkJ,kBAAkB,EAClB59C,WAAW,EACXgyC,UAAU,EACVC,aAAa,EACbC,qBAAqB,EACrBj6G,GAAG,IAAI;UACHg7G,WAAW,GAAG,EAAE;UAChBh7G,GAAG,CAAC/oD,OAAO,CAAC+oD,GAAG,IAAI;YACfmmH,MAAM,GAAG;cACLzJ,MAAM,EAAE18G,GAAG,CAAC08G,MAAM;cAClBC,gBAAgB,EAAE38G,GAAG,CAAC28G,gBAAgB;cACtCC,gBAAgB,EAAE58G,GAAG,CAAC48G,gBAAgB;cACtCz6D,SAAS,EAAEniD,GAAG,CAACmiD,SAAS;cACxBF,QAAQ,EAAEjiD,GAAG,CAACiiD,QAAQ;cACtB46D,YAAY,EAAE78G,GAAG,CAAC68G,YAAY;cAC9BX,UAAU,EAAEl8G,GAAG,CAACk8G,UAAU;cAC1BD,SAAS,EAAEj8G,GAAG,CAACi8G,SAAS;cACxBa,SAAS,EAAE98G,GAAG,CAAC88G,SAAS;cACxBC,SAAS,EAAE/8G,GAAG,CAAC+8G,SAAS;cACxBC,SAAS,EAAEh9G,GAAG,CAACi9G;YACnB,CAAC;YACD95D,WAAW,GAAG;cACVjpG,EAAE,EAAE8lD,GAAG,CAAC4nD,EAAE;cACVzF,SAAS,EAAEniD,GAAG,CAACmiD,SAAS;cACxBF,QAAQ,EAAEjiD,GAAG,CAACiiD;YAClB,CAAC;YACD,IAAI84D,aAAa,CAAC/6G,GAAG,CAAC4nD,EAAE,CAAC,EAAE;cACvB9rE,GAAG,GAAGi/H,aAAa,CAAC/6G,GAAG,CAAC4nD,EAAE,CAAC;cAC3B9rE,GAAG,CAACh3B,IAAI,CAACqhK,MAAM,CAAC;cAChBpL,aAAa,CAAC/6G,GAAG,CAAC4nD,EAAE,CAAC,GAAG9rE,GAAG;YAC/B,CAAC,MAAM;cACHi/H,aAAa,CAAC/6G,GAAG,CAAC4nD,EAAE,CAAC,GAAG,CAACu+D,MAAM,CAAC;YACpC;YACA;YACA;YACA;YACA3J,eAAe,CAAC13J,IAAI,CAACq+F,WAAW,CAAC;YACjCpxD,eAAe,GAAGiO,GAAG,CAACi9G,oBAAoB;UAC9C,CAAC,CAAC;UACF;UACA,IAAIC,aAAa,GAAG,IAAI57J,GAAG,CAAC,CAAC;UAC7B,KAAK,MAAMmM,IAAI,IAAI+uJ,eAAe,EAAE;YAChC,IAAI,CAACU,aAAa,CAACC,GAAG,CAAC1vJ,IAAI,CAACvT,EAAE,CAAC,EAAE;cAC7BgjK,aAAa,CAAC1wJ,GAAG,CAACiB,IAAI,CAACvT,EAAE,EAAE,IAAI,CAAC;cAChC8gK,WAAW,CAACl2J,IAAI,CAAC;gBACb5K,EAAE,EAAEuT,IAAI,CAACvT,EAAE;gBACXioG,SAAS,EAAE10F,IAAI,CAAC00F,SAAS;gBACzBF,QAAQ,EAAEx0F,IAAI,CAACw0F;cACnB,CAAC,CAAC;YACN;UACJ;UACA;UACA+4D,WAAW,CAAC/jK,OAAO,CAAC2rG,QAAQ,IAAI;YAC5B63D,kBAAkB,CAAC31J,IAAI,CAAC89F,QAAQ,CAAC1oG,EAAE,CAAC;UACxC,CAAC,CAAC;UAEF+tD,OAAO,CAAC,SAAS,CAAC;QACtB,CACJ,CAAC;MACL,CAAC,CAAC;IACN,CAAC,CAAC;;IAEF;IACA,MAAMm+G,iBAAiB,GAAG,IAAIp+G,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MAC7DgxJ,cAAc,CAACsD,mBAAmB,CAAC53J,CAAC,CAACC,OAAO,CAACqoC,KAAK,EAAE2pH,UAAU,EAAE/5G,GAAG,IAAI;QACnEi7G,aAAa,GAAG,CAAC,CAAC;QAClBG,iBAAiB,GAAGp7G,GAAG,CAACv/C,GAAG,CAAC,CAACtD,KAAK,EAAEkT,KAAK,KAAK;UAC1C,IAAI;YAAEhT,OAAO;YAAEsiK;UAAiB,CAAC,GAAGxiK,KAAK;UAEzC,IAAI,CAAC89J,aAAa,CAAC59J,OAAO,CAAC,EAAE;YACzB49J,aAAa,CAAC59J,OAAO,CAAC,GAAG;cACrBnD,EAAE,EAAEmD,OAAO;cACX/B,KAAK,EAAEqkK;YACX,CAAC;UACL;UAEA,OAAO;YACHzlK,EAAE,EAAEmD,OAAO;YACX/B,KAAK,EAAE+B,OAAO;YACdhD,IAAI,EAAEslK;UACV,CAAC;QACL,CAAC,CAAC;QACFvE,iBAAiB,CAAC/gG,OAAO,CAAC;UAAEngE,EAAE,EAAE,GAAG;UAAEoB,KAAK,EAAE,EAAE;UAAEjB,IAAI,EAAE;QAAG,CAAC,CAAC;QAC3D4tD,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;IAEFD,OAAO,CAACmrF,GAAG,CAAC,CACRyyB,cAAc,EACdI,iBAAiB,EACjBE,0BAA0B,EAC1BE,iBAAiB,CACpB,CAAC,CAAC59C,IAAI,CAAC,YAAY;MAChB48C,gBAAgB,CAAC,CAAC;MAClB1K,gBAAgB,GAAGiL,kBAAkB;MACrCngE,OAAO,CAAC+5D,mBAAmB,CAACoG,kBAAkB,CAAC;MAC/C,IAAI16G,YAAY,GAAG6vG,aAAa,CAACf,UAAU,CAAC,CAAC9uG,YAAY;MACzDu6C,OAAO,CAACI,cAAc,CAClB;QAAE56C,UAAU,EAAE+uG,UAAU;QAAE9uG,YAAY,EAAEA;MAAa,CAAC,EACtD;QACIwlF,QAAQ,EAAE;MACd,CACJ,CAAC;MACD0rB,cAAc,CAAC,CAAC;IACpB,CAAC,CAAC;EACN;EAEA,SAASkK,aAAaA,CAAA,EAAG;IACrBtM,UAAU,GAAG3xJ,QAAQ,CAACmoI,WAAW,CAAC,aAAa,CAAC;IAChDoqB,aAAa,GAAGZ,UAAU,KAAK,EAAE,GAAG,IAAI,GAAG,KAAK;IAChDhyC,WAAW,GAAG39F,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IAElC,IAAIp8B,CAAC,CAACC,OAAO,CAAC4hC,kBAAkB,KAAK,IAAI,IAAI7hC,CAAC,CAAC6kG,SAAS,KAAK,aAAa,EAAE;MACxE+wD,iBAAiB,GAAG,UAAU;MAC9BvD,aAAa,GAAG,KAAK;IACzB,CAAC,MAAM;MACHuD,iBAAiB,GAAG,UAAU;IAClC;;IAGA;IACAtB,cAAc,CAACkK,sBAAsB,CAACv+C,WAAW,EAAEqO,GAAG,IAAI;MACtDA,GAAG,CAACn/H,OAAO,CAACm/H,GAAG,IAAI;QACf,IAAI,CAAC0kC,aAAa,CAAC1kC,GAAG,CAACprE,UAAU,CAAC,EAAE;UAChCxmB,GAAG,GAAG;YACFymB,YAAY,EAAEmrE,GAAG,CAACrmF,IAAI;YACtBw2H,qBAAqB,EAAEnwC,GAAG,CAACmwC;UAC/B,CAAC;UACDzL,aAAa,CAAC1kC,GAAG,CAACprE,UAAU,CAAC,GAAGxmB,GAAG;QACvC;MACJ,CAAC,CAAC;MAEF+2H,oBAAoB,GAAGnlC,GAAG,CAAC31H,GAAG,CAAC21H,GAAG,IAAI;QAClC,IAAIl8H,EAAE,GAAG,MAAMk8H,GAAG,CAACprE,UAAU,EAAE;QAC/B,IAAI1vD,KAAK,GAAG86H,GAAG,CAACprE,UAAU;QAC1B,IAAI3wD,IAAI,GAAG+7H,GAAG,CAACrmF,IAAI;QACnB,OAAO;UACH71C,EAAE;UACFoB,KAAK;UACLjB;QACJ,CAAC;MACL,CAAC,CAAC;;MAEF;MACAygK,aAAa,CAAC,EAAE,CAAC,GAAG;QAChB7vG,YAAY,EAAE,mCAAmC;QACjDs7G,qBAAqB,EAAE;MAC3B,CAAC;;MAED;MACA;MACA,IAAI5L,aAAa,IAAI,CAACniJ,MAAM,CAAC8B,IAAI,CAACwgJ,aAAa,CAAC,CAAC3vD,QAAQ,CAAC4uD,UAAU,CAAC,EAAE;QACnE,IAAIxwJ,KAAK,GAAG7P,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACzCsP,KAAK,CAAChT,SAAS,CAACE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC;QACzD,IAAIiT,MAAM,GAAGhQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;QACzCyP,MAAM,CAACnT,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;QACnC8S,KAAK,CAACpS,WAAW,CAACuS,MAAM,CAAC;QAEzBA,MAAM,CAAC7S,SAAS,GAAG,oDAAoD;QACvE,IAAIquJ,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;UAClC4B,UAAU,EAAE,kBAAkB;UAC9BE,KAAK,EAAE,UAAU;UACjBrB,KAAK,EAAE;QACX,CAAC,CAAC;QAEF,IAAIgsK,QAAQ,GAAG1sK,MAAM,CAACC,KAAK,CAAC;UACxBG,EAAE,EAAE,OAAO;UACXG,IAAI,EAAE,OAAO;UACbG,KAAK,EAAE,WAAW;UAClBC,IAAI,EAAE,WAAW;UACjBN,IAAI,EAAE,WAAW;UACjBoB,QAAQ,EAAE,SAAAA,CAAA,EAAY;YAClBw+J,UAAU,GACN7U,gBAAgB,CAACrmH,iBAAiB,CAAC7kC,OAAO,CACtCkrJ,gBAAgB,CAACrmH,iBAAiB,CAAC1iC,aAAa,CACnD,CAACb,KAAK;YACX,IAAI2vD,YAAY,GACZi6F,gBAAgB,CAACrmH,iBAAiB,CAAC7kC,OAAO,CACtCkrJ,gBAAgB,CAACrmH,iBAAiB,CAAC1iC,aAAa,CACnD,CAAC+B,SAAS;YACf,IAAIkK,QAAQ,CAAC+2J,oBAAoB,CAAC,aAAa,CAAC,EAC5C/2J,QAAQ,CAACooI,WAAW,CAAC,aAAa,EAAEupB,UAAU,CAAC;YACnDnxJ,GAAG,CAACiB,YAAY,CAACf,WAAW,CAACS,KAAK,CAAC;YACnCoxJ,aAAa,GAAG,KAAK;YACrB/zJ,OAAO,CAAClQ,IAAI,CAAC,CAAC;YAEdgvK,YAAY,CAAC,CAAC;UAClB;QACJ,CAAC,CAAC;QACF,IAAIz/H,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAC3CgsC,OAAO,CAAC9uC,WAAW,CAACqvK,QAAQ,CAAC;QAC7BvgI,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;QAEhC8S,KAAK,CAACpS,WAAW,CAAC+tJ,gBAAgB,CAAC;QACnC37I,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;QAC1Br9B,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACoS,KAAK,CAAC;QACnC3C,OAAO,CAACjQ,IAAI,CAAC,CAAC;QAEd+E,QAAQ,CAAC5E,QAAQ,CAACouJ,gBAAgB,EAAEqW,oBAAoB,CAAC;MAC7D,CAAC,MAAM;QACHmK,YAAY,CAAC,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EAEA,SAAS9rK,IAAIA,CAAA,EAAG;IACZggK,mBAAmB,GAAG,IAAI;IAC1BltD,+BAA+B,CAAC,aAAa,CAAC;;IAE9C;IACAouD,aAAa,GAAG,CAAC,CAAC;IAClBC,aAAa,GAAG,CAAC,CAAC;IAElBrB,UAAU,CAAC7iK,SAAS,GAAG,EAAE;IAEzB+R,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBw9J,aAAa,CAAC,CAAC;EACnB;EAEA,OAAO;IACHzsK,IAAI;IACJ/B;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AClmEJ,MAAMukK,cAAc,GAAI,YAAY;EAClC,SAASqK,qBAAqBA,CAACz7G,UAAU,EAAE82G,YAAY,EAAE/5C,WAAW,EAAExsH,QAAQ,EAAE;IAC9E;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEAuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;MAC7BxoD,IAAI,EACF,kBAAkB,GAClBqlK,YAAY,GACZ,oBAAoB,GACpB/5C,WAAW,GACX,mBAAmB,GACnB/8D,UAAU,GACV,IAAI;MACNtE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAEhB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC;QACA,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC6/G,6BAA6B;QAChDnrK,QAAQ,CAACykD,GAAG,CAAC;MACf;IACF,CAAC,CAAC;EACJ;EACA,SAASo/G,gCAAgCA,CAACr3C,WAAW,EAAE/8D,UAAU,EAAEzvD,QAAQ,EAAE;IAC3E;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oCAAoC;MACtCxoD,IAAI,EAAE,kBAAkB,GAAGsrH,WAAW,GAAG,mBAAmB,GAAG/8D,UAAU,GAAG,IAAI;MAChFtE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAEhB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC;QACA,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC8/G,sCAAsC;QACzDprK,QAAQ,CAACykD,GAAG,CAAC;MACf;IACF,CAAC,CAAC;EACJ;EACA,SAASqjH,iBAAiBA,CAACpuD,WAAW,EAAE8S,WAAW,EAAE/8D,UAAU,EAAEj7B,SAAS,EAAEx0B,QAAQ,EAAE;IACpFuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4CAA4C;MAC9CxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpB6kE,WAAW,GACX,oBAAoB,GACpB8S,WAAW,GACX,mBAAmB,GACnB/8D,UAAU,GACV,kBAAkB,GAClBj7B,SAAS,GACT,IAAI;MACN22B,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAEhB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClCtrD,QAAQ,CAACykD,GAAG,CAAC;QACb;QACAlX,YAAY,GAAG,EAAE;QACjB,IAAI89H,OAAO;QACX,IAAIC,gBAAgB;QAEpB/+J,CAAC,CAAC,QAAQ,EAAEk4C,GAAG,CAAC,CAACf,IAAI,CAAC,YAAY;UAChC;UACAn3C,CAAC,CAAC,QAAQ,EAAEk4C,GAAG,CAAC,CAACf,IAAI,CAAC,YAAY;YAChC;YACA6nH,YAAY,GAAGh/J,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAACzN,IAAI,CAAC,CAAC;YAC3C;YACA,IAAIysK,YAAY,IAAI,KAAK,EAAE;cACzB;cACAh+H,YAAY,GAAG,4DAA4D;cAC3Ei+H,WAAW,CAACj+H,YAAY,CAAC;cACzB;cACA+9H,gBAAgB,GAAG/+J,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAACzN,IAAI,CAAC,CAAC;YAChD;UACF,CAAC,CAAC;QACJ,CAAC,CAAC;;QAEF;;QAEA;QACA,IAAIwsK,gBAAgB,IAAI,IAAI,EAAE;UAC5BpK,6BAA6B,CAACoK,gBAAgB,CAAC;QACjD,CAAC,MAAM;UACLpK,6BAA6B,CAAC,CAAC;QACjC;MACF;;MAEA;IACF,CAAC,CAAC;EACJ;EACA,SAASuK,kBAAkBA,CAAC/xD,WAAW,EAAEi9C,QAAQ,EAAE;IACjDpqJ,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6CAA6C;MAC/CxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpB6kE,WAAW,GACX,oBAAoB,GACpBntG,CAAC,CAAC,YAAY,CAAC,CAACm+C,GAAG,CAAC,CAAC,GACrB,mBAAmB,GACnBn+C,CAAC,CAAC,gBAAgB,CAAC,CAACggI,IAAI,CAAC,OAAO,CAAC,GACjC,iBAAiB,GACjBoqB,QAAQ,GACR,IAAI;MACNxrG,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAEhB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClC;;QAEA;QACA/d,YAAY,GAAG,EAAE;QAEjBhhC,CAAC,CAAC,QAAQ,EAAEk4C,GAAG,CAAC,CAACf,IAAI,CAAC,YAAY;UAChC;UACAn3C,CAAC,CAAC,QAAQ,EAAEk4C,GAAG,CAAC,CAACf,IAAI,CAAC,YAAY;YAChC;YACA6nH,YAAY,GAAGh/J,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAACzN,IAAI,CAAC,CAAC;YAC3C;YACA,IAAIysK,YAAY,IAAI,KAAK,EAAE;cACzB;cACAh+H,YAAY,GAAG,4DAA4D;cAC3Ei+H,WAAW,CAACj+H,YAAY,CAAC;cACzB;cACA+9H,gBAAgB,GAAG/+J,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAACzN,IAAI,CAAC,CAAC;YAChD;UACF,CAAC,CAAC;QACJ,CAAC,CAAC;;QAEF;QACAoiK,6BAA6B,CAAC,CAAC;MACjC;;MAEA;IACF,CAAC,CAAC;EACJ;EACA,SAASiH,wBAAwBA,CAACzuD,WAAW,EAAE8S,WAAW,EAAEgyC,UAAU,EAAEx+J,QAAQ,EAAE;IAChFuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,8CAA8C;MAChDxoD,IAAI,EACF,kBAAkB,GAClBw4G,WAAW,GACX,oBAAoB,GACpB8S,WAAW,GACX,mBAAmB,GACnBgyC,UAAU,GACV,IAAI;MACNrzG,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAEhB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClCtrD,QAAQ,CAACykD,GAAG,CAAC;;QAEb;QACA;MACF;;MAEA;IACF,CAAC,CAAC;EACJ;EACA,SAASqkH,eAAeA,CAAC9nH,UAAU,EAAExsB,SAAS,EAAEg4F,WAAW,EAAEgyC,UAAU,EAAEx+J,QAAQ,EAAE;IACjF;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,mBAAmB;MACrBxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpB23E,WAAW,GACX,mBAAmB,GACnBgyC,UAAU,GACV,mBAAmB,GACnBx9G,UAAU,GACV,kBAAkB,GAClBxsB,SAAS,GACT,IAAI;MACN22B,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClCtrD,QAAQ,CAAC,CAAC;MACZ,CAAC;MACDkN,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnC;MAAA;IAEJ,CAAC,CAAC;EACJ;EACA,SAASo9J,oBAAoBA,CAACtqK,QAAQ,EAAE;IACtC;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;MAC1BxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACxT,KAAK,CAACm2C,QAAQ,CAACogH,0BAA0B,CAAC;QACzD1rK,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnC;MAAA;IAEJ,CAAC,CAAC;EACJ;EACA,SAASy+J,oBAAoBA,CAAC3qH,UAAU,EAAExsB,SAAS,EAAEo3I,KAAK,EAAEC,UAAU,EAAErK,SAAS,EAAE;IACjFhtI,SAAS,GAAGyiI,qBAAqB,CAACziI,SAAS,CAAC;IAC5CjoB,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;MAC1BxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpBtoC,CAAC,CAAC,YAAY,CAAC,CAACm+C,GAAG,CAAC,CAAC,GACrB,mBAAmB,GACnBn+C,CAAC,CAAC,gBAAgB,CAAC,CAACggI,IAAI,CAAC,OAAO,CAAC,GACjC,mBAAmB,GACnBvrF,UAAU,GACV,kBAAkB,GAClBxsB,SAAS,GACT,IAAI;MACN22B,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClCwgH,OAAO,GAAGC,gCAAgC,CAACtnH,GAAG,CAAC;QAC/CunH,gBAAgB,CAACJ,KAAK,EAAEE,OAAO,EAAE9qH,UAAU,EAAExsB,SAAS,EAAEq3I,UAAU,EAAErK,SAAS,CAAC;MAChF,CAAC;MACDt0J,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnC;MAAA;IAEJ,CAAC,CAAC;EACJ;EACA,SAAS69J,sBAAsBA,CAACv+C,WAAW,EAAExsH,QAAQ,EAAE;IACrD;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,8BAA8B;MAChCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,oBAAoB,GAAG23E,WAAW,GAAG,IAAI;MAChFrhE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC;QACA,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC2gH,gCAAgC;QACnD;QACA;QACA;QACA;QACAjsK,QAAQ,CAACykD,GAAG,CAAC;QACb;QACA,IAAIynH,WAAW,GAAG,EAAE;QACpB,IAAIj3H,SAAS,GAAG1oC,CAAC,CAAC,gBAAgB,CAAC;QACnC,IAAIgjF,KAAK,GAAG,CAAC;QACb,IAAI48E,UAAU,GAAG,GAAG;QAEpB5/J,CAAC,CAAC,UAAU,EAAEk4C,GAAG,CAAC,CAACf,IAAI,CAAC,YAAY;UAClC0oH,OAAO,GAAG7/J,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAACzN,IAAI,CAAC,CAAC;UAChCutK,KAAK,GAAG9/J,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAACzN,IAAI,CAAC,CAAC;UACpCwtK,MAAM,GAAG//J,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAACzN,IAAI,CAAC,CAAC;UAC7BytK,MAAM,GAAGhgK,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAACzN,IAAI,CAAC,CAAC;UAEpC,IAAIytK,MAAM,IAAI,GAAG,EAAE;YACjB3tK,IAAI,GAAG,mEAAmE;UAC5E,CAAC,MAAM;YACLA,IAAI,GAAG,yEAAyE;UAClF;UAEA,IAAIytK,KAAK,IAAI,EAAE,EAAE;YACfA,KAAK,GAAGC,MAAM;UAChB;;UAEA;UACA,IAAIE,oBAAoB,GAAG,CAAC,EAAE;YAC5B;YACAN,WAAW,CAAC3iK,IAAI,CACd,qCAAqC,GACnC8iK,KAAK,GACL,eAAe,GACfE,MAAM,GACN,iCAAiC,GACjCF,KAAK,GACL,KAAK,GACLztK,IAAI,GACJ,GAAG,GACHwtK,OAAO,GACP,MACJ,CAAC;UACH,CAAC,MAAM;YACL;YACA,IAAII,oBAAoB,IAAI,CAAC,IAAIC,WAAW,CAAC,CAAC,CAAC,IAAIC,iBAAiB,EAAE;cACpE;cACA,IAAIL,KAAK,IAAIK,iBAAiB,EAAE;gBAC9BA,iBAAiB,GAAGL,KAAK;;gBAEzB;gBACA9/J,CAAC,CAAC,gBAAgB,CAAC,CAACo4C,IAAI,CACtBynH,OAAO,GACL,6IACJ,CAAC;gBACD7/J,CAAC,CAAC,gBAAgB,CAAC,CAACggI,IAAI,CAAC,OAAO,EAAE8/B,KAAK,CAAC;gBACxCM,gBAAgB,CAAC,gBAAgB,EAAEP,OAAO,CAAC3wK,MAAM,CAAC;gBAClD0wK,UAAU,GAAG,GAAG;cAClB,CAAC,MAAM;gBACL;gBACAD,WAAW,CAAC3iK,IAAI,CACd,qCAAqC,GACnC8iK,KAAK,GACL,eAAe,GACfE,MAAM,GACN,iCAAiC,GACjCF,KAAK,GACL,KAAK,GACLztK,IAAI,GACJ,GAAG,GACHwtK,OAAO,GACP,MACJ,CAAC;cACH;YACF,CAAC,MAAM;cACL;cACAF,WAAW,CAAC3iK,IAAI,CACd,qCAAqC,GACnC8iK,KAAK,GACL,eAAe,GACfE,MAAM,GACN,iCAAiC,GACjCF,KAAK,GACL,KAAK,GACLztK,IAAI,GACJ,GAAG,GACHwtK,OAAO,GACP,MACJ,CAAC;YACH;UACF;QACF,CAAC,CAAC;;QAEF;QACA,IAAID,UAAU,IAAI,GAAG,EAAE;UACrB;UACA5/J,CAAC,CAAC,gBAAgB,CAAC,CAACo4C,IAAI,CACtB,mBAAmB,GACjB,6IACJ,CAAC;UACDp4C,CAAC,CAAC,gBAAgB,CAAC,CAACggI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;UACpCogC,gBAAgB,CAAC,gBAAgB,EAAE,EAAE,CAAC;UACtCD,iBAAiB,GAAG,CAAC;QACvB;QAEAR,WAAW,GAAGA,WAAW,CAAChlJ,IAAI,CAAC,EAAE,CAAC;QAClC+tB,SAAS,CAAC0P,IAAI,CAACunH,WAAW,CAAC;;QAE3B;QACA,IAAI3/J,CAAC,CAACC,OAAO,CAACoqC,qBAAqB,IAAI,IAAI,IAAIrqC,CAAC,CAACC,OAAO,CAACqqC,sBAAsB,IAAI,IAAI,EAAE;UACvF+1H,mBAAmB,CAACrgK,CAAC,CAACC,OAAO,CAACqqC,sBAAsB,CAAC;QACvD,CAAC,MAAM;UACL,IAAI2L,UAAU,CAAC,+BAA+B,CAAC,IAAI,wBAAwB,EAAE;YAC3EoqH,mBAAmB,CAACpqH,UAAU,CAAC,2BAA2B,CAAC,CAAC;UAC9D,CAAC,MAAM;YACLoqH,mBAAmB,CAACpqH,UAAU,CAAC,oCAAoC,CAAC,CAAC;UACvE;QACF;QAEA,IAAIkqH,iBAAiB,IAAI,CAAC,EAAE;UAC1BxL,6BAA6B,CAAC,CAAC;QACjC,CAAC,MAAM;UACL30J,CAAC,CAAC,eAAe,CAAC,CAAC0d,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;UAC1C1d,CAAC,CAAC,eAAe,CAAC,CAACo4C,IAAI,CAAC,EAAE,CAAC;QAC7B;MACF;;MAEA;IACF,CAAC,CAAC;EACJ;EACA,SAASu8G,6BAA6BA,CACpC2L,UAAU,EACVrgD,WAAW,EACX/8D,UAAU,EACV4zG,SAAS,EACTyJ,UAAU,EACV9sK,QAAQ,EACR;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACAqjK,SAAS,GAAG,CAACA,SAAS,GAAG,KAAK,GAAGA,SAAS;IAE1C,IAAIA,SAAS,KAAK,KAAK,EAAE;MACvB,IAAI,CAACyJ,UAAU,EAAEA,UAAU,GAAGr9G,UAAU;IAC1C;IAEAljD,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qCAAqC;MACvCxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnBg4H,UAAU,GACV,kBAAkB,GAClBxJ,SAAS,GACT,kBAAkB,GAClByJ,UAAU,GACV,mBAAmB,GACnBtgD,WAAW,GACX,mBAAmB,GACnB/8D,UAAU,GACV,IAAI;MAENtE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACyhH,uCAAuC;QAC1D/sK,QAAQ,CAACykD,GAAG,CAAC;MACf;IACF,CAAC,CAAC;EACJ;EACA,SAASimH,UAAUA,CAACl+C,WAAW,EAAE/8D,UAAU,EAAEzvD,QAAQ,EAAE;IACrD;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;MAC5BxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpB23E,WAAW,GACX,mBAAmB,GACnB/8D,UAAU,GACV,IAAI;MACNtE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC;QACA,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC0hH,4BAA4B;QAC/ChtK,QAAQ,CAACykD,GAAG,CAAC;QACb;QACA;MACF,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnC;MAAA;IAEJ,CAAC,CAAC;EACJ;EACA,SAAS07J,aAAaA,CAAC5nH,UAAU,EAAE8qH,OAAO,EAAEt3I,SAAS,EAAEg4F,WAAW,EAAE/8D,UAAU,EAAEzvD,QAAQ,EAAE;IACxFw0B,SAAS,GAAGyiI,qBAAqB,CAACziI,SAAS,CAAC;IAC5CjoB,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iBAAiB;MACnBxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpB23E,WAAW,GACX,mBAAmB,GACnB/8D,UAAU,GACV,mBAAmB,GACnBzO,UAAU,GACV,kBAAkB,GAClBxsB,SAAS,GACT,gBAAgB,GAChBs3I,OAAO,GACP,IAAI;MACN3gH,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClCtrD,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnC;MAAA;IAEJ,CAAC,CAAC;EACJ;EACA,SAASg7J,wBAAwBA,CAC/BxuD,WAAW,EACXuzD,SAAS,EACTlnH,SAAS,EACTymE,WAAW,EACXgyC,UAAU,EACV0O,cAAc,EACd12H,eAAe,EACfx2C,QAAQ,EACR;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAC9BxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpB6kE,WAAW,GACX,oBAAoB,GACpB8S,WAAW,GACX,mBAAmB,GACnBgyC,UAAU,GACV,kBAAkB,GAClByO,SAAS,GACT,kBAAkB,GAClBlnH,SAAS,GACT,uBAAuB,GACvBmnH,cAAc,GACd,wBAAwB,GACxB12H,eAAe,GACf,IAAI;MACN2U,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAEhB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClCtrD,QAAQ,CAACykD,GAAG,CAAC;QACb;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;MACF,CAAC;MAEDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnCm4B,KAAK,CAAC,gBAAgB,GAAGn4B,KAAK,GAAG,KAAK,GAAGq+C,GAAG,CAAC9yC,MAAM,GAAG,IAAI,GAAG8yC,GAAG,CAAC+tD,YAAY,CAAC;MAChF;IACF,CAAC,CAAC;EACJ;EACA,SAASwnD,sBAAsBA,CAACrxG,UAAU,EAAE+8D,WAAW,EAAExsH,QAAQ,EAAE;IACjEuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;MAC5BxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnB4a,UAAU,GACV,oBAAoB,GACpB+8D,WAAW,GACX,IAAI;MACNrhE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxCrqD,IAAI,GAAGoqD,QAAQ,CAAC6hH,4BAA4B;QAC5CntK,QAAQ,CAACkB,IAAI,CAAC;MAChB,CAAC;MACDgM,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnC;MAAA;IAEJ,CAAC,CAAC;EACJ;EACA,SAASi3J,mBAAmBA,CAACp5H,KAAK,EAAE0kB,UAAU,EAAEzvD,QAAQ,EAAE;IACxDuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;MACzBxoD,IAAI,EAAE,YAAY,GAAG6pC,KAAK,GAAG,mBAAmB,GAAG0kB,UAAU,GAAG,IAAI;MACpEtE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAEhB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC;QACA,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC8hH,yBAAyB;QAC5CptK,QAAQ,CAACykD,GAAG,CAAC;MACf;IACF,CAAC,CAAC;EACF;;EAEA;EACA,eAAeuiH,+BAA+BA,CAAC5tD,YAAY,EAAE;IACzD;IACA,IAAI;MACA,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,mCAAmC;QACvCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACmsK,qCAAqC;IACrD,CAAC,CAAC,OAAOngK,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEF,OAAO;IACL4xD,qBAAqB;IACrBrH,gCAAgC;IAChCiE,iBAAiB;IACjB2D,kBAAkB;IAClBtD,wBAAwB;IACxBW,eAAe;IACfwB,oBAAoB;IACpBqB,oBAAoB;IACpBZ,sBAAsB;IACtB7J,6BAA6B;IAC7BwJ,UAAU;IACV9B,aAAa;IACbV,wBAAwB;IACxBpH,sBAAsB;IACtBqD,mBAAmB;IACnB6C;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACrwBJ,MAAMsG,gBAAgB,GAAG,CAAC,MAAM;EAC5B,IAAIC,iBAAiB;EACrB,IAAIC,iBAAiB;EACrB;EACA,IAAIC,UAAU;EACd,IAAIC,YAAY,GAAG,EAAE;EACrB,IAAIC,gBAAgB,GAAG,EAAE;EACzB,IAAIC,gBAAgB,GAAG,EAAE;EACzB,IAAIC,YAAY,GAAG,EAAE;EACrB,IAAIC,aAAa,GAAG,EAAE;EACtB,IAAIC,eAAe,GAAG,EAAE;;EAExB;EACA,IAAIC,aAAa;EACjB,IAAIxvD,aAAa;EACjB,IAAIE,aAAa;EACjB,IAAIE,SAAS;EACb,IAAIE,UAAU;EACd,IAAImoC,YAAY;EAChB,IAAIxY,OAAO;EACX,IAAI5hG,SAAS;EACb,IAAIohI,UAAU;EACd,IAAIC,mBAAmB,GAAG,CAAC,CAAC;EAC5B,IAAIC,YAAY;EAEhB,eAAe9vK,IAAIA,CAAA,EAAG;IAClBgP,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBnP,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC9I,OAAO,CAACgF,CAAC,IAAIA,CAAC,CAACzF,MAAM,CAAC,CAAC,CAAC;IACtE,IAAImqB,SAAS,GAAGjnB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C,IAAIqxI,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC6uK,iBAAiB,GAAGhvK,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,kBAAkB;MACxBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAI,CAACutK,iBAAiB,CAACvyK,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UACnDslK,kBAAkB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC;QACtD;MACJ;IACJ,CAAC,CAAC;IAEFZ,iBAAiB,GAAGjvK,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBM,UAAU,EAAE,CAAC,cAAc,CAAC;MAC5BQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAAEhC,UAAU,CAACqwK,qBAAqB,CAAC,CAAC;MAAC;IAC/D,CAAC,CAAC;IAEFC,iBAAiB,GAAG,MAAMC,mBAAmB,CAAC,CAAC;IAE/C,IAAIxyD,WAAW,GAAG59G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/Cq9G,WAAW,CAAC/gH,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAC9C,IAAI,CAACqR,CAAC,CAACC,OAAO,CAACq0C,eAAe,EAAE;MAC5B0sH,iBAAiB,CAACvyK,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC/C;IACA6gH,WAAW,CAACngH,WAAW,CAAC2xK,iBAAiB,CAAC;IAC1CxxD,WAAW,CAACngH,WAAW,CAAC4xK,iBAAiB,CAAC;IAC1CpoJ,SAAS,CAACxpB,WAAW,CAACmgH,WAAW,CAAC;IAClC32F,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAC7B3qH,SAAS,CAACxpB,WAAW,CAAC0yK,iBAAiB,CAAC;IAGxCjhK,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACwpB,SAAS,CAAC;EAC3C;;EAEA;EACA,eAAempJ,mBAAmBA,CAAA,EAAG;IACjC,MAAMnpE,YAAY,GAAG;MACjBjzF,KAAK,EAAE,KAAK;MACZZ,OAAO,EAAE,mBAAmB;MAC5BgB,cAAc,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC;MACpEM,OAAO,EAAE;IACb,CAAC;IACD,MAAM;MAAE27J,wBAAwB,EAAEC;IAAgB,CAAC,GAAG,MAAMC,OAAO,CAACC,uBAAuB,CAAC,CAAC;IAC7F,IAAIC,uBAAuB,GAAGH,eAAe,CAAC9kK,MAAM,CAAE+U,CAAC,IAAKA,CAAC,CAAC+uJ,UAAU,IAAI,CAAC,CAAC;IAE9E,IAAI9hE,SAAS,GAAGijE,uBAAuB,CAAC1pK,GAAG,CAAE2pK,QAAQ,KAAM;MACvDp7J,MAAM,EAAE,CAACo7J,QAAQ,CAACnB,YAAY,EAAEmB,QAAQ,CAACpwD,QAAQ,GAAG,GAAG,GAAGowD,QAAQ,CAAClwD,QAAQ,EAAEkwD,QAAQ,CAAChwD,IAAI,EAAEgwD,QAAQ,CAACljI,KAAK,EAAEkjI,QAAQ,CAACzuB,OAAO,CAAC;MAC7HxgJ,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,YAAY;QAAEC,KAAK,EAAE8uK,QAAQ,CAACpB;MAAW,CAAC,CAAC;MAC/D9uK,EAAE,EAAEkwK,QAAQ,CAACpB,UAAU;MACvBn6J,OAAO,EAAG5S,CAAC,IAAK;QACZguK,OAAO,CAACI,WAAW,CAACD,QAAQ,CAACpB,UAAU,EAAE,UAAUpnE,OAAO,EAAE;UACxD+nE,kBAAkB,CAAC/nE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC;QAC3D,CAAC,CAAC;MACN;IACJ,CAAC,CAAC,CAAC;IACH,MAAMoX,MAAM,GAAGpsG,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAExC;IACA,MAAMzwF,OAAO,GAAG8oG,MAAM,CAACj5G,gBAAgB,CAAC,aAAa,CAAC;IACtDmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAEhD;IACAiS,KAAK,CAACqD,iBAAiB,CAAC+oG,MAAM,CAAC;IAE/BpsG,KAAK,CAAC9V,QAAQ,CAACkiH,MAAM,EAAE9R,SAAS,CAAC;IACjC,OAAO8R,MAAM;EACjB;;EAGA;EACA,eAAe2wD,kBAAkBA,CAACW,YAAY,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,YAAY,EAAE;IAClF,IAAID,YAAY,IAAI,gBAAgB,EAAE;MAClChB,UAAU,GAAG,gBAAgB;MAC7BC,mBAAmB,GAAGgB,YAAY;IACtC,CAAC,MAEGjB,UAAU,GAAG,UAAU;IAE3B,IAAIkB,eAAe;IACnB,IAAIJ,YAAY,IAAI9xJ,MAAM,CAAC8B,IAAI,CAACgwJ,YAAY,CAAC,CAACtzK,MAAM,KAAK,CAAC,EAAE;MACxDgyK,UAAU,GAAGsB,YAAY,CAAC,CAAC,CAAC,CAACtB,UAAU;MACvCC,YAAY,GAAGqB,YAAY,CAAC,CAAC,CAAC,CAACrB,YAAY;MAC3CC,gBAAgB,GAAGoB,YAAY,CAAC,CAAC,CAAC,CAACtwD,QAAQ;MAC3CmvD,gBAAgB,GAAGmB,YAAY,CAAC,CAAC,CAAC,CAACpwD,QAAQ;MAC3CkvD,YAAY,GAAGkB,YAAY,CAAC,CAAC,CAAC,CAAClwD,IAAI;MACnCivD,aAAa,GAAGiB,YAAY,CAAC,CAAC,CAAC,CAACpjI,KAAK;MACrCoiI,eAAe,GAAGgB,YAAY,CAAC,CAAC,CAAC,CAAC3uB,OAAO;MACzC+uB,eAAe,GAAG,oBAAoB;MACtChB,YAAY,GAAG,QAAQ;IAC3B,CAAC,MAAM;MACHV,UAAU,GAAG,EAAE;MACfC,YAAY,GAAG,EAAE;MACjBC,gBAAgB,GAAG,EAAE;MACrBC,gBAAgB,GAAG,EAAE;MACrBC,YAAY,GAAG,EAAE;MACjBC,aAAa,GAAG,EAAE;MAClBC,eAAe,GAAG,EAAE;MACpBoB,eAAe,GAAG,cAAc;MAChChB,YAAY,GAAG,KAAK;IACxB;IAEA,IAAIiB,iBAAiB,GAAGlhK,KAAK,CAAC1P,KAAK,CAAC;MAChC2P,MAAM,EAAEghK,eAAe;MACvBzgK,KAAK,EAAE,IAAI;MACX/P,EAAE,EAAE;IACR,CAAC,CAAC;IAEFqvK,aAAa,GAAGhsK,KAAK,CAACxD,KAAK,CAAC;MACxBG,EAAE,EAAE,eAAe;MACnB2B,KAAK,EAAE,UAAU;MACjBP,KAAK,EAAG2tK,YAAY,GAAIA,YAAY,GAAG;IAC3C,CAAC,CAAC;IAEFlvD,aAAa,GAAGx8G,KAAK,CAACxD,KAAK,CAAC;MACxB8B,KAAK,EAAE,SAAS;MAChBP,KAAK,EAAG4tK,gBAAgB,GAAIA,gBAAgB,GAAG;IACnD,CAAC,CAAC;IAEFjvD,aAAa,GAAG18G,KAAK,CAACxD,KAAK,CAAC;MACxB8B,KAAK,EAAE,WAAW;MAClBP,KAAK,EAAG6tK,gBAAgB,GAAIA,gBAAgB,GAAG;IACnD,CAAC,CAAC;IAEFhvD,SAAS,GAAG58G,KAAK,CAACxD,KAAK,CAAC;MACpB8B,KAAK,EAAE,MAAM;MACbP,KAAK,EAAG8tK,YAAY,GAAIA,YAAY,GAAG;IAC3C,CAAC,CAAC;IAEF/uD,UAAU,GAAG98G,KAAK,CAACxD,KAAK,CAAC;MACrB8B,KAAK,EAAE,OAAO;MACdP,KAAK,EAAG+tK,aAAa,GAAIA,aAAa,GAAG;IAC7C,CAAC,CAAC;IAEF7mB,YAAY,GAAGjlJ,KAAK,CAACxD,KAAK,CAAC;MACvB8B,KAAK,EAAE,UAAU;MACjBP,KAAK,EAAGguK,eAAe,GAAIA,eAAe,GAAG;IACjD,CAAC,CAAC;IAEFt/B,OAAO,GAAGlwI,MAAM,CAACC,KAAK,CAAC;MACnBG,EAAE,EAAE,oBAAoB;MACxBG,IAAI,EAAE,MAAM;MACZI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAEA,CAAA,KAAM;QACZ,IAAI,CAACyuI,OAAO,CAACzzI,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UACzCumK,wBAAwB,CAACL,QAAQ,CAAC;QACtC;MACJ;IACJ,CAAC,CAAC;IAEFniI,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MACrBG,EAAE,EAAE,sBAAsB;MAC1BG,IAAI,EAAE,QAAQ;MACdI,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMkO,KAAK,CAAC/S,IAAI,CAACi0K,iBAAiB;IAChD,CAAC,CAAC;IAEF,IAAI1kI,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC;IAC5B/jG,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAC9BuiI,iBAAiB,CAACxzK,WAAW,CAACoyK,aAAa,CAAC;IAC5CoB,iBAAiB,CAACxzK,WAAW,CAAC4iH,aAAa,CAAC;IAC5C4wD,iBAAiB,CAACxzK,WAAW,CAAC8iH,aAAa,CAAC;IAC5C0wD,iBAAiB,CAACxzK,WAAW,CAACgjH,SAAS,CAAC;IACxCwwD,iBAAiB,CAACxzK,WAAW,CAACkjH,UAAU,CAAC;IACzCswD,iBAAiB,CAACxzK,WAAW,CAACqrJ,YAAY,CAAC;IAC3CmoB,iBAAiB,CAACxzK,WAAW,CAAC8uC,OAAO,CAAC;IAEtCy8G,kBAAkB,CAAC,CAAC;IACpBj5I,KAAK,CAAC9S,IAAI,CAACg0K,iBAAiB,CAAC;IAC7BjkD,mBAAmB,CAAC,CAAC;EACzB;EAEA,SAASg8B,kBAAkBA,CAAA,EAAG;IAC1B6mB,aAAa,CAAC1vK,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C4xK,YAAY,GAAG5xK,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC6mB,IAAI,CAAC,CAAC;MACxCukG,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF3M,aAAa,CAAClgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C6xK,gBAAgB,GAAG7xK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACzC,CAAC,CAAC;IAEF2+G,aAAa,CAACpgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C8xK,gBAAgB,GAAG9xK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACzC,CAAC,CAAC;IAEF6+G,SAAS,CAACtgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzC+xK,YAAY,GAAG/xK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACrC,CAAC,CAAC;IAEF++G,UAAU,CAACxgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1CgyK,aAAa,GAAGhyK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACtC,CAAC,CAAC;IAEFknJ,YAAY,CAAC3oJ,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5CiyK,eAAe,GAAGjyK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACxC,CAAC,CAAC;EACN;EAEA,SAASorH,mBAAmBA,CAAA,EAAG;IAC3B,IAAImkD,YAAY,GAAGtB,aAAa,CAAC5vK,aAAa,CAAC,gBAAgB,CAAC;IAChE,IAAIkxK,YAAY,CAACvvK,KAAK,CAAC6mB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;MAClConJ,aAAa,CAAChzK,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACpCuzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACjC;IACJ,CAAC,MAAM;MACH8yK,aAAa,CAAChzK,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACvCwzI,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC;IAEA,IAAKsR,CAAC,CAACC,OAAO,CAACs0C,eAAe,IAAIqtH,YAAY,IAAI,QAAQ,IAAM5hK,CAAC,CAACC,OAAO,CAACq0C,eAAe,IAAIstH,YAAY,IAAI,KAAM,EAAE;MACjH1/B,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC,CAAC,MAAM;MACHwzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC;EACJ;;EAEA;EACA,eAAem0K,wBAAwBA,CAACL,QAAQ,EAAE;IAE9C,IAAIA,QAAQ,IAAI,QAAQ,EAAE;MAEtB,MAAMn9I,MAAM,GAAG,MAAM68I,OAAO,CAACa,mBAAmB,CAAC7B,YAAY,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,aAAa,EAAEC,eAAe,CAAC;MAChJ,MAAM;QAAEyB;MAAqB,CAAC,GAAG39I,MAAM;MACvC,IAAI49I,UAAU,GAAGD,oBAAoB,CAAC/B,UAAU;MAEhD,IAAIgC,UAAU,IAAI,GAAG,EAAE;QACnBjlI,YAAY,CAAC,CAAC;MAClB,CAAC,MAAM;QACHt8B,KAAK,CAAC/S,IAAI,CAACi0K,iBAAiB,CAAC;QAC7BrgK,cAAc,CAAC3T,IAAI,CAAC,CAAC;QACrBirB,UAAU,CAAC,YAAY;UACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrB,IAAI8yK,UAAU,IAAI,gBAAgB,EAC9ByB,aAAa,CAACC,iBAAiB,CAACzB,mBAAmB,CAAC0B,UAAU,EAAE1B,mBAAmB,CAAC2B,OAAO,EAAE3B,mBAAmB,CAAC4B,OAAO,EAAE5B,mBAAmB,CAAC6B,aAAa,EAAE7B,mBAAmB,CAAC8B,WAAW,EAAEC,gBAAgB,GAAG,CAAC,CAAC,CAAC,KAEpN3C,gBAAgB,CAACjvK,IAAI,CAAC,CAAC;QAC/B,CAAC,EAAE,IAAI,CAAC;MACZ;IAEJ,CAAC,MAAM;MAAG;MACN6P,KAAK,CAAC/S,IAAI,CAACi0K,iBAAiB,CAAC;MAC7B,MAAMv9I,MAAM,GAAG,MAAM68I,OAAO,CAACwB,mBAAmB,CAACzC,UAAU,EAAEC,YAAY,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,aAAa,EAAEC,eAAe,CAAC;MAC5J,MAAM;QAAEoC,oBAAoB,EAAE;UAAEV;QAAW;MAAE,CAAC,GAAG59I,MAAM;MACvD9iB,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrBirB,UAAU,CAAC,YAAY;QACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrBmyK,gBAAgB,CAACjvK,IAAI,CAAC,CAAC;MAC3B,CAAC,EAAE,IAAI,CAAC;IACZ;EACJ;EAEA,SAASouJ,kBAAkBA,CAACghB,UAAU,EAAE2C,QAAQ,EAAE;IAC9C,IAAIC,WAAW,GAAGniK,KAAK,CAAC1P,KAAK,CAAC;MAC1BG,EAAE,EAAE,oBAAoB;MACxBa,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,IAAIkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;QACvB,IAAIx+I,MAAM,GAAG,MAAM68I,OAAO,CAAC4B,mBAAmB,CAAC7C,UAAU,CAAC;QAC1D,IAAI57I,MAAM,CAAC0+I,oBAAoB,KAAK,GAAG,EAAE;UACrCH,QAAQ,CAACn1K,MAAM,CAAC,CAAC;QACrB;MACJ;IACJ,CAAC,CAAC;IACF,IAAI4tJ,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,OAAO;MACboB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;MAC3B;IACJ,CAAC,CAAC;IACF3lI,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B,IAAIj+G,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,gDAAgD;IAC3E+0K,WAAW,CAACz0K,WAAW,CAACgvC,cAAc,CAAC;IACvCylI,WAAW,CAACz0K,WAAW,CAAC8uC,OAAO,CAAC;IAChCx8B,KAAK,CAAC9S,IAAI,CAACi1K,WAAW,CAAC;EAC3B;EAEA,SAAS7lI,YAAYA,CAAA,EAAG;IACpB,IAAIx8B,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACpBG,EAAE,EAAE,cAAc;MAClBa,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,IAAIgxK,KAAK,GAAGjyK,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB3C,OAAO,CAACjQ,IAAI,CAAC,CAAC;MAClB;IACJ,CAAC,CAAC;IACF,IAAIsvC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC40K,KAAK,CAAC;IAE1B,IAAI5lI,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,+BAA+B;IAC1D0S,KAAK,CAACpS,WAAW,CAACgvC,cAAc,CAAC;IACjC58B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACrB;EAEA,OAAO;IACH3P,IAAI;IACJ+vK;EACJ,CAAC;AACL,CAAC,EAAE,CAAC;ACxWJ,MAAMpwK,UAAU,GAAG,CAAC,MAAM;EACtB;EACA,IAAIyyK,YAAY;EAChB,IAAItoE,SAAS;EACb,IAAIuoE,sBAAsB,GAAG,EAAE;EAC/B,IAAIC,YAAY;EAChB,IAAIzhC,WAAW;EACf,IAAIC,eAAe;EACnB,IAAI9mC,WAAW;EACf,IAAIC,iBAAiB;EACrB,IAAIC,qBAAqB;EACzB,IAAIC,mBAAmB;EACvB;EACA,IAAIC,YAAY;EAChB,IAAI/9D,OAAO;EACX,IAAIkmI,eAAe;EACnB,IAAIC,eAAe;EACnB,IAAIC,wBAAwB;EAC5B,IAAIC,sBAAsB;EAC1B,IAAIC,kBAAkB;EACtB,IAAIC,YAAY;;EAEhB;EACA,eAAe30K,oBAAoBA,CAACP,MAAM,EAAE;IACxC,IAAIiuG,YAAY,GAAGjuG,MAAM,CAACC,OAAO,CAACC,SAAS;IAE3C,QAAQ+tG,YAAY;MAChB,KAAK,gBAAgB;QAAE;UACnB1B,iBAAiB,GAAG2B,OAAO,CAACC,kBAAkB,CAAC,CAAC;UAChD,MAAMmkE,qBAAqB,CAAC,CAAC;UAC7BhhK,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrB;QACJ;MACA,KAAK,kBAAkB;QAAE;UACrBloB,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrBnqB,OAAO,CAAC,MAAM,CAAC;UACf;QACJ;IACJ;EACJ;;EAEA;EACA,eAAeijK,qBAAqBA,CAAA,EAAG;IACnChhK,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;IAEvB,IAAI,CAAC73B,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC,EAAE6rG,OAAO,CAACI,cAAc,CAAC,CAAC;IAEzEC,WAAW,GAAGnsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAE3C8pG,mBAAmB,GAAGF,iBAAiB,CAACA,iBAAiB,CAAC7sG,MAAM,GAAG,CAAC,CAAC,CAACkD,EAAE;IACxE4N,CAAC,CAACC,OAAO,CAACw0C,UAAU,GAAGwnD,mBAAmB;IAC1C,MAAMvkG,IAAI,GAAG,CACT,MAAMsmG,oBAAoB,CAACC,mBAAmB,CAAC;MAC3Cz/D,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAEwnD;IAChB,CAAC,CAAC,EACJiC,yBAAyB;IAE3BlC,qBAAqB,GAAGtkG,IAAI,CAAC,CAAC,CAAC,CAACymG,QAAQ;IACxC,MAAM2lC,SAAS,GAAGC,iBAAiB,CAAChoC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACzDgC,WAAW,CAAC1uG,WAAW,CAACy0I,SAAS,CAAC;IAClCloC,SAAS,GAAGhqG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzCypG,SAAS,CAACntG,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAExC,MAAM0vG,UAAU,GAAGC,eAAe,CAAC,CAAC;IACpC1C,SAAS,CAACvsG,WAAW,CAACgvG,UAAU,CAAC;IAEjCN,WAAW,CAAC1uG,WAAW,CAACusG,SAAS,CAAC;IAClCuoE,sBAAsB,GAAG,MAAMQ,2BAA2B,CAACzoE,YAAY,CAAC;IACxE6B,WAAW,CAAC1uG,WAAW,CAAC80K,sBAAsB,CAAC;IAC/CrjK,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC0uG,WAAW,CAAC;EAC7C;;EAEA;EACA,eAAe4mE,2BAA2BA,CAACzoE,YAAY,EAAE;IACrD,MAAMrD,YAAY,GAAG;MACjBjzF,KAAK,EAAE,KAAK;MACZZ,OAAO,EAAE,6BAA6B;MACtCa,QAAQ,EAAEm2F,qBAAqB;MAC/Bh2F,cAAc,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,cAAc,CAAC;MACpGM,OAAO,EAAE;IACb,CAAC;IAED,IAAIs+J,kBAAkB,GAAG,MAAMC,cAAc,CAACC,yBAAyB,CACnE7oE,mBAAmB,EACnBC,YAAY,CAAComE,QAAQ,EACrBpmE,YAAY,CAACliG,QAAQ,EACrBkiG,YAAY,CAAC6oE,iBAAiB,EAC9B7oE,YAAY,CAAC8oE,eAAe,IAAI,IAAI,GAAG1iJ,IAAI,CAAC8Z,aAAa,CAAC,CAAC,GAAG8/D,YAAY,CAAC8oE,eAAe,EAC1F9oE,YAAY,CAAC+oE,WACjB,CAAC;IAED,IAAI7lE,SAAS,GAAGwlE,kBAAkB,CAACM,0BAA0B,CAACvsK,GAAG,CAAE0mG,KAAK,KAAM;MAC1En4F,MAAM,EAAE,CAACm4F,KAAK,CAACijE,QAAQ,EAAEjjE,KAAK,CAACrlG,QAAQ,EAAEqlG,KAAK,CAAC0lE,iBAAiB,IAAI,EAAE,GAAG,EAAE,GAAG/8G,MAAM,CAACq3C,KAAK,CAAC0lE,iBAAiB,CAAC,CAACrtJ,MAAM,CAAC,UAAU,CAAC,EAAE2nF,KAAK,CAAC2lE,eAAe,IAAI,EAAE,GAAG,EAAE,GAAGh9G,MAAM,CAACq3C,KAAK,CAAC2lE,eAAe,CAAC,CAACttJ,MAAM,CAAC,UAAU,CAAC,EAAE2nF,KAAK,CAAC4lE,WAAW,CAAC;MACzO5xK,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,YAAY;QAAEC,KAAK,EAAE6rG,KAAK,CAACgkE;MAAW,CAAC,EAAE;QAAE9vK,GAAG,EAAE,YAAY;QAAEC,KAAK,EAAE6rG,KAAK,CAAC8lE;MAAW,CAAC,CAAC;MAC5Gp+J,OAAO,EAAG5S,CAAC,IAAK;QACZ86I,wBAAwB,CAAC96I,CAAC,CAAC;MAC/B;IACJ,CAAC,CAAC,CAAC;IACH,MAAM+8G,MAAM,GAAGpsG,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAExC;IACA,MAAMzwF,OAAO,GAAG8oG,MAAM,CAACj5G,gBAAgB,CAAC,aAAa,CAAC;IACtDmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAGhD;IACAiS,KAAK,CAACqD,iBAAiB,CAAC+oG,MAAM,CAAC;IAE/BpsG,KAAK,CAAC9V,QAAQ,CAACkiH,MAAM,EAAE9R,SAAS,CAAC;IAEjC,OAAO8R,MAAM;EACjB;EAEA,SAAS+9B,wBAAwBA,CAAC1/I,KAAK,EAAE;IACrC,IAAImI,IAAI,GAAGnI,KAAK,CAACC,MAAM,CAAC6Z,UAAU,CAAC,CAAC,CAAC,CAACjT,SAAS;IAC/C,IAAIgvK,YAAY,GAAG71K,KAAK,CAACC,MAAM,CAAC6Z,UAAU,CAAC,CAAC,CAAC,CAACjT,SAAS;IACvD,IAAIitK,UAAU,GAAG9zK,KAAK,CAACC,MAAM,CAAC6D,UAAU,CAACgwK,UAAU,CAAC7vK,KAAK;IACzD2vK,aAAa,CAACC,iBAAiB,CAACC,UAAU,EAAE3rK,IAAI,EAAE0tK,YAAY,EAAEppE,qBAAqB,EAAEC,mBAAmB,CAAC;EAC/G;;EAEA;EACA,SAAS8nC,iBAAiBA,CAACjpC,QAAQ,EAAE;IACjC8nC,eAAe,GAAGhxI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CwwI,WAAW,GAAG/wI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CwwI,WAAW,CAACl0I,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAC3Cy1K,YAAY,GAAGhgC,cAAc,CAACtpC,QAAQ,CAAC;IACvC6nC,WAAW,CAACtzI,WAAW,CAAC+0K,YAAY,CAAC;IACrCxhC,eAAe,CAACvzI,WAAW,CAACszI,WAAW,CAAC;IACxC,OAAOC,eAAe;EAC1B;EAEA,SAASwB,cAAcA,CAACtpC,QAAQ,EAAE;IAC9B,MAAMupC,SAAS,GAAGzyI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CkyI,SAAS,CAAC51I,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IACvC01I,SAAS,CAAC3xI,KAAK,CAAC6yF,SAAS,GAAG,MAAM;IAClC8+C,SAAS,CAAC3xI,KAAK,CAAC4xI,QAAQ,GAAG,MAAM;IAEjC,MAAM+gC,cAAc,GAAGrzK,MAAM,CAACC,KAAK,CAAC;MAChCM,IAAI,EAAE,gBAAgB;MACtBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAI,CAAC4xK,cAAc,CAAC52K,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAChD4mK,aAAa,CAACC,iBAAiB,CAACC,UAAU,GAAGntK,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE8lG,qBAAqB,EAAEC,mBAAmB,CAAC;QAC/G;MACJ;IACJ,CAAC,CAAC;IAEF,MAAMqpE,eAAe,GAAGtzK,MAAM,CAACC,KAAK,CAAC;MACjCM,IAAI,EAAE,gBAAgB;MACtBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAI,CAAC6xK,eAAe,CAAC72K,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UACjDwkK,gBAAgB,CAACjvK,IAAI,CAAC,CAAC;QAC3B;MACJ;IACJ,CAAC,CAAC;;IAIF;IACA,SAASirK,sBAAsBA,CAACC,WAAW,EAAE;MACzC,OAAOhrK,MAAM,CAACC,KAAK,CAAC;QAChBM,IAAI,EAAE,SAAS;QACfF,IAAI,EAAE,KAAK;QACXK,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBM,UAAU,EAAE,UAAU;QACtBQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;UAClB;UACAupK,WAAW,CAAC7tK,OAAO,CAAC,UAAU8tK,UAAU,EAAE;YACtCA,UAAU,CAAC/gE,YAAY,GAAGqpE,eAAe,CAAC,CAAC;UAC/C,CAAC,CAAC;UAEFhhB,eAAe,CAAC2Y,gBAAgB,CAACF,WAAW,CAAC;QACjD;MACJ,CAAC,CAAC;IACN;IACAG,UAAU,GAAGJ,sBAAsB,CAAC,CAAC;MAAExqK,IAAI,EAAE;IAAiC,CAAC,CAAC,CAAC;IAEjF,IAAIyN,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;MAC5BixH,cAAc,CAAC52K,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC/C,CAAC,MACI;MACD22K,cAAc,CAAC52K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC5C;IACA02K,cAAc,CAAC3yK,KAAK,CAACwnB,MAAM,GAAG,MAAM;IAEpCgqJ,YAAY,GAAG9lE,iBAAiB,CAAC,CAAC;IAElC,MAAMomC,cAAc,GAAG5yI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpDqyI,cAAc,CAAC/1I,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IACjD61I,cAAc,CAAC9xI,KAAK,CAACiS,KAAK,GAAG,MAAM;IACnC6/H,cAAc,CAACn1I,WAAW,CAACg2K,cAAc,CAAC;IAE1C,IAAI,CAACrlK,CAAC,CAACC,OAAO,CAACq0C,eAAe,IAAI,CAACt0C,CAAC,CAACC,OAAO,CAACs0C,eAAe,EAAE;MAC1D+wH,eAAe,CAAC72K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC7C;IACA61I,cAAc,CAACn1I,WAAW,CAACi2K,eAAe,CAAC;IAC3C,IAAItlK,CAAC,CAACC,OAAO,CAACk0C,cAAc,EAAE;MAC1BqwF,cAAc,CAACn1I,WAAW,CAAC8tK,UAAU,CAAC;IAC1C;IACA94B,SAAS,CAACh1I,WAAW,CAACm1I,cAAc,CAAC;IAErC,OAAOH,SAAS;EACpB;;EAEA;EACA,SAASjmC,iBAAiBA,CAAA,EAAG;IACzB,IAAI,CAAClC,YAAY,EAAEA,YAAY,GAAG;MAC9B19D,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBg6H,QAAQ,EAAE,GAAG;MACbtoK,QAAQ,EAAE,GAAG;MACb+qK,iBAAiB,EAAE,YAAY;MAC/BC,eAAe,EAAE,IAAI;MACrBC,WAAW,EAAE,GAAG;MAChBO,UAAU,EAAE,GAAG;MACfC,UAAU,EAAE,GAAG;MACfC,aAAa,EAAE;IACnB,CAAC;EACL;EAEA,SAASH,eAAeA,CAAA,EAAG;IACvB,OAAQb,YAAY,GAAG;MACnBiB,UAAU,EAAE1pE,mBAAmB;MAC/BqmE,QAAQ,EAAEpmE,YAAY,CAACspE,UAAU,IAAItvK,SAAS,GAAG,GAAG,GAAGgmG,YAAY,CAACspE,UAAU;MAC9ExrK,QAAQ,EAAEkiG,YAAY,CAACupE,UAAU,IAAIvvK,SAAS,GAAG,GAAG,GAAGgmG,YAAY,CAACupE,UAAU;MAC9EV,iBAAiB,EAAE7oE,YAAY,CAAC6oE,iBAAiB;MACjDC,eAAe,EAAE9oE,YAAY,CAAC8oE,eAAe,IAAI,IAAI,GAAG1iJ,IAAI,CAAC8Z,aAAa,CAAC,CAAC,GAAG8/D,YAAY,CAAC8oE,eAAe;MAC3GC,WAAW,EAAE/oE,YAAY,CAACwpE,aAAa,IAAIxvK,SAAS,GAAG,GAAG,GAAGgmG,YAAY,CAACwpE;IAC9E,CAAC;EACL;;EAGA;EACA,SAASpnE,eAAeA,CAAA,EAAG;IACvB,IAAID,UAAU,GAAGzsG,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IAC1D,IAAI,CAACwsG,UAAU,EAAE;MACbA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MAC1C0xG,eAAe,CAAC,CAAC;MACjBhC,UAAU,CAAChvG,WAAW,CAAC8uC,OAAO,CAAC;IACnC;IAEAkgE,UAAU,CAAC3rG,KAAK,CAAC4yF,QAAQ,GAAG,MAAM;IAClC,IAAI4W,YAAY,CAAComE,QAAQ,KAAK,GAAG,IAAIpmE,YAAY,CAAComE,QAAQ,KAAK,KAAK,EAAE;MAClEnkI,OAAO,CAAC9uC,WAAW,CAACg1K,eAAe,CAAC;MACpClmI,OAAO,CAACn9B,WAAW,CAACqjK,eAAe,CAAC;IACxC,CAAC,MAAM;MACHlmI,OAAO,CAAC9uC,WAAW,CAACg1K,eAAe,CAAC;IACxC;IAEA,IAAInoE,YAAY,CAACliG,QAAQ,KAAK,GAAG,IAAIkiG,YAAY,CAACliG,QAAQ,KAAK,KAAK,EAAE;MAClEmkC,OAAO,CAAC9uC,WAAW,CAACi1K,eAAe,CAAC;MACpCnmI,OAAO,CAACn9B,WAAW,CAACsjK,eAAe,CAAC;IACxC,CAAC,MAAM;MACHnmI,OAAO,CAAC9uC,WAAW,CAACi1K,eAAe,CAAC;IACxC;IAEA,IAAIpoE,YAAY,CAAC8oE,eAAe,KAAK,IAAI,EAAE;MACvC7mI,OAAO,CAAC9uC,WAAW,CAACm1K,sBAAsB,CAAC;MAC3CrmI,OAAO,CAACn9B,WAAW,CAACwjK,sBAAsB,CAAC;IAC/C,CAAC,MAAM;MACHrmI,OAAO,CAAC9uC,WAAW,CAACm1K,sBAAsB,CAAC;IAC/C;IACA,IAAItoE,YAAY,CAAC+oE,WAAW,KAAK,GAAG,IAAI/oE,YAAY,CAAC+oE,WAAW,KAAK,KAAK,EAAE;MACxE9mI,OAAO,CAAC9uC,WAAW,CAACo1K,kBAAkB,CAAC;MACvCtmI,OAAO,CAACn9B,WAAW,CAACyjK,kBAAkB,CAAC;IAC3C,CAAC,MAAM;MACHtmI,OAAO,CAAC9uC,WAAW,CAACo1K,kBAAkB,CAAC;IAC3C;IAEA,OAAOpmE,UAAU;EACrB;EAEA,SAASgC,eAAeA,CAAA,EAAG;IACvBC,SAAS,GAAGtuG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,cAAc;MAC1BQ,QAAQ,EAAEA,CAAA,KAAM;QAAE8sG,gBAAgB,CAAC,KAAK,CAAC;MAAC;IAC9C,CAAC,CAAC;IAEFqlE,WAAW,GAAG5zK,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,YAAY,GAAG2pG,YAAY,CAAComE,QAAQ;MAC1C5vK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE8sG,gBAAgB,CAAC,aAAa,CAAC;MAAC;IACtD,CAAC,CAAC;IACFslE,gBAAgB,GAAG7zK,MAAM,CAACC,KAAK,CAAC;MAC5BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,aAAa,CAAC;MAAC;IACjD,CAAC,CAAC;IAEFolE,WAAW,GAAG9zK,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,YAAY,GAAG2pG,YAAY,CAACliG,QAAQ;MAC1CtH,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE8sG,gBAAgB,CAAC,aAAa,CAAC;MAAC;IACtD,CAAC,CAAC;IACFwlE,gBAAgB,GAAG/zK,MAAM,CAACC,KAAK,CAAC;MAC5BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,aAAa,CAAC;MAAC;IACjD,CAAC,CAAC;IAEFslE,oBAAoB,GAAGh0K,MAAM,CAACC,KAAK,CAAC;MAChCG,EAAE,EAAE,sBAAsB;MAC1BG,IAAI,EAAE,uBAAuB,GAAGy1D,MAAM,CAACk0C,YAAY,CAAC6oE,iBAAiB,EAAE,YAAY,CAAC,CAACrtJ,MAAM,CAAC,YAAY,CAAC;MACzGhlB,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE8sG,gBAAgB,CAAC,sBAAsB,CAAC;MAAC;IAC/D,CAAC,CAAC;IAEF0lE,kBAAkB,GAAGj0K,MAAM,CAACC,KAAK,CAAC;MAC9BG,EAAE,EAAE,oBAAoB;MACxBG,IAAI,EAAE,qBAAqB,GAAGy1D,MAAM,CAACk0C,YAAY,CAAC8oE,eAAe,EAAE,YAAY,CAAC,CAACttJ,MAAM,CAAC,YAAY,CAAC;MACrGhlB,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE8sG,gBAAgB,CAAC,oBAAoB,CAAC;MAAC;IAC7D,CAAC,CAAC;IACF2lE,uBAAuB,GAAGl0K,MAAM,CAACC,KAAK,CAAC;MACnCI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,oBAAoB,CAAC;MAAC;IACxD,CAAC,CAAC;IAEFylE,cAAc,GAAGn0K,MAAM,CAACC,KAAK,CAAC;MAC1BG,EAAE,EAAE,gBAAgB;MACpBG,IAAI,EAAE,gBAAgB,GAAG2pG,YAAY,CAAC+oE,WAAW;MACjDvyK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE8sG,gBAAgB,CAAC,gBAAgB,CAAC;MAAC;IACzD,CAAC,CAAC;IACF6lE,mBAAmB,GAAGp0K,MAAM,CAACC,KAAK,CAAC;MAC/BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,gBAAgB,CAAC;MAAC;IACpD,CAAC,CAAC;IAEFviE,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvCgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IACtCwvC,OAAO,CAAC9uC,WAAW,CAACixG,SAAS,CAAC;IAE9B+jE,eAAe,GAAGzyK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CkyK,eAAe,CAAC51K,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvD01K,eAAe,CAACh1K,WAAW,CAACu2K,WAAW,CAAC;IACxCvB,eAAe,CAACh1K,WAAW,CAACw2K,gBAAgB,CAAC;IAC7C1nI,OAAO,CAAC9uC,WAAW,CAACg1K,eAAe,CAAC;IAEpCC,eAAe,GAAG1yK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CmyK,eAAe,CAAC71K,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvD21K,eAAe,CAACj1K,WAAW,CAACy2K,WAAW,CAAC;IACxCxB,eAAe,CAACj1K,WAAW,CAAC02K,gBAAgB,CAAC;IAC7C5nI,OAAO,CAAC9uC,WAAW,CAACi1K,eAAe,CAAC;IAEpCC,wBAAwB,GAAG3yK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACxDoyK,wBAAwB,CAAC91K,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAChE41K,wBAAwB,CAACl1K,WAAW,CAAC22K,oBAAoB,CAAC;IAC1D7nI,OAAO,CAAC9uC,WAAW,CAACk1K,wBAAwB,CAAC;IAE7CC,sBAAsB,GAAG5yK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtDqyK,sBAAsB,CAAC/1K,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC9D61K,sBAAsB,CAACn1K,WAAW,CAAC42K,kBAAkB,CAAC;IACtDzB,sBAAsB,CAACn1K,WAAW,CAAC62K,uBAAuB,CAAC;IAC3D/nI,OAAO,CAAC9uC,WAAW,CAACm1K,sBAAsB,CAAC;IAE3CC,kBAAkB,GAAG7yK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDsyK,kBAAkB,CAACh2K,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC1D81K,kBAAkB,CAACp1K,WAAW,CAAC82K,cAAc,CAAC;IAC9C1B,kBAAkB,CAACp1K,WAAW,CAAC+2K,mBAAmB,CAAC;IACnDjoI,OAAO,CAAC9uC,WAAW,CAACo1K,kBAAkB,CAAC;EAC3C;EAEA,SAAS/jE,WAAWA,CAACA,WAAW,EAAE;IAC9B,IAAIA,WAAW,IAAI,aAAa,EAAE;MAC9BxE,YAAY,CAAComE,QAAQ,GAAG,GAAG;IAC/B;IACA,IAAI5hE,WAAW,IAAI,aAAa,EAAE;MAC9BxE,YAAY,CAACliG,QAAQ,GAAG,GAAG;IAC/B;IACA,IAAI0mG,WAAW,IAAI,oBAAoB,EAAE;MACrCxE,YAAY,CAAC8oE,eAAe,GAAG,IAAI;IACvC;IACA,IAAItkE,WAAW,IAAI,gBAAgB,EAAE;MACjCxE,YAAY,CAAC+oE,WAAW,GAAG,GAAG;IAClC;IACAnD,qBAAqB,CAAC,CAAC;EAC3B;;EAEA;EACA,SAASvhE,gBAAgBA,CAACkB,MAAM,EAAE;IAC9B;IACA3F,WAAW,GAAGn6F,KAAK,CAAC1P,KAAK,CAAC;MACtBgB,UAAU,EAAE,CAAC,mBAAmB,CAAC;MACjCkP,KAAK,EAAE;IACX,CAAC,CAAC;;IAEF;IACA4iK,iBAAiB,GAAGtvK,KAAK,CAACxD,KAAK,CAAC;MAC5BG,EAAE,EAAE,mBAAmB;MACvBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,qBAAqB;MAC5BrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0oG,YAAY,CAAC6oE;IACxB,CAAC,CAAC;IAEFC,eAAe,GAAGvvK,KAAK,CAACxD,KAAK,CAAC;MAC1BG,EAAE,EAAE,iBAAiB;MACrBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,mBAAmB;MAC1BrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0oG,YAAY,CAAC8oE;IACxB,CAAC,CAAC;IAEFqB,gBAAgB,GAAGzyK,QAAQ,CAAC3B,KAAK,CAAC;MAC9BG,EAAE,EAAE,kBAAkB;MACtB2B,KAAK,EAAE,UAAU;MACjBF,UAAU,EAAE;IAChB,CAAC,CAAC;IAEFyyK,mBAAmB,GAAG1yK,QAAQ,CAAC3B,KAAK,CAAC;MACjCG,EAAE,EAAE,qBAAqB;MACzB2B,KAAK,EAAE,cAAc;MACrBF,UAAU,EAAE;IAChB,CAAC,CAAC;IAEF0yK,gBAAgB,GAAG3yK,QAAQ,CAAC3B,KAAK,CAAC;MAC9BG,EAAE,EAAE,kBAAkB;MACtB2B,KAAK,EAAE,UAAU;MACjBF,UAAU,EAAE;IAChB,CAAC,CAAC;;IAEF;IACA+tG,SAAS,GAAG5vG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IACFkvG,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAMquG,oBAAoB,CAAC;IACzC,CAAC,CAAC;IAEF,IAAIL,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,aAAa,EAC1C3F,WAAW,CAACzsG,WAAW,CAACk3K,gBAAgB,CAAC;IAC7C,IAAI9kE,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,aAAa,EAC1C3F,WAAW,CAACzsG,WAAW,CAACg3K,gBAAgB,CAAC;IAC7C,IAAIloI,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACuyG,SAAS,CAAC;IAC9BzjE,OAAO,CAAC9uC,WAAW,CAACwyG,UAAU,CAAC;IAE/B,IAAIuI,QAAQ,GAAGx4G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Ci4G,QAAQ,CAAC37G,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAClC,IAAI8yG,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,sBAAsB,EACnD2I,QAAQ,CAAC/6G,WAAW,CAAC01K,iBAAiB,CAAC;IAC3C,IAAItjE,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,oBAAoB,EACjD2I,QAAQ,CAAC/6G,WAAW,CAAC21K,eAAe,CAAC;;IAEzC;IACAlpE,WAAW,CAACzsG,WAAW,CAAC+6G,QAAQ,CAAC;IACjC,IAAI3I,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,gBAAgB,EAC7C3F,WAAW,CAACzsG,WAAW,CAACi3K,mBAAmB,CAAC;IAChDxqE,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAEhCqC,cAAc,CAAC,CAAC;IAChB4hE,sBAAsB,CAAC,CAAC;IACxBzgG,KAAK,CAAC9S,IAAI,CAACitG,WAAW,CAAC;EAC3B;;EAEA;EACA,SAASt7D,cAAcA,CAAA,EAAG;IAEtB,IAAIgmI,WAAW;IACf,IAAIC,WAAW;IACf,IAAIC,cAAc;IAClB,IAAIC,YAAY;IAChB,IAAIC,UAAU;IACd,IAAIC,aAAa;IACjB,IAAIC,aAAa;IACjB,IAAIC,gBAAgB;IAEpBhC,iBAAiB,CAAChzK,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAClDo3K,YAAY,GAAGp3K,KAAK,CAACC,MAAM,CAACgE,KAAK;IACrC,CAAC,CAAC;IACFwxK,eAAe,CAACjzK,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChDq3K,UAAU,GAAGr3K,KAAK,CAACC,MAAM,CAACgE,KAAK;IACnC,CAAC,CAAC;IACF+yK,gBAAgB,CAACx0K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjDi3K,WAAW,GAAGj3K,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChCqzK,aAAa,GAAGt3K,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACjC,EAAE;IACvE,CAAC,CAAC;IACFi0K,gBAAgB,CAACt0K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjDk3K,WAAW,GAAGl3K,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChCszK,aAAa,GAAGv3K,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACjC,EAAE;IACvE,CAAC,CAAC;IACFk0K,mBAAmB,CAACv0K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpDm3K,cAAc,GAAGn3K,KAAK,CAACC,MAAM,CAACgE,KAAK;MACnCuzK,gBAAgB,GAAGx3K,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACjC,EAAE;IAC1E,CAAC,CAAC;IAEFwvG,SAAS,CAAC7vG,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACtCwxG,gBAAgB,CAAC;QACbijE,WAAW;QACXC,WAAW;QACXC,cAAc;QACdC,YAAY;QACZC,UAAU;QACVC,aAAa;QACbC,aAAa;QACbC;MACJ,CAAC,CAAC;MAEFplK,KAAK,CAAC/S,IAAI,CAACktG,WAAW,CAAC;MACvBt7D,cAAc,CAAC,CAAC;MAChBshI,qBAAqB,CAAC,CAAC;IAC3B,CAAC,CAAC;EACN;EAEA,SAASv+D,gBAAgBA,CAAC5uG,IAAI,EAAE;IAC5B,IAAIA,IAAI,CAAC6xK,WAAW,EAAEtqE,YAAY,CAAComE,QAAQ,GAAG3tK,IAAI,CAAC6xK,WAAW;IAC9D,IAAI7xK,IAAI,CAAC8xK,WAAW,EAAEvqE,YAAY,CAACliG,QAAQ,GAAGrF,IAAI,CAAC8xK,WAAW;IAC9D,IAAI9xK,IAAI,CAAC+xK,cAAc,EAAExqE,YAAY,CAAC+oE,WAAW,GAAGtwK,IAAI,CAAC+xK,cAAc;IACvE,IAAI/xK,IAAI,CAACgyK,YAAY,EAAEzqE,YAAY,CAAC6oE,iBAAiB,GAAGpwK,IAAI,CAACgyK,YAAY;IACzE,IAAIhyK,IAAI,CAACiyK,UAAU,EAAE1qE,YAAY,CAAC8oE,eAAe,GAAGrwK,IAAI,CAACiyK,UAAU;IACnE,IAAIjyK,IAAI,CAACiyK,UAAU,IAAI,EAAE,EAAE1qE,YAAY,CAAC8oE,eAAe,GAAG,IAAI;IAC9D,IAAIrwK,IAAI,CAACgyK,YAAY,IAAI,EAAE,EAAEzqE,YAAY,CAAC6oE,iBAAiB,GAAG,YAAY;IAE1E,IAAIpwK,IAAI,CAACkyK,aAAa,EAAE3qE,YAAY,CAACspE,UAAU,GAAG7wK,IAAI,CAACkyK,aAAa;IACpE,IAAIlyK,IAAI,CAACmyK,aAAa,EAAE5qE,YAAY,CAACupE,UAAU,GAAG9wK,IAAI,CAACmyK,aAAa;IACpE,IAAInyK,IAAI,CAACoyK,gBAAgB,EAAE7qE,YAAY,CAACwpE,aAAa,GAAG/wK,IAAI,CAACoyK,gBAAgB;EACjF;EAEA,eAAe3kE,sBAAsBA,CAAA,EAAG;IACpC,MAAM;MACF4kE,kBAAkB,EAAEC;IACxB,CAAC,GAAG,MAAMpC,cAAc,CAACqC,iBAAiB,CAAC,CAAC;IAC5C,IAAIC,aAAa,GAAGF,SAAS,CAACtuK,GAAG,CAAEyuK,SAAS,KAAM;MAC9Ch1K,EAAE,EAAEg1K,SAAS,CAAC/D,UAAU;MACxB7vK,KAAK,EAAE4zK,SAAS,CAAChC,YAAY;MAC7B7yK,IAAI,EAAE60K,SAAS,CAAChC;IACpB,CAAC,CAAC,CAAC;IACH+B,aAAa,CAAC50G,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IAC5DqB,QAAQ,CAAC5E,QAAQ,CAAC,kBAAkB,EAAEm4K,aAAa,EAAEjrE,YAAY,CAACliG,QAAQ,CAAC;IAE3E,MAAM;MACFqtK,kBAAkB,EAAEC;IACxB,CAAC,GAAG,MAAMzC,cAAc,CAAC0C,iBAAiB,CAAC,CAAC;IAC5C,IAAI5yK,IAAI,GAAG2yK,QAAQ,CAAC3uK,GAAG,CAAE2pK,QAAQ,KAAM;MACnClwK,EAAE,EAAEkwK,QAAQ,CAACpB,UAAU;MACvB1tK,KAAK,EAAE8uK,QAAQ,CAACnB,YAAY;MAC5B5uK,IAAI,EAAE+vK,QAAQ,CAACnB;IACnB,CAAC,CAAC,CAAC;IACHxsK,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IACnDqB,QAAQ,CAAC5E,QAAQ,CAAC,kBAAkB,EAAE2F,IAAI,EAAEunG,YAAY,CAAComE,QAAQ,CAAC;IAElE,MAAM;MACFkF,qBAAqB,EAAEC;IAC3B,CAAC,GAAG,MAAM5C,cAAc,CAAC6C,oBAAoB,CAAC,CAAC;IAC/C,IAAIC,eAAe,GAAGF,WAAW,CAAC9uK,GAAG,CAAEssK,WAAW,KAAM;MACpD7yK,EAAE,EAAE6yK,WAAW,CAAC2C,aAAa;MAC7Bp0K,KAAK,EAAEyxK,WAAW,CAAC4C,eAAe;MAClCt1K,IAAI,EAAE0yK,WAAW,CAAC4C;IACtB,CAAC,CAAC,CAAC;IACHF,eAAe,CAACp1G,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IAC9DqB,QAAQ,CAAC5E,QAAQ,CAAC,qBAAqB,EAAE24K,eAAe,EAAEzrE,YAAY,CAAC+oE,WAAW,CAAC;EACvF;EAEA,SAASnjE,oBAAoBA,CAAA,EAAG;IAC5BngG,KAAK,CAAC/S,IAAI,CAACktG,WAAW,CAAC;EAC3B;EAEA,SAAShqG,IAAIA,CAAA,EAAG;IACZszG,wBAAwB,CAAC,YAAY,CAAC;IACtCtkG,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvB28F,OAAO,CAACoH,cAAc,CAAC,CAAC;EAC5B;EAEA,OAAO;IACHhzG,IAAI;IACJ/B,oBAAoB;IACpB+xK;EACJ,CAAC;AACL,CAAC,EAAE,CAAC;ACrmBJ,IAAI+C,cAAc,GAAI,YAAY;EAC9B;EACA,eAAeC,yBAAyBA,CAAC33D,WAAW,EAAEm1D,QAAQ,EAAEtoK,QAAQ,EAAE+qK,iBAAiB,EAAEC,eAAe,EAAEC,WAAW,EAAE;IACvH,IAAI;MACA,MAAM3/I,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;QAC5BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpB6kE,WAAW,GACX,iBAAiB,GACjBm1D,QAAQ,GACR,iBAAiB,GACjBtoK,QAAQ,GACR,0BAA0B,GAC1B+qK,iBAAiB,GACjB,wBAAwB,GACxBC,eAAe,GACf,oBAAoB,GACpBC,WAAW,GACX,IAAI;QACRrmH,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAew6D,iBAAiBA,CAAA,EAAG;IAC/B,IAAI;MACA,MAAMjiJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gBAAgB;QACpBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAErB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAem6D,iBAAiBA,CAAA,EAAG;IAC/B,IAAI;MACA,MAAM5hJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gBAAgB;QACpBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAErB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAe26D,oBAAoBA,CAAA,EAAG;IAClC,IAAI;MACA,MAAMpiJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,mBAAmB;QACvBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAErB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAe+6D,wBAAwBA,CAACzE,UAAU,EAAE;IAChD,IAAI;MACA,MAAM/9I,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;QAC3BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnB+6H,UAAU,GACV,IAAI;QACRzkH,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeg7D,yBAAyBA,CACpCC,cAAc,EAAEC,YAAY,EAAEC,UAAU,EAAEC,cAAc,EAAEC,QAAQ,EAAEnuE,MAAM,EAAEouE,cAAc,EAC5F;IACE,IAAI;MACA,MAAM/iJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;QAC5BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB0/H,cAAc,EAAEA,cAAc;UAC9BC,YAAY,EAAEA,YAAY;UAC1BC,UAAU,EAAEA,UAAU;UACtBC,cAAc,EAAEA,cAAc;UAC9BC,QAAQ,EAAEA,QAAQ;UAClBnuE,MAAM,EAAEA,MAAM;UACdouE,cAAc,EAAEA;QACpB,CAAC,CAAC;QACFzpH,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeu7D,yBAAyBA,CACpCC,iBAAiB,EAAEC,eAAe,EAAExuK,QAAQ,EAAEirK,WAAW,EAAE3C,QAAQ,EAAEmG,cAAc,EAAEC,UAAU,EAAEC,YAAY,EAAEjxK,IAAI,EAAE0X,KAAK,EAAEw5J,KAAK,EAAER,QAAQ,EAAEnuE,MAAM,EAAE4uE,UAAU,EAAEC,gBAAgB,EACnL;IACE,IAAI;MACA,MAAMxjJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;QAC5BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBigI,iBAAiB,EAAEA,iBAAiB;UACpCC,eAAe,EAAEA,eAAe;UAChCxuK,QAAQ,EAAEA,QAAQ;UAClBirK,WAAW,EAAEA,WAAW;UACxB3C,QAAQ,EAAEA,QAAQ;UAClBmG,cAAc,EAAEA,cAAc;UAC9BC,UAAU,EAAEA,UAAU;UACtBC,YAAY,EAAEA,YAAY;UAC1BjxK,IAAI,EAAEA,IAAI;UACV0X,KAAK,EAAEA,KAAK;UACZw5J,KAAK,EAAEA,KAAK;UACZR,QAAQ,EAAEA,QAAQ;UAClBnuE,MAAM,EAAEA,MAAM;UACd4uE,UAAU,EAAEA,UAAU;UACtBC,gBAAgB,EAAEA;QACtB,CAAC,CAAC;QACFlqH,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeg8D,4BAA4BA,CAAA,EAAG;IAC1C,IAAI;MACA,MAAMzjJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;QAC/BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAErB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAei8D,wBAAwBA,CAAA,EAAG;IACtC,IAAI;MACA,MAAM1jJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;QAC3BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAErB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAek8D,wBAAwBA,CAAA,EAAG;IACtC,IAAI;MACA,MAAM3jJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;QAC3BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAErB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAem8D,8BAA8BA,CAAA,EAAG;IAC5C,IAAI;MACA,MAAM5jJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6BAA6B;QACjCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAErB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeo8D,0BAA0BA,CAAA,EAAG;IACxC,IAAI;MACA,MAAM7jJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,yBAAyB;QAC7BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAErB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeq8D,gCAAgCA,CAAA,EAAG;IAC9C,IAAI;MACA,MAAM9jJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;QACnCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAErB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAes8D,oBAAoBA,CAAC5D,UAAU,EAAE;IAC5C,IAAI;MACA,MAAMngJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,mBAAmB;QACvBxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnBm9H,UAAU,GACV,IAAI;QACR7mH,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeu8D,4BAA4BA,CAAC7D,UAAU,EAAE;IACpD,IAAI;MACA,MAAMngJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;QAC/BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnBm9H,UAAU,GACV,IAAI;QACR7mH,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAew8D,gBAAgBA,CAC3BC,SAAS,EAAEC,UAAU,EAAE3iJ,SAAS,EAAEE,OAAO,EAAE6hJ,UAAU,EAAEa,OAAO,EAAEzvE,MAAM,EACxE;IACE,IAAI;MACA,MAAM30E,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,eAAe;QACnBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBkhI,SAAS,EAAEA,SAAS;UACpBC,UAAU,EAAEA,UAAU;UACtB3iJ,SAAS,EAAEA,SAAS;UACpBE,OAAO,EAAEA,OAAO;UAChB6hJ,UAAU,EAAEA,UAAU;UACtBa,OAAO,EAAEA,OAAO;UAChBzvE,MAAM,EAAEA;QACZ,CAAC,CAAC;QACFr7C,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAGA,eAAe48D,sBAAsBA,CACjCC,UAAU,EAAEC,SAAS,EAAEhB,UAAU,EAAEiB,YAAY,EAAE7vE,MAAM,EACzD;IACE,IAAI;MACA,MAAM30E,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;QACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBshI,UAAU,EAAEA,UAAU;UACtBC,SAAS,EAAEA,SAAS;UACpBhB,UAAU,EAAEA,UAAU;UACtBiB,YAAY,EAAEA,YAAY;UAC1B7vE,MAAM,EAAEA;QACZ,CAAC,CAAC;QACFr7C,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeg9D,2BAA2BA,CAACtE,UAAU,EAAE;IACnD,IAAI;MACA,MAAMngJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;QAC9BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnBm9H,UAAU,GACV,IAAI;QACR7mH,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAei9D,kCAAkCA,CAAA,EAAG;IAChD,IAAI;MACA,MAAM1kJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iCAAiC;QACrCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAErB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAek9D,uBAAuBA,CAClCC,IAAI,EAAE/9D,WAAW,EAAErlF,SAAS,EAAEE,OAAO,EAAEmjJ,kBAAkB,EAAEC,uBAAuB,EAAEC,gBAAgB,EAAExB,UAAU,EAAEyB,SAAS,EAAErwE,MAAM,EACrI;IACE,IAAI;MACA,MAAM30E,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sBAAsB;QAC1BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB4hI,IAAI,EAAEA,IAAI;UACV/9D,WAAW,EAAEA,WAAW;UACxBrlF,SAAS,EAAEA,SAAS;UACpBE,OAAO,EAAEA,OAAO;UAChBmjJ,kBAAkB,EAAEA,kBAAkB;UACtCC,uBAAuB,EAAEA,uBAAuB;UAChDC,gBAAgB,EAAEA,gBAAgB;UAClCxB,UAAU,EAAEA,UAAU;UACtByB,SAAS,EAAEA,SAAS;UACpBrwE,MAAM,EAAEA;QACZ,CAAC,CAAC;QACFr7C,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAew9D,2BAA2BA,CAAC9E,UAAU,EAAE;IACnD,IAAI;MACA,MAAMngJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;QAC9BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnBm9H,UAAU,GACV,IAAI;QACR7mH,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAey9D,wBAAwBA,CAACr9D,WAAW,EAAE;IACjD,IAAI;MACA,MAAM7nF,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;QAC3BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpB6kE,WAAW,GACX,IAAI;QACRvuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAe09D,wBAAwBA,CAAChH,WAAW,EAAE;IACjD,IAAI;MACA,MAAMn+I,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;QAC3BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpBm7H,WAAW,GACX,IAAI;QACR7kH,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAe29D,uBAAuBA,CAClCC,SAAS,EAAE1iJ,SAAS,EAAEf,OAAO,EAAE2hJ,UAAU,EAAE+B,cAAc,EAAE3wE,MAAM,EACnE;IACE,IAAI;MACA,MAAM30E,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sBAAsB;QAC1BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBqiI,SAAS,EAAEA,SAAS;UACpB1iJ,SAAS,EAAEA,SAAS;UACpBf,OAAO,EAAEA,OAAO;UAChB2hJ,UAAU,EAAEA,UAAU;UACtB+B,cAAc,EAAEA,cAAc;UAC9B3wE,MAAM,EAAEA;QACZ,CAAC,CAAC;QACFr7C,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAe89D,sBAAsBA,CAACpF,UAAU,EAAE;IAC9C,IAAI;MACA,MAAMngJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;QACzBxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnBm9H,UAAU,GACV,IAAI;QACR7mH,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,SAAS+9D,mBAAmBA,CAACvvE,OAAO,EAAE9nG,QAAQ,EAAE;IAC5CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,uBAAuB;MAC1IxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,eAAe,GACfizD,OAAO,CAACmuE,OAAO,GACf,IAAI;MACR9qH,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE;QACzB,IAAI7G,GAAG,GAAG6G,QAAQ,CAACgsH,yBAAyB;QAC5Ct3K,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAE;IAC3C,CAAC,CAAC;EACN;EAEA,SAASqqK,kBAAkBA,CAACzvE,OAAO,EAAE9nG,QAAQ,EAAE;IAC3CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,sBAAsB;MACzIxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,sBAAsB,GACtBizD,OAAO,CAACqvE,cAAc,GACtB,IAAI;MACRhsH,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE;QACzB,IAAI7G,GAAG,GAAG6G,QAAQ,CAACksH,wBAAwB;QAC3Cx3K,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAE;IAC3C,CAAC,CAAC;EACN;EAEA,SAASuqK,iBAAiBA,CAAC3vE,OAAO,EAAE9nG,QAAQ,EAAE;IAC1CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,qBAAqB;MACxIxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,iBAAiB,GACjBizD,OAAO,CAAC+uE,SAAS,GACjB,kBAAkB,GAClB/uE,OAAO,CAAC4vE,UAAU,GAClB,IAAI;MACRvsH,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE;QACzB,IAAI7G,GAAG,GAAG6G,QAAQ,CAACqsH,uBAAuB;QAC1C33K,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAE;IAC3C,CAAC,CAAC;EACN;EAEA,eAAe0qK,8BAA8BA,CAAA,EAAG;IAC5C,IAAI;MACA,MAAM/lJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6BAA6B;QACjCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAErB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeu+D,4BAA4BA,CACvCC,aAAa,EAAEC,gBAAgB,EAAEC,eAAe,EAAErD,QAAQ,EAAEnuE,MAAM,EACpE;IACE,IAAI;MACA,MAAM30E,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;QAC/BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBijI,aAAa,EAAEA,aAAa;UAC5BC,gBAAgB,EAAEA,gBAAgB;UAClCC,eAAe,EAAEA,eAAe;UAChCrD,QAAQ,EAAEA,QAAQ;UAClBnuE,MAAM,EAAEA;QACZ,CAAC,CAAC;QACFr7C,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,OAAO;IACH+3D,yBAAyB;IACzByC,iBAAiB;IACjBL,iBAAiB;IACjBQ,oBAAoB;IACpBI,wBAAwB;IACxBC,yBAAyB;IACzBO,yBAAyB;IACzBS,4BAA4B;IAC5BC,wBAAwB;IACxBC,wBAAwB;IACxBC,8BAA8B;IAC9BC,0BAA0B;IAC1BE,oBAAoB;IACpBC,4BAA4B;IAC5BC,gBAAgB;IAChBI,sBAAsB;IACtBI,2BAA2B;IAC3BC,kCAAkC;IAClCC,uBAAuB;IACvBM,2BAA2B;IAC3BC,wBAAwB;IACxBC,wBAAwB;IACxBC,uBAAuB;IACvBG,sBAAsB;IACtBC,mBAAmB;IACnBE,kBAAkB;IAClBE,iBAAiB;IACjBG,8BAA8B;IAC9BC,4BAA4B;IAC5BlC;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AC13BJ,MAAMsC,qBAAqB,GAAG,CAAC,MAAM;EACjC,IAAI1D,cAAc;EAClB,IAAIa,UAAU;EACd,IAAI8C,mBAAmB,GAAG,EAAE;EAC5B,IAAIvD,QAAQ;EACZ,IAAItlC,OAAO;EACX,IAAI8oC,qBAAqB,GAAG,EAAE;EAC9B,IAAIC,mBAAmB,GAAG,EAAE;EAC5B,IAAIC,YAAY,GAAG,EAAE;EACrB,IAAIC,eAAe,GAAG,EAAE;EACxB,IAAIC,YAAY,GAAG,EAAE;EACrB,IAAIC,kBAAkB,GAAG,EAAE;EAC3B,IAAIC,cAAc,GAAG,EAAE;EACvB,IAAIC,gBAAgB,GAAG,EAAE;EACzB,IAAIC,QAAQ,GAAG,EAAE;EACjB,IAAIC,SAAS,GAAG,EAAE;EAClB,IAAIC,SAAS,GAAG,EAAE;EAClB,IAAIC,WAAW;EACf,IAAIpL,YAAY;EAChB,IAAIiE,YAAY;EAChB,IAAIppE,qBAAqB;EACzB,IAAIwwE,eAAe,GAAG,EAAE;EACxB,IAAIC,eAAe;EACnB,IAAIC,mBAAmB;EACvB,IAAInB,aAAa;EACjB,IAAIC,gBAAgB;EACpB,IAAIC,eAAe;EACnB,IAAIkB,oBAAoB,GAAG,EAAE;EAE7B,eAAe76K,IAAIA,CAACuxK,UAAU,EAAEp7H,IAAI,EAAE2kI,YAAY,EAAEC,qBAAqB,EAAE35B,WAAW,EAAE;IACpF21B,UAAU,GAAGxF,UAAU;IACvBkJ,WAAW,GAAGr5B,WAAW;IACzBiuB,YAAY,GAAGl5H,IAAI;IACnBm9H,YAAY,GAAGwH,YAAY;IAC3B5wE,qBAAqB,GAAG6wE,qBAAqB;IAC7CL,eAAe,GAAG,MAAM3H,cAAc,CAAC4F,wBAAwB,CAACv3B,WAAW,CAAC;IAC5E,IAAI21B,UAAU,IAAI3yK,SAAS,EAAE;MACzBy1K,mBAAmB,GAAG,MAAM9G,cAAc,CAACiD,wBAAwB,CAACe,UAAU,CAAC;IACnF;IAEA,MAAMvjJ,MAAM,GAAG,MAAMu/I,cAAc,CAAC2F,wBAAwB,CAACt3B,WAAW,CAAC;IACzE,MAAM;MAAE45B;IAA0B,CAAC,GAAGxnJ,MAAM;IAC5C,IAAIwnJ,yBAAyB,CAAC,CAAC,CAAC,CAACC,gBAAgB,IAAI,GAAG,EAAE;MACtDL,mBAAmB,GAAG,IAAI;IAC9B,CAAC,MACI;MACDA,mBAAmB,GAAG,KAAK;IAC/B;EACJ;EAEA,SAAS39D,SAASA,CAAA,EAAG;IACjB,MAAMi+D,iBAAiB,GAAGp7K,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvD66K,iBAAiB,CAACv+K,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IAC9C,MAAM6hH,eAAe,GAAGy8D,sBAAsB,CAAC,CAAC;IAChDD,iBAAiB,CAAC39K,WAAW,CAACmhH,eAAe,CAAC;IAC9C,OAAOw8D,iBAAiB;EAC5B;EAEA,SAASC,sBAAsBA,CAAA,EAAG;IAC9B,IAAIP,mBAAmB,EACnBQ,4BAA4B,CAAC,CAAC;IAClC,MAAM57D,eAAe,GAAG1/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDm/G,eAAe,CAAC7iH,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAEvD,IAAIk6K,UAAU,IAAI3yK,SAAS,EAAE;MACzB4sI,OAAO,GAAG,MAAM;MAChBylC,iBAAiB,GAAGvgH,MAAM,CAAC2jH,mBAAmB,CAACwB,yBAAyB,CAAC,CAAC,CAAC,CAACpI,iBAAiB,CAAC,CAACrtJ,MAAM,CAAC,YAAY,CAAC;MACnH8wJ,eAAe,GAAGmD,mBAAmB,CAACwB,yBAAyB,CAAC,CAAC,CAAC,CAACnI,eAAe,IAAI,EAAE,GAAG,EAAE,GAAGh9G,MAAM,CAAC2jH,mBAAmB,CAACwB,yBAAyB,CAAC,CAAC,CAAC,CAACnI,eAAe,CAAC,CAACttJ,MAAM,CAAC,YAAY,CAAC;MAC7L1d,QAAQ,GAAG2xK,mBAAmB,CAACwB,yBAAyB,CAAC,CAAC,CAAC,CAACnzK,QAAQ;MACpEirK,WAAW,GAAG0G,mBAAmB,CAACwB,yBAAyB,CAAC,CAAC,CAAC,CAAClI,WAAW;MAC1E3C,QAAQ,GAAGqJ,mBAAmB,CAACwB,yBAAyB,CAAC,CAAC,CAAC,CAAC7K,QAAQ;MACpEmG,cAAc,GAAGkD,mBAAmB,CAACwB,yBAAyB,CAAC,CAAC,CAAC,CAAC1E,cAAc;MAChFC,UAAU,GAAGiD,mBAAmB,CAACwB,yBAAyB,CAAC,CAAC,CAAC,CAACzE,UAAU;MACxEC,YAAY,GAAGgD,mBAAmB,CAACwB,yBAAyB,CAAC,CAAC,CAAC,CAACxE,YAAY;MAC5EjxK,IAAI,GAAGi0K,mBAAmB,CAACwB,yBAAyB,CAAC,CAAC,CAAC,CAACz1K,IAAI;MAC5D0X,KAAK,GAAGu8J,mBAAmB,CAACwB,yBAAyB,CAAC,CAAC,CAAC,CAAC/9J,KAAK;MAC9Dw5J,KAAK,GAAG+C,mBAAmB,CAACwB,yBAAyB,CAAC,CAAC,CAAC,CAACvE,KAAK;MAC9DR,QAAQ,GAAGuD,mBAAmB,CAACwB,yBAAyB,CAAC,CAAC,CAAC,CAACnvB,QAAQ;MACpE8qB,gBAAgB,GAAG6C,mBAAmB,CAACwB,yBAAyB,CAAC,CAAC,CAAC,CAACrE,gBAAgB;IACxF,CAAC,MACI;MACDhmC,OAAO,GAAG,MAAM;MAChB;MACAylC,iBAAiB,GAAG,EAAE;MACtBC,eAAe,GAAG,EAAE;MACpBxuK,QAAQ,GAAG,EAAE;MACbirK,WAAW,GAAG,EAAE;MAChB3C,QAAQ,GAAG,EAAE;MACbmG,cAAc,GAAG,EAAE;MACnBC,UAAU,GAAG,EAAE;MACfC,YAAY,GAAG,EAAE;MACjBjxK,IAAI,GAAG,EAAE;MACT0X,KAAK,GAAG,EAAE;MACVw5J,KAAK,GAAG,EAAE;MACVR,QAAQ,GAAGmE,WAAW;MACtBzD,gBAAgB,GAAG,EAAE;IACzB;IAEAd,cAAc,GAAGwE,eAAe,CAACY,yBAAyB,CAACl+K,MAAM,GAAG,CAAC,GAAGs9K,eAAe,CAACY,yBAAyB,CAAC,CAAC,CAAC,CAACpF,cAAc,GAAG,EAAE;IACxIK,cAAc,GAAGmE,eAAe,CAACY,yBAAyB,CAAC,CAAC,CAAC,IAAIl3K,SAAS,IAAIs2K,eAAe,CAACY,yBAAyB,CAAC,CAAC,CAAC,CAAC/E,cAAc,IAAI,EAAE,GAAG,EAAE,GAAGmE,eAAe,CAACY,yBAAyB,CAAC,CAAC,CAAC,CAAC/E,cAAc;IAClNgF,iBAAiB,GAAGb,eAAe,CAACY,yBAAyB,CAAC,CAAC,CAAC,IAAIl3K,SAAS,IAAIs2K,eAAe,CAACY,yBAAyB,CAAC,CAAC,CAAC,CAACC,iBAAiB,IAAI,EAAE,GAAG,EAAE,GAAGrlH,MAAM,CAACwkH,eAAe,CAACY,yBAAyB,CAAC,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC31J,MAAM,CAAC,YAAY,CAAC;IACxP+0J,eAAe,GAAGD,eAAe,CAACY,yBAAyB,CAAC,CAAC,CAAC,IAAIl3K,SAAS,IAAIs2K,eAAe,CAACY,yBAAyB,CAAC,CAAC,CAAC,CAACX,eAAe,IAAI,EAAE,GAAG,EAAE,GAAGzkH,MAAM,CAACwkH,eAAe,CAACY,yBAAyB,CAAC,CAAC,CAAC,CAACX,eAAe,CAAC,CAAC/0J,MAAM,CAAC,YAAY,CAAC;IAClPk0J,qBAAqB,GAAG,EAAE;IAC1BC,mBAAmB,GAAG,EAAE;IACxBC,YAAY,GAAG,EAAE;IACjBC,eAAe,GAAG,EAAE;IACpBC,YAAY,GAAG,EAAE;IACjBC,kBAAkB,GAAG,EAAE;IACvBC,cAAc,GAAG,EAAE;IACnBC,gBAAgB,GAAG,EAAE;IACrBC,QAAQ,GAAG,EAAE;IACbC,SAAS,GAAG,EAAE;IACdC,SAAS,GAAG,EAAE;IACdK,oBAAoB,GAAG,EAAE;IAEzB5H,iBAAiB,GAAGtvK,KAAK,CAACxD,KAAK,CAAC;MAC5BG,EAAE,EAAE,mBAAmB;MACvBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAG+0K,iBAAiB,GAAIA,iBAAiB,GAAG;IACrD,CAAC,CAAC;IAEFvD,eAAe,GAAGvvK,KAAK,CAACxD,KAAK,CAAC;MAC1BG,EAAE,EAAE,iBAAiB;MACrBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAGg1K,eAAe,GAAIA,eAAe,GAAG;IACjD,CAAC,CAAC;IAEFnC,gBAAgB,GAAGzyK,QAAQ,CAAC3B,KAAK,CAAC;MAC9BG,EAAE,EAAE,kBAAkB;MACtB2B,KAAK,EAAE,UAAU;MACjBF,UAAU,EAAE,kBAAkB;MAC9BL,KAAK,EAAGwG,QAAQ,GAAIA,QAAQ,GAAG;IACnC,CAAC,CAAC;IAEFssK,mBAAmB,GAAG1yK,QAAQ,CAAC3B,KAAK,CAAC;MACjCG,EAAE,EAAE,qBAAqB;MACzB2B,KAAK,EAAE,cAAc;MACrBF,UAAU,EAAE,qBAAqB;MACjCL,KAAK,EAAGyxK,WAAW,GAAIA,WAAW,GAAG;IACzC,CAAC,CAAC;IAEFqI,gBAAgB,GAAG15K,QAAQ,CAAC3B,KAAK,CAAC;MAC9BG,EAAE,EAAE,kBAAkB;MACtB2B,KAAK,EAAE,UAAU;MACjBF,UAAU,EAAE,kBAAkB;MAC9BL,KAAK,EAAG8uK,QAAQ,GAAIA,QAAQ,GAAG;IACnC,CAAC,CAAC;IAEFiL,sBAAsB,GAAG35K,QAAQ,CAAC3B,KAAK,CAAC;MACpCG,EAAE,EAAE,wBAAwB;MAC5B2B,KAAK,EAAE,gBAAgB;MACvBF,UAAU,EAAE,wBAAwB;MACpCL,KAAK,EAAGi1K,cAAc,GAAIA,cAAc,GAAG;IAC/C,CAAC,CAAC;IAEF+E,kBAAkB,GAAG55K,QAAQ,CAAC3B,KAAK,CAAC;MAChCG,EAAE,EAAE,oBAAoB;MACxB2B,KAAK,EAAE,cAAc;MACrBF,UAAU,EAAE,oBAAoB;MAChCL,KAAK,EAAGk1K,UAAU,GAAIA,UAAU,GAAG;IACvC,CAAC,CAAC;IAEF+E,wBAAwB,GAAG75K,QAAQ,CAAC3B,KAAK,CAAC;MACtCG,EAAE,EAAE,0BAA0B;MAC9B2B,KAAK,EAAE,iBAAiB;MACxBF,UAAU,EAAE,0BAA0B;MACtCL,KAAK,EAAGs1K,gBAAgB,GAAIA,gBAAgB,GAAG;IACnD,CAAC,CAAC;IAEF4E,cAAc,GAAGj4K,KAAK,CAACyB,aAAa,CAAC;MACjC3E,IAAI,EAAE,gBAAgB;MACtBH,EAAE,EAAE,mBAAmB;MACvBgF,SAAS,EAAEuxK,YAAY,IAAI,GAAG,GAAG,IAAI,GAAG;IAC5C,CAAC,CAAC;IAEFp3D,SAAS,GAAG97G,KAAK,CAACxD,KAAK,CAAC;MACpBG,EAAE,EAAE,WAAW;MACf2B,KAAK,EAAE,MAAM;MACbpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAGkE,IAAI,GAAIA,IAAI,GAAG;IAC3B,CAAC,CAAC;IAEFg7G,UAAU,GAAGj9G,KAAK,CAACxD,KAAK,CAAC;MACrBG,EAAE,EAAE,YAAY;MAChB2B,KAAK,EAAE,OAAO;MACdpB,IAAI,EAAE,QAAQ;MACdD,KAAK,EAAE,WAAW;MAClBW,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,WAAW;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;MAC/CA,KAAK,EAAG4b,KAAK,GAAIA,KAAK,GAAG;IAC7B,CAAC,CAAC;IAEFu+J,UAAU,GAAGl4K,KAAK,CAACxD,KAAK,CAAC;MACrBG,EAAE,EAAE,YAAY;MAChB2B,KAAK,EAAE,OAAO;MACdpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAGo1K,KAAK,GAAIA,KAAK,GAAG;IAC7B,CAAC,CAAC;;IAEF;IACApiC,QAAQ,GAAGx0I,MAAM,CAACC,KAAK,CAAC;MACpBM,IAAI,EAAEuwI,OAAO;MACbpwI,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAI,CAAC+yI,QAAQ,CAAC/3I,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC1CiqI,QAAQ,CAAC/3I,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UAClCi/K,gBAAgB,CAAC,CAAC;QACtB;MACJ;IACJ,CAAC,CAAC;IACF/rE,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAAEo6K,cAAc,CAAC,CAAC;MAAC;IAC7C,CAAC,CAAC;IACFC,UAAU,GAAG97K,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZs6K,kBAAkB,CAAC,CAAC;MACxB;IACJ,CAAC,CAAC;IAEF,MAAMC,cAAc,GAAGh8K,MAAM,CAACC,KAAK,CAAC;MAChCM,IAAI,EAAE,iBAAiB;MACvBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,MAAMkvK,YAAY,GAAG;UACjBU,UAAU,EAAEwF,UAAU;UACtBvF,OAAO,EAAEnC,YAAY;UACrBoC,OAAO,EAAE6B,YAAY;UACrB5B,aAAa,EAAExnE,qBAAqB;UACpCynE,WAAW,EAAE8I;QACjB,CAAC;QACD,IAAI,CAACyB,cAAc,CAACv/K,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAChDwkK,gBAAgB,CAACc,kBAAkB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAEc,YAAY,CAAC;QACrF;MACJ;IACJ,CAAC,CAAC;IAEF,IAAIn/B,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAGzC,MAAM87K,cAAc,GAAGr8K,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAClD87K,cAAc,CAACx/K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACxCs/K,cAAc,CAACv7K,KAAK,CAACw8J,SAAS,GAAG,IAAI;IACrC+e,cAAc,CAAC73K,SAAS,GAAG,sBAAsB;IAEjD,MAAMqM,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3C,IAAI61K,cAAc,IAAI,GAAG,EACrBvlK,OAAO,CAACrM,SAAS,GAAG,8DAA8D,CAAC,KAClF,IAAI4xK,cAAc,IAAI,GAAG,EAC1BvlK,OAAO,CAACrM,SAAS,GAAG,6CAA6C,CAAC,KACjE,IAAI4xK,cAAc,IAAI,GAAG,EAC1BvlK,OAAO,CAACrM,SAAS,GAAG,0DAA0D,CAAC,KAC9E,IAAI4xK,cAAc,IAAI,GAAG,EAC1BvlK,OAAO,CAACrM,SAAS,GAAG,+DAA+D,CAAC,KAEpFqM,OAAO,CAACrM,SAAS,GAAG,EAAE;IAC1BqM,OAAO,CAAC/P,KAAK,CAACw8J,SAAS,GAAG,IAAI;IAC9BzsJ,OAAO,CAAC/P,KAAK,CAACiyI,UAAU,GAAG,IAAI;IAC/B,IAAIupC,OAAO,GAAGt8K,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C+7K,OAAO,CAACz/K,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAE1Cu/K,OAAO,CAAC7+K,WAAW,CAAC4+K,cAAc,CAAC;IACnCC,OAAO,CAAC7+K,WAAW,CAACoT,OAAO,CAAC;IAE5B,IAAIzC,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;MAC5B05H,UAAU,CAACp7K,KAAK,CAACiyI,UAAU,GAAG,IAAI;MAClCupC,OAAO,CAAC7+K,WAAW,CAACy+K,UAAU,CAAC;IACnC;IAEAx8D,eAAe,CAACjiH,WAAW,CAAC6+K,OAAO,CAAC;IAEpC,MAAMr9D,OAAO,GAAGj/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0+G,OAAO,CAACpiH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9B,MAAMmiH,UAAU,GAAGl/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD2+G,UAAU,CAACriH,SAAS,CAACE,GAAG,CAAC,MAAM,CAAC;IAChC,MAAMoiH,cAAc,GAAGn/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD4+G,cAAc,CAACtiH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1CmiH,UAAU,CAAC/hH,SAAS,GAAG,wDAAwD;IAC/E+hH,UAAU,CAACzhH,WAAW,CAAC0hH,cAAc,CAAC;IACtCF,OAAO,CAACxhH,WAAW,CAACyhH,UAAU,CAAC;IAE/B,MAAMuzD,eAAe,GAAGzyK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDkyK,eAAe,CAAC51K,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAClD2+K,gBAAgB,CAAC56K,KAAK,CAACiS,KAAK,GAAG,KAAK;IACpCqpK,cAAc,CAACt7K,KAAK,CAACiS,KAAK,GAAG,KAAK;IAClC,IAAI,CAAC3E,CAAC,CAACC,OAAO,CAACq0C,eAAe,EAAE;MAC5B05H,cAAc,CAACv/K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC5C;IACA01K,eAAe,CAACh1K,WAAW,CAACi+K,gBAAgB,CAAC;IAC7CjJ,eAAe,CAACh1K,WAAW,CAAC2+K,cAAc,CAAC;IAE3Cj9D,cAAc,CAAC1hH,WAAW,CAACg1K,eAAe,CAAC;IAC3CtzD,cAAc,CAAC1hH,WAAW,CAACg3K,gBAAgB,CAAC;IAE5C,IAAIpxD,QAAQ,GAAGrjH,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C8iH,QAAQ,CAACxmH,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAC1C23K,mBAAmB,CAAC73K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC/CsmH,QAAQ,CAAC5lH,WAAW,CAACi3K,mBAAmB,CAAC;IACzCiH,sBAAsB,CAAC9+K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAClDsmH,QAAQ,CAAC5lH,WAAW,CAACk+K,sBAAsB,CAAC;IAC5CxI,iBAAiB,CAACt2K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC7CsmH,QAAQ,CAAC5lH,WAAW,CAAC01K,iBAAiB,CAAC;IACvCC,eAAe,CAACv2K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC3CsmH,QAAQ,CAAC5lH,WAAW,CAAC21K,eAAe,CAAC;IACrCj0D,cAAc,CAAC1hH,WAAW,CAAC4lH,QAAQ,CAAC;IAEpC,IAAI2xB,MAAM,GAAGh1I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1Cy0I,MAAM,CAACn4I,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IACxC6+K,kBAAkB,CAAC/+K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC9Ci4I,MAAM,CAACv3I,WAAW,CAACm+K,kBAAkB,CAAC;IACtCE,cAAc,CAACj/K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1Ci4I,MAAM,CAACv3I,WAAW,CAACq+K,cAAc,CAAC;IAClCD,wBAAwB,CAACh/K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACpDi4I,MAAM,CAACv3I,WAAW,CAACo+K,wBAAwB,CAAC;IAC5C18D,cAAc,CAAC1hH,WAAW,CAACu3I,MAAM,CAAC;IAElC,MAAM5xB,mBAAmB,GAAGpjH,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACvD6iH,mBAAmB,CAACvmH,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAC5CqmH,mBAAmB,CAACjmH,SAAS,GAAG,SAAS,wBAAwB,SAAS;IAC1EimH,mBAAmB,CAACtiH,KAAK,CAACiyI,UAAU,GAAG,MAAM;IAC7C5zB,cAAc,CAAC1hH,WAAW,CAAC2lH,mBAAmB,CAAC;IAC/CjE,cAAc,CAAC1hH,WAAW,CAACm0I,MAAM,CAAC;IAClCzyB,cAAc,CAAC1hH,WAAW,CAACm0I,MAAM,CAAC;IAElC,IAAI2qC,QAAQ,GAAGv8K,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Cg8K,QAAQ,CAAC1/K,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAC1C4iH,SAAS,CAAC9iH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACrCw/K,QAAQ,CAAC9+K,WAAW,CAACkiH,SAAS,CAAC;IAC/BmB,UAAU,CAACjkH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACtCw/K,QAAQ,CAAC9+K,WAAW,CAACqjH,UAAU,CAAC;IAChCi7D,UAAU,CAACl/K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACtCw/K,QAAQ,CAAC9+K,WAAW,CAACs+K,UAAU,CAAC;IAChC58D,cAAc,CAAC1hH,WAAW,CAAC8+K,QAAQ,CAAC;IAEpC,IAAIhwI,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAC1CwvC,OAAO,CAACzrC,KAAK,CAACiyI,UAAU,GAAG,KAAK;IAChCxmG,OAAO,CAACzrC,KAAK,CAACiS,KAAK,GAAG,KAAK;IAE3B,IAAI3E,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;MAC5BoyF,QAAQ,CAAC9zI,KAAK,CAACiS,KAAK,GAAG,KAAK;MAC5Bw5B,OAAO,CAAC9uC,WAAW,CAACm3I,QAAQ,CAAC;IACjC;IAEA3kC,UAAU,CAACnvG,KAAK,CAACiS,KAAK,GAAG,KAAK;IAC9Bk9F,UAAU,CAACnvG,KAAK,CAACiyI,UAAU,GAAG,IAAI;IAClCxmG,OAAO,CAAC9uC,WAAW,CAACwyG,UAAU,CAAC;IAC/BkP,cAAc,CAAC1hH,WAAW,CAAC8uC,OAAO,CAAC;IAEnCqC,cAAc,CAAC,CAAC;IAChB4tI,iBAAiB,CAAC,CAAC;IACnB51B,oBAAoB,CAAC,CAAC;IACtBlnC,eAAe,CAACjiH,WAAW,CAACwhH,OAAO,CAAC;IACpCw9D,iCAAiC,CAAC9F,iBAAiB,EAAEvuK,QAAQ,EAAEsoK,QAAQ,EAAE2C,WAAW,EAAEuD,eAAe,CAAC;IAEtG,OAAOl3D,eAAe;EAC1B;EAEA,SAASknC,oBAAoBA,CAAA,EAAG;IAC5B,IAAIx4I,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;MAC5B2wH,iBAAiB,CAACt2K,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC9Cs2K,eAAe,CAACv2K,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC5C23K,gBAAgB,CAAC53K,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC7C43K,mBAAmB,CAAC73K,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAChD4+K,gBAAgB,CAAC7+K,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC7C6+K,sBAAsB,CAAC9+K,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACnD8+K,kBAAkB,CAAC/+K,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC/C++K,wBAAwB,CAACh/K,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACrDg/K,cAAc,CAACj/K,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC3C6iH,SAAS,CAAC9iH,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACtCgkH,UAAU,CAACjkH,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACvCi/K,UAAU,CAACl/K,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACvCo/K,UAAU,CAACr/K,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACvC83I,QAAQ,CAAC/3I,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACzC,CAAC,MACI;MACDq2K,iBAAiB,CAACt2K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3Cq2K,eAAe,CAACv2K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACzC03K,gBAAgB,CAAC53K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC1C23K,mBAAmB,CAAC73K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC7C2+K,gBAAgB,CAAC7+K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC1C4+K,sBAAsB,CAAC9+K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAChD6+K,kBAAkB,CAAC/+K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC5C8+K,wBAAwB,CAACh/K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAClD++K,cAAc,CAACj/K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACxC4iH,SAAS,CAAC9iH,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACnC+jH,UAAU,CAACjkH,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACpCg/K,UAAU,CAACl/K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACpCm/K,UAAU,CAACr/K,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACpC63I,QAAQ,CAAC/3I,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACtC;EAEJ;EAEA,SAAS2/K,+BAA+BA,CAAA,EAAG;IACvC,IAAIxnJ,SAAS,GAAGi+I,iBAAiB,CAAClzK,aAAa,CAAC,oBAAoB,CAAC;IACrE,IAAIm1B,OAAO,GAAGg+I,eAAe,CAACnzK,aAAa,CAAC,kBAAkB,CAAC;IAC/D,IAAImI,QAAQ,GAAGqsK,gBAAgB,CAACx0K,aAAa,CAAC,mBAAmB,CAAC;IAClE,IAAIywK,QAAQ,GAAGgL,gBAAgB,CAACz7K,aAAa,CAAC,mBAAmB,CAAC;IAClE,IAAIozK,WAAW,GAAGqB,mBAAmB,CAACz0K,aAAa,CAAC,sBAAsB,CAAC;IAC3Ew8K,iCAAiC,CAACvnJ,SAAS,CAACtzB,KAAK,EAAEwG,QAAQ,CAACxG,KAAK,EAAE8uK,QAAQ,CAAC9uK,KAAK,EAAEyxK,WAAW,CAACzxK,KAAK,EAAEwzB,OAAO,CAACxzB,KAAK,CAAC;EACxH;EAEA,SAAS66K,iCAAiCA,CAACvnJ,SAAS,EAAE9sB,QAAQ,EAAEsoK,QAAQ,EAAE2C,WAAW,EAAEj+I,OAAO,EAAE;IAC5F,IAAIF,SAAS,KAAK,EAAE,IAAKE,OAAO,IAAI,EAAE,IAAIF,SAAS,GAAGE,OAAQ,EAAE;MAC5D+9I,iBAAiB,CAACt2K,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC5C,CAAC,MAAM;MACHo2K,iBAAiB,CAACt2K,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC/C;IAEA,IAAIsL,QAAQ,KAAK,EAAE,EAAE;MACjBqsK,gBAAgB,CAAC53K,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC3C,CAAC,MAAM;MACH03K,gBAAgB,CAAC53K,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC9C;IAEA,IAAI4zK,QAAQ,KAAK,EAAE,EAAE;MACjBgL,gBAAgB,CAAC7+K,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC3C,CAAC,MAAM;MACH2+K,gBAAgB,CAAC7+K,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC9C;IAEA,IAAIu2K,WAAW,KAAK,EAAE,EAAE;MACpBqB,mBAAmB,CAAC73K,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9C,CAAC,MAAM;MACH23K,mBAAmB,CAAC73K,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACjD;IACA6/K,0BAA0B,CAAC,CAAC;EAChC;EAEA,SAASA,0BAA0BA,CAAA,EAAG;IAClC,IAAIpqE,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxBs3I,QAAQ,CAAC/3I,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAClCihH,QAAQ,CAACnhH,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACrC;IACJ,CAAC,MAAM;MACH,IAAIk9K,qBAAqB,IAAI,EAAE,IAAIC,mBAAmB,IAAI,EAAE,IAAIC,YAAY,IAAI,EAAE,IAAIC,eAAe,IAAI,EAAE,IAAIC,YAAY,IAAI,EAAE,IAAIC,kBAAkB,IAAI,EAAE,IAAIC,cAAc,IAAI,EAAE,IAAIC,gBAAgB,IAAI,EAAE,IAAIC,QAAQ,IAAI,EAAE,IAAIC,SAAS,IAAI,EAAE,IAAIC,SAAS,IAAI,EAAE,IAAIK,oBAAoB,IAAI,EAAE,EAAE;QACnSnmC,QAAQ,CAAC/3I,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACrCkhH,QAAQ,CAACnhH,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACtC,CAAC,MACI;QACD63I,QAAQ,CAAC/3I,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAClCihH,QAAQ,CAACnhH,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACzC;IACJ;EACJ;EAEA,SAAS8xC,cAAcA,CAAA,EAAG;IACtBukI,iBAAiB,CAAChzK,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDg5K,iBAAiB,GAAGh5K,KAAK,CAACC,MAAM,CAACgE,KAAK;MACtCo4K,qBAAqB,GAAG,aAAa;MACrC0C,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFtJ,eAAe,CAACjzK,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC/Ci5K,eAAe,GAAGj5K,KAAK,CAACC,MAAM,CAACgE,KAAK;MACpCq4K,mBAAmB,GAAG,aAAa;MACnCyC,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFjI,gBAAgB,CAACt0K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAIi/K,sBAAsB,GAAGj/K,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAC7E2F,QAAQ,GAAGw0K,sBAAsB,CAACp8K,EAAE;MACpCgzK,YAAY,GAAGoJ,sBAAsB,CAACj8K,IAAI;MAC1Cu5K,YAAY,GAAG,aAAa;MAC5BwC,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFhI,mBAAmB,CAACv0K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpD,IAAIi/K,sBAAsB,GAAGj/K,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAC7E4wK,WAAW,GAAGuJ,sBAAsB,CAACp8K,EAAE;MACvC25K,eAAe,GAAG,aAAa;MAC/BuC,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFhB,gBAAgB,CAACv7K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAIi/K,sBAAsB,GAAGj/K,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAC7EiuK,QAAQ,GAAGkM,sBAAsB,CAACp8K,EAAE;MACpC+uK,YAAY,GAAGqN,sBAAsB,CAACj8K,IAAI;MAC1Cy5K,YAAY,GAAG,aAAa;MAC5BsC,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFf,sBAAsB,CAACx7K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACvD,IAAIi/K,sBAAsB,GAAGj/K,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAC7Eo0K,cAAc,GAAG+F,sBAAsB,CAACp8K,EAAE;MAC1C65K,kBAAkB,GAAG,aAAa;MAClCqC,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFd,kBAAkB,CAACz7K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD,IAAIi/K,sBAAsB,GAAGj/K,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAC7Eq0K,UAAU,GAAG8F,sBAAsB,CAACp8K,EAAE;MACtC85K,cAAc,GAAG,aAAa;MAC9BoC,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFb,wBAAwB,CAAC17K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACzD,IAAIi/K,sBAAsB,GAAGj/K,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAC7Ey0K,gBAAgB,GAAG0F,sBAAsB,CAACp8K,EAAE;MAC5Cu6K,oBAAoB,GAAG,aAAa;MACpC2B,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFZ,cAAc,CAAC37K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC/Co5K,YAAY,GAAGp5K,KAAK,CAACC,MAAM,CAACiI,OAAO,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG;MACvD00K,gBAAgB,GAAG,aAAa;MAChCmC,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACF/8D,SAAS,CAACx/G,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzCmI,IAAI,GAAGnI,KAAK,CAACC,MAAM,CAACgE,KAAK;MACzB44K,QAAQ,GAAG,aAAa;MACxBkC,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACF57D,UAAU,CAAC3gH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1C6f,KAAK,GAAG7f,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC1B64K,SAAS,GAAG,aAAa;MACzBiC,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFX,UAAU,CAAC57K,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1Cq5K,KAAK,GAAGr5K,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC1B84K,SAAS,GAAG,aAAa;MACzBgC,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;EACN;EAEA,eAAeF,iBAAiBA,CAAA,EAAG;IAC/B,MAAM;MACFK,yBAAyB,EAAExH;IAC/B,CAAC,GAAG,MAAMpC,cAAc,CAACoE,wBAAwB,CAAC,CAAC;IACnD,IAAI9B,aAAa,GAAGF,SAAS,CAACtuK,GAAG,CAAEyuK,SAAS,KAAM;MAC9Ch1K,EAAE,EAAEg1K,SAAS,CAAC/D,UAAU;MACxB7vK,KAAK,EAAE4zK,SAAS,CAAC/D,UAAU;MAC3B9wK,IAAI,EAAE60K,SAAS,CAAChC;IACpB,CAAC,CAAC,CAAC;IACH+B,aAAa,CAAC50G,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IACxDqB,QAAQ,CAAC5E,QAAQ,CAAC,kBAAkB,EAAEm4K,aAAa,EAAEntK,QAAQ,CAAC;IAE9D,MAAM;MACF00K,yBAAyB,EAAEpH;IAC/B,CAAC,GAAG,MAAMzC,cAAc,CAACmE,wBAAwB,CAAC,CAAC;IACnD,IAAIr0K,IAAI,GAAG2yK,QAAQ,CAAC3uK,GAAG,CAAE2pK,QAAQ,KAAM;MACnClwK,EAAE,EAAEkwK,QAAQ,CAACpB,UAAU;MACvB1tK,KAAK,EAAE8uK,QAAQ,CAACpB,UAAU;MAC1B3uK,IAAI,EAAE+vK,QAAQ,CAACnB;IACnB,CAAC,CAAC,CAAC;IACHxsK,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAC/CqB,QAAQ,CAAC5E,QAAQ,CAAC,kBAAkB,EAAE2F,IAAI,EAAE2tK,QAAQ,CAAC;IAErD,MAAM;MACFqM,6BAA6B,EAAElH;IACnC,CAAC,GAAG,MAAM5C,cAAc,CAACkE,4BAA4B,CAAC,CAAC;IACvD,IAAIpB,eAAe,GAAGF,WAAW,CAAC9uK,GAAG,CAAEssK,WAAW,KAAM;MACpD7yK,EAAE,EAAE6yK,WAAW,CAAC2C,aAAa;MAC7Bp0K,KAAK,EAAEyxK,WAAW,CAAC2C,aAAa;MAChCr1K,IAAI,EAAE0yK,WAAW,CAAC4C;IACtB,CAAC,CAAC,CAAC;IACHF,eAAe,CAACp1G,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAC1DqB,QAAQ,CAAC5E,QAAQ,CAAC,qBAAqB,EAAE24K,eAAe,EAAE1C,WAAW,CAAC;IAEtE,MAAM;MACF2J,+BAA+B,EAAEC;IACrC,CAAC,GAAG,MAAMhK,cAAc,CAACqE,8BAA8B,CAAC,CAAC;IACzD,IAAI4F,kBAAkB,GAAGD,cAAc,CAACl2K,GAAG,CAAE8vK,cAAc,KAAM;MAC7Dr2K,EAAE,EAAEq2K,cAAc,CAACsG,gBAAgB;MACnCv7K,KAAK,EAAEi1K,cAAc,CAACsG,gBAAgB;MACtCx8K,IAAI,EAAEk2K,cAAc,CAACuG;IACzB,CAAC,CAAC,CAAC;IACHF,kBAAkB,CAACv8G,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,wBAAwB,EAAE8/K,kBAAkB,EAAErG,cAAc,CAAC;IAE/E,MAAM;MACFwG,2BAA2B,EAAEC;IACjC,CAAC,GAAG,MAAMrK,cAAc,CAACsE,0BAA0B,CAAC,CAAC;IACrD,IAAIgG,cAAc,GAAGD,UAAU,CAACv2K,GAAG,CAAEy2K,WAAW,KAAM;MAClDh9K,EAAE,EAAEg9K,WAAW,CAACC,YAAY;MAC5B77K,KAAK,EAAE47K,WAAW,CAACC,YAAY;MAC/B98K,IAAI,EAAE68K,WAAW,CAACE;IACtB,CAAC,CAAC,CAAC;IACHH,cAAc,CAAC58G,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IACzDqB,QAAQ,CAAC5E,QAAQ,CAAC,oBAAoB,EAAEmgL,cAAc,EAAEzG,UAAU,CAAC;IAEnE,MAAM;MACF6G,iCAAiC,EAAEC;IACvC,CAAC,GAAG,MAAM3K,cAAc,CAACuE,gCAAgC,CAAC,CAAC;IAC3D,IAAIqG,oBAAoB,GAAGD,gBAAgB,CAAC72K,GAAG,CAAE+2K,iBAAiB,KAAM;MACpEt9K,EAAE,EAAEs9K,iBAAiB,CAACL,YAAY;MAClC77K,KAAK,EAAEk8K,iBAAiB,CAACL,YAAY;MACrC98K,IAAI,EAAEm9K,iBAAiB,CAACJ;IAC5B,CAAC,CAAC,CAAC;IACHG,oBAAoB,CAACl9G,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAC/DqB,QAAQ,CAAC5E,QAAQ,CAAC,0BAA0B,EAAEygL,oBAAoB,EAAE3G,gBAAgB,CAAC;EAGzF;EAGA,SAASiF,kBAAkBA,CAAA,EAAG;IAC1B/F,cAAc,GAAG,EAAE;IACnBG,cAAc,GAAGsE,eAAe;IAChCxE,YAAY,GAAG,EAAE;IACjBC,UAAU,GAAG,EAAE;IAEfyH,eAAe,GAAGhuK,KAAK,CAAC1P,KAAK,CAAC;MAC1BgB,UAAU,EAAE,CAAC,mBAAmB,CAAC;MACjCkP,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,MAAM8D,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAACvT,KAAK,CAACw8J,SAAS,GAAG,OAAO;IACjCjpJ,OAAO,CAACvT,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACnCz8C,OAAO,CAAC7P,SAAS,GAAG,2BAA2B;;IAE/C;IACAw5K,kBAAkB,GAAGn6K,KAAK,CAACxD,KAAK,CAAC;MAC7BG,EAAE,EAAE,oBAAoB;MACxBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,uBAAuB;MAC9BrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE20K;IACX,CAAC,CAAC;IAEF0H,yBAAyB,GAAGj8K,QAAQ,CAAC3B,KAAK,CAAC;MACvCG,EAAE,EAAE,2BAA2B;MAC/B2B,KAAK,EAAE,wBAAwB;MAC/BF,UAAU,EAAE;IAChB,CAAC,CAAC;IAEFi8K,gBAAgB,GAAGr6K,KAAK,CAACxD,KAAK,CAAC;MAC3BG,EAAE,EAAE,kBAAkB;MACtBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,qBAAqB;MAC5BrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEy0K;IACX,CAAC,CAAC;IAEF8H,cAAc,GAAGt6K,KAAK,CAACxD,KAAK,CAAC;MACzBG,EAAE,EAAE,gBAAgB;MACpBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,mBAAmB;MAC1BrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE00K;IACX,CAAC,CAAC;IAEFtmE,SAAS,GAAG5vG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZ,IAAI,CAACmuG,SAAS,CAACnzG,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC3CqlG,SAAS,CAACnzG,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UACnCqhL,gBAAgB,CAAC,CAAC;QACtB;MACJ;IACJ,CAAC,CAAC;IAEFnuE,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEFg9K,eAAe,CAACtgL,WAAW,CAAC4W,OAAO,CAAC;IACpC0pK,eAAe,CAACtgL,WAAW,CAACugL,kBAAkB,CAAC;IAE/CD,eAAe,CAACtgL,WAAW,CAACwgL,yBAAyB,CAAC;IACtDF,eAAe,CAACtgL,WAAW,CAACygL,gBAAgB,CAAC;IAC7CH,eAAe,CAACtgL,WAAW,CAAC0gL,cAAc,CAAC;IAE3C,IAAI12E,cAAc,GAAGznG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDknG,cAAc,CAACtqG,SAAS,GAAG,uEAAuE;IAClG4gL,eAAe,CAACtgL,WAAW,CAACgqG,cAAc,CAAC;IAE3C,IAAI2gD,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrCqrJ,YAAY,CAAC3qJ,WAAW,CAACuyG,SAAS,CAAC;IACnCo4C,YAAY,CAAC3qJ,WAAW,CAACwyG,UAAU,CAAC;IACpC8tE,eAAe,CAACtgL,WAAW,CAAC2qJ,YAAY,CAAC;IAEzCr4I,KAAK,CAAC9S,IAAI,CAAC8gL,eAAe,CAAC;IAC3BM,mBAAmB,CAAC,CAAC;IACrBC,iCAAiC,CAAC,YAAY,CAAC;IAC/CC,mCAAmC,CAAC,CAAC;EACzC;EAEA,SAASF,mBAAmBA,CAAA,EAAG;IAC3BJ,yBAAyB,CAAC99K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC1Dy4K,cAAc,GAAGz4K,KAAK,CAACC,MAAM,CAACgE,KAAK;MACnC28K,mCAAmC,CAAC,CAAC;IACzC,CAAC,CAAC;IAEFL,gBAAgB,CAAC/9K,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAChD04K,YAAY,GAAG14K,KAAK,CAACC,MAAM,CAACgE,KAAK;MACjC28K,mCAAmC,CAAC,CAAC;IACzC,CAAC,CAAC;IACFJ,cAAc,CAACh+K,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC9C24K,UAAU,GAAG34K,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC/B28K,mCAAmC,CAAC,CAAC;IACzC,CAAC,CAAC;IACFP,kBAAkB,CAAC79K,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAClD44K,cAAc,GAAG54K,KAAK,CAACC,MAAM,CAACgE,KAAK;MACnC28K,mCAAmC,CAAC,CAAC;IACzC,CAAC,CAAC;IAEFtuE,UAAU,CAAC9vG,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACvC4P,KAAK,CAAC/S,IAAI,CAAC+gL,eAAe,CAAC;IAC/B,CAAC,CAAC;EACN;EAEA,SAASQ,mCAAmCA,CAAA,EAAG;IAC3C,IAAIC,iBAAiB,GAAGP,yBAAyB,CAACh+K,aAAa,CAAC,4BAA4B,CAAC;IAC7F,IAAIo2K,YAAY,GAAG6H,gBAAgB,CAACj+K,aAAa,CAAC,mBAAmB,CAAC;IACtE,IAAIq2K,UAAU,GAAG6H,cAAc,CAACl+K,aAAa,CAAC,iBAAiB,CAAC;IAChE,IAAIw+K,cAAc,GAAGT,kBAAkB,CAAC/9K,aAAa,CAAC,qBAAqB,CAAC;IAE5E,IAAIu+K,iBAAiB,CAAC58K,KAAK,KAAK,EAAE,EAAE;MAChCq8K,yBAAyB,CAACphL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACzD,CAAC,MAAM;MACHkhL,yBAAyB,CAACphL,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC5D;IAEA,IAAI2hL,cAAc,CAAC78K,KAAK,KAAK,EAAE,IAAI68K,cAAc,CAAC78K,KAAK,GAAG65K,iBAAiB,EAAE;MACzEuC,kBAAkB,CAACnhL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAClD,CAAC,MAAM;MACHihL,kBAAkB,CAACnhL,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IACrD;IAEA,IAAIu5K,YAAY,CAACz0K,KAAK,KAAK,EAAE,IAAI68K,cAAc,CAAC78K,KAAK,GAAGy0K,YAAY,CAACz0K,KAAK,IAAK00K,UAAU,CAAC10K,KAAK,IAAI,EAAE,IAAIy0K,YAAY,CAACz0K,KAAK,GAAG00K,UAAU,CAAC10K,KAAM,EAAE;MAC7Is8K,gBAAgB,CAACrhL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAChD,CAAC,MAAM;MACHmhL,gBAAgB,CAACrhL,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IACnD;IAEA4hL,4BAA4B,CAAC,CAAC;EAClC;EAEA,SAASA,4BAA4BA,CAAA,EAAG;IACpC,IAAInsE,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACvE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxB0yG,SAAS,CAACnzG,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACnC;IACJ,CAAC,MAAM;MACHizG,SAAS,CAACnzG,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC1C;EACJ;EAEA,SAASwhL,iCAAiCA,CAACK,QAAQ,EAAE;IACjD,MAAMv9B,yBAAyB,GAAI,CAC/B;MAAE5gJ,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,CAAC;MAAEjB,IAAI,EAAE;IAA8D,CAAC,EACxF;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,CAAC;MAAEjB,IAAI,EAAE;IAA6C,CAAC,EACvE;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,CAAC;MAAEjB,IAAI,EAAE;IAA0D,CAAC,EACpF;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,CAAC;MAAEjB,IAAI,EAAE;IAA+D,CAAC,CAC3F;IACFygJ,yBAAyB,CAACzgF,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IACpE,IAAIg+K,QAAQ,IAAI,YAAY,EACxB38K,QAAQ,CAAC5E,QAAQ,CAAC,2BAA2B,EAAEgkJ,yBAAyB,EAAEg1B,cAAc,CAAC,CAAC,KAE1Fp0K,QAAQ,CAAC5E,QAAQ,CAAC,0BAA0B,EAAEgkJ,yBAAyB,EAAEw4B,gBAAgB,CAAC;EAClG;EAIA,eAAewE,gBAAgBA,CAAA,EAAG;IAC9B,MAAM1qJ,MAAM,GAAG,MAAMu/I,cAAc,CAACkD,yBAAyB,CAACC,cAAc,EAAEC,YAAY,EAAEC,UAAU,EAAEC,cAAc,EAAEoE,WAAW,EAAEvsK,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAAEkpI,cAAc,CAAC;IACtK,MAAM;MAAEmI;IAA2B,CAAC,GAAGlrJ,MAAM;IAC7C,IAAIi0E,WAAW,GAAG3nG,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;IAE3D0kG,WAAW,CAACxqG,SAAS,GAAG,EAAE;IAC1B,IAAIyhL,0BAA0B,CAACC,MAAM,IAAI,IAAI,EAAE;MAC3Cl3E,WAAW,CAACxqG,SAAS,GAAG,wEAAwE;MAChGwqG,WAAW,CAAC9qG,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAC/C,CAAC,MACI;MACDw0K,aAAa,CAACC,iBAAiB,CAACyF,UAAU,EAAE1H,YAAY,EAAEiE,YAAY,EAAEppE,qBAAqB,EAAEuwE,WAAW,CAAC;MAC3G5qK,KAAK,CAAC/S,IAAI,CAAC+gL,eAAe,CAAC;IAC/B;EAEJ;EAEA,eAAe/B,gBAAgBA,CAAA,EAAG;IAC9B,MAAMtoJ,MAAM,GAAG,MAAMu/I,cAAc,CAACyD,yBAAyB,CAACC,iBAAiB,EAAEC,eAAe,EAAExuK,QAAQ,EAAEirK,WAAW,EAAE3C,QAAQ,EAAEmG,cAAc,EAAEC,UAAU,EAAEC,YAAY,EAAEjxK,IAAI,EAAE0X,KAAK,EAAEw5J,KAAK,EAAE2D,WAAW,EAAEvsK,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAAE0pI,UAAU,EAAEC,gBAAgB,CAAC;IAC7P,MAAM;MAAE4H;IAA2B,CAAC,GAAGprJ,MAAM;IAC7C,IAAIorJ,0BAA0B,CAACjL,UAAU,IAAI,IAAI,EAAE;MAC/CtC,aAAa,CAACC,iBAAiB,CAACsN,0BAA0B,CAACjL,UAAU,EAAEtE,YAAY,EAAEiE,YAAY,EAAEppE,qBAAqB,EAAEuwE,WAAW,EAAE7I,gBAAgB,GAAG,CAAC,CAAC;IAChK;EACJ;EAEA,SAASmK,cAAcA,CAAA,EAAG;IACtB,IAAIjC,qBAAqB,IAAI,EAAE,IACxBC,mBAAmB,IAAI,EAAE,IACzBC,YAAY,IAAI,EAAE,IAClBC,eAAe,IAAI,EAAE,IACrBC,YAAY,IAAI,EAAE,IAClBC,kBAAkB,IAAI,EAAE,IACxBC,cAAc,IAAI,EAAE,IACpBC,gBAAgB,IAAI,EAAE,IACtBC,QAAQ,IAAI,EAAE,IACdC,SAAS,IAAI,EAAE,IACfC,SAAS,IAAI,EAAE,IACfK,oBAAoB,IAAI,EAAE,EAAE;MAC/BgE,yBAAyB,CAAC,CAAC;IAC/B,CAAC,MACI;MACDl/K,UAAU,CAACqwK,qBAAqB,CAAC,CAAC;IACtC;EACJ;EAEA,SAAS6O,yBAAyBA,CAAA,EAAG;IACjC,MAAM/2B,YAAY,GAAGj4I,KAAK,CAAC1P,KAAK,CAAC;MAC7BkQ,KAAK,EAAE;IACX,CAAC,CAAC;IAEF03I,OAAO,GAAG7nJ,MAAM,CAACC,KAAK,CAAC;MACnBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACgrJ,YAAY,CAAC;QACxBnoJ,UAAU,CAACqwK,qBAAqB,CAAC,CAAC;MACtC;IACJ,CAAC,CAAC;IAEF/nB,MAAM,GAAG/nJ,MAAM,CAACC,KAAK,CAAC;MAClBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACgrJ,YAAY,CAAC;MAC5B;IACJ,CAAC,CAAC;IAEF,MAAMn3I,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAE3CsQ,OAAO,CAACrM,SAAS,GAAG,uEAAuE;IAC3FqM,OAAO,CAAC/P,KAAK,CAACguC,SAAS,GAAG,QAAQ;IAClCj+B,OAAO,CAAC/P,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACnCk3F,YAAY,CAACvqJ,WAAW,CAACoT,OAAO,CAAC;IACjC,IAAIu3I,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrCqrJ,YAAY,CAAC3qJ,WAAW,CAACwqJ,OAAO,CAAC;IACjCG,YAAY,CAAC3qJ,WAAW,CAAC0qJ,MAAM,CAAC;IAChCH,YAAY,CAACvqJ,WAAW,CAAC2qJ,YAAY,CAAC;IACtCH,OAAO,CAACx5I,KAAK,CAAC,CAAC;IACfsB,KAAK,CAAC9S,IAAI,CAAC+qJ,YAAY,CAAC;EAC5B;EAGA,SAASszB,4BAA4BA,CAAA,EAAG;IACpCzB,eAAe,GAAG,EAAE;IACpBD,gBAAgB,GAAG,EAAE;IACrBD,aAAa,GAAG,EAAE;IAElBqF,eAAe,GAAGjvK,KAAK,CAAC1P,KAAK,CAAC;MAC1BgB,UAAU,EAAE,CAAC,mBAAmB,CAAC;MACjCkP,KAAK,EAAE;IACX,CAAC,CAAC;;IAEF;IACA0uK,qBAAqB,GAAGj9K,QAAQ,CAAC3B,KAAK,CAAC;MACnCG,EAAE,EAAE,uBAAuB;MAC3B2B,KAAK,EAAE,gBAAgB;MACvBF,UAAU,EAAE;IAChB,CAAC,CAAC;IAEFi9K,wBAAwB,GAAGl9K,QAAQ,CAAC3B,KAAK,CAAC;MACtCG,EAAE,EAAE,0BAA0B;MAC9B2B,KAAK,EAAE,oBAAoB;MAC3BF,UAAU,EAAE;IAChB,CAAC,CAAC;IAEFk9K,yBAAyB,GAAGt7K,KAAK,CAACxD,KAAK,CAAC;MACpCG,EAAE,EAAE,2BAA2B;MAC/BO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,+BAA+B;MACtCrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEFs+K,YAAY,GAAGh/K,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,UAAU;MAChBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZ,IAAI,CAACu9K,YAAY,CAACviL,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC9Cy0K,YAAY,CAACviL,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UACtCsiL,aAAa,CAAC,CAAC;QACnB;MACJ;IACJ,CAAC,CAAC;IAEFC,sBAAsB,GAAGl/K,MAAM,CAACC,KAAK,CAAC;MAClCM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEFi+K,eAAe,CAACvhL,WAAW,CAACwhL,qBAAqB,CAAC;IAClDD,eAAe,CAACvhL,WAAW,CAACyhL,wBAAwB,CAAC;IACrDF,eAAe,CAACvhL,WAAW,CAAC0hL,yBAAyB,CAAC;IAEtD,IAAI/2B,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrCqrJ,YAAY,CAAC3qJ,WAAW,CAAC6hL,sBAAsB,CAAC;IAChDl3B,YAAY,CAAC3qJ,WAAW,CAAC2hL,YAAY,CAAC;IACtCJ,eAAe,CAACvhL,WAAW,CAAC2qJ,YAAY,CAAC;IAEzCr4I,KAAK,CAAC9S,IAAI,CAAC+hL,eAAe,CAAC;IAC3BG,yBAAyB,CAACtiL,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACnDwiL,uCAAuC,CAAC,CAAC;IACzCjB,iCAAiC,CAAC,YAAY,CAAC;IAC/CkB,iCAAiC,CAAC,CAAC;IACnCC,yCAAyC,CAAC,CAAC;EAC/C;EAEA,SAASF,uCAAuCA,CAAA,EAAG;IAC/CN,qBAAqB,CAAC9+K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACtDg8K,aAAa,GAAGh8K,KAAK,CAACC,MAAM,CAACgE,KAAK;MAClC69K,yCAAyC,CAAC,CAAC;IAC/C,CAAC,CAAC;IACFP,wBAAwB,CAAC/+K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACzDi8K,gBAAgB,GAAGj8K,KAAK,CAACC,MAAM,CAACgE,KAAK;MACrC,IAAIg4K,gBAAgB,IAAI,EAAE,EAAE;QACxBuF,yBAAyB,CAACtiL,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACnD88K,eAAe,GAAG,EAAE;QACpB75K,QAAQ,CAACiD,cAAc,CAAC,2BAA2B,CAAC,CAACrB,KAAK,GAAG,EAAE;MACnE,CAAC,MACI;QACDu9K,yBAAyB,CAACtiL,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC1D;MACA2iL,yCAAyC,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEFN,yBAAyB,CAACh/K,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzD,IAAIi8K,gBAAgB,IAAI,EAAE,EAAE;QACxBC,eAAe,GAAGl8K,KAAK,CAACC,MAAM,CAACgE,KAAK;MACxC,CAAC,MACI;QACD5B,QAAQ,CAACiD,cAAc,CAAC,2BAA2B,CAAC,CAACrB,KAAK,GAAG,EAAE;QAC/Di4K,eAAe,GAAG,EAAE;MACxB;MACA4F,yCAAyC,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEFH,sBAAsB,CAACn/K,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACnD4P,KAAK,CAAC/S,IAAI,CAACgiL,eAAe,CAAC;MAC3Bn/K,UAAU,CAACqwK,qBAAqB,CAAC,CAAC;IACtC,CAAC,CAAC;EACN;EAEA,SAASuP,yCAAyCA,CAAA,EAAG;IACjD,IAAIC,UAAU,GAAGT,qBAAqB,CAACh/K,aAAa,CAAC,wBAAwB,CAAC;IAC9E,IAAI0/K,SAAS,GAAGT,wBAAwB,CAACj/K,aAAa,CAAC,2BAA2B,CAAC;IACnF,IAAI2/K,WAAW,GAAGT,yBAAyB,CAACl/K,aAAa,CAAC,4BAA4B,CAAC;IAEvF,IAAIy/K,UAAU,CAAC99K,KAAK,KAAK,EAAE,EAAE;MACzBq9K,qBAAqB,CAACpiL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACrD,CAAC,MAAM;MACHkiL,qBAAqB,CAACpiL,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IACxD;IAEA,IAAI6iL,SAAS,CAAC/9K,KAAK,IAAI,EAAE,IAAIg+K,WAAW,CAACh+K,KAAK,KAAK,EAAE,EAAE;MACnDu9K,yBAAyB,CAACtiL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACzD,CAAC,MAAM;MACHoiL,yBAAyB,CAACtiL,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC5D;IAEA+iL,kCAAkC,CAAC,CAAC;EACxC;EAEA,SAASA,kCAAkCA,CAAA,EAAG;IAC1C,IAAIttE,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACvE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxB8hL,YAAY,CAACviL,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACtC;IACJ,CAAC,MAAM;MACHqiL,YAAY,CAACviL,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC7C;EACJ;EACA,eAAe0iL,iCAAiCA,CAAA,EAAG;IAC/C,MAAM;MACFM,+BAA+B,EAAEC;IACrC,CAAC,GAAG,MAAM9M,cAAc,CAACwG,8BAA8B,CAAC,CAAC;IACzD,IAAIuG,SAAS,GAAGD,SAAS,CAACh5K,GAAG,CAAEi5K,SAAS,KAAM;MAC1Cx/K,EAAE,EAAEw/K,SAAS,CAACC,WAAW;MACzBr+K,KAAK,EAAEo+K,SAAS,CAACC,WAAW;MAC5Bt/K,IAAI,EAAEq/K,SAAS,CAACE;IACpB,CAAC,CAAC,CAAC;IACHF,SAAS,CAACr/G,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IACpDqB,QAAQ,CAAC5E,QAAQ,CAAC,uBAAuB,EAAE4iL,SAAS,EAAErG,aAAa,CAAC;EACxE;EAEA,eAAe0F,aAAaA,CAAA,EAAG;IAC3B,MAAM3rJ,MAAM,GAAG,MAAMu/I,cAAc,CAACyG,4BAA4B,CAACC,aAAa,EAAEC,gBAAgB,EAAEC,eAAe,EAAEc,WAAW,EAAEvsK,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC;IACjJ,MAAM;MAAE4yI;IAA8B,CAAC,GAAGzsJ,MAAM;IAChD3jB,KAAK,CAAC/S,IAAI,CAACgiL,eAAe,CAAC;IAC3BzN,aAAa,CAACC,iBAAiB,CAACyF,UAAU,EAAE1H,YAAY,EAAEiE,YAAY,EAAEppE,qBAAqB,EAAEuwE,WAAW,CAAC;EAC/G;EAEA,OAAO;IACHz6K,IAAI;IACJm7K,sBAAsB;IACtBl+D;EACJ,CAAC;AACL,CAAC,EAAE,CAAC;AC/+BJ,MAAMo0D,aAAa,GAAI,YAAY;EAE/B,IAAI0F,UAAU;EACd,IAAIp6D,MAAM;EACV,IAAIC,MAAM;EACV,IAAIC,OAAO;EACX,IAAI80D,WAAW;EACf,IAAI/rK,IAAI;EACR,IAAI0tK,YAAY;EAChB,IAAIppE,qBAAqB;EACzB,IAAI0nE,gBAAgB;EAEpB,MAAM75J,QAAQ,GAAG,CACb;IACI+gE,KAAK,EAAE,wBAAwB;IAC/Bx4E,EAAE,EAAE,CAAC;IACLwZ,MAAM,EAAEA,CAAA,KAAM8/J,qBAAqB,CAAC38D,SAAS,CAAC;EAClD,CAAC,EACD;IACInkC,KAAK,EAAE,kBAAkB;IACzBx4E,EAAE,EAAE,CAAC;IACLwZ,MAAM,EAAEA,CAAA,KAAMomK,aAAa,CAACjjE,SAAS,CAAC;EAC1C,CAAC,EACD;IACInkC,KAAK,EAAE,gBAAgB;IACvBx4E,EAAE,EAAE,CAAC;IACLwZ,MAAM,EAAEA,CAAA,KAAMqmK,YAAY,CAACljE,SAAS,CAAC;EACzC,CAAC,EACD;IACInkC,KAAK,EAAE,eAAe;IACtBx4E,EAAE,EAAE,CAAC;IACLwZ,MAAM,EAAEA,CAAA,KAAMsmK,YAAY,CAACnjE,SAAS,CAAC;EACzC,CAAC,CAEJ;EAED,eAAeq0D,iBAAiBA,CAAC+H,UAAU,EAAEljI,IAAI,EAAE2kI,YAAY,EAAEC,qBAAqB,EAAE5wE,mBAAmB,EAAmB;IAAA,IAAjBk2E,WAAW,GAAAh5K,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,CAAC;IACxH0vK,UAAU,GAAGsC,UAAU;IACvB1H,WAAW,GAAGxnE,mBAAmB;IACjCvkG,IAAI,GAAGuwC,IAAI;IACXm9H,YAAY,GAAGwH,YAAY;IAC3B5wE,qBAAqB,GAAG6wE,qBAAqB;IAC7CnJ,gBAAgB,GAAGyO,WAAW;IAE9BrxK,GAAG,CAACC,iBAAiB,CAAC,CAAC;IAEvB,IAAIyuG,WAAW,GAAG59G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/Cq9G,WAAW,CAAC/gH,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAC9C,MAAMsX,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C,MAAMs9G,WAAW,GAAG79G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD,MAAM8sB,IAAI,GAAGrtB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAE1C,MAAMw9G,OAAO,GAAG/9G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAE7Cw9G,OAAO,CAACv9G,EAAE,GAAG,SAAS;IAEtBu9G,OAAO,CAAC5gH,SAAS,GAAG,EAAE;IAEtB6gH,QAAQ,GAAG59G,MAAM,CAACC,KAAK,CAAC;MACpBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAAEhC,UAAU,CAACqwK,qBAAqB,CAAC,CAAC;MAAC;IAC/D,CAAC,CAAC;IAEF,MAAMhyD,YAAY,GAAG,MAAMf,SAAS,CAAC,CAAC;IAEtC9oG,OAAO,CAAClX,SAAS,GAAG,OAAOitG,qBAAqB,OAAO;IACvDyT,WAAW,CAAC1gH,SAAS,GAAG,OAAOk5C,IAAI,MAAM2kI,YAAY,OAAO;IAC5Dj9D,OAAO,CAACtgH,WAAW,CAACygH,YAAY,CAAC;IAEjC7wF,IAAI,CAAC5vB,WAAW,CAAC4W,OAAO,CAAC;IACzB,IAAI4iK,UAAU,IAAI3yK,SAAS,EACvB+oB,IAAI,CAAC5vB,WAAW,CAACogH,WAAW,CAAC;IACjCD,WAAW,CAACngH,WAAW,CAAC4vB,IAAI,CAAC;IAC7BuwF,WAAW,CAACngH,WAAW,CAACugH,QAAQ,CAAC;IAEjC9uG,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACmgH,WAAW,CAAC;IACzC1uG,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACsgH,OAAO,CAAC;IACrC7uG,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;EAC1B;EACA,SAASsnF,mBAAmBA,CAACC,eAAe,EAAE;IAC1C,MAAMC,aAAa,GAAGvB,MAAM,CAAC78G,aAAa,CAAC,SAAS,CAAC;IAErD,IAAIo+G,aAAa,EAAE;MACfA,aAAa,CAACxhH,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC5C;IAEAshH,eAAe,CAACvhH,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;EAC3C;EACA,SAASuhH,mBAAmBA,CAACC,SAAS,EAAE;IACpC,MAAMtgH,aAAa,GAAG8+G,OAAO,CAAC98G,aAAa,CAAC,SAAS,CAAC;IACtD,MAAMsY,aAAa,GAAGwkG,OAAO,CAAC98G,aAAa,CAAC,qBAAqBs+G,SAAS,IAAI,CAAC;IAE/E,IAAItgH,aAAa,EAAE;MACfA,aAAa,CAACpB,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC5C;IAEA,IAAIyhH,SAAS,GAAG,CAAC,EAAE;MACfP,QAAQ,CAACnhH,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACzC,CAAC,MAAM,IAAIyhH,SAAS,IAAI,CAAC,IAAIq2B,QAAQ,CAAC/3I,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;MAClEqzG,QAAQ,CAACnhH,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACzC,CAAC,MAAM;MACHkhH,QAAQ,CAACnhH,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACtC;IACAwb,aAAa,CAAC1b,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;EACzC;;EAEA;EACA;EACA,SAASyhH,eAAeA,CAAA,EAAG;IACvB,MAAM9hH,GAAG,GAAGsD,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzC7D,GAAG,CAACG,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAEjCkb,QAAQ,CAAC1a,OAAO,CAAC,CAAC6a,OAAO,EAAEzB,KAAK,KAAK;MACjC,MAAM4nG,SAAS,GAAGnmG,OAAO,CAAC5X,EAAE;MAE5B,MAAM2X,OAAO,GAAGnY,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC7C4X,OAAO,CAACtb,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MACzCob,OAAO,CAAChb,SAAS,GAAG,GAAGib,OAAO,CAAC4gE,KAAK,EAAE;MAEtC,IAAI84F,gBAAgB,KAAKn7J,KAAK,EAAE;QAC5BwB,OAAO,CAACtb,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACnC;MAEAob,OAAO,CAAChY,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QACnC47G,mBAAmB,CAAChmG,OAAO,CAAC;QAC5BmmG,mBAAmB,CAACC,SAAS,CAAC;QAC9BrvG,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;MAC1B,CAAC,CAAC;MAEFn6B,GAAG,CAACe,WAAW,CAAC0a,OAAO,CAAC;IAC5B,CAAC,CAAC;IAEF,OAAOzb,GAAG;EACd;EACA,eAAe+hH,SAASA,CAAA,EAAG;IACvB,MAAMruG,IAAI,GAAGpQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C6P,IAAI,CAACvT,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAEnC,MAAM+8K,qBAAqB,CAAC55K,IAAI,CAAC+2K,UAAU,EAAEnxK,IAAI,EAAE0tK,YAAY,EAAEppE,qBAAqB,EAAEynE,WAAW,CAAC;IACpG,MAAMuO,aAAa,CAAClgL,IAAI,CAAC+2K,UAAU,EAAEnxK,IAAI,EAAE0tK,YAAY,EAAEppE,qBAAqB,EAAEynE,WAAW,CAAC;IAC5F,MAAMwO,YAAY,CAACngL,IAAI,CAAC+2K,UAAU,EAAEnxK,IAAI,EAAE0tK,YAAY,EAAEppE,qBAAqB,EAAEynE,WAAW,CAAC;IAC3F,MAAMyO,YAAY,CAACpgL,IAAI,CAAC+2K,UAAU,EAAEnxK,IAAI,EAAE0tK,YAAY,EAAEppE,qBAAqB,EAAEynE,WAAW,CAAC;IAE3F55J,QAAQ,CAAC1a,OAAO,CAAC,CAAC6a,OAAO,EAAEzB,KAAK,KAAK;MACjC,MAAM4nG,SAAS,GAAGnmG,OAAO,CAAC5X,EAAE;MAC5B,MAAMqZ,aAAa,GAAGzB,OAAO,CAAC4B,MAAM,CAAC,CAAC;MACtCH,aAAa,CAAC5Y,YAAY,CAAC,iBAAiB,EAAEs9G,SAAS,CAAC;MACxD1kG,aAAa,CAAChd,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAE/C,IAAI+0K,gBAAgB,KAAKn7J,KAAK,EAAE;QAC5BkD,aAAa,CAAChd,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACzC;MAEAqT,IAAI,CAAC3S,WAAW,CAACoc,aAAa,CAAC;IACnC,CAAC,CAAC;IAEF,OAAOzJ,IAAI;EACf;EAEA,eAAe+sG,SAASA,CAAA,EAAG;IACvBN,MAAM,GAAG78G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtCs8G,MAAM,CAAChgH,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAE/B+/G,MAAM,GAAG0B,eAAe,CAAC,CAAC;IAC1B3B,MAAM,CAACp/G,WAAW,CAACq/G,MAAM,CAAC;IAE1BC,OAAO,GAAG,MAAM0B,SAAS,CAAC,CAAC;IAC3B5B,MAAM,CAACp/G,WAAW,CAACs/G,OAAO,CAAC;IAE3B,OAAOF,MAAM;EACjB;EAEA,OAAO;IACH20D,iBAAiB;IACjBr0D;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AClLJ,MAAMkjE,YAAY,GAAG,CAAC,MAAM;EAExB,IAAIG,oBAAoB,GAAG,EAAE;EAC7B,IAAIvJ,UAAU;EACd,IAAIyB,SAAS;EACb,IAAI+H,eAAe;EACnB,IAAIC,cAAc;EAClB,IAAI/F,WAAW;EACf,IAAI70K,IAAI;EACR,IAAI0tK,YAAY;EAChB,IAAIppE,qBAAqB;EACzB,IAAIu2E,gBAAgB;EAEpB,eAAezgL,IAAIA,CAACuxK,UAAU,EAAEp7H,IAAI,EAAE2kI,YAAY,EAAEC,qBAAqB,EAAE35B,WAAW,EAAE;IACpF21B,UAAU,GAAGxF,UAAU;IACvBkJ,WAAW,GAAGr5B,WAAW;IACzBx7I,IAAI,GAAGuwC,IAAI;IACXm9H,YAAY,GAAGwH,YAAY;IAC3B5wE,qBAAqB,GAAG6wE,qBAAqB;IAC7C,IAAIhE,UAAU,IAAI3yK,SAAS,EAAE;MACzBm8K,eAAe,GAAG,MAAMxN,cAAc,CAACkF,2BAA2B,CAAClB,UAAU,CAAC;MAC9EyJ,cAAc,GAAG,MAAMzN,cAAc,CAACgG,sBAAsB,CAAChC,UAAU,CAAC;IAC5E;EACJ;EAGA,SAAS95D,SAASA,CAAA,EAAG;IACjB,MAAMyjE,YAAY,GAAG5gL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDqgL,YAAY,CAAC/jL,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IAEzC,IAAIk6K,UAAU,IAAI3yK,SAAS,EAAE;MACzB,MAAMs6G,eAAe,GAAGiiE,oBAAoB,CAAC,CAAC;MAC9CD,YAAY,CAACnjL,WAAW,CAACmhH,eAAe,CAAC;IAC7C,CAAC,MACI;MACD,MAAMvqG,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;MAC5C8T,OAAO,CAAClX,SAAS,GAAG,eAAe;MACnCkX,OAAO,CAACxX,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MACvC6jL,YAAY,CAACnjL,WAAW,CAAC4W,OAAO,CAAC;IACrC;IAEA,OAAOusK,YAAY;EACvB;EAEA,SAASC,oBAAoBA,CAAA,EAAG;IAC5B,MAAMC,WAAW,GAAG9gL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDugL,WAAW,CAACjkL,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAEnDgkL,gBAAgB,GAAG3gL,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,qBAAqB;MAC3BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAMm/K,mBAAmB,CAAC;IACxC,CAAC,CAAC;IACFR,oBAAoB,GAAGS,yBAAyB,CAAC,CAAC;;IAElD;;IAEA,MAAMhiE,OAAO,GAAGj/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0+G,OAAO,CAACpiH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9B,MAAMmiH,UAAU,GAAGl/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD2+G,UAAU,CAACriH,SAAS,CAACE,GAAG,CAAC,MAAM,CAAC;IAChC,MAAMoiH,cAAc,GAAGn/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD4+G,cAAc,CAACtiH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1CmiH,UAAU,CAAC/hH,SAAS,GAAG,+CAA+C;IACtE+hH,UAAU,CAACzhH,WAAW,CAAC0hH,cAAc,CAAC;IACtCF,OAAO,CAACxhH,WAAW,CAACyhH,UAAU,CAAC;IAC/B,IAAI9wG,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;MAC5B28D,cAAc,CAAC1hH,WAAW,CAACsjL,gBAAgB,CAAC;IAChD;IACA5hE,cAAc,CAAC1hH,WAAW,CAAC+iL,oBAAoB,CAAC;IAChDM,WAAW,CAACrjL,WAAW,CAACwhH,OAAO,CAAC;IAChC,OAAO6hE,WAAW;EACtB;EAEA,SAASG,yBAAyBA,CAAA,EAAG;IACjC,MAAMh6E,YAAY,GAAG;MACjBjzF,KAAK,EAAE,KAAK;MACZZ,OAAO,EAAE,yBAAyB;MAClCgB,cAAc,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,mBAAmB,CAAC;MAC5IM,OAAO,EAAEtG,CAAC,CAACC,OAAO,CAACo0C,gBAAgB,IAAI,IAAI,GAAG,IAAI,GAAE;IACxD,CAAC;IAED,IAAI+qD,SAAS,GAAGizE,eAAe,CAACS,4BAA4B,CAACn6K,GAAG,CAAE0mG,KAAK,KAAM;MACzEn4F,MAAM,EAAE,CAACm4F,KAAK,CAAC6qE,IAAI,EAAE7qE,KAAK,CAAC8M,WAAW,EAAE9M,KAAK,CAACv4E,SAAS,IAAI,EAAE,GAAG,EAAE,GAAGkhC,MAAM,CAACq3C,KAAK,CAACv4E,SAAS,CAAC,CAACpP,MAAM,CAAC,UAAU,CAAC,EAAE2nF,KAAK,CAACr4E,OAAO,IAAI,EAAE,GAAG,EAAE,GAAGghC,MAAM,CAACq3C,KAAK,CAACr4E,OAAO,CAAC,CAACtP,MAAM,CAAC,UAAU,CAAC,EAAE2nF,KAAK,CAAC8qE,kBAAkB,EAAE9qE,KAAK,CAAC+qE,uBAAuB,EAAE/qE,KAAK,CAACgrE,gBAAgB,CAAC;MACtQh3K,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,WAAW;QAAEC,KAAK,EAAE6rG,KAAK,CAAC0zE;MAAU,CAAC,CAAC;MAC1DhsK,OAAO,EAAG5S,CAAC,IAAK;QACZ,IAAI6L,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;UAC5B66F,wBAAwB,CAAC96I,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC0/K,SAAS,CAACv/K,KAAK,CAAC;QACjE;MACJ,CAAC;MACD8S,OAAO,EAAEtG,CAAC,CAACC,OAAO,CAACo0C,gBAAgB,IAAI,IAAI,GAAG,GAAG7hD,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE;MACvE6U,eAAe,EAAGlT,CAAC,IAAK;QACpB6+K,uBAAuB,CAAC3zE,KAAK,CAAC0zE,SAAS,CAAC;MAC5C;IACJ,CAAC,CAAC,CAAC;IACH,MAAM7hE,MAAM,GAAGpsG,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAExC;IACA,MAAMzwF,OAAO,GAAG8oG,MAAM,CAACj5G,gBAAgB,CAAC,aAAa,CAAC;IACtDmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAEhD;IACAiS,KAAK,CAACqD,iBAAiB,CAAC+oG,MAAM,CAAC;IAE/BpsG,KAAK,CAAC9V,QAAQ,CAACkiH,MAAM,EAAE9R,SAAS,CAAC;IAEjC,OAAO8R,MAAM;EACjB;EAEA,SAAS+9B,wBAAwBA,CAAC8jC,SAAS,EAAE;IACzCH,mBAAmB,CAACG,SAAS,CAAC;EAClC;EAEA,SAASC,uBAAuBA,CAACD,SAAS,EAAE;IACxC,MAAMn5B,YAAY,GAAGj4I,KAAK,CAAC1P,KAAK,CAAC;MAC7BkQ,KAAK,EAAE;IACX,CAAC,CAAC;IAEF03I,OAAO,GAAG7nJ,MAAM,CAACC,KAAK,CAAC;MACnBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZw/K,kBAAkB,CAACF,SAAS,EAAEn5B,YAAY,CAAC;MAC/C;IACJ,CAAC,CAAC;IAEFG,MAAM,GAAG/nJ,MAAM,CAACC,KAAK,CAAC;MAClBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACgrJ,YAAY,CAAC;MAC5B;IACJ,CAAC,CAAC;IAEF,MAAMn3I,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAE3CsQ,OAAO,CAACrM,SAAS,GAAG,2DAA2D;IAC/EqM,OAAO,CAAC/P,KAAK,CAACguC,SAAS,GAAG,QAAQ;IAClCj+B,OAAO,CAAC/P,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACnCk3F,YAAY,CAACvqJ,WAAW,CAACoT,OAAO,CAAC;IACjC,IAAIu3I,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrCqrJ,YAAY,CAAC3qJ,WAAW,CAACwqJ,OAAO,CAAC;IACjCG,YAAY,CAAC3qJ,WAAW,CAAC0qJ,MAAM,CAAC;IAChCH,YAAY,CAACvqJ,WAAW,CAAC2qJ,YAAY,CAAC;IACtCH,OAAO,CAACx5I,KAAK,CAAC,CAAC;IACfsB,KAAK,CAAC9S,IAAI,CAAC+qJ,YAAY,CAAC;EAC5B;EAEA,SAASq5B,kBAAkBA,CAACF,SAAS,EAAEn5B,YAAY,EAAE;IACjDirB,cAAc,CAACqG,iBAAiB,CAC5B;MACIZ,SAAS,EAAEyI,SAAS;MACpB5H,UAAU,EAAEtC;IAChB,CAAC,EACD,UAAU/uE,OAAO,EAAE;MACf,IAAIA,OAAO,GAAG,QAAQ,EAAE;QACpBn4F,KAAK,CAAC/S,IAAI,CAACgrJ,YAAY,CAAC;QACxBupB,aAAa,CAACC,iBAAiB,CAACyF,UAAU,EAAEnxK,IAAI,EAAE0tK,YAAY,EAAEppE,qBAAqB,EAAEuwE,WAAW,EAAE7I,gBAAgB,GAAG,CAAC,CAAC;MAC7H;IACJ,CACJ,CAAC;EACL;EAEA,SAASkP,mBAAmBA,CAACG,SAAS,EAAE;IACpC,IAAIA,SAAS,IAAI,CAAC,IAAIA,SAAS,IAAI78K,SAAS,EAAE;MAC1Cq8K,gBAAgB,GAAGD,cAAc,CAACY,uBAAuB,CAAC,CAAC,CAAC,IAAIh9K,SAAS,GAAG,CAAC,GAAGo8K,cAAc,CAACY,uBAAuB,CAAC,CAAC,CAAC,CAACC,cAAc;MACxIjJ,IAAI,GAAGoI,cAAc,CAACY,uBAAuB,CAAC,CAAC,CAAC,IAAIh9K,SAAS,GAAG,CAAC,GAAGo8K,cAAc,CAACY,uBAAuB,CAAC,CAAC,CAAC,CAACC,cAAc,GAAG,CAAC,GAAGb,cAAc,CAACY,uBAAuB,CAAC,CAAC,CAAC,CAACC,cAAc,GAAG,CAAC,GAAGb,cAAc,CAACY,uBAAuB,CAAC,CAAC,CAAC,CAACC,cAAc;MAC1PhnE,WAAW,GAAG,EAAE;MAChBrlF,SAAS,GAAGwrJ,cAAc,CAACY,uBAAuB,CAAC,CAAC,CAAC,IAAIh9K,SAAS,GAAG,EAAE,GAAGosB,IAAI,CAACoY,qBAAqB,CAAC43I,cAAc,CAACY,uBAAuB,CAAC,CAAC,CAAC,CAACpsJ,SAAS,CAAC;MACzJE,OAAO,GAAG,EAAE;MACZmjJ,kBAAkB,GAAG,EAAE;MACvBC,uBAAuB,GAAG,EAAE;MAC5BC,gBAAgB,GAAG,EAAE;MACrB+I,oBAAoB,GAAG,EAAE;IAC7B,CAAC,MACI;MACD,IAAIC,aAAa,GAAGhB,eAAe,CAACS,4BAA4B,CAAClvH,IAAI,CAACzxC,CAAC,IAAIA,CAAC,CAAC4gK,SAAS,IAAIA,SAAS,CAAC;MACpGR,gBAAgB,GAAGc,aAAa,CAACnJ,IAAI;MACrCA,IAAI,GAAGmJ,aAAa,CAACnJ,IAAI;MACzB/9D,WAAW,GAAGknE,aAAa,CAAClnE,WAAW;MACvCrlF,SAAS,GAAGkhC,MAAM,CAACqrH,aAAa,CAACvsJ,SAAS,CAAC,CAACpP,MAAM,CAAC,YAAY,CAAC;MAChEsP,OAAO,GAAGqsJ,aAAa,CAACrsJ,OAAO,IAAI,EAAE,GAAG,EAAE,GAAGghC,MAAM,CAACqrH,aAAa,CAACrsJ,OAAO,CAAC,CAACtP,MAAM,CAAC,YAAY,CAAC;MAC/FyyJ,kBAAkB,GAAGkJ,aAAa,CAACD,oBAAoB;MACvDhJ,uBAAuB,GAAGiJ,aAAa,CAACjJ,uBAAuB;MAC/DC,gBAAgB,GAAGgJ,aAAa,CAAChJ,gBAAgB;MACjD+I,oBAAoB,GAAGC,aAAa,CAACD,oBAAoB;IAC7D;IAGAE,gBAAgB,GAAG3xK,KAAK,CAAC1P,KAAK,CAAC;MAC3BgB,UAAU,EAAE,CAAC,mBAAmB,CAAC;MACjCkP,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,MAAM8D,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAACvT,KAAK,CAACw8J,SAAS,GAAG,OAAO;IACjCjpJ,OAAO,CAACvT,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACnC,IAAIqwH,SAAS,EAAE;MACX9sK,OAAO,CAAC7P,SAAS,GAAG,sBAAsB;MAC1Ck0K,SAAS,GAAGyI,SAAS;IACzB,CAAC,MACI;MACD9sK,OAAO,CAAC7P,SAAS,GAAG,mBAAmB;MACvCk0K,SAAS,GAAG,CAAC;IACjB;;IAEA;IACAiJ,SAAS,GAAG99K,KAAK,CAACxD,KAAK,CAAC;MACpBG,EAAE,EAAE,WAAW;MACfO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,aAAa;MACpBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE02K;IACX,CAAC,CAAC;IAEFsJ,gBAAgB,GAAG/9K,KAAK,CAACxD,KAAK,CAAC;MAC3BG,EAAE,EAAE,kBAAkB;MACtBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,aAAa;MACpBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE24G;IACX,CAAC,CAAC;IAEF87D,YAAY,GAAGxyK,KAAK,CAACxD,KAAK,CAAC;MACvBG,EAAE,EAAE,cAAc;MAClBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEszB;IACX,CAAC,CAAC;IAEFohJ,UAAU,GAAGzyK,KAAK,CAACxD,KAAK,CAAC;MACrBG,EAAE,EAAE,YAAY;MAChBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEwzB;IACX,CAAC,CAAC;IAEFysJ,0BAA0B,GAAG7/K,QAAQ,CAAC3B,KAAK,CAAC;MACxCG,EAAE,EAAE,4BAA4B;MAChC2B,KAAK,EAAE,qBAAqB;MAC5BF,UAAU,EAAE,4BAA4B;MACxCL,KAAK,EAAG4/K,oBAAoB,GAAIA,oBAAoB,GAAG;IAC3D,CAAC,CAAC;IAEFM,4BAA4B,GAAGj+K,KAAK,CAACxD,KAAK,CAAC;MACvCG,EAAE,EAAE,8BAA8B;MAClCO,IAAI,EAAE,UAAU;MAChBoB,KAAK,EAAE,2BAA2B;MAClCrB,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAE42K;IACX,CAAC,CAAC;IAEFuJ,qBAAqB,GAAGl+K,KAAK,CAACxD,KAAK,CAAC;MAChCG,EAAE,EAAE,uBAAuB;MAC3BO,IAAI,EAAE,UAAU;MAChBoB,KAAK,EAAE,mBAAmB;MAC1BrB,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAE62K;IACX,CAAC,CAAC;IAGFzoE,SAAS,GAAG5vG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEFkvG,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEF2gL,gBAAgB,CAACjkL,WAAW,CAAC4W,OAAO,CAAC;IAErCqtK,gBAAgB,CAACjkL,WAAW,CAACkkL,SAAS,CAAC;IACvCD,gBAAgB,CAACjkL,WAAW,CAACmkL,gBAAgB,CAAC;IAC9CF,gBAAgB,CAACjkL,WAAW,CAAC44K,YAAY,CAAC;IAC1CqL,gBAAgB,CAACjkL,WAAW,CAAC64K,UAAU,CAAC;IACxCoL,gBAAgB,CAACjkL,WAAW,CAACokL,0BAA0B,CAAC;IACxDH,gBAAgB,CAACjkL,WAAW,CAACqkL,4BAA4B,CAAC;IAC1DJ,gBAAgB,CAACjkL,WAAW,CAACskL,qBAAqB,CAAC;IACnDJ,SAAS,CAAC9kL,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAEnC,IAAIqrJ,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrC,IAAIqR,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;MAC5B4lG,YAAY,CAAC3qJ,WAAW,CAACuyG,SAAS,CAAC;IACvC;IACAo4C,YAAY,CAAC3qJ,WAAW,CAACwyG,UAAU,CAAC;IACpCyxE,gBAAgB,CAACjkL,WAAW,CAAC2qJ,YAAY,CAAC;IAE1Cr4I,KAAK,CAAC9S,IAAI,CAACykL,gBAAgB,CAAC;IAC5BrD,mBAAmB,CAAC,CAAC;IACrB7B,iBAAiB,CAAC,CAAC;IACnBwF,0BAA0B,CAAC,CAAC;EAChC;EAEA,SAAS3D,mBAAmBA,CAAA,EAAG;IAC3BsD,SAAS,CAACxhL,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzC26K,IAAI,GAAG36K,KAAK,CAACC,MAAM,CAACgE,KAAK;IAC7B,CAAC,CAAC;IAEFggL,gBAAgB,CAACzhL,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAChD48G,WAAW,GAAG58G,KAAK,CAACC,MAAM,CAACgE,KAAK;IACpC,CAAC,CAAC;IACFy0K,YAAY,CAACl2K,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5Cu3B,SAAS,GAAGv3B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9BogL,0BAA0B,CAAC,CAAC;IAChC,CAAC,CAAC;IACF1L,UAAU,CAACn2K,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1Cy3B,OAAO,GAAGz3B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC5BogL,0BAA0B,CAAC,CAAC;IAChC,CAAC,CAAC;IACFH,0BAA0B,CAAC1hL,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC3D6jL,oBAAoB,GAAG7jL,KAAK,CAACC,MAAM,CAACgE,KAAK;IAC7C,CAAC,CAAC;IAEFkgL,4BAA4B,CAAC3hL,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5D66K,uBAAuB,GAAG76K,KAAK,CAACC,MAAM,CAACgE,KAAK;IAChD,CAAC,CAAC;IAEFmgL,qBAAqB,CAAC5hL,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACrD86K,gBAAgB,GAAG96K,KAAK,CAACC,MAAM,CAACgE,KAAK;IACzC,CAAC,CAAC;IAEFouG,SAAS,CAAC7vG,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACtC6vG,SAAS,CAACnzG,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACnCklL,oBAAoB,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEFhyE,UAAU,CAAC9vG,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACvC4P,KAAK,CAAC/S,IAAI,CAAC0kL,gBAAgB,CAAC;IAChC,CAAC,CAAC;EACN;EAEA,SAASM,0BAA0BA,CAAA,EAAG;IAClC,IAAI9sJ,SAAS,GAAGmhJ,YAAY,CAACp2K,aAAa,CAAC,eAAe,CAAC;IAC3D,IAAIm1B,OAAO,GAAGkhJ,UAAU,CAACr2K,aAAa,CAAC,aAAa,CAAC;IAErD,IAAIi1B,SAAS,CAACtzB,KAAK,KAAK,EAAE,IAAKwzB,OAAO,CAACxzB,KAAK,IAAI,EAAE,IAAIszB,SAAS,CAACtzB,KAAK,GAAGwzB,OAAO,CAACxzB,KAAM,EAAE;MACpFy0K,YAAY,CAACx5K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC5C,CAAC,MAAM;MACHs5K,YAAY,CAACx5K,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC/C;IAEAolL,mBAAmB,CAAC,CAAC;EACzB;EAEA,SAASA,mBAAmBA,CAAA,EAAG;IAC3B,IAAI3vE,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACvE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxB0yG,SAAS,CAACnzG,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACnC;IACJ,CAAC,MAAM;MACHizG,SAAS,CAACnzG,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC1C;EACJ;EAEA,eAAe0/K,iBAAiBA,CAAA,EAAG;IAC/B,MAAM;MACF2F,mCAAmC,EAAEC;IACzC,CAAC,GAAG,MAAMnP,cAAc,CAACmF,kCAAkC,CAAC,CAAC;IAC7D,IAAIiK,sBAAsB,GAAGD,kBAAkB,CAACr7K,GAAG,CAAEwxK,kBAAkB,KAAM;MACzE/3K,EAAE,EAAE+3K,kBAAkB,CAAC+J,oBAAoB;MAC3C1gL,KAAK,EAAE22K,kBAAkB,CAAC+J,oBAAoB;MAC9C3hL,IAAI,EAAE43K,kBAAkB,CAACgK;IAC7B,CAAC,CAAC,CAAC;IACHF,sBAAsB,CAAC1hH,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IACjEqB,QAAQ,CAAC5E,QAAQ,CAAC,4BAA4B,EAAEilL,sBAAsB,EAAE9J,kBAAkB,CAAC;EAC/F;EAEA,eAAe0J,oBAAoBA,CAAA,EAAG;IAClC,MAAMvuJ,MAAM,GAAG,MAAMu/I,cAAc,CAACoF,uBAAuB,CAACsI,gBAAgB,EAAEpmE,WAAW,EAAErlF,SAAS,EAAEE,OAAO,EAAEosJ,oBAAoB,EAAEhJ,uBAAuB,EAAEC,gBAAgB,EAAExB,UAAU,EAAEyB,SAAS,EAAEtqK,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC;IACxN,MAAM;MAAEi1I;IAAyB,CAAC,GAAG9uJ,MAAM;IAE3C,IAAI8uJ,wBAAwB,CAACrB,SAAS,IAAI,IAAI,EAAE;MAC5C5P,aAAa,CAACC,iBAAiB,CAACyF,UAAU,EAAEnxK,IAAI,EAAE0tK,YAAY,EAAEppE,qBAAqB,EAAEuwE,WAAW,EAAE7I,gBAAgB,GAAG,CAAC,CAAC;IAC7H;IACA/hK,KAAK,CAAC/S,IAAI,CAAC0kL,gBAAgB,CAAC;EAChC;EAEA,OAAO;IACHxhL,IAAI;IACJ2gL,oBAAoB;IACpB1jE;EACJ,CAAC;AACL,CAAC,EAAE,CAAC;ACjZJ,MAAMijE,aAAa,GAAG,CAAC,MAAM;EACzB,IAAIqC,iBAAiB,GAAG,EAAE;EAC1B,IAAIxL,UAAU;EACd,IAAIjE,kBAAkB;EACtB,IAAI8E,OAAO;EACX,IAAI4K,eAAe;EACnB,IAAIC,eAAe;EACnB,IAAIC,aAAa;EACjB,IAAIC,WAAW;EACf,IAAIC,WAAW;EACf,IAAIC,QAAQ;EACZ,IAAIC,UAAU;EACd,IAAIC,eAAe,GAAG,KAAK;EAC3B,IAAItI,WAAW;EACf,IAAI70K,IAAI;EACR,IAAI0tK,YAAY;EAChB,IAAIppE,qBAAqB;EACzB,IAAI84E,gBAAgB;;EAEpB;EACA,IAAIC,sBAAsB;EAC1B,IAAIC,kBAAkB;EACtB,IAAIC,mBAAmB;EACvB,IAAIC,gBAAgB;EACpB,IAAIC,iBAAiB;EACrB,IAAIC,WAAW;EACf,IAAI33B,UAAU;EAEd,eAAe3rJ,IAAIA,CAACuxK,UAAU,EAAEp7H,IAAI,EAAE2kI,YAAY,EAAEC,qBAAqB,EAAE35B,WAAW,EAAE;IACpF21B,UAAU,GAAGxF,UAAU;IACvBkJ,WAAW,GAAGr5B,WAAW;IACzBx7I,IAAI,GAAGuwC,IAAI;IACXm9H,YAAY,GAAGwH,YAAY;IAC3B5wE,qBAAqB,GAAG6wE,qBAAqB;IAC7C,IAAIhE,UAAU,IAAI3yK,SAAS,EAAE;MACzB0uK,kBAAkB,GAAG,MAAMC,cAAc,CAACwE,oBAAoB,CAACR,UAAU,CAAC;MAC1EyL,eAAe,GAAG,MAAMzP,cAAc,CAACyE,4BAA4B,CAACT,UAAU,CAAC;IACnF;EACJ;EAGA,SAAS95D,SAASA,CAAA,EAAG;IACjB,MAAMsmE,aAAa,GAAGzjL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDkjL,aAAa,CAAC5mL,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IAE1C,IAAIk6K,UAAU,IAAI3yK,SAAS,EAAE;MACzB,MAAMs6G,eAAe,GAAG8kE,yBAAyB,CAAC,CAAC;MACnDD,aAAa,CAAChmL,WAAW,CAACmhH,eAAe,CAAC;IAC9C,CAAC,MACI;MACD,MAAMvqG,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;MAC5C8T,OAAO,CAAClX,SAAS,GAAG,kBAAkB;MACtCkX,OAAO,CAACxX,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MACvC0mL,aAAa,CAAChmL,WAAW,CAAC4W,OAAO,CAAC;IACtC;IACA,OAAOovK,aAAa;EACxB;EAEA,SAASC,yBAAyBA,CAAA,EAAG;IACjC,MAAMC,QAAQ,GAAG3jL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9CojL,QAAQ,CAAC9mL,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAChD6mL,cAAc,GAAG,EAAE;IAEnBjB,eAAe,GAAGD,eAAe,CAACmB,6BAA6B,CAAC,CAAC,CAAC,CAACC,YAAY;IAC/ElB,aAAa,GAAGF,eAAe,CAACmB,6BAA6B,CAAC,CAAC,CAAC,CAACE,UAAU;IAC3ElB,WAAW,GAAGH,eAAe,CAACmB,6BAA6B,CAAC,CAAC,CAAC,CAACG,OAAO;IACtElB,WAAW,GAAGJ,eAAe,CAACmB,6BAA6B,CAAC,CAAC,CAAC,CAACI,WAAW;IAC1ElB,QAAQ,GAAGL,eAAe,CAACmB,6BAA6B,CAAC,CAAC,CAAC,CAACr2B,KAAK;IACjEw1B,UAAU,GAAGN,eAAe,CAACmB,6BAA6B,CAAC,CAAC,CAAC,CAACK,SAAS;IACvEhB,gBAAgB,GAAGR,eAAe,CAACmB,6BAA6B,CAAC,CAAC,CAAC,CAACX,gBAAgB;IAEpFC,sBAAsB,GAAGt/K,KAAK,CAACyB,aAAa,CAAC;MACzC3E,IAAI,EAAE,uBAAuB;MAC7BH,EAAE,EAAE,qBAAqB;MACzBgF,SAAS,EAAE09K,gBAAgB,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK;MACjDpiL,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAElE,KAAK,IAAI;QACfwmL,gBAAgB,CAAC,oBAAoB,EAAExmL,KAAK,CAACC,MAAM,CAACiI,OAAO,EAAE,IAAI,CAAC;QAClEq9K,gBAAgB,GAAGvlL,KAAK,CAACC,MAAM,CAACiI,OAAO,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG;QAC3D,IAAIlI,KAAK,CAACC,MAAM,CAACiI,OAAO,IAAI,KAAK,EAAE;UAC/Bu+K,kBAAkB,CAAC,CAAC;QACxB;QACAC,eAAe,CAAC,CAAC;MACrB;IACJ,CAAC,CAAC;IAEFjB,kBAAkB,GAAGv/K,KAAK,CAACyB,aAAa,CAAC;MACrC3E,IAAI,EAAE,eAAe;MACrBH,EAAE,EAAE,iBAAiB;MACrBgF,SAAS,EAAEm9K,eAAe,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK;MAChD7hL,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMsiL,gBAAgB,CAAC,cAAc,EAAExmL,KAAK,CAACC,MAAM,CAACiI,OAAO,EAAE,IAAI;IAC/E,CAAC,CAAC;IAEFw9K,mBAAmB,GAAGx/K,KAAK,CAACyB,aAAa,CAAC;MACtC3E,IAAI,EAAE,uBAAuB;MAC7BH,EAAE,EAAE,kBAAkB;MACtBgF,SAAS,EAAEq9K,WAAW,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK;MAC5C/hL,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMsiL,gBAAgB,CAAC,SAAS,EAAExmL,KAAK,CAACC,MAAM,CAACiI,OAAO,EAAE,IAAI;IAC1E,CAAC,CAAC;IAEFy9K,gBAAgB,GAAGz/K,KAAK,CAACyB,aAAa,CAAC;MACnC3E,IAAI,EAAE,YAAY;MAClBH,EAAE,EAAE,eAAe;MACnBgF,SAAS,EAAEo9K,aAAa,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK;MAC9C9hL,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMsiL,gBAAgB,CAAC,YAAY,EAAExmL,KAAK,CAACC,MAAM,CAACiI,OAAO,EAAE,IAAI;IAC7E,CAAC,CAAC;IAEF09K,iBAAiB,GAAG1/K,KAAK,CAACyB,aAAa,CAAC;MACpC3E,IAAI,EAAE,mBAAmB;MACzBH,EAAE,EAAE,gBAAgB;MACpBgF,SAAS,EAAEs9K,WAAW,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK;MAC5ChiL,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMsiL,gBAAgB,CAAC,aAAa,EAAExmL,KAAK,CAACC,MAAM,CAACiI,OAAO,EAAE,IAAI;IAC9E,CAAC,CAAC;IAEF29K,WAAW,GAAG3/K,KAAK,CAACyB,aAAa,CAAC;MAC9B3E,IAAI,EAAE,OAAO;MACbH,EAAE,EAAE,UAAU;MACdgF,SAAS,EAAEu9K,QAAQ,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK;MACzCjiL,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMyiL,YAAY,CAAC3mL,KAAK,CAACC,MAAM,CAACiI,OAAO;IACrD,CAAC,CAAC;IAEFgmJ,UAAU,GAAGhoJ,KAAK,CAACxD,KAAK,CAAC;MACrBU,IAAI,EAAE,MAAM;MACZP,EAAE,EAAE,YAAY;MAChBM,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEohL;IACX,CAAC,CAAC;IAEFuB,aAAa,GAAGnkL,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,aAAa;MACnBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM2iL,gBAAgB,CAAC;IACrC,CAAC,CAAC;IACF/B,iBAAiB,GAAGgC,sBAAsB,CAAC,CAAC;IAE5C,MAAMxlE,OAAO,GAAGj/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0+G,OAAO,CAACpiH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9B,MAAMmiH,UAAU,GAAGl/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD2+G,UAAU,CAACriH,SAAS,CAACE,GAAG,CAAC,MAAM,CAAC;IAChC,MAAMoiH,cAAc,GAAGn/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD4+G,cAAc,CAACtiH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1CmiH,UAAU,CAAC/hH,SAAS,GAAG,kDAAkD;IACzE+hH,UAAU,CAACzhH,WAAW,CAAC0hH,cAAc,CAAC;IACtCF,OAAO,CAACxhH,WAAW,CAACyhH,UAAU,CAAC;IAE/B,IAAI9wG,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;MAC5B28D,cAAc,CAAC1hH,WAAW,CAAC8mL,aAAa,CAAC;IAC7C;IAEAplE,cAAc,CAAC1hH,WAAW,CAACglL,iBAAiB,CAAC;IAE7C,MAAMr/D,mBAAmB,GAAGpjH,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACvD6iH,mBAAmB,CAACvmH,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC7CqmH,mBAAmB,CAACjmH,SAAS,GAAG,OAAO,UAAU,OAAO;IACxDimH,mBAAmB,CAACtiH,KAAK,CAACw8J,SAAS,GAAG,MAAM;IAC5Cn+C,cAAc,CAAC1hH,WAAW,CAAC2lH,mBAAmB,CAAC;IAE/C,IAAIshE,OAAO,GAAG1kL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CmkL,OAAO,CAAC5jL,KAAK,CAACw8J,SAAS,GAAG,MAAM;IAChConB,OAAO,CAACjnL,WAAW,CAAC0lL,sBAAsB,CAAC;IAC3ChkE,cAAc,CAAC1hH,WAAW,CAACinL,OAAO,CAAC;IAEnC,IAAI3gE,MAAM,GAAG/jH,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1CwjH,MAAM,CAACjjH,KAAK,CAACw8J,SAAS,GAAG,MAAM;IAC/Bv5C,MAAM,CAACtmH,WAAW,CAAC2lL,kBAAkB,CAAC;IACtCjkE,cAAc,CAAC1hH,WAAW,CAACsmH,MAAM,CAAC;IAGlC,IAAIC,OAAO,GAAGhkH,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CyjH,OAAO,CAACvmH,WAAW,CAAC4lL,mBAAmB,CAAC;IACxClkE,cAAc,CAAC1hH,WAAW,CAACumH,OAAO,CAAC;IAEnC,IAAIC,OAAO,GAAGjkH,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C0jH,OAAO,CAACxmH,WAAW,CAAC6lL,gBAAgB,CAAC;IACrCnkE,cAAc,CAAC1hH,WAAW,CAACwmH,OAAO,CAAC;IAEnC,IAAIC,OAAO,GAAGlkH,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C2jH,OAAO,CAACzmH,WAAW,CAAC8lL,iBAAiB,CAAC;IACtCpkE,cAAc,CAAC1hH,WAAW,CAACymH,OAAO,CAAC;IAEnC,IAAI33E,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAC1CwvC,OAAO,CAAC9uC,WAAW,CAAC+lL,WAAW,CAAC;IAChC33B,UAAU,CAAC/qJ,KAAK,CAACiS,KAAK,GAAG,KAAK;IAC9B84I,UAAU,CAAC/qJ,KAAK,CAACiyI,UAAU,GAAG,IAAI;IAClCxmG,OAAO,CAAC9uC,WAAW,CAACouJ,UAAU,CAAC;IAC/B1sC,cAAc,CAAC1hH,WAAW,CAAC8uC,OAAO,CAAC;IAEnCo3I,QAAQ,CAAClmL,WAAW,CAACwhH,OAAO,CAAC;IAC7BrwE,cAAc,CAAC,CAAC;IAChBy1I,eAAe,CAAC,CAAC;IACjB,OAAOV,QAAQ;EAEnB;EAEA,SAAS/0I,cAAcA,CAAA,EAAG;IACtBi9G,UAAU,CAAC1rJ,gBAAgB,CAAC,UAAU,EAAExC,KAAK,IAAI;MAC7C,IAAI,CAACkuJ,UAAU,CAAChvJ,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC5Ci5K,cAAc,GAAGjmL,KAAK,CAACC,MAAM,CAACgE,KAAK;QACnCuiL,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAEP,cAAc,CAAC;MACnD;IACJ,CAAC,CAAC;EACN;EAEA,SAASS,eAAeA,CAAA,EAAG;IACvB,IAAIj2K,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,IAAI0gI,gBAAgB,IAAI,GAAG,EAAE;MACvDE,kBAAkB,CAACvmL,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC/CumL,mBAAmB,CAACxmL,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAChDwmL,gBAAgB,CAACzmL,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC7CymL,iBAAiB,CAAC1mL,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC9C0mL,WAAW,CAAC3mL,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACxC,IAAIimL,QAAQ,IAAI,GAAG,EAAE;QACjBl3B,UAAU,CAAChvJ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC3C,CAAC,MAAM;QACH+uJ,UAAU,CAAChvJ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACxC;IACJ,CAAC,MACI;MACDqmL,kBAAkB,CAACvmL,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC5CsmL,mBAAmB,CAACxmL,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC7CumL,gBAAgB,CAACzmL,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC1CwmL,iBAAiB,CAAC1mL,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3CymL,WAAW,CAAC3mL,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC8uJ,UAAU,CAAChvJ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACxC;EACJ;EAEA,SAAS0nL,sBAAsBA,CAAA,EAAG;IAE9B,MAAMx9E,YAAY,GAAG;MACjBjzF,KAAK,EAAE,KAAK;MACZZ,OAAO,EAAE,uBAAuB;MAChCgB,cAAc,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,YAAY,EAAE,UAAU,CAAC;MACtFM,OAAO,EAAEtG,CAAC,CAACC,OAAO,CAACo0C,gBAAgB,IAAI,IAAI,GAAG,IAAI,GAAG;IACzD,CAAC;IAED,IAAI+qD,SAAS,GAAGwlE,kBAAkB,CAAC2R,qBAAqB,CAAC59K,GAAG,CAAE0mG,KAAK,KAAM;MACrEn4F,MAAM,EAAE,CAACm4F,KAAK,CAACm3E,YAAY,EAAE,GAAG,GAAG9tK,UAAU,CAAC22F,KAAK,CAACo3E,YAAY,CAAC,CAAC58I,OAAO,CAAC,CAAC,CAAC,EAAEmuB,MAAM,CAACq3C,KAAK,CAACv4E,SAAS,CAAC,CAACpP,MAAM,CAAC,YAAY,CAAC,EAAE2nF,KAAK,CAACr4E,OAAO,IAAI,EAAE,GAAG,EAAE,GAAGghC,MAAM,CAACq3C,KAAK,CAACr4E,OAAO,CAAC,CAACtP,MAAM,CAAC,YAAY,CAAC,CAAC;MAClMrkB,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,SAAS;QAAEC,KAAK,EAAE6rG,KAAK,CAACq3E;MAAQ,CAAC,CAAC;MACtD3vK,OAAO,EAAG5S,CAAC,IAAK;QACZ,IAAI6L,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;UAC5B66F,wBAAwB,CAAC96I,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAACqjL,OAAO,CAACljL,KAAK,CAAC;QAC/D;MACJ,CAAC;MACD8S,OAAO,EAAEtG,CAAC,CAACC,OAAO,CAACo0C,gBAAgB,IAAI,IAAI,GAAG,GAAG7hD,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE;MACvE6U,eAAe,EAAGlT,CAAC,IAAK;QACpBwiL,wBAAwB,CAACt3E,KAAK,CAACq3E,OAAO,CAAC;MAC3C;IACJ,CAAC,CAAC,CAAC;IACH,MAAMxlE,MAAM,GAAGpsG,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAExC;IACA,MAAMzwF,OAAO,GAAG8oG,MAAM,CAACj5G,gBAAgB,CAAC,aAAa,CAAC;IACtDmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;;IAE9C;IACAiS,KAAK,CAACqD,iBAAiB,CAAC+oG,MAAM,CAAC;IAE/BpsG,KAAK,CAAC9V,QAAQ,CAACkiH,MAAM,EAAE9R,SAAS,CAAC;IAEjC,OAAO8R,MAAM;EACjB;EAEA,SAAS+9B,wBAAwBA,CAACynC,OAAO,EAAE;IACvCN,gBAAgB,CAACM,OAAO,CAAC;EAC7B;EAEA,SAASC,wBAAwBA,CAACD,OAAO,EAAE;IACvC,MAAM98B,YAAY,GAAGj4I,KAAK,CAAC1P,KAAK,CAAC;MAC7BkQ,KAAK,EAAE;IACX,CAAC,CAAC;IAEF03I,OAAO,GAAG7nJ,MAAM,CAACC,KAAK,CAAC;MACnBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZq3K,mBAAmB,CAAC4L,OAAO,EAAE98B,YAAY,CAAC;MAC9C;IACJ,CAAC,CAAC;IAEFG,MAAM,GAAG/nJ,MAAM,CAACC,KAAK,CAAC;MAClBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACgrJ,YAAY,CAAC;MAC5B;IACJ,CAAC,CAAC;IAEF,MAAMn3I,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAE3CsQ,OAAO,CAACrM,SAAS,GAAG,mEAAmE;IACvFqM,OAAO,CAAC/P,KAAK,CAACguC,SAAS,GAAG,QAAQ;IAClCj+B,OAAO,CAAC/P,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACnCk3F,YAAY,CAACvqJ,WAAW,CAACoT,OAAO,CAAC;IACjC,IAAIu3I,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrCqrJ,YAAY,CAAC3qJ,WAAW,CAACwqJ,OAAO,CAAC;IACjCG,YAAY,CAAC3qJ,WAAW,CAAC0qJ,MAAM,CAAC;IAChCH,YAAY,CAACvqJ,WAAW,CAAC2qJ,YAAY,CAAC;IACtCH,OAAO,CAACx5I,KAAK,CAAC,CAAC;IACfsB,KAAK,CAAC9S,IAAI,CAAC+qJ,YAAY,CAAC;EAC5B;EAEA,SAASkxB,mBAAmBA,CAAC4L,OAAO,EAAE98B,YAAY,EAAE;IAChDirB,cAAc,CAACiG,mBAAmB,CAC9B;MACIpB,OAAO,EAAEgN;IACb,CAAC,EACD,UAAU58E,OAAO,EAAE;MACf,IAAIA,OAAO,GAAG,QAAQ,EAAE;QACpBn4F,KAAK,CAAC/S,IAAI,CAACgrJ,YAAY,CAAC;QACxBupB,aAAa,CAACC,iBAAiB,CAACyF,UAAU,EAAEnxK,IAAI,EAAE0tK,YAAY,EAAEppE,qBAAqB,EAAEuwE,WAAW,EAAE7I,gBAAgB,GAAG,CAAC,CAAC;MAC7H;IACJ,CACJ,CAAC;EACL;EAEA,SAAS0S,gBAAgBA,CAACM,OAAO,EAAE;IAC/B,IAAIA,OAAO,IAAI,CAAC,IAAIA,OAAO,IAAIxgL,SAAS,EAAE;MACtCszK,SAAS,GAAG,EAAE;MACdC,UAAU,GAAG,EAAE;MACf3iJ,SAAS,GAAG,EAAE;MACdE,OAAO,GAAG,EAAE;IAChB,CAAC,MACI;MACD,IAAI4vJ,QAAQ,GAAGhS,kBAAkB,CAAC2R,qBAAqB,CAAC3yH,IAAI,CAACzxC,CAAC,IAAIA,CAAC,CAACukK,OAAO,IAAIA,OAAO,CAAC;MACvFlN,SAAS,GAAGoN,QAAQ,CAACJ,YAAY;MACjC/M,UAAU,GAAG/gK,UAAU,CAACkuK,QAAQ,CAACH,YAAY,CAAC,CAAC58I,OAAO,CAAC,CAAC,CAAC;MACzD/S,SAAS,GAAGkhC,MAAM,CAAC4uH,QAAQ,CAAC9vJ,SAAS,CAAC,CAACpP,MAAM,CAAC,YAAY,CAAC;MAC3DsP,OAAO,GAAG4vJ,QAAQ,CAAC5vJ,OAAO,IAAI,EAAE,GAAG,EAAE,GAAGghC,MAAM,CAAC4uH,QAAQ,CAAC5vJ,OAAO,CAAC,CAACtP,MAAM,CAAC,YAAY,CAAC;IACzF;IAGAm/J,aAAa,GAAGl1K,KAAK,CAAC1P,KAAK,CAAC;MACxBgB,UAAU,EAAE,CAAC,mBAAmB,CAAC;MACjCkP,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,MAAM8D,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAACvT,KAAK,CAACw8J,SAAS,GAAG,OAAO;IACjCjpJ,OAAO,CAACvT,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACnC,IAAIg0H,OAAO,EAAE;MACTzwK,OAAO,CAAC7P,SAAS,GAAG,mBAAmB;MACvCszK,OAAO,GAAGgN,OAAO;IACrB,CAAC,MACI;MACDzwK,OAAO,CAAC7P,SAAS,GAAG,gBAAgB;MACpCszK,OAAO,GAAG,CAAC;IACf;;IAGA;IACAoN,SAAS,GAAGrhL,KAAK,CAACxD,KAAK,CAAC;MACpBG,EAAE,EAAE,WAAW;MACfO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,gBAAgB;MACvBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEg2K;IACX,CAAC,CAAC;IAEFuN,UAAU,GAAGthL,KAAK,CAACxD,KAAK,CAAC;MACrBG,EAAE,EAAE,YAAY;MAChBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,gBAAgB;MACvBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE,GAAG,GAAGi2K;IACjB,CAAC,CAAC;IAEFxB,YAAY,GAAGxyK,KAAK,CAACxD,KAAK,CAAC;MACvBG,EAAE,EAAE,cAAc;MAClBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEszB;IACX,CAAC,CAAC;IAEFohJ,UAAU,GAAGzyK,KAAK,CAACxD,KAAK,CAAC;MACrBG,EAAE,EAAE,YAAY;MAChBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEwzB;IACX,CAAC,CAAC;IAEF46E,SAAS,GAAG5vG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEFkvG,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEFkkL,aAAa,CAACxnL,WAAW,CAAC4W,OAAO,CAAC;IAElC4wK,aAAa,CAACxnL,WAAW,CAACynL,SAAS,CAAC;IACpCD,aAAa,CAACxnL,WAAW,CAAC0nL,UAAU,CAAC;IACrCF,aAAa,CAACxnL,WAAW,CAAC44K,YAAY,CAAC;IACvC4O,aAAa,CAACxnL,WAAW,CAAC64K,UAAU,CAAC;IAGrC,IAAI7uE,cAAc,GAAGznG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDknG,cAAc,CAACtqG,SAAS,GAAG,uEAAuE;IAClG8nL,aAAa,CAACxnL,WAAW,CAACgqG,cAAc,CAAC;IAEzC,IAAI2gD,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrC,IAAIqR,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;MAC5B4lG,YAAY,CAAC3qJ,WAAW,CAACuyG,SAAS,CAAC;IACvC;IACAo4C,YAAY,CAAC3qJ,WAAW,CAACwyG,UAAU,CAAC;IACpCg1E,aAAa,CAACxnL,WAAW,CAAC2qJ,YAAY,CAAC;IAEvCr4I,KAAK,CAAC9S,IAAI,CAACgoL,aAAa,CAAC;IACzB5G,mBAAmB,CAAC,CAAC;IACrB2D,0BAA0B,CAAC,CAAC;EAChC;EAEA,SAAS3D,mBAAmBA,CAAA,EAAG;IAC3B6G,SAAS,CAAC/kL,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzCi6K,SAAS,GAAGj6K,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9B,IAAI4vG,GAAG,GAAG,IAAI7oD,MAAM,CAAC,gBAAgB,CAAC;MACtC,IAAI,CAAC6oD,GAAG,CAAChuF,IAAI,CAACo0J,SAAS,CAAC,EAAE;QACtB53K,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAACrB,KAAK,GAAG,EAAE;MACnD,CAAC,MACI,IAAIg2K,SAAS,CAACnmE,QAAQ,CAAC,GAAG,CAAC,KAAKmmE,SAAS,CAAC9yJ,KAAK,CAAC,KAAK,CAAC,CAACxnB,MAAM,GAAG,CAAC,IAAIs6K,SAAS,CAAC12J,QAAQ,CAAC,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC7jB,MAAM,GAAG,CAAC,CAAC,EAAE;QACtH0C,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAACrB,KAAK,GAAG,EAAE;MACnD;MACA,IAAIg2K,SAAS,CAACnmE,QAAQ,CAAC,GAAG,CAAC,IAAImmE,SAAS,CAACnmE,QAAQ,CAAC,GAAG,CAAC,EAAE;QACpDzxG,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAACrB,KAAK,GAAG,EAAE;MACnD;MACAogL,0BAA0B,CAAC,CAAC;IAChC,CAAC,CAAC;IAEFmD,UAAU,CAAChlL,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1Ck6K,UAAU,GAAGl6K,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC/B,IAAI4vG,GAAG,GAAG,IAAI7oD,MAAM,CAAC,gBAAgB,CAAC;MACtC,IAAI,CAAC6oD,GAAG,CAAChuF,IAAI,CAACq0J,UAAU,CAAC,EAAE;QACvB73K,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,CAACrB,KAAK,GAAG,GAAG;MACrD,CAAC,MACI,IAAIi2K,UAAU,CAACpmE,QAAQ,CAAC,GAAG,CAAC,KAAKomE,UAAU,CAAC/yJ,KAAK,CAAC,KAAK,CAAC,CAACxnB,MAAM,GAAG,CAAC,IAAIu6K,UAAU,CAAC32J,QAAQ,CAAC,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC7jB,MAAM,GAAG,CAAC,CAAC,EAAE;QACzH0C,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,CAACrB,KAAK,GAAG,GAAG;MACrD;MACA,IAAIi2K,UAAU,CAACpmE,QAAQ,CAAC,GAAG,CAAC,IAAIomE,UAAU,CAACpmE,QAAQ,CAAC,GAAG,CAAC,EAAE;QACtDzxG,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,CAACrB,KAAK,GAAG,GAAG;MACrD;MACA,IAAIi2K,UAAU,CAACpmE,QAAQ,CAAC,GAAG,CAAC,IAAIomE,UAAU,CAAC/yJ,KAAK,CAAC,KAAK,CAAC,CAACxnB,MAAM,GAAG,CAAC,EAAE;QAChE0C,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,CAACrB,KAAK,GAAG,GAAG;MACrD;MACAogL,0BAA0B,CAAC,CAAC;IAChC,CAAC,CAAC;IACF3L,YAAY,CAACl2K,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5Cu3B,SAAS,GAAGv3B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9BogL,0BAA0B,CAAC,CAAC;IAChC,CAAC,CAAC;IACF1L,UAAU,CAACn2K,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1Cy3B,OAAO,GAAGz3B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC5BogL,0BAA0B,CAAC,CAAC;IAChC,CAAC,CAAC;IAEFhyE,SAAS,CAAC7vG,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACtC,IAAI,CAAC6vG,SAAS,CAACnzG,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC3Cy6K,iBAAiB,CAAC,CAAC;MACvB;IACJ,CAAC,CAAC;IAEFn1E,UAAU,CAAC9vG,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACvC4P,KAAK,CAAC/S,IAAI,CAACioL,aAAa,CAAC;IAC7B,CAAC,CAAC;EACN;EAEA,SAASjD,0BAA0BA,CAAA,EAAG;IAClC,IAAIqD,WAAW,GAAGH,SAAS,CAACjlL,aAAa,CAAC,YAAY,CAAC;IACvD,IAAI4kL,YAAY,GAAGM,UAAU,CAACllL,aAAa,CAAC,aAAa,CAAC;IAC1D,IAAIi1B,SAAS,GAAGmhJ,YAAY,CAACp2K,aAAa,CAAC,eAAe,CAAC;IAC3D,IAAIm1B,OAAO,GAAGkhJ,UAAU,CAACr2K,aAAa,CAAC,aAAa,CAAC;IACrD,IAAIuxG,GAAG,GAAG,IAAI7oD,MAAM,CAAC,gBAAgB,CAAC;IAEtC,IAAI08H,WAAW,CAACzjL,KAAK,KAAK,EAAE,IAAIyjL,WAAW,CAACzjL,KAAK,CAAC6vG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACD,GAAG,CAAChuF,IAAI,CAAC6hK,WAAW,CAACzjL,KAAK,CAAC,EAAE;MAC7FsjL,SAAS,CAACroL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACzC,CAAC,MAAM;MACHmoL,SAAS,CAACroL,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC5C;IAEA,IAAI+nL,YAAY,CAACjjL,KAAK,KAAK,EAAE,IAAIijL,YAAY,CAACjjL,KAAK,KAAK,GAAG,IAAIijL,YAAY,CAACjjL,KAAK,CAAC6vG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACD,GAAG,CAAChuF,IAAI,CAACqhK,YAAY,CAACjjL,KAAK,CAAC,EAAE;MAC9HujL,UAAU,CAACtoL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1C,CAAC,MAAM;MACHooL,UAAU,CAACtoL,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC7C;IAEA,IAAIo4B,SAAS,CAACtzB,KAAK,KAAK,EAAE,IAAKwzB,OAAO,CAACxzB,KAAK,IAAI,EAAE,IAAIszB,SAAS,CAACtzB,KAAK,GAAGwzB,OAAO,CAACxzB,KAAM,EAAE;MACpFy0K,YAAY,CAACx5K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC5C,CAAC,MAAM;MACHs5K,YAAY,CAACx5K,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC/C;IAEAolL,mBAAmB,CAAC,CAAC;EACzB;EAEA,SAASA,mBAAmBA,CAAA,EAAG;IAC3B,IAAI3vE,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACvE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxB0yG,SAAS,CAACnzG,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACnC;IACJ,CAAC,MAAM;MACHizG,SAAS,CAACnzG,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC1C;EACJ;EAEA,SAASwnL,YAAYA,CAAC3mL,KAAK,EAAE;IACzB,IAAIyQ,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;MAC5B,IAAI7kD,KAAK,IAAI,IAAI,EAAE;QACfkuJ,UAAU,CAAChvJ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACvCqnL,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;MACvC,CAAC,MAAM;QACHt4B,UAAU,CAAChvJ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACpCimL,UAAU,GAAG,EAAE;QACfn3B,UAAU,CAAC5rJ,aAAa,CAAC,aAAa,CAAC,CAAC2B,KAAK,GAAG,EAAE;QAClDuiL,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;MAExC;IACJ;EACJ;EAEA,eAAeiB,iBAAiBA,CAAA,EAAG;IAC/B,MAAM1xJ,MAAM,GAAG,MAAMu/I,cAAc,CAAC0E,gBAAgB,CAACC,SAAS,EAAEC,UAAU,CAACjtK,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAEsqB,SAAS,EAAEE,OAAO,EAAE6hJ,UAAU,EAAEa,OAAO,EAAE1pK,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC;IACvJ,MAAM;MAAE+3I;IAAkB,CAAC,GAAG5xJ,MAAM;IACpC,IAAIi0E,WAAW,GAAG3nG,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;IAC3D0kG,WAAW,CAACxqG,SAAS,GAAG,EAAE;IAC1B,IAAImoL,iBAAiB,CAACR,OAAO,IAAI,IAAI,EAAE;MACnCn9E,WAAW,CAACxqG,SAAS,GAAG,wEAAwE;MAChGwqG,WAAW,CAAC9qG,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAC/C,CAAC,MACI;MACDw0K,aAAa,CAACC,iBAAiB,CAACyF,UAAU,EAAEnxK,IAAI,EAAE0tK,YAAY,EAAEppE,qBAAqB,EAAEuwE,WAAW,EAAE7I,gBAAgB,GAAG,CAAC,CAAC;MACzH/hK,KAAK,CAAC/S,IAAI,CAACioL,aAAa,CAAC;IAC7B;EAEJ;EAEA,eAAed,gBAAgBA,CAACnM,UAAU,EAAEr6K,KAAK,EAAEu6K,YAAY,EAAE;IAC7D,IAAI9pK,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;MAC5B,IAAIy1H,SAAS,GAAGt6K,KAAK,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG;MACzC,MAAM+1B,MAAM,GAAG,MAAMu/I,cAAc,CAAC8E,sBAAsB,CAACC,UAAU,EAAEC,SAAS,EAAEhB,UAAU,EAAEiB,YAAY,EAAE9pK,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC;MAC7H,MAAM;QAAEg4I;MAAwB,CAAC,GAAG7xJ,MAAM;IAC9C;EACJ;EAEA,SAAS0wJ,kBAAkBA,CAAA,EAAG;IAC1B,IAAIN,YAAY,GAAGV,kBAAkB,CAACnjL,aAAa,CAAC,kBAAkB,CAAC;IACvE,IAAIulL,aAAa,GAAGnC,mBAAmB,CAACpjL,aAAa,CAAC,mBAAmB,CAAC;IAC1E,IAAI8jL,UAAU,GAAGT,gBAAgB,CAACrjL,aAAa,CAAC,gBAAgB,CAAC;IACjE,IAAIgkL,WAAW,GAAGV,iBAAiB,CAACtjL,aAAa,CAAC,iBAAiB,CAAC;IACpE,IAAIutJ,KAAK,GAAGg2B,WAAW,CAACvjL,aAAa,CAAC,WAAW,CAAC;IAElD,IAAIijL,gBAAgB,IAAI,GAAG,KAAKY,YAAY,CAACj+K,OAAO,IAAI2/K,aAAa,CAAC3/K,OAAO,IAAIk+K,UAAU,CAACl+K,OAAO,IAAIo+K,WAAW,CAACp+K,OAAO,IAAI2nJ,KAAK,CAAC3nJ,OAAO,CAAC,EAAE;MAC1I4/K,8BAA8B,CAAC,CAAC;IACpC;EACJ;EAEA,SAASA,8BAA8BA,CAAA,EAAG;IACtC,MAAMz9B,YAAY,GAAGj4I,KAAK,CAAC1P,KAAK,CAAC;MAC7BkQ,KAAK,EAAE;IACX,CAAC,CAAC;IAEF03I,OAAO,GAAG7nJ,MAAM,CAACC,KAAK,CAAC;MACnBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,MAAMsiL,gBAAgB,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC;QACnD,MAAMA,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC;QAC9C,MAAMA,gBAAgB,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC;QAClD,MAAMA,gBAAgB,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC;QACjD,MAAMA,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC;QAC9C,MAAMA,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;QAE1Cf,kBAAkB,CAACnjL,aAAa,CAAC,kBAAkB,CAAC,CAAC4F,OAAO,GAAG,KAAK;QACpEw9K,mBAAmB,CAACpjL,aAAa,CAAC,mBAAmB,CAAC,CAAC4F,OAAO,GAAG,KAAK;QACtEy9K,gBAAgB,CAACrjL,aAAa,CAAC,gBAAgB,CAAC,CAAC4F,OAAO,GAAG,KAAK;QAChE09K,iBAAiB,CAACtjL,aAAa,CAAC,iBAAiB,CAAC,CAAC4F,OAAO,GAAG,KAAK;QAClE29K,WAAW,CAACvjL,aAAa,CAAC,WAAW,CAAC,CAAC4F,OAAO,GAAG,KAAK;QACtDgmJ,UAAU,CAAC5rJ,aAAa,CAAC,aAAa,CAAC,CAAC2B,KAAK,GAAG,EAAE;QAClDyiL,eAAe,CAAC,CAAC;QACjBt0K,KAAK,CAAC/S,IAAI,CAACgrJ,YAAY,CAAC;MAC5B;IACJ,CAAC,CAAC;IAEFG,MAAM,GAAG/nJ,MAAM,CAACC,KAAK,CAAC;MAClBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACgrJ,YAAY,CAAC;QACxBk7B,gBAAgB,GAAG,GAAG;QACtBC,sBAAsB,CAACljL,aAAa,CAAC,sBAAsB,CAAC,CAAC4F,OAAO,GAAG,IAAI;QAC3Es+K,gBAAgB,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC;QAClDE,eAAe,CAAC,CAAC;MACrB;IACJ,CAAC,CAAC;IAEF,MAAMxzK,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAE3CsQ,OAAO,CAACrM,SAAS,GAAG,0FAA0F;IAC9GqM,OAAO,CAAC/P,KAAK,CAACguC,SAAS,GAAG,QAAQ;IAClCj+B,OAAO,CAAC/P,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACnCk3F,YAAY,CAACvqJ,WAAW,CAACoT,OAAO,CAAC;IACjC,IAAIu3I,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrCqrJ,YAAY,CAAC3qJ,WAAW,CAACwqJ,OAAO,CAAC;IACjCG,YAAY,CAAC3qJ,WAAW,CAAC0qJ,MAAM,CAAC;IAChCH,YAAY,CAACvqJ,WAAW,CAAC2qJ,YAAY,CAAC;IACtCH,OAAO,CAACx5I,KAAK,CAAC,CAAC;IACfsB,KAAK,CAAC9S,IAAI,CAAC+qJ,YAAY,CAAC;EAC5B;EAEA,OAAO;IACH9nJ,IAAI;IACJwjL,yBAAyB;IACzBvmE;EACJ,CAAC;AACL,CAAC,EAAE,CAAC;AC3nBJ,MAAMmjE,YAAY,GAAG,CAAC,MAAM;EAExB,IAAIoF,wBAAwB,GAAG,EAAE;EACjC,IAAIzO,UAAU;EACd,IAAI0O,eAAe;EACnB,IAAI3M,cAAc;EAClB,IAAI2B,WAAW;EACf,IAAI70K,IAAI;EACR,IAAI0tK,YAAY;EAChB,IAAIppE,qBAAqB;EACzB,IAAI/zE,SAAS;EACb,IAAIf,OAAO;EACX,IAAIswJ,iBAAiB,GAAG,EAAE;EAC1B,IAAIC,WAAW;EACf,IAAIC,gBAAgB;EACpB,IAAIC,UAAU;EACd,IAAIp+E,WAAW;EAEf,eAAeznG,IAAIA,CAACuxK,UAAU,EAAEp7H,IAAI,EAAE2kI,YAAY,EAAEC,qBAAqB,EAAE35B,WAAW,EAAE;IACpF21B,UAAU,GAAGxF,UAAU;IACvBkJ,WAAW,GAAGr5B,WAAW;IACzBx7I,IAAI,GAAGuwC,IAAI;IACXm9H,YAAY,GAAGwH,YAAY;IAC3B5wE,qBAAqB,GAAG6wE,qBAAqB;IAC7C,IAAIhE,UAAU,IAAI3yK,SAAS,EAAE;MACzBqhL,eAAe,GAAG,MAAM1S,cAAc,CAAC0F,2BAA2B,CAAC1B,UAAU,CAAC;MAC9E,IAAI0O,eAAe,CAACK,4BAA4B,CAAC1oL,MAAM,GAAG,CAAC,EACvDyoL,UAAU,GAAGJ,eAAe,CAACK,4BAA4B,CAAC,CAAC,CAAC,CAACD,UAAU;IAC/E;EACJ;EAEA,SAAS5oE,SAASA,CAAA,EAAG;IACjB,MAAMqC,gBAAgB,GAAGx/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtDi/G,gBAAgB,CAAC3iH,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IAE7C,IAAIk6K,UAAU,IAAI3yK,SAAS,EAAE;MACzB,MAAMs6G,eAAe,GAAGqnE,wBAAwB,CAAC,CAAC;MAClDzmE,gBAAgB,CAAC/hH,WAAW,CAACmhH,eAAe,CAAC;IACjD,CAAC,MACI;MACD,MAAMvqG,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;MAC5C8T,OAAO,CAAClX,SAAS,GAAG,eAAe;MACnCkX,OAAO,CAACxX,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MACvCyiH,gBAAgB,CAAC/hH,WAAW,CAAC4W,OAAO,CAAC;IACzC;IAIA,OAAOmrG,gBAAgB;EAC3B;EAEA,SAASymE,wBAAwBA,CAAA,EAAG;IAChC,MAAMC,eAAe,GAAGlmL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD2lL,eAAe,CAACrpL,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAEvDopL,aAAa,GAAG/lL,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,iBAAiB;MACvBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAMukL,uBAAuB,CAAC,CAAC,EAAE,KAAK;IACpD,CAAC,CAAC;IACFV,wBAAwB,GAAGW,6BAA6B,CAAC,CAAC;IAG1D,MAAMpnE,OAAO,GAAGj/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0+G,OAAO,CAACpiH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9B,MAAMmiH,UAAU,GAAGl/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD2+G,UAAU,CAACriH,SAAS,CAACE,GAAG,CAAC,MAAM,CAAC;IAChC,MAAMoiH,cAAc,GAAGn/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD4+G,cAAc,CAACtiH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1CmiH,UAAU,CAAC/hH,SAAS,GAAG,+CAA+C;IACtE+hH,UAAU,CAACzhH,WAAW,CAAC0hH,cAAc,CAAC;IACtCF,OAAO,CAACxhH,WAAW,CAACyhH,UAAU,CAAC;IAC/B,IAAI9wG,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;MAC5B28D,cAAc,CAAC1hH,WAAW,CAAC0oL,aAAa,CAAC;IAC7C;IACAhnE,cAAc,CAAC1hH,WAAW,CAACioL,wBAAwB,CAAC;IACpD,MAAMY,YAAY,GAAGtmL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClD+lL,YAAY,CAACzpL,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;IACvCupL,YAAY,CAACnpL,SAAS,GAAG,qBAAqB4oL,UAAU,SAAS;IACjE5mE,cAAc,CAAC1hH,WAAW,CAAC6oL,YAAY,CAAC;IAExCJ,eAAe,CAACzoL,WAAW,CAACwhH,OAAO,CAAC;IACpC,OAAOinE,eAAe;EAC1B;EAGA,SAASG,6BAA6BA,CAAA,EAAG;IACrC,MAAMp/E,YAAY,GAAG;MACjBjzF,KAAK,EAAE,KAAK;MACZZ,OAAO,EAAE,6BAA6B;MACtCgB,cAAc,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC;MAClEM,OAAO,EAAEtG,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;MAC1D5tC,aAAa,EAAExG,CAAC,CAACC,OAAO,CAACo0C,gBAAgB,IAAI,IAAI,GAAG,IAAI,GAAG;IAC/D,CAAC;IAED,IAAI+qD,SAAS,GAAGm4E,eAAe,CAACK,4BAA4B,CAACj/K,GAAG,CAAE0mG,KAAK,KAAM;MACzEn4F,MAAM,EAAE,CAACm4F,KAAK,CAACsrE,SAAS,IAAI,CAAC,GAAG,QAAQ,GAAGtrE,KAAK,CAACsrE,SAAS,IAAI,CAAC,GAAG,QAAQ,GAAGtrE,KAAK,CAACsrE,SAAS,IAAI,CAAC,GAAG,SAAS,GAAGtrE,KAAK,CAACsrE,SAAS,IAAI,CAAC,GAAG,WAAW,GAAGtrE,KAAK,CAACsrE,SAAS,IAAI,CAAC,GAAG,UAAU,GAAGtrE,KAAK,CAACsrE,SAAS,IAAI,CAAC,GAAG,QAAQ,GAAGtrE,KAAK,CAACsrE,SAAS,IAAI,CAAC,GAAG,UAAU,GAAG,EAAE,EAAEroJ,IAAI,CAAC8E,mBAAmB,CAACi4E,KAAK,CAACp3E,SAAS,CAAC,EAAE3F,IAAI,CAAC8E,mBAAmB,CAACi4E,KAAK,CAACn4E,OAAO,CAAC,EAAEm4E,KAAK,CAAC84E,WAAW,CAAC;MACzW9kL,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,gBAAgB;QAAEC,KAAK,EAAE6rG,KAAK,CAAC+4E;MAAe,CAAC,EAAE;QAAE7kL,GAAG,EAAE,kBAAkB;QAAEC,KAAK,EAAE6rG,KAAK,CAACp3E,SAAS,IAAI,EAAE,GAAG,MAAM,GAAG;MAAQ,CAAC,EAAE;QAAE10B,GAAG,EAAE,YAAY;QAAEC,KAAK,EAAEwM,CAAC,CAACC,OAAO,CAACo0C,gBAAgB,IAAI,IAAI,GAAG,MAAM,GAAG;MAAQ,CAAC,EAAE;QAAE9gD,GAAG,EAAE,UAAU;QAAEC,KAAK,EAAEwM,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,IAAI,IAAI,GAAG,MAAM,GAAG;MAAQ,CAAC,CAAC;MAC1TrtC,OAAO,EAAG5S,CAAC,IAAK;QACZ,IAAI6L,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,IAAIjgD,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC,CAAC,CAAC,CAACG,KAAK,IAAI,OAAO,EAAE;UACvEwkL,uBAAuB,CAAC7jL,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC+kL,cAAc,CAAC5kL,KAAK,EAAE,MAAM,CAAC;QAC7E;MACJ,CAAC;MACD8S,OAAO,EAAEtG,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,IAAI,IAAI,IAAIirD,KAAK,CAACsrE,SAAS,IAAI,EAAE,GAAG,GAAGn4K,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,GAAGA,KAAK,CAAC,OAAO,CAAC,EAAE;MAC/G6U,eAAe,EAAGlT,CAAC,IAAK;QACpB6jL,uBAAuB,CAAC34E,KAAK,CAAC+4E,cAAc,EAAE,MAAM,CAAC;MACzD,CAAC;MACD5xK,aAAa,EAAExG,CAAC,CAACC,OAAO,CAACo0C,gBAAgB,IAAI,IAAI,IAAIgrD,KAAK,CAACsrE,SAAS,IAAI,EAAE,GAAG,GAAGn4K,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAGA,KAAK,CAAC,OAAO,CAAC,EAAE;MACvH8U,qBAAqB,EAAGnT,CAAC,IAAK;QAC1BkkL,uBAAuB,CAACh5E,KAAK,CAAC+4E,cAAc,CAAC;MACjD;IACJ,CAAC,CAAC,CAAC;IACH,MAAMlnE,MAAM,GAAGpsG,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAExC;IACA,MAAMzwF,OAAO,GAAG8oG,MAAM,CAACj5G,gBAAgB,CAAC,aAAa,CAAC;IACtDmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAEhD;IACAiS,KAAK,CAACqD,iBAAiB,CAAC+oG,MAAM,CAAC;IAE/BpsG,KAAK,CAAC9V,QAAQ,CAACkiH,MAAM,EAAE9R,SAAS,CAAC;IAEjC,OAAO8R,MAAM;EACjB;EAEA,SAASmnE,uBAAuBA,CAACD,cAAc,EAAE;IAC7C,MAAMx+B,YAAY,GAAGj4I,KAAK,CAAC1P,KAAK,CAAC;MAC7BkQ,KAAK,EAAE;IACX,CAAC,CAAC;IAEF03I,OAAO,GAAG7nJ,MAAM,CAACC,KAAK,CAAC;MACnBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZu3K,kBAAkB,CAACoN,cAAc,EAAEx+B,YAAY,CAAC;MACpD;IACJ,CAAC,CAAC;IAEFG,MAAM,GAAG/nJ,MAAM,CAACC,KAAK,CAAC;MAClBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACgrJ,YAAY,CAAC;MAC5B;IACJ,CAAC,CAAC;IAEF,MAAMn3I,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAE3CsQ,OAAO,CAACrM,SAAS,GAAG,kEAAkE;IACtFqM,OAAO,CAAC/P,KAAK,CAACguC,SAAS,GAAG,QAAQ;IAClCj+B,OAAO,CAAC/P,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACnCk3F,YAAY,CAACvqJ,WAAW,CAACoT,OAAO,CAAC;IACjC,IAAIu3I,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrCqrJ,YAAY,CAAC3qJ,WAAW,CAACwqJ,OAAO,CAAC;IACjCG,YAAY,CAAC3qJ,WAAW,CAAC0qJ,MAAM,CAAC;IAChCH,YAAY,CAACvqJ,WAAW,CAAC2qJ,YAAY,CAAC;IACtCH,OAAO,CAACx5I,KAAK,CAAC,CAAC;IACfsB,KAAK,CAAC9S,IAAI,CAAC+qJ,YAAY,CAAC;EAC5B;EAEA,SAASoxB,kBAAkBA,CAACoN,cAAc,EAAEx+B,YAAY,EAAE;IACtDirB,cAAc,CAACmG,kBAAkB,CAC7B;MACIJ,cAAc,EAAEwN;IACpB,CAAC,EACD,UAAUt+E,OAAO,EAAE;MACf,IAAIA,OAAO,GAAG,QAAQ,EAAE;QACpBn4F,KAAK,CAAC/S,IAAI,CAACgrJ,YAAY,CAAC;QACxBupB,aAAa,CAACC,iBAAiB,CAACyF,UAAU,EAAEnxK,IAAI,EAAE0tK,YAAY,EAAEppE,qBAAqB,EAAEuwE,WAAW,EAAE7I,gBAAgB,GAAG,CAAC,CAAC;MAC7H;IACJ,CACJ,CAAC;EACL;EAEA,SAASsU,uBAAuBA,CAACI,cAAc,EAAEE,SAAS,EAAE;IACxD,IAAIF,cAAc,IAAI,CAAC,IAAIA,cAAc,IAAIliL,SAAS,EAAE;MACpDy0K,SAAS,GAAG,EAAE;MACd1iJ,SAAS,GAAG,EAAE;MACdf,OAAO,GAAG,EAAE;IAChB,CAAC,MACI;MACD,IAAIqxJ,iBAAiB,GAAGhB,eAAe,CAACK,4BAA4B,CAACh0H,IAAI,CAACzxC,CAAC,IAAIA,CAAC,CAACimK,cAAc,IAAIA,cAAc,CAAC;MAClHzN,SAAS,GAAG4N,iBAAiB,CAAC5N,SAAS;MACvC+M,gBAAgB,GAAGa,iBAAiB,CAAC5N,SAAS;MAC9C1iJ,SAAS,GAAGswJ,iBAAiB,CAACtwJ,SAAS;MACvCf,OAAO,GAAGqxJ,iBAAiB,CAACrxJ,OAAO;IACvC;IACAsxJ,oBAAoB,GAAG72K,KAAK,CAAC1P,KAAK,CAAC;MAC/BgB,UAAU,EAAE,CAAC,mBAAmB,CAAC;MACjCkP,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,MAAM8D,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAACvT,KAAK,CAACw8J,SAAS,GAAG,OAAO;IACjCjpJ,OAAO,CAACvT,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACnC,IAAI41H,SAAS,IAAI,MAAM,EAAE;MACrBryK,OAAO,CAAC7P,SAAS,GAAG,cAAc;MAClCw0K,cAAc,GAAGwN,cAAc;MAC/BX,WAAW,GAAG,MAAM;IACxB,CAAC,MACI,IAAIa,SAAS,IAAI,MAAM,EAAE;MAC1BryK,OAAO,CAAC7P,SAAS,GAAG,YAAY;MAChCw0K,cAAc,GAAGwN,cAAc;MAC/BX,WAAW,GAAG,MAAM;MACpB9M,SAAS,GAAG,EAAE;IAClB,CAAC,MACI;MACD1kK,OAAO,CAAC7P,SAAS,GAAG,WAAW;MAC/Bw0K,cAAc,GAAG,CAAC;MAClB6M,WAAW,GAAG,KAAK;IACvB;;IAEA;IACA,IAAIgB,aAAa,GAAG7mL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDsmL,aAAa,CAAC/lL,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACzC+1H,aAAa,CAAC/lL,KAAK,CAACiyI,UAAU,GAAG,KAAK;IACtC8zC,aAAa,CAAC1pL,SAAS,GAAG,6CAA6C;IAEvE,IAAI2pL,WAAW,GAAG9mL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CumL,WAAW,CAACjqL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACvC+pL,WAAW,CAAC3pL,SAAS,GAAG,YAAY;IACpC4pL,YAAY,GAAGljL,KAAK,CAACyB,aAAa,CAAC;MAC/B9E,EAAE,EAAE,cAAc;MAClBgF,SAAS,EAAE,KAAK;MAChB1E,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMmgL,0BAA0B,CAAC;IAC/C,CAAC,CAAC;IACF,IAAIgF,WAAW,GAAGhnL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CymL,WAAW,CAACnqL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACvCiqL,WAAW,CAAC7pL,SAAS,GAAG,YAAY;IACpC8pL,YAAY,GAAGpjL,KAAK,CAACyB,aAAa,CAAC;MAC/B9E,EAAE,EAAE,cAAc;MAClBgF,SAAS,EAAE,KAAK;MAChB1E,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMmgL,0BAA0B,CAAC;IAC/C,CAAC,CAAC;IACF,IAAIkF,YAAY,GAAGlnL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD2mL,YAAY,CAACrqL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACxCmqL,YAAY,CAAC/pL,SAAS,GAAG,YAAY;IACrCgqL,aAAa,GAAGtjL,KAAK,CAACyB,aAAa,CAAC;MAChC9E,EAAE,EAAE,eAAe;MACnBgF,SAAS,EAAE,KAAK;MAChB1E,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMmgL,0BAA0B,CAAC;IAC/C,CAAC,CAAC;IACF,IAAIoF,cAAc,GAAGpnL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClD6mL,cAAc,CAACvqL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1CqqL,cAAc,CAACjqL,SAAS,GAAG,YAAY;IACvCkqL,eAAe,GAAGxjL,KAAK,CAACyB,aAAa,CAAC;MAClC9E,EAAE,EAAE,iBAAiB;MACrBgF,SAAS,EAAE,KAAK;MAChB1E,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMmgL,0BAA0B,CAAC;IAC/C,CAAC,CAAC;IACF,IAAIsF,aAAa,GAAGtnL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD+mL,aAAa,CAACzqL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACzCuqL,aAAa,CAACnqL,SAAS,GAAG,YAAY;IACtCoqL,cAAc,GAAG1jL,KAAK,CAACyB,aAAa,CAAC;MACjC9E,EAAE,EAAE,gBAAgB;MACpBgF,SAAS,EAAE,KAAK;MAChB1E,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMmgL,0BAA0B,CAAC;IAC/C,CAAC,CAAC;IACF,IAAIwF,WAAW,GAAGxnL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CinL,WAAW,CAAC3qL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACvCyqL,WAAW,CAACrqL,SAAS,GAAG,YAAY;IACpCsqL,YAAY,GAAG5jL,KAAK,CAACyB,aAAa,CAAC;MAC/B9E,EAAE,EAAE,cAAc;MAClBgF,SAAS,EAAE,KAAK;MAChB1E,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMmgL,0BAA0B,CAAC;IAC/C,CAAC,CAAC;IACF,IAAI0F,aAAa,GAAG1nL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDmnL,aAAa,CAAC7qL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACzC2qL,aAAa,CAACvqL,SAAS,GAAG,YAAY;IACtCwqL,cAAc,GAAG9jL,KAAK,CAACyB,aAAa,CAAC;MACjC9E,EAAE,EAAE,gBAAgB;MACpBgF,SAAS,EAAE,KAAK;MAChB1E,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMmgL,0BAA0B,CAAC;IAC/C,CAAC,CAAC;;IAEF;IACA4F,iBAAiB,GAAG5lL,QAAQ,CAAC3B,KAAK,CAAC;MAC/BG,EAAE,EAAE,mBAAmB;MACvB2B,KAAK,EAAE,aAAa;MACpBF,UAAU,EAAE,mBAAmB;MAC/BL,KAAK,EAAGm3K,SAAS,GAAIA,SAAS,GAAG;IACrC,CAAC,CAAC;IAEF8O,YAAY,GAAGhkL,KAAK,CAACxD,KAAK,CAAC;MACvBG,EAAE,EAAE,cAAc;MAClBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEy0B;IACX,CAAC,CAAC;IAEFyxJ,UAAU,GAAGjkL,KAAK,CAACxD,KAAK,CAAC;MACrBG,EAAE,EAAE,YAAY;MAChBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0zB;IACX,CAAC,CAAC;IAEF06E,SAAS,GAAG5vG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEFkvG,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEF6lL,oBAAoB,CAACnpL,WAAW,CAAC4W,OAAO,CAAC;IAEzC,IAAImyK,cAAc,IAAI,CAAC,IAAIA,cAAc,IAAIliL,SAAS,EAAE;MACpD,IAAIyjL,UAAU,GAAG/nL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC9CumL,WAAW,CAACrpL,WAAW,CAACspL,YAAY,CAAC;MACrCC,WAAW,CAACvpL,WAAW,CAACwpL,YAAY,CAAC;MACrCC,YAAY,CAACzpL,WAAW,CAAC0pL,aAAa,CAAC;MACvCC,cAAc,CAAC3pL,WAAW,CAAC4pL,eAAe,CAAC;MAC3CC,aAAa,CAAC7pL,WAAW,CAAC8pL,cAAc,CAAC;MACzCC,WAAW,CAAC/pL,WAAW,CAACgqL,YAAY,CAAC;MACrCC,aAAa,CAACjqL,WAAW,CAACkqL,cAAc,CAAC;MACzCf,oBAAoB,CAACnpL,WAAW,CAACopL,aAAa,CAAC;MAC/CkB,UAAU,CAAClrL,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MACnCgrL,UAAU,CAACtqL,WAAW,CAACqpL,WAAW,CAAC;MACnCiB,UAAU,CAACtqL,WAAW,CAACupL,WAAW,CAAC;MACnCe,UAAU,CAACtqL,WAAW,CAACypL,YAAY,CAAC;MACpCa,UAAU,CAACtqL,WAAW,CAAC2pL,cAAc,CAAC;MACtCW,UAAU,CAACtqL,WAAW,CAAC6pL,aAAa,CAAC;MACrCS,UAAU,CAACtqL,WAAW,CAAC+pL,WAAW,CAAC;MACnCO,UAAU,CAACtqL,WAAW,CAACiqL,aAAa,CAAC;MACrCd,oBAAoB,CAACnpL,WAAW,CAACsqL,UAAU,CAAC;IAChD,CAAC,MAAM;MACHnB,oBAAoB,CAACnpL,WAAW,CAACmqL,iBAAiB,CAAC;IACvD;IAGA,IAAII,WAAW,GAAGhoL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CynL,WAAW,CAACnrL,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACpC8qL,YAAY,CAAC/mL,KAAK,CAACiyI,UAAU,GAAG,IAAI;IACpC80C,YAAY,CAAC/mL,KAAK,CAACiS,KAAK,GAAG,KAAK;IAChCi1K,WAAW,CAACvqL,WAAW,CAACoqL,YAAY,CAAC;IACrCC,UAAU,CAAChnL,KAAK,CAACiyI,UAAU,GAAG,IAAI;IAClC+0C,UAAU,CAAChnL,KAAK,CAACiS,KAAK,GAAG,KAAK;IAC9Bi1K,WAAW,CAACvqL,WAAW,CAACqqL,UAAU,CAAC;IACnClB,oBAAoB,CAACnpL,WAAW,CAACuqL,WAAW,CAAC;IAE7C,IAAIvgF,cAAc,GAAGznG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDknG,cAAc,CAACtqG,SAAS,GAAG,uEAAuE;IAClGypL,oBAAoB,CAACnpL,WAAW,CAACgqG,cAAc,CAAC;IAEhD,IAAI2gD,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrC,IAAIqR,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;MAC5B4lG,YAAY,CAAC3qJ,WAAW,CAACuyG,SAAS,CAAC;IACvC;IACAo4C,YAAY,CAAC3qJ,WAAW,CAACwyG,UAAU,CAAC;IACpC22E,oBAAoB,CAACnpL,WAAW,CAAC2qJ,YAAY,CAAC;IAE9Cr4I,KAAK,CAAC9S,IAAI,CAAC2pL,oBAAoB,CAAC;IAChCvI,mBAAmB,CAAC,CAAC;IACrB4J,wBAAwB,CAAC,CAAC;IAC1BjG,0BAA0B,CAAC,CAAC;EAChC;EAEA,SAAS3D,mBAAmBA,CAAA,EAAG;IAC3BuJ,iBAAiB,CAACznL,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAClDo7K,SAAS,GAAGp7K,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9BogL,0BAA0B,CAAC,CAAC;IAChC,CAAC,CAAC;IACF6F,YAAY,CAAC1nL,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC7C04B,SAAS,GAAG14B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9BogL,0BAA0B,CAAC,CAAC;IAChC,CAAC,CAAC;IACF8F,UAAU,CAAC3nL,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC3C23B,OAAO,GAAG33B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC5BogL,0BAA0B,CAAC,CAAC;IAChC,CAAC,CAAC;IAEFhyE,SAAS,CAAC7vG,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACtC,IAAI,CAAC6vG,SAAS,CAACnzG,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC3Cy6K,iBAAiB,CAAC,CAAC;MACvB;IACJ,CAAC,CAAC;IAEFn1E,UAAU,CAAC9vG,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACvC4P,KAAK,CAAC/S,IAAI,CAAC4pL,oBAAoB,CAAC;IACpC,CAAC,CAAC;EACN;EAEA,SAAS5E,0BAA0BA,CAAA,EAAG;IAClC,IAAIkG,OAAO,GAAGN,iBAAiB,CAAC3nL,aAAa,CAAC,oBAAoB,CAAC;IACnE,IAAIkoL,OAAO,GAAGL,UAAU,CAAC7nL,aAAa,CAAC,aAAa,CAAC;IACrD,IAAImoL,SAAS,GAAGP,YAAY,CAAC5nL,aAAa,CAAC,eAAe,CAAC;IAC3D0nG,WAAW,GAAG3nG,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;IACvD0kG,WAAW,CAACxqG,SAAS,GAAG,EAAE;IAC1B,IAAI0oL,WAAW,IAAI,KAAK,EAAE;MACtB,IAAIwC,SAAS,GAAGtB,YAAY,CAAC9mL,aAAa,CAAC,eAAe,CAAC;MAC3D,IAAIqoL,SAAS,GAAGrB,YAAY,CAAChnL,aAAa,CAAC,eAAe,CAAC;MAC3D,IAAIsoL,UAAU,GAAGpB,aAAa,CAAClnL,aAAa,CAAC,gBAAgB,CAAC;MAC9D,IAAIuoL,YAAY,GAAGnB,eAAe,CAACpnL,aAAa,CAAC,kBAAkB,CAAC;MACpE,IAAIwoL,WAAW,GAAGlB,cAAc,CAACtnL,aAAa,CAAC,iBAAiB,CAAC;MACjE,IAAIyoL,SAAS,GAAGjB,YAAY,CAACxnL,aAAa,CAAC,eAAe,CAAC;MAC3D,IAAI0oL,WAAW,GAAGhB,cAAc,CAAC1nL,aAAa,CAAC,iBAAiB,CAAC;MAEjE,IAAI2oL,QAAQ,GAAG5oL,QAAQ,CAACiD,cAAc,CAAC,eAAe,CAAC;MAEvD,IAAI,CAAColL,SAAS,CAACxiL,OAAO,IAAI,CAACyiL,SAAS,CAACziL,OAAO,IAAI,CAAC0iL,UAAU,CAAC1iL,OAAO,IAAI,CAAC2iL,YAAY,CAAC3iL,OAAO,IAAI,CAAC4iL,WAAW,CAAC5iL,OAAO,IAAI,CAAC6iL,SAAS,CAAC7iL,OAAO,IAAI,CAAC8iL,WAAW,CAAC9iL,OAAO,EAAE;QAChK+iL,QAAQ,CAAC/rL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;QACpC6rL,QAAQ,CAAC/rL,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MAC5C,CAAC,MACI;QACD6rL,QAAQ,CAAC/rL,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;QACvC8rL,QAAQ,CAAC/rL,SAAS,CAACC,MAAM,CAAC,gBAAgB,CAAC;MAC/C;IACJ,CAAC,MAAM,IAAI+oL,WAAW,IAAI,MAAM,EAAE;MAC9B,IAAI9M,SAAS,KAAK,EAAE,EAAE;QAClB6O,iBAAiB,CAAC/qL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;MACjD,CAAC,MAAM;QACH6qL,iBAAiB,CAAC/qL,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MACpD;IACJ,CAAC,MACI;MACD,IAAIorL,OAAO,CAACtmL,KAAK,KAAK,EAAE,EAAE;QACtBgmL,iBAAiB,CAAC/qL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;MACjD,CAAC,MAAM;QACH6qL,iBAAiB,CAAC/qL,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MACpD;IAEJ;IAEA,IAAIqrL,OAAO,CAACvmL,KAAK,KAAK,EAAE,IAAIwmL,SAAS,CAACxmL,KAAK,GAAGumL,OAAO,CAACvmL,KAAK,EAAE;MACzDkmL,UAAU,CAACjrL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1C,CAAC,MAAM;MACH+qL,UAAU,CAACjrL,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC7C;IAEA,IAAIsrL,SAAS,CAACxmL,KAAK,KAAK,EAAE,EAAE;MACxBimL,YAAY,CAAChrL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC5C,CAAC,MAAM;MACH8qL,YAAY,CAAChrL,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC/C;IAEAolL,mBAAmB,CAAC,CAAC;EACzB;EAEA,SAASA,mBAAmBA,CAAA,EAAG;IAC3B,IAAI3vE,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACvE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxB0yG,SAAS,CAACnzG,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACnC;IACJ,CAAC,MAAM;MACHizG,SAAS,CAACnzG,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC1C;EACJ;EAGA,SAASmrL,wBAAwBA,CAAA,EAAG;IAChC,MAAMY,qBAAqB,GAAI,CAC3B;MAAEroL,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,CAAC;MAAEjB,IAAI,EAAE;IAAS,CAAC,EACnC;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,CAAC;MAAEjB,IAAI,EAAE;IAAS,CAAC,EACnC;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,CAAC;MAAEjB,IAAI,EAAE;IAAU,CAAC,EACpC;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,CAAC;MAAEjB,IAAI,EAAE;IAAY,CAAC,EACtC;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,CAAC;MAAEjB,IAAI,EAAE;IAAW,CAAC,EACrC;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,CAAC;MAAEjB,IAAI,EAAE;IAAS,CAAC,EACnC;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,CAAC;MAAEjB,IAAI,EAAE;IAAW,CAAC,CAEvC;IACFkoL,qBAAqB,CAACloH,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAChEqB,QAAQ,CAAC5E,QAAQ,CAAC,mBAAmB,EAAEyrL,qBAAqB,EAAE9P,SAAS,CAAC;EAC5E;EAGA,eAAeqM,iBAAiBA,CAAA,EAAG;IAC/BQ,iBAAiB,GAAG,EAAE;IACtB,IAAIC,WAAW,IAAI,KAAK,EAAE;MACtB,IAAIkB,YAAY,CAAC9mL,aAAa,CAAC,eAAe,CAAC,CAAC4F,OAAO,EAAE+/K,iBAAiB,CAACx6K,IAAI,CAAC,CAAC,CAAC;MAClF,IAAI67K,YAAY,CAAChnL,aAAa,CAAC,eAAe,CAAC,CAAC4F,OAAO,EAAE+/K,iBAAiB,CAACx6K,IAAI,CAAC,CAAC,CAAC;MAClF,IAAI+7K,aAAa,CAAClnL,aAAa,CAAC,gBAAgB,CAAC,CAAC4F,OAAO,EAAE+/K,iBAAiB,CAACx6K,IAAI,CAAC,CAAC,CAAC;MACpF,IAAIi8K,eAAe,CAACpnL,aAAa,CAAC,kBAAkB,CAAC,CAAC4F,OAAO,EAAE+/K,iBAAiB,CAACx6K,IAAI,CAAC,CAAC,CAAC;MACxF,IAAIm8K,cAAc,CAACtnL,aAAa,CAAC,iBAAiB,CAAC,CAAC4F,OAAO,EAAE+/K,iBAAiB,CAACx6K,IAAI,CAAC,CAAC,CAAC;MACtF,IAAIq8K,YAAY,CAACxnL,aAAa,CAAC,eAAe,CAAC,CAAC4F,OAAO,EAAE+/K,iBAAiB,CAACx6K,IAAI,CAAC,CAAC,CAAC;MAClF,IAAIu8K,cAAc,CAAC1nL,aAAa,CAAC,iBAAiB,CAAC,CAAC4F,OAAO,EAAE+/K,iBAAiB,CAACx6K,IAAI,CAAC,CAAC,CAAC;IAC1F,CAAC,MAAM,IAAIy6K,WAAW,IAAI,MAAM,EAAE;MAC9BD,iBAAiB,CAACx6K,IAAI,CAAC2tK,SAAS,CAAC;IACrC,CAAC,MAAM;MACH6M,iBAAiB,CAACx6K,IAAI,CAAC2tK,SAAS,CAAC;MACjCC,cAAc,GAAG,CAAC;IACtB;IAEA,MAAMtlJ,MAAM,GAAG,MAAMu/I,cAAc,CAAC6F,uBAAuB,CAAC8M,iBAAiB,EAAEvvJ,SAAS,EAAEf,OAAO,EAAE2hJ,UAAU,EAAE+B,cAAc,EAAE5qK,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC;IAChJ,MAAM;MAAEu7I;IAAyB,CAAC,GAAGp1J,MAAM;IAE3Ci0E,WAAW,GAAG3nG,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;IACvD0kG,WAAW,CAACxqG,SAAS,GAAG,EAAE;IAC1B,IAAI2rL,wBAAwB,CAACtC,cAAc,IAAI,IAAI,EAAE;MACjD7+E,WAAW,CAACxqG,SAAS,GAAG,wEAAwE;MAChGwqG,WAAW,CAAC9qG,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAC/C,CAAC,MACI;MACDw0K,aAAa,CAACC,iBAAiB,CAACyF,UAAU,EAAEnxK,IAAI,EAAE0tK,YAAY,EAAEppE,qBAAqB,EAAEuwE,WAAW,EAAE7I,gBAAgB,GAAG,CAAC,CAAC;MACzH/hK,KAAK,CAAC/S,IAAI,CAAC4pL,oBAAoB,CAAC;IACpC;EACJ;EAEA,OAAO;IACH1mL,IAAI;IACJ+lL,wBAAwB;IACxB9oE;EACJ,CAAC;AACL,CAAC,EAAE,CAAC;AC7gBJ,MAAMltD,WAAW,GAAI,YAAY;EAC/B,IAAI84H,SAAS;EACb,IAAI36I,SAAS;EACb,IAAI46I,WAAW,GAAG,CAAC,CAAC;EACpB,IAAIx2D,QAAQ,GAAG,CAAC,CAAC;EACjB,IAAIy2D,eAAe;EACnB,IAAIC,oBAAoB;EACxB,IAAIC,oBAAoB;EACxB,IAAIC,WAAW;EACf,IAAIC,eAAe;EACnB,IAAIC,aAAa;EAEjB,SAASC,sBAAsBA,CAAC76H,UAAU,EAAE;IAC1C86H,eAAe,CAACC,0BAA0B,CAAC;MAAE/6H;IAAW,CAAC,EAAE,MAAM;MAC/D,MAAMtsB,GAAG,GAAGmkB,OAAO,CAACmjI,OAAO;MAC3B,MAAMC,SAAS,GAAG,IAAI19H,UAAU,CAAC7pB,GAAG,CAAC;MACrC,MAAMwnJ,IAAI,GAAG,IAAIj9J,IAAI,CAAC,CAACg9J,SAAS,CAAC,EAAE;QAAE5oL,IAAI,EAAE;MAAkB,CAAC,CAAC;MAC/D,IAAIqN,CAAC,CAACC,OAAO,CAACsoC,OAAO,KAAK,UAAU,IAAIvoC,CAAC,CAACC,OAAO,CAACsoC,OAAO,KAAK,SAAS,EAAE;QACvEnoC,MAAM,CAAC2e,SAAS,CAAC08J,gBAAgB,CAACD,IAAI,EAAE,YAAY,CAAC;MACvD,CAAC,MAAM;QACL,MAAME,OAAO,GAAGt9J,GAAG,CAACC,eAAe,CAACm9J,IAAI,CAAC;QACzCp7K,MAAM,CAAC7F,IAAI,CAACmhL,OAAO,CAAC;MACtB;MAEAC,OAAO,CAACC,sBAAsB,CAAC,CAAC;MAChC,OAAO,SAAS;IAClB,CAAC,CAAC;EACJ;EAEA,SAASC,0BAA0BA,CAACC,WAAW,EAAEC,uBAAuB,EAAE;IACxE;IACAD,WAAW,CAACtoL,KAAK,GAAGuoL,uBAAuB;IAC3C,IAAIC,QAAQ,GAAG,GAAG;IAClB,IAAIF,WAAW,CAACznL,aAAa,KAAK,CAAC,CAAC,EAAE;MAClC2nL,QAAQ,GAAGF,WAAW,CAAC5pL,OAAO,CAAC4pL,WAAW,CAACznL,aAAa,CAAC,CAAC9B,IAAI,CAACrD,MAAM,GAAG,EAAE;IAC9E;IACA4sL,WAAW,CAACppL,KAAK,CAACiS,KAAK,GAAG,GAAGq3K,QAAQ,IAAI;EAC7C;EACA,SAASC,6BAA6BA,CAACC,qBAAqB,EAAEC,yBAAyB,EAAE;IACrF;IACAD,qBAAqB,CAAC1oL,KAAK,GAAG2oL,yBAAyB;IACvD,MAAMC,WAAW,GACb,CAACF,qBAAqB,CAAChqL,OAAO,CAACgqL,qBAAqB,CAAC7nL,aAAa,CAAC,CAAC9B,IAAI,CAACrD,MAAM,GAAG,CAAC,IAAI,EAAE;IAE7FgtL,qBAAqB,CAACxpL,KAAK,CAACiS,KAAK,GAAG,GAAGy3K,WAAW,IAAI;EAC1D;EAEA,SAASC,sBAAsBA,CAAC56K,KAAK,EAAE;IACrC,MAAMq6K,WAAW,GAAGr6K,KAAK,CAAC5P,aAAa,CAAC,qBAAqB,CAAC;IAC9D,MAAMyqL,UAAU,GAAG76K,KAAK,CAAC5P,aAAa,CAAC,uCAAuC,CAAC;IAC/EyqL,UAAU,CAACvtL,SAAS,GAAG+sL,WAAW,CAAC5pL,OAAO,CAAC4pL,WAAW,CAACznL,aAAa,CAAC,CAAC+kB,WAAW;IACjF,MAAMmjK,UAAU,GAAG96K,KAAK,CAAC5P,aAAa,CAAC,uCAAuC,CAAC;IAC/E0qL,UAAU,CAAC7pL,KAAK,CAACoK,OAAO,GAAG,SAAS;IACpCg/K,WAAW,CAACppL,KAAK,CAACiS,KAAK,GAAG43K,UAAU,CAAC33K,WAAW,GAAG,EAAE,GAAG,IAAI;IAC5D23K,UAAU,CAAC7pL,KAAK,CAACoK,OAAO,GAAG,MAAM;EACnC;EACA,SAAS0/K,yBAAyBA,CAAC/6K,KAAK,EAAE;IACxC,MAAMy6K,qBAAqB,GAAGz6K,KAAK,CAAC5P,aAAa,CAAC,+BAA+B,CAAC;IAClF,MAAMyqL,UAAU,GAAG76K,KAAK,CAAC5P,aAAa,CAAC,iDAAiD,CAAC;IACzFyqL,UAAU,CAACvtL,SAAS,GAChBmtL,qBAAqB,CAAChqL,OAAO,CAACgqL,qBAAqB,CAAC7nL,aAAa,CAAC,CAAC+kB,WAAW;IAClF,MAAMmjK,UAAU,GAAG96K,KAAK,CAAC5P,aAAa,CAAC,iDAAiD,CAAC;IACzF0qL,UAAU,CAAC7pL,KAAK,CAACoK,OAAO,GAAG,SAAS;IACpCo/K,qBAAqB,CAACxpL,KAAK,CAACiS,KAAK,GAAG43K,UAAU,CAAC33K,WAAW,GAAG,EAAE,GAAG,IAAI;IACtE23K,UAAU,CAAC7pL,KAAK,CAACoK,OAAO,GAAG,MAAM;EACnC;EAGE,eAAe2/K,gBAAgBA,CAACn8H,UAAU,EAAE;IAC1C06H,WAAW,GAAGppL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C6oL,WAAW,CAACvsL,SAAS,CAACE,GAAG,CAAC,MAAM,CAAC;IACjCqsL,WAAW,CAACtoL,KAAK,CAACwnB,MAAM,GAAG,MAAM;IAEjC,MAAMzY,KAAK,GAAG7P,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CsP,KAAK,CAACrP,EAAE,GAAG,WAAW;IACtBqP,KAAK,CAAChT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAE5BssL,eAAe,GAAGrpL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/C8oL,eAAe,CAAC7oL,EAAE,GAAG,QAAQ;IAC7B6oL,eAAe,CAACvoL,KAAK,CAACiS,KAAK,GAAG,OAAO;IACrCs2K,eAAe,CAACvoL,KAAK,CAACwnB,MAAM,GAAG,OAAO;IACtC+gK,eAAe,CAACvoL,KAAK,CAACgqL,MAAM,GAAG,GAAG;IAElCj7K,KAAK,CAACpS,WAAW,CAAC4rL,eAAe,CAAC;IAElCC,aAAa,GAAGtpL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C+oL,aAAa,CAACzsL,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAE5C,SAASguL,mBAAmBA,CAAA,EAAG;MAC7B,MAAMC,WAAW,GAAGhrL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACjDyqL,WAAW,CAACnuL,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;MACxC,MAAMkuL,YAAY,GAAGjrL,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;MACjD0qL,YAAY,CAACpuL,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MACrCkuL,YAAY,CAACzmL,SAAS,GAAG,oBAAoB;MAE7C0mL,mBAAmB,GAAGrnL,KAAK,CAACxD,KAAK,CAAC;QAChC8B,KAAK,EAAE,4BAA4B;QACnCP,KAAK,EAAE,EAAE;QACTb,IAAI,EAAE,UAAU;QAChBqB,QAAQ,EAAE,KAAK;QACff,UAAU,EAAE,UAAU;QACtB0C,SAAS,EAAE,IAAI;QACfY,cAAc,EAAE,IAAI;QACpB9C,QAAQ,EAAElE,KAAK,IAAI;UACjB60H,QAAQ,CAAC04D,mBAAmB,GAAGvtL,KAAK,CAACC,MAAM,CAACgE,KAAK;QACnD;MACF,CAAC,CAAC;MAEFupL,mBAAmB,GAAGtnL,KAAK,CAACxD,KAAK,CAAC;QAChC8B,KAAK,EAAE,gBAAgB;QACvBP,KAAK,EAAE,EAAE;QACTb,IAAI,EAAE,UAAU;QAChBqB,QAAQ,EAAE,KAAK;QACff,UAAU,EAAE,UAAU;QACtB0C,SAAS,EAAE,IAAI;QACfY,cAAc,EAAE,IAAI;QACpB9C,QAAQ,EAAElE,KAAK,IAAI;UACjB60H,QAAQ,CAAC24D,mBAAmB,GAAGxtL,KAAK,CAACC,MAAM,CAACgE,KAAK;QACnD;MACF,CAAC,CAAC;MAEFopL,WAAW,CAACvtL,WAAW,CAACwtL,YAAY,CAAC;MACrCD,WAAW,CAACvtL,WAAW,CAACytL,mBAAmB,CAAC;MAC5CF,WAAW,CAACvtL,WAAW,CAAC0tL,mBAAmB,CAAC;MAE5C,OAAOH,WAAW;IACpB;IAEA,SAAS/4D,qBAAqBA,CAAA,EAAG;MAC/B,MAAMm5D,kBAAkB,GAAGlC,oBAAoB,CAAC19K,MAAM,CACpD6/K,QAAQ,IAAIlC,oBAAoB,CAAC3iK,OAAO,CAAC6kK,QAAQ,CAACtzE,QAAQ,CAAC,GAAG,CAChE,CAAC;MACD,MAAMuzE,eAAe,GAAGpC,oBAAoB,CAAC19K,MAAM,CACjD6/K,QAAQ,IAAIlC,oBAAoB,CAAC3iK,OAAO,CAAC6kK,QAAQ,CAACtzE,QAAQ,CAAC,IAAI,CACjE,CAAC;MACD,MAAMwzE,0BAA0B,GAAGH,kBAAkB,CAACrkL,GAAG,CAAC8D,EAAE,IAAI;QAC9D,OAAO;UACLjJ,KAAK,EAAEiJ,EAAE,CAACktG,QAAQ;UAClBp3G,IAAI,EAAEkK,EAAE,CAACmtG;QACX,CAAC;MACH,CAAC,CAAC;MACF,MAAMwzE,uBAAuB,GAAGF,eAAe,CAACvkL,GAAG,CAAC8D,EAAE,IAAI;QACxD,OAAO;UACLjJ,KAAK,EAAEiJ,EAAE,CAACktG,QAAQ;UAClBp3G,IAAI,EAAEkK,EAAE,CAACmtG;QACX,CAAC;MACH,CAAC,CAAC;MACF,OAAO;QACLyzE,WAAW,EAAED,uBAAuB;QACpCE,cAAc,EAAEH;MAClB,CAAC;IACH;IACA,SAASI,kBAAkBA,CAAA,EAAG;MAC5B,MAAM5oL,IAAI,GAAGkmL,eAAe,CAACliL,GAAG,CAAC6kL,GAAG,IAAI;QACtC,OAAO;UACLhqL,KAAK,EAAEgqL,GAAG,CAACprL,EAAE;UACbG,IAAI,EAAEirL,GAAG,CAAC9lL;QACZ,CAAC;MACH,CAAC,CAAC;MAEF,IAAIsI,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;QAC3CvL,IAAI,CAAC49D,OAAO,CAAC;UAAE/+D,KAAK,EAAE,EAAE;UAAEjB,IAAI,EAAE;QAAkB,CAAC,CAAC;MACtD,CAAC,MAAM;QACLoC,IAAI,CAAC49D,OAAO,CAAC;UAAE/+D,KAAK,EAAE,EAAE;UAAEjB,IAAI,EAAE;QAAkB,CAAC,CAAC;MACtD;MAEA,OAAOoC,IAAI;IACb;IAEA,SAAS8oL,mBAAmBA,CAAC3B,WAAW,EAAEC,uBAAuB,EAAE;MACjE,MAAM2B,gCAAgC,GAAGH,kBAAkB,CAAC,CAAC;MAE7D3pL,QAAQ,CAAC5E,QAAQ,CAAC8sL,WAAW,EAAE4B,gCAAgC,EAAE3B,uBAAuB,CAAC;IAC3F;IAEA,SAAS4B,sBAAsBA,CAACh4E,cAAc,EAAEw2E,yBAAyB,EAAE;MACzE;MACA,MAAMyB,2BAA2B,GAAG/5D,qBAAqB,CAAC,CAAC;MAC3D,MAAMg6D,sBAAsB,GAAG,CAAC;QAAErqL,KAAK,EAAE,EAAE;QAAEjB,IAAI,EAAE;MAAsB,CAAC,CAAC;MAC3E,MAAMurL,gBAAgB,GAAG;QACvBxoL,UAAU,EAAE,wBAAwB;QACpCC,OAAO,EAAE,8CAA8C;QACvDC,cAAc,EAAEooL,2BAA2B,CAACP;MAC9C,CAAC;MACD,MAAMU,mBAAmB,GAAG;QAC1BzoL,UAAU,EAAE,iBAAiB;QAC7BC,OAAO,EAAE,iDAAiD;QAC1DC,cAAc,EAAEooL,2BAA2B,CAACN;MAC9C,CAAC;MAED,MAAMhqB,iBAAiB,GAAG,EAAE;MAC5B,IAAIsqB,2BAA2B,CAACP,WAAW,CAACnuL,MAAM,GAAG,CAAC,EAAE;QACtDokK,iBAAiB,CAACt2J,IAAI,CAAC8gL,gBAAgB,CAAC;MAC1C;MAEAxqB,iBAAiB,CAACt2J,IAAI,CAAC+gL,mBAAmB,CAAC;MAE3CnqL,QAAQ,CAACsB,gBAAgB,CAAC;QACxBtB,QAAQ,EAAE+xG,cAAc;QACxBhxG,IAAI,EAAE2+J,iBAAiB;QACvBl+J,cAAc,EAAEyoL,sBAAsB;QACtCjpL,UAAU,EAAEunL;MACd,CAAC,CAAC;IACJ;IAEA,SAAS6B,wBAAwBA,CAAA,EAAG;MAClC,MAAMC,kBAAkB,GAAGrsL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACxD8rL,kBAAkB,CAACxvL,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;MACtDsvL,kBAAkB,CAACxvL,SAAS,CAACE,GAAG,CAAC,sBAAsB,CAAC;;MAExD;MACA,MAAMuvL,wBAAwB,GAAGtsL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC9D+rL,wBAAwB,CAACzvL,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;MAEhE,MAAMwvL,4BAA4B,GAAGvqL,QAAQ,CAACW,WAAW,CAAC;QACxDV,UAAU,EAAE;MACd,CAAC,CAAC;MAEF4pL,mBAAmB,CAACU,4BAA4B,EAAEvD,WAAW,CAACwD,WAAW,CAAC;;MAE1E;MACAF,wBAAwB,CAACnvL,SAAS,GAAG,sFAAsF;MAC3HmvL,wBAAwB,CAAC7uL,WAAW,CAAC8uL,4BAA4B,CAAC;MAClED,wBAAwB,CAACnvL,SAAS,IAAI,qBAAqB;MAC3DkvL,kBAAkB,CAAC5uL,WAAW,CAAC6uL,wBAAwB,CAAC;MAExDD,kBAAkB,CAAClsL,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;QACrD;QACA,IAAIA,KAAK,CAACC,MAAM,CAACgE,KAAK,KAAK,IAAI,EAAE;UAC/B4wH,QAAQ,CAAC23D,uBAAuB,GAAGxsL,KAAK,CAACC,MAAM,CAACgE,KAAK;UACrD6oL,sBAAsB,CAACnB,aAAa,CAAC;UACrCmD,YAAY,CAAC,CAAC;QAChB;MACF,CAAC,CAAC;MAEF,MAAMC,0BAA0B,GAAG1sL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAChEmsL,0BAA0B,CAAC7vL,SAAS,CAACE,GAAG,CAAC,2BAA2B,EAAE,WAAW,CAAC;MAClF,CAAC,KAAK,EAAE,IAAI,CAAC,CAACQ,OAAO,CAAC4F,MAAM,IAAI;QAC9B,MAAMyC,KAAK,GAAG/B,KAAK,CAAC8B,UAAU,CAAC;UAC7BnF,EAAE,EAAE,gBAAgB2C,MAAM,EAAE;UAC5BxC,IAAI,EAAEwC,MAAM;UACZ2C,IAAI,EAAE,cAAc;UACpBjE,QAAQ,EAAEA,CAAA,KAAM;YACd2wH,QAAQ,CAACm6D,YAAY,GAAGxpL,MAAM,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG;YACpDupL,0BAA0B,CAAC7vL,SAAS,CAACC,MAAM,CAAC,WAAW,CAAC;YACxD2vL,YAAY,CAAC,CAAC;UAChB;QACF,CAAC,CAAC;QACFC,0BAA0B,CAACjvL,WAAW,CAACmI,KAAK,CAAC;MAC/C,CAAC,CAAC;MACFymL,kBAAkB,CAAC5uL,WAAW,CAACivL,0BAA0B,CAAC;MAE1D,MAAME,eAAe,GAAG5sL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACrDqsL,eAAe,CAAC/vL,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;;MAEhD;MACA,MAAMsF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,sBAAsB,CAAC;;MAE1C;MACA,MAAM8vL,mBAAmB,GAAG7sL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACzDssL,mBAAmB,CAAChwL,SAAS,CAACE,GAAG,CAAC,qBAAqB,CAAC;;MAExD;MACA,MAAM+vL,yBAAyB,GAAG9qL,QAAQ,CAACW,WAAW,CAAC;QACrDV,UAAU,EAAE;MACd,CAAC,CAAC;;MAEF;MACA8pL,sBAAsB,CAACe,yBAAyB,EAAE9D,WAAW,CAACjxE,QAAQ,CAAC;MAEvE60E,eAAe,CAACzsL,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;QAClD;QACA,IAAIA,KAAK,CAACC,MAAM,CAACgE,KAAK,KAAK,IAAI,EAAE;UAC/B4wH,QAAQ,CAAC+3D,yBAAyB,GAAG5sL,KAAK,CAACC,MAAM,CAACgE,KAAK;UACvDgpL,yBAAyB,CAACtB,aAAa,CAAC;UACxCmD,YAAY,CAAC,CAAC;QAChB;MACF,CAAC,CAAC;;MAEF;MACAI,mBAAmB,CAAC1vL,SAAS,GAAG,wCAAwC;MACxE0vL,mBAAmB,CAACpvL,WAAW,CAACqvL,yBAAyB,CAAC;MAC1DD,mBAAmB,CAAC1vL,SAAS,IAAI,iCAAiC;MAClEkF,IAAI,CAAC5E,WAAW,CAACovL,mBAAmB,CAAC;MACrCD,eAAe,CAACnvL,WAAW,CAAC4E,IAAI,CAAC;MAEjC,MAAM0qL,uBAAuB,GAAG/sL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC7DwsL,uBAAuB,CAAClwL,SAAS,CAACE,GAAG,CAAC,2BAA2B,EAAE,WAAW,CAAC;MAC/E,CAAC,KAAK,EAAE,IAAI,CAAC,CAACQ,OAAO,CAAC4F,MAAM,IAAI;QAC9B,MAAMyC,KAAK,GAAG/B,KAAK,CAAC8B,UAAU,CAAC;UAC7BnF,EAAE,EAAE,aAAa2C,MAAM,EAAE;UACzBxC,IAAI,EAAEwC,MAAM;UACZ2C,IAAI,EAAE,WAAW;UACjBjE,QAAQ,EAAEA,CAAA,KAAM;YACd2wH,QAAQ,CAACw6D,SAAS,GAAG7pL,MAAM,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG;YACjD4pL,uBAAuB,CAAClwL,SAAS,CAACC,MAAM,CAAC,WAAW,CAAC;YACrD2vL,YAAY,CAAC,CAAC;UAChB;QACF,CAAC,CAAC;QACFM,uBAAuB,CAACtvL,WAAW,CAACmI,KAAK,CAAC;MAC5C,CAAC,CAAC;MACFvD,IAAI,CAAC5E,WAAW,CAACsvL,uBAAuB,CAAC;MAEzC,MAAME,iBAAiB,GAAG;MACxB;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;QACEzsL,EAAE,EAAE,uBAAuB;QAC3BG,IAAI,EAAE,0EAA0E;QAChFL,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;QACtB0C,UAAU,EAAE;MACd,CAAC,EACD;QACExC,EAAE,EAAE,kBAAkB;QACtBG,IAAI,EAAE,+CAA+C;QACrDL,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;QACtB0C,UAAU,EAAE;MACd,CAAC,EACD;QACExC,EAAE,EAAE,eAAe;QACnBG,IAAI,EAAE,mGAAmG;QACzGL,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;QACtB0C,UAAU,EAAE;MACd,CAAC,EACD;QACExC,EAAE,EAAE,cAAc;QAClBG,IAAI,EAAE,8DAA8D;QACpEL,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;QACtB0C,UAAU,EAAE;MACd,CAAC,EACD;QACExC,EAAE,EAAE,iBAAiB;QACrBG,IAAI,EAAE,mDAAmD;QACzDL,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;QAC7B0C,UAAU,EAAE;MACd,CAAC,EACD;QACExC,EAAE,EAAE,cAAc;QAClBG,IAAI,EAAE,0CAA0C;QAChDL,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;QAC7B0C,UAAU,EAAE;MACd,CAAC,EACD;QACExC,EAAE,EAAE,sBAAsB;QAC1BG,IAAI,EAAE,uDAAuD;QAC7DL,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;QAC7B0C,UAAU,EAAE;MACd,CAAC,CACF;MAED,MAAMkqL,qBAAqB,GAAGltL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC3D2sL,qBAAqB,CAACrwL,SAAS,CAACE,GAAG,CAAC,uBAAuB,CAAC;MAE5DmwL,qBAAqB,CAACzvL,WAAW,CAAC4uL,kBAAkB,CAAC;MACrDa,qBAAqB,CAACzvL,WAAW,CAACmvL,eAAe,CAAC;MAElDK,iBAAiB,CAAC1vL,OAAO,CAAC4vL,QAAQ,IAAI;QACpC,MAAMC,iBAAiB,GAAGptL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvD6sL,iBAAiB,CAACvwL,SAAS,CAACE,GAAG,CAAC,sBAAsB,CAAC;QACvD,MAAMswL,YAAY,GAAGrtL,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QAChD8sL,YAAY,CAACxwL,SAAS,CAACE,GAAG,CAAC,sBAAsB,CAAC;QAClDswL,YAAY,CAAC7oL,SAAS,GAAG2oL,QAAQ,CAACxsL,IAAI;QAEtC,MAAM2sL,sBAAsB,GAAGttL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAC5D+sL,sBAAsB,CAACzwL,SAAS,CAACE,GAAG,CAAC,2BAA2B,CAAC;QAEjE,IAAIowL,QAAQ,CAACnqL,UAAU,KAAK,EAAE,EAAE;UAC9BsqL,sBAAsB,CAACzwL,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;QACnD;QAEAowL,QAAQ,CAAC7sL,OAAO,CAAC/C,OAAO,CAAC4F,MAAM,IAAI;UACjC,MAAMyC,KAAK,GAAG/B,KAAK,CAAC8B,UAAU,CAAC;YAC7BnF,EAAE,EAAE,GAAG2sL,QAAQ,CAAC3sL,EAAE,IAAI2C,MAAM,EAAE;YAC9BxC,IAAI,EAAEwC,MAAM;YACZ2C,IAAI,EAAEqnL,QAAQ,CAAC3sL,EAAE;YACjBqB,QAAQ,EAAEA,CAAA,KAAM;cACd,QAAQsB,MAAM;gBACZ,KAAK,KAAK;kBACRqvH,QAAQ,CAAC26D,QAAQ,CAAC3sL,EAAE,CAAC,GAAG,GAAG;kBAC3B;gBACF,KAAK,IAAI;kBACPgyH,QAAQ,CAAC26D,QAAQ,CAAC3sL,EAAE,CAAC,GAAG,GAAG;kBAC3B;gBACF,KAAK,KAAK;kBACRgyH,QAAQ,CAAC26D,QAAQ,CAAC3sL,EAAE,CAAC,GAAG,IAAI;kBAC5B;gBACF;kBACEgyH,QAAQ,CAAC26D,QAAQ,CAAC3sL,EAAE,CAAC,GAAG,EAAE;kBAC1B;cACJ;cACA8sL,sBAAsB,CAACzwL,SAAS,CAACC,MAAM,CAAC,WAAW,CAAC;cACpD2vL,YAAY,CAAC,CAAC;YAChB;UACF,CAAC,CAAC;UACFa,sBAAsB,CAAC7vL,WAAW,CAACmI,KAAK,CAAC;QAC3C,CAAC,CAAC;QAEFwnL,iBAAiB,CAAC3vL,WAAW,CAAC4vL,YAAY,CAAC;QAC3CD,iBAAiB,CAAC3vL,WAAW,CAAC6vL,sBAAsB,CAAC;QAErDJ,qBAAqB,CAACzvL,WAAW,CAAC2vL,iBAAiB,CAAC;MACtD,CAAC,CAAC;MAEF,OAAOF,qBAAqB;IAC9B;IAEA,SAASK,mBAAmBA,CAAA,EAAG;MAC7B,MAAMC,WAAW,GAAGxtL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACjDitL,WAAW,CAAC3wL,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;MAExC,MAAM0wL,aAAa,GAAGztL,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;MAClDktL,aAAa,CAAC5wL,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MACtC0wL,aAAa,CAACjpL,SAAS,GAAG,oBAAoB;MAC9CgpL,WAAW,CAAC/vL,WAAW,CAACgwL,aAAa,CAAC;MAEtC,MAAMR,iBAAiB,GAAGb,wBAAwB,CAAC,CAAC;MAEpDoB,WAAW,CAAC/vL,WAAW,CAACwvL,iBAAiB,CAAC;MAE1C,OAAOO,WAAW;IACpB;IAEA,SAASf,YAAYA,CAAA,EAAG;MACtB,MAAMrmL,MAAM,GAAGpG,QAAQ,CAACqG,gBAAgB,CAAC,gDAAgD,CAAC;MAC1F,MAAMqnL,cAAc,GAAG1tL,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;MAChE,MAAMinL,WAAW,GAAGlqL,QAAQ,CAACiD,cAAc,CAAC,oBAAoB,CAAC;MACjE,MAAM8wG,cAAc,GAAG/zG,QAAQ,CAACiD,cAAc,CAAC,8BAA8B,CAAC;MAE9E,IAAI0qL,SAAS,GAAG,IAAI;MAEpBvnL,MAAM,CAAC7I,OAAO,CAACqI,KAAK,IAAI;QACtB,MAAME,IAAI,GAAGF,KAAK,CAACE,IAAI;QACvB,IAAI,CAAC9F,QAAQ,CAACC,aAAa,CAAC,eAAe6F,IAAI,YAAY,CAAC,EAAE;UAC5D6nL,SAAS,GAAG,KAAK;QACnB;MACF,CAAC,CAAC;MAEF,IAAIzD,WAAW,IAAIn2E,cAAc,EAAE;QACjC,IAAIm2E,WAAW,CAACtoL,KAAK,KAAK,EAAE,IAAImyG,cAAc,CAACnyG,KAAK,KAAK,EAAE,EAAE;UAC3D+rL,SAAS,GAAG,KAAK;QACnB;MACF;MAEA,IAAID,cAAc,CAAC9rL,KAAK,KAAK,EAAE,IAAI,CAAC+rL,SAAS,EAAE;QAC7C,IAAI,CAACv/I,SAAS,CAACvxC,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC7CyjC,SAAS,CAACvxC,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC;QACAqxC,SAAS,CAACp5B,QAAQ,GAAG,IAAI;MAC3B,CAAC,MAAM;QACLo5B,SAAS,CAACvxC,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACtCsxC,SAAS,CAACp5B,QAAQ,GAAG,KAAK;MAC5B;IACF;IAEAo5B,SAAS,GAAGhuC,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,eAAe;MACnBG,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB,MAAM+rL,eAAe,GAAG,MAAM13J,KAAK,CAACu4B,SAAS,CAAC,uBAAuB,EAAE;UAAE+jE;QAAS,CAAC,CAAC;QAEpF,MAAMq7D,iBAAiB,GAAG7tL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACvDstL,iBAAiB,CAAChxL,SAAS,CAACE,GAAG,CAAC,OAAO,EAAE,mBAAmB,CAAC;QAE7D,IAAI+wL,SAAS,GAAG9tL,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QAC3CutL,SAAS,CAACtmK,WAAW,GACnB,gNAAgN;QAElN,MAAMumK,eAAe,GAAG3tL,MAAM,CAACC,KAAK,CAAC;UACnCG,EAAE,EAAE,iBAAiB;UACrBG,IAAI,EAAE,eAAe;UACrBG,KAAK,EAAE,WAAW;UAClBC,IAAI,EAAE,WAAW;UACjBc,QAAQ,EAAEA,CAAA,KAAM;YACd0nL,sBAAsB,CAAC76H,UAAU,CAAC;UACpC;QACF,CAAC,CAAC;QAEF,IAAIniB,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;QAChCwvC,OAAO,CAAC9uC,WAAW,CAACqwL,SAAS,CAAC;QAC9BvhJ,OAAO,CAAC9uC,WAAW,CAACswL,eAAe,CAAC;QAEpCF,iBAAiB,CAACpwL,WAAW,CAACqwL,SAAS,CAAC;QACxCD,iBAAiB,CAACpwL,WAAW,CAAC8uC,OAAO,CAAC;QACtC,MAAMr/B,OAAO,GAAGlN,QAAQ,CAACC,aAAa,CAAC,UAAU,CAAC;QAClDiN,OAAO,CAACrQ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;QAEhC,MAAMixL,SAAS,GAAGhuL,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC;QACtD+qL,SAAS,CAAClxL,MAAM,CAAC,CAAC;QAElBkD,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAACowL,iBAAiB,CAAC;MAC9C;IACF,CAAC,CAAC;IACFz/I,SAAS,CAACvxC,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAEnC,IACEisL,WAAW,CAACiF,cAAc,KAAK,iBAAiB,IAChDjF,WAAW,CAACiF,cAAc,KAAK,QAAQ,IACvCjF,WAAW,CAACiF,cAAc,KAAK,UAAU,IACzCjF,WAAW,CAACiF,cAAc,KAAK,kBAAkB,EACjD;MACAlF,SAAS,GAAGwE,mBAAmB,CAAC,CAAC;MACjCjE,aAAa,CAAC7rL,WAAW,CAACsrL,SAAS,CAAC;IACtC;IACA,MAAMmF,iBAAiB,GAAGnD,mBAAmB,CAAC,CAAC;IAE/CzB,aAAa,CAAC7rL,WAAW,CAACywL,iBAAiB,CAAC;IAE5C,MAAMC,gBAAgB,GAAGnuL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtD4tL,gBAAgB,CAAC3tL,EAAE,GAAG,kBAAkB;IAExC,MAAMktL,cAAc,GAAG7pL,KAAK,CAACxD,KAAK,CAAC;MACjCG,EAAE,EAAE,gBAAgB;MACpBO,IAAI,EAAE,OAAO;MACboB,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE;IACT,CAAC,CAAC;IAEF4sL,cAAc,CAAC7wL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAE1C2wL,cAAc,CAACvtL,gBAAgB,CAAC,OAAO,EAAE,UAAUxC,KAAK,EAAE;MACxD,MAAMiE,KAAK,GAAGjE,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChCusL,gBAAgB,CAAC3mK,WAAW,GAAG5lB,KAAK;MAEpC,IAAIA,KAAK,KAAK,EAAE,EAAE;QAChB8rL,cAAc,CAAC7wL,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;MAC5C,CAAC,MAAM;QACL2wL,cAAc,CAAC7wL,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MAC/C;MAEA2vL,YAAY,CAAC,CAAC;IAClB,CAAC,CAAC;IAGAnD,aAAa,CAAC7rL,WAAW,CAAC0wL,gBAAgB,CAAC;IAC3C7E,aAAa,CAAC7rL,WAAW,CAACiwL,cAAc,CAAC;IAEzC79K,KAAK,CAACpS,WAAW,CAAC6rL,aAAa,CAAC;IAChCA,aAAa,CAAC7rL,WAAW,CAAC2wC,SAAS,CAAC;IAEpCg7I,WAAW,CAAC3rL,WAAW,CAACoS,KAAK,CAAC;IAC9B7P,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAAC2rL,WAAW,CAAC;IACtC;;IAEAv5K,KAAK,CAAC/O,KAAK,CAACoK,OAAO,GAAG,OAAO;IAE7Bs+K,eAAe,CAAC4E,wBAAwB,CAAC1/H,UAAU,EAAE26H,eAAe,CAAC;EACvE;EAEA,eAAenpL,IAAIA,CAACwuD,UAAU,EAAE;IAC9B,MAAM2/H,iBAAiB,GAAG,MAAMn4J,KAAK,CAACu4B,SAAS,CAAC,gBAAgB,EAAE;MAAEC;IAAW,CAAC,CAAC;IACjFs6H,WAAW,GAAGqF,iBAAiB,CAACC,oBAAoB;IAEpD97D,QAAQ,GAAG;MACT45B,QAAQ,EAAE48B,WAAW,CAAC58B,QAAQ;MAC9BmiC,MAAM,EAAEvF,WAAW,CAACuF,MAAM;MAC1B5B,YAAY,EAAE,EAAE;MAChBxC,uBAAuB,EAAE,EAAE;MAC3B6C,SAAS,EAAE,EAAE;MACbzC,yBAAyB,EAAE,EAAE;MAC7BiE,cAAc,EAAE,EAAE;MAClBC,gBAAgB,EAAE,EAAE;MACpBC,aAAa,EAAE,EAAE;MACjBC,eAAe,EAAE,EAAE;MACnBC,YAAY,EAAE,EAAE;MAChBC,oBAAoB,EAAE,EAAE;MACxBC,qBAAqB,EAAE,EAAE;MACzBC,YAAY,EAAE,EAAE;MAChB7D,mBAAmB,EAAE,EAAE;MACvBC,mBAAmB,EAAE,EAAE;MACvB78K,eAAe,EAAE06K,WAAW,CAAC16K;IAC/B,CAAC;IAED,eAAe0gL,gBAAgBA,CAAA,EAAG;MAChC9F,oBAAoB,GAAG,MAAM+F,kBAAkB,CAACC,6BAA6B,CAAC;QAC5EtiJ,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtBy4I,QAAQ,EAAEnG,WAAW,CAAC58B;MACxB,CAAC,CAAC;MACF;MACA68B,eAAe,GAAG,MAAMgG,kBAAkB,CAACG,0BAA0B,CAAC;QACpExiJ,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;MACnB,CAAC,CAAC;IACJ;IAEA,MAAMs4I,gBAAgB,CAAC,CAAC;IAExB7F,oBAAoB,GAAGkG,gBAAgB,CAACC,oBAAoB,CAAC,CAAC;IAE9DzE,gBAAgB,CAACn8H,UAAU,CAAC;IAE5B,MAAMw7H,WAAW,GAAGlqL,QAAQ,CAACiD,cAAc,CAAC,oBAAoB,CAAC;IACjE,MAAM8wG,cAAc,GAAG/zG,QAAQ,CAACiD,cAAc,CAAC,8BAA8B,CAAC;;IAE9E;IACA,IAAIinL,WAAW,EAAE;MACf,MAAMA,WAAW,GAAGlqL,QAAQ,CAACiD,cAAc,CAAC,oBAAoB,CAAC;MACjEgnL,0BAA0B,CAACC,WAAW,EAAElB,WAAW,CAACwD,WAAW,CAAC;IAClE;IAEA,IAAIz4E,cAAc,EAAE;MAClB,MAAMA,cAAc,GAAG/zG,QAAQ,CAACiD,cAAc,CAAC,8BAA8B,CAAC;MAC/EonL,6BAA6B,CAACt2E,cAAc,EAAEi1E,WAAW,CAACjxE,QAAQ,CAAC;IACpE;EACF;EAEA,OAAO;IACL73G;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC7mBJ,IAAIspL,eAAe,GAAI,YAAY;EAEjC,eAAe4E,wBAAwBA,CAAC1/H,UAAU,EAAE06H,WAAW,EAAE;IAC/D,MAAMx8I,KAAK,GAAGx+B,CAAC,CAACC,OAAO,CAACu+B,KAAK;;IAE7B;IACA,IAAI/8B,KAAK,GAAG7P,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzCsP,KAAK,CAAChT,SAAS,CAACE,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC;;IAEhD;IACAuU,WAAW,GAAGtR,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C+Q,WAAW,CAACzU,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACpCwU,cAAc,GAAGvR,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC7CgR,cAAc,CAAC1U,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAChD,IAAIyU,UAAU,GAAGxR,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9CiR,UAAU,CAAC3U,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IACxCwU,cAAc,CAACpU,SAAS,GAAG,mBAAmB;IAC9CmU,WAAW,CAAC7T,WAAW,CAAC+T,UAAU,CAAC;IACnCF,WAAW,CAAC7T,WAAW,CAAC8T,cAAc,CAAC;IAEvC1B,KAAK,CAACpS,WAAW,CAAC6T,WAAW,CAAC;IAE9B83K,WAAW,CAAC3rL,WAAW,CAACoS,KAAK,CAAC;IAE9B,IAAI;MACF,MAAMs9C,QAAQ,GAAG,MAAM/+C,CAAC,CAAC2+C,IAAI,CAAC;QAC5BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,yBAAyB;QAC5IxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UAAEikC;QAAW,CAAC,CAAC;QACpC1B,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,IAAI9qB,GAAG,GAAG+qB,QAAQ,CAACoiI,2BAA2B;MAE9C,MAAMC,SAAS,CAAC;QACdC,IAAI,EAAE,iBAAiB;QAAE;QACzBC,UAAU,EAAE,kMAAkM;QAC9MC,YAAY,EAAE;MAChB,CAAC,EAAE3vL,QAAQ,CAACiD,cAAc,CAAC,QAAQ,CAAC,CAAC,CAClC6rH,IAAI,CAAC8gE,QAAQ,IAAI;QAChB,IAAIC,OAAO,GAAGD,QAAQ,CAACE,EAAE,CAACD,OAAO;QACjCD,QAAQ,CAACE,EAAE,CAACC,UAAU,CAACF,OAAO,CAACG,QAAQ,CAAC;QACxCJ,QAAQ,CAACE,EAAE,CAACG,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC;QAExC,MAAMC,SAAS,GAAGN,QAAQ,CAACO,IAAI,CAACC,cAAc;QAC9C,MAAMC,YAAY,GAAGT,QAAQ,CAACO,IAAI,CAACG,iBAAiB;QAEpDV,QAAQ,CAACE,EAAE,CAACS,cAAc,CAACvgL,MAAM,IAAI;UACnCA,MAAM,CAAC5E,IAAI,CAAC;YACVrK,IAAI,EAAE,cAAc;YACpByvL,GAAG,EAAE,YAAY;YACjBx3G,KAAK,EAAE,cAAc;YACrB7jE,OAAO,EAAE,MAAAA,CAAA,KAAY,CAAE;UACzB,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,MAAMs7K,YAAY,GAAGjiL,MAAM,CAACkiL,IAAI,CAACtuJ,GAAG,CAAC;QACrC,MAAM1C,GAAG,GAAG+wJ,YAAY,CAACnzL,MAAM;QAC/B,MAAMmuI,KAAK,GAAG,IAAIx/E,UAAU,CAACvsB,GAAG,CAAC;QAEjC,KAAK,IAAIx3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGw3B,GAAG,EAAE,EAAEx3B,CAAC,EAAE;UAC5BujI,KAAK,CAACvjI,CAAC,CAAC,GAAGuoL,YAAY,CAACxmK,UAAU,CAAC/hB,CAAC,CAAC;QACvC;QAEA,MAAM0hL,IAAI,GAAG,IAAIj9J,IAAI,CAAC,CAAC8+G,KAAK,CAAC,EAAE;UAAE1qI,IAAI,EAAE;QAAkB,CAAC,CAAC;QAC3D6uL,QAAQ,CAACO,IAAI,CAACC,cAAc,CAACO,YAAY,CAAC/G,IAAI,EAAE;UAAEgH,QAAQ,EAAE;QAAa,CAAC,CAAC;QAC3EhB,QAAQ,CAACE,EAAE,CAACG,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC;QAE5CC,SAAS,CAAC/vL,gBAAgB,CAAC,gBAAgB,EAAE,YAAY;UACvD,IAAI;YACF,MAAM0wL,GAAG,GAAGX,SAAS,CAACY,WAAW,CAAC,CAAC;YACnC,MAAMC,UAAU,GAAG,MAAMV,YAAY,CAACW,iBAAiB,CAAC,CAAC;YAEzD,MAAMH,GAAG,CAACI,WAAW,CAAC;cACpB;cACAF;YACF,CAAC,CAAC;UAEJ,CAAC,CAAC,OAAOhiL,KAAK,EAAE;YACd,MAAM,IAAIod,KAAK,CAAC,4BAA4B,CAAC;UAC/C;QACF,CAAC,CAAC;MACJ,CAAC,CAAC;MAGJ,IAAItc,KAAK,GAAG7P,QAAQ,CAACC,aAAa,CAAC,mBAAmB,CAAC;MACvDmpL,WAAW,CAACh6K,WAAW,CAACS,KAAK,CAAC;MAE9B,OAAO,SAAS;IAClB,CAAC,CAAC,OAAOd,KAAK,EAAE;MACd,IAAIc,KAAK,GAAG7P,QAAQ,CAACC,aAAa,CAAC,mBAAmB,CAAC;MACvDmpL,WAAW,CAACh6K,WAAW,CAACS,KAAK,CAAC;MAE9B,OAAO,OAAO;IAChB;EACF;EAEA,SAAS45K,0BAA0BA,CAACxuE,YAAY,EAAEp5G,QAAQ,EAAE;IAC1D,IAAIqM,MAAM,GAAG,GAAGE,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,MAAMh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,IAAIj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,IAAIl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,8BAA8B;IAC1I,IAAIygF,eAAe,GAAG,SAAAA,CAAU7b,IAAI,EAAE;MACpC,IAAI7pE,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;MAClCtrD,QAAQ,CAAC,CAAC;IACZ,CAAC;IAED,IAAI0Y,IAAI,GAAGva,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IACzCga,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAEiN,MAAM,CAAC;IACnCqM,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IACnCsZ,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrCsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;IACpCsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE+qI,eAAe,CAAC;IAE7C,IAAIklD,eAAe,GAAGlxL,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACrD2wL,eAAe,CAACjwL,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7CiwL,eAAe,CAACjwL,YAAY,CAAC,OAAO,EAAEg6G,YAAY,CAACvsD,UAAU,CAAC;IAC9DwiI,eAAe,CAAC1wL,EAAE,GAAG,YAAY;IAEjC+Z,IAAI,CAAC9c,WAAW,CAACyzL,eAAe,CAAC;IAEjC32K,IAAI,CAACzZ,KAAK,CAACsH,QAAQ,GAAG,UAAU;IAChCmS,IAAI,CAACzZ,KAAK,CAAC+nF,OAAO,GAAG,GAAG;IACxB7oF,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAAC8c,IAAI,CAAC;IAE/BA,IAAI,CAAC4sH,MAAM,CAAC,CAAC;EACf;EAEA,OAAO;IACLinD,wBAAwB;IACxB3E;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AClIJ,MAAMjqL,KAAK,GAAI,YAAY;EACvB,IAAI2xL,UAAU;EACd,IAAIC,kBAAkB;EACtB,IAAIC,SAAS;EACb,IAAIllF,WAAW;EACf,IAAI0H,aAAa;EACjB,IAAIy9E,UAAU;EACd,IAAI39E,gBAAgB;EACpB,IAAI49E,YAAY;;EAEhB;EACA,IAAIC,UAAU;EACd,IAAIC,MAAM;EACV,IAAIC,gBAAgB;EACpB,IAAIv9C,YAAY;EAChB,IAAIw9C,OAAO;EACX,IAAIC,OAAO,GAAG,EAAE;EAEhB,eAAezzL,oBAAoBA,CAACP,MAAM,EAAE;IACxC,MAAMiuG,YAAY,GAAGjuG,MAAM,CAACC,OAAO,CAACC,SAAS;IAE7C,QAAQ+tG,YAAY;MAChB,KAAK,gBAAgB;QAAE;UACnB38F,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;UACvB3oB,GAAG,CAACC,iBAAiB,CAAC,CAAC;UACvBwkG,gBAAgB,GAAG7H,OAAO,CAACC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;UAClD,MAAM8lF,mBAAmB,CAAC,CAAC;UAC3B3iL,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrB;QACJ;MACA,KAAK,kBAAkB;QAAE;UACrBloB,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrBnqB,OAAO,CAAC,MAAM,CAAC;UACf;QACJ;IACJ;EACJ;EACA;EACA,eAAe4kL,mBAAmBA,CAAA,EAAG;IACjC3iL,GAAG,CAACC,iBAAiB,CAAC,CAAC;IAEvBg9F,WAAW,GAAGnsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C4rG,WAAW,CAACtvG,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAE5C,MAAMg+G,YAAY,GAAG1B,iBAAiB,CAAC,CAAC;IACxCi4E,UAAU,GAAGQ,eAAe,CAAC,CAAC;IAE9B,IAAIxnF,YAAY,GAAG;MAAEynF,aAAa,EAAEp+E,gBAAgB,CAACnzG;IAAG,CAAC;IACzD+qK,UAAU,GAAG5Y,eAAe,CAACwY,sBAAsB,CAAC,CAChD;MAAExqK,IAAI,EAAE,4BAA4B;MAAE2pG;IAAa,CAAC,CACvD,CAAC;IAEF,MAAM/9D,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,sBAAsB,CAAC;IAE7CovG,WAAW,CAAC1uG,WAAW,CAACs9G,YAAY,CAAC;IACrC5O,WAAW,CAAC1uG,WAAW,CAAC8uC,OAAO,CAAC;IAChCA,OAAO,CAAC9uC,WAAW,CAAC6zL,UAAU,CAAC;IAC/B/kJ,OAAO,CAAC9uC,WAAW,CAAC8tK,UAAU,CAAC;IAE/B13D,aAAa,GAAG,MAAMqF,kBAAkB,CAAC,CAAC;IAC1C/M,WAAW,CAAC1uG,WAAW,CAACo2G,aAAa,CAAC;IAEtC3kG,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC0uG,WAAW,CAAC;EAC7C;;EAEA;EACA,eAAe+M,kBAAkBA,CAAA,EAAG;IAChC,MAAMjS,YAAY,GAAG;MACjBjzF,KAAK,EAAE,KAAK;MACZZ,OAAO,EAAE,oBAAoB;MAC7BgB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,CAAC;MAC1EM,OAAO,EAAE;IACb,CAAC;;IAED;IACA;IACA,IAAIs9K,oBAAoB,GAAG5jL,CAAC,CAACC,OAAO,CAACqyC,aAAa,GAAG,GAAG,GAAG,GAAG;IAC9D,MAAM;MAAEuxI,sBAAsB,EAAEC;IAAc,CAAC,GAAG,MAAMC,SAAS,CAACC,qBAAqB,CACnFhkL,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAChBomE,gBAAgB,CAACnzG,EAAE,EACnBwxL,oBACJ,CAAC;IACD;IACAE,aAAa,CAAC30L,OAAO,CAAC,UAAU80L,YAAY,EAAE;MAC1C,IAAIt6D,OAAO,GAAG,IAAIhhH,IAAI,CAACs7K,YAAY,CAACC,gBAAgB,CAAC;MACrD,IAAIv1C,QAAQ,GAAGhlB,OAAO,CAAC90G,QAAQ,CAAC,CAAC,GAAG,CAAC;MACrC,IAAIsvK,kBAAkB,GAClB7hK,IAAI,CAAC5B,WAAW,CAACiuH,QAAQ,CAAC,GAC1B,GAAG,GACHrsH,IAAI,CAAC5B,WAAW,CAACipG,OAAO,CAAC70G,OAAO,CAAC,CAAC,CAAC,GACnC,GAAG,GACH60G,OAAO,CAAC/0G,WAAW,CAAC,CAAC;MACzBqvK,YAAY,CAACC,gBAAgB,GAAGC,kBAAkB;IACtD,CAAC,CAAC;IAEF,IAAI/kF,SAAS,GAAG0kF,aAAa,CAACnrL,GAAG,CAACsrL,YAAY,KAAK;MAC/C/8K,MAAM,EAAE,CACJ,GAAG1U,KAAK,CAAC,SAAS,CAAC,EAAE,EACrByxL,YAAY,CAACG,QAAQ,GAAG,MAAM,GAAGH,YAAY,CAACI,eAAe,EAC7DJ,YAAY,CAACC,gBAAgB,EAC7BD,YAAY,CAACK,eAAe,EAC5BL,YAAY,CAACM,eAAe,CAC/B;MACDj+K,OAAO,EAAEtG,CAAC,CAACC,OAAO,CAACgyC,WAAW,IAAIjyC,CAAC,CAACC,OAAO,CAACkyC,WAAW,GAAG,GAAG3/C,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI;MACnFJ,EAAE,EAAE6xL,YAAY,CAACO,MAAM;MACvBnxL,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,cAAc;QAAEC,KAAK,EAAEywL,YAAY,CAACO;MAAO,CAAC,CAAC;MACjEn9K,eAAe,EAAElT,CAAC,IAAI;QAClBA,CAAC,CAAC8I,eAAe,CAAC,CAAC;QACnB,IAAI;UACA,IAAI4mK,QAAQ,GAAGjyK,QAAQ,CAACiD,cAAc,CAACovL,YAAY,CAACO,MAAM,CAAC;UAC3DC,aAAa,CAACR,YAAY,CAACO,MAAM,EAAEP,YAAY,CAACC,gBAAgB,EAAErgB,QAAQ,CAAC;UAC3E;UACA;QACJ,CAAC,CAAC,OAAOvjB,GAAG,EAAE;UACV3jJ,OAAO,CAACgE,KAAK,CAAC,SAAS,EAAE2/I,GAAG,CAAC;QACjC;MACJ,CAAC;MACDv5I,OAAO,EAAEA,CAAA,KAAM;QACX,IAAI29K,UAAU,GAAG,GAAG;QACpB,IAAIC,cAAc,GAAG,GAAG,CAAC,CAAC;QAC1B,IAAIlwI,UAAU,GAAG8wD,gBAAgB,CAACnzG,EAAE;QACpC,IAAIwyL,SAAS,GAAG,KAAK;QACrB,IAAIJ,MAAM,GAAGP,YAAY,CAACO,MAAM;QAChC,IAAIN,gBAAgB,GAAGD,YAAY,CAACC,gBAAgB;QAEpDzH,gBAAgB,CACZ+H,MAAM,EACNG,cAAc,EACdlwI,UAAU,EACVmwI,SAAS,EACTF,UAAU,EACVR,gBACJ,CAAC;MACL;IACJ,CAAC,CAAC,CAAC;IAEH,MAAMhzE,MAAM,GAAGpsG,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAExC;IACA,MAAMzwF,OAAO,GAAG8oG,MAAM,CAACj5G,gBAAgB,CAAC,aAAa,CAAC;IACtDmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAGhD;IACAiS,KAAK,CAACqD,iBAAiB,CAAC+oG,MAAM,CAAC;IAE/BpsG,KAAK,CAAC9V,QAAQ,CAACkiH,MAAM,EAAE9R,SAAS,CAAC;IAEjC,OAAO8R,MAAM;EACjB;EAEA,SAASjG,iBAAiBA,CAAA,EAAG;IACzB1F,gBAAgB,CAAC2F,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAErD,MAAMuF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEtCsF,IAAI,CAAC5E,WAAW,CAACk2G,gBAAgB,CAAC2F,IAAI,CAAC;IAEvC,OAAOj3G,IAAI;EACf;EAEA,SAASyvL,eAAeA,CAAA,EAAG;IACvB,OAAO1xL,MAAM,CAACC,KAAK,CAAC;MAChBM,IAAI,EAAE,cAAc;MACpBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC+M,CAAC,CAACC,OAAO,CAACiyC,WAAW,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC;MAClEz+C,QAAQ,EAAEA,CAAA,KAAMoxL,mBAAmB,CAAC;IACxC,CAAC,CAAC;EACN;;EAEA;EACA,SAASA,mBAAmBA,CAAA,EAAG;IAC3B,IAAIC,mBAAmB,GAAGnjL,KAAK,CAAC1P,KAAK,CAAC;MAClC2P,MAAM,EAAE,iBAAiB;MACzBO,KAAK,EAAE,IAAI;MACX/P,EAAE,EAAE;IACR,CAAC,CAAC;IAEF2zI,YAAY,GAAGnyI,QAAQ,CAAC3B,KAAK,CAAC;MAC1B8B,KAAK,EAAE,WAAW;MAClBF,UAAU,EAAE;IAChB,CAAC,CAAC;IAEFyvL,gBAAgB,GAAG1vL,QAAQ,CAAC3B,KAAK,CAAC;MAC9B8B,KAAK,EAAE,gBAAgB;MACvBF,UAAU,EAAE;IAChB,CAAC,CAAC;IAEF,IAAI81H,OAAO,GAAG,IAAIhhH,IAAI,CAAC,CAAC;IACxB,IAAIgmI,QAAQ,GAAGhlB,OAAO,CAAC90G,QAAQ,CAAC,CAAC,GAAG,CAAC;IACrC,IAAIqvK,gBAAgB,GAChB5hK,IAAI,CAAC5B,WAAW,CAACiuH,QAAQ,CAAC,GAC1B,GAAG,GACHrsH,IAAI,CAAC5B,WAAW,CAACipG,OAAO,CAAC70G,OAAO,CAAC,CAAC,CAAC,GACnC,GAAG,GACH60G,OAAO,CAAC/0G,WAAW,CAAC,CAAC;IAEzB,IAAImwK,gBAAgB,GAAGp7D,OAAO;IAE9B,IAAIq7D,iBAAiB,GAAGvvL,KAAK,CAACxD,KAAK,CAAC;MAChCU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,iBAAiB;MACxBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE8uB,IAAI,CAACkY,eAAe,CAAC0pJ,gBAAgB,CAACnxK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC1D;IACJ,CAAC,CAAC;IAEFiyK,iBAAiB,CAACjzL,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAClDw1L,gBAAgB,GAAGx1L,KAAK,CAACC,MAAM,CAACgE,KAAK;MACrC;MACA,IAAIuxL,gBAAgB,KAAK,EAAE,EAAE;QACzBC,iBAAiB,CAACv2L,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MAC5C,CAAC,MAAM;QACHq2L,iBAAiB,CAACv2L,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC/C;MACAosJ,YAAY,CAAC,CAAC;IAClB,CAAC,CAAC;IAEFyoC,OAAO,GAAGvxL,MAAM,CAACC,KAAK,CAAC;MACnBG,EAAE,EAAE,eAAe;MACnBG,IAAI,EAAE,MAAM;MACZI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMwxL,oBAAoB,CAACF,gBAAgB;IACzD,CAAC,CAAC;IACF,IAAI,CAACG,UAAU,GAAG3B,OAAO;IAEzB,IAAIjjJ,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MACzBG,EAAE,EAAE,iBAAiB;MACrBG,IAAI,EAAE,QAAQ;MACdI,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAM0xL,sBAAsB,CAAC;IAC3C,CAAC,CAAC;IAEF,IAAIhnJ,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACk0L,OAAO,CAAC;IAC5BplJ,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAC9BwkJ,mBAAmB,CAACz1L,WAAW,CAAC02I,YAAY,CAAC;IAC7C++C,mBAAmB,CAACz1L,WAAW,CAACi0L,gBAAgB,CAAC;IACjDwB,mBAAmB,CAACz1L,WAAW,CAAC21L,iBAAiB,CAAC;IAClDF,mBAAmB,CAACz1L,WAAW,CAAC8uC,OAAO,CAAC;IAExCinJ,oBAAoB,CAAC,CAAC;IACtBp+C,gBAAgB,CAAC,GAAG,CAAC;;IAErB;IACAo8C,UAAU,GAAGE,gBAAgB,CAAC9vL,KAAK;IACnC,IAAI4vL,UAAU,KAAK,EAAE,IAAIA,UAAU,KAAKltL,SAAS,EAAE;MAC/CotL,gBAAgB,CAAC70L,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC3C,CAAC,MAAM20L,gBAAgB,CAAC70L,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAEjD40L,gBAAgB,CAACvxL,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC7CivL,UAAU,GAAGjvL,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MAC3B6xL,0BAA0B,CAAC,CAAC;MAC5BvqC,YAAY,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF/U,YAAY,CAACh0I,gBAAgB,CAAC,QAAQ,EAAE,MAAMoC,CAAC,IAAI;MAC/CkvL,MAAM,GAAGlvL,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACvB,MAAMwzI,gBAAgB,CAACq8C,MAAM,CAAC;MAC9BgC,0BAA0B,CAAC,CAAC;MAC5BvqC,YAAY,CAAC,CAAC;IAClB,CAAC,CAAC;IAEFn5I,KAAK,CAAC9S,IAAI,CAACi2L,mBAAmB,CAAC;IAC/BhqC,YAAY,CAAC,CAAC;EAClB;EAEA,SAASuqC,0BAA0BA,CAAA,EAAG;IAClC,IAAIC,uBAAuB,GAAG1zL,QAAQ,CAACiD,cAAc,CAAC,kBAAkB,CAAC;IACzEuuL,UAAU,GAAGkC,uBAAuB,CAACpzL,OAAO,CAACozL,uBAAuB,CAACjxL,aAAa,CAAC,CAACb,KAAK;IACzF,IAAI4vL,UAAU,KAAK,EAAE,EAAE;MACnBE,gBAAgB,CAAC70L,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACvC;IACJ,CAAC,MAAM;MACH20L,gBAAgB,CAAC70L,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC9C;EACJ;EAEA,SAASosJ,YAAYA,CAAA,EAAG;IACpB,IAAI32C,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAElE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxBq0L,OAAO,CAAC90L,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC,CAAC,MAAM;MACH40L,OAAO,CAAC90L,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC;EACJ;;EAEA;EACA,SAASu2L,oBAAoBA,CAACM,YAAY,EAAE;IACxC5jL,KAAK,CAAC/S,IAAI,CAACk2L,mBAAmB,CAAC;IAC/B,IAAIJ,UAAU,GAAG,GAAG;IACpB,IAAIC,cAAc,GAAG,GAAG,CAAC,CAAC;IAC1B,IAAIlwI,UAAU,GAAG8wD,gBAAgB,CAACnzG,EAAE;IACpC,IAAIwyL,SAAS,GAAG,KAAK;IACrB,IAAIJ,MAAM,GAAGpB,UAAU;IAEvBhyL,KAAK,CAACqrL,gBAAgB,CAAC+H,MAAM,EAAEG,cAAc,EAAElwI,UAAU,EAAEmwI,SAAS,EAAEF,UAAU,EAAEa,YAAY,CAAC;EACnG;;EAEA;EACA,SAASJ,sBAAsBA,CAAA,EAAG;IAC9BxjL,KAAK,CAAC/S,IAAI,CAACk2L,mBAAmB,CAAC;EACnC;;EAEA;EACA,eAAeM,oBAAoBA,CAAA,EAAG;IAClC,MAAM;MACFI,iBAAiB,EAAEC;IACvB,CAAC,GAAG,MAAM1B,SAAS,CAAC2B,gBAAgB,CAAC,CAAC;IACtC,IAAI/wL,IAAI,GAAG8wL,QAAQ,CAAC9sL,GAAG,CAAEyrL,QAAQ,KAAM;MACnChyL,EAAE,EAAEgyL,QAAQ,CAACuB,UAAU;MACvBnyL,KAAK,EAAE4wL,QAAQ,CAACuB,UAAU;MAC1BpzL,IAAI,EAAE6xL,QAAQ,CAACwB;IACnB,CAAC,CAAC,CAAC;IACHjxL,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IACnDqB,QAAQ,CAAC5E,QAAQ,CAAC,cAAc,EAAE2F,IAAI,EAAE,GAAG,CAAC;EAChD;;EAEA;EACA,eAAeqyI,gBAAgBA,CAACq8C,MAAM,EAAE;IACpC,IAAIO,oBAAoB,GAAG5jL,CAAC,CAACC,OAAO,CAACqyC,aAAa,GAAG,GAAG,GAAG,GAAG;IAC9D,MAAM;MAAEuzI,0BAA0B,EAAEC;IAAU,CAAC,GAAG,MAAM/B,SAAS,CAACgC,yBAAyB,CACvF/lL,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAChBykJ,oBAAoB,EACpBP,MACJ,CAAC;;IAED;IACA,MAAM2C,WAAW,GAAG,EAAE;IACtBxC,OAAO,GAAG,EAAE;;IAEZ;IACAsC,SAAS,CAAC32L,OAAO,CAAC82L,QAAQ,IAAI;MAC1B;MACA,MAAMC,MAAM,GAAGF,WAAW,CAACnxJ,IAAI,CAAC1oB,IAAI,IAAIA,IAAI,CAACg6K,cAAc,KAAKF,QAAQ,CAACE,cAAc,CAAC;MACxF;MACA,IAAI,CAACD,MAAM,EAAE;QACTF,WAAW,CAAChpL,IAAI,CAACipL,QAAQ,CAAC;MAC9B;MAEA,IAAI5C,MAAM,IAAI,GAAG,EACbG,OAAO,CAACxmL,IAAI,CAACipL,QAAQ,CAACE,cAAc,CAAC;IAC7C,CAAC,CAAC;;IAEF;IACA,MAAMxxL,IAAI,GAAGqxL,WAAW,CAACrtL,GAAG,CAACstL,QAAQ,KAAK;MACtC7zL,EAAE,EAAE6zL,QAAQ,CAACE,cAAc;MAC3B3yL,KAAK,EAAEyyL,QAAQ,CAACE,cAAc;MAC9B5zL,IAAI,EAAE0zL,QAAQ,CAAC7B,QAAQ,GAAG,MAAM,GAAG6B,QAAQ,CAAC5B;IAChD,CAAC,CAAC,CAAC;IAEH,IAAIhB,MAAM,IAAI,GAAG,IAAIyC,SAAS,CAAC52L,MAAM,IAAI,CAAC,EAAE;MACxCyF,IAAI,CAAC49D,OAAO,CAAC;QAAEngE,EAAE,EAAE,IAAI;QAAEoB,KAAK,EAAE,EAAE;QAAEjB,IAAI,EAAE;MAAG,CAAC,CAAC,CAAC,CAAC;MACjDqB,QAAQ,CAAC5E,QAAQ,CAAC,kBAAkB,EAAE2F,IAAI,CAAC;IAC/C,CAAC,MACI;MACDA,IAAI,CAAC49D,OAAO,CAAC;QAAEngE,EAAE,EAAE,IAAI;QAAEoB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAM,CAAC,CAAC,CAAC,CAAC;MACrDqB,QAAQ,CAAC5E,QAAQ,CAAC,kBAAkB,EAAE2F,IAAI,EAAE,GAAG,CAAC;IACpD;EACJ;EAGA,eAAe8nL,gBAAgBA,CAC3B+H,MAAM,EACNG,cAAc,EACdlwI,UAAU,EACVmwI,SAAS,EACTF,UAAU,EACVR,gBAAgB,EAClB;IACE,IAAItE,SAAS,GAAGj+K,KAAK,CAAC1P,KAAK,CAAC;MACxB2P,MAAM,EAAE,EAAE;MACVO,KAAK,EAAE,IAAI;MACX/P,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,MAAMg0L,MAAM,GAAGx0L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAE5C,IAAIk0L,UAAU,GAAGz0L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9Ck0L,UAAU,CAAC3zL,KAAK,GAAG,0CAA0C;IAC7D2zL,UAAU,CAACj0L,EAAE,GAAG,QAAQ;IAExBg0L,MAAM,CAAC/2L,WAAW,CAACg3L,UAAU,CAAC;IAE9BzG,SAAS,CAACvwL,WAAW,CAAC+2L,MAAM,CAAC;IAE7BzkL,KAAK,CAAC9S,IAAI,CAAC+wL,SAAS,CAAC;;IAErB;IACA,IAAI8E,UAAU,KAAK,GAAG,EAAE;MACpB,MAAM4B,mBAAmB,GAAG,MAAMvC,SAAS,CAACwC,cAAc,CAAC/B,MAAM,EAAExkL,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC;;MAEpF;MACA,IAAImnJ,mBAAmB,KAAK,EAAE,EAAE;QAC5BnD,YAAY,GAAG,IAAI;QAEnB,MAAM1hL,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;UACtBG,EAAE,EAAE,gBAAgB;UACpBa,UAAU,EAAE;QAChB,CAAC,CAAC;QAEF,MAAMkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;QAEhC,MAAM8zD,KAAK,GAAGzwD,MAAM,CAACC,KAAK,CAAC;UACvBM,IAAI,EAAE,IAAI;UACVG,KAAK,EAAE,WAAW;UAClBC,IAAI,EAAE,WAAW;UACjBN,IAAI,EAAE,WAAW;UACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;YACxBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;YACjB3C,OAAO,CAACjQ,IAAI,CAAC,CAAC;UAClB;QACJ,CAAC,CAAC;QAEFsvC,OAAO,CAAC9uC,WAAW,CAACozD,KAAK,CAAC;QAC1B,MAAMpkB,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QAClDksC,cAAc,CAACtvC,SAAS,GAAG,oCAAoCu3L,mBAAmB,wDAAwD;QAC1I7kL,KAAK,CAACpS,WAAW,CAACgvC,cAAc,CAAC;QACjC58B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;QAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;MACrB;IACJ;IAEA,IAAI+iL,MAAM,IAAI,GAAG,EAAE;MACf,MAAMT,SAAS,CAACyC,8BAA8B,CAACxmL,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAAEsV,UAAU,EAAE+uI,OAAO,EAAEkB,UAAU,EAAER,gBAAgB,CAAC;MACnHviL,KAAK,CAAC/S,IAAI,CAACgxL,SAAS,CAAC;MACrBxuL,KAAK,CAACqyL,mBAAmB,CAAC,CAAC;IAC/B,CAAC,MACI;MACDM,SAAS,CAAC0C,cAAc,CACpBjC,MAAM,EACNG,cAAc,EACdlwI,UAAU,EACVmwI,SAAS,EACTF,UAAU,EACV1kL,CAAC,CAACC,OAAO,CAACC,eAAe,EACzBgkL,gBAAgB,EAChBf,YACJ,CAAC;IACL;IAEAA,YAAY,GAAG,KAAK;EACxB;EAEA,eAAeuD,oBAAoBA,CAC/BlC,MAAM,EACNG,cAAc,EACdlwI,UAAU,EACVmwI,SAAS,EACTF,UAAU,EACVR,gBAAgB,EAChByC,MAAM,EACNC,QAAQ,EACRC,QAAQ,EACV;IACE,IAAIjH,SAAS,GAAGj+K,KAAK,CAAC1P,KAAK,CAAC;MACxB2P,MAAM,EAAE,EAAE;MACVO,KAAK,EAAE,IAAI;MACX/P,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,MAAMg0L,MAAM,GAAGx0L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAE5C,IAAIk0L,UAAU,GAAGz0L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9Ck0L,UAAU,CAAC3zL,KAAK,GAAG,0CAA0C;IAC7D2zL,UAAU,CAACj0L,EAAE,GAAG,QAAQ;IAExBg0L,MAAM,CAAC/2L,WAAW,CAACg3L,UAAU,CAAC;IAE9BzG,SAAS,CAACvwL,WAAW,CAAC+2L,MAAM,CAAC;IAE7BzkL,KAAK,CAAC9S,IAAI,CAAC+wL,SAAS,CAAC;;IAErB;IACA,IAAI8E,UAAU,KAAK,GAAG,EAAE;MACpB,MAAM4B,mBAAmB,GAAG,MAAMvC,SAAS,CAACwC,cAAc,CAAC/B,MAAM,EAAExkL,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC;;MAEpF;MACA,IAAImnJ,mBAAmB,KAAK,EAAE,EAAE;QAC5BnD,YAAY,GAAG,IAAI;QAEnB,MAAM1hL,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;UACtBG,EAAE,EAAE,gBAAgB;UACpBa,UAAU,EAAE;QAChB,CAAC,CAAC;QAEF,MAAMkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;QAEhC,MAAM8zD,KAAK,GAAGzwD,MAAM,CAACC,KAAK,CAAC;UACvBM,IAAI,EAAE,IAAI;UACVG,KAAK,EAAE,WAAW;UAClBC,IAAI,EAAE,WAAW;UACjBN,IAAI,EAAE,WAAW;UACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;YACxBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;YACjB3C,OAAO,CAACjQ,IAAI,CAAC,CAAC;UAClB;QACJ,CAAC,CAAC;QAEFsvC,OAAO,CAAC9uC,WAAW,CAACozD,KAAK,CAAC;QAC1B,MAAMpkB,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QAClDksC,cAAc,CAACtvC,SAAS,GAAG,oCAAoCu3L,mBAAmB,wDAAwD;QAC1I7kL,KAAK,CAACpS,WAAW,CAACgvC,cAAc,CAAC;QACjC58B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;QAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;MACrB;IACJ;IAEAsiL,SAAS,CAAC+C,kBAAkB,CACxBtC,MAAM,EACNG,cAAc,EACdlwI,UAAU,EACVmwI,SAAS,EACTF,UAAU,EACV1kL,CAAC,CAACC,OAAO,CAACC,eAAe,EACzBgkL,gBAAgB,EAChBf,YAAY,EACZwD,MAAM,EACNC,QAAQ,EACRC,QACJ,CAAC;IACD1D,YAAY,GAAG,KAAK;EACxB;EAEA,SAAS4D,sBAAsBA,CAC3B3D,UAAU,EACV4D,YAAY,EACZL,MAAM,EACNC,QAAQ,EACRlC,UAAU,EACVuC,aAAa,EACbxyI,UAAU,EACZ;IACEiwI,UAAU,GAAIzB,SAAS,GAAG,CAAC,GAAKA,SAAS,GAAGG,UAAW;IAEvD,IAAIJ,kBAAkB,GAAGhxL,MAAM,CAACC,KAAK,CAAC;MAClCM,IAAI,EAAE,uBAAuB;MAC7BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZ;QACA;MAAA;IAER,CAAC,CAAC;IAEF,IAAImsL,SAAS,GAAGj+K,KAAK,CAAC1P,KAAK,CAAC;MACxB2P,MAAM,EAAE,EAAE;MACVO,KAAK,EAAE,IAAI;MACX/P,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,MAAMg0L,MAAM,GAAGx0L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAE5C,IAAIk0L,UAAU,GAAGz0L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9Ck0L,UAAU,CAAC3zL,KAAK,GAAG,0CAA0C;IAC7D2zL,UAAU,CAACj0L,EAAE,GAAG,QAAQ;IAExBg0L,MAAM,CAAC/2L,WAAW,CAACg3L,UAAU,CAAC;IAE9BzG,SAAS,CAACvwL,WAAW,CAAC+2L,MAAM,CAAC;;IAE7B;IACAzkL,KAAK,CAAC9S,IAAI,CAAC+wL,SAAS,CAAC;IAErB,IAAI8E,UAAU,EAAE;MACZX,SAAS,CAACmD,UAAU,CAAC9D,UAAU,EAAE4D,YAAY,EAAEvyI,UAAU,EAAEkyI,MAAM,EAAEC,QAAQ,CAAC;IAChF,CAAC,MAAM;MACH,IAAIhC,SAAS,GAAG,KAAK;MACrBb,SAAS,CAACoD,aAAa,CAAClE,SAAS,EAAEgE,aAAa,EAAExyI,UAAU,EAAEmwI,SAAS,CAAC;IAC5E;IACA;EACJ;EAEA,SAAS1kC,kBAAkBA,CAACskC,MAAM,EAAE3gB,QAAQ,EAAE;IAC1C,IAAIC,WAAW,GAAGniK,KAAK,CAAC1P,KAAK,CAAC;MAC1BG,EAAE,EAAE,oBAAoB;MACxBa,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,IAAIkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;QACvB;QACA,IAAIx+I,MAAM,GAAG,MAAMy+J,SAAS,CAACqD,uBAAuB,CAAC5C,MAAM,CAAC;QAC5D,IAAIl/J,MAAM,CAAC+hK,wBAAwB,KAAK,GAAG,EAAE;UACzCxjB,QAAQ,CAACn1K,MAAM,CAAC,CAAC;QACrB;MACJ;IACJ,CAAC,CAAC;IACF,IAAI4tJ,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,OAAO;MACboB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;MAC3B;IACJ,CAAC,CAAC;IACF3lI,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B,IAAIj+G,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,4CAA4C;IACvE+0K,WAAW,CAACz0K,WAAW,CAACgvC,cAAc,CAAC;IACvCylI,WAAW,CAACz0K,WAAW,CAAC8uC,OAAO,CAAC;IAChCx8B,KAAK,CAAC9S,IAAI,CAACi1K,WAAW,CAAC;EAC3B;EAEA,SAAS2gB,aAAaA,CAACD,MAAM,EAAEN,gBAAgB,EAAErgB,QAAQ,EAAE;IACvD,MAAMyjB,aAAa,GAAG3lL,KAAK,CAAC1P,KAAK,CAAC;MAC9BG,EAAE,EAAE,eAAe;MACnBa,UAAU,EAAE,UAAU;MACtBkP,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIg8B,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhC,IAAIo2L,gBAAgB,GAAGb,gBAAgB;IAEvC,IAAIc,iBAAiB,GAAGvvL,KAAK,CAACxD,KAAK,CAAC;MAChCU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,iBAAiB;MACxBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE8uB,IAAI,CAACkY,eAAe,CAAC0pJ,gBAAgB,CAACnxK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC1D;IACJ,CAAC,CAAC;IAEFiyK,iBAAiB,CAACjzL,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAClDw1L,gBAAgB,GAAGx1L,KAAK,CAACC,MAAM,CAACgE,KAAK;MACrC;MACA,IAAIuxL,gBAAgB,KAAK,EAAE,EAAE;QACzBC,iBAAiB,CAACv2L,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACxCuzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC,CAAC,MAAM;QACHq2L,iBAAiB,CAACv2L,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC3C,IAAIsR,CAAC,CAACC,OAAO,CAACkyC,WAAW,EAAE+vF,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACnE;IACJ,CAAC,CAAC;IAEF,IAAIwzI,OAAO,GAAGlwI,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,sBAAsB;MAC5BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxB,MAAMswL,SAAS,CAACwD,qCAAqC,CAAC/C,MAAM,EAAEO,gBAAgB,CAAC;QAC/EpjL,KAAK,CAAC/S,IAAI,CAAC04L,aAAa,CAAC;QACzB;QACAl2L,KAAK,CAACqyL,mBAAmB,CAAC,CAAC;QAC3B;MACJ;IACJ,CAAC,CAAC;IAEF,IAAInjJ,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC04L,aAAa,CAAC;QACzB;MACJ;IACJ,CAAC,CAAC;IAEF,IAAI1pC,SAAS,GAAG5rJ,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,aAAa;MACnBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC04L,aAAa,CAAC;QACzBpnC,kBAAkB,CAACskC,MAAM,EAAE3gB,QAAQ,CAAC;QACpC;MACJ;IACJ,CAAC,CAAC;IAEF1lI,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC;IAC5B/jG,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAC9BnC,OAAO,CAAC9uC,WAAW,CAACuuJ,SAAS,CAAC;IAE9B,IAAIv/G,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,yBAAyB;IACpDu4L,aAAa,CAACj4L,WAAW,CAAC21L,iBAAiB,CAAC;IAC5CsC,aAAa,CAACj4L,WAAW,CAACgvC,cAAc,CAAC;IACzCipJ,aAAa,CAACj4L,WAAW,CAAC8uC,OAAO,CAAC;IAClC;;IAEA,IAAI,CAACn+B,CAAC,CAACC,OAAO,CAACkyC,WAAW,EAAE;MACxB+vF,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC,CAAC,MAAM;MACHuzI,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC;IAEA,IAAI,CAACsR,CAAC,CAACC,OAAO,CAACgyC,WAAW,EAAE;MACxB2rG,SAAS,CAACnvJ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACvC,CAAC,MAAM;MACHivJ,SAAS,CAACnvJ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC1C;IAEAiT,KAAK,CAAC9S,IAAI,CAACy4L,aAAa,CAAC;EAC7B;EAEA,SAASx1L,IAAIA,CAAA,EAAG;IACZ;IACA;IACA;IACAszG,wBAAwB,CAAC,OAAO,CAAC;IACjCtkG,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvB28F,OAAO,CAACoH,cAAc,CAAC,CAAC;EAC5B;EAEA,OAAO;IACHhzG,IAAI;IACJ2xL,mBAAmB;IACnBsD,sBAAsB;IACtBtK,gBAAgB;IAChBiK,oBAAoB;IACpB32L;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AC5tBJ,IAAIg0L,SAAS,GAAI,YAAY;EAEzB,SAASmD,UAAUA,CAAC9D,UAAU,EAAE4D,YAAY,EAAEvyI,UAAU,EAAEkyI,MAAM,EAAEC,QAAQ,EAAE;IAExE5mL,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,cAAc;MACjIxoD,IAAI,EAAE,iBAAiB,GAAGyuL,UAAU,GAAG,mBAAmB,GAAG3uI,UAAU,GAAG,IAAI;MAC9EmK,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAIhrB,GAAG,GAAG+qB,QAAQ,CAACyoI,gBAAgB;QAEnCpG,SAAS,CAAC;UACNC,IAAI,EAAE,iBAAiB;UAAE;UACzB;UACAC,UAAU,EAAE,kMAAkM;UAC9MC,YAAY,EAAE;UACd;UACA;QACJ,CAAC,EAAE3vL,QAAQ,CAACiD,cAAc,CAAC,QAAQ,CAAC,CAAC,CAChC6rH,IAAI,CAAC8gE,QAAQ,IAAI;UACd7kL,OAAO,CAACu6B,GAAG,CAAC,sBAAsB,CAAC;UACnC,IAAIuqJ,OAAO,GAAGD,QAAQ,CAACE,EAAE,CAACD,OAAO;UACjCD,QAAQ,CAACE,EAAE,CAACC,UAAU,CAACF,OAAO,CAACG,QAAQ,CAAC;UACxC;UACAJ,QAAQ,CAACE,EAAE,CAACG,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC;UACxC;UACA;UACA;UACA;;UAEA,MAAMC,SAAS,GAAGN,QAAQ,CAACO,IAAI,CAACC,cAAc;UAC9C,MAAMC,YAAY,GAAGT,QAAQ,CAACO,IAAI,CAACG,iBAAiB;;UAEpD;;UAEA;UACAV,QAAQ,CAACE,EAAE,CAACS,cAAc,CAACvgL,MAAM,IAAI;YACjCA,MAAM,CAAC5E,IAAI,CAAC;cACRrK,IAAI,EAAE,cAAc;cACpByvL,GAAG,EAAE,oYAAoY;cACzYx3G,KAAK,EAAE,mBAAmB;cAC1B7jE,OAAO,EAAE,MAAAA,CAAA,KAAY;gBACjB,MAAM07K,GAAG,GAAGX,SAAS,CAACY,WAAW,CAAC,CAAC;gBACnC,MAAMC,UAAU,GAAG,MAAMV,YAAY,CAACW,iBAAiB,CAAC,CAAC;gBAEzD,MAAMjuL,IAAI,GAAG,MAAM8tL,GAAG,CAACI,WAAW,CAAC;kBAC/B;kBACAF;gBACJ,CAAC,CAAC;gBAEF,IAAIgC,cAAc,GAAG,GAAG,CAAC,CAAC;gBAC1B,MAAMr/J,MAAM,GAAG,MAAMmiK,kBAAkB,CAACC,uBAAuB,CAACf,MAAM,EAAEC,QAAQ,EAAEI,YAAY,GAAG,MAAM,EAAE,KAAK,EAAEryL,IAAI,EAAEgwL,cAAc,CAAC;gBACrI,MAAM;kBAAEgD,gCAAgC,EAAE;oBAAE91D,YAAY;oBAAE+1D;kBAAW;gBAAE,CAAC,GAAGtiK,MAAM;gBAEjF,MAAMuiK,SAAS,GAAG;kBACdD,UAAU,EAAEA,UAAU;kBACtBjB,MAAM,EAAEA,MAAM;kBACdC,QAAQ,EAAE,IAAIA,QAAQ,GAAG;kBACzBz6E,WAAW,EAAE66E,YAAY,GAAG,MAAM;kBAClCn1D,YAAY,EAAEA,YAAY;kBAC1B8yD,cAAc,EAAEA,cAAc;kBAC9BlkE,cAAc,EAAE;gBACpB,CAAC;gBAED,MAAMqnE,mBAAmB,GAAG,IAAIC,yBAAyB,CAACF,SAAS,CAAC,CAACxpH,MAAM,CAAC,CAAC;gBAE7EvlC,KAAK,CAAC,0BAA0B,CAAC;gBAEjCn3B,KAAK,CAAC/S,IAAI,CAACgxL,SAAS,CAAC;gBAErB,MAAMoI,cAAc,GAAGp2L,QAAQ,CAACC,aAAa,CAAC,gCAAgC80L,MAAM,IAAI,CAAC;gBACzF,MAAMsB,aAAa,GAAGD,cAAc,CAACn2L,aAAa,CAAC,oBAAoB,CAAC;gBAExEo2L,aAAa,CAAC54L,WAAW,CAACy4L,mBAAmB,CAAC;cAElD;YACJ,CAAC,CAAC;YAEFlmL,MAAM,CAAC5E,IAAI,CAAC;cACRrK,IAAI,EAAE,cAAc;cACpB;cACAyvL,GAAG,EAAE,YAAY;cACjBx3G,KAAK,EAAE,cAAc;cACrB7jE,OAAO,EAAE,MAAAA,CAAA,KAAY;gBAEjB,IAAImI,OAAO,GAAGtd,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC;gBAClD8M,KAAK,CAAC/S,IAAI,CAACgxL,SAAS,CAAC;cAEzB;YACJ,CAAC,CAAC;UACN,CAAC,CAAC;;UAEF;;UAEA,MAAMyC,YAAY,GAAGjiL,MAAM,CAACkiL,IAAI,CAACtuJ,GAAG,CAAC;UACrC,MAAM1C,GAAG,GAAG+wJ,YAAY,CAACnzL,MAAM;UAC/B,MAAMmuI,KAAK,GAAG,IAAIx/E,UAAU,CAACvsB,GAAG,CAAC;UAEjC,KAAK,IAAIx3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGw3B,GAAG,EAAE,EAAEx3B,CAAC,EAAE;YAC1BujI,KAAK,CAACvjI,CAAC,CAAC,GAAGuoL,YAAY,CAACxmK,UAAU,CAAC/hB,CAAC,CAAC;UACzC;;UAEA;UACA,MAAM0hL,IAAI,GAAG,IAAIj9J,IAAI,CAAC,CAAC8+G,KAAK,CAAC,EAAE;YAAE1qI,IAAI,EAAE;UAAkB,CAAC,CAAC;UAC3D6uL,QAAQ,CAACO,IAAI,CAACC,cAAc,CAACO,YAAY,CAAC/G,IAAI,EAAE;YAAEgH,QAAQ,EAAEwE,YAAY,GAAG;UAAO,CAAC,CAAC;UACpFxF,QAAQ,CAACE,EAAE,CAACG,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC;UAC5C;UACA;UACA;UACA;UACA,MAAMqG,KAAK,GAAG1G,QAAQ,CAAC0G,KAAK;UAC5B,MAAMC,WAAW,GAAG3G,QAAQ,CAAC2G,WAAW;UAExCrG,SAAS,CAAC/vL,gBAAgB,CAAC,gBAAgB,EAAE,YAAY;YACrD;YACA;YACA;UAAA,CACH,CAAC;QACN,CAAC,CAAC;MAEV,CAAC;MACD4O,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEA,SAASwmL,aAAaA,CAACS,UAAU,EAAEjD,cAAc,EAAElwI,UAAU,EAAEmwI,SAAS,EAAE;IAEtE5kL,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,iBAAiB;MACpIxoD,IAAI,EAAE,iBAAiB,GAAGizL,UAAU,GAAG,uBAAuB,GAAGjD,cAAc,GAAG,mBAAmB,GAAGlwI,UAAU,GAAG,kBAAkB,GAAGmwI,SAAS,GAAG,IAAI;MAC1JhmI,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAIhrB,GAAG,GAAG+qB,QAAQ,CAACqpI,mBAAmB;QAEtChH,SAAS,CAAC;UACNC,IAAI,EAAE,iBAAiB;UAAE;UACzB;UACAC,UAAU,EAAE,kMAAkM;UAC9MC,YAAY,EAAE;UACd;UACA;QACJ,CAAC,EAAE3vL,QAAQ,CAACiD,cAAc,CAAC,QAAQ,CAAC,CAAC,CAChC6rH,IAAI,CAAC8gE,QAAQ,IAAI;UACd7kL,OAAO,CAACu6B,GAAG,CAAC,sBAAsB,CAAC;UACnC,IAAIuqJ,OAAO,GAAGD,QAAQ,CAACE,EAAE,CAACD,OAAO;UACjCD,QAAQ,CAACE,EAAE,CAACC,UAAU,CAACF,OAAO,CAACG,QAAQ,CAAC;UACxC;UACAJ,QAAQ,CAACE,EAAE,CAACG,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC;UACxC;;UAEA,MAAMC,SAAS,GAAGN,QAAQ,CAACO,IAAI,CAACC,cAAc;UAC9C,MAAMC,YAAY,GAAGT,QAAQ,CAACO,IAAI,CAACG,iBAAiB;UAEpDV,QAAQ,CAACE,EAAE,CAACS,cAAc,CAACvgL,MAAM,IAAI;YACjCA,MAAM,CAAC5E,IAAI,CAAC;cACRrK,IAAI,EAAE,cAAc;cACpByvL,GAAG,EAAE,oYAAoY;cACzYx3G,KAAK,EAAE,mBAAmB;cAC1B7jE,OAAO,EAAE,MAAAA,CAAA,KAAY;gBAEjB,IAAI;kBAEA,MAAM07K,GAAG,GAAGX,SAAS,CAACY,WAAW,CAAC,CAAC;kBACnC,MAAMC,UAAU,GAAG,MAAMV,YAAY,CAACW,iBAAiB,CAAC,CAAC;kBAEzD,MAAMjuL,IAAI,GAAG,MAAM8tL,GAAG,CAACI,WAAW,CAAC;oBAC/B;oBACAF;kBACJ,CAAC,CAAC;kBAEF,IAAIgC,cAAc,GAAG,GAAG,CAAC,CAAC;kBAC1B,MAAMr/J,MAAM,GAAG,MAAMmiK,kBAAkB,CAACY,uBAAuB,CAACT,UAAU,EAAE,KAAK,EAAEjzL,IAAI,EAAEgwL,cAAc,CAAC;kBACxG,MAAM;oBAAE2D,gCAAgC,EAAE;sBAAEz2D,YAAY;sBAAEoxD;oBAAU;kBAAE,CAAC,GAAG39J,MAAM;kBAEhFwT,KAAK,CAAC,0BAA0B,CAAC;kBAEjCn3B,KAAK,CAAC/S,IAAI,CAACgxL,SAAS,CAAC;kBACrB,MAAM2I,eAAe,GAAG32L,QAAQ,CAACC,aAAa,CAAC,sBAAsB+1L,UAAU,IAAI,CAAC;kBACpFW,eAAe,CAAC11L,YAAY,CAAC,oBAAoB,EAAE,GAAGg/H,YAAY,EAAE,CAAC;kBACrE02D,eAAe,CAAC11L,YAAY,CAAC,sBAAsB,EAAE,GAAG8xL,cAAc,EAAE,CAAC;kBACzE4D,eAAe,CAAC11L,YAAY,CAAC,sBAAsB,EAAE,KAAK,CAAC;gBAE/D,CAAC,CAAC,MAAM;kBACJ;kBACAimC,KAAK,CAAC,qEAAqE,CAAC;kBAC5E;gBAEJ;cAGJ;YACJ,CAAC,CAAC;YAEFl3B,MAAM,CAAC5E,IAAI,CAAC;cACRrK,IAAI,EAAE,cAAc;cACpB;cACAyvL,GAAG,EAAE,YAAY;cACjBx3G,KAAK,EAAE,cAAc;cACrB7jE,OAAO,EAAE,MAAAA,CAAA,KAAY;gBACjB;gBACApF,KAAK,CAAC/S,IAAI,CAACgxL,SAAS,CAAC;cAEzB;YACJ,CAAC,CAAC;YAEF,IAAI+E,cAAc,IAAI,GAAG,EAAE;cAEvB/iL,MAAM,CAAC5E,IAAI,CAAC;gBACRrK,IAAI,EAAE,cAAc;gBACpB;gBACA;gBACAyvL,GAAG,EAAE,q4FAAq4F;gBAC14Fx3G,KAAK,EAAE,4BAA4B;gBACnC7jE,OAAO,EAAE,MAAAA,CAAA,KAAY;kBAEjB,MAAM07K,GAAG,GAAGX,SAAS,CAACY,WAAW,CAAC,CAAC;kBACnC,MAAMC,UAAU,GAAG,MAAMV,YAAY,CAACW,iBAAiB,CAAC,CAAC;kBAEzD,MAAMjuL,IAAI,GAAG,MAAM8tL,GAAG,CAACI,WAAW,CAAC;oBAC/B;oBACAF;kBACJ,CAAC,CAAC;kBAEFb,SAAS,CAAC0G,aAAa,CAAC,CAAC;kBACzB;kBACA,IAAI5D,SAAS,GAAG,IAAI;kBACpB,MAAMt/J,MAAM,GAAG,MAAMy+J,SAAS,CAAC0E,aAAa,CAACb,UAAU,EAAE,GAAG,EAAEnzI,UAAU,EAAEmwI,SAAS,CAAC;kBAEpF,IAAIt/J,MAAM,EAAE;oBAER,MAAM+8J,YAAY,GAAGjiL,MAAM,CAACkiL,IAAI,CAACh9J,MAAM,CAAC;oBACxC,MAAMgM,GAAG,GAAG+wJ,YAAY,CAACnzL,MAAM;oBAC/B,MAAMmuI,KAAK,GAAG,IAAIx/E,UAAU,CAACvsB,GAAG,CAAC;oBAEjC,KAAK,IAAIx3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGw3B,GAAG,EAAE,EAAEx3B,CAAC,EAAE;sBAC1BujI,KAAK,CAACvjI,CAAC,CAAC,GAAGuoL,YAAY,CAACxmK,UAAU,CAAC/hB,CAAC,CAAC;oBACzC;oBACA;oBACA,MAAM0hL,IAAI,GAAG,IAAIj9J,IAAI,CAAC,CAAC8+G,KAAK,CAAC,EAAE;sBAAE1qI,IAAI,EAAE;oBAAkB,CAAC,CAAC;oBAC3D,IAAI8uL,OAAO,GAAGK,SAAS,CAACL,OAAO;oBAC/BK,SAAS,CAACH,UAAU,CAACF,OAAO,CAACG,QAAQ,CAAC;oBACtCE,SAAS,CAACS,YAAY,CAAC/G,IAAI,EAAE;sBAAEgH,QAAQ,EAAE;oBAAa,CAAC,CAAC;kBAE5D;gBAEJ;cACJ,CAAC,CAAC;YACN;UAEJ,CAAC,CAAC;;UAGF;;UAEA,MAAMH,YAAY,GAAGjiL,MAAM,CAACkiL,IAAI,CAACtuJ,GAAG,CAAC;UACrC,MAAM1C,GAAG,GAAG+wJ,YAAY,CAACnzL,MAAM;UAC/B,MAAMmuI,KAAK,GAAG,IAAIx/E,UAAU,CAACvsB,GAAG,CAAC;UAEjC,KAAK,IAAIx3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGw3B,GAAG,EAAE,EAAEx3B,CAAC,EAAE;YAC1BujI,KAAK,CAACvjI,CAAC,CAAC,GAAGuoL,YAAY,CAACxmK,UAAU,CAAC/hB,CAAC,CAAC;UACzC;;UAEA;UACA,MAAM0hL,IAAI,GAAG,IAAIj9J,IAAI,CAAC,CAAC8+G,KAAK,CAAC,EAAE;YAAE1qI,IAAI,EAAE;UAAkB,CAAC,CAAC;UAC3D6uL,QAAQ,CAACE,EAAE,CAACa,YAAY,CAAC/G,IAAI,EAAE;YAAEgH,QAAQ,EAAE;UAAa,CAAC,CAAC;UAC1DhB,QAAQ,CAACE,EAAE,CAACG,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC;UAE5CC,SAAS,CAAC/vL,gBAAgB,CAAC,gBAAgB,EAAE,YAAY;YACrD,IAAI;cACAkwL,YAAY,CAACW,iBAAiB,CAAC,CAAC,CAACliE,IAAI,CAACiiE,UAAU,IAAI;gBAChD,MAAMF,GAAG,GAAGX,SAAS,CAACY,WAAW,CAAC,CAAC;cACvC,CAAC,CAAC;YAEN,CAAC,CAAC,MAAM;cAEJgG,2BAA2B,CAAC,CAAC;cAC7B;YACJ;UAEJ,CAAC,CAAC;QACN,CAAC,CAAC;MAEV,CAAC;MACD/nL,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAGA,SAAS8lL,cAAcA,CAACjC,MAAM,EAAEG,cAAc,EAAElwI,UAAU,EAAEmwI,SAAS,EAAEF,UAAU,EAAExkL,eAAe,EAAEgkL,gBAAgB,EAAEf,YAAY,EAAE;IAEhInjL,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,kBAAkB;MACrIxoD,IAAI,EAAE,aAAa,GAAG6vL,MAAM,GAAG,uBAAuB,GAAGG,cAAc,GAAG,mBAAmB,GAAGlwI,UAAU,GAAG,kBAAkB,GAAGmwI,SAAS,GAAG,mBAAmB,GAAGF,UAAU,GAAG,wBAAwB,GAAGxkL,eAAe,GAAG,IAAI;MAClO0+C,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAIhrB,GAAG,GAAG+qB,QAAQ,CAAC4pI,oBAAoB;QAEvCvH,SAAS,CAAC;UACNC,IAAI,EAAE,iBAAiB;UAAE;UACzB;UACA;UACAC,UAAU,EAAE,kMAAkM;UAC9MC,YAAY,EAAE;UACd;UACA;QACJ,CAAC,EAAE3vL,QAAQ,CAACiD,cAAc,CAAC,QAAQ,CAAC,CAAC,CAChC6rH,IAAI,CAAC8gE,QAAQ,IAAI;UACd7kL,OAAO,CAACu6B,GAAG,CAAC,sBAAsB,CAAC;UACnC,IAAIuqJ,OAAO,GAAGD,QAAQ,CAACE,EAAE,CAACD,OAAO;UACjCD,QAAQ,CAACE,EAAE,CAACC,UAAU,CAACF,OAAO,CAACG,QAAQ,CAAC;UACxC;UACAJ,QAAQ,CAACE,EAAE,CAACG,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC;UAExCL,QAAQ,CAACE,EAAE,CAACkH,gBAAgB,CAAC,IAAI,CAAC;UAElC,MAAM9G,SAAS,GAAGN,QAAQ,CAACO,IAAI,CAACC,cAAc;UAC9C,MAAMC,YAAY,GAAGT,QAAQ,CAACO,IAAI,CAACG,iBAAiB;UAEpDV,QAAQ,CAACE,EAAE,CAACS,cAAc,CAACvgL,MAAM,IAAI;YACjC,IAAI5B,CAAC,CAACC,OAAO,CAACkyC,WAAW,EAAE;cACvBvwC,MAAM,CAAC5E,IAAI,CAAC;gBACRrK,IAAI,EAAE,cAAc;gBACpByvL,GAAG,EAAE,oYAAoY;gBACzYx3G,KAAK,EAAE,mBAAmB;gBAC1B7jE,OAAO,EAAE,MAAAA,CAAA,KAAY;kBAEjB,IAAI;oBACA,IAAIo8K,YAAY,EAAE;sBACd,MAAM,IAAIplK,KAAK,CAAC,CAAC;oBACrB;oBAEA,IAAI8qK,MAAM;oBACV,MAAMpG,GAAG,GAAGX,SAAS,CAACY,WAAW,CAAC,CAAC;oBACnC,MAAMC,UAAU,GAAG,MAAMV,YAAY,CAACW,iBAAiB,CAAC,CAAC;oBAEzD,MAAMjuL,IAAI,GAAG,MAAM8tL,GAAG,CAACI,WAAW,CAAC;sBAC/B;sBACAF;oBACJ,CAAC,CAAC;;oBAEF;oBACA;;oBAEA,IAAIgC,cAAc,KAAK,GAAG,EAAE;sBACxB,MAAMr/J,MAAM,GAAG,MAAMy+J,SAAS,CAAC+E,uBAAuB,CAACtE,MAAM,EAAE7vL,IAAI,EAAEgwL,cAAc,CAAC;sBACpF,MAAM;wBAAEoE,wBAAwB,EAAE;0BAAEF;wBAAO;sBAAE,CAAC,GAAGvjK,MAAM;oBAE3D,CAAC,MAAM;sBACH,MAAMA,MAAM,GAAG,MAAMy+J,SAAS,CAACiF,uBAAuB,CAAChpL,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAAEsV,UAAU,EAAE+vI,MAAM,EAAE7vL,IAAI,EAAEuvL,gBAAgB,CAAC;sBACpH,MAAM;wBAAE+E;sBAAyB,CAAC,GAAG3jK,MAAM;sBAC3CujK,MAAM,GAAGI,wBAAwB,CAACzE,MAAM;sBAExC1lL,OAAO,CAAClQ,IAAI,CAAC,CAAC;sBACdwC,KAAK,CAACqyL,mBAAmB,CAAC,CAAC;oBAC/B;oBAEA3qJ,KAAK,CAAC,0BAA0B,CAAC;kBAErC,CAAC,CAAC,OAAO3kC,CAAC,EAAE;oBACR,IAAIA,CAAC,EAAE;sBACH2kC,KAAK,CAAC,2DAA2D,CAAC;oBACtE,CAAC,MAAM;sBACH;sBACAA,KAAK,CAAC,qEAAqE,CAAC;sBAC5E;oBACJ;kBACJ;gBAEJ;cACJ,CAAC,CAAC,CAAC,CAAC;YACR,CAAC,CAAC;YACFl3B,MAAM,CAAC5E,IAAI,CAAC;cACRrK,IAAI,EAAE,cAAc;cACpB;cACAyvL,GAAG,EAAE,YAAY;cACjBx3G,KAAK,EAAE,cAAc;cACrB7jE,OAAO,EAAE,MAAAA,CAAA,KAAY;gBACjB;gBACA;gBACA,IAAI/G,CAAC,CAACC,OAAO,CAACkyC,WAAW,EAAE;kBACvB+2I,iBAAiB,CAAC1E,MAAM,EAAEG,cAAc,EAAElwI,UAAU,EAAEmwI,SAAS,EAAEF,UAAU,CAAC;kBAC5EyE,eAAe,CAAC3E,MAAM,EAAE/vI,UAAU,CAAC;gBACvC,CAAC,MAAM;kBACH9yC,KAAK,CAAC/S,IAAI,CAACgxL,SAAS,CAAC;kBACrBuJ,eAAe,CAAC3E,MAAM,EAAE/vI,UAAU,CAAC;gBACvC;cAEJ;YACJ,CAAC,CAAC;YAEF,IAAIiwI,UAAU,IAAI,GAAG,IAAI1kL,CAAC,CAACC,OAAO,CAACkyC,WAAW,IAAI,IAAI,EAAE;cAEpDvwC,MAAM,CAAC5E,IAAI,CAAC;gBACRrK,IAAI,EAAE,cAAc;gBACpB;gBACA;gBACAyvL,GAAG,EAAE,q4FAAq4F;gBAC14Fx3G,KAAK,EAAE,4BAA4B;gBACnC7jE,OAAO,EAAE,MAAAA,CAAA,KAAY;kBAEjB,MAAM07K,GAAG,GAAGX,SAAS,CAACY,WAAW,CAAC,CAAC;kBACnC,MAAMC,UAAU,GAAG,MAAMV,YAAY,CAACW,iBAAiB,CAAC,CAAC;kBAEzD,MAAMjuL,IAAI,GAAG,MAAM8tL,GAAG,CAACI,WAAW,CAAC;oBAC/B;oBACAF;kBACJ,CAAC,CAAC;kBAEFb,SAAS,CAAC0G,aAAa,CAAC,CAAC;kBACzB;kBACA,IAAI5D,SAAS,GAAG,IAAI;kBACpB,MAAMt/J,MAAM,GAAG,MAAMy+J,SAAS,CAACqF,cAAc,CAAC5E,MAAM,EAAE,GAAG,EAAE/vI,UAAU,EAAEmwI,SAAS,EAAEF,UAAU,EAAE1kL,CAAC,CAACC,OAAO,CAACC,eAAe,CAAC;kBAExH,IAAIolB,MAAM,EAAE;oBAER,MAAM+8J,YAAY,GAAGjiL,MAAM,CAACkiL,IAAI,CAACh9J,MAAM,CAAC;oBACxC,MAAMgM,GAAG,GAAG+wJ,YAAY,CAACnzL,MAAM;oBAC/B,MAAMmuI,KAAK,GAAG,IAAIx/E,UAAU,CAACvsB,GAAG,CAAC;oBAEjC,KAAK,IAAIx3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGw3B,GAAG,EAAE,EAAEx3B,CAAC,EAAE;sBAC1BujI,KAAK,CAACvjI,CAAC,CAAC,GAAGuoL,YAAY,CAACxmK,UAAU,CAAC/hB,CAAC,CAAC;oBACzC;oBACA;oBACA,MAAM0hL,IAAI,GAAG,IAAIj9J,IAAI,CAAC,CAAC8+G,KAAK,CAAC,EAAE;sBAAE1qI,IAAI,EAAE;oBAAkB,CAAC,CAAC;oBAC3D,IAAI8uL,OAAO,GAAGK,SAAS,CAACL,OAAO;oBAC/BK,SAAS,CAACH,UAAU,CAACF,OAAO,CAACG,QAAQ,CAAC;oBACtCE,SAAS,CAACS,YAAY,CAAC/G,IAAI,EAAE;sBAAEgH,QAAQ,EAAE;oBAAa,CAAC,CAAC;kBAE5D;gBAEJ;cACJ,CAAC,CAAC;YAEN;UAEJ,CAAC,CAAC;;UAGF;;UAEA,MAAMH,YAAY,GAAGjiL,MAAM,CAACkiL,IAAI,CAACtuJ,GAAG,CAAC;UACrC,MAAM1C,GAAG,GAAG+wJ,YAAY,CAACnzL,MAAM;UAC/B,MAAMmuI,KAAK,GAAG,IAAIx/E,UAAU,CAACvsB,GAAG,CAAC;UAEjC,KAAK,IAAIx3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGw3B,GAAG,EAAE,EAAEx3B,CAAC,EAAE;YAC1BujI,KAAK,CAACvjI,CAAC,CAAC,GAAGuoL,YAAY,CAACxmK,UAAU,CAAC/hB,CAAC,CAAC;UACzC;;UAEA;UACA,MAAM0hL,IAAI,GAAG,IAAIj9J,IAAI,CAAC,CAAC8+G,KAAK,CAAC,EAAE;YAAE1qI,IAAI,EAAE;UAAkB,CAAC,CAAC;UAC3DmvL,SAAS,CAACS,YAAY,CAAC/G,IAAI,EAAE;YAAEgH,QAAQ,EAAE;UAAa,CAAC,CAAC;UACxDhB,QAAQ,CAACE,EAAE,CAACG,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC;UAE5CC,SAAS,CAAC/vL,gBAAgB,CAAC,gBAAgB,EAAE,YAAY;YACrD,IAAI;cAEA,MAAM0wL,GAAG,GAAGX,SAAS,CAACY,WAAW,CAAC,CAAC;cACnC,MAAMC,UAAU,GAAG,MAAMV,YAAY,CAACW,iBAAiB,CAAC,CAAC;cAEzD,MAAMjuL,IAAI,GAAG,MAAM8tL,GAAG,CAACI,WAAW,CAAC;gBAC/B;gBACAF;cACJ,CAAC,CAAC;YAEN,CAAC,CAAC,MAAM;cAEJ+F,2BAA2B,CAAC,CAAC;cAC7B;YACJ;UAEJ,CAAC,CAAC;QACN,CAAC,CAAC;MACV,CAAC;MACD/nL,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEA,SAASmmL,kBAAkBA,CAACtC,MAAM,EAAEG,cAAc,EAAElwI,UAAU,EAAEmwI,SAAS,EAAEF,UAAU,EAAExkL,eAAe,EAAEgkL,gBAAgB,EAAEf,YAAY,EAAEwD,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAE;IAEhK7mL,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,kBAAkB;MACrIxoD,IAAI,EAAE,aAAa,GAAG6vL,MAAM,GAAG,uBAAuB,GAAGG,cAAc,GAAG,mBAAmB,GAAGlwI,UAAU,GAAG,kBAAkB,GAAGmwI,SAAS,GAAG,mBAAmB,GAAGF,UAAU,GAAG,wBAAwB,GAAGxkL,eAAe,GAAG,IAAI;MAClO0+C,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAIhrB,GAAG,GAAG+qB,QAAQ,CAAC4pI,oBAAoB;QAEvCvH,SAAS,CAAC;UACNC,IAAI,EAAE,iBAAiB;UAAE;UACzB;UACA;UACAC,UAAU,EAAE,kMAAkM;UAC9MC,YAAY,EAAE;UACd;UACA;QACJ,CAAC,EAAE3vL,QAAQ,CAACiD,cAAc,CAAC,QAAQ,CAAC,CAAC,CAChC6rH,IAAI,CAAC8gE,QAAQ,IAAI;UACd7kL,OAAO,CAACu6B,GAAG,CAAC,sBAAsB,CAAC;UACnC,IAAIuqJ,OAAO,GAAGD,QAAQ,CAACE,EAAE,CAACD,OAAO;UACjCD,QAAQ,CAACE,EAAE,CAACC,UAAU,CAACF,OAAO,CAACG,QAAQ,CAAC;UACxC;UACAJ,QAAQ,CAACE,EAAE,CAACG,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC;UACxC;;UAEA,MAAMC,SAAS,GAAGN,QAAQ,CAACO,IAAI,CAACC,cAAc;UAC9C,MAAMC,YAAY,GAAGT,QAAQ,CAACO,IAAI,CAACG,iBAAiB;UAEpDV,QAAQ,CAACE,EAAE,CAACS,cAAc,CAACvgL,MAAM,IAAI;YACjC,IAAI5B,CAAC,CAACC,OAAO,CAACkyC,WAAW,EAAE;cACvBvwC,MAAM,CAAC5E,IAAI,CAAC;gBACRrK,IAAI,EAAE,cAAc;gBACpByvL,GAAG,EAAE,oYAAoY;gBACzYx3G,KAAK,EAAE,mBAAmB;gBAC1B7jE,OAAO,EAAE,MAAAA,CAAA,KAAY;kBACjB,MAAM07K,GAAG,GAAGX,SAAS,CAACY,WAAW,CAAC,CAAC;kBACnC,MAAMC,UAAU,GAAG,MAAMV,YAAY,CAACW,iBAAiB,CAAC,CAAC;kBAEzD,MAAMjuL,IAAI,GAAG,MAAM8tL,GAAG,CAACI,WAAW,CAAC;oBAC/B;oBACAF;kBACJ,CAAC,CAAC;kBACF;kBACA,IAAIgC,cAAc,GAAG,GAAG,CAAC,CAAC;kBAC1B,MAAM0E,aAAa,GAAG,MAAM5B,kBAAkB,CAACC,uBAAuB,CAACf,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAElyL,IAAI,EAAEgwL,cAAc,CAAC;kBACxI,MAAM;oBAAEgD,gCAAgC,EAAE;sBAAE91D,YAAY;sBAAE+1D;oBAAW;kBAAE,CAAC,GAAGyB,aAAa;kBACxF;kBACA;kBACA;;kBAEA,MAAMxB,SAAS,GAAG;oBACdD,UAAU,EAAEA,UAAU;oBACtBjB,MAAM,EAAEA,MAAM;oBACdC,QAAQ,EAAE,IAAIA,QAAQ,GAAG;oBACzBz6E,WAAW,EAAE06E,QAAQ,GAAG,MAAM;oBAC9Bh1D,YAAY,EAAEA,YAAY;oBAC1B8yD,cAAc,EAAEA,cAAc;oBAC9BlkE,cAAc,EAAE;kBAEpB,CAAC;kBAED,MAAMqnE,mBAAmB,GAAG,IAAIC,yBAAyB,CAACF,SAAS,CAAC,CAACxpH,MAAM,CAAC,CAAC;kBAE7EvlC,KAAK,CAAC,0BAA0B,CAAC;kBAIjCqwJ,eAAe,CAAC3E,MAAM,EAAE/vI,UAAU,CAAC;kBACnC9yC,KAAK,CAAC/S,IAAI,CAACgxL,SAAS,CAAC;kBAErB,MAAMoI,cAAc,GAAGp2L,QAAQ,CAACC,aAAa,CAAC,gCAAgC80L,MAAM,IAAI,CAAC;kBACzF,MAAMsB,aAAa,GAAGD,cAAc,CAACn2L,aAAa,CAAC,oBAAoB,CAAC;kBAExEo2L,aAAa,CAAC54L,WAAW,CAACy4L,mBAAmB,CAAC;gBAIlD,CAAC,CAAC;cACN,CAAC,CAAC,CAAC,CAAC;YACR,CAAC,CAAC;YACFlmL,MAAM,CAAC5E,IAAI,CAAC;cACRrK,IAAI,EAAE,cAAc;cACpB;cACAyvL,GAAG,EAAE,YAAY;cACjBx3G,KAAK,EAAE,cAAc;cACrB7jE,OAAO,EAAE,MAAAA,CAAA,KAAY;gBACjB;gBACA;gBACA,IAAI/G,CAAC,CAACC,OAAO,CAACkyC,WAAW,EAAE;kBACvB+2I,iBAAiB,CAAC1E,MAAM,EAAEG,cAAc,EAAElwI,UAAU,EAAEmwI,SAAS,EAAEF,UAAU,CAAC;kBAC5EyE,eAAe,CAAC3E,MAAM,EAAE/vI,UAAU,CAAC;gBACvC,CAAC,MAAM;kBACH9yC,KAAK,CAAC/S,IAAI,CAACgxL,SAAS,CAAC;kBACrBuJ,eAAe,CAAC3E,MAAM,EAAE/vI,UAAU,CAAC;gBACvC;cAEJ;YACJ,CAAC,CAAC;YAEF,IAAIiwI,UAAU,IAAI,GAAG,IAAI1kL,CAAC,CAACC,OAAO,CAACkyC,WAAW,IAAI,IAAI,EAAE;cAEpDvwC,MAAM,CAAC5E,IAAI,CAAC;gBACRrK,IAAI,EAAE,cAAc;gBACpB;gBACA;gBACAyvL,GAAG,EAAE,q4FAAq4F;gBAC14Fx3G,KAAK,EAAE,4BAA4B;gBACnC7jE,OAAO,EAAE,MAAAA,CAAA,KAAY;kBAEjB,MAAM07K,GAAG,GAAGX,SAAS,CAACY,WAAW,CAAC,CAAC;kBACnC,MAAMC,UAAU,GAAG,MAAMV,YAAY,CAACW,iBAAiB,CAAC,CAAC;kBAEzD,MAAMjuL,IAAI,GAAG,MAAM8tL,GAAG,CAACI,WAAW,CAAC;oBAC/B;oBACAF;kBACJ,CAAC,CAAC;kBAEFb,SAAS,CAAC0G,aAAa,CAAC,CAAC;kBACzB;kBACA,IAAI5D,SAAS,GAAG,IAAI;kBACpB,MAAMt/J,MAAM,GAAG,MAAMy+J,SAAS,CAACqF,cAAc,CAAC5E,MAAM,EAAE,GAAG,EAAE/vI,UAAU,EAAEmwI,SAAS,EAAEF,UAAU,EAAE1kL,CAAC,CAACC,OAAO,CAACC,eAAe,CAAC;kBAExH,IAAIolB,MAAM,EAAE;oBAER,MAAM+8J,YAAY,GAAGjiL,MAAM,CAACkiL,IAAI,CAACh9J,MAAM,CAAC;oBACxC,MAAMgM,GAAG,GAAG+wJ,YAAY,CAACnzL,MAAM;oBAC/B,MAAMmuI,KAAK,GAAG,IAAIx/E,UAAU,CAACvsB,GAAG,CAAC;oBAEjC,KAAK,IAAIx3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGw3B,GAAG,EAAE,EAAEx3B,CAAC,EAAE;sBAC1BujI,KAAK,CAACvjI,CAAC,CAAC,GAAGuoL,YAAY,CAACxmK,UAAU,CAAC/hB,CAAC,CAAC;oBACzC;oBACA;oBACA,MAAM0hL,IAAI,GAAG,IAAIj9J,IAAI,CAAC,CAAC8+G,KAAK,CAAC,EAAE;sBAAE1qI,IAAI,EAAE;oBAAkB,CAAC,CAAC;oBAC3D,IAAI8uL,OAAO,GAAGK,SAAS,CAACL,OAAO;oBAC/BK,SAAS,CAACH,UAAU,CAACF,OAAO,CAACG,QAAQ,CAAC;oBACtCE,SAAS,CAACS,YAAY,CAAC/G,IAAI,EAAE;sBAAEgH,QAAQ,EAAE;oBAAa,CAAC,CAAC;kBAE5D;gBAEJ;cACJ,CAAC,CAAC;YAEN;UAEJ,CAAC,CAAC;;UAGF;;UAEA,MAAMH,YAAY,GAAGjiL,MAAM,CAACkiL,IAAI,CAACtuJ,GAAG,CAAC;UACrC,MAAM1C,GAAG,GAAG+wJ,YAAY,CAACnzL,MAAM;UAC/B,MAAMmuI,KAAK,GAAG,IAAIx/E,UAAU,CAACvsB,GAAG,CAAC;UAEjC,KAAK,IAAIx3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGw3B,GAAG,EAAE,EAAEx3B,CAAC,EAAE;YAC1BujI,KAAK,CAACvjI,CAAC,CAAC,GAAGuoL,YAAY,CAACxmK,UAAU,CAAC/hB,CAAC,CAAC;UACzC;;UAEA;UACA,MAAM0hL,IAAI,GAAG,IAAIj9J,IAAI,CAAC,CAAC8+G,KAAK,CAAC,EAAE;YAAE1qI,IAAI,EAAE;UAAkB,CAAC,CAAC;UAC3D6uL,QAAQ,CAACO,IAAI,CAACC,cAAc,CAACO,YAAY,CAAC/G,IAAI,EAAE;YAAEgH,QAAQ,EAAE;UAAa,CAAC,CAAC;UAC3EhB,QAAQ,CAACE,EAAE,CAACG,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC;UAE5CC,SAAS,CAAC/vL,gBAAgB,CAAC,gBAAgB,EAAE,YAAY;YACrD,IAAI;cAEA,MAAM0wL,GAAG,GAAGX,SAAS,CAACY,WAAW,CAAC,CAAC;cACnC,MAAMC,UAAU,GAAG,MAAMV,YAAY,CAACW,iBAAiB,CAAC,CAAC;cAEzD,MAAMjuL,IAAI,GAAG,MAAM8tL,GAAG,CAACI,WAAW,CAAC;gBAC/B;gBACAF;cACJ,CAAC,CAAC;YAEN,CAAC,CAAC,MAAM;cAEJ+F,2BAA2B,CAAC,CAAC;cAC7B;YACJ;UAEJ,CAAC,CAAC;QACN,CAAC,CAAC;MACV,CAAC;MACD/nL,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EACA,eAAeolL,yBAAyBA,CAAC7nI,MAAM,EAAE0lI,oBAAoB,EAAEP,MAAM,EAAE;IAC3E,IAAI;MACA,MAAM/9J,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;QAC5BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB4V,MAAM,EAAEA,MAAM;UACd0lI,oBAAoB,EAAEA,oBAAoB;UAC1CP,MAAM,EAAEA;QACZ,CAAC,CAAC;QACFzkI,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAe24E,gBAAgBA,CAAA,EAAG;IAC9B,IAAI;MACA,MAAMpgK,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,eAAe;QACnBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QACrB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAei8E,uBAAuBA,CAClC9qI,MAAM,EACNzJ,UAAU,EACV60I,cAAc,EACdC,QAAQ,EACRrF,gBAAgB,EAClB;IACE,IAAI;MACA,IAAI9mD,MAAM,GAAG,EAAE;MACf,IAAIC,KAAK,GAAG,IAAIx/E,UAAU,CAAC0rI,QAAQ,CAAC;MACpC,IAAIj4J,GAAG,GAAG+rG,KAAK,CAACC,UAAU;MAC1B,KAAK,IAAIxjI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGw3B,GAAG,EAAEx3B,CAAC,EAAE,EAAE;QAC1BsjI,MAAM,IAAIzoH,MAAM,CAAC4oH,YAAY,CAACF,KAAK,CAACvjI,CAAC,CAAC,CAAC;MAC3C;MACA,IAAI0jI,QAAQ,GAAGp9H,MAAM,CAACoe,IAAI,CAAC4+G,MAAM,CAAC;MAClC,MAAM93G,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sBAAsB;QAC1BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB4V,MAAM;UACNzJ,UAAU;UACV60I,cAAc;UACdC,QAAQ,EAAE/rD,QAAQ;UAClB0mD;QACJ,CAAC,CAAC;QACFtlI,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAey5E,8BAA8BA,CACzCtoI,MAAM,EACNzJ,UAAU,EACV60I,cAAc,EACd5E,UAAU,EACVR,gBAAgB,EAClB;IACE,IAAI;MACA,MAAM5+J,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6BAA6B;QACjCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB4V,MAAM;UACNzJ,UAAU;UACV60I,cAAc;UACd5E,UAAU;UACVR;QACJ,CAAC,CAAC;QACFtlI,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAe+7E,uBAAuBA,CAClCtE,MAAM,EACN+E,QAAQ,EACR5E,cAAc,EAChB;IACE,IAAI;MACA,IAAIvnD,MAAM,GAAG,EAAE;MACf,IAAIC,KAAK,GAAG,IAAIx/E,UAAU,CAAC0rI,QAAQ,CAAC;MACpC,IAAIj4J,GAAG,GAAG+rG,KAAK,CAACC,UAAU;MAC1B,KAAK,IAAIxjI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGw3B,GAAG,EAAEx3B,CAAC,EAAE,EAAE;QAC1BsjI,MAAM,IAAIzoH,MAAM,CAAC4oH,YAAY,CAACF,KAAK,CAACvjI,CAAC,CAAC,CAAC;MAC3C;MACA,IAAI0jI,QAAQ,GAAGp9H,MAAM,CAACoe,IAAI,CAAC4+G,MAAM,CAAC;MAClC,MAAM93G,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sBAAsB;QAC1BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBk8I,MAAM;UACN+E,QAAQ,EAAE/rD,QAAQ;UAClBmnD;QACJ,CAAC,CAAC;QACF/lI,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAew6E,qCAAqCA,CAChD/C,MAAM,EACNgF,kBAAkB,EACpB;IACE,IAAI;MAEA,MAAMlkK,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oCAAoC;QACxCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBk8I,MAAM;UACNgF;QACJ,CAAC,CAAC;QACF5qI,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeq6E,uBAAuBA,CAAC5C,MAAM,EAAE;IAC3C,IAAI;MACA,MAAMl/J,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sBAAsB;QAC1BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,eAAe,GACfk8I,MAAM,GACN,IAAI;QACR5lI,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAei3E,qBAAqBA,CAAC9lI,MAAM,EAAEzJ,UAAU,EAAEmvI,oBAAoB,EAAE;IAC3E,IAAI;MACA,MAAMt+J,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oBAAoB;QACxBxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,eAAe,GACf4V,MAAM,GACN,mBAAmB,GACnBzJ,UAAU,GACV,6BAA6B,GAC7BmvI,oBAAoB,GACpB,IAAI;QACRhlI,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;;EAGA;EACA,eAAe07E,aAAaA,CAACb,UAAU,EAAEjD,cAAc,EAAElwI,UAAU,EAAEmwI,SAAS,EAAE;IAC5E;IACA,IAAI;MACA,MAAMjwL,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iBAAiB;QACrBxoD,IAAI,EAAE,iBAAiB,GAAGizL,UAAU,GAAG,uBAAuB,GAAGjD,cAAc,GAAG,mBAAmB,GAAGlwI,UAAU,GAAG,kBAAkB,GAAGmwI,SAAS,GAAG,IAAI;QAC1JhmI,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACyzL,mBAAmB;IACnC,CAAC,CAAC,OAAOznL,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;;EAEA;EACA,eAAeq8E,cAAcA,CAAC5E,MAAM,EAAEG,cAAc,EAAElwI,UAAU,EAAEmwI,SAAS,EAAEF,UAAU,EAAExkL,eAAe,EAAE;IACtG;IACA,IAAI;MACA,MAAMvL,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kBAAkB;QACtBxoD,IAAI,EAAE,aAAa,GAAG6vL,MAAM,GAAG,uBAAuB,GAAGG,cAAc,GAAG,mBAAmB,GAAGlwI,UAAU,GAAG,kBAAkB,GAAGmwI,SAAS,GAAG,mBAAmB,GAAGF,UAAU,GAAG,wBAAwB,GAAGxkL,eAAe,GAAG,IAAI;QAClO0+C,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACg0L,oBAAoB;IACpC,CAAC,CAAC,OAAOhoL,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEA,SAAS27E,2BAA2BA,CAAA,EAAG;IAEnC,IAAIjnL,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACpBG,EAAE,EAAE,0BAA0B;MAC9Ba,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,IAAIkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI8zD,KAAK,GAAGzwD,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB3C,OAAO,CAACjQ,IAAI,CAAC,CAAC;MAClB;IACJ,CAAC,CAAC;IAEFsvC,OAAO,CAAC9uC,WAAW,CAACozD,KAAK,CAAC;IAC1B,IAAIpkB,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,oGAAoG;IAC/H0S,KAAK,CAACpS,WAAW,CAACgvC,cAAc,CAAC;IACjC58B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EAErB;EAEA,SAASynL,iBAAiBA,CAAC1E,MAAM,EAAEG,cAAc,EAAElwI,UAAU,EAAEmwI,SAAS,EAAEF,UAAU,EAAE;IAClF,MAAM+E,iBAAiB,GAAG9nL,KAAK,CAAC1P,KAAK,CAAC;MAClCG,EAAE,EAAE,mBAAmB;MACvBa,UAAU,EAAE,SAAS;MACrBkP,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIg8B,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhC,MAAM+6L,iBAAiB,GAAG13L,MAAM,CAACC,KAAK,CAAC;MACnCM,IAAI,EAAE,gBAAgB;MACtBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QAExBkO,KAAK,CAAC/S,IAAI,CAAC66L,iBAAiB,CAAC;QAC7B9nL,KAAK,CAAC/S,IAAI,CAACgxL,SAAS,CAAC;QACrB;QACA;QACA;QACA;MAEJ,CAAC,CAAC;IACN,CAAC,CAAC,EAAC;;IAIH,IAAI+J,WAAW,GAAG33L,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,cAAc;MACpBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC66L,iBAAiB,CAAC;QAC7B3qL,OAAO,CAACjQ,IAAI,CAAC,CAAC;MAElB;IACJ,CAAC,CAAC;IACFsvC,OAAO,CAAC9uC,WAAW,CAACs6L,WAAW,CAAC;IAChCxrJ,OAAO,CAAC9uC,WAAW,CAACq6L,iBAAiB,CAAC;IAEtC,IAAIrrJ,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,+GAA+G;IAC1I06L,iBAAiB,CAACp6L,WAAW,CAACgvC,cAAc,CAAC;IAC7CorJ,iBAAiB,CAACp6L,WAAW,CAAC8uC,OAAO,CAAC;IACtCx8B,KAAK,CAAC9S,IAAI,CAAC46L,iBAAiB,CAAC;EACjC;EAEA,eAAelD,cAAcA,CAAC/B,MAAM,EAAEtmI,MAAM,EAAE;IAC1C,IAAI;MACA,MAAMvpD,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kBAAkB;QACtBxoD,IAAI,EAAE,aAAa,GAAG6vL,MAAM,GAAG,eAAe,GAAGtmI,MAAM,GAAG,IAAI;QAC9DU,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACi1L,oBAAoB;IACpC,CAAC,CAAC,OAAOjpL,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEA,eAAeo8E,eAAeA,CAAC3E,MAAM,EAAE;IACnC,IAAI;MACA,MAAM7vL,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,mBAAmB;QACvBxoD,IAAI,EAAE,aAAa,GAAG6vL,MAAM,GAAG,eAAe,GAAGxkL,CAAC,CAACC,OAAO,CAACk/B,MAAM,GAAG,IAAI;QACxEyf,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACk1L,qBAAqB;IACrC,CAAC,CAAC,OAAOlpL,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEA,OAAO;IACHm6E,UAAU;IACVC,aAAa;IACbV,cAAc;IACdK,kBAAkB;IAClBf,yBAAyB;IACzBiD,uBAAuB;IACvBF,uBAAuB;IACvBvB,qCAAqC;IACrCH,uBAAuB;IACvBpD,qBAAqB;IACrByE,aAAa;IACbW,cAAc;IACdD,eAAe;IACf5C,cAAc;IACdb,gBAAgB;IAChBc;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AC3mCJ,MAAMsD,YAAY,GAAI,YAAY;EAC9B,IAAI7yF,WAAW;EACf,IAAIC,UAAU;EACd,IAAIC,YAAY;EAChB,IAAIC,eAAe;EACnB,IAAI2yF,eAAe,GAAG,EAAE;EACxB,IAAIC,mBAAmB,GAAG,EAAE;EAC5B,IAAIzyF,cAAc,GAAG,EAAE;EACvB,IAAIC,SAAS;EACb,IAAIpgG,SAAS;EAEb,SAAStF,IAAIA,CAAA,EAAG;IACZszG,wBAAwB,CAAC,KAAK,CAAC;IAC/BtkG,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvB,MAAMm3F,MAAM,GAAGC,iBAAiB,CAAC,CAAC;IAClCX,SAAS,GAAGY,UAAU,CAAC,CAAC;;IAExB;IACA,MAAMhwF,OAAO,GAAGovF,SAAS,CAACv/F,gBAAgB,CAAC,aAAa,CAAC;IACzDmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAEhDiO,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC6oG,MAAM,CAAC;IACpCp3F,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACmoG,SAAS,CAAC;;IAEvC;IACA1yF,KAAK,CAACqD,iBAAiB,CAACqvF,SAAS,CAAC;IAElCN,UAAU,CAACnlG,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1C0nG,WAAW,CAACxoG,SAAS,CAACmE,MAAM,CAAC,YAAY,CAAC;MAC1CukG,YAAY,CAAC3jG,KAAK,GAAG,EAAE;MACvB2jG,YAAY,CAAC92F,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF82F,YAAY,CAACplG,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5C8oG,eAAe,CAAC9oG,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC;IACvC,CAAC,CAAC;IACF4D,SAAS,GAAG4I,CAAC,CAACC,OAAO,CAACk1C,gBAAgB;IACtCmjD,cAAc,CAAClhG,SAAS,CAAC;IACzBxF,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAAC0jG,KAAK,CAAC,CAAC;EAChD;EAEA,SAASC,cAAcA,CAAA,EAAG;IACtB,OAAOxmG,MAAM,CAACC,KAAK,CAAC;MAChBG,EAAE,EAAE,WAAW;MACfG,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC,WAAW;IAC5B,CAAC,CAAC;EACN;EAEA,SAASg3L,iBAAiBA,CAAA,EAAG;IACzB,OAAOj4L,MAAM,CAACC,KAAK,CAAC;MAChBM,IAAI,EAAE,kBAAkB;MACxBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;EACN;EAEA,SAAS+lG,mBAAmBA,CAAA,EAAG;IAC3B,OAAOjjG,KAAK,CAACyB,aAAa,CAAC;MACvB3E,IAAI,EAAE,gBAAgB;MACtBH,EAAE,EAAE,YAAY;MAChBqB,QAAQ,EAAEA,CAAA,KAAMklG,uBAAuB,CAACppG,KAAK,CAACC,MAAM,CAAC;MACrD4H,SAAS,EAAE4I,CAAC,CAACC,OAAO,CAACk1C;IACzB,CAAC,CAAC;EACN;EAEA,SAASyjD,iBAAiBA,CAACnhG,OAAO,EAAE;IAChC,OAAOhC,KAAK,CAACyB,aAAa,CAAC;MACvBE,SAAS,EAAEK,OAAO,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK;MACzChE,QAAQ,EAAEA,CAAA,KAAMklG,uBAAuB,CAACppG,KAAK,CAACC,MAAM;IACxD,CAAC,CAAC;EACN;EAEA,SAAS4oG,UAAUA,CAAA,EAAG;IAClB,IAAIS,YAAY,GAAG;MACfjzF,KAAK,EAAE,KAAK;MACZZ,OAAO,EAAE,6BAA6B;MACtCgB,cAAc,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC;MACpDM,OAAO,EAAE,IAAI;MACbG,oBAAoB,EAAE,QAAQ;MAC9BD,aAAa,EAAE;IACnB,CAAC;IAED,OAAO1B,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;EACpC;;EAEA;EACA,SAASkB,aAAaA,CAACD,OAAO,EAAEE,WAAW,EAAE;IACzC+vF,eAAe,GAAGjwF,OAAO,CAACnhG,GAAG,CAACoN,EAAE,IAAI;MAChC,IAAImkL,QAAQ,GAAGnkL,EAAE,CAACmkL,QAAQ;MAC1B,IAAIv3E,YAAY,GAAG5sG,EAAE,CAAC4sG,YAAY;MAClC,IAAIw3E,UAAU,GAAGpkL,EAAE,CAACokL,UAAU;MAC9B,IAAIltI,OAAO,GAAGl3C,EAAE,CAACk3C,OAAO;MACxB,IAAIs9C,MAAM,GAAGx0F,EAAE,CAAC0D,MAAM;MAEtB,MAAM+wF,qBAAqB,GAAGyvF,iBAAiB,CAAC,CAAC;MACjDzvF,qBAAqB,CAACzrG,SAAS,GAAG,kBAAkB;MAEpDyrG,qBAAqB,CAAC9nG,KAAK,GAAG,kCAAkC;MAChE,MAAM+nG,cAAc,GAAG7B,iBAAiB,CAAC2B,MAAM,CAAC;MAChDE,cAAc,CAAC/nG,KAAK,GAAG,sCAAsC;MAE7D,OAAO;QACHN,EAAE,EAAE83L,QAAQ;QACZ5jL,OAAO,EAAEk0F,qBAAqB,CAAC/uB,SAAS;QACxCjlE,aAAa,EAAEi0F,cAAc,CAAChvB,SAAS;QACvC2+G,UAAU,EAAED,UAAU;QACtBE,OAAO,EAAEptI,OAAO;QAChBqtI,YAAY,EAAE33E,YAAY;QAC1BpY,MAAM,EAAEA,MAAM;QACdrzF,MAAM,EAAE,CAACijL,UAAU,EAAEltI,OAAO,EAAE01D,YAAY,CAAC;QAC3Ct/G,UAAU,EAAE,CACR;UAAEE,GAAG,EAAE,aAAa;UAAEC,KAAK,EAAE+mG;QAAO,CAAC,EACrC;UAAEhnG,GAAG,EAAE,UAAU;UAAEC,KAAK,EAAE02L;QAAS,CAAC,CACvC;QACD7iL,eAAe,EAAElT,CAAC,IAAI;UAClBo2L,gBAAgB,CAACC,aAAa,CAACN,QAAQ,EAAEC,UAAU,CAAC;QACxD,CAAC;QACD7iL,qBAAqB,EAAEnT,CAAC,IAAI,CAC5B;MACJ,CAAC;IACL,CAAC,CAAC;IACF,IAAI6lG,WAAW,EAAE;MACbgwF,mBAAmB,GAAGD,eAAe;IACzC;IACAjlL,KAAK,CAAC9V,QAAQ,CAACwoG,SAAS,EAAEuyF,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC;EAC3D;EAEA,SAAS5xF,iBAAiBA,CAAA,EAAG;IACzB,IAAIh6D,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAEvCuoG,UAAU,GAAGsB,cAAc,CAAC,CAAC;IAC7BpB,eAAe,GAAGsB,mBAAmB,CAAC,CAAC;;IAEvC;IACAzB,WAAW,GAAGrlG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C8kG,WAAW,CAACxoG,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IACzCwoG,YAAY,GAAGvlG,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC9CglG,YAAY,CAACtkG,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC;IACxDokG,WAAW,CAAC5nG,WAAW,CAAC6nG,UAAU,CAAC;IACnCD,WAAW,CAAC5nG,WAAW,CAAC8nG,YAAY,CAAC;IAErCC,eAAe,CAAC3oG,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IAC5C,IAAIgsG,KAAK,GAAG/oG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzCwoG,KAAK,CAAClsG,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAC9BgsG,KAAK,CAACtrG,WAAW,CAAC+nG,eAAe,CAAC;IAClCuD,KAAK,CAACtrG,WAAW,CAAC4nG,WAAW,CAAC;IAE9BG,eAAe,CAACrlG,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD6H,SAAS,GAAG7H,KAAK,CAACC,MAAM,CAACiI,OAAO;MAChCuI,CAAC,CAACC,OAAO,CAACk1C,gBAAgB,GAAG/9C,SAAS;IAC1C,CAAC,CAAC;IAEF+mC,OAAO,CAAC9uC,WAAW,CAACsrG,KAAK,CAAC;IAC1B,OAAOx8D,OAAO;EAClB;EAEA,SAASw6D,uBAAuBA,CAACljG,KAAK,EAAE;IACpC,IAAIA,KAAK,CAACgC,OAAO,EAAE;MACfL,SAAS,GAAG,IAAI;IACpB,CAAC,MAAM;MACHA,SAAS,GAAG,KAAK;IACrB;IACAkhG,cAAc,CAAClhG,SAAS,CAAC;EAC7B;EAEA,SAASihG,eAAeA,CAACwC,WAAW,EAAE;IAElCA,WAAW,GAAGA,WAAW,CAACpoG,WAAW,CAAC,CAAC;IACvC8kG,cAAc,GAAG,EAAE;IACnByyF,mBAAmB,CAAC76L,OAAO,CAAC2rG,QAAQ,IAAI;MACpC,IAAIqvF,UAAU,GAAGrvF,QAAQ,CAACsvF,UAAU,CAAC33L,WAAW,CAAC,CAAC;MAClD,IAAIwqD,OAAO,GAAG69C,QAAQ,CAACuvF,OAAO,CAAC53L,WAAW,CAAC,CAAC;MAC5C,IAAIkgH,YAAY,GAAG7X,QAAQ,CAACwvF,YAAY,CAAC73L,WAAW,CAAC,CAAC;MACtD,IAAIwoG,QAAQ,GAAG,GAAGkvF,UAAU,IAAIltI,OAAO,IAAI01D,YAAY,EAAE;MACzD,IAAIzX,gBAAgB,GAAG,GAAGj+C,OAAO,IAAIktI,UAAU,IAAIx3E,YAAY,EAAE;MACjE,IAAIxX,WAAW,GAAGF,QAAQ,CAAC7iF,OAAO,CAACyiF,WAAW,CAAC;MAC/C,IAAIO,kBAAkB,GAAGF,gBAAgB,CAAC9iF,OAAO,CAACyiF,WAAW,CAAC;MAE9D,IAAIM,WAAW,KAAK,CAAC,CAAC,IAAIC,kBAAkB,KAAK,CAAC,CAAC,EAAE;QACjDC,WAAW,GAAG;UACV6uF,QAAQ,EAAEpvF,QAAQ,CAAC1oG,EAAE;UACrB+3L,UAAU,EAAErvF,QAAQ,CAACsvF,UAAU;UAC/BntI,OAAO,EAAE69C,QAAQ,CAACuvF,OAAO;UACzB13E,YAAY,EAAE7X,QAAQ,CAACwvF,YAAY;UACnC7gL,MAAM,EAAEqxF,QAAQ,CAACP;QACrB,CAAC;QACDhD,cAAc,CAACv6F,IAAI,CAACq+F,WAAW,CAAC;MACpC;IACJ,CAAC,CAAC;IACFtB,aAAa,CAACxC,cAAc,EAAE,KAAK,CAAC;EACxC;;EAEA;EACA,SAASe,cAAcA,CAAC7uF,MAAM,EAAE;IAC5BA,MAAM,GAAG7X,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,CAAC4C,OAAO;IACtDgzL,OAAO,CAACC,2BAA2B,CAC/B;MACI7/K,QAAQ,EAAEpB,MAAM,IAAI,IAAI,GAAG,GAAG,GAAG;IACrC,CAAC,EACD,UAAUqwF,OAAO,EAAEn5F,KAAK,EAAE;MACtBo5F,aAAa,CAACD,OAAO,EAAE,IAAI,CAAC;IAChC,CACJ,CAAC;EACL;EAEA,OAAO;IACHhoG;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACvNJ,MAAMy4L,gBAAgB,GAAI,YAAY;EAClC,IAAII,QAAQ;EACZ,IAAIl8E,MAAM;EACV,IAAIC,MAAM;EACV,IAAIC,OAAO;EACX,IAAIj3G,IAAI;EACR,IAAIgsK,gBAAgB;EAEpB,MAAM75J,QAAQ,GAAG,CACb;IACI+gE,KAAK,EAAE,QAAQ;IACfx4E,EAAE,EAAE,CAAC;IACLwZ,MAAM,EAAEA,CAAA,KAAMg/K,qBAAqB,CAAC77E,SAAS,CAAC;EAClD,CAAC,EACD;IACInkC,KAAK,EAAE,SAAS;IAChBx4E,EAAE,EAAE,CAAC;IACLwZ,MAAM,EAAEA,CAAA,KAAMi/K,WAAW,CAAC97E,SAAS,CAAC;EACxC,CAAC,CACJ;EAED,eAAey7E,aAAaA,CAACM,QAAQ,EAAE7iJ,IAAI,EAAmB;IAAA,IAAjBkqI,WAAW,GAAAh5K,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,CAAC;IACxDwxL,QAAQ,GAAGG,QAAQ;IACnBpzL,IAAI,GAAGuwC,IAAI;IACXy7H,gBAAgB,GAAGyO,WAAW;IAE9BrxK,GAAG,CAACC,iBAAiB,CAAC,CAAC;IAEvB,IAAIyuG,WAAW,GAAG59G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/Cq9G,WAAW,CAAC/gH,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAC1C,MAAMsX,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C,MAAM8sB,IAAI,GAAGrtB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAE1C,MAAMw9G,OAAO,GAAG/9G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7Cw9G,OAAO,CAACv9G,EAAE,GAAG,SAAS;IACtBu9G,OAAO,CAAC5gH,SAAS,GAAG,EAAE;IAEtB6gH,QAAQ,GAAG59G,MAAM,CAACC,KAAK,CAAC;MACpBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAAEq2L,YAAY,CAACh4L,IAAI,CAAC,CAAC;MAAE;IACjD,CAAC,CAAC;IAEF,MAAMg+G,YAAY,GAAG,MAAMf,SAAS,CAAC,CAAC;IAEtC9oG,OAAO,CAAClX,SAAS,GAAG,OAAO2I,IAAI,OAAO;IACtCi4G,OAAO,CAACtgH,WAAW,CAACygH,YAAY,CAAC;IAEjC7wF,IAAI,CAAC5vB,WAAW,CAAC4W,OAAO,CAAC;IACzBupG,WAAW,CAACngH,WAAW,CAAC4vB,IAAI,CAAC;IAC7BuwF,WAAW,CAACngH,WAAW,CAACugH,QAAQ,CAAC;IAEjC9uG,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACmgH,WAAW,CAAC;IACzC1uG,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACsgH,OAAO,CAAC;IACrC7uG,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;EAC1B;EACA,SAASsnF,mBAAmBA,CAACC,eAAe,EAAE;IAC1C,MAAMC,aAAa,GAAGvB,MAAM,CAAC78G,aAAa,CAAC,SAAS,CAAC;IAErD,IAAIo+G,aAAa,EAAE;MACfA,aAAa,CAACxhH,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC5C;IAEAshH,eAAe,CAACvhH,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;EAC3C;EACA,SAASuhH,mBAAmBA,CAACC,SAAS,EAAE;IACpC,MAAMtgH,aAAa,GAAG8+G,OAAO,CAAC98G,aAAa,CAAC,SAAS,CAAC;IACtD,MAAMsY,aAAa,GAAGwkG,OAAO,CAAC98G,aAAa,CAAC,qBAAqBs+G,SAAS,IAAI,CAAC;IAE/E,IAAItgH,aAAa,EAAE;MACfA,aAAa,CAACpB,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC5C;IAEAyb,aAAa,CAAC1b,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;EACzC;;EAEA;EACA;EACA,SAASyhH,eAAeA,CAAA,EAAG;IACvB,MAAM9hH,GAAG,GAAGsD,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzC7D,GAAG,CAACG,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAEjCkb,QAAQ,CAAC1a,OAAO,CAAC,CAAC6a,OAAO,EAAEzB,KAAK,KAAK;MACjC,MAAM4nG,SAAS,GAAGnmG,OAAO,CAAC5X,EAAE;MAE5B,MAAM2X,OAAO,GAAGnY,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC7C4X,OAAO,CAACtb,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MACzCob,OAAO,CAAChb,SAAS,GAAG,GAAGib,OAAO,CAAC4gE,KAAK,EAAE;MAEtC,IAAI84F,gBAAgB,KAAKn7J,KAAK,EAAE;QAC5BwB,OAAO,CAACtb,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACnC;MAEAob,OAAO,CAAChY,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QACnC47G,mBAAmB,CAAChmG,OAAO,CAAC;QAC5BmmG,mBAAmB,CAACC,SAAS,CAAC;QAC9BrvG,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;MAC1B,CAAC,CAAC;MAEFn6B,GAAG,CAACe,WAAW,CAAC0a,OAAO,CAAC;IAC5B,CAAC,CAAC;IAEF,OAAOzb,GAAG;EACd;EACA,eAAe+hH,SAASA,CAAA,EAAG;IACvB,MAAMruG,IAAI,GAAGpQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C6P,IAAI,CAACvT,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAEnC,MAAMi8L,qBAAqB,CAAC94L,IAAI,CAAC64L,QAAQ,EAAEjzL,IAAI,CAAC;IAChD,MAAMmzL,WAAW,CAAC/4L,IAAI,CAAC64L,QAAQ,EAAEjzL,IAAI,CAAC;IAEtCmS,QAAQ,CAAC1a,OAAO,CAAC,CAAC6a,OAAO,EAAEzB,KAAK,KAAK;MACjC,MAAM4nG,SAAS,GAAGnmG,OAAO,CAAC5X,EAAE;MAC5B,MAAMqZ,aAAa,GAAGzB,OAAO,CAAC4B,MAAM,CAAC,CAAC;MACtCH,aAAa,CAAC5Y,YAAY,CAAC,iBAAiB,EAAEs9G,SAAS,CAAC;MACxD1kG,aAAa,CAAChd,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAE/C,IAAI+0K,gBAAgB,KAAKn7J,KAAK,EAAE;QAC5BkD,aAAa,CAAChd,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACzC;MAEAqT,IAAI,CAAC3S,WAAW,CAACoc,aAAa,CAAC;IACnC,CAAC,CAAC;IAEF,OAAOzJ,IAAI;EACf;EAEA,eAAe+sG,SAASA,CAAA,EAAG;IACvBN,MAAM,GAAG78G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtCs8G,MAAM,CAAChgH,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAE/B+/G,MAAM,GAAG0B,eAAe,CAAC,CAAC;IAC1B3B,MAAM,CAACp/G,WAAW,CAACq/G,MAAM,CAAC;IAE1BC,OAAO,GAAG,MAAM0B,SAAS,CAAC,CAAC;IAC3B5B,MAAM,CAACp/G,WAAW,CAACs/G,OAAO,CAAC;IAE3B,OAAOF,MAAM;EACjB;EAEA,OAAO;IACH+7E,aAAa;IACbz7E;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACjJJ,MAAM67E,qBAAqB,GAAG,CAAC,MAAM;EACjC,IAAIG,iBAAiB,GAAG,EAAE;EAC1B,IAAIJ,QAAQ;EACZ,IAAIl7E,WAAW;EACf,IAAIu7E,cAAc,GAAG,KAAK;EAE1B,IAAIb,UAAU;EACd,IAAIj4E,QAAQ;EACZ,IAAIE,QAAQ;EACZ,IAAIE,IAAI;EACR,IAAIlzE,KAAK;EACT,IAAI6rJ,GAAG;EACP,IAAIt4E,YAAY;EAChB,IAAIu4E,cAAc;EAClB,IAAItiB,KAAK;EACT,IAAIvpB,KAAK;EACT,IAAI51I,MAAM;EAGV,eAAe3X,IAAIA,CAACo4L,QAAQ,EAAExyL,IAAI,EAAE;IAChCizL,QAAQ,GAAGT,QAAQ;IACnBz6E,WAAW,GAAG/3G,IAAI;IAElB,IAAIizL,QAAQ,IAAIz0L,SAAS,EAAE;MACvB60L,iBAAiB,GAAG,MAAMN,OAAO,CAACM,iBAAiB,CAACJ,QAAQ,CAAC;IACjE;EAEJ;EAEA,SAAS57E,SAASA,CAAA,EAAG;IACjB,MAAMo8E,cAAc,GAAGv5L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpDg5L,cAAc,CAAC18L,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IAC3C,MAAM6hH,eAAe,GAAG46E,eAAe,CAAC,CAAC;IACzCD,cAAc,CAAC97L,WAAW,CAACmhH,eAAe,CAAC;IAC3C,OAAO26E,cAAc;EACzB;EAEA,SAASC,eAAeA,CAAA,EAAG;IAEvB,MAAM95E,eAAe,GAAG1/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDm/G,eAAe,CAAC7iH,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAEvDw7L,UAAU,GAAGY,iBAAiB,CAACM,uBAAuB,CAAC,CAAC,CAAC,CAAClB,UAAU;IACpEj4E,QAAQ,GAAG64E,iBAAiB,CAACM,uBAAuB,CAAC,CAAC,CAAC,CAACn5E,QAAQ;IAChEE,QAAQ,GAAG24E,iBAAiB,CAACM,uBAAuB,CAAC,CAAC,CAAC,CAACj5E,QAAQ;IAChEE,IAAI,GAAGy4E,iBAAiB,CAACM,uBAAuB,CAAC,CAAC,CAAC,CAAC/4E,IAAI;IACxDlzE,KAAK,GAAG2rJ,iBAAiB,CAACM,uBAAuB,CAAC,CAAC,CAAC,CAACjsJ,KAAK;IAC1D6rJ,GAAG,GAAGF,iBAAiB,CAACM,uBAAuB,CAAC,CAAC,CAAC,CAACJ,GAAG;IACtDt4E,YAAY,GAAGo4E,iBAAiB,CAACM,uBAAuB,CAAC,CAAC,CAAC,CAAC14E,YAAY;IACxEu4E,cAAc,GAAGH,iBAAiB,CAACM,uBAAuB,CAAC,CAAC,CAAC,CAACH,cAAc;IAC5EtiB,KAAK,GAAGmiB,iBAAiB,CAACM,uBAAuB,CAAC,CAAC,CAAC,CAACziB,KAAK;IAC1DvpB,KAAK,GAAG0rC,iBAAiB,CAACM,uBAAuB,CAAC,CAAC,CAAC,CAAChsC,KAAK;IAC1D51I,MAAM,GAAGshL,iBAAiB,CAACM,uBAAuB,CAAC,CAAC,CAAC,CAAC5hL,MAAM;IAG5D6hL,eAAe,GAAG71L,KAAK,CAACxD,KAAK,CAAC;MAC1BG,EAAE,EAAE,iBAAiB;MACrBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAEgM,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI;MACpDnhD,KAAK,EAAG22L,UAAU,GAAIA,UAAU,GAAG;IACvC,CAAC,CAAC;IAEFl4E,aAAa,GAAGx8G,KAAK,CAACxD,KAAK,CAAC;MACxBG,EAAE,EAAE,eAAe;MACnBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAEgM,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI;MACpDnhD,KAAK,EAAG0+G,QAAQ,GAAIA,QAAQ,GAAG;IACnC,CAAC,CAAC;IAEFC,aAAa,GAAG18G,KAAK,CAACxD,KAAK,CAAC;MACxBG,EAAE,EAAE,eAAe;MACnBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAEgM,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI;MACpDnhD,KAAK,EAAG4+G,QAAQ,GAAIA,QAAQ,GAAG;IACnC,CAAC,CAAC;IAEFC,SAAS,GAAG58G,KAAK,CAACxD,KAAK,CAAC;MACpBG,EAAE,EAAE,WAAW;MACfO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAEgM,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI;MACpDnhD,KAAK,EAAG8+G,IAAI,GAAIA,IAAI,GAAG;IAC3B,CAAC,CAAC;IAEFC,UAAU,GAAG98G,KAAK,CAACxD,KAAK,CAAC;MACrBG,EAAE,EAAE,YAAY;MAChBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,OAAO;MACdrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAEgM,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI;MACpDnhD,KAAK,EAAG4rC,KAAK,GAAIA,KAAK,GAAG;IAC7B,CAAC,CAAC;IAEFozE,QAAQ,GAAG/8G,KAAK,CAACxD,KAAK,CAAC;MACnBG,EAAE,EAAE,UAAU;MACdO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,KAAK;MACZrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAEgM,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI;MACpDnhD,KAAK,EAAGy3L,GAAG,GAAIA,GAAG,GAAG;IACzB,CAAC,CAAC;IAEFM,iBAAiB,GAAG91L,KAAK,CAACxD,KAAK,CAAC;MAC5BG,EAAE,EAAE,mBAAmB;MACvBO,IAAI,EAAE,QAAQ;MACdoB,KAAK,EAAE,eAAe;MACtBrB,KAAK,EAAE,WAAW;MAClBW,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,WAAW;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;MAC/CQ,QAAQ,EAAEgM,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI;MACpDnhD,KAAK,EAAGm/G,YAAY,GAAIA,YAAY,GAAG;IAC3C,CAAC,CAAC;IAEF64E,mBAAmB,GAAG/1L,KAAK,CAACxD,KAAK,CAAC;MAC9BG,EAAE,EAAE,qBAAqB;MACzBO,IAAI,EAAE,QAAQ;MACdoB,KAAK,EAAE,iBAAiB;MACxBrB,KAAK,EAAE,WAAW;MAClBW,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,WAAW;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;MAC/CQ,QAAQ,EAAEgM,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI;MACpDnhD,KAAK,EAAG03L,cAAc,GAAIA,cAAc,GAAG;IAC/C,CAAC,CAAC;IAEFO,SAAS,GAAGh2L,KAAK,CAACyB,aAAa,CAAC;MAC5B3E,IAAI,EAAE,SAAS;MACfH,EAAE,EAAE,WAAW;MACfgF,SAAS,EAAEqS,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK;MACvCzV,QAAQ,EAAEgM,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,GAAG,KAAK,GAAG;IACpD,CAAC,CAAC;IAEFg5H,UAAU,GAAGl4K,KAAK,CAACxD,KAAK,CAAC;MACrBG,EAAE,EAAE,YAAY;MAChB2B,KAAK,EAAE,OAAO;MACdpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAEgM,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI;MACpDnhD,KAAK,EAAGo1K,KAAK,GAAIA,KAAK,GAAG;IAC7B,CAAC,CAAC;IAEF8iB,UAAU,GAAGj2L,KAAK,CAACxD,KAAK,CAAC;MACrBG,EAAE,EAAE,YAAY;MAChB2B,KAAK,EAAE,OAAO;MACdpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAEgM,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI;MACpDnhD,KAAK,EAAG6rJ,KAAK,GAAIA,KAAK,GAAG;IAC7B,CAAC,CAAC;;IAEF;IACA7Y,QAAQ,GAAGx0I,MAAM,CAACC,KAAK,CAAC;MACpBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBqB,QAAQ,EAAEgM,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI;MACpDlhD,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAI,CAAC+yI,QAAQ,CAAC/3I,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC1CiqI,QAAQ,CAAC/3I,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UAClCi/K,gBAAgB,CAAC,CAAC;QACtB;MACJ;IACJ,CAAC,CAAC;IACF/rE,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAAEq2L,YAAY,CAACh4L,IAAI,CAAC,CAAC;MAAC;IAChD,CAAC,CAAC;IAEF,IAAI0xI,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACzC,MAAM0+G,OAAO,GAAGj/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0+G,OAAO,CAACpiH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9B,MAAMmiH,UAAU,GAAGl/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD2+G,UAAU,CAACriH,SAAS,CAACE,GAAG,CAAC,MAAM,CAAC;IAChC,MAAMoiH,cAAc,GAAGn/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD4+G,cAAc,CAACtiH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1CmiH,UAAU,CAAC/hH,SAAS,GAAG,wCAAwC;IAC/D+hH,UAAU,CAACzhH,WAAW,CAAC0hH,cAAc,CAAC;IACtCF,OAAO,CAACxhH,WAAW,CAACyhH,UAAU,CAAC;IAE/B,MAAM66E,aAAa,GAAG/5L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDw5L,aAAa,CAACl9L,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAC3C28L,eAAe,CAAC78L,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC3Cg9L,aAAa,CAACt8L,WAAW,CAACi8L,eAAe,CAAC;IAC1CG,SAAS,CAACh9L,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACrCg9L,aAAa,CAACt8L,WAAW,CAACo8L,SAAS,CAAC;IACpC16E,cAAc,CAAC1hH,WAAW,CAACs8L,aAAa,CAAC;IAEzC,MAAMC,kBAAkB,GAAGh6L,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACtDy5L,kBAAkB,CAACn9L,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAC3Ci9L,kBAAkB,CAAC78L,SAAS,GAAG,SAAS,qBAAqB,SAAS;IACtE68L,kBAAkB,CAACl5L,KAAK,CAACiyI,UAAU,GAAG,MAAM;IAC5CinD,kBAAkB,CAACl5L,KAAK,CAACgwD,YAAY,GAAG,MAAM;IAC9CquD,cAAc,CAAC1hH,WAAW,CAACu8L,kBAAkB,CAAC;IAC9C76E,cAAc,CAAC1hH,WAAW,CAACm0I,MAAM,CAAC;IAClCzyB,cAAc,CAAC1hH,WAAW,CAACm0I,MAAM,CAAC;IAElC,IAAIvuB,QAAQ,GAAGrjH,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C8iH,QAAQ,CAACxmH,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IACtCsjH,aAAa,CAACxjH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACzCsmH,QAAQ,CAAC5lH,WAAW,CAAC4iH,aAAa,CAAC;IACnCE,aAAa,CAAC1jH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACzCsmH,QAAQ,CAAC5lH,WAAW,CAAC8iH,aAAa,CAAC;IACnCE,SAAS,CAAC5jH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACrCsmH,QAAQ,CAAC5lH,WAAW,CAACgjH,SAAS,CAAC;IAC/BtB,cAAc,CAAC1hH,WAAW,CAAC4lH,QAAQ,CAAC;IAEpC,IAAI2xB,MAAM,GAAGh1I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1Cy0I,MAAM,CAACn4I,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IACpC4jH,UAAU,CAAC9jH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACtCi4I,MAAM,CAACv3I,WAAW,CAACkjH,UAAU,CAAC;IAC9BC,QAAQ,CAAC/jH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACpCi4I,MAAM,CAACv3I,WAAW,CAACmjH,QAAQ,CAAC;IAC5BzB,cAAc,CAAC1hH,WAAW,CAACu3I,MAAM,CAAC;IAElC,MAAM5xB,mBAAmB,GAAGpjH,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACvD6iH,mBAAmB,CAACvmH,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAC5CqmH,mBAAmB,CAACjmH,SAAS,GAAG,SAAS,qBAAqB,SAAS;IACvEimH,mBAAmB,CAACtiH,KAAK,CAACiyI,UAAU,GAAG,MAAM;IAC7C5zB,cAAc,CAAC1hH,WAAW,CAAC2lH,mBAAmB,CAAC;IAC/CjE,cAAc,CAAC1hH,WAAW,CAACm0I,MAAM,CAAC;IAClCzyB,cAAc,CAAC1hH,WAAW,CAACm0I,MAAM,CAAC;IAElC,IAAI2qC,QAAQ,GAAGv8K,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Cg8K,QAAQ,CAAC1/K,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IACtC48L,iBAAiB,CAAC98L,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC7Cw/K,QAAQ,CAAC9+K,WAAW,CAACk8L,iBAAiB,CAAC;IACvCC,mBAAmB,CAAC/8L,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC/Cw/K,QAAQ,CAAC9+K,WAAW,CAACm8L,mBAAmB,CAAC;IACzC7d,UAAU,CAACl/K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACtCw/K,QAAQ,CAAC9+K,WAAW,CAACs+K,UAAU,CAAC;IAChC58D,cAAc,CAAC1hH,WAAW,CAAC8+K,QAAQ,CAAC;IAEpCp9D,cAAc,CAAC1hH,WAAW,CAACq8L,UAAU,CAAC;IAEtC,IAAIvtJ,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IACtCwvC,OAAO,CAACzrC,KAAK,CAACiyI,UAAU,GAAG,KAAK;IAChCxmG,OAAO,CAACzrC,KAAK,CAACiS,KAAK,GAAG,KAAK;IAE3B,IAAI3E,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;MAC5BoyF,QAAQ,CAAC9zI,KAAK,CAACiS,KAAK,GAAG,KAAK;MAC5Bw5B,OAAO,CAAC9uC,WAAW,CAACm3I,QAAQ,CAAC;IACjC;IAEA3kC,UAAU,CAACnvG,KAAK,CAACiS,KAAK,GAAG,KAAK;IAC9Bk9F,UAAU,CAACnvG,KAAK,CAACiyI,UAAU,GAAG,IAAI;IAClCxmG,OAAO,CAAC9uC,WAAW,CAACwyG,UAAU,CAAC;IAC/BkP,cAAc,CAAC1hH,WAAW,CAAC8uC,OAAO,CAAC;IAEnCqC,cAAc,CAAC,CAAC;IAChB8wE,eAAe,CAACjiH,WAAW,CAACwhH,OAAO,CAAC;IACpCw9D,iCAAiC,CAAC8b,UAAU,CAAC;IAE7C,OAAO74E,eAAe;EAC1B;EAEA,SAASg9D,+BAA+BA,CAAA,EAAG;IACvC,IAAI6b,UAAU,GAAGmB,eAAe,CAACz5L,aAAa,CAAC,kBAAkB,CAAC;IAClEw8K,iCAAiC,CAAC8b,UAAU,CAAC32L,KAAK,CAAC;EACvD;EAEA,SAAS66K,iCAAiCA,CAAC8b,UAAU,EAAE;IACnD,IAAIA,UAAU,KAAK,EAAE,EAAE;MACnBmB,eAAe,CAAC78L,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACH28L,eAAe,CAAC78L,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C;IAEA6/K,0BAA0B,CAAC,CAAC;EAChC;EAEA,SAASA,0BAA0BA,CAAA,EAAG;IAClC,IAAIpqE,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxBs3I,QAAQ,CAAC/3I,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAClC;IACJ,CAAC,MAAM;MACH,IAAIq8L,cAAc,IAAI,IAAI,EAAE;QACxBxkD,QAAQ,CAAC/3I,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACzC,CAAC,MACI;QACD83I,QAAQ,CAAC/3I,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACtC;IACJ;EACJ;EAEA,SAAS6xC,cAAcA,CAAA,EAAG;IACtB8qJ,eAAe,CAACv5L,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC/C46L,UAAU,GAAG56L,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC/Bw3L,cAAc,GAAG,IAAI;MACrB1c,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFr8D,aAAa,CAAClgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C2iH,QAAQ,GAAG3iH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC7Bw3L,cAAc,GAAG,IAAI;MACrB1c,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFn8D,aAAa,CAACpgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C6iH,QAAQ,GAAG7iH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC7Bw3L,cAAc,GAAG,IAAI;MACrB1c,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFj8D,SAAS,CAACtgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzC+iH,IAAI,GAAG/iH,KAAK,CAACC,MAAM,CAACgE,KAAK;MACzBw3L,cAAc,GAAG,IAAI;MACrB1c,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACF97D,QAAQ,CAACzgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACxC07L,GAAG,GAAG17L,KAAK,CAACC,MAAM,CAACgE,KAAK;MACxBw3L,cAAc,GAAG,IAAI;MACrB1c,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACF/7D,UAAU,CAACxgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1C6vC,KAAK,GAAG7vC,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC1Bw3L,cAAc,GAAG,IAAI;MACrB1c,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFid,iBAAiB,CAACx5L,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDojH,YAAY,GAAGpjH,KAAK,CAACC,MAAM,CAACgE,KAAK;MACjCw3L,cAAc,GAAG,IAAI;MACrB1c,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFkd,mBAAmB,CAACz5L,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACnD27L,cAAc,GAAG37L,KAAK,CAACC,MAAM,CAACgE,KAAK;MACnCw3L,cAAc,GAAG,IAAI;MACrB1c,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFmd,SAAS,CAAC15L,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC1Cka,MAAM,GAAGla,KAAK,CAACC,MAAM,CAACiI,OAAO,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG;MACjDuzL,cAAc,GAAG,IAAI;MACrB1c,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFX,UAAU,CAAC57K,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1Cq5K,KAAK,GAAGr5K,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC1Bw3L,cAAc,GAAG,IAAI;MACrB1c,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFod,UAAU,CAAC35L,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1C8vJ,KAAK,GAAG9vJ,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC1Bw3L,cAAc,GAAG,IAAI;MACrB1c,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;EACN;EAEA,eAAeV,gBAAgBA,CAAA,EAAG;IAE9B,MAAM6c,OAAO,CAACoB,gBAAgB,CAAC;MAC3BrtJ,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB6hJ,UAAU,EAAEA,UAAU;MACtBj4E,QAAQ,EAAEA,QAAQ;MAClBE,QAAQ,EAAEA,QAAQ;MAClBE,IAAI,EAAEA,IAAI;MACVlzE,KAAK,EAAEA,KAAK;MACZ6rJ,GAAG,EAAEA,GAAG;MACRt4E,YAAY,EAAEA,YAAY;MAC1Bu4E,cAAc,EAAEA,cAAc;MAC9BtiB,KAAK,EAAEA,KAAK;MACZvpB,KAAK,EAAEA,KAAK;MACZ51I,MAAM,EAAEA,MAAM;MACdy0C,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACxBwrJ,QAAQ,EAAEA;IACd,CAAC,CAAC;IAEFJ,gBAAgB,CAACC,aAAa,CAACG,QAAQ,EAAER,UAAU,EAAEzmB,gBAAgB,GAAG,CAAC,CAAC;EAE9E;EAEA,OAAO;IACH5xK,IAAI;IACJs5L,eAAe;IACfr8E;EACJ,CAAC;AACL,CAAC,EAAE,CAAC;AC1XJ,MAAM87E,WAAW,GAAG,CAAC,MAAM;EAEvB,IAAIiB,kBAAkB;EACtB,IAAInB,QAAQ;EACZ,IAAIoB,aAAa;EACjB,IAAIt8E,WAAW;EACf,IAAI/3G,IAAI;EACR,IAAI+/K,WAAW;EACf,IAAIuU,UAAU;EACd,IAAInhL,QAAQ;EACZ,IAAIohL,QAAQ;EACZ,IAAIC,kBAAkB;EACtB,IAAIC,WAAW;EAEf,eAAer6L,IAAIA,CAACo4L,QAAQ,EAAExyL,IAAI,EAAE;IAChCizL,QAAQ,GAAGT,QAAQ;IACnBz6E,WAAW,GAAG/3G,IAAI;IAElB,IAAIizL,QAAQ,IAAIz0L,SAAS,EAAE;MACvB61L,aAAa,GAAG,MAAMtB,OAAO,CAAC2B,gBAAgB,CAACzB,QAAQ,CAAC;IAC5D;EACJ;EAEA,SAAS57E,SAASA,CAAA,EAAG;IACjB,MAAMs9E,UAAU,GAAGz6L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChDk6L,UAAU,CAAC59L,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACvC,MAAM6hH,eAAe,GAAG87E,kBAAkB,CAAC,CAAC;IAC5CD,UAAU,CAACh9L,WAAW,CAACmhH,eAAe,CAAC;IACvC,OAAO67E,UAAU;EACrB;EAEA,SAASC,kBAAkBA,CAAA,EAAG;IAC1B,MAAMxU,eAAe,GAAGlmL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD2lL,eAAe,CAACrpL,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAEvD,MAAM49L,YAAY,GAAGv6L,MAAM,CAACC,KAAK,CAAC;MAC9BM,IAAI,EAAE,qBAAqB;MAC3BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM+4L,cAAc,CAAC,CAAC,EAAC,CAAC,EAAE,KAAK;IAC7C,CAAC,CAAC;IACFV,kBAAkB,GAAGW,uBAAuB,CAAC,CAAC;IAG9C,MAAM57E,OAAO,GAAGj/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0+G,OAAO,CAACpiH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9B,MAAMmiH,UAAU,GAAGl/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD2+G,UAAU,CAACriH,SAAS,CAACE,GAAG,CAAC,MAAM,CAAC;IAChC,MAAMoiH,cAAc,GAAGn/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD4+G,cAAc,CAACtiH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1CmiH,UAAU,CAAC/hH,SAAS,GAAG,gDAAgD;IACvE+hH,UAAU,CAACzhH,WAAW,CAAC0hH,cAAc,CAAC;IACtCF,OAAO,CAACxhH,WAAW,CAACyhH,UAAU,CAAC;IAC/B,IAAI9wG,CAAC,CAACC,OAAO,CAACm0C,gBAAgB,EAAE;MAC5B28D,cAAc,CAAC1hH,WAAW,CAACk9L,YAAY,CAAC;IAC5C;IACAx7E,cAAc,CAAC1hH,WAAW,CAACy8L,kBAAkB,CAAC;IAC9ChU,eAAe,CAACzoL,WAAW,CAACwhH,OAAO,CAAC;IACpC,OAAOinE,eAAe;EAC1B;EAGA,SAAS2U,uBAAuBA,CAAA,EAAG;IAC/B,MAAM5zF,YAAY,GAAG;MACjBjzF,KAAK,EAAE,KAAK;MACZZ,OAAO,EAAE,6BAA6B;MACtCgB,cAAc,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC;MAC5CM,OAAO,EAAEtG,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,GAAG,IAAI,GAAG;IAClD,CAAC;IAED,IAAIyqD,SAAS,GAAG2sF,aAAa,CAACW,sBAAsB,CAAC/zL,GAAG,CAAE0mG,KAAK,KAAM;MACjEn4F,MAAM,EAAE,CAACm4F,KAAK,CAAC2sF,UAAU,EAAE3sF,KAAK,CAAC51F,MAAM,IAAI,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;MAC9DpW,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,UAAU;QAAEC,KAAK,EAAE6rG,KAAK,CAAC6qF;MAAS,CAAC,CAAC;MACxDnjL,OAAO,EAAG5S,CAAC,IAAK;QACZq4L,cAAc,CAACntF,KAAK,CAAC6qF,QAAQ,EAAE7qF,KAAK,CAAC4sF,QAAQ,EAAE,MAAM,CAAC;MAC1D,CAAC;MACD3lL,OAAO,EAAE,GAAG9T,KAAK,CAAC,QAAQ,CAAC,EAAE;MAC7B6U,eAAe,EAAGlT,CAAC,IAAK;QACpBw4L,iBAAiB,CAACttF,KAAK,CAAC6qF,QAAQ,EAAE7qF,KAAK,CAAC4sF,QAAQ,CAAC;MACrD;IACJ,CAAC,CAAC,CAAC;IACH,MAAM/6E,MAAM,GAAGpsG,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAExC;IACA,MAAMzwF,OAAO,GAAG8oG,MAAM,CAACj5G,gBAAgB,CAAC,aAAa,CAAC;IACtDmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAEhD;IACAiS,KAAK,CAACqD,iBAAiB,CAAC+oG,MAAM,CAAC;IAE/BpsG,KAAK,CAAC9V,QAAQ,CAACkiH,MAAM,EAAE9R,SAAS,CAAC;IAEjC,OAAO8R,MAAM;EACjB;EAEA,SAASy7E,iBAAiBA,CAACzC,QAAQ,EAAE+B,QAAQ,EAAE;IAC3C,MAAMryC,YAAY,GAAGj4I,KAAK,CAAC1P,KAAK,CAAC;MAC7BkQ,KAAK,EAAE;IACX,CAAC,CAAC;IAEF03I,OAAO,GAAG7nJ,MAAM,CAACC,KAAK,CAAC;MACnBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZm5L,YAAY,CAAC1C,QAAQ,EAAE+B,QAAQ,EAAEryC,YAAY,CAAC;MAClD;IACJ,CAAC,CAAC;IAEFG,MAAM,GAAG/nJ,MAAM,CAACC,KAAK,CAAC;MAClBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACgrJ,YAAY,CAAC;MAC5B;IACJ,CAAC,CAAC;IAEF,MAAMn3I,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAE3CsQ,OAAO,CAACrM,SAAS,GAAG,oDAAoD;IACxEqM,OAAO,CAAC/P,KAAK,CAACguC,SAAS,GAAG,QAAQ;IAClCj+B,OAAO,CAAC/P,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACnCk3F,YAAY,CAACvqJ,WAAW,CAACoT,OAAO,CAAC;IACjC,IAAIu3I,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrCqrJ,YAAY,CAAC3qJ,WAAW,CAACwqJ,OAAO,CAAC;IACjCG,YAAY,CAAC3qJ,WAAW,CAAC0qJ,MAAM,CAAC;IAChCH,YAAY,CAACvqJ,WAAW,CAAC2qJ,YAAY,CAAC;IACtCH,OAAO,CAACx5I,KAAK,CAAC,CAAC;IACfsB,KAAK,CAAC9S,IAAI,CAAC+qJ,YAAY,CAAC;EAC5B;EAEA,SAASgzC,YAAYA,CAAC1C,QAAQ,EAAE+B,QAAQ,EAAEryC,YAAY,EAAE;IACpD6wC,OAAO,CAACoC,gBAAgB,CACpB;MACIruJ,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB2jJ,QAAQ,EAAEA,QAAQ;MAClBtB,QAAQ,EAAEA;IACd,CACJ,CAAC;IACDhpL,KAAK,CAAC/S,IAAI,CAACgrJ,YAAY,CAAC;IACxB2wC,gBAAgB,CAACC,aAAa,CAACG,QAAQ,EAAEl7E,WAAW,EAAEi0D,gBAAgB,GAAG,CAAC,CAAC;EAC/E;EAEA,SAAS8oB,cAAcA,CAACtC,QAAQ,EAAE4C,SAAS,EAAExU,SAAS,EAAE;IACpD,IAAIA,SAAS,IAAI,KAAK,EAAE;MACpB0T,UAAU,GAAG,EAAE;MACfnhL,QAAQ,GAAG,GAAG;MACdohL,QAAQ,GAAG,EAAE;MACbE,WAAW,GAAG,EAAE;IACpB,CAAC,MACI;MACD,IAAIY,YAAY,GAAGhB,aAAa,CAACW,sBAAsB,CAAC9oI,IAAI,CAACzxC,CAAC,IAAIA,CAAC,CAAC+3K,QAAQ,IAAIA,QAAQ,IAAI/3K,CAAC,CAAC85K,QAAQ,IAAIa,SAAS,CAAC;MACpHd,UAAU,GAAGe,YAAY,CAACf,UAAU;MACpCnhL,QAAQ,GAAGkiL,YAAY,CAACtjL,MAAM;MAC9BwiL,QAAQ,GAAGc,YAAY,CAACd,QAAQ;MAChCE,WAAW,GAAGY,YAAY,CAACd,QAAQ;IACvC;IACAC,kBAAkB,GAAGvqL,KAAK,CAAC1P,KAAK,CAAC;MAC7BgB,UAAU,EAAE,CAAC,mBAAmB,CAAC;MACjCkP,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,MAAM8D,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAACvT,KAAK,CAACw8J,SAAS,GAAG,OAAO;IACjCjpJ,OAAO,CAACvT,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACnC,IAAI41H,SAAS,IAAI,MAAM,EAAE;MACrBryK,OAAO,CAAC7P,SAAS,GAAG,sBAAsB;MAC1C61L,QAAQ,GAAGA,QAAQ;IACvB,CAAC,MACI;MACDhmL,OAAO,CAAC7P,SAAS,GAAG,mBAAmB;MACvC61L,QAAQ,GAAG,GAAG;IAClB;;IAEA;IACAe,cAAc,GAAGp5L,QAAQ,CAAC3B,KAAK,CAAC;MAC5BG,EAAE,EAAE,gBAAgB;MACpB2B,KAAK,EAAE,eAAe;MACtBF,UAAU,EAAE,gBAAgB;MAC5BL,KAAK,EAAGy4L,QAAQ,GAAIA,QAAQ,GAAG;IACnC,CAAC,CAAC;IAEF,MAAMgB,cAAc,GAAGx3L,KAAK,CAAC8B,UAAU,CAAC;MACpCnF,EAAE,EAAE,gBAAgB;MACpBG,IAAI,EAAE,KAAK;MACXmF,IAAI,EAAE,WAAW;MACjBN,SAAS,EAAE;IACf,CAAC,CAAC;IACF,MAAM81L,aAAa,GAAGz3L,KAAK,CAAC8B,UAAU,CAAC;MACnCnF,EAAE,EAAE,eAAe;MACnBG,IAAI,EAAE,IAAI;MACVmF,IAAI,EAAE;IACV,CAAC,CAAC;IAEF,MAAM2gJ,QAAQ,GAAGzmJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9CkmJ,QAAQ,CAAC5pJ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAClC0pJ,QAAQ,CAAChpJ,WAAW,CAAC49L,cAAc,CAAC;IACpC50C,QAAQ,CAAChpJ,WAAW,CAAC69L,aAAa,CAAC;IAEnCtrF,SAAS,GAAG5vG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEFkvG,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEFu5L,kBAAkB,CAAC78L,WAAW,CAAC4W,OAAO,CAAC;IACvCimL,kBAAkB,CAAC78L,WAAW,CAAC29L,cAAc,CAAC;IAE9C,MAAMvjL,MAAM,GAAG7X,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC3CsX,MAAM,CAACrT,SAAS,GAAG,SAAS;IAE5B,IAAIwjL,WAAW,GAAGhoL,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CynL,WAAW,CAACnrL,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACpC8a,MAAM,CAAC/W,KAAK,CAACiyI,UAAU,GAAG,IAAI;IAC9Bl7H,MAAM,CAAC/W,KAAK,CAACiS,KAAK,GAAG,KAAK;IAC1Bi1K,WAAW,CAACvqL,WAAW,CAACoa,MAAM,CAAC;IAC/B4uI,QAAQ,CAAC3lJ,KAAK,CAACiyI,UAAU,GAAG,IAAI;IAChC0T,QAAQ,CAAC3lJ,KAAK,CAACiS,KAAK,GAAG,KAAK;IAC5Bi1K,WAAW,CAACvqL,WAAW,CAACgpJ,QAAQ,CAAC;IACjC6zC,kBAAkB,CAAC78L,WAAW,CAACuqL,WAAW,CAAC;IAE3C,IAAI5/B,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrCqrJ,YAAY,CAAC3qJ,WAAW,CAACuyG,SAAS,CAAC;IACnCo4C,YAAY,CAAC3qJ,WAAW,CAACwyG,UAAU,CAAC;IACpCqqF,kBAAkB,CAAC78L,WAAW,CAAC2qJ,YAAY,CAAC;IAE5Cr4I,KAAK,CAAC9S,IAAI,CAACq9L,kBAAkB,CAAC;IAC9Bjc,mBAAmB,CAAC,CAAC;IACrBkd,sBAAsB,CAAClB,QAAQ,CAAC;IAChCrY,0BAA0B,CAAC,CAAC;EAChC;EAEA,SAAS3D,mBAAmBA,CAAA,EAAG;IAC3B+c,cAAc,CAACj7L,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC/C48L,WAAW,GAAG58L,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChCogL,0BAA0B,CAAC,CAAC;IAChC,CAAC,CAAC;IACFqZ,cAAc,CAACl7L,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC/Csb,QAAQ,GAAG,GAAG;IAClB,CAAC,CAAC;IACFqiL,aAAa,CAACn7L,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC9Csb,QAAQ,GAAG,GAAG;IAClB,CAAC,CAAC;IAEF+2F,SAAS,CAAC7vG,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACtC,IAAI,CAAC6vG,SAAS,CAACnzG,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC3C6wL,kBAAkB,CAAC,CAAC;MACxB;IACJ,CAAC,CAAC;IAEFvrF,UAAU,CAAC9vG,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACvC4P,KAAK,CAAC/S,IAAI,CAACs9L,kBAAkB,CAAC;IAClC,CAAC,CAAC;EACN;EAEA,SAAStY,0BAA0BA,CAAA,EAAG;IAClC,IAAIyZ,QAAQ,GAAGL,cAAc,CAACn7L,aAAa,CAAC,iBAAiB,CAAC;IAE9D,IAAIw7L,QAAQ,CAAC75L,KAAK,KAAK,EAAE,EAAE;MACvBw5L,cAAc,CAACv+L,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC9C,CAAC,MAAM;MACHq+L,cAAc,CAACv+L,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IACjD;IAEAolL,mBAAmB,CAAC,CAAC;EACzB;EAEA,SAASA,mBAAmBA,CAAA,EAAG;IAC3B,IAAI3vE,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACvE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxB0yG,SAAS,CAACnzG,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACnC;IACJ,CAAC,MAAM;MACHizG,SAAS,CAACnzG,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC1C;EACJ;EAGA,eAAey+L,sBAAsBA,CAAClB,QAAQ,EAAE;IAC5C,MAAM;MACFqB,gBAAgB,EAAEp2B;IACtB,CAAC,GAAG,MAAMuzB,OAAO,CAAC8C,UAAU,CAAC,CAAC;IAC9B,IAAI54L,IAAI,GAAGuiK,OAAO,CAACv+J,GAAG,CAAEs+J,OAAO,KAAM;MACjC7kK,EAAE,EAAE6kK,OAAO,CAACg1B,QAAQ;MACpBz4L,KAAK,EAAEyjK,OAAO,CAACg1B,QAAQ;MACvB15L,IAAI,EAAE0kK,OAAO,CAAC+0B;IAClB,CAAC,CAAC,CAAC;IACHr3L,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAC/CqB,QAAQ,CAAC5E,QAAQ,CAAC,gBAAgB,EAAE2F,IAAI,EAAEs3L,QAAQ,CAAC;IACnDrY,0BAA0B,CAAC,CAAC;EAChC;EAEA,eAAewZ,kBAAkBA,CAAA,EAAG;IAGhC,MAAM3C,OAAO,CAAC+C,gBAAgB,CAAC;MAC3BhvJ,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB2jJ,QAAQ,EAAEA,QAAQ;MAClBtB,QAAQ,EAAEA,QAAQ;MAClBlhL,MAAM,EAAEoB,QAAQ;MAChBqzC,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACxBgtJ,WAAW,EAAEA;IACjB,CAAC,CAAC;IACFxqL,KAAK,CAAC/S,IAAI,CAACs9L,kBAAkB,CAAC;IAC9B3B,gBAAgB,CAACC,aAAa,CAACG,QAAQ,EAAEl7E,WAAW,EAAEi0D,gBAAgB,GAAG,CAAC,CAAC;EAG/E;EAEA,OAAO;IACH5xK,IAAI;IACJw6L,kBAAkB;IAClBv9E;EACJ,CAAC;AACL,CAAC,EAAE,CAAC;ACpUJ,MAAMr9G,GAAG,GAAG,CAAC,MAAM;EACf;EACA,IAAI6zG,gBAAgB;EACpB,IAAIkoF,OAAO;EACX;EACA,IAAIvxF,YAAY;EAChB,IAAIwK,eAAe;EACnB,IAAIgnF,UAAU;EACd,IAAIC,SAAS,GAAG,EAAE;EAClB,IAAIC,OAAO;EACX;EACA,IAAIpoF,QAAQ;EACZ,IAAIC,aAAa;EACjB;EACA,IAAI3J,WAAW;EACf,IAAI7+C,OAAO;EACX,IAAIkpD,cAAc;EAClB,IAAIhoE,OAAO;EACX,IAAI0vJ,iBAAiB;EACrB,IAAIC,mBAAmB;EACvB,IAAIC,cAAc;EAClB,IAAIC,QAAQ;EACZ,IAAIC,aAAa;EACjB,IAAIC,gBAAgB;EACpB,IAAIC,YAAY;EAChB,IAAIC,UAAU;EACd,IAAIC,kBAAkB;EACtB,IAAIC,gBAAgB;EACpB,IAAIC,mBAAmB;EACvB,IAAIC,uBAAuB;EAC3B,IAAIC,sBAAsB;EAC1B,IAAIC,mBAAmB;EACvB,IAAIC,iBAAiB;EACrB,IAAIC,WAAW;EACf,IAAI3yF,mBAAmB;EACvB;;EAEA;EACA,eAAelsG,oBAAoBA,CAACP,MAAM,EAAE;IACxC,IAAIiuG,YAAY,GAAGjuG,MAAM,CAACC,OAAO,CAACC,SAAS;IAC3C,QAAQ+tG,YAAY;MAChB,KAAK,gBAAgB;QAAE;UACnB,IAAIs0D,eAAe,GAAGr0D,OAAO,CAACC,kBAAkB,CAAC,CAAC;UAClD4H,gBAAgB,GAAGwsD,eAAe,CAACA,eAAe,CAAC7iK,MAAM,GAAG,CAAC,CAAC;UAC9D+sG,mBAAmB,GAAG81D,eAAe,CAACA,eAAe,CAAC7iK,MAAM,GAAG,CAAC,CAAC,CAACkD,EAAE;UACpE,MAAMy8L,cAAc,CAAC,CAAC;UACtB/tL,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrB;QACJ;MACA,KAAK,kBAAkB;QAAE;UACrBloB,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrBnqB,OAAO,CAAC,MAAM,CAAC;UACf;QACJ;IACJ;EACJ;EAEA,eAAegwL,cAAcA,CAAA,EAAG;IAC5B/tL,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;IACvBu+E,gBAAgB,CAAC,CAAC;IAClBxC,QAAQ,GAAG5zG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACxC,MAAMw6G,YAAY,GAAG1B,iBAAiB,CAAC,CAAC;IACxC,MAAM6jF,WAAW,GAAGl9L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD28L,WAAW,CAACrgM,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAC9C,MAAMogM,wBAAwB,GAAGn9L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9D48L,wBAAwB,CAACtgM,SAAS,CAACE,GAAG,CAAC,0BAA0B,CAAC;IAClEmgM,WAAW,CAACz/L,WAAW,CAAC0/L,wBAAwB,CAAC;IAEjD/jF,cAAc,GAAG7C,mBAAmB,CAAC,CAAC;IACtCulF,UAAU,GAAGsB,kBAAkB,CAAC,CAAC;IACjCpB,OAAO,GAAGqB,UAAU,CAAC,CAAC;IACtBF,wBAAwB,CAAC1/L,WAAW,CAACq+L,UAAU,CAAC;IAEhDoB,WAAW,CAACz/L,WAAW,CAACu+L,OAAO,CAAC;IAEhCpoF,QAAQ,CAACn2G,WAAW,CAACs9G,YAAY,CAAC;IAClCnH,QAAQ,CAACn2G,WAAW,CAACy/L,WAAW,CAAC;IACjCtpF,QAAQ,CAACn2G,WAAW,CAAC27G,cAAc,CAAC;IACpClqG,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACm2G,QAAQ,CAAC;IAEtC,IAAIxlG,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,EAAE;MAC7B+4I,UAAU,CAACj/L,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC3C,CAAC,MAAM;MACHg/L,UAAU,CAACj/L,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACxC;IAEA,MAAM47G,OAAO,GAAGhnG,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,mBAAmB,CAAC;IACzDgrG,QAAQ,CAACn2G,WAAW,CAACk7G,OAAO,CAAC;IAE7BkjF,OAAO,GAAG,MAAMhD,OAAO,CAACyE,cAAc,CAAC;MACnC1wJ,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB6hJ,UAAU,EAAEjuF,YAAY,CAACiuF,UAAU;MACnCx3E,YAAY,EAAEzW,YAAY,CAACyW,YAAY;MACvC11D,OAAO,EAAEi/C,YAAY,CAACj/C,OAAO;MAC7B57C,OAAO,EAAErB,CAAC,CAACC,OAAO,CAACC;IACvB,CAAC,CAAC;IAEFslG,QAAQ,CAACxkG,WAAW,CAACupG,OAAO,CAAC;IAC7BO,kBAAkB,CAAC,CAAC;EACxB;EAEA,SAASG,iBAAiBA,CAAA,EAAG;IACzB1F,gBAAgB,CAAC2F,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IACrD,MAAMuF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IACtCsF,IAAI,CAAC5E,WAAW,CAACk2G,gBAAgB,CAAC2F,IAAI,CAAC;IACvC,OAAOj3G,IAAI;EACf;EAEA,SAAS+zG,gBAAgBA,CAAA,EAAG;IACxB9L,YAAY,GAAG;MACXiuF,UAAU,EAAE,GAAG;MACfx3E,YAAY,EAAE,GAAG;MACjB11D,OAAO,EAAE;IACb,CAAC;EACL;EAEA,SAASkrD,mBAAmBA,CAAA,EAAG;IAC3B,IAAIC,oBAAoB,GAAGx2G,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IAEpE,IAAI,CAACu2G,oBAAoB,EAAE;MACvBA,oBAAoB,GAAGx2G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACpDi2G,oBAAoB,CAAC35G,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MACpD0xG,eAAe,CAAC,CAAC;MACjB+H,oBAAoB,CAAC/4G,WAAW,CAAC8uC,OAAO,CAAC;IAC7C;IAEA,IAAI+9D,YAAY,CAACiuF,UAAU,KAAK,GAAG,EAAE;MACjChsJ,OAAO,CAAC9uC,WAAW,CAACw+L,iBAAiB,CAAC;MACtC1vJ,OAAO,CAACn9B,WAAW,CAAC6sL,iBAAiB,CAAC;IAC1C,CAAC,MAAM;MACH1vJ,OAAO,CAAC9uC,WAAW,CAACw+L,iBAAiB,CAAC;MACtC,IAAIj8L,QAAQ,CAACiD,cAAc,CAAC,eAAe,CAAC,IAAI,IAAI,EAChDjD,QAAQ,CAACiD,cAAc,CAAC,eAAe,CAAC,CAAC9F,SAAS,GAAG,eAAe,GAAGmtG,YAAY,CAACiuF,UAAU;IACtG;IAEA,IAAIjuF,YAAY,CAACyW,YAAY,KAAK,GAAG,EAAE;MACnCx0E,OAAO,CAAC9uC,WAAW,CAACy+L,mBAAmB,CAAC;MACxC3vJ,OAAO,CAACn9B,WAAW,CAAC8sL,mBAAmB,CAAC;IAC5C,CAAC,MAAM;MACH3vJ,OAAO,CAAC9uC,WAAW,CAACy+L,mBAAmB,CAAC;MACxC,IAAIl8L,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAClDjD,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,CAAC9F,SAAS,GAAG,kBAAkB,GAAGmtG,YAAY,CAACyW,YAAY;IAC7G;IAEA,IAAIzW,YAAY,CAACj/C,OAAO,KAAK,GAAG,EAAE;MAC9B9e,OAAO,CAAC9uC,WAAW,CAAC0+L,cAAc,CAAC;MACnC5vJ,OAAO,CAACn9B,WAAW,CAAC+sL,cAAc,CAAC;IACvC,CAAC,MAAM;MACH5vJ,OAAO,CAAC9uC,WAAW,CAAC0+L,cAAc,CAAC;MACnC,IAAIn8L,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,IAAI,IAAI,EAC7CjD,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,CAAC9F,SAAS,GAAG,WAAW,GAAGmtG,YAAY,CAACj/C,OAAO;IAC5F;IAEA,OAAOmrD,oBAAoB;EAC/B;EAEA,SAAS/H,eAAeA,CAAA,EAAG;IACvBC,SAAS,GAAGtuG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,cAAc;MAC1BQ,QAAQ,EAAEA,CAAA,KAAM;QACZ+0G,eAAe,CAAC,KAAK,CAAC;MAC1B;IACJ,CAAC,CAAC;IAEF2mF,aAAa,GAAGn9L,MAAM,CAACC,KAAK,CAAC;MACzBG,EAAE,EAAE,eAAe;MACnBG,IAAI,EAAE,eAAe,GAAG2pG,YAAY,CAACiuF,UAAU;MAC/Cz3L,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QACZ+0G,eAAe,CAAC,eAAe,CAAC;MACpC;IACJ,CAAC,CAAC;IACF4mF,kBAAkB,GAAGp9L,MAAM,CAACC,KAAK,CAAC;MAC9BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QACZitG,WAAW,CAAC,eAAe,CAAC;MAChC;IACJ,CAAC,CAAC;IAEF2uF,eAAe,GAAGr9L,MAAM,CAACC,KAAK,CAAC;MAC3BG,EAAE,EAAE,iBAAiB;MACrBG,IAAI,EAAE,iBAAiB,GAAG2pG,YAAY,CAACyW,YAAY;MACnDjgH,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QACZ+0G,eAAe,CAAC,iBAAiB,CAAC;MACtC;IACJ,CAAC,CAAC;IAEF8mF,oBAAoB,GAAGt9L,MAAM,CAACC,KAAK,CAAC;MAChCI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QACZitG,WAAW,CAAC,iBAAiB,CAAC;MAClC;IACJ,CAAC,CAAC;IAEF6uF,UAAU,GAAGv9L,MAAM,CAACC,KAAK,CAAC;MACtBG,EAAE,EAAE,YAAY;MAChBG,IAAI,EAAE,eAAe,GAAG2pG,YAAY,CAACj/C,OAAO;MAC5CvqD,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QACZ+0G,eAAe,CAAC,YAAY,CAAC;MACjC;IACJ,CAAC,CAAC;IAEFgnF,eAAe,GAAGx9L,MAAM,CAACC,KAAK,CAAC;MAC3BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QACZitG,WAAW,CAAC,YAAY,CAAC;MAC7B;IACJ,CAAC,CAAC;IAEFviE,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvCgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IACtCwvC,OAAO,CAAC9uC,WAAW,CAACixG,SAAS,CAAC;IAE9ButF,iBAAiB,GAAGj8L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD07L,iBAAiB,CAACp/L,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACzDk/L,iBAAiB,CAACx+L,WAAW,CAAC8/L,aAAa,CAAC;IAC5CtB,iBAAiB,CAACx+L,WAAW,CAAC+/L,kBAAkB,CAAC;IACjDjxJ,OAAO,CAAC9uC,WAAW,CAACw+L,iBAAiB,CAAC;IAEtCC,mBAAmB,GAAGl8L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnD27L,mBAAmB,CAACr/L,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC3Dm/L,mBAAmB,CAACz+L,WAAW,CAACggM,eAAe,CAAC;IAChDvB,mBAAmB,CAACz+L,WAAW,CAACigM,oBAAoB,CAAC;IACrDnxJ,OAAO,CAAC9uC,WAAW,CAACy+L,mBAAmB,CAAC;IAExCC,cAAc,GAAGn8L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9C47L,cAAc,CAACt/L,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACtDo/L,cAAc,CAAC1+L,WAAW,CAACkgM,UAAU,CAAC;IACtCxB,cAAc,CAAC1+L,WAAW,CAACmgM,eAAe,CAAC;IAC3CrxJ,OAAO,CAAC9uC,WAAW,CAAC0+L,cAAc,CAAC;EACvC;EAEA,SAASrtF,WAAWA,CAACA,WAAW,EAAE;IAC9B,IAAIA,WAAW,IAAI,eAAe,EAAE;MAChCgG,eAAe,CAACyjF,UAAU,GAAG,GAAG;IACpC;IACA,IAAIzpF,WAAW,IAAI,iBAAiB,EAAE;MAClCgG,eAAe,CAACiM,YAAY,GAAG,GAAG;IACtC;IACA,IAAIjS,WAAW,IAAI,YAAY,EAAE;MAC7BgG,eAAe,CAACzpD,OAAO,GAAG,GAAG;IACjC;IACAksD,WAAW,CAAC,CAAC;EACjB;EAEA,SAASX,eAAeA,CAAC/G,MAAM,EAAE;IAC7B3F,WAAW,GAAGn6F,KAAK,CAAC1P,KAAK,CAAC,CAAC,CAAC,CAAC;;IAE7B;IACAq5L,eAAe,GAAG71L,KAAK,CAACxD,KAAK,CAAC;MAC1BU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,aAAa;MACpBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0oG,YAAY,CAACiuF,UAAU,IAAI,GAAG,GAAG,EAAE,GAAGjuF,YAAY,CAACiuF;IAC9D,CAAC,CAAC;IAEFoB,iBAAiB,GAAG91L,KAAK,CAACxD,KAAK,CAAC;MAC5BU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,eAAe;MACtBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0oG,YAAY,CAACyW,YAAY,IAAI,GAAG,GAAG,EAAE,GAAGzW,YAAY,CAACyW;IAChE,CAAC,CAAC;IAEF88E,YAAY,GAAGh6L,KAAK,CAACxD,KAAK,CAAC;MACvBU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0oG,YAAY,CAACj/C,OAAO,IAAI,GAAG,GAAG,EAAE,GAAGi/C,YAAY,CAACj/C;IAC3D,CAAC,CAAC;IAEF,MAAMyyI,aAAa,GAAG99L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDu9L,aAAa,CAACjhM,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACtCw3G,cAAc,GAAGn0G,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IACF03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAACktG,WAAW,CAAC;MAC3B;IACJ,CAAC,CAAC;IACF4zF,aAAa,CAACrgM,WAAW,CAAC82G,cAAc,CAAC;IACzCupF,aAAa,CAACrgM,WAAW,CAACg7G,eAAe,CAAC;IAE1C,IAAI5I,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,eAAe,EAAE3F,WAAW,CAACzsG,WAAW,CAACi8L,eAAe,CAAC;IAC1F,IAAI7pF,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,iBAAiB,EAAE3F,WAAW,CAACzsG,WAAW,CAACk8L,iBAAiB,CAAC;IAC9F,IAAI9pF,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,YAAY,EAAE3F,WAAW,CAACzsG,WAAW,CAACogM,YAAY,CAAC;IACpF3zF,WAAW,CAACzsG,WAAW,CAACqgM,aAAa,CAAC;IAEtC/tL,KAAK,CAAC9S,IAAI,CAACitG,WAAW,CAAC;IACvBwO,iBAAiB,CAAC,CAAC;EACvB;EACA,SAASA,iBAAiBA,CAAA,EAAG;IACzB5D,eAAe,GAAG,CAAC,CAAC;IAEpB4kF,eAAe,CAACv5L,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC/Cm3G,eAAe,CAACyjF,UAAU,GAAG56L,KAAK,CAACC,MAAM,CAACgE,KAAK;IACnD,CAAC,CAAC;IAEF+3L,iBAAiB,CAACx5L,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDm3G,eAAe,CAACiM,YAAY,GAAGpjH,KAAK,CAACC,MAAM,CAACgE,KAAK;IACrD,CAAC,CAAC;IAEFi8L,YAAY,CAAC19L,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5Cm3G,eAAe,CAACzpD,OAAO,GAAG1tD,KAAK,CAACC,MAAM,CAACgE,KAAK;IAChD,CAAC,CAAC;IAEF2yG,cAAc,CAACp0G,gBAAgB,CAAC,OAAO,EAAE,MAAMoC,CAAC,IAAI;MAChD,IAAI,CAACgyG,cAAc,CAAC13G,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;QAChD4sG,WAAW,CAAC,CAAC;QACbxnG,KAAK,CAAC/S,IAAI,CAACktG,WAAW,CAAC;MAC3B;IACJ,CAAC,CAAC;EACN;EAEA,eAAeqN,WAAWA,CAAA,EAAG;IACzBjN,YAAY,GAAG;MAAE,GAAGA,YAAY;MAAE,GAAGwK;IAAgB,CAAC;IAEtD,MAAM6D,OAAO,GAAGhnG,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,mBAAmB,CAAC;IACzDgrG,QAAQ,CAACxkG,WAAW,CAACykG,aAAa,CAAC;IACnCD,QAAQ,CAACn2G,WAAW,CAACk7G,OAAO,CAAC;IAE7BkjF,OAAO,GAAG,MAAMhD,OAAO,CAACyE,cAAc,CAAC;MACnC1wJ,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB6hJ,UAAU,EAAEjuF,YAAY,CAACiuF,UAAU;MACnCx3E,YAAY,EAAEzW,YAAY,CAACyW,YAAY;MACvC11D,OAAO,EAAEi/C,YAAY,CAACj/C,OAAO;MAC7B57C,OAAO,EAAErB,CAAC,CAACC,OAAO,CAACC;IACvB,CAAC,CAAC;IAEFslG,QAAQ,CAACxkG,WAAW,CAACupG,OAAO,CAAC;IAE7BO,kBAAkB,CAAC,CAAC;IACpB,MAAMC,iBAAiB,GAAG5C,mBAAmB,CAAC,CAAC;IAC/C3C,QAAQ,CAACz9F,YAAY,CAACgjG,iBAAiB,EAAEC,cAAc,CAAC;IACxDA,cAAc,GAAGD,iBAAiB;EACtC;EAEA,SAASikF,kBAAkBA,CAAA,EAAG;IAC1B,OAAOh9L,MAAM,CAACC,KAAK,CAAC;MAChBM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,WAAW;MACvBQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAI,CAACi6L,UAAU,CAACj/L,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC5CutL,YAAY,CAACh4L,IAAI,CAAC,CAAC;QACvB;MACJ;IACJ,CAAC,CAAC;EACN;EAEA,SAASm9L,UAAUA,CAAA,EAAG;IAClB,OAAOj9L,MAAM,CAACC,KAAK,CAAC;MAChBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClBiqG,OAAO,CAAC0qC,sBAAsB,CAAC,CAAC;QAChC1qC,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;QAC9B32I,GAAG,CAACI,IAAI,CAAC,CAAC;MACd;IACJ,CAAC,CAAC;EACN;EAGA,SAASg5G,kBAAkBA,CAAA,EAAG;IAC1B3D,cAAc,CAAC,CAAC;IAChBwoF,iBAAiB,CAAC,CAAC;IAEnBlqF,aAAa,GAAG7zG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CszG,aAAa,CAACh3G,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAEvC,MAAMw8G,WAAW,GAAGv5G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDg5G,WAAW,CAAC18G,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAC7Cw8G,WAAW,CAACp8G,SAAS,GAAG;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACG02G,aAAa,CAACp2G,WAAW,CAAC87G,WAAW,CAAC;IAEtCsiF,OAAO,CAACriF,cAAc,CAACj8G,OAAO,CAACuS,MAAM,IAAI;MACrC,MAAMipL,QAAQ,GAAGjpL,MAAM,CAACwoL,QAAQ;MAChC,IAAI5R,SAAS;MACb,MAAMj5B,KAAK,GAAG39I,MAAM,CAAC29I,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG39I,MAAM,CAAC29I,KAAK;MACtD,MAAM/zC,OAAO,GAAG15G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC7Cm5G,OAAO,CAAC78G,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;;MAE/C;MACA;MACA,MAAM48G,WAAW,GAAG35G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACjDo5G,WAAW,CAAC98G,SAAS,CAACE,GAAG,CAAC,uBAAuB,EAAE,mBAAmB,CAAC;MACvE48G,WAAW,CAAC/3G,KAAK,GAAGkO,MAAM,CAACwoL,QAAQ;MACnC,MAAM5jL,OAAO,GAAG1U,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC7CmU,OAAO,CAAC7X,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;MAE1C,MAAMihM,UAAU,GAAGh+L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAChDy9L,UAAU,CAACx9L,EAAE,GAAG,YAAY;MAC5Bw9L,UAAU,CAACnhM,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;MAC7CihM,UAAU,CAAC7gM,SAAS,GAAGyD,KAAK,CAAC,eAAe,CAAC;MAC7C+4G,WAAW,CAACx8G,SAAS,GAAG;AACpC,eAAe2S,MAAM,CAACyoL,UAAU;AAChC,eAAezoL,MAAM,CAACu7C,OAAO;AAC7B,eAAev7C,MAAM,CAACixG,YAAY;AAClC,eAAe0sC,KAAK;AACpB,OAAO;MACK9zC,WAAW,CAACluG,OAAO,CAACuyL,UAAU,CAAC;MAC/B,IAAI5vL,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,EAAE;QAC7BruC,OAAO,CAACvX,SAAS,GAAGyD,KAAK,CAAC,KAAK,CAAC;MACpC,CAAC,MAAM;QACH8T,OAAO,CAACvX,SAAS,GAAG,aAAa;MACrC;MACAw8G,WAAW,CAACl8G,WAAW,CAACiX,OAAO,CAAC;MAChCglG,OAAO,CAACj8G,WAAW,CAACk8G,WAAW,CAAC;;MAEhC;MACA;MACA,MAAMQ,UAAU,GAAGn6G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAChD45G,UAAU,CAACt9G,SAAS,CAACE,GAAG,CAAC,sBAAsB,CAAC;MAEhD,MAAMq9G,UAAU,GAAGp6G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAChD65G,UAAU,CAACv9G,SAAS,CAACE,GAAG,CAAC,qBAAqB,CAAC;MAC/Cq9G,UAAU,CAACj9G,SAAS,GAAG;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;MACKg9G,UAAU,CAAC18G,WAAW,CAAC28G,UAAU,CAAC;MAElC,IAAIyhF,OAAO,CAACrmF,aAAa,CAACujF,QAAQ,CAAC,EAAE;QACjC8C,OAAO,CAACrmF,aAAa,CAACujF,QAAQ,CAAC,CAAC1hL,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;UAC3C,OAAOiQ,QAAQ,CAACxkB,CAAC,CAACi3G,OAAO,CAAC,GAAGzyF,QAAQ,CAACjQ,CAAC,CAAC0iG,OAAO,CAAC;QACpD,CAAC,CAAC;QAEFwhF,OAAO,CAACrmF,aAAa,CAACujF,QAAQ,CAAC,CAACx7L,OAAO,CAACm4G,KAAK,IAAI;UAC7C,MAAMuoF,eAAe,GAAGvoF,KAAK,CAACuoF,eAAe;UAC7C,MAAMC,GAAG,GAAGxoF,KAAK,CAAC4iF,QAAQ;UAC1B,MAAM6F,MAAM,GAAGzoF,KAAK,CAACyoF,MAAM;UAC3B,MAAMC,UAAU,GAAG1oF,KAAK,CAAC0oF,UAAU,IAAI,IAAI,GAAG,KAAK,GAAG1oF,KAAK,CAAC0oF,UAAU;UACtE,MAAMC,OAAO,GAAG3oF,KAAK,CAAC2oF,OAAO,IAAI,IAAI,GAAG,KAAK,GAAG3oF,KAAK,CAAC2oF,OAAO;UAC7D,MAAM/jF,UAAU,GAAGt6G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;UAChD,IAAI20B,SAAS,GACTwgF,KAAK,CAACxgF,SAAS,IAAI,IAAI,IAAI,EAAE,GACvB,EAAE,GACFxE,IAAI,CAACyW,kBAAkB,CAACzW,IAAI,CAACmY,iBAAiB,CAAC6sE,KAAK,CAACxgF,SAAS,CAAC/T,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACxF,IAAIiU,OAAO,GACPsgF,KAAK,CAACtgF,OAAO,IAAI,IAAI,IAAI,EAAE,GACrB,EAAE,GACF1E,IAAI,CAACyW,kBAAkB,CAACzW,IAAI,CAACmY,iBAAiB,CAAC6sE,KAAK,CAACtgF,OAAO,CAACjU,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACtFm5F,UAAU,CAACz9G,SAAS,CAACE,GAAG,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;UACrE,MAAMuhM,UAAU,GAAGt+L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;UAChD+9L,UAAU,CAACzhM,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;UAC7C,MAAMwhM,aAAa,GAAGv+L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;UACnDg+L,aAAa,CAAC/9L,EAAE,GAAG,YAAY;UAC/B+9L,aAAa,CAAC1hM,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;UAChDwhM,aAAa,CAACphM,SAAS,GAAGyD,KAAK,CAAC,eAAe,CAAC;UAEhD05G,UAAU,CAACn9G,SAAS,GAAG;AAC3C,mBAAmB+3B,SAAS;AAC5B,mBAAmBE,OAAO;AAC1B,mBAAmBsgF,KAAK,CAAC8oF,KAAK;AAC9B,mBAAmB9oF,KAAK,CAAC+oF,UAAU;AACnC,mBAAmBL,UAAU;AAC7B,oBAAoBC,OAAO;AAC3B,mBAAmB3oF,KAAK,CAAC29B,OAAO;AAChC,mBAAmB39B,KAAK,CAACgpF,OAAO;AAChC;AACA,WAAW;UACSpkF,UAAU,CAAC7uG,OAAO,CAAC8yL,aAAa,CAAC;UACjC,IAAInwL,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,EAAE;YAC7Bu7I,UAAU,CAACnhM,SAAS,GAAGyD,KAAK,CAAC,KAAK,CAAC;UACvC,CAAC,MAAM;YACH09L,UAAU,CAACnhM,SAAS,GAAG,aAAa;UACxC;UACAm9G,UAAU,CAAC78G,WAAW,CAAC6gM,UAAU,CAAC;UAClCnkF,UAAU,CAAC18G,WAAW,CAAC68G,UAAU,CAAC;UAElCgkF,UAAU,CAACn+L,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;YACtCo8L,oBAAoB,CAACjpF,KAAK,CAAC4iF,QAAQ,EAAE5iF,KAAK,CAACyoF,MAAM,EAAEF,eAAe,CAAC;UACvE,CAAC,CAAC;;UAEF;UACA;UACA,MAAMW,eAAe,GAAG5+L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;UACrDq+L,eAAe,CAAC/hM,SAAS,CAACE,GAAG,CAAC,2BAA2B,CAAC;UAE1D,MAAM8hM,eAAe,GAAG7+L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;UACrDs+L,eAAe,CAAChiM,SAAS,CAACE,GAAG,CAAC,0BAA0B,CAAC;UACzD8hM,eAAe,CAAC1hM,SAAS,GAAG;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;UACLyhM,eAAe,CAACnhM,WAAW,CAACohM,eAAe,CAAC;UAE5C,IAAIhD,OAAO,CAACiD,gBAAgB,CAACX,MAAM,CAAC,EAAE;YAClCtC,OAAO,CAACiD,gBAAgB,CAACX,MAAM,CAAC,CAAC9mL,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;cAC5C,OAAOiQ,QAAQ,CAACxkB,CAAC,CAACi3G,OAAO,CAAC,GAAGzyF,QAAQ,CAACjQ,CAAC,CAAC0iG,OAAO,CAAC;YACpD,CAAC,CAAC;YAEFwhF,OAAO,CAACiD,gBAAgB,CAACX,MAAM,CAAC,CAAC5gM,OAAO,CAACwhM,QAAQ,IAAI;cACjD,MAAMC,GAAG,GAAGD,QAAQ,CAACZ,MAAM;cAC3B,MAAMC,UAAU,GAAGW,QAAQ,CAACX,UAAU,IAAI,IAAI,GAAG,KAAK,GAAGW,QAAQ,CAACX,UAAU;cAC5E,MAAMa,OAAO,GAAGF,QAAQ,CAACE,OAAO,IAAI,IAAI,GAAG,KAAK,GAAGF,QAAQ,CAACE,OAAO;cACnE,MAAMC,eAAe,GAAGl/L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;cACrD,IAAI4+L,QAAQ,GACRJ,QAAQ,CAACI,QAAQ,IAAI,IAAI,IAAI,EAAE,GACzB,EAAE,GACFzuK,IAAI,CAACyW,kBAAkB,CAACzW,IAAI,CAACmY,iBAAiB,CAACk2J,QAAQ,CAACI,QAAQ,CAACh+K,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;cAE1F+9K,eAAe,CAACriM,SAAS,CAACE,GAAG,CAAC,2BAA2B,EAAE,mBAAmB,CAAC;cAC/E,MAAMuhM,UAAU,GAAGt+L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;cAChD+9L,UAAU,CAACzhM,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;cAG7CmiM,eAAe,CAAC/hM,SAAS,GAAG;AACxD;AACA,mCAAmC4hM,QAAQ,CAACK,YAAY;AACxD,mCAAmCL,QAAQ,CAAC/iF,WAAW;AACvD,mCAAmC+iF,QAAQ,CAAC93E,MAAM;AAClD,mCAAmCm3E,UAAU;AAC7C,mCAAmCa,OAAO;AAC1C,mCAAmCE,QAAQ;AAC3C,6BAA6B;cACD,IAAI/wL,CAAC,CAACC,OAAO,CAAC00C,SAAS,IAAI,IAAI,EAAE;gBAC7Bu7I,UAAU,CAACnhM,SAAS,GAAGyD,KAAK,CAAC,QAAQ,CAAC;cAC1C,CAAC,MAAM;gBACH09L,UAAU,CAACnhM,SAAS,GAAG,aAAa;cACxC;cACA+hM,eAAe,CAACzhM,WAAW,CAAC6gM,UAAU,CAAC;cACvCM,eAAe,CAACnhM,WAAW,CAACyhM,eAAe,CAAC;cAE5CA,eAAe,CAAC/+L,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;gBAC3C;cAAA,CACH,CAAC;YACN,CAAC,CAAC;UACN;UACAg8L,aAAa,CAACp+L,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;YACzC,MAAMvB,MAAM,GAAGhB,QAAQ,CAACC,aAAa,CAAC,aAAa,CAAC;YACpDymL,SAAS,GAAG,QAAQ;YACpB,IAAIkY,eAAe,CAAC/hM,SAAS,CAAC8N,QAAQ,CAAC,QAAQ,CAAC,EAAE;cAC9C;cACAi0L,eAAe,CAAC/hM,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;cAC1CyhM,aAAa,CAACphM,SAAS,GAAGyD,KAAK,CAACwM,aAAa;YACjD,CAAC,MAAM;cACH;cACAwxL,eAAe,CAAC/hM,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;cACvCwhM,aAAa,CAACphM,SAAS,GAAGyD,KAAK,CAACqb,YAAY;YAChD;UACJ,CAAC,CAAC;UAEFk+F,UAAU,CAAC18G,WAAW,CAACmhM,eAAe,CAAC;QAC3C,CAAC,CAAC;MACN;MAEAZ,UAAU,CAAC79L,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QACtC,MAAMvB,MAAM,GAAGhB,QAAQ,CAACC,aAAa,CAAC,aAAa,CAAC;QACpDymL,SAAS,GAAG,QAAQ;QACpB,IAAIvsE,UAAU,CAACt9G,SAAS,CAAC8N,QAAQ,CAAC,QAAQ,CAAC,EAAE;UACzC;UACAwvG,UAAU,CAACt9G,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;UACrCkhM,UAAU,CAAC7gM,SAAS,GAAGyD,KAAK,CAACwM,aAAa;QAC9C,CAAC,MAAM;UACH;UACA+sG,UAAU,CAACt9G,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;UAClCihM,UAAU,CAAC7gM,SAAS,GAAGyD,KAAK,CAACqb,YAAY;QAC7C;MACJ,CAAC,CAAC;MAEFvH,OAAO,CAACvU,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QACnC88L,sBAAsB,CAACvvL,MAAM,CAACwoL,QAAQ,CAAC;MAC3C,CAAC,CAAC;;MAEF;MACA;MACA5+E,OAAO,CAACj8G,WAAW,CAAC08G,UAAU,CAAC;MAC/BtG,aAAa,CAACp2G,WAAW,CAACi8G,OAAO,CAAC;IACtC,CAAC,CAAC;IAEF9F,QAAQ,CAACn2G,WAAW,CAACo2G,aAAa,CAAC;EACvC;EAEA,SAAS0B,cAAcA,CAAA,EAAG;IACtB,IAAI,CAACsmF,OAAO,CAACrmF,aAAa,EAAE;MACxB;IACJ;IAEA,MAAMC,eAAe,GAAGomF,OAAO,CAACrmF,aAAa,CAACprB,MAAM,CAAC,CAACt/C,GAAG,EAAE4qE,KAAK,KAAK;MACjE,IAAI,CAAC5qE,GAAG,CAAC4qE,KAAK,CAAC4iF,QAAQ,CAAC,EAAE;QACtBxtJ,GAAG,CAAC4qE,KAAK,CAAC4iF,QAAQ,CAAC,GAAG,EAAE;QACxBxtJ,GAAG,CAAC4qE,KAAK,CAAC4iF,QAAQ,CAAC,CAACltL,IAAI,CAACsqG,KAAK,CAAC;MACnC,CAAC,MAAM;QACH5qE,GAAG,CAAC4qE,KAAK,CAAC4iF,QAAQ,CAAC,CAACltL,IAAI,CAACsqG,KAAK,CAAC;MACnC;MAEA,OAAO5qE,GAAG;IACd,CAAC,EAAE,CAAC,CAAC,CAAC;IAEN+wJ,OAAO,CAACrmF,aAAa,GAAG;MAAE,GAAGC;IAAgB,CAAC;EAClD;EAEA,SAASsoF,iBAAiBA,CAAA,EAAG;IACzB,IAAI,CAAClC,OAAO,CAACiD,gBAAgB,EAAE;MAC3B;IACJ;IAEA,MAAMrpF,eAAe,GAAGomF,OAAO,CAACiD,gBAAgB,CAAC10G,MAAM,CAAC,CAACt/C,GAAG,EAAE4qE,KAAK,KAAK;MACpE,IAAI,CAAC5qE,GAAG,CAAC4qE,KAAK,CAACyoF,MAAM,CAAC,EAAE;QACpBrzJ,GAAG,CAAC4qE,KAAK,CAACyoF,MAAM,CAAC,GAAG,EAAE;QACtBrzJ,GAAG,CAAC4qE,KAAK,CAACyoF,MAAM,CAAC,CAAC/yL,IAAI,CAACsqG,KAAK,CAAC;MACjC,CAAC,MAAM;QACH5qE,GAAG,CAAC4qE,KAAK,CAACyoF,MAAM,CAAC,CAAC/yL,IAAI,CAACsqG,KAAK,CAAC;MACjC;MAEA,OAAO5qE,GAAG;IACd,CAAC,EAAE,CAAC,CAAC,CAAC;IAEN+wJ,OAAO,CAACiD,gBAAgB,GAAG;MAAE,GAAGrpF;IAAgB,CAAC;EACrD;EAEA,SAAS4pF,sBAAsBA,CAAC/G,QAAQ,EAAE;IAEtCmE,kBAAkB,GAAG1sL,KAAK,CAAC1P,KAAK,CAAC;MAC7BgB,UAAU,EAAE,CAAC,mBAAmB,CAAC;MACjCkP,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,MAAM8D,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAAC7P,SAAS,GAAG,0BAA0B;;IAE9C;IACA6xK,YAAY,GAAGxyK,KAAK,CAACxD,KAAK,CAAC;MACvBG,EAAE,EAAE,cAAc;MAClBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE8uB,IAAI,CAAC8Z,aAAa,CAAC;IAC9B,CAAC,CAAC;IACF+xJ,YAAY,GAAG7rK,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IAEnC8rI,UAAU,GAAGzyK,KAAK,CAACxD,KAAK,CAAC;MACrBG,EAAE,EAAE,YAAY;MAChBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF09L,KAAK,GAAG36L,KAAK,CAACxD,KAAK,CAAC;MAChBG,EAAE,EAAE,OAAO;MACXO,IAAI,EAAE,QAAQ;MACdoB,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE,WAAW;MAClBW,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,EAC1B;QAAED,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAK,CAAC,EAC3B;QACID,GAAG,EAAE,YAAY;QACjBC,KAAK,EAAE;MACX,CAAC;IAET,CAAC,CAAC;IAEF68L,UAAU,GAAG56L,KAAK,CAACxD,KAAK,CAAC;MACrBG,EAAE,EAAE,YAAY;MAChBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE;IACX,CAAC,CAAC;IAEF0kH,qBAAqB,GAAGtkH,QAAQ,CAAC3B,KAAK,CAAC;MACnCG,EAAE,EAAE,uBAAuB;MAC3B2B,KAAK,EAAE,OAAO;MACdF,UAAU,EAAE;IAChB,CAAC,CAAC;IAEF+tG,SAAS,GAAG5vG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAI,CAACmuG,SAAS,CAACnzG,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC3C,MAAM20L,qBAAqB,CAAChH,QAAQ,CAAC;UACrCvoL,KAAK,CAAC/S,IAAI,CAACy/L,kBAAkB,CAAC;QAClC;MACJ;IACJ,CAAC,CAAC;IAEFxsF,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEF07L,kBAAkB,CAACh/L,WAAW,CAAC4W,OAAO,CAAC;IACvCooL,kBAAkB,CAACh/L,WAAW,CAAC44K,YAAY,CAAC;IAC5ComB,kBAAkB,CAACh/L,WAAW,CAAC64K,UAAU,CAAC;IAC1CmmB,kBAAkB,CAACh/L,WAAW,CAAC+gM,KAAK,CAAC;IACrC/B,kBAAkB,CAACh/L,WAAW,CAACghM,UAAU,CAAC;IAC1ChC,kBAAkB,CAACh/L,WAAW,CAAC6oH,qBAAqB,CAAC;IACrD,IAAI8hC,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrCqrJ,YAAY,CAAC3qJ,WAAW,CAACuyG,SAAS,CAAC;IACnCo4C,YAAY,CAAC3qJ,WAAW,CAACwyG,UAAU,CAAC;IACpCwsF,kBAAkB,CAACh/L,WAAW,CAAC2qJ,YAAY,CAAC;IAE5Cr4I,KAAK,CAAC9S,IAAI,CAACw/L,kBAAkB,CAAC;IAC9B8C,uBAAuB,CAAC,CAAC;IACzBC,gCAAgC,CAAC,CAAC;IAClCC,kCAAkC,CAAC,CAAC;EACxC;EAEA,SAASD,gCAAgCA,CAAA,EAAG;IACxChB,KAAK,CAACr+L,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACrCy+L,QAAQ,GAAGz+L,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC7B69L,kCAAkC,CAAC,CAAC;IACxC,CAAC,CAAC;IAEFhB,UAAU,CAACt+L,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1C0+L,aAAa,GAAG1+L,KAAK,CAACC,MAAM,CAACgE,KAAK;MAClC,IAAI4vG,GAAG,GAAG,IAAI7oD,MAAM,CAAC,gBAAgB,CAAC;MACtC,IAAI,CAAC6oD,GAAG,CAAChuF,IAAI,CAAC64K,aAAa,CAAC,EAAE;QAC1Br8L,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,CAACrB,KAAK,GAAG,GAAG;MACrD,CAAC,MACI,IAAIy6L,aAAa,CAAC5qF,QAAQ,CAAC,GAAG,CAAC,KAAK4qF,aAAa,CAACv3K,KAAK,CAAC,KAAK,CAAC,CAACxnB,MAAM,GAAG,CAAC,IAAI++L,aAAa,CAACn7K,QAAQ,CAAC,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC7jB,MAAM,GAAG,CAAC,CAAC,EAAE;QAClI0C,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,CAACrB,KAAK,GAAG,GAAG;MACrD;MACA,IAAIy6L,aAAa,CAAC5qF,QAAQ,CAAC,GAAG,CAAC,IAAI4qF,aAAa,CAAC5qF,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC5DzxG,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,CAACrB,KAAK,GAAG,GAAG;MACrD;MACA,IAAIy6L,aAAa,CAAC5qF,QAAQ,CAAC,GAAG,CAAC,IAAI4qF,aAAa,CAACv3K,KAAK,CAAC,KAAK,CAAC,CAACxnB,MAAM,GAAG,CAAC,EAAE;QACtE0C,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,CAACrB,KAAK,GAAG,GAAG;MACrD;MACAy6L,aAAa,GAAGA,aAAa,CAACzxL,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;MAC9C60L,kCAAkC,CAAC,CAAC;IACxC,CAAC,CAAC;IAEFn5E,qBAAqB,CAACnmH,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACtD2+L,gBAAgB,GAAG3+L,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACjC,EAAE;MACtEi/L,kCAAkC,CAAC,CAAC;IACxC,CAAC,CAAC;IACFppB,YAAY,CAACl2K,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5C4+L,YAAY,GAAG5+L,KAAK,CAACC,MAAM,CAACgE,KAAK;MACjC69L,kCAAkC,CAAC,CAAC;IACxC,CAAC,CAAC;IACFnpB,UAAU,CAACn2K,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1C6+L,UAAU,GAAG7+L,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC/B69L,kCAAkC,CAAC,CAAC;IACxC,CAAC,CAAC;IAEFxvF,UAAU,CAAC9vG,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACvC4P,KAAK,CAAC/S,IAAI,CAACy/L,kBAAkB,CAAC;IAClC,CAAC,CAAC;EACN;EAEA,SAASgD,kCAAkCA,CAAA,EAAG;IAC1C,IAAIC,QAAQ,GAAGjB,UAAU,CAACx+L,aAAa,CAAC,aAAa,CAAC;IACtD,IAAI87G,aAAa,GAAGuK,qBAAqB,CAACrmH,aAAa,CAAC,wBAAwB,CAAC;IACjF,IAAIi1B,SAAS,GAAGmhJ,YAAY,CAACp2K,aAAa,CAAC,eAAe,CAAC;IAC3D,IAAIm1B,OAAO,GAAGkhJ,UAAU,CAACr2K,aAAa,CAAC,aAAa,CAAC;IACrD,IAAI0/L,IAAI,GAAGnB,KAAK,CAACv+L,aAAa,CAAC,QAAQ,CAAC;IAExC,IAAIuxG,GAAG,GAAG,IAAI7oD,MAAM,CAAC,gBAAgB,CAAC;IAEtC,IAAIozD,aAAa,CAACn6G,KAAK,KAAK,EAAE,EAAE;MAC5B0kH,qBAAqB,CAACzpH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACrD,CAAC,MAAM;MACHupH,qBAAqB,CAACzpH,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IACxD;IAEA,IAAI6iM,IAAI,CAAC/9L,KAAK,IAAI,EAAE,IAAIgmB,QAAQ,CAAC+3K,IAAI,CAAC/9L,KAAK,CAAC,GAAG,EAAE,EAAE;MAC/C48L,KAAK,CAAC3hM,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACrC,CAAC,MAAM;MACHyhM,KAAK,CAAC3hM,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IACxC;IAEA,IAAI4iM,QAAQ,CAAC99L,KAAK,KAAK,EAAE,IAAI89L,QAAQ,CAAC99L,KAAK,KAAK,GAAG,IAAI89L,QAAQ,CAAC99L,KAAK,CAAC6vG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACD,GAAG,CAAChuF,IAAI,CAACk8K,QAAQ,CAAC99L,KAAK,CAAC,EAAE;MAC9G68L,UAAU,CAAC5hM,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1C,CAAC,MAAM;MACH0hM,UAAU,CAAC5hM,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC7C;IAEA,IAAIo4B,SAAS,CAACtzB,KAAK,KAAK,EAAE,EAAE;MACxBy0K,YAAY,CAACx5K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC5C,CAAC,MAAM;MACHs5K,YAAY,CAACx5K,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC/C;IAEA,IAAIs4B,OAAO,CAACxzB,KAAK,KAAK,EAAE,IAAIszB,SAAS,CAACtzB,KAAK,GAAGwzB,OAAO,CAACxzB,KAAK,EAAE;MACzD00K,UAAU,CAACz5K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1C,CAAC,MAAM;MACHu5K,UAAU,CAACz5K,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC7C;IAEA8iM,gCAAgC,CAAC,CAAC;EACtC;EAEA,eAAeL,uBAAuBA,CAAA,EAAG;IACrC,MAAM;MACFM,gBAAgB,EAAEC;IACtB,CAAC,GAAG,MAAMjH,OAAO,CAACkH,UAAU,CAAC,CAAC;IAE9B,IAAIh9L,IAAI,GAAG+8L,QAAQ,CAAC/4L,GAAG,CAAEi5L,QAAQ,KAAM;MACnCx/L,EAAE,EAAEw/L,QAAQ,CAACx/L,EAAE;MACfoB,KAAK,EAAEo+L,QAAQ,CAACx/L,EAAE;MAClBG,IAAI,EAAEq/L,QAAQ,CAACl6L;IACnB,CAAC,CAAC,CAAC;IACH/C,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAC/CqB,QAAQ,CAAC5E,QAAQ,CAAC,uBAAuB,EAAE2F,IAAI,EAAE,EAAE,CAAC;EACxD;EAEA,SAAS68L,gCAAgCA,CAAA,EAAG;IACxC,IAAIrtF,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACvE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxB0yG,SAAS,CAACnzG,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACnC;IACJ,CAAC,MAAM;MACHizG,SAAS,CAACnzG,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC1C;EACJ;EAEA,eAAewiM,qBAAqBA,CAAChH,QAAQ,EAAE;IAC3C,MAAMO,OAAO,CAACoH,mBAAmB,CAAC;MAC9BrzJ,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB8nJ,KAAK,EAAEpC,QAAQ;MACfqC,UAAU,EAAEpC,aAAa;MACzBtgF,aAAa,EAAEugF,gBAAgB;MAC/BpnK,SAAS,EAAEqnK,YAAY;MACvBnnK,OAAO,EAAEonK,UAAU;MACnBlwI,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACxBwrJ,QAAQ,EAAET;IACd,CAAC,CAAC;IACF/gF,WAAW,CAAC,CAAC;EACjB;EAIA,SAASonF,oBAAoBA,CAACrG,QAAQ,EAAE6F,MAAM,EAAEF,eAAe,EAAE;IAE7DvB,gBAAgB,GAAG3sL,KAAK,CAAC1P,KAAK,CAAC;MAC3BgB,UAAU,EAAE,CAAC,mBAAmB,CAAC;MACjCkP,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,MAAM8D,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAAC7P,SAAS,GAAG,wBAAwB;;IAE5C;IACA07L,oBAAoB,GAAGl+L,QAAQ,CAAC3B,KAAK,CAAC;MAClCG,EAAE,EAAE,sBAAsB;MAC1B2B,KAAK,EAAE,eAAe;MACtBF,UAAU,EAAE;IAChB,CAAC,CAAC;IAEFskH,mBAAmB,GAAGvkH,QAAQ,CAAC3B,KAAK,CAAC;MACjCG,EAAE,EAAE,qBAAqB;MACzB2B,KAAK,EAAE,cAAc;MACrBF,UAAU,EAAE;IAChB,CAAC,CAAC;IAEF8xG,cAAc,GAAG/xG,QAAQ,CAAC3B,KAAK,CAAC;MAC5BG,EAAE,EAAE,gBAAgB;MACpB2B,KAAK,EAAE,QAAQ;MACfF,UAAU,EAAE;IAChB,CAAC,CAAC;IAEFk+L,gBAAgB,GAAGt8L,KAAK,CAACxD,KAAK,CAAC;MAC3BG,EAAE,EAAE,YAAY;MAChBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEFs/L,gBAAgB,GAAGv8L,KAAK,CAACxD,KAAK,CAAC;MAC3BG,EAAE,EAAE,kBAAkB;MACtBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,aAAa;MACpBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEFu/L,QAAQ,GAAGx8L,KAAK,CAACxD,KAAK,CAAC;MACnBG,EAAE,EAAE,UAAU;MACdO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,WAAW;MAClBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEFw/L,UAAU,GAAGlgM,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAI,CAACy+L,UAAU,CAACzjM,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC5C,MAAM41L,mBAAmB,CAACjI,QAAQ,EAAE6F,MAAM,CAAC;UAC3CpuL,KAAK,CAAC/S,IAAI,CAAC0/L,gBAAgB,CAAC;QAChC;MACJ;IACJ,CAAC,CAAC;IAEF8D,WAAW,GAAGpgM,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IACF,IAAI6wI,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACzCm8L,gBAAgB,CAACj/L,WAAW,CAAC4W,OAAO,CAAC;IACrCqoL,gBAAgB,CAACj/L,WAAW,CAACm0I,MAAM,CAAC;IACpC8qD,gBAAgB,CAACj/L,WAAW,CAACm0I,MAAM,CAAC;IACpC8qD,gBAAgB,CAACj/L,WAAW,CAACyiM,oBAAoB,CAAC;IAClDxD,gBAAgB,CAACj/L,WAAW,CAAC8oH,mBAAmB,CAAC;IACjDm2E,gBAAgB,CAACj/L,WAAW,CAACs2G,cAAc,CAAC;IAG5C2oF,gBAAgB,CAACj/L,WAAW,CAAC0iM,gBAAgB,CAAC;IAC9CzD,gBAAgB,CAACj/L,WAAW,CAAC2iM,gBAAgB,CAAC;IAE9C1D,gBAAgB,CAACj/L,WAAW,CAAC4iM,QAAQ,CAAC;IAEtC,IAAIj4C,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrCqrJ,YAAY,CAAC3qJ,WAAW,CAAC6iM,UAAU,CAAC;IACpCl4C,YAAY,CAAC3qJ,WAAW,CAAC+iM,WAAW,CAAC;IACrC9D,gBAAgB,CAACj/L,WAAW,CAAC2qJ,YAAY,CAAC;IAE1Cr4I,KAAK,CAAC9S,IAAI,CAACy/L,gBAAgB,CAAC;IAC5B+D,2BAA2B,CAACxC,eAAe,CAAC;IAC5CyC,8BAA8B,CAAC,CAAC;IAChCC,gCAAgC,CAAC,CAAC;EACtC;EAEA,SAASD,8BAA8BA,CAAA,EAAG;IACtCP,gBAAgB,CAAChgM,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAChDg/L,mBAAmB,GAAGh/L,KAAK,CAACC,MAAM,CAACgE,KAAK;IAC5C,CAAC,CAAC;IACFs+L,oBAAoB,CAAC//L,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACrDi/L,uBAAuB,GAAGj/L,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACjC,EAAE;MAC7EmgM,gCAAgC,CAAC,CAAC;IACtC,CAAC,CAAC;IACFp6E,mBAAmB,CAACpmH,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpDk/L,sBAAsB,GAAGl/L,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACjC,EAAE;MAC5EmgM,gCAAgC,CAAC,CAAC;IACtC,CAAC,CAAC;IACF5sF,cAAc,CAAC5zG,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC/Co/L,iBAAiB,GAAGp/L,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACjC,EAAE;IAC3E,CAAC,CAAC;IACF4/L,gBAAgB,CAACjgM,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAChDm/L,mBAAmB,GAAGn/L,KAAK,CAACC,MAAM,CAACgE,KAAK;MACxC++L,gCAAgC,CAAC,CAAC;IACtC,CAAC,CAAC;IACFN,QAAQ,CAAClgM,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACxCq/L,WAAW,GAAGr/L,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChC++L,gCAAgC,CAAC,CAAC;IACtC,CAAC,CAAC;IAEFH,WAAW,CAACrgM,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACxC4P,KAAK,CAAC/S,IAAI,CAAC0/L,gBAAgB,CAAC;IAChC,CAAC,CAAC;EACN;EAEA,SAASiE,gCAAgCA,CAAA,EAAG;IACxC,IAAIC,eAAe,GAAGV,oBAAoB,CAACjgM,aAAa,CAAC,uBAAuB,CAAC;IACjF,IAAI4gM,cAAc,GAAGt6E,mBAAmB,CAACtmH,aAAa,CAAC,sBAAsB,CAAC;IAC9E,IAAI6gM,aAAa,GAAGV,gBAAgB,CAACngM,aAAa,CAAC,mBAAmB,CAAC;IACvE,IAAI+8L,WAAW,GAAGqD,QAAQ,CAACpgM,aAAa,CAAC,WAAW,CAAC;IAErD,IAAI2gM,eAAe,CAACh/L,KAAK,KAAK,EAAE,EAAE;MAC9Bs+L,oBAAoB,CAACrjM,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACpD,CAAC,MAAM;MACHmjM,oBAAoB,CAACrjM,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IACvD;IAEA,IAAI+jM,cAAc,CAACj/L,KAAK,KAAK,EAAE,EAAE;MAC7B2kH,mBAAmB,CAAC1pH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACnD,CAAC,MAAM;MACHwpH,mBAAmB,CAAC1pH,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IACtD;IAEA,IAAIgkM,aAAa,CAACl/L,KAAK,KAAK,EAAE,IAAIo7L,WAAW,CAACp7L,KAAK,IAAI,EAAE,EAAE;MACvDw+L,gBAAgB,CAACvjM,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAChD,CAAC,MAAM;MACHqjM,gBAAgB,CAACvjM,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IACnD;IAEA,IAAIkgM,WAAW,CAACp7L,KAAK,KAAK,EAAE,IAAIk/L,aAAa,CAACl/L,KAAK,IAAI,EAAE,EAAE;MACvDy+L,QAAQ,CAACxjM,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACxC,CAAC,MAAM;MACHsjM,QAAQ,CAACxjM,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC3C;IAEAikM,8BAA8B,CAAC,CAAC;EACpC;EAEA,eAAeN,2BAA2BA,CAACxC,eAAe,EAAE;IACxD,MAAM;MACF+C,8BAA8B,EAAEC;IACpC,CAAC,GAAG,MAAMpI,OAAO,CAACqI,wBAAwB,CAAC,CAAC;IAE5C,IAAIC,iBAAiB,GAAGF,aAAa,CAACl6L,GAAG,CAAEq6L,aAAa,KAAM;MAC1D5gM,EAAE,EAAE4gM,aAAa,CAAC5gM,EAAE;MACpBoB,KAAK,EAAEw/L,aAAa,CAAC5gM,EAAE;MACvBG,IAAI,EAAEygM,aAAa,CAACt7L;IACxB,CAAC,CAAC,CAAC;IACHq7L,iBAAiB,CAACxgI,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAC5DqB,QAAQ,CAAC5E,QAAQ,CAAC,sBAAsB,EAAE+jM,iBAAiB,EAAE,EAAE,CAAC;IAEhE,MAAM;MACFE,qBAAqB,EAAE75E;IAC3B,CAAC,GAAG,MAAMqxE,OAAO,CAACyI,eAAe,CAACrD,eAAe,CAAC;IAElD,IAAIx2E,eAAe,GAAGD,WAAW,CAACzgH,GAAG,CAAEi1G,WAAW,KAAM;MACpDx7G,EAAE,EAAEw7G,WAAW,CAACx7G,EAAE;MAClBoB,KAAK,EAAEo6G,WAAW,CAACx7G,EAAE;MACrBG,IAAI,EAAEq7G,WAAW,CAACl2G;IACtB,CAAC,CAAC,CAAC;IACH2hH,eAAe,CAAC9mD,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAC1DqB,QAAQ,CAAC5E,QAAQ,CAAC,qBAAqB,EAAEqqH,eAAe,EAAE,EAAE,CAAC;IAE7D,MAAM;MACF85E,gBAAgB,EAAEC;IACtB,CAAC,GAAG,MAAM3I,OAAO,CAAC4I,UAAU,CAAC,CAAC;IAE9B,IAAI98E,WAAW,GAAG68E,OAAO,CAACz6L,GAAG,CAAE+gH,OAAO,KAAM;MACxCtnH,EAAE,EAAEsnH,OAAO,CAACtnH,EAAE;MACdoB,KAAK,EAAEkmH,OAAO,CAACtnH,EAAE;MACjBG,IAAI,EAAEmnH,OAAO,CAAChiH;IAClB,CAAC,CAAC,CAAC;IACH6+G,WAAW,CAAChkD,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IACtDqB,QAAQ,CAAC5E,QAAQ,CAAC,gBAAgB,EAAEunH,WAAW,EAAE,EAAE,CAAC;EACxD;EAEA,SAASo8E,8BAA8BA,CAAA,EAAG;IACtC,IAAIxuF,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACvE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxBgjM,UAAU,CAACzjM,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACpC;IACJ,CAAC,MAAM;MACHujM,UAAU,CAACzjM,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC3C;EACJ;EAEA,eAAeyjM,mBAAmBA,CAACjI,QAAQ,EAAE6F,MAAM,EAAE;IACjD,MAAMtF,OAAO,CAAC6I,iBAAiB,CAAC;MAC5B90J,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB0nJ,UAAU,EAAEzB,mBAAmB;MAC/ByC,YAAY,EAAExC,uBAAuB;MACrC5gF,WAAW,EAAE6gF,sBAAsB;MACnC8E,UAAU,EAAE7E,mBAAmB;MAC/Br1I,MAAM,EAAEs1I,iBAAiB;MACzBsD,QAAQ,EAAErD,WAAW;MACrB1wI,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACxBwrJ,QAAQ,EAAET,QAAQ;MAClBsJ,MAAM,EAAEzD,MAAM;MACdpqB,UAAU,EAAE1pE;IAChB,CAAC,CAAC;IACFkN,WAAW,CAAC,CAAC;EACjB;EAEA,SAASpB,UAAUA,CAACpvF,IAAI,EAAE;IACtB,IAAI,CAACA,IAAI,EAAE,OAAO,EAAE;IAEpB,OAAO2J,IAAI,CAACyW,kBAAkB,CAACzW,IAAI,CAACmY,iBAAiB,CAAC9hB,IAAI,CAAC5F,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC9E;EACA,SAASjhB,IAAIA,CAAA,EAAG;IACZszG,wBAAwB,CAAC,KAAK,CAAC;IAC/BtkG,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvB28F,OAAO,CAACoH,cAAc,CAAC,CAAC;EAC5B;EAEA,OAAO;IACHhzG,IAAI;IACJ/B,oBAAoB;IACpB8+L;EACJ,CAAC;AACL,CAAC,EAAE,CAAC;AC3lCJ,IAAIpE,OAAO,GAAI,YAAY;EACvB;;EAEA,eAAeyE,cAAcA,CAACriF,YAAY,EAAE;IACxC;IACA,IAAI;MACA,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kBAAkB;QACtBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAAC8+L,oBAAoB;IACpC,CAAC,CAAC,OAAO9yL,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEA,SAAS29E,2BAA2BA,CAACnvF,OAAO,EAAE9nG,QAAQ,EAAE;IACpDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,+BAA+B;MAClJxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,gBAAgB,GAChBizD,OAAO,CAAC1wF,QAAQ,GAChB,IAAI;MACR+zC,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC20I,iCAAiC;QACpDjgM,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAE;IAC3C,CAAC,CAAC;EACN;EAEA,eAAeoqL,iBAAiBA,CAACb,QAAQ,EAAE;IACvC,IAAI;MACA,MAAM5kK,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;QACzBxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,iBAAiB,GACjB4hJ,QAAQ,GACR,IAAI;QACRtrI,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAe8+E,gBAAgBA,CAACh/E,YAAY,EAAE;IAC1C;IACA,IAAI;MACA,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oBAAoB;QACxBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACg/L,sBAAsB;IACtC,CAAC,CAAC,OAAOhzL,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEA,eAAeq/E,gBAAgBA,CAACzB,QAAQ,EAAE;IACtC,IAAI;MACA,MAAMrlK,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oBAAoB;QACxBxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,iBAAiB,GACjBqiJ,QAAQ,GACR,IAAI;QACR/rI,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAewgF,UAAUA,CAAA,EAAG;IACxB,IAAI;MACA,MAAMjoK,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,cAAc;QAClBxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,IAAI;QACRsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeygF,gBAAgBA,CAAC3gF,YAAY,EAAE;IAC1C;IACA,IAAI;MACA,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oBAAoB;QACxBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACi/L,sBAAsB;IACtC,CAAC,CAAC,OAAOjzL,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEA,eAAe8/E,gBAAgBA,CAAChgF,YAAY,EAAE;IAC1C;IACA,IAAI;MACA,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oBAAoB;QACxBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACk/L,sBAAsB;IACtC,CAAC,CAAC,OAAOlzL,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEA,eAAe4kF,UAAUA,CAAA,EAAG;IACxB,IAAI;MACA,MAAMrsK,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,cAAc;QAClBxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,IAAI;QACRsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAe8kF,mBAAmBA,CAAChlF,YAAY,EAAE;IAC7C;IACA,IAAI;MACA,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;QAC3BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACm/L,yBAAyB;IACzC,CAAC,CAAC,OAAOnzL,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEA,eAAeumF,iBAAiBA,CAACzmF,YAAY,EAAE;IAC3C;IACA,IAAI;MACA,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;QACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACo/L,uBAAuB;IACvC,CAAC,CAAC,OAAOpzL,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEA,eAAe+lF,wBAAwBA,CAAA,EAAG;IACtC,IAAI;MACA,MAAMxtK,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;QAChCxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,IAAI;QACRsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAemmF,eAAeA,CAACrD,eAAe,EAAE;IAC5C,IAAI;MACA,MAAMvqK,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,mBAAmB;QACvBxoD,IAAI,EACA,sBAAsB,GACtBk7L,eAAe,GACf,IAAI;QACRjxI,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAesmF,UAAUA,CAAA,EAAG;IACxB,IAAI;MACA,MAAM/tK,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,cAAc;QAClBxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,IAAI;QACRsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAGA,OAAO;IACHmiF,cAAc;IACdxE,2BAA2B;IAC3BK,iBAAiB;IACjBc,gBAAgB;IAChBO,gBAAgB;IAChBmB,UAAU;IACVC,gBAAgB;IAChBX,gBAAgB;IAChB8E,UAAU;IACVE,mBAAmB;IACnByB,iBAAiB;IACjBR,wBAAwB;IACxBI,eAAe;IACfG;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AClXJ,IAAIjwC,gBAAgB,GAAI,YAAW;EACjC;EACD;EACA,IAAI4wC,gBAAgB;EACnB,IAAIC,iBAAiB;EACtB,IAAIC,UAAU;EACb,IAAIC,aAAa;EAEjB,SAASC,mBAAmBA,CAAA,EAAG;IAC7B,IAAIJ,gBAAgB,EAAE,OAAO,CAAC,GAAGA,gBAAgB,CAAC;EACpD;EACA,SAASK,YAAYA,CAAA,EAAG;IACtB,IAAIJ,iBAAiB,EAAE,OAAO,CAAC,GAAGA,iBAAiB,CAAC;EACtD;EACA,SAASK,aAAaA,CAAA,EAAG;IACvB,IAAIJ,UAAU,EAAE,OAAO,CAAC,GAAGA,UAAU,CAAC;EACxC;EACA,SAASK,gBAAgBA,CAAA,EAAG;IAC1B,IAAIJ,aAAa,EAAE,OAAO,CAAC,GAAGA,aAAa,CAAC;EAC9C;EACA,SAASn4D,eAAeA,CAACvoI,QAAQ,EAAE;IACjC;IACA,IAAI+gM,0BAA0B,GAAG,IAAIt0I,OAAO,CAAC,CAAC78C,OAAO,EAAEC,MAAM,KAAK;MAChEmxL,oBAAoB,CAACC,sBAAsB,CAAC56F,OAAO,IAAI;QACrDk6F,gBAAgB,GAAGl6F,OAAO;QAC1Bz2F,OAAO,CAAC,CAAC;MACX,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,IAAIsxL,4BAA4B,GAAG,IAAIz0I,OAAO,CAAC,CAAC78C,OAAO,EAAEC,MAAM,KAAK;MAClEmxL,oBAAoB,CAACG,qBAAqB,CAAC96F,OAAO,IAAI;QACpDo6F,UAAU,GAAGp6F,OAAO;QACpBz2F,OAAO,CAAC,CAAC;MACX,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,IAAIwxL,gCAAgC,GAAG,IAAI30I,OAAO,CAAC,CAAC78C,OAAO,EAAEC,MAAM,KAAK;MACtEmxL,oBAAoB,CAACK,yBAAyB,CAACh7F,OAAO,IAAI;QACxDm6F,iBAAiB,GAAGn6F,OAAO;QAC3Bz2F,OAAO,CAAC,CAAC;MACX,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,IAAI0xL,2CAA2C,GAAG,IAAI70I,OAAO,CAAC,CAAC78C,OAAO,EAAEC,MAAM,KAAK;MACjFmxL,oBAAoB,CAACO,oCAAoC,CAACl7F,OAAO,IAAI;QACnEq6F,aAAa,GAAGr6F,OAAO;QACvBz2F,OAAO,CAAC,CAAC;MACX,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF68C,OAAO,CAACmrF,GAAG,CAAC,CACVmpD,0BAA0B,EAC1BG,4BAA4B,EAC5BE,gCAAgC,EAChCE,2CAA2C,CAC5C,CAAC,CAACr0E,IAAI,CAAC,MAAM;MACZjtH,QAAQ,CAAC,CAAC;IACZ,CAAC,CAAC;EACJ;EAEA,SAASwhM,eAAeA,CAAA,EAAG;IACzB,IAAIC,cAAc,GAAGljM,MAAM,CAACC,KAAK,CAAC;MAChCM,IAAI,EAAE,cAAc;MACpBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEpD,WAAW,CAACyB;IACxB,CAAC,CAAC;IACF,IAAIopI,WAAW,GAAGlpI,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,kBAAkB;MACxBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE0hM,gBAAgB,CAACrjM;IAC7B,CAAC,CAAC;IAEF,IAAIqsC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAEvCwvC,OAAO,CAAC9uC,WAAW,CAAC6lM,cAAc,CAAC;IACnC/2J,OAAO,CAAC9uC,WAAW,CAAC6rI,WAAW,CAAC;IAEhC33H,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,8BAA8B,CAAC;IACrDmtI,eAAe,CAAC,MAAM;MACpBl7H,GAAG,CAACC,iBAAiB,CAAC,CAAC;MACvBD,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC8uC,OAAO,CAAC;IACvC,CAAC,CAAC;EACJ;EAEA,OAAO;IACLi2J,mBAAmB;IACnBC,YAAY;IACZC,aAAa;IACbC,gBAAgB;IAChBU,eAAe;IACfj5D,eAAe,CAAE;EACnB,CAAC;AACH,CAAC,CAAE,CAAC;AC5FJ,IAAIy4D,oBAAoB,GAAI,YAAY;EACpC;EACA;EACA;EACA,SAASW,gBAAgBA,CAACC,gBAAgB,EAAEC,UAAU,EAAE3gM,IAAI,EAAE;IAC1D;IACAqL,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sBAAsB;MAC1BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,wBAAwB,GACxB+sJ,gBAAgB,GAChB,kBAAkB,GAClBC,UAAU,GACV,wBAAwB,GACxB3gM,IAAI,CAAC4gM,gBAAgB,GACrB,oBAAoB,GACpB5gM,IAAI,CAAC6gM,YAAY,GACjB,oBAAoB,GACpB7gM,IAAI,CAAC8gM,YAAY,GACjB,qBAAqB,GACrB9gM,IAAI,CAAC+gM,aAAa,GAClB,IAAI;MACR92I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC42I,8BAA8B;MACrD,CAAC;MACDh1L,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA;EACA,SAAS+zL,sBAAsBA,CAACjhM,QAAQ,EAAE;IACtCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAChCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC42I,8BAA8B;QACjDliM,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA,SAASi0L,qBAAqBA,CAACnhM,QAAQ,EAAE;IACrCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;MAC/BxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC62I,6BAA6B;QAChDniM,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA,SAASm0L,yBAAyBA,CAACrhM,QAAQ,EAAE;IACzCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;MACnCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC82I,iCAAiC;QACpDpiM,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA,SAASm1L,2BAA2BA,CAACrhJ,UAAU,EAAEhhD,QAAQ,EAAE;IACvDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iCAAiC;MACrCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGmM,UAAU,GAAG,IAAI;MAC9EmK,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACg3I,mCAAmC;QACtDtiM,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA,SAASq1L,8BAA8BA,CAAA,EAAG;IACtCC,iBAAiB,GAAGj2L,CAAC,CAAC,2BAA2B,CAAC,CAACm+C,GAAG,CAAC,CAAC;IACxD,IAAI3kC,QAAQ,CAACy8K,iBAAiB,CAAC,GAAGz8K,QAAQ,CAAC,KAAK,CAAC,EAAE;MAC/Cy8K,iBAAiB,GAAG,GAAG;MACvBj2L,CAAC,CAAC,2BAA2B,CAAC,CAACm+C,GAAG,CAAC,KAAK,CAAC;MACzCrlB,KAAK,CAAC,gCAAgC,CAAC;IAC3C;IACA94B,CAAC,CAACC,OAAO,CAACuuC,iCAAiC,GAAGynJ,iBAAiB;IAC/Dj2L,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kCAAkC;MACtCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,0BAA0B,GAAG2tJ,iBAAiB,GAAG,IAAI;MAC5Fr3I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACm3I,oCAAoC;MAC3D,CAAC;MACDv1L,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA,SAASw1L,oBAAoBA,CAACtpF,YAAY,EAAEp5G,QAAQ,EAAE;IAClD;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;MAC5BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;MAClCjuD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACq3I,0BAA0B;QAC7C3iM,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA,SAAS01L,sBAAsBA,CAAC5iM,QAAQ,EAAE;IACtCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0CAA0C;MAC9CxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACu3I,4CAA4C;QAC/D7iM,QAAQ,CAACykD,GAAG,CAAC;QACb;MACJ,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA,SAASq0L,oCAAoCA,CAACvhM,QAAQ,EAAE;IACpDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wCAAwC;MAC5CxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACw3I,0CAA0C;QAC7D9iM,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EACA,SAAS61L,qCAAqCA,CAACC,YAAY,EAAEhjM,QAAQ,EAAE;IACnEuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,yCAAyC;MAC7CxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,qBAAqB,GAAGmuJ,YAAY,GAAG,IAAI;MAClF73I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ;QAClBtrD,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EACA,SAAS+1L,mCAAmCA,CAACC,UAAU,EAAEljM,QAAQ,EAAE;IAC/DuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uCAAuC;MAC3CxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGquJ,UAAU,GAAG,IAAI;MAC9E/3I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC63I,yCAAyC;QAC5DnjM,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EACA,SAASk2L,gBAAgBA,CAACF,UAAU,EAAE;IAClC;IACA32L,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAChCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,kBAAkB,GAAGquJ,UAAU,GAAG,IAAI;MAC7E/3I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC42I,8BAA8B;MACrD,CAAC;MACDh1L,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EACA,SAASm2L,oBAAoBA,CAACC,YAAY,EAAEtjM,QAAQ,EAAE;IAClD,IAAIujM,SAAS,GAAGD,YAAY,CAACE,oBAAoB,CAAClkL,KAAK,CAAC,GAAG,CAAC;IAC5D,IAAImkL,aAAa,GAAGH,YAAY,CAACI,gBAAgB,CAACpkL,KAAK,CAAC,GAAG,CAAC;IAC5D,IAAIsiL,gBAAgB,GAAG0B,YAAY,CAACK,UAAU,KAAK,MAAM,GAAG,QAAQ,GAAG,QAAQ;IAC/Ep3L,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;MAC5BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC06K,YAAY,CAAC;MAClCn4I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACs4I,0BAA0B;QAC7C70L,cAAc,CAAC3T,IAAI,CAAC,CAAC;QACrBirB,UAAU,CAAC,YAAY;UACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrB,KAAK,IAAIkL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGk9L,SAAS,CAAC9nM,MAAM,EAAE4K,CAAC,EAAE,EAAE;YACvC,IAAIk9L,SAAS,CAACl9L,CAAC,CAAC,KAAK,GAAG,EAAE;cACtBs7L,gBAAgB,CAACC,gBAAgB,EAAE6B,aAAa,CAACp9L,CAAC,CAAC,EAAEi9L,YAAY,CAAC;YACtE;UACJ;UACA;UACA;UACA;UACA;UACA;UACA,IAAItjM,QAAQ,EAAEA,QAAQ,CAACykD,GAAG,CAAC;QAC/B,CAAC,EAAE,IAAI,CAAC;QACR;MACJ,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA,SAAS22L,qBAAqBA,CAAC7jM,QAAQ,EAAE;IACrC;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,yBAAyB;MAC7BxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACw4I,2BAA2B;QAC9C9jM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASs/I,0BAA0BA,CAAC/jM,QAAQ,EAAE;IAC1CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,8BAA8B;MAClCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC04I,gCAAgC;QACnDhkM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASw/I,sBAAsBA,CAACjkM,QAAQ,EAAE;IACtCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;MAC9BxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC44I,4BAA4B;QAC/ClkM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS0/I,uBAAuBA,CAACnkM,QAAQ,EAAE;IACvCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAChCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC84I,8BAA8B;QACjDpkM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS4/I,0BAA0BA,CAACrkM,QAAQ,EAAE;IAC1CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,8BAA8B;MAClCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACg5I,gCAAgC;QACnDtkM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS8/I,0BAA0BA,CAACvkM,QAAQ,EAAE;IAC1CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,8BAA8B;MAClCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACk5I,gCAAgC;QACnDxkM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASggJ,wBAAwBA,CAACzkM,QAAQ,EAAE;IACxCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAChCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACo5I,8BAA8B;QACjD1kM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASkgJ,4BAA4BA,CAAC3kM,QAAQ,EAAE;IAC5CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gCAAgC;MACpCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACs5I,kCAAkC;QACrD5kM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA;EACA,SAASogJ,0BAA0BA,CAAC7jJ,UAAU,EAAEkiJ,UAAU,EAAEljM,QAAQ,EAAE;IAClEuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,8BAA8B;MAClCxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,kBAAkB,GAClBmM,UAAU,GACV,kBAAkB,GAClBkiJ,UAAU,GACV,IAAI;MACR/3I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACw5I,gCAAgC;QACnD9kM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASsgJ,qBAAqBA,CAAC/jJ,UAAU,EAAEkiJ,UAAU,EAAEljM,QAAQ,EAAE;IAC7DuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,yBAAyB;MAC7BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,kBAAkB,GAClBmM,UAAU,GACV,kBAAkB,GAClBkiJ,UAAU,GACV,IAAI;MACR/3I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC05I,2BAA2B;QAC9ChlM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASwgJ,oBAAoBA,CAACjkJ,UAAU,EAAEkiJ,UAAU,EAAEljM,QAAQ,EAAE;IAC5DuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;MAC5BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,kBAAkB,GAClBmM,UAAU,GACV,kBAAkB,GAClBkiJ,UAAU,GACV,IAAI;MACR/3I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC45I,0BAA0B;QAC7CllM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS0gJ,sBAAsBA,CAACnkJ,UAAU,EAAEkiJ,UAAU,EAAEljM,QAAQ,EAAE;IAC9DuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;MAC9BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,kBAAkB,GAClBmM,UAAU,GACV,kBAAkB,GAClBkiJ,UAAU,GACV,IAAI;MACR/3I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC85I,4BAA4B;QAC/CplM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS4gJ,sBAAsBA,CAACrkJ,UAAU,EAAEkiJ,UAAU,EAAEljM,QAAQ,EAAE;IAC9DuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;MAC9BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,kBAAkB,GAClBmM,UAAU,GACV,kBAAkB,GAClBkiJ,UAAU,GACV,IAAI;MACR/3I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACg6I,4BAA4B;QAC/CtlM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS8gJ,qBAAqBA,CAACvkJ,UAAU,EAAEkiJ,UAAU,EAAEljM,QAAQ,EAAE;IAC7DuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;MAC9BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,kBAAkB,GAClBmM,UAAU,GACV,kBAAkB,GAClBkiJ,UAAU,GACV,IAAI;MACR/3I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACk6I,4BAA4B;QAC/CxlM,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjChE,OAAO,CAACu6B,GAAG,CAAC8nB,GAAG,CAAC+tD,YAAY,CAAC;MACjC;IACJ,CAAC,CAAC;EACN;;EAEA;EACA,SAASmsF,wBAAwBA,CAACC,oBAAoB,EAAE1lM,QAAQ,EAAE;IAC9DuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAChCxoD,IAAI,EACA,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,4BAA4B,GAAG6wJ,oBAAoB,GAAG,IAAI;MAC/Fv6I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACq6I,8BAA8B;QACjD3lM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASmhJ,4BAA4BA,CAAC1kM,IAAI,EAAElB,QAAQ,EAAE;IAClD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gCAAgC;MACpCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACu6I,kCAAkC;QACrD,IAAI7lM,QAAQ,EAAEA,QAAQ,CAACykD,GAAG,CAAC;MAC/B;IACJ,CAAC,CAAC;EACN;EACA;EACA,SAASqhJ,4BAA4BA,CAAC5kM,IAAI,EAAElB,QAAQ,EAAE;IAClD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gCAAgC;MACpCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACy6I,kCAAkC;QACrD,IAAI/lM,QAAQ,EAAEA,QAAQ,CAACykD,GAAG,CAAC;MAC/B;IACJ,CAAC,CAAC;EACN;EACA,SAASuhJ,wBAAwBA,CAACC,kBAAkB,EAAEjmM,QAAQ,EAAE;IAC5DuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAChCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,0BAA0B,GAAGoxJ,kBAAkB,GAAG,IAAI;MAC7F96I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC46I,8BAA8B;QACjDlmM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA;EACA,SAAS0hJ,6BAA6BA,CAACC,wBAAwB,EAAEpmM,QAAQ,EAAE;IACvEuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iCAAiC;MACrCxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,gCAAgC,GAChCuxJ,wBAAwB,GACxB,IAAI;MACRj7I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC+6I,mCAAmC;QACtDrmM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS6hJ,iCAAiCA,CAACplM,IAAI,EAAElB,QAAQ,EAAE;IACvD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qCAAqC;MACzCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACi7I,uCAAuC;QAC1D,IAAIvmM,QAAQ,EAAEA,QAAQ,CAACykD,GAAG,CAAC;MAC/B;IACJ,CAAC,CAAC;EACN;EACA;EACA,SAAS+hJ,yBAAyBA,CAACC,qBAAqB,EAAEzmM,QAAQ,EAAE;IAChEuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6BAA6B;MACjCxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,6BAA6B,GAC7B4xJ,qBAAqB,GACrB,IAAI;MACRt7I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACo7I,+BAA+B;QAClD1mM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASkiJ,6BAA6BA,CAACzlM,IAAI,EAAElB,QAAQ,EAAE;IACnD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iCAAiC;MACrCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACs7I,mCAAmC;QACtD,IAAI5mM,QAAQ,EAAEA,QAAQ,CAACykD,GAAG,CAAC;MAC/B;IACJ,CAAC,CAAC;EACN;EACA;EACA,SAASoiJ,uBAAuBA,CAACC,kBAAkB,EAAE9mM,QAAQ,EAAE;IAC3DuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;MAC/BxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,0BAA0B,GAAGiyJ,kBAAkB,GAAG,IAAI;MAC7F37I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACy7I,6BAA6B;QAChD/mM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASuiJ,2BAA2BA,CAAC9lM,IAAI,EAAElB,QAAQ,EAAE;IACjD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;MACnCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC27I,iCAAiC;QACpD,IAAIjnM,QAAQ,EAAEA,QAAQ,CAACykD,GAAG,CAAC;MAC/B;IACJ,CAAC,CAAC;EACN;EACA;EACA,SAASyiJ,wBAAwBA,CAACC,oBAAoB,EAAEnnM,QAAQ,EAAE;IAC9DuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAChCxoD,IAAI,EACA,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,4BAA4B,GAAGsyJ,oBAAoB,GAAG,IAAI;MAC/Fh8I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC87I,+BAA+B;QAClDpnM,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS4iJ,6BAA6BA,CAACnmM,IAAI,EAAElB,QAAQ,EAAE;IACnD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gCAAgC;MACpCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACg8I,mCAAmC;QACtD,IAAItnM,QAAQ,EAAEA,QAAQ,CAACykD,GAAG,CAAC;MAC/B,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjChE,OAAO,CAACu6B,GAAG,CAAC8nB,GAAG,CAAC+tD,YAAY,CAAC;MACjC;IACJ,CAAC,CAAC;EACN;;EAEA;EACA,eAAeiuF,wBAAwBA,CAACnuF,YAAY,EAAE;IAClD,IAAI;MACA,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;QAChCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;IACN,CAAC,CAAC,OAAOn+C,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;;EAEA;EACA,SAASkuF,8BAA8BA,CAACtE,UAAU,EAAEljM,QAAQ,EAAE;IAC1DkB,IAAI,GAAG;MACH6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBquJ,UAAU,EAAEA;IAChB,CAAC;IACD32L,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kCAAkC;MACtCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACm8I,oCAAoC;QACvDznM,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEA,SAASw6L,qBAAqBA,CAACjjJ,GAAG,EAAEzkD,QAAQ,EAAE;IAC1CkB,IAAI,GAAG;MACH6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBqwF,gBAAgB,EAAEzgF,GAAG,CAAC,CAAC,CAAC,CAACygF;IAC7B,CAAC;IACD34H,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,yBAAyB;MAC7BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACq8I,2BAA2B;QAC9C3nM,QAAQ,CAACykD,GAAG,EAAEvjD,IAAI,CAACgkI,gBAAgB,CAAC;MACxC,CAAC;MACDh4H,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA,SAAS06L,0BAA0BA,CAAC1iE,gBAAgB,EAAE2iE,+BAA+B,EAAE;IACnF3mM,IAAI,GAAG;MACH6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBqwF,gBAAgB,EAAEA,gBAAgB;MAClC4iE,WAAW,EAAED,+BAA+B,CAACC,WAAW;MACxDC,WAAW,EAAEF,+BAA+B,CAACE,WAAW;MACxDC,YAAY,EAAEH,+BAA+B,CAACG,YAAY;MAC1DC,YAAY,EAAEJ,+BAA+B,CAACI,YAAY;MAC1DC,SAAS,EAAEL,+BAA+B,CAACK;IAC/C,CAAC;IACD37L,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,8BAA8B;MAClCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC68I,gCAAgC;QACnD;MACJ,CAAC;MACDj7L,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEA,eAAek7L,mBAAmBA,CAACpnJ,UAAU,EAAE;IAC3C,IAAI;MACA,MAAMnvB,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;QAC3BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBmuJ,YAAY,EAAEz2L,CAAC,CAACC,OAAO,CAACmoC,QAAQ;UAChCqM,UAAU,EAAEA;QAChB,CAAC,CAAC;QACFmK,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,OAAO;IACHqoF,gBAAgB;IAChBV,sBAAsB;IACtBE,qBAAqB;IACrBE,yBAAyB;IACzBgB,2BAA2B;IAC3BE,8BAA8B;IAC9BG,oBAAoB;IACpBE,sBAAsB;IACtBrB,oCAAoC;IACpCwB,qCAAqC;IACrCE,mCAAmC;IACnCG,gBAAgB;IAChBC,oBAAoB;IACpBQ,qBAAqB;IACrBE,0BAA0B;IAC1BE,sBAAsB;IACtBE,uBAAuB;IACvBU,0BAA0B;IAC1BE,qBAAqB;IACrBE,oBAAoB;IACpBE,sBAAsB;IACtBE,sBAAsB;IACtBE,qBAAqB;IACrBlB,0BAA0B;IAC1BE,0BAA0B;IAC1BE,wBAAwB;IACxBE,4BAA4B;IAC5Bc,wBAAwB;IACxBG,4BAA4B;IAC5BY,yBAAyB;IACzBG,6BAA6B;IAC7BE,uBAAuB;IACvBG,2BAA2B;IAC3BhB,wBAAwB;IACxBG,6BAA6B;IAC7BL,4BAA4B;IAC5BQ,iCAAiC;IACjCY,wBAAwB;IACxBG,6BAA6B;IAC7BE,wBAAwB;IACxBC,8BAA8B;IAC9BE,qBAAqB;IACrBE,0BAA0B;IAC1BQ;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AC1tCJ,SAASC,UAAUA,CAAA,EAAG;EAClB,IAAIC,MAAM,GAAG/7L,CAAC,CAAC,OAAO,CAAC,CAACo8C,QAAQ,CAAC,aAAa,CAAC;IAC3Cx6C,MAAM,GAAG5B,CAAC,CAAC,OAAO,CAAC,CAACo8C,QAAQ,CAAC,aAAa,CAAC,CAAC95C,QAAQ,CAACy5L,MAAM,CAAC;IAC5DC,UAAU,GAAGh8L,CAAC,CAAC,QAAQ,CAAC,CAACo8C,QAAQ,CAAC,iBAAiB,CAAC,CAAChE,IAAI,CAAC,iBAAiB,CAAC,CAAC91C,QAAQ,CAACV,MAAM,CAAC;IAC7FI,IAAI,GAAGhC,CAAC,CAAC,OAAO,CAAC,CAACo8C,QAAQ,CAAC,WAAW,CAAC,CAAC95C,QAAQ,CAACy5L,MAAM,CAAC;IACxDnoM,QAAQ,GAAGoM,CAAC,CAAC,QAAQ,CAAC,CAACsC,QAAQ,CAACN,IAAI,CAAC;IACrChQ,MAAM,GAAGgO,CAAC,CAAC,QAAQ,CAAC,CAACo8C,QAAQ,CAAC,iBAAiB,CAAC,CAAChE,IAAI,CAAC,QAAQ,CAAC,CAAC91C,QAAQ,CAACN,IAAI,CAAC;EAElFhC,CAAC,CAAC,eAAe,CAAC,CAACisJ,MAAM,CAAC8vC,MAAM,CAAC;EAEjCE,gBAAgB,CAAC,CAAC;AACtB;AAEA,SAASC,0BAA0BA,CAAA,EAAG;EAClCC,KAAK,GAAGlmJ,UAAU,CAAC,IAAI,CAAC;EACxBmmJ,SAAS,CAACC,oBAAoB,CAACF,KAAK,EAAEG,wBAAwB,CAAC,CAAC;AACpE;AAEA,SAASA,wBAAwBA,CAACpkJ,GAAG,EAAE;EACnC,IAAIxgD,IAAI,GAAG,EAAE;EACbsI,CAAC,CAAC,QAAQ,EAAEk4C,GAAG,CAAC,CAACf,IAAI,CAAC,YAAY;IAC9B;IACAz/C,IAAI,GAAGsI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAACzN,IAAI,CAAC,CAAC;EACjC,CAAC,CAAC;EACF,IAAIod,CAAC,GAAGjY,IAAI,CAACqb,KAAK,CAAC,GAAG,CAAC;EACvBrb,IAAI,GAAGiY,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGA,CAAC,CAAC,CAAC,CAAC;EACxB3P,CAAC,CAAC,YAAY,CAAC,CAACzN,IAAI,CAACmF,IAAI,CAAC;AAC9B;AC3BA,IAAI0kM,SAAS,GAAI,YAAW;EAExB,SAASH,gBAAgBA,CAACE,KAAK,EAAE1oM,QAAQ,EAAE;IACvCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,gBAAgB;MACpD;MACA;MACAxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC8/K,KAAK,CAAC;MAC3Bv9I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACxT,KAAK,CAACm2C,QAAQ,CAACw9I,kBAAkB,CAAC;QACjD9oM,QAAQ,CAAC,IAAI,EAAEykD,GAAG,CAAC;MACvB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAACkN,KAAK,EAAE,IAAI,CAAC;MACzB;IACJ,CAAC,CAAC;EACN;EAEA,SAAS67L,2BAA2BA,CAACL,KAAK,EAAE1oM,QAAQ,EAAE;IAClDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,2BAA2B;MAC/DxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC8/K,KAAK,CAAC;MAC3Bv9I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACxT,KAAK,CAACm2C,QAAQ,CAAC09I,6BAA6B,CAAC;QAC5DhpM,QAAQ,CAAC,IAAI,EAAEykD,GAAG,CAAC;MACvB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAACkN,KAAK,EAAE,IAAI,CAAC;MACzB;IACJ,CAAC,CAAC;EACN;EAEA,SAAS+7L,gBAAgBA,CAAC/nM,IAAI,EAAElB,QAAQ,EAAE;IACtCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,gBAAgB;MACpD;MACAxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClC49I,MAAM,GAAGvgL,IAAI,CAACxT,KAAK,CAACsvC,GAAG,CAAC;QACxBzkD,QAAQ,CAACkpM,MAAM,CAAC;MACpB,CAAC;MACDh8L,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAACkN,KAAK,EAAE,IAAI,CAAC;MACzB;IACJ,CAAC,CAAC;EACN;EAEA,SAASi8L,iBAAiBA,CAACjoM,IAAI,EAAElB,QAAQ,EAAE;IACvCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,iBAAiB;MACrD;MACAxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClCtrD,QAAQ,CAAC,IAAI,EAAEykD,GAAG,CAAC;MACvB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAACkN,KAAK,EAAE,IAAI,CAAC;MACzB;IACJ,CAAC,CAAC;EACN;EAEA,SAAS07L,oBAAoBA,CAACF,KAAK,EAAE1oM,QAAQ,EAAE;IAC3CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,oBAAoB;MACxDxoD,IAAI,EAAE,YAAY,GAAGwnM,KAAK,GAAG,IAAI;MACjCv9I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClCtrD,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAACkN,KAAK,EAAE,IAAI,CAAC;MACzB;IACJ,CAAC,CAAC;EACN;EAEH,OAAO;IACAs7L,gBAAgB;IAChBO,2BAA2B;IAC3BE,gBAAgB;IAChBE,iBAAiB;IACjBP;EACP,CAAC;AACF,CAAC,CAAE,CAAC;ACxGJ,MAAM/6L,SAAS,GAAI,YAAY;EAC3B,SAASu7L,eAAeA,CAACp6L,OAAO,EAAE;IAC9Bq6L,mBAAmB,CAACC,WAAW,CAAC;MAAEpqM,IAAI,EAAE;IAAS,CAAC,CAAC;EACvD;EAEA,SAAS4O,UAAUA,CAACkB,OAAO,EAAE;IACzBq6L,mBAAmB,CAACC,WAAW,CAAC;MAAEpqM,IAAI,EAAE;IAAS,CAAC,CAAC;EACvD;EAEA,OAAO;IACHkqM,eAAe;IACft7L;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AAEJ,MAAMu7L,mBAAmB,GAAG,IAAIE,gBAAgB,CAAC,qBAAqB,CAAC;AAEvE39J,YAAY,CAACG,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC;AAE3C,IAAIy9J,aAAa,GAAG,IAAI;AAExB,SAASC,UAAUA,CAAA,EAAG;EACpB,IAAIC,cAAc,GAAG,KAAK;EAC1B,IAAIC,QAAQ,GAAG,CAAC;EAChB,IAAIC,cAAc,GAAGhmJ,WAAW,CAACimJ,cAAc,EAAE,KAAK,CAAC;EAEvD,SAASA,cAAcA,CAAA,EAAG;IACxB,IAAIC,SAAS,GAAG/jL,QAAQ,CAACxZ,CAAC,CAACC,OAAO,CAACgvC,wBAAwB,CAAC;IAC5DmuJ,QAAQ,EAAE;IACV,IAAIA,QAAQ,KAAKG,SAAS,GAAG,CAAC,EAAE;MAC9B57L,KAAK,CAAC9S,IAAI,CAAC2uM,WAAW,CAAC;MACvBL,cAAc,GAAG,IAAI;IACvB;IACA,IAAIC,QAAQ,KAAKG,SAAS,EAAE3lJ,eAAe,CAAC,EAAE,CAAC;EACjD;EAEA,IAAI6lJ,aAAa,GAAG,wHAAwH;EAC5I,IAAID,WAAW,GAAG77L,KAAK,CAAC1P,KAAK,CAAC,CAAC,CAAC,CAAC;EACjCurM,WAAW,CAACzuM,SAAS,IAAI0uM,aAAa;;EAEtC;EACA7rM,QAAQ,CAACG,gBAAgB,CAAC,WAAW,EAAE,MAAM;IAC3C,IAAIorM,cAAc,EAAE;MAClBx7L,KAAK,CAAC/S,IAAI,CAAC4uM,WAAW,CAAC;MACvBL,cAAc,GAAG,KAAK;IACxB;IACAC,QAAQ,GAAG,CAAC;IACZziE,aAAa,CAAC0iE,cAAc,CAAC;IAC7BA,cAAc,GAAGhmJ,WAAW,CAACimJ,cAAc,EAAE,KAAK,CAAC;;IAEnD;IACAR,mBAAmB,CAACC,WAAW,CAAC;MAAEpqM,IAAI,EAAE;IAAY,CAAC,CAAC;EACxD,CAAC,CAAC;;EAEF;EACAf,QAAQ,CAACG,gBAAgB,CAAC,SAAS,EAAE,MAAM;IACzC,IAAIorM,cAAc,EAAE;MAClBx7L,KAAK,CAAC/S,IAAI,CAAC4uM,WAAW,CAAC;MACvBL,cAAc,GAAG,KAAK;IACxB;IACAC,QAAQ,GAAG,CAAC;IACZziE,aAAa,CAAC0iE,cAAc,CAAC;IAC7BA,cAAc,GAAGhmJ,WAAW,CAACimJ,cAAc,EAAE,KAAK,CAAC;;IAEnD;IACAR,mBAAmB,CAACC,WAAW,CAAC;MAAEpqM,IAAI,EAAE;IAAW,CAAC,CAAC;EACvD,CAAC,CAAC;EAEFmqM,mBAAmB,CAAC/qM,gBAAgB,CAAC,SAAS,EAAE,UAAUxC,KAAK,EAAE;IAC/D,MAAMkT,OAAO,GAAGlT,KAAK,CAACoF,IAAI;IAE1B,IAAI8N,OAAO,CAAC9P,IAAI,KAAK,WAAW,IAAI8P,OAAO,CAAC9P,IAAI,KAAK,UAAU,EAAE;MAC/D;MACAyqM,QAAQ,GAAG,CAAC;IACd,CAAC,MAAM,IAAI36L,OAAO,CAAC9P,IAAI,KAAK,aAAa,EAAE;MACzC+qM,SAAS,CAAC19L,CAAC,CAAC6kG,SAAS,CAAC;MACtBjtD,eAAe,CAAC,EAAE,CAAC;IACrB,CAAC,MAAM,IAAIn1C,OAAO,CAAC9P,IAAI,KAAK,QAAQ,EAAE;MACpC,MAAMiF,OAAO,GAAGhG,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC;MAEvD,IAAI,CAAC+C,OAAO,EAAE;QACZ,MAAM+lM,YAAY,GAAGh8L,KAAK,CAAC1P,KAAK,CAAC;UAC/BG,EAAE,EAAE,cAAc;UAClBwP,MAAM,EAAE,YAAY;UACpBO,KAAK,EAAE;QACT,CAAC,CAAC;QAEF,MAAMM,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QAC3CsQ,OAAO,CAAChU,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;QAChC8T,OAAO,CAACrM,SAAS,GACf,yMAAyM;QAE3M,MAAM+nC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;QAChC,MAAMsrK,WAAW,GAAGjoK,MAAM,CAACC,KAAK,CAAC;UAC/BM,IAAI,EAAE,UAAU;UAChBG,KAAK,EAAE,WAAW;UAClBC,IAAI,EAAE,WAAW;UACjBc,QAAQ,EAAEA,CAAA,KAAM;YACdkO,KAAK,CAAC/S,IAAI,CAAC+uM,YAAY,CAAC;UAC1B;QACF,CAAC,CAAC;QAEFx/J,OAAO,CAAC9uC,WAAW,CAAC4qK,WAAW,CAAC;QAChC0jC,YAAY,CAACtuM,WAAW,CAACoT,OAAO,CAAC;QACjCk7L,YAAY,CAACtuM,WAAW,CAAC8uC,OAAO,CAAC;QAEjCx8B,KAAK,CAAC9S,IAAI,CAAC8uM,YAAY,CAAC;MAC1B;IACF;EACF,CAAC,CAAC;AACJ;AAEA,SAASC,uBAAuBA,CAAA,EAAG;EAC/BF,SAAS,CAAC19L,CAAC,CAAC6kG,SAAS,CAAC;EACtBjtD,eAAe,CAAC,EAAE,CAAC;;EAEnB;EACAklJ,mBAAmB,CAACC,WAAW,CAAC;IAAEpqM,IAAI,EAAE;EAAc,CAAC,CAAC;AAC5D;ACvHA,MAAMwzD,OAAO,GAAG,CAAC,MAAM;EACnB,IAAI03I,qBAAqB;EACzB,IAAIC,mBAAmB;EAEvB,eAAeC,gBAAgBA,CAAC5d,MAAM,EAAE;IACtC;IACE0d,qBAAqB,GAAG,MAAMG,WAAW,CAACC,0BAA0B,CAAC;MACnEz/J,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBk3G,YAAY,EAAE2gC;IAChB,CAAC,CAAC;IAEF,IAAI0d,qBAAqB,CAAC,CAAC,CAAC,CAACK,YAAY,KAAK,EAAE,EAAE;MAChD,MAAMC,mBAAmB,GAAG;QAC1B3/J,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB81J,SAAS,EAAEP,qBAAqB,CAAC,CAAC,CAAC,CAACO,SAAS;QAC7CC,YAAY,EAAEle;MAChB,CAAC;MAED,MAAM6d,WAAW,CAACM,yBAAyB,CAACH,mBAAmB,CAAC;IAClE;EACF;EAEA,SAASI,mBAAmBA,CAACpe,MAAM,EAAE;IACnC;IACA,MAAMqe,eAAe,GAAG,IAAInpE,WAAW,CAAC,aAAa,EAAE;MACnD5Q,MAAM,EAAE;QACJ9vH,IAAI,EAAEwrL;MACV;IACJ,CAAC,CAAC;IAEFvuL,QAAQ,CAACmpB,aAAa,CAACyjL,eAAe,CAAC;EACzC;EAEA,eAAeC,gBAAgBA,CAAC5+J,GAAG,EAAEsgJ,MAAM,EAAEue,oBAAoB,EAAE;IACjE;IACA,MAAMC,iBAAiB,GAAG,MAAM9d,kBAAkB,CAAC+d,qBAAqB,CAAC;MACrEpgK,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBk3G,YAAY,EAAE2gC;IAChB,CAAC,CAAC;;IAEJ;IACA,IAAIwe,iBAAiB,CAACzvM,MAAM,KAAK,CAAC,EAAE;MAChC2wC,GAAG,CAACpxC,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACjC;;IAEE;IACA,KAAK,IAAImL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6kM,iBAAiB,CAACzvM,MAAM,EAAE4K,CAAC,EAAE,EAAE;MACjD,IAAI6kM,iBAAiB,CAAC7kM,CAAC,CAAC,CAAC+kM,aAAa,CAACx7F,QAAQ,CAACq7F,oBAAoB,CAAC,IAAIC,iBAAiB,CAAC7kM,CAAC,CAAC,CAACglM,SAAS,KAAK,EAAE,EAAE;QAC9Gj/J,GAAG,CAACpxC,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QAChC;MACF,CAAC,MAAM;QACLmxC,GAAG,CAACpxC,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC/B;IACF;EACJ;EAEA,SAASowM,iBAAiBA,CAAA,EAAG;IAC3B,MAAMt8L,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3CsQ,OAAO,CAAChU,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC8T,OAAO,CAACrM,SAAS,GACf,0DAA0D;IAC5D,OAAOqM,OAAO;EAChB;EAEA,eAAeu8L,qBAAqBA,CAAA,EAAG;IACrCC,YAAY,CAACvsM,KAAK,CAACoK,OAAO,GAAG,MAAM;IACnCmG,WAAW,CAACpU,IAAI,CAAC,YAAY,CAAC;;IAE9B;IACA,MAAMqwM,UAAU,GAAG,MAAMlB,WAAW,CAACmB,mBAAmB,CAACrB,mBAAmB,CAAC;IAE7E,IAAIoB,UAAU,KAAK,SAAS,EAAE;MAC5B/mJ,OAAO,GAAG,IAAI;IAChB,CAAC,MAAM;MACLA,OAAO,GAAG,KAAK;IACjB;IAEA,MAAMinJ,gBAAgB,GAAGxtM,QAAQ,CAACC,aAAa,CAAC,mBAAmB,CAAC;IACpEutM,gBAAgB,CAAC1sM,KAAK,CAACoK,OAAO,GAAG,MAAM;;IAEvC;IACA,IAAIq7C,OAAO,EAAE;MACXl1C,WAAW,CAACI,OAAO,CAAC,OAAO,CAAC;MAC5ByW,UAAU,CAAC,MAAM;QACf,MAAMulL,SAAS,GAAGztM,QAAQ,CAACC,aAAa,CAAC,sBAAsB,CAAC;QAChEiP,GAAG,CAACiB,YAAY,CAACf,WAAW,CAACq+L,SAAS,CAAC;QACvC19L,KAAK,CAAC/S,IAAI,CAACqwM,YAAY,CAAC;MAC1B,CAAC,EAAE,GAAG,CAAC;IACT,CAAC,MAAM;MACLh8L,WAAW,CAACK,MAAM,CAAC,mCAAmC,CAAC;MACvDwW,UAAU,CAAC,MAAM;QACf,MAAMwlL,SAAS,GAAG1tM,QAAQ,CAACC,aAAa,CAAC,gBAAgB,CAAC;QAC1DiP,GAAG,CAACiB,YAAY,CAACf,WAAW,CAACs+L,SAAS,CAAC;QACvCL,YAAY,CAACvsM,KAAK,CAACgR,cAAc,CAAC,SAAS,CAAC;MAC9C,CAAC,EAAE,IAAI,CAAC;IACV;EACF;EAEA,SAAS67L,gBAAgBA,CAAA,EAAG;IAC1BN,YAAY,GAAGt9L,KAAK,CAAC1P,KAAK,CAAC;MACzBG,EAAE,EAAE,oBAAoB;MACxBwP,MAAM,EAAE;IACV,CAAC,CAAC;IAEF,MAAMa,OAAO,GAAGs8L,iBAAiB,CAAC,CAAC;;IAEnC;IACA;IACA,MAAM5gK,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,MAAMsrK,WAAW,GAAGjoK,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,UAAU;MAChBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACd;QACAurM,qBAAqB,CAAC,CAAC;MACzB;IACF,CAAC,CAAC;IACF,MAAM1+J,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACdkO,KAAK,CAAC/S,IAAI,CAACqwM,YAAY,CAAC;MAC1B;IACF,CAAC,CAAC;IAEF9gK,OAAO,CAAC9uC,WAAW,CAAC4qK,WAAW,CAAC;IAChC97H,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAC9B2+J,YAAY,CAAC5vM,WAAW,CAACoT,OAAO,CAAC;IACjCw8L,YAAY,CAAC5vM,WAAW,CAAC8uC,OAAO,CAAC;IAEjCx8B,KAAK,CAAC9S,IAAI,CAACowM,YAAY,CAAC;EAC1B;EAEA,SAASO,6BAA6BA,CAACrf,MAAM,EAAEsf,cAAc,EAAE;IACzD,MAAMC,wBAAwB,GAC9B1tM,MAAM,CAACC,KAAK,CAAC;MACTG,EAAE,EAAE,eAAe;MACnBG,IAAI,EAAE,sBAAsB;MAC5BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBqqM,mBAAmB,GAAG;UACpBt/J,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB+1J,YAAY,EAAEle,MAAM;UACpBlmF,MAAM,EAAEj6F,CAAC,CAACC,OAAO,CAACmoC,QAAQ;UAC1Bu3J,SAAS,EAAE,CAAC;UACZC,UAAU,EAAE,OAAO;UACnBC,GAAG,EAAE,IAAI;UACT15I,OAAO,EAAE;QACX,CAAC,EAEDo5I,gBAAgB,CAACzB,mBAAmB,CAAC;MACrC;IACF,CAAC,CAAC;IAEF4B,wBAAwB,CAACjxM,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAElD,OAAO+wM,wBAAwB;EACzC;EAEF,OAAO;IACH3B,gBAAgB;IAAC;IACjByB,6BAA6B;IAC7Bf,gBAAgB;IAChBF,mBAAmB;IACnBS,qBAAqB;EACvB,CAAC;AACH,CAAC,EAAE,CAAC;AC1KR,IAAIhB,WAAW,GAAI,YAAY;EAC7B;;EAEA,eAAemB,mBAAmBA,CAACtyF,YAAY,EAAE;IAC/C;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QAAC;QACboN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;QACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,OAAO,MAAMnqD,IAAI,CAACmrM,yBAAyB,CAAC,CAAC;IAC/C,CAAC,CAAC,OAAOn/L,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe29L,yBAAyBA,CAACzxF,YAAY,EAAE;IACrD;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6BAA6B;QAC/BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,OAAO,MAAMnqD,IAAI,CAACorM,+BAA+B;IACnD,CAAC,CAAC,OAAOp/L,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB;EACF;EAEA,eAAes9L,0BAA0BA,CAACpxF,YAAY,EAAE;IACtD;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,8BAA8B;QAChCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,OAAOnqD,IAAI,CAACqrM,gCAAgC;IAC9C,CAAC,CAAC,OAAOr/L,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB;EACF;EAEA,OAAO;IACLw+L,mBAAmB;IACnBb,yBAAyB;IACzBL;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC3GJ,MAAMgC,YAAY,GAAG,CAAC,MAAM;EAExB,IAAIj/B,iBAAiB;EACrB,IAAIC,iBAAiB;;EAErB;EACA,IAAIC,UAAU;EACd,IAAIC,YAAY,GAAG,EAAE;EACrB,IAAIC,gBAAgB,GAAG,EAAE;EACzB,IAAIC,gBAAgB,GAAG,EAAE;EACzB,IAAIC,YAAY,GAAG,EAAE;EACrB,IAAIC,aAAa,GAAG,EAAE;EACtB,IAAIC,eAAe,GAAG,EAAE;;EAExB;EACA,IAAIC,aAAa;EACjB,IAAIxvD,aAAa;EACjB,IAAIE,aAAa;EACjB,IAAIE,SAAS;EACb,IAAIE,UAAU;EACd,IAAImoC,YAAY;EAEhB,IAAIxY,OAAO;EACX,IAAI5hG,SAAS;EAEb,eAAexuC,IAAIA,CAAA,EAAG;IAElBgP,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBnP,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC9I,OAAO,CAACgF,CAAC,IAAIA,CAAC,CAACzF,MAAM,CAAC,CAAC,CAAC;IAItE,IAAImqB,SAAS,GAAGjnB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C;IACA,IAAIqxI,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC6uK,iBAAiB,GAAGhvK,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,kBAAkB;MACxBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjB;MACAM,UAAU,EAAE,CAAC+M,CAAC,CAACC,OAAO,CAACuyC,SAAS,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC;MAClF/+C,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAAEouK,kBAAkB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;MAAC;IAC7D,CAAC,CAAC;IAEFZ,iBAAiB,GAAGjvK,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,yBAAyB;MAC/BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjB;MACAM,UAAU,EAAE,CAAC,cAAc,CAAC;MAC5BQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAAEpC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MAAC;IACjD,CAAC,CAAC;IAEFn+B,iBAAiB,GAAG,MAAMC,mBAAmB,CAAC,CAAC;IAE/CnpJ,SAAS,CAACxpB,WAAW,CAAC2xK,iBAAiB,CAAC;IACxCnoJ,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAC7B3qH,SAAS,CAACxpB,WAAW,CAAC0yK,iBAAiB,CAAC;IACxClpJ,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAC7B3qH,SAAS,CAACxpB,WAAW,CAAC4xK,iBAAiB,CAAC;IAGxCngK,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACwpB,SAAS,CAAC;EAC3C;;EAEA;EACA,eAAempJ,mBAAmBA,CAAA,EAAG;IACjC,MAAMnpE,YAAY,GAAG;MACjBjzF,KAAK,EAAE,KAAK;MACZZ,OAAO,EAAE,mBAAmB;MAC5BgB,cAAc,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC;MACpEM,OAAO,EAAE;MACT;IAEJ,CAAC;;IAED;IACA;IACA;;IAGA,MAAM;MAAE27J,wBAAwB,EAAEC;IAAgB,CAAC,GAAG,MAAMC,OAAO,CAACC,uBAAuB,CAAC,CAAC;IAE7F,IAAIC,uBAAuB,GAAGH,eAAe,CAAC9kK,MAAM,CAAE+U,CAAC,IAAKA,CAAC,CAAC+uJ,UAAU,IAAI,CAAC,CAAC;IAE9E,IAAI9hE,SAAS,GAAGijE,uBAAuB,CAAC1pK,GAAG,CAAE2pK,QAAQ,KAAM;MACvDp7J,MAAM,EAAE,CAACo7J,QAAQ,CAACnB,YAAY,EAAEmB,QAAQ,CAACpwD,QAAQ,GAAG,GAAG,GAAGowD,QAAQ,CAAClwD,QAAQ,EAAEkwD,QAAQ,CAAChwD,IAAI,EAAEgwD,QAAQ,CAACljI,KAAK,EAAEkjI,QAAQ,CAACzuB,OAAO,CAAC;MAC7HxgJ,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,YAAY;QAAEC,KAAK,EAAE8uK,QAAQ,CAACpB;MAAW,CAAC,CAAC;MAC/D56J,OAAO,EAAIg8J,QAAQ,CAAC69B,sBAAsB,IAAI,GAAG,IAAKngM,CAAC,CAACC,OAAO,CAACsyC,SAAS,GAAI,GAAG//C,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG;MACvGJ,EAAE,EAAEkwK,QAAQ,CAACpB,UAAU;MACvB75J,eAAe,EAAElT,CAAC,IAAI;QAClBA,CAAC,CAAC8I,eAAe,CAAC,CAAC;QACnB;QACA,IAAI;UACA,IAAI4mK,QAAQ,GAAGjyK,QAAQ,CAACiD,cAAc,CAACytK,QAAQ,CAACpB,UAAU,CAAC;UAC3DhhB,kBAAkB,CAACoiB,QAAQ,CAACpB,UAAU,EAAE2C,QAAQ,CAAC;UACjD;QACJ,CAAC,CAAC,OAAOvjB,GAAG,EAAE;UACV3jJ,OAAO,CAACgE,KAAK,CAAC,SAAS,EAAE2/I,GAAG,CAAC;QACjC;MACJ,CAAC;MACDv5I,OAAO,EAAG5S,CAAC,IAAK;QACZ,IAAI6L,CAAC,CAACC,OAAO,CAACwyC,SAAS,EAAE;UACrB0vH,OAAO,CAACI,WAAW,CAACD,QAAQ,CAACpB,UAAU,EAAE,UAAUpnE,OAAO,EAAE;YACxD+nE,kBAAkB,CAAC/nE,OAAO,EAAE,QAAQ,CAAC;UACzC,CAAC,CAAC;QACN;MACJ;IAEJ,CAAC,CAAC,CAAC;IAGH,MAAMoX,MAAM,GAAGpsG,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAExC;IACA,MAAMzwF,OAAO,GAAG8oG,MAAM,CAACj5G,gBAAgB,CAAC,aAAa,CAAC;IACtDmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAEhD;IACAiS,KAAK,CAACqD,iBAAiB,CAAC+oG,MAAM,CAAC;IAE/BpsG,KAAK,CAAC9V,QAAQ,CAACkiH,MAAM,EAAE9R,SAAS,CAAC;IAEjC,OAAO8R,MAAM;EACjB;;EAGA;EACA,eAAe2wD,kBAAkBA,CAACW,YAAY,EAAEC,QAAQ,EAAE;IAEtD,IAAID,YAAY,IAAI9xJ,MAAM,CAAC8B,IAAI,CAACgwJ,YAAY,CAAC,CAACtzK,MAAM,KAAK,CAAC,EAAE;MAExDgyK,UAAU,GAAGsB,YAAY,CAAC,CAAC,CAAC,CAACtB,UAAU;MACvCC,YAAY,GAAGqB,YAAY,CAAC,CAAC,CAAC,CAACrB,YAAY;MAC3CC,gBAAgB,GAAGoB,YAAY,CAAC,CAAC,CAAC,CAACtwD,QAAQ;MAC3CmvD,gBAAgB,GAAGmB,YAAY,CAAC,CAAC,CAAC,CAACpwD,QAAQ;MAC3CkvD,YAAY,GAAGkB,YAAY,CAAC,CAAC,CAAC,CAAClwD,IAAI;MACnCivD,aAAa,GAAGiB,YAAY,CAAC,CAAC,CAAC,CAACpjI,KAAK;MACrCoiI,eAAe,GAAGgB,YAAY,CAAC,CAAC,CAAC,CAAC3uB,OAAO;IAE7C,CAAC,MAAM;MAEHqtB,UAAU,GAAG,EAAE;MACfC,YAAY,GAAG,EAAE;MACjBC,gBAAgB,GAAG,EAAE;MACrBC,gBAAgB,GAAG,EAAE;MACrBC,YAAY,GAAG,EAAE;MACjBC,aAAa,GAAG,EAAE;MAClBC,eAAe,GAAG,EAAE;IAExB;IAEA,IAAIqB,iBAAiB,GAAGlhK,KAAK,CAAC1P,KAAK,CAAC;MAChC2P,MAAM,EAAE,oBAAoB;MAC5BO,KAAK,EAAE,IAAI;MACX/P,EAAE,EAAE;IACR,CAAC,CAAC;IAEFqvK,aAAa,GAAGhsK,KAAK,CAACxD,KAAK,CAAC;MACxBG,EAAE,EAAE,eAAe;MACnB2B,KAAK,EAAE,UAAU;MACjB;MACAP,KAAK,EAAG2tK,YAAY,GAAIA,YAAY,GAAG;IAC3C,CAAC,CAAC;IAEFlvD,aAAa,GAAGx8G,KAAK,CAACxD,KAAK,CAAC;MACxB8B,KAAK,EAAE,SAAS;MAChB;MACAP,KAAK,EAAG4tK,gBAAgB,GAAIA,gBAAgB,GAAG;IAEnD,CAAC,CAAC;IAEFjvD,aAAa,GAAG18G,KAAK,CAACxD,KAAK,CAAC;MACxB8B,KAAK,EAAE,WAAW;MAClB;MACAP,KAAK,EAAG6tK,gBAAgB,GAAIA,gBAAgB,GAAG;IAEnD,CAAC,CAAC;IAEFhvD,SAAS,GAAG58G,KAAK,CAACxD,KAAK,CAAC;MACpB8B,KAAK,EAAE,MAAM;MACb;MACAP,KAAK,EAAG8tK,YAAY,GAAIA,YAAY,GAAG;IAC3C,CAAC,CAAC;IAEF/uD,UAAU,GAAG98G,KAAK,CAACxD,KAAK,CAAC;MACrB8B,KAAK,EAAE,OAAO;MACd;MACAP,KAAK,EAAG+tK,aAAa,GAAIA,aAAa,GAAG;IAE7C,CAAC,CAAC;IAEF7mB,YAAY,GAAGjlJ,KAAK,CAACxD,KAAK,CAAC;MACvB8B,KAAK,EAAE,UAAU;MACjB;MACAP,KAAK,EAAGguK,eAAe,GAAIA,eAAe,GAAG;IAEjD,CAAC,CAAC;IAEFt/B,OAAO,GAAGlwI,MAAM,CAACC,KAAK,CAAC;MACnBG,EAAE,EAAE,oBAAoB;MACxBG,IAAI,EAAE,MAAM;MACZI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtB;MACAQ,QAAQ,EAAEA,CAAA,KAAMqvK,wBAAwB,CAACL,QAAQ;IACrD,CAAC,CAAC;IACF;;IAEAniI,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MACrBG,EAAE,EAAE,sBAAsB;MAC1BG,IAAI,EAAE,QAAQ;MACdI,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMkO,KAAK,CAAC/S,IAAI,CAACi0K,iBAAiB;IAChD,CAAC,CAAC;IAEF,IAAI1kI,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC;IAC5B/jG,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAC9B;IACAuiI,iBAAiB,CAACxzK,WAAW,CAACoyK,aAAa,CAAC;IAC5CoB,iBAAiB,CAACxzK,WAAW,CAAC4iH,aAAa,CAAC;IAC5C4wD,iBAAiB,CAACxzK,WAAW,CAAC8iH,aAAa,CAAC;IAC5C0wD,iBAAiB,CAACxzK,WAAW,CAACgjH,SAAS,CAAC;IACxCwwD,iBAAiB,CAACxzK,WAAW,CAACkjH,UAAU,CAAC;IACzCswD,iBAAiB,CAACxzK,WAAW,CAACqrJ,YAAY,CAAC;IAC3CmoB,iBAAiB,CAACxzK,WAAW,CAAC8uC,OAAO,CAAC;IAEtCy8G,kBAAkB,CAAC,CAAC;IAEpBj5I,KAAK,CAAC9S,IAAI,CAACg0K,iBAAiB,CAAC;IAE7BjkD,mBAAmB,CAAC,CAAC;EAEzB;EAEA,SAASg8B,kBAAkBA,CAAA,EAAG;IAE1B6mB,aAAa,CAAC1vK,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C4xK,YAAY,GAAG5xK,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC6mB,IAAI,CAAC,CAAC;MACxCukG,mBAAmB,CAAC,CAAC;IAEzB,CAAC,CAAC;IAEF3M,aAAa,CAAClgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C6xK,gBAAgB,GAAG7xK,KAAK,CAACC,MAAM,CAACgE,KAAK;IAEzC,CAAC,CAAC;IAEF2+G,aAAa,CAACpgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C8xK,gBAAgB,GAAG9xK,KAAK,CAACC,MAAM,CAACgE,KAAK;IAEzC,CAAC,CAAC;IAEF6+G,SAAS,CAACtgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzC+xK,YAAY,GAAG/xK,KAAK,CAACC,MAAM,CAACgE,KAAK;IAErC,CAAC,CAAC;IAEF++G,UAAU,CAACxgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1CgyK,aAAa,GAAGhyK,KAAK,CAACC,MAAM,CAACgE,KAAK;IAEtC,CAAC,CAAC;IAEFknJ,YAAY,CAAC3oJ,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5CiyK,eAAe,GAAGjyK,KAAK,CAACC,MAAM,CAACgE,KAAK;IAExC,CAAC,CAAC;EAEN;EAEA,SAASorH,mBAAmBA,CAAA,EAAG;IAC3B,IAAImkD,YAAY,GAAGtB,aAAa,CAAC5vK,aAAa,CAAC,gBAAgB,CAAC;IAEhE,IAAIkxK,YAAY,CAACvvK,KAAK,CAAC6mB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;MAClConJ,aAAa,CAAChzK,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACxC,CAAC,MAAM;MACH8yK,aAAa,CAAChzK,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC3C;IAEAosJ,YAAY,CAAC,CAAC;EAClB;EAEA,SAASA,YAAYA,CAAA,EAAG;IACpB,IAAI32C,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxBgzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACjC;IACJ,CAAC,MAAM;MACHuzI,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC;IAEA,IAAIsR,CAAC,CAACC,OAAO,CAACuyC,SAAS,IAAIxyC,CAAC,CAACC,OAAO,CAACwyC,SAAS,EAAE;MAC5CyvF,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC,CAAC,MAAM;MACHwzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC;EACJ;;EAEA;EACA,eAAem0K,wBAAwBA,CAACL,QAAQ,EAAE;IAE9C,IAAIA,QAAQ,IAAI,QAAQ,EAAE;MAEtB,MAAMn9I,MAAM,GAAG,MAAM68I,OAAO,CAACa,mBAAmB,CAAC7B,YAAY,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,aAAa,EAAEC,eAAe,CAAC;MAChJ,MAAM;QAAEyB;MAAqB,CAAC,GAAG39I,MAAM;MACvC,IAAI49I,UAAU,GAAGD,oBAAoB,CAAC/B,UAAU;MAEhD,IAAIgC,UAAU,IAAI,GAAG,EAAE;QACnBjlI,YAAY,CAAC,CAAC;MAClB,CAAC,MAAM;QACHt8B,KAAK,CAAC/S,IAAI,CAACi0K,iBAAiB,CAAC;QAC7BrgK,cAAc,CAAC3T,IAAI,CAAC,CAAC;QACrBirB,UAAU,CAAC,YAAY;UACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrBqxM,YAAY,CAACnuM,IAAI,CAAC,CAAC;QACvB,CAAC,EAAE,IAAI,CAAC;MACZ;IAEJ,CAAC,MAAM;MAAG;MACN6P,KAAK,CAAC/S,IAAI,CAACi0K,iBAAiB,CAAC;MAC7B,MAAMv9I,MAAM,GAAG,MAAM68I,OAAO,CAACwB,mBAAmB,CAACzC,UAAU,EAAEC,YAAY,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,aAAa,EAAEC,eAAe,CAAC;MAC5J,MAAM;QAAEoC,oBAAoB,EAAE;UAAEV;QAAW;MAAE,CAAC,GAAG59I,MAAM;MACvD9iB,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrBirB,UAAU,CAAC,YAAY;QACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrBqxM,YAAY,CAACnuM,IAAI,CAAC,CAAC;MACvB,CAAC,EAAE,IAAI,CAAC;IACZ;EACJ;EAEA,SAASouJ,kBAAkBA,CAACghB,UAAU,EAAE2C,QAAQ,EAAE;IAC9C,IAAIC,WAAW,GAAGniK,KAAK,CAAC1P,KAAK,CAAC;MAC1BG,EAAE,EAAE,oBAAoB;MACxBa,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,IAAIkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;QACvB,IAAIx+I,MAAM,GAAG,MAAM68I,OAAO,CAAC4B,mBAAmB,CAAC7C,UAAU,CAAC;QAC1D,IAAI57I,MAAM,CAAC0+I,oBAAoB,KAAK,GAAG,EAAE;UACrCH,QAAQ,CAACn1K,MAAM,CAAC,CAAC;QACrB;MACJ;IACJ,CAAC,CAAC;IACF,IAAI4tJ,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,OAAO;MACboB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;MAC3B;IACJ,CAAC,CAAC;IACF3lI,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B,IAAIj+G,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,gDAAgD;IAC3E+0K,WAAW,CAACz0K,WAAW,CAACgvC,cAAc,CAAC;IACvCylI,WAAW,CAACz0K,WAAW,CAAC8uC,OAAO,CAAC;IAChCx8B,KAAK,CAAC9S,IAAI,CAACi1K,WAAW,CAAC;EAC3B;EAEA,SAAS7lI,YAAYA,CAAA,EAAG;IACpB,IAAIx8B,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACpBG,EAAE,EAAE,cAAc;MAClBa,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,IAAIgxK,KAAK,GAAGjyK,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB3C,OAAO,CAACjQ,IAAI,CAAC,CAAC;MAClB;IACJ,CAAC,CAAC;IACF,IAAIsvC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC40K,KAAK,CAAC;IAE1B,IAAI5lI,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,+BAA+B;IAC1D0S,KAAK,CAACpS,WAAW,CAACgvC,cAAc,CAAC;IACjC58B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACrB;EAEA,OAAO;IACH3P;EAEJ,CAAC;AACL,CAAC,EAAE,CAAC;ACtZJ,MAAMT,GAAG,GAAG,CAAC,MAAM;EACf;EACA,IAAI+uM,gBAAgB;EACpB,IAAIngF,WAAW;EACf,MAAMogF,kBAAkB,GAAG,YAAY;EAEvC,IAAIC,gBAAgB;EACpB,IAAIC,cAAc;EAClB,IAAIC,0BAA0B;EAC9B,IAAIC,uBAAuB;EAC3B,IAAIC,kBAAkB;EACtB,IAAI9kG,SAAS;EACb,IAAI+kG,WAAW;EACf,IAAIC,aAAa;EACjB,IAAIC,eAAe;EACnB,IAAIC,eAAe;EACnB,IAAIn+D,WAAW;EACf,IAAIC,eAAe;EACnB,IAAI9mC,WAAW;EACf,IAAIilG,iBAAiB;;EAErB;EACA;EACA,IAAInuC,gBAAgB;EACpB,IAAI72D,iBAAiB;EACrB,IAAIilG,wBAAwB;;EAE5B;EACA,IAAIC,qBAAqB;EACzB,IAAIC,mBAAmB;EACvB,IAAIC,2BAA2B;EAC/B,IAAIC,yBAAyB;EAE7B,IAAIC,gBAAgB;EACpB,IAAIC,gBAAgB;EACpB,IAAIC,wBAAwB;EAC5B,IAAIC,8BAA8B;EAClC,IAAItlG,YAAY;EAChB,IAAIulG,kBAAkB;EACtB,IAAIC,aAAa;EACjB,IAAIC,WAAW;EAEf,IAAIxjK,OAAO;EACX,IAAIyjK,uBAAuB;EAC3B,IAAIC,qBAAqB;EACzB,IAAIC,eAAe;EACnB,IAAIC,cAAc;EAClB,IAAIC,sBAAsB;;EAE1B;EACA,MAAMC,gBAAgB,GAAG,kBAAkB;EAC3C,MAAMC,2BAA2B,GAAG,qBAAqB;EAEzD,IAAIC,wBAAwB;EAC5B,IAAIC,uBAAuB;EAC3B,IAAIC,0BAA0B;EAC9B,IAAIC,yBAAyB;EAC7B,IAAIC,+BAA+B;EACnC,IAAIC,2BAA2B;EAC/B,IAAIC,0BAA0B;EAC9B,IAAIC,2BAA2B;EAC/B,IAAIC,uBAAuB;EAC3B,IAAIC,sBAAsB;EAC1B,IAAIC,yBAAyB;EAE7B,IAAIl1D,mBAAmB;EACvB;;EAEA,IAAIm1D,sBAAsB;;EAE1B;EACA,eAAe/yM,oBAAoBA,CAACP,MAAM,EAAE;IACxC,IAAIiuG,YAAY,GAAGjuG,MAAM,CAACC,OAAO,CAACC,SAAS;IAE3C,QAAQ+tG,YAAY;MAChB,KAAK,gBAAgB;QAAE;UACnB1B,iBAAiB,GAAG2B,OAAO,CAACC,kBAAkB,CAAC,CAAC;UAChD,MAAMuiG,cAAc,CAAC,CAAC;UACtBp/L,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrB;UACA;QACJ;MACA,KAAK,kBAAkB;QAAE;UACrBloB,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrBnqB,OAAO,CAAC,MAAM,CAAC;UACf;QACJ;IACJ;EACJ;;EAEA;EACA,eAAeqhM,cAAcA,CAAA,EAAG;IAC5Bp/L,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;IACvB,IAAI,CAAC73B,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC,EAAE6rG,OAAO,CAACI,cAAc,CAAC,CAAC;IAEzEC,WAAW,GAAGnsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C4pG,iBAAiB,CAAC5sG,OAAO,CAAC2rG,QAAQ,IAAI;MAClC,MAAM6R,YAAY,GAAG1B,iBAAiB,CAACnQ,QAAQ,CAAC;MAChDiD,WAAW,CAAC1uG,WAAW,CAACs9G,YAAY,CAAC;IACzC,CAAC,CAAC;IAEF/Q,SAAS,GAAGhqG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzCypG,SAAS,CAACntG,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAExC,MAAM0vG,UAAU,GAAGC,eAAe,CAAC,CAAC;;IAEpC;;IAEA1C,SAAS,CAACvsG,WAAW,CAACgvG,UAAU,CAAC;IACjC;;IAGA,MAAM0kG,QAAQ,CAACC,mBAAmB,CAACjnG,iBAAiB,CAAC,CAAC,CAAC,CAAC3pG,EAAE,EAAE,UAAU0nG,OAAO,EAAE;MAC3EknG,wBAAwB,GAAGlnG,OAAO,CAAC,CAAC,CAAC,CAAC1nG,EAAE;IAE5C,CAAC,CAAC;IAEF,MAAM;MAAE6wM,uBAAuB,EAAEC;IAAe,CAAC,GAAG,MAAM/gC,OAAO,CAACghC,iBAAiB,CAC/EnC,wBACJ,CAAC;IAEDN,kBAAkB,GAAGwC,cAAc;IAEnC,IAAIE,iBAAiB,GAAGxxM,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAGrD,IAAIkxM,qBAAqB,GAAGzxM,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACvDkxM,qBAAqB,CAACt0M,SAAS,GAC3B,2BAA2Bm0M,cAAc,EAAE;IAE3CzC,uBAAuB,GAAG6C,6BAA6B,CAAC,CAAC;IACzD7C,uBAAuB,CAAC5tM,YAAY,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAGxEuwM,iBAAiB,CAAC30M,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAC/Cy0M,iBAAiB,CAAC/zM,WAAW,CAACg0M,qBAAqB,CAAC;IACpD,IAAIrjM,CAAC,CAACC,OAAO,CAACwyC,SAAS,EAAE2wJ,iBAAiB,CAAC/zM,WAAW,CAACoxM,uBAAuB,CAAC;;IAEhF;IACA;;IAEH1iG,WAAW,CAAC1uG,WAAW,CAACusG,SAAS,CAAC;IAClCmC,WAAW,CAAC1uG,WAAW,CAAC+zM,iBAAiB,CAAC;IAC1CvC,eAAe,GAAG,MAAM0C,oBAAoB,CAACrnG,YAAY,CAAC;IAC1D6B,WAAW,CAAC1uG,WAAW,CAACwxM,eAAe,CAAC;IAExC//L,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC0uG,WAAW,CAAC;EAC7C;;EAEA;EACA,eAAewlG,oBAAoBA,CAACrnG,YAAY,EAAE;IAC9C,MAAMrD,YAAY,GAAG;MACjBjzF,KAAK,EAAE,KAAK;MACZZ,OAAO,EAAE,iBAAiB;MAC1BgB,cAAc,EAAE,CACZ,cAAc,EACd,UAAU,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,UAAU,CACb;MACDM,OAAO,EAAE;IACb,CAAC;;IAED;IACA;IACA;;IAEAqnI,mBAAmB,GAAG5xC,iBAAiB,CAACpjG,GAAG,CAAC,UAAUwZ,CAAC,EAAE;MACrD,OAAOA,CAAC,CAAC/f,EAAE;IACf,CAAC,CAAC;IACF;IACA,MAAM;MAAEoxM,mBAAmB,EAAEC;IAAW,CAAC,GAAG,MAAMthC,OAAO,CAACuhC,kBAAkB,CACxE/1D,mBAAmB,CAAChzH,IAAI,CAAC,IAAI,CAAC,EAC9BuhF,YAAY,CAACw/B,gBAAgB,EAC7Bx/B,YAAY,CAACy/B,cAAc,EAC3Bz/B,YAAY,CAACh+C,MAAM,EACnBg+C,YAAY,CAACgyB,SAAS,EACtBhyB,YAAY,CAACynG,eAAe,CAAE;IAClC,CAAC;;IAED;IACAF,UAAU,CAACt0M,OAAO,CAAC,UAAUkwG,KAAK,EAAE;MAChC,IAAIsqB,OAAO,GAAG,IAAIhhH,IAAI,CAAC02F,KAAK,CAAC4gB,WAAW,CAAC;MACzC,IAAI0uB,QAAQ,GAAGhlB,OAAO,CAAC90G,QAAQ,CAAC,CAAC,GAAG,CAAC;MACrC,IAAI+uL,iBAAiB,GACjBthL,IAAI,CAAC5B,WAAW,CAACiuH,QAAQ,CAAC,GAC1B,GAAG,GACHrsH,IAAI,CAAC5B,WAAW,CAACipG,OAAO,CAAC70G,OAAO,CAAC,CAAC,CAAC,GACnC,GAAG,GACH60G,OAAO,CAAC/0G,WAAW,CAAC,CAAC;MACzByqF,KAAK,CAAC4gB,WAAW,GAAG2jF,iBAAiB;IACzC,CAAC,CAAC;IAEF,IAAIxkG,SAAS,GAAGqkG,UAAU,CAAC9qM,GAAG,CAAC0mG,KAAK,KAAK;MACrCn4F,MAAM,EAAE,CACJm4F,KAAK,CAAC4gB,WAAW,EACjB5gB,KAAK,CAAC++B,YAAY,EAClB/+B,KAAK,CAACuO,WAAW,EACjBvO,KAAK,CAACskG,eAAe,EACrBtkG,KAAK,CAACwkG,WAAW,EACjBxkG,KAAK,CAAC8hE,YAAY,CACrB;MACD;MACA9tK,UAAU,EAAE,CACR;QACIE,GAAG,EAAE,eAAe;QACpBC,KAAK,EAAE6rG,KAAK,CAAC8hE,YAAY,IAAI,gBAAgB,GAAG,gBAAgB,GAAG;MACvE,CAAC,EACD;QAAE5tK,GAAG,EAAE,YAAY;QAAEC,KAAK,EAAE6rG,KAAK,CAAC5qD;MAAW,CAAC,EAC9C;QAAElhD,GAAG,EAAE,IAAI;QAAEC,KAAK,EAAE6rG,KAAK,CAACS;MAAG,CAAC,EAC9B;QAAEvsG,GAAG,EAAE,QAAQ;QAAEC,KAAK,EAAE6rG,KAAK,CAACwkG;MAAY,CAAC,EAC3C;QAAEtwM,GAAG,EAAE,YAAY;QAAEC,KAAK,EAAEod,IAAI,CAAC0F,KAAK,CAAC+oF,KAAK,CAACykG,UAAU;MAAE,CAAC,CAC7D;MACD/8L,OAAO,EAAE5S,CAAC,IAAI;QACV,IAAI4vM,WAAW,GAAGhoG,iBAAiB,CAAC3+F,MAAM,CAAC,UAAU+U,CAAC,EAAE;UACpD,OAAOA,CAAC,CAAC/f,EAAE,IAAIitG,KAAK,CAAC5qD,UAAU;QACnC,CAAC,CAAC;QACF;QACA;QACA;QACA,IACIsvJ,WAAW,CAAC,CAAC,CAAC,IACd5vM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC2wM,aAAa,CAACxwM,KAAK,KAAK,UAAU,IACtDW,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAACywM,UAAU,CAACtwM,KAAK,KAAK,GAAG,EAC9C;UACE2uK,OAAO,CAAC8hC,gCAAgC,CACpC9vM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6wM,EAAE,CAAC1wM,KAAK,EAC5B,UAAUsmG,OAAO,EAAE;YACfqqG,wBAAwB,CAACryM,IAAI,CACzBgoG,OAAO,EACPiqG,WAAW,CAAC,CAAC,CAAC,EACd7tM,SAAS,EACTA,SAAS,EACT/B,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6qD,MAAM,CAAC1qD,KAAK,EAChC0C,SACJ,CAAC;UACL,CACJ,CAAC;QACL;QACA,IACI6tM,WAAW,CAAC,CAAC,CAAC,IACd5vM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC2wM,aAAa,CAACxwM,KAAK,KAAK,gBAAgB,IAC5DW,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAACywM,UAAU,CAACtwM,KAAK,KAAK,GAAG,EAC9C;UACE2uK,OAAO,CAACiiC,sBAAsB,CAACjwM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6wM,EAAE,CAAC1wM,KAAK,EAAE,UAAUsmG,OAAO,EAAE;YAC5EuqG,sBAAsB,CAACvyM,IAAI,CACvBgoG,OAAO,EACPiqG,WAAW,CAAC,CAAC,CAAC,EACd7tM,SAAS,EACT/B,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6qD,MAAM,CAAC1qD,KAC/B,CAAC;UACL,CAAC,CAAC;QACN;QAEA;QAAO;QACPuwM,WAAW,CAAC,CAAC,CAAC,IACd5vM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC2wM,aAAa,CAACxwM,KAAK,KAAK,UAAU,IACtDW,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAACywM,UAAU,CAACtwM,KAAK,KAAK,GAAG,EAC9C;UACE2uK,OAAO,CAACmiC,sBAAsB,CAC1BnwM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6wM,EAAE,CAAC1wM,KAAK,EAC5B,UAAUsmG,OAAO,EAAE;YACfyqG,kBAAkB,CAACzyM,IAAI,CACnBgoG,OAAO,EACPiqG,WAAW,CAAC,CAAC,CAAC,EACd7tM,SAAS,EACT4jG,OAAO,CAAC,CAAC,CAAC,CAAC38C,WAAW,EACtBjnD,SAAS,EACT/B,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6qD,MAAM,CAAC1qD,KAAK,EAChC0C,SACJ,CAAC;UACL,CACJ,CAAC;QACL;QACI,IACI6tM,WAAW,CAAC,CAAC,CAAC,IACd5vM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC2wM,aAAa,CAACxwM,KAAK,KAAK,UAAU,IACtDW,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAACywM,UAAU,CAACtwM,KAAK,KAAK,GAAG,EAC9C;UACE2uK,OAAO,CAACqiC,gCAAgC,CACpCrwM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6wM,EAAE,CAAC1wM,KAAK,EAC5B,UAAUsmG,OAAO,EAAE;YACf2qG,4BAA4B,CAAC3yM,IAAI,CAC7BgoG,OAAO,EACPiqG,WAAW,CAAC,CAAC,CAAC,EACd7tM,SAAS,EACT4jG,OAAO,CAAC,CAAC,CAAC,CAAC38C,WAAW,EACtBjnD,SAAS,EACT/B,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6qD,MAAM,CAAC1qD,KAAK,EAChC0C,SACJ,CAAC;UACL,CACJ,CAAC;QACL;QACA,IACI6tM,WAAW,CAAC,CAAC,CAAC,IACd5vM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC2wM,aAAa,CAACxwM,KAAK,KAAK,gBAAgB,IAC5DW,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAACywM,UAAU,CAACtwM,KAAK,KAAK,GAAG,EAC9C;UACE2uK,OAAO,CAACuiC,sBAAsB,CAACvwM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6wM,EAAE,CAAC1wM,KAAK,EAAE,UAAUsmG,OAAO,EAAE;YAC5E6qG,mCAAmC,CAAC7yM,IAAI,CACpCgoG,OAAO,EACPiqG,WAAW,CAAC,CAAC,CAAC,EACd7tM,SAAS,EACT/B,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6qD,MAAM,CAAC1qD,KAC/B,CAAC;UACL,CAAC,CAAC;QACN;QAEA,IACIuwM,WAAW,CAAC,CAAC,CAAC,IACd5vM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC2wM,aAAa,CAACxwM,KAAK,KAAK,UAAU,IACtDW,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAACywM,UAAU,CAACtwM,KAAK,KAAK,IAAI,EAC/C;UACE2uK,OAAO,CAACyiC,2BAA2B,CAC/BzwM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6wM,EAAE,CAAC1wM,KAAK,EAC5B,UAAUsmG,OAAO,EAAE;YACf+qG,qBAAqB,CAAC/yM,IAAI,CACtBgoG,OAAO,EACPiqG,WAAW,CAAC,CAAC,CAAC,EACd7tM,SAAS,EACTA,SAAS,EACT/B,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6qD,MAAM,CAAC1qD,KAAK,EAChC0C,SACJ,CAAC;UACL,CACJ,CAAC;QACL;QAEA;QAAO;QACH6tM,WAAW,CAAC,CAAC,CAAC,IACd5vM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC2wM,aAAa,CAACxwM,KAAK,KAAK,UAAU,IACtDW,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAACywM,UAAU,CAACtwM,KAAK,KAAK,IAAI,EAC/C;UACE2uK,OAAO,CAAC2iC,kCAAkC,CACtC3wM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6wM,EAAE,CAAC1wM,KAAK,EAC5B,UAAUsmG,OAAO,EAAE;YACfirG,6BAA6B,CAACjzM,IAAI,CAC9BgoG,OAAO,EACPiqG,WAAW,CAAC,CAAC,CAAC,EACd7tM,SAAS,EACT4jG,OAAO,CAAC,CAAC,CAAC,CAAC38C,WAAW,EACtBjnD,SAAS,EACT/B,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6qD,MAAM,CAAC1qD,KAAK,EAChC0C,SACJ,CAAC;UACL,CACJ,CAAC;QACL;QACA;QAAQ;QACJ6tM,WAAW,CAAC,CAAC,CAAC,IACd5vM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC2wM,aAAa,CAACxwM,KAAK,KAAK,gBAAgB,IAC5DW,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAACywM,UAAU,CAACtwM,KAAK,KAAK,IAAI,EAC/C;UACE2uK,OAAO,CAAC6iC,uBAAuB,CAAC7wM,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6wM,EAAE,CAAC1wM,KAAK,EAAE,UAAUsmG,OAAO,EAAE;YAC7EmrG,oCAAoC,CAACnzM,IAAI,CACrCgoG,OAAO,EACPiqG,WAAW,CAAC,CAAC,CAAC,EACd7tM,SAAS,EACT/B,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC6qD,MAAM,CAAC1qD,KAC/B,CAAC;UACL,CAAC,CAAC;QACN;MACJ;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM09G,MAAM,GAAGpsG,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAExC;IACA,MAAMzwF,OAAO,GAAG8oG,MAAM,CAACj5G,gBAAgB,CAAC,aAAa,CAAC;IACtDmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAEhD;IACAiS,KAAK,CAACqD,iBAAiB,CAAC+oG,MAAM,CAAC;IAE/BpsG,KAAK,CAAC9V,QAAQ,CAACkiH,MAAM,EAAE9R,SAAS,CAAC;IAEjC,OAAO8R,MAAM;EACjB;;EAEA;EACA,SAASjG,iBAAiBA,CAACnQ,QAAQ,EAAE;IACjC8nC,eAAe,GAAGhxI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CwwI,WAAW,GAAG/wI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CwwI,WAAW,CAACl0I,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAE3CmsG,QAAQ,CAACoQ,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAE7C,MAAMi+G,YAAY,GAAG/6G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDw6G,YAAY,CAACl+G,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAE7Cg+G,YAAY,CAACt9G,WAAW,CAACyrG,QAAQ,CAACoQ,IAAI,CAAC;IAEvCyB,YAAY,CAAC56G,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5C,IAAIklD,UAAU,GAAGllD,KAAK,CAACC,MAAM,CAACC,OAAO,CAACglD,UAAU;MAChDk5F,mBAAmB,GAAGA,mBAAmB,CAACvwI,MAAM,CAAChL,EAAE,IAAIA,EAAE,KAAKqiD,UAAU,CAAC;MACzEsnD,iBAAiB,GAAGA,iBAAiB,CAAC3+F,MAAM,CAAC,UAAU+U,CAAC,EAAE;QACtD,OAAOA,CAAC,CAAC/f,EAAE,KAAKqiD,UAAU;MAC9B,CAAC,CAAC;MACFipD,OAAO,CAAC8iD,iCAAiC,CAAC/rG,UAAU,CAAC;MACrD,IAAIs9G,eAAe,GAAGr0D,OAAO,CAACC,kBAAkB,CAAC,CAAC;MAClDo0D,eAAe,CAAC7iK,MAAM,KAAK,CAAC,GAAGwuG,OAAO,CAACoH,cAAc,CAAC,CAAC,GAAGo7F,cAAc,CAAC,CAAC;MAC1E;IACJ,CAAC,CAAC;IAEFv9D,WAAW,CAACtzI,WAAW,CAACs9G,YAAY,CAAC;IAErCm0F,eAAe,GAAG18D,cAAc,CAACtpC,QAAQ,CAAC;IAE1C6nC,WAAW,CAACtzI,WAAW,CAACyxM,eAAe,CAAC;IACxC,IAAIt9D,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzCywI,eAAe,CAACvzI,WAAW,CAACszI,WAAW,CAAC;IACxC;;IAEA,OAAOC,eAAe;EAC1B;;EAEA;EACA,SAASwB,cAAcA,CAACtpC,QAAQ,EAAE;IAC9B,MAAMupC,SAAS,GAAGzyI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CkyI,SAAS,CAAC51I,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAEvC,MAAM+1I,QAAQ,GAAG1yI,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,WAAW;MACjBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBU,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,YAAY;QAAEC,KAAK,EAAEsnG,QAAQ,CAAC1oG;MAAG,CAAC,EACzC;QAAEmB,GAAG,EAAE,SAAS;QAAEC,KAAK,EAAE;MAAW,CAAC,CACxC;MACDP,UAAU,EAAE,CAAC+M,CAAC,CAACC,OAAO,CAACuyC,SAAS,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC;MAChF/+C,QAAQ,EAAEA,CAAA,KACNyxM,sBAAsB,CAClBxgE,QAAQ,CAACrxI,UAAU,CAAC+tH,UAAU,CAAC5tH,KAAK,EACpCkxI,QAAQ,CAACrxI,UAAU,CAAC8xM,OAAO,CAAC3xM,KAChC;IACR,CAAC,CAAC;IACF,MAAM4xM,UAAU,GAAGpzM,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,qBAAqB;MAC3BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBU,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,YAAY;QAAEC,KAAK,EAAEsnG,QAAQ,CAAC1oG;MAAG,CAAC,EACzC;QAAEmB,GAAG,EAAE,SAAS;QAAEC,KAAK,EAAE;MAAiB,CAAC,CAC9C;MACDP,UAAU,EAAE,CAAC+M,CAAC,CAACC,OAAO,CAACuyC,SAAS,GAC1B,CAAC,sBAAsB,EAAE,UAAU,CAAC,GACpC,CAAC,sBAAsB,CAAC;MAC9B/+C,QAAQ,EAAEA,CAAA,KACN4xM,wBAAwB,CACpBD,UAAU,CAAC/xM,UAAU,CAAC+tH,UAAU,CAAC5tH,KAAK,EACtC4xM,UAAU,CAAC/xM,UAAU,CAAC8xM,OAAO,CAAC3xM,KAClC;IACR,CAAC,CAAC;IACF8sM,gBAAgB,GAAGgF,qBAAqB,CAAC,CAAC;IAC1C/E,cAAc,GAAGgF,mBAAmB,CAAC,CAAC;IACtCnnG,iBAAiB,CAAC,CAAC;IAEnB,MAAMonG,WAAW,GAAG5zM,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDqzM,WAAW,CAAC/2M,SAAS,CAACE,GAAG,CAAC,uBAAuB,CAAC;IAClD62M,WAAW,CAACn2M,WAAW,CAACq1I,QAAQ,CAAC;IACjC8gE,WAAW,CAACn2M,WAAW,CAAC+1M,UAAU,CAAC;IACnCI,WAAW,CAACn2M,WAAW,CAACixM,gBAAgB,CAAC;IACzCkF,WAAW,CAACn2M,WAAW,CAACkxM,cAAc,CAAC;IAEvCl8D,SAAS,CAACh1I,WAAW,CAACm2M,WAAW,CAAC;IAElC,OAAOnhE,SAAS;EACpB;;EAEA;EACA,eAAe6gE,sBAAsBA,CAACzwJ,UAAU,EAAE0wJ,OAAO,EAAE;IACvDllF,WAAW,GAAG39F,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IAClC;IACA;IACA,MAAM;MACF;MACAqpK,6BAA6B,EAAEC;IACnC,CAAC,GAAG,MAAMvjC,OAAO,CAACwjC,4BAA4B,CAAClxJ,UAAU,EAAEwrE,WAAW,CAAC;IAEvE,IAAIylF,gBAAgB,KAAKxvM,SAAS,IAAIwvM,gBAAgB,CAACx2M,MAAM,IAAI,CAAC,EAAE;MAChE02M,oBAAoB,CAACnxJ,UAAU,EAAE0wJ,OAAO,CAAC;IAC7C,CAAC,MAAM;MACH;;MAEA9C,0BAA0B,GAAG1gM,KAAK,CAAC1P,KAAK,CAAC;QACrC2P,MAAM,EAAE,kBAAkB;QAC1BO,KAAK,EAAE,IAAI;QACX/P,EAAE,EAAE;MACR,CAAC,CAAC;MAEFguM,gBAAgB,GAAG3qM,KAAK,CAACxD,KAAK,CAAC;QAC3BU,IAAI,EAAE,MAAM;QACZoB,KAAK,EAAE,cAAc;QACrBrB,KAAK,EAAE,WAAW;QAClBc,KAAK,EAAE8uB,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD1f,UAAU,EAAE,CAAC;UAAEE,GAAG,EAAE,KAAK;UAAEC,KAAK,EAAE8uB,IAAI,CAAC8Z,aAAa,CAAC;QAAE,CAAC;MAC5D,CAAC,CAAC;MAEFgkK,gBAAgB,CAACruM,gBAAgB,CAAC,UAAU,EAAE,MAAMxC,KAAK,IAAI;QACzD0wH,WAAW,GAAG1wH,KAAK,CAACC,MAAM,CAACgE,KAAK;QAChC,IAAIysH,WAAW,KAAK,EAAE,EAAE;UACpBA,WAAW,GAAGogF,kBAAkB;UAChCiC,yBAAyB,GAAG,EAAE;UAC9B;UACAG,0BAA0B,GAAG,EAAE;UAC/BC,2BAA2B,GAAG,EAAE;UAChCH,+BAA+B,GAAG,EAAE;UACpC,MAAMsD,mCAAmC,CAACpxJ,UAAU,EAAEwrE,WAAW,CAAC;QACtE,CAAC,MAAM;UACH,MAAM;YAAEwlF,6BAA6B,EAAEC;UAAiB,CAAC,GACrD,MAAMvjC,OAAO,CAACwjC,4BAA4B,CAAClxJ,UAAU,EAAEwrE,WAAW,CAAC;UAEvE,IAAIylF,gBAAgB,KAAKxvM,SAAS,IAAIwvM,gBAAgB,CAACx2M,MAAM,IAAI,CAAC,EAAE;YAChE42M,qBAAqB,CAACX,OAAO,CAAC;YAC9BS,oBAAoB,CAACnxJ,UAAU,EAAE0wJ,OAAO,CAAC;UAC7C,CAAC,MAAM;YACHU,mCAAmC,CAACpxJ,UAAU,EAAEwrE,WAAW,CAAC;UAChE;QACJ;QAEA8lF,wBAAwB,CAAC,CAAC;QAC1BC,gCAAgC,CAAC,CAAC;MACtC,CAAC,CAAC;;MAEF;MACA;MACA;MACA;;MAEA7D,wBAAwB,GAAGvuM,QAAQ,CAAC3B,KAAK,CAAC;QACtC8B,KAAK,EAAE,UAAU;QACjBF,UAAU,EAAE;MAChB,CAAC,CAAC;MAEFuuM,uBAAuB,GAAGpwM,MAAM,CAACC,KAAK,CAAC;QACnCG,EAAE,EAAE,yBAAyB;QAC7BG,IAAI,EAAE,MAAM;QACZI,IAAI,EAAE,WAAW;QACjBD,KAAK,EAAE,WAAW;QAClBO,UAAU,EAAE,UAAU;QACtBQ,QAAQ,EAAEA,CAAA,KAAMwyM,mBAAmB,CAACxxJ,UAAU,EAAE0wJ,OAAO;MAC3D,CAAC,CAAC;MACF,IAAI,CAACjgB,UAAU,GAAGkd,uBAAuB;MAEzC,IAAI9hK,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;QACzBG,EAAE,EAAE,2BAA2B;QAC/BG,IAAI,EAAE,QAAQ;QACdI,IAAI,EAAE,UAAU;QAChBD,KAAK,EAAE,WAAW;QAClBe,QAAQ,EAAEA,CAAA,KAAMqyM,qBAAqB,CAACX,OAAO;MACjD,CAAC,CAAC;MAEF,IAAIhnK,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC3C,IAAIqxI,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;MACzCgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAChCwvC,OAAO,CAAC9uC,WAAW,CAAC+yM,uBAAuB,CAAC;MAC5CjkK,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;MAC9B+hK,0BAA0B,CAAChzM,WAAW,CAACm0I,MAAM,CAAC;MAC9C6+D,0BAA0B,CAAChzM,WAAW,CAAC+wM,gBAAgB,CAAC;MACxDiC,0BAA0B,CAAChzM,WAAW,CAAC8yM,wBAAwB,CAAC;MAChEE,0BAA0B,CAAChzM,WAAW,CAAC8uC,OAAO,CAAC;MAE/C0nK,mCAAmC,CAACpxJ,UAAU,EAAEwrE,WAAW,CAAC;MAE5DkiF,wBAAwB,CAACpwM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;QACzD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;QAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;UAClC8uM,yBAAyB,GAAG,EAAE;UAC9B;UACAG,0BAA0B,GAAG,EAAE;UAC/BC,2BAA2B,GAAG,EAAE;UAChCH,+BAA+B,GAAG,EAAE;QACxC,CAAC,MAAM;UACH;UACAD,yBAAyB,GAAGluM,cAAc,CAACZ,KAAK;UAChD;UACAivM,0BAA0B,GAAGruM,cAAc,CAAChC,EAAE;UAC9CswM,2BAA2B,GAAGtuM,cAAc,CAAC7B,IAAI;UACjDgwM,+BAA+B,GAAGnuM,cAAc,CAAC7B,IAAI,CAACwgB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxE;QAEAgzL,wBAAwB,CAAC,CAAC;QAC1BC,gCAAgC,CAAC,CAAC;MACtC,CAAC,CAAC;MAEFD,wBAAwB,CAAC,CAAC;MAC1BC,gCAAgC,CAAC,CAAC;MAElCrkM,KAAK,CAAC9S,IAAI,CAACwzM,0BAA0B,CAAC;MAEtC,SAAS2D,gCAAgCA,CAAA,EAAG;QACxC,IAAI,CAAC1D,yBAAyB,IAAIA,yBAAyB,KAAK,EAAE,EAAE;UAChEH,wBAAwB,CAAC1zM,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;UAC/CyzM,uBAAuB,CAAC3zM,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrD,CAAC,MAAM;UACHwzM,wBAAwB,CAAC1zM,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;UAClD0zM,uBAAuB,CAAC3zM,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UACpDq3M,wBAAwB,CAAC,CAAC;QAC9B;MACJ;MAEA,SAASA,wBAAwBA,CAAA,EAAG;QAChC,IAAIG,SAAS,GAAG,IAAIv9L,IAAI,CAAC2Z,IAAI,CAAC8Z,aAAa,CAAC,CAAC,CAACrpB,KAAK,CAAC,GAAG,CAAC,CAAC4H,IAAI,CAAC,GAAG,CAAC,CAAC;QACnE,IAAIwrL,eAAe,GAAG,IAAIx9L,IAAI,CAACs3G,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC4H,IAAI,CAAC,GAAG,CAAC,CAAC;QAChE,IACI,CAACslG,WAAW,IACZA,WAAW,KAAKogF,kBAAkB,IAClChhL,KAAK,CAAC8E,OAAO,CAACgiL,eAAe,EAAED,SAAS,CAAC,EAC3C;UACE9F,gBAAgB,CAAC3xM,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;UACvCyzM,uBAAuB,CAAC3zM,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrD,CAAC,MAAM;UACHyxM,gBAAgB,CAAC3xM,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;UAC1C0zM,uBAAuB,CAAC3zM,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACxD;MACJ;IACJ;EACJ;EAEA,SAASk3M,oBAAoBA,CAACnxJ,UAAU,EAAE0wJ,OAAO,EAAE;IAC/C;IACA,IAAIiB,eAAe,GAAGzkM,KAAK,CAAC1P,KAAK,CAAC;MAC9B2P,MAAM,EAAE,mBAAmB;MAC3BO,KAAK,EAAE,IAAI;MACX/P,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,IAAI6xK,KAAK,GAAGjyK,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAACw3M,eAAe,CAAC;QAC3BlG,cAAc,CAAC,CAAC;QAChB;MACJ;IACJ,CAAC,CAAC;IAEF,IAAI/hK,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C,IAAIksC,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GACpB,qKAAqK;IACzKovC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC40K,KAAK,CAAC;IAC1B;IACAmiC,eAAe,CAAC/2M,WAAW,CAACgvC,cAAc,CAAC;IAC3C+nK,eAAe,CAAC/2M,WAAW,CAAC8uC,OAAO,CAAC;IACpCr/B,OAAO,CAACjQ,IAAI,CAAC,CAAC;IACd8S,KAAK,CAAC9S,IAAI,CAACu3M,eAAe,CAAC;EAC/B;;EAEA;EACA,eAAef,wBAAwBA,CAAC5wJ,UAAU,EAAE0wJ,OAAO,EAAE;IACzDtC,yBAAyB,GAAGlhM,KAAK,CAAC1P,KAAK,CAAC;MACpC2P,MAAM,EAAE,kBAAkB;MAC1BO,KAAK,EAAE,IAAI;MACX/P,EAAE,EAAE;IACR,CAAC,CAAC;IAEFuwM,uBAAuB,GAAG/uM,QAAQ,CAAC3B,KAAK,CAAC;MACrC8B,KAAK,EAAE,UAAU;MACjBF,UAAU,EAAE;IAChB,CAAC,CAAC;IAEF+uM,sBAAsB,GAAG5wM,MAAM,CAACC,KAAK,CAAC;MAClCG,EAAE,EAAE,wBAAwB;MAC5BG,IAAI,EAAE,MAAM;MACZI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAEA,CAAA,KAAMwyM,mBAAmB,CAACxxJ,UAAU,EAAE0wJ,OAAO;IAC3D,CAAC,CAAC;IACF,IAAI,CAACjgB,UAAU,GAAG0d,sBAAsB;IAExC,IAAItiK,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MACzBG,EAAE,EAAE,yBAAyB;MAC7BG,IAAI,EAAE,QAAQ;MACdI,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMqyM,qBAAqB,CAACX,OAAO;IACjD,CAAC,CAAC;IAEF,IAAIhnK,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACuzM,sBAAsB,CAAC;IAC3CzkK,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAC9BuiK,yBAAyB,CAACxzM,WAAW,CAACszM,uBAAuB,CAAC;IAC9DE,yBAAyB,CAACxzM,WAAW,CAAC8uC,OAAO,CAAC;IAE9CkoK,yCAAyC,CAAC5xJ,UAAU,CAAC;IAErDkuJ,uBAAuB,CAAC5wM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACxD+yM,yBAAyB,GAAG/yM,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9C;MACAivM,0BAA0B,GAAGlzM,KAAK,CAACC,MAAM,CAAC4C,EAAE;MAC5CswM,2BAA2B,GAAGnzM,KAAK,CAACC,MAAM,CAAC+C,IAAI;IACnD,CAAC,CAAC;IAEFowM,uBAAuB,CAAC5wM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACxD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QAClC8uM,yBAAyB,GAAG,EAAE;QAC9B;QACAG,0BAA0B,GAAG,EAAE;QAC/BC,2BAA2B,GAAG,EAAE;MACpC,CAAC,MAAM;QACH;QACAJ,yBAAyB,GAAGluM,cAAc,CAACZ,KAAK;QAChD;QACAivM,0BAA0B,GAAGruM,cAAc,CAAChC,EAAE;QAC9CswM,2BAA2B,GAAGtuM,cAAc,CAAC7B,IAAI;MACrD;MACA+zM,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IAEFA,+BAA+B,CAAC,CAAC;IAEjC3kM,KAAK,CAAC9S,IAAI,CAACg0M,yBAAyB,CAAC;IAErC,SAASyD,+BAA+BA,CAAA,EAAG;MACvC,IAAI,CAAChE,yBAAyB,IAAIA,yBAAyB,KAAK,EAAE,EAAE;QAChEK,uBAAuB,CAACl0M,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAC9Ci0M,sBAAsB,CAACn0M,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACpD,CAAC,MAAM;QACHg0M,uBAAuB,CAACl0M,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACjDk0M,sBAAsB,CAACn0M,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACvD;IACJ;EACJ;;EAEA;EACA,SAASu3M,mBAAmBA,CAACxxJ,UAAU,EAAE0wJ,OAAO,EAAE;IAC9C,IAAIA,OAAO,KAAK,UAAU,EAAE;MACxBxjM,KAAK,CAAC/S,IAAI,CAAC23M,kBAAkB,CAAC;IAClC,CAAC,MAAM;MACH5kM,KAAK,CAAC/S,IAAI,CAACi0M,yBAAyB,CAAC;IACzC;;IAEA;IACA,IAAI2D,YAAY,GAAGzqG,iBAAiB,CAAC3+F,MAAM,CAAC09F,QAAQ,IAAI;MACpD,OAAOA,QAAQ,CAAC1oG,EAAE,KAAKqiD,UAAU;IACrC,CAAC,CAAC;IACF,IAAIgyJ,6BAA6B,GAAGnE,yBAAyB;IAC7D,IAAIoE,mCAAmC,GAAGnE,+BAA+B;IACzE,IAAIoE,+BAA+B,GAAGnE,2BAA2B;IACjE,IAAIoE,8BAA8B,GAAGnE,0BAA0B;IAC/D,IAAIoE,+BAA+B,GAAGnE,2BAA2B,CAACrqL,MAAM,CAAC,CAAC,CAAC,CAACtF,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/FuvL,yBAAyB,GAAG,EAAE;IAC9B;IACAG,0BAA0B,GAAG,EAAE;IAC/B;IACA;IACA;IACA,IAAI+D,YAAY,IAAIrB,OAAO,KAAK,UAAU,IAAIyB,8BAA8B,KAAK,GAAG,EAChFzC,wBAAwB,CAACryM,IAAI,CACzB,CAAC,CAAC,EACF00M,YAAY,CAAC,CAAC,CAAC,EACfC,6BAA6B,EAC7BC,mCAAmC,EACnC1mM,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAChB8gF,WAAW,EACXklF,OACJ,CAAC;IAEL,IAAIqB,YAAY,IAAIrB,OAAO,KAAK,gBAAgB,IAAIyB,8BAA8B,KAAK,GAAG,EACtFvC,sBAAsB,CAACvyM,IAAI,CACvB,CAAC,CAAC,EACF00M,YAAY,CAAC,CAAC,CAAC,EACfC,6BAA6B,EAC7BzmM,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAChBgmK,OACJ,CAAC;IACL,IAAIqB,YAAY,IAAIrB,OAAO,KAAK,UAAU,IAAIyB,8BAA8B,KAAK,GAAG,EAChFrC,kBAAkB,CAACzyM,IAAI,CACf,CAAC,CAAC,EACF00M,YAAY,CAAC,CAAC,CAAC,EACfC,6BAA6B,EAC7BI,+BAA+B,EAC/BH,mCAAmC,EACnC1mM,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAChB8gF,WAAW,EACXklF,OACZ,CAAC;IAED,IAAIqB,YAAY,IAAIrB,OAAO,KAAK,UAAU,IAAIyB,8BAA8B,KAAK,GAAG,EAChFnC,4BAA4B,CAAC3yM,IAAI,CAC7B,CAAC,CAAC,EACF00M,YAAY,CAAC,CAAC,CAAC,EACfC,6BAA6B,EAC7BI,+BAA+B,EAC/BH,mCAAmC,EACnC1mM,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAChB8gF,WAAW,EACXklF,OACJ,CAAC;IACL,IAAIqB,YAAY,IAAIrB,OAAO,KAAK,gBAAgB,IAAIyB,8BAA8B,KAAK,GAAG,EACtFjC,mCAAmC,CAAC7yM,IAAI,CACpC,CAAC,CAAC,EACF00M,YAAY,CAAC,CAAC,CAAC,EACfC,6BAA6B,EAC7BzmM,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAChBgmK,OACJ,CAAC;IACL,IAAIqB,YAAY,IAAIrB,OAAO,KAAK,UAAU,IAAIyB,8BAA8B,KAAK,IAAI,EACjF/B,qBAAqB,CAAC/yM,IAAI,CACtB,CAAC,CAAC,EACF00M,YAAY,CAAC,CAAC,CAAC,EACfC,6BAA6B,EAC7BC,mCAAmC,EACnC1mM,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAChB8gF,WAAW,EACXklF,OACJ,CAAC;IACD,IAAIqB,YAAY,IAAIrB,OAAO,KAAK,UAAU,IAAIyB,8BAA8B,KAAK,IAAI,EACjF7B,6BAA6B,CAACjzM,IAAI,CAC9B,CAAC,CAAC,EACF00M,YAAY,CAAC,CAAC,CAAC,EACfC,6BAA6B,EAC7BI,+BAA+B,EAC/BH,mCAAmC,EACnC1mM,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAChB8gF,WAAW,EACXklF,OACJ,CAAC;IACL,IAAIqB,YAAY,IAAIrB,OAAO,KAAK,gBAAgB,IAAIyB,8BAA8B,KAAK,IAAI,EACvF3B,oCAAoC,CAACnzM,IAAI,CACrC,CAAC,CAAC,EACF00M,YAAY,CAAC,CAAC,CAAC,EACfC,6BAA6B,EAC7BzmM,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAChBgmK,OACJ,CAAC;IACT;EACJ;;EAEA;EACA,SAASW,qBAAqBA,CAACX,OAAO,EAAE;IACpC7C,yBAAyB,GAAG,EAAE;IAC9BC,+BAA+B,GAAG,EAAE;IACpC,IAAI4C,OAAO,KAAK,UAAU,EAAE;MACxBxjM,KAAK,CAAC/S,IAAI,CAAC23M,kBAAkB,CAAC;MAC9BrG,cAAc,CAAC,CAAC;IACpB,CAAC,MAAM;MACHv+L,KAAK,CAAC/S,IAAI,CAACi0M,yBAAyB,CAAC;MACrC3C,cAAc,CAAC,CAAC;IACpB;IACA;IACA;EACJ;EAEA,eAAe4G,4BAA4BA,CAAChD,UAAU,EAAE;IACpD;IACA,IAAInvM,IAAI,GAAG;MACPgvM,eAAe,EAAElC,kBAAkB,CAACkC,eAAe;MACnD3lD,QAAQ,EAAErQ,mBAAmB,CAAC,CAAC,CAAC;MAChC7O,aAAa,EAAE5iC,YAAY,CAACgyB,SAAS;MACrCpnG,SAAS,EAAE26K,kBAAkB,CAAC/lE,gBAAgB;MAC9C10G,OAAO,EAAEy6K,kBAAkB,CAAC9lE,cAAc;MAC1Cz9E,MAAM,EAAEujJ,kBAAkB,CAACvjJ,MAAM;MACjC6oJ,oBAAoB,EAAE/mM,CAAC,CAACC,OAAO,CAACmoC;IACpC,CAAC;IAED,IAAI;MACA,QAAQ07J,UAAU;QACd,KAAK,CAAC;UACF5E,UAAU,GAAG,MAAM/8B,OAAO,CAAC6kC,aAAa,CAACryM,IAAI,CAAC;UAC9C;QAEJ,KAAK,CAAC;UACFuqM,UAAU,GAAG,MAAM/8B,OAAO,CAAC8kC,aAAa,CAACtyM,IAAI,CAAC;UAC9C;QAEJ,KAAK,CAAC;UACFuqM,UAAU,GAAG,MAAM/8B,OAAO,CAAC+kC,aAAa,CAACvyM,IAAI,CAAC;UAC9C;QAEJ,KAAK,EAAE;UACHuqM,UAAU,GAAG,MAAM/8B,OAAO,CAACglC,cAAc,CAACxyM,IAAI,CAAC;UAC/CwjD,OAAO,GAAG,IAAI;UACd;QAEJ,KAAK,EAAE;UACH+mJ,UAAU,GAAG,MAAM/8B,OAAO,CAACilC,cAAc,CAACzyM,IAAI,CAAC;UAC/C;UACA;MACR;IACJ,CAAC,CAAC,OAAOgM,KAAK,EAAE;MACZ;MACA,MAAM0mM,UAAU,GAAGz1M,QAAQ,CAACiD,cAAc,CAAC,qBAAqB,CAAC;MACjEwyM,UAAU,CAAC34M,MAAM,CAAC,CAAC;MACnBoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;IAClB;IACA,MAAMy4M,UAAU,GAAGz1M,QAAQ,CAACiD,cAAc,CAAC,qBAAqB,CAAC;IACjE,IAAIwyM,UAAU,EAAEA,UAAU,CAAC34M,MAAM,CAAC,CAAC;IACnCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;EAClB;;EAGA;EACA,SAASwvG,iBAAiBA,CAAA,EAAG;IACzB,IAAI,CAAClC,YAAY,EAAE;MAGfA,YAAY,GAAG;QACX19D,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtBozF,gBAAgB,EAAEp5G,IAAI,CAACoY,qBAAqB,CAACrb,KAAK,CAAC0C,OAAO,CAAC,IAAIpZ,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5EgzH,cAAc,EAAEr5G,IAAI,CAAC8Z,aAAa,CAAC,CAAC;QAEnC8hB,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;QACxBwoB,QAAQ,EAAE3nD,CAAC,CAACC,OAAO,CAACioC,KAAK,GAAG,IAAI,GAAGloC,CAAC,CAACC,OAAO,CAACgoC,IAAI;QACjDimF,SAAS,EAAE,GAAG;QACd/wE,WAAW,EAAE,EAAE;QACfwmJ,eAAe,EAAE;MACrB,CAAC;IACL;EACJ;;EAEA;EACA,SAAS2B,qBAAqBA,CAAA,EAAG;IAC7B,OAAOtzM,MAAM,CAACC,KAAK,CAAC;MAChBM,IAAI,EAAE,gBAAgB;MACtBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBP,EAAE,EAAE,kBAAkB;MACtB;MACAa,UAAU,EACN+M,CAAC,CAACC,OAAO,CAACwyC,SAAS,IAAIzyC,CAAC,CAACC,OAAO,CAACuyC,SAAS,IAAIxyC,CAAC,CAACC,OAAO,CAACyyC,OAAO,GACzD,CAAC,kBAAkB,CAAC,GACpB,CAAC,kBAAkB,EAAE,UAAU,CAAC;MAC1Cj/C,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClBwsM,YAAY,CAACnuM,IAAI,CAAC,CAAC;MACvB;IACJ,CAAC,CAAC;EACN;;EAEA;EACA,SAASw1M,sBAAsBA,CAACC,QAAQ,EAAEzD,UAAU,EAAE;IAClD,OAAO9xM,MAAM,CAACC,KAAK,CAAC;MAChBM,IAAI,EAAEg1M,QAAQ;MACd70M,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBP,EAAE,EAAE,UAAU0xM,UAAU,KAAK;MAC7B7wM,UAAU,EAAE,UAAU6wM,UAAU,KAAK;MACrCrwM,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB;QACA;QACC+zM,oBAAoB,CAAC1D,UAAU,CAAC;MACrC;IACJ,CAAC,CAAC;EACN;;EAEA;EACA,SAASyB,mBAAmBA,CAAA,EAAG;IAC3B,OAAOvzM,MAAM,CAACC,KAAK,CAAC;MAChBM,IAAI,EAAE,kBAAkB;MACxBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBP,EAAE,EAAE,gBAAgB;MACpBa,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QACZg0M,oBAAoB,CAAC,CAAC;MAC1B;IACJ,CAAC,CAAC;EACN;;EAGA;EACA,SAASnE,6BAA6BA,CAAA,EAAG;IACrC,OAAOtxM,MAAM,CAACC,KAAK,CAAC;MAChBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBP,EAAE,EAAE,iBAAiB;MACrBqB,QAAQ,EAAEA,CAAA,KAAM;QACXi0M,wBAAwB,CAAC,CAAC;MAC/B;IACJ,CAAC,CAAC;EACN;EAEA,SAASD,oBAAoBA,CAAA,EAAG;IAC5B;IACA,MAAMhmM,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACtBG,EAAE,EAAE,qBAAqB;MACzB+P,KAAK,EAAE,IAAI;MACXlP,UAAU,EAAE,CACR,OAAO,EACP,SAAS,EACT,eAAe,EACf,qBAAqB;IAC7B,CAAC,CAAC;IAEFwO,KAAK,CAAC5O,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC;IACxC4O,KAAK,CAAC5O,YAAY,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAEvD,MAAM80M,QAAQ,GAAGL,sBAAsB,CAAC,yCAAyC,EAAE,CAAC,CAAC;IACrF,MAAMM,QAAQ,GAAGN,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,CAAC;IACxE,MAAMO,QAAQ,GAAGP,sBAAsB,CAAC,yCAAyC,EAAE,CAAC,CAAC;IACrF,MAAMQ,SAAS,GAAGR,sBAAsB,CAAC,0BAA0B,EAAE,EAAE,CAAC;IACxE,MAAMS,SAAS,GAAGT,sBAAsB,CAAC,mCAAmC,EAAE,EAAE,CAAC;IAEjF7lM,KAAK,CAACpS,WAAW,CAACs4M,QAAQ,CAAC;IAC3BlmM,KAAK,CAACpS,WAAW,CAACu4M,QAAQ,CAAC;IAC3BnmM,KAAK,CAACpS,WAAW,CAACw4M,QAAQ,CAAC;IAC3BpmM,KAAK,CAACpS,WAAW,CAACy4M,SAAS,CAAC;IAC5BrmM,KAAK,CAACpS,WAAW,CAAC04M,SAAS,CAAC;;IAE5B;IACAppM,cAAc,CAACY,iBAAiB,CAACkC,KAAK,CAAC;IACvC3C,OAAO,CAACjQ,IAAI,CAAC,CAAC;IACde,YAAY,CAACP,WAAW,CAACoS,KAAK,CAAC;EACnC;;EAEA;EACA,SAAS68F,eAAeA,CAAA,EAAG;IACvB,IAAID,UAAU,GAAGzsG,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IAE1D,IAAI,CAACwsG,UAAU,EAAE;MACbA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MAC1C0xG,eAAe,CAAC,CAAC;MACjBhC,UAAU,CAAChvG,WAAW,CAAC8uC,OAAO,CAAC;IACnC;;IAEA;IACA,IAAI7V,SAAS,GAAG,YAAY,CAACvV,KAAK,CAAC,GAAG,CAAC;IACvC,IAAIi1L,YAAY,GAAG,GAAG1lL,IAAI,CAAC5B,WAAW,CAAC4H,SAAS,CAAC,CAAC,CAAC,CAAC,IAAIhG,IAAI,CAAC5B,WAAW,CACpE4H,SAAS,CAAC,CAAC,CACf,CAAC,IAAIA,SAAS,CAAC,CAAC,CAAC,CAACnqB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAG/B,IAAI+9F,YAAY,CAACh+C,MAAM,KAAK,GAAG,IAAIg+C,YAAY,CAACh+C,MAAM,KAAK,KAAK,EAAE;MAC9D/f,OAAO,CAAC9uC,WAAW,CAACyyM,eAAe,CAAC;MACpC3jK,OAAO,CAACn9B,WAAW,CAAC8gM,eAAe,CAAC;IACxC,CAAC,MAAM;MACH3jK,OAAO,CAAC9uC,WAAW,CAACyyM,eAAe,CAAC;IACxC;IAEA,IAAI5lG,YAAY,CAACgyB,SAAS,KAAK,GAAG,IAAIhyB,YAAY,CAACgyB,SAAS,KAAK,KAAK,EAAE;MACpE/vF,OAAO,CAAC9uC,WAAW,CAAC0yM,cAAc,CAAC;MACnC5jK,OAAO,CAACn9B,WAAW,CAAC+gM,cAAc,CAAC;IACvC,CAAC,MAAM;MACH5jK,OAAO,CAAC9uC,WAAW,CAAC0yM,cAAc,CAAC;IACvC;IACA,IAAI7lG,YAAY,CAACynG,eAAe,KAAK,GAAG,IAAIznG,YAAY,CAACynG,eAAe,KAAK,KAAK,EAAE;MAChFxlK,OAAO,CAAC9uC,WAAW,CAAC2yM,sBAAsB,CAAC;MAC3C7jK,OAAO,CAACn9B,WAAW,CAACghM,sBAAsB,CAAC;IAC/C,CAAC,MAAM;MACH7jK,OAAO,CAAC9uC,WAAW,CAAC2yM,sBAAsB,CAAC;IAC/C;IAEA,OAAO3jG,UAAU;EACrB;EAEA,SAASgC,eAAeA,CAAA,EAAG;IACvBC,SAAS,GAAGtuG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,cAAc;MAC1BQ,QAAQ,EAAEA,CAAA,KAAM;QAAE8sG,gBAAgB,CAAC,KAAK,CAAC;MAAC;IAC9C,CAAC,CAAC;IAEF0nG,mBAAmB,GAAGj2M,MAAM,CAACC,KAAK,CAAC;MAC/BG,EAAE,EAAE,qBAAqB;MACzBG,IAAI,EAAE,sBAAsB,GAAGy1D,MAAM,CAACk0C,YAAY,CAACw/B,gBAAgB,EAAE,YAAY,CAAC,CAAChkH,MAAM,CAAC,UAAU,CAAC;MACrGhlB,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE8sG,gBAAgB,CAAC,qBAAqB,CAAC;MAAC;IAC9D,CAAC,CAAC;IAEF2nG,iBAAiB,GAAGl2M,MAAM,CAACC,KAAK,CAAC;MAC7BG,EAAE,EAAE,mBAAmB;MACvBG,IAAI,EAAE,oBAAoB,GAAGy1D,MAAM,CAACk0C,YAAY,CAACy/B,cAAc,EAAE,YAAY,CAAC,CAACjkH,MAAM,CAAC,UAAU,CAAC;MACjGhlB,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE8sG,gBAAgB,CAAC,mBAAmB,CAAC;MAAC;IAC5D,CAAC,CAAC;IAEF4nG,WAAW,GAAGn2M,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,YAAY,GAAG2pG,YAAY,CAACv0C,QAAQ;MAC1Cj1D,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE8sG,gBAAgB,CAAC,aAAa,CAAC;MAAC;IACtD,CAAC,CAAC;IACF6nG,gBAAgB,GAAGp2M,MAAM,CAACC,KAAK,CAAC;MAC5BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,aAAa,CAAC;MAAC;IACjD,CAAC,CAAC;IAEF2nG,UAAU,GAAGr2M,MAAM,CAACC,KAAK,CAAC;MACtBG,EAAE,EAAE,YAAY;MAChBG,IAAI,EAAE,WAAW,GAAG2pG,YAAY,CAAC/+C,WAAW;MAC5CzqD,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE8sG,gBAAgB,CAAC,YAAY,CAAC;MAAC;IACrD,CAAC,CAAC;IACF+nG,eAAe,GAAGt2M,MAAM,CAACC,KAAK,CAAC;MAC3BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,YAAY,CAAC;MAAC;IAChD,CAAC,CAAC;IAEF6nG,kBAAkB,GAAGv2M,MAAM,CAACC,KAAK,CAAC;MAC9BG,EAAE,EAAE,oBAAoB;MACxBG,IAAI,EAAE,oBAAoB,GAAG2pG,YAAY,CAACynG,eAAe;MACzDjxM,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE8sG,gBAAgB,CAAC,oBAAoB,CAAC;MAAC;IAC7D,CAAC,CAAC;IACFioG,uBAAuB,GAAGx2M,MAAM,CAACC,KAAK,CAAC;MACnCI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,oBAAoB,CAAC;MAAC;IACxD,CAAC,CAAC;;IAEH;IACA;IACD;;IAEEviE,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvCgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IACtCwvC,OAAO,CAAC9uC,WAAW,CAACixG,SAAS,CAAC;IAE9BshG,uBAAuB,GAAGhwM,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvDyvM,uBAAuB,CAACnzM,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC/DizM,uBAAuB,CAACvyM,WAAW,CAAC44M,mBAAmB,CAAC;IACxD9pK,OAAO,CAAC9uC,WAAW,CAACuyM,uBAAuB,CAAC;IAE5CC,qBAAqB,GAAGjwM,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD0vM,qBAAqB,CAACpzM,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC7DkzM,qBAAqB,CAACxyM,WAAW,CAAC64M,iBAAiB,CAAC;IACpD/pK,OAAO,CAAC9uC,WAAW,CAACwyM,qBAAqB,CAAC;IAE1CC,eAAe,GAAGlwM,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/C2vM,eAAe,CAACrzM,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvDmzM,eAAe,CAACzyM,WAAW,CAAC84M,WAAW,CAAC;IACxCrG,eAAe,CAACzyM,WAAW,CAAC+4M,gBAAgB,CAAC;IAC7CjqK,OAAO,CAAC9uC,WAAW,CAACyyM,eAAe,CAAC;IAEpCC,cAAc,GAAGnwM,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9C4vM,cAAc,CAACtzM,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACtDozM,cAAc,CAAC1yM,WAAW,CAACg5M,UAAU,CAAC;IACtCtG,cAAc,CAAC1yM,WAAW,CAACi5M,eAAe,CAAC;IAC3CnqK,OAAO,CAAC9uC,WAAW,CAAC0yM,cAAc,CAAC;IAEnCC,sBAAsB,GAAGpwM,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtD6vM,sBAAsB,CAACvzM,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC9DqzM,sBAAsB,CAAC3yM,WAAW,CAACk5M,kBAAkB,CAAC;IACtDvG,sBAAsB,CAAC3yM,WAAW,CAACm5M,uBAAuB,CAAC;IAC3DrqK,OAAO,CAAC9uC,WAAW,CAAC2yM,sBAAsB,CAAC;EAC/C;EAEA,SAASthG,WAAWA,CAACA,WAAW,EAAE;IAC9B,IAAIA,WAAW,IAAI,aAAa,EAAE;MAC9BxE,YAAY,CAACh+C,MAAM,GAAG,GAAG;IAC7B;IACA,IAAIwiD,WAAW,IAAI,YAAY,EAAE;MAC7BxE,YAAY,CAACgyB,SAAS,GAAG,GAAG;IAChC;IACA,IAAIxtB,WAAW,IAAI,oBAAoB,EAAE;MACrCxE,YAAY,CAACynG,eAAe,GAAG,GAAG;MACpC;IACF;IACAzD,cAAc,CAAC,CAAC;EACpB;;EAEA;EACA,SAAS3/F,gBAAgBA,CAACkB,MAAM,EAAE;IAC9B;IACA3F,WAAW,GAAGn6F,KAAK,CAAC1P,KAAK,CAAC;MACtBgB,UAAU,EAAE,CAAC,mBAAmB,CAAC;MACjCkP,KAAK,EAAE;IACX,CAAC,CAAC;IACF;IACAk/L,gBAAgB,GAAGztM,QAAQ,CAAC3B,KAAK,CAAC;MAC9B8B,KAAK,EAAE,UAAU;MACjBF,UAAU,EAAE;IAChB,CAAC,CAAC;IAEFotM,qBAAqB,GAAGxrM,KAAK,CAACxD,KAAK,CAAC;MAChCU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,oBAAoB;MAC3BrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0oG,YAAY,CAACw/B;IACxB,CAAC,CAAC;IACFwlE,mBAAmB,GAAGzrM,KAAK,CAACxD,KAAK,CAAC;MAC9BU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,kBAAkB;MACzBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0oG,YAAY,CAACy/B;IACxB,CAAC,CAAC;IAEF2lE,gBAAgB,GAAG1tM,QAAQ,CAAC3B,KAAK,CAAC;MAC9B8B,KAAK,EAAE,UAAU;MACjBF,UAAU,EAAE;IAChB,CAAC,CAAC;IAEF0tM,wBAAwB,GAAG3tM,QAAQ,CAAC3B,KAAK,CAAC;MACtC8B,KAAK,EAAE,kBAAkB;MACzBF,UAAU,EAAE;IAChB,CAAC,CAAC;;IAEF;IACA+tG,SAAS,GAAG5vG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAYg1M,kBAAkB,CAAC;IAC7C,CAAC,CAAC;IACF5mG,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAMquG,oBAAoB,CAAC;IACzC,CAAC,CAAC;IACF,IAAI3jE,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACuyG,SAAS,CAAC;IAC9BzjE,OAAO,CAAC9uC,WAAW,CAACwyG,UAAU,CAAC;;IAE/B;IACA,IAAIJ,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,aAAa,EAC1C3F,WAAW,CAACzsG,WAAW,CAACgyM,gBAAgB,CAAC;IAC7C,IAAI5/F,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,qBAAqB,EAClD3F,WAAW,CAACzsG,WAAW,CAAC4xM,qBAAqB,CAAC;IAClD,IAAIx/F,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,mBAAmB,EAChD3F,WAAW,CAACzsG,WAAW,CAAC6xM,mBAAmB,CAAC;IAChD,IAAIz/F,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,YAAY,EACzC3F,WAAW,CAACzsG,WAAW,CAACiyM,gBAAgB,CAAC;IAC7C,IAAI7/F,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,oBAAoB,EACjD3F,WAAW,CAACzsG,WAAW,CAACkyM,wBAAwB,CAAC;IACrDzlG,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAEhCuqK,wBAAwB,CAAC,CAAC;IAC1BC,2BAA2B,CAAC,CAAC;IAC7BC,+BAA+B,CAAC,CAAC;IACjCpoK,cAAc,CAAC,CAAC;IAChB;;IAEA;IACA7+B,KAAK,CAAC9S,IAAI,CAACitG,WAAW,CAAC;EAC3B;;EAEA;EACA,eAAe4sG,wBAAwBA,CAAA,EAAG;IACtC,MAAM;MAAEG,wBAAwB,EAAEh2D;IAAU,CAAC,GAAG,MAAMsvB,OAAO,CAACrvB,uBAAuB,CAAC,CAAC;IACvF;IACA,IAAIn+I,IAAI,GAAGk+I,SAAS,CAACl6I,GAAG,CAACo6I,QAAQ,KAAK;MAClC3gJ,EAAE,EAAE2gJ,QAAQ,CAAC70F,MAAM;MACnB1qD,KAAK,EAAEu/I,QAAQ,CAAC70F,MAAM;MACtB3rD,IAAI,EAAEwgJ,QAAQ,CAACprF;IACnB,CAAC,CAAC,CAAC;IACHhzD,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC,CAAC,CAAC;IACrDqB,QAAQ,CAAC5E,QAAQ,CAAC,kBAAkB,EAAE2F,IAAI,EAAEunG,YAAY,CAACh+C,MAAM,CAAC;EACpE;EAEA,eAAe4qJ,8BAA8BA,CAAA,EAAG;IAC5C,MAAM;MAAED,wBAAwB,EAAEh2D;IAAU,CAAC,GAAG,MAAMsvB,OAAO,CAACrvB,uBAAuB,CAAC,CAAC;IACvF;IACA,IAAIn+I,IAAI,GAAGk+I,SAAS,CAACl6I,GAAG,CAACo6I,QAAQ,KAAK;MAClC3gJ,EAAE,EAAE2gJ,QAAQ,CAAC70F,MAAM;MACnB1qD,KAAK,EAAEu/I,QAAQ,CAAC70F,MAAM;MACtB3rD,IAAI,EAAEwgJ,QAAQ,CAACprF;IACnB,CAAC,CAAC,CAAC;IACHhzD,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC,CAAC,CAAC;IACrDqB,QAAQ,CAAC5E,QAAQ,CAAC,kBAAkB,EAAE2F,IAAI,EAAE8sM,kBAAkB,CAACvjJ,MAAM,CAAC;EAC1E;;EAEA;EACA,eAAeyqJ,2BAA2BA,CAAA,EAAG;IACzC,MAAM;MAAEI,2BAA2B,EAAEh7E;IAAS,CAAC,GAAG,MAAMo0C,OAAO,CAAC6mC,0BAA0B,CACtF/G,gBACJ,CAAC;IACD;IACA,IAAIttM,IAAI,GAAGo5H,QAAQ,CAACp1H,GAAG,CAACujH,OAAO,KAAK;MAChC9pH,EAAE,EAAE8pH,OAAO,CAAC+sF,WAAW;MACvBz1M,KAAK,EAAE0oH,OAAO,CAACgS,SAAS;MACxB37H,IAAI,EAAE2pH,OAAO,CAAC/+D;IAClB,CAAC,CAAC,CAAC;IACHxoD,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC,CAAC,CAAC;IACrDqB,QAAQ,CAAC5E,QAAQ,CAAC,kBAAkB,EAAE2F,IAAI,EAAEunG,YAAY,CAACgyB,SAAS,CAAC;EACvE;;EAEA;EACA,eAAe06E,+BAA+BA,CAAA,EAAG;IAC7C,IAAIz7F,WAAW,GAAGwgC,mBAAmB,CAAChzH,IAAI,CAAC,IAAI,CAAC;IAEhD,MAAM;MAAEuuL,iCAAiC,EAAEC;IAAiB,CAAC,GACzD,MAAMhnC,OAAO,CAACinC,gCAAgC,CAACj8F,WAAW,CAAC;IAC/D;IACA,IAAIx4G,IAAI,GAAGw0M,gBAAgB,CAACxwM,GAAG,CAAC0wM,eAAe,KAAK;MAChDj3M,EAAE,EAAEi3M,eAAe,CAAC1F,eAAe;MACnCnwM,KAAK,EAAE61M,eAAe,CAAC1F,eAAe;MACtCpxM,IAAI,EAAE82M,eAAe,CAAC1F;IAC1B,CAAC,CAAC,CAAC;IACHhvM,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC,CAAC,CAAC;IACrDqB,QAAQ,CAAC5E,QAAQ,CAAC,0BAA0B,EAAE2F,IAAI,EAAEunG,YAAY,CAACynG,eAAe,CAAC;IAClF;EACH;;EAEC;EACA,eAAe2F,qCAAqCA,CAACxF,UAAU,EAAE;IAC9D,IAAI32F,WAAW,GAAGwgC,mBAAmB,CAAChzH,IAAI,CAAC,IAAI,CAAC;IAEhD,MAAM;MAAEuuL,iCAAiC,EAAEC;IAAiB,CAAC,GACzD,MAAMhnC,OAAO,CAACinC,gCAAgC,CAACj8F,WAAW,EAAEs0F,kBAAkB,CAAC/lE,gBAAgB,EAAE+lE,kBAAkB,CAAC9lE,cAAc,EAAEmoE,UAAU,CAAC;IACnJ;IACA,IAAInvM,IAAI,GAAGw0M,gBAAgB,CAACxwM,GAAG,CAAC0wM,eAAe,KAAK;MAChDj3M,EAAE,EAAEi3M,eAAe,CAAC1F,eAAe;MACnCnwM,KAAK,EAAE61M,eAAe,CAAC1F,eAAe;MACtCpxM,IAAI,EAAE82M,eAAe,CAAC1F;IAC1B,CAAC,CAAC,CAAC;IACHhvM,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC,CAAC,CAAC;IACnD;;IAEA,IAAI2pG,YAAY,CAACynG,eAAe,KAAK,GAAG,IAAIznG,YAAY,CAACynG,eAAe,KAAK,KAAK,EAAE;MACnF/vM,QAAQ,CAAC5E,QAAQ,CAAC,gCAAgC,EAAE2F,IAAI,EAAE8sM,kBAAkB,CAACkC,eAAe,CAAC;IAC9F,CAAC,MAAM;MACN/vM,QAAQ,CAAC5E,QAAQ,CAAC,gCAAgC,EAAE2F,IAAI,EAAEunG,YAAY,CAACynG,eAAe,CAAC;MACvFlC,kBAAkB,CAACkC,eAAe,GAAGznG,YAAY,CAACynG,eAAe;MACjE4F,8BAA8B,CAAC,CAAC;IACjC;EAEH;;EAEA;EACA,eAAe1D,mCAAmCA,CAACpxJ,UAAU,EAAEwrE,WAAW,EAAE;IACxE,MAAM;MAAEwlF,6BAA6B,EAAE13E;IAAS,CAAC,GAAG,MAAMo0C,OAAO,CAACwjC,4BAA4B,CAC1FlxJ,UAAU,EACVwrE,WACJ,CAAC;IACD;;IAEA;IACA,IAAItrH,IAAI,GAAGo5H,QAAQ,CAACp1H,GAAG,CAACujH,OAAO,KAAK;MAChC;MACA9pH,EAAE,EAAE8pH,OAAO,CAAC4nF,UAAU;MACtBtwM,KAAK,EAAE0oH,OAAO,CAACgS,SAAS;MACxB37H,IAAI,EAAE2pH,OAAO,CAAC/+D,WAAW,GAAG,WAAW,GAAG++D,OAAO,CAACynF;IACtD,CAAC,CAAC,CAAC;IACHhvM,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,0BAA0B,EAAE2F,IAAI,CAAC;IACnD;IACA;IACAytM,uBAAuB,CAAC3zM,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACjDwzM,wBAAwB,CAAC1zM,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;EACnD;;EAEA;EACA,eAAe03M,yCAAyCA,CAAC5xJ,UAAU,EAAE;IACjE,MAAM;MAAEs0J,2BAA2B,EAAEh7E;IAAS,CAAC,GAAG,MAAMo0C,OAAO,CAAC6mC,0BAA0B,CACtF9G,2BACJ,CAAC;IACD;IACA;IACA,IAAIvtM,IAAI,GAAGo5H,QAAQ,CAACp1H,GAAG,CAACujH,OAAO,KAAK;MAChC;MACA9pH,EAAE,EAAE8pH,OAAO,CAAC4nF,UAAU;MACtBtwM,KAAK,EAAE0oH,OAAO,CAACgS,SAAS;MACxB37H,IAAI,EAAE2pH,OAAO,CAAC/+D;IAClB,CAAC,CAAC,CAAC;IACHxoD,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,yBAAyB,EAAE2F,IAAI,CAAC;EACtD;EAEA,SAAS6rC,cAAcA,CAAA,EAAG;IACtBygK,qBAAqB,CAAClvM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACtD,IAAIA,KAAK,CAACC,MAAM,CAACgE,KAAK,KAAK,EAAE,EAAE;QAC3B0oG,YAAY,CAACw/B,gBAAgB,GAAGnsI,KAAK,CAACC,MAAM,CAACgE,KAAK;MACtD,CAAC,MAAM;QACHjE,KAAK,CAACC,MAAM,CAACgE,KAAK,GAAG0oG,YAAY,CAACw/B,gBAAgB;MACtD;IACJ,CAAC,CAAC;IACFwlE,mBAAmB,CAACnvM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpD,IAAIA,KAAK,CAACC,MAAM,CAACgE,KAAK,KAAK,EAAE,EAAE;QAC3B0oG,YAAY,CAACy/B,cAAc,GAAGpsI,KAAK,CAACC,MAAM,CAACgE,KAAK;MACpD,CAAC,MAAM;QACHjE,KAAK,CAACC,MAAM,CAACgE,KAAK,GAAG0oG,YAAY,CAACy/B,cAAc;MACpD;IACJ,CAAC,CAAC;IACF0lE,gBAAgB,CAACtvM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD2sG,YAAY,CAACh+C,MAAM,GAAG3uD,KAAK,CAACC,MAAM,CAACgE,KAAK;MACxC0oG,YAAY,CAACv0C,QAAQ,GAAGp4D,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAAC9B,IAAI;IACjF,CAAC,CAAC;IACF+uM,gBAAgB,CAACvvM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD2sG,YAAY,CAACgyB,SAAS,GAAG3+H,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC3C0oG,YAAY,CAAC/+C,WAAW,GAAG5tD,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAAC9B,IAAI;IACpF,CAAC,CAAC;IACFgvM,wBAAwB,CAACxvM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACzD2sG,YAAY,CAACynG,eAAe,GAAGp0M,KAAK,CAACC,MAAM,CAACgE,KAAK;MAClD;IACH,CAAC,CAAC;IACF;IACA;IACA;EACJ;EAEA,eAAei1M,kBAAkBA,CAAA,EAAG;IAChC9mM,KAAK,CAAC/S,IAAI,CAACktG,WAAW,CAAC;IACvBt7D,cAAc,CAAC,CAAC;IAChB0/J,cAAc,CAAC,CAAC;;IAEhB;IACA;IACA;IACA;EACJ;EAEA,SAASp+F,oBAAoBA,CAAA,EAAG;IAC5BngG,KAAK,CAAC/S,IAAI,CAACktG,WAAW,CAAC;IACvB;IACA;EACJ;EAEA,SAAS0tG,4BAA4BA,CAAA,EAAG;IACpC7nM,KAAK,CAAC/S,IAAI,CAAC66M,mBAAmB,CAAC;IAC/B;IACA;EACJ;EACC;EACA,SAASjC,oBAAoBA,CAAC1D,UAAU,EAAE;IAEvC,IAAI,CAACpC,aAAa,EAAE;MAChBA,aAAa,GAAG,IAAI/4L,IAAI,CAAC,CAAC;MAC1B+4L,aAAa,CAAC3sL,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;MAC1B2sL,aAAa,CAACvoL,QAAQ,CAACuoL,aAAa,CAAC7sL,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACrD6sL,aAAa,CAAC3sL,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B;IAED,IAAI,CAAC4sL,WAAW,EAAE;MACdA,WAAW,GAAG,IAAIh5L,IAAI,CAAC,CAAC;MACxBg5L,WAAW,CAAC5sL,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B;IAEA0sL,kBAAkB,GAAG;MACjBjjK,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACvB;MACA;MACCozF,gBAAgB,EAAEgmE,aAAa,CAACgI,WAAW,CAAC,CAAC,CAAC32L,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC3D4oH,cAAc,EAAEgmE,WAAW,CAAC+H,WAAW,CAAC,CAAC,CAAC32L,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAEtDmrC,MAAM,EAAE;MACT;MACA;MACA;MACA;IACJ,CAAC;;IAGD;IACA6iJ,iBAAiB,GAAGp/L,KAAK,CAAC1P,KAAK,CAAC;MAC5BgB,UAAU,EAAE,CAAC,mBAAmB,CAAC;MACjCkP,KAAK,EAAE;IACX,CAAC,CAAC;IACF;IACAk/L,gBAAgB,GAAGztM,QAAQ,CAAC3B,KAAK,CAAC;MAC9B8B,KAAK,EAAE,UAAU;MACjBF,UAAU,EAAE;MACd;IACF,CAAC,CAAC;IAEFstM,2BAA2B,GAAG1rM,KAAK,CAACxD,KAAK,CAAC;MACtCU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,oBAAoB;MAC3BrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEiuM,kBAAkB,CAAC/lE;IAC9B,CAAC,CAAC;IACF0lE,yBAAyB,GAAG3rM,KAAK,CAACxD,KAAK,CAAC;MACpCU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,kBAAkB;MACzBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEiuM,kBAAkB,CAAC9lE;IAC9B,CAAC,CAAC;IAEF6lE,8BAA8B,GAAG5tM,QAAQ,CAAC3B,KAAK,CAAC;MAC5C8B,KAAK,EAAE,kBAAkB;MACzBF,UAAU,EAAE,gCAAgC;MAC5CzB,EAAE,EAAE;MACJ;IACJ,CAAC,CAAC;;IAEF;IACAouM,0BAA0B,GAAGxuM,MAAM,CAACC,KAAK,CAAC;MACtCM,IAAI,EAAE,eAAeuxM,UAAU,EAAE;MACjCpxM,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAYk2M,wBAAwB,CAAC7F,UAAU;IAC7D,CAAC,CAAC;IACFjiG,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAMkO,KAAK,CAAC/S,IAAI,CAACmyM,iBAAiB;IAChD,CAAC,CAAC;IACF,IAAI5iK,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACmxM,0BAA0B,CAAC;IAC/CriK,OAAO,CAAC9uC,WAAW,CAACwyG,UAAU,CAAC;;IAE/B;;IAEIk/F,iBAAiB,CAAC1xM,WAAW,CAACgyM,gBAAgB,CAAC;IAE/CN,iBAAiB,CAAC1xM,WAAW,CAAC8xM,2BAA2B,CAAC;IAE1DJ,iBAAiB,CAAC1xM,WAAW,CAAC+xM,yBAAyB,CAAC;IAExDL,iBAAiB,CAAC1xM,WAAW,CAACmyM,8BAA8B,CAAC;IAC7DT,iBAAiB,CAAC1xM,WAAW,CAAC8uC,OAAO,CAAC;IAE1C2qK,8BAA8B,CAAC,CAAC;IAChCQ,qCAAqC,CAACxF,UAAU,CAAC;IACjD8F,oBAAoB,CAAC9F,UAAU,CAAC;IAChC;IACA;;IAIA;IACA,MAAMuD,UAAU,GAAGz1M,QAAQ,CAACiD,cAAc,CAAC,qBAAqB,CAAC;IAC7DwyM,UAAU,CAAC34M,MAAM,CAAC,CAAC;IAEvBiT,KAAK,CAAC9S,IAAI,CAACkyM,iBAAiB,CAAC;IAC7BwI,8BAA8B,CAAC,CAAC;EAEpC;EAEA,eAAeI,wBAAwBA,CAAC7F,UAAU,EAAE;IAChDniM,KAAK,CAAC/S,IAAI,CAACmyM,iBAAiB,CAAC;IAC7B6I,oBAAoB,CAAC9F,UAAU,CAAC;IAChCgD,4BAA4B,CAAChD,UAAU,CAAC;IAExC5D,cAAc,CAAC,CAAC;EAEpB;EAGA,SAAS0J,oBAAoBA,CAAC9F,UAAU,EAAE;IACtC3C,2BAA2B,CAACpvM,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC3D,IAAIA,KAAK,CAACC,MAAM,CAACgE,KAAK,KAAK,EAAE,EAAE;QAC3BiuM,kBAAkB,CAAC/lE,gBAAgB,GAAGnsI,KAAK,CAACC,MAAM,CAACgE,KAAK;QACxD81M,qCAAqC,CAACxF,UAAU,CAAC;MACrD,CAAC,MAAM;QACHv0M,KAAK,CAACC,MAAM,CAACgE,KAAK,GAAGiuM,kBAAkB,CAAC/lE,gBAAgB;MAE5D;IACJ,CAAC,CAAC;IACF0lE,yBAAyB,CAACrvM,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzD,IAAIA,KAAK,CAACC,MAAM,CAACgE,KAAK,KAAK,EAAE,EAAE;QAC3BiuM,kBAAkB,CAAC9lE,cAAc,GAAGpsI,KAAK,CAACC,MAAM,CAACgE,KAAK;QACtD81M,qCAAqC,CAACxF,UAAU,CAAC;MACrD,CAAC,MAAM;QACHv0M,KAAK,CAACC,MAAM,CAACgE,KAAK,GAAGiuM,kBAAkB,CAAC9lE,cAAc;MAE1D;IACJ,CAAC,CAAC;IACF0lE,gBAAgB,CAACtvM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjDkyM,kBAAkB,CAACvjJ,MAAM,GAAG3uD,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9CiuM,kBAAkB,CAAC95I,QAAQ,GAAGp4D,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAAC9B,IAAI;IACvF,CAAC,CAAC;IAEFivM,8BAA8B,CAACzvM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC/DkyM,kBAAkB,CAACkC,eAAe,GAAGp0M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACvD+1M,8BAA8B,CAAC,CAAC;IACpC,CAAC,CAAC;EAEN;EAEA,SAASA,8BAA8BA,CAAA,EAAG;IACvC;IACA,IAAIM,8BAA8B,GAAGj4M,QAAQ,CAACiD,cAAc,CAAC,gCAAgC,CAAC;IAC7F,IAAIg1M,8BAA8B,CAACr2M,KAAK,KAAK,EAAE,IAAIq2M,8BAA8B,CAACr2M,KAAK,KAAK,GAAG,EAAE;MAC7Fq2M,8BAA8B,CAAC9xM,aAAa,CAACtJ,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACnE6xM,0BAA0B,CAAC/xM,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACpD;IACJ,CAAC,MAAM;MACHk7M,8BAA8B,CAAC9xM,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACtE8xM,0BAA0B,CAAC/xM,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC3D;EAEJ;EAEA,SAASg5M,wBAAwBA,CAAA,EAAG;IAChC;IACA+B,mBAAmB,GAAG9nM,KAAK,CAAC1P,KAAK,CAAC;MAC9BgB,UAAU,EAAE,CAAC,mBAAmB,CAAC;MACjCkP,KAAK,EAAE;IACX,CAAC,CAAC;IAGT2gM,sBAAsB,GAAGrtM,KAAK,CAACxD,KAAK,CAAC;MAChC8B,KAAK,EAAE,iBAAiB;MACxBpB,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACrBO,KAAK,EAAEktM,kBAAkB;MAC3B;MACCnqM,cAAc,EAAE,IAAI;MACpB9C,QAAQ,EAAEU,CAAC,IAAI;QACbusM,kBAAkB,GAAGvsM,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACrC;IACF,CAAC,CAAC;IACFsvM,sBAAsB,CAACr0M,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;;IAE/C;IACAizG,SAAS,GAAG5vG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MAChBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB,MAAM0kD,OAAO,GAAG,MAAMgqH,OAAO,CAAC2nC,oBAAoB,CAClD;UAAE9rD,QAAQ,EAAEgjD,wBAAwB;UACnC9iJ,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;UACxB4qK,WAAW,EAAErJ;QAChB,CAAC,CAAC;QACF/+L,KAAK,CAAC/S,IAAI,CAAC66M,mBAAmB,CAAC;QAC9BvJ,cAAc,CAAC,CAAC;MACjB;IACL,CAAC,CAAC;IACFr+F,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAGA,CAAA,KAAM;QAEZ+1M,4BAA4B,CAAC,CAAC;QAC9BtJ,cAAc,CAAC,CAAC;MACrB;IACJ,CAAC,CAAC;IAGF,IAAI/hK,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACuyG,SAAS,CAAC;IAC9BzjE,OAAO,CAAC9uC,WAAW,CAACwyG,UAAU,CAAC;IAE/B,IAAImoG,mBAAmB,GAAGp4M,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACtD63M,mBAAmB,CAACj7M,SAAS,GACzB,wBAAwB;IAE5Bi7M,mBAAmB,CAACt3M,KAAK,CAAC4zE,OAAO,GAAG,MAAM;IAE1CmjI,mBAAmB,CAACp6M,WAAW,CAAC26M,mBAAmB,CAAC;IAC1DP,mBAAmB,CAACp6M,WAAW,CAACyzM,sBAAsB,CAAC;IACpD2G,mBAAmB,CAACp6M,WAAW,CAAC8uC,OAAO,CAAC;;IAErC;IACAx8B,KAAK,CAAC9S,IAAI,CAAC46M,mBAAmB,CAAC;IAC/BQ,iCAAiC,CAAC,CAAC;IACnCC,gCAAgC,CAAC,CAAC;EACtC;EAEA,SAASD,iCAAiCA,CAAA,EAAG;IACzC,IAAIE,mBAAmB,GAAGV,mBAAmB,CAAC53M,aAAa,CAAC,UAAU,CAAC;IAEvE,IAAIs4M,mBAAmB,CAAC32M,KAAK,KAAK,EAAE,EAAE;MAClCsvM,sBAAsB,CAACr0M,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACjD,CAAC,MAAM;MACHm0M,sBAAsB,CAACr0M,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACpD;IAEAosJ,YAAY,CAAC,CAAC;EAClB;EAEA,SAASA,YAAYA,CAAA,EAAG;IACpB,IAAI32C,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACqrM,mBAAmB,CAACxxM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7E,IAAKksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAG;MAC1B0yG,SAAS,CAACnzG,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC,CAAC,MAAM;MACLizG,SAAS,CAACnzG,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC;EAEJ;EACA,SAASw7M,gCAAgCA,CAAA,EAAG;IAC3C;IACApH,sBAAsB,CAAC/wM,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACrDmxM,kBAAkB,GAAGnxM,KAAK,CAACC,MAAM,CAACgE,KAAK;MACvCy2M,iCAAiC,CAAC,CAAC;IACrC,CAAC,CAAC;EACN;EAGF,SAASn4M,IAAIA,CAAA,EAAG;IACZ;IACA;IACA;;IAEAszG,wBAAwB,CAAC,KAAK,CAAC;IAC/BtkG,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvB28F,OAAO,CAACoH,cAAc,CAAC,CAAC;EAC5B;EAEA,OAAO;IACHhzG,IAAI;IACJ/B,oBAAoB;IACpBmwM,cAAc;IACdgF,sBAAsB;IACtBG;EACJ,CAAC;AACL,CAAC,EAAE,CAAC;AC7rDJ,IAAIljC,OAAO,GAAI,YAAY;EACzB;EACI,eAAeuhC,kBAAkBA,CAACv2F,WAAW,EAAEtiE,gBAAgB,EAAEC,cAAc,EAAEoT,MAAM,EAAE0vD,WAAW,EAAE+1F,eAAe,EAAE;IACzH,IAAI;MACF,MAAMr+K,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iBAAiB;QACnBxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpB6kE,WAAW,GACX,yBAAyB,GACzBtiE,gBAAgB,GAChB,uBAAuB,GACvBC,cAAc,GACd,eAAe,GACfoT,MAAM,GACN,oBAAoB,GACpB0vD,WAAW,GACX,wBAAwB,GACxB+1F,eAAe,GACf,IAAI;QACN/kJ,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;EACA;EACA,eAAe+lC,uBAAuBA,CAAA,EAAG;IACvC,IAAI;MACF,MAAMxtH,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sBAAsB;QACxBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACnBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAEnB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;EACA;EACA,eAAeq9F,yBAAyBA,CAAC31J,UAAU,EAAE;IACnD,IAAI;MACF,MAAMnvB,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;QAC1BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACnBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBmM,UAAU,EAAEA;QAEd,CAAC,CAAC;QACFmK,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;;EAEA;EACA,eAAeq1D,uBAAuBA,CAAA,EAAG;IACvC,IAAI;MACF,MAAM98I,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sBAAsB;QACxBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACnBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAEnB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;EACA;EACA,eAAeg3D,mBAAmBA,CAAC7C,UAAU,EAAE;IAC7C,IAAI;MACF,MAAM57I,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kBAAkB;QACpBxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnB44H,UAAU,GACV,IAAI;QACNtiH,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;EACA;EACA,eAAe42D,mBAAmBA,CAChCzC,UAAU,EACVC,YAAY,EACZjvD,QAAQ,EACRE,QAAQ,EACRE,IAAI,EACJlzE,KAAK,EACLy0G,OAAO,EACP;IACA,IAAI;MACF,MAAMvuH,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kBAAkB;QACpBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACnBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB44H,UAAU;UACVC,YAAY;UACZjvD,QAAQ;UACRE,QAAQ;UACRE,IAAI;UACJlzE,KAAK;UACLy0G,OAAO;UACP31F,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B;QACpB,CAAC,CAAC;QACFyf,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;EACA;EACA,eAAei2D,mBAAmBA,CAChC7B,YAAY,EACZjvD,QAAQ,EACRE,QAAQ,EACRE,IAAI,EACJlzE,KAAK,EACLy0G,OAAO,EACP;IACA,IAAI;MACF,MAAMvuH,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kBAAkB;QACpBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACnBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB64H,YAAY;UACZjvD,QAAQ;UACRE,QAAQ;UACRE,IAAI;UACJlzE,KAAK;UACLy0G,OAAO;UACP31F,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B;QACpB,CAAC,CAAC;QACFyf,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;EACA;EACA,SAASw1D,WAAWA,CAACrB,UAAU,EAAEztK,QAAQ,EAAE;IACzCuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,mBAAmB;MACtIxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAG44H,UAAU,GAAG,IAAI;MAC9EtiH,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACsrJ,qBAAqB;QACxC52M,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClC;MAAA;IAEJ,CAAC,CAAC;EACJ;EAEA,eAAempM,oBAAoBA,CAACj9F,YAAY,EAAE;IAChD;IACA,IAAI;MACA,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;QAC5BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,OAAO;QACH,GAAGnqD,IAAI,CAAC21M;MACZ,CAAC;IACL,CAAC,CAAC,OAAO3pM,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACtB;EACJ;;EAGE;EACA,eAAeqoM,0BAA0BA,CAACuB,eAAe,EAAE;IACzD,IAAI;MACF,MAAMjlL,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,yBAAyB;QAC3BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACnBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBiiK,eAAe,EAAEA;QAEnB,CAAC,CAAC;QACF3rJ,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;EAEA,eAAeq8F,gCAAgCA,CAACj8F,WAAW,EAAErmF,SAAS,EAAEE,OAAO,EAAE88K,UAAU,EAAE;IAC3F,IAAI;MACF,MAAMx+K,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;QACjCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACnBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB6kE,WAAW,EAAEA,WAAW;UACxBrmF,SAAS,EAAEA,SAAS;UACpBE,OAAO,EAAEA,OAAO;UAChB88K,UAAU,EAAEA;QAEd,CAAC,CAAC;QACFllJ,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;;EAEA;EACA,eAAe44F,4BAA4BA,CAAClxJ,UAAU,EAAEwrE,WAAW,EAAE;IACnE,IAAI;MACF,MAAM36F,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;QAC7BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACnBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBmM,UAAU,EAAEA,UAAU;UACtBwrE,WAAW,EAAEA;QAEf,CAAC,CAAC;QACFrhE,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;;EAEA;EACA,eAAey9F,oBAAoBA,CAAA,EAAG;IACpC,IAAI;MACF,MAAMllL,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,mBAAmB;QACrBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACnBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAEnB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;;EAEA;EACA,eAAe09F,gBAAgBA,CAAA,EAAG;IAChC,IAAI;MACF,MAAMnlL,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,eAAe;QACjBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACnBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAEnB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;EACA;EACC,eAAe29F,sBAAsBA,CAACjlB,QAAQ,EAAE;IAC/C,IAAI;MACF,MAAMngK,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;QACvBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACnBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBqiK,QAAQ,EAAEllB;QAEZ,CAAC,CAAC;QACF7mI,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;;EAEC;EACA,eAAe69F,kBAAkBA,CAAA,EAAG;IACnC,IAAI;MACF,MAAMtlL,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iBAAiB;QACnBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACnBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAEnB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;;EAEC;EACA,eAAem6D,iBAAiBA,CAACzyH,UAAU,EAAE;IAC5C,IAAI;MACF,MAAMnvB,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,mBAAmB;QACrBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACnBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBmM,UAAU,EAAEA;QAEd,CAAC,CAAC;QACFmK,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;EACA;EACA,SAASk3F,gCAAgCA,CAACxnF,UAAU,EAAEhpH,QAAQ,EAAE;IAC9DuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,wCAAwC;MAC3JxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGm0E,UAAU,GAAG,IAAI;MAC9E79D,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC8rJ,0CAA0C;QAC7Dp3M,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClC;MAAA;IAEJ,CAAC,CAAC;EACJ;;EAEA;EACA,SAASmqM,mCAAmCA,CAACn2M,IAAI,EAAElB,QAAQ,EAAE;IACzDkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3BgoE,UAAU,EAAE9nH,IAAI,CAAC8nH,UAAU;MAC3BwD,WAAW,EAAEtrH,IAAI,CAACsrH,WAAW;MAC7Bh4F,SAAS,EAAEtzB,IAAI,CAACszB,SAAS;MACzBf,OAAO,EAAEvyB,IAAI,CAACuyB,OAAO;MACrB6jL,QAAQ,EAAEp2M,IAAI,CAACo2M,QAAQ;MACvBzoC,QAAQ,EAAE3tK,IAAI,CAAC2tK,QAAQ;MACvB0oC,WAAW,EAAEr2M,IAAI,CAACq2M,WAAW;MAC7BC,gBAAgB,EAAEt2M,IAAI,CAACs2M,gBAAgB;MACvCC,OAAO,EAAEv2M,IAAI,CAACu2M,OAAO;MACrBC,WAAW,EAAEx2M,IAAI,CAACw2M,WAAW;MAC7BC,mBAAmB,EAAEz2M,IAAI,CAACy2M,mBAAmB;MAC7C/rD,KAAK,EAAE1qJ,IAAI,CAAC0qJ,KAAK;MACjBnhG,MAAM,EAAEvpD,IAAI,CAACupD,MAAM;MACnBwH,WAAW,EAAE/wD,IAAI,CAAC+wD,WAAW;MAC7B2lJ,SAAS,EAAE12M,IAAI,CAAC02M;IACf,CAAC;IACN,OAAOrrM,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,uCAAuC;MAC1JxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAACusJ,yCAAyC,CAAC;MAC5D;IACA,CAAC,CAAC;EACJ;;EAEA;EACA,SAASC,mCAAmCA,CAAC52M,IAAI,EAAElB,QAAQ,EAAE;IAC3DkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3BgoE,UAAU,EAAE9nH,IAAI,CAAC8nH,UAAU;MAC3BwD,WAAW,EAAEtrH,IAAI,CAACsrH,WAAW;MAC7Bh4F,SAAS,EAAEtzB,IAAI,CAACszB,SAAS;MACzBf,OAAO,EAAEvyB,IAAI,CAACuyB,OAAO;MACrB6jL,QAAQ,EAAEp2M,IAAI,CAACo2M,QAAQ;MACvBzoC,QAAQ,EAAE3tK,IAAI,CAAC2tK,QAAQ;MACvB0oC,WAAW,EAAEr2M,IAAI,CAACq2M,WAAW;MAC7BC,gBAAgB,EAAEt2M,IAAI,CAACs2M,gBAAgB;MACvCC,OAAO,EAAEv2M,IAAI,CAACu2M,OAAO;MACrBC,WAAW,EAAEx2M,IAAI,CAACw2M,WAAW;MAC7BC,mBAAmB,EAAEz2M,IAAI,CAACy2M,mBAAmB;MAC7C/rD,KAAK,EAAE1qJ,IAAI,CAAC0qJ,KAAK;MACjBviC,aAAa,EAAEnoH,IAAI,CAACmoH,aAAa;MACjC5+D,MAAM,EAAEvpD,IAAI,CAACupD,MAAM;MACnBgwE,SAAS,EAAEv5H,IAAI,CAACu5H,SAAS;MACzBy1E,eAAe,EAAEhvM,IAAI,CAACgvM,eAAe;MACrCj+I,WAAW,EAAE/wD,IAAI,CAAC+wD,WAAW;MAC7B2lJ,SAAS,EAAE12M,IAAI,CAAC02M;IAEf,CAAC;IACN,OAAOrrM,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,uCAAuC;MAC1JxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAACysJ,yCAAyC,CAAC;MAC5D;IACA,CAAC,CAAC;EACF;;EAEA;EACA;EACA,eAAeC,uBAAuBA,CAAChvF,UAAU,EAAE;IACjD,IAAI;MACF,MAAMn3F,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sBAAsB;QACxBxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnBm0E,UAAU,GACV,IAAI;QACN79D,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;;EAGA;EACA,SAASq3F,sBAAsBA,CAACsH,UAAU,EAAEj4M,QAAQ,EAAE;IACpDuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,8BAA8B;MACjJxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGojK,UAAU,GAAG,IAAI;MAC9E9sJ,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC4sJ,gCAAgC,CAAC,CAAC,CAAC;QACtDl4M,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClC;MAAA;IAEJ,CAAC,CAAC;EACJ;;EAEA;EACA,SAASirM,yBAAyBA,CAACj3M,IAAI,EAAElB,QAAQ,EAAE;IAC/CkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3Bi3J,UAAU,EAAE/2M,IAAI,CAAC+2M,UAAU;MAC3BG,YAAY,EAAEl3M,IAAI,CAACk3M,YAAY;MAC/BC,iBAAiB,EAAEn3M,IAAI,CAACm3M,iBAAiB;MACzCC,qBAAqB,EAAEp3M,IAAI,CAACo3M,qBAAqB;MACjDC,gBAAgB,EAAEr3M,IAAI,CAACq3M,gBAAgB;MACvCC,mBAAmB,EAAEt3M,IAAI,CAACs3M,mBAAmB;MAAI;MACjDC,oBAAoB,EAAEv3M,IAAI,CAACu3M,oBAAoB;MAC/CC,6BAA6B,EAAEx3M,IAAI,CAACw3M,6BAA6B;MACjEC,oBAAoB,EAAEz3M,IAAI,CAACy3M,oBAAoB;MAAI;MACnDC,0BAA0B,EAAE13M,IAAI,CAAC03M,0BAA0B;MAAG;MAC9DC,kCAAkC,EAAE33M,IAAI,CAAC23M,kCAAkC;MAAG;MAC9EC,+BAA+B,EAAE53M,IAAI,CAAC43M,+BAA+B;MAAG;MACxEC,4BAA4B,EAAE73M,IAAI,CAAC63M,4BAA4B;MAAI;MACnEtuJ,MAAM,EAAEvpD,IAAI,CAACupD;IACZ,CAAC;IACN,OAAOl+C,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,6BAA6B;MAChJxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAAC0tJ,+BAA+B,CAAC;MAClD;IACA,CAAC,CAAC;EACJ;;EAEA;EACA,SAASC,yBAAyBA,CAAC/3M,IAAI,EAAElB,QAAQ,EAAE;IACjDkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3Bo3J,YAAY,EAAEl3M,IAAI,CAACk3M,YAAY;MAC/BC,iBAAiB,EAAEn3M,IAAI,CAACm3M,iBAAiB;MACzCC,qBAAqB,EAAEp3M,IAAI,CAACo3M,qBAAqB;MACjDC,gBAAgB,EAAEr3M,IAAI,CAACq3M,gBAAgB;MACvCC,mBAAmB,EAAEt3M,IAAI,CAACs3M,mBAAmB;MAAI;MACjDC,oBAAoB,EAAEv3M,IAAI,CAACu3M,oBAAoB;MAC/CC,6BAA6B,EAAEx3M,IAAI,CAACw3M,6BAA6B;MACjEC,oBAAoB,EAAEz3M,IAAI,CAACy3M,oBAAoB;MAAI;MACnDC,0BAA0B,EAAE13M,IAAI,CAAC03M,0BAA0B;MAAG;MAC9DC,kCAAkC,EAAE33M,IAAI,CAAC23M,kCAAkC;MAAG;MAC9EC,+BAA+B,EAAE53M,IAAI,CAAC43M,+BAA+B;MAAG;MACxEC,4BAA4B,EAAE73M,IAAI,CAAC63M,4BAA4B;MAAG;MAClEtuJ,MAAM,EAAEvpD,IAAI,CAACupD,MAAM;MACnBgwE,SAAS,EAAEv5H,IAAI,CAACu5H;IACf,CAAC;IACN,OAAOluH,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,6BAA6B;MAChJxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAAC4tJ,+BAA+B,CAAC;MAClD;IACA,CAAC,CAAC;EACF;;EAEA;EACA,eAAeC,6BAA6BA,CAAClB,UAAU,EAAE;IACvD,IAAI;MACF,MAAMpmL,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;QAC9BxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnBojK,UAAU,GACV,IAAI;QACN9sJ,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;;EAEI;EACA,SAASu3F,sBAAsBA,CAAC7nF,UAAU,EAAEhpH,QAAQ,EAAE;IACpDuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,0BAA0B;MAC7IxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGm0E,UAAU,GAAG,IAAI;MAC9E79D,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC8tJ,4BAA4B;QAC/Cp5M,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClC;MAAA;IAEJ,CAAC,CAAC;EACJ;;EAEA;EACA,SAASmsM,yBAAyBA,CAACn4M,IAAI,EAAElB,QAAQ,EAAE;IAC/CkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3BgoE,UAAU,EAAE9nH,IAAI,CAAC8nH,UAAU;MAC3BwD,WAAW,EAAEtrH,IAAI,CAACsrH,WAAW;MAC7B8qF,QAAQ,EAAEp2M,IAAI,CAACo2M,QAAQ;MACvBgC,aAAa,EAAEp4M,IAAI,CAACo4M,aAAa;MACjCC,SAAS,EAAEr4M,IAAI,CAACq4M;IACf,CAAC;IACN,OAAOhtM,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,6BAA6B;MAChJxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAACkuJ,+BAA+B,CAAC;MAClD;IACA,CAAC,CAAC;EACJ;;EAEA;EACA,SAASC,yBAAyBA,CAACv4M,IAAI,EAAElB,QAAQ,EAAE;IACjDkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACpBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3BgoE,UAAU,EAAE9nH,IAAI,CAAC8nH,UAAU;MAC3BwD,WAAW,EAAEtrH,IAAI,CAACsrH,WAAW;MAC7B8qF,QAAQ,EAAEp2M,IAAI,CAACo2M,QAAQ;MACvBgC,aAAa,EAAEp4M,IAAI,CAACo4M,aAAa;MACjCC,SAAS,EAAEr4M,IAAI,CAACq4M,SAAS;MACzB9uJ,MAAM,EAAEvpD,IAAI,CAACupD,MAAM;MACnBgwE,SAAS,EAAEv5H,IAAI,CAACu5H,SAAS;MACzBy1E,eAAe,EAAEhvM,IAAI,CAACgvM,eAAe;MACrC7mF,aAAa,EAAEnoH,IAAI,CAACmoH;IAErB,CAAC;IACN,OAAO98G,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,6BAA6B;MAChJxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAACouJ,+BAA+B,CAAC;MAClD;IACA,CAAC,CAAC;EACF;;EAGF;EACA,SAAS3I,gCAAgCA,CAAC/nF,UAAU,EAAEhpH,QAAQ,EAAE;IAC9DuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,oCAAoC;MACvJxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGm0E,UAAU,GAAG,IAAI;MAC9E79D,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACquJ,sCAAsC;QACzD35M,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClC;MAAA;IAEJ,CAAC,CAAC;EACJ;;EAEA;EACA,SAAS0sM,mCAAmCA,CAAC14M,IAAI,EAAElB,QAAQ,EAAE;IACzDkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3BgoE,UAAU,EAAE9nH,IAAI,CAAC8nH,UAAU;MAC3BwD,WAAW,EAAEtrH,IAAI,CAACsrH,WAAW;MAC7Bh4F,SAAS,EAAEtzB,IAAI,CAACszB,SAAS;MACzBf,OAAO,EAAEvyB,IAAI,CAACuyB,OAAO;MACrB6jL,QAAQ,EAAEp2M,IAAI,CAACo2M,QAAQ;MACvB/wM,QAAQ,EAAErF,IAAI,CAACqF,QAAQ;MACvBsoK,QAAQ,EAAE3tK,IAAI,CAAC2tK,QAAQ;MACvByqC,aAAa,EAAEp4M,IAAI,CAACo4M,aAAa;MACjCO,oBAAoB,EAAE34M,IAAI,CAAC24M,oBAAoB;MAC/CC,wBAAwB,EAAE54M,IAAI,CAAC44M,wBAAwB;MACvDC,yBAAyB,EAAE74M,IAAI,CAAC64M,yBAAyB;MACzDR,SAAS,EAAEr4M,IAAI,CAACq4M,SAAS;MACzBS,aAAa,EAAE94M,IAAI,CAAC84M;IACnB,CAAC;IACN,OAAOztM,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,uCAAuC;MAC1JxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAAC2uJ,yCAAyC,CAAC;MAC5D;IACA,CAAC,CAAC;EACJ;;EAEA;EACA,SAASC,mCAAmCA,CAACh5M,IAAI,EAAElB,QAAQ,EAAE;IAC3DkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACpBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3BgoE,UAAU,EAAE9nH,IAAI,CAAC8nH,UAAU;MAC3BwD,WAAW,EAAEtrH,IAAI,CAACsrH,WAAW;MAC7Bh4F,SAAS,EAAEtzB,IAAI,CAACszB,SAAS;MACzBf,OAAO,EAAEvyB,IAAI,CAACuyB,OAAO;MACrB6jL,QAAQ,EAAEp2M,IAAI,CAACo2M,QAAQ;MACvB/wM,QAAQ,EAAErF,IAAI,CAACqF,QAAQ;MACvBsoK,QAAQ,EAAE3tK,IAAI,CAAC2tK,QAAQ;MACvByqC,aAAa,EAAEp4M,IAAI,CAACo4M,aAAa;MACjCO,oBAAoB,EAAE34M,IAAI,CAAC24M,oBAAoB;MAC/CC,wBAAwB,EAAE54M,IAAI,CAAC44M,wBAAwB;MACvDC,yBAAyB,EAAE74M,IAAI,CAAC64M,yBAAyB;MACzDR,SAAS,EAAEr4M,IAAI,CAACq4M,SAAS;MACzBS,aAAa,EAAE94M,IAAI,CAAC84M,aAAa;MACjCvvJ,MAAM,EAAEvpD,IAAI,CAACupD,MAAM;MACnBgwE,SAAS,EAAEv5H,IAAI,CAACu5H,SAAS;MACzBy1E,eAAe,EAAEhvM,IAAI,CAACgvM,eAAe;MACrC7mF,aAAa,EAAEnoH,IAAI,CAACmoH;IAErB,CAAC;IACN,OAAO98G,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,uCAAuC;MAC1JxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAAC6uJ,yCAAyC,CAAC;MAC5D;IACA,CAAC,CAAC;EACF;;EAEE;EACJ,SAASlJ,sBAAsBA,CAACgH,UAAU,EAAEj4M,QAAQ,EAAE;IACpDuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,0BAA0B;MAC7IxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGojK,UAAU,GAAG,IAAI;MAC9E9sJ,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC8uJ,4BAA4B,CAAC,CAAC,CAAC;QAClDp6M,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClC;MAAA;IAEJ,CAAC,CAAC;EACJ;;EAEA;EACA,SAASmtM,yBAAyBA,CAACn5M,IAAI,EAAElB,QAAQ,EAAE;IAC/CkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3Bi3J,UAAU,EAAE/2M,IAAI,CAAC+2M,UAAU;MAC3BG,YAAY,EAAEl3M,IAAI,CAACk3M,YAAY;MAC/BC,iBAAiB,EAAEn3M,IAAI,CAACm3M,iBAAiB;MACzCC,qBAAqB,EAAEp3M,IAAI,CAACo3M,qBAAqB;MACjDgC,4BAA4B,EAAEp5M,IAAI,CAACo5M,4BAA4B;MAC/DC,gCAAgC,EAAEr5M,IAAI,CAACq5M,gCAAgC;MACvEC,gCAAgC,EAAEt5M,IAAI,CAACs5M,gCAAgC;MACvEC,sBAAsB,EAAEv5M,IAAI,CAACu5M,sBAAsB;MACnDC,WAAW,EAAEx5M,IAAI,CAACw5M,WAAW;MAC7BjwJ,MAAM,EAAEvpD,IAAI,CAACupD;IACZ,CAAC;IACN,OAAOl+C,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,6BAA6B;MAChJxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAACqvJ,+BAA+B,CAAC;MAClD;IACA,CAAC,CAAC;EACJ;;EAEA;EACA,SAASC,yBAAyBA,CAAC15M,IAAI,EAAElB,QAAQ,EAAE;IACjDkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3Bo3J,YAAY,EAAEl3M,IAAI,CAACk3M,YAAY;MAC/BC,iBAAiB,EAAEn3M,IAAI,CAACm3M,iBAAiB;MACzCC,qBAAqB,EAAEp3M,IAAI,CAACo3M,qBAAqB;MACjDgC,4BAA4B,EAAEp5M,IAAI,CAACo5M,4BAA4B;MAC/DC,gCAAgC,EAAEr5M,IAAI,CAACq5M,gCAAgC;MACvEC,gCAAgC,EAAEt5M,IAAI,CAACs5M,gCAAgC;MACvEC,sBAAsB,EAAEv5M,IAAI,CAACu5M,sBAAsB;MACnDC,WAAW,EAAEx5M,IAAI,CAACw5M,WAAW;MAC7BjwJ,MAAM,EAAEvpD,IAAI,CAACupD,MAAM;MACnBgwE,SAAS,EAAEv5H,IAAI,CAACu5H;IACf,CAAC;IACN,OAAOluH,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,6BAA6B;MAChJxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAACuvJ,+BAA+B,CAAC;MAClD;IACA,CAAC,CAAC;EACF;EAEA,eAAenL,iBAAiBA,CAACnlD,QAAQ,EAAE;IACzC,IAAI;MACF,MAAM14H,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;QACvBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACnB2hI,QAAQ,EAAEA;QAEZ,CAAC,CAAC;QACFp/F,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;;EAEC;EACA,SAAS63F,2BAA2BA,CAAC2J,mBAAmB,EAAE96M,QAAQ,EAAE;IACnEuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,+BAA+B;MAClJxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,4BAA4B,GAAGimK,mBAAmB,GAAG,IAAI;MAChG3vJ,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACyvJ,iCAAiC;QACpD/6M,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClC;MAAA;IAEJ,CAAC,CAAC;EACJ;;EAEA;EACA,SAAS8tM,8BAA8BA,CAAC95M,IAAI,EAAElB,QAAQ,EAAE;IACpDkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3B85J,mBAAmB,EAAE55M,IAAI,CAAC45M,mBAAmB;MAC7CtuF,WAAW,EAAEtrH,IAAI,CAACsrH,WAAW;MAC7Bh4F,SAAS,EAAEtzB,IAAI,CAACszB,SAAS;MACzBf,OAAO,EAAEvyB,IAAI,CAACuyB,OAAO;MACrBwnL,eAAe,EAAE/5M,IAAI,CAAC+5M,eAAe;MACrCC,aAAa,EAAEh6M,IAAI,CAACg6M,aAAa;MACjCC,WAAW,EAAEj6M,IAAI,CAACi6M,WAAW;MAC7B1wJ,MAAM,EAAEvpD,IAAI,CAACupD;IACZ,CAAC;IACN,OAAOl+C,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,kCAAkC;MACrJxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAAC8vJ,oCAAoC,CAAC;MACvD;IACA,CAAC,CAAC;EACJ;;EAEA;EACA,SAASC,8BAA8BA,CAACn6M,IAAI,EAAElB,QAAQ,EAAE;IACtDkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3BwrE,WAAW,EAAEtrH,IAAI,CAACsrH,WAAW;MAC7Bh4F,SAAS,EAAEtzB,IAAI,CAACszB,SAAS;MACzBf,OAAO,EAAEvyB,IAAI,CAACuyB,OAAO;MACrBwnL,eAAe,EAAE/5M,IAAI,CAAC+5M,eAAe;MACrCC,aAAa,EAAEh6M,IAAI,CAACg6M,aAAa;MACjCC,WAAW,EAAEj6M,IAAI,CAACi6M,WAAW;MAC7B1wJ,MAAM,EAAEvpD,IAAI,CAACupD,MAAM;MACnBylJ,eAAe,EAAEhvM,IAAI,CAACgvM;IAErB,CAAC;IACN,OAAO3jM,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,kCAAkC;MACrJxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAACgwJ,oCAAoC,CAAC;MACvD;IACA,CAAC,CAAC;EACF;;EAEI;EACA,SAASjK,kCAAkCA,CAACroF,UAAU,EAAEhpH,QAAQ,EAAE;IAChEuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,sCAAsC;MACzJxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGm0E,UAAU,GAAG,IAAI;MAC9E79D,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACiwJ,wCAAwC;QAC3Dv7M,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClC;MAAA;IAEJ,CAAC,CAAC;EACJ;;EAEA;EACA,SAASsuM,qCAAqCA,CAACt6M,IAAI,EAAElB,QAAQ,EAAE;IAC3DkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3BgoE,UAAU,EAAE9nH,IAAI,CAAC8nH,UAAU;MAC3BwD,WAAW,EAAEtrH,IAAI,CAACsrH,WAAW;MAC7Bh4F,SAAS,EAAEtzB,IAAI,CAACszB,SAAS;MACzBf,OAAO,EAAEvyB,IAAI,CAACuyB,OAAO;MACrBltB,QAAQ,EAAErF,IAAI,CAACqF,QAAQ;MACvBmiH,SAAS,EAAExnH,IAAI,CAACwnH,SAAS;MACzBsxF,aAAa,EAAE94M,IAAI,CAAC84M;IACnB,CAAC;IACN,OAAOztM,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,yCAAyC;MAC5JxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAACmwJ,2CAA2C,CAAC;MAC9D;IACA,CAAC,CAAC;EACJ;;EAEA;EACA,SAASC,qCAAqCA,CAACx6M,IAAI,EAAElB,QAAQ,EAAE;IAC7DkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACpBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3BgoE,UAAU,EAAE9nH,IAAI,CAAC8nH,UAAU;MAC3BwD,WAAW,EAAEtrH,IAAI,CAACsrH,WAAW;MAC7Bh4F,SAAS,EAAEtzB,IAAI,CAACszB,SAAS;MACzBf,OAAO,EAAEvyB,IAAI,CAACuyB,OAAO;MACrBltB,QAAQ,EAAErF,IAAI,CAACqF,QAAQ;MACvBmiH,SAAS,EAAExnH,IAAI,CAACwnH,SAAS;MACzBsxF,aAAa,EAAE94M,IAAI,CAAC84M,aAAa;MACjCvvJ,MAAM,EAAEvpD,IAAI,CAACupD,MAAM;MACnBgwE,SAAS,EAAEv5H,IAAI,CAACu5H,SAAS;MACzBy1E,eAAe,EAAEhvM,IAAI,CAACgvM,eAAe;MACrC7mF,aAAa,EAAEnoH,IAAI,CAACmoH;IAErB,CAAC;IACN,OAAO98G,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,yCAAyC;MAC5JxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAACqwJ,2CAA2C,CAAC;MAC9D;IACA,CAAC,CAAC;EACF;;EAEG;EACP,SAASpK,uBAAuBA,CAAC0G,UAAU,EAAEj4M,QAAQ,EAAE;IACrDuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,2BAA2B;MAC9IxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGojK,UAAU,GAAG,IAAI;MAC9E9sJ,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACswJ,6BAA6B,CAAC,CAAC,CAAC;QACnD57M,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClC;MAAA;IAEJ,CAAC,CAAC;EACJ;;EAEA;EACA,SAAS2uM,0BAA0BA,CAAC36M,IAAI,EAAElB,QAAQ,EAAE;IAChDkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3Bi3J,UAAU,EAAE/2M,IAAI,CAAC+2M,UAAU;MAC3BG,YAAY,EAAEl3M,IAAI,CAACk3M,YAAY;MAC/BC,iBAAiB,EAAEn3M,IAAI,CAACm3M,iBAAiB;MACzCC,qBAAqB,EAAEp3M,IAAI,CAACo3M,qBAAqB;MACjDgC,4BAA4B,EAAEp5M,IAAI,CAACo5M,4BAA4B;MAC/DE,gCAAgC,EAAEt5M,IAAI,CAACs5M,gCAAgC;MACvEE,WAAW,EAAEx5M,IAAI,CAACw5M,WAAW;MAC7BoB,2BAA2B,EAAE56M,IAAI,CAAC46M,2BAA2B;MAC7DrxJ,MAAM,EAAEvpD,IAAI,CAACupD;IACZ,CAAC;IACN,OAAOl+C,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,8BAA8B;MACjJxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAACywJ,gCAAgC,CAAC;MACnD;IACA,CAAC,CAAC;EACJ;;EAEA;EACA,SAASC,0BAA0BA,CAAC96M,IAAI,EAAElB,QAAQ,EAAE;IAClDkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE9/C,IAAI,CAAC8/C,UAAU;MAC3Bo3J,YAAY,EAAEl3M,IAAI,CAACk3M,YAAY;MAC/BC,iBAAiB,EAAEn3M,IAAI,CAACm3M,iBAAiB;MACzCC,qBAAqB,EAAEp3M,IAAI,CAACo3M,qBAAqB;MACjDgC,4BAA4B,EAAEp5M,IAAI,CAACo5M,4BAA4B;MAC/DE,gCAAgC,EAAEt5M,IAAI,CAACs5M,gCAAgC;MACvEE,WAAW,EAAEx5M,IAAI,CAACw5M,WAAW;MAC7BoB,2BAA2B,EAAE56M,IAAI,CAAC46M,2BAA2B;MAC7DrxJ,MAAM,EAAEvpD,IAAI,CAACupD,MAAM;MACnBgwE,SAAS,EAAEv5H,IAAI,CAACu5H;IACf,CAAC;IACN,OAAOluH,CAAC,CAAC2+C,IAAI,CAAC;MACdhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,8BAA8B;MACjJxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACzCvrD,QAAQ,CAACsrD,QAAQ,CAAC2wJ,gCAAgC,CAAC;MACnD;IACA,CAAC,CAAC;EACF;EAGA,eAAeC,kCAAkCA,CAACpB,mBAAmB,EAAE;IACrE,IAAI;MACF,MAAMjpL,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sCAAsC;QACxCxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,4BAA4B,GAC5BimK,mBAAmB,GACnB,IAAI;QACN3vJ,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACF;;EAEC;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;;EAEA;EACA,SAASi6F,aAAaA,CAACryM,IAAI,EAAE;IAC3B,IAAImL,MAAM,GAAG,GAAGE,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,MAAMh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,IAAIj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,IAAIl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,iBAAiB;IAC7H,IAAIygF,eAAe,GAAG,SAAAA,CAAU7b,IAAI,EAAE;MACpC,IAAI7pE,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;MAClC,OAAO7G,GAAG;MACV;IACF,CAAC;IACDvjD,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBq7J,eAAe,EAAEhvM,IAAI,CAACgvM,eAAe;MACrCh6F,QAAQ,EAAE,EAAE;MACZq0C,QAAQ,EAAErpJ,IAAI,CAACqpJ,QAAQ;MACvBlf,aAAa,EAAEnqI,IAAI,CAACmqI,aAAa;MACjCh4G,SAAS,EAAEnyB,IAAI,CAACmyB,SAAS;MACzBE,OAAO,EAAEryB,IAAI,CAACqyB,OAAO;MACrBk3B,MAAM,EAAEvpD,IAAI,CAACupD;IACf,CAAC;;IAEH;IACA,IAAI/xC,IAAI,GAAGva,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IACzCga,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAEiN,MAAM,CAAC;IACnCqM,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IACnCsZ,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAE;;IAExC;IACA,IAAIgmI,UAAU,GAAGjnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAChD0mI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAE;IAC5CgmI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IACxCgmI,UAAU,CAAChmI,YAAY,CAAC,OAAO,EAAEmN,CAAC,CAACC,OAAO,CAACqoC,KAAK,CAAC;IACjDn8B,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE+qI,eAAe,CAAC;IAC7CzxH,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;IACpC;;IAGEsZ,IAAI,CAACyjM,QAAQ,GAAGhyE,eAAe;IAE/B,IAAI/E,UAAU,GAAGjnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAChD0mI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IACxCgmI,UAAU,CAAChmI,YAAY,CAAC,OAAO,EAAEmN,CAAC,CAACC,OAAO,CAACqoC,KAAK,CAAC;IACjDuwF,UAAU,CAACzmI,EAAE,GAAG,OAAO;IAEvB,IAAIy9M,WAAW,GAAGj+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACjD09M,WAAW,CAACh9M,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1Cg9M,WAAW,CAACh9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACupD,MAAM,CAAC;IAC9C2xJ,WAAW,CAACz9M,EAAE,GAAG,QAAQ;IAEzB,IAAI09M,oBAAoB,GAAGl+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC1D29M,oBAAoB,CAACj9M,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAC5Di9M,oBAAoB,CAACj9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACgvM,eAAe,CAAC;IAChEmM,oBAAoB,CAAC19M,EAAE,GAAG,iBAAiB;IAE3C,IAAI29M,aAAa,GAAGn+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACnD49M,aAAa,CAACl9M,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;IAC9Ck9M,aAAa,CAACl9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACqpJ,QAAQ,CAAC;IAClD+xD,aAAa,CAAC39M,EAAE,GAAG,UAAU;IAE7B,IAAI49M,kBAAkB,GAAGp+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACxD69M,kBAAkB,CAACn9M,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC;IACxDm9M,kBAAkB,CAACn9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACmqI,aAAa,CAAC;IAC5DkxE,kBAAkB,CAAC59M,EAAE,GAAG,eAAe;IAEvC,IAAI69M,cAAc,GAAGr+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACpD89M,cAAc,CAACp9M,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC;IAChDo9M,cAAc,CAACp9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACmyB,SAAS,CAAC;IACpDmpL,cAAc,CAAC79M,EAAE,GAAG,WAAW;IAE/B,IAAI89M,YAAY,GAAGt+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAClD+9M,YAAY,CAACr9M,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;IAC5Cq9M,YAAY,CAACr9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACqyB,OAAO,CAAC;IAChDkpL,YAAY,CAAC99M,EAAE,GAAG,SAAS;IAE3B+Z,IAAI,CAAC9c,WAAW,CAACwpI,UAAU,CAAC;IAC5B1sH,IAAI,CAAC9c,WAAW,CAACwgN,WAAW,CAAC;IAC7B1jM,IAAI,CAAC9c,WAAW,CAACygN,oBAAoB,CAAC;IACtC3jM,IAAI,CAAC9c,WAAW,CAAC0gN,aAAa,CAAC;IAC/B5jM,IAAI,CAAC9c,WAAW,CAAC2gN,kBAAkB,CAAC;IACpC7jM,IAAI,CAAC9c,WAAW,CAAC4gN,cAAc,CAAC;IAChC9jM,IAAI,CAAC9c,WAAW,CAAC6gN,YAAY,CAAC;IAE9B/jM,IAAI,CAACzZ,KAAK,CAACsH,QAAQ,GAAG,UAAU;IAChCmS,IAAI,CAACzZ,KAAK,CAAC+nF,OAAO,GAAG,GAAG;IACxB7oF,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAAC8c,IAAI,CAAC;IAE/BA,IAAI,CAAC4sH,MAAM,CAAC,CAAC;EACf;EAEA,SAASkuE,aAAaA,CAACtyM,IAAI,EAAE;IAC3B,IAAImL,MAAM,GAAG,GAAGE,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,MAAMh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,IAAIj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,IAAIl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,iBAAiB;IAC7H,IAAIygF,eAAe,GAAG,SAAAA,CAAU7b,IAAI,EAAE;MACpC,IAAI7pE,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;MAClC,OAAO7G,GAAG;MACV;IACF,CAAC;IACDvjD,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBq7J,eAAe,EAAEhvM,IAAI,CAACgvM,eAAe;MACrCh6F,QAAQ,EAAE,EAAE;MACZq0C,QAAQ,EAAErpJ,IAAI,CAACqpJ,QAAQ;MACvBlf,aAAa,EAAEnqI,IAAI,CAACmqI,aAAa;MACjCh4G,SAAS,EAAEnyB,IAAI,CAACmyB,SAAS;MACzBE,OAAO,EAAEryB,IAAI,CAACqyB,OAAO;MACrBk3B,MAAM,EAAEvpD,IAAI,CAACupD,MAAM;MACnB6oJ,oBAAoB,EAAEpyM,IAAI,CAACoyM;IAC7B,CAAC;IAED,IAAI56L,IAAI,GAAGva,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IACzCga,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAEiN,MAAM,CAAC;IACnCqM,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IACnCsZ,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrCsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;IACpCsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE+qI,eAAe,CAAC;IAE7CzxH,IAAI,CAACyjM,QAAQ,GAAGhyE,eAAe;IAE/B,IAAI/E,UAAU,GAAGjnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAChD0mI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IACxCgmI,UAAU,CAAChmI,YAAY,CAAC,OAAO,EAAEmN,CAAC,CAACC,OAAO,CAACqoC,KAAK,CAAC;IACjDuwF,UAAU,CAACzmI,EAAE,GAAG,OAAO;IAEvB,IAAIy9M,WAAW,GAAGj+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACjD09M,WAAW,CAACh9M,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1Cg9M,WAAW,CAACh9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACupD,MAAM,CAAC;IAC9C2xJ,WAAW,CAACz9M,EAAE,GAAG,QAAQ;IAEzB,IAAI09M,oBAAoB,GAAGl+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC1D29M,oBAAoB,CAACj9M,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAC5Di9M,oBAAoB,CAACj9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACgvM,eAAe,CAAC;IAChEmM,oBAAoB,CAAC19M,EAAE,GAAG,iBAAiB;IAE3C,IAAI29M,aAAa,GAAGn+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACnD49M,aAAa,CAACl9M,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;IAC9Ck9M,aAAa,CAACl9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACqpJ,QAAQ,CAAC;IAClD+xD,aAAa,CAAC39M,EAAE,GAAG,UAAU;IAE7B,IAAI49M,kBAAkB,GAAGp+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACxD69M,kBAAkB,CAACn9M,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC;IACxDm9M,kBAAkB,CAACn9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACmqI,aAAa,CAAC;IAC5DkxE,kBAAkB,CAAC59M,EAAE,GAAG,eAAe;IAEvC,IAAI69M,cAAc,GAAGr+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACpD89M,cAAc,CAACp9M,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC;IAChDo9M,cAAc,CAACp9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACmyB,SAAS,CAAC;IACpDmpL,cAAc,CAAC79M,EAAE,GAAG,WAAW;IAE/B,IAAI+9M,yBAAyB,GAAGv+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC/Dg+M,yBAAyB,CAACt9M,YAAY,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACtEs9M,yBAAyB,CAACt9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACoyM,oBAAoB,CAAC;IAC1EoJ,yBAAyB,CAAC/9M,EAAE,GAAG,sBAAsB;IAErD,IAAI89M,YAAY,GAAGt+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAClD+9M,YAAY,CAACr9M,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;IAC5Cq9M,YAAY,CAACr9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACqyB,OAAO,CAAC;IAChDkpL,YAAY,CAAC99M,EAAE,GAAG,SAAS;IAE3B+Z,IAAI,CAAC9c,WAAW,CAACwpI,UAAU,CAAC;IAC5B1sH,IAAI,CAAC9c,WAAW,CAACwgN,WAAW,CAAC;IAC7B1jM,IAAI,CAAC9c,WAAW,CAACygN,oBAAoB,CAAC;IACtC3jM,IAAI,CAAC9c,WAAW,CAAC0gN,aAAa,CAAC;IAC/B5jM,IAAI,CAAC9c,WAAW,CAAC2gN,kBAAkB,CAAC;IACpC7jM,IAAI,CAAC9c,WAAW,CAAC4gN,cAAc,CAAC;IAChC9jM,IAAI,CAAC9c,WAAW,CAAC6gN,YAAY,CAAC;IAC9B/jM,IAAI,CAAC9c,WAAW,CAAC8gN,yBAAyB,CAAC;IAE3ChkM,IAAI,CAACzZ,KAAK,CAACsH,QAAQ,GAAG,UAAU;IAChCmS,IAAI,CAACzZ,KAAK,CAAC+nF,OAAO,GAAG,GAAG;IACxB7oF,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAAC8c,IAAI,CAAC;IAE/BA,IAAI,CAAC4sH,MAAM,CAAC,CAAC;EACf;EAGA,SAASmuE,aAAaA,CAACvyM,IAAI,EAAE;IAC3B,IAAImL,MAAM,GAAG,GAAGE,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,MAAMh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,IAAIj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,IAAIl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,iBAAiB;IAC7H,IAAIygF,eAAe,GAAG,SAAAA,CAAU7b,IAAI,EAAE;MACpC,IAAI7pE,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;MAClC,OAAO7G,GAAG;MACV;IACF,CAAC;IACDvjD,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBq7J,eAAe,EAAEhvM,IAAI,CAACgvM,eAAe;MACrCh6F,QAAQ,EAAE,EAAE;MACZq0C,QAAQ,EAAErpJ,IAAI,CAACqpJ,QAAQ;MACvBlf,aAAa,EAAEnqI,IAAI,CAACmqI,aAAa;MACjCh4G,SAAS,EAAEnyB,IAAI,CAACmyB,SAAS;MACzBE,OAAO,EAAEryB,IAAI,CAACqyB,OAAO;MACrBk3B,MAAM,EAAEvpD,IAAI,CAACupD,MAAM;MACnB6oJ,oBAAoB,EAAEpyM,IAAI,CAACoyM;IAC7B,CAAC;;IAEH;IACA,IAAI56L,IAAI,GAAGva,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IACzCga,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAEiN,MAAM,CAAC;IACnCqM,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IACnCsZ,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAE;;IAExC;IACA,IAAIgmI,UAAU,GAAGjnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAChD0mI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAE;IAC5CgmI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IACxCgmI,UAAU,CAAChmI,YAAY,CAAC,OAAO,EAAEmN,CAAC,CAACC,OAAO,CAACqoC,KAAK,CAAC;IACjDn8B,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE+qI,eAAe,CAAC;IAC7CzxH,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;IACpC;;IAGEsZ,IAAI,CAACyjM,QAAQ,GAAGhyE,eAAe;IAE/B,IAAI/E,UAAU,GAAGjnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAChD0mI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IACxCgmI,UAAU,CAAChmI,YAAY,CAAC,OAAO,EAAEmN,CAAC,CAACC,OAAO,CAACqoC,KAAK,CAAC;IACjDuwF,UAAU,CAACzmI,EAAE,GAAG,OAAO;IAEvB,IAAIy9M,WAAW,GAAGj+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACjD09M,WAAW,CAACh9M,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1Cg9M,WAAW,CAACh9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACupD,MAAM,CAAC;IAC9C2xJ,WAAW,CAACz9M,EAAE,GAAG,QAAQ;IAEzB,IAAI09M,oBAAoB,GAAGl+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC1D29M,oBAAoB,CAACj9M,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAC5Di9M,oBAAoB,CAACj9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACgvM,eAAe,CAAC;IAChEmM,oBAAoB,CAAC19M,EAAE,GAAG,iBAAiB;IAE3C,IAAI29M,aAAa,GAAGn+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACnD49M,aAAa,CAACl9M,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;IAC9Ck9M,aAAa,CAACl9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACqpJ,QAAQ,CAAC;IAClD+xD,aAAa,CAAC39M,EAAE,GAAG,UAAU;IAE7B,IAAI49M,kBAAkB,GAAGp+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACxD69M,kBAAkB,CAACn9M,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC;IACxDm9M,kBAAkB,CAACn9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACmqI,aAAa,CAAC;IAC5DkxE,kBAAkB,CAAC59M,EAAE,GAAG,eAAe;IAEvC,IAAI69M,cAAc,GAAGr+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACpD89M,cAAc,CAACp9M,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC;IAChDo9M,cAAc,CAACp9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACmyB,SAAS,CAAC;IACpDmpL,cAAc,CAAC79M,EAAE,GAAG,WAAW;IAE/B,IAAI+9M,yBAAyB,GAAGv+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC/Dg+M,yBAAyB,CAACt9M,YAAY,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACtEs9M,yBAAyB,CAACt9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACoyM,oBAAoB,CAAC;IAC1EoJ,yBAAyB,CAAC/9M,EAAE,GAAG,sBAAsB;IAErD,IAAI89M,YAAY,GAAGt+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAClD+9M,YAAY,CAACr9M,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;IAC5Cq9M,YAAY,CAACr9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACqyB,OAAO,CAAC;IAChDkpL,YAAY,CAAC99M,EAAE,GAAG,SAAS;IAE3B+Z,IAAI,CAAC9c,WAAW,CAACwpI,UAAU,CAAC;IAC5B1sH,IAAI,CAAC9c,WAAW,CAACwgN,WAAW,CAAC;IAC7B1jM,IAAI,CAAC9c,WAAW,CAACygN,oBAAoB,CAAC;IACtC3jM,IAAI,CAAC9c,WAAW,CAAC0gN,aAAa,CAAC;IAC/B5jM,IAAI,CAAC9c,WAAW,CAAC2gN,kBAAkB,CAAC;IACpC7jM,IAAI,CAAC9c,WAAW,CAAC4gN,cAAc,CAAC;IAChC9jM,IAAI,CAAC9c,WAAW,CAAC6gN,YAAY,CAAC;IAC9B/jM,IAAI,CAAC9c,WAAW,CAAC8gN,yBAAyB,CAAC;IAE3ChkM,IAAI,CAACzZ,KAAK,CAACsH,QAAQ,GAAG,UAAU;IAChCmS,IAAI,CAACzZ,KAAK,CAAC+nF,OAAO,GAAG,GAAG;IACxB7oF,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAAC8c,IAAI,CAAC;IAE/BA,IAAI,CAAC4sH,MAAM,CAAC,CAAC;EACf;EAEA,SAASouE,cAAcA,CAACxyM,IAAI,EAAE;IAC5B,IAAImL,MAAM,GAAG,GAAGE,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,MAAMh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,IAAIj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,IAAIl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,kBAAkB;IAC9H,IAAIygF,eAAe,GAAG,SAAAA,CAAU7b,IAAI,EAAE;MACpC,IAAI7pE,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;MAClC,OAAO7G,GAAG;MACV;IACF,CAAC;IACDvjD,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBq7J,eAAe,EAAEhvM,IAAI,CAACgvM,eAAe;MACrCh6F,QAAQ,EAAE,EAAE;MACZq0C,QAAQ,EAAErpJ,IAAI,CAACqpJ,QAAQ;MACvBlf,aAAa,EAAEnqI,IAAI,CAACmqI,aAAa;MACjCh4G,SAAS,EAAEnyB,IAAI,CAACmyB,SAAS;MACzBE,OAAO,EAAEryB,IAAI,CAACqyB,OAAO;MACrBk3B,MAAM,EAAEvpD,IAAI,CAACupD,MAAM;MACnB6oJ,oBAAoB,EAAEpyM,IAAI,CAACoyM;IAC7B,CAAC;IAED,IAAI56L,IAAI,GAAGva,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IACzCga,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAEiN,MAAM,CAAC;IACnCqM,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IACnCsZ,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrCsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;IACpCsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE+qI,eAAe,CAAC;IAE7CzxH,IAAI,CAACyjM,QAAQ,GAAGhyE,eAAe;IAE/B,IAAI/E,UAAU,GAAGjnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAChD0mI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IACxCgmI,UAAU,CAAChmI,YAAY,CAAC,OAAO,EAAEmN,CAAC,CAACC,OAAO,CAACqoC,KAAK,CAAC;IACjDuwF,UAAU,CAACzmI,EAAE,GAAG,OAAO;IAEvB,IAAIy9M,WAAW,GAAGj+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACjD09M,WAAW,CAACh9M,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1Cg9M,WAAW,CAACh9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACupD,MAAM,CAAC;IAC9C2xJ,WAAW,CAACz9M,EAAE,GAAG,QAAQ;IAEzB,IAAI09M,oBAAoB,GAAGl+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC1D29M,oBAAoB,CAACj9M,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAC5Di9M,oBAAoB,CAACj9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACgvM,eAAe,CAAC;IAChEmM,oBAAoB,CAAC19M,EAAE,GAAG,iBAAiB;IAE3C,IAAI29M,aAAa,GAAGn+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACnD49M,aAAa,CAACl9M,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;IAC9Ck9M,aAAa,CAACl9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACqpJ,QAAQ,CAAC;IAClD+xD,aAAa,CAAC39M,EAAE,GAAG,UAAU;IAE7B,IAAI49M,kBAAkB,GAAGp+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACxD69M,kBAAkB,CAACn9M,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC;IACxDm9M,kBAAkB,CAACn9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACmqI,aAAa,CAAC;IAC5DkxE,kBAAkB,CAAC59M,EAAE,GAAG,eAAe;IAEvC,IAAI69M,cAAc,GAAGr+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACpD89M,cAAc,CAACp9M,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC;IAChDo9M,cAAc,CAACp9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACmyB,SAAS,CAAC;IACpDmpL,cAAc,CAAC79M,EAAE,GAAG,WAAW;IAE/B,IAAI89M,YAAY,GAAGt+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAClD+9M,YAAY,CAACr9M,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;IAC5Cq9M,YAAY,CAACr9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACqyB,OAAO,CAAC;IAChDkpL,YAAY,CAAC99M,EAAE,GAAG,SAAS;IAE3B,IAAI+9M,yBAAyB,GAAGv+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC/Dg+M,yBAAyB,CAACt9M,YAAY,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACtEs9M,yBAAyB,CAACt9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACoyM,oBAAoB,CAAC;IAC1EoJ,yBAAyB,CAAC/9M,EAAE,GAAG,sBAAsB;IAErD+Z,IAAI,CAAC9c,WAAW,CAACwpI,UAAU,CAAC;IAC5B1sH,IAAI,CAAC9c,WAAW,CAACwgN,WAAW,CAAC;IAC7B1jM,IAAI,CAAC9c,WAAW,CAACygN,oBAAoB,CAAC;IACtC3jM,IAAI,CAAC9c,WAAW,CAAC0gN,aAAa,CAAC;IAC/B5jM,IAAI,CAAC9c,WAAW,CAAC2gN,kBAAkB,CAAC;IACpC7jM,IAAI,CAAC9c,WAAW,CAAC4gN,cAAc,CAAC;IAChC9jM,IAAI,CAAC9c,WAAW,CAAC6gN,YAAY,CAAC;IAC9B/jM,IAAI,CAAC9c,WAAW,CAAC8gN,yBAAyB,CAAC;IAE3ChkM,IAAI,CAACzZ,KAAK,CAACsH,QAAQ,GAAG,UAAU;IAChCmS,IAAI,CAACzZ,KAAK,CAAC+nF,OAAO,GAAG,GAAG;IACxB7oF,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAAC8c,IAAI,CAAC;IAE/BA,IAAI,CAAC4sH,MAAM,CAAC,CAAC;EACf;EAEA,SAASquE,cAAcA,CAACzyM,IAAI,EAAE;IAC5B,IAAImL,MAAM,GAAG,GAAGE,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,MAAMh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,IAAIj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,IAAIl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,kBAAkB;IAC9H,IAAIygF,eAAe,GAAG,SAAAA,CAAU7b,IAAI,EAAE;MACpC,IAAI7pE,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;MAClC,OAAO7G,GAAG;MACV;IACF,CAAC;IACDvjD,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBq7J,eAAe,EAAEhvM,IAAI,CAACgvM,eAAe;MACrCh6F,QAAQ,EAAE,EAAE;MACZq0C,QAAQ,EAAErpJ,IAAI,CAACqpJ,QAAQ;MACvBlf,aAAa,EAAEnqI,IAAI,CAACmqI,aAAa;MACjCh4G,SAAS,EAAEnyB,IAAI,CAACmyB,SAAS;MACzBE,OAAO,EAAEryB,IAAI,CAACqyB,OAAO;MACrBk3B,MAAM,EAAEvpD,IAAI,CAACupD,MAAM;MACnB6oJ,oBAAoB,EAAEpyM,IAAI,CAACoyM;IAC7B,CAAC;;IAEH;IACA,IAAI56L,IAAI,GAAGva,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IACzCga,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAEiN,MAAM,CAAC;IACnCqM,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IACnCsZ,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAE;;IAExC;IACA,IAAIgmI,UAAU,GAAGjnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAChD0mI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAE;IAC5CgmI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IACxCgmI,UAAU,CAAChmI,YAAY,CAAC,OAAO,EAAEmN,CAAC,CAACC,OAAO,CAACqoC,KAAK,CAAC;IACjDn8B,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE+qI,eAAe,CAAC;IAC7CzxH,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;IACpC;;IAGEsZ,IAAI,CAACyjM,QAAQ,GAAGhyE,eAAe;IAE/B,IAAI/E,UAAU,GAAGjnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAChD0mI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IACxCgmI,UAAU,CAAChmI,YAAY,CAAC,OAAO,EAAEmN,CAAC,CAACC,OAAO,CAACqoC,KAAK,CAAC;IACjDuwF,UAAU,CAACzmI,EAAE,GAAG,OAAO;IAEvB,IAAIy9M,WAAW,GAAGj+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACjD09M,WAAW,CAACh9M,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1Cg9M,WAAW,CAACh9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACupD,MAAM,CAAC;IAC9C2xJ,WAAW,CAACz9M,EAAE,GAAG,QAAQ;IAEzB,IAAI09M,oBAAoB,GAAGl+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC1D29M,oBAAoB,CAACj9M,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAC5Di9M,oBAAoB,CAACj9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACgvM,eAAe,CAAC;IAChEmM,oBAAoB,CAAC19M,EAAE,GAAG,iBAAiB;IAE3C,IAAI29M,aAAa,GAAGn+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACnD49M,aAAa,CAACl9M,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;IAC9Ck9M,aAAa,CAACl9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACqpJ,QAAQ,CAAC;IAClD+xD,aAAa,CAAC39M,EAAE,GAAG,UAAU;IAE7B,IAAI49M,kBAAkB,GAAGp+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACxD69M,kBAAkB,CAACn9M,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC;IACxDm9M,kBAAkB,CAACn9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACmqI,aAAa,CAAC;IAC5DkxE,kBAAkB,CAAC59M,EAAE,GAAG,eAAe;IAEvC,IAAI69M,cAAc,GAAGr+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACpD89M,cAAc,CAACp9M,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC;IAChDo9M,cAAc,CAACp9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACmyB,SAAS,CAAC;IACpDmpL,cAAc,CAAC79M,EAAE,GAAG,WAAW;IAE/B,IAAI+9M,yBAAyB,GAAGv+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC/Dg+M,yBAAyB,CAACt9M,YAAY,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACtEs9M,yBAAyB,CAACt9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACoyM,oBAAoB,CAAC;IAC1EoJ,yBAAyB,CAAC/9M,EAAE,GAAG,sBAAsB;IAGrD,IAAI89M,YAAY,GAAGt+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAClD+9M,YAAY,CAACr9M,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;IAC5Cq9M,YAAY,CAACr9M,YAAY,CAAC,OAAO,EAAE8B,IAAI,CAACqyB,OAAO,CAAC;IAChDkpL,YAAY,CAAC99M,EAAE,GAAG,SAAS;IAE3B+Z,IAAI,CAAC9c,WAAW,CAACwpI,UAAU,CAAC;IAC5B1sH,IAAI,CAAC9c,WAAW,CAACwgN,WAAW,CAAC;IAC7B1jM,IAAI,CAAC9c,WAAW,CAACygN,oBAAoB,CAAC;IACtC3jM,IAAI,CAAC9c,WAAW,CAAC0gN,aAAa,CAAC;IAC/B5jM,IAAI,CAAC9c,WAAW,CAAC2gN,kBAAkB,CAAC;IACpC7jM,IAAI,CAAC9c,WAAW,CAAC4gN,cAAc,CAAC;IAChC9jM,IAAI,CAAC9c,WAAW,CAAC6gN,YAAY,CAAC;IAC9B/jM,IAAI,CAAC9c,WAAW,CAAC8gN,yBAAyB,CAAC;IAE3ChkM,IAAI,CAACzZ,KAAK,CAACsH,QAAQ,GAAG,UAAU;IAChCmS,IAAI,CAACzZ,KAAK,CAAC+nF,OAAO,GAAG,GAAG;IACxB7oF,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAAC8c,IAAI,CAAC;IAE/BA,IAAI,CAAC4sH,MAAM,CAAC,CAAC;EACf;EAEA,OAAO;IAEH2qE,kBAAkB;IAClB5wD,uBAAuB;IACvBs3D,yBAAyB;IACzBhoC,uBAAuB;IACvB2B,mBAAmB;IACnBJ,mBAAmB;IACnBX,mBAAmB;IACnBT,WAAW;IACXunC,oBAAoB;IACpB3G,iBAAiB;IACjB6F,0BAA0B;IAC1BI,gCAAgC;IAChCzD,4BAA4B;IAC5B6E,oBAAoB;IACpBC,gBAAgB;IAChBC,sBAAsB;IACtBE,kBAAkB;IAClB1jC,iBAAiB;IACjB+8B,gCAAgC;IAChC6G,mCAAmC;IACnCS,mCAAmC;IACnCE,uBAAuB;IACvBrH,sBAAsB;IACtBwH,yBAAyB;IACzBc,yBAAyB;IACzBE,6BAA6B;IAC7BtI,sBAAsB;IACtBwI,yBAAyB;IACzBI,yBAAyB;IACzB1I,gCAAgC;IAChC6I,mCAAmC;IACnCM,mCAAmC;IACnCjJ,sBAAsB;IACtBoJ,yBAAyB;IACzBO,yBAAyB;IACzBzJ,2BAA2B;IAC3BkK,8BAA8B;IAC9BL,8BAA8B;IAC9BkB,kCAAkC;IAClC7K,kCAAkC;IAClCqK,qCAAqC;IACrCF,qCAAqC;IACrCjK,uBAAuB;IACvBsK,0BAA0B;IAC1BG,0BAA0B;IAC1BzI,aAAa;IACbC,aAAa;IACbC,aAAa;IACbC,cAAc;IACdC;EACJ,CAAC;AACD,CAAC,CAAG,CAAC;ACxsDP,MAAMgJ,sBAAsB,GAAG,CAAC,MAAM;EACpC,IAAIC,mBAAmB;EACvB,IAAI9qG,gBAAgB;EACpB,IAAIrJ,YAAY;EAChB,IAAIwK,eAAe;EACnB,IAAI9K,SAAS;EACb,IAAI00G,UAAU;EACd,IAAIC,iBAAiB;EACrB,IAAI5iB,SAAS,GAAG,EAAE;EAClB,IAAIC,OAAO;EACX;EACA,IAAIpoF,QAAQ;EACZ,IAAIC,aAAa;EACjB,IAAI+kC,SAAS;EACb;EACA,IAAI1uC,WAAW;EACf,IAAI00G,mBAAmB;EACvB,IAAIC,kBAAkB;EACtB,IAAIC,gBAAgB;EACpB,IAAIC,UAAU;EACd,IAAIxqG,cAAc;EAClB,IAAIhoE,OAAO;EACX,IAAIyyK,kBAAkB;EACtB,IAAIC,oBAAoB;EACxB,IAAIC,iBAAiB;EACrB,IAAIC,wBAAwB,GAAG,KAAK;EAEpC,eAAej/M,IAAIA,CAACk/M,eAAe,EAAEC,mBAAmB,EAAE;IACxD1rG,gBAAgB,GAAGyrG,eAAe;IAElC,IAAIC,mBAAmB,EAAE;MACvBF,wBAAwB,GAAGE,mBAAmB;IAChD,CAAC,MAAM;MACLF,wBAAwB,GAAG,KAAK;IAClC;IACAG,uBAAuB,CAAC,CAAC;EAC3B;EAEA,eAAeA,uBAAuBA,CAAA,EAAG;IACvCpwM,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;IACvBu+E,gBAAgB,CAAC,CAAC;IAClBp2G,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,CAACnC,KAAK,CAACoK,OAAO,GAAG,MAAM;IAC7D0oG,QAAQ,GAAG5zG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACxC,MAAMw6G,YAAY,GAAG1B,iBAAiB,CAAC,CAAC;IACxC,MAAM6jF,WAAW,GAAGl9L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD28L,WAAW,CAACrgM,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAC9C,MAAMogM,wBAAwB,GAAGn9L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9D48L,wBAAwB,CAACtgM,SAAS,CAACE,GAAG,CAAC,0BAA0B,CAAC;IAClEmgM,WAAW,CAACz/L,WAAW,CAAC0/L,wBAAwB,CAAC;IAEjD/jF,cAAc,GAAG7C,mBAAmB,CAAC,CAAC;IACtCmoG,UAAU,GAAGa,iBAAiB,CAAC,CAAC;IAChCvjB,OAAO,GAAGqB,UAAU,CAAC,CAAC;IACtBF,wBAAwB,CAAC1/L,WAAW,CAACihN,UAAU,CAAC;IAEhD,IAAItwM,CAAC,CAACC,OAAO,CAACqjC,cAAc,KAAK,IAAI,IAAItjC,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MAChFqwM,iBAAiB,GAAGv+M,MAAM,CAACC,KAAK,CAAC;QAC/BM,IAAI,EAAE,iBAAiB;QACvBG,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBM,UAAU,EAAE,gBAAgB;QAC5BQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;UACpB29M,iBAAiB,CAAC,CAAC;QACrB;MACF,CAAC,CAAC;MAEFriB,wBAAwB,CAAC1/L,WAAW,CAACkhN,iBAAiB,CAAC;IACzD;IAEAzhB,WAAW,CAACz/L,WAAW,CAACu+L,OAAO,CAAC;IAEhCpoF,QAAQ,CAACn2G,WAAW,CAACs9G,YAAY,CAAC;IAClCnH,QAAQ,CAACn2G,WAAW,CAACy/L,WAAW,CAAC;IACjCtpF,QAAQ,CAACn2G,WAAW,CAAC27G,cAAc,CAAC;IACpClqG,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACm2G,QAAQ,CAAC;IAEtC,IAAIxlG,CAAC,CAACC,OAAO,CAACkjC,cAAc,IAAI,IAAI,EAAE;MACpCmtK,UAAU,CAAC7hN,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACzC,CAAC,MAAM;MACL4hN,UAAU,CAAC7hN,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACtC;IAEA,MAAM47G,OAAO,GAAGhnG,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,mBAAmB,CAAC;IACzDgrG,QAAQ,CAACn2G,WAAW,CAACk7G,OAAO,CAAC;IAE7B8lG,mBAAmB,GAAG,MAAMgB,YAAY,CAACC,yBAAyB,CAAC;MACjE9yK,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmiE,kBAAkB,EAAElF,gBAAgB,CAACnzG,EAAE;MACvCo3J,WAAW,EAAEttD,YAAY,CAACq1G,eAAe;MACzCd,kBAAkB,EAAEv0G,YAAY,CAACu0G,kBAAkB;MACnDC,gBAAgB,EAAEx0G,YAAY,CAACw0G,gBAAgB;MAC/CrvM,OAAO,EAAErB,CAAC,CAACC,OAAO,CAACC;IACrB,CAAC,CAAC;IAEFslG,QAAQ,CAACxkG,WAAW,CAACupG,OAAO,CAAC;IAC7BO,kBAAkB,CAAC,CAAC;EACtB;;EAEA;EACA,SAASsmG,iBAAiBA,CAAA,EAAG;IAC3B,IAAIzjB,SAAS,GAAG,EAAE;;IAElB;IACA,MAAMlsL,KAAK,GAAG7P,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CsP,KAAK,CAACrP,EAAE,GAAG,cAAc;IACzBqP,KAAK,CAAC3N,SAAS,GAAG,0BAA0B;;IAE5C;IACA,MAAM09M,YAAY,GAAG5/M,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDq/M,YAAY,CAAC19M,SAAS,GAAG,sBAAsB;;IAE/C;IACA,MAAMmS,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAAC7P,SAAS,GAAG,aAAa;;IAEjC;IACA,MAAMq7M,QAAQ,GAAG7/M,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9Cs/M,QAAQ,CAACr/M,EAAE,GAAG,WAAW;IACzBq/M,QAAQ,CAAC39M,SAAS,GAAG,WAAW;IAChC29M,QAAQ,CAAC/+M,KAAK,CAACoK,OAAO,GAAG,MAAM,CAAC,CAAC;IACjC20M,QAAQ,CAAC/+M,KAAK,CAACg/M,aAAa,GAAG,QAAQ;IACvCD,QAAQ,CAAC/+M,KAAK,CAACi/M,UAAU,GAAG,QAAQ;IACpCF,QAAQ,CAAC/+M,KAAK,CAACk/M,cAAc,GAAG,QAAQ;;IAExC;IACA,MAAMC,SAAS,GAAGjgN,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC7C0/M,SAAS,CAACz7M,SAAS,GAAG,yBAAyB;IAC/C,MAAM07M,SAAS,GAAGlgN,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC7C2/M,SAAS,CAAC17M,SAAS,GAAG,IAAI;;IAE1B;IACAq7M,QAAQ,CAAC1/M,gBAAgB,CAAC,UAAU,EAAExC,KAAK,IAAI;MAC7CA,KAAK,CAACyH,cAAc,CAAC,CAAC;MACtBy6M,QAAQ,CAAChjN,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAClC,CAAC,CAAC;IAEF8iN,QAAQ,CAAC1/M,gBAAgB,CAAC,WAAW,EAAE,MAAM;MAC3C0/M,QAAQ,CAAChjN,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IACrC,CAAC,CAAC;IAEF+iN,QAAQ,CAAC1/M,gBAAgB,CAAC,MAAM,EAAExC,KAAK,IAAI;MACzCA,KAAK,CAACyH,cAAc,CAAC,CAAC;MACtBy6M,QAAQ,CAAChjN,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MACnC,MAAM07I,KAAK,GAAG76I,KAAK,CAACwiN,YAAY,CAAC3nE,KAAK;MACtC4nE,WAAW,CAAC5nE,KAAK,CAAC;IACpB,CAAC,CAAC;;IAEF;IACAI,SAAS,GAAG54I,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC3Cq4I,SAAS,CAAC73I,IAAI,GAAG,MAAM;IACvB63I,SAAS,CAACp4I,EAAE,GAAG,YAAY;IAC3Bo4I,SAAS,CAAC12I,SAAS,GAAG,YAAY;IAClC02I,SAAS,CAACnuI,QAAQ,GAAG,IAAI;IACzBmuI,SAAS,CAAC93I,KAAK,CAACoK,OAAO,GAAG,MAAM,CAAC,CAAC;;IAElC;IACA,MAAMm1M,iBAAiB,GAAGjgN,MAAM,CAACC,KAAK,CAAC;MACrCM,IAAI,EAAE,aAAa;MACnBH,EAAE,EAAE,cAAc;MAClBM,KAAK,EAAE,SAAS;MAChBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,KAAK;MACjBQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB+2I,SAAS,CAACjyC,KAAK,CAAC,CAAC;MACnB;IACF,CAAC,CAAC;;IAEF;IACA05G,iBAAiB,CAACv/M,KAAK,CAACgqL,MAAM,GAAG,WAAW;;IAE5C;IACAlyC,SAAS,CAACz4I,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC5C,MAAM66I,KAAK,GAAG76I,KAAK,CAACC,MAAM,CAAC46I,KAAK;MAChC4nE,WAAW,CAAC5nE,KAAK,CAAC;IACpB,CAAC,CAAC;;IAEF;IACAqnE,QAAQ,CAACpiN,WAAW,CAACwiN,SAAS,CAAC;IAC/BJ,QAAQ,CAACpiN,WAAW,CAACyiN,SAAS,CAAC;IAC/BL,QAAQ,CAACpiN,WAAW,CAAC4iN,iBAAiB,CAAC;;IAEvC;IACA,MAAMC,eAAe,GAAGtgN,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD+/M,eAAe,CAAC9/M,EAAE,GAAG,WAAW;IAChC8/M,eAAe,CAACp+M,SAAS,GAAG,WAAW;;IAEvC;IACA,MAAMq+M,WAAW,GAAGngN,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,OAAO;MACbH,EAAE,EAAE,cAAc;MAClBM,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,KAAK;MACjBQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB2+M,SAAS,CAAC,CAAC;QACXzkB,SAAS,GAAG,EAAE;MAChB;IACF,CAAC,CAAC;;IAEF;IACA,MAAM0kB,YAAY,GAAGrgN,MAAM,CAACC,KAAK,CAAC;MAChCM,IAAI,EAAE,cAAc;MACpBH,EAAE,EAAE,eAAe;MACnBM,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;MAC/BQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB,MAAM6sH,kBAAkB,GAAG,MAAMgyF,qBAAqB,CAAC3kB,SAAS,CAAC;QAEjEykB,SAAS,CAAC,CAAC;QACXG,cAAc,CAACzgN,IAAI,CAACwuH,kBAAkB,EAAE+vF,mBAAmB,EAAE9qG,gBAAgB,CAAC;MAChF;IACF,CAAC,CAAC;IAEF,MAAMitG,cAAc,GAAG5gN,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpDqgN,cAAc,CAAC1+M,SAAS,GAAG,gBAAgB;;IAE3C;IACA09M,YAAY,CAACniN,WAAW,CAAC4W,OAAO,CAAC;IACjCurM,YAAY,CAACniN,WAAW,CAACoiN,QAAQ,CAAC;IAClCD,YAAY,CAACniN,WAAW,CAAC6iN,eAAe,CAAC;IACzCM,cAAc,CAACnjN,WAAW,CAACgjN,YAAY,CAAC;IACxCG,cAAc,CAACnjN,WAAW,CAAC8iN,WAAW,CAAC;IACvCX,YAAY,CAACniN,WAAW,CAACmjN,cAAc,CAAC;;IAExC;IACA/wM,KAAK,CAACpS,WAAW,CAACmiN,YAAY,CAAC;;IAE/B;IACA5/M,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAACoS,KAAK,CAAC;;IAEhC;IACA,SAASgxM,gBAAgBA,CAAC9kB,SAAS,EAAE;MACnCukB,eAAe,CAACnjN,SAAS,GAAG,EAAE,CAAC,CAAC;MAChC,MAAM2jN,IAAI,GAAG9gN,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;MACzCw7L,SAAS,CAACx+L,OAAO,CAAC,CAAC26I,IAAI,EAAEvhI,KAAK,KAAK;QACjC,MAAMoqM,QAAQ,GAAG/gN,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;QAC7CwgN,QAAQ,CAACv8M,SAAS,GAAG0zI,IAAI,CAACpyI,IAAI;;QAE9B;QACA,MAAMk7M,YAAY,GAAGhhN,QAAQ,CAACO,aAAa,CAAC,QAAQ,CAAC;QACrDygN,YAAY,CAACx8M,SAAS,GAAG,GAAG;QAC5Bw8M,YAAY,CAAClgN,KAAK,CAACiyI,UAAU,GAAG,MAAM;QACtCiuE,YAAY,CAAClgN,KAAK,CAAC8wF,KAAK,GAAG,KAAK;QAChCovH,YAAY,CAAClgN,KAAK,CAACsxI,MAAM,GAAG,MAAM;QAClC4uE,YAAY,CAAClgN,KAAK,CAAC2P,UAAU,GAAG,aAAa;QAC7CuwM,YAAY,CAAClgN,KAAK,CAACmgN,MAAM,GAAG,SAAS;;QAErC;QACAD,YAAY,CAAC7gN,gBAAgB,CAAC,OAAO,EAAE,MAAM;UAC3C+gN,UAAU,CAACvqM,KAAK,CAAC;QACnB,CAAC,CAAC;QAEFoqM,QAAQ,CAACtjN,WAAW,CAACujN,YAAY,CAAC;QAClCF,IAAI,CAACrjN,WAAW,CAACsjN,QAAQ,CAAC;MAC5B,CAAC,CAAC;MACFT,eAAe,CAAC7iN,WAAW,CAACqjN,IAAI,CAAC;IACnC;;IAEA;IACA,SAASV,WAAWA,CAAC5nE,KAAK,EAAE;MAC1BujD,SAAS,GAAGA,SAAS,CAAC96K,MAAM,CAAC3f,KAAK,CAACoV,IAAI,CAAC8hI,KAAK,CAAC,CAAC;MAC/CqoE,gBAAgB,CAAC9kB,SAAS,CAAC;MAC3B,KAAK,MAAM7jD,IAAI,IAAIM,KAAK,EAAE;QACxBztI,OAAO,CAACu6B,GAAG,CAAC,gBAAgB,EAAE4yG,IAAI,CAACpyI,IAAI,CAAC;MAC1C;MAEAq7M,qBAAqB,CAAC,QAAQ,EAAEplB,SAAS,CAAC;IAC5C;IAEA,SAASolB,qBAAqBA,CAACplB,SAAS,EAAE;MACxC,MAAM0kB,YAAY,GAAGzgN,QAAQ,CAACiD,cAAc,CAAC,eAAe,CAAC;MAE7D,IAAI84L,SAAS,CAACz+L,MAAM,GAAG,CAAC,EAAE;QACxBmjN,YAAY,CAACzrM,QAAQ,GAAG,KAAK;QAC7ByrM,YAAY,CAAC5jN,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC3C,CAAC,MAAM;QACL2jN,YAAY,CAACzrM,QAAQ,GAAG,IAAI;QAC5ByrM,YAAY,CAAC5jN,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACxC;IACJ;;IAEE;IACA,SAASmkN,UAAUA,CAACvqM,KAAK,EAAE;MACzBolL,SAAS,CAAC3vK,MAAM,CAACzV,KAAK,EAAE,CAAC,CAAC;MAC1BiiI,SAAS,CAACh3I,KAAK,GAAG,EAAE;MACpBi/M,gBAAgB,CAAC9kB,SAAS,CAAC;MAE3BolB,qBAAqB,CAACplB,SAAS,CAAC;IAClC;;IAEA;IACA,eAAe2kB,qBAAqBA,CAACloE,KAAK,EAAE;MAC1C,IAAI3oB,WAAW,GAAG,EAAE;MAEpB,KAAK,MAAMqoB,IAAI,IAAIM,KAAK,EAAE;QACtB,MAAMniB,iBAAiB,GAAG,MAAM/J,IAAI,CAACgK,oBAAoB,CAAC4hB,IAAI,CAAC;QAC/DroB,WAAW,CAACzkH,IAAI,CAACirH,iBAAiB,CAACp7G,UAAU,CAAC;MAClD;MAEA,OAAO40G,WAAW,CAAC,CAAC;IACtB;EACF;;EAEA;EACA,SAAS2wF,SAASA,CAAA,EAAG;IACnB,MAAM3wM,KAAK,GAAG7P,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC;IACrD,IAAI4M,KAAK,EAAE;MACTA,KAAK,CAAC/S,MAAM,CAAC,CAAC;IAChB;EACF;EAEA,SAASyiN,iBAAiBA,CAAA,EAAG;IAC3B,OAAOn/M,MAAM,CAACC,KAAK,CAAC;MAClBM,IAAI,EAAE,iBAAiB;MACvBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,WAAW;MACvBQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB,IAAI,CAAC68M,UAAU,CAAC7hN,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC9Cy2M,WAAW,CAAClhN,IAAI,CAACyzG,gBAAgB,EAAE,CAAC,CAAC;QACvC;MACF;IACF,CAAC,CAAC;EACJ;EAEA,SAAS0pF,UAAUA,CAAA,EAAG;IACpB,OAAOj9L,MAAM,CAACC,KAAK,CAAC;MAClBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB7B,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,CAACnC,KAAK,CAACoK,OAAO,GAAG,OAAO;QAC9D1M,QAAQ,CAAC6iN,iBAAiB,CAAC1tG,gBAAgB,CAAC;MAC9C;IACF,CAAC,CAAC;EACJ;EAEA,SAASyC,gBAAgBA,CAAA,EAAG;IAC1B9L,YAAY,GAAG;MACbstD,WAAW,EAAE,GAAG;MAChBinD,kBAAkB,EAAEpxL,KAAK,CAAC8F,SAAS,CAAC9F,KAAK,CAAC6C,QAAQ,CAAC,IAAIvZ,IAAI,CAAC,IAAIA,IAAI,CAAC,CAAC,CAACuM,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC/W,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;MAC/GuyM,gBAAgB,EAAErxL,KAAK,CAAC8F,SAAS,CAAC,IAAIxc,IAAI,CAAC,IAAIA,IAAI,CAAC,CAAC,CAACuM,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC/W,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;MACzFwyM,UAAU,EAAEtxL,KAAK,CAAC8F,SAAS,CAAC,IAAIxc,IAAI,CAAC,IAAIA,IAAI,CAAC,CAAC,CAACuM,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC/W,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;MACnFozM,eAAe,EAAE;IACnB,CAAC;EACH;EAEA,SAAStmG,iBAAiBA,CAAA,EAAG;IAC3B1F,gBAAgB,CAAC2F,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAErD,MAAMuF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEtCsF,IAAI,CAAC5E,WAAW,CAACk2G,gBAAgB,CAAC2F,IAAI,CAAC;IAEvC,OAAOj3G,IAAI;EACb;EAEA,SAASk0G,mBAAmBA,CAAA,EAAG;IAC7B,IAAIC,oBAAoB,GAAGx2G,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IAEpE6+M,gBAAgB,GAAG,GAAG3oG,UAAU,CAAC7L,YAAY,CAACw0G,gBAAgB,CAAC,EAAE;IACjEC,UAAU,GAAG,EAAE;IAEf,IAAII,wBAAwB,EAAE;MAC5BJ,UAAU,GAAG,GAAG5oG,UAAU,CAAC7L,YAAY,CAACw0G,gBAAgB,CAAC,EAAE;IAC7D;IAEA,IAAI,CAACtoG,oBAAoB,EAAE;MACzBA,oBAAoB,GAAGx2G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACpDi2G,oBAAoB,CAAC35G,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MACpD0xG,eAAe,CAAC,CAAC;MACjB+H,oBAAoB,CAAC/4G,WAAW,CAAC8uC,OAAO,CAAC;IAC3C;IAEA,IAAI+9D,YAAY,CAACstD,WAAW,KAAK,GAAG,EAAE;MACpCrrH,OAAO,CAAC9uC,WAAW,CAACuhN,kBAAkB,CAAC;MACvCzyK,OAAO,CAACn9B,WAAW,CAAC4vM,kBAAkB,CAAC;IACzC,CAAC,MAAM;MACLzyK,OAAO,CAAC9uC,WAAW,CAACuhN,kBAAkB,CAAC;MACvC,IAAIh/M,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC,IAAI,IAAI,EACnDjD,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC,CAAC9F,SAAS,GAAG,gBAAgB,GAAGmtG,YAAY,CAACq1G,eAAe;IACzG;IAEA,IAAIb,gBAAgB,IAAI,EAAE,EAAE;MAC1BvyK,OAAO,CAAC9uC,WAAW,CAACwhN,oBAAoB,CAAC;MACzC1yK,OAAO,CAACn9B,WAAW,CAAC6vM,oBAAoB,CAAC;IAC3C,CAAC,MAAM;MACL1yK,OAAO,CAAC9uC,WAAW,CAACwhN,oBAAoB,CAAC;MACzC,IAAIj/M,QAAQ,CAACiD,cAAc,CAAC,kBAAkB,CAAC,IAAI,IAAI,EACrDjD,QAAQ,CAACiD,cAAc,CAAC,kBAAkB,CAAC,CAAC9F,SAAS,GAAG,mBAAmB,GAAG2hN,gBAAgB;IAClG;IAEA,IAAIC,UAAU,IAAI,EAAE,EAAE;MACpBxyK,OAAO,CAACn9B,WAAW,CAAC8vM,iBAAiB,CAAC;IACxC,CAAC,MAAM;MACL3yK,OAAO,CAAC9uC,WAAW,CAACyhN,iBAAiB,CAAC;MACtC,IAAIl/M,QAAQ,CAACiD,cAAc,CAAC,eAAe,CAAC,IAAI,IAAI,EAClDjD,QAAQ,CAACiD,cAAc,CAAC,eAAe,CAAC,CAAC9F,SAAS,GAAG,cAAc,GAAG4hN,UAAU;IACpF;IAEA,OAAOvoG,oBAAoB;EAC7B;EAEA,SAAS/H,eAAeA,CAAA,EAAG;IACzBC,SAAS,GAAGtuG,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,cAAc;MAC1BQ,QAAQ,EAAEA,CAAA,KAAM;QACd+0G,eAAe,CAAC,KAAK,CAAC;MACxB;IACF,CAAC,CAAC;IAEF0qG,cAAc,GAAGlhN,MAAM,CAACC,KAAK,CAAC;MAC5BG,EAAE,EAAE,gBAAgB;MACpBG,IAAI,EAAE,gBAAgB,GAAG2pG,YAAY,CAACstD,WAAW;MACjD92J,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QACd+0G,eAAe,CAAC,gBAAgB,CAAC;MACnC;IACF,CAAC,CAAC;IACF2qG,mBAAmB,GAAGnhN,MAAM,CAACC,KAAK,CAAC;MACjCI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QACditG,WAAW,CAAC,gBAAgB,CAAC;MAC/B;IACF,CAAC,CAAC;IAEF0yG,gBAAgB,GAAGphN,MAAM,CAACC,KAAK,CAAC;MAC9BG,EAAE,EAAE,kBAAkB;MACtBG,IAAI,EAAE,mBAAmB,GAAGm+M,gBAAgB;MAC5Ch+M,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QACd+0G,eAAe,CAAC,kBAAkB,CAAC;MACrC;IACF,CAAC,CAAC;IAEF6qG,aAAa,GAAGrhN,MAAM,CAACC,KAAK,CAAC;MAC3BG,EAAE,EAAE,eAAe;MACnBG,IAAI,EAAE,eAAe,GAAGo+M,UAAU;MAClCj+M,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QACd+0G,eAAe,CAAC,eAAe,CAAC;MAClC;IACF,CAAC,CAAC;IAEFrqE,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvCgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IACtCwvC,OAAO,CAAC9uC,WAAW,CAACixG,SAAS,CAAC;IAE9BswG,kBAAkB,GAAGh/M,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDy+M,kBAAkB,CAACniN,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC1DiiN,kBAAkB,CAACvhN,WAAW,CAAC6jN,cAAc,CAAC;IAC9CtC,kBAAkB,CAACvhN,WAAW,CAAC8jN,mBAAmB,CAAC;IACnDh1K,OAAO,CAAC9uC,WAAW,CAACuhN,kBAAkB,CAAC;IAEvCC,oBAAoB,GAAGj/M,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD0+M,oBAAoB,CAACpiN,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC5DkiN,oBAAoB,CAACxhN,WAAW,CAAC+jN,gBAAgB,CAAC;IAClDj1K,OAAO,CAAC9uC,WAAW,CAACwhN,oBAAoB,CAAC;IAEzCC,iBAAiB,GAAGl/M,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD2+M,iBAAiB,CAACriN,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACzDmiN,iBAAiB,CAACzhN,WAAW,CAACgkN,aAAa,CAAC;IAC5Cl1K,OAAO,CAAC9uC,WAAW,CAACyhN,iBAAiB,CAAC;EACxC;EAEA,SAASpwG,WAAWA,CAACA,WAAW,EAAE;IAChC,IAAIA,WAAW,IAAI,gBAAgB,EAAE;MACnCxE,YAAY,CAACstD,WAAW,GAAG,GAAG;MAC9BttD,YAAY,CAACq1G,eAAe,GAAG,GAAG;MAClC7qG,eAAe,CAAC8iD,WAAW,GAAG,GAAG;MACjC9iD,eAAe,CAAC6qG,eAAe,GAAG,GAAG;IACvC;IACApoG,WAAW,CAAC,CAAC;EACf;EAEA,SAASX,eAAeA,CAAC/G,MAAM,EAAE;IAC/B3F,WAAW,GAAGn6F,KAAK,CAAC1P,KAAK,CAAC,CAAC,CAAC,CAAC;;IAE7B;IACAu+M,mBAAmB,GAAG58M,QAAQ,CAAC3B,KAAK,CAAC;MACnC4B,UAAU,EAAE,qBAAqB;MACjCE,KAAK,EAAE,cAAc;MACrBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0oG,YAAY,CAACstD;IACtB,CAAC,CAAC;;IAEF;IACA,MAAM8pD,iBAAiB,GAAG1hN,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvDohN,qBAAqB,GAAG99M,KAAK,CAACxD,KAAK,CAAC;MAClCU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,iBAAiB;MACxBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0oG,YAAY,CAACw0G;IACtB,CAAC,CAAC;IAEF,MAAM8C,cAAc,GAAG5hN,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpDshN,eAAe,GAAGh+M,KAAK,CAACxD,KAAK,CAAC;MAC5BU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,aAAa;MACpBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0oG,YAAY,CAACy0G;IACtB,CAAC,CAAC;IAEF,IAAIlvG,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,kBAAkB,EAAE;MACnD6xG,iBAAiB,CAACjkN,WAAW,CAACkkN,qBAAqB,CAAC;IACtD;IAEA,IAAI9xG,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,eAAe,EAAE;MAChD+xG,cAAc,CAACnkN,WAAW,CAACokN,eAAe,CAAC;IAC7C;IAEA,MAAM/jB,aAAa,GAAG99L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDu9L,aAAa,CAACjhM,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACtCw3G,cAAc,GAAGn0G,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IACF,MAAM03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MACnCM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBkO,KAAK,CAAC/S,IAAI,CAACktG,WAAW,CAAC;MACzB;IACF,CAAC,CAAC;IACF4zF,aAAa,CAACrgM,WAAW,CAAC82G,cAAc,CAAC;IACzCupF,aAAa,CAACrgM,WAAW,CAACg7G,eAAe,CAAC;IAE1C,IAAI5I,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,gBAAgB,EAAE3F,WAAW,CAACzsG,WAAW,CAACmhN,mBAAmB,CAAC;IAE/F10G,WAAW,CAACzsG,WAAW,CAACikN,iBAAiB,CAAC;IAC1Cx3G,WAAW,CAACzsG,WAAW,CAACmkN,cAAc,CAAC;IACvC13G,WAAW,CAACzsG,WAAW,CAACqgM,aAAa,CAAC;IAEtC/tL,KAAK,CAAC9S,IAAI,CAACitG,WAAW,CAAC;IACvB43G,2BAA2B,CAAC,CAAC;IAC7BppG,iBAAiB,CAAC,CAAC;EACrB;EACA,SAASA,iBAAiBA,CAAA,EAAG;IAC3B5D,eAAe,GAAG,CAAC,CAAC;IAEpB8pG,mBAAmB,CAACz+M,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAClD,IAAIC,cAAc,GAAGD,CAAC,CAAC3E,MAAM,CAAC0C,OAAO,CAACiC,CAAC,CAAC3E,MAAM,CAAC6E,aAAa,CAAC;MAC7DqyG,eAAe,CAAC8iD,WAAW,GAAGp1J,cAAc,CAACZ,KAAK;MAClDkzG,eAAe,CAAC6qG,eAAe,GAAGn9M,cAAc,CAAC7B,IAAI;IACvD,CAAC,CAAC;IAEFghN,qBAAqB,CAACxhN,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MACpD,IAAIA,CAAC,CAAC3E,MAAM,CAACgE,KAAK,KAAK,EAAE,EAAE;QACzB+/M,qBAAqB,CAAC9kN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MAC9C,CAAC,MAAM;QACL4kN,qBAAqB,CAAC9kN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC/Cg4G,eAAe,CAACgqG,gBAAgB,GAAGv8M,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACnD;MACA41G,uBAAuB,CAAC,CAAC;IAC3B,CAAC,CAAC;IACFjD,cAAc,CAACp0G,gBAAgB,CAAC,OAAO,EAAE,MAAMoC,CAAC,IAAI;MAClDwN,KAAK,CAAC/S,IAAI,CAACktG,WAAW,CAAC;MACvB,IAAI,CAACqK,cAAc,CAAC13G,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;QAClD4sG,WAAW,CAAC,CAAC;MACf;IACF,CAAC,CAAC;EACJ;EAEA,eAAeuqG,2BAA2BA,CAAA,EAAG;IAC3C,MAAM;MAAEC,4BAA4B,EAAEC;IAAY,CAAC,GAAG,MAAMvC,YAAY,CAACwC,2BAA2B,CAACtuG,gBAAgB,CAAC;IACtH,IAAIuuG,eAAe,GAAGF,WAAW,CAACj7M,GAAG,CAACo7M,YAAY,KAAK;MACrD3hN,EAAE,EAAE2hN,YAAY,CAACC,YAAY;MAC7BxgN,KAAK,EAAEugN,YAAY,CAACC,YAAY;MAChCzhN,IAAI,EAAEwhN,YAAY,CAACE;IACrB,CAAC,CAAC,CAAC;IACHH,eAAe,CAACvhJ,OAAO,CAAC;MAAEngE,EAAE,EAAE,GAAG;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,qBAAqB,EAAE8kN,eAAe,EAAE53G,YAAY,CAACstD,WAAW,CAAC;EACrF;EAEA,SAASpgD,uBAAuBA,CAAA,EAAG;IACjC,MAAMC,MAAM,GAAG,CAAC,GAAGvN,WAAW,CAAC7jG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAMksG,SAAS,GAAGkF,MAAM,CAACn6G,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;IAElD,IAAIi1G,SAAS,EAAE;MACbgC,cAAc,CAAC13G,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC1C,CAAC,MAAM;MACLw3G,cAAc,CAAC13G,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC7C;EACF;EAEA,eAAey6G,WAAWA,CAAA,EAAG;IAC3BjN,YAAY,GAAG;MAAE,GAAGA,YAAY;MAAE,GAAGwK;IAAgB,CAAC;IAEtD,MAAM6D,OAAO,GAAGhnG,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,mBAAmB,CAAC;IACzDgrG,QAAQ,CAACxkG,WAAW,CAACykG,aAAa,CAAC;IACnCD,QAAQ,CAACn2G,WAAW,CAACk7G,OAAO,CAAC;IAE7B8lG,mBAAmB,GAAG,MAAMgB,YAAY,CAACC,yBAAyB,CAAC;MACjE9yK,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmiE,kBAAkB,EAAElF,gBAAgB,CAACnzG,EAAE;MACvCo3J,WAAW,EAAEttD,YAAY,CAACq1G,eAAe,IAAI,KAAK,GAAG,GAAG,GAAGr1G,YAAY,CAACq1G,eAAe;MACvFd,kBAAkB,EAAEv0G,YAAY,CAACu0G,kBAAkB;MACnDC,gBAAgB,EAAEx0G,YAAY,CAACw0G,gBAAgB;MAC/CrvM,OAAO,EAAErB,CAAC,CAACC,OAAO,CAACC;IACrB,CAAC,CAAC;IAEFslG,QAAQ,CAACxkG,WAAW,CAACupG,OAAO,CAAC;IAE7BO,kBAAkB,CAAC,CAAC;IACpB,MAAMC,iBAAiB,GAAG5C,mBAAmB,CAAC,CAAC;IAC/C3C,QAAQ,CAACz9F,YAAY,CAACgjG,iBAAiB,EAAEC,cAAc,CAAC;IACxDA,cAAc,GAAGD,iBAAiB;EACpC;EAEA,SAASD,kBAAkBA,CAAA,EAAG;IAC5B3D,cAAc,CAAC,CAAC;IAEhB1B,aAAa,GAAG7zG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CszG,aAAa,CAACh3G,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAE3C,MAAMw8G,WAAW,GAAGv5G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDg5G,WAAW,CAAC18G,SAAS,CAACE,GAAG,CAAC,sBAAsB,CAAC;IACjDw8G,WAAW,CAACp8G,SAAS,GAAG;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACD02G,aAAa,CAACp2G,WAAW,CAAC87G,WAAW,CAAC;IAEtCklG,mBAAmB,CAACjlG,cAAc,CAACj8G,OAAO,CAACuS,MAAM,IAAI;MACnD,MAAMwyM,MAAM,GAAGxyM,MAAM,CAACyyM,OAAO;MAC7B,IAAI77B,SAAS;MACb,IAAIxxJ,SAAS,GACXplB,MAAM,CAAC+uM,kBAAkB,IAAI,IAAI,IAAI,EAAE,GACnC,EAAE,GACFnuL,IAAI,CAACyW,kBAAkB,CAACzW,IAAI,CAACmY,iBAAiB,CAAC/4B,MAAM,CAAC+uM,kBAAkB,CAAC19L,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC9F,IAAIiU,OAAO,GACTtlB,MAAM,CAACgvM,gBAAgB,IAAI,IAAI,IAAI,EAAE,GACjC,EAAE,GACFpuL,IAAI,CAACyW,kBAAkB,CAACzW,IAAI,CAACmY,iBAAiB,CAAC/4B,MAAM,CAACgvM,gBAAgB,CAAC39L,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5F,MAAMu4F,OAAO,GAAG15G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC7Cm5G,OAAO,CAAC78G,SAAS,CAACE,GAAG,CAAC,4BAA4B,CAAC;;MAEnD;MACA;MACA,MAAM48G,WAAW,GAAG35G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACjDo5G,WAAW,CAAC98G,SAAS,CAACE,GAAG,CAAC,2BAA2B,EAAE,uBAAuB,CAAC;MAC/E48G,WAAW,CAAC/3G,KAAK,GAAGkO,MAAM,CAACyyM,OAAO;MAClC,MAAM7tM,OAAO,GAAG1U,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC7CmU,OAAO,CAAC7X,SAAS,CAACE,GAAG,CAAC,uBAAuB,CAAC;MAE9C,MAAMihM,UAAU,GAAGh+L,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAChDy9L,UAAU,CAACx9L,EAAE,GAAG,YAAY;MAC5Bw9L,UAAU,CAACnhM,SAAS,CAACE,GAAG,CAAC,uBAAuB,CAAC;MACjDihM,UAAU,CAAC7gM,SAAS,GAAGyD,KAAK,CAAC,eAAe,CAAC;MAC7C+4G,WAAW,CAACx8G,SAAS,GAAG;AAC9B,eAAe2S,MAAM,CAAC8nJ,WAAW;AACjC,eAAe9nJ,MAAM,CAAC0yM,gBAAgB;AACtC,eAAettL,SAAS;AACxB,eAAeE,OAAO;AACtB,OAAO;MACDukF,WAAW,CAACluG,OAAO,CAACuyL,UAAU,CAAC;MAC/B,IAAI5vL,CAAC,CAACC,OAAO,CAACqjC,cAAc,IAAI,IAAI,EAAE;QACpCh9B,OAAO,CAACvX,SAAS,GAAGyD,KAAK,CAAC,KAAK,CAAC;MAClC,CAAC,MAAM;QACL8T,OAAO,CAACvX,SAAS,GAAG,aAAa;MACnC;MACAw8G,WAAW,CAACl8G,WAAW,CAACiX,OAAO,CAAC;MAChCglG,OAAO,CAACj8G,WAAW,CAACk8G,WAAW,CAAC;;MAEhC;MACA;MACA,MAAMQ,UAAU,GAAGn6G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAChD45G,UAAU,CAACt9G,SAAS,CAACE,GAAG,CAAC,0BAA0B,CAAC;MAEpD,MAAMq9G,UAAU,GAAGp6G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAChD65G,UAAU,CAACv9G,SAAS,CAACE,GAAG,CAAC,yBAAyB,CAAC;MACnDq9G,UAAU,CAACj9G,SAAS,GAAG;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;MACDg9G,UAAU,CAAC18G,WAAW,CAAC28G,UAAU,CAAC;MAElC,IAAIqkG,mBAAmB,CAACjpG,aAAa,CAAC8sG,MAAM,CAAC,EAAE;QAC7C7D,mBAAmB,CAACjpG,aAAa,CAAC8sG,MAAM,CAAC,CAACjrM,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;UACvD,OAAOiQ,QAAQ,CAACxkB,CAAC,CAACi3G,OAAO,CAAC,GAAGzyF,QAAQ,CAACjQ,CAAC,CAAC0iG,OAAO,CAAC;QAClD,CAAC,CAAC;QAEFokG,mBAAmB,CAACjpG,aAAa,CAAC8sG,MAAM,CAAC,CAAC/kN,OAAO,CAACm4G,KAAK,IAAI;UACzD,MAAM4E,UAAU,GAAGt6G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;UAChD,IAAI20B,SAAS,GACXwgF,KAAK,CAACz8D,gBAAgB,IAAI,IAAI,IAAI,EAAE,GAChC,EAAE,GACFvoB,IAAI,CAACyW,kBAAkB,CAACzW,IAAI,CAACmY,iBAAiB,CAAC6sE,KAAK,CAACz8D,gBAAgB,CAAC93B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UAC3F,IAAIiU,OAAO,GACTsgF,KAAK,CAACx8D,cAAc,IAAI,IAAI,IAAI,EAAE,GAC9B,EAAE,GACFxoB,IAAI,CAACyW,kBAAkB,CAACzW,IAAI,CAACmY,iBAAiB,CAAC6sE,KAAK,CAACx8D,cAAc,CAAC/3B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACzF,IAAIshM,UAAU,GAAG/sG,KAAK,CAAC2hG,WAAW,IAAI,IAAI,GAAG,EAAE,GAAG3hG,KAAK,CAAC2hG,WAAW;UACnE/8F,UAAU,CAACz9G,SAAS,CAACE,GAAG,CAAC,0BAA0B,EAAE,uBAAuB,CAAC;UAC7Eu9G,UAAU,CAACn9G,SAAS,GAAG;AACjC;AACA,mBAAmBslN,UAAU;AAC7B,mBAAmB/sG,KAAK,CAACgtG,gBAAgB;AACzC,mBAAmBhtG,KAAK,CAACkF,SAAS;AAClC,mBAAmB1lF,SAAS;AAC5B,mBAAmBE,OAAO;AAC1B,WAAW;UACD+kF,UAAU,CAAC18G,WAAW,CAAC68G,UAAU,CAAC;UAElCA,UAAU,CAACn6G,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;YACxC,IAAI6L,CAAC,CAACC,OAAO,CAACsjC,cAAc,IAAI,IAAI,EAAE;cACpCgxK,eAAe,CAACziN,IAAI,CAACyzG,gBAAgB,EAAE+B,KAAK,CAACktG,YAAY,EAAE,CAAC,CAAC;YAC/D;UACF,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ;;MAEA;MACA;MACAjpG,WAAW,CAACx5G,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QACzC,IAAI+/M,MAAM,GAAG//M,CAAC,CAACsgN,aAAa,CAACjhN,KAAK;QAClC,IAAI8kL,SAAS,IAAI,QAAQ,IAAIA,SAAS,IAAI,KAAK,EAAE;UAC/C,IAAIt4K,CAAC,CAACC,OAAO,CAACmjC,cAAc,IAAI,IAAI,EAAE;YACpC4vK,WAAW,CAAClhN,IAAI,CAACyzG,gBAAgB,EAAE2uG,MAAM,CAAC;UAC5C;QACF;QACA57B,SAAS,GAAG,EAAE;MAChB,CAAC,CAAC;MAEFsX,UAAU,CAAC79L,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QACxC,MAAMvB,MAAM,GAAGhB,QAAQ,CAACC,aAAa,CAAC,aAAa,CAAC;QACpDymL,SAAS,GAAG,QAAQ;QACpB,IAAIvsE,UAAU,CAACt9G,SAAS,CAAC8N,QAAQ,CAAC,QAAQ,CAAC,EAAE;UAC3C;UACAwvG,UAAU,CAACt9G,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;UACrCkhM,UAAU,CAAC7gM,SAAS,GAAGyD,KAAK,CAACwM,aAAa;QAC5C,CAAC,MAAM;UACL;UACA+sG,UAAU,CAACt9G,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;UAClCihM,UAAU,CAAC7gM,SAAS,GAAGyD,KAAK,CAACqb,YAAY;QAC3C;MACF,CAAC,CAAC;MAEFvH,OAAO,CAACvU,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QACrCmkL,SAAS,GAAG,KAAK;QACjBi8B,eAAe,CAACziN,IAAI,CAACyzG,gBAAgB,EAAE,CAAC,EAAE2uG,MAAM,CAAC;MACnD,CAAC,CAAC;;MAEF;MACA;MACA5oG,OAAO,CAACj8G,WAAW,CAAC08G,UAAU,CAAC;MAC/BtG,aAAa,CAACp2G,WAAW,CAACi8G,OAAO,CAAC;IACpC,CAAC,CAAC;IAEF9F,QAAQ,CAACn2G,WAAW,CAACo2G,aAAa,CAAC;EACrC;EAEA,SAAS0B,cAAcA,CAAA,EAAG;IACxB,IAAI,CAACkpG,mBAAmB,CAACjpG,aAAa,EAAE;MACtC;IACF;IAEA,MAAMC,eAAe,GAAGgpG,mBAAmB,CAACjpG,aAAa,CAACprB,MAAM,CAAC,CAACt/C,GAAG,EAAE4qE,KAAK,KAAK;MAC/E,IAAI,CAAC5qE,GAAG,CAAC4qE,KAAK,CAAC6sG,OAAO,CAAC,EAAE;QACvBz3K,GAAG,CAAC4qE,KAAK,CAAC6sG,OAAO,CAAC,GAAG,EAAE;QACvBz3K,GAAG,CAAC4qE,KAAK,CAAC6sG,OAAO,CAAC,CAACn3M,IAAI,CAACsqG,KAAK,CAAC;MAChC,CAAC,MAAM;QACL5qE,GAAG,CAAC4qE,KAAK,CAAC6sG,OAAO,CAAC,CAACn3M,IAAI,CAACsqG,KAAK,CAAC;MAChC;MAEA,OAAO5qE,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;IAEN2zK,mBAAmB,CAACjpG,aAAa,GAAG;MAAE,GAAGC;IAAgB,CAAC;EAC5D;EAEA,SAASU,UAAUA,CAACpvF,IAAI,EAAE;IACxB,IAAI,CAACA,IAAI,EAAE,OAAO,EAAE;IAEpB,OAAO2J,IAAI,CAACyW,kBAAkB,CAACzW,IAAI,CAACmY,iBAAiB,CAAC9hB,IAAI,CAAC5F,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC5E;EAEA,OAAO;IACLjhB,IAAI;IACJo/M;EACF,CAAC;AACH,CAAC,EAAE,CAAC;ACvyBJ,MAAM8B,WAAW,GAAG,CAAC,MAAM;EACvB;EACA,IAAIj3G,iBAAiB;EACrB,IAAI0O,kBAAkB;EACtB,IAAI3jF,SAAS;EACb,IAAIE,OAAO;EACX,IAAIwiI,WAAW;EACf,IAAI+nD,eAAe;EACnB,IAAI6C,gBAAgB;EACpB,IAAIM,MAAM;EACV,IAAI5xE,OAAO;EACX,IAAIjpI,QAAQ;EAEZ,eAAe/H,IAAIA,CAACk/M,eAAe,EAAEkD,MAAM,EAAE;IACzCn4G,iBAAiB,GAAGi1G,eAAe;IACnC0D,MAAM,GAAGR,MAAM;IACfS,gBAAgB,CAAC,CAAC;IAClBnuE,QAAQ,CAAC/3I,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;EACtC;;EAEA;EACA,SAASs8G,iBAAiBA,CAAA,EAAG;IACzBlP,iBAAiB,CAACmP,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAEtD,MAAMuF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEtCsF,IAAI,CAAC5E,WAAW,CAAC0sG,iBAAiB,CAACmP,IAAI,CAAC;IAExC,OAAOj3G,IAAI;EACb;EACF,eAAe0gN,gBAAgBA,CAAA,EAAG;IAC9B7zM,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;IACvBs0E,WAAW,GAAGnsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3Cs4G,kBAAkB,GAAG1O,iBAAiB,CAAC3pG,EAAE;IACzC,MAAMwiN,oBAAoB,GAAG,MAAMC,gBAAgB,CAAC,CAAC;IACrD,MAAMloG,YAAY,GAAG1B,iBAAiB,CAAC,CAAC;IACxClN,WAAW,CAAC1uG,WAAW,CAACs9G,YAAY,CAAC;IACrC5O,WAAW,CAAC1uG,WAAW,CAACulN,oBAAoB,CAAC;IAC7C9zM,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC0uG,WAAW,CAAC;EAC7C;EAEA,eAAe82G,gBAAgBA,CAAA,EAAG;IAC9B,MAAMvjG,eAAe,GAAG1/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDm/G,eAAe,CAAC7iH,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAEvD,IAAI+lN,MAAM,GAAG,CAAC,EAAE;MACZ,MAAMpvL,MAAM,GAAG,MAAM+rL,YAAY,CAACyD,uBAAuB,CAACJ,MAAM,CAAC;MACjE,MAAM;QAAEK;MAAyB,CAAC,GAAGzvL,MAAM;MAE3CwB,SAAS,GAAGiuL,wBAAwB,CAAC,CAAC,CAAC,CAACtE,kBAAkB,IAAI,EAAE,GAAG,EAAE,GAAGzoJ,MAAM,CAAC+sJ,wBAAwB,CAAC,CAAC,CAAC,CAACtE,kBAAkB,CAAC,CAAC/4L,MAAM,CAAC,YAAY,CAAC;MACnJsP,OAAO,GAAG+tL,wBAAwB,CAAC,CAAC,CAAC,CAACrE,gBAAgB,IAAI,EAAE,GAAG,EAAE,GAAG1oJ,MAAM,CAAC+sJ,wBAAwB,CAAC,CAAC,CAAC,CAACrE,gBAAgB,CAAC,CAACh5L,MAAM,CAAC,YAAY,CAAC;MAC7I8xI,WAAW,GAAGurD,wBAAwB,CAAC,CAAC,CAAC,CAACvrD,WAAW;MACrD4qD,gBAAgB,GAAGW,wBAAwB,CAAC,CAAC,CAAC,CAACX,gBAAgB;MAC/Dv6M,QAAQ,GAAGk7M,wBAAwB,CAAC,CAAC,CAAC,CAACl7M,QAAQ;MAC/CipI,OAAO,GAAG,QAAQ;IACtB,CAAC,MACI;MACDh8G,SAAS,GAAGxE,IAAI,CAAC8Z,aAAa,CAAC,CAAC;MAChCpV,OAAO,GAAG,EAAE;MACZwiI,WAAW,GAAG,EAAE;MAChB4qD,gBAAgB,GAAG,EAAE;MACrBv6M,QAAQ,GAAG,EAAE;MACbipI,OAAO,GAAG,MAAM;IACpB;IAEAkyE,eAAe,GAAGphN,QAAQ,CAAC3B,KAAK,CAAC;MAC7BG,EAAE,EAAE,iBAAiB;MACrB2B,KAAK,EAAE,cAAc;MACrBF,UAAU,EAAE,iBAAiB;MAC7BL,KAAK,EAAEg2J;IACX,CAAC,CAAC;IACFyrD,qBAAqB,GAAGx/M,KAAK,CAACxD,KAAK,CAAC;MAChCG,EAAE,EAAE,uBAAuB;MAC3BO,IAAI,EAAE,UAAU;MAChBoB,KAAK,EAAE,mBAAmB;MAC1BrB,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAE4gN;IACX,CAAC,CAAC;IACFc,SAAS,GAAGz/M,KAAK,CAACxD,KAAK,CAAC;MACpBG,EAAE,EAAE,WAAW;MACfO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEszB;IACX,CAAC,CAAC;IACFquL,OAAO,GAAG1/M,KAAK,CAACxD,KAAK,CAAC;MAClBG,EAAE,EAAE,SAAS;MACbO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEwzB;IACX,CAAC,CAAC;IACFo2H,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAC9BG,EAAE,EAAE,kBAAkB;MACtB2B,KAAK,EAAE,UAAU;MACjBF,UAAU,EAAE,kBAAkB;MAC9BL,KAAK,EAAEqG;IACX,CAAC,CAAC;;IAEF;IACA2sI,QAAQ,GAAGx0I,MAAM,CAACC,KAAK,CAAC;MACpBM,IAAI,EAAEuwI,OAAO;MACbpwI,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAI,CAAC+yI,QAAQ,CAAC/3I,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC1CiqI,QAAQ,CAAC/3I,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UAClC,MAAMymN,kBAAkB,CAAC,CAAC;QAC9B;MACJ;IACJ,CAAC,CAAC;IACFvzG,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAAE28M,sBAAsB,CAACt+M,IAAI,CAACiqG,iBAAiB,CAAC;MAAC;IAC3E,CAAC,CAAC;IAEF,MAAM8U,OAAO,GAAGj/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0+G,OAAO,CAACpiH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9B,MAAMmiH,UAAU,GAAGl/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD2+G,UAAU,CAACriH,SAAS,CAACE,GAAG,CAAC,MAAM,CAAC;IAChC,MAAMoiH,cAAc,GAAGn/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD4+G,cAAc,CAACtiH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1CmiH,UAAU,CAAC/hH,SAAS,GAAG,0CAA0C;IACjE+hH,UAAU,CAACzhH,WAAW,CAAC0hH,cAAc,CAAC;IACtCF,OAAO,CAACxhH,WAAW,CAACyhH,UAAU,CAAC;IAE/BC,cAAc,CAAC1hH,WAAW,CAAC2lN,eAAe,CAAC;IAC3CjkG,cAAc,CAAC1hH,WAAW,CAAC4lN,qBAAqB,CAAC;IAEjD,IAAI7qG,QAAQ,GAAGx4G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Ci4G,QAAQ,CAAC37G,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;IAC5Cy7G,QAAQ,CAAC/6G,WAAW,CAAC6lN,SAAS,CAAC;IAC/BC,OAAO,CAACziN,KAAK,CAACiyI,UAAU,GAAG,IAAI;IAC/Bv6B,QAAQ,CAAC/6G,WAAW,CAAC8lN,OAAO,CAAC;IAC7B/3D,gBAAgB,CAAC1qJ,KAAK,CAACiyI,UAAU,GAAG,IAAI;IACxCv6B,QAAQ,CAAC/6G,WAAW,CAAC+tJ,gBAAgB,CAAC;IACtCrsC,cAAc,CAAC1hH,WAAW,CAAC+6G,QAAQ,CAAC;IAEpC,IAAIjsE,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAC1CwvC,OAAO,CAACzrC,KAAK,CAACiyI,UAAU,GAAG,KAAK;IAChCxmG,OAAO,CAACzrC,KAAK,CAACiS,KAAK,GAAG,KAAK;IAE3B6hI,QAAQ,CAAC9zI,KAAK,CAACiS,KAAK,GAAG,KAAK;IAC5Bw5B,OAAO,CAAC9uC,WAAW,CAACm3I,QAAQ,CAAC;IAE7B3kC,UAAU,CAACnvG,KAAK,CAACiS,KAAK,GAAG,KAAK;IAC9Bk9F,UAAU,CAACnvG,KAAK,CAACiyI,UAAU,GAAG,IAAI;IAClCxmG,OAAO,CAAC9uC,WAAW,CAACwyG,UAAU,CAAC;IAC/BkP,cAAc,CAAC1hH,WAAW,CAAC8uC,OAAO,CAAC;IAEnCmzE,eAAe,CAACjiH,WAAW,CAACwhH,OAAO,CAAC;IACpCwkG,4BAA4B,CAAC,CAAC;IAC9B70K,cAAc,CAAC,CAAC;IAChB80K,0BAA0B,CAACxuL,SAAS,EAAEE,OAAO,EAAEwiI,WAAW,EAAE4qD,gBAAgB,CAAC;IAC7E,OAAO9iG,eAAe;EAC1B;EAGA,eAAe+jG,4BAA4BA,CAAA,EAAG;IAC1C,MAAM;MACF1B,4BAA4B,EAAEC;IAClC,CAAC,GAAG,MAAMvC,YAAY,CAACwC,2BAA2B,CAACppG,kBAAkB,EAAE3jF,SAAS,CAAC;IAEjF,IAAIgtL,eAAe,GAAGF,WAAW,CAACj7M,GAAG,CAAEo7M,YAAY,KAAM;MACrD3hN,EAAE,EAAE2hN,YAAY,CAACC,YAAY;MAC7BxgN,KAAK,EAAEugN,YAAY,CAACC,YAAY;MAChCzhN,IAAI,EAAEwhN,YAAY,CAACE;IACvB,CAAC,CAAC,CAAC;IAEHH,eAAe,CAACvhJ,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAC1DqB,QAAQ,CAAC5E,QAAQ,CAAC,iBAAiB,EAAE8kN,eAAe,EAAEtqD,WAAW,CAAC;IAElE,MAAM;MACF+rD,yBAAyB,EAAEC;IAC/B,CAAC,GAAG,MAAMnE,YAAY,CAACoE,wBAAwB,CAAC,CAAC;IAEjD,IAAIC,YAAY,GAAGF,YAAY,CAAC78M,GAAG,CAAEg9M,aAAa,KAAM;MACpDvjN,EAAE,EAAEujN,aAAa,CAAC1jD,UAAU;MAC5Bz+J,KAAK,EAAEmiN,aAAa,CAAC1jD,UAAU;MAC/B1/J,IAAI,EAAEojN,aAAa,CAACC;IACxB,CAAC,CAAC,CAAC;IACHF,YAAY,CAACnjJ,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IACvDqB,QAAQ,CAAC5E,QAAQ,CAAC,kBAAkB,EAAE0mN,YAAY,EAAE77M,QAAQ,CAAC;EACjE;EAEA,SAAS2mC,cAAcA,CAAA,EAAG;IACtBw0K,eAAe,CAACjjN,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEm1J,WAAW,GAAGp1J,cAAc,CAACZ,KAAK;MAClC+9M,eAAe,GAAGn9M,cAAc,CAACrF,SAAS;MAC1C8mN,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IAEFz4D,gBAAgB,CAACrrJ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEwF,QAAQ,GAAGzF,cAAc,CAACZ,KAAK;IACnC,CAAC,CAAC;IAEFyhN,qBAAqB,CAACljN,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACrD6kN,gBAAgB,GAAG7kN,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC6mB,IAAI,CAAC,CAAC;MAC5Cw7L,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFX,SAAS,CAACnjN,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzCu3B,SAAS,GAAGv3B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9BqiN,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACFV,OAAO,CAACpjN,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACvCy3B,OAAO,GAAGz3B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC5BqiN,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;EACN;EAGA,SAASA,+BAA+BA,CAAA,EAAG;IACvC,IAAI1nB,YAAY,GAAG+mB,SAAS,CAACrjN,aAAa,CAAC,YAAY,CAAC;IACxD,IAAIu8L,UAAU,GAAG+mB,OAAO,CAACtjN,aAAa,CAAC,UAAU,CAAC;IAClD,IAAIikN,mBAAmB,GAAGb,qBAAqB,CAACpjN,aAAa,CAAC,wBAAwB,CAAC;IACvF,IAAIkkN,UAAU,GAAGf,eAAe,CAACnjN,aAAa,CAAC,kBAAkB,CAAC;IAElEyjN,0BAA0B,CAACnnB,YAAY,CAAC36L,KAAK,EAAE46L,UAAU,CAAC56L,KAAK,EAAEuiN,UAAU,CAACviN,KAAK,EAAEsiN,mBAAmB,CAACtiN,KAAK,CAAC;EACjH;EAEA,SAAS8hN,0BAA0BA,CAACnnB,YAAY,EAAEC,UAAU,EAAE2nB,UAAU,EAAED,mBAAmB,EAAE;IAC3F,IAAI3nB,YAAY,KAAK,EAAE,EAAE;MACrB+mB,SAAS,CAACzmN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACpC,CAAC,MAAM;MACHumN,SAAS,CAACzmN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACvC;IAEA,IAAI0/L,UAAU,IAAI,IAAI,IAAIA,UAAU,IAAI,EAAE,IAAID,YAAY,GAAGC,UAAU,EAAE;MACrE+mB,OAAO,CAAC1mN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAClC,CAAC,MACI;MACDwmN,OAAO,CAAC1mN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACrC;IAEA,IAAIqnN,UAAU,KAAK,EAAE,EAAE;MACnBf,eAAe,CAACvmN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACHqmN,eAAe,CAACvmN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C;IAEA,IAAIonN,mBAAmB,CAACz7L,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;MACnC46L,qBAAqB,CAACxmN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAChD,CAAC,MAAM;MACHsmN,qBAAqB,CAACxmN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACnD;IAEAsnN,wBAAwB,CAAC,CAAC;EAC9B;EAEA,SAASA,wBAAwBA,CAAA,EAAG;IAChC,IAAI7xG,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAIksG,SAAS,CAACj1G,MAAM,GAAG,CAAC,EAAE;MACtBs3I,QAAQ,CAAC/3I,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAClC;IACJ,CAAC,MAAM;MACH63I,QAAQ,CAAC/3I,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACzC;EACJ;EAEA,eAAe0mN,kBAAkBA,CAAA,EAAG;IAChC,MAAM9vL,MAAM,GAAG,MAAM+rL,YAAY,CAAC4E,sBAAsB,CAACnvL,SAAS,EAAEE,OAAO,EAAEwiI,WAAW,EAAElnI,IAAI,CAACub,uBAAuB,CAACu2K,gBAAgB,CAAC,EAAEp0M,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAAEu1K,MAAM,EAAEjqG,kBAAkB,EAAE5wG,QAAQ,CAAC;IACjM,MAAM;MAAEq8M;IAAwB,CAAC,GAAG5wL,MAAM;IAC1C,IAAI4wL,uBAAuB,CAAC,CAAC,CAAC,CAAC/B,OAAO,IAAI,GAAG,EAAE;MAC3C/D,sBAAsB,CAACt+M,IAAI,CAACiqG,iBAAiB,CAAC;IAClD;EACJ;EAGA,OAAO;IACHjqG,IAAI;IACJ6iN;EACJ,CAAC;AACL,CAAC,EAAE,CAAC;ACxRJ,MAAMJ,eAAe,GAAG,CAAC,MAAM;EAC3B;EACA,IAAIx4G,iBAAiB;EACrB,IAAI0O,kBAAkB;EACtB,IAAI3jF,SAAS;EACb,IAAIE,OAAO;EACX,IAAIwiI,WAAW;EACf,IAAI+nD,eAAe;EACnB,IAAI4E,iBAAiB;EACrB,IAAIC,WAAW;EACf,IAAIC,eAAe;EACnB,IAAI73J,MAAM;EACV,IAAIrG,OAAO;EACX,IAAIm+J,iBAAiB;EACrB,IAAI9pG,SAAS;EACb,IAAI+pG,eAAe;EACnB,IAAIC,WAAW;EACf,IAAI1zE,OAAO;EACX,IAAI2zE,aAAa;EACjB,IAAIh4I,QAAQ;EACZ,IAAI5kE,QAAQ;EACZ,IAAI2sI,QAAQ;EAEZ,eAAe10I,IAAIA,CAACk/M,eAAe,EAAE0F,WAAW,EAAGhC,MAAM,EAAE;IACvD34G,iBAAiB,GAAGi1G,eAAe;IACnCwF,WAAW,GAAGE,WAAW;IACzBD,aAAa,GAAG/B,MAAM,GAAG,CAAC,GAAGA,MAAM,GAAG,EAAE;IACxC,MAAMiC,oBAAoB,CAAC,CAAC;IAC5BnwE,QAAQ,CAAC/3I,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;EACtC;;EAEA;EACA,SAASs8G,iBAAiBA,CAAA,EAAG;IACzBlP,iBAAiB,CAACmP,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAEtD,MAAMuF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEtCsF,IAAI,CAAC5E,WAAW,CAAC0sG,iBAAiB,CAACmP,IAAI,CAAC;IAExC,OAAOj3G,IAAI;EACb;EACF,eAAe0iN,oBAAoBA,CAAA,EAAG;IAClC71M,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;IACvBs0E,WAAW,GAAGnsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3Cs4G,kBAAkB,GAAG1O,iBAAiB,CAAC3pG,EAAE;IACzC,MAAMwiN,oBAAoB,GAAG,MAAMgC,iBAAiB,CAAC,CAAC;IACtD,MAAMjqG,YAAY,GAAG1B,iBAAiB,CAAC,CAAC;IACxClN,WAAW,CAAC1uG,WAAW,CAACs9G,YAAY,CAAC;IACrC5O,WAAW,CAAC1uG,WAAW,CAACulN,oBAAoB,CAAC;IAC7C9zM,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC0uG,WAAW,CAAC;EAC7C;EAEA,eAAe64G,iBAAiBA,CAAA,EAAG;IAC/B,MAAMtlG,eAAe,GAAG1/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDm/G,eAAe,CAAC7iH,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvD,IAAI6nN,WAAW,GAAG,CAAC,EAAE;MACjB,MAAMlxL,MAAM,GAAG,MAAM+rL,YAAY,CAACwF,4BAA4B,CAACL,WAAW,CAAC;MAC3E,MAAM;QAAEM;MAA8B,CAAC,GAAGxxL,MAAM;MAEhDwB,SAAS,GAAGgwL,6BAA6B,CAAC,CAAC,CAAC,CAACjsK,gBAAgB,IAAI,EAAE,GAAGvoB,IAAI,CAAC8Z,aAAa,CAAC,CAAC,GAAG4rB,MAAM,CAAC8uJ,6BAA6B,CAAC,CAAC,CAAC,CAACjsK,gBAAgB,CAAC,CAACnzB,MAAM,CAAC,YAAY,CAAC;MAC3KsP,OAAO,GAAG8vL,6BAA6B,CAAC,CAAC,CAAC,CAAChsK,cAAc,IAAI,EAAE,GAAG,EAAE,GAAGkd,MAAM,CAAC8uJ,6BAA6B,CAAC,CAAC,CAAC,CAAChsK,cAAc,CAAC,CAACpzB,MAAM,CAAC,YAAY,CAAC;MACnJ8xI,WAAW,GAAGstD,6BAA6B,CAAC,CAAC,CAAC,CAAC3C,OAAO;MACtDgC,iBAAiB,GAAGW,6BAA6B,CAAC,CAAC,CAAC,CAACxC,gBAAgB;MACrE8B,WAAW,GAAGU,6BAA6B,CAAC,CAAC,CAAC,CAACC,cAAc;MAC7Dv4J,MAAM,GAAGs4J,6BAA6B,CAAC,CAAC,CAAC,CAACE,gBAAgB;MAC1D7+J,OAAO,GAAG2+J,6BAA6B,CAAC,CAAC,CAAC,CAACG,qBAAqB;MAChEX,iBAAiB,GAAGQ,6BAA6B,CAAC,CAAC,CAAC,CAACI,kBAAkB;MACvE1qG,SAAS,GAAGsqG,6BAA6B,CAAC,CAAC,CAAC,CAACK,mBAAmB;MAChEZ,eAAe,GAAGO,6BAA6B,CAAC,CAAC,CAAC,CAACM,gBAAgB;MACnE34I,QAAQ,GAAGq4I,6BAA6B,CAAC,CAAC,CAAC,CAACr4I,QAAQ;MACpD5kE,QAAQ,GAAGi9M,6BAA6B,CAAC,CAAC,CAAC,CAACj9M,QAAQ;MACpDipI,OAAO,GAAG,QAAQ;IACtB,CAAC,MACI;MACD,MAAMx9G,MAAM,GAAG,MAAM+rL,YAAY,CAACyD,uBAAuB,CAAC2B,aAAa,CAAC;MACxE,MAAM;QAAE1B;MAAyB,CAAC,GAAGzvL,MAAM;MAE3CwB,SAAS,GAAGxE,IAAI,CAAC8Z,aAAa,CAAC,CAAC;MAChCpV,OAAO,GAAG,EAAE;MACZwiI,WAAW,GAAGitD,aAAa;MAC3BN,iBAAiB,GAAG,EAAE;MACtBC,WAAW,GAAG,EAAE;MAChB53J,MAAM,GAAG,EAAE;MACXrG,OAAO,GAAG,EAAE;MACZm+J,iBAAiB,GAAG,EAAE;MACtB9pG,SAAS,GAAG,EAAE;MACd+pG,eAAe,GAAG,EAAE;MACpB93I,QAAQ,GAAG,EAAE;MACb5kE,QAAQ,GAAGk7M,wBAAwB,CAAC,CAAC,CAAC,CAACl7M,QAAQ;MAC/CipI,OAAO,GAAG,MAAM;IACpB;IAEAkyE,eAAe,GAAGphN,QAAQ,CAAC3B,KAAK,CAAC;MAC7BG,EAAE,EAAE,iBAAiB;MACrB2B,KAAK,EAAE,SAAS;MAChBF,UAAU,EAAE,iBAAiB;MAC7BL,KAAK,EAAEg2J;IACX,CAAC,CAAC;IAEF6tD,mBAAmB,GAAGzjN,QAAQ,CAAC3B,KAAK,CAAC;MACjCG,EAAE,EAAE,qBAAqB;MACzB2B,KAAK,EAAE,cAAc;MACrBF,UAAU,EAAE,qBAAqB;MACjCL,KAAK,EAAE4iN;IACX,CAAC,CAAC;IAEFkB,sBAAsB,GAAG7hN,KAAK,CAACxD,KAAK,CAAC;MACjCG,EAAE,EAAE,wBAAwB;MAC5BO,IAAI,EAAE,UAAU;MAChBoB,KAAK,EAAE,mBAAmB;MAC1BrB,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAE2iN;IACX,CAAC,CAAC;IAEFoB,WAAW,GAAG9hN,KAAK,CAACxD,KAAK,CAAC;MACtBG,EAAE,EAAE,aAAa;MACjBO,IAAI,EAAE,UAAU;MAChBoB,KAAK,EAAE,QAAQ;MACfrB,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAEgrD;IACX,CAAC,CAAC;IAEFg5J,YAAY,GAAG/hN,KAAK,CAACxD,KAAK,CAAC;MACvBG,EAAE,EAAE,cAAc;MAClBO,IAAI,EAAE,UAAU;MAChBoB,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAE2kD;IACX,CAAC,CAAC;IAEF+8J,SAAS,GAAGz/M,KAAK,CAACxD,KAAK,CAAC;MACpBG,EAAE,EAAE,WAAW;MACfO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEszB;IACX,CAAC,CAAC;IACFquL,OAAO,GAAG1/M,KAAK,CAACxD,KAAK,CAAC;MAClBG,EAAE,EAAE,SAAS;MACbO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEwzB;IACX,CAAC,CAAC;IACFo2H,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAC9BG,EAAE,EAAE,kBAAkB;MACtB2B,KAAK,EAAE,UAAU;MACjBF,UAAU,EAAE,kBAAkB;MAC9BL,KAAK,EAAEqG;IACX,CAAC,CAAC;IAEF49M,yBAAyB,GAAG7jN,QAAQ,CAAC3B,KAAK,CAAC;MACvCG,EAAE,EAAE,2BAA2B;MAC/B2B,KAAK,EAAE,oBAAoB;MAC3BF,UAAU,EAAE,2BAA2B;MACvCL,KAAK,EAAE8iN;IACX,CAAC,CAAC;IAEFoB,cAAc,GAAGjiN,KAAK,CAACxD,KAAK,CAAC;MACzBG,EAAE,EAAE,gBAAgB;MACpBO,IAAI,EAAE,QAAQ;MACdoB,KAAK,EAAE,WAAW;MAClBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEg5G,SAAS;MAChBn5G,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,EAC1B;QACID,GAAG,EAAE,YAAY;QACjBC,KAAK,EAAE;MACX,CAAC;IAET,CAAC,CAAC;IAEFmkN,uBAAuB,GAAG/jN,QAAQ,CAAC3B,KAAK,CAAC;MACrCG,EAAE,EAAE,yBAAyB;MAC7B2B,KAAK,EAAE,kBAAkB;MACzBF,UAAU,EAAE,yBAAyB;MACrCL,KAAK,EAAE+iN;IACX,CAAC,CAAC;IAEFqB,aAAa,GAAGniN,KAAK,CAACxD,KAAK,CAAC;MACxBG,EAAE,EAAE,eAAe;MACnBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEirE;IACX,CAAC,CAAC;;IAEF;IACA+nE,QAAQ,GAAGx0I,MAAM,CAACC,KAAK,CAAC;MACpBM,IAAI,EAAEuwI,OAAO;MACbpwI,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAI,CAAC+yI,QAAQ,CAAC/3I,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC1CiqI,QAAQ,CAAC/3I,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UAClC,MAAMkpN,yBAAyB,CAAC,CAAC;QACrC;MACJ;IACJ,CAAC,CAAC;IACFh2G,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAAE28M,sBAAsB,CAACt+M,IAAI,CAACiqG,iBAAiB,CAAC;MAAC;IAC3E,CAAC,CAAC;IACF,IAAIynC,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACzC,MAAM0+G,OAAO,GAAGj/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0+G,OAAO,CAACpiH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9B,MAAMmiH,UAAU,GAAGl/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD2+G,UAAU,CAACriH,SAAS,CAACE,GAAG,CAAC,MAAM,CAAC;IAChC,MAAMoiH,cAAc,GAAGn/G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD4+G,cAAc,CAACtiH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1CmiH,UAAU,CAAC/hH,SAAS,GAAG,yCAAyC;IAChE+hH,UAAU,CAACzhH,WAAW,CAAC0hH,cAAc,CAAC;IACtCF,OAAO,CAACxhH,WAAW,CAACyhH,UAAU,CAAC;IAE/B,MAAMgnG,iBAAiB,GAAGlmN,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvD2lN,iBAAiB,CAACrpN,SAAS,CAACE,GAAG,CAAC,MAAM,CAAC;IACvC,MAAMopN,qBAAqB,GAAGnmN,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3D4lN,qBAAqB,CAACtpN,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACjDmpN,iBAAiB,CAAC/oN,SAAS,GAAG,yCAAyC;IACvE+oN,iBAAiB,CAACzoN,WAAW,CAAC0oN,qBAAqB,CAAC;IACpDlnG,OAAO,CAACxhH,WAAW,CAACyoN,iBAAiB,CAAC;IAEtC,MAAM9iG,mBAAmB,GAAGpjH,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACvD6iH,mBAAmB,CAACvmH,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAC5CqmH,mBAAmB,CAACjmH,SAAS,GAAG,SAAS,WAAW,SAAS;IAC7DimH,mBAAmB,CAACtiH,KAAK,CAACiyI,UAAU,GAAG,MAAM;IAE7C5zB,cAAc,CAAC1hH,WAAW,CAAC2lN,eAAe,CAAC;IAE3C+C,qBAAqB,CAAC1oN,WAAW,CAACgoN,mBAAmB,CAAC;IACtDU,qBAAqB,CAAC1oN,WAAW,CAACioN,sBAAsB,CAAC;IACzDS,qBAAqB,CAAC1oN,WAAW,CAACkoN,WAAW,CAAC;IAC9CQ,qBAAqB,CAAC1oN,WAAW,CAACmoN,YAAY,CAAC;IAE/C,IAAIptG,QAAQ,GAAGx4G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Ci4G,QAAQ,CAAC37G,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;IAC5Cy7G,QAAQ,CAAC/6G,WAAW,CAAC6lN,SAAS,CAAC;IAC/BC,OAAO,CAACziN,KAAK,CAACiyI,UAAU,GAAG,IAAI;IAC/Bv6B,QAAQ,CAAC/6G,WAAW,CAAC8lN,OAAO,CAAC;IAC7B/3D,gBAAgB,CAAC1qJ,KAAK,CAACiyI,UAAU,GAAG,IAAI;IACxCv6B,QAAQ,CAAC/6G,WAAW,CAAC+tJ,gBAAgB,CAAC;IACtC26D,qBAAqB,CAAC1oN,WAAW,CAAC+6G,QAAQ,CAAC;IAE3C2tG,qBAAqB,CAAC1oN,WAAW,CAAC2lH,mBAAmB,CAAC;IACtD+iG,qBAAqB,CAAC1oN,WAAW,CAACm0I,MAAM,CAAC;IACzCu0E,qBAAqB,CAAC1oN,WAAW,CAACm0I,MAAM,CAAC;IAEzC,IAAI2qC,QAAQ,GAAGv8K,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Cg8K,QAAQ,CAAC1/K,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACzC8oN,yBAAyB,CAAChpN,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACrDw/K,QAAQ,CAAC9+K,WAAW,CAACooN,yBAAyB,CAAC;IAC/CC,cAAc,CAACjpN,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1Cw/K,QAAQ,CAAC9+K,WAAW,CAACqoN,cAAc,CAAC;IACpCC,uBAAuB,CAAClpN,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACnDw/K,QAAQ,CAAC9+K,WAAW,CAACsoN,uBAAuB,CAAC;IAC7CI,qBAAqB,CAAC1oN,WAAW,CAAC8+K,QAAQ,CAAC;IAE3C,IAAI6pC,YAAY,GAAGpmN,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6lN,YAAY,CAACvpN,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAC7CipN,aAAa,CAACnpN,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACzCqpN,YAAY,CAAC3oN,WAAW,CAACuoN,aAAa,CAAC;IACvCG,qBAAqB,CAAC1oN,WAAW,CAAC2oN,YAAY,CAAC;IAE/C,IAAI75K,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAC1CwvC,OAAO,CAACzrC,KAAK,CAACiyI,UAAU,GAAG,KAAK;IAChCxmG,OAAO,CAACzrC,KAAK,CAACiS,KAAK,GAAG,KAAK;IAE3B6hI,QAAQ,CAAC9zI,KAAK,CAACiS,KAAK,GAAG,KAAK;IAC5Bw5B,OAAO,CAAC9uC,WAAW,CAACm3I,QAAQ,CAAC;IAE7B3kC,UAAU,CAACnvG,KAAK,CAACiS,KAAK,GAAG,KAAK;IAC9Bk9F,UAAU,CAACnvG,KAAK,CAACiyI,UAAU,GAAG,IAAI;IAClCxmG,OAAO,CAAC9uC,WAAW,CAACwyG,UAAU,CAAC;IAC/Bk2G,qBAAqB,CAAC1oN,WAAW,CAAC8uC,OAAO,CAAC;IAE1CmzE,eAAe,CAACjiH,WAAW,CAACwhH,OAAO,CAAC;IACpConG,uBAAuB,CAAC,CAAC;IACzBz3K,cAAc,CAAC,CAAC;IAChB03K,iCAAiC,CAAC,CAAC;IACnCC,8BAA8B,CAAC3uD,WAAW,EAAE2sD,iBAAiB,EAAErvL,SAAS,EAAEE,OAAO,CAAC;IAClF,OAAOsqF,eAAe;EAC1B;EAEA,eAAe4mG,iCAAiCA,CAAA,EAAG;IAC/C,MAAM;MACFE,qCAAqC,EAAEC;IAC3C,CAAC,GAAG,MAAMhH,YAAY,CAACiH,oCAAoC,CAAC,WAAW,CAAC;IACxE,IAAIC,oBAAoB,GAAGF,gBAAgB,CAAC1/M,GAAG,CAAE6/M,gBAAgB,KAAM;MACnEpmN,EAAE,EAAEomN,gBAAgB,CAACC,uBAAuB;MAC5CjlN,KAAK,EAAEglN,gBAAgB,CAACC,uBAAuB;MAC/ClmN,IAAI,EAAEimN,gBAAgB,CAACE;IAC3B,CAAC,CAAC,CAAC;IACHH,oBAAoB,CAAChmJ,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAC/DqB,QAAQ,CAAC5E,QAAQ,CAAC,2BAA2B,EAAEupN,oBAAoB,EAAEjC,iBAAiB,CAAC;EAC3F;EAEA,eAAe2B,uBAAuBA,CAAA,EAAG;IACrC,MAAM;MACFU,+BAA+B,EAAE/E;IACrC,CAAC,GAAG,MAAMvC,YAAY,CAACuH,8BAA8B,CAACnuG,kBAAkB,EAAE3jF,SAAS,CAAC;IAEpF,IAAIgtL,eAAe,GAAGF,WAAW,CAACj7M,GAAG,CAACo7M,YAAY,KAAK;MACrD3hN,EAAE,EAAE2hN,YAAY,CAACI,OAAO;MACxB3gN,KAAK,EAAEugN,YAAY,CAACI,OAAO;MAC3B5hN,IAAI,EAAEwhN,YAAY,CAAC8E;IACrB,CAAC,CAAC,CAAC,CAAC5vM,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MACjB,IAAIvU,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE,OAAO,CAAC,CAAC;MAC9B,IAAIyC,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE,OAAO,CAAC;MAC7B,OAAO,CAAC;IACV,CAAC,CAAC;IAEFuhN,eAAe,CAACvhJ,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAC1DqB,QAAQ,CAAC5E,QAAQ,CAAC,iBAAiB,EAAE8kN,eAAe,EAAEtqD,WAAW,CAAC;IAElE,MAAM;MAAE4uD,qCAAqC,EAAEU;IAAqB,CAAC,GACnE,MAAMzH,YAAY,CAACiH,oCAAoC,CAAC,SAAS,CAAC;IAEpE,IAAIC,oBAAoB,GAAGO,oBAAoB,CAACngN,GAAG,CAACogN,oBAAoB,KAAK;MAC3E3mN,EAAE,EAAE2mN,oBAAoB,CAACN,uBAAuB;MAChDjlN,KAAK,EAAEulN,oBAAoB,CAACN,uBAAuB;MACnDlmN,IAAI,EAAEwmN,oBAAoB,CAACL;IAC7B,CAAC,CAAC,CAAC,CAACzvM,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MACjB,IAAIvU,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE,OAAO,CAAC,CAAC;MAC9B,IAAIyC,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE,OAAO,CAAC;MAC7B,OAAO,CAAC;IACV,CAAC,CAAC;IACFgmN,oBAAoB,CAAChmJ,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAC/DqB,QAAQ,CAAC5E,QAAQ,CAAC,qBAAqB,EAAEupN,oBAAoB,EAAEnC,WAAW,CAAC;IAE3E,MAAM4C,2BAA2B,GAAG,CAClC;MAAE5mN,EAAE,EAAE,GAAG;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAW,CAAC,EACzC;MAAEH,EAAE,EAAE,GAAG;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAU,CAAC,EACxC;MAAEH,EAAE,EAAE,GAAG;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAW,CAAC,EACzC;MAAEH,EAAE,EAAE,GAAG;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAY,CAAC,EAC1C;MAAEH,EAAE,EAAE,GAAG;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAW,CAAC,CAC1C;IACDymN,2BAA2B,CAACzmJ,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IACtEqB,QAAQ,CAAC5E,QAAQ,CAAC,yBAAyB,EAAEgqN,2BAA2B,EAAEzC,eAAe,CAAC;IAE1F,MAAM;MAAEhB,yBAAyB,EAAEC;IAAa,CAAC,GAAG,MAAMnE,YAAY,CAACoE,wBAAwB,CAAC,CAAC;IAEjG,IAAIC,YAAY,GAAGF,YAAY,CAC5B78M,GAAG,CAACg9M,aAAa,KAAK;MACrBvjN,EAAE,EAAEujN,aAAa,CAAC1jD,UAAU;MAC5Bz+J,KAAK,EAAEmiN,aAAa,CAAC1jD,UAAU;MAC/B1/J,IAAI,EAAEojN,aAAa,CAACC;IACtB,CAAC,CAAC,CAAC,CACF3sM,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MACd,IAAIvU,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE,OAAO,CAAC,CAAC;MAC9B,IAAIyC,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE,OAAO,CAAC;MAC7B,OAAO,CAAC;IACV,CAAC,CAAC;IACJmjN,YAAY,CAACnjJ,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IACvDqB,QAAQ,CAAC5E,QAAQ,CAAC,kBAAkB,EAAE0mN,YAAY,EAAE77M,QAAQ,CAAC;EACjE;EAEA,SAAS2mC,cAAcA,CAAA,EAAG;IACtBw0K,eAAe,CAACjjN,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEm1J,WAAW,GAAGp1J,cAAc,CAACZ,KAAK;MAClC+9M,eAAe,GAAGn9M,cAAc,CAACrF,SAAS;MAC1CkqN,iCAAiC,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF5B,mBAAmB,CAACtlN,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE+hN,WAAW,GAAGhiN,cAAc,CAACZ,KAAK;MAClC6iN,eAAe,GAAGjiN,cAAc,CAACrF,SAAS;MAC1CkqN,iCAAiC,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF3B,sBAAsB,CAACvlN,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACtD4mN,iBAAiB,GAAG5mN,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC6mB,IAAI,CAAC,CAAC;MAC7C4+L,iCAAiC,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF1B,WAAW,CAACxlN,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC3CivD,MAAM,GAAGjvD,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC6mB,IAAI,CAAC,CAAC;MAClC4+L,iCAAiC,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFzB,YAAY,CAACzlN,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5C4oD,OAAO,GAAG5oD,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC6mB,IAAI,CAAC,CAAC;MACnC4+L,iCAAiC,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFvB,cAAc,CAAC3lN,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC9Ci9G,SAAS,GAAGj9G,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9BylN,iCAAiC,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF/D,SAAS,CAACnjN,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzCu3B,SAAS,GAAGv3B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9BylN,iCAAiC,CAAC,CAAC;IACvC,CAAC,CAAC;IACF9D,OAAO,CAACpjN,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACvCy3B,OAAO,GAAGz3B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC5BylN,iCAAiC,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFxB,yBAAyB,CAAC1lN,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC1D,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEiiN,iBAAiB,GAAGliN,cAAc,CAACZ,KAAK;MACxCylN,iCAAiC,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFtB,uBAAuB,CAAC5lN,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACxD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEkiN,eAAe,GAAGniN,cAAc,CAACZ,KAAK;MACtCylN,iCAAiC,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFrB,aAAa,CAAC7lN,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7CkvE,QAAQ,GAAGlvE,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC6mB,IAAI,CAAC,CAAC;MACpC4+L,iCAAiC,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF77D,gBAAgB,CAACrrJ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEwF,QAAQ,GAAGzF,cAAc,CAACZ,KAAK;MAC/BylN,iCAAiC,CAAC,CAAC;IACvC,CAAC,CAAC;EACN;EAGA,SAASA,iCAAiCA,CAAA,EAAG;IACzC,IAAI9qB,YAAY,GAAG+mB,SAAS,CAACrjN,aAAa,CAAC,YAAY,CAAC;IACxD,IAAIu8L,UAAU,GAAG+mB,OAAO,CAACtjN,aAAa,CAAC,UAAU,CAAC;IAClD,IAAIqnN,oBAAoB,GAAG5B,sBAAsB,CAACzlN,aAAa,CAAC,yBAAyB,CAAC;IAC1F,IAAIkkN,UAAU,GAAGf,eAAe,CAACnjN,aAAa,CAAC,kBAAkB,CAAC;IAClEsmN,8BAA8B,CAACpC,UAAU,CAACviN,KAAK,EAAE0lN,oBAAoB,CAAC1lN,KAAK,EAAE26L,YAAY,CAAC36L,KAAK,EAAE46L,UAAU,CAAC56L,KAAK,CAAC;EACtH;EAEA,SAAS2kN,8BAA8BA,CAACpC,UAAU,EAAEmD,oBAAoB,EAAE/qB,YAAY,EAAEC,UAAU,EAAE;IAChG,IAAI2nB,UAAU,KAAK,EAAE,EAAE;MACnBf,eAAe,CAACvmN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACHqmN,eAAe,CAACvmN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C;IAEA,IAAIwqN,oBAAoB,CAAC7+L,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;MACpCi9L,sBAAsB,CAAC7oN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACjD,CAAC,MAAM;MACH2oN,sBAAsB,CAAC7oN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACpD;IAEA,IAAI0/L,UAAU,IAAI,IAAI,IAAIA,UAAU,IAAI,EAAE,IAAID,YAAY,GAAGC,UAAU,EAAE;MACrE+mB,OAAO,CAAC1mN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAClC,CAAC,MACI;MACDwmN,OAAO,CAAC1mN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACrC;IACAsnN,wBAAwB,CAAC,CAAC;EAC9B;EAEA,SAASA,wBAAwBA,CAAA,EAAG;IAChC,IAAI7xG,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAIksG,SAAS,CAACj1G,MAAM,GAAG,CAAC,EAAE;MACtBs3I,QAAQ,CAAC/3I,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAClC;IACJ,CAAC,MAAM;MACH63I,QAAQ,CAAC/3I,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACzC;EACJ;EAEA,eAAempN,yBAAyBA,CAAA,EAAG;IACvC,MAAMvyL,MAAM,GAAG,MAAM+rL,YAAY,CAAC8H,6BAA6B,CAACryL,SAAS,EAAEE,OAAO,EAAEwiI,WAAW,EAAElnI,IAAI,CAACub,uBAAuB,CAACs4K,iBAAiB,CAAC,EAAEC,WAAW,EAAE9zL,IAAI,CAACub,uBAAuB,CAAC2gB,MAAM,CAAC,EAAEl8B,IAAI,CAACub,uBAAuB,CAACsa,OAAO,CAAC,EAAEm+J,iBAAiB,EAAE9pG,SAAS,EAAE+pG,eAAe,EAAEv2M,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAAEq3K,WAAW,EAAE/rG,kBAAkB,EAAE5wG,QAAQ,EAAE4kE,QAAQ,CAAC;IACjW,MAAM;MAAE26I;IAA+B,CAAC,GAAG9zL,MAAM;IACjD,IAAI8zL,8BAA8B,CAAC,CAAC,CAAC,CAAC5E,YAAY,IAAI,GAAG,EAAE;MACvDpE,sBAAsB,CAACt+M,IAAI,CAACiqG,iBAAiB,CAAC;IAClD;EACJ;EAGA,OAAO;IACHjqG,IAAI;IACJ6kN;EACJ,CAAC;AACL,CAAC,EAAE,CAAC;ACveJ,MAAMpE,cAAc,GAAG,CAAC,MAAM;EAE1B;EACA,IAAI8G,cAAc;EAClB,IAAIC,yBAAyB;EAC7B,IAAIC,0BAA0B;EAC9B,IAAIC,gBAAgB,GAAG,EAAE;EACzB,IAAIC,eAAe,GACf;IACI,eAAe,EAAG,EAAE;IACpB,uBAAuB,EAAG,EAAE;IAC5B,qBAAqB,EAAG,EAAE;IAC1B,yBAAyB,EAAG,EAAE;IAC9B,2BAA2B,EAAG,EAAE;IAChC,kBAAkB,EAAG,EAAE;IACvB,gBAAgB,EAAG;EACvB,CAAC;EACL,MAAMC,iBAAiB,GAAG;IAC1B,sBAAsB,EAAE,wBAAwB;IAChD,aAAa,EAAE,0BAA0B;IACzC,eAAe,EAAE,2BAA2B;IAC5C,qBAAqB,EAAE,iCAAiC;IACxD,wBAAwB,EAAE;EACtB,CAAC;;EAEL;EACA,IAAIC,2BAA2B;;EAE/B;EACA,IAAIC,wBAAwB;EAC5B,IAAIC,gBAAgB;EACpB,IAAIC,iBAAiB;EACrB,IAAIC,uBAAuB;EAC3B,IAAIC,0BAA0B;EAE9B,eAAeloN,IAAIA,CAACs4I,KAAK,EAAE6vE,oBAAoB,EAAE10G,gBAAgB,EAAE;IAC/D,MAAM/mE,KAAK,GAAGx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;IAC7BgxK,yBAAyB,GAAG/zG,gBAAgB;IAE5CzkG,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;IACvBs0E,WAAW,GAAGnsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C2O,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC0uG,WAAW,CAAC;IAEzC,MAAMwM,OAAO,GAAGhnG,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,mBAAmB,CAAC;IACzDujG,WAAW,CAAC1uG,WAAW,CAACk7G,OAAO,CAAC;IAEhC8uG,cAAc,GAAG,MAAMvxL,KAAK,CAACu4B,SAAS,CAAC,yBAAyB,EAAE;MAAC7hB,KAAK;MAAE4rG;IAAK,CAAC,CAAC;IACjFmvE,0BAA0B,GAAGU,oBAAoB,CAAC7uG,cAAc,CAACzyG,GAAG,CAACuyM,OAAO,KAAK;MAC7E13M,KAAK,EAAE03M,OAAO,CAACiJ,OAAO;MACtB5hN,IAAI,EAAE24M,OAAO,CAACkJ;IAClB,CAAC,CAAC,CAAC;IACH8F,mBAAmB,CAAC,CAAC;EACzB;;EAEA;EACA,eAAeA,mBAAmBA,CAAA,EAAG;IACjCp5M,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;IACvBs0E,WAAW,GAAGnsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C2O,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC0uG,WAAW,CAAC;IAEzC,IAAIo8G,cAAc,GAAGvoN,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACpDgoN,cAAc,CAACxnN,IAAI,GAAG,UAAU;IAChCwnN,cAAc,CAAC1rN,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAE/C,IAAIyrN,WAAW,GAAGxoN,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACjDioN,WAAW,CAACznN,IAAI,GAAG,UAAU;IAC7BynN,WAAW,CAAC3rN,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAEzC,SAAS0rN,oBAAoBA,CAACr1L,UAAU,EAAE;MACtC,MAAMrM,IAAI,GAAG,IAAIhQ,IAAI,CAACqc,UAAU,CAAC;MACjC,MAAMlM,IAAI,GAAGH,IAAI,CAAC/D,WAAW,CAAC,CAAC;MAC/B,MAAMsE,KAAK,GAAGvE,MAAM,CAACgE,IAAI,CAAC9D,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAACkpC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;MAC5D,MAAMv7B,GAAG,GAAG7N,MAAM,CAACgE,IAAI,CAAC7D,OAAO,CAAC,CAAC,CAAC,CAACipC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;MACnD,OAAO,GAAGjlC,IAAI,IAAII,KAAK,IAAIsJ,GAAG,EAAE;IACpC;IAEA,SAAS83L,uBAAuBA,CAAC/qN,KAAK,EAAEmY,OAAO,EAAE;MAC7C,IAAIvQ,QAAQ,GAAG5H,KAAK,CAACC,MAAM;MAC3B,MAAM+qN,YAAY,GAAGpjN,QAAQ,CAACqjN,OAAO,CAAC,QAAQ,CAAC;MAC/C,MAAM32C,QAAQ,GAAG1sK,QAAQ,CAACqjN,OAAO,CAAC,aAAa,CAAC;MAChD,MAAMC,UAAU,GAAG52C,QAAQ,CAACzxK,EAAE;MAC9B,MAAMsoN,YAAY,GAAG,GAAGD,UAAU,GAAG;;MAErC;MACA,MAAME,mBAAmB,GAAG,IAAIC,GAAG,CAAC7kK,MAAM,CAAC2kK,YAAY,CAAC,EAAE;;MAE1D;MACA,MAAMG,mBAAmB,GAAGN,YAAY,CAAC1oN,aAAa,CAAC8oN,mBAAmB,CAAC;;MAE3E;MACA,IAAIxjN,QAAQ,CAACxE,IAAI,KAAK,UAAU,EAAE;QAC9B;QACAwE,QAAQ,GAAG5H,KAAK,CAACC,MAAM,CAACqC,aAAa,CAAC,wBAAwB,CAAC;MACnE;MAEA,IAAIsF,QAAQ,IAAIA,QAAQ,CAACM,OAAO,EAAE;QAC9B;QACA,MAAM5D,UAAU,GAAG,2BAA2B4mN,UAAU,EAAE;QAC1D,MAAM7mN,QAAQ,GAAGhC,QAAQ,CAACiD,cAAc,CAAChB,UAAU,CAAC;QACpD,MAAM6nI,gBAAgB,GAAGm/E,mBAAmB,CAAChpN,aAAa,CAAC,iBAAiB,CAAC;QAC7E,MAAM8pI,cAAc,GAAGk/E,mBAAmB,CAAChpN,aAAa,CAAC,eAAe,CAAC;;QAEzE;QACA,MAAMipN,WAAW,GAAG;UAChBlzM,KAAK,EAAE6yM,UAAU;UACjBM,qBAAqB,EAAEnnN,QAAQ,GAAGA,QAAQ,CAACJ,KAAK,GAAG,IAAI;UACvDkoI,gBAAgB,EAAEA,gBAAgB,GAAGA,gBAAgB,CAACloI,KAAK,GAAG,IAAI;UAClEmoI,cAAc,EAAEA,cAAc,GAAGA,cAAc,CAACnoI,KAAK,GAAG;QAC5D,CAAC;;QAED;QACA,MAAMwnN,YAAY,GAAG;UAAE,GAAGtzM,OAAO;UAAE,GAAGozM;QAAY,CAAC;;QAEnD;QACAtB,gBAAgB,CAACx8M,IAAI,CAACg+M,YAAY,CAAC;;QAEnC;QACAH,mBAAmB,CAACnoN,KAAK,CAACoK,OAAO,GAAG,MAAM;MAE9C,CAAC,MAAM;QACH;QACA08M,gBAAgB,GAAGA,gBAAgB,CAACp8M,MAAM,CACtC69M,WAAW,IAAIA,WAAW,CAACrzM,KAAK,KAAK6yM,UACzC,CAAC;;QAED;QACAI,mBAAmB,CAACnoN,KAAK,CAACoK,OAAO,GAAG,MAAM;MAC9C;;MAEA;MACAo+M,kBAAkB,CAAC,CAAC;IACxB;IAEA,SAASC,6BAA6BA,CAACC,sBAAsB,EAAEC,aAAa,EAAE;MAC1E,MAAMlB,cAAc,GAAGvoN,QAAQ,CAACC,aAAa,CAACupN,sBAAsB,CAAC;MACrE,MAAME,aAAa,GAAG1pN,QAAQ,CAACqG,gBAAgB,CAAC,GAAGojN,aAAa,gBAAgB,CAAC;MAEjFC,aAAa,CAACnsN,OAAO,CAACgI,QAAQ,IAAI;QAC9BA,QAAQ,CAACM,OAAO,GAAG0iN,cAAc,CAAC1iN,OAAO;;QAEzC;QACA,MAAMuP,IAAI,GAAG7P,QAAQ,CAACqjN,OAAO,CAAC,YAAY,CAAC;;QAE3C;QACA,IAAIxzM,IAAI,EAAE;UACNA,IAAI,CAAC+T,aAAa,CAAC,IAAIH,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C;MACJ,CAAC,CAAC;IACN;IAEA,SAAS2gM,8BAA8BA,CAAC3zM,KAAK,EAAE4zM,mBAAmB,EAAE;MAAA,IAAAC,qBAAA;MAChE,IAAIC,qBAAqB,GAAGrC,cAAc,CAACsC,6BAA6B,CAAC70L,SAAS;MAClF,IAAI80L,mBAAmB,GAAGvC,cAAc,CAACsC,6BAA6B,CAAC30L,OAAO;MAC9E;MACA,IAAIw0L,mBAAmB,EAAE;QACrB,MAAMjzM,KAAK,GAAGiR,QAAQ,CAAC5R,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,CAACi0M,KAAK,EAAEC,KAAK,CAAC,GAAGzC,cAAc,CAACsC,6BAA6B,CAACI,YAAY,CAACxzM,KAAK,CAAC,CAACyzM,gBAAgB,CAACjpM,KAAK,CAAC,eAAe,CAAC;;QAE/H;QACA,MAAMkpM,cAAc,GAAG5B,oBAAoB,CAACwB,KAAK,CAAC;QAClD,MAAMK,cAAc,GAAG7B,oBAAoB,CAACyB,KAAK,CAAC;QAElDJ,qBAAqB,GAAGO,cAAc;QACtCL,mBAAmB,GAAGM,cAAc;MACxC;MACA,MAAMC,qBAAqB,GAAGvoN,QAAQ,CAAC3B,KAAK,CAAC;QACzCG,EAAE,EAAE,2BAA2BwV,KAAK,EAAE;QACtC7T,KAAK,EAAE,yBAAyB;QAChCF,UAAU,EAAE,2BAA2B+T,KAAK,EAAE;QAC9CnU,QAAQ,EAAEA,CAAA,KAAMynN,kBAAkB,CAAC,CAAC;QACpCnlN,YAAY,EAAE,QAAQ;QACtB9C,UAAU,EAAE;MAChB,CAAC,CAAC;MAEF,MAAMguM,qBAAqB,GAAGxrM,KAAK,CAACxD,KAAK,CAAC;QACtCU,IAAI,EAAE,MAAM;QACZoB,KAAK,EAAE,oBAAoB;QAC3BrB,KAAK,EAAE,WAAW;QAClBe,QAAQ,EAAEA,CAAA,KAAMynN,kBAAkB,CAAC,CAAC;QACpCnlN,YAAY,EAAE,OAAO;QACrBvC,KAAK,EAAEkoN,qBAAqB;QAC5BzoN,UAAU,EAAE;MAChB,CAAC,CAAC;MAEF,MAAMiuM,mBAAmB,GAAGzrM,KAAK,CAACxD,KAAK,CAAC;QACpCU,IAAI,EAAE,MAAM;QACZoB,KAAK,EAAE,kBAAkB;QACzBrB,KAAK,EAAE,WAAW;QAClBe,QAAQ,EAAEA,CAAA,KAAMynN,kBAAkB,CAAC,CAAC;QACpCnlN,YAAY,EAAE,OAAO;QACrBvC,KAAK,EAAEooN,mBAAmB;QAC1B3oN,UAAU,EAAE;MAChB,CAAC,CAAC;MAEF,MAAMmpN,0CAA0C,GAAGxqN,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAChFiqN,0CAA0C,CAAC3tN,SAAS,CAACE,GAAG,CAAC,mCAAmC,CAAC;MAC7FytN,0CAA0C,CAAChqN,EAAE,GAAG,GAAGwV,KAAK,GAAG;MAE3Dw0M,0CAA0C,CAAC/sN,WAAW,CAAC8sN,qBAAqB,CAAC;MAC7EC,0CAA0C,CAAC/sN,WAAW,CAAC4xM,qBAAqB,CAAC;MAC7Emb,0CAA0C,CAAC/sN,WAAW,CAAC6xM,mBAAmB,CAAC;;MAE3E;MACAttM,QAAQ,CAAC5E,QAAQ,CAACmtN,qBAAqB,EAAE5C,0BAA0B,GAAAkC,qBAAA,GAAElC,0BAA0B,CAAC,CAAC,CAAC,cAAAkC,qBAAA,uBAA7BA,qBAAA,CAA+BjoN,KAAK,CAAC;MAE1G4oN,0CAA0C,CAAC1pN,KAAK,CAACoK,OAAO,GAAG,MAAM;MACjE,OAAOs/M,0CAA0C;IACrD;IAEA,SAASC,eAAeA,CAACv3M,KAAK,EAA+B;MAAA,IAA7B02M,mBAAmB,GAAAriN,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,KAAK;MACvD,MAAM4L,SAAS,GAAGD,KAAK,CAACjT,aAAa,CAAC,cAAc,CAAC;MACrD,MAAMkX,IAAI,GAAG7V,KAAK,CAACoV,IAAI,CAACvD,SAAS,CAAC9M,gBAAgB,CAAC,aAAa,CAAC,CAAC;MAElE8Q,IAAI,CAAC5Z,OAAO,CAACuW,GAAG,IAAI;QAChB;QACA,MAAMoC,MAAM,GAAGyzM,8BAA8B,CAAC71M,GAAG,CAACtT,EAAE,EAAEopN,mBAAmB,CAAC;;QAE1E;QACA91M,GAAG,CAAC42M,qBAAqB,CAAC,UAAU,EAAEx0M,MAAM,CAAC;MACjD,CAAC,CAAC;IACN;IAEA8xM,wBAAwB,GAAG90M,KAAK,CAAC7S,KAAK,CAAC;MACnC+S,OAAO,EAAE,wBAAwB;MACjCa,QAAQ,EAAE,sBAAsB;MAChCG,cAAc,EAAE,CACd,iBAAiB,EACjB,uDAAuD,EACvD,gEAAgE,EAChE,qCAAqC,EACrC,oBAAoB,CACrB;MACDf,QAAQ,EAAE,KAAK;MACfiB,SAAS,EAAE,IAAI;MACfC,eAAe,EAAEg0M,cAAc,CAAC1uI,SAAS;MACzCrlE,uBAAuB,EAAEA,CAAA,KAAM+0M,6BAA6B,CAAC,2DAA2D,EAAE,yBAAyB;IACrJ,CAAC,CAAC;IAEJ,IAAI9B,cAAc,CAACsC,6BAA6B,CAACY,eAAe,EAAE;MAC9D,MAAMn9G,SAAS,GAAGi6G,cAAc,CAACsC,6BAA6B,CAACY,eAAe,CACzE5jN,GAAG,CAAC,CAAC6jN,EAAE,EAAE1iN,CAAC,KAAK;QACZ,MAAM;UAAE2iN,WAAW;UAAEC;QAAO,CAAC,GAAGC,8BAA8B,CAACH,EAAE,CAAC;QAClE,MAAM50M,KAAK,GAAG9N,CAAC,GAAG,CAAC;QAEnB,OAAO;UACH1H,EAAE,EAAEwV,KAAK;UACTV,MAAM,EAAEu1M,WAAW;UACnBppN,UAAU,EAAE,CAAC;YAAEE,GAAG,EAAE,WAAW;YAAEC,KAAK,EAAEkpN,MAAM,CAACE;UAAiB,CAAC,CAAC;UAClE12M,SAAS,EAAEk0M,WAAW,CAAC3uI,SAAS;UAChCrkE,iBAAiB,EAAG7X,KAAK,IAAK+qN,uBAAuB,CAAC/qN,KAAK,EAAEmtN,MAAM,CAAC;UACpE31M,OAAO,EAAExX,KAAK,IAAI,CAAC;QACvB,CAAC;MACL,CAAC,CAAC;MAENuV,KAAK,CAAC9V,QAAQ,CAAC4qN,wBAAwB,EAAEx6G,SAAS,EAAE,KAAK,CAAC;MAC1Di9G,eAAe,CAACzC,wBAAwB,CAAC;IAC7C;IAAC;;IAED;IACCC,gBAAgB,GAAG/0M,KAAK,CAAC7S,KAAK,CAAC;MAC5B+S,OAAO,EAAE,0BAA0B;MACnCa,QAAQ,EAAE,8GAA8G;MACxHG,cAAc,EAAE,CACZ,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,CACtB;MACDf,QAAQ,EAAE,KAAK;MACfiB,SAAS,EAAE,IAAI;MACfC,eAAe,EAAEg0M,cAAc,CAAC1uI,SAAS;MACzCrlE,uBAAuB,EAAEA,CAAA,KAAM+0M,6BAA6B,CAAC,6DAA6D,EAAE,2BAA2B;IAC3J,CAAC,CAAC;IAEF,IAAI9B,cAAc,CAACsC,6BAA6B,CAACkB,WAAW,EAAE;MAC1D,MAAMz9G,SAAS,GAAGi6G,cAAc,CAACsC,6BAA6B,CAACkB,WAAW,CACrElkN,GAAG,CAAC,CAACmkN,EAAE,EAAEhjN,CAAC,KAAK;QACZ,MAAM;UAAE2iN,WAAW;UAAEM;QAAO,CAAC,GAAGC,0BAA0B,CAACF,EAAE,CAAC;QAC9D,MAAMl1M,KAAK,GAAG9N,CAAC,GAAG,CAAC;QAEnB,OAAO;UACH1H,EAAE,EAAEwV,KAAK;UACTV,MAAM,EAAEu1M,WAAW;UACnBppN,UAAU,EAAE,CAAC;YAAEE,GAAG,EAAE,WAAW;YAAEC,KAAK,EAAEupN,MAAM,CAACH;UAAiB,CAAC,CAAC;UAClE12M,SAAS,EAAEk0M,WAAW,CAAC3uI,SAAS;UAChCrkE,iBAAiB,EAAG7X,KAAK,IAAK+qN,uBAAuB,CAAC/qN,KAAK,EAAEwtN,MAAM,CAAC;UACpEh2M,OAAO,EAAEA,CAAA,KAAM,CAAC;QACpB,CAAC;MACL,CAAC,CAAC;MAENjC,KAAK,CAAC9V,QAAQ,CAAC6qN,gBAAgB,EAAEz6G,SAAS,EAAE,KAAK,CAAC;MAClDi9G,eAAe,CAACxC,gBAAgB,CAAC;IACrC;;IAEA;IACAC,iBAAiB,GAAGh1M,KAAK,CAAC7S,KAAK,CAAC;MAC5B+S,OAAO,EAAE,2BAA2B;MACpCa,QAAQ,EAAE,eAAe;MACzBG,cAAc,EAAE,CACZ,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,2CAA2C,EAC3C,sBAAsB,EACtB,YAAY,EACZ,UAAU,CACb;MACDf,QAAQ,EAAE,KAAK;MACfiB,SAAS,EAAE,IAAI;MACfC,eAAe,EAAEg0M,cAAc,CAAC1uI,SAAS;MACzCrlE,uBAAuB,EAAEA,CAAA,KAAM+0M,6BAA6B,CAAC,8DAA8D,EAAE,4BAA4B;IAC7J,CAAC,CAAC;IAEF,IAAI9B,cAAc,CAACsC,6BAA6B,CAACI,YAAY,EAAE;MAC3D,MAAM38G,SAAS,GAAGi6G,cAAc,CAACsC,6BAA6B,CAACI,YAAY,CACtEpjN,GAAG,CAAC,CAACskN,EAAE,EAAEnjN,CAAC,KAAK;QACZ,MAAM;UAAE2iN,WAAW;UAAES;QAAO,CAAC,GAAGC,0BAA0B,CAACF,EAAE,CAAC;QAC9D,MAAMr1M,KAAK,GAAG9N,CAAC,GAAG,CAAC;QAEnB,OAAO;UACH1H,EAAE,EAAEwV,KAAK;UACTV,MAAM,EAAEu1M,WAAW;UACnBppN,UAAU,EAAE,CAAC;YAAEE,GAAG,EAAE,WAAW;YAAEC,KAAK,EAAE0pN,MAAM,CAACN;UAAiB,CAAC,CAAC;UAClE12M,SAAS,EAAEk0M,WAAW,CAAC3uI,SAAS;UAChCrkE,iBAAiB,EAAG7X,KAAK,IAAK+qN,uBAAuB,CAAC/qN,KAAK,EAAE2tN,MAAM,CAAC;UACpEn2M,OAAO,EAAExX,KAAK,IAAI,CAAC;QACvB,CAAC;MACL,CAAC,CAAC;MAENuV,KAAK,CAAC9V,QAAQ,CAAC8qN,iBAAiB,EAAE16G,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC;MACzDi9G,eAAe,CAACvC,iBAAiB,EAAE,IAAI,CAAC;IAC5C;IAAC;;IAED;IACAC,uBAAuB,GAAGj1M,KAAK,CAAC7S,KAAK,CAAC;MAClC+S,OAAO,EAAE,iCAAiC;MAC1Ca,QAAQ,EAAE,0FAA0F;MACpGG,cAAc,EAAE,CACZ,iBAAiB,EACjB,cAAc,EACd,yBAAyB,EACzB,gBAAgB,CACnB;MACDM,OAAO,EAAE,KAAK;MACdrB,QAAQ,EAAE,KAAK;MACfiB,SAAS,EAAE,IAAI;MACfC,eAAe,EAAEg0M,cAAc,CAAC1uI,SAAS;MACzCrlE,uBAAuB,EAAEA,CAAA,KAAM+0M,6BAA6B,CAAC,oEAAoE,EAAE,kCAAkC;IACzK,CAAC,CAAC;IAEF,IAAI9B,cAAc,CAACsC,6BAA6B,CAACyB,kBAAkB,EAAE;MACjE,MAAMh+G,SAAS,GAAGi6G,cAAc,CAACsC,6BAA6B,CAACyB,kBAAkB,CAC5EzkN,GAAG,CAAC,CAAC0kN,EAAE,EAAEvjN,CAAC,KAAK;QACZ,MAAM;UAAE2iN,WAAW;UAAEa;QAAO,CAAC,GAAGC,gCAAgC,CAACF,EAAE,CAAC;QACpE,MAAMz1M,KAAK,GAAG9N,CAAC,GAAG,CAAC;QAEnB,OAAO;UACH1H,EAAE,EAAEwV,KAAK;UACTV,MAAM,EAAEu1M,WAAW;UACnBppN,UAAU,EAAE,CAAC;YAAEE,GAAG,EAAE,WAAW;YAAEC,KAAK,EAAE8pN,MAAM,CAACV;UAAiB,CAAC,CAAC;UAClE12M,SAAS,EAAEk0M,WAAW,CAAC3uI,SAAS;UAChCrkE,iBAAiB,EAAG7X,KAAK,IAAK+qN,uBAAuB,CAAC/qN,KAAK,EAAE+tN,MAAM,CAAC;UACpEv2M,OAAO,EAAEA,CAAA,KAAM,CAAC;QACpB,CAAC;MACL,CAAC,CAAC;MAENjC,KAAK,CAAC9V,QAAQ,CAAC+qN,uBAAuB,EAAE36G,SAAS,EAAE,KAAK,CAAC;MAEzDi9G,eAAe,CAACtC,uBAAuB,CAAC;IAC5C;;IAEA;IACAC,0BAA0B,GAAGl1M,KAAK,CAAC7S,KAAK,CAAC;MACrC+S,OAAO,EAAE,oCAAoC;MAC7Ca,QAAQ,EAAE,8EAA8E;MACxFG,cAAc,EAAE,CACZ,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,CACxB;MACDf,QAAQ,EAAE,KAAK;MACfiB,SAAS,EAAE,IAAI;MACfC,eAAe,EAAEg0M,cAAc,CAAC1uI,SAAS;MACzCrlE,uBAAuB,EAAEA,CAAA,KAAM+0M,6BAA6B,CAAC,uEAAuE,EAAE,qCAAqC;IAC/K,CAAC,CAAC;IAEF,IAAI9B,cAAc,CAACsC,6BAA6B,CAAC6B,qBAAqB,EAAE;MACpE,MAAMp+G,SAAS,GAAGi6G,cAAc,CAACsC,6BAA6B,CAAC6B,qBAAqB,CAC/E7kN,GAAG,CAAC,CAAC8kN,EAAE,EAAE3jN,CAAC,KAAK;QACZ,MAAM;UAAE2iN,WAAW;UAAEiB;QAAO,CAAC,GAAGC,oCAAoC,CAACF,EAAE,CAAC;QACxE,MAAM71M,KAAK,GAAG9N,CAAC,GAAG,CAAC;QAEnB,OAAO;UACH1H,EAAE,EAAEwV,KAAK;UACTV,MAAM,EAAEu1M,WAAW;UACnBppN,UAAU,EAAE,CAAC;YAAEE,GAAG,EAAE,WAAW;YAAEC,KAAK,EAAEkqN,MAAM,CAACd;UAAiB,CAAC,CAAC;UAClE12M,SAAS,EAAEk0M,WAAW,CAAC3uI,SAAS;UAChCrkE,iBAAiB,EAAG7X,KAAK,IAAK+qN,uBAAuB,CAAC/qN,KAAK,EAAEmuN,MAAM,CAAC;UACpE32M,OAAO,EAAEA,CAAA,KAAM,CAAC;QACpB,CAAC;MACL,CAAC,CAAC;MAENjC,KAAK,CAAC9V,QAAQ,CAACgrN,0BAA0B,EAAE56G,SAAS,EAAE,KAAK,CAAC;MAC5Di9G,eAAe,CAACrC,0BAA0B,CAAC;IAC/C;IAEA,MAAM4D,sCAAsC,GAAGhsN,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5EyrN,sCAAsC,CAACnvN,SAAS,CAACE,GAAG,CAAC,wCAAwC,CAAC;IAC9F,MAAMkvN,yBAAyB,GAAG7rN,MAAM,CAACC,KAAK,CAAC;MAC3CG,EAAE,EAAE,2BAA2B;MAC/BG,IAAI,EAAE,0BAA0B;MAChCG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC,2BAA2B,EAAE,UAAU,CAAC;MACrDQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAACqqN,+BAA+B,CAAC,CAAC;MAAA;IAC5D,CAAC,CAAC;IAEF,MAAMx9K,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MAC3BG,EAAE,EAAE,WAAW;MACfG,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,WAAW;MACvBQ,QAAQ,EAAEA,CAAA,KAAM;QACZ+lN,gBAAgB,GAAG,EAAE;QACrBpJ,sBAAsB,CAACt+M,IAAI,CAACwnN,yBAAyB,EAAE,IAAI,CAAC;MAChE;IACJ,CAAC,CAAC;IAEF,SAAS4B,kBAAkBA,CAAA,EAAG;MAC1B,MAAM7I,YAAY,GAAGzgN,QAAQ,CAACiD,cAAc,CAAC,2BAA2B,CAAC;MACzE,MAAMkpN,UAAU,GAAGnsN,QAAQ,CAACqG,gBAAgB,CAAC,eAAe,CAAC;;MAE7D;MACA,MAAM+lN,UAAU,GAAG9qN,KAAK,CAACoV,IAAI,CAACy1M,UAAU,CAAC,CAAClpL,IAAI,CAAC19B,QAAQ,IAAIA,QAAQ,CAACM,OAAO,CAAC;;MAE5E;MACA,IAAI,CAACumN,UAAU,EAAE;QACb3L,YAAY,CAACzrM,QAAQ,GAAG,IAAI;QAC5ByrM,YAAY,CAAC5jN,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACtC;MACJ;MAEA,IAAIsvN,QAAQ,GAAG,IAAI,CAAC,CAAC;;MAErBF,UAAU,CAAC5uN,OAAO,CAACgI,QAAQ,IAAI;QAC3B,IAAIA,QAAQ,CAACM,OAAO,EAAE;UAClB,MAAM8iN,YAAY,GAAGpjN,QAAQ,CAACqjN,OAAO,CAAC,QAAQ,CAAC;UAC/C,MAAM32C,QAAQ,GAAG1sK,QAAQ,CAACqjN,OAAO,CAAC,aAAa,CAAC;UAChD,MAAMC,UAAU,GAAG52C,QAAQ,CAACzxK,EAAE;UAC9B,MAAMsoN,YAAY,GAAG,GAAGD,UAAU,GAAG;UACrC,IAAIxK,cAAc;UAClB,IAAIC,YAAY;;UAEhB;UACA,MAAMyK,mBAAmB,GAAG,IAAIC,GAAG,CAAC7kK,MAAM,CAAC2kK,YAAY,CAAC,EAAE;;UAE1D;UACA,MAAMG,mBAAmB,GAAGN,YAAY,CAAC1oN,aAAa,CAAC8oN,mBAAmB,CAAC;UAE3E,IAAIE,mBAAmB,EAAE;YACrB,MAAMjnN,QAAQ,GAAGinN,mBAAmB,CAAChpN,aAAa,CAAC,QAAQ,CAAC;;YAE5D;YACA,MAAMqsN,UAAU,GAAGrD,mBAAmB,CAAC5iN,gBAAgB,CAAC,oBAAoB,CAAC;;YAE7E;YACA,IAAIimN,UAAU,CAAChvN,MAAM,IAAI,CAAC,EAAE;cACxB+gN,cAAc,GAAGiO,UAAU,CAAC,CAAC,CAAC;cAC9BhO,YAAY,GAAGgO,UAAU,CAAC,CAAC,CAAC;YAChC;;YAEA;YACA,MAAMC,kBAAkB,GAAGvqN,QAAQ,IAAIA,QAAQ,CAACJ,KAAK,KAAK,EAAE;YAC5D,MAAM4qN,gBAAgB,GAAGnO,cAAc,IAAIA,cAAc,CAACz8M,KAAK,KAAK,EAAE;YACtE,MAAM6qN,cAAc,GAAGnO,YAAY,IAAIA,YAAY,CAAC18M,KAAK,KAAK,EAAE;YAChE,MAAM8qN,gBAAgB,GAAGF,gBAAgB,IAAIC,cAAc,IAAK,IAAI11M,IAAI,CAACsnM,cAAc,CAACz8M,KAAK,CAAC,IAAI,IAAImV,IAAI,CAACunM,YAAY,CAAC18M,KAAK,CAAE;;YAE/H;YACA,IAAI,CAAC2qN,kBAAkB,IAAI,CAACC,gBAAgB,IAAI,CAACC,cAAc,IAAI,CAACC,gBAAgB,EAAE;cAClFL,QAAQ,GAAG,KAAK;YACpB;UACJ,CAAC,MAAM;YACH;YACAA,QAAQ,GAAG,KAAK;UACpB;QACJ;MACJ,CAAC,CAAC;;MAEF;MACA,IAAIA,QAAQ,EAAE;QACV5L,YAAY,CAACzrM,QAAQ,GAAG,KAAK;QAC7ByrM,YAAY,CAAC5jN,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC7C,CAAC,MAAM;QACH2jN,YAAY,CAACzrM,QAAQ,GAAG,IAAI;QAC5ByrM,YAAY,CAAC5jN,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC1C;IACJ;IAIAivN,sCAAsC,CAACvuN,WAAW,CAACwuN,yBAAyB,CAAC;IAC7ED,sCAAsC,CAACvuN,WAAW,CAACixC,SAAS,CAAC;IAE7D,eAAew9K,+BAA+BA,CAAA,EAAG;MAC7CnE,2BAA2B,GAAGh4M,KAAK,CAAC1P,KAAK,CAAC;QACtCgB,UAAU,EAAE;MAChB,CAAC,CAAC;MAEF,IAAIsrN,kCAAkC,GAAG3sN,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;MAEpE,MAAMswD,KAAK,GAAGzwD,MAAM,CAACC,KAAK,CAAC;QACvBG,EAAE,EAAE,OAAO;QACXG,IAAI,EAAE,IAAI;QACVG,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBM,UAAU,EAAE,OAAO;QACnBQ,QAAQ,EAAEA,CAAA,KAAM;UACZ+lN,gBAAgB,GAAG,EAAE;UACrB73M,KAAK,CAAC/S,IAAI,CAAC+qN,2BAA2B,CAAC;UACvCvJ,sBAAsB,CAACt+M,IAAI,CAACwnN,yBAAyB,EAAE,IAAI,CAAC;QAChE;MACJ,CAAC,CAAC;MAEF,MAAM96K,KAAK,GAAGx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;;MAE7B;MACA,SAASk2K,0BAA0BA,CAAC92M,OAAO,EAAE;QACzC,OAAO;UACHk1M,gBAAgB,EAAEl1M,OAAO,CAACk1M,gBAAgB,IAAI,IAAI;UAClD6B,cAAc,EAAE/2M,OAAO,CAAC+2M,cAAc,IAAI,EAAE;UAC5CC,UAAU,EAAEh3M,OAAO,CAACg3M,UAAU,IAAI,EAAE;UACpCC,uBAAuB,EAAEj3M,OAAO,CAACi3M,uBAAuB,IAAI,EAAE;UAC9DC,oBAAoB,EAAEl3M,OAAO,CAACk3M,oBAAoB,IAAI,EAAE;UACxDC,uBAAuB,EAAEn3M,OAAO,CAACm3M,uBAAuB,IAAI,EAAE;UAC9DC,iBAAiB,EAAEp3M,OAAO,CAACo3M,iBAAiB,IAAI,EAAE;UAClDC,iBAAiB,EAAEr3M,OAAO,CAACq3M,iBAAiB,IAAI,EAAE;UAClDC,gBAAgB,EAAEt3M,OAAO,CAACs3M,gBAAgB,IAAI,EAAE;UAChDC,YAAY,EAAEv3M,OAAO,CAACu3M,YAAY,IAAI,EAAE;UACxCC,YAAY,EAAEx3M,OAAO,CAACw3M,YAAY,IAAI,EAAE;UACxCC,cAAc,EAAEz3M,OAAO,CAACy3M,cAAc,IAAI,EAAE;UAC5CC,aAAa,EAAE13M,OAAO,CAAC03M,aAAa,IAAI,EAAE;UAC1CC,YAAY,EAAE33M,OAAO,CAAC23M,YAAY,IAAI,EAAE;UACxCC,iBAAiB,EAAE53M,OAAO,CAAC43M,iBAAiB,IAAI,EAAE;UAClDC,WAAW,EAAE73M,OAAO,CAAC63M,WAAW,IAAI,EAAE;UACtCC,aAAa,EAAE93M,OAAO,CAAC83M,aAAa,IAAI,EAAE;UAC1CC,iBAAiB,EAAE/3M,OAAO,CAAC+3M,iBAAiB,IAAI,EAAE;UAClDz1M,OAAO,EAAEtC,OAAO,CAACsC,OAAO,IAAI,EAAE;UAC9B+wM,qBAAqB,EAAErzM,OAAO,CAACqzM,qBAAqB,IAAI,EAAE;UAC1Dr/E,gBAAgB,EAAEh0H,OAAO,CAACg0H,gBAAgB,IAAI,EAAE;UAChDC,cAAc,EAAEj0H,OAAO,CAACi0H,cAAc,IAAI;QAC9C,CAAC;MACL;;MAEA;MACA,MAAM+jF,cAAc,GAAGlG,gBAAgB,CAAC7gN,GAAG,CAAE+O,OAAO,IAAK;QACrD;QACA,MAAM1C,OAAO,GAAG00M,iBAAiB,CAAChyM,OAAO,CAACsC,OAAO,CAAC;QAClD,MAAM21M,QAAQ,GAAG/tN,QAAQ,CAACiD,cAAc,CAACmQ,OAAO,CAAC;QAEjD,MAAM46M,SAAS,GAAGhF,GAAG,CAAC7kK,MAAM,CAAC,GAAGruC,OAAO,CAACE,KAAK,GAAG,CAAC,CAAC,CAAE;QACpD,MAAMi4M,wBAAwB,GAAGF,QAAQ,CAAC9tN,aAAa,CAAC,IAAI+tN,SAAS,EAAE,CAAC;QAExE,MAAM/rN,UAAU,GAAG,2BAA2B6T,OAAO,CAACE,KAAK,EAAE;QAC7D,MAAMk4M,+BAA+B,GAAGH,QAAQ,CAAC9tN,aAAa,CAAC,IAAIgC,UAAU,EAAE,CAAC;QAEhF,MAAM6nI,gBAAgB,GAAGmkF,wBAAwB,CAAChuN,aAAa,CAAC,oDAAoD,CAAC;QACrH,MAAM8pI,cAAc,GAAGkkF,wBAAwB,CAAChuN,aAAa,CAAC,kDAAkD,CAAC;QAEjH,MAAMkuN,cAAc,GAAG;UACnBhF,qBAAqB,EAAE+E,+BAA+B,GAAGA,+BAA+B,CAACtsN,KAAK,GAAG,IAAI;UACrGkoI,gBAAgB,EAAEA,gBAAgB,GAAGA,gBAAgB,CAACloI,KAAK,GAAG,IAAI;UAClEmoI,cAAc,EAAEA,cAAc,GAAGA,cAAc,CAACnoI,KAAK,GAAG;QAC5D,CAAC;;QAED;QACA,OAAOgrN,0BAA0B,CAAC;UAAE,GAAG92M,OAAO;UAAE,GAAGq4M;QAAe,CAAC,CAAC;MACxE,CAAC,CAAC;MAEF,MAAMC,4BAA4B,GAAG,MAAMl4L,KAAK,CAACu4B,SAAS,CAAC,wBAAwB,EAAE;QAAC7hB,KAAK;QAAEkhL;MAAc,CAAC,CAAC;MAE7G,IAAIM,4BAA4B,CAACA,4BAA4B,CAAC9wN,MAAM,KAAK,CAAC,EAAE;QACxEqvN,kCAAkC,CAACnoN,SAAS,GAAG,gDAAgD;MACnG,CAAC,MAAM;QACHmoN,kCAAkC,CAACnoN,SAAS,GAAG,6EAA6E;MAChI;MAEAujN,2BAA2B,CAACtqN,WAAW,CAACkvN,kCAAkC,CAAC;MAC3E5E,2BAA2B,CAACtqN,WAAW,CAACozD,KAAK,CAAC;MAE9C9gD,KAAK,CAAC9S,IAAI,CAAC8qN,2BAA2B,CAAC;IAC3C;IAEA57G,WAAW,CAAC1uG,WAAW,CAACuqN,wBAAwB,CAAC;IACjD77G,WAAW,CAAC1uG,WAAW,CAACwqN,gBAAgB,CAAC;IACzC97G,WAAW,CAAC1uG,WAAW,CAACyqN,iBAAiB,CAAC;IAC1C/7G,WAAW,CAAC1uG,WAAW,CAAC0qN,uBAAuB,CAAC;IAChDh8G,WAAW,CAAC1uG,WAAW,CAAC2qN,0BAA0B,CAAC;IACnDj8G,WAAW,CAAC1uG,WAAW,CAACuuN,sCAAsC,CAAC;EACnE;;EAEA;EACA,SAASqC,mBAAmBA,CAACC,SAAS,EAAE;IACpC,OAAOzG,eAAe,CAACzoM,cAAc,CAACkvM,SAAS,CAAC,GAAGzG,eAAe,CAACyG,SAAS,CAAC,GAAG,EAAE;EACtF;;EAGA;EACA,SAASvD,8BAA8BA,CAACH,EAAE,EAAE;IACxC,IAAI2D,SAAS,GAAG,EAAE;IAElB,MAAMzB,UAAU,GAAGlC,EAAE,CAAC4D,UAAU,IAAI,EAAE;IACtC,MAAMzB,uBAAuB,GAAGnC,EAAE,CAAC6D,uBAAuB,IAAI,EAAE;IAChE,MAAMxB,uBAAuB,GAAGrC,EAAE,CAAC8D,uBAAuB,IAAI,EAAE;IAChE,MAAMtB,gBAAgB,GAAGxC,EAAE,CAAC+D,gBAAgB,IAAI,EAAE;IAElD,MAAM3D,gBAAgB,GAAGqD,mBAAmB,CAACzD,EAAE,CAACgE,cAAc,CAAC;IAC/D,MAAM/B,cAAc,GAAGjC,EAAE,CAACgE,cAAc;IAExC,MAAMx2M,OAAO,GAAG,sBAAsB;IAEtC,OAAO;MACHyyM,WAAW,EAAE,CACTgC,cAAc,EACdC,UAAU,EACVC,uBAAuB,EACvBE,uBAAuB,EACvBG,gBAAgB,CACnB;MACDtC,MAAM,EAAE;QACJE,gBAAgB;QAChB6B,cAAc;QACdC,UAAU;QACVC,uBAAuB;QACvBE,uBAAuB;QACvBG,gBAAgB;QAChBh1M;MACJ;IACJ,CAAC;EACL;;EAEA;EACA,SAASgzM,0BAA0BA,CAACF,EAAE,EAAE;IACpC,MAAMgC,iBAAiB,GAAGhC,EAAE,CAAC2D,iBAAiB,IAAI,EAAE;IACpD,MAAM1B,iBAAiB,GAAGjC,EAAE,CAAC4D,iBAAiB,IAAI,EAAE;IACpD,MAAM1B,gBAAgB,GAAGlC,EAAE,CAACyD,gBAAgB,IAAI,EAAE;IAClD,MAAMtB,YAAY,GAAGnC,EAAE,CAAC6D,YAAY,IAAI,EAAE;IAE1C,MAAM32M,OAAO,GAAG,aAAa;IAC7B,MAAM4yM,gBAAgB,GAAGqD,mBAAmB,CAACnD,EAAE,CAAC0D,cAAc,CAAC;IAC/D,MAAM/B,cAAc,GAAG3B,EAAE,CAAC0D,cAAc;IAExC,OAAO;MACH/D,WAAW,EAAE,CACTqC,iBAAiB,EACjBC,iBAAiB,EACjBC,gBAAgB,EAChBC,YAAY,CACf;MACDlC,MAAM,EAAE;QACJH,gBAAgB;QAChB6B,cAAc;QACdK,iBAAiB;QACjBC,iBAAiB;QACjBC,gBAAgB;QAChBC,YAAY;QACZj1M;MACJ;IACJ,CAAC;EACL;;EAEA;EACA,SAASmzM,0BAA0BA,CAACF,EAAE,EAAE;IACpC;IACA,MAAM,CAACpB,KAAK,EAAEC,KAAK,CAAC,GAAImB,EAAE,CAACjB,gBAAgB,CAAEjpM,KAAK,CAAC,eAAe,CAAC;IAEnE,MAAMoqC,WAAW,GAAG8/J,EAAE,CAAC2D,WAAW,IAAI,EAAE;IACxC,MAAMzB,cAAc,GAAGlC,EAAE,CAAC4D,cAAc,IAAI,EAAE;IAC9C,MAAMzB,aAAa,GAAGnC,EAAE,CAAC6D,eAAe,IAAI,EAAE;IAC9C,MAAMzB,YAAY,GAAGpC,EAAE,CAAC6D,eAAe,IAAI,EAAE;IAC7C,MAAMC,iBAAiB,GAAG9D,EAAE,CAAChkG,aAAa,IAAI,EAAE;IAChD,MAAM+nG,cAAc,GAAG,EAAE;IACzB,MAAM9B,YAAY,GAAGjC,EAAE,CAACgE,YAAY,IAAI,EAAE;IAE1C,MAAMrE,gBAAgB,GAAGqD,mBAAmB,CAAChD,EAAE,CAACuD,cAAc,CAAC;IAC/D,MAAM/B,cAAc,GAAGxB,EAAE,CAACuD,cAAc;IAExC,MAAMx2M,OAAO,GAAG,eAAe;IAE/B,IAAIk3M,QAAQ,GAAG,EAAE;IACjB,IAAI9B,aAAa,EAAE8B,QAAQ,IAAI9B,aAAa;IAE5C,IAAIC,YAAY,EAAE6B,QAAQ,IAAI,IAAI7B,YAAY,EAAE;IAEhD,OAAO;MACH5C,WAAW,EAAE,CACTgC,cAAc,EACdsC,iBAAiB,EACjB5jK,WAAW,EACX+hK,YAAY,EACZC,cAAc,EACdE,YAAY,EACZxD,KAAK,EACLC,KAAK,CACR;MACDoB,MAAM,EAAE;QACJN,gBAAgB;QAChBsC,YAAY;QACZ;QACAC,cAAc;QACdC,aAAa;QACbC,YAAY;QACZxD,KAAK;QACLC,KAAK;QACLiF,iBAAiB;QACjBC,cAAc;QACdh3M;MACJ;IACJ,CAAC;EACL;;EAEA;EACA,SAASuzM,gCAAgCA,CAACF,EAAE,EAAE;IAC1C,IAAIT,gBAAgB;IACpB,IAAI6B,cAAc;IAElB,MAAMc,WAAW,GAAGlC,EAAE,CAAC8D,WAAW,IAAI,EAAE;IACxC,MAAMC,eAAe,GAAG/D,EAAE,CAAC8D,WAAW,IAAI,EAAE;IAC5C,MAAMvC,oBAAoB,GAAGvB,EAAE,CAACgE,oBAAoB,IAAI,EAAE;IAC1D,MAAMjC,aAAa,GAAG/B,EAAE,CAACsD,YAAY,IAAI,EAAE;IAC3C,MAAMrB,iBAAiB,GAAGjC,EAAE,CAACsD,YAAY,IAAI,EAAE;IAC/C,MAAMtB,YAAY,GAAGhC,EAAE,CAACsD,YAAY,IAAI,EAAE;IAC1C,MAAMW,oBAAoB,GAAG,EAAE;IAE/B1E,gBAAgB,GAAGqD,mBAAmB,CAAC5C,EAAE,CAACmD,cAAc,CAAC;IACzD/B,cAAc,GAAIpB,EAAE,CAACmD,cAAc;IAEnC,MAAMx2M,OAAO,GAAG,qBAAqB;IAErC,MAAMu3M,gBAAgB,GAAG,EAAE;IAC3B,IAAIL,QAAQ,GAAG,EAAE;IACjB,IAAI9B,aAAa,EAAE8B,QAAQ,IAAI9B,aAAa;IAC5C,IAAIE,iBAAiB,IAAIA,iBAAiB,KAAK,GAAG,EAAE;MAChD4B,QAAQ,IAAI,IAAIK,gBAAgB,EAAE;IACtC,CAAC,MAAM;MACH,IAAIlC,YAAY,EAAE6B,QAAQ,IAAI,IAAI7B,YAAY,EAAE;IACpD;IAEA,OAAO;MACH5C,WAAW,EAAE,CACTgC,cAAc,EACd2C,eAAe,EACfxC,oBAAoB,EACpBsC,QAAQ,CACX;MACD5D,MAAM,EAAE;QACJV,gBAAgB;QAChB2C,WAAW;QACXX,oBAAoB;QACpBQ,aAAa;QACbE,iBAAiB;QACjBD,YAAY;QACZiC,oBAAoB;QACpBt3M;MACJ;IACJ,CAAC;EACL;;EAEA;EACA,SAAS2zM,oCAAoCA,CAACF,EAAE,EAAE;IAC9C,IAAIb,gBAAgB;IACpB,IAAI6B,cAAc;IAElB,MAAMe,aAAa,GAAG/B,EAAE,CAAC+D,aAAa,IAAI,EAAE;IAC5C,MAAMjC,WAAW,GAAG9B,EAAE,CAAC0D,WAAW,IAAI,EAAE;IACxC,MAAM1B,iBAAiB,GAAGhC,EAAE,CAACgE,iBAAiB,IAAI,EAAE;IACpD,MAAMrC,aAAa,GAAG3B,EAAE,CAACkD,YAAY,IAAI,EAAE;IAC3C,MAAMrB,iBAAiB,GAAG7B,EAAE,CAACkD,YAAY,IAAI,EAAE;IAC/C,MAAMtB,YAAY,GAAG5B,EAAE,CAACkD,YAAY,IAAI,EAAE;IAC1C,MAAMW,oBAAoB,GAAG,EAAE;IAE/B1E,gBAAgB,GAAGqD,mBAAmB,CAACxC,EAAE,CAAC+C,cAAc,CAAC;IACzD/B,cAAc,GAAIhB,EAAE,CAAC+C,cAAc;IAEnC,MAAMx2M,OAAO,GAAG,wBAAwB;IAExC,MAAMu3M,gBAAgB,GAAG,EAAE;IAC3B,IAAIL,QAAQ,GAAG,EAAE;IACjB,IAAI9B,aAAa,EAAE8B,QAAQ,IAAI9B,aAAa;IAC5C,IAAIE,iBAAiB,IAAIA,iBAAiB,KAAK,GAAG,EAAE;MAChD4B,QAAQ,IAAI,IAAIK,gBAAgB,EAAE;IACtC,CAAC,MAAM;MACH,IAAIlC,YAAY,EAAE6B,QAAQ,IAAI,IAAI7B,YAAY,EAAE;IACpD;IAEA,OAAO;MACH5C,WAAW,EAAE,CACTgC,cAAc,EACde,aAAa,EACbD,WAAW,EACXE,iBAAiB,CACpB;MACD/B,MAAM,EAAE;QACJd,gBAAgB;QAChB6B,cAAc;QACde,aAAa;QACbD,WAAW;QACXE,iBAAiB;QACjBz1M;MACJ;IACJ,CAAC;EACL;EAEA,OAAO;IACHlY;EACJ,CAAC;AACL,CAAC,EAAE,CAAC;ACpzBJ,MAAM1B,QAAQ,GAAI,YAAY;EAC1B,IAAIsxN,gBAAgB;;EAEpB;EACA,IAAI5lH,WAAW;EACf,IAAI6lH,YAAY;EAChB,IAAIzkE,SAAS;EACb,IAAI0kE,eAAe;EACnB,IAAI5M,eAAe;EACnB,IAAI6M,WAAW;EACf;EACA;EACA,IAAIC,QAAQ;EACZ,IAAIC,WAAW;EACf,IAAIC,WAAW;EACf,IAAIC,aAAa;EACjB;EACA;EACA,IAAIC,mBAAmB;EACvB,IAAIz3G,kBAAkB;EACtB,IAAIumG,eAAe;EACnB;EACA,IAAImR,eAAe;EACnB,IAAIC,eAAe;EACnB,IAAIC,iBAAiB;EACrB;EACA,IAAIC,YAAY;EAChB,IAAIC,uBAAuB;EAC3B,IAAIC,yBAAyB;EAC7B,IAAIC,eAAe;EACnB,IAAIC,eAAe;EACnB,IAAIC,gBAAgB;EACpB,IAAIC,UAAU;EACd,IAAIC,UAAU;EACd,IAAI3gF,OAAO;EACX,IAAI0b,SAAS;EACb,IAAIklE,SAAS;EACb,IAAIxxF,aAAa;EACjB,IAAIyxF,yBAAyB;EAC7B;EACA,IAAIC,MAAM;EACV,IAAIC,UAAU;EACd,IAAIC,WAAW;EACf,IAAIC,cAAc;EAClB,IAAIC,UAAU,GAAG,EAAE;EACnB,IAAIC,UAAU,GAAG,EAAE;EACnB,IAAIC,YAAY,GAAG,EAAE;EACrB,IAAIC,UAAU,GAAG,EAAE;EACnB,IAAIC,MAAM,GAAG,EAAE;EACf,IAAIC,QAAQ,GAAG,EAAE;EACjB,IAAIC,aAAa,GAAG,EAAE;EACtB,IAAIC,WAAW,GAAG,EAAE;EACpB,IAAIC,oBAAoB;EACxB,IAAIC,qBAAqB;EACzB;EACA,IAAIC,QAAQ;EACZ,IAAItN,WAAW;EACf,IAAIuN,UAAU;EACd,IAAIC,OAAO;EACX,IAAI7rK,OAAO;EACX,IAAI8rK,QAAQ;EACZ,IAAIh0N,UAAU;EACd,IAAIi0N,cAAc,GAAG,GAAG;EACxB,IAAIC,UAAU;EACd,IAAIC,YAAY;EAChB,IAAIlhK,UAAU;EACd,IAAImhK,mBAAmB;EACvB,IAAIC,aAAa;EACjB,IAAIC,WAAW;EACf,IAAIC,WAAW;EACf;EACA,IAAIC,eAAe;EACnB,IAAIC,QAAQ;EACZ,IAAIn1D,YAAY;EAChB,IAAIo1D,mBAAmB;EACvB,IAAIC,sBAAsB;EAC1B,IAAIC,cAAc;EAClB,IAAIC,mBAAmB;EACvB,IAAIC,cAAc;EAClB,IAAIC,aAAa;EACjB,IAAIC,eAAe;EACnB,IAAIhkM,cAAc;EAClB,IAAIikM,gBAAgB;EACpB,IAAIC,WAAW,GAAG,KAAK;EACvB,IAAI/mF,YAAY;EAChB,MAAMv9G,UAAU,GAAGyB,IAAI,CAAC8Z,aAAa,CAAC,CAAC;EACvC,IAAIgpL,QAAQ;EAEZ,IAAIjnL,OAAO;EACX,IAAI4jK,cAAc;EAClB,IAAI6O,kBAAkB;EACtB,IAAIyU,UAAU;EACd,IAAIC,UAAU;EACd,IAAIC,YAAY;EAChB,IAAIC,cAAc;EAClB,IAAIC,WAAW;EACf,IAAIC,aAAa;EACjB,IAAIC,eAAe;EACnB,IAAI7sF,eAAe;EAEnB,IAAI8sF,uBAAuB,GAAG,OAAO;EAErC,SAASC,qBAAqBA,CAAA,EAAG;IAC7B,OAAOC,kBAAkB;EAC7B;EACA,SAASC,iBAAiBA,CAAA,EAAG;IACzB,OAAO;MACHC,OAAO,EAAE5D,eAAe;MACxB3xH,EAAE,EAAEuyH;IACR,CAAC;EACL;EACA,SAASiD,kBAAkBA,CAAA,EAAG;IAC1B,OAAO;MACHC,aAAa,EAAEtC,oBAAoB;MACnCuC,cAAc,EAAEtC,qBAAqB;MACrCuC,iBAAiB,EAAExB;IACvB,CAAC;EACL;;EAEA;EACA;EACA,SAASyB,uBAAuBA,CAAA,EAAG;IAC/B1D,gBAAgB,CAACl0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC1C+zN,eAAe,CAACj0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzCi0N,UAAU,CAACn0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACpCk0N,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC1Ck0N,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACxC;EACJ;EACA,SAAS23N,6BAA6BA,CAAA,EAAG;IACrC/D,uBAAuB,CAAC9zN,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACjD6zN,yBAAyB,CAAC/zN,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACnD8zN,eAAe,CAACh0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzCg0N,gBAAgB,CAACl0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC1C+zN,eAAe,CAACj0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzCi0N,UAAU,CAACn0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACpCk0N,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC1Ck0N,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACxC;IACAm0N,SAAS,CAACjxN,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC;IAC/EqvI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACjCivJ,SAAS,CAACnvJ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;EACvC;EAEA,SAAS43N,mBAAmBA,CAAA,EAAG;IAC3B;IACAtD,UAAU,GAAG,EAAE;IACfC,WAAW,GAAG,EAAE;IAChBC,cAAc,GAAG,EAAE;IACnBE,UAAU,GAAG,EAAE;IACfC,YAAY,GAAG,EAAE;IACjBC,UAAU,GAAG,EAAE;IACfC,MAAM,GAAG,EAAE;IACXC,QAAQ,GAAG,EAAE;IACbC,aAAa,GAAG,EAAE;IAClBC,WAAW,GAAG,EAAE;IAChBM,QAAQ,GAAG,EAAE;IACbE,UAAU,GAAG,IAAI;IACjBC,YAAY,GAAG,IAAI;IACnBlhK,UAAU,GAAG,IAAI;IACjBmhK,mBAAmB,GAAG,IAAI;IAC1BC,aAAa,GAAG,IAAI;IACpBC,WAAW,GAAG,IAAI;IAClBC,WAAW,GAAG,IAAI;EACtB;EACA,SAASgC,YAAYA,CAAC1sH,OAAO,EAAE;IAC3BqoH,eAAe,GAAG,CAAC,CAAC;IAEpBroH,OAAO,CAAC3qG,OAAO,CAAC+oD,GAAG,IAAI;MACnB,IAAIuuK,UAAU,GAAGvuK,GAAG,CAACwuK,oBAAoB,GAAGxuK,GAAG,CAACwuK,oBAAoB,GAAG,IAAI;MAE3E,IAAI,CAACvE,eAAe,CAACsE,UAAU,CAAC,EAAE;QAC9BtE,eAAe,CAACsE,UAAU,CAAC,GAAG,EAAE;MACpC;MAEAvuK,GAAG,CAACyuK,oBAAoB,GAAGzuK,GAAG,CAACyuK,oBAAoB,KAAK,EAAE,GAAGzuK,GAAG,CAACyuK,oBAAoB,CAAC5zM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;MACrGmlC,GAAG,CAAC0uK,aAAa,GAAG1uK,GAAG,CAAC0uK,aAAa,KAAK,EAAE,GAAG1uK,GAAG,CAAC0uK,aAAa,CAAC7zM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;MAChFmlC,GAAG,CAAC2uK,cAAc,GAAG3uK,GAAG,CAAC2uK,cAAc,KAAK,EAAE,GAAG3uK,GAAG,CAAC2uK,cAAc,CAAC9zM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;MACnFmlC,GAAG,CAAC4uK,aAAa,GAAG5uK,GAAG,CAAC4uK,aAAa,KAAK,EAAE,GAAG5uK,GAAG,CAAC4uK,aAAa,CAAC/zM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;MAEhFovM,eAAe,CAACsE,UAAU,CAAC,CAACzpN,IAAI,CAACk7C,GAAG,CAAC;IACzC,CAAC,CAAC;EACN;EACA,SAAS6uK,oBAAoBA,CAACjtH,OAAO,EAAE;IACnCuoH,iBAAiB,GAAG,CAAC,CAAC;IAEtBvoH,OAAO,CAAC3qG,OAAO,CAAC+oD,GAAG,IAAI;MACnB,IAAI,CAACmqK,iBAAiB,CAACnqK,GAAG,CAACvlD,IAAI,CAAC,EAAE;QAC9B0vN,iBAAiB,CAACnqK,GAAG,CAACvlD,IAAI,CAAC,GAAG,EAAE;MACpC;MAEA0vN,iBAAiB,CAACnqK,GAAG,CAACvlD,IAAI,CAAC,CAACqK,IAAI,CAACk7C,GAAG,CAAC;IACzC,CAAC,CAAC;IACFmqK,iBAAiB,CAAC,SAAS,CAAC,CAACp5M,IAAI,CAAC,UAAUjU,CAAC,EAAEuU,CAAC,EAAE;MAC9C,IAAIvU,CAAC,CAACm3G,WAAW,GAAG5iG,CAAC,CAAC4iG,WAAW,EAAE;QAC/B,OAAO,CAAC,CAAC;MACb;MACA,IAAIn3G,CAAC,CAACm3G,WAAW,GAAG5iG,CAAC,CAAC4iG,WAAW,EAAE;QAC/B,OAAO,CAAC;MACZ;MACA,OAAO,CAAC;IACZ,CAAC,CAAC;IAEF,IAAIk2G,iBAAiB,CAAC2E,SAAS,EAAE;MAC7B3E,iBAAiB,CAAC,WAAW,CAAC,CAACp5M,IAAI,CAAC,UAAUjU,CAAC,EAAEuU,CAAC,EAAE;QAChD,IAAIvU,CAAC,CAACm3G,WAAW,GAAG5iG,CAAC,CAAC4iG,WAAW,EAAE;UAC/B,OAAO,CAAC,CAAC;QACb;QACA,IAAIn3G,CAAC,CAACm3G,WAAW,GAAG5iG,CAAC,CAAC4iG,WAAW,EAAE;UAC/B,OAAO,CAAC;QACZ;QACA,OAAO,CAAC;MACZ,CAAC,CAAC;IACN;EACJ;EACA,SAAS86G,gBAAgBA,CAACntH,OAAO,EAAE;IAC/BotH,mBAAmB,GAAG,CAAC,CAAC;IACxBjE,UAAU,GAAG,CAAC,CAAC;IAEfnpH,OAAO,CAAC3qG,OAAO,CAACy1E,EAAE,IAAI;MAClB,IAAI7wE,KAAK,GAAG6wE,EAAE,CAACuiJ,6BAA6B;MAC5C,IAAI,CAACD,mBAAmB,CAACnzN,KAAK,CAAC,EAAE;QAC7BmzN,mBAAmB,CAACnzN,KAAK,CAAC,GAAG6wE,EAAE;MACnC;IACJ,CAAC,CAAC;IAEFl0D,MAAM,CAAC8B,IAAI,CAAC00M,mBAAmB,CAAC,CAC3Bj+M,IAAI,CAAC,CAAC,CACN9Z,OAAO,CAACoE,GAAG,IAAI;MACZ0vN,UAAU,CAAC1vN,GAAG,CAAC,GAAG2zN,mBAAmB,CAAC3zN,GAAG,CAAC;IAC9C,CAAC,CAAC;EACV;EACA,SAAS6zN,sBAAsBA,CAAClc,OAAO,EAAE;IACrC,IAAImc,mBAAmB,GAAGnc,OAAO,CAACwb,oBAAoB;IACtD,IAAIW,mBAAmB,KAAK,EAAE,EAAEA,mBAAmB,GAAG,IAAI;IAC1D,IAAIC,UAAU;IAEd,QAAQD,mBAAmB;MACvB,KAAK,IAAI;QAAE;UACPC,UAAU,GAAGpc,OAAO,CAACyb,oBAAoB;UACzC;QACJ;MACA,KAAK,GAAG;QAAE;UACNW,UAAU,GAAGpc,OAAO,CAACyb,oBAAoB;UACzC;QACJ;MACA,KAAK,GAAG;QAAE;UACNW,UAAU,GAAGpc,OAAO,CAACyb,oBAAoB;UACzC;QACJ;MACA,KAAK,GAAG;QAAE;UACNW,UAAU,GAAGpc,OAAO,CAAC0b,aAAa;UAClC;QACJ;MACA,KAAK,GAAG;QAAE;UACNU,UAAU,GAAGpc,OAAO,CAAC2b,cAAc;UACnC;QACJ;MACA,KAAK,GAAG;QAAE;UACNS,UAAU,GAAGpc,OAAO,CAAC4b,aAAa;UAClC;QACJ;IACJ;IAEA,OAAOQ,UAAU;EACrB;EACA;EACA;EACA,SAASC,YAAYA,CAACrc,OAAO,EAAE;IAC3B4Y,QAAQ,GAAGr5G,kBAAkB;IAC7Bs5G,UAAU,GAAG,CAAC;IACdvN,WAAW,GAAGtL,OAAO,CAACsc,YAAY;IAClCxD,OAAO,GAAGlC,QAAQ;EACtB;EACA,SAAS2F,cAAcA,CAAA,EAAG;IACtBC,cAAc,CAAC,CAAC;IAChBzD,QAAQ,GAAG3hM,IAAI,CAACub,uBAAuB,CAAComL,QAAQ,CAAC,CAAC,CAAC;IACnD,MAAM0D,cAAc,GAAG;MACnB7D,QAAQ;MACRtN,WAAW;MACXuN,UAAU;MACVC,OAAO;MACP7rK,OAAO;MACP8rK,QAAQ,EAAE,CAACA,QAAQ,GAAG,EAAE,GAAGA,QAAQ;MACnCE,UAAU,EAAE,CAACA,UAAU,GAAG,GAAG,GAAGA,UAAU;MAC1CC,YAAY,EAAE,CAACA,YAAY,GAAG,GAAG,GAAGA,YAAY;MAChDlhK,UAAU;MACVmhK,mBAAmB,EAAE,CAACA,mBAAmB,GAAG,CAAC,GAAGA,mBAAmB;MACnEC,aAAa,EAAE,CAACA,aAAa,GAAG,EAAE,GAAGA,aAAa;MAClDC,WAAW,EAAE,CAACA,WAAW,GAAG,EAAE,GAAGA,WAAW;MAC5CC,WAAW,EAAE,CAACA,WAAW,GAAG,EAAE,GAAGA;IACrC,CAAC;IACD,IAAIx6M,OAAO,GAAGpY,QAAQ,CAACC,aAAa,CAAC,yBAAyB,CAAC;IAC/DgzN,cAAc,GAAG76M,OAAO,CAACjb,SAAS;IAClC4S,KAAK,CAAC/S,IAAI,CAAC0zN,YAAY,CAAC;IACxB9/M,cAAc,CAAC3T,IAAI,CAAC,CAAC;IACrBwiN,YAAY,CAACuW,SAAS,CAACD,cAAc,EAAE,kBAAkB;MACrD,MAAMtW,YAAY,CAACwW,aAAa,CAAC;QAC/BrpL,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtBw/K,mBAAmB,EAAE/D,UAAU;QAC/B9zN,UAAU,EAAEA,UAAU;QACtBwkD,UAAU,EAAEg2D,kBAAkB;QAC9Bs9G,qBAAqB,EAAE/D,OAAO;QAC9BE,cAAc,EAAEA;MAClB,CAAC,CAAC;MAEF8D,oBAAoB,CAAC,CAAC;MACtBC,8BAA8B,CAAC,CAAC;MAChC5D,mBAAmB,GAAG,CAAC;MACvBvqM,UAAU,CAAC,YAAY;QACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrB,MAAMs5N,YAAY,CAAChG,mBAAmB,EAAE,OAAO,CAAC;QAChDiG,kBAAkB,CAAC,CAAC;MACxB,CAAC,EAAE,IAAI,CAAC;IACZ,CAAC,CAAC;EACN;EACA,SAASH,oBAAoBA,CAAA,EAAG;IAC5B7vK,OAAO,GAAG,EAAE;IACZgsK,UAAU,GAAG,GAAG;IAChBC,YAAY,GAAG,CAAC;IAChBH,QAAQ,GAAG,EAAE;IACbK,aAAa,GAAG,EAAE;IAClBC,WAAW,GAAG,EAAE;IAChBC,WAAW,GAAG,EAAE;IAChBH,mBAAmB,GAAG,CAAC;IACvBH,cAAc,GAAG,GAAG;IACpBj0N,UAAU,GAAG,EAAE;EACnB;EACA,SAASy3N,cAAcA,CAAA,EAAG;IACtB,IAAIU,eAAe,GAAG1F,eAAe,CAAC7wN,aAAa,CAAC,mBAAmB,CAAC;IACxE,IAAIw2N,iBAAiB,GAAG1F,gBAAgB,CAAC9wN,aAAa,CAAC,mBAAmB,CAAC;IAC3E,IAAIy2N,aAAa,GAAGxF,SAAS,CAACjxN,aAAa,CAAC,qBAAqB,CAAC;IAClEsyN,UAAU,GAAGiE,eAAe,CAACA,eAAe,CAAC/zN,aAAa,CAAC,CAACb,KAAK;IACjE4wN,YAAY,GAAGiE,iBAAiB,CAACA,iBAAiB,CAACh0N,aAAa,CAAC,CAACb,KAAK;IACvEywN,QAAQ,GAAGqE,aAAa,CAAC90N,KAAK;EAClC;EACA,SAAS+0N,uBAAuBA,CAAA,EAAG;IAC/BlX,YAAY,CAACmX,UAAU,CAACzE,UAAU,EAAEt5G,kBAAkB,EAAEq3G,QAAQ,EAAE,YAAY;MAC1EngN,KAAK,CAAC/S,IAAI,CAAC0zN,YAAY,CAAC;MACxB,MAAM4F,YAAY,CAAChG,mBAAmB,CAAC;IAC3C,CAAC,CAAC;EACN;;EAEA;EACA;EACA,SAAStjG,mBAAmBA,CAAA,EAAG;IAAA,IAAA6pG,eAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA;IAC3B,IAAIC,YAAY,IAAAT,eAAA,GAAGtF,cAAc,cAAAsF,eAAA,uBAAdA,eAAA,CAAgBU,aAAa;IAChD,IAAIC,WAAW,IAAAV,gBAAA,GAAGvF,cAAc,cAAAuF,gBAAA,uBAAdA,gBAAA,CAAgBW,YAAY;IAC9C,IAAIC,QAAQ,IAAAX,gBAAA,GAAGxF,cAAc,cAAAwF,gBAAA,uBAAdA,gBAAA,CAAgBY,SAAS;IACxC,IAAIC,MAAM,IAAAZ,gBAAA,GAAGzF,cAAc,cAAAyF,gBAAA,uBAAdA,gBAAA,CAAgBa,0BAA0B;IAEvD,IAAIC,gBAAgB,IAAAb,gBAAA,GAAG1F,cAAc,cAAA0F,gBAAA,uBAAdA,gBAAA,CAAgBc,iBAAiB;IACxD,IAAIC,eAAe,IAAAd,gBAAA,GAAG3F,cAAc,cAAA2F,gBAAA,uBAAdA,gBAAA,CAAgBe,eAAe;IACrD,IAAIC,YAAY,IAAAf,gBAAA,GAAG5F,cAAc,cAAA4F,gBAAA,uBAAdA,gBAAA,CAAgBgB,cAAc;IACjD,IAAIC,UAAU,IAAAhB,gBAAA,GAAG7F,cAAc,cAAA6F,gBAAA,uBAAdA,gBAAA,CAAgBiB,8BAA8B;IAC/D,IAAIC,YAAY,IAAAjB,gBAAA,GAAG9F,cAAc,cAAA8F,gBAAA,uBAAdA,gBAAA,CAAgBkB,cAAc;IAEjD,IAAIC,SAAS,GAAG,IAAI;;IAEpB;IACA,IAAIlB,YAAY,KAAK,GAAG,EAAE;MACtBvG,gBAAgB,CAACl0N,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MAC3Ci0N,gBAAgB,CAACl0N,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC7C,IAAIg7N,gBAAgB,KAAK,GAAG,EAAE;QAC1B,IAAI,CAACpG,YAAY,IAAIA,YAAY,KAAK,EAAE,EAAE;UACtCX,gBAAgB,CAACl0N,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;UACvCy7N,SAAS,GAAG,KAAK;QACrB,CAAC,MAAM;UACHzH,gBAAgB,CAACl0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC9C;MACJ,CAAC,MAAM;QACHi0N,gBAAgB,CAACl0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC9C;IACJ,CAAC,MAAM;MACHi0N,gBAAgB,CAACl0N,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACxCg0N,gBAAgB,CAACl0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC9C;IACA;IACA,IAAIy6N,WAAW,KAAK,GAAG,EAAE;MACrB1G,eAAe,CAACj0N,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MAC1Cg0N,eAAe,CAACj0N,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC5C,IAAIk7N,eAAe,KAAK,GAAG,EAAE;QACzB,IAAI,CAACrG,UAAU,IAAIA,UAAU,KAAK,EAAE,EAAE;UAClCb,eAAe,CAACj0N,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;UACtCy7N,SAAS,GAAG,KAAK;QACrB,CAAC,MAAM;UACH1H,eAAe,CAACj0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC7C;MACJ,CAAC,MAAM;QACHg0N,eAAe,CAACj0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC7C;IACJ,CAAC,MAAM;MACHg0N,eAAe,CAACj0N,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACvC+zN,eAAe,CAACj0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC7C;IACA;IACA,IAAI66N,MAAM,KAAK,GAAG,EAAE;MAChB5G,UAAU,CAACn0N,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MACrCk0N,UAAU,CAACn0N,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACvC,IAAIs7N,UAAU,KAAK,GAAG,EAAE;QACpB,IAAI,CAACxG,MAAM,IAAIA,MAAM,KAAK,EAAE,EAAE;UAC1BZ,UAAU,CAACn0N,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;UACjCy7N,SAAS,GAAG,KAAK;QACrB,CAAC,MAAM;UACHxH,UAAU,CAACn0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACxC;MACJ,CAAC,MAAM;QACHk0N,UAAU,CAACn0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACxC;IACJ,CAAC,MAAM;MACHk0N,UAAU,CAACn0N,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MAClCi0N,UAAU,CAACn0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACxC;IACA;IACA,IAAI26N,QAAQ,KAAK,GAAG,EAAE;MAClBzG,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC7Cm0N,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC3C,IAAIo7N,YAAY,KAAK,GAAG,EAAE;QACtB,IAAIpG,aAAa,KAAK,EAAE,EAAE;UACtBb,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;UACvCy7N,SAAS,GAAG,KAAK;QACrB,CAAC,MAAM;UACHvH,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC9C;QACA,IAAIi1N,WAAW,KAAK,EAAE,EAAE;UACpBd,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;UACrCy7N,SAAS,GAAG,KAAK;QACrB,CAAC,MAAM;UACHvH,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC5C;MACJ,CAAC,MAAM;QACHm0N,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC1Cm0N,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC5C;IACJ,CAAC,MAAM;MACHm0N,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC1Ck0N,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC5C;IACA;IACA,IAAIu7N,YAAY,KAAK,GAAG,EAAE;MACtB,IAAI,CAACzG,QAAQ,IAAIA,QAAQ,KAAK,EAAE,EAAE;QAC9BX,SAAS,CAACr0N,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAChCy7N,SAAS,GAAG,KAAK;MACrB,CAAC,MAAM;QACHtH,SAAS,CAACr0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACvC;IACJ,CAAC,MAAM;MACHo0N,SAAS,CAACr0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACvC;IAEA,IAAI46N,QAAQ,KAAK,GAAG,EAAEe,qBAAqB,CAAC,CAAC;IAE7CC,WAAW,CAAC,CAAC;EACjB;EACA,SAASD,qBAAqBA,CAAA,EAAG;IAC7B,IAAIP,YAAY,GAAG3G,cAAc,CAAC4G,cAAc;IAChD,IAAIQ,UAAU,GAAG1H,UAAU,CAAC97L,KAAK,CAACl1B,aAAa,CAAC,OAAO,CAAC;IACxD,IAAI24N,QAAQ,GAAG3H,UAAU,CAAC57L,GAAG,CAACp1B,aAAa,CAAC,OAAO,CAAC;IACpD,IAAIo2B,SAAS,GAAGsiM,UAAU,CAAC/2N,KAAK;IAChC,IAAI0zB,OAAO,GAAGsjM,QAAQ,CAACh3N,KAAK;IAE5B,IAAIs2N,YAAY,KAAK,GAAG,IAAI7hM,SAAS,KAAK,EAAE,IAAIf,OAAO,KAAK,EAAE,EAAE;IAEhE,IAAIA,OAAO,KAAK,OAAO,EAAE;MACrB27L,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C;IAEA,IAAIm7N,YAAY,KAAK,GAAG,EAAE;MACtB,IAAI7hM,SAAS,KAAK,EAAE,IAAIf,OAAO,KAAK,EAAE,EAAE;QACpC27L,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MAC3C;MACA,IAAIu4B,OAAO,KAAK,EAAE,IAAIe,SAAS,KAAK,EAAE,EAAE;QACpC46L,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACzC;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAIs5B,SAAS,IAAIf,OAAO,EAAE;MACtB27L,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACzC,CAAC,MAAM;MACHk0N,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC5C;IACA,IAAIu5B,SAAS,IAAIf,OAAO,IAAIe,SAAS,KAAK,EAAE,EAAE;MAC1C46L,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC9C,CAAC,MAAM;MACHm0N,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC3C;EACJ;EAEA,SAAS87N,eAAeA,CAAA,EAAG;IACvB,IAAIvB,YAAY,GAAGjG,UAAU,CAACvyM,MAAM,CAAC8B,IAAI,CAACywM,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAACkG,aAAa;IACvE,IAAIC,WAAW,GAAGnG,UAAU,CAACvyM,MAAM,CAAC8B,IAAI,CAACywM,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAACoG,YAAY;IACrE,IAAIC,QAAQ,GAAGrG,UAAU,CAACvyM,MAAM,CAAC8B,IAAI,CAACywM,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAACsG,SAAS;IAC/D,IAAIC,MAAM,GAAGvG,UAAU,CAACvyM,MAAM,CAAC8B,IAAI,CAACywM,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAACwG,0BAA0B;IAE9E,IAAIP,YAAY,KAAK,GAAG,EAAE;MACtBvG,gBAAgB,CAACl0N,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC/C,CAAC,MAAM;MACHi0N,gBAAgB,CAACl0N,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC5C;IACA,IAAIy6N,WAAW,KAAK,GAAG,EAAE;MACrB1G,eAAe,CAACj0N,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC9C,CAAC,MAAM;MACHg0N,eAAe,CAACj0N,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC3C;IACA,IAAI26N,QAAQ,KAAK,GAAG,EAAE;MAClBzG,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MAC3Cm0N,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC7C,CAAC,MAAM;MACHm0N,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACxCk0N,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC1C;IACA,IAAI66N,MAAM,KAAK,GAAG,EAAE;MAChB5G,UAAU,CAACn0N,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IACzC,CAAC,MAAM;MACHk0N,UAAU,CAACn0N,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IACtC;EACJ;EAEA,SAAS27N,WAAWA,CAAA,EAAG;IACnB,IAAIjhH,MAAM,GAAGz3G,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC;IAChD,IAAIoxG,MAAM,CAACn6G,MAAM,KAAK,CAAC,EAAE;MACrBgzI,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC,CAAC,MAAM;MACHwzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC;EACJ;EACA;EACA;EACA,SAASoB,oBAAoBA,CAACP,MAAM,EAAE;IAClC,IAAIiuG,YAAY,GAAGjuG,MAAM,CAACC,OAAO,CAACC,SAAS;IAE3C,QAAQ+tG,YAAY;MAChB,KAAK,YAAY;QAAE;UACf;UACAjtG,MAAM,CAACk6N,8BAA8B,CAAC,CAAC;UACvCnnN,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,qBAAqB,CAAC;UAC5ComM,eAAe,CAAC,CAAC;UACjBzkM,MAAM,CAAC63I,oBAAoB,CAAC,CAAC;UAC7B;QACJ;MACA,KAAK,cAAc;QAAE;UACjB;UACA,IAAIsiF,gBAAgB,GAAG/4N,QAAQ,CAACiD,cAAc,CAAC,qBAAqB,CAAC;UACrE,IAAI+1N,UAAU,GAAGh5N,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC;UACxD81N,gBAAgB,CAACl8N,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;UAC3Ck8N,UAAU,CAACn8N,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;UAClC+uM,SAAS,CAAC19L,CAAC,CAAC6kG,SAAS,CAAC;UACtBO,wBAAwB,CAAC,MAAM,CAAC;UAChCtkG,GAAG,CAACC,iBAAiB,CAAC,CAAC;UACvBD,GAAG,CAACiB,YAAY,CAAC5J,eAAe,CAAC,qBAAqB,CAAC;UACvDqrD,SAAS,CAACC,IAAI,CAAC,CAAC;UAChB;QACJ;MACA,KAAK,gBAAgB;QAAE;UACnB2hK,QAAQ,GAAG,KAAK;UAChB,IAAIrzD,eAAe,GAAGr0D,OAAO,CAACC,kBAAkB,CAAC,CAAC;UAClD,IAAIo0D,eAAe,CAAC7iK,MAAM,GAAG,CAAC,EAAE;YAC5B6iK,eAAe,CAAC5iK,OAAO,CAAC2rG,QAAQ,IAAI;cAChC4C,OAAO,CAAC8iD,iCAAiC,CAAC1lD,QAAQ,CAAC1oG,EAAE,CAAC;YAC1D,CAAC,CAAC;UACN;UACA8vN,mBAAmB,GAAGnwD,eAAe,CAACA,eAAe,CAAC7iK,MAAM,GAAG,CAAC,CAAC;UACjEkvI,YAAY,GAAG2zB,eAAe,CAACA,eAAe,CAAC7iK,MAAM,GAAG,CAAC,CAAC,CAACg8G,IAAI,CAAC90G,SAAS;UACzEq0G,kBAAkB,GAAGsnD,eAAe,CAACA,eAAe,CAAC7iK,MAAM,GAAG,CAAC,CAAC,CAACkD,EAAE;UACnEy4N,oBAAoB,CAAC,CAAC;UACtB;QACJ;MACA,KAAK,kBAAkB;QAAE;UACrB,IAAIzF,QAAQ,EAAE;YACVvmN,OAAO,CAAC,MAAM,CAAC;UACnB,CAAC,MAAMiC,GAAG,CAACkoB,eAAe,CAAC,CAAC;UAC5B;QACJ;IACJ;EACJ;EAEA,SAASiqL,iBAAiBA,CAAC53G,WAAW,EAAE;IACpC6mH,mBAAmB,GAAG7mH,WAAW;IACjC+iC,YAAY,GAAG/iC,WAAW,CAAC6P,IAAI,CAAC90G,SAAS;IACzCq0G,kBAAkB,GAAGpP,WAAW,CAACjpG,EAAE;IACnCy4N,oBAAoB,CAAC,CAAC;EAC1B;EAEA,SAASA,oBAAoBA,CAAA,EAAG;IAC5B/pN,GAAG,CAACkoB,eAAe,CAAC,CAAC;IACrBzlB,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,wBAAwBuvI,YAAY,EAAE,CAAC;IAC7D0sF,WAAW,CAAC,CAAC;IACbn1D,0BAA0B,CAAC,CAAC;IAC5B07C,YAAY,CAAC0Z,kBAAkB,CAAC,UAAUjxH,OAAO,EAAE;MAC/CsoH,eAAe,GAAGtoH,OAAO;MACzBu3G,YAAY,CAAC2Z,yCAAyC,CAAC,UAAUC,SAAS,EAAE;QACxEjI,MAAM,GAAGiI,SAAS;QAClB5Z,YAAY,CAAC6Z,gDAAgD,CAACzgH,kBAAkB,EAAE,gBAAgB3Q,OAAO,EAAE;UACvG4qH,QAAQ,GAAG5qH,OAAO,CAAC,CAAC,CAAC,CAACx1C,aAAa;UACnCirG,YAAY,GAAGH,eAAe,CAACs1D,QAAQ,CAAC;UACxCC,mBAAmB,GAAG7qH,OAAO,CAAC,CAAC,CAAC,CAACqxH,8BAA8B;UAC/DvG,sBAAsB,GAAG9qH,OAAO,CAAC,CAAC,CAAC,CAACsxH,iBAAiB;UACrD,MAAMlD,YAAY,CAAChG,mBAAmB,CAAC;QAC3C,CAAC,CAAC;MACN,CAAC,CAAC;IACN,CAAC,CAAC;EACN;EACA;EACA,SAASmJ,qBAAqBA,CAAA,EAAG;IAC7B;IACA,IAAIC,mBAAmB,GAAG,IAAI3iN,IAAI,CAAC2Z,IAAI,CAACmY,iBAAiB,CAACqnL,QAAQ,CAAC,CAAC;IACpE,IAAIt/L,GAAG,GAAG8oM,mBAAmB,CAACt2M,MAAM,CAAC,CAAC,GAAG,CAAC;IAC1C;IACA8vM,mBAAmB,GAAGxiM,IAAI,CAACmY,iBAAiB,CAACqnL,QAAQ,CAAC;IACtD;IACA;IACAiD,cAAc,GAAG,IAAIp8M,IAAI,CACrB2iN,mBAAmB,CAAC12M,WAAW,CAAC,CAAC,EACjC02M,mBAAmB,CAACz2M,QAAQ,CAAC,CAAC,EAC9By2M,mBAAmB,CAACx2M,OAAO,CAAC,CAAC,IAAI0N,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAGA,GAC1D,CAAC;IACDuiM,cAAc,GAAGziM,IAAI,CAAC4Z,wBAAwB,CAAC6oL,cAAc,CAAC;IAC9D;IACAC,aAAa,GAAG,IAAIr8M,IAAI,CACpB2iN,mBAAmB,CAAC12M,WAAW,CAAC,CAAC,EACjC02M,mBAAmB,CAACz2M,QAAQ,CAAC,CAAC,EAC9By2M,mBAAmB,CAACx2M,OAAO,CAAC,CAAC,IAAI0N,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAGA,GACzD,CAAC;IACDwiM,aAAa,GAAG1iM,IAAI,CAAC4Z,wBAAwB,CAAC8oL,aAAa,CAAC;IAC5D;IACAC,eAAe,GAAG,IAAIt8M,IAAI,CAAC2iN,mBAAmB,CAAC12M,WAAW,CAAC,CAAC,EAAE02M,mBAAmB,CAACz2M,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAChGowM,eAAe,GAAG3iM,IAAI,CAAC4Z,wBAAwB,CAAC+oL,eAAe,CAAC;IAChE;IACAhkM,cAAc,GAAG,IAAItY,IAAI,CAAC2iN,mBAAmB,CAAC12M,WAAW,CAAC,CAAC,EAAE02M,mBAAmB,CAACz2M,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnGoM,cAAc,GAAGqB,IAAI,CAAC4Z,wBAAwB,CAACjb,cAAc,CAAC;IAC9D;IACAikM,gBAAgB,GAAGoG,mBAAmB,CAAC12M,WAAW,CAAC,CAAC;EACxD;;EAEA;EACA;EACA,SAAS+gJ,0BAA0BA,CAAA,EAAuC;IAAA,IAAtCz5C,OAAO,GAAA/iH,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,KAAK;IAAA,IAAEqwJ,WAAW,GAAArwJ,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,KAAK;IACpE,IAAIivG,oBAAoB,GAAGx2G,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IAEpE,IAAI,CAACu2G,oBAAoB,EAAE;MACvBA,oBAAoB,GAAGx2G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACpDi2G,oBAAoB,CAAC35G,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MACpD0xG,eAAe,CAAC6b,OAAO,EAAEstC,WAAW,CAAC;MACrCphD,oBAAoB,CAAC/4G,WAAW,CAAC8uC,OAAO,CAAC;IAC7C;IAEAiqE,oBAAoB,CAAC11G,KAAK,CAAC4yF,QAAQ,GAAG,MAAM;IAE5C,IAAI42B,OAAO,KAAK,GAAG,IAAIA,OAAO,KAAK,KAAK,EAAE;MACtC/9E,OAAO,CAAC9uC,WAAW,CAAC0yM,cAAc,CAAC;MACnC5jK,OAAO,CAACn9B,WAAW,CAAC+gM,cAAc,CAAC;IACvC,CAAC,MAAM;MACH5jK,OAAO,CAAC9uC,WAAW,CAAC0yM,cAAc,CAAC;MACnC,IAAInwM,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,IAAI,IAAI,EAC7CjD,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,CAAC9F,SAAS,GAAG,WAAW,GAAGmtH,OAAO;IAC/E;IAEA,IAAIstC,WAAW,KAAK,GAAG,IAAIA,WAAW,KAAK,KAAK,EAAE;MAC9CrrH,OAAO,CAAC9uC,WAAW,CAACuhN,kBAAkB,CAAC;MACvCzyK,OAAO,CAACn9B,WAAW,CAAC4vM,kBAAkB,CAAC;IAC3C,CAAC,MAAM;MACHzyK,OAAO,CAAC9uC,WAAW,CAACuhN,kBAAkB,CAAC;MACvC,IAAIh/M,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC,IAAI,IAAI,EACjDjD,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC,CAAC9F,SAAS,GAAG,gBAAgB,GAAGy6J,WAAW;IAC5F;IACA,OAAOphD,oBAAoB;EAC/B;EACA,SAAS/H,eAAeA,CAAA,EAAuC;IAAA,IAAtC6b,OAAO,GAAA/iH,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,KAAK;IAAA,IAAEqwJ,WAAW,GAAArwJ,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,KAAK;IACzDmnG,SAAS,GAAGtuG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,cAAc;MAC1BQ,QAAQ,EAAEA,CAAA,KAAM;QACZ+0G,eAAe,CAAC,KAAK,CAAC;MAC1B;IACJ,CAAC,CAAC;IAEF6/F,UAAU,GAAGr2M,MAAM,CAACC,KAAK,CAAC;MACtBG,EAAE,EAAE,YAAY;MAChBG,IAAI,EAAE,WAAW,GAAG2pH,OAAO;MAC3BxpH,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QACZ+0G,eAAe,CAAC,YAAY,CAAC;MACjC;IACJ,CAAC,CAAC;IACF8/F,eAAe,GAAGt2M,MAAM,CAACC,KAAK,CAAC;MAC3BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QACZitG,WAAW,CAAC,YAAY,CAAC;MAC7B;IACJ,CAAC,CAAC;IAEFwyG,cAAc,GAAGlhN,MAAM,CAACC,KAAK,CAAC;MAC1BG,EAAE,EAAE,gBAAgB;MACpBG,IAAI,EAAE,gBAAgB,GAAGi3J,WAAW;MACpC92J,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QACZ+0G,eAAe,CAAC,gBAAgB,CAAC;MACrC;IACJ,CAAC,CAAC;IACF2qG,mBAAmB,GAAGnhN,MAAM,CAACC,KAAK,CAAC;MAC/BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QACZitG,WAAW,CAAC,gBAAgB,CAAC;MACjC;IACJ,CAAC,CAAC;IAEFviE,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvCgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IACtCwvC,OAAO,CAAC9uC,WAAW,CAACixG,SAAS,CAAC;IAE9ByhG,cAAc,GAAGnwM,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9C4vM,cAAc,CAACtzM,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACtDozM,cAAc,CAAC1yM,WAAW,CAACg5M,UAAU,CAAC;IACtCtG,cAAc,CAAC1yM,WAAW,CAACi5M,eAAe,CAAC;IAC3CnqK,OAAO,CAAC9uC,WAAW,CAAC0yM,cAAc,CAAC;IAEnC6O,kBAAkB,GAAGh/M,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDy+M,kBAAkB,CAACniN,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC1DiiN,kBAAkB,CAACvhN,WAAW,CAAC6jN,cAAc,CAAC;IAC9CtC,kBAAkB,CAACvhN,WAAW,CAAC8jN,mBAAmB,CAAC;IACnDh1K,OAAO,CAAC9uC,WAAW,CAACuhN,kBAAkB,CAAC;EAC3C;EACA,SAASlwG,WAAWA,CAAC6qH,WAAW,EAAE;IAC9B,IAAIA,WAAW,IAAI,YAAY,EAAE;MAC7BlG,UAAU,GAAG,KAAK;IACtB;IACA,IAAIkG,WAAW,IAAI,gBAAgB,EAAE;MACjCjG,UAAU,GAAG,KAAK;MAClBC,YAAY,GAAG,GAAG;IACtB;IACA4C,kBAAkB,CAAC,CAAC;EACxB;EACA,SAASqD,oBAAoBA,CAACtgB,OAAO,EAAE;IACnC,IAAIugB,UAAU,GAAGvgB,OAAO,CAACwb,oBAAoB;IAC7C,IAAIgF,SAAS,GAAGxgB,OAAO,CAACygB,mBAAmB;IAC3C,IAAIC,YAAY,GAAG1gB,OAAO,CAAC2gB,kBAAkB;IAC7C,IAAIC,YAAY;IAChB,IAAIC,UAAU;IAEd,IAAIN,UAAU,KAAK,IAAI,IAAIA,UAAU,KAAK,GAAG,IAAIA,UAAU,KAAK,GAAG,EAAE;MACjEK,YAAY,GAAG5gB,OAAO,CAACyb,oBAAoB;IAC/C;IACA,IAAI8E,UAAU,KAAK,GAAG,EAAEK,YAAY,GAAG5gB,OAAO,CAAC0b,aAAa;IAC5D,IAAI6E,UAAU,KAAK,GAAG,EAAEK,YAAY,GAAG5gB,OAAO,CAAC2b,cAAc;IAC7D,IAAI4E,UAAU,KAAK,GAAG,EAAEK,YAAY,GAAG5gB,OAAO,CAAC4b,aAAa;IAE5D,QAAQ8E,YAAY;MAChB,KAAK,SAAS;QACV,IAAIE,YAAY,IAAIA,YAAY,CAAC58N,MAAM,IAAIw8N,SAAS,EAAE;UAClDK,UAAU,GAAG,IAAI;QACrB,CAAC,MAAM;UACHA,UAAU,GAAG,KAAK;QACtB;QACA;MACJ,KAAK,SAAS;QACV,IAAID,YAAY,IAAIA,YAAY,CAAC58N,MAAM,IAAIw8N,SAAS,EAAE;UAClDK,UAAU,GAAG,IAAI;QACrB,CAAC,MAAM;UACHA,UAAU,GAAG,KAAK;QACtB;QACA;MACJ,KAAK,SAAS;QACVA,UAAU,GAAG,IAAI;QACjB;MACJ,KAAK,SAAS;QACVA,UAAU,GAAG,IAAI;QACjB;MACJ,KAAK,SAAS;QACVA,UAAU,GAAG,IAAI;QACjB;MACJ,KAAK,EAAE;QACHA,UAAU,GAAG,IAAI;QACjB;MACJ;QACIA,UAAU,GAAG,KAAK;QAClB;IACR;IAEA,OAAOA,UAAU,GAAG,UAAU,GAAG,YAAY;EACjD;EACA,SAASC,cAAcA,CAACC,YAAY,EAAE;IAClC,IAAI/vG,OAAO,GAAG+vG,YAAY,CAAClK,WAAW;IACtC,IAAImK,SAAS,GAAGD,YAAY,CAAChK,aAAa;IAC1C,IAAIkK,uBAAuB,GAAG,CAAC,CAAC;IAEhC,SAASC,YAAYA,CAAA,EAAG;MACpB,IAAIC,QAAQ,GAAG37M,MAAM,CAAC8B,IAAI,CAAC2vM,eAAe,CAAC;MAE3CkK,QAAQ,CAACl9N,OAAO,CAACoE,GAAG,IAAI;QACpB,IAAIoB,IAAI,GAAGwtN,eAAe,CAAC5uN,GAAG,CAAC,CAAC6J,MAAM,CAACkvN,EAAE,IAAI;UACzC,IAAIC,UAAU,GAAGf,oBAAoB,CAACc,EAAE,CAAC;UAEzC,QAAQpwG,OAAO;YACX,KAAK,KAAK;cACN,IAAI+lG,aAAa,KAAK,GAAG,EAAE,OAAO,IAAI;cACtC,OAAOqK,EAAE,CAACtY,YAAY,KAAKkY,SAAS;YACxC,KAAK,YAAY;YACjB,KAAK,UAAU;cACX,IAAIjK,aAAa,KAAK,GAAG,EAAE,OAAOqK,EAAE,CAACtY,YAAY,KAAKkY,SAAS,IAAIK,UAAU,KAAKrwG,OAAO;cACzF,OAAOqwG,UAAU,KAAKrwG,OAAO;YACjC;cACI;UACR;;UAEA;UACA;UACA;UACA;QACJ,CAAC,CAAC;QACFiwG,uBAAuB,CAAC54N,GAAG,CAAC,GAAGoB,IAAI;MACvC,CAAC,CAAC;IACN;IAEA,IAAIs3N,YAAY,CAACO,OAAO,EAAE;MACtBnb,YAAY,CAACob,QAAQ,CAAChiH,kBAAkB,EAAEq3G,QAAQ,EAAE,UAAUhoH,OAAO,EAAE;QACnE0sH,YAAY,CAAC1sH,OAAO,CAAC;QACrBsyH,YAAY,CAAC,CAAC;MAClB,CAAC,CAAC;IACN,CAAC,MAAM;MACHA,YAAY,CAAC,CAAC;IAClB;IAEAM,gBAAgB,CAACP,uBAAuB,CAAC;EAC7C;EACA,SAAS7hH,iBAAiBA,CAAA,EAAG;IACzBs3G,eAAe,CAAC7vN,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEgxN,UAAU,GAAGjxN,cAAc,CAACZ,KAAK;IACrC,CAAC,CAAC;IACFwhN,eAAe,CAACjjN,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEkxN,YAAY,GAAGnxN,cAAc,CAACZ,KAAK;MACnC8xN,UAAU,GAAGlxN,cAAc,CAACrF,SAAS;IACzC,CAAC,CAAC;IACF8yN,WAAW,CAAC9vN,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACxCo2N,kBAAkB,CAAC,CAAC;MACpBxmN,KAAK,CAAC/S,IAAI,CAACktG,WAAW,CAAC;IAC3B,CAAC,CAAC;EACN;EAEA,SAASqsH,kBAAkBA,CAAA,EAAG;IAC1B,IAAI9C,UAAU,EAAE;MACZtD,WAAW,GAAGsD,UAAU;IAC5B,CAAC,MAAM;MACHtD,WAAW,GAAGA,WAAW,GAAGA,WAAW,GAAG,KAAK;IACnD;IACA,IAAIuD,UAAU,EAAE;MACZtD,WAAW,GAAGsD,UAAU;MACxBrD,aAAa,GAAGsD,YAAY;IAChC,CAAC,MAAM,IAAI,CAACtD,aAAa,EAAE;MACvBD,WAAW,GAAG,KAAK;MACnBC,aAAa,GAAG,GAAG;IACvB;IAEA,IAAIoD,UAAU,IAAIC,UAAU,EAAE;MAC1B0G,cAAc,CAAC;QAAEjK,WAAW;QAAEE;MAAc,CAAC,CAAC;IAClD;IAEA,IAAI0K,SAAS,GAAG/6N,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC;IAC1D,IAAI+3N,eAAe,GAAGD,SAAS,IAAI,IAAI,GAAG3K,WAAW,GAAG2K,SAAS,CAACz6N,OAAO,CAACy6N,SAAS,CAACt4N,aAAa,CAAC,CAACtF,SAAS;IAC5G4mK,0BAA0B,CAACosD,WAAW,GAAGA,WAAW,GAAG,KAAK,EAAE6K,eAAe,CAAC;IAE9EvB,qBAAqB,CAAC,CAAC;EAC3B;EACA,SAASwB,uBAAuBA,CAAA,EAAG;IAC/B,IAAIl4N,IAAI,GAAG,CACP;MAAEnB,KAAK,EAAE,KAAK;MAAEjB,IAAI,EAAE;IAAM,CAAC,EAC7B;MAAEiB,KAAK,EAAE,UAAU;MAAEjB,IAAI,EAAE;IAAW,CAAC,EACvC;MAAEiB,KAAK,EAAE,YAAY;MAAEjB,IAAI,EAAE;IAAa,CAAC,CAC9C;IACD,IAAIwvN,WAAW,KAAK7rN,SAAS,EAAE;MAC3B6rN,WAAW,GAAG,KAAK;IACvB,CAAC,MAAM;MACHA,WAAW,GAAGA,WAAW;IAC7B;IACAnuN,QAAQ,CAAC5E,QAAQ,CAAC4yN,eAAe,EAAEjtN,IAAI,EAAEotN,WAAW,CAAC;EACzD;EACA,SAAS1M,4BAA4BA,CAACv7G,OAAO,EAAE;IAC3C;IACA;IACA,IAAInlG,IAAI,GAAGmlG,OAAO,CAACnhG,GAAG,CAACu/C,GAAG,IAAI;MAC1B,OAAO;QACH1kD,KAAK,EAAE0kD,GAAG,CAAC87J,YAAY;QACvBzhN,IAAI,EAAE2lD,GAAG,CAAC+7J;MACd,CAAC;IACL,CAAC,CAAC;IACF,IAAIgO,aAAa,KAAK/rN,SAAS,EAAE;MAC7B+rN,aAAa,GAAG,GAAG;MACnBD,WAAW,GAAG,KAAK;IACvB,CAAC,MAAM;MACHC,aAAa,GAAGA,aAAa;MAC7BD,WAAW,GAAGA,WAAW;IAC7B;IACArtN,IAAI,CAAC49D,OAAO,CAAC;MAAE/+D,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IACzCqB,QAAQ,CAAC5E,QAAQ,CAACgmN,eAAe,EAAErgN,IAAI,EAAEstN,aAAa,CAAC;EAC3D;EACA,SAAS7zC,iBAAiBA,CAAA,EAAG;IACzBy+C,uBAAuB,CAAC,CAAC;IACzBxb,YAAY,CAACyb,uBAAuB,CAChC;MACIr4K,UAAU,EAAEg2D,kBAAkB;MAC9BsS,YAAY,EAAE+kG,QAAQ;MACtBtjL,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;IACrB,CAAC,EACD+sK,4BACJ,CAAC;EACL;EACA,SAAS7sG,eAAeA,CAAC/G,MAAM,EAAE;IAC7B3F,WAAW,GAAGn6F,KAAK,CAAC1P,KAAK,CAAC,CAAC,CAAC,CAAC;IAE7B2vN,eAAe,GAAGhuN,QAAQ,CAAC3B,KAAK,CAAC;MAC7B8B,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACd,CAAC,CAAC;IACFghN,eAAe,GAAGphN,QAAQ,CAAC3B,KAAK,CAAC;MAC7B4B,UAAU,EAAE,iBAAiB;MAC7BE,KAAK,EAAE,cAAc;MACrBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACd,CAAC,CAAC;IACF6tN,WAAW,GAAG7vN,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEFkvN,WAAW,CAACpzN,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;IACtC,IAAI8yG,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,YAAY,EAAE3F,WAAW,CAACzsG,WAAW,CAACuyN,eAAe,CAAC;IACvF,IAAIngH,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,gBAAgB,EAAE3F,WAAW,CAACzsG,WAAW,CAAC2lN,eAAe,CAAC;IAC3Fl5G,WAAW,CAACzsG,WAAW,CAACwyN,WAAW,CAAC;IAEpCzzC,iBAAiB,CAAC,CAAC;IACnB9jE,iBAAiB,CAAC,CAAC;IAEnB3oG,KAAK,CAAC9S,IAAI,CAACitG,WAAW,CAAC;EAC3B;EACA,SAASgvH,WAAWA,CAAA,EAAG;IACnB/I,WAAW,GAAG,IAAI;IAClBE,aAAa,GAAG,IAAI;EACxB;;EAEA;EACA;EACA,SAAS8K,cAAcA,CAAA,EAAG;IACtB,IAAIC,SAAS,GAAGv3N,KAAK,CAACxD,KAAK,CAAC;MACxBG,EAAE,EAAE,mBAAmB;MACvB2B,KAAK,EAAE,MAAM;MACbpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEsuN,QAAQ;MACf7uN,UAAU,EAAE,CAAC,WAAW,CAAC;MACzBI,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE+7J;MAAa,CAAC,EACnC;QAAEh8J,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE8uB,IAAI,CAAC8Z,aAAa,CAAC;MAAE,CAAC;IAEnD,CAAC,CAAC;IAEF4wL,SAAS,CAACj7N,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC1C,IAAI09N,aAAa,GAAGnL,QAAQ;MAC5BA,QAAQ,GAAGvyN,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC7B,IAAI05N,aAAa,GAAG,IAAIvkN,IAAI,CAACm5M,QAAQ,CAAC/uM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE+uM,QAAQ,CAAC/uM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE+uM,QAAQ,CAAC/uM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACxG,IAAIo6M,iBAAiB,GAAG,IAAIxkN,IAAI,CAC5B4mJ,YAAY,CAACx8I,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC1Bw8I,YAAY,CAACx8I,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAC9Bw8I,YAAY,CAACx8I,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAC7B,CAAC;MACD,IAAIm6M,aAAa,GAAGC,iBAAiB,IAAIrL,QAAQ,KAAK,EAAE,IAAIoL,aAAa,GAAG,IAAIvkN,IAAI,CAAC,CAAC,EAAE;QACpFqkN,SAAS,CAACv+N,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAChCmzN,QAAQ,GAAGmL,aAAa;QACxB;MACJ,CAAC,MAAMD,SAAS,CAACv+N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC1CqzN,WAAW,GAAG,KAAK;MACnBE,aAAa,GAAG,GAAG;MACnBD,WAAW,GAAG,KAAK;MACnBtkH,OAAO,CAACoiD,kBAAkB,CAACgiE,QAAQ,CAAC;MACpCuJ,qBAAqB,CAACvJ,QAAQ,CAAC;MAC/BzQ,YAAY,CAACob,QAAQ,CAAChiH,kBAAkB,EAAEq3G,QAAQ,EAAEsL,iBAAiB,CAAC;MACtEnF,8BAA8B,CAAC,CAAC;IACpC,CAAC,CAAC;IACF+E,SAAS,CAACj7N,gBAAgB,CAAC,SAAS,EAAExC,KAAK,IAAI;MAC3CA,KAAK,CAACyH,cAAc,CAAC,CAAC;MACtBzH,KAAK,CAAC0N,eAAe,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,OAAO+vN,SAAS;EACpB;;EAEA;EACA;EACA,SAAS/hH,iBAAiBA,CAACp1C,KAAK,EAAEphB,UAAU,EAAE;IAC1C,IAAIy2D,IAAI,GAAGt5G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACxC+4G,IAAI,CAACz8G,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;IACxCu8G,IAAI,CAAC77G,WAAW,CAACwmE,KAAK,CAAC;IACvB,OAAOq1C,IAAI;EACf;EACA;EACA,SAASmiH,4BAA4BA,CAACC,KAAK,EAAE;IACzC,IAAIp5N,MAAM,GAAGN,QAAQ,CAAC3B,KAAK,CAAC;MACxB8B,KAAK,EAAE,kBAAkB;MACzBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIiC,IAAI,GAAG0tN,iBAAiB,CAACkL,OAAO,CAAC50N,GAAG,CAAC60N,EAAE,IAAI;MAC3C,OAAO;QACHh6N,KAAK,EAAEg6N,EAAE,CAACC,WAAW;QACrBl7N,IAAI,EAAEi7N,EAAE,CAACrhH;MACb,CAAC;IACL,CAAC,CAAC;IAEF,IAAImhH,KAAK,EAAE;MACP15N,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,EAAE24N,KAAK,CAAC;MACtCpqK,UAAU,GAAGoqK,KAAK;IACtB,CAAC,MAAM;MACH,IAAI1J,oBAAoB,KAAK,EAAE,EAAE;QAC7B,IAAI/jE,eAAe,GAAG+jE,oBAAoB;MAC9C,CAAC,MAAM,IAAIC,qBAAqB,KAAK,EAAE,EAAE;QACrC,IAAIhkE,eAAe,GAAGgkE,qBAAqB;MAC/C,CAAC,MAAM,IAAIc,mBAAmB,EAAE;QAC5B,IAAI9kE,eAAe,GAAG+kE,sBAAsB;MAChD,CAAC,MAAM;QACH,IAAI/kE,eAAe,GAAG,EAAE;MAC5B;MACA;MACAjsJ,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,EAAEkrJ,eAAe,CAAC;MAChD38F,UAAU,GAAG28F,eAAe,KAAK,EAAE,GAAGlrJ,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAGqsJ,eAAe;IACzE;IAEA3rJ,MAAM,CAACnC,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACvC,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE6uD,UAAU,GAAG9uD,cAAc,CAACZ,KAAK;MACjCk6N,8BAA8B,CAACxqK,UAAU,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAOhvD,MAAM;EACjB;EACA,SAASw5N,8BAA8BA,CAACJ,KAAK,EAAE;IAC3C,IAAIK,yBAAyB,GAAG;MAAEJ,OAAO,EAAE,EAAE;MAAEvG,SAAS,EAAE;IAAG,CAAC;IAE9D3E,iBAAiB,CAAC2E,SAAS,CAAC73N,OAAO,CAACy+N,EAAE,IAAI;MACtC,IAAIA,EAAE,CAACC,YAAY,KAAKP,KAAK,EAAE;QAC3B,IAAI5wL,GAAG,GAAG;UACN+wL,WAAW,EAAEG,EAAE,CAACH,WAAW;UAC3BthH,WAAW,EAAEyhH,EAAE,CAACzhH,WAAW;UAC3B0hH,YAAY,EAAED,EAAE,CAACC;QACrB,CAAC;QACDF,yBAAyB,CAAC,WAAW,CAAC,CAAC3wN,IAAI,CAAC0/B,GAAG,CAAC;MACpD;IACJ,CAAC,CAAC;IAEF,IAAI/nC,IAAI,GAAGg5N,yBAAyB,CAAC3G,SAAS,CAACruN,GAAG,CAACi1N,EAAE,IAAI;MACrD,OAAO;QACHp6N,KAAK,EAAEo6N,EAAE,CAACH,WAAW;QACrBl7N,IAAI,EAAEq7N,EAAE,CAACzhH,WAAW;QACpB94G,UAAU,EAAE,CAAC;UAAEE,GAAG,EAAE,qBAAqB;UAAEC,KAAK,EAAEo6N,EAAE,CAACC;QAAa,CAAC;MACvE,CAAC;IACL,CAAC,CAAC;IACF,IAAIj5N,UAAU,GAAG;MACbpB,KAAK,EAAE,EAAE;MACTjB,IAAI,EAAE;IACV,CAAC;IACDoC,IAAI,CAAC49D,OAAO,CAAC39D,UAAU,CAAC;IACxBhB,QAAQ,CAAC5E,QAAQ,CAACwzN,yBAAyB,EAAE7tN,IAAI,CAAC;IAClD0vN,mBAAmB,GAAG1vN,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;EACvC;EAEA,SAASs6N,8BAA8BA,CAACR,KAAK,EAAE;IAC3C,IAAIp5N,MAAM,GAAGN,QAAQ,CAAC3B,KAAK,CAAC;MACxB8B,KAAK,EAAE,oBAAoB;MAC3BrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,IAAI,CAAC2vN,iBAAiB,CAAC2E,SAAS,IAAI3E,iBAAiB,CAAC2E,SAAS,CAAC19G,MAAM,GAAG,CAAC,EAAE,OAAOp1G,MAAM;IAEzF,IAAIy5N,yBAAyB,GAAG;MAAEJ,OAAO,EAAE,EAAE;MAAEvG,SAAS,EAAE;IAAG,CAAC;IAE9D3E,iBAAiB,CAAC2E,SAAS,CAAC73N,OAAO,CAACy+N,EAAE,IAAI;MACtC,IAAIA,EAAE,CAACC,YAAY,KAAK3qK,UAAU,EAAE;QAChC,IAAIxmB,GAAG,GAAG;UACN+wL,WAAW,EAAEG,EAAE,CAACH,WAAW;UAC3BthH,WAAW,EAAEyhH,EAAE,CAACzhH,WAAW;UAC3B0hH,YAAY,EAAED,EAAE,CAACC;QACrB,CAAC;QACDF,yBAAyB,CAAC,WAAW,CAAC,CAAC3wN,IAAI,CAAC0/B,GAAG,CAAC;MACpD;IACJ,CAAC,CAAC;IAEF,IAAI/nC,IAAI,GAAGg5N,yBAAyB,CAAC3G,SAAS,CAACruN,GAAG,CAACi1N,EAAE,IAAI;MACrD,OAAO;QACHp6N,KAAK,EAAEo6N,EAAE,CAACH,WAAW;QACrBl7N,IAAI,EAAEq7N,EAAE,CAACzhH,WAAW;QACpB94G,UAAU,EAAE,CAAC;UAAEE,GAAG,EAAE,qBAAqB;UAAEC,KAAK,EAAEo6N,EAAE,CAACC;QAAa,CAAC;MACvE,CAAC;IACL,CAAC,CAAC;IAEF,IAAIj5N,UAAU,GAAG;MACbpB,KAAK,EAAE,EAAE;MACTjB,IAAI,EAAE;IACV,CAAC;IACDoC,IAAI,CAAC49D,OAAO,CAAC39D,UAAU,CAAC;IAExB,IAAI04N,KAAK,EAAE;MACP15N,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,EAAE24N,KAAK,CAAC;MACtCjJ,mBAAmB,GAAGiJ,KAAK;IAC/B,CAAC,MAAM;MACH15N,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,CAAC;MAC/B0vN,mBAAmB,GAAG1vN,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;IACvC;IAEAU,MAAM,CAACnC,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACvC,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEgwN,mBAAmB,GAAGjwN,cAAc,CAACZ,KAAK;IAC9C,CAAC,CAAC;IAEF,OAAOU,MAAM;EACjB;EACA,SAAS65N,oBAAoBA,CAACzoM,MAAM,EAAE;IAClC,IAAIpxB,MAAM,GAAGN,QAAQ,CAAC3B,KAAK,CAAC;MACxB8B,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,IAAIiC,IAAI,GAAG+b,MAAM,CAACxJ,MAAM,CAAC+7M,UAAU,CAAC,CAACtqN,GAAG,CAACsX,CAAC,IAAI;MAC1C,OAAO;QACHzc,KAAK,EAAEyc,CAAC,CAACk3M,6BAA6B;QACtC50N,IAAI,EAAE,GAAG0d,CAAC,CAAC+9M,iBAAiB,IAAI/9M,CAAC,CAACk3M,6BAA6B,EAAE;QACjE9zN,UAAU,EAAE,CAAC;UAAEE,GAAG,EAAE,cAAc;UAAEC,KAAK,EAAEyc,CAAC,CAAC+9M;QAAkB,CAAC;MACpE,CAAC;IACL,CAAC,CAAC;IACF,IAAIp5N,UAAU,GAAG;MACbpB,KAAK,EAAE,EAAE;MACTjB,IAAI,EAAE;IACV,CAAC;IACDoC,IAAI,CAAC49D,OAAO,CAAC39D,UAAU,CAAC;IAExBwuN,UAAU,GAAGzuN,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;IAE1B,IAAI8xB,MAAM,EAAE;MACR1xB,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,EAAE2wB,MAAM,CAAC;MACvC49L,WAAW,GAAG59L,MAAM;MACpB69L,cAAc,GAAGF,UAAU,CAACC,WAAW,CAAC;MACxC/qK,OAAO,GAAGgrK,cAAc,CAAC6K,iBAAiB;IAC9C,CAAC,MAAM;MACH95N,MAAM,CAACzF,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MAC7BiF,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,CAAC;MAC/BuuN,WAAW,GAAGvuN,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;MAC3B2vN,cAAc,GAAGF,UAAU,CAACC,WAAW,CAAC;MACxC/qK,OAAO,GAAG+qK,WAAW;IACzB;IAEAhvN,MAAM,CAACnC,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACvC,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE6uN,WAAW,GAAG9uN,cAAc,CAACZ,KAAK;MAClC,IAAI0vN,WAAW,KAAK,EAAE,EAAE;QACpBT,eAAe,CAACh0N,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MAC1C,CAAC,MAAM8zN,eAAe,CAACh0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAChDy0N,cAAc,GAAGF,UAAU,CAACC,WAAW,CAAC;MACxC/qK,OAAO,GAAG/jD,cAAc,CAAC3E,OAAO,CAAC0oD,OAAO;MACxCmyK,WAAW,CAAC,CAAC;MACb1rG,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO1qH,MAAM;EACjB;EACA,SAAS+5N,oBAAoBA,CAACttL,IAAI,EAAE;IAChC,IAAIzsC,MAAM,GAAGN,QAAQ,CAAC3B,KAAK,CAAC;MACxB8B,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIiC,IAAI,GAAGytN,eAAe,CAACzpN,GAAG,CAACu1N,EAAE,IAAI;MACjC,OAAO;QACH16N,KAAK,EAAE06N,EAAE,CAACC,IAAI;QACd57N,IAAI,EAAE,GAAG27N,EAAE,CAACC,IAAI,IAAID,EAAE,CAACE,OAAO;MAClC,CAAC;IACL,CAAC,CAAC;IACF,IAAIx5N,UAAU,GAAG;MACbpB,KAAK,EAAE,EAAE;MACTjB,IAAI,EAAE;IACV,CAAC;IACDoC,IAAI,CAAC49D,OAAO,CAAC39D,UAAU,CAAC;IACxB,IAAI+rC,IAAI,EAAE;MACN/sC,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,EAAEgsC,IAAI,CAAC;MACrC4iL,UAAU,GAAG5iL,IAAI;IACrB,CAAC,MAAM;MACH/sC,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,CAAC;IACnC;IAEAT,MAAM,CAACnC,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACvC,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEkvN,UAAU,GAAGnvN,cAAc,CAACZ,KAAK;MACjC2wN,UAAU,GAAGZ,UAAU;MACvB;MACA3kG,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO1qH,MAAM;EACjB;EACA,SAASm6N,qBAAqBA,CAACC,OAAO,EAAE;IACpC,IAAIp6N,MAAM,GAAGN,QAAQ,CAAC3B,KAAK,CAAC;MACxB8B,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIiC,IAAI,GAAG,CACP;MAAEnB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC;IACvB;IACA;IACA;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,CAC5B;IACDqB,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,EAAE25N,OAAO,CAAC;IACxC,IAAIA,OAAO,EAAEhL,YAAY,GAAGgL,OAAO;IAEnCp6N,MAAM,CAACnC,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACvC+zN,YAAY,GAAG/zN,KAAK,CAACC,MAAM,CAACgE,KAAK;MACjC4wN,YAAY,GAAGd,YAAY;MAC3B1kG,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO1qH,MAAM;EACjB;EACA,SAASq6N,iCAAiCA,CAACC,OAAO,EAAE;IAChD,IAAIt6N,MAAM,GAAGN,QAAQ,CAAC3B,KAAK,CAAC;MACxB8B,KAAK,EAAE,uBAAuB;MAC9BrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIiC,IAAI,GAAGquN,MAAM,CAACrqN,GAAG,CAAC83F,EAAE,IAAI;MACxB,OAAO;QACHj9F,KAAK,EAAEi9F,EAAE,CAAC9vD,IAAI;QACdpuC,IAAI,EAAE,GAAGk+F,EAAE,CAAC9vD,IAAI,IAAI8vD,EAAE,CAACg+H,WAAW;MACtC,CAAC;IACL,CAAC,CAAC;IACF,IAAI75N,UAAU,GAAG;MACbpB,KAAK,EAAE,EAAE;MACTjB,IAAI,EAAE;IACV,CAAC;IACDoC,IAAI,CAAC49D,OAAO,CAAC39D,UAAU,CAAC;IAExB,IAAI45N,OAAO,EAAE;MACT56N,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,EAAE65N,OAAO,CAAC;MACxChK,WAAW,GAAGgK,OAAO;MACrBhL,MAAM,GAAGgL,OAAO;IACpB,CAAC,MAAM;MACH56N,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,CAAC;IACnC;IAEAT,MAAM,CAACnC,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACvCi1N,WAAW,GAAGj1N,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChCgwN,MAAM,GAAGj0N,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC3BorH,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO1qH,MAAM;EACjB;EACA,SAASw6N,eAAeA,CAACzmM,SAAS,EAAEf,OAAO,EAAE;IACzC,IAAIH,KAAK,GAAGtxB,KAAK,CAACxD,KAAK,CAAC;MACpB8B,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZa,KAAK,EAAEy0B;IACX,CAAC,CAAC;IACF,IAAIhB,GAAG,GAAGxxB,KAAK,CAACxD,KAAK,CAAC;MAClB8B,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZa,KAAK,EAAE0zB;IACX,CAAC,CAAC;IAEF,IAAIe,SAAS,EAAE;MACXq8L,aAAa,GAAGr8L,SAAS;MACzBy7L,aAAa,GAAGz7L,SAAS;IAC7B;IACA,IAAIf,OAAO,EAAE;MACTq9L,WAAW,GAAGr9L,OAAO;MACrBy8L,WAAW,GAAGz8L,OAAO;IACzB;IAEAH,KAAK,CAACh1B,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACtC+0N,aAAa,GAAG/0N,KAAK,CAACC,MAAM,CAACgE,KAAK;MAClCkwN,aAAa,GAAGz7L,SAAS;MACzB22F,mBAAmB,CAAC,CAAC;MACrB0rG,WAAW,CAAC,CAAC;IACjB,CAAC,CAAC;IACFrjM,GAAG,CAACl1B,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpCg1N,WAAW,GAAGh1N,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChCmwN,WAAW,GAAGz8L,OAAO;MACrB03F,mBAAmB,CAAC,CAAC;MACrB;MACA;MACA;MACA0rG,WAAW,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO;MACHvjM,KAAK;MACLE;IACJ,CAAC;EACL;EACA,SAAS0nM,cAAcA,CAAC3gN,IAAI,EAAE;IAC1B,IAAI80M,SAAS,GAAGrtN,KAAK,CAACxD,KAAK,CAAC;MACxB8B,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBa,KAAK,EAAEwa;IACX,CAAC,CAAC;IAEF,IAAIA,IAAI,EAAE;MACNy1M,QAAQ,GAAGz1M,IAAI;MACfi2M,QAAQ,GAAGj2M,IAAI;IACnB;IAEA,IAAIA,IAAI,KAAK9X,SAAS,IAAIo7H,aAAa,IAAIA,aAAa,CAACl4F,WAAW,CAAC,CAAC,KAAKp5B,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC/F,WAAW,CAAC,CAAC,EAAE;MACvG,OAAO0pL,SAAS;IACpB;IACAA,SAAS,CAAC/wN,gBAAgB,CAAC,OAAO,EAAGxC,KAAK,IAAK;MAC3Ck0N,QAAQ,GAAGl0N,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC7BywN,QAAQ,GAAGR,QAAQ;MACnB7kG,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,OAAOkkG,SAAS;EACpB;EACA,SAAS8L,oBAAoBA,CAAC5gN,IAAI,EAAE;IAClC,MAAM80M,SAAS,GAAGrtN,KAAK,CAACxD,KAAK,CAAC;MAC5B8B,KAAK,EAAE,aAAa;MACpBrB,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBa,KAAK,EAAEwa;IACT,CAAC,CAAC;IAEF/d,UAAU,GAAG+d,IAAI;IAEjB80M,SAAS,CAAC/wN,gBAAgB,CAAC,OAAO,EAAGxC,KAAK,IAAK;MAC7CU,UAAU,GAAGV,KAAK,CAACC,MAAM,CAACgE,KAAK;IACjC,CAAC,CAAC;IAEF,OAAOsvN,SAAS;EAClB;EACA,SAAS+L,mBAAmBA,CAAA,EAAG;IAC7B,MAAMC,sBAAsB,GAAGr5N,KAAK,CAACyB,aAAa,CAAC;MACjD3E,IAAI,EAAE;IACR,CAAC,CAAC;IAEFu8N,sBAAsB,CAAC/8N,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MACrD+vN,cAAc,GAAG/vN,CAAC,CAAC3E,MAAM,CAACiI,OAAO,GAAG,GAAG,GAAG,GAAG;IAC/C,CAAC,CAAC;IAEF,OAAOq3N,sBAAsB;EAC/B;EACA,SAASC,eAAeA,CAACC,MAAM,EAAE;IAC7B,IAAIz8N,IAAI,GAAGy8N,MAAM,GAAG,QAAQ,GAAG,MAAM;IACrC,IAAInvL,GAAG,GAAG7tC,MAAM,CAACC,KAAK,CAAC;MACnBM,IAAI;MACJG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAEg0N;IACd,CAAC,CAAC;IAEF,OAAO5nL,GAAG;EACd;EACA,SAASovL,iBAAiBA,CAAA,EAAG;IACzB,IAAIpvL,GAAG,GAAG7tC,MAAM,CAACC,KAAK,CAAC;MACnBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjB;MACAc,QAAQ,EAAEy7N;IACd,CAAC,CAAC;IAEF,OAAOrvL,GAAG;EACd;EACA,SAASqvL,cAAcA,CAAA,EAAG;IACtB,IAAIztN,KAAK,GAAG7P,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzCsP,KAAK,CAAChT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC5B8S,KAAK,CAAChT,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAC9B8S,KAAK,CAAC5O,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC;IAExC,IAAI4P,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACzCsQ,OAAO,CAAC1T,SAAS,GAAG,gDAAgD;IAEpE,IAAIovC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,KAAK;MACXI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB80N,uBAAuB,CAAC,CAAC;QACzB;QACA34N,YAAY,CAACoR,WAAW,CAACS,KAAK,CAAC;QAC/B3C,OAAO,CAAClQ,IAAI,CAAC,CAAC;QACd+P,cAAc,CAACC,gBAAgB,CAAC6C,KAAK,CAAC;QACtC;QACA;QACA;QACAwmN,8BAA8B,CAAC,CAAC;MACpC;IACJ,CAAC,CAAC;IACF,IAAI3rE,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB;QACA7D,YAAY,CAACoR,WAAW,CAACS,KAAK,CAAC;QAC/B;QACA;MACJ;IACJ,CAAC,CAAC;IAEF08B,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAE1B76I,KAAK,CAACpS,WAAW,CAACoT,OAAO,CAAC;IAC1BhB,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;;IAE1B;IACAr/B,OAAO,CAACjQ,IAAI,CAAC,CAAC;IACd;IACAe,YAAY,CAACP,WAAW,CAACoS,KAAK,CAAC;IAC/B;IACA9C,cAAc,CAACY,iBAAiB,CAACkC,KAAK,CAAC;EAC3C;EACA,SAAS0tN,gBAAgBA,CAACC,QAAQ,EAAE;IAChC9M,YAAY,GAAG3gN,KAAK,CAAC1P,KAAK,CAAC;MACvBgB,UAAU,EAAE,CAAC,MAAM,EAAE,kBAAkB;IAC3C,CAAC,CAAC;IAEF,IAAIm8N,QAAQ,EAAE;MACVA,QAAQ,GAAGA,QAAQ,CAAC,CAAC,CAAC;MACtBtL,QAAQ,GAAGr5G,kBAAkB;MAC7B+rG,WAAW,GAAG4Y,QAAQ,CAACC,YAAY;MACnCrL,OAAO,GAAGlC,QAAQ;MAClB,IAAIwN,cAAc,GAAGF,QAAQ,CAACG,WAAW,CAACx8M,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACvD,IAAIy8M,UAAU,GAAGF,cAAc,CAACv8M,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC7C,IAAI08M,UAAU,GAAGntM,IAAI,CAAC5B,WAAW,CAAC4uM,cAAc,CAACv8M,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC/Du8M,cAAc,GAAG,GAAGE,UAAU,IAAIC,UAAU,IAAIL,QAAQ,CAACG,WAAW,CAACx8M,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;MAEpF,IAAI28M,cAAc,GAAGN,QAAQ,CAACG,WAAW,CAACx8M,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACvD,IAAI48M,UAAU,GAAG,GAAGD,cAAc,IAAIJ,cAAc,EAAE;MAEtD/M,uBAAuB,GAAG8K,4BAA4B,CAAC+B,QAAQ,CAAC3B,WAAW,CAAC;MAC5EjL,yBAAyB,GAAGsL,8BAA8B,CAACsB,QAAQ,CAACQ,sBAAsB,CAAC;MAC3FnN,eAAe,GAAGsL,oBAAoB,CAACqB,QAAQ,CAACS,6BAA6B,CAAC;MAC9EnN,eAAe,GAAGuL,oBAAoB,CAACmB,QAAQ,CAACU,WAAW,CAAC;MAC5DnN,gBAAgB,GAAG0L,qBAAqB,CAACe,QAAQ,CAACW,aAAa,CAAC;MAChEnN,UAAU,GAAG2L,iCAAiC,CAACa,QAAQ,CAACY,2BAA2B,CAAC;MACpFnN,UAAU,GAAG6L,eAAe,CAACU,QAAQ,CAACa,UAAU,EAAEb,QAAQ,CAACc,QAAQ,CAAC;MACpEpN,SAAS,GAAG6L,cAAc,CAACS,QAAQ,CAACe,uBAAuB,CAAC;MAC5DC,eAAe,GAAGxB,oBAAoB,CAACQ,QAAQ,CAACn/N,UAAU,CAAC;MAC3D6+N,sBAAsB,GAAGD,mBAAmB,CAAC,CAAC;MAC9C3sF,OAAO,GAAG6sF,eAAe,CAAC,IAAI,CAAC;MAC/BnxE,SAAS,GAAGqxE,iBAAiB,CAAC,CAAC;MAC/B39F,aAAa,GAAG89F,QAAQ,CAACiB,oBAAoB;MAC7CtN,yBAAyB,GAAGuN,yBAAyB,CAACh/F,aAAa,EAAEq+F,UAAU,CAAC;IACpF,CAAC,MAAM;MACHpN,uBAAuB,GAAG8K,4BAA4B,CAAC,CAAC;MACxD7K,yBAAyB,GAAGsL,8BAA8B,CAAC,CAAC;MAC5DrL,eAAe,GAAGsL,oBAAoB,CAAC,CAAC;MACxCrL,eAAe,GAAGuL,oBAAoB,CAAC,CAAC;MACxCtL,gBAAgB,GAAG0L,qBAAqB,CAAC,CAAC;MAC1CzL,UAAU,GAAG2L,iCAAiC,CAAC,CAAC;MAChD1L,UAAU,GAAG6L,eAAe,CAAC,CAAC;MAC9B5L,SAAS,GAAG6L,cAAc,CAAC,CAAC;MAC5ByB,eAAe,GAAGxB,oBAAoB,CAAC,CAAC;MACxCE,sBAAsB,GAAGD,mBAAmB,CAAC,CAAC;MAC9C3sF,OAAO,GAAG6sF,eAAe,CAAC,KAAK,CAAC;MAChCnxE,SAAS,GAAG1nJ,SAAS;IACzB;IAGA,IAAI,CAAC8J,CAAC,CAACC,OAAO,CAACojC,cAAc,EAAE;MAC3B+sL,eAAe,CAAC3hO,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACzCmgO,sBAAsB,CAACrgO,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACpD;IAEA87N,eAAe,CAAC,CAAC;IAEjB,IAAItsL,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC;IAC5B,IAAI0b,SAAS,EAAEz/G,OAAO,CAAC9uC,WAAW,CAACuuJ,SAAS,CAAC;IAE7C,IAAI2yE,QAAQ,GAAG3+N,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Co+N,QAAQ,CAAClhO,WAAW,CAACwzN,UAAU,CAAC97L,KAAK,CAAC;IACtCwpM,QAAQ,CAAClhO,WAAW,CAACwzN,UAAU,CAAC57L,GAAG,CAAC;IAEpCq7L,YAAY,CAACjzN,WAAW,CAACkzN,uBAAuB,CAAC;IACjD,IAAIF,iBAAiB,CAAC2E,SAAS,EAAE1E,YAAY,CAACjzN,WAAW,CAACmzN,yBAAyB,CAAC;IACpFF,YAAY,CAACjzN,WAAW,CAACozN,eAAe,CAAC;IACzCH,YAAY,CAACjzN,WAAW,CAACqzN,eAAe,CAAC;IACzCJ,YAAY,CAACjzN,WAAW,CAACszN,gBAAgB,CAAC;IAE1C,IAAI3iN,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC5CoiN,YAAY,CAACjzN,WAAW,CAACuzN,UAAU,CAAC;MACpCN,YAAY,CAACjzN,WAAW,CAACkhO,QAAQ,CAAC;IACtC;IAEAjO,YAAY,CAACjzN,WAAW,CAACyzN,SAAS,CAAC;IACnCR,YAAY,CAACjzN,WAAW,CAAC+gO,eAAe,CAAC;IACzC9N,YAAY,CAACjzN,WAAW,CAACy/N,sBAAsB,CAAC;IAChDxM,YAAY,CAACjzN,WAAW,CAAC8uC,OAAO,CAAC;IAEjC,IAAIixL,QAAQ,EAAExwG,mBAAmB,CAAC,CAAC;IACnC,IAAIwwG,QAAQ,EAAE9M,YAAY,CAACjzN,WAAW,CAAC0zN,yBAAyB,CAAC;IACjE,IAAIqM,QAAQ,IAAI99F,aAAa,IAAIA,aAAa,CAACl4F,WAAW,CAAC,CAAC,KAAKp5B,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC/F,WAAW,CAAC,CAAC,EAAE;MAC7FktL,6BAA6B,CAAC,CAAC;MAC/BnoL,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IACnC;IAEAgT,KAAK,CAAC9S,IAAI,CAACyzN,YAAY,CAAC;EAC5B;EACA;EACA,SAASkO,oBAAoBA,CAACtlB,OAAO,EAAE;IACnC,IAAIoc,UAAU,GAAGF,sBAAsB,CAAClc,OAAO,CAAC;IAChD,IAAIulB,aAAa;IACjB,IAAIC,aAAa,GAAGxlB,OAAO,CAACygB,mBAAmB,KAAK,EAAE,GAAGnyM,QAAQ,CAAC0xL,OAAO,CAACygB,mBAAmB,EAAE,EAAE,CAAC,GAAG,CAAC;IAEtGrE,UAAU,GAAGA,UAAU,CAAClqN,MAAM,CAAC8S,CAAC,IAAI;MAChC;MACA,IAAIygN,QAAQ,GAAGzgN,CAAC,CAAC6C,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC9B,OAAO49M,QAAQ,KAAK,GAAG;IAC3B,CAAC,CAAC;IACFF,aAAa,GAAGnJ,UAAU,CAACp4N,MAAM;;IAEjC;IACA,IAAIonN,iBAAiB,GAAGpL,OAAO,CAAC2gB,kBAAkB,CAACrvN,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IACvE,IAAIo0N,kBAAkB;IACtB,IAAIC,SAAS;;IAEb;IACA,QAAQva,iBAAiB;MACrB,KAAK,IAAI;MACT,KAAK,IAAI;QACL;QACAsa,kBAAkB,GAAG,GAAG;QACxB,IAAIF,aAAa,KAAK,CAAC,IAAID,aAAa,GAAGC,aAAa,EAAE;UACtDG,SAAS,GAAG,iBAAiB,CAAC,CAAC;UAC/B;QACJ,CAAC,MAAM,IAAIH,aAAa,KAAK,CAAC,IAAID,aAAa,KAAK,CAAC,EAAE;UACnD;UACA;QACJ;QACA,IAAIA,aAAa,KAAKC,aAAa,EAAE;UACjCG,SAAS,GAAG,iBAAiB,CAAC,CAAC;UAC/B;QACJ;QACAA,SAAS,GAAG,iBAAiB,CAAC,CAAC;QAC/B;MACJ,KAAK,IAAI;QACL;QACAD,kBAAkB,GAAG,GAAG;QACxB,IAAIH,aAAa,KAAK,CAAC,IAAIA,aAAa,GAAGC,aAAa,EAAE;UACtDG,SAAS,GAAG,gBAAgB,CAAC,CAAC;QAClC,CAAC,MAAM,IAAIJ,aAAa,IAAIC,aAAa,EAAE;UACvCG,SAAS,GAAG,iBAAiB,CAAC,CAAC;QACnC;QACA;MACJ,KAAK,IAAI;QACL;QACAD,kBAAkB,GAAG,IAAI;QACzB,IAAIH,aAAa,KAAK,CAAC,IAAIA,aAAa,GAAGC,aAAa,EAAE;UACtDG,SAAS,GAAG,gBAAgB,CAAC,CAAC;QAClC,CAAC,MAAM,IAAIJ,aAAa,GAAGC,aAAa,EAAE;UACtCG,SAAS,GAAG,iBAAiB,CAAC,CAAC;QACnC,CAAC,MAAM,IAAIJ,aAAa,KAAKC,aAAa,EAAE;UACxCG,SAAS,GAAG,iBAAiB,CAAC,CAAC;QACnC;QACA;MACJ,KAAK,IAAI;QACL;QACAD,kBAAkB,GAAG,GAAG;QACxB,IAAIH,aAAa,IAAIC,aAAa,EAAE;UAChCG,SAAS,GAAG,iBAAiB,CAAC,CAAC;QACnC,CAAC,MAAM;UACHA,SAAS,GAAG,iBAAiB,CAAC,CAAC;QACnC;QACA;MACJ,KAAK,EAAE;QACHD,kBAAkB,GAAG,EAAE;QACvB,IAAIF,aAAa,KAAK,CAAC,EAAE;UACrBG,SAAS,GAAG,iBAAiB,CAAC,CAAC;QACnC,CAAC,MAAM,IAAIJ,aAAa,GAAGC,aAAa,EAAE;UACtCG,SAAS,GAAG,gBAAgB,CAAC,CAAC;QAClC,CAAC,MAAM,IAAIJ,aAAa,GAAGC,aAAa,EAAE;UACtCG,SAAS,GAAG,iBAAiB,CAAC,CAAC;QACnC,CAAC,MAAM,IAAIJ,aAAa,KAAKC,aAAa,EAAE;UACxCG,SAAS,GAAG,iBAAiB,CAAC,CAAC;QACnC;QACA;MACJ;QACI;IACR;;IAEA;;IAEA;IACA;IACA;;IAEA;IACA,IAAIC,eAAe,GAAGL,aAAa,KAAK,CAAC,IAAIC,aAAa,KAAK,CAAC,GAAG,CAAC,GAAGD,aAAa,GAAGC,aAAa;IACpG,IAAIK,UAAU,GAAG,OAAO,GAAGD,eAAe,GAAG,OAAO;IACpDC,UAAU,GAAGA,UAAU,KAAK,CAAC,GAAG,OAAO,GAAGA,UAAU;IACpD;IACA;IACA;IACA,IAAID,eAAe,IAAI,CAAC,EAAE;MACtB;MACAC,UAAU,GAAG,CAAC;IAClB;IACA,IAAIN,aAAa,GAAGC,aAAa,EAAE;MAC/BK,UAAU,GAAG,CAAC;IAClB;IACA,IAAIC,UAAU,GAAG,sBAAsBD,UAAU,GAAG;;IAEpD;IACA,IAAIE,MAAM,GAAGr/N,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8+N,MAAM,CAACxiO,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IACtCsiO,MAAM,CAACliO,SAAS,GAAG;AAC3B;AACA;AACA,qCAAqCiiO,UAAU,WAAWH,SAAS;AACnE;AACA,QACQD,kBAAkB,KAAK,EAAE,GACf,gDAAgDC,SAAS,KAAKJ,aAAa,IAAIG,kBAAkB,IAAIF,aAAa,MAAM,GACxHA,aAAa,GAAG,CAAC,GACb,gDAAgDG,SAAS,KAAKJ,aAAa,MAAM,GACjF,iEAAiEA,aAAa,MAAM;AAC1G,KACK;IAEG,OAAOQ,MAAM;EACjB;EACA,SAASC,iBAAiBA,CAAC/4K,OAAO,EAAE;IAChC,IAAI12C,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAIk/N,gBAAgB,GAAGv/N,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAClDsP,KAAK,CAACpS,WAAW,CAAC8hO,gBAAgB,CAAC;IACnC,IAAIC,WAAW,GAAGj5K,OAAO,CAAC37C,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC;IAC5D20N,gBAAgB,CAACpiO,SAAS,IAAI,GAAGqiO,WAAW,EAAE;IAC9CzvN,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;IACjB;EACJ;EACA,SAAS4vN,gBAAgBA,CAAC7yK,MAAM,EAAE;IAC9B,IAAI/8C,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAIq/N,eAAe,GAAG1/N,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACjDsP,KAAK,CAACpS,WAAW,CAACiiO,eAAe,CAAC;IAClC,IAAIC,UAAU,GAAG/yK,MAAM,CAAChiD,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC;IAC1D80N,eAAe,CAACviO,SAAS,IAAI,GAAGwiO,UAAU,EAAE;IAC5C5vN,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;IACjB;EACJ;EACA,SAAS+vN,wBAAwBA,CAACtmB,OAAO,EAAE;IACvC,IAAIumB,mBAAmB,GAAGrK,sBAAsB,CAAClc,OAAO,CAAC;IACzD,IAAIwmB,iBAAiB,GAAGxmB,OAAO,CAACwb,oBAAoB;IACpD,IAAI+K,mBAAmB,CAACviO,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;IACjD;;IAEA,IAAIo4N,UAAU,GAAG11N,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9Cm1N,UAAU,CAAC74N,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAEtC8iO,mBAAmB,CAACtiO,OAAO,CAACwiO,QAAQ,IAAI;MACpCA,QAAQ,GAAGA,QAAQ,CAAC5+M,KAAK,CAAC,GAAG,CAAC;MAC9BoyM,WAAW,GAAG,KAAK;MACnB,IAAIpxN,KAAK,GAAG49N,QAAQ,CAAC,CAAC,CAAC;MACvB,IAAIv/N,EAAE,GAAGu/N,QAAQ,CAAC,CAAC,CAAC;MACpB,IAAIhB,QAAQ,GAAGgB,QAAQ,CAAC,CAAC,CAAC;MAC1B,IAAIviO,GAAG,GAAGwC,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;MACxC,IAAIu/N,iBAAiB,KAAK,GAAG,IAAIf,QAAQ,KAAK,GAAG,EAAE;QAC/CxL,WAAW,GAAG,IAAI;MACtB;MACA/1N,GAAG,CAACX,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC7BS,GAAG,CAACyD,YAAY,CAAC,kBAAkB,EAAET,EAAE,CAAC;MACxChD,GAAG,CAACL,SAAS,GAAGgF,KAAK;MACrBuzN,UAAU,CAACj4N,WAAW,CAACD,GAAG,CAAC;IAC/B,CAAC,CAAC;IACF;IACAk4N,UAAU,CAACv1N,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1Cw0N,UAAU,GAAGx0N,KAAK,CAACC,MAAM,CAACC,OAAO,CAACs0N,UAAU;MAC5C,IAAIA,UAAU,EAAE;QACZ1S,YAAY,CAACugB,oBAAoB,CAAC7N,UAAU,EAAE,UAAUjqH,OAAO,EAAE;UAC7Du3G,YAAY,CAACwgB,uBAAuB,CAAC3mB,OAAO,CAAC8I,YAAY,EAAE,UAAU8d,YAAY,EAAE;YAC/EzgB,YAAY,CAAC0gB,uCAAuC,CAACtnH,kBAAkB,EAAEq3G,QAAQ,EAAE,UAAUp5K,SAAS,EAAE;cACpGu+K,gBAAgB,CAAC6K,YAAY,CAAC;cAC9B/K,oBAAoB,CAACr+K,SAAS,CAAC;cAC/BymL,gBAAgB,CAACr1H,OAAO,CAAC;YAC7B,CAAC,CAAC;UACN,CAAC,CAAC;QACN,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IACF;IACA,OAAOwtH,UAAU;EACrB;EACA,eAAe0K,iBAAiBA,CAAC9mB,OAAO,EAAE;IACtC,IAAIA,OAAO,CAAC+mB,mBAAmB,KAAK,EAAE,EAAE;IACxC;IACA,IAAIC,aAAa,GAAG,KAAK;IACzBlyN,CAAC,CAACC,OAAO,CAACkrC,mBAAmB,CAACh8C,OAAO,CAACiD,EAAE,IAAI;MACxC,IAAI84M,OAAO,CAAC8I,YAAY,KAAK5hN,EAAE,EAAE;QAC7B8/N,aAAa,GAAG,IAAI;QACpB;MACJ;IACJ,CAAC,CAAC;IACF,IAAI,CAACA,aAAa,EAAE,OAAO,KAAK;IAChC;IACA,IAAIr9F,YAAY,GAAGjjI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD0iI,YAAY,CAACpmI,SAAS,CAACE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC;;IAEvD;IACA,IAAIwjO,eAAe,GAAGjnB,OAAO,CAAC+I,qBAAqB;IACnD,IAAIme,aAAa,GAAGlnB,OAAO,CAAC+mB,mBAAmB,CAACz1N,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpF,IAAI27C,OAAO,GAAG+yJ,OAAO,CAACmnB,qBAAqB;IAC3C,IAAI7zK,MAAM,GAAG0sJ,OAAO,CAAConB,gBAAgB;IACrC,IAAI38E,YAAY,GAAGu1D,OAAO,CAACqnB,aAAa;;IAExC;IACA,IAAIpmH,WAAW,GAAGv6G,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC9Cg6G,WAAW,CAAC19G,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACxCw9G,WAAW,CAACp9G,SAAS,GAAGojO,eAAe;IAEvC,IAAIK,WAAW,GAAGxgO,MAAM,CAACC,KAAK,CAAC;MAC3BI,IAAI,EAAE,MAAM;MACZK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QACZ8gN,eAAe,CAACziN,IAAI,CAACk/M,eAAe,EAAE9F,OAAO,CAACsc,YAAY,EAAE,CAAC,CAAC;MAClE;IACJ,CAAC,CAAC;IAEF,IAAIiL,SAAS,GAAG7gO,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3CsgO,SAAS,CAAChkO,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;IACpC8jO,SAAS,CAAC1jO,SAAS,GAAGqjO,aAAa;IACnC,IAAIM,WAAW,GAAG9gO,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CugO,WAAW,CAACjkO,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACxC,IAAIgnJ,YAAY,KAAK,EAAE,EAAE;MACrB+8E,WAAW,CAAC3jO,SAAS,GAAG;AACpC,0BAA0B4mJ,YAAY,CAAC5iI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI4iI,YAAY,CAAC5iI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClF,cAAcuP,IAAI,CAACmY,iBAAiB,CAACk7G,YAAY,CAAC5iI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,KAAK;IACG,CAAC,MAAM;MACH2/M,WAAW,CAAC3jO,SAAS,GAAG,EAAE;IAC9B;;IAEA;IACA,IAAI4jO,eAAe,GAAGnC,oBAAoB,CAACtlB,OAAO,CAAC;IACnD;IACA,IAAInwE,MAAM,GAAG/oI,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,YAAY;MAClBoB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB49M,YAAY,CAACwgB,uBAAuB,CAAC3mB,OAAO,CAAC8I,YAAY,EAAE,UAAU8d,YAAY,EAAE;UAC/EzgB,YAAY,CAAC0gB,uCAAuC,CAACtnH,kBAAkB,EAAEq3G,QAAQ,EAAE,UAAUp5K,SAAS,EAAE;YACpGk7K,oBAAoB,GAAG1Y,OAAO,CAACgb,aAAa;YAC5CrC,qBAAqB,GAAG3Y,OAAO,CAACuiB,WAAW;YAC3CxG,gBAAgB,CAAC6K,YAAY,CAAC;YAC9B/K,oBAAoB,CAACr+K,SAAS,CAAC;YAC/BymL,gBAAgB,CAAC,CAAC;YAClB5H,YAAY,CAACrc,OAAO,CAAC;YACrBgY,WAAW,GAAG,IAAI;YAClBC,cAAc,GAAG,IAAI;YACrBkD,uBAAuB,CAAC,CAAC;UAC7B,CAAC,CAAC;QACN,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IACF,IAAIuM,UAAU,GAAG5gO,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,SAAS;MACfG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB,IAAIgO,KAAK,GAAGyvN,iBAAiB,CAAC/4K,OAAO,CAAC;QACtCx2C,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;MACrB;IACJ,CAAC,CAAC;IACF,IAAIoxN,SAAS,GAAG7gO,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB,IAAIgO,KAAK,GAAG4vN,gBAAgB,CAAC7yK,MAAM,CAAC;QACpC78C,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;MACrB;IACJ,CAAC,CAAC;IACF0jN,WAAW,GAAG,KAAK;IACnB,IAAIsM,mBAAmB,GAAGD,wBAAwB,CAACtmB,OAAO,CAAC;;IAE3D;IACD;IACC;IACA;IACF;IACC;;IAEA;IACA;IACA;;IAEC,IAAI4nB,iBAAiB,GAAGlhO,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD2gO,iBAAiB,CAACrkO,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAC1C,IAAIwpD,OAAO,KAAK,EAAE,EAAE26K,iBAAiB,CAACzjO,WAAW,CAACujO,UAAU,CAAC;IAC7D,IAAIp0K,MAAM,KAAK,EAAE,EAAEs0K,iBAAiB,CAACzjO,WAAW,CAACwjO,SAAS,CAAC;IAE3D,IAAIl4H,KAAK,GAAG/oG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzCwoG,KAAK,CAAClsG,SAAS,CAACE,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC;IAC5CgsG,KAAK,CAACtrG,WAAW,CAACsjO,eAAe,CAAC;IAClCh4H,KAAK,CAACtrG,WAAW,CAAC0rI,MAAM,CAAC;IAEzB,IAAIg4F,QAAQ,GAAGnhO,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C4gO,QAAQ,CAACtkO,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACrCokO,QAAQ,CAAC1jO,WAAW,CAAC88G,WAAW,CAAC;IACjC,IAAInsG,CAAC,CAACC,OAAO,CAACsjC,cAAc,IAAI,IAAI,EAAE;MAClCwvL,QAAQ,CAAC1jO,WAAW,CAACmjO,WAAW,CAAC;IACrC;IACA39F,YAAY,CAACxlI,WAAW,CAAC0jO,QAAQ,CAAC;IAClCl+F,YAAY,CAACxlI,WAAW,CAACsrG,KAAK,CAAC;IAC/Bk6B,YAAY,CAACxlI,WAAW,CAACojO,SAAS,CAAC;IACnC59F,YAAY,CAACxlI,WAAW,CAACyjO,iBAAiB,CAAC;IAC3C,IAAIrB,mBAAmB,EAAE58F,YAAY,CAACxlI,WAAW,CAACoiO,mBAAmB,CAAC;IACtE,IAAI97E,YAAY,KAAK,EAAE,EAAE9gB,YAAY,CAACxlI,WAAW,CAACqjO,WAAW,CAAC;IAE9D,OAAO79F,YAAY;EACvB;EACA,SAASy7F,yBAAyBA,CAACl+F,SAAS,EAAE4gG,eAAe,EAAE;IAC3D,IAAIC,OAAO,GAAGrhO,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACzC8gO,OAAO,CAACxkO,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACxCskO,OAAO,CAAClkO,SAAS,GAAG,eAAeqjI,SAAS,sBAAsB4gG,eAAe,EAAE;IACnF,OAAOC,OAAO;EAClB;EACA;EACA,SAASC,kBAAkBA,CAACp4H,QAAQ,EAAE;IAClC4mH,gBAAgB,CAAC3yN,SAAS,GAAG,EAAE;IAE/B+rG,QAAQ,CAACoQ,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAC7C,IAAImnE,KAAK,GAAGilC,QAAQ,CAACoQ,IAAI,CAACjqG,SAAS,CAAC,IAAI,CAAC;IACzC,IAAIiqG,IAAI,GAAGD,iBAAiB,CAACp1C,KAAK,EAAEilC,QAAQ,CAAC1oG,EAAE,CAAC;IAEhDsvN,gBAAgB,CAACryN,WAAW,CAAC67G,IAAI,CAAC;IAElC,OAAOw2G,gBAAgB;EAC3B;;EAEA;EACA;EACA,SAASyR,sBAAsBA,CAAC/iO,QAAQ,EAAE;IACtC;IACA,IAAI4Z,OAAO,GAAGpY,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC;IACrDmV,OAAO,CAACjb,SAAS,GAAG,EAAE;IACtBqB,QAAQ,CAACjB,OAAO,CAAC,MAAMikO,EAAE,IAAI;MACzB,IAAIloH,IAAI,GAAG,MAAM8mH,iBAAiB,CAACoB,EAAE,CAAC;MACtC,IAAIloH,IAAI,EAAElhG,OAAO,CAAC3a,WAAW,CAAC67G,IAAI,CAAC;IACvC,CAAC,CAAC;EACN;EACA,SAASmoH,sBAAsBA,CAACjjO,QAAQ,EAAE;IACtC,IAAI4Z,OAAO,GAAGpY,QAAQ,CAACiD,cAAc,CAAC,QAAQ,CAAC;IAC/CmV,OAAO,CAACjb,SAAS,GAAG,EAAE;IACtBqB,QAAQ,CAACjB,OAAO,CAAC,MAAMikO,EAAE,IAAI;MACzB,IAAIloH,IAAI,GAAG,MAAM8mH,iBAAiB,CAACoB,EAAE,CAAC;MACtC,IAAIloH,IAAI,EAAElhG,OAAO,CAAC3a,WAAW,CAAC67G,IAAI,CAAC;IACvC,CAAC,CAAC;EACN;EACA,SAASooH,qBAAqBA,CAACljO,QAAQ,EAAE;IACrC,IAAI4Z,OAAO,GAAGpY,QAAQ,CAACiD,cAAc,CAAC,OAAO,CAAC;IAC9CmV,OAAO,CAACjb,SAAS,GAAG,EAAE;IACtBqB,QAAQ,CAACjB,OAAO,CAAC,MAAMikO,EAAE,IAAI;MACzB,IAAIloH,IAAI,GAAG,MAAM8mH,iBAAiB,CAACoB,EAAE,CAAC;MACtC,IAAIloH,IAAI,EAAElhG,OAAO,CAAC3a,WAAW,CAAC67G,IAAI,CAAC;IACvC,CAAC,CAAC;EACN;EACA,SAASqoH,sBAAsBA,CAACnjO,QAAQ,EAAE;IACtC,IAAI4Z,OAAO,GAAGpY,QAAQ,CAACiD,cAAc,CAAC,QAAQ,CAAC;IAC/CmV,OAAO,CAACjb,SAAS,GAAG,EAAE;IACtBqB,QAAQ,CAACjB,OAAO,CAAC,MAAMikO,EAAE,IAAI;MACzB,IAAIloH,IAAI,GAAG,MAAM8mH,iBAAiB,CAACoB,EAAE,CAAC;MACtC,IAAIloH,IAAI,EAAElhG,OAAO,CAAC3a,WAAW,CAAC67G,IAAI,CAAC;IACvC,CAAC,CAAC;EACN;EACA,SAASsoH,uBAAuBA,CAACpjO,QAAQ,EAAE;IACvC,IAAI4Z,OAAO,GAAGpY,QAAQ,CAACiD,cAAc,CAAC,SAAS,CAAC;IAChDmV,OAAO,CAACjb,SAAS,GAAG,EAAE;IACtBqB,QAAQ,CAACjB,OAAO,CAAC,MAAMikO,EAAE,IAAI;MACzB,IAAIloH,IAAI,GAAG,MAAM8mH,iBAAiB,CAACoB,EAAE,CAAC;MACtC,IAAIloH,IAAI,EAAElhG,OAAO,CAAC3a,WAAW,CAAC67G,IAAI,CAAC;IACvC,CAAC,CAAC;EACN;EACA,SAASuoH,sBAAsBA,CAACrjO,QAAQ,EAAE;IACtC,IAAI4Z,OAAO,GAAGpY,QAAQ,CAACiD,cAAc,CAAC,QAAQ,CAAC;IAC/CmV,OAAO,CAACjb,SAAS,GAAG,EAAE;IACtBqB,QAAQ,CAACjB,OAAO,CAAC,MAAMikO,EAAE,IAAI;MACzB,IAAIloH,IAAI,GAAG,MAAM8mH,iBAAiB,CAACoB,EAAE,CAAC;MACtC,IAAIloH,IAAI,EAAElhG,OAAO,CAAC3a,WAAW,CAAC67G,IAAI,CAAC;IACvC,CAAC,CAAC;EACN;EAEA,SAASwhH,gBAAgBA,CAACJ,EAAE,EAAE;IAC1BoH,YAAY,GAAGC,iBAAiB,CAACrH,EAAE,CAAC;IACpC,IAAIziN,QAAQ,GAAG,EAAE;IACjB,IAAI+pN,cAAc,GAAGF,YAAY,CAAC,IAAI,CAAC;IACvC,IAAIG,cAAc,GAAGH,YAAY,CAAC,GAAG,CAAC;IACtC,IAAII,aAAa,GAAGJ,YAAY,CAAC,GAAG,CAAC;IACrC,IAAIK,cAAc,GAAGL,YAAY,CAAC,GAAG,CAAC;IACtC,IAAIM,eAAe,GAAGN,YAAY,CAAC,GAAG,CAAC;IACvC,IAAIO,cAAc,GAAGP,YAAY,CAAC,GAAG,CAAC;IAEtC,IAAIE,cAAc,EAAE/pN,QAAQ,CAAC7M,IAAI,CAAC,cAAc,CAAC;IACjD,IAAI62N,cAAc,EAAEhqN,QAAQ,CAAC7M,IAAI,CAAC,QAAQ,CAAC;IAC3C,IAAI82N,aAAa,EAAEjqN,QAAQ,CAAC7M,IAAI,CAAC,OAAO,CAAC;IACzC,IAAI+2N,cAAc,EAAElqN,QAAQ,CAAC7M,IAAI,CAAC,QAAQ,CAAC;IAC3C,IAAIg3N,eAAe,EAAEnqN,QAAQ,CAAC7M,IAAI,CAAC,SAAS,CAAC;IAC7C,IAAIi3N,cAAc,EAAEpqN,QAAQ,CAAC7M,IAAI,CAAC,QAAQ,CAAC;;IAE3C;IACA,IAAIk3N,oBAAoB;IACxBrqN,QAAQ,CAAC1a,OAAO,CAAC,CAAC2a,GAAG,EAAEvB,KAAK,KAAK;MAC7B,IAAIuB,GAAG,KAAK+6M,cAAc,EAAEqP,oBAAoB,GAAG3rN,KAAK;IAC5D,CAAC,CAAC;IAEF2rN,oBAAoB,GAAGA,oBAAoB,GAAGA,oBAAoB,GAAG,CAAC;IACtErP,cAAc,GAAGh7M,QAAQ,CAACqqN,oBAAoB,CAAC;IAE/CxS,gBAAgB,CAAC3yN,SAAS,GAAG,EAAE;IAC/B,IAAIolO,WAAW,GAAG3qN,IAAI,CAACvX,KAAK,CAAC;MACzB4X,QAAQ;MACRJ,MAAM,EAAEyqN,oBAAoB;MAC5B9pN,cAAc,EAAE,SAAAA,CAAUzV,IAAI,EAAE;QAC5BkwN,cAAc,GAAGlwN,IAAI,CAAC9E,aAAa;QACnCw7N,qBAAqB,CAAC,CAAC;MAC3B;IACJ,CAAC,CAAC;IACF3J,gBAAgB,CAACryN,WAAW,CAAC8kO,WAAW,CAAC;IAEzC,IAAIP,cAAc,EAAET,sBAAsB,CAACS,cAAc,CAAC;IAC1D,IAAIC,cAAc,EAAER,sBAAsB,CAACQ,cAAc,CAAC;IAC1D,IAAIC,aAAa,EAAER,qBAAqB,CAACQ,aAAa,CAAC;IACvD,IAAIC,cAAc,EAAER,sBAAsB,CAACQ,cAAc,CAAC;IAC1D,IAAIC,eAAe,EAAER,uBAAuB,CAACQ,eAAe,CAAC;IAC7D,IAAIC,cAAc,EAAER,sBAAsB,CAACQ,cAAc,CAAC;IAC1D5I,qBAAqB,CAAC,CAAC;EAC3B;;EAEA;EACA,SAAS+I,WAAWA,CAACC,YAAY,EAAE;IAC/B,IAAIC,KAAK,GAAG;MAAEliO,EAAE,EAAE,OAAO;MAAE84G,IAAI,EAAE;IAAiD,CAAC;IACnFT,kBAAkB,GAAG,OAAO;IAC5Bq3G,QAAQ,GAAG,YAAY;IACvB1jF,YAAY,GAAG,WAAW;IAC1BsmF,QAAQ,GAAG,IAAI;IAEfwD,YAAY,CAACoM,KAAK,CAAC;EACvB;EAEA,eAAepM,YAAYA,CAAC3iH,gBAAgB,EAAEgvH,oBAAoB,EAAE;IAChE;IACAvjB,eAAe,GAAGzrG,gBAAgB;IAClCzkG,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBwlN,mBAAmB,CAAC,CAAC;IACrB;IACA,IAAIiO,iBAAiB,GAAG5iO,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDqiO,iBAAiB,CAAC/lO,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IACjD;IACA,IAAI8lO,UAAU,GAAG7iO,QAAQ,CAACC,aAAa,CAAC,YAAY,CAAC;IACrD,IAAI,CAAC4iO,UAAU,EAAE;MACbv3E,SAAS,GAAG6vE,cAAc,CAAC,CAAC;MAC5ByH,iBAAiB,CAACnlO,WAAW,CAAC6tJ,SAAS,CAAC;IAC5C;IAEAigB,UAAU,GAAGnrK,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,SAAS;MACfF,IAAI,EAAE,KAAK;MACXK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,WAAW;MACvBQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB,MAAMyoG,YAAY,GAAG;UACjBw4H,eAAe,EAAE3S,WAAW,GAAGA,WAAW,GAAG,KAAK;UAClD4S,YAAY,EAAE1S,aAAa,GAAGA,aAAa,GAAG,GAAG;UACjD2S,gBAAgB,EAAEnqH,kBAAkB;UACpCoqH,YAAY,EAAE/S;QAClB,CAAC;QAEDv9D,eAAe,CAAC2Y,gBAAgB,CAAC,CAC7B;UAAE3qK,IAAI,EAAE,4CAA4C;UAAE2pG;QAAa,CAAC,EACpE;UAAE3pG,IAAI,EAAE,2EAA2E;UAAE2pG;QAAa,CAAC,CACtG,CAAC;MACN;IACJ,CAAC,CAAC;IACFspH,cAAc,GAAGxzN,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,wBAAwB;MAC9BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,WAAW;MACvBQ,QAAQ,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAC+xN,cAAc,CAAC/2N,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAChD6zM,sBAAsB,CAACt+M,IAAI,CAACk/M,eAAe,CAAC;QAChD;MACJ;IACJ,CAAC,CAAC;IACF8jB,iBAAiB,GAAG9iO,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,0BAA0B;MAChCG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZtD,cAAc,CAAC2B,IAAI,CAAC;UAChBgpG,QAAQ,EAAEonH,mBAAmB;UAC7B9jF,YAAY,EAAEA,YAAY;UAC1BzlH,IAAI,EAAEmpM,QAAQ;UACdgE,kBAAkB,EAAEA;QACxB,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,IAAIp9F,UAAU,GAAG,WAAW;IAC5B,IAAI1oH,CAAC,CAACC,OAAO,CAACujC,UAAU,EAAEklF,UAAU,GAAG,kBAAkB;IAEzD+8F,WAAW,GAAGzzN,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAEm2H,UAAU;MAChBh2H,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZ,IAAI,CAACgyN,WAAW,CAACh3N,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC7Cw4N,aAAa,CAAC,CAAC;QACnB;MACJ;IACJ,CAAC,CAAC;IACFP,iBAAiB,CAACnlO,WAAW,CAACm2N,cAAc,CAAC;IAC7C,IAAIxlN,CAAC,CAACC,OAAO,CAACojC,cAAc,EAAE;MAC1BmxL,iBAAiB,CAACnlO,WAAW,CAACylO,iBAAiB,CAAC;IACpD;IAEA,IACI90N,CAAC,CAACC,OAAO,CAACkjC,cAAc,IAAI,IAAI,IAChCnjC,CAAC,CAACC,OAAO,CAACmjC,cAAc,IAAI,IAAI,IAChCpjC,CAAC,CAACC,OAAO,CAACqjC,cAAc,IAAI,IAAI,IAChCtjC,CAAC,CAACC,OAAO,CAACsjC,cAAc,IAAI,IAAI,EAClC;MACEiiL,cAAc,CAAC/2N,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC/C,CAAC,MAAM;MACH82N,cAAc,CAAC/2N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC5C;IAEA,IAAIqR,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzCs0N,iBAAiB,CAACnlO,WAAW,CAAC8tK,UAAU,CAAC;IAC7C;IAEA,MAAM63D,SAAS,GAAG,MAAM3jB,YAAY,CAAC4jB,wBAAwB,CAACxqH,kBAAkB,CAAC;IACjF,MAAM;MAAEyqH;IAA+B,CAAC,GAAGF,SAAS;IAEpD,IAAIE,8BAA8B,CAAC,CAAC,CAAC,CAACC,eAAe,IAAI,MAAM,EAAE;MAC5D,IAAIZ,oBAAoB,KAAK,OAAO,IAAIv0N,CAAC,CAACC,OAAO,CAAC6mD,eAAe,EAAEiuK,aAAa,CAAC,CAAC;MAClF,IAAI/0N,CAAC,CAACC,OAAO,CAAC6mD,eAAe,EAAE0tK,iBAAiB,CAACnlO,WAAW,CAACo2N,WAAW,CAAC;MAC1E;IACJ,CAAC,MACI;MACF;MACA,IAAIzlN,CAAC,CAACC,OAAO,CAAC6mD,eAAe,EAAE0tK,iBAAiB,CAACnlO,WAAW,CAACo2N,WAAW,CAAC;MAC1E;IACF;IAEA,MAAMngM,MAAM,GAAG,MAAM+rL,YAAY,CAAC+jB,qBAAqB,CAAC3qH,kBAAkB,CAAC;IAC3E,MAAM;MAAE4qH;IAA4B,CAAC,GAAG/vM,MAAM;IAE9C,IAAI+vM,2BAA2B,CAAC,CAAC,CAAC,CAACF,eAAe,IAAI,OAAO,IAAI,CAACn1N,CAAC,CAACC,OAAO,CAACujC,UAAU,EAAE;MACpFiiL,WAAW,CAACh3N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC;IAEA,IAAI,CAACiD,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,EAAE;MAC5CiP,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACmlO,iBAAiB,CAAC;IACnD;IAEA,IAAIc,iBAAiB,GAAG1jO,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDmjO,iBAAiB,CAACvmO,SAAS,GAAG,sDAAsDqvI,YAAY,cAAc;IAC9Gt9H,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACimO,iBAAiB,CAAC;IAE/C,IAAIC,mBAAmB,GAAG3jO,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvDojO,mBAAmB,CAAC9mO,SAAS,CAACE,GAAG,CAAC,qBAAqB,CAAC;IACxD;IACA,IAAI6mO,WAAW,GAAG5jO,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CqjO,WAAW,CAACzmO,SAAS,GAAG,2DAA2D21N,QAAQ,uBAAuB;IAClH6Q,mBAAmB,CAAClmO,WAAW,CAACmmO,WAAW,CAAC;IAE5C10N,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACkmO,mBAAmB,CAAC;IAEjD,MAAMl3H,UAAU,GAAGs3D,0BAA0B,CAAC,CAAC;IAC/C70J,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACgvG,UAAU,CAAC;;IAExC;IACA,IAAIo3H,YAAY,GAAGvC,kBAAkB,CAAC3tH,gBAAgB,CAAC;IACvDzkG,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAComO,YAAY,CAAC;;IAE1C;IACA,MAAMC,SAAS,GAAG,MAAMrkB,YAAY,CAACskB,aAAa,CAAClrH,kBAAkB,EAAEq3G,QAAQ,CAAC;IAChFsL,iBAAiB,CAACsI,SAAS,CAAC;EAChC;EACA,SAAStI,iBAAiBA,CAACtzH,OAAO,EAAE;IAChC0sH,YAAY,CAAC1sH,OAAO,CAAC;IACrB4yH,gBAAgB,CAACvK,eAAe,CAAC;EACrC;EAEA,SAASwR,iBAAiBA,CAACD,YAAY,EAAE;IACrChjN,MAAM,CAAC8B,IAAI,CAACkhN,YAAY,CAAC,CAACvkO,OAAO,CAACymO,KAAK,IAAI;MACvClC,YAAY,CAACkC,KAAK,CAAC,CAAC3sN,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAC1BvU,CAAC,CAACi/M,qBAAqB,CAAC76K,WAAW,CAAC,CAAC,GAAG7vB,CAAC,CAAC0qM,qBAAqB,CAAC76K,WAAW,CAAC,CAAC,GACvE,CAAC,GACDpkC,CAAC,CAACi/M,qBAAqB,CAAC76K,WAAW,CAAC,CAAC,KAAK7vB,CAAC,CAAC0qM,qBAAqB,CAAC76K,WAAW,CAAC,CAAC,GAC3EpkC,CAAC,CAACi9N,mBAAmB,CAAC74L,WAAW,CAAC,CAAC,GAAG7vB,CAAC,CAAC0oN,mBAAmB,CAAC74L,WAAW,CAAC,CAAC,GACrE,CAAC,GACD,CAAC,CAAC,GACN,CAAC,CACf,CAAC;IACL,CAAC,CAAC;IACF,OAAOs6L,YAAY;EACvB;EAEA,SAASmC,wBAAwBA,CAACC,gBAAgB,EAAEC,yBAAyB,EAAE;IAC3E,IAAIC,iBAAiB,GAAG,CAAC,CAAC;IAC1BF,gBAAgB,CAAC3mO,OAAO,CAAC+vC,IAAI,IAAI;MAC7B62L,yBAAyB,CAACE,KAAK,CAACC,gBAAgB,IAAI;QAChD,IAAIh3L,IAAI,CAAC9sC,EAAE,KAAK8jO,gBAAgB,CAACp2H,EAAE,EAAE;UACjCk2H,iBAAiB,CAAC92L,IAAI,CAAC9sC,EAAE,CAAC,GAAG,IAAI;UACjC,OAAO,KAAK;QAChB,CAAC,MAAM;UACH4jO,iBAAiB,CAAC92L,IAAI,CAAC9sC,EAAE,CAAC,GAAG,KAAK;UAClC,OAAO,IAAI;QACf;MACJ,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAI+6G,WAAW,GAAG2oH,gBAAgB,CAACn9N,GAAG,CAACulD,MAAM,IAAI;MAC7C,IAAIi4K,SAAS,GAAGH,iBAAiB,CAACx8M,QAAQ,CAAC0kC,MAAM,CAAC9rD,EAAE,CAAC,CAAC;MACtD,OAAO;QACHolK,WAAW,EAAEt5G,MAAM,CAAC9rD,EAAE;QACtBgkO,aAAa,EAAED;MACnB,CAAC;IACL,CAAC,CAAC;IACFrQ,kBAAkB,GAAG34G,WAAW;IAEhCzP,OAAO,CAAC+5D,mBAAmB,CAACtqD,WAAW,CAAC;IACxC,IAAIi4G,QAAQ,EAAE;MACV1nH,OAAO,CAACI,cAAc,CAAC,IAAI,EAAE;QACzB6qC,QAAQ,EAAE;MACd,CAAC,CAAC;MACFjrC,OAAO,CAACoH,cAAc,CAAC;QACnB6jC,QAAQ,EAAE;MACd,CAAC,CAAC;IACN;EACJ;EAEA,SAASs/E,8BAA8BA,CAAA,EAAG;IACtC,IAAIoO,gBAAgB,GAAG,IAAIn2K,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MAC1D+tM,YAAY,CAACilB,yBAAyB,CAACxU,QAAQ,EAAE5pK,GAAG,IAAI;QACpD49K,gBAAgB,GAAG59K,GAAG;QACtBiI,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;IACF,IAAIo2K,6BAA6B,GAAG,IAAIr2K,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MACvE+tM,YAAY,CAACmlB,sBAAsB,CAAC1U,QAAQ,EAAE5pK,GAAG,IAAI;QACjD69K,yBAAyB,GAAG79K,GAAG;QAC/BiI,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;IAEFD,OAAO,CAACmrF,GAAG,CAAC,CAACgrF,gBAAgB,EAAEE,6BAA6B,CAAC,CAAC,CAAC71G,IAAI,CAAC,YAAY;MAC5Em1G,wBAAwB,CAACC,gBAAgB,EAAEC,yBAAyB,CAAC;IACzE,CAAC,CAAC;EACN;EAEA,eAAehB,aAAaA,CAAA,EAAG;IAC3BrP,aAAa,GAAG/jN,KAAK,CAAC1P,KAAK,CAAC;MACxBkQ,KAAK,EAAE;IACX,CAAC,CAAC;IAEFs0N,OAAO,GAAGzkO,MAAM,CAACC,KAAK,CAAC;MACnBM,IAAI,EAAE,+BAA+B;MACrCG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,YAAY;MACxBQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACd,MAAMijO,WAAW,CAAC9Q,uBAAuB,CAAC;QAC1CjkN,KAAK,CAAC/S,IAAI,CAAC82N,aAAa,CAAC;MACjC;IACJ,CAAC,CAAC;IAEFiR,SAAS,GAAG3kO,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,iCAAiC;MACvCG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,MAAMmjO,aAAa,CAAC,CAAC;QACrBj1N,KAAK,CAAC/S,IAAI,CAAC82N,aAAa,CAAC;MAC7B;IACJ,CAAC,CAAC;IAEFh1K,UAAU,GAAG1+C,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,aAAa;MACnBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZojO,eAAe,CAAC,CAAC;MACrB;IACJ,CAAC,CAAC;IAEF,MAAMp0N,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3CskO,OAAO,CAAC/jO,KAAK,CAACiS,KAAK,GAAG,MAAM;IAC5BgyN,SAAS,CAACjkO,KAAK,CAACiS,KAAK,GAAG,MAAM;IAC9B+rC,UAAU,CAACh+C,KAAK,CAACiS,KAAK,GAAG,MAAM;IAC/BlC,OAAO,CAACrM,SAAS,GACb,oMAAoM;IACxMqM,OAAO,CAAC/P,KAAK,CAACguC,SAAS,GAAG,QAAQ;IAClCj+B,OAAO,CAAC/P,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACnCgjK,aAAa,CAACr2N,WAAW,CAACoT,OAAO,CAAC;IAClCijN,aAAa,CAACr2N,WAAW,CAAConO,OAAO,CAAC;IAElC,MAAMnxM,MAAM,GAAG,MAAM+rL,YAAY,CAACylB,wBAAwB,CAACrsH,kBAAkB,CAAC;IAC9E,MAAM;MAAEssH;IAA+B,CAAC,GAAGzxM,MAAM;;IAEjD;IACA,IAAIyxM,8BAA8B,CAAC,CAAC,CAAC,CAAC5B,eAAe,IAAI,MAAM,EAAG;MAC9DzP,aAAa,CAACr2N,WAAW,CAACsnO,SAAS,CAAC;MACpC,IAAII,8BAA8B,CAAC,CAAC,CAAC,CAACC,kBAAkB,IAAI,MAAM,EAAE;QAChEL,SAAS,CAACloO,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAEnC,CAAC,MAAO;QACJgoO,SAAS,CAACloO,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACzC;MACT;IACK,CAAC,MAAM,CAEZ;;IAEA;IACA,IAAIqoO,8BAA8B,CAAC,CAAC,CAAC,CAACnR,uBAAuB,IAAI,MAAM,EAAG;MAErE,MAAMqR,UAAU,GAAGvR,aAAa,CAACpmN,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;MACxE23N,UAAU,CAACloO,SAAS,GAAG,mBAAmB;MAC1C62N,uBAAuB,GAAG,MAAM;MAChCnjN,OAAO,CAAC/P,KAAK,CAACoK,OAAO,GAAG,MAAM;MAC9B,MAAMo6N,aAAa,GAAGxR,aAAa,CAACpmN,sBAAsB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;MAC/E43N,aAAa,CAACxkO,KAAK,CAACoK,OAAO,GAAG,QAAQ;IAE1C,CAAC,MAAM;MAEH8oN,uBAAuB,GAAG,OAAO;IACrC;IAEA,IAAI5lN,CAAC,CAACC,OAAO,CAACujC,UAAU,EAAEkiL,aAAa,CAACr2N,WAAW,CAACqhD,UAAU,CAAC;IAE/D,MAAMymL,eAAe,GAAG,MAAM9lB,YAAY,CAAC+jB,qBAAqB,CAAC3qH,kBAAkB,CAAC;IACpF,MAAM;MAAE4qH;IAA4B,CAAC,GAAG8B,eAAe;IAEvD,IAAI9B,2BAA2B,CAAC,CAAC,CAAC,CAACF,eAAe,IAAI,OAAO,IAAIn1N,CAAC,CAACC,OAAO,CAACujC,UAAU,EAAE;MACnF/gC,OAAO,CAAC/P,KAAK,CAACoK,OAAO,GAAG,MAAM;MAC9B25N,OAAO,CAAC/jO,KAAK,CAACoK,OAAO,GAAG,MAAM;MAC9B65N,SAAS,CAACjkO,KAAK,CAACoK,OAAO,GAAG,MAAM;MACjC;MACA,MAAMo6N,aAAa,GAAGxR,aAAa,CAACpmN,sBAAsB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;MAC9E43N,aAAa,CAACxkO,KAAK,CAACoK,OAAO,GAAG,QAAQ;IAKzC,CAAC,MAAM;MACH,MAAMo6N,aAAa,GAAGxR,aAAa,CAACpmN,sBAAsB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;MAC9E43N,aAAa,CAACxkO,KAAK,CAACoK,OAAO,GAAG,MAAM;MAEpC,IAAIi6N,8BAA8B,CAAC,CAAC,CAAC,CAACnR,uBAAuB,IAAI,MAAM,EAAG;QAEtE,MAAMqR,UAAU,GAAGvR,aAAa,CAACpmN,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxE23N,UAAU,CAACloO,SAAS,GAAG,mBAAmB;QAC1C62N,uBAAuB,GAAG,MAAM;QAChCnjN,OAAO,CAAC/P,KAAK,CAACoK,OAAO,GAAG,MAAM;QAC9B,MAAMo6N,aAAa,GAAGxR,aAAa,CAACpmN,sBAAsB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC9E43N,aAAa,CAACxkO,KAAK,CAACoK,OAAO,GAAG,QAAQ;MAE3C,CAAC,MAAM;QAEN,MAAMm6N,UAAU,GAAGvR,aAAa,CAACpmN,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxE23N,UAAU,CAACloO,SAAS,GAAG,+BAA+B;QACtD62N,uBAAuB,GAAG,OAAO;MAClC;IACH;IACAjkN,KAAK,CAAC9S,IAAI,CAAC62N,aAAa,CAAC;EAC7B;EAEA,eAAekR,aAAaA,CAAA,EAAG;IAC3B,MAAM7tG,QAAQ,GAAG;MACbvqF,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAEg2D;IAChB,CAAC;IACD4mG,YAAY,CAAC+lB,mBAAmB,CAACruG,QAAQ,CAAC;EAC9C;EAEA,eAAe2tG,WAAWA,CAAC9Q,uBAAuB,EAAE;IAChDvU,YAAY,CAACgmB,iBAAiB,CAAC5sH,kBAAkB,EAAEm7G,uBAAuB,CAAC;EAC/E;EAEA,SAASiR,eAAeA,CAAA,EAAG;IACvBS,eAAe,GAAG31N,KAAK,CAAC1P,KAAK,CAAC;MAC1BgB,UAAU,EAAE,CAAC,iBAAiB,CAAC;MAC/BkP,KAAK,EAAE;IACX,CAAC,CAAC;;IAEF;IACA8lK,YAAY,GAAGxyK,KAAK,CAACxD,KAAK,CAAC;MACvBG,EAAE,EAAE,cAAc;MAClBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEFw1K,UAAU,GAAGzyK,KAAK,CAACxD,KAAK,CAAC;MACrBG,EAAE,EAAE,YAAY;MAChBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEFkvG,SAAS,GAAG5vG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEFkvG,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEF,IAAI4kO,aAAa,GAAG3lO,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDolO,aAAa,CAAC9oO,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACtCs5K,YAAY,CAACv1K,KAAK,CAACiS,KAAK,GAAG,KAAK;IAChCujK,UAAU,CAACx1K,KAAK,CAACiS,KAAK,GAAG,KAAK;IAC9B4yN,aAAa,CAACloO,WAAW,CAAC44K,YAAY,CAAC;IACvCsvD,aAAa,CAACloO,WAAW,CAAC64K,UAAU,CAAC;IACrCovD,eAAe,CAACjoO,WAAW,CAACkoO,aAAa,CAAC;IAE1C,MAAMrrF,iBAAiB,GAAGt6I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvD+5I,iBAAiB,CAACz9I,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IACpD,MAAMw9I,oBAAoB,GAAGv6I,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACzDg6I,oBAAoB,CAAC/1I,SAAS,GAAG,0BAA0B;IAC3D81I,iBAAiB,CAAC78I,WAAW,CAAC88I,oBAAoB,CAAC;IACnDmrF,eAAe,CAACjoO,WAAW,CAAC68I,iBAAiB,CAAC;IAE9CpT,eAAe,GAAGlnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACjD2mI,eAAe,CAACnmI,IAAI,GAAG,MAAM;IAC7BmmI,eAAe,CAACrqI,SAAS,CAACE,GAAG,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;IACtEmqI,eAAe,CAAC/mI,gBAAgB,CAAC,QAAQ,EAAEuT,GAAG,IAAI4kI,cAAc,CAAC5kI,GAAG,CAAC9V,MAAM,CAAC,CAAC;IAC7EspI,eAAe,CAACpmI,KAAK,CAACgwD,YAAY,GAAG,MAAM;IAC3C40K,eAAe,CAACjoO,WAAW,CAACypI,eAAe,CAAC;IAE5C,IAAIkhB,YAAY,GAAGpoJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nJ,YAAY,CAACvrJ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrCqrJ,YAAY,CAAC3qJ,WAAW,CAACuyG,SAAS,CAAC;IACnCo4C,YAAY,CAAC3qJ,WAAW,CAACwyG,UAAU,CAAC;IACpCy1H,eAAe,CAACjoO,WAAW,CAAC2qJ,YAAY,CAAC;IAEzCr4I,KAAK,CAAC/S,IAAI,CAAC82N,aAAa,CAAC;IACzB/jN,KAAK,CAAC9S,IAAI,CAACyoO,eAAe,CAAC;IAC3BrnD,mBAAmB,CAAC,CAAC;IACrB2D,0BAA0B,CAAC,CAAC;EAChC;;EAEA;EACA,SAAS1pC,cAAcA,CAAC16I,MAAM,EAAE;IAC5B,MAAM26I,QAAQ,GAAG36I,MAAM,CAAC46I,KAAK,CAAC,CAAC,CAAC,CAACz3I,IAAI;IACrC,MAAM03I,cAAc,GAAG,IAAI9vF,MAAM,CAAC,mBAAmB,CAAC;IACtD,IAAI8vF,cAAc,CAACj1H,IAAI,CAAC+0H,QAAQ,CAAC,EAAE;MAC/BrxG,KAAK,CAAC,yDAAyD,CAAC;MAChEtpC,MAAM,CAACgE,KAAK,GAAG,EAAE;MACjB,OAAO,KAAK;IAChB;IACAogL,0BAA0B,CAAC,CAAC;EAChC;EAEA,SAAS3D,mBAAmBA,CAAA,EAAG;IAC3BhI,YAAY,CAACl2K,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5Cu3B,SAAS,GAAGv3B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9BogL,0BAA0B,CAAC,CAAC;IAChC,CAAC,CAAC;IACF1L,UAAU,CAACn2K,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1Cy3B,OAAO,GAAGz3B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC5BogL,0BAA0B,CAAC,CAAC;IAChC,CAAC,CAAC;IAEFhyE,SAAS,CAAC7vG,gBAAgB,CAAC,OAAO,EAAE,YAAY;MAC5C,IAAI,CAAC6vG,SAAS,CAACnzG,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC3C;QACA,MAAMgvI,gBAAgB,GAAG35I,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC;QACtE,IAAIszI,gBAAgB,CAACr8I,MAAM,KAAK,CAAC,EAAE;UAC/ByN,OAAO,CAACu6B,GAAG,CAAC,uBAAuB,CAAC;UACpC;QACJ;QAEA,IAAIs0G,eAAe,GAAG,EAAE;QACxB,IAAIR,eAAe,GAAG,EAAE;QACxBO,gBAAgB,CAACp8I,OAAO,CAACs8I,YAAY,IAAI;UACrC,IAAIA,YAAY,CAACj4I,KAAK,KAAK,EAAE,EAAE;YAC3B;UACJ;UACA,MAAMk4I,UAAU,GAAG,IAAIxrF,OAAO,CAACC,OAAO,IAAI;YACtC,MAAMwrF,aAAa,GAAG,CAAC,CAAC;YACxB,MAAMC,cAAc,GAAGH,YAAY,CAACrB,KAAK,CAACzkI,IAAI,CAAC,CAAC,CAAC;YACjD,MAAMkmI,cAAc,GAAGD,cAAc,CAACl0I,IAAI;YAC1C,MAAM+oH,cAAc,GAAGmrB,cAAc,CAACl0I,IAAI,CAACqb,KAAK,CAAC,GAAG,CAAC,CAAC4D,GAAG,CAAC,CAAC;YAC3Dg1H,aAAa,CAACx/B,WAAW,GAAG0/B,cAAc;YAC1CF,aAAa,CAACh5I,IAAI,GAAG8tH,cAAc;YACnC;YACA,IAAIsrB,QAAQ,CAACH,cAAc,CAAC,CAACV,WAAW,CAAC,CAAC,CAACxqB,IAAI,CAACxoE,GAAG,IAAI;cACnDyzF,aAAa,CAACT,WAAW,GAAGhzF,GAAG;cAC/B8yF,eAAe,CAAChuI,IAAI,CAAC2uI,aAAa,CAAC;cACnCxrF,OAAO,CAAC,CAAC;YACb,CAAC,CAAC;UACN,CAAC,CAAC;UAEFqrF,eAAe,CAACxuI,IAAI,CAAC0uI,UAAU,CAAC;QACpC,CAAC,CAAC;QAEF,MAAMxrF,OAAO,CAACmrF,GAAG,CAACG,eAAe,CAAC;QAClC,MAAMV,mBAAmB,CAACE,eAAe,CAAC;QAE1CrpI,KAAK,CAAC/S,IAAI,CAAC0oO,eAAe,CAAC;QAC3B31N,KAAK,CAAC/S,IAAI,CAAC82N,aAAa,CAAC;MAC7B;IACJ,CAAC,CAAC;IAEF7jH,UAAU,CAAC9vG,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACvC4P,KAAK,CAAC/S,IAAI,CAAC0oO,eAAe,CAAC;MAC3B31N,KAAK,CAAC9S,IAAI,CAAC62N,aAAa,CAAC;IAC7B,CAAC,CAAC;EACN;EAEA,eAAe56E,mBAAmBA,CAACE,eAAe,EAAE;IAChD,IAAIA,eAAe,CAAC97I,MAAM,KAAK,CAAC,EAAE;IAClC87I,eAAe,CAAC77I,OAAO,CAAC0d,UAAU,IAAI;MAClC,MAAMo+H,QAAQ,GAAG,IAAI/qF,OAAO,CAACC,OAAO,IAAI;QACpC,MAAM4oE,QAAQ,GAAG;UACbvqF,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB4V,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;UACxBsV,UAAU,EAAEg2D,kBAAkB;UAC9BgW,cAAc,EAAE5zG,UAAU,CAACs/F,WAAW;UACtCt/F,UAAU,EAAEA,UAAU,CAACq+H,WAAW;UAClCpkH,SAAS,EAAEA,SAAS;UACpBE,OAAO,EAAEA;QACb,CAAC;QACDqqL,YAAY,CAACmmB,cAAc,CAACzuG,QAAQ,CAAC;MACzC,CAAC,CAAC;IACN,CAAC,CAAC;EACN;EAEA,SAAS6qD,0BAA0BA,CAAA,EAAG;IAClC,IAAI9sJ,SAAS,GAAGmhJ,YAAY,CAACp2K,aAAa,CAAC,eAAe,CAAC;IAC3D,IAAIm1B,OAAO,GAAGkhJ,UAAU,CAACr2K,aAAa,CAAC,aAAa,CAAC;IACrD,MAAM05I,gBAAgB,GAAG35I,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC;IAEtE,IAAIszI,gBAAgB,CAAC,CAAC,CAAC,CAAC/3I,KAAK,IAAI,EAAE,EAAE;MACjCslI,eAAe,CAACrqI,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC/C,CAAC,MAAM;MACHmqI,eAAe,CAACrqI,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAClD;IACA,IAAIo4B,SAAS,CAACtzB,KAAK,KAAK,EAAE,EAAE;MACxBy0K,YAAY,CAACx5K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC5C,CAAC,MAAM;MACHs5K,YAAY,CAACx5K,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC/C;IAEA,IAAIs4B,OAAO,CAACxzB,KAAK,KAAK,EAAE,IAAKszB,SAAS,CAACtzB,KAAK,IAAI,EAAE,IAAIszB,SAAS,CAACtzB,KAAK,GAAGwzB,OAAO,CAACxzB,KAAM,EAAE;MACpF00K,UAAU,CAACz5K,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC1C,CAAC,MAAM;MACHu5K,UAAU,CAACz5K,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC7C;IACAolL,mBAAmB,CAAC,CAAC;EACzB;EAEA,SAASA,mBAAmBA,CAAA,EAAG;IAC3B,IAAI3vE,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACvE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxB0yG,SAAS,CAACnzG,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACnC;IACJ,CAAC,MAAM;MACHizG,SAAS,CAACnzG,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC1C;EACJ;EAEA,SAASumM,eAAeA,CAAA,EAAG;IACvBn0L,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;IACvB3oB,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBwC,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,qBAAqB,CAAC;IAE5C6yN,gBAAgB,GAAG9vN,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChDuvN,gBAAgB,CAACjzN,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAE1CmS,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACqyN,gBAAgB,CAAC;IAE9CI,QAAQ,GAAGx/L,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IAC/Bi1K,YAAY,CAAComB,8BAA8B,CAACxP,8BAA8B,CAAC;EAC/E;EAEA,SAASn2N,IAAIA,CAAA,EAAG;IACZszN,QAAQ,GAAG,IAAI;IACfnwB,eAAe,CAAC,CAAC;EACrB;EAEA,OAAO;IACHllM,oBAAoB;IACpBqkO,WAAW;IACXtiO,IAAI;IACJmhN,iBAAiB;IACjB4S,qBAAqB;IACrBE,iBAAiB;IACjBE;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AC1+EJ,MAAM5U,YAAY,GAAI,YAAY;EAC9B,SAASmX,UAAUA,CAACzE,UAAU,EAAEtvK,UAAU,EAAEijL,QAAQ,EAAEjkO,QAAQ,EAAE;IAC5DuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,cAAc;MAClBxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGy7K,UAAU,GAAG,IAAI;MAC9EnlK,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClCtrD,QAAQ,CAAC,CAAC;MACd,CAAC;MACPkN,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAC;IACpC,CAAC,CAAC;EACN;EACA,SAAS8rN,QAAQA,CAACh4K,UAAU,EAAEijL,QAAQ,EAAEjkO,QAAQ,EAAE;IAC9CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;MACzBxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGmM,UAAU,GAAG,iBAAiB,GAAGijL,QAAQ,GAAG,IAAI;MAC7G94K,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC44K,uBAAuB;QAC1ClkO,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,eAAey9K,aAAaA,CAAClhL,UAAU,EAAEijL,QAAQ,EAAE;IAC/C,MAAM7qH,YAAY,GAAG;MACjBp4D,UAAU;MACVijL,QAAQ;MACRl5L,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;IACrB,CAAC;IACD,IAAI;MACA,MAAM3zC,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;QACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACgjO,uBAAuB;IACvC,CAAC,CAAC,OAAOh3N,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EACA,SAAS6qH,2BAA2BA,CAAC7T,UAAU,EAAErP,MAAM,EAAEvpD,KAAK,EAAE13J,QAAQ,EAAE;IACtEuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,mCAAmC;MACvCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGy7K,UAAU,GAAG,IAAI;MAC9EnlK,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC84K,qCAAqC;QACxDpkO,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS4/K,eAAeA,CAACrkO,QAAQ,EAAE;IAC/BuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;MAC/BxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACg5K,6BAA6B;QAChDtkO,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASo+K,yBAAyBA,CAAC0B,cAAc,EAAEvkO,QAAQ,EAAE;IACzDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iCAAiC;MACrCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,uBAAuB,GAAG0vL,cAAc,GAAG,IAAI;MACtFp5K,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACk5K,mCAAmC;QACtDxkO,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASgzK,gDAAgDA,CAACz2K,UAAU,EAAEhhD,QAAQ,EAAE;IAC5EuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kCAAkC;MACtCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGmM,UAAU,GAAG,IAAI;MAC9EmK,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACm5K,oCAAoC;QACvDzkO,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASu/K,8BAA8BA,CAAChkO,QAAQ,EAAE;IAC9CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sCAAsC;MAC1CxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACo5K,wCAAwC;QAC3DjgL,GAAG,CAAC/oD,OAAO,CAAC,SAASipO,gBAAgBA,CAACxgO,OAAO,EAAEkC,CAAC,EAAE;UAC9CkG,CAAC,CAACC,OAAO,CAACkrC,mBAAmB,CAACnuC,IAAI,CAACpF,OAAO,CAACkoG,EAAE,CAAC;QAClD,CAAC,CAAC;QACFrsG,QAAQ,CAAC,CAAC;MACd;IACJ,CAAC,CAAC;EACN;EACA,SAAS+iO,sBAAsBA,CAACtpE,SAAS,EAAEz5J,QAAQ,EAAE;IACjDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,8BAA8B;MAClCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,kBAAkB,GAAG4kH,SAAS,GAAG,IAAI;MAC5EtuG,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACs5K,gCAAgC;QACnD5kO,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS8yK,yCAAyCA,CAACv3N,QAAQ,EAAE;IACzDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,yCAAyC;MAC7CxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACu5K,2CAA2C;QAC9D7kO,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA;EACA,SAASqgL,oCAAoCA,CAAC9kO,QAAQ,EAAE;IACpD;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4CAA4C;MAChDxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI86C,OAAO,GAAG,EAAE,CAAC,CAAC;QAClB,IAAI5hD,GAAG,GAAG6G,QAAQ,CAACy5K,8CAA8C;QAEjE,IAAItgL,GAAG,CAAChpD,MAAM,EAAE;UACZ,IAAIgpD,GAAG,CAAC,CAAC,CAAC,CAAC+lH,aAAa,IAAI,GAAG,EAAE;YAC7Bj+J,CAAC,CAACC,OAAO,CAACstC,0BAA0B,GAAG,IAAI;UAC/C,CAAC,MAAM;YACHvtC,CAAC,CAACC,OAAO,CAACstC,0BAA0B,GAAG,KAAK;UAChD;QACJ,CAAC,MAAM;UACHvtC,CAAC,CAACC,OAAO,CAACstC,0BAA0B,GAAG,KAAK;QAChD;QAEA95C,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS40K,uBAAuBA,CAACn4N,IAAI,EAAElB,QAAQ,EAAE;IAC7C;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;MACnCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI86C,OAAO,GAAG/6C,QAAQ,CAAC05K,iCAAiC;QACxDhlO,QAAQ,CAACqmG,OAAO,CAAC;MACrB;IACJ,CAAC,CAAC;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS8tH,SAASA,CAACjzN,IAAI,EAAElB,QAAQ,EAAE;IAC/BkB,IAAI,GAAG;MACH6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBkuK,WAAW,EAAE7hN,IAAI,CAAC6hN,WAAW;MAC7BuN,UAAU,EAAEpvN,IAAI,CAACovN,UAAU;MAC3BprM,IAAI,EAAEhkB,IAAI,CAACqvN,OAAO;MAClB7rK,OAAO,EAAExjD,IAAI,CAACwjD,OAAO;MACrB8rK,QAAQ,EAAEtvN,IAAI,CAACsvN,QAAQ;MACvBE,UAAU,EAAExvN,IAAI,CAACwvN,UAAU;MAC3BC,YAAY,EAAEzvN,IAAI,CAACyvN,YAAY;MAC/BlhK,UAAU,EAAEvuD,IAAI,CAACuuD,UAAU;MAC3BmhK,mBAAmB,EAAE1vN,IAAI,CAAC0vN,mBAAmB;MAC7CC,aAAa,EAAE3vN,IAAI,CAAC2vN,aAAa;MACjCC,WAAW,EAAE5vN,IAAI,CAAC4vN,WAAW;MAC7BC,WAAW,EAAE7vN,IAAI,CAAC6vN;IACtB,CAAC;IACDxkN,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,YAAY;MAChBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAElC,IAAI,CAACA,QAAQ,CAAC25K,cAAc,CAAChiN,KAAK,CAAC,OAAO,CAAC,EAAE;UACzCjjB,QAAQ,CAACykD,GAAG,CAAC;QACjB,CAAC,MAAM;UACHpf,KAAK,CAAC,0FAA0F,CAAC;QACrG;MACJ;IACJ,CAAC,CAAC;EACN;EACA,SAAS84L,oBAAoBA,CAAC9J,mBAAmB,EAAEr0N,QAAQ,EAAE;IACzDkB,IAAI,GAAG;MACHmzN,mBAAmB,EAAEA;IACzB,CAAC;IACD9nN,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;MAC5BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC45K,0BAA0B;QAC7CllO,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS6yK,kBAAkBA,CAACt3N,QAAQ,EAAE;IAClCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sBAAsB;MAC1ByB,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC65K,wBAAwB;QAC3CnlO,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS25K,uBAAuBA,CAACgH,UAAU,EAAEplO,QAAQ,EAAE;IACnDkB,IAAI,GAAG;MACHkkO;IACJ,CAAC;IACD74N,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;MAC/BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC+5K,6BAA6B;QAChDrlO,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS65K,uCAAuCA,CAACt9K,UAAU,EAAEijL,QAAQ,EAAEjkO,QAAQ,EAAE;IAC7EkB,IAAI,GAAG;MACH8/C,UAAU;MACVijL;IACJ,CAAC;IACD13N,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2CAA2C;MAC/CxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACg6K,6CAA6C;QAChEtlO,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAAS8gL,iBAAiBA,CAACvlO,QAAQ,EAAE;IACjCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;MAC9B;MACAyB,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACk6K,4BAA4B;QAC/CxlO,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EAEA,eAAeo5J,yBAAyBA,CAACzkG,YAAY,EAAE;IACnD;IACA,IAAI;MACA,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6BAA6B;QACjCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACukO,+BAA+B;IAC/C,CAAC,CAAC,OAAOv4N,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEA,eAAe8mG,2BAA2BA,CAACtuG,gBAAgB,EAAEkrG,kBAAkB,EAAE;IAC7E,IAAI;MACA,MAAMnrL,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;QAC9BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBmM,UAAU,EAAE8wD,gBAAgB,CAACnzG,EAAE;UAC/Bq+M;QACJ,CAAC,CAAC;QACF7xJ,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAe6rG,8BAA8BA,CAACnuG,kBAAkB,EAAE3jF,SAAS,EAAE;IACzE,IAAI;MACA,MAAMxB,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6BAA6B;QACjCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBmM,UAAU,EAAEg2D,kBAAkB;UAC9BgmG,kBAAkB,EAAE3pL;QACxB,CAAC,CAAC;QACF83B,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAe+nG,uBAAuBA,CAACJ,MAAM,EAAE;IAC3C,IAAI;MACA,MAAMpvL,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sBAAsB;QAC1BxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,eAAe,GAAGosK,MAAM,GAAG,IAAI;QACtE91J,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAe8pG,4BAA4BA,CAACL,WAAW,EAAE;IACrD,IAAI;MACA,MAAMlxL,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;QAC/BxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,oBAAoB,GAAGkuK,WAAW,GAAG,IAAI;QAChF53J,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeurG,oCAAoCA,CAAC6gB,IAAI,EAAE;IACtD,IAAI;MACA,MAAM7zM,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,mCAAmC;QACvCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB31C,IAAI,EAAEwmO;QACV,CAAC,CAAC;QACFv6K,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAekpG,sBAAsBA,CACjCnvL,SAAS,EACTE,OAAO,EACPwiI,WAAW,EACX4qD,gBAAgB,EAChBn6G,MAAM,EACNy6G,MAAM,EACNjgK,UAAU,EACV56C,QAAQ,EACV;IACE,IAAI;MACA,MAAMyrB,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;QACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBxhB,SAAS,EAAEA,SAAS;UACpBE,OAAO,EAAEA,OAAO;UAChBwiI,WAAW,EAAEA,WAAW;UACxB4qD,gBAAgB,EAAEA,gBAAgB;UAClCn6G,MAAM,EAAEA,MAAM;UACdy6G,MAAM,EAAEA,MAAM;UACdjgK,UAAU,EAAEA,UAAU;UACtB56C,QAAQ,EAAEA;QACd,CAAC,CAAC;QACF+kD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeosG,6BAA6BA,CACxCryL,SAAS,EACTE,OAAO,EACPwiI,WAAW,EACX2sD,iBAAiB,EACjBC,WAAW,EACX53J,MAAM,EACNrG,OAAO,EACPm+J,iBAAiB,EACjB9pG,SAAS,EACT+pG,eAAe,EACft8G,MAAM,EACNu8G,WAAW,EACX/hK,UAAU,EACV56C,QAAQ,EACR4kE,QAAQ,EACV;IACE,IAAI;MACA,MAAMn5C,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;QAChCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBxhB,SAAS,EAAEA,SAAS;UACpBE,OAAO,EAAEA,OAAO;UAChBwiI,WAAW,EAAEA,WAAW;UACxB2sD,iBAAiB,EAAEA,iBAAiB;UACpCC,WAAW,EAAEA,WAAW;UACxB53J,MAAM,EAAEA,MAAM;UACdrG,OAAO,EAAEA,OAAO;UAChBm+J,iBAAiB,EAAEA,iBAAiB;UACpC9pG,SAAS,EAAEA,SAAS;UACpB+pG,eAAe,EAAEA,eAAe;UAChCt8G,MAAM,EAAEA,MAAM;UACdu8G,WAAW,EAAEA,WAAW;UACxB/hK,UAAU,EAAEA,UAAU;UACtB56C,QAAQ,EAAEA,QAAQ;UAClB4kE,QAAQ,EAAEA;QACd,CAAC,CAAC;QACF7f,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAe0oG,wBAAwBA,CAAA,EAAG;IACtC,IAAI;MACA,MAAMnwL,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;QAC3BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QACrB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;;EAEA;EACA,eAAeqsH,kBAAkBA,CAACvsH,YAAY,EAAE;IAC5C;IACA;IACA,IAAI;MACA,MAAMvnF,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,yBAAyB;QAC7BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB,GAAGukE;QACP,CAAC,CAAC;QACFjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,OAAOx5B,MAAM,CAAC+zM,2BAA2B;IAC7C,CAAC,CAAC,OAAO14N,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EACA,eAAeusH,2BAA2BA,CAACzsH,YAAY,EAAE;IACrD;IACA;IACA,IAAI;MACA,MAAMvnF,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kCAAkC;QACtCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB,GAAGukE;QACP,CAAC,CAAC;QACFjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,OAAOx5B,MAAM,CAACi0M,oCAAoC;IACtD,CAAC,CAAC,OAAO54N,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EACA,eAAeysH,eAAeA,CAAA,EAAG;IAC7B,IAAI;MACA,MAAMl0M,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,mBAAmB;QACvBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QACrB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,OAAOx5B,MAAM,CAACm0M,qBAAqB;IACvC,CAAC,CAAC,OAAO94N,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EACA,eAAe86G,aAAaA,CAAClzN,IAAI,EAAE;IAC/B;IACA,IAAI;MACA,MAAM2wB,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oBAAoB;QACxBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UAACmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UAAE,GAAG3zC;QAAI,CAAC,CAAC;QACvDiqD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,OAAOx5B,MAAM,CAACo0M,sBAAsB;IACxC,CAAC,CAAC,OAAO/4N,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EACA;;EAEA,eAAeyqH,cAAcA,CAAC3qH,YAAY,EAAE;IACxC,IAAI;MACA,IAAIuwB,MAAM,GAAG,EAAE;MACf,IAAIC,KAAK,GAAG,IAAIx/E,UAAU,CAACgvD,YAAY,CAAChgG,UAAU,CAAC;MACnD,IAAIykB,GAAG,GAAG+rG,KAAK,CAACC,UAAU;MAC1B,KAAK,IAAIxjI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGw3B,GAAG,EAAEx3B,CAAC,EAAE,EAAE;QAC1BsjI,MAAM,IAAIzoH,MAAM,CAAC4oH,YAAY,CAACF,KAAK,CAACvjI,CAAC,CAAC,CAAC;MAC3C;MACA,IAAI0jI,QAAQ,GAAGp9H,MAAM,CAACoe,IAAI,CAAC4+G,MAAM,CAAC;MAClCvwB,YAAY,CAAChgG,UAAU,GAAG2wH,QAAQ;MAClC,MAAM7oI,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kBAAkB;QACtBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACglO,oBAAoB;IACpC,CAAC,CAAC,OAAOh5N,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEA,eAAe+pH,wBAAwBA,CAACrsH,kBAAkB,EAAE;IACxD,IAAI;MACA,MAAMnlF,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;QAChCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGmiE,kBAAkB,GAAG,IAAI;QACtF7rD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAekoH,wBAAwBA,CAACxqH,kBAAkB,EAAE;IACxD,IAAI;MACA,MAAMnlF,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;QAChCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGmiE,kBAAkB,GAAG,IAAI;QACtF7rD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeqqH,mBAAmBA,CAACvqH,YAAY,EAAE;IAC7C,IAAI;MACA,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;QAC3BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACilO,yBAAyB;IACzC,CAAC,CAAC,OAAOj5N,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEA,SAASsqH,iBAAiBA,CAAC5sH,kBAAkB,EAAEm7G,uBAAuB,EAAE;IACpEjxN,IAAI,GAAG;MACH6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAEg2D,kBAAkB;MAC9Bm7G,uBAAuB,EAAEA;IAC7B,CAAC;IACD,IAAI9lN,MAAM,GAAG,GAAGE,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,MAAMh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,IAAIj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,IAAIl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,qBAAqB;IACjI,IAAIygF,eAAe,GAAG,SAAAA,CAAU7b,IAAI,EAAE;MAClC,IAAI7pE,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;IACtC,CAAC;IAED,IAAI5yC,IAAI,GAAGva,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IACzCga,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAEiN,MAAM,CAAC;IACnCqM,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IACnCsZ,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrCsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE,kBAAkB,CAAC;IAChDsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE+qI,eAAe,CAAC;IAC7C,IAAI/E,UAAU,GAAGjnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAChD0mI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IACxCgmI,UAAU,CAAChmI,YAAY,CAAC,OAAO,EAAEmN,CAAC,CAACC,OAAO,CAACqoC,KAAK,CAAC;IACjDuwF,UAAU,CAACzmI,EAAE,GAAG,OAAO;IACvB,IAAI0mI,eAAe,GAAGlnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACrD2mI,eAAe,CAACjmI,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC;IAClDimI,eAAe,CAACjmI,YAAY,CAAC,OAAO,EAAE43G,kBAAkB,CAAC;IACzDquB,eAAe,CAAC1mI,EAAE,GAAG,YAAY;IACjC,IAAIynO,4BAA4B,GAAGjoO,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAClE0nO,4BAA4B,CAAChnO,YAAY,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAC5EgnO,4BAA4B,CAAChnO,YAAY,CAAC,OAAO,EAAE+yN,uBAAuB,CAAC;IAC3EiU,4BAA4B,CAACznO,EAAE,GAAG,yBAAyB;IAE3D+Z,IAAI,CAAC9c,WAAW,CAACwpI,UAAU,CAAC;IAC5B1sH,IAAI,CAAC9c,WAAW,CAACypI,eAAe,CAAC;IACjC3sH,IAAI,CAAC9c,WAAW,CAACwqO,4BAA4B,CAAC;IAC9C1tN,IAAI,CAACzZ,KAAK,CAACsH,QAAQ,GAAG,UAAU;IAChCmS,IAAI,CAACzZ,KAAK,CAAC+nF,OAAO,GAAG,GAAG;IACxB7oF,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAAC8c,IAAI,CAAC;IAE/BA,IAAI,CAAC4sH,MAAM,CAAC,CAAC;IACb5sH,IAAI,CAACzd,MAAM,CAAC,CAAC;EACjB;EAEA,eAAeorO,6BAA6BA,CAACrvH,kBAAkB,EAAEsvH,UAAU,EAAErjB,WAAW,EAAE;IACtF,IAAI;MACA,MAAMpxL,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iCAAiC;QACrCxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnBmiE,kBAAkB,GAClB,mBAAmB,GACnBsvH,UAAU,GACV,oBAAoB,GACpBrjB,WAAW,GACX,IAAI;QACR93J,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeqoH,qBAAqBA,CAAC3qH,kBAAkB,EAAE;IACrD,IAAI;MACA,MAAMnlF,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,yBAAyB;QAC7BxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAGmiE,kBAAkB,GAAG,IAAI;QACtF7rD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,OAAO;IACHy7G,UAAU;IACViE,QAAQ;IACRkJ,aAAa;IACbiC,2BAA2B;IAC3BE,eAAe;IACfxB,yBAAyB;IACzBpL,gDAAgD;IAChDuM,8BAA8B;IAC9BjB,sBAAsB;IACtBxL,yCAAyC;IACzCuN,oCAAoC;IACpCzL,uBAAuB;IACvB;IACAlF,SAAS;IACTgK,oBAAoB;IACpB7G,kBAAkB;IAClB8G,uBAAuB;IACvBE,uCAAuC;IACvCiH,iBAAiB;IACjB1nB,yBAAyB;IACzBuC,2BAA2B;IAC3BiB,uBAAuB;IACvB+B,4BAA4B;IAC5B+B,8BAA8B;IAC9BN,oCAAoC;IACpCrC,sBAAsB;IACtBkD,6BAA6B;IAC7B1D,wBAAwB;IACxB;IACA2jB,kBAAkB;IAClBE,2BAA2B;IAC3BE,eAAe;IACf3R,aAAa;IACb;IACA2P,cAAc;IACdV,wBAAwB;IACxBM,mBAAmB;IACnBC,iBAAiB;IACjByC,6BAA6B;IAC7B1E,qBAAqB;IACrBH;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACnjCJ,MAAM9kO,cAAc,GAAI,YAAY;EAClC;EACA,IAAIs6G,kBAAkB;EACtB,IAAIuvH,oBAAoB;EACxB,IAAIj9G,YAAY;EAChB,IAAI22G,YAAY;EAChB,IAAIuG,eAAe;EACnB,IAAIC,wBAAwB;EAC5B,IAAIC,cAAc;EAClB,IAAIC,uBAAuB;EAC3B,IAAIC,kBAAkB;EACtB,IAAIC,cAAc;EAClB,IAAI7qG,YAAY;EAChB,IAAI8qG,WAAW;EACf,IAAI7xL,SAAS;EACb,IAAIopL,YAAY;EAChB,IAAI0I,SAAS;EACb,IAAIC,WAAW;EACf,IAAIvwN,SAAS;EACb;EACA,IAAIo2F,SAAS;EACb,IAAIo6H,WAAW;EACf,IAAIryB,UAAU;EACd,IAAIC,eAAe;EACnB,IAAIqyB,WAAW;EACf,IAAIznB,cAAc;EAClB,IAAIC,mBAAmB;EACvB,IAAIynB,gBAAgB;EACpB,IAAIC,oBAAoB;EACxB;EACA,IAAIC,gBAAgB,GAAG;IAAEC,EAAE,EAAE,IAAI;IAAEzyN,IAAI,EAAE;EAAK,CAAC;EAC/C,IAAI0yN,QAAQ;EACZ,IAAIC,UAAU;EACd,IAAIC,aAAa;EACjB,IAAIzqF,WAAW;EACf,IAAID,aAAa;EACjB,IAAI2qF,gBAAgB,GAAG,IAAI;EAC3B;EACA,IAAIC,iBAAiB;EACrB,IAAIjH,WAAW;EACf,IAAI7R,YAAY;EAChB,IAAI+Y,eAAe;EACnB;EACA,MAAMC,YAAY,GAAG,CAAC;EACtB,MAAMC,SAAS,GAAG,EAAE;EACpB,MAAMC,QAAQ,GAAG,CAAC;EAClB,MAAMC,SAAS,GAAG,CAAC;EACnB,MAAMC,UAAU,GAAG,CAAC;EACpB,MAAMC,SAAS,GAAG,CAAC;EACnB,MAAMC,OAAO,GAAG,cAAc;EAC9B,MAAMC,IAAI,GAAG,QAAQ;EACrB,MAAMC,GAAG,GAAG,OAAO;EACnB,MAAMC,IAAI,GAAG,QAAQ;EACrB,MAAMC,KAAK,GAAG,SAAS;EACvB,MAAMC,IAAI,GAAG,QAAQ;EACrB,MAAMC,QAAQ,GAAG;IACf,cAAc,EAAE,IAAI;IACpBC,MAAM,EAAE,GAAG;IACXC,KAAK,EAAE,GAAG;IACVC,MAAM,EAAE,GAAG;IACXC,OAAO,EAAE,GAAG;IACZC,MAAM,EAAE;EACV,CAAC;EACD,MAAMC,MAAM,GAAG;IACb,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,WAAW;IACjB,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,UAAU;IACd,EAAE,EAAE;EACN,CAAC;EACD,MAAMC,SAAS,GAAG;IAChBC,OAAO,EAAE,UAAU;IACnBC,OAAO,EAAE,WAAW;IACpBC,OAAO,EAAE,cAAc;IACvBC,OAAO,EAAE,SAAS;IAClBC,OAAO,EAAE;EACX,CAAC;EACD,MAAMC,UAAU,GAAG;IACjBrpN,CAAC,EAAE,SAAS;IACZ8I,CAAC,EAAE,UAAU;IACbvK,CAAC,EAAE,UAAU;IACbsB,CAAC,EAAE,WAAW;IACd0C,CAAC,EAAE;EACL,CAAC;EAED,SAASg1F,iBAAiBA,CAAA,EAAG;IAC3B+uH,oBAAoB,CAACvrO,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAEpD,MAAMuF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEtCsF,IAAI,CAAC5E,WAAW,CAAC2qO,oBAAoB,CAAC;IAEtC,OAAO/lO,IAAI;EACb;;EAEA;EACA;EACA,eAAelE,oBAAoBA,CAACP,MAAM,EAAE;IAC1C,IAAIA,MAAM,CAACC,OAAO,CAACC,SAAS,KAAK,kBAAkB,EAAE;MACnDoR,GAAG,CAACkoB,eAAe,CAAC,CAAC;IACvB;IAEA,IAAIx5B,MAAM,CAACC,OAAO,CAACC,SAAS,KAAK,gBAAgB,EAAE;MACjDoR,GAAG,CAACkoB,eAAe,CAAC,CAAC;MAErB00E,OAAO,CAAC8iD,iCAAiC,CAAC/1C,kBAAkB,CAAC;MAE7D,MAAMsnD,eAAe,GAAGr0D,OAAO,CAACC,kBAAkB,CAAC,CAAC;MACpD8M,kBAAkB,GAAGsnD,eAAe,CAAC,CAAC,CAAC,CAAC3/J,EAAE;MAC1C4nO,oBAAoB,GAAGjoE,eAAe,CAAC,CAAC,CAAC,CAAC7mD,IAAI;MAE9C,MAAMkuH,kBAAkB,CAAC,CAAC;MAC1B,MAAME,2BAA2B,CAAC,CAAC;;MAEnC;MACA,MAAM0D,qBAAqB,GAAG/xH,iBAAiB,CAAC,CAAC;MACjDmwH,iBAAiB,CAACrzN,YAAY,CAACi1N,qBAAqB,EAAEC,kBAAkB,CAAC;MACzEA,kBAAkB,GAAGD,qBAAqB;MAC1C;MACA,MAAME,cAAc,GAAG5yN,SAAS,CAAC,CAAC;MAClC8wN,iBAAiB,CAACrzN,YAAY,CAACm1N,cAAc,EAAE/I,WAAW,CAAC;MAC3DA,WAAW,GAAG+I,cAAc;MAE5BC,mBAAmB,CAAC,CAAC;;MAErB;MACA9rB,YAAY,CAAC6Z,gDAAgD,CAACzgH,kBAAkB,EAAEvyD,GAAG,IAAI;QACvF0sK,sBAAsB,GAAG9qH,OAAO,CAAC,CAAC,CAAC,CAACsxH,iBAAiB;MACvD,CAAC,CAAC;MACF/Z,YAAY,CAAC0gB,uCAAuC,CAClDtnH,kBAAkB,EAClBprF,KAAK,CAAC+G,YAAY,CAAC22F,YAAY,CAAC,EAChCjjB,OAAO,IAAIsjI,aAAa,CAACtjI,OAAO,CAClC,CAAC;IACH;EACF;;EAEA;EACA;EACA,SAASujI,sBAAsBA,CAAAz2G,IAAA,EAA8D;IAAA,IAA7D;MAAEjuG,IAAI;MAAE2M,MAAM;MAAEg4M,QAAQ;MAAEtX,OAAO;MAAE1wB,UAAU;MAAEyuB;IAAW,CAAC,GAAAn9F,IAAA;IACzF,MAAMmC,QAAQ,GAAG;MACf++F,mBAAmB,EAAE/D,UAAU;MAC/B9zN,UAAU,EAAE,EAAE;MACdwkD,UAAU,EAAEg2D,kBAAkB;MAC9Bs9G,qBAAqB,EAAEpvM,IAAI,CAAC5F,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACzCmxM,cAAc,EAAE;IAClB,CAAC;IAEDmX,eAAe,GAAG15N,KAAK,CAAC1P,KAAK,CAAC;MAC5BG,EAAE,EAAE,iBAAiB;MACrB+P,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,MAAMP,MAAM,GAAGs8G,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE,CAAC,kBAAkB;IAAE,CAAC,CAAC;IACzEt3F,MAAM,CAAC7S,SAAS,GAAG,4BAA4BwuO,oBAAoB,MAAM;IACzE,MAAMC,OAAO,GAAGt/G,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE,CAAC,gBAAgB;IAAE,CAAC,CAAC;IACxEskI,OAAO,CAACzuO,SAAS,GAAG;AACxB,iBAAiB4pB,IAAI;AACrB,mBAAmB2M,MAAM;AACzB,qBAAqBg4M,QAAQ;AAC7B,oBAAoBtX,OAAO;AAC3B,KAAK;IAED,MAAMlD,SAAS,GAAGrtN,KAAK,CAACxD,KAAK,CAAC;MAC5B8B,KAAK,EAAE,aAAa;MACpBrB,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEU,CAAC,IAAI;QACb40H,QAAQ,CAAC94H,UAAU,GAAGkE,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACtC;IACF,CAAC,CAAC;IACF,MAAMs7N,sBAAsB,GAAGr5N,KAAK,CAACyB,aAAa,CAAC;MACjD3E,IAAI,EAAE,oCAAoC;MAC1CkB,QAAQ,EAAEU,CAAC,IAAI;QACb40H,QAAQ,CAACm7F,cAAc,GAAG/vN,CAAC,CAAC3E,MAAM,CAACiI,OAAO,GAAG,GAAG,GAAG,GAAG;MACxD;IACF,CAAC,CAAC;IACF,MAAMgmO,OAAO,GAAGzrO,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB,MAAM49M,YAAY,CAACwW,aAAa,CAAC;UAC/BrpL,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB,GAAGygF;QACL,CAAC,CAAC;QAEFpnH,KAAK,CAAC/S,IAAI,CAACysO,eAAe,CAAC;QAC3B15N,KAAK,CAAC9S,IAAI,CAACyzN,YAAY,CAAC;MAC1B;IACF,CAAC,CAAC;IACF,MAAMob,SAAS,GAAG1rO,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACdkO,KAAK,CAAC/S,IAAI,CAACysO,eAAe,CAAC;QAC3B15N,KAAK,CAAC9S,IAAI,CAACyzN,YAAY,CAAC;MAC1B;IACF,CAAC,CAAC;IAEF,MAAMnkL,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACouO,OAAO,CAAC;IAC5Bt/L,OAAO,CAAC9uC,WAAW,CAACquO,SAAS,CAAC;IAE9BrC,eAAe,CAAChsO,WAAW,CAACuS,MAAM,CAAC;IACnCy5N,eAAe,CAAChsO,WAAW,CAACmuO,OAAO,CAAC;IACpCnC,eAAe,CAAChsO,WAAW,CAACyzN,SAAS,CAAC;IACtCuY,eAAe,CAAChsO,WAAW,CAACy/N,sBAAsB,CAAC;IACnDuM,eAAe,CAAChsO,WAAW,CAAC8uC,OAAO,CAAC;IAEpCx8B,KAAK,CAAC9S,IAAI,CAACwsO,eAAe,CAAC;EAC7B;EACA,SAAS+B,aAAaA,CAACtjI,OAAO,EAAE;IAC9BpxD,SAAS,GAAG,CAAC,CAAC;IAEdoxD,OAAO,CAAC3qG,OAAO,CAAC+oD,GAAG,IAAI;MACrB,IAAI,CAACxP,SAAS,CAACwP,GAAG,CAACvlD,IAAI,CAAC,EAAE;QACxB+1C,SAAS,CAACwP,GAAG,CAACvlD,IAAI,CAAC,GAAG,EAAE;MAC1B;MAEA+1C,SAAS,CAACwP,GAAG,CAACvlD,IAAI,CAAC,CAACqK,IAAI,CAACk7C,GAAG,CAAC;IAC/B,CAAC,CAAC;IACFxP,SAAS,CAAC,SAAS,CAAC,CAACz/B,IAAI,CAAC,UAAUjU,CAAC,EAAEuU,CAAC,EAAE;MACxC,IAAIvU,CAAC,CAACm3G,WAAW,GAAG5iG,CAAC,CAAC4iG,WAAW,EAAE;QACjC,OAAO,CAAC,CAAC;MACX;MACA,IAAIn3G,CAAC,CAACm3G,WAAW,GAAG5iG,CAAC,CAAC4iG,WAAW,EAAE;QACjC,OAAO,CAAC;MACV;MACA,OAAO,CAAC;IACV,CAAC,CAAC;IAEF,IAAIzjE,SAAS,CAACs+K,SAAS,EAAE;MACvBt+K,SAAS,CAAC,WAAW,CAAC,CAACz/B,IAAI,CAAC,UAAUjU,CAAC,EAAEuU,CAAC,EAAE;QAC1C,IAAIvU,CAAC,CAACm3G,WAAW,GAAG5iG,CAAC,CAAC4iG,WAAW,EAAE;UACjC,OAAO,CAAC,CAAC;QACX;QACA,IAAIn3G,CAAC,CAACm3G,WAAW,GAAG5iG,CAAC,CAAC4iG,WAAW,EAAE;UACjC,OAAO,CAAC;QACV;QACA,OAAO,CAAC;MACV,CAAC,CAAC;IACJ;EACF;EACA;EACA,SAASkhH,4BAA4BA,CAACC,KAAK,EAAE;IAC3C,MAAMp5N,MAAM,GAAGN,QAAQ,CAAC3B,KAAK,CAAC;MAC5B8B,KAAK,EAAE,kBAAkB;MACzBrB,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,MAAMiC,IAAI,GAAG+zC,SAAS,CAAC6kL,OAAO,CAAC50N,GAAG,CAAC60N,EAAE,IAAI;MACvC,OAAO;QACLh6N,KAAK,EAAEg6N,EAAE,CAACC,WAAW;QACrBl7N,IAAI,EAAEi7N,EAAE,CAACrhH;MACX,CAAC;IACH,CAAC,CAAC;IAEFv4G,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,EAAE24N,KAAK,CAAC;IAEtC,OAAOp5N,MAAM;EACf;EACA,SAAS45N,8BAA8BA,CAAC6P,QAAQ,EAAE;IAChD,MAAMzpO,MAAM,GAAGN,QAAQ,CAAC3B,KAAK,CAAC;MAC5B8B,KAAK,EAAE,oBAAoB;MAC3BrB,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,IAAI,CAACg2C,SAAS,CAACs+K,SAAS,IAAIt+K,SAAS,CAACs+K,SAAS,CAAC19G,MAAM,GAAG,CAAC,EAAE,OAAOp1G,MAAM;IAEzE,MAAMS,IAAI,GAAG+zC,SAAS,CAACs+K,SAAS,CAAC5pN,MAAM,CAACwgO,IAAI,IAAI;MAC9C,OAAOA,IAAI,CAAC/P,YAAY,KAAK8P,QAAQ,GAAG,IAAI,GAAG,KAAK;IACtD,CAAC,CAAC,CAAChlO,GAAG,CAACi1N,EAAE,IAAI;MACX,OAAO;QACLp6N,KAAK,EAAEo6N,EAAE,CAACH,WAAW;QACrBl7N,IAAI,EAAEq7N,EAAE,CAACzhH,WAAW;QACpB94G,UAAU,EAAE,CAAC;UAAEE,GAAG,EAAE,qBAAqB;UAAEC,KAAK,EAAEo6N,EAAE,CAACC;QAAa,CAAC;MACrE,CAAC;IACH,CAAC,CAAC;IACFl5N,IAAI,CAAC49D,OAAO,CAAC;MACX/+D,KAAK,EAAE,EAAE;MACTjB,IAAI,EAAE;IACR,CAAC,CAAC;IAEFqB,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,EAAEgpO,QAAQ,CAAC;IAEzC,OAAOzpO,MAAM;EACf;EACA,SAAS65N,oBAAoBA,CAAA,EAAc;IAAA,IAAbzoM,MAAM,GAAAnsB,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,EAAE;IACvC,MAAMjF,MAAM,GAAGN,QAAQ,CAAC3B,KAAK,CAAC;MAC5B8B,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,MAAMiC,IAAI,GAAG+b,MAAM,CAACxJ,MAAM,CAAC4qN,YAAY,CAAC,CAACn5N,GAAG,CAACsX,CAAC,IAAI;MAChD,OAAO;QACLzc,KAAK,EAAEyc,CAAC,CAACk3M,6BAA6B;QACtC50N,IAAI,EAAE,GAAG0d,CAAC,CAAC+9M,iBAAiB,IAAI/9M,CAAC,CAACk3M,6BAA6B,EAAE;QACjE9zN,UAAU,EAAE,CAAC;UAAEE,GAAG,EAAE,cAAc;UAAEC,KAAK,EAAEyc,CAAC,CAAC+9M;QAAkB,CAAC;MAClE,CAAC;IACH,CAAC,CAAC;IACFr5N,IAAI,CAAC49D,OAAO,CAAC;MACX/+D,KAAK,EAAE,EAAE;MACTjB,IAAI,EAAE;IACR,CAAC,CAAC;IAEF,MAAM2wN,WAAW,GAAG59L,MAAM,IAAI3wB,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;IAC3C2vN,cAAc,GAAG2O,YAAY,CAAC5O,WAAW,CAAC;IAE1CtvN,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,EAAE2wB,MAAM,CAAC;IAEvC,OAAOpxB,MAAM;EACf;EACA,SAAS+5N,oBAAoBA,CAAA,EAAY;IAAA,IAAXttL,IAAI,GAAAxnC,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,EAAE;IACrC,MAAMjF,MAAM,GAAGN,QAAQ,CAAC3B,KAAK,CAAC;MAC5B8B,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,MAAMiC,IAAI,GAAG86H,YAAY,CAACu2F,OAAO,CAACrtN,GAAG,CAACu1N,EAAE,IAAI;MAC1C,OAAO;QACL16N,KAAK,EAAE06N,EAAE,CAACC,IAAI;QACd57N,IAAI,EAAE,GAAG27N,EAAE,CAACC,IAAI,IAAID,EAAE,CAACE,OAAO;MAChC,CAAC;IACH,CAAC,CAAC;IACFz5N,IAAI,CAAC49D,OAAO,CAAC;MACX/+D,KAAK,EAAE,EAAE;MACTjB,IAAI,EAAE;IACR,CAAC,CAAC;IAEFqB,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,EAAEgsC,IAAI,CAAC;IAErC,OAAOzsC,MAAM;EACf;EACA,SAASm6N,qBAAqBA,CAAA,EAAe;IAAA,IAAdC,OAAO,GAAAn1N,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,EAAE;IACzC,MAAMjF,MAAM,GAAGN,QAAQ,CAAC3B,KAAK,CAAC;MAC5B8B,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,MAAMiC,IAAI,GAAG,CACX;MAAEnB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC;IACvB;IACA;IACA;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,EACzB;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAI,CAAC,CAC1B;IAEDqB,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,EAAE25N,OAAO,CAAC;IAExC,OAAOp6N,MAAM;EACf;EACA,SAASq6N,iCAAiCA,CAAA,EAAe;IAAA,IAAdC,OAAO,GAAAr1N,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,EAAE;IACrD,MAAMjF,MAAM,GAAGN,QAAQ,CAAC3B,KAAK,CAAC;MAC5B8B,KAAK,EAAE,uBAAuB;MAC9BrB,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,MAAMiC,IAAI,GAAG86H,YAAY,CAACh/B,EAAE,CAAC93F,GAAG,CAAC83F,EAAE,IAAI;MACrC,OAAO;QACLj9F,KAAK,EAAEi9F,EAAE,CAAC9vD,IAAI;QACdpuC,IAAI,EAAE,GAAGk+F,EAAE,CAAC9vD,IAAI,IAAI8vD,EAAE,CAACg+H,WAAW;MACpC,CAAC;IACH,CAAC,CAAC;IACF,IAAI75N,UAAU,GAAG;MACfpB,KAAK,EAAE,EAAE;MACTjB,IAAI,EAAE;IACR,CAAC;IACDoC,IAAI,CAAC49D,OAAO,CAAC39D,UAAU,CAAC;IAExBhB,QAAQ,CAAC5E,QAAQ,CAACkF,MAAM,EAAES,IAAI,EAAE65N,OAAO,CAAC;IAExC,OAAOt6N,MAAM;EACf;EACA,SAASw6N,eAAeA,CAACzmM,SAAS,EAAEf,OAAO,EAAE;IAC3C,MAAMH,KAAK,GAAGtxB,KAAK,CAACxD,KAAK,CAAC;MACxB8B,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZa,KAAK,EAAEy0B;IACT,CAAC,CAAC;IACF,MAAMhB,GAAG,GAAGxxB,KAAK,CAACxD,KAAK,CAAC;MACtB8B,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZa,KAAK,EAAE0zB;IACT,CAAC,CAAC;IAEF,MAAMqpM,QAAQ,GAAG3+N,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9Co+N,QAAQ,CAAClhO,WAAW,CAAC03B,KAAK,CAAC;IAC3BwpM,QAAQ,CAAClhO,WAAW,CAAC43B,GAAG,CAAC;IAEzB,OAAO;MAAEspM,QAAQ;MAAExpM,KAAK;MAAEE;IAAI,CAAC;EACjC;EACA,SAAS0nM,cAAcA,CAAC3gN,IAAI,EAAE;IAC5B,MAAM80M,SAAS,GAAGrtN,KAAK,CAACxD,KAAK,CAAC;MAC5B8B,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBa,KAAK,EAAEwa;IACT,CAAC,CAAC;IAEF,OAAO80M,SAAS;EAClB;EACA,SAAS8L,oBAAoBA,CAAC5gN,IAAI,EAAE;IAClC,MAAM80M,SAAS,GAAGrtN,KAAK,CAACxD,KAAK,CAAC;MAC5B8B,KAAK,EAAE,aAAa;MACpBrB,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBa,KAAK,EAAEwa;IACT,CAAC,CAAC;IAEF,OAAO80M,SAAS;EAClB;EACA,SAAS+L,mBAAmBA,CAAA,EAAG;IAC7B,MAAMC,sBAAsB,GAAGr5N,KAAK,CAACyB,aAAa,CAAC;MACjD3E,IAAI,EAAE;IACR,CAAC,CAAC;IAEF,OAAOu8N,sBAAsB;EAC/B;EACA,SAASC,eAAeA,CAACC,MAAM,EAAE;IAC/B,MAAMz8N,IAAI,GAAGy8N,MAAM,GAAG,QAAQ,GAAG,MAAM;IACvC,MAAMnvL,GAAG,GAAG7tC,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI;MACJG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IAEF,OAAOktC,GAAG;EACZ;EACA,SAASovL,iBAAiBA,CAAA,EAAG;IAC3B,MAAMpvL,GAAG,GAAG7tC,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IAEF,OAAOktC,GAAG;EACZ;EACA,SAASg+L,kBAAkBA,CAAA,EAAG;IAC5B,MAAMh+L,GAAG,GAAG7tC,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,iBAAiB;MACvBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IAEF,OAAOktC,GAAG;EACZ;EACA,SAASywL,yBAAyBA,CAACl+F,SAAS,EAAE0rG,oBAAoB,EAAE;IAClE,IAAIxO,cAAc,GAAGwO,oBAAoB,CAAC/qN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvD,MAAMy8M,UAAU,GAAGF,cAAc,CAACv8M,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM08M,UAAU,GAAGntM,IAAI,CAAC5B,WAAW,CAAC4uM,cAAc,CAACv8M,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjEu8M,cAAc,GAAG,GAAGE,UAAU,IAAIC,UAAU,IAAIqO,oBAAoB,CAAC/qN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;IACpF,MAAM28M,cAAc,GAAGoO,oBAAoB,CAAC/qN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM48M,UAAU,GAAG,GAAGD,cAAc,IAAIJ,cAAc,EAAE;IAExD,MAAM2D,OAAO,GAAGrhO,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3C8gO,OAAO,CAACxkO,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACxCskO,OAAO,CAAClkO,SAAS,GAAG,eAAeqjI,SAAS,sBAAsBu9F,UAAU,EAAE;IAE9E,OAAOsD,OAAO;EAChB;EACA,SAAS8K,mBAAmBA,CAAC3O,QAAQ,EAAEtU,WAAW,EAAE;IAClDwH,YAAY,GAAG3gN,KAAK,CAAC1P,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM+rO,OAAO,GAAG;MACd9Z,cAAc,EAAE,GAAG;MACnBj0N,UAAU,EAAE6qN,WAAW,CAAC7qN,UAAU,IAAI;IACxC,CAAC;IAED,IAAIm/N,QAAQ,EAAE;MACZn9D,UAAU,GAAGm9D,QAAQ,CAAC3B,WAAW,IAAI,EAAE;MACvCuQ,OAAO,CAACC,UAAU,GAAG7O,QAAQ,CAAC3B,WAAW,IAAI,EAAE;MAC/CuQ,OAAO,CAACE,MAAM,GAAG9O,QAAQ,CAACQ,sBAAsB,IAAI,EAAE;MACtDoO,OAAO,CAAC7lL,OAAO,GAAGi3K,QAAQ,CAACpB,iBAAiB,IAAI,EAAE;MAClDgQ,OAAO,CAACG,MAAM,GAAG/O,QAAQ,CAACU,WAAW,IAAI,EAAE;MAC3CkO,OAAO,CAAC1P,OAAO,GAAGc,QAAQ,CAACW,aAAa,IAAI,EAAE;MAC9CiO,OAAO,CAACvtI,EAAE,GAAG2+H,QAAQ,CAACY,2BAA2B,IAAI,EAAE;MACvDgO,OAAO,CAAC/1M,SAAS,GAAGmnM,QAAQ,CAACa,UAAU,IAAI,EAAE;MAC7C+N,OAAO,CAAC92M,OAAO,GAAGkoM,QAAQ,CAACc,QAAQ,IAAI,EAAE;MACzC8N,OAAO,CAAChwN,IAAI,GAAGohN,QAAQ,CAACe,uBAAuB,IAAI,EAAE;IACvD;IAEA,MAAM5N,uBAAuB,GAAG8K,4BAA4B,CAAC+B,QAAQ,CAAC3B,WAAW,CAAC;IAClF,MAAMjL,yBAAyB,GAAGsL,8BAA8B,CAACsB,QAAQ,CAACQ,sBAAsB,CAAC;IACjG,MAAMnN,eAAe,GAAGsL,oBAAoB,CAACqB,QAAQ,CAACS,6BAA6B,CAAC;IACpF,MAAMnN,eAAe,GAAGuL,oBAAoB,CAACmB,QAAQ,CAACU,WAAW,CAAC;IAClE,MAAMnN,gBAAgB,GAAG0L,qBAAqB,CAACe,QAAQ,CAACW,aAAa,CAAC;IACtE,MAAMnN,UAAU,GAAG2L,iCAAiC,CAACa,QAAQ,CAACY,2BAA2B,CAAC;IAC1F,MAAMnN,UAAU,GAAG6L,eAAe,CAACU,QAAQ,CAACa,UAAU,EAAEb,QAAQ,CAACc,QAAQ,CAAC;IAC1E,MAAMpN,SAAS,GAAG6L,cAAc,CAACS,QAAQ,CAACe,uBAAuB,CAAC;IAClE,MAAMC,eAAe,GAAGxB,oBAAoB,CAAC9T,WAAW,CAAC7qN,UAAU,CAAC;IACpE,MAAMmuO,cAAc,GAAGvP,mBAAmB,CAAC,CAAC;IAC5C,MAAM3sF,OAAO,GAAG6sF,eAAe,CAAC,IAAI,CAAC;IACrC,MAAMnxE,SAAS,GAAGqxE,iBAAiB,CAAC,CAAC;IACrC,MAAMoP,UAAU,GAAG/N,yBAAyB,CAAClB,QAAQ,CAACiB,oBAAoB,EAAEjB,QAAQ,CAACG,WAAW,CAAC;IAGjG,MAAM9E,eAAe,GAAGA,CAAA,KAAM;MAAA,IAAAhC,eAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA;MAC5B,MAAMM,YAAY,IAAAT,eAAA,GAAGtF,cAAc,cAAAsF,eAAA,uBAAdA,eAAA,CAAgBU,aAAa;MAClD,MAAMC,WAAW,IAAAV,gBAAA,GAAGvF,cAAc,cAAAuF,gBAAA,uBAAdA,gBAAA,CAAgBW,YAAY;MAChD,MAAMC,QAAQ,IAAAX,gBAAA,GAAGxF,cAAc,cAAAwF,gBAAA,uBAAdA,gBAAA,CAAgBY,SAAS;MAC1C,MAAMC,MAAM,IAAAZ,gBAAA,GAAGzF,cAAc,cAAAyF,gBAAA,uBAAdA,gBAAA,CAAgBa,0BAA0B;MAEzD,IAAIP,YAAY,KAAK,GAAG,EAAE;QACxBvG,gBAAgB,CAACl0N,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MAC7C,CAAC,MAAM;QACLi0N,gBAAgB,CAACl0N,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MAC1C;MACA,IAAIy6N,WAAW,KAAK,GAAG,EAAE;QACvB1G,eAAe,CAACj0N,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MAC5C,CAAC,MAAM;QACLg0N,eAAe,CAACj0N,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACzC;MACA,IAAI26N,QAAQ,KAAK,GAAG,EAAE;QACpBzG,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QAC3Cm0N,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MAC3C,CAAC,MAAM;QACLm0N,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACxCk0N,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACxC;MACA,IAAI66N,MAAM,KAAK,GAAG,EAAE;QAClB5G,UAAU,CAACn0N,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MACvC,CAAC,MAAM;QACLk0N,UAAU,CAACn0N,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACpC;IACF,CAAC;IACD,MAAMiwH,mBAAmB,GAAGA,CAAA,KAAM;MAAA,IAAAiqG,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAqV,iBAAA,EAAAC,iBAAA,EAAAC,iBAAA,EAAAC,iBAAA;MAChC,MAAMvV,YAAY,IAAAL,gBAAA,GAAG1F,cAAc,cAAA0F,gBAAA,uBAAdA,gBAAA,CAAgBM,aAAa;MAClD,MAAMC,WAAW,IAAAN,gBAAA,GAAG3F,cAAc,cAAA2F,gBAAA,uBAAdA,gBAAA,CAAgBO,YAAY;MAChD,MAAMC,QAAQ,IAAAP,gBAAA,GAAG5F,cAAc,cAAA4F,gBAAA,uBAAdA,gBAAA,CAAgBQ,SAAS;MAC1C,MAAMC,MAAM,IAAAR,gBAAA,GAAG7F,cAAc,cAAA6F,gBAAA,uBAAdA,gBAAA,CAAgBS,0BAA0B;MAEzD,MAAMC,gBAAgB,IAAAT,gBAAA,GAAG9F,cAAc,cAAA8F,gBAAA,uBAAdA,gBAAA,CAAgBU,iBAAiB;MAC1D,MAAMC,eAAe,IAAA0U,iBAAA,GAAGnb,cAAc,cAAAmb,iBAAA,uBAAdA,iBAAA,CAAgBzU,eAAe;MACvD,MAAMC,YAAY,IAAAyU,iBAAA,GAAGpb,cAAc,cAAAob,iBAAA,uBAAdA,iBAAA,CAAgBxU,cAAc;MACnD,MAAMC,UAAU,IAAAwU,iBAAA,GAAGrb,cAAc,cAAAqb,iBAAA,uBAAdA,iBAAA,CAAgBvU,8BAA8B;MACjE,MAAMC,YAAY,IAAAuU,iBAAA,GAAGtb,cAAc,cAAAsb,iBAAA,uBAAdA,iBAAA,CAAgBtU,cAAc;;MAEnD;MACA,IAAIjB,YAAY,KAAK,GAAG,EAAE;QACxBvG,gBAAgB,CAACl0N,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QAC3Ci0N,gBAAgB,CAACl0N,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QAC7C,IAAIg7N,gBAAgB,KAAK,GAAG,EAAE;UAC5B,IAAI,CAACsU,OAAO,CAAC1P,OAAO,IAAI0P,OAAO,CAAC1P,OAAO,KAAK,EAAE,EAAE;YAC9C3L,gBAAgB,CAACl0N,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;UACzC,CAAC,MAAM;YACLg0N,gBAAgB,CAACl0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;UAC5C;QACF,CAAC,MAAM;UACLi0N,gBAAgB,CAACl0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC5C;MACF,CAAC,MAAM;QACLi0N,gBAAgB,CAACl0N,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACxCg0N,gBAAgB,CAACl0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC5C;MACA;MACA,IAAIy6N,WAAW,KAAK,GAAG,EAAE;QACvB1G,eAAe,CAACj0N,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QAC1Cg0N,eAAe,CAACj0N,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QAC5C,IAAIk7N,eAAe,KAAK,GAAG,EAAE;UAC3B,IAAI,CAACoU,OAAO,CAACG,MAAM,IAAIH,OAAO,CAACG,MAAM,KAAK,EAAE,EAAE;YAC5Czb,eAAe,CAACj0N,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;UACxC,CAAC,MAAM;YACL+zN,eAAe,CAACj0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;UAC3C;QACF,CAAC,MAAM;UACLg0N,eAAe,CAACj0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC3C;MACF,CAAC,MAAM;QACLg0N,eAAe,CAACj0N,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACvC+zN,eAAe,CAACj0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3C;MACA;MACA,IAAI66N,MAAM,KAAK,GAAG,EAAE;QAClB5G,UAAU,CAACn0N,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QACrCk0N,UAAU,CAACn0N,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACvC,IAAIs7N,UAAU,KAAK,GAAG,EAAE;UACtB,IAAI,CAACgU,OAAO,CAACvtI,EAAE,IAAIutI,OAAO,CAACvtI,EAAE,KAAK,EAAE,EAAE;YACpCmyH,UAAU,CAACn0N,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;UACnC,CAAC,MAAM;YACLi0N,UAAU,CAACn0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;UACtC;QACF,CAAC,MAAM;UACLk0N,UAAU,CAACn0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACtC;MACF,CAAC,MAAM;QACLk0N,UAAU,CAACn0N,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAClCi0N,UAAU,CAACn0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACtC;MACA;MACA,IAAI26N,QAAQ,KAAK,GAAG,EAAE;QACpBzG,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QAC7Cm0N,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QAC3C,IAAIo7N,YAAY,KAAK,GAAG,EAAE;UACxB,IAAIkU,OAAO,CAAC/1M,SAAS,KAAK,EAAE,EAAE;YAC5B46L,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;UACzC,CAAC,MAAM;YACLk0N,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;UAC5C;UACA,IAAIsvO,OAAO,CAAC92M,OAAO,KAAK,EAAE,EAAE;YAC1B27L,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;UACvC,CAAC,MAAM;YACLk0N,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;UAC1C;QACF,CAAC,MAAM;UACLm0N,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;UAC1Cm0N,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC1C;MACF,CAAC,MAAM;QACLm0N,UAAU,CAAC97L,KAAK,CAACt4B,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC1Ck0N,UAAU,CAAC57L,GAAG,CAACx4B,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC1C;MACA;MACA,IAAIu7N,YAAY,KAAK,GAAG,EAAE;QACxB,IAAI,CAAC8T,OAAO,CAAChwN,IAAI,IAAIgwN,OAAO,CAAChwN,IAAI,KAAK,EAAE,EAAE;UACxC80M,SAAS,CAACr0N,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAClC,CAAC,MAAM;UACLm0N,SAAS,CAACr0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACrC;MACF,CAAC,MAAM;QACLo0N,SAAS,CAACr0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACrC;MAEA,MAAM26G,MAAM,GAAG,CAAC,GAAGi5G,YAAY,CAACrqN,gBAAgB,CAAC,QAAQ,CAAC,CAAC;MAC3D,IAAIoxG,MAAM,CAACn6G,MAAM,KAAK,CAAC,EAAE;QACvBgzI,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACtC,CAAC,MAAM;QACLwzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACnC;IACF,CAAC;IACD,MAAM27N,WAAW,GAAGA,CAAA,KAAM;MACxB,MAAMjhH,MAAM,GAAGz3G,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC;MAClD,IAAIoxG,MAAM,CAACn6G,MAAM,KAAK,CAAC,EAAE;QACvBgzI,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACtC,CAAC,MAAM;QACLwzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACnC;IACF,CAAC;IAED4zN,uBAAuB,CAACxwN,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MACtD6pO,OAAO,CAACC,UAAU,GAAG9pO,CAAC,CAAC3E,MAAM,CAACgE,KAAK;IACrC,CAAC,CAAC;IACFgvN,yBAAyB,CAACzwN,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MACxD6pO,OAAO,CAACE,MAAM,GAAG/pO,CAAC,CAAC3E,MAAM,CAACgE,KAAK;IACjC,CAAC,CAAC;IACFivN,eAAe,CAAC1wN,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC9C,MAAMC,cAAc,GAAGD,CAAC,CAAC3E,MAAM,CAAC0C,OAAO,CAACiC,CAAC,CAAC3E,MAAM,CAAC6E,aAAa,CAAC;MAC/D2pO,OAAO,CAAC7lL,OAAO,GAAG/jD,cAAc,CAAC3E,OAAO,CAAC0oD,OAAO;MAChDgrK,cAAc,GAAG2O,YAAY,CAAC19N,cAAc,CAACZ,KAAK,CAAC;MAEnD,IAAIY,cAAc,CAACZ,KAAK,KAAK,EAAE,EAAE;QAC/BivN,eAAe,CAACh0N,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACxC,CAAC,MAAM;QACL8zN,eAAe,CAACh0N,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC3C;MAEA47N,WAAW,CAAC,CAAC;MACb1rG,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IACF8jG,eAAe,CAAC3wN,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC9C6pO,OAAO,CAACG,MAAM,GAAGhqO,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MAC/BorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IACF+jG,gBAAgB,CAAC5wN,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC/C6pO,OAAO,CAAC1P,OAAO,GAAGn6N,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MAChCorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IACFgkG,UAAU,CAAC7wN,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MACzC6pO,OAAO,CAACvtI,EAAE,GAAGt8F,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MAC3BorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFikG,UAAU,CAAC97L,KAAK,CAACh1B,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC/C,IAAIA,CAAC,CAAC3E,MAAM,EAAE;QACZwuO,OAAO,CAAC/1M,SAAS,GAAG9zB,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACpC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IACFikG,UAAU,CAAC57L,GAAG,CAACl1B,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC7C,IAAIA,CAAC,CAAC3E,MAAM,EAAE;QACZwuO,OAAO,CAAC92M,OAAO,GAAG/yB,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MAClC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IACFkkG,SAAS,CAAC/wN,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MACxC6pO,OAAO,CAAChwN,IAAI,GAAG7Z,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MAC7BorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IACFwxG,eAAe,CAACr+N,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC9C6pO,OAAO,CAAC/tO,UAAU,GAAGkE,CAAC,CAAC3E,MAAM,CAACgE,KAAK;IACrC,CAAC,CAAC;IACF4qO,cAAc,CAACrsO,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC7C6pO,OAAO,CAAC9Z,cAAc,GAAG/vN,CAAC,CAAC3E,MAAM,CAACiI,OAAO,GAAG,GAAG,GAAG,GAAG;IACvD,CAAC,CAAC;IAEFyqI,OAAO,CAACnwI,gBAAgB,CAAC,OAAO,EAAE,MAAMoC,CAAC,IAAI;MAC3C;MACA,MAAMuqO,UAAU,GAAG;QACjB5a,QAAQ,EAAEr5G,kBAAkB;QAC5B+rG,WAAW,EAAE4Y,QAAQ,CAACC,YAAY;QAClCtL,UAAU,EAAEjJ,WAAW,CAACiJ,UAAU;QAClCC,OAAO,EAAE3kM,KAAK,CAAC+G,YAAY,CAACgpM,QAAQ,CAACuP,cAAc,CAAC5rN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClEolC,OAAO,EAAE6lL,OAAO,CAAC7lL,OAAO;QACxB8rK,QAAQ,EAAE3hM,IAAI,CAACub,uBAAuB,CAACmgM,OAAO,CAAChwN,IAAI,CAAC;QACpDm2M,UAAU,EAAE6Z,OAAO,CAACG,MAAM,KAAK,EAAE,GAAG,GAAG,GAAGH,OAAO,CAACG,MAAM;QACxD/Z,YAAY,EAAE4Z,OAAO,CAAC1P,OAAO,KAAK,EAAE,GAAG,GAAG,GAAG0P,OAAO,CAAC1P,OAAO;QAC5DprK,UAAU,EAAE86K,OAAO,CAACC,UAAU;QAC9B5Z,mBAAmB,EAAE2Z,OAAO,CAACE,MAAM,KAAK,EAAE,GAAG,CAAC,GAAGF,OAAO,CAACE,MAAM;QAC/D5Z,aAAa,EAAE0Z,OAAO,CAAC/1M,SAAS;QAChCs8L,WAAW,EAAEyZ,OAAO,CAAC92M,OAAO;QAC5Bs9L,WAAW,EAAEwZ,OAAO,CAACvtI;MACvB,CAAC;MACD4gH,YAAY,CAACuW,SAAS,CAAC8W,UAAU,EAAE,MAAM;QACvC/8N,KAAK,CAAC/S,IAAI,CAAC0zN,YAAY,CAAC;MAC1B,CAAC,CAAC;;MAEF;MACA,MAAMsc,YAAY,GAAG;QACnB9W,mBAAmB,EAAEhN,WAAW,CAACiJ,UAAU;QAC3C9zN,UAAU,EAAE+tO,OAAO,CAAC/tO,UAAU;QAC9BwkD,UAAU,EAAEg2D,kBAAkB;QAC9Bs9G,qBAAqB,EAAEqH,QAAQ,CAACuP,cAAc,CAAC5rN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5DmxM,cAAc,EAAE8Z,OAAO,CAAC9Z;MAC1B,CAAC;MACD,MAAM7S,YAAY,CAACwW,aAAa,CAAC;QAC/BrpL,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB,GAAGs2L;MACL,CAAC,CAAC;MAEF,MAAMtF,2BAA2B,CAAC,CAAC;MACnC6D,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IACFv/E,SAAS,CAAC7rJ,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACvCk9M,YAAY,CAACmX,UAAU,CAAC1N,WAAW,CAACiJ,UAAU,EAAEt5G,kBAAkB,EAAEsS,YAAY,EAAE,YAAY;QAC5F,MAAMu8G,2BAA2B,CAAC,CAAC;QACnC6D,mBAAmB,CAAC,CAAC;QACrBx7N,KAAK,CAAC/S,IAAI,CAAC0zN,YAAY,CAAC;MAC1B,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,CAACtiN,CAAC,CAACC,OAAO,CAACojC,cAAc,EAAE;MAC7B+sL,eAAe,CAAC3hO,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACzCyvO,cAAc,CAAC3vO,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC1C;IAEA,MAAMwvC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC;IAC5B/jG,OAAO,CAAC9uC,WAAW,CAACuuJ,SAAS,CAAC;IAE9B0kE,YAAY,CAACjzN,WAAW,CAACkzN,uBAAuB,CAAC;IACjD,IAAI75K,SAAS,CAACs+K,SAAS,EAAE1E,YAAY,CAACjzN,WAAW,CAACmzN,yBAAyB,CAAC;IAC5EF,YAAY,CAACjzN,WAAW,CAACozN,eAAe,CAAC;IACzCH,YAAY,CAACjzN,WAAW,CAACqzN,eAAe,CAAC;IACzCJ,YAAY,CAACjzN,WAAW,CAACszN,gBAAgB,CAAC;IAE1C,IAAI3iN,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC9CoiN,YAAY,CAACjzN,WAAW,CAACuzN,UAAU,CAAC;MACpCN,YAAY,CAACjzN,WAAW,CAACwzN,UAAU,CAAC0N,QAAQ,CAAC;IAC/C;IAEAjO,YAAY,CAACjzN,WAAW,CAACyzN,SAAS,CAAC;IACnCR,YAAY,CAACjzN,WAAW,CAAC+gO,eAAe,CAAC;IACzC9N,YAAY,CAACjzN,WAAW,CAAC+uO,cAAc,CAAC;IACxC9b,YAAY,CAACjzN,WAAW,CAAC8uC,OAAO,CAAC;IACjCmkL,YAAY,CAACjzN,WAAW,CAACgvO,UAAU,CAAC;IAEpC18N,KAAK,CAAC9S,IAAI,CAACyzN,YAAY,CAAC;IAExBmI,eAAe,CAAC,CAAC;IAEjB;;IAEA;IACA,IACE2E,QAAQ,IACRA,QAAQ,CAACiB,oBAAoB,IAC7BjB,QAAQ,CAACiB,oBAAoB,CAACj3L,WAAW,CAAC,CAAC,KAAKp5B,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC/F,WAAW,CAAC,CAAC,EAC9E;MACAmpL,uBAAuB,CAAC9zN,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACjD6zN,yBAAyB,CAAC/zN,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACnD8zN,eAAe,CAACh0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACzCg0N,gBAAgB,CAACl0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC1C+zN,eAAe,CAACj0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACzCi0N,UAAU,CAACn0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACpCk0N,UAAU,CAACp0N,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACpCm0N,SAAS,CAACjxN,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC;MAC/EqvI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACjCivJ,SAAS,CAACnvJ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACnCwvC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IACjC;EACF;EACA,SAASkwO,gBAAgBA,CAAC3zB,OAAO,EAAE;IACjC,MAAM4zB,eAAe,GAAG,IAAI5+K,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;MACvD+tM,YAAY,CAACwgB,uBAAuB,CAAC3mB,OAAO,CAAC6uB,UAAU,EAAEjgI,OAAO,IAAI;QAClEotH,mBAAmB,GAAG,CAAC,CAAC;QACxB4K,YAAY,GAAG,CAAC,CAAC;QAEjBh4H,OAAO,CAAC3qG,OAAO,CAACy1E,EAAE,IAAI;UACpB,IAAI7wE,KAAK,GAAG6wE,EAAE,CAACuiJ,6BAA6B;UAC5C,IAAI,CAACD,mBAAmB,CAACnzN,KAAK,CAAC,EAAE;YAC/BmzN,mBAAmB,CAACnzN,KAAK,CAAC,GAAG6wE,EAAE;UACjC;QACF,CAAC,CAAC;QAEFl0D,MAAM,CAAC8B,IAAI,CAAC00M,mBAAmB,CAAC,CAC7Bj+M,IAAI,CAAC,CAAC,CACN9Z,OAAO,CAACoE,GAAG,IAAI;UACdu+N,YAAY,CAACv+N,GAAG,CAAC,GAAG2zN,mBAAmB,CAAC3zN,GAAG,CAAC;QAC9C,CAAC,CAAC;QAEJ4sD,OAAO,CAAC,SAAS,CAAC;MACpB,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM4+K,WAAW,GAAG,IAAI7+K,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;MACnD+tM,YAAY,CAACugB,oBAAoB,CAAC1mB,OAAO,CAAC6Y,UAAU,EAAEjqH,OAAO,IAAI;QAC/DygI,WAAW,GAAGzgI,OAAO;QACrB35C,OAAO,CAAC,SAAS,CAAC;MACpB,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFD,OAAO,CAACmrF,GAAG,CAAC,CAACyzF,eAAe,EAAEC,WAAW,CAAC,CAAC,CAACr+G,IAAI,CAAC,YAAY;MAC3Dq9G,mBAAmB,CAACxD,WAAW,CAAC,CAAC,CAAC,EAAErvB,OAAO,CAAC;IAC9C,CAAC,CAAC;EACJ;;EAEA;EACA;EACA;EACA,SAAS8zB,0BAA0BA,CAAA,EAAG;IACpC,MAAMv/M,MAAM,GAAG,IAAI9W,IAAI,CAAC,GAAGmyN,gBAAgB,CAACC,EAAE,WAAW,CAAC;IAC1D,MAAMjpF,QAAQ,GAAG,IAAInpI,IAAI,CAAC,GAAGmyN,gBAAgB,CAACxyN,IAAI,WAAW,CAAC;IAE9D,MAAM22N,WAAW,GAAG5/M,KAAK,CAACqD,cAAc,CAACjD,MAAM,CAAC;IAChD,MAAMy/M,aAAa,GAAG7/M,KAAK,CAACqD,cAAc,CAACovH,QAAQ,CAAC;IACpD,MAAMqtF,SAAS,GAAG9/M,KAAK,CAAC8F,SAAS,CAAC85M,WAAW,CAAC,CAAClsN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAMqsN,WAAW,GAAG//M,KAAK,CAAC8F,SAAS,CAAC+5M,aAAa,CAAC,CAACnsN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEhE,QAAQ7I,SAAS;MACf,KAAK0xN,OAAO;QAAE;UACZX,UAAU,GAAG57M,KAAK,CAAC4D,gBAAgB,CAACxD,MAAM,EAAEqyH,QAAQ,CAAC;UACrD;QACF;MACA,KAAK+pF,IAAI;QAAE;UACTZ,UAAU,GAAG57M,KAAK,CAAC4D,gBAAgB,CAACxD,MAAM,EAAEqyH,QAAQ,CAAC;UACrDmpF,UAAU,GAAGA,UAAU,GAAG,EAAE;UAC5B;QACF;MACA,KAAKa,GAAG;QAAE;UACRb,UAAU,GAAG57M,KAAK,CAAC4D,gBAAgB,CAACxD,MAAM,EAAEqyH,QAAQ,CAAC;UACrD;QACF;MACA,KAAKiqF,IAAI;QAAE;UACTd,UAAU,GAAG57M,KAAK,CAACqE,iBAAiB,CAACjE,MAAM,EAAEqyH,QAAQ,CAAC;UACtD;QACF;MACA,KAAKkqF,KAAK;QAAE;UACVf,UAAU,GAAG57M,KAAK,CAACwE,kBAAkB,CAACpE,MAAM,EAAEqyH,QAAQ,CAAC;UACvD;QACF;MACA,KAAKmqF,IAAI;QAAE;UACThB,UAAU,GAAG57M,KAAK,CAAC6E,iBAAiB,CAACzE,MAAM,EAAEqyH,QAAQ,CAAC;UACtD;QACF;IACF;EACF;EACA,SAASutF,eAAeA,CAAA,EAAG;IACzBnE,aAAa,CAAC1nO,KAAK,GAAGynO,UAAU;EAClC;EACA,SAASqE,qBAAqBA,CAAA,EAAG;IAC/B9uF,aAAa,CAACh9I,KAAK,GAAGsnO,gBAAgB,CAACxyN,IAAI;IAC3CmoI,WAAW,CAACj9I,KAAK,GAAGsnO,gBAAgB,CAACC,EAAE;EACzC;EACA,SAASwE,iBAAiBA,CAAA,EAAG;IAC3BC,iBAAiB,CAACpmN,WAAW,GAAG,GAAG4hN,QAAQ,OAAO;IAClDyE,aAAa,CAACrmN,WAAW,GAAG,GAAG4hN,QAAQ,OAAO;IAC9CsE,qBAAqB,CAAC,CAAC;IACvBD,eAAe,CAAC,CAAC;EACnB;EACA,SAASK,gBAAgBA,CAAA,EAAG;IAC1B,MAAMC,gBAAgB,GAAGzhH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAmB,CAAC,CAAC;IACjFsmI,iBAAiB,GAAGthH,IAAI,CAAC/rH,aAAa,CAAC,QAAQ,EAAE;MAC/C+mG,KAAK,EAAE,QAAQ;MACf9mG,EAAE,EAAE,eAAe;MACnBG,IAAI,EAAE,GAAGyoO,QAAQ;IACnB,CAAC,CAAC;IACF,MAAM4E,kBAAkB,GAAG1hH,IAAI,CAAC/rH,aAAa,CAAC,QAAQ,EAAE;MAAEC,EAAE,EAAE,gBAAgB;MAAEG,IAAI,EAAE;IAAa,CAAC,CAAC;IACrGotO,gBAAgB,CAACtwO,WAAW,CAACmwO,iBAAiB,CAAC;IAC/CG,gBAAgB,CAACtwO,WAAW,CAACuwO,kBAAkB,CAAC;IAEhD,MAAMC,iBAAiB,GAAG3hH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ;IAAE,CAAC,CAAC;IACtFumI,aAAa,GAAGvhH,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAAEirB,GAAG,EAAE,UAAU;MAAE7qB,IAAI,EAAE,GAAGyoO,QAAQ;IAAQ,CAAC,CAAC;IAC1FE,aAAa,GAAGh9G,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAC1CC,EAAE,EAAE,UAAU;MACdO,IAAI,EAAE,QAAQ;MACd+E,IAAI,EAAE,UAAU;MAChBlE,KAAK,EAAEynO;IACT,CAAC,CAAC;IACF4E,iBAAiB,CAACxwO,WAAW,CAACowO,aAAa,CAAC;IAC5CI,iBAAiB,CAACxwO,WAAW,CAAC6rO,aAAa,CAAC;IAE5C,MAAM4E,kBAAkB,GAAG5hH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE,CAAC,WAAW;IAAE,CAAC,CAAC;IAC9E,MAAM6mI,mBAAmB,GAAG7hH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,CAAC;IACrD,MAAM6tO,mBAAmB,GAAG9hH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,CAAC;IACrD2tO,kBAAkB,CAACzwO,WAAW,CAAC0wO,mBAAmB,CAAC;IACnDD,kBAAkB,CAACzwO,WAAW,CAAC2wO,mBAAmB,CAAC;IAEnD,MAAMC,aAAa,GAAG/hH,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAAEirB,GAAG,EAAE,UAAU;MAAE7qB,IAAI,EAAE;IAAQ,CAAC,CAAC;IACrFi+I,aAAa,GAAGtyB,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAC1CC,EAAE,EAAE,UAAU;MACdO,IAAI,EAAE,MAAM;MACZ+E,IAAI,EAAE,UAAU;MAChBlE,KAAK,EAAEsnO,gBAAgB,CAACxyN;IAC1B,CAAC,CAAC;IACFy3N,mBAAmB,CAAC1wO,WAAW,CAAC4wO,aAAa,CAAC;IAC9CF,mBAAmB,CAAC1wO,WAAW,CAACmhJ,aAAa,CAAC;IAE9C,MAAM0vF,WAAW,GAAGhiH,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAAEirB,GAAG,EAAE,QAAQ;MAAE7qB,IAAI,EAAE;IAAM,CAAC,CAAC;IAC/Ek+I,WAAW,GAAGvyB,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MACxCC,EAAE,EAAE,QAAQ;MACZO,IAAI,EAAE,MAAM;MACZ+E,IAAI,EAAE,QAAQ;MACdlE,KAAK,EAAEsnO,gBAAgB,CAACC;IAC1B,CAAC,CAAC;IACFiF,mBAAmB,CAAC3wO,WAAW,CAAC6wO,WAAW,CAAC;IAC5CF,mBAAmB,CAAC3wO,WAAW,CAACohJ,WAAW,CAAC;IAE5C,MAAMrmC,QAAQ,GAAG8T,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAa,CAAC,CAAC;IACnEkR,QAAQ,CAAC/6G,WAAW,CAACswO,gBAAgB,CAAC;IACtCv1H,QAAQ,CAAC/6G,WAAW,CAACwwO,iBAAiB,CAAC;IACvCz1H,QAAQ,CAAC/6G,WAAW,CAACywO,kBAAkB,CAAC;IAExCH,gBAAgB,CAAC5tO,gBAAgB,CAAC,OAAO,EAAE,MAAMoC,CAAC,IAAI;MACpD,IAAIA,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACzC;MACF;MAEA,MAAMmoN,QAAQ,GAAGt6G,QAAQ,CAACv4G,aAAa,CAAC,WAAW,CAAC;MACpD,MAAMsuO,SAAS,GAAG/1H,QAAQ,CAACv4G,aAAa,CAAC,YAAY,CAAC;MAEtD,IAAIsC,CAAC,CAAC3E,MAAM,KAAKgwO,iBAAiB,EAAE;QAClCrE,gBAAgB,GAAG,IAAI;QACvBzW,QAAQ,CAACj2N,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAChC6wO,iBAAiB,CAAC/wO,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACzCwxO,SAAS,CAAC1xO,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QACpCkxO,kBAAkB,CAACnxO,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QAE7C,IAAIosO,gBAAgB,CAACC,EAAE,KAAKh+G,YAAY,EAAE;UACxCqjH,WAAW,CAAC,CAAC;UACbb,iBAAiB,CAAC,CAAC;UAEnB,MAAMjG,2BAA2B,CAAC,CAAC;UAEnC6D,mBAAmB,CAAC,CAAC;QACvB;QAEA;MACF;MAEAhC,gBAAgB,GAAG,KAAK;MACxBgF,SAAS,CAAC1xO,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACjCixO,kBAAkB,CAACnxO,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MAC1C+1N,QAAQ,CAACj2N,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MACnC8wO,iBAAiB,CAAC/wO,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC9C,CAAC,CAAC;IAEF07G,QAAQ,CAACr4G,gBAAgB,CAAC,QAAQ,EAAE,MAAMoC,CAAC,IAAI;MAC7C,IAAIA,CAAC,CAAC3E,MAAM,CAAC4C,EAAE,KAAK,UAAU,EAAE;QAC9B6oO,UAAU,GAAG9mO,CAAC,CAAC3E,MAAM,CAACgE,KAAK;QAC3BsnO,gBAAgB,CAACC,EAAE,GAAGh+G,YAAY;QAElC,QAAQ7yG,SAAS;UACf,KAAK0xN,OAAO;YAAE;cACZ,MAAMhhM,OAAO,GAAGvb,KAAK,CAAC0C,OAAO,CAAC,IAAIpZ,IAAI,CAAC,GAAGmyN,gBAAgB,CAACC,EAAE,WAAW,CAAC,EAAEE,UAAU,CAAC;cACtFH,gBAAgB,CAACxyN,IAAI,GAAG+W,KAAK,CAAC8F,SAAS,CAACyV,OAAO,CAAC,CAAC7nB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;cAC9D;YACF;UACA,KAAK8oN,IAAI;YAAE;cACT,MAAMjhM,OAAO,GAAGvb,KAAK,CAACyC,QAAQ,CAAC,IAAInZ,IAAI,CAAC,GAAGmyN,gBAAgB,CAACC,EAAE,WAAW,CAAC,EAAEE,UAAU,CAAC;cACvFH,gBAAgB,CAACxyN,IAAI,GAAG+W,KAAK,CAAC8F,SAAS,CAACyV,OAAO,CAAC,CAAC7nB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;cAC9D;YACF;UACA,KAAK+oN,GAAG;YAAE;cACR,MAAMlhM,OAAO,GAAGvb,KAAK,CAAC0C,OAAO,CAAC,IAAIpZ,IAAI,CAAC,GAAGmyN,gBAAgB,CAACC,EAAE,WAAW,CAAC,EAAEE,UAAU,CAAC;cACtFH,gBAAgB,CAACxyN,IAAI,GAAG+W,KAAK,CAAC8F,SAAS,CAACyV,OAAO,CAAC,CAAC7nB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;cAC9D;YACF;UACA,KAAKgpN,IAAI;YAAE;cACT,MAAMnhM,OAAO,GAAGvb,KAAK,CAAC2C,QAAQ,CAAC,IAAIrZ,IAAI,CAAC,GAAGmyN,gBAAgB,CAACC,EAAE,WAAW,CAAC,EAAEE,UAAU,CAAC;cACvFH,gBAAgB,CAACxyN,IAAI,GAAG+W,KAAK,CAAC8F,SAAS,CAACyV,OAAO,CAAC,CAAC7nB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;cAC9D;YACF;UACA,KAAKipN,KAAK;YAAE;cACV,MAAMphM,OAAO,GAAGvb,KAAK,CAAC4C,SAAS,CAAC,IAAItZ,IAAI,CAAC,GAAGmyN,gBAAgB,CAACC,EAAE,WAAW,CAAC,EAAEE,UAAU,CAAC;cACxFH,gBAAgB,CAACxyN,IAAI,GAAG+W,KAAK,CAAC8F,SAAS,CAACyV,OAAO,CAAC,CAAC7nB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;cAC9D;YACF;UACA,KAAKkpN,IAAI;YAAE;cACT,MAAMrhM,OAAO,GAAGvb,KAAK,CAAC6C,QAAQ,CAAC,IAAIvZ,IAAI,CAAC,GAAGmyN,gBAAgB,CAACC,EAAE,WAAW,CAAC,EAAEE,UAAU,CAAC;cACvFH,gBAAgB,CAACxyN,IAAI,GAAG+W,KAAK,CAAC8F,SAAS,CAACyV,OAAO,CAAC,CAAC7nB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;cAC9D;YACF;QACF;QAEAusN,qBAAqB,CAAC,CAAC;QACvB,MAAMhG,2BAA2B,CAAC,CAAC;QACnC6D,mBAAmB,CAAC,CAAC;MACvB;MACA,IAAIhpO,CAAC,CAAC3E,MAAM,CAAC4C,EAAE,KAAK,UAAU,EAAE;QAC9B0oO,gBAAgB,CAACxyN,IAAI,GAAGnU,CAAC,CAAC3E,MAAM,CAACgE,KAAK;QACtCwrO,0BAA0B,CAAC,CAAC;QAC5BK,eAAe,CAAC,CAAC;QACjB,MAAM/F,2BAA2B,CAAC,CAAC;QACnC6D,mBAAmB,CAAC,CAAC;MACvB;MACA,IAAIhpO,CAAC,CAAC3E,MAAM,CAAC4C,EAAE,KAAK,QAAQ,EAAE;QAC5B0oO,gBAAgB,CAACC,EAAE,GAAG5mO,CAAC,CAAC3E,MAAM,CAACgE,KAAK;QACpCwrO,0BAA0B,CAAC,CAAC;QAC5BK,eAAe,CAAC,CAAC;QACjB,MAAM/F,2BAA2B,CAAC,CAAC;QACnC6D,mBAAmB,CAAC,CAAC;MACvB;IACF,CAAC,CAAC;IAEF,OAAO/yH,QAAQ;EACjB;EACA;EACA,SAASi2H,yBAAyBA,CAAA,EAAG;IACnC,MAAMj4H,oBAAoB,GAAG8V,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAiB,CAAC,CAAC;IACnF,MAAMonI,UAAU,GAAGZ,gBAAgB,CAAC,CAAC;IACrC,MAAMa,cAAc,GAAGriH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAiB,CAAC,CAAC;IAC7E,MAAM/6D,OAAO,GAAG+/E,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAgB,CAAC,CAAC;IACrEwhI,WAAW,GAAGx8G,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAyB,CAAC,CAAC;IAC5EyhI,WAAW,GAAGz8G,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAyB,CAAC,CAAC;IAE5EoH,SAAS,GAAGtuG,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,cAAc;MAC1BQ,QAAQ,EAAEA,CAAA,KAAM;QACd+0G,eAAe,CAAC,KAAK,CAAC;MACxB;IACF,CAAC,CAAC;IAEF6/F,UAAU,GAAGr2M,MAAM,CAACC,KAAK,CAAC;MACxBG,EAAE,EAAE,YAAY;MAChBG,IAAI,EAAE,UAAU;MAChBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QACd+0G,eAAe,CAAC,YAAY,CAAC;MAC/B;IACF,CAAC,CAAC;IACF8/F,eAAe,GAAGt2M,MAAM,CAACC,KAAK,CAAC;MAC7BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QACditG,WAAW,CAAC,YAAY,CAAC;MAC3B;IACF,CAAC,CAAC;IAEFwyG,cAAc,GAAGlhN,MAAM,CAACC,KAAK,CAAC;MAC5BG,EAAE,EAAE,gBAAgB;MACpBG,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QACd+0G,eAAe,CAAC,gBAAgB,CAAC;MACnC;IACF,CAAC,CAAC;IACF2qG,mBAAmB,GAAGnhN,MAAM,CAACC,KAAK,CAAC;MACjCI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QACditG,WAAW,CAAC,gBAAgB,CAAC;MAC/B;IACF,CAAC,CAAC;IAEFviE,OAAO,CAAC9uC,WAAW,CAACixG,SAAS,CAAC;IAE9Bo6H,WAAW,CAACrrO,WAAW,CAACg5M,UAAU,CAAC;IACnCqyB,WAAW,CAACrrO,WAAW,CAACi5M,eAAe,CAAC;IAExCqyB,WAAW,CAACtrO,WAAW,CAAC6jN,cAAc,CAAC;IACvCynB,WAAW,CAACtrO,WAAW,CAAC8jN,mBAAmB,CAAC;IAE5CotB,cAAc,CAAClxO,WAAW,CAAC8uC,OAAO,CAAC;IACnCoiM,cAAc,CAAClxO,WAAW,CAACqrO,WAAW,CAAC;IACvC6F,cAAc,CAAClxO,WAAW,CAACsrO,WAAW,CAAC;IACvCvyH,oBAAoB,CAAC/4G,WAAW,CAACkxO,cAAc,CAAC;IAChDn4H,oBAAoB,CAAC/4G,WAAW,CAACixO,UAAU,CAAC;IAE5C,OAAOl4H,oBAAoB;EAC7B;EACA,SAASutD,0BAA0BA,CAAA,EAAmC;IAAA,IAAlCz5C,OAAO,GAAA/iH,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,GAAG;IAAA,IAAEqwJ,WAAW,GAAArwJ,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,GAAG;IAClE,IAAI+iH,OAAO,KAAK,GAAG,IAAIA,OAAO,KAAK,KAAK,EAAE;MACxCw+G,WAAW,CAACjsO,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IACrC,CAAC,MAAM;MACL+rO,WAAW,CAACjsO,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MACtC25M,UAAU,CAACjvL,WAAW,GAAG,YAAY8iG,OAAO,EAAE;IAChD;IAEA,IAAIstC,WAAW,KAAK,GAAG,IAAIA,WAAW,KAAK,KAAK,EAAE;MAChDmxE,WAAW,CAAClsO,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IACrC,CAAC,MAAM;MACLgsO,WAAW,CAAClsO,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MACtCwkN,cAAc,CAAC95L,WAAW,GAAG,iBAAiBowI,WAAW,EAAE;IAC7D;EACF;EACA;EACA,SAASrgD,WAAWA,CAAA,EAAG;IACrBwsD,0BAA0B,CAACilE,gBAAgB,CAACroO,IAAI,EAAEsoO,oBAAoB,CAACtoO,IAAI,CAAC;IAE5E4qO,mBAAmB,CAAC,CAAC;EACvB;EACA,eAAeqD,kBAAkBA,CAAA,EAAG;IAAA,IAAAC,qBAAA;IAClC,MAAMC,SAAS,GAAG9sO,QAAQ,CAAC3B,KAAK,CAAC;MAC/B4B,UAAU,EAAE,iBAAiB;MAC7BE,KAAK,EAAE,cAAc;MACrBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF,MAAMW,IAAI,GAAG6lO,SAAS,CAAC7hO,GAAG,CAAChG,IAAI,IAAI;MACjC,OAAO;QACLa,KAAK,EAAEb,IAAI,CAACkmO,UAAU;QACtBtmO,IAAI,EAAEI,IAAI,CAACguO;MACb,CAAC;IACH,CAAC,CAAC;IACFhsO,IAAI,CAAC49D,OAAO,CAAC;MAAE/+D,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IAEzC,MAAMw5H,YAAY,GAAG,EAAA00G,qBAAA,GAAA5F,oBAAoB,cAAA4F,qBAAA,uBAApBA,qBAAA,CAAsBjtO,KAAK,KAAI,GAAG;IACvDI,QAAQ,CAAC5E,QAAQ,CAAC0xO,SAAS,EAAE/rO,IAAI,EAAEo3H,YAAY,CAAC;IAEhD,OAAO20G,SAAS;EAClB;EACA,SAASE,oBAAoBA,CAAA,EAAG;IAAA,IAAAC,iBAAA;IAC9B,MAAMC,QAAQ,GAAGltO,QAAQ,CAAC3B,KAAK,CAAC;MAC9B8B,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF,MAAMW,IAAI,GAAG,CACX;MAAEnB,KAAK,EAAE,KAAK;MAAEjB,IAAI,EAAE;IAAM,CAAC,EAC7B;MAAEiB,KAAK,EAAE,UAAU;MAAEjB,IAAI,EAAE;IAAW,CAAC,EACvC;MAAEiB,KAAK,EAAE,YAAY;MAAEjB,IAAI,EAAE;IAAa,CAAC,CAC5C;IAED,MAAMw5H,YAAY,GAAG,EAAA80G,iBAAA,GAAAjG,gBAAgB,cAAAiG,iBAAA,uBAAhBA,iBAAA,CAAkBrtO,KAAK,KAAI,KAAK;IACrDI,QAAQ,CAAC5E,QAAQ,CAAC8xO,QAAQ,EAAEnsO,IAAI,EAAEo3H,YAAY,CAAC;IAE/C,OAAO+0G,QAAQ;EACjB;EACA,SAASpgI,WAAWA,CAAC6qH,WAAW,EAAE;IAChC,IAAIA,WAAW,IAAI,YAAY,EAAE;MAC/BqP,gBAAgB,CAACroO,IAAI,GAAG,KAAK;MAC7BqoO,gBAAgB,CAACpnO,KAAK,GAAG,KAAK;IAChC;IACA,IAAI+3N,WAAW,IAAI,gBAAgB,EAAE;MACnCsP,oBAAoB,CAACtoO,IAAI,GAAG,KAAK;MACjCsoO,oBAAoB,CAACrnO,KAAK,GAAG,GAAG;IAClC;IACA21G,WAAW,CAAC,CAAC;EACf;EACA,eAAeX,eAAeA,CAAC/G,MAAM,EAAE;IACrC,IAAIs/H,cAAc,EAAEC,WAAW;IAE/BllI,WAAW,GAAGn6F,KAAK,CAAC1P,KAAK,CAAC;MACxBiQ,aAAa,EAAEA,CAAA,KAAM,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM0/M,eAAe,GAAGgf,oBAAoB,CAAC,CAAC;IAC9C,MAAMK,aAAa,GAAG,MAAMT,kBAAkB,CAAC,CAAC;IAChD,MAAM3e,WAAW,GAAG7vN,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IACFkvN,WAAW,CAACpzN,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;IAEtCizN,eAAe,CAAC7vN,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAClD,MAAM6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACvE0sO,cAAc,GAAG3sO,cAAc;IACjC,CAAC,CAAC;IACF6sO,aAAa,CAAClvO,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD,MAAM6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACvE2sO,WAAW,GAAG5sO,cAAc;IAC9B,CAAC,CAAC;IACFytN,WAAW,CAAC9vN,gBAAgB,CAAC,OAAO,EAAE,MAAM;MAC1C6oO,gBAAgB,GAAGmG,cAAc,IAAInG,gBAAgB;MACrDC,oBAAoB,GAAGmG,WAAW,IAAInG,oBAAoB;MAC1D1xH,WAAW,CAAC,CAAC;MACbxnG,KAAK,CAAC/S,IAAI,CAACktG,WAAW,CAAC;IACzB,CAAC,CAAC;IAEF,IAAI2F,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,YAAY,EAAE3F,WAAW,CAACzsG,WAAW,CAACuyN,eAAe,CAAC;IACvF,IAAIngH,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,gBAAgB,EAAE3F,WAAW,CAACzsG,WAAW,CAAC4xO,aAAa,CAAC;IACzFnlI,WAAW,CAACzsG,WAAW,CAACwyN,WAAW,CAAC;IAEpClgN,KAAK,CAAC9S,IAAI,CAACitG,WAAW,CAAC;EACzB;;EAEA;EACA;EACA,SAASolI,eAAeA,CAAA,EAAG;IACzB,MAAMtxC,UAAU,GAAG1xE,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE,CAAC,WAAW,EAAE,QAAQ;IAAE,CAAC,CAAC;IAChF02F,UAAU,CAAC7gM,SAAS,GAAGyD,KAAK,CAAC,eAAe,CAAC;IAC7C,OAAOo9L,UAAU;EACnB;EACA,SAASx3F,UAAUA,CAACzjG,IAAI,EAAE63G,SAAS,EAAE;IACnC,IAAI20H,kBAAkB;IAEtB,MAAMr8N,KAAK,GAAGo5G,IAAI,CAAC/rH,aAAa,CAAC,KAAK,CAAC;IACvC2S,KAAK,CAACrW,SAAS,CAACE,GAAG,CAAC,qBAAqB,CAAC;IAE1C,MAAMw8G,WAAW,GAAG+S,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE,CAAC,SAAS,EAAE,cAAc;IAAE,CAAC,CAAC;IACrFiS,WAAW,CAACp8G,SAAS,GAAG;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACD+V,KAAK,CAACzV,WAAW,CAAC87G,WAAW,CAAC;IAE9B,KAAK,MAAMggD,KAAK,IAAIx2J,IAAI,EAAE;MACxB,MAAMG,CAAC,GAAGH,IAAI,CAACw2J,KAAK,CAAC;MAErB,MAAMi2E,WAAW,GAAGljH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QAAE+mG,KAAK,EAAE,CAAC,SAAS,EAAE,cAAc;MAAE,CAAC,CAAC;MACrFp0F,KAAK,CAACzV,WAAW,CAAC+xO,WAAW,CAAC;MAE9B,MAAMC,OAAO,GAAGnjH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QAAE+mG,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU;MAAE,CAAC,CAAC;MACzEmoI,OAAO,CAACxuO,YAAY,CAAC,YAAY,EAAEs4J,KAAK,CAAC;MACzCk2E,OAAO,CAACxuO,YAAY,CAAC,kBAAkB,EAAEiC,CAAC,CAAC00J,WAAW,CAAC;MACvD63E,OAAO,CAACxuO,YAAY,CAAC,oBAAoB,EAAEiC,CAAC,CAACwsO,aAAa,CAAC;MAC3DD,OAAO,CAACxuO,YAAY,CAAC,sBAAsB,EAAEiC,CAAC,CAACysO,eAAe,CAAC;MAC/D,MAAMC,MAAM,GAAGN,eAAe,CAAC,CAAC;MAChCM,MAAM,CAAC/yO,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;MAClC0yO,OAAO,CAAChyO,WAAW,CAACmyO,MAAM,CAAC;MAC3BH,OAAO,CAACtyO,SAAS,IAAI;AAC3B,eAAe+F,CAAC,CAAC2sO,UAAU;AAC3B,eAAe3sO,CAAC,CAACw/M,gBAAgB;AACjC,eAAex/M,CAAC,CAAC03G,SAAS;AAC1B,eAAe13G,CAAC,CAAC4sO,QAAQ;AACzB,eAAe5sO,CAAC,CAAC6sO,WAAW;AAC5B,eAAe7sO,CAAC,CAACysO,eAAe,GAAG/uO,KAAK,CAACmO,KAAK,GAAG,EAAE;AACnD,OAAO;MACDygO,WAAW,CAAC/xO,WAAW,CAACgyO,OAAO,CAAC;MAGhC,MAAMO,cAAc,GAAG1jH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QAAE+mG,KAAK,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ;MAAE,CAAC,CAAC;MACtGkoI,WAAW,CAAC/xO,WAAW,CAACuyO,cAAc,CAAC;MAEvCP,OAAO,CAACtvO,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QACrC,MAAM3E,MAAM,GAAG2E,CAAC,CAAC3E,MAAM;QAEvB,IAAI,CAACA,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,YAAY,CAAC,EAAE;QAE9C,MAAMslO,YAAY,GAAGryO,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,QAAQ,CAAC;QAExD,IAAIslO,YAAY,EAAE;UAChBryO,MAAM,CAACT,SAAS,GAAGyD,KAAK,CAACqb,YAAY;UACrCre,MAAM,CAACf,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;UACjCkzO,cAAc,CAACnzO,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QAC3C,CAAC,MAAM;UACLc,MAAM,CAACT,SAAS,GAAGyD,KAAK,CAACwM,aAAa;UACtCxP,MAAM,CAACf,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;UAC9BizO,cAAc,CAACnzO,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACxC;MACF,CAAC,CAAC;MAEF,KAAK,MAAMgqB,IAAI,IAAIhkB,IAAI,CAACw2J,KAAK,CAAC,CAAC22E,WAAW,EAAE;QAC1C,MAAMC,WAAW,GAAG7jH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;UAAE+mG,KAAK,EAAE,CAAC,SAAS,EAAE,cAAc;QAAE,CAAC,CAAC;QACrF0oI,cAAc,CAACvyO,WAAW,CAAC0yO,WAAW,CAAC;QAEvC,MAAMC,OAAO,GAAG9jH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;UAAE+mG,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU;QAAE,CAAC,CAAC;QACzE,MAAM+oI,MAAM,GAAGf,eAAe,CAAC,CAAC;QAChCe,MAAM,CAACxzO,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;QACjCqzO,OAAO,CAAC3yO,WAAW,CAAC4yO,MAAM,CAAC;QAC3B,MAAMC,UAAU,GAAG11H,SAAS,KAAK,GAAG,GAAGntF,KAAK,CAAC+H,mBAAmB,CAACzO,IAAI,CAAC,GAAGA,IAAI;QAC7EqpN,OAAO,CAACjzO,SAAS,IAAI,QAAQmzO,UAAU,KAAK,IAAI,GAAGA,UAAU,GAAG,cAAc,QAAQ;QACtFH,WAAW,CAAC1yO,WAAW,CAAC2yO,OAAO,CAAC;QAChC,IAAI3H,kBAAkB,CAAClvE,KAAK,CAAC,IAAIkvE,kBAAkB,CAAClvE,KAAK,CAAC,CAACxyI,IAAI,CAAC,EAAE;UAChEqpN,OAAO,CAACjzO,SAAS,IAAI,QAAQyD,KAAK,CAACmO,KAAK,QAAQ;UAChDwgO,kBAAkB,GAAG,IAAI;QAC3B;QAEA,MAAMgB,YAAY,GAAGjkH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;UAAE+mG,KAAK,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ;QAAE,CAAC,CAAC;QACpG6oI,WAAW,CAAC1yO,WAAW,CAAC8yO,YAAY,CAAC;QAErCH,OAAO,CAACjwO,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;UACrC,MAAM3E,MAAM,GAAG2E,CAAC,CAAC3E,MAAM;UAEvB,IAAI,CAACA,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,WAAW,CAAC,EAAE;UAE7C,MAAMslO,YAAY,GAAGryO,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,QAAQ,CAAC;UAExD,IAAIslO,YAAY,EAAE;YAChBryO,MAAM,CAACT,SAAS,GAAGyD,KAAK,CAACqb,YAAY;YACrCre,MAAM,CAACf,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;YACjCyzO,YAAY,CAAC1zO,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;UACzC,CAAC,MAAM;YACLc,MAAM,CAACT,SAAS,GAAGyD,KAAK,CAACwM,aAAa;YACtCxP,MAAM,CAACf,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;YAC9BwzO,YAAY,CAAC1zO,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;UACtC;QACF,CAAC,CAAC;QAEF,IAAI+hB,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAACw2J,KAAK,CAAC,CAAC22E,WAAW,CAACnpN,IAAI,CAAC,CAAC,CAACzpB,MAAM,GAAG,CAAC,EAAE;UACzD,MAAMkzO,cAAc,GAAGlkH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;YAAE+mG,KAAK,EAAE,CAAC,SAAS,EAAE,iBAAiB;UAAE,CAAC,CAAC;UAC3FkpI,cAAc,CAACrzO,SAAS,GAAG;AACrC;AACA;AACA;AACA;AACA;AACA,WAAW;UACDozO,YAAY,CAAC9yO,WAAW,CAAC+yO,cAAc,CAAC;UAExC,KAAK,MAAMre,UAAU,IAAIpvN,IAAI,CAACw2J,KAAK,CAAC,CAAC22E,WAAW,CAACnpN,IAAI,CAAC,EAAE;YACtD,MAAM0pN,OAAO,GAAG1tO,IAAI,CAACw2J,KAAK,CAAC,CAAC22E,WAAW,CAACnpN,IAAI,CAAC,CAACorM,UAAU,CAAC;YAEzD,MAAMue,SAAS,GAAGpkH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;cAAE+mG,KAAK,EAAE,CAAC,KAAK,EAAE,aAAa;YAAE,CAAC,CAAC;YAC9EopI,SAAS,CAACvzO,SAAS,GAAG;AAClC,qBAAqBszO,OAAO,CAACtvF,QAAQ;AACrC,qBAAqBsvF,OAAO,CAAC/8M,MAAM;AACnC,qBAAqB+8M,OAAO,CAAC/E,QAAQ;AACrC,qBAAqB+E,OAAO,CAACrc,OAAO;AACpC,qBAAqBqc,OAAO,CAACr0N,IAAI;AACjC,aAAa;YACDm0N,YAAY,CAAC9yO,WAAW,CAACizO,SAAS,CAAC;YAEnCA,SAAS,CAACvwO,gBAAgB,CAAC,OAAO,EAAE,MAAM;cACxC8sO,gBAAgB,CAAC;gBACf9E,UAAU,EAAEjlO,CAAC,CAACwsO,aAAa;gBAC3Bvd,UAAU,EAAEse,OAAO,CAACte,UAAU;gBAC9BprM,IAAI,EAAEA,IAAI;gBACV2M,MAAM,EAAE+8M,OAAO,CAAC/8M,MAAM;gBACtBgpM,OAAO,EAAE+T,OAAO,CAAC/E,QAAQ;gBACzBhoC,UAAU,EAAE+sC,OAAO,CAAC9iE,OAAO;gBAC3BtvK,UAAU,EAAEoyO,OAAO,CAACpyO;cACtB,CAAC,CAAC;YACJ,CAAC,CAAC;UACJ;QACF;MACF;IACF;IAEA,OAAO;MAAEsyO,YAAY,EAAEz9N,KAAK;MAAEq8N;IAAmB,CAAC;EACpD;;EAEA;EACA;EACA,SAAS72N,SAASA,CAAA,EAAG;IACnB,OAAOd,IAAI,CAACvX,KAAK,CAAC;MAChB4X,QAAQ,EAAE6G,MAAM,CAACxJ,MAAM,CAACuzN,WAAW,CAAC;MACpChxN,MAAM,EAAE,CAAC;MACTW,cAAc,EAAE,eAAAA,CAAgBzV,IAAI,EAAE;QACpCuV,SAAS,GAAGvV,IAAI,CAAC9E,aAAa,CAAC4C,WAAW,CAAC,CAAC;QAC5C2tO,WAAW,CAAC,CAAC;QACbb,iBAAiB,CAAC,CAAC;QAEnB,MAAMjG,2BAA2B,CAAC,CAAC;QAEnC6D,mBAAmB,CAAC,CAAC;MACvB;IACF,CAAC,CAAC;EACJ;EACA,SAASA,mBAAmBA,CAACxoO,IAAI,EAAE;IACjC,IAAI,CAACA,IAAI,EAAEA,IAAI,GAAG++N,YAAY;IAE9B,MAAMngO,GAAG,GAAG2oO,QAAQ,CAAChyN,SAAS,CAAC;IAC/B,MAAMs4N,SAAS,GAAG/H,WAAW,CAAClnO,GAAG,CAAC,CAACd,WAAW,CAAC,CAAC;IAChD,MAAMuX,OAAO,GAAGpY,QAAQ,CAACiD,cAAc,CAAC2tO,SAAS,CAAC;IAClDx4N,OAAO,CAACjb,SAAS,GAAG,EAAE;IAEtB,MAAM;MAAEwzO,YAAY;MAAEpB;IAAmB,CAAC,GAAG/oI,UAAU,CAACzjG,IAAI,CAACpB,GAAG,CAAC,EAAEA,GAAG,CAAC;IAEvE,MAAMwV,IAAI,GAAG,CAAC,GAAGw5N,YAAY,CAACtqO,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAChE8Q,IAAI,CAAC5Z,OAAO,CAACuW,GAAG,IAAI;MAClB,MAAM8jJ,WAAW,GAAG9jJ,GAAG,CAACjW,OAAO,CAACgzO,WAAW;MAC3C,MAAMnB,aAAa,GAAG57N,GAAG,CAACjW,OAAO,CAACizO,aAAa;MAC/C,MAAMnB,eAAe,GAAG77N,GAAG,CAACjW,OAAO,CAACkzO,eAAe;MAEnD,IAAI9H,oBAAoB,CAACtoO,IAAI,KAAK,KAAK,IAAIsoO,oBAAoB,CAACtoO,IAAI,KAAKi3J,WAAW,EAAE;QACpF9jJ,GAAG,CAACgU,UAAU,CAAChnB,KAAK,CAACoK,OAAO,GAAG,MAAM;QACrC;MACF;MAEA,IAAI89N,gBAAgB,CAACroO,IAAI,KAAK,UAAU,IAAIgvO,eAAe,KAAK,MAAM,EAAE;QACtE77N,GAAG,CAACgU,UAAU,CAAChnB,KAAK,CAACoK,OAAO,GAAG,MAAM;QACrC;MACF;MAEA,IAAI89N,gBAAgB,CAACroO,IAAI,KAAK,YAAY,IAAIgvO,eAAe,KAAK,OAAO,EAAE;QACzE77N,GAAG,CAACgU,UAAU,CAAChnB,KAAK,CAACoK,OAAO,GAAG,MAAM;QACrC;MACF;MAEA4I,GAAG,CAACgU,UAAU,CAAChnB,KAAK,CAACoK,OAAO,GAAG,MAAM;IACvC,CAAC,CAAC;IAEF,MAAM8lO,WAAW,GAAG,CAAC,GAAGhxO,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IACtE2qO,WAAW,CAACzzO,OAAO,CAACwW,IAAI,IAAI;MAC1B,MAAMk9N,IAAI,GAAGl9N,IAAI,CAACpN,YAAY,CAAC,SAAS,CAAC;MAEzC,IAAIsqO,IAAI,CAACpwO,WAAW,CAAC,CAAC,KAAKyX,SAAS,CAACzX,WAAW,CAAC,CAAC,IAAI0uO,kBAAkB,EAAE;QACxEx7N,IAAI,CAAC5W,SAAS,GAAG,GAAG8zO,IAAI,IAAIrwO,KAAK,CAACmO,KAAK,EAAE;MAC3C,CAAC,MAAM;QACLgF,IAAI,CAAC5W,SAAS,GAAG8zO,IAAI;MACvB;IACF,CAAC,CAAC;IAEF74N,OAAO,CAAC3a,WAAW,CAACkzO,YAAY,CAAC;IAEjC;EACF;;EAEA;EACA;EACA,SAASO,wBAAwBA,CAACC,OAAO,EAAEC,SAAS,EAAE;IACpD,IAAIA,SAAS,KAAK,GAAG,IAAID,OAAO,KAAK,GAAG,EAAE;MACxC,OAAO,GAAG;IACZ;IAEA,IAAIC,SAAS,KAAK,GAAG,IAAID,OAAO,KAAK,GAAG,EAAE;MACxC,OAAO,EAAE;IACX;IAEA,MAAME,OAAO,GAAG,CAAEzpN,QAAQ,CAACupN,OAAO,CAAC,GAAGvpN,QAAQ,CAACwpN,SAAS,CAAC,GAAI,GAAG,EAAElwN,QAAQ,CAAC,CAAC,CAAC3U,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAExF,OAAO,GAAG8kO,OAAO,GAAG;EACtB;EACA,SAASC,qBAAqBA,CAAA,EAAG;IAC/BxyN,MAAM,CAAC8B,IAAI,CAACkhN,YAAY,CAAC,CAACvkO,OAAO,CAACg0O,GAAG,IAAI;MACvC,IAAIA,GAAG,KAAK,IAAI,EAAE;MAElBzyN,MAAM,CAAC8B,IAAI,CAACkhN,YAAY,CAACyP,GAAG,CAAC,CAAC,CAACh0O,OAAO,CAACg8J,KAAK,IAAI;QAC9CuoE,YAAY,CAACyP,GAAG,CAAC,CAACh4E,KAAK,CAAC,CAAC22E,WAAW,GAAG,CAAC,CAAC;QAEzC,MAAMsB,IAAI,GAAG,CAAC,CAAC;QAEf,IAAID,GAAG,KAAK,GAAG,EAAE;UACfC,IAAI,CAAC,CAAC,CAAC,GAAGC,eAAe;UACzBD,IAAI,CAAC,CAAC,CAAC,CAACE,UAAU,CAAC,CAAC,CAAC;UACrBF,IAAI,CAAC,CAAC,CAAC,CAACG,UAAU,CAAC,CAAC,CAAC;QACvB,CAAC,MAAM;UACLH,IAAI,CAAC,CAAC,CAAC,GAAG,IAAIz6N,IAAI,CAAC,GAAGmyN,gBAAgB,CAACC,EAAE,WAAW,CAAC;QACvD;QAEA,MAAMyI,UAAU,GAAGrI,gBAAgB,GAAGF,UAAU,GAAG,CAAC,GAAGA,UAAU;QACjE,KAAK,IAAI1yN,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGi7N,UAAU,EAAEj7N,KAAK,EAAE,EAAE;UAC/C,QAAQ46N,GAAG;YACT,KAAK,GAAG;cAAE;gBACR,MAAMM,QAAQ,GAAGpkN,KAAK,CAACyC,QAAQ,CAACshN,IAAI,CAAC76N,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC/C66N,IAAI,CAAC76N,KAAK,GAAG,CAAC,CAAC,GAAGk7N,QAAQ;gBAC1B;cACF;YACA,KAAK,GAAG;cAAE;gBACR,MAAMA,QAAQ,GAAGpkN,KAAK,CAAC0C,OAAO,CAACqhN,IAAI,CAAC76N,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9C66N,IAAI,CAAC76N,KAAK,GAAG,CAAC,CAAC,GAAGk7N,QAAQ;gBAC1B;cACF;YACA,KAAK,GAAG;cAAE;gBACR,MAAMA,QAAQ,GAAGpkN,KAAK,CAAC2C,QAAQ,CAACohN,IAAI,CAAC76N,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC/C66N,IAAI,CAAC76N,KAAK,GAAG,CAAC,CAAC,GAAGk7N,QAAQ;gBAC1B;cACF;YACA,KAAK,GAAG;cAAE;gBACR,MAAMA,QAAQ,GAAGpkN,KAAK,CAAC4C,SAAS,CAACmhN,IAAI,CAAC76N,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChD66N,IAAI,CAAC76N,KAAK,GAAG,CAAC,CAAC,GAAGk7N,QAAQ;gBAC1B;cACF;YACA,KAAK,GAAG;cAAE;gBACR,MAAMA,QAAQ,GAAGpkN,KAAK,CAAC6C,QAAQ,CAACkhN,IAAI,CAAC76N,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC/C66N,IAAI,CAAC76N,KAAK,GAAG,CAAC,CAAC,GAAGk7N,QAAQ;gBAC1B;cACF;UACF;QACF;QAEA/yN,MAAM,CAAC8B,IAAI,CAAC4wN,IAAI,CAAC,CAACj0O,OAAO,CAACoE,GAAG,IAAI;UAC/B,QAAQ4vO,GAAG;YACT,KAAK,GAAG;cAAE;gBACR;gBACA,MAAMz1E,YAAY,GAAGruI,KAAK,CAAC8F,SAAS,CAACi+M,IAAI,CAAC7vO,GAAG,CAAC,CAAC,CAAC4K,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;gBAC7Du1N,YAAY,CAACyP,GAAG,CAAC,CAACh4E,KAAK,CAAC,CAAC22E,WAAW,CAACp0E,YAAY,CAAC,GAAG,CAAC,CAAC;gBACvD;cACF;YACA,KAAK,GAAG;cAAE;gBACR,MAAMt2I,OAAO,GAAGiI,KAAK,CAAC8F,SAAS,CAACi+M,IAAI,CAAC7vO,GAAG,CAAC,CAAC,CAACwf,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxD,MAAM2wN,MAAM,GAAGrkN,KAAK,CAACmH,iBAAiB,CAACpP,OAAO,CAAC;gBAC/Cs8M,YAAY,CAACyP,GAAG,CAAC,CAACh4E,KAAK,CAAC,CAAC22E,WAAW,CAAC4B,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjD;cACF;YACA,KAAK,GAAG;cAAE;gBACR,MAAMC,SAAS,GAAGtkN,KAAK,CAACqD,cAAc,CAAC0gN,IAAI,CAAC7vO,GAAG,CAAC,CAAC;gBACjD,MAAMqwO,YAAY,GAAGvkN,KAAK,CAAC8F,SAAS,CAACw+M,SAAS,CAAC,CAAC5wN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7D,MAAM8wN,WAAW,GAAGxkN,KAAK,CAACmH,iBAAiB,CAACo9M,YAAY,CAAC;gBAEzD,MAAME,OAAO,GAAGzkN,KAAK,CAAC8C,SAAS,CAACihN,IAAI,CAAC7vO,GAAG,CAAC,CAAC;gBAC1C,MAAMwwO,UAAU,GAAG1kN,KAAK,CAAC8F,SAAS,CAAC2+M,OAAO,CAAC,CAAC/wN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzD,MAAMixN,SAAS,GAAG3kN,KAAK,CAACmH,iBAAiB,CAACu9M,UAAU,CAAC;gBAErD,MAAME,OAAO,GAAG,GAAGJ,WAAW,IAAIG,SAAS,EAAE;gBAE7CtQ,YAAY,CAACyP,GAAG,CAAC,CAACh4E,KAAK,CAAC,CAAC22E,WAAW,CAACmC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClD;cACF;YACA,KAAK,GAAG;cAAE;gBACR,MAAM7sN,OAAO,GAAGiI,KAAK,CAAC8F,SAAS,CAACi+M,IAAI,CAAC7vO,GAAG,CAAC,CAAC,CAACwf,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxD,MAAM2wN,MAAM,GAAGrkN,KAAK,CAACmH,iBAAiB,CAACpP,OAAO,CAAC;gBAC/C,MAAM6sN,OAAO,GAAGzH,MAAM,CAACkH,MAAM,CAAC3wN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C2gN,YAAY,CAACyP,GAAG,CAAC,CAACh4E,KAAK,CAAC,CAAC22E,WAAW,CAACmC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClD;cACF;YACA,KAAK,GAAG;cAAE;gBACR,MAAM7sN,OAAO,GAAGiI,KAAK,CAAC8F,SAAS,CAACi+M,IAAI,CAAC7vO,GAAG,CAAC,CAAC,CAACwf,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxD,MAAM2wN,MAAM,GAAGrkN,KAAK,CAACmH,iBAAiB,CAACpP,OAAO,CAAC;gBAC/C,MAAM6sN,OAAO,GAAGP,MAAM,CAAC3wN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpC2gN,YAAY,CAACyP,GAAG,CAAC,CAACh4E,KAAK,CAAC,CAAC22E,WAAW,CAACmC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClD;cACF;UACF;QACF,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EACA,SAAS7D,WAAWA,CAAA,EAAG;IACrBtF,gBAAgB,CAACC,EAAE,GAAGh+G,YAAY;IAElC,QAAQ7yG,SAAS;MACf,KAAK0xN,OAAO;QAAE;UACZ,MAAMhhM,OAAO,GAAGvb,KAAK,CAAC0C,OAAO,CAAC,IAAIpZ,IAAI,CAAC,GAAGo0G,YAAY,WAAW,CAAC,EAAEu+G,YAAY,CAAC;UACjFR,gBAAgB,CAACxyN,IAAI,GAAG+W,KAAK,CAAC8F,SAAS,CAACyV,OAAO,CAAC,CAAC7nB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAC9DioN,QAAQ,GAAG,QAAQ;UACnBC,UAAU,GAAGK,YAAY;UACzB;QACF;MACA,KAAKO,IAAI;QAAE;UACT,MAAMjhM,OAAO,GAAGvb,KAAK,CAACyC,QAAQ,CAAC,IAAInZ,IAAI,CAAC,GAAGo0G,YAAY,WAAW,CAAC,EAAEw+G,SAAS,CAAC;UAC/ET,gBAAgB,CAACxyN,IAAI,GAAG+W,KAAK,CAAC8F,SAAS,CAACyV,OAAO,CAAC,CAAC7nB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAC9DioN,QAAQ,GAAG,SAAS;UACpBC,UAAU,GAAGM,SAAS;UACtB;QACF;MACA,KAAKO,GAAG;QAAE;UACR,MAAMlhM,OAAO,GAAGvb,KAAK,CAAC0C,OAAO,CAAC,IAAIpZ,IAAI,CAAC,GAAGo0G,YAAY,WAAW,CAAC,EAAEy+G,QAAQ,CAAC;UAC7EV,gBAAgB,CAACxyN,IAAI,GAAG+W,KAAK,CAAC8F,SAAS,CAACyV,OAAO,CAAC,CAAC7nB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAC9DioN,QAAQ,GAAG,QAAQ;UACnBC,UAAU,GAAGO,QAAQ;UACrB;QACF;MACA,KAAKO,IAAI;QAAE;UACT,IAAInhM,OAAO;UAEX,IAAI6gM,SAAS,KAAK,CAAC,EAAE;YACnB7gM,OAAO,GAAG,IAAIjyB,IAAI,CAAC,GAAGo0G,YAAY,WAAW,CAAC;UAChD,CAAC,MAAM;YACLniF,OAAO,GAAGvb,KAAK,CAAC2C,QAAQ,CAAC,IAAIrZ,IAAI,CAAC,GAAGo0G,YAAY,WAAW,CAAC,EAAE0+G,SAAS,CAAC;UAC3E;UAEA7gM,OAAO,GAAGvb,KAAK,CAACqD,cAAc,CAACkY,OAAO,CAAC;UACvCkgM,gBAAgB,CAACxyN,IAAI,GAAG+W,KAAK,CAAC8F,SAAS,CAACyV,OAAO,CAAC,CAAC7nB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAC9DioN,QAAQ,GAAG,SAAS;UACpBC,UAAU,GAAGQ,SAAS;UACtB;QACF;MACA,KAAKO,KAAK;QAAE;UACV,MAAMphM,OAAO,GAAGvb,KAAK,CAAC4C,SAAS,CAAC,IAAItZ,IAAI,CAAC,GAAGo0G,YAAY,WAAW,CAAC,EAAE2+G,UAAU,CAAC;UACjFZ,gBAAgB,CAACxyN,IAAI,GAAG+W,KAAK,CAAC8F,SAAS,CAACyV,OAAO,CAAC,CAAC7nB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAC9DioN,QAAQ,GAAG,UAAU;UACrBC,UAAU,GAAGS,UAAU;UACvB;QACF;MACA,KAAKO,IAAI;QAAE;UACT,MAAMrhM,OAAO,GAAGvb,KAAK,CAAC6C,QAAQ,CAAC,IAAIvZ,IAAI,CAAC,GAAGo0G,YAAY,WAAW,CAAC,EAAE4+G,SAAS,CAAC;UAC/Eb,gBAAgB,CAACxyN,IAAI,GAAG+W,KAAK,CAAC8F,SAAS,CAACyV,OAAO,CAAC,CAAC7nB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAC9DioN,QAAQ,GAAG,SAAS;UACpBC,UAAU,GAAGU,SAAS;UACtB;QACF;MACA;QAAS;UACPh/N,OAAO,CAACgE,KAAK,CAACuJ,SAAS,CAAC;UACxB,MAAM,IAAI6T,KAAK,CAAC,yCAAyC,CAAC;QAC5D;IACF;EACF;EACA,SAASmmN,cAAcA,CAAA,EAAG;IACxBzJ,WAAW,GAAG,CAAC,CAAC;IAEhB,IAAI/G,YAAY,CAAC1iN,cAAc,CAAC,IAAI,CAAC,EAAEypN,WAAW,CAAC,IAAI,CAAC,GAAGmB,OAAO;IAClE,IAAIlI,YAAY,CAAC1iN,cAAc,CAAC,GAAG,CAAC,EAAEypN,WAAW,CAAC,GAAG,CAAC,GAAGoB,IAAI;IAC7D,IAAInI,YAAY,CAAC1iN,cAAc,CAAC,GAAG,CAAC,EAAEypN,WAAW,CAAC,GAAG,CAAC,GAAGqB,GAAG;IAC5D,IAAIpI,YAAY,CAAC1iN,cAAc,CAAC,GAAG,CAAC,EAAEypN,WAAW,CAAC,GAAG,CAAC,GAAGsB,IAAI;IAC7D,IAAIrI,YAAY,CAAC1iN,cAAc,CAAC,GAAG,CAAC,EAAEypN,WAAW,CAAC,GAAG,CAAC,GAAGuB,KAAK;IAC9D,IAAItI,YAAY,CAAC1iN,cAAc,CAAC,GAAG,CAAC,EAAEypN,WAAW,CAAC,GAAG,CAAC,GAAGwB,IAAI;IAE7D/xN,SAAS,GAAGwG,MAAM,CAACxJ,MAAM,CAACuzN,WAAW,CAAC,CAAC,CAAC,CAAC;EAC3C;EACA,SAAS0J,mBAAmBA,CAACC,SAAS,EAAE;IACtCC,QAAQ,GAAG,IAAIC,GAAG,CAAC,CAAC;IAEpB,OAAOF,SAAS,CAACpoJ,MAAM,CAAC,CAAChnF,CAAC,EAAEF,CAAC,KAAK;MAChC,MAAM2xN,UAAU,GAAG3xN,CAAC,CAACuyN,mBAAmB,IAAI,IAAI;MAChD,MAAMkd,KAAK,GAAGzvO,CAAC,CAAC0hN,WAAW;MAE3B,IAAI,CAACiQ,UAAU,IAAI,CAAC8d,KAAK,EAAE,OAAOvvO,CAAC;MAEnCqvO,QAAQ,CAAC11O,GAAG,CAAC41O,KAAK,CAAC;MAEnB,IAAI,CAACvvO,CAAC,CAACyxN,UAAU,CAAC,EAAE;QAClBzxN,CAAC,CAACyxN,UAAU,CAAC,GAAG,CAAC,CAAC;MACpB;MAEA,IAAI,CAACzxN,CAAC,CAACyxN,UAAU,CAAC,CAAC8d,KAAK,CAAC,EAAE;QACzBvvO,CAAC,CAACyxN,UAAU,CAAC,CAAC8d,KAAK,CAAC,GAAG,CAAC,CAAC;MAC3B;MAEA,MAAM1B,IAAI,GAAGpG,SAAS,CAAC3nO,CAAC,CAACwhN,iBAAiB,CAAC,IAAI,EAAE;MACjD,MAAMkuB,MAAM,GAAGzH,UAAU,CAACjoO,CAAC,CAACuyN,mBAAmB,CAAC,IAAI,EAAE;MAEtDryN,CAAC,CAACyxN,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAAChD,eAAe,GAAG,KAAK;MAC5CvsO,CAAC,CAACyxN,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAAC9C,UAAU,GAAG3sO,CAAC,CAACspI,YAAY;MAChDppI,CAAC,CAACyxN,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACjwB,gBAAgB,GAAGx/M,CAAC,CAAC2vO,kBAAkB;MAC5DzvO,CAAC,CAACyxN,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAAC/3H,SAAS,GAAG,GAAGq2H,IAAI,IAAI/tO,CAAC,CAAC4vO,kBAAkB,IAAIF,MAAM,EAAE;MAC5ExvO,CAAC,CAACyxN,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACI,kBAAkB,GAAG7vO,CAAC,CAAC4vO,kBAAkB;MAC9D1vO,CAAC,CAACyxN,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACjuB,iBAAiB,GAAGxhN,CAAC,CAACwhN,iBAAiB;MAC5DthN,CAAC,CAACyxN,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAAC/6E,WAAW,GAAG10J,CAAC,CAAC6rO,mBAAmB;MACxD3rO,CAAC,CAACyxN,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACjD,aAAa,GAAGxsO,CAAC,CAAC+jO,UAAU;MAEjD,OAAO7jO,CAAC;IACV,CAAC,EAAE,CAAC,CAAC,CAAC;EACR;EACA,SAAS4vO,4BAA4BA,CAACjwO,IAAI,EAAEkwO,UAAU,EAAE;IACtDvK,cAAc,GAAG,CAAC,CAAC;IAEnB3lO,IAAI,CAACxF,OAAO,CAAC2F,CAAC,IAAI;MAChB,MAAM2xN,UAAU,GAAG3xN,CAAC,CAACuyN,mBAAmB,IAAI,IAAI;MAChD,MAAMkd,KAAK,GAAGzvO,CAAC,CAAC0hN,WAAW;MAC3B,MAAM79L,IAAI,GAAG7jB,CAAC,CAACgwO,cAAc,CAAC/xN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC3C,MAAMwsJ,OAAO,GAAGzqK,CAAC,CAACyqK,OAAO;MACzB,MAAMwkD,UAAU,GAAGjvN,CAAC,CAACgzN,mBAAmB;MACxC,MAAMmb,OAAO,GAAGH,wBAAwB,CAAChuO,CAAC,CAACiwO,UAAU,EAAEjwO,CAAC,CAACkwO,aAAa,CAAC;MAEvE,IAAIH,UAAU,CAACpe,UAAU,CAAC,EAAE;QAC1B,IAAIoe,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,EAAE;UACjCM,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAAC5C,WAAW,GAAGsB,OAAO;UAEnD,MAAM9E,MAAM,GAAG1uG,YAAY,CAACu2F,OAAO,CAACpiK,IAAI,CAACvzC,CAAC,IAAIA,CAAC,CAAC89M,IAAI,KAAKr5N,CAAC,CAACqvN,UAAU,CAAC;UAEtE,IAAI8gB,iBAAiB;UAErB,IAAIxe,UAAU,KAAK,IAAI,EAAE;YACvBoe,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAAC7C,QAAQ,EAAE;YAExC,IAAI,CAACmD,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,EAAE;cAC9C+C,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,GAAG,CAAC,CAAC;YAChD;YAEA,IAAI,CAAC+C,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,IAAI,CAAC,EAAE;cACpD+C,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtD;YAEA,IAAI,CAAC+C,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,IAAI,CAAC,CAAC/d,UAAU,CAAC,EAAE;cAChE8gB,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,IAAI,CAAC,CAAC/d,UAAU,CAAC,GAAG,CAAC,CAAC;YAClE;YAEA8gB,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,IAAI,CAAC,CAAC/d,UAAU,CAAC,CAAChxE,QAAQ,GAAGj+I,CAAC,CAACi+I,QAAQ;YACjF8xF,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,IAAI,CAAC,CAC7C/d,UAAU,CACX,CAACz+L,MAAM,GAAG,GAAGxwB,CAAC,CAACowO,sBAAsB,IAAIpwO,CAAC,CAACqwO,2BAA2B,EAAE;YACzEN,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,IAAI,CAAC,CAAC/d,UAAU,CAAC,CAACuZ,QAAQ,GAAGxoO,CAAC,CAACsvN,YAAY;YACrFygB,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,IAAI,CAAC,CAAC/d,UAAU,CAAC,CAACiC,OAAO,GAAG,GAAGmY,MAAM,GAAGA,MAAM,CAAChQ,IAAI,GAAG,EAAE,IAAIgQ,MAAM,GAAGA,MAAM,CAAC/P,OAAO,GAAG,EAAE,EAAE;YACpIyW,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,IAAI,CAAC,CAAC/d,UAAU,CAAC,CAAC/1M,IAAI,GAAGlZ,CAAC,CAACswO,qBAAqB;YAC1FP,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,IAAI,CAAC,CAAC/d,UAAU,CAAC,CAACA,UAAU,GAAGjvN,CAAC,CAACgzN,mBAAmB;YAC9F+c,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,IAAI,CAAC,CAAC/d,UAAU,CAAC,CAACxkD,OAAO,GAAGA,OAAO;YAC7EslE,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,IAAI,CAAC,CAAC/d,UAAU,CAAC,CAAC9zN,UAAU,GAAG6E,CAAC,CAAC7E,UAAU;YAErF;UACF;UACA,IAAIw2N,UAAU,KAAK,GAAG,EAAE;YACtB,IAAI3xN,CAAC,CAACmzB,SAAS,EAAE;cACfvX,MAAM,CAAC8B,IAAI,CAACqyN,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,CAAC3yO,OAAO,CAACoE,GAAG,IAAI;gBACpE,IAAI8xO,UAAU,GAAGvwO,CAAC,CAACmzB,SAAS,CAAClV,KAAK,CAAC,GAAG,CAAC;gBACvC,IAAIuyN,QAAQ,GAAG/xO,GAAG,CAACwf,KAAK,CAAC,GAAG,CAAC;gBAE7B,IAAIsyN,UAAU,CAAC,CAAC,CAAC,KAAKC,QAAQ,CAAC,CAAC,CAAC,EAAE;kBACjCL,iBAAiB,GAAG1xO,GAAG;gBACzB;cACF,CAAC,CAAC;YACJ;UACF;UACA,IAAIkzN,UAAU,KAAK,GAAG,EAAE;YACtB,MAAMn+L,SAAS,GAAG3P,IAAI,CAAC5F,KAAK,CAAC,GAAG,CAAC;YACjC,MAAMmG,KAAK,GAAGoP,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAIA,SAAS,CAAC,CAAC,CAAC,EAAE,GAAGA,SAAS,CAAC,CAAC,CAAC;YACnE,MAAM9F,GAAG,GAAG8F,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAIA,SAAS,CAAC,CAAC,CAAC,EAAE,GAAGA,SAAS,CAAC,CAAC,CAAC;YACjE,MAAMxP,IAAI,GAAGwP,SAAS,CAAC,CAAC,CAAC;YAEzB28M,iBAAiB,GAAG,GAAG/rN,KAAK,IAAIsJ,GAAG,IAAI1J,IAAI,EAAE;UAC/C;UACA,IAAI2tM,UAAU,KAAK,GAAG,EAAE;YACtB/1M,MAAM,CAAC8B,IAAI,CAACqyN,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,CAAC3yO,OAAO,CAACoE,GAAG,IAAI;cACpE,MAAM,CAACwzB,KAAK,EAAEE,GAAG,CAAC,GAAG1zB,GAAG,CAACwf,KAAK,CAAC,GAAG,CAAC;cACnC,MAAMwyN,SAAS,GAAG,IAAI58N,IAAI,CAAC,GAAGoe,KAAK,WAAW,CAAC;cAC/C,MAAMC,OAAO,GAAG,IAAIre,IAAI,CAAC,GAAGse,GAAG,WAAW,CAAC;cAC3C,MAAMu+M,WAAW,GAAG,IAAI78N,IAAI,CAAC,GAAGgQ,IAAI,WAAW,CAAC;cAChD,MAAMwL,OAAO,GAAG9E,KAAK,CAAC8E,OAAO,CAACqhN,WAAW,EAAED,SAAS,CAAC;cACrD,MAAMjhN,QAAQ,GAAGjF,KAAK,CAACiF,QAAQ,CAACkhN,WAAW,EAAEx+M,OAAO,CAAC;cAErD,IAAI7C,OAAO,IAAIG,QAAQ,EAAE;gBACvB2gN,iBAAiB,GAAG1xO,GAAG;cACzB;YACF,CAAC,CAAC;UACJ;UACA,IAAIkzN,UAAU,KAAK,GAAG,EAAE;YACtB/1M,MAAM,CAAC8B,IAAI,CAACqyN,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,CAAC3yO,OAAO,CAACoE,GAAG,IAAI;cACpE,IAAI,CAAC2lB,KAAK,EAAEsJ,GAAG,EAAE1J,IAAI,CAAC,GAAGH,IAAI,CAAC5F,KAAK,CAAC,GAAG,CAAC;cACxC,IAAImG,KAAK,GAAG,EAAE,IAAIA,KAAK,CAAChqB,MAAM,KAAK,CAAC,EAAE;gBACpCgqB,KAAK,GAAG,IAAIA,KAAK,EAAE;cACrB;cAEA,IAAIsjN,MAAM,CAACtjN,KAAK,CAAC,KAAK3lB,GAAG,EAAE;gBACzB0xO,iBAAiB,GAAG1xO,GAAG;cACzB;YACF,CAAC,CAAC;UACJ;UACA,IAAIkzN,UAAU,KAAK,GAAG,EAAE;YACtB/1M,MAAM,CAAC8B,IAAI,CAACqyN,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAAC,CAAC3yO,OAAO,CAACoE,GAAG,IAAI;cACpE,MAAM,CAAC2lB,KAAK,EAAEsJ,GAAG,EAAE1J,IAAI,CAAC,GAAGH,IAAI,CAAC5F,KAAK,CAAC,GAAG,CAAC;cAC1C,IAAI+F,IAAI,KAAKvlB,GAAG,EAAE;gBAChB0xO,iBAAiB,GAAG1xO,GAAG;cACzB;YACF,CAAC,CAAC;UACJ;UAEA,IAAI,CAAC0xO,iBAAiB,EAAE;UACxB,IAAI,CAACJ,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAACmD,iBAAiB,CAAC,EAAE;UAEnEJ,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAAC7C,QAAQ,EAAE;UAExC,IAAI,CAACpH,cAAc,CAAC7T,UAAU,CAAC,EAAE6T,cAAc,CAAC7T,UAAU,CAAC,GAAG,CAAC,CAAC;UAChE,IAAI,CAAC6T,cAAc,CAAC7T,UAAU,CAAC,CAAC8d,KAAK,CAAC,EAAEjK,cAAc,CAAC7T,UAAU,CAAC,CAAC8d,KAAK,CAAC,GAAG,CAAC,CAAC;UAC9E,IAAI,CAACjK,cAAc,CAAC7T,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACU,iBAAiB,CAAC,EAAE3K,cAAc,CAAC7T,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACU,iBAAiB,CAAC,GAAG,CAAC,CAAC;UACpH,IAAI,CAAC3K,cAAc,CAAC7T,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACU,iBAAiB,CAAC,CAACvD,QAAQ,EAAE;YAClEpH,cAAc,CAAC7T,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACU,iBAAiB,CAAC,CAACvD,QAAQ,GAAG,CAAC;UACnE,CAAC,MAAM;YACLpH,cAAc,CAAC7T,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACU,iBAAiB,CAAC,CAACvD,QAAQ,EAAE;UACjE;UAEA,IAAI,CAACmD,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAACmD,iBAAiB,CAAC,CAAClhB,UAAU,CAAC,EAAE;YAC7E8gB,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAACmD,iBAAiB,CAAC,CAAClhB,UAAU,CAAC,GAAG,CAAC,CAAC;UAC/E;UAEA8gB,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAACmD,iBAAiB,CAAC,CAAClhB,UAAU,CAAC,CAAChxE,QAAQ,GAAGj+I,CAAC,CAACi+I,QAAQ;UAC9F8xF,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAACmD,iBAAiB,CAAC,CAC1DlhB,UAAU,CACX,CAACz+L,MAAM,GAAG,GAAGxwB,CAAC,CAACowO,sBAAsB,IAAIpwO,CAAC,CAACqwO,2BAA2B,EAAE;UACzEN,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAACmD,iBAAiB,CAAC,CAAClhB,UAAU,CAAC,CAACuZ,QAAQ,GAAGxoO,CAAC,CAACsvN,YAAY;UAClGygB,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAACmD,iBAAiB,CAAC,CAC1DlhB,UAAU,CACX,CAACiC,OAAO,GAAG,GAAGmY,MAAM,GAAGA,MAAM,CAAChQ,IAAI,GAAG,EAAE,IAAIgQ,MAAM,GAAGA,MAAM,CAAC/P,OAAO,GAAG,EAAE,EAAE;UAC1EyW,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAACmD,iBAAiB,CAAC,CAAClhB,UAAU,CAAC,CAAC/1M,IAAI,GAAGlZ,CAAC,CAACswO,qBAAqB;UACvGP,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAACmD,iBAAiB,CAAC,CAAClhB,UAAU,CAAC,CAACxkD,OAAO,GAAGA,OAAO;UAC1FslE,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAACmD,iBAAiB,CAAC,CAAClhB,UAAU,CAAC,CAACA,UAAU,GAAGjvN,CAAC,CAACgzN,mBAAmB;UAC3G+c,UAAU,CAACpe,UAAU,CAAC,CAAC8d,KAAK,CAAC,CAACzC,WAAW,CAACmD,iBAAiB,CAAC,CAAClhB,UAAU,CAAC,CAAC9zN,UAAU,GAAG6E,CAAC,CAAC7E,UAAU;QACpG;MACF;IACF,CAAC,CAAC;EACJ;EACA,eAAempO,kBAAkBA,CAAA,EAAG;IAClC,MAAMzkO,IAAI,GAAG,MAAM08M,YAAY,CAAC+nB,kBAAkB,CAAC;MACjD3kL,UAAU,EAAEg2D,kBAAkB;MAC9Bg7H,aAAa,EAAEpmN,KAAK,CAAC+G,YAAY,CAAC22F,YAAY;IAChD,CAAC,CAAC;IAEFk9G,eAAe,GAAGtlO,IAAI;IAEtB++N,YAAY,GAAGyQ,mBAAmB,CAACxvO,IAAI,CAAC;IACxCuvO,cAAc,CAAC,CAAC;IAChB9D,WAAW,CAAC,CAAC;EACf;EACA,eAAe9G,2BAA2BA,CAAA,EAAG;IAC3Ce,kBAAkB,GAAG,CAAC,CAAC;IACvB6I,qBAAqB,CAAC,CAAC;IAEvB,MAAM12H,SAAS,GAAG0vH,QAAQ,CAAChyN,SAAS,CAAC;IACrC,MAAMvV,IAAI,GAAG,MAAM08M,YAAY,CAACioB,2BAA2B,CAAC;MAC1D7kL,UAAU,EAAEg2D,kBAAkB;MAC9B3jF,SAAS,EAAEg0M,gBAAgB,CAACxyN,IAAI;MAChC0e,OAAO,EAAE8zM,gBAAgB,CAACC,EAAE;MAC5B2K,eAAe,EAAExyO,KAAK,CAACoV,IAAI,CAAC+7N,QAAQ,CAAC,CAAC1pN,IAAI,CAAC,GAAG,CAAC;MAC/C6xF;IACF,CAAC,CAAC;IAEF0tH,wBAAwB,GAAGvlO,IAAI,CAACgxO,aAAa;IAE7Cj1N,MAAM,CAAC8B,IAAI,CAACkhN,YAAY,CAAC,CAACvkO,OAAO,CAAC6F,CAAC,IAAI;MACrC0b,MAAM,CAAC8B,IAAI,CAACkhN,YAAY,CAAC1+N,CAAC,CAAC,CAAC,CAAC7F,OAAO,CAACoa,CAAC,IAAI;QACxCmqN,YAAY,CAAC1+N,CAAC,CAAC,CAACuU,CAAC,CAAC,CAACm4N,QAAQ,GAAG,CAAC;QAC/BhO,YAAY,CAAC1+N,CAAC,CAAC,CAACuU,CAAC,CAAC,CAACo4N,WAAW,GAAG,CAAC;QAClCjO,YAAY,CAAC1+N,CAAC,CAAC,CAACuU,CAAC,CAAC,CAACg4N,eAAe,GAAG,KAAK;MAC5C,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFqD,4BAA4B,CAACjwO,IAAI,CAACgxO,aAAa,EAAEjS,YAAY,CAAC;IAE9DhjN,MAAM,CAAC8B,IAAI,CAACkhN,YAAY,CAAClnH,SAAS,CAAC,CAAC,CAACr9G,OAAO,CAACg8J,KAAK,IAAI;MACpD,IAAIuoE,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACw2E,WAAW,KAAK,GAAG,EAAE;QACtD,IAAIjO,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACu2E,QAAQ,GAAG,CAAC,EAAE;UAC/ChO,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACw2E,WAAW,GAAG,IAAI;QACnD;QAEA,IAAIjO,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACu2E,QAAQ,KAAK,CAAC,EAAE;UACjDhO,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACw2E,WAAW,GAAG,EAAE;QACjD;MACF,CAAC,MAAM;QACL,IAAIjO,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACu2E,QAAQ,GAAG,CAAC,EAAE;UAC/C,IAAI,CAAChO,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACw2E,WAAW,EAAE;YAC/CjO,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACw2E,WAAW,GAAG,MAAM;UACrD;QACF,CAAC,MAAM,IAAIjO,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACu2E,QAAQ,KAAK,CAAC,EAAE;UACxDhO,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACw2E,WAAW,GAAG,IAAI;QACnD;MACF;MAEA,IAAIjO,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAAC22E,WAAW,EAAE;QAC9CpxN,MAAM,CAAC8B,IAAI,CAACkhN,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAAC22E,WAAW,CAAC,CAAC3yO,OAAO,CAACy2O,KAAK,IAAI;UACvE,IAAIp5H,SAAS,KAAK,IAAI,EAAE;UAExB,MAAMq5H,OAAO,GAAGnS,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACmrD,iBAAiB;UAChE,MAAMwvB,OAAO,GAAGpS,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACw5E,kBAAkB;UACjE,MAAMjD,QAAQ,GAAGhO,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACu2E,QAAQ;UACxD,IAAIqE,YAAY,GAAG,CAAC;UAEpB,IAAIzL,cAAc,CAAC9tH,SAAS,CAAC,IAAI8tH,cAAc,CAAC9tH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,IAAImvE,cAAc,CAAC9tH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACy6E,KAAK,CAAC,EAAE;YAC5GG,YAAY,GAAGzL,cAAc,CAAC9tH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACy6E,KAAK,CAAC,CAAClE,QAAQ,IAAI,CAAC;UACtE;UAEA,IAAI,CAACrH,kBAAkB,CAAClvE,KAAK,CAAC,EAAEkvE,kBAAkB,CAAClvE,KAAK,CAAC,GAAG,CAAC,CAAC;UAE9D,IAAI06E,OAAO,KAAK,SAAS,IAAIE,YAAY,GAAGvsN,QAAQ,CAACssN,OAAO,CAAC,EAAE;YAC7D;YACApS,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACo2E,eAAe,GAAG,IAAI;YACrDlH,kBAAkB,CAAClvE,KAAK,CAAC,CAACy6E,KAAK,CAAC,GAAG,IAAI;UACzC;UACA,IAAIC,OAAO,KAAK,SAAS,IAAIE,YAAY,KAAKvsN,QAAQ,CAACssN,OAAO,CAAC,EAAE;YAC/D;YACApS,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACo2E,eAAe,GAAG,IAAI;YACrDlH,kBAAkB,CAAClvE,KAAK,CAAC,CAACy6E,KAAK,CAAC,GAAG,IAAI;UACzC;UACA,IAAIC,OAAO,KAAK,SAAS,IAAIE,YAAY,GAAGvsN,QAAQ,CAACssN,OAAO,CAAC,EAAE;YAC7D;YACApS,YAAY,CAAClnH,SAAS,CAAC,CAAC2+C,KAAK,CAAC,CAACo2E,eAAe,GAAG,IAAI;YACrDlH,kBAAkB,CAAClvE,KAAK,CAAC,CAACy6E,KAAK,CAAC,GAAG,IAAI;UACzC;QACF,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;EACJ;EAEA,eAAe9zO,IAAIA,CAAA+0H,KAAA,EAAuD;IAAA,IAAtD;MAAE/rB,QAAQ;MAAEsjC,YAAY;MAAEzlH,IAAI;MAAEmtM;IAAmB,CAAC,GAAAj/F,KAAA;IACtElqH,OAAO,CAAC7N,KAAK,CAAC,CAAC;IAEf27G,kBAAkB,GAAG3P,QAAQ,CAAC1oG,EAAE;IAChC4nO,oBAAoB,GAAGl/H,QAAQ,CAACoQ,IAAI;IACpCqyH,oBAAoB,GAAGn/F,YAAY;IACnCrhB,YAAY,GAAGpkG,IAAI;IACnBiiN,gBAAgB,GAAG;MACjBroO,IAAI,EAAE,KAAK;MACXiB,KAAK,EAAE;IACT,CAAC;IACDqnO,oBAAoB,GAAG;MACrBtoO,IAAI,EAAE,KAAK;MACXiB,KAAK,EAAE;IACT,CAAC;IACD6vO,eAAe,GAAG,IAAI16N,IAAI,CAAC,CAAC;IAE5Bi8F,+BAA+B,CAAC,iBAAiB,CAAC;IAClDrhG,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,qBAAqB,CAAC;IAE5Cm3O,SAAS,GAAG51O,QAAQ,CAAC61N,kBAAkB,CAAC,CAAC;IACzCx2F,YAAY,GAAGr/H,QAAQ,CAAC21N,iBAAiB,CAAC,CAAC;IAE3C,MAAMqT,kBAAkB,CAAC,CAAC;IAC1B,MAAME,2BAA2B,CAAC,CAAC;IAEnCx4N,GAAG,CAACC,iBAAiB,CAAC,CAAC;IAEvBq6N,iBAAiB,GAAGl9G,IAAI,CAAC/rH,aAAa,CAAC,KAAK,CAAC;IAC7CipO,iBAAiB,CAAC3sO,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAEjD,MAAMs3O,OAAO,GAAGj0O,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACdrD,QAAQ,CAAC6iN,iBAAiB,CAACn4G,QAAQ,CAAC;MACtC;IACF,CAAC,CAAC;IAEFmiI,kBAAkB,GAAGhyH,iBAAiB,CAAC,CAAC;IAExC,MAAMi7H,aAAa,GAAG7F,yBAAyB,CAAC,CAAC;IACjDlM,WAAW,GAAG7pN,SAAS,CAAC,CAAC;IAEzB8wN,iBAAiB,CAAC/rO,WAAW,CAAC42O,OAAO,CAAC;IACtC7K,iBAAiB,CAAC/rO,WAAW,CAAC4tO,kBAAkB,CAAC;IACjD7B,iBAAiB,CAAC/rO,WAAW,CAAC62O,aAAa,CAAC;IAC5C9K,iBAAiB,CAAC/rO,WAAW,CAAC8kO,WAAW,CAAC;IAC1CrzN,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC+rO,iBAAiB,CAAC;IAE/CzlE,0BAA0B,CAAC,CAAC;IAC5BwnE,mBAAmB,CAAC,CAAC;IAErBz/H,OAAO,CAAC+5D,mBAAmB,CAACquD,kBAAkB,CAAC;IAC/CpoH,OAAO,CAACyoI,4BAA4B,CAACnM,oBAAoB,CAAC;IAC1Dt8H,OAAO,CAACI,cAAc,CAAC,IAAI,EAAE;MAC3B6qC,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF6xF,SAAS,GAAG,MAAMnpB,YAAY,CAACmoB,eAAe,CAAC,CAAC;IAChDnoB,YAAY,CAAC0gB,uCAAuC,CAClDtnH,kBAAkB,EAClBprF,KAAK,CAAC+G,YAAY,CAAC22F,YAAY,CAAC,EAChCjjB,OAAO,IAAIsjI,aAAa,CAACtjI,OAAO,CAClC,CAAC;EACH;EAEA,OAAO;IACLhoG,IAAI;IACJ/B;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC36DJ,MAAMgB,IAAI,GAAI,YAAY;EACtB;EACA;EACA;EACA,IAAIgtG,WAAW;EACf,IAAI0H,aAAa;EACjB,IAAI2gI,UAAU;EACd,IAAIC,iBAAiB;EACrB,IAAI1mD,eAAe;EACnB;EACA,IAAI2mD,aAAa;EACjB,IAAIC,SAAS;EACb,IAAIC,aAAa;EACjB,IAAIC,WAAW;EACf,IAAIljD,OAAO;EACX,IAAImjD,gBAAgB;EACpB;EACA,IAAIC,UAAU;EACd,IAAIC,iBAAiB;EACrB,IAAIC,wBAAwB;EAC5B,IAAIC,SAAS;EACb,IAAIC,aAAa;EACjB,IAAIC,eAAe;EACnB,IAAIC,kBAAkB;EACtB,IAAIC,YAAY;EAChB,IAAIC,gBAAgB;EACpB,IAAIC,iBAAiB;EACrB,IAAIC,aAAa;EACjB,IAAIC,uBAAuB;EAC3B,IAAIC,UAAU;EACd,IAAIC,YAAY;EAChB,IAAIC,gBAAgB;EACpB,IAAIC,oBAAoB;EACxB,IAAIC,cAAc;;EAElB;EACA;EACA,IAAIC,iBAAiB;EACrB,IAAIn4G,YAAY;EAChB,IAAI5iB,YAAY;EAChB;EACA,IAAItH,gBAAgB;EACpB,IAAI46E,MAAM;EACV,IAAIl4E,QAAQ;EACZ,IAAI4/H,UAAU;EACd,IAAIC,gBAAgB;EACpB,IAAI59H,cAAc;EAClB,IAAI69H,UAAU;EACd,IAAIC,wBAAwB;EAC5B;EACA,IAAIC,gBAAgB;EACpB,IAAIC,mBAAmB;EACvB,IAAIC,kBAAkB,GAAG,CAAC;EAC1B;EACA,IAAIC,iBAAiB;EACrB;EACA,IAAIC,kBAAkB;EACtB,IAAIC,WAAW;EACf,IAAIC,eAAe;EACnB,IAAIC,gBAAgB;EACpB,IAAIC,iBAAiB;EACrB,IAAIC,qBAAqB;EACzB,IAAIC,sBAAsB;EAC1B,IAAIC,eAAe;EACnB,IAAIC,eAAe;EACnB,IAAIC,mBAAmB;EACvB;EACA,IAAIC,OAAO,GAAG,GAAG;EACjB,IAAIC,eAAe,CAAC,CAAC;EACrB;EACA,IAAIl+N,kBAAkB;EAEtB,eAAem+N,oBAAoBA,CAAA,EAAG;IAClC,IAAIC,SAAS,GACTjhI,QAAQ,KAAK,UAAU,GAAGkhI,eAAe,CAACC,sBAAsB,GAAGD,eAAe,CAACE,oBAAoB;IAC3G,MAAMC,uBAAuB,CAAC/uO,IAAI,CAAC2uO,SAAS,EAAE/oD,MAAM,CAAC;EACzD;EACA,eAAei0C,WAAWA,CAACt5H,QAAQ,EAAEyuI,GAAG,EAAE5iD,MAAM,EAAE;IAC9C,SAAS6iD,gBAAgBA,CAAA,EAAG;MACxB,IAAIh6O,MAAM,GAAGoC,QAAQ,CAACC,aAAa,CAAC,gCAAgC80L,MAAM,IAAI,CAAC;MAC/E,IAAI9tK,SAAS,GAAGjnB,QAAQ,CAACC,aAAa,CAAC,eAAe,CAAC;MACvD,IAAIrC,MAAM,EAAEqpB,SAAS,CAACuB,SAAS,GAAG5qB,MAAM,CAACi6O,SAAS;IACtD;IACA,IAAI;MACA3uI,QAAQ,EAAE;QAAErmD,UAAU;QAAEi1L,iBAAiB;QAAEC;MAAiB;IAChE,CAAC,GAAG7uI,QAAQ;IAEZsK,wBAAwB,CAAC,MAAM,CAAC;IAChCplG,CAAC,CAAC6kG,SAAS,GAAG,MAAM;IACpB/jG,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;IACvBnH,IAAI,CAACod,uBAAuB,CAAC,MAAM,CAAC;;IAEpC;IACA,IAAIwrE,IAAI,GAAGxN,OAAO,CAACuN,iBAAiB,CAAC;MACjC2+H,EAAE,EAAEF,iBAAiB;MACrBG,EAAE,EAAEF,gBAAgB;MACpBv3O,EAAE,EAAEqiD;IACR,CAAC,CAAC;IAEF8wD,gBAAgB,GAAG;MAAE2F,IAAI,EAAEA,IAAI;MAAE94G,EAAE,EAAEqiD;IAAW,CAAC;IAEjD,MAAMq1L,KAAK,GAAG,MAAM/mC,QAAQ,CAACgnC,gBAAgB,CAAC;MAC1CvrM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE8wD,gBAAgB,CAACnzG;IACjC,CAAC,CAAC;IACF,MAAM43O,EAAE,GAAGF,KAAK,CAAC1sO,MAAM,CAACiT,CAAC,IAAIA,CAAC,CAAC45N,cAAc,KAAKV,GAAG,CAAC,CAAC,CAAC,CAAC;IACzD,MAAMW,cAAc,GAAG,MAAMC,UAAU,CAACC,iBAAiB,CAACJ,EAAE,CAACC,cAAc,CAAC;IAC5E,MAAMt3O,IAAI,GAAGq3O,EAAE,CAAC/hI,QAAQ,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG;IAC5C,MAAMoiI,cAAc,GAAGL,EAAE,CAACK,cAAc,CAACt3N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtD,MAAMu3N,YAAY,GAAGN,EAAE,CAACM,YAAY,CAACv3N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClD,MAAMlI,QAAQ,GAAGm/N,EAAE,CAACvgO,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,KAAK;IAEpD02K,MAAM,GAAG6pD,EAAE,CAACC,cAAc;IAC1BhiI,QAAQ,GAAGt1G,IAAI;IACfk1O,UAAU,GAAGmC,EAAE,CAACnC,UAAU,GAAGmC,EAAE,CAACnC,UAAU,GAAG,GAAG;IAChDC,gBAAgB,GAAGj9N,QAAQ;;IAE3B;IACA0/N,SAAS,CAACnW,WAAW,CAAC;MAClBoW,iBAAiB,EAAE,IAAI7hO,IAAI,CAACqhO,EAAE,CAACS,aAAa,CAAC13N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3D23N,eAAe,EAAE,IAAI/hO,IAAI,CAACqhO,EAAE,CAACW,WAAW,CAAC53N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACvD63N,kBAAkB,EAAE,IAAIjiO,IAAI,CAACqhO,EAAE,CAACK,cAAc,CAACt3N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC7D83N,gBAAgB,EAAE,IAAIliO,IAAI,CAACqhO,EAAE,CAACM,YAAY,CAACv3N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACzD+3N,cAAc,EAAEd,EAAE,CAACe,UAAU,GAAG,IAAIpiO,IAAI,CAACqhO,EAAE,CAACe,UAAU,CAACh4N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;IAC5E,CAAC,CAAC;IACF,MAAMi4N,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAExB,gBAAgB,CAAC;IACtD;;IAEA;;IAEA;EACJ;;EAEA;EACA;EACA,eAAez5O,oBAAoBA,CAACP,MAAM,EAAE;IACxC,MAAMiuG,YAAY,GAAGjuG,MAAM,CAACC,OAAO,CAACC,SAAS;IAE7C,QAAQ+tG,YAAY;MAChB,KAAK,gBAAgB;QAAE;UACnB38F,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;UACvB3oB,GAAG,CAACC,iBAAiB,CAAC,CAAC;UACvBwC,QAAQ,CAACzR,IAAI,CAAC,CAAC;UACfyR,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,oBAAoB,CAAC;UAC3C02G,gBAAgB,GAAG7H,OAAO,CAACC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;UAClD,IAAI39F,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;YACzC6iM,QAAQ,CAACC,mBAAmB,CAACz9F,gBAAgB,CAACnzG,EAAE,EAAE,UAAU0nG,OAAO,EAAE;cACjE95F,CAAC,CAACC,OAAO,CAACisC,YAAY,GAAG4tD,OAAO,CAAC,CAAC,CAAC,CAAC1nG,EAAE;cACtCmzG,gBAAgB,CAAC9wD,UAAU,GAAG8wD,gBAAgB,CAACnzG,EAAE;cACjDmzG,gBAAgB,CAACnzG,EAAE,GAAG4N,CAAC,CAACC,OAAO,CAACisC,YAAY;cAC5C+oJ,eAAe,CAAC,CAAC;cACjBn0L,GAAG,CAACkoB,eAAe,CAAC,CAAC;YACzB,CAAC,CAAC;UACN,CAAC,MAAM;YACHisK,eAAe,CAAC,CAAC;YACjBn0L,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACzB;UACA;QACJ;MACA,KAAK,kBAAkB;QAAE;UACrBloB,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrBnqB,OAAO,CAAC,MAAM,CAAC;UACf;QACJ;IACJ;EACJ;EACA;EACA,SAASosO,mBAAmBA,CAAA,EAAG;IAC3B,OAAO1lI,gBAAgB;EAC3B;EACA,SAAS2lI,gBAAgBA,CAAA,EAAG;IACxB,OAAO/qD,MAAM;EACjB;EACA,SAASgrD,kBAAkBA,CAAA,EAAG;IAC1B,OAAOljI,QAAQ;EACnB;EACA,SAASmjI,aAAaA,CAAA,EAAG;IACrB,OAAOvD,UAAU;EACrB;EACA,SAASwD,mBAAmBA,CAAA,EAAG;IAC3B,OAAOvD,gBAAgB;EAC3B;EACA,SAASwD,mBAAmBA,CAAA,EAAG;IAC3B,OAAO77G,YAAY;EACvB;EACA,SAAS87G,mBAAmBA,CAAA,EAAG;IAC3B,OAAO3D,iBAAiB,GAAIA,iBAAiB,CAAC14O,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,GAAI,KAAK;EACpF;EACA,SAASs8O,gBAAgBA,CAAA,EAAG;IACxB,OAAO1gO,kBAAkB;EAC7B;EACA;EACA,SAAS2gO,mBAAmBA,CAAC3wI,QAAQ,EAAE;IACnCyK,gBAAgB,GAAGzK,QAAQ;EAC/B;EACA,SAAS4wI,SAASA,CAACC,SAAS,EAAE;IAC1BxrD,MAAM,GAAGwrD,SAAS;EACtB;EACA,SAASC,WAAWA,CAACC,WAAW,EAAE;IAC9B5jI,QAAQ,GAAG4jI,WAAW;EAC1B;EACA,SAASC,aAAaA,CAACC,aAAa,EAAE;IAClC,IAAIlE,UAAU,KAAKkE,aAAa,EAAE;MAC9BlE,UAAU,GAAGkE,aAAa;MAE1B,IAAIlE,UAAU,KAAK,GAAG,EAAE;QACpB;MAAA,CACH,MAAM;QACH;MAAA;;MAGJ;MACA;MACA;MACA;MACA;MACA;IACJ;EACJ;EACA,SAASmE,iBAAiBA,CAACC,MAAM,EAAE;IAC/B/hI,cAAc,GAAG+hI,MAAM;EAC3B;EACA,SAASC,mBAAmBA,CAACC,eAAe,EAAE;IAC1CrE,gBAAgB,GAAGqE,eAAe;EACtC;EACA;EACA,SAASvlI,YAAYA,CAAA,EAAG;IACpBrB,gBAAgB,GAAGrvG,SAAS;IAC5Bk2O,wBAAwB,CAAC,CAAC;EAC9B;EACA,SAASA,wBAAwBA,CAAA,EAAG;IAChCjsD,MAAM,GAAGjqL,SAAS;IAClB+xG,QAAQ,GAAG/xG,SAAS;IACpB2xO,UAAU,GAAG3xO,SAAS;IACtB4xO,gBAAgB,GAAG5xO,SAAS;IAC5Bg0G,cAAc,GAAGh0G,SAAS;IAC1B8xO,wBAAwB,GAAG9xO,SAAS;IAEpC+xO,gBAAgB,GAAG/xO,SAAS;IAC5BgyO,mBAAmB,GAAGhyO,SAAS;IAE/B6nG,WAAW,GAAG7nG,SAAS;IACvBuvG,aAAa,GAAGvvG,SAAS;IACzBkwO,UAAU,GAAGlwO,SAAS;IACtBowO,aAAa,GAAGpwO,SAAS;IACzBqwO,SAAS,GAAGrwO,SAAS;IACrBswO,aAAa,GAAGtwO,SAAS;IACzBuwO,WAAW,GAAGvwO,SAAS;IACvBqtL,OAAO,GAAGrtL,SAAS;IACnBywO,UAAU,GAAGzwO,SAAS;IACtB0wO,iBAAiB,GAAG1wO,SAAS;IAC7B2wO,wBAAwB,GAAG3wO,SAAS;IACpC4wO,SAAS,GAAG5wO,SAAS;IACrB6wO,aAAa,GAAG7wO,SAAS;IACzB8wO,eAAe,GAAG9wO,SAAS;IAC3B+wO,kBAAkB,GAAG/wO,SAAS;IAC9BgxO,YAAY,GAAGhxO,SAAS;IACxBixO,gBAAgB,GAAGjxO,SAAS;IAC5BkxO,iBAAiB,GAAGlxO,SAAS;IAC7B6xO,UAAU,GAAG,EAAE;IAEfwC,SAAS,CAAC8B,SAAS,CAAC,CAAC;IACrBC,cAAc,CAACD,SAAS,CAAC,CAAC;EAC9B;EACA,SAASE,WAAWA,CAAA,EAAG;IACnBpsD,MAAM,GAAGjqL,SAAS;EACtB;;EAEA;EACA;EACA;EACA,SAASs2O,eAAeA,CAAA,EAAG;IACvB,MAAMC,gBAAgB,GAAGC,kBAAkB,CAAC,CAAC;IAC7CC,aAAa,CAAC5kO,YAAY,CAAC0kO,gBAAgB,EAAE1F,aAAa,CAAC;IAC3DA,aAAa,GAAG0F,gBAAgB;EACpC;EACA,SAASG,oBAAoBA,CAAA,EAAG;IAC5B,MAAMC,MAAM,GAAGj7O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C06O,MAAM,CAACz6O,EAAE,GAAG,iBAAiB;IAC7By6O,MAAM,CAACp+O,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAE9B,MAAMm+O,UAAU,GAAGtsN,OAAO,IAAI;MAC1B,IAAIA,OAAO,EAAE;QACTusN,SAAS,CAACt+O,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACtCq+O,SAAS,CAACnmO,QAAQ,GAAG,KAAK;MAC9B,CAAC,MAAM;QACHmmO,SAAS,CAACt+O,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACnCo+O,SAAS,CAACnmO,QAAQ,GAAG,IAAI;MAC7B;IACJ,CAAC;IACD,MAAMomO,UAAU,GAAGzC,SAAS,CAAC0C,aAAa,CAACH,UAAU,CAAC;IAEtD,MAAMC,SAAS,GAAG/6O,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,MAAM0kD,OAAO,GAAG,MAAMoyL,SAAS,CAAC2C,eAAe,CAAC/sD,MAAM,EAAEl4E,QAAQ,CAAC;QACjE;QACA,MAAMxlG,OAAO,GAAG,6BAA6B;QAC7C,MAAM0qO,UAAU,GAAG3qO,cAAc,CAAChI,GAAG,CAACiI,OAAO,EAAE,IAAI,CAAC;QACpD;;QAEAuqO,UAAU,CAACt6O,KAAK,CAACoK,OAAO,GAAG,MAAM;QACjCqhC,OAAO,CAACzrC,KAAK,CAACoK,OAAO,GAAG,MAAM;QAC9B+vO,MAAM,CAACx9O,WAAW,CAAC89O,UAAU,CAAC;QAE9BrzN,UAAU,CAAC,MAAM;UACb+yN,MAAM,CAAC7rO,WAAW,CAACmsO,UAAU,CAAC;UAE9BH,UAAU,CAAC70O,eAAe,CAAC,OAAO,CAAC;UACnCgmC,OAAO,CAAChmC,eAAe,CAAC,OAAO,CAAC;UAEhC00O,MAAM,CAACp+O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;UAClCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;UAEtCy+O,kBAAkB,CAAC,CAAC;UACpBd,cAAc,CAACe,qBAAqB,CAAC;YACjCxF,UAAU;YACV1nD,MAAM;YACNt1K,QAAQ,EAAEi9N;UACd,CAAC,CAAC;UACFwF,GAAG,CAACC,UAAU,CAACptD,MAAM,CAAC;QAC1B,CAAC,EAAE,IAAI,CAAC;QACR;QACA;MACJ;IACJ,CAAC,CAAC;IACF,MAAM7/I,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZ82O,SAAS,CAACiD,wBAAwB,CAAC,CAAC;QACpCjD,SAAS,CAACkD,mBAAmB,CAAC,CAAC;QAC/BZ,MAAM,CAACp+O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;QAClCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAC1C;IACJ,CAAC,CAAC;IAEF,MAAMwvC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhCwvC,OAAO,CAAC9uC,WAAW,CAAC09O,SAAS,CAAC;IAC9B5uM,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAE9BusM,MAAM,CAACx9O,WAAW,CAAC29O,UAAU,CAAC;IAC9BH,MAAM,CAACx9O,WAAW,CAAC8uC,OAAO,CAAC;IAE3B,OAAO0uM,MAAM;EACjB;EACA,SAASa,uBAAuBA,CAAA,EAAG;IAC/B,IAAIC,SAAS;IAEb,MAAMd,MAAM,GAAGj7O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C06O,MAAM,CAACz6O,EAAE,GAAG,oBAAoB;IAChCy6O,MAAM,CAACp+O,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAE9B,MAAM48K,aAAa,GAAG35K,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDo5K,aAAa,CAAC98K,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAC5C48K,aAAa,CAACx8K,SAAS,GAAG;AAClC,+BAA+B84O,UAAU,KAAK,GAAG,GAAG,cAAc,GAAG,iBAAiB;AACtF,KAAK;IAEG,MAAM7hG,cAAc,GAAGpyI,QAAQ,CAAC3B,KAAK,CAAC;MAClC6B,SAAS,EAAE,gBAAgB;MAC3BC,KAAK,EAAE,QAAQ;MACfrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF,MAAM+8H,YAAY,GAAG,CACjB;MAAEj8H,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAQ,CAAC,EAC7B;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAW,CAAC,CACnC;IACDqB,QAAQ,CAAC5E,QAAQ,CAACg3I,cAAc,EAAEvW,YAAY,EAAEo4G,UAAU,CAAC;IAC3D7hG,cAAc,CAACj0I,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC3C,IAAIC,cAAc,GAAGD,CAAC,CAAC3E,MAAM,CAAC0C,OAAO,CAACiC,CAAC,CAAC3E,MAAM,CAAC6E,aAAa,CAAC;MAC7Ds5O,SAAS,GAAGv5O,cAAc,CAACZ,KAAK;MAChC,IAAIm6O,SAAS,KAAK9F,UAAU,EAAE;QAC1BkF,SAAS,CAACt+O,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvC,CAAC,MAAM;QACHo+O,SAAS,CAACt+O,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC1C;IACJ,CAAC,CAAC;IAEF,MAAMq+O,SAAS,GAAG/6O,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAI0kD,OAAO;QAEX,IAAIw1L,SAAS,KAAK9F,UAAU,EAAE;UAC1B1vL,OAAO,GAAG,MAAM4qJ,QAAQ,CAAC6qC,2BAA2B,CAAC;YACjDpvM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;YACtB2hM,cAAc,EAAE9pD,MAAM;YACtBj0K,MAAM,EAAEyhO;UACZ,CAAC,CAAC;UACF9F,UAAU,GAAG8F,SAAS;UACtB,IAAI9F,UAAU,KAAK,GAAG,EAAE;YACpBgG,WAAW,CAACp/O,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UAC5C,CAAC,MAAM;YACHm/O,WAAW,CAACp/O,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UACzC;QACJ;QAEA,MAAM8T,OAAO,GAAG01C,OAAO,KAAK,CAAC,GAAG,8BAA8B,GAAG,oCAAoC;QACrG,MAAMg1L,UAAU,GAAG3qO,cAAc,CAAChI,GAAG,CAACiI,OAAO,EAAE,IAAI,CAAC;QACpD,IAAI01C,OAAO,KAAK,CAAC,EAAEg1L,UAAU,CAAC1+O,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAEpD48K,aAAa,CAAC74K,KAAK,CAACoK,OAAO,GAAG,MAAM;QACpCkpI,cAAc,CAACtzI,KAAK,CAACoK,OAAO,GAAG,MAAM;QACrCqhC,OAAO,CAACzrC,KAAK,CAACoK,OAAO,GAAG,MAAM;QAC9B+vO,MAAM,CAACx9O,WAAW,CAAC89O,UAAU,CAAC;QAE9BrzN,UAAU,CAAC,MAAM;UACb+yN,MAAM,CAAC7rO,WAAW,CAACmsO,UAAU,CAAC;UAE9B5hE,aAAa,CAACpzK,eAAe,CAAC,OAAO,CAAC;UACtC6tI,cAAc,CAAC7tI,eAAe,CAAC,OAAO,CAAC;UACvCgmC,OAAO,CAAChmC,eAAe,CAAC,OAAO,CAAC;UAEhCq0O,eAAe,CAAC,CAAC;UACjBK,MAAM,CAACp+O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;UAClCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;UAEtC,IAAIwpD,OAAO,KAAK,CAAC,EAAE;YACfm0L,cAAc,CAACe,qBAAqB,CAAC;cACjCxF,UAAU;cACV1nD,MAAM;cACNt1K,QAAQ,EAAEi9N;YACd,CAAC,CAAC;YACFwF,GAAG,CAACC,UAAU,CAACptD,MAAM,CAAC;UAC1B;QACJ,CAAC,EAAE,IAAI,CAAC;MACZ;IACJ,CAAC,CAAC;IACF,MAAM7/I,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZo5O,MAAM,CAACp+O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;QAClCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAC1C;IACJ,CAAC,CAAC;IAEF,MAAMwvC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhCwvC,OAAO,CAAC9uC,WAAW,CAAC09O,SAAS,CAAC;IAC9B5uM,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAE9BusM,MAAM,CAACx9O,WAAW,CAACk8K,aAAa,CAAC;IACjCshE,MAAM,CAACx9O,WAAW,CAAC22I,cAAc,CAAC;IAClC6mG,MAAM,CAACx9O,WAAW,CAAC8uC,OAAO,CAAC;IAE3B,OAAO0uM,MAAM;EACjB;EACA,SAASiB,iBAAiBA,CAAA,EAAG;IACzB,MAAMjB,MAAM,GAAGj7O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C06O,MAAM,CAACz6O,EAAE,GAAG,cAAc;IAC1By6O,MAAM,CAACp+O,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAE9B,MAAM0vC,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpDksC,cAAc,CAAC5vC,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAE9C,MAAM07O,cAAc,GAAGE,SAAS,CAACwD,qBAAqB,CAAC,CAAC;IACxD,MAAMC,YAAY,GAAG1rN,IAAI,CAACoY,qBAAqB,CAAC2vM,cAAc,CAAC;IAC/D,MAAM4D,iBAAiB,GAAGD,YAAY,CAACj7N,KAAK,CAAC,GAAG,CAAC;IACjD,IAAIm7N,MAAM,GAAG,GAAGD,iBAAiB,CAAC,CAAC,CAAC,IAAIA,iBAAiB,CAAC,CAAC,CAAC,IAAIA,iBAAiB,CAAC,CAAC,CAAC,CAACx3O,SAAS,CAAC,CAAC,CAAC,EAAE;IAEnG,IAAIwxG,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,KAAK,GAAG,EAAE;MAC3C5pE,cAAc,CAACtvC,SAAS,GAAG;AACvC,iFAAiFm/O,MAAM;AACvF,UAAUC,uBAAuB,CAAC5oI,gBAAgB,CAAC;AACnD,OAAO;IACC,CAAC,MAAM;MACHlnE,cAAc,CAACtvC,SAAS,GAAG;AACvC,iEAAiEm7G,cAAc,sBAAsBgkI,MAAM;AAC3G,UAAUC,uBAAuB,CAAC5oI,gBAAgB,CAAC;AACnD,OAAO;IACC;IAEA,MAAM82C,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,MAAM0kD,OAAO,GAAG,MAAM4qJ,QAAQ,CAACqrC,UAAU,CAAC;UACtC5vM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB2hM,cAAc,EAAE9pD;QACpB,CAAC,CAAC;QACF,MAAM19K,OAAO,GAAG01C,OAAO,KAAK,SAAS,GAAG,mBAAmB,GAAG,wBAAwB;QACtF,MAAMg1L,UAAU,GAAG3qO,cAAc,CAAChI,GAAG,CAACiI,OAAO,EAAE,IAAI,CAAC;QACpD,IAAI01C,OAAO,KAAK,SAAS,EAAE;UACvBg1L,UAAU,CAAC1+O,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;UACjC;QACJ;QAEA,MAAMyB,QAAQ,GAAG,CAAC,GAAGwB,QAAQ,CAACqG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC3D7H,QAAQ,CAACjB,OAAO,CAAC,MAAM+7M,OAAO,IAAI;UAC9B,MAAMmjC,KAAK,GAAGnjC,OAAO,CAACz7M,OAAO,CAAC6+O,UAAU;UACxC,MAAMpiB,SAAS,GAAGhhB,OAAO,CAAC94M,EAAE;UAE5B,IAAIi8O,KAAK,KAAK,OAAO,EAAE;YACnB,MAAME,gBAAgB,CAACC,iBAAiB,CAAC;cACrChwM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;cACtB4jL,SAAS,EAAEA;YACf,CAAC,CAAC;UACN;QACJ,CAAC,CAAC;QAEF7tL,cAAc,CAAC3rC,KAAK,CAACoK,OAAO,GAAG,MAAM;QACrCqhC,OAAO,CAACzrC,KAAK,CAACoK,OAAO,GAAG,MAAM;QAC9B+vO,MAAM,CAACx9O,WAAW,CAAC89O,UAAU,CAAC;QAE9BrzN,UAAU,CAAC,YAAY;UACnB+yN,MAAM,CAAC7rO,WAAW,CAACmsO,UAAU,CAAC;UAE9B9uM,cAAc,CAAClmC,eAAe,CAAC,OAAO,CAAC;UACvCgmC,OAAO,CAAChmC,eAAe,CAAC,OAAO,CAAC;UAEhC00O,MAAM,CAACp+O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;UAClCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;UAEtC,IAAIwpD,OAAO,KAAK,SAAS,EAAE;YACvBx2C,KAAK,CAAC/S,IAAI,CAACk4O,SAAS,CAAC;YACrB7xC,eAAe,CAAC,CAAC;UACrB;QACJ,CAAC,EAAE,IAAI,CAAC;QACR;QACA;QACA;QACA;MACJ;IACJ,CAAC,CAAC;IAEF,MAAM34C,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZo5O,MAAM,CAACp+O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;QAClCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAC1C;IACJ,CAAC,CAAC;IAEF,MAAMwvC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhCwvC,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAE1BuwF,MAAM,CAACx9O,WAAW,CAACgvC,cAAc,CAAC;IAClCwuM,MAAM,CAACx9O,WAAW,CAAC8uC,OAAO,CAAC;IAE3B,OAAO0uM,MAAM;EACjB;EACA,SAAS4B,qBAAqBA,CAAA,EAAG;IAC7B,MAAM5B,MAAM,GAAGj7O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C06O,MAAM,CAACz6O,EAAE,GAAG,kBAAkB;IAC9By6O,MAAM,CAACp+O,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAE9B,MAAM0vC,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpDksC,cAAc,CAAC5vC,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAC9C0vC,cAAc,CAACtvC,SAAS,GAAG,uDAAuD;IAElF,MAAMstJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,MAAM0kD,OAAO,GAAG,MAAM4qJ,QAAQ,CAAC2rC,4BAA4B,CAAC;UACxDlwM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB2hM,cAAc,EAAE9pD;QACpB,CAAC,CAAC;QAEF,MAAM19K,OAAO,GAAG01C,OAAO,KAAK,CAAC,GAAG,gCAAgC,GAAG,4BAA4B;QAC/F,MAAMg1L,UAAU,GAAG3qO,cAAc,CAAChI,GAAG,CAACiI,OAAO,EAAE,IAAI,CAAC;QACpD,IAAI01C,OAAO,KAAK,CAAC,EAAEg1L,UAAU,CAAC1+O,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAEpD0vC,cAAc,CAAC3rC,KAAK,CAACoK,OAAO,GAAG,MAAM;QACrCqhC,OAAO,CAACzrC,KAAK,CAACoK,OAAO,GAAG,MAAM;QAC9B+vO,MAAM,CAACx9O,WAAW,CAAC89O,UAAU,CAAC;QAE9BrzN,UAAU,CAAC,MAAM;UACb+yN,MAAM,CAAC7rO,WAAW,CAACmsO,UAAU,CAAC;UAE9B9uM,cAAc,CAAClmC,eAAe,CAAC,OAAO,CAAC;UACvCgmC,OAAO,CAAChmC,eAAe,CAAC,OAAO,CAAC;UAEhC00O,MAAM,CAACp+O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;UAClCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;UAEtC,IAAIwpD,OAAO,KAAK,CAAC,EAAE;YACf2vL,gBAAgB,GAAG,CAACA,gBAAgB;YACpCwE,cAAc,CAACe,qBAAqB,CAAC;cACjCxF,UAAU;cACV1nD,MAAM;cACNt1K,QAAQ,EAAEi9N;YACd,CAAC,CAAC;YACFwF,GAAG,CAACC,UAAU,CAACptD,MAAM,CAAC;UAC1B;QACJ,CAAC,EAAE,IAAI,CAAC;MACZ;IACJ,CAAC,CAAC;IACF,MAAM7jC,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZo5O,MAAM,CAACp+O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;QAClCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAC1C;IACJ,CAAC,CAAC;IAEF,MAAMwvC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhCwvC,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAE1BuwF,MAAM,CAACx9O,WAAW,CAACgvC,cAAc,CAAC;IAClCwuM,MAAM,CAACx9O,WAAW,CAAC8uC,OAAO,CAAC;IAE3B,OAAO0uM,MAAM;EACjB;EACA,SAAS8B,sBAAsBA,CAAA,EAAG;IAC9B,MAAM9B,MAAM,GAAGj7O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C06O,MAAM,CAACz6O,EAAE,GAAG,mBAAmB;IAC/By6O,MAAM,CAACp+O,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAE9Bk+O,MAAM,CAAC96O,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MAClC,IAAIA,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QACjD,MAAMqyO,UAAU,GAAGz6O,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAAC2zL,UAAU;QAE9C,IAAI,CAACjvL,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC1CpI,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UAClCy5O,iBAAiB,CAACprO,IAAI,CAAC4xO,UAAU,CAAC;QACtC,CAAC,MAAM;UACHz6O,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UACrC05O,iBAAiB,GAAGA,iBAAiB,CAAChrO,MAAM,CAACyxO,EAAE,IAAIA,EAAE,KAAKD,UAAU,CAAC;QACzE;QAEAxG,iBAAiB,CAACl5O,MAAM,GAAG,CAAC,GACtBm5O,kBAAkB,CAAC55O,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC,GAC/C25O,kBAAkB,CAAC55O,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACtD;IACJ,CAAC,CAAC;IAEF,OAAOk+O,MAAM;EACjB;EACA,eAAeiC,yBAAyBA,CAAA,EAAG;IACvC,MAAM5F,SAAS,GAAGzmF,YAAY,CAACssF,YAAY,CAAC9mI,QAAQ,CAAC;IACrDmgI,iBAAiB,GAAG,EAAE;IAEtB,MAAMyE,MAAM,GAAGj7O,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC;IAC3Dg4O,MAAM,CAAC99O,SAAS,GAAG,EAAE;IAErB,MAAM67E,KAAK,GAAGh5E,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC1Cy4E,KAAK,CAAC77E,SAAS,GAAG,+BAA+B;IACjD89O,MAAM,CAACx9O,WAAW,CAACu7E,KAAK,CAAC;IAEzB,MAAMokK,OAAO,GAAG,MAAMvsF,YAAY,CAACwsF,eAAe,CAAC/F,SAAS,EAAE/oD,MAAM,CAAC;IACrE,IAAI6uD,OAAO,IAAIA,OAAO,CAAC9/O,MAAM,GAAG,CAAC,EAAE;MAC/B,MAAMwjN,IAAI,GAAGjwD,YAAY,CAACysF,iBAAiB,CAACF,OAAO,CAAC;MACpDnC,MAAM,CAACx9O,WAAW,CAACqjN,IAAI,CAAC;IAC5B;IAEA,MAAMv0K,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhC,MAAM2xC,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZ40O,kBAAkB,CAAC55O,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC5Ck+O,MAAM,CAACp+O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;QAClCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAC1C;IACJ,CAAC,CAAC;IACF05O,kBAAkB,GAAGr2O,MAAM,CAACC,KAAK,CAAC;MAC9BM,IAAI,EAAE,MAAM;MACZI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC;MAC3CQ,QAAQ,EAAEA,CAAA,KAAM;QACZ40O,kBAAkB,CAAC55O,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC5C2xC,SAAS,CAAC7xC,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAEnC,IAAIy5O,iBAAiB,IAAIA,iBAAiB,CAACl5O,MAAM,GAAG,CAAC,EAAE;UACnDk5O,iBAAiB,CAACj5O,OAAO,CAACggP,kBAAkB,IAAI;YAC5C1nD,kBAAkB,CAAC2nD,4BAA4B,CAAC;cAC5C5wM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;cACtB86I,UAAU,EAAE+rD,kBAAkB;cAC9BE,WAAW,EAAElvD,MAAM;cACnBniC,QAAQ,EAAEz4C,gBAAgB,CAACnzG;YAC/B,CAAC,CAAC;UACN,CAAC,CAAC;UAEF,MAAMqQ,OAAO,GAAG,iBAAiB;UACjC,MAAM0qO,UAAU,GAAG3qO,cAAc,CAAChI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;UACjDqyO,MAAM,CAACx9O,WAAW,CAAC89O,UAAU,CAAC;UAE9BrzN,UAAU,CAAC,MAAM;YACb+yN,MAAM,CAAC7rO,WAAW,CAACmsO,UAAU,CAAC;YAC9BN,MAAM,CAACp+O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;YAClCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;UAC1C,CAAC,EAAE,IAAI,CAAC;QACZ;MACJ;IACJ,CAAC,CAAC;IAEFwvC,OAAO,CAAC9uC,WAAW,CAACg5O,kBAAkB,CAAC;IACvClqM,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAC9BusM,MAAM,CAACx9O,WAAW,CAAC8uC,OAAO,CAAC;EAC/B;EACA,SAASmxM,kBAAkBA,CAAA,EAAG;IAC1B,MAAMzC,MAAM,GAAGj7O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C06O,MAAM,CAACz6O,EAAE,GAAG,eAAe;IAC3By6O,MAAM,CAACp+O,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAE9B,MAAM4gP,eAAe,GAAG39O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDo9O,eAAe,CAAC9gP,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAChD,MAAM6gP,aAAa,GAAG59O,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACjDq9O,aAAa,CAAC/gP,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;IACjD6gP,aAAa,CAACp5O,SAAS,GAAG,0EAA0E;IACpGm5O,eAAe,CAAClgP,WAAW,CAACmgP,aAAa,CAAC;IAE1C,MAAMC,WAAW,GAAG79O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDs9O,WAAW,CAAChhP,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACxC,MAAM+gP,eAAe,GAAG99O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDu9O,eAAe,CAACjhP,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAChD,MAAMghP,gBAAgB,GAAG/9O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtDw9O,gBAAgB,CAAClhP,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAClD4gP,eAAe,CAAClgP,WAAW,CAACogP,WAAW,CAAC;IACxCF,eAAe,CAAClgP,WAAW,CAACqgP,eAAe,CAAC;IAC5CH,eAAe,CAAClgP,WAAW,CAACsgP,gBAAgB,CAAC;IAE7C,MAAMC,WAAW,GAAGh+O,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAChD,MAAM09O,eAAe,GAAGj+O,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACpD,MAAM29O,WAAW,GAAGl+O,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAChDy9O,WAAW,CAACx5O,SAAS,GAAG,kBAAkB;IAC1Cy5O,eAAe,CAACz5O,SAAS,GAAG,sBAAsB;IAClD05O,WAAW,CAAC15O,SAAS,GAAG,uBAAuB;IAC/Cq5O,WAAW,CAACpgP,WAAW,CAACugP,WAAW,CAAC;IACpCF,eAAe,CAACrgP,WAAW,CAACwgP,eAAe,CAAC;IAC5CF,gBAAgB,CAACtgP,WAAW,CAACygP,WAAW,CAAC;IAEzCxH,WAAW,GAAG12O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3Cq2O,gBAAgB,GAAG52O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChDo2O,eAAe,GAAG32O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/Cs9O,WAAW,CAACpgP,WAAW,CAACi5O,WAAW,CAAC;IACpCqH,gBAAgB,CAACtgP,WAAW,CAACm5O,gBAAgB,CAAC;IAC9CkH,eAAe,CAACrgP,WAAW,CAACk5O,eAAe,CAAC;IAE5CsE,MAAM,CAACx9O,WAAW,CAACkgP,eAAe,CAAC;IAEnC,OAAO1C,MAAM;EACjB;EACA,SAASkD,6BAA6BA,CAAA,EAAG;IACrC,MAAMlD,MAAM,GAAGj7O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C06O,MAAM,CAACz6O,EAAE,GAAG,yBAAyB;IACrCy6O,MAAM,CAACp+O,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAE9B,OAAOk+O,MAAM;EACjB;EACA,SAASmD,eAAeA,CAAA,EAAG;IACvB,MAAMnD,MAAM,GAAGj7O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C06O,MAAM,CAACz6O,EAAE,GAAG,YAAY;IACxBy6O,MAAM,CAACp+O,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;;IAE9B;IACA;IACA;;IAEA,MAAM4gP,eAAe,GAAG39O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDo9O,eAAe,CAAC9gP,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAChD,MAAM6gP,aAAa,GAAG59O,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACjDq9O,aAAa,CAAC/gP,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;IACjD6gP,aAAa,CAACp5O,SAAS,GAAG,4EAA4E;IACtGm5O,eAAe,CAAClgP,WAAW,CAACmgP,aAAa,CAAC;IAE1C,MAAMS,eAAe,GAAGr+O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD89O,eAAe,CAACxhP,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IAC5C,MAAMuhP,oBAAoB,GAAGt+O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1D+9O,oBAAoB,CAACzhP,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IACtD,MAAMwhP,mBAAmB,GAAGv+O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzDg+O,mBAAmB,CAAC1hP,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACpD4gP,eAAe,CAAClgP,WAAW,CAAC4gP,eAAe,CAAC;IAC5CV,eAAe,CAAClgP,WAAW,CAAC6gP,oBAAoB,CAAC;IACjDX,eAAe,CAAClgP,WAAW,CAAC8gP,mBAAmB,CAAC;IAEhD,MAAMP,WAAW,GAAGh+O,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAChD,MAAM29O,WAAW,GAAGl+O,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAChD,MAAM09O,eAAe,GAAGj+O,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACpDy9O,WAAW,CAACx5O,SAAS,GAAG,iCAAiC;IACzD05O,WAAW,CAAC15O,SAAS,GAAG,uBAAuB;IAC/Cy5O,eAAe,CAACz5O,SAAS,GAAG,sBAAsB;IAClD65O,eAAe,CAAC5gP,WAAW,CAACugP,WAAW,CAAC;IACxCM,oBAAoB,CAAC7gP,WAAW,CAACygP,WAAW,CAAC;IAC7CK,mBAAmB,CAAC9gP,WAAW,CAACwgP,eAAe,CAAC;IAEhDjH,eAAe,GAAGh3O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/C02O,eAAe,GAAGj3O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/C22O,mBAAmB,GAAGl3O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnD89O,eAAe,CAAC5gP,WAAW,CAACu5O,eAAe,CAAC;IAC5CsH,oBAAoB,CAAC7gP,WAAW,CAACw5O,eAAe,CAAC;IACjDsH,mBAAmB,CAAC9gP,WAAW,CAACy5O,mBAAmB,CAAC;IAEpD+D,MAAM,CAACx9O,WAAW,CAACkgP,eAAe,CAAC;IAEnC,OAAO1C,MAAM;EACjB;EACA,SAASuD,iBAAiBA,CAAA,EAAG;IACzB,MAAMvD,MAAM,GAAGj7O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C06O,MAAM,CAACz6O,EAAE,GAAG,cAAc;IAC1By6O,MAAM,CAACp+O,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAE9B,MAAM4gP,eAAe,GAAG39O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDo9O,eAAe,CAAC9gP,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAChD,MAAM6gP,aAAa,GAAG59O,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACjDq9O,aAAa,CAAC/gP,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;IACjD6gP,aAAa,CAACp5O,SAAS,GAAG,0EAA0E;IACpGm5O,eAAe,CAAClgP,WAAW,CAACmgP,aAAa,CAAC;IAE1C,MAAMa,iBAAiB,GAAGz+O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvDk+O,iBAAiB,CAAC5hP,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IAC9C,MAAM2hP,qBAAqB,GAAG1+O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3Dm+O,qBAAqB,CAAC7hP,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACtD,MAAM4hP,sBAAsB,GAAG3+O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Do+O,sBAAsB,CAAC9hP,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IACxD4gP,eAAe,CAAClgP,WAAW,CAACghP,iBAAiB,CAAC;IAC9Cd,eAAe,CAAClgP,WAAW,CAACihP,qBAAqB,CAAC;IAClDf,eAAe,CAAClgP,WAAW,CAACkhP,sBAAsB,CAAC;IAEnD,MAAMX,WAAW,GAAGh+O,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAChD,MAAM09O,eAAe,GAAGj+O,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACpD,MAAM29O,WAAW,GAAGl+O,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAChDy9O,WAAW,CAACx5O,SAAS,GAAG,kBAAkB;IAC1Cy5O,eAAe,CAACz5O,SAAS,GAAG,sBAAsB;IAClD05O,WAAW,CAAC15O,SAAS,GAAG,uBAAuB;IAC/Ci6O,iBAAiB,CAAChhP,WAAW,CAACugP,WAAW,CAAC;IAC1CU,qBAAqB,CAACjhP,WAAW,CAACwgP,eAAe,CAAC;IAClDU,sBAAsB,CAAClhP,WAAW,CAACygP,WAAW,CAAC;IAE/CrH,iBAAiB,GAAG72O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDw2O,sBAAsB,GAAG/2O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtDu2O,qBAAqB,GAAG92O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDk+O,iBAAiB,CAAChhP,WAAW,CAACo5O,iBAAiB,CAAC;IAChD8H,sBAAsB,CAAClhP,WAAW,CAACs5O,sBAAsB,CAAC;IAC1D2H,qBAAqB,CAACjhP,WAAW,CAACq5O,qBAAqB,CAAC;IAExDmE,MAAM,CAACx9O,WAAW,CAACkgP,eAAe,CAAC;IAEnC,OAAO1C,MAAM;EACjB;EACA,SAAS2D,qBAAqBA,CAAA,EAAG;IAC7B,MAAM3D,MAAM,GAAGj7O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C06O,MAAM,CAACz6O,EAAE,GAAG,kBAAkB;IAC9By6O,MAAM,CAACp+O,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAE9B,MAAM8T,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3CsQ,OAAO,CAAChU,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACpCk+O,MAAM,CAACx9O,WAAW,CAACoT,OAAO,CAAC;IAE3B,OAAOoqO,MAAM;EACjB;EACA,SAAS4D,yBAAyBA,CAAA,EAAG;IACjC,IAAIC,aAAa;IACjB,IAAIC,QAAQ;IACZ,IAAIC,OAAO;IACX,IAAIC,kBAAkB;IACtB,IAAIpK,WAAW;IACf;IACA,IAAIqK,OAAO,EAAEC,WAAW;IAExB,MAAMlE,MAAM,GAAGj7O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C06O,MAAM,CAACz6O,EAAE,GAAG,sBAAsB;IAClCy6O,MAAM,CAACp+O,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;;IAE9B;IACA,MAAMqiP,WAAW,GAAGp/O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD6+O,WAAW,CAACviP,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACxCqiP,WAAW,CAACjiP,SAAS,GAAG;AAChC,6BAA6Bk5G,QAAQ,KAAK,GAAG,GAAG,eAAe,GAAG,iBAAiB;AACnF,KAAK;;IAEG;IACA,MAAM89B,YAAY,GAAGnyI,QAAQ,CAAC3B,KAAK,CAAC;MAChC6B,SAAS,EAAE,cAAc;MACzBC,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFkB,QAAQ,CAAC5E,QAAQ,CACb+2I,YAAY,EACZ,CACI;MAAEvyI,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAS,CAAC,EAC9B;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAW,CAAC,CACnC,EACD01G,QACJ,CAAC;IACD89B,YAAY,CAACh0I,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC7C,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEu8O,OAAO,GAAGx8O,cAAc,CAACZ,KAAK;MAC9B,IAAIo9O,OAAO,KAAK3oI,QAAQ,EAAE;QACtB8kI,SAAS,CAACt+O,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvC,CAAC,MAAM;QACHo+O,SAAS,CAACt+O,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QAEtC,IAAIkiP,OAAO,KAAK,GAAG,EAAE;UACjB;UACAC,kBAAkB,GAAGI,uBAAuB,CAAC,IAAI,EAAE,CAACC,YAAY,EAAEC,QAAQ,KAAK;YAC3EL,OAAO,GAAGI,YAAY;YACtBH,WAAW,GAAGI,QAAQ;YAEtBR,QAAQ,GAAG1oI,QAAQ;YACnByoI,aAAa,GAAGnG,SAAS,CAAC6G,oBAAoB,CAACL,WAAW,CAAC;YAC3D9oI,QAAQ,GAAG2oI,OAAO;YAElB,MAAMS,oBAAoB,GAAGR,kBAAkB,CAACh/O,aAAa,CAAC,WAAW,CAAC;YAC1E,IAAIw/O,oBAAoB,EAAEA,oBAAoB,CAAC5iP,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;YAC3EwiP,YAAY,CAACziP,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;YAEtC,IAAIk+O,MAAM,CAACtwO,QAAQ,CAACkqO,WAAW,CAAC,EAAEoG,MAAM,CAAC7rO,WAAW,CAACylO,WAAW,CAAC;YACjEA,WAAW,GAAG8D,SAAS,CAAC0C,aAAa,CAACzsN,OAAO,IAAI;cAC7C,IAAIA,OAAO,EAAE;gBACTusN,SAAS,CAACt+O,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;cAC1C,CAAC,MAAM;gBACHq+O,SAAS,CAACt+O,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;cACvC;YACJ,CAAC,EAAE,IAAI,CAAC;YACRk+O,MAAM,CAACzrO,YAAY,CAACqlO,WAAW,EAAEtoM,OAAO,CAAC;UAC7C,CAAC,CAAC;UACF0uM,MAAM,CAACzrO,YAAY,CAACyvO,kBAAkB,EAAE1yM,OAAO,CAAC;QACpD,CAAC,MAAM;UACH,IAAI0yM,kBAAkB,EAAEhE,MAAM,CAAC7rO,WAAW,CAAC6vO,kBAAkB,CAAC;UAC9D,IAAIpK,WAAW,EAAEoG,MAAM,CAAC7rO,WAAW,CAACylO,WAAW,CAAC;UAChD,IAAIiK,aAAa,EAAEnG,SAAS,CAAC+G,gCAAgC,CAACZ,aAAa,CAAC;QAChF;MACJ;IACJ,CAAC,CAAC;;IAEF;IACA,MAAM3D,SAAS,GAAG/6O,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,MAAM0kD,OAAO,GAAG,MAAM4qJ,QAAQ,CAACwuC,cAAc,CAAC;UAC1C/yM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB2hM,cAAc,EAAE9pD,MAAM;UACtBqxD,UAAU,EAAEZ,OAAO,KAAK,GAAG,GAAGzwD,MAAM,GAAG4wD,WAAW,CAAC9G,cAAc;UACjEhiI,QAAQ,EAAE2oI,OAAO,CAACx3M,WAAW,CAAC,CAAC;UAC/B8wE,cAAc,EAAE0mI,OAAO,KAAK,GAAG,GAAGp3N,QAAQ,CAACu3N,WAAW,CAAC7mI,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE;UAC/EugI,aAAa,EAAEnoN,IAAI,CAACkY,eAAe,CAACnb,KAAK,CAAC8F,SAAS,CAAColN,SAAS,CAACkH,oBAAoB,CAAC,CAAC,CAAC,CAAC1+N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;UACpG43N,WAAW,EAAEroN,IAAI,CAACkY,eAAe,CAACnb,KAAK,CAAC8F,SAAS,CAAColN,SAAS,CAACmH,kBAAkB,CAAC,CAAC,CAAC,CAAC3+N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;UAChG63N,kBAAkB,EAAEtoN,IAAI,CAACkY,eAAe,CAACnb,KAAK,CAAC8F,SAAS,CAAColN,SAAS,CAACwD,qBAAqB,CAAC,CAAC,CAAC,CAACh7N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;UAC1G83N,gBAAgB,EAAEvoN,IAAI,CAACkY,eAAe,CAACnb,KAAK,CAAC8F,SAAS,CAAColN,SAAS,CAACoH,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC5+N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UACtGg4N,UAAU,EAAEzoN,IAAI,CAACkY,eAAe,CAACnb,KAAK,CAAC8F,SAAS,CAAColN,SAAS,CAACqH,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC7+N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACjG,CAAC,CAAC;QAEF,IAAIolC,OAAO,KAAK,SAAS,EAAE;UACvB64L,WAAW,CAACjiP,SAAS,GAAG,wBAAwBk5G,QAAQ,KAAK,GAAG,GAAG,eAAe,GAAG,iBAAiB,EAAE;QAC5G;QAEA,MAAMxlG,OAAO,GAAG01C,OAAO,KAAK,SAAS,GAAG,4BAA4B,GAAG,kCAAkC;QACzG,MAAMg1L,UAAU,GAAG3qO,cAAc,CAAChI,GAAG,CAACiI,OAAO,EAAE,IAAI,CAAC;QACpD,IAAI01C,OAAO,KAAK,SAAS,EAAEg1L,UAAU,CAAC1+O,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAE5DqiP,WAAW,CAACt+O,KAAK,CAACoK,OAAO,GAAG,MAAM;QAClCipI,YAAY,CAACrzI,KAAK,CAACoK,OAAO,GAAG,MAAM;QACnCqhC,OAAO,CAACzrC,KAAK,CAACoK,OAAO,GAAG,MAAM;QAC9B+vO,MAAM,CAACx9O,WAAW,CAAC89O,UAAU,CAAC;QAE9BrzN,UAAU,CAAC,MAAM;UACb+yN,MAAM,CAAC7rO,WAAW,CAACmsO,UAAU,CAAC;UAE9B6D,WAAW,CAAC74O,eAAe,CAAC,OAAO,CAAC;UACpC4tI,YAAY,CAAC5tI,eAAe,CAAC,OAAO,CAAC;UACrCgmC,OAAO,CAAChmC,eAAe,CAAC,OAAO,CAAC;UAEhCq0O,eAAe,CAAC,CAAC;UACjBK,MAAM,CAACp+O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;UAClCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;UAEtC,IAAIwpD,OAAO,KAAK,SAAS,EAAE;YACvBi1L,kBAAkB,CAAC,CAAC;YACpBd,cAAc,CAACe,qBAAqB,CAAC;cACjCxF,UAAU;cACV1nD,MAAM;cACNt1K,QAAQ,EAAEi9N;YACd,CAAC,CAAC;YACFwF,GAAG,CAACC,UAAU,CAACptD,MAAM,CAAC;UAC1B,CAAC,MAAM;YACH,IAAI0wD,kBAAkB,EAAEhE,MAAM,CAAC7rO,WAAW,CAAC6vO,kBAAkB,CAAC;YAC9D,IAAIpK,WAAW,EAAEoG,MAAM,CAAC7rO,WAAW,CAACylO,WAAW,CAAC;;YAEhD;YACA,MAAMoL,UAAU,GAAG9rG,YAAY,CAACl0I,aAAa,CAAC,QAAQ,CAAC;YACvDggP,UAAU,CAACr+O,KAAK,GAAGy0G,QAAQ;YAC3B;YACA,IAAIyoI,aAAa,EAAEnG,SAAS,CAAC+G,gCAAgC,CAACZ,aAAa,CAAC;YAC5E;YACA/kI,QAAQ,GAAGglI,QAAQ;UACvB;QACJ,CAAC,EAAE,IAAI,CAAC;MACZ;IACJ,CAAC,CAAC;IACF5D,SAAS,CAACt+O,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACnC,MAAM2xC,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZ,IAAIo9O,kBAAkB,EAAEhE,MAAM,CAAC7rO,WAAW,CAAC6vO,kBAAkB,CAAC;QAC9D,IAAIpK,WAAW,EAAEoG,MAAM,CAAC7rO,WAAW,CAACylO,WAAW,CAAC;;QAEhD;QACA,MAAMoL,UAAU,GAAG9rG,YAAY,CAACl0I,aAAa,CAAC,QAAQ,CAAC;QACvDggP,UAAU,CAACr+O,KAAK,GAAGy0G,QAAQ;QAC3B;QACA,IAAIyoI,aAAa,EAAEnG,SAAS,CAAC+G,gCAAgC,CAACZ,aAAa,CAAC;QAC5E;QACA/kI,QAAQ,GAAGglI,QAAQ;QAEnB9D,MAAM,CAACp+O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;QAClCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAC1C;IACJ,CAAC,CAAC;IAEF,MAAMwvC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhCwvC,OAAO,CAAC9uC,WAAW,CAAC09O,SAAS,CAAC;IAC9B5uM,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAE9BusM,MAAM,CAACx9O,WAAW,CAAC2hP,WAAW,CAAC;IAC/BnE,MAAM,CAACx9O,WAAW,CAAC02I,YAAY,CAAC;IAChC8mG,MAAM,CAACx9O,WAAW,CAAC8uC,OAAO,CAAC;IAE3B,OAAO0uM,MAAM;EACjB;EACA,SAASiF,gBAAgBA,CAACrwH,WAAW,EAAE;IACnC,MAAMswH,OAAO,GAAG,EAAE;IAElB,KAAK,MAAMn1M,IAAI,IAAI6kF,WAAW,EAAE;MAC5BswH,OAAO,CAAC/0O,IAAI,CAACykH,WAAW,CAAC7kF,IAAI,CAAC,CAACi1F,YAAY,CAAC;IAChD;IAEA,OAAOkgH,OAAO;EAClB;EAEA,SAASC,eAAeA,CAACvwH,WAAW,EAAE;IAClC,MAAMswH,OAAO,GAAG,EAAE;IAElB,KAAK,MAAMn1M,IAAI,IAAI6kF,WAAW,EAAE;MAC5BswH,OAAO,CAAC/0O,IAAI,CAACykH,WAAW,CAAC7kF,IAAI,CAAC,CAACq1M,iBAAiB,CAAC;IACrD;IAEA,OAAOF,OAAO;EAClB;EAEA,eAAeG,eAAeA,CAACtyC,UAAU,EAAE;IACvC,MAAMuyC,uBAAuB,GAAG,CAAC,CAAC;IAClC,MAAMC,2BAA2B,GAAG,CAAC,CAAC;IACtC,MAAMC,4BAA4B,GAAG,CAAC,CAAC;;IAEvC;IACA/J,WAAW,CAACv5O,SAAS,GAAG,EAAE;IAC1Bw5O,eAAe,CAACx5O,SAAS,GAAG,EAAE;IAC9By5O,gBAAgB,CAACz5O,SAAS,GAAG,EAAE;;IAE/B;IACA,MAAM0yH,WAAW,GAAG,MAAMshF,QAAQ,CAACuvC,6BAA6B,CAAC;MAC7D9zM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBk3G,YAAY,EAAE2gC,MAAM,CAAE;IAC1B,CAAC,CAAC;IAEF,IAAI53K,KAAK,GAAG,CAAC;IAEb,IAAIk5G,WAAW,EAAE;MACb,KAAK,MAAM7kF,IAAI,IAAI6kF,WAAW,EAAE;QAC5BA,WAAW,CAAC7kF,IAAI,CAAC,CAAC8iD,KAAK,GAAGn3E,KAAK;QAC/B,MAAMvT,CAAC,GAAGysH,WAAW,CAAC7kF,IAAI,CAAC;QAC3B,MAAM/vB,UAAU,GAAGjb,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAChD0a,UAAU,CAACpe,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;QACtC,MAAMw9G,WAAW,GAAGv6G,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QAC/Cg6G,WAAW,CAAC/1G,SAAS,GAAGpB,CAAC,CAACm3G,WAAW;QACrCt/F,UAAU,CAACxd,WAAW,CAAC88G,WAAW,CAAC;QAEnCt/F,UAAU,CAAC9a,gBAAgB,CAAC,OAAO,EAAE,MAAM;UACvC,IAAI,CAAC8a,UAAU,CAACpe,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC5CsQ,UAAU,CAACpe,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;YACpC,IAAIqG,CAAC,CAACu9O,eAAe,EAAE;cACnBF,4BAA4B,CAACr9O,CAAC,CAAC0qF,KAAK,CAAC,GAAG;gBAAE,GAAG1qF;cAAE,CAAC;YACpD,CAAC,MAAM,IAAIA,CAAC,CAACw9O,SAAS,KAAK,MAAM,EAAE;cAC/BL,uBAAuB,CAACn9O,CAAC,CAAC0qF,KAAK,CAAC,GAAG;gBAAE,GAAG1qF;cAAE,CAAC;YAC/C,CAAC,MAAM;cACHo9O,2BAA2B,CAACp9O,CAAC,CAAC0qF,KAAK,CAAC,GAAG;gBAAE,GAAG1qF;cAAE,CAAC;YACnD;UACJ,CAAC,MAAM;YACH6X,UAAU,CAACpe,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;YACvC,IAAIsG,CAAC,CAACu9O,eAAe,EAAE;cACnB,OAAOF,4BAA4B,CAACr9O,CAAC,CAAC0qF,KAAK,CAAC;YAChD,CAAC,MAAM,IAAI1qF,CAAC,CAACw9O,SAAS,KAAK,MAAM,EAAE;cAC/B,OAAOL,uBAAuB,CAACn9O,CAAC,CAAC0qF,KAAK,CAAC;YAC3C,CAAC,MAAM;cACH,OAAO0yJ,2BAA2B,CAACp9O,CAAC,CAAC0qF,KAAK,CAAC;YAC/C;UACJ;QACJ,CAAC,CAAC;QAEF,IAAI1qF,CAAC,CAACu9O,eAAe,EAAE;UACnB/J,gBAAgB,CAACn5O,WAAW,CAACwd,UAAU,CAAC;QAC5C,CAAC,MAAM,IAAI7X,CAAC,CAACw9O,SAAS,KAAK,MAAM,EAAE;UAC/BlK,WAAW,CAACj5O,WAAW,CAACwd,UAAU,CAAC;QACvC,CAAC,MAAM;UACH07N,eAAe,CAACl5O,WAAW,CAACwd,UAAU,CAAC;QAC3C;QAEAtE,KAAK,EAAE;MACX;IACJ;;IAEA;IACAygO,eAAe,GAAGvzO,KAAK,CAACyB,aAAa,CAAC;MAClC9E,EAAE,EAAE,gBAAgB;MACpB;MACAgF,SAAS,EAAE2xO,OAAO,KAAK,GAAG,GAAG,IAAI,GAAG;IACxC,CAAC,CAAC;IAEFC,eAAe,CAACj3O,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChDw5O,OAAO,GAAGx5O,KAAK,CAACC,MAAM,CAACiI,OAAO,GAAG,GAAG,GAAG,GAAG;IAC9C,CAAC,CAAC;IAEF,MAAM8rL,OAAO,GAAGvxL,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAIg/O,SAAS;QACb;QACA,MAAMloI,OAAO,GAAGhnG,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,oBAAoB,CAAC;QAC1D,MAAMk4O,WAAW,GAAGrL,aAAa,CAACx1O,aAAa,CAAC,kBAAkB,CAAC;QACnEw1O,aAAa,CAACrmO,WAAW,CAACuiL,OAAO,CAAC;QAClC8jD,aAAa,CAACrmO,WAAW,CAAC2xO,YAAY,CAAC;QACvCtL,aAAa,CAACrmO,WAAW,CAAC0xO,WAAW,CAAC;QACtCrL,aAAa,CAACh4O,WAAW,CAACk7G,OAAO,CAAC;QAClC;QACA,IACI75F,MAAM,CAAC8B,IAAI,CAAC2/N,uBAAuB,CAAC,CAACjjP,MAAM,GAAG,CAAC,IAC/CwhB,MAAM,CAAC8B,IAAI,CAAC4/N,2BAA2B,CAAC,CAACljP,MAAM,GAAG,CAAC,IACnDwhB,MAAM,CAAC8B,IAAI,CAAC6/N,4BAA4B,CAAC,CAACnjP,MAAM,GAAG,CAAC,EACtD;UACE,MAAM0jP,iBAAiB,GAAGd,gBAAgB,CAACK,uBAAuB,CAAC;UACnE,MAAMU,eAAe,GAAGf,gBAAgB,CAACM,2BAA2B,CAAC;UACrE,MAAMU,gBAAgB,GAAGhB,gBAAgB,CAACO,4BAA4B,CAAC;UACvEI,SAAS,GAAGtI,UAAU,CAAC4I,6BAA6B,CAChD5yD,MAAM,EACN,GAAG,EACHyf,UAAU,EACVgzC,iBAAiB,EACjBC,eAAe,EACfC,gBAAgB,EAChB,OAAO;UAAE;UACT,OAAO;UAAE;UACT/J,OAAO,CAAE;UACb,CAAC;QACL,CAAC,MAAM;UACH;UACA,MAAM6J,iBAAiB,GAAGd,gBAAgB,CAACK,uBAAuB,CAAC;UACnE,MAAMU,eAAe,GAAGf,gBAAgB,CAACM,2BAA2B,CAAC;UACrE,MAAMU,gBAAgB,GAAGhB,gBAAgB,CAACO,4BAA4B,CAAC;UACvEI,SAAS,GAAGtI,UAAU,CAAC4I,6BAA6B,CAChD5yD,MAAM,EACN,GAAG,EACHyf,UAAU,EACVgzC,iBAAiB,EACjBC,eAAe,EACfC,gBAAgB,EAChB,OAAO;UAAE;UACT,OAAO;UAAE;UACT/J,OAAO,CAAE;UACb,CAAC;QACL;;QAEA;QACA1B,aAAa,CAACrmO,WAAW,CAACupG,OAAO,CAAC;QAClC88H,aAAa,CAACh4O,WAAW,CAACqjP,WAAW,CAAC;QACtCrL,aAAa,CAAC54O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;QACzCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAC1C;IACJ,CAAC,CAAC;;IAEF;IACA;IACA;IACA,MAAMqkP,YAAY,GAAGphP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClD6gP,YAAY,CAACjkP,SAAS,GAAG,oFAAoF;IAC7G,MAAM4jP,YAAY,GAAG/gP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDwgP,YAAY,CAAClkP,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAC1CgkP,YAAY,CAACtjP,WAAW,CAAC25O,eAAe,CAAC;IACzC2J,YAAY,CAACtjP,WAAW,CAAC2jP,YAAY,CAAC;IACtC3L,aAAa,CAACh4O,WAAW,CAACsjP,YAAY,CAAC;IACvCtL,aAAa,CAACh4O,WAAW,CAACk0L,OAAO,CAAC;EACtC;EAEA,eAAe0vD,eAAeA,CAACrzC,UAAU,EAAE;IACvC,MAAMuyC,uBAAuB,GAAG,CAAC,CAAC;IAClC,MAAMC,2BAA2B,GAAG,CAAC,CAAC;IACtC,MAAMC,4BAA4B,GAAG,CAAC,CAAC;;IAEvC;IACA5J,iBAAiB,CAAC15O,SAAS,GAAG,EAAE;IAChC25O,qBAAqB,CAAC35O,SAAS,GAAG,EAAE;IACpC45O,sBAAsB,CAAC55O,SAAS,GAAG,EAAE;;IAErC;IACA,MAAM0yH,WAAW,GAAG,MAAMshF,QAAQ,CAACuvC,6BAA6B,CAAC;MAC7D9zM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBk3G,YAAY,EAAE2gC;IAClB,CAAC,CAAC;IAEF,IAAI53K,KAAK,GAAG,CAAC;IAEb,IAAIk5G,WAAW,EAAE;MACb,KAAK,MAAM7kF,IAAI,IAAI6kF,WAAW,EAAE;QAC5BA,WAAW,CAAC7kF,IAAI,CAAC,CAAC8iD,KAAK,GAAGn3E,KAAK;QAC/B,MAAMvT,CAAC,GAAGysH,WAAW,CAAC7kF,IAAI,CAAC;QAC3B,MAAM/vB,UAAU,GAAGjb,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAChD0a,UAAU,CAACpe,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;QACtC,MAAMw9G,WAAW,GAAGv6G,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QAC/Cg6G,WAAW,CAAC/1G,SAAS,GAAGpB,CAAC,CAACm3G,WAAW;QACrCt/F,UAAU,CAACxd,WAAW,CAAC88G,WAAW,CAAC;QAEnCt/F,UAAU,CAAC9a,gBAAgB,CAAC,OAAO,EAAE,MAAM;UACvC,IAAI,CAAC8a,UAAU,CAACpe,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC5CsQ,UAAU,CAACpe,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;YACpC,IAAIqG,CAAC,CAACu9O,eAAe,EAAE;cACnBF,4BAA4B,CAACr9O,CAAC,CAAC0qF,KAAK,CAAC,GAAG;gBAAE,GAAG1qF;cAAE,CAAC;YACpD,CAAC,MAAM,IAAIA,CAAC,CAACw9O,SAAS,KAAK,MAAM,EAAE;cAC/BL,uBAAuB,CAACn9O,CAAC,CAAC0qF,KAAK,CAAC,GAAG;gBAAE,GAAG1qF;cAAE,CAAC;YAC/C,CAAC,MAAM;cACHo9O,2BAA2B,CAACp9O,CAAC,CAAC0qF,KAAK,CAAC,GAAG;gBAAE,GAAG1qF;cAAE,CAAC;YACnD;UACJ,CAAC,MAAM;YACH6X,UAAU,CAACpe,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;YACvC,IAAIsG,CAAC,CAACu9O,eAAe,EAAE;cACnB,OAAOF,4BAA4B,CAACr9O,CAAC,CAAC0qF,KAAK,CAAC;YAChD,CAAC,MAAM,IAAI1qF,CAAC,CAACw9O,SAAS,KAAK,MAAM,EAAE;cAC/B,OAAOL,uBAAuB,CAACn9O,CAAC,CAAC0qF,KAAK,CAAC;YAC3C,CAAC,MAAM;cACH,OAAO0yJ,2BAA2B,CAACp9O,CAAC,CAAC0qF,KAAK,CAAC;YAC/C;UACJ;QACJ,CAAC,CAAC;QAEF,IAAI1qF,CAAC,CAACu9O,eAAe,EAAE;UACnB5J,sBAAsB,CAACt5O,WAAW,CAACwd,UAAU,CAAC;QAClD,CAAC,MAAM,IAAI7X,CAAC,CAACw9O,SAAS,KAAK,MAAM,EAAE;UAC/B/J,iBAAiB,CAACp5O,WAAW,CAACwd,UAAU,CAAC;QAC7C,CAAC,MAAM;UACH67N,qBAAqB,CAACr5O,WAAW,CAACwd,UAAU,CAAC;QACjD;QAEAtE,KAAK,EAAE;MACX;IACJ;;IAEA;IACAygO,eAAe,GAAGvzO,KAAK,CAACyB,aAAa,CAAC;MAClC9E,EAAE,EAAE,gBAAgB;MACpBgF,SAAS,EAAE2xO,OAAO,KAAK,GAAG,GAAG,IAAI,GAAG;IACxC,CAAC,CAAC;IAEFC,eAAe,CAACj3O,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChDw5O,OAAO,GAAGx5O,KAAK,CAACC,MAAM,CAACiI,OAAO,GAAG,GAAG,GAAG,GAAG;IAC9C,CAAC,CAAC;IAEF,MAAM8rL,OAAO,GAAGvxL,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAIy/O,WAAW;QACf;QACA,MAAM3oI,OAAO,GAAGhnG,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,4BAA4B,CAAC;QAClE,MAAMk4O,WAAW,GAAGlL,YAAY,CAAC31O,aAAa,CAAC,kBAAkB,CAAC;QAClE21O,YAAY,CAACxmO,WAAW,CAACuiL,OAAO,CAAC;QACjCikD,YAAY,CAACxmO,WAAW,CAAC2xO,YAAY,CAAC;QACtCnL,YAAY,CAACxmO,WAAW,CAAC0xO,WAAW,CAAC;QACrClL,YAAY,CAACn4O,WAAW,CAACk7G,OAAO,CAAC;QACjC;QACA,IACI75F,MAAM,CAAC8B,IAAI,CAAC2/N,uBAAuB,CAAC,CAACjjP,MAAM,GAAG,CAAC,IAC/CwhB,MAAM,CAAC8B,IAAI,CAAC4/N,2BAA2B,CAAC,CAACljP,MAAM,GAAG,CAAC,IACnDwhB,MAAM,CAAC8B,IAAI,CAAC6/N,4BAA4B,CAAC,CAACnjP,MAAM,GAAG,CAAC,EACtD;UACE,MAAM0jP,iBAAiB,GAAGd,gBAAgB,CAACK,uBAAuB,CAAC;UACnE,MAAMU,eAAe,GAAGf,gBAAgB,CAACM,2BAA2B,CAAC;UACrE,MAAMU,gBAAgB,GAAGhB,gBAAgB,CAACO,4BAA4B,CAAC;UACvEa,WAAW,GAAG,MAAM/I,UAAU,CAACgJ,yBAAyB,CACpDhzD,MAAM,EACN,GAAG,EACHyf,UAAU,EACVgzC,iBAAiB,EACjBC,eAAe,EACfC,gBAAgB,EAChB,OAAO;UAAE;UACT,OAAO;UAAE;UACT/J,OAAO,CAAE;UACb,CAAC;QACL,CAAC,MAAM;UACH,MAAM6J,iBAAiB,GAAGd,gBAAgB,CAACK,uBAAuB,CAAC;UACnE,MAAMU,eAAe,GAAGf,gBAAgB,CAACM,2BAA2B,CAAC;UACrE,MAAMU,gBAAgB,GAAGhB,gBAAgB,CAACO,4BAA4B,CAAC;UACvEa,WAAW,GAAG,MAAM/I,UAAU,CAACgJ,yBAAyB,CACpDhzD,MAAM,EACN,GAAG,EACHyf,UAAU,EACVgzC,iBAAiB,EACjBC,eAAe,EACfC,gBAAgB,EAChB,OAAO;UAAE;UACT,OAAO;UAAE;UACT/J,OAAO,CAAE;UACb,CAAC;QACL;QAEAqK,iBAAiB,CAACF,WAAW,CAAC;;QAE9B;QACA1L,YAAY,CAACxmO,WAAW,CAACupG,OAAO,CAAC;QACjCi9H,YAAY,CAACn4O,WAAW,CAACqjP,WAAW,CAAC;QACrClL,YAAY,CAAC/4O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;QACxCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAC1C;IACJ,CAAC,CAAC;IAEF,MAAMqkP,YAAY,GAAGphP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClD6gP,YAAY,CAACjkP,SAAS,GAAG,oFAAoF;IAC7G,MAAM4jP,YAAY,GAAG/gP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDwgP,YAAY,CAAClkP,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAC1CgkP,YAAY,CAACtjP,WAAW,CAAC25O,eAAe,CAAC;IACzC2J,YAAY,CAACtjP,WAAW,CAAC2jP,YAAY,CAAC;IACtCxL,YAAY,CAACn4O,WAAW,CAACsjP,YAAY,CAAC;IACtCnL,YAAY,CAACn4O,WAAW,CAACk0L,OAAO,CAAC;EACrC;EAEA,eAAe8vD,aAAaA,CAACzzC,UAAU,EAAE;IACrC,MAAMuyC,uBAAuB,GAAG,CAAC,CAAC;IAClC,MAAMC,2BAA2B,GAAG,CAAC,CAAC;IACtC,MAAMC,4BAA4B,GAAG,CAAC,CAAC;;IAEvC;IACAzJ,eAAe,CAAC75O,SAAS,GAAG,EAAE;IAC9B85O,eAAe,CAAC95O,SAAS,GAAG,EAAE;IAC9B+5O,mBAAmB,CAAC/5O,SAAS,GAAG,EAAE;;IAElC;IACA,MAAM0yH,WAAW,GAAG,MAAMshF,QAAQ,CAACuvC,6BAA6B,CAAC;MAC7D9zM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBk3G,YAAY,EAAE2gC,MAAM,CAAE;IAC1B,CAAC,CAAC;IAEF,IAAI53K,KAAK,GAAG,CAAC;IAEb,IAAIk5G,WAAW,EAAE;MACb,KAAK,MAAM7kF,IAAI,IAAI6kF,WAAW,EAAE;QAC5BA,WAAW,CAAC7kF,IAAI,CAAC,CAAC8iD,KAAK,GAAGn3E,KAAK;QAC/B,MAAMvT,CAAC,GAAGysH,WAAW,CAAC7kF,IAAI,CAAC;QAC3B,MAAM/vB,UAAU,GAAGjb,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAChD0a,UAAU,CAACpe,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;QACtC,MAAMw9G,WAAW,GAAGv6G,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QAC/Cg6G,WAAW,CAAC/1G,SAAS,GAAGpB,CAAC,CAACm3G,WAAW;QACrCt/F,UAAU,CAACxd,WAAW,CAAC88G,WAAW,CAAC;QACnC;QACA;;QAEAt/F,UAAU,CAAC9a,gBAAgB,CAAC,OAAO,EAAE,MAAM;UACvC,IAAI,CAAC8a,UAAU,CAACpe,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC5CsQ,UAAU,CAACpe,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;YACpC,IAAIqG,CAAC,CAACu9O,eAAe,EAAE;cACnBF,4BAA4B,CAACr9O,CAAC,CAAC0qF,KAAK,CAAC,GAAG;gBAAE,GAAG1qF;cAAE,CAAC;YACpD,CAAC,MAAM,IAAIA,CAAC,CAACw9O,SAAS,KAAK,MAAM,EAAE;cAC/BL,uBAAuB,CAACn9O,CAAC,CAAC0qF,KAAK,CAAC,GAAG;gBAAE,GAAG1qF;cAAE,CAAC;YAC/C,CAAC,MAAM;cACHo9O,2BAA2B,CAACp9O,CAAC,CAAC0qF,KAAK,CAAC,GAAG;gBAAE,GAAG1qF;cAAE,CAAC;YACnD;UACJ,CAAC,MAAM;YACH6X,UAAU,CAACpe,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;YACvC,IAAIsG,CAAC,CAACu9O,eAAe,EAAE;cACnB,OAAOF,4BAA4B,CAACr9O,CAAC,CAAC0qF,KAAK,CAAC;YAChD,CAAC,MAAM,IAAI1qF,CAAC,CAACw9O,SAAS,KAAK,MAAM,EAAE;cAC/B,OAAOL,uBAAuB,CAACn9O,CAAC,CAAC0qF,KAAK,CAAC;YAC3C,CAAC,MAAM;cACH,OAAO0yJ,2BAA2B,CAACp9O,CAAC,CAAC0qF,KAAK,CAAC;YAC/C;UACJ;QACJ,CAAC,CAAC;QAEF,IAAI1qF,CAAC,CAACu9O,eAAe,EAAE;UACnB1J,eAAe,CAACx5O,WAAW,CAACwd,UAAU,CAAC;QAC3C,CAAC,MAAM,IAAI7X,CAAC,CAACw9O,SAAS,KAAK,MAAM,EAAE;UAC/B5J,eAAe,CAACv5O,WAAW,CAACwd,UAAU,CAAC;QAC3C,CAAC,MAAM;UACHi8N,mBAAmB,CAACz5O,WAAW,CAACwd,UAAU,CAAC;QAC/C;QAEAtE,KAAK,EAAE;MACX;IACJ;IAEA,MAAMg7K,OAAO,GAAGvxL,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,cAAc;MACpBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB;QACA;;QAEA;QACA,IAAIy/O,WAAW,GAAG,EAAE;QACpB;QACA,MAAM3oI,OAAO,GAAGhnG,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,oBAAoB,CAAC;QAC1D,MAAMk4O,WAAW,GAAGnL,UAAU,CAAC11O,aAAa,CAAC,kBAAkB,CAAC;QAChE01O,UAAU,CAACvmO,WAAW,CAACuiL,OAAO,CAAC;QAC/BgkD,UAAU,CAACvmO,WAAW,CAAC0xO,WAAW,CAAC;QACnCnL,UAAU,CAACl4O,WAAW,CAACk7G,OAAO,CAAC;QAC/B;QACA;QACA;QACA;QACA;QACA;QACA,MAAMqoI,iBAAiB,GAAGd,gBAAgB,CAACK,uBAAuB,CAAC;QACnE,MAAMU,eAAe,GAAGb,eAAe,CAACI,2BAA2B,CAAC;QACpE,MAAMU,gBAAgB,GAAGhB,gBAAgB,CAACO,4BAA4B,CAAC;QACvE,IAAI;UACA;UACA;UACAa,WAAW,GAAG,MAAMI,cAAc,CAACC,6BAA6B,CAAC;YAC7D/0M,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;YACtBsqM,iBAAiB,EAAEA,iBAAiB;YACpCC,eAAe,EAAEA,eAAe;YAChCC,gBAAgB,EAAEA,gBAAgB;YAClC3yD,MAAM,EAAEA,MAAM;YACd1rI,UAAU,EAAE8wD,gBAAgB,CAACnzG;UACjC,CAAC,CAAC;QACN,CAAC,CAAC,OAAOuO,KAAK,EAAE;UACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC6yO,UAAU,CAAC;QACjC;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA,IACIN,WAAW,KACVA,WAAW,CAAC,CAAC,CAAC,KAAK,iCAAiC,IACjDA,WAAW,CAAC,CAAC,CAAC,KAAK,0DAA0D,CAAC,EACpF;UACEO,wBAAwB,CAACP,WAAW,CAAC;QACzC,CAAC,MAAM;UACHQ,6BAA6B,CAACR,WAAW,CAAC;QAC9C;QAEA3L,UAAU,CAACvmO,WAAW,CAACupG,OAAO,CAAC;QAC/Bg9H,UAAU,CAACl4O,WAAW,CAACqjP,WAAW,CAAC;QACnCnL,UAAU,CAAC94O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;QACtCq4O,aAAa,CAACt4O,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;;QAEtC;MACJ;IACJ,CAAC,CAAC;IAEF44O,UAAU,CAACl4O,WAAW,CAACk0L,OAAO,CAAC;EACnC;EAEA,SAASmwD,6BAA6BA,CAACC,kBAAkB,EAAE;IACvDh3O,OAAO,CAACu6B,GAAG,CAAC,+BAA+B,EAAEy8M,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACnE,IAAIC,mBAAmB,GAAGjyO,KAAK,CAAC1P,KAAK,CAAC;MAClCG,EAAE,EAAE,gBAAgB;MACpBa,UAAU,EAAE,SAAS;MACrBkP,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAI0xO,cAAc,GAAGjiP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClD0hP,cAAc,CAACplP,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACvC,IAAImlP,YAAY,GAAGliP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD2hP,YAAY,CAACrlP,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrC,IAAIolP,UAAU,GAAG/hP,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,yBAAyB;MAC/BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjB;MACAc,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBsrB,SAAS,CAACi1N,SAAS,CAACC,SAAS,CAACN,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACpD;QACA70O,OAAO,CAACjQ,IAAI,CAAC,CAAC;QACdqlP,WAAW,CAAC,CAAC;MACjB;IACJ,CAAC,CAAC;IACF,IAAIC,gBAAgB,GAAGniP,MAAM,CAACC,KAAK,CAAC;MAChCM,IAAI,EAAE,oBAAoB;MAC1BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBkO,KAAK,CAAC/S,IAAI,CAACglP,mBAAmB,CAAC;QAC/B90O,OAAO,CAACjQ,IAAI,CAAC,CAAC;QACdulP,4BAA4B,CAACT,kBAAkB,CAAC;MACpD;IACJ,CAAC,CAAC;IACF,IAAIU,QAAQ,GAAGriP,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjB;MACA;MACAc,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBkO,KAAK,CAAC/S,IAAI,CAACglP,mBAAmB,CAAC;QAC/B90O,OAAO,CAACjQ,IAAI,CAAC,CAAC;MAClB;IACJ,CAAC,CAAC;IAEFglP,cAAc,CAACxkP,WAAW,CAAC0kP,UAAU,CAAC;IACtCF,cAAc,CAACxkP,WAAW,CAAC8kP,gBAAgB,CAAC;IAC5CL,YAAY,CAACzkP,WAAW,CAACglP,QAAQ,CAAC;IAClC,IAAIC,cAAc,GAAG1iP,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDmiP,cAAc,CAACvlP,SAAS,GAAG4kP,kBAAkB,CAAC,CAAC,CAAC;IAChDC,mBAAmB,CAACvkP,WAAW,CAACilP,cAAc,CAAC;IAC/CV,mBAAmB,CAACvkP,WAAW,CAACwkP,cAAc,CAAC;IAC/CD,mBAAmB,CAACvkP,WAAW,CAACykP,YAAY,CAAC;IAC7CnyO,KAAK,CAAC9S,IAAI,CAAC+kP,mBAAmB,CAAC;EACnC;EAEA,SAASQ,4BAA4BA,CAACT,kBAAkB,EAAE;IACtDh3O,OAAO,CAACu6B,GAAG,CAAC,8BAA8B,EAAEy8M,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAClE,IAAIY,kBAAkB,GAAG5yO,KAAK,CAAC1P,KAAK,CAAC;MACjCG,EAAE,EAAE,gBAAgB;MACpBa,UAAU,EAAE,SAAS;MACrBkP,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIqyO,aAAa,GAAG5iP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDqiP,aAAa,CAAC/lP,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACtC,IAAImlP,YAAY,GAAGliP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD2hP,YAAY,CAACrlP,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrC,IAAIolP,UAAU,GAAG/hP,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,yBAAyB;MAC/BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjB;MACAc,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBsrB,SAAS,CAACi1N,SAAS,CAACC,SAAS,CAACN,kBAAkB,CAAC,CAAC,CAAC,GAAG,UAAU,GAAGA,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACzF;QACA70O,OAAO,CAACjQ,IAAI,CAAC,CAAC;QACdqlP,WAAW,CAAC,CAAC;MACjB;IACJ,CAAC,CAAC;IACF,IAAIO,iBAAiB,GAAGziP,MAAM,CAACC,KAAK,CAAC;MACjCM,IAAI,EAAE,oBAAoB;MAC1BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjB;MACAc,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBkO,KAAK,CAAC/S,IAAI,CAAC2lP,kBAAkB,CAAC;QAC9Bz1O,OAAO,CAACjQ,IAAI,CAAC,CAAC;QACd6kP,6BAA6B,CAACC,kBAAkB,CAAC;MACrD;IACJ,CAAC,CAAC;IACF,IAAIU,QAAQ,GAAGriP,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjB;MACA;MACAc,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBkO,KAAK,CAAC/S,IAAI,CAAC2lP,kBAAkB,CAAC;QAC9Bz1O,OAAO,CAACjQ,IAAI,CAAC,CAAC;MAClB;IACJ,CAAC,CAAC;IAEF2lP,aAAa,CAACnlP,WAAW,CAAC0kP,UAAU,CAAC;IACrCS,aAAa,CAACnlP,WAAW,CAAColP,iBAAiB,CAAC;IAC5CX,YAAY,CAACzkP,WAAW,CAACglP,QAAQ,CAAC;IAClC,IAAIK,aAAa,GAAG9iP,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC/CuiP,aAAa,CAAC3lP,SAAS,GAAG4kP,kBAAkB,CAAC,CAAC,CAAC,GAAG,YAAY,GAAGA,kBAAkB,CAAC,CAAC,CAAC;IACtFY,kBAAkB,CAACllP,WAAW,CAACqlP,aAAa,CAAC;IAC7CH,kBAAkB,CAACllP,WAAW,CAACmlP,aAAa,CAAC;IAC7CD,kBAAkB,CAACllP,WAAW,CAACykP,YAAY,CAAC;IAC5CnyO,KAAK,CAAC9S,IAAI,CAAC0lP,kBAAkB,CAAC;EAClC;EAEA,SAASL,WAAWA,CAAA,EAAG;IACnB,IAAIS,OAAO,GAAGhzO,KAAK,CAAC1P,KAAK,CAAC;MACtBG,EAAE,EAAE,gBAAgB;MACpBa,UAAU,EAAE,SAAS;MACrBkP,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIyyO,SAAS,GAAGhjP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CyiP,SAAS,CAACnmP,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAClC,IAAIolP,UAAU,GAAG/hP,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjB;MACAc,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBkO,KAAK,CAAC/S,IAAI,CAAC+lP,OAAO,CAAC;QACnB71O,OAAO,CAACjQ,IAAI,CAAC,CAAC;MAClB;IACJ,CAAC,CAAC;IAEF+lP,SAAS,CAACvlP,WAAW,CAAC0kP,UAAU,CAAC;IACjC,IAAIc,SAAS,GAAGjjP,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3C0iP,SAAS,CAAC9lP,SAAS,GAAG,2BAA2B;IACjD4lP,OAAO,CAACtlP,WAAW,CAACwlP,SAAS,CAAC;IAC9BF,OAAO,CAACtlP,WAAW,CAACulP,SAAS,CAAC;IAC9BjzO,KAAK,CAAC9S,IAAI,CAAC8lP,OAAO,CAAC;EACvB;EAEA,SAASlB,wBAAwBA,CAACE,kBAAkB,EAAE;IAClD,IAAImB,sBAAsB,GAAGnzO,KAAK,CAAC1P,KAAK,CAAC;MACrCG,EAAE,EAAE,gBAAgB;MACpBa,UAAU,EAAE,SAAS;MACrBkP,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIyyO,SAAS,GAAGhjP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CyiP,SAAS,CAACnmP,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAClC,IAAIolP,UAAU,GAAG/hP,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjB;MACAc,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBkO,KAAK,CAAC/S,IAAI,CAACkmP,sBAAsB,CAAC;QAClCh2O,OAAO,CAACjQ,IAAI,CAAC,CAAC;MAClB;IACJ,CAAC,CAAC;IAEF+lP,SAAS,CAACvlP,WAAW,CAAC0kP,UAAU,CAAC;IACjC,IAAIgB,yBAAyB,GAAGnjP,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3D4iP,yBAAyB,CAAChmP,SAAS,GAAG4kP,kBAAkB,CAAC,CAAC,CAAC;IAC3DmB,sBAAsB,CAACzlP,WAAW,CAAC0lP,yBAAyB,CAAC;IAC7DD,sBAAsB,CAACzlP,WAAW,CAACulP,SAAS,CAAC;IAC7CjzO,KAAK,CAAC9S,IAAI,CAACimP,sBAAsB,CAAC;EACtC;EAEA,SAAS1B,iBAAiBA,CAAC4B,oBAAoB,EAAE;IAC7C,IAAIC,UAAU,GAAGtzO,KAAK,CAAC1P,KAAK,CAAC;MACzBG,EAAE,EAAE,gBAAgB;MACpBa,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,IAAIiiP,YAAY,GAAGtjP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD+iP,YAAY,CAACzmP,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrC,IAAIolP,UAAU,GAAG/hP,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBkO,KAAK,CAAC/S,IAAI,CAACqmP,UAAU,CAAC;QACtBn2O,OAAO,CAACjQ,IAAI,CAAC,CAAC;MAClB;IACJ,CAAC,CAAC;IAEFqmP,YAAY,CAAC7lP,WAAW,CAAC0kP,UAAU,CAAC;IACpC,IAAIoB,YAAY,GAAGvjP,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC9CgjP,YAAY,CAACpmP,SAAS,GAAGimP,oBAAoB;IAC7CC,UAAU,CAAC5lP,WAAW,CAAC8lP,YAAY,CAAC;IACpCF,UAAU,CAAC5lP,WAAW,CAAC6lP,YAAY,CAAC;IACpCvzO,KAAK,CAAC9S,IAAI,CAAComP,UAAU,CAAC;EAC1B;EAEA,SAASvI,kBAAkBA,CAAA,EAAG;IAC1B,MAAM0I,aAAa,GAAGxjP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDijP,aAAa,CAAC3mP,SAAS,CAACE,GAAG,CAAC,qBAAqB,EAAE,SAAS,CAAC;IAE7D,MAAM0mP,SAAS,GAAGrjP,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC,WAAW;IAC5B,CAAC,CAAC;IACF,MAAMqiP,UAAU,GAAGtjP,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,mBAAmB;MACzBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC,YAAY;IAC7B,CAAC,CAAC;IAEF,MAAMsiP,kBAAkB,GAAGvjP,MAAM,CAACC,KAAK,CAAC;MACpCM,IAAI,EAAE,sBAAsB;MAC5BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC,YAAY,CAAC;MAC1BQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAIg/O,SAAS;QACb,MAAMN,uBAAuB,GAAG,CAAC,CAAC;QAClC,MAAMC,2BAA2B,GAAG,CAAC,CAAC;QACtC,MAAMC,4BAA4B,GAAG,CAAC,CAAC;QACvC,IAAIzyC,UAAU,GAAG,OAAO;;QAExB;QACA;QACA;QACA;QACA;QACA;QACA;QACA,MAAMgzC,iBAAiB,GAAGd,gBAAgB,CAACK,uBAAuB,CAAC;QACnE,MAAMU,eAAe,GAAGf,gBAAgB,CAACM,2BAA2B,CAAC;QACrE,MAAMU,gBAAgB,GAAGhB,gBAAgB,CAACO,4BAA4B,CAAC;QACvEI,SAAS,GAAGtI,UAAU,CAAC4I,6BAA6B,CAChD5yD,MAAM,EACN,GAAG,EACHyf,UAAU,EACVgzC,iBAAiB,EACjBC,eAAe,EACfC,gBAAgB,EAChB,OAAO;QAAE;QACT,MAAM;QAAE;QACR,GAAG,CAAE;QACT,CAAC;MACL;IACJ,CAAC,CAAC;IAEF,MAAM0C,UAAU,GAAGxjP,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,yBAAyB;MAC/BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC,YAAY;IAC7B,CAAC,CAAC;IACF,MAAMwiP,eAAe,GAAGzjP,MAAM,CAACC,KAAK,CAAC;MACjCM,IAAI,EAAE,gBAAgB;MACtBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EACN40O,UAAU,KAAK,GAAG,IAAI7nO,CAAC,CAACC,OAAO,CAAC2lD,aAAa,KAAK,KAAK,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAU;IACtH,CAAC,CAAC;IACF,MAAM8vL,aAAa,GAAG1jP,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,cAAc;MACpBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE40O,UAAU,KAAK,GAAG,IAAI7nO,CAAC,CAACC,OAAO,CAACunC,UAAU,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU;IAC7G,CAAC,CAAC;IACF,MAAMmuM,YAAY,GAAG3jP,MAAM,CAACC,KAAK,CAAC;MAC9BM,IAAI,EAAE,cAAc;MACpBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EACN60O,gBAAgB,IAAI9nO,CAAC,CAACC,OAAO,CAACywC,UAAU,IAAIm3L,UAAU,KAAK,GAAG,GACxD,CAAC,cAAc,CAAC,GAChB,CAAC,cAAc,EAAE,UAAU;IACzC,CAAC,CAAC;IACF,MAAM+N,SAAS,GAAG5jP,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE60O,gBAAgB,IAAI9nO,CAAC,CAACC,OAAO,CAACywC,UAAU,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU;IACnG,CAAC,CAAC;IACF,MAAMktG,SAAS,GAAG5rJ,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,aAAa;MACnBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE+0O,wBAAwB,GAC9BhoO,CAAC,CAACC,OAAO,CAAC0wC,UAAU,GAChB,CAAC,WAAW,CAAC,GACb,CAAC,WAAW,EAAE,UAAU,CAAC,GAC7Bk3L,UAAU,KAAK,GAAG,IAAIC,gBAAgB,IAAI9nO,CAAC,CAACC,OAAO,CAACywC,UAAU,IAAI1wC,CAAC,CAACC,OAAO,CAAC0wC,UAAU,GAClF,CAAC,WAAW,CAAC,GACb,CAAC,WAAW,EAAE,UAAU;IACtC,CAAC,CAAC;IACF,MAAMklM,aAAa,GAAG7jP,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,iBAAiB;MACvBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE+0O,wBAAwB,GAC9B,CAAC,eAAe,EAAE,UAAU,CAAC,GAC7B,CAACF,gBAAgB,IAAI9nO,CAAC,CAACC,OAAO,CAACywC,UAAU,GACrC,CAAC,eAAe,CAAC,GACjB,CAAC,eAAe,EAAE,UAAU;IAC1C,CAAC,CAAC;IACF,MAAMolM,aAAa,GAAG9jP,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,kBAAkB;MACxBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE+0O,wBAAwB,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,aAAa;IACvF,CAAC,CAAC;;IAEF;IACAoN,aAAa,CAAC/lP,WAAW,CAACgmP,SAAS,CAAC;IACpCD,aAAa,CAAC/lP,WAAW,CAACimP,UAAU,CAAC;IACrCF,aAAa,CAAC/lP,WAAW,CAACkmP,kBAAkB,CAAC;IAC7CH,aAAa,CAAC/lP,WAAW,CAAComP,eAAe,CAAC;IAE1C,IAAI1N,UAAU,KAAK,EAAE,EAAE;MACnB,MAAMgO,cAAc,GAAGnkP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACpD4jP,cAAc,CAACtnP,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;MACjDonP,cAAc,CAAChnP,SAAS,GAAG,0BAA0Bg5O,UAAU,EAAE;MACjEqN,aAAa,CAAC/lP,WAAW,CAAC0mP,cAAc,CAAC;IAC7C;IAEAX,aAAa,CAAC/lP,WAAW,CAACqmP,aAAa,CAAC;IACxCN,aAAa,CAAC/lP,WAAW,CAACsmP,YAAY,CAAC;IACvCP,aAAa,CAAC/lP,WAAW,CAACumP,SAAS,CAAC;IACpCR,aAAa,CAAC/lP,WAAW,CAACuuJ,SAAS,CAAC;IACpCw3F,aAAa,CAAC/lP,WAAW,CAACwmP,aAAa,CAAC;IACxCT,aAAa,CAAC/lP,WAAW,CAACymP,aAAa,CAAC;IAExCV,aAAa,CAACrjP,gBAAgB,CAAC,OAAO,EAAE,MAAMoC,CAAC,IAAI;MAC/CA,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAElC,IAAIqnP,YAAY;MAEhB,QAAQ7hP,CAAC,CAAC3E,MAAM;QACZ,KAAK6lP,SAAS;QACd,KAAKC,UAAU;UAAE;YACbU,YAAY,GAAG,eAAe;YAC9B;UACJ;QACA,KAAKT,kBAAkB;UAAE;YACrB;YACA;UACJ;QACA,KAAKC,UAAU;UAAE;YACb;YACAQ,YAAY,GAAG,yBAAyB;YACxCnpI,YAAY,GAAG;cACXruE,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;cACtBk3G,YAAY,EAAE0rF,gBAAgB,CAAC;YACnC,CAAC;YACD;UACJ;QACA,KAAKuK,eAAe;UAAE;YAClB;YACAO,YAAY,GAAG,cAAc;YAC7BnpI,YAAY,GAAG;cACXruE,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;cACtBk3G,YAAY,EAAE0rF,gBAAgB,CAAC;YACnC,CAAC;YACD;YACA;UACJ;QACA,KAAKwK,aAAa;UAAE;YAChB;YACAM,YAAY,GAAG,YAAY;YAC3BnpI,YAAY,GAAG;cACXruE,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;cACtBk3G,YAAY,EAAE0rF,gBAAgB,CAAC;YACnC,CAAC;YACD;UACJ;QACA,KAAKyK,YAAY;UAAE;YACfK,YAAY,GAAG,iBAAiB;YAChC;UACJ;QACA,KAAKJ,SAAS;UAAE;YACZI,YAAY,GAAG,oBAAoB;YACnC;UACJ;QACA,KAAKp4F,SAAS;UAAE;YACZo4F,YAAY,GAAG,cAAc;YAC7B;UACJ;QACA,KAAKH,aAAa;UAAE;YAChBG,YAAY,GAAG,kBAAkB;YACjC;UACJ;QACA,KAAKF,aAAa;UAAE;YAChBE,YAAY,GAAG,sBAAsB;UACzC;QACA;UAAS;YACL;UACJ;MACJ;MACA7hP,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAErC,IAAIsnP,YAAY,EAAE;QACd,MAAMC,mBAAmB,GAAGrkP,QAAQ,CAACiD,cAAc,CAACmhP,YAAY,CAAC;QACjEjP,aAAa,CAACt4O,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;QACzCunP,mBAAmB,CAACxnP,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAChD;MAEA,IAAIqnP,YAAY,KAAK,YAAY,EAAE;QAC/B,MAAMp2C,UAAU,GAAGzrM,CAAC,CAAC3E,MAAM,KAAKkmP,aAAa,GAAG,OAAO,GAAG,MAAM;QAChE;QACArC,aAAa,CAACzzC,UAAU,CAAC;MAC7B;MAEA,IAAIo2C,YAAY,KAAK,eAAe,EAAE;QAClC,MAAMp2C,UAAU,GAAGzrM,CAAC,CAAC3E,MAAM,KAAK6lP,SAAS,GAAG,OAAO,GAAG,MAAM;QAC5DnD,eAAe,CAACtyC,UAAU,CAAC;MAC/B;MAEA,IAAIo2C,YAAY,KAAK,cAAc,EAAE;QACjC,MAAMp2C,UAAU,GAAGzrM,CAAC,CAAC3E,MAAM,KAAKimP,eAAe,GAAG,OAAO,GAAG,MAAM;QAClExC,eAAe,CAACrzC,UAAU,CAAC;MAC/B;IACJ,CAAC,CAAC;IAEF,OAAOw1C,aAAa;EACxB;EACA,eAAec,aAAaA,CAAA,EAAG;IAC3B;IACA;IACA;IACA;IACA;IACApP,SAAS,GAAGnlO,KAAK,CAAC1P,KAAK,CAAC;MACpBgB,UAAU,EAAE;IAChB,CAAC,CAAC;IAEF05O,aAAa,GAAG/6O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7Cw6O,aAAa,CAACl+O,SAAS,CAACE,GAAG,CAAC,0BAA0B,CAAC;IAEvDo4O,aAAa,GAAG2F,kBAAkB,CAAC,CAAC;IACpC1F,eAAe,GAAG4F,oBAAoB,CAAC,CAAC;IACxC3F,kBAAkB,GAAGyG,uBAAuB,CAAC,CAAC;IAC9CxG,YAAY,GAAG4G,iBAAiB,CAAC,CAAC;IAClC3G,gBAAgB,GAAGsH,qBAAqB,CAAC,CAAC;IAC1CrH,iBAAiB,GAAGuH,sBAAsB,CAAC,CAAC;IAC5CtH,aAAa,GAAGiI,kBAAkB,CAAC,CAAC;IACpChI,uBAAuB,GAAGyI,6BAA6B,CAAC,CAAC;IACzDxI,UAAU,GAAGyI,eAAe,CAAC,CAAC;IAC9BtI,oBAAoB,GAAG+I,yBAAyB,CAAC,CAAC;IAClDjJ,YAAY,GAAG4I,iBAAiB,CAAC,CAAC;IAElCzD,aAAa,CAACt9O,WAAW,CAAC03O,aAAa,CAAC;IACxC4F,aAAa,CAACt9O,WAAW,CAAC23O,eAAe,CAAC;IAC1C2F,aAAa,CAACt9O,WAAW,CAAC43O,kBAAkB,CAAC;IAC7C0F,aAAa,CAACt9O,WAAW,CAAC63O,YAAY,CAAC;IACvCyF,aAAa,CAACt9O,WAAW,CAAC83O,gBAAgB,CAAC;IAC3CwF,aAAa,CAACt9O,WAAW,CAAC+3O,iBAAiB,CAAC;IAC5CuF,aAAa,CAACt9O,WAAW,CAACg4O,aAAa,CAAC;IACxCsF,aAAa,CAACt9O,WAAW,CAACi4O,uBAAuB,CAAC;IAClDqF,aAAa,CAACt9O,WAAW,CAACk4O,UAAU,CAAC;IACrCoF,aAAa,CAACt9O,WAAW,CAACq4O,oBAAoB,CAAC;IAC/CiF,aAAa,CAACt9O,WAAW,CAACm4O,YAAY,CAAC;IAEvCV,SAAS,CAACz3O,WAAW,CAACs9O,aAAa,CAAC;IAEpChrO,KAAK,CAAC9S,IAAI,CAACi4O,SAAS,CAAC;EACzB;;EAEA;EACA,SAASqP,mBAAmBA,CAACC,QAAQ,EAAE;IACnC,MAAMC,aAAa,GAAGD,QAAQ,CAACrjO,KAAK,CAAC,IAAI,CAAC;IAC1C,MAAMujO,SAAS,GAAGD,aAAa,CAAC,CAAC,CAAC;IAClC,MAAME,UAAU,GAAGF,aAAa,CAAC,CAAC,CAAC;IACnC,OAAO,CAACC,SAAS,EAAEC,UAAU,CAAC;EAClC;EACA,SAASC,kBAAkBA,CAACC,MAAM,EAAE;IAChC,IAAI,CAACA,MAAM,EAAE;IAEb,MAAMziN,GAAG,GAAGyiN,MAAM;IAClB,MAAMl7D,SAAS,GAAG,IAAI19H,UAAU,CAAC7pB,GAAG,CAAC;IACrC,MAAMwnJ,IAAI,GAAG,IAAIj9J,IAAI,CAAC,CAACg9J,SAAS,CAAC,EAAE;MAAE5oL,IAAI,EAAE;IAAkB,CAAC,CAAC;IAC/D,IAAIqN,CAAC,CAACC,OAAO,CAACsoC,OAAO,IAAI,UAAU,IAAIvoC,CAAC,CAACC,OAAO,CAACsoC,OAAO,IAAI,SAAS,EAAE;MACnEnoC,MAAM,CAAC2e,SAAS,CAAC08J,gBAAgB,CAACD,IAAI,EAAE,YAAY,CAAC;IACzD,CAAC,MAAM;MACH,IAAIE,OAAO,GAAGt9J,GAAG,CAACC,eAAe,CAACm9J,IAAI,CAAC;MACvCp7K,MAAM,CAAC7F,IAAI,CAACmhL,OAAO,CAAC;IACxB;EACJ;EACA,SAASg7D,aAAaA,CAAC58I,OAAO,EAAE;IAC5B,MAAMp9D,GAAG,GAAG,CAAC,CAAC;IAEdo9D,OAAO,CAAC3qG,OAAO,CAAC8gB,CAAC,IAAI;MACjB,MAAM,CAACnQ,MAAM,EAAEwlB,MAAM,EAAE,GAAGqxN,IAAI,CAAC,GAAG1mO,CAAC,CAAC8C,KAAK,CAAC,GAAG,CAAC;MAC9C2pB,GAAG,CAAC58B,MAAM,CAAC,GAAG62O,IAAI,IAAIA,IAAI,CAACznP,MAAM,GAAG,GAAGo2B,MAAM,IAAIqxN,IAAI,EAAE,CAACx8L,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG70B,MAAM;IACzF,CAAC,CAAC;IAEF,OAAOoX,GAAG;EACd;EACA,eAAek6M,iBAAiBA,CAAA,EAAG;IAC/B,IAAIC,UAAU,GAAG,CAAC;IAClB,IAAIC,kBAAkB,GAAG,EAAE;IAC3B,IAAIC,mBAAmB;IACvB,IAAIC,mBAAmB,GAAG,OAAO;IAEjC,MAAMC,aAAa,GAAGt1O,KAAK,CAAC1P,KAAK,CAAC;MAC9BgB,UAAU,EAAE;IAChB,CAAC,CAAC;IAEF,MAAMikP,OAAO,GAAGtlP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C,MAAMglP,OAAO,GAAGvlP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C,MAAMilP,OAAO,GAAGxlP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C+kP,OAAO,CAACzoP,SAAS,CAACE,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,CAAC;IACpEwoP,OAAO,CAAC1oP,SAAS,CAACE,GAAG,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;IAC9DyoP,OAAO,CAAC3oP,SAAS,CAACE,GAAG,CAAC,aAAa,EAAE,gBAAgB,CAAC;IAEtD,MAAM0oP,QAAQ,GAAGzlP,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC5C,MAAMmlP,QAAQ,GAAG1lP,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC5CklP,QAAQ,CAAC5oP,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACzC2oP,QAAQ,CAAC7oP,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACzC0oP,QAAQ,CAACtoP,SAAS,GAAG,kDAAkD;IACvEuoP,QAAQ,CAACvoP,SAAS,GAAG,0EAA0E;IAE/FmoP,OAAO,CAAC7nP,WAAW,CAACgoP,QAAQ,CAAC;IAC7BF,OAAO,CAAC9nP,WAAW,CAACioP,QAAQ,CAAC;IAE7B,MAAMpuN,SAAS,GAAGl3B,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAIojP,UAAU,KAAK,CAAC,EAAE;UAClB,IAAIU,kBAAkB,CAACC,cAAc,EAAE;YACnCV,kBAAkB,GAAG,CAAC,gBAAgB,CAAC;UAC3C,CAAC,MAAM;YACHA,kBAAkB,GAAGpmO,MAAM,CAACyD,OAAO,CAACojO,kBAAkB,CAAC,CAClDn6O,MAAM,CAACwpH,IAAA,IAAkB;cAAA,IAAjB,CAACrzH,GAAG,EAAEC,KAAK,CAAC,GAAAozH,IAAA;cACjB;cACA,IAAIrzH,GAAG,KAAK,gBAAgB,EAAE,OAAO,KAAK;cAC1C,IAAIC,KAAK,EAAE,OAAO,IAAI;YAC1B,CAAC,CAAC,CACDmF,GAAG,CAACkuH,KAAA,IAAkB;cAAA,IAAjB,CAACtzH,GAAG,EAAEC,KAAK,CAAC,GAAAqzH,KAAA;cACd,OAAOtzH,GAAG;YACd,CAAC,CAAC;UACV;UAEAsjP,UAAU,GAAG,CAAC;UACdK,OAAO,CAACzoP,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;UACnCyoP,OAAO,CAAC1oP,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;UAEhC;QACJ;QAEA,IAAIkoP,UAAU,KAAK,CAAC,EAAE;UAClB,MAAMtsI,OAAO,GAAGhnG,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,oBAAoB,CAAC;UAC1D48O,OAAO,CAACh2O,YAAY,CAACmpG,OAAO,EAAE6sI,OAAO,CAAC/wO,UAAU,CAAC;UAEjDwwO,UAAU,GAAG,CAAC;UACd3tN,SAAS,CAAC9P,WAAW,GAAG,MAAM;UAC9B8P,SAAS,CAACx2B,KAAK,CAACoK,OAAO,GAAG,MAAM;UAChCq6O,OAAO,CAAC1oP,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;UACnC0oP,OAAO,CAAC3oP,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;UAEhCooP,mBAAmB,GAAG,MAAMzD,cAAc,CAACmE,mBAAmB,CAAC;YAC3Dj5M,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;YACtBsqM,iBAAiB,EAAEd,gBAAgB,CAACK,uBAAuB,CAAC;YAC5DU,eAAe,EAAEf,gBAAgB,CAACM,2BAA2B,CAAC;YAC9DU,gBAAgB,EAAEhB,gBAAgB,CAACO,4BAA4B,CAAC;YAChEqF,mBAAmB,EAAE1F,eAAe,CAACI,2BAA2B,CAAC;YACjEl0L,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;YACxBk/J,YAAY,EAAEle,MAAM;YACpBniC,QAAQ,EAAEz4C,gBAAgB,CAACnzG,EAAE;YAC7BulP,cAAc,EAAE,CAAC,GAAGjnO,MAAM,CAACxJ,MAAM,CAAC0wO,cAAc,CAAC,CAAC;YAClDC,UAAU,EAAE,CAAC,GAAGf,kBAAkB,CAAC;YACnCl3C,UAAU,EAAE,OAAO;YACnBk4C,MAAM,EAAE,KAAK;YACbj4C,GAAG,EAAE,KAAK;YACV15I,OAAO,EAAE,KAAK;YACd4xL,aAAa,EAAE,KAAK;YACpBhP,OAAO,EAAEiO,mBAAmB;YAC5Br3C,SAAS,EAAE;UACf,CAAC,CAAC;UAEFp1F,OAAO,CAAC77G,MAAM,CAAC,CAAC;UAChBw6B,SAAS,CAACx2B,KAAK,CAACoK,OAAO,GAAG,OAAO;UAEjC,IAAIi6O,mBAAmB,IAAIQ,kBAAkB,CAACS,mBAAmB,EAAE;YAC/DxB,kBAAkB,CAACO,mBAAmB,CAACN,MAAM,CAAC;UAClD;UAEA,MAAMwB,UAAU,GAAGvB,aAAa,CAACK,mBAAmB,CAACmB,OAAO,CAAC;UAC7Dv7O,OAAO,CAACu6B,GAAG,CAAC,SAAS,EAAE6/M,mBAAmB,CAACmB,OAAO,CAAC;UACnDv7O,OAAO,CAACu6B,GAAG,CAAC,YAAY,EAAE+gN,UAAU,CAAC;UAErC,IAAIV,kBAAkB,CAACC,cAAc,EAAE;YACnCJ,OAAO,CAAC/nP,WAAW,CAAC8oP,gBAAgB,CAAC;YACrCf,OAAO,CAAC/nP,WAAW,CAAC+oP,mBAAmB,CAAC;YACxChB,OAAO,CAAC/nP,WAAW,CAACgpP,oBAAoB,CAAC;YACzCjB,OAAO,CAAC/nP,WAAW,CAACipP,iBAAiB,CAAC;YAEtC,IAAIt4O,CAAC,CAACC,OAAO,CAACunC,UAAU,EAAE;cACtB,IAAIywM,UAAU,CAACM,IAAI,KAAK,SAAS,EAAE;gBAC/B7E,6BAA6B,CAACyC,mBAAmB,CAAC8B,UAAU,CAACM,IAAI,CAAC,CAAC;cACvE;cAEAC,oBAAoB,CAACzpP,SAAS,GAAGkpP,UAAU,CAACM,IAAI,KAAK,SAAS,GAAG/lP,KAAK,CAAC6a,SAAS,GAAG7a,KAAK,CAAC2K,KAAK;cAC9Fg7O,gBAAgB,CAAC1pP,SAAS,CAACmE,MAAM,CAAC,SAAS,EAAEqlP,UAAU,CAACM,IAAI,KAAK,SAAS,CAAC;YAC/E;YACA,IAAIv4O,CAAC,CAACC,OAAO,CAACwnC,YAAY,EAAE;cACxBgxM,uBAAuB,CAAC1pP,SAAS,GAAGkpP,UAAU,CAACS,IAAI,KAAK,SAAS,GAAGlmP,KAAK,CAAC6a,SAAS,GAAG7a,KAAK,CAAC2K,KAAK;cACjGi7O,mBAAmB,CAAC3pP,SAAS,CAACmE,MAAM,CAAC,SAAS,EAAEqlP,UAAU,CAACS,IAAI,KAAK,SAAS,CAAC;YAClF;YACAC,wBAAwB,CAAC5pP,SAAS,GAAGkpP,UAAU,CAACW,MAAM,KAAK,SAAS,GAAGpmP,KAAK,CAAC6a,SAAS,GAAG7a,KAAK,CAAC2K,KAAK;YACpGk7O,oBAAoB,CAAC5pP,SAAS,CAACmE,MAAM,CAAC,SAAS,EAAEqlP,UAAU,CAACW,MAAM,KAAK,SAAS,CAAC;YACjFC,qBAAqB,CAAC9pP,SAAS,GAAGkpP,UAAU,CAACa,KAAK,KAAK,SAAS,GAAGtmP,KAAK,CAAC6a,SAAS,GAAG7a,KAAK,CAAC2K,KAAK;YAChGm7O,iBAAiB,CAAC7pP,SAAS,CAACmE,MAAM,CAAC,SAAS,EAAEqlP,UAAU,CAACa,KAAK,KAAK,SAAS,CAAC;UACjF,CAAC,MAAM;YACH,IAAIvB,kBAAkB,CAACwB,eAAe,EAAE;cACpC,IAAId,UAAU,CAACM,IAAI,KAAK,SAAS,EAAE;gBAC/B7E,6BAA6B,CAACyC,mBAAmB,CAAC8B,UAAU,CAACM,IAAI,CAAC,CAAC;cACvE;cAEAnB,OAAO,CAAC/nP,WAAW,CAAC8oP,gBAAgB,CAAC;cACrCK,oBAAoB,CAACzpP,SAAS,GAAGkpP,UAAU,CAACM,IAAI,KAAK,SAAS,GAAG/lP,KAAK,CAAC6a,SAAS,GAAG7a,KAAK,CAAC2K,KAAK;cAC9Fg7O,gBAAgB,CAAC1pP,SAAS,CAACmE,MAAM,CAAC,SAAS,EAAEqlP,UAAU,CAACM,IAAI,KAAK,SAAS,CAAC;YAC/E;YACA,IAAIhB,kBAAkB,CAACyB,kBAAkB,EAAE;cACvC5B,OAAO,CAAC/nP,WAAW,CAAC+oP,mBAAmB,CAAC;cACxCK,uBAAuB,CAAC1pP,SAAS,GAAGkpP,UAAU,CAACS,IAAI,KAAK,SAAS,GAAGlmP,KAAK,CAAC6a,SAAS,GAAG7a,KAAK,CAAC2K,KAAK;cACjGi7O,mBAAmB,CAAC3pP,SAAS,CAACmE,MAAM,CAAC,SAAS,EAAEqlP,UAAU,CAACS,IAAI,KAAK,SAAS,CAAC;YAClF;YACA,IAAInB,kBAAkB,CAACS,mBAAmB,EAAE;cACxCZ,OAAO,CAAC/nP,WAAW,CAACgpP,oBAAoB,CAAC;cACzCM,wBAAwB,CAAC5pP,SAAS,GAAGkpP,UAAU,CAACW,MAAM,KAAK,SAAS,GAAGpmP,KAAK,CAAC6a,SAAS,GAAG7a,KAAK,CAAC2K,KAAK;cACpGk7O,oBAAoB,CAAC5pP,SAAS,CAACmE,MAAM,CAAC,SAAS,EAAEqlP,UAAU,CAACW,MAAM,KAAK,SAAS,CAAC;YACrF;YACA,IAAIrB,kBAAkB,CAAC0B,gBAAgB,EAAE;cACrC7B,OAAO,CAAC/nP,WAAW,CAACipP,iBAAiB,CAAC;cACtCO,qBAAqB,CAAC9pP,SAAS,GAAGkpP,UAAU,CAACa,KAAK,KAAK,SAAS,GAAGtmP,KAAK,CAAC6a,SAAS,GAAG7a,KAAK,CAAC2K,KAAK;cAChGm7O,iBAAiB,CAAC7pP,SAAS,CAACmE,MAAM,CAAC,SAAS,EAAEqlP,UAAU,CAACa,KAAK,KAAK,SAAS,CAAC;YACjF;UACJ;UAEA;QACJ;QAEA,IAAIjC,UAAU,KAAK,CAAC,EAAE;UAClB3tN,SAAS,CAACx6B,MAAM,CAAC,CAAC;UAClBiT,KAAK,CAAC/S,IAAI,CAACqoP,aAAa,CAAC;UACzBpJ,WAAW,CAACp/O,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QAC5C;MACJ;IACJ,CAAC,CAAC;IAEFuoP,aAAa,CAAC5nP,WAAW,CAAC6nP,OAAO,CAAC;IAClCD,aAAa,CAAC5nP,WAAW,CAAC8nP,OAAO,CAAC;IAClCF,aAAa,CAAC5nP,WAAW,CAAC+nP,OAAO,CAAC;IAClCH,aAAa,CAAC5nP,WAAW,CAAC65B,SAAS,CAAC;;IAEpC;IACA;IACA;IACA,MAAMquN,kBAAkB,GAAG;MACvBC,cAAc,EAAE,IAAI;MACpBuB,eAAe,EAAE,IAAI;MACrBC,kBAAkB,EAAE,IAAI;MACxBhB,mBAAmB,EAAE,IAAI;MACzBiB,gBAAgB,EAAE;IACtB,CAAC;IACD,MAAMrB,cAAc,GAAG,CAAC,CAAC;IACzB,MAAMsB,MAAM,GAAG,MAAM5F,cAAc,CAAC6F,+BAA+B,CAAC,CAAC;IACrE,MAAMC,YAAY,GAAGxnP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDinP,YAAY,CAAC3qP,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAExC,MAAM6oP,cAAc,GAAG/hP,KAAK,CAACyB,aAAa,CAAC;MACvC9E,EAAE,EAAE,WAAW;MACfG,IAAI,EAAE,YAAY;MAClB6E,SAAS,EAAE,IAAI;MACf3D,QAAQ,EAAEU,CAAC,IAAI;QACXojP,kBAAkB,CAACC,cAAc,GAAGrjP,CAAC,CAAC3E,MAAM,CAACiI,OAAO;QAEpD,IAAI8/O,kBAAkB,CAACC,cAAc,EAAE;UACnC,IAAIx3O,CAAC,CAACC,OAAO,CAACunC,UAAU,EAAE;YACtBuxM,eAAe,CAAClnP,aAAa,CAAC,OAAO,CAAC,CAAC4F,OAAO,GAAG,IAAI;YACrD8/O,kBAAkB,CAACwB,eAAe,GAAG,IAAI;UAC7C;UAEA,IAAI/4O,CAAC,CAACC,OAAO,CAACwnC,YAAY,EAAE;YACxBuxM,kBAAkB,CAACnnP,aAAa,CAAC,OAAO,CAAC,CAAC4F,OAAO,GAAG,IAAI;YACxD8/O,kBAAkB,CAACyB,kBAAkB,GAAG,IAAI;UAChD;UAEAhB,mBAAmB,CAACnmP,aAAa,CAAC,OAAO,CAAC,CAAC4F,OAAO,GAAG,IAAI;UACzD8/O,kBAAkB,CAACS,mBAAmB,GAAG,IAAI;UAE7CiB,gBAAgB,CAACpnP,aAAa,CAAC,OAAO,CAAC,CAAC4F,OAAO,GAAG,IAAI;UACtD8/O,kBAAkB,CAAC0B,gBAAgB,GAAG,IAAI;QAC9C;MACJ;IACJ,CAAC,CAAC;IACF,MAAMF,eAAe,GAAGtjP,KAAK,CAACyB,aAAa,CAAC;MACxC9E,EAAE,EAAE,YAAY;MAChBG,IAAI,EAAE,cAAc;MACpB6E,SAAS,EAAE,IAAI;MACf3D,QAAQ,EAAEU,CAAC,IAAI;QACXojP,kBAAkB,CAACwB,eAAe,GAAG5kP,CAAC,CAAC3E,MAAM,CAACiI,OAAO;QAErD,IAAI,CAACtD,CAAC,CAAC3E,MAAM,CAACiI,OAAO,EAAE;UACnB+/O,cAAc,CAAC3lP,aAAa,CAAC,OAAO,CAAC,CAAC4F,OAAO,GAAG,KAAK;UACrD8/O,kBAAkB,CAACC,cAAc,GAAG,KAAK;QAC7C;MACJ;IACJ,CAAC,CAAC;IACF,MAAMwB,kBAAkB,GAAGvjP,KAAK,CAACyB,aAAa,CAAC;MAC3C9E,EAAE,EAAE,eAAe;MACnBG,IAAI,EAAE,oBAAoB;MAC1B6E,SAAS,EAAE,IAAI;MACf3D,QAAQ,EAAEU,CAAC,IAAI;QACXojP,kBAAkB,CAACyB,kBAAkB,GAAG7kP,CAAC,CAAC3E,MAAM,CAACiI,OAAO;QAExD,IAAI,CAACtD,CAAC,CAAC3E,MAAM,CAACiI,OAAO,EAAE;UACnB+/O,cAAc,CAAC3lP,aAAa,CAAC,OAAO,CAAC,CAAC4F,OAAO,GAAG,KAAK;UACrD8/O,kBAAkB,CAACC,cAAc,GAAG,KAAK;QAC7C;MACJ;IACJ,CAAC,CAAC;IACF,MAAMQ,mBAAmB,GAAGviP,KAAK,CAACyB,aAAa,CAAC;MAC5C9E,EAAE,EAAE,gBAAgB;MACpBG,IAAI,EAAE,iBAAiB;MACvB6E,SAAS,EAAE,IAAI;MACf3D,QAAQ,EAAEU,CAAC,IAAI;QACXojP,kBAAkB,CAACS,mBAAmB,GAAG7jP,CAAC,CAAC3E,MAAM,CAACiI,OAAO;QAEzD,IAAI,CAACtD,CAAC,CAAC3E,MAAM,CAACiI,OAAO,EAAE;UACnB+/O,cAAc,CAAC3lP,aAAa,CAAC,OAAO,CAAC,CAAC4F,OAAO,GAAG,KAAK;UACrD8/O,kBAAkB,CAACC,cAAc,GAAG,KAAK;QAC7C;MACJ;IACJ,CAAC,CAAC;IACF,MAAMyB,gBAAgB,GAAGxjP,KAAK,CAACyB,aAAa,CAAC;MACzC9E,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,cAAc;MACpB6E,SAAS,EAAE,IAAI;MACf3D,QAAQ,EAAEU,CAAC,IAAI;QACXojP,kBAAkB,CAAC0B,gBAAgB,GAAG9kP,CAAC,CAAC3E,MAAM,CAACiI,OAAO;QAEtD,IAAI,CAACtD,CAAC,CAAC3E,MAAM,CAACiI,OAAO,EAAE;UACnB+/O,cAAc,CAAC3lP,aAAa,CAAC,OAAO,CAAC,CAAC4F,OAAO,GAAG,KAAK;UACrD8/O,kBAAkB,CAACC,cAAc,GAAG,KAAK;QAC7C;MACJ;IACJ,CAAC,CAAC;IAGF,MAAM6B,WAAW,GAAGrnP,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,WAAW;MACjBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZ;;QAEA,MAAMrB,EAAE,GAAG01B,KAAK,CAACwxN,eAAe,CAAC,SAAS5oO,MAAM,CAACxJ,MAAM,CAAC0wO,cAAc,CAAC,CAAC1oP,MAAM,EAAE,CAAC;QACjF0oP,cAAc,CAACxlP,EAAE,CAAC,GAAG,EAAE;QAEvB,MAAM6B,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;QAE/B,MAAMg/K,UAAU,GAAGl4K,KAAK,CAACxD,KAAK,CAAC;UAC3B8B,KAAK,EAAE,OAAO;UACdpB,IAAI,EAAE,OAAO;UACbc,QAAQ,EAAEU,CAAC,IAAI;YACXyjP,cAAc,CAACxlP,EAAE,CAAC,GAAG+B,CAAC,CAAC3E,MAAM,CAACgE,KAAK;UACvC;QACJ,CAAC,CAAC;QAEF,MAAM+lP,WAAW,GAAG3nP,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;QAClDonP,WAAW,CAACxqP,SAAS,GAAGyD,KAAK,CAACqS,MAAM;QACpC00O,WAAW,CAACxnP,gBAAgB,CAAC,OAAO,EAAE,MAAM;UACxCkC,IAAI,CAACvF,MAAM,CAAC,CAAC;UACb,OAAOkpP,cAAc,CAACxlP,EAAE,CAAC;UACzBinP,WAAW,CAAC5qP,SAAS,CAACmE,MAAM,CAAC8d,MAAM,CAACxJ,MAAM,CAAC0wO,cAAc,CAAC,CAAC1oP,MAAM,KAAK,CAAC,EAAE,UAAU,CAAC;QACxF,CAAC,CAAC;QAEF+E,IAAI,CAAC5E,WAAW,CAACs+K,UAAU,CAAC;QAC5B15K,IAAI,CAAC5E,WAAW,CAACkqP,WAAW,CAAC;QAC7BrC,OAAO,CAAC7nP,WAAW,CAAC4E,IAAI,CAAC;QAEzBolP,WAAW,CAAC5qP,SAAS,CAACmE,MAAM,CAAC8d,MAAM,CAACxJ,MAAM,CAAC0wO,cAAc,CAAC,CAAC1oP,MAAM,KAAK,CAAC,EAAE,UAAU,CAAC;MACxF;IACJ,CAAC,CAAC;IAEFgoP,OAAO,CAAC7nP,WAAW,CAAC+pP,YAAY,CAAC;IACjClC,OAAO,CAAC7nP,WAAW,CAACgqP,WAAW,CAAC;IAChCD,YAAY,CAAC/pP,WAAW,CAACmoP,cAAc,CAAC;IACxC,IAAIx3O,CAAC,CAACC,OAAO,CAACunC,UAAU,EAAE;MACtB4xM,YAAY,CAAC/pP,WAAW,CAAC0pP,eAAe,CAAC;IAC7C,CAAC,MAAM;MACHxB,kBAAkB,CAACwB,eAAe,GAAG,KAAK;IAC9C;IACA,IAAI/4O,CAAC,CAACC,OAAO,CAACwnC,YAAY,EAAE;MACxB2xM,YAAY,CAAC/pP,WAAW,CAAC2pP,kBAAkB,CAAC;IAChD,CAAC,MAAM;MACHzB,kBAAkB,CAACyB,kBAAkB,GAAG,KAAK;IACjD;IACAI,YAAY,CAAC/pP,WAAW,CAAC2oP,mBAAmB,CAAC;IAC7CoB,YAAY,CAAC/pP,WAAW,CAAC4pP,gBAAgB,CAAC;IAE1C,IAAIC,MAAM,EAAE;MACRA,MAAM,CAAC/pP,OAAO,CAAC,CAACy5K,KAAK,EAAErgK,KAAK,KAAK;QAC7B,IAAIqgK,KAAK,CAACtkH,aAAa,KAAK,EAAE,EAAE;UAC5B;QACJ;QAEA,MAAMlyD,EAAE,GAAG01B,KAAK,CAACwxN,eAAe,CAAC,SAAS/wO,KAAK,GAAG,CAAC,EAAE,CAAC;QACtDqvO,cAAc,CAACxlP,EAAE,CAAC,GAAGw2K,KAAK,CAACtkH,aAAa;QAExC,MAAMrwD,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;QAE/B,MAAMg/K,UAAU,GAAGl4K,KAAK,CAACxD,KAAK,CAAC;UAC3B8B,KAAK,EAAE,OAAO;UACdpB,IAAI,EAAE,OAAO;UACba,KAAK,EAAEo1K,KAAK,CAACtkH,aAAa;UAC1B7wD,QAAQ,EAAEU,CAAC,IAAI;YACXyjP,cAAc,CAACxlP,EAAE,CAAC,GAAG+B,CAAC,CAAC3E,MAAM,CAACgE,KAAK;UACvC;QACJ,CAAC,CAAC;QAEF,MAAM+lP,WAAW,GAAG3nP,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;QAClDonP,WAAW,CAACxqP,SAAS,GAAGyD,KAAK,CAACqS,MAAM;QACpC00O,WAAW,CAACxnP,gBAAgB,CAAC,OAAO,EAAE,MAAM;UACxCkC,IAAI,CAACvF,MAAM,CAAC,CAAC;UACb,OAAOkpP,cAAc,CAACxlP,EAAE,CAAC;UACzBinP,WAAW,CAAC5qP,SAAS,CAACmE,MAAM,CAAC8d,MAAM,CAACxJ,MAAM,CAAC0wO,cAAc,CAAC,CAAC1oP,MAAM,KAAK,CAAC,EAAE,UAAU,CAAC;QACxF,CAAC,CAAC;QAEF+E,IAAI,CAAC5E,WAAW,CAACs+K,UAAU,CAAC;QAC5B15K,IAAI,CAAC5E,WAAW,CAACkqP,WAAW,CAAC;QAC7BrC,OAAO,CAAC7nP,WAAW,CAAC4E,IAAI,CAAC;MAC7B,CAAC,CAAC;IACN;;IAEA;IACA;IACA;IACA,MAAMk+O,uBAAuB,GAAG,CAAC,CAAC;IAClC,MAAME,4BAA4B,GAAG,CAAC,CAAC;IACvC,MAAMD,2BAA2B,GAAG,CAAC,CAAC;IAEtC,MAAMoH,YAAY,GAAG5nP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDqnP,YAAY,CAAC/qP,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAE5C,MAAM25O,WAAW,GAAG12O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD,MAAMo2O,eAAe,GAAG32O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD,MAAMq2O,gBAAgB,GAAG52O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtDm2O,WAAW,CAAC75O,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IACvC45O,eAAe,CAAC95O,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC3C65O,gBAAgB,CAAC/5O,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAC5C,MAAMihP,WAAW,GAAGh+O,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAChD,MAAM09O,eAAe,GAAGj+O,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACpD,MAAM29O,WAAW,GAAGl+O,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAChDy9O,WAAW,CAACx5O,SAAS,GAAG,kBAAkB;IAC1Cy5O,eAAe,CAACz5O,SAAS,GAAG,sBAAsB;IAClD05O,WAAW,CAAC15O,SAAS,GAAG,uBAAuB;IAC/CkyO,WAAW,CAACj5O,WAAW,CAACugP,WAAW,CAAC;IACpCrH,eAAe,CAACl5O,WAAW,CAACwgP,eAAe,CAAC;IAC5CrH,gBAAgB,CAACn5O,WAAW,CAACygP,WAAW,CAAC;IACzC0J,YAAY,CAACnqP,WAAW,CAACi5O,WAAW,CAAC;IACrCkR,YAAY,CAACnqP,WAAW,CAACk5O,eAAe,CAAC;IACzCiR,YAAY,CAACnqP,WAAW,CAACm5O,gBAAgB,CAAC;IAE1C2O,OAAO,CAAC9nP,WAAW,CAACmqP,YAAY,CAAC;IAEjC,MAAM/3H,WAAW,GAAG,MAAMshF,QAAQ,CAACuvC,6BAA6B,CAAC;MAC7D9zM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBk3G,YAAY,EAAE2gC;IAClB,CAAC,CAAC;IAEF,IAAI53K,KAAK,GAAG,CAAC;IAEb,IAAIk5G,WAAW,EAAE;MACb,KAAK,MAAM7kF,IAAI,IAAI6kF,WAAW,EAAE;QAC5BA,WAAW,CAAC7kF,IAAI,CAAC,CAAC8iD,KAAK,GAAGn3E,KAAK;QAC/B,MAAMvT,CAAC,GAAGysH,WAAW,CAAC7kF,IAAI,CAAC;QAC3B,MAAM/vB,UAAU,GAAGjb,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAChD0a,UAAU,CAACpe,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;QACtC,MAAMw9G,WAAW,GAAGv6G,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QAC/Cg6G,WAAW,CAAC/1G,SAAS,GAAGpB,CAAC,CAACm3G,WAAW;QACrCt/F,UAAU,CAACxd,WAAW,CAAC88G,WAAW,CAAC;QAEnCt/F,UAAU,CAAC9a,gBAAgB,CAAC,OAAO,EAAE,MAAM;UACvC,IAAI,CAAC8a,UAAU,CAACpe,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC5CsQ,UAAU,CAACpe,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;YACpC,IAAIqG,CAAC,CAACu9O,eAAe,EAAE;cACnBF,4BAA4B,CAACr9O,CAAC,CAAC0qF,KAAK,CAAC,GAAG;gBAAE,GAAG1qF;cAAE,CAAC;YACpD,CAAC,MAAM,IAAIA,CAAC,CAACw9O,SAAS,KAAK,MAAM,EAAE;cAC/BL,uBAAuB,CAACn9O,CAAC,CAAC0qF,KAAK,CAAC,GAAG;gBAAE,GAAG1qF;cAAE,CAAC;YAC/C,CAAC,MAAM;cACHo9O,2BAA2B,CAACp9O,CAAC,CAAC0qF,KAAK,CAAC,GAAG;gBAAE,GAAG1qF;cAAE,CAAC;YACnD;UACJ,CAAC,MAAM;YACH6X,UAAU,CAACpe,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;YACvC,IAAIsG,CAAC,CAACu9O,eAAe,EAAE;cACnB,OAAOF,4BAA4B,CAACr9O,CAAC,CAAC0qF,KAAK,CAAC;YAChD,CAAC,MAAM,IAAI1qF,CAAC,CAACw9O,SAAS,KAAK,MAAM,EAAE;cAC/B,OAAOL,uBAAuB,CAACn9O,CAAC,CAAC0qF,KAAK,CAAC;YAC3C,CAAC,MAAM;cACH,OAAO0yJ,2BAA2B,CAACp9O,CAAC,CAAC0qF,KAAK,CAAC;YAC/C;UACJ;QACJ,CAAC,CAAC;QAEF,IAAI1qF,CAAC,CAACu9O,eAAe,EAAE;UACnB/J,gBAAgB,CAACn5O,WAAW,CAACwd,UAAU,CAAC;QAC5C,CAAC,MAAM,IAAI7X,CAAC,CAACw9O,SAAS,KAAK,MAAM,EAAE;UAC/BlK,WAAW,CAACj5O,WAAW,CAACwd,UAAU,CAAC;QACvC,CAAC,MAAM;UACH07N,eAAe,CAACl5O,WAAW,CAACwd,UAAU,CAAC;QAC3C;QAEAtE,KAAK,EAAE;MACX;IACJ;IAEA,MAAMkxO,wBAAwB,GAAGhkP,KAAK,CAACyB,aAAa,CAAC;MACjD9E,EAAE,EAAE,0BAA0B;MAC9BG,IAAI,EAAE,oFAAoF;MAC1F6E,SAAS,EAAE,KAAK;MAChB3D,QAAQ,EAAEU,CAAC,IAAI;QACX6iP,mBAAmB,GAAG7iP,CAAC,CAAC3E,MAAM,CAACiI,OAAO,GAAG,MAAM,GAAG,OAAO;MAC7D;IACJ,CAAC,CAAC;IACF0/O,OAAO,CAAC9nP,WAAW,CAACoqP,wBAAwB,CAAC;;IAE7C;IACA;IACA;IACA,MAAMtB,gBAAgB,GAAGvmP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtD,MAAMimP,mBAAmB,GAAGxmP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzD,MAAMkmP,oBAAoB,GAAGzmP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1D,MAAMmmP,iBAAiB,GAAG1mP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvDgmP,gBAAgB,CAAC1pP,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAChDypP,mBAAmB,CAAC3pP,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IACnD0pP,oBAAoB,CAAC5pP,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IACpD2pP,iBAAiB,CAAC7pP,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IACjDwpP,gBAAgB,CAACppP,SAAS,GAAG,qBAAqB;IAClDqpP,mBAAmB,CAACrpP,SAAS,GAAG,2BAA2B;IAC3DspP,oBAAoB,CAACtpP,SAAS,GAAG,wBAAwB;IACzDupP,iBAAiB,CAACvpP,SAAS,GAAG,qBAAqB;IACnD,MAAMypP,oBAAoB,GAAG5mP,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IAC3D,MAAMsmP,uBAAuB,GAAG7mP,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IAC9D,MAAMwmP,wBAAwB,GAAG/mP,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IAC/D,MAAM0mP,qBAAqB,GAAGjnP,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IAC5DgmP,gBAAgB,CAAC9oP,WAAW,CAACmpP,oBAAoB,CAAC;IAClDJ,mBAAmB,CAAC/oP,WAAW,CAACopP,uBAAuB,CAAC;IACxDJ,oBAAoB,CAAChpP,WAAW,CAACspP,wBAAwB,CAAC;IAC1DL,iBAAiB,CAACjpP,WAAW,CAACwpP,qBAAqB,CAAC;IAEpDl3O,KAAK,CAAC9S,IAAI,CAACooP,aAAa,CAAC;EAC7B;;EAEA;EACA,SAAS7J,kBAAkBA,CAAA,EAAG;IAC1BzG,UAAU,CAAC3lO,WAAW,CAAC6lO,wBAAwB,CAAC;IAEhDA,wBAAwB,GAAG6S,mBAAmB,CAAC,CAAC;IAChD/S,UAAU,CAACvlO,YAAY,CAACylO,wBAAwB,EAAED,iBAAiB,CAAC;EACxE;EACA,SAASuH,uBAAuBA,CAAArnH,KAAA,EAAgC;IAAA,IAA/B;MAAE5b,IAAI;MAAEnQ,SAAS;MAAEC;IAAS,CAAC,GAAA8rB,KAAA;IAC1D,IAAI,CAAC5b,IAAI,EAAE;MACP,OAAO,GAAGlQ,QAAQ,IAAID,SAAS,EAAE;IACrC;IAEA,MAAM4+I,UAAU,GAAGzuI,IAAI,CAACr5G,aAAa,CAAC,aAAa,CAAC;IACpD,MAAM+nP,SAAS,GAAG1uI,IAAI,CAACr5G,aAAa,CAAC,YAAY,CAAC;IAElD,IAAI,CAAC8nP,UAAU,IAAI,CAACC,SAAS,EAAE;IAE/B,OAAO,GAAGA,SAAS,CAACxjP,SAAS,IAAIujP,UAAU,CAACvjP,SAAS,EAAE;EAC3D;EACA,SAASsjP,mBAAmBA,CAAA,EAAG;IAC3B,IAAI/mP,IAAI;IAER,IAAIs1G,QAAQ,KAAK,GAAG,EAAE;MAClBt1G,IAAI,GAAG,UAAU;IACrB,CAAC,MAAM,IAAIs1G,QAAQ,KAAK,GAAG,EAAE;MACzBt1G,IAAI,GAAG,QAAQ;IACnB;IAEA,MAAMknP,aAAa,GAAGtP,SAAS,CAACkH,oBAAoB,CAAC,CAAC;IACtD,MAAMqI,WAAW,GAAGvP,SAAS,CAACmH,kBAAkB,CAAC,CAAC;IAClD,MAAMqI,kBAAkB,GAAGxP,SAAS,CAACwD,qBAAqB,CAAC,CAAC;IAC5D,MAAMiM,gBAAgB,GAAGzP,SAAS,CAACoH,mBAAmB,CAAC,CAAC;IAExD,MAAM3D,YAAY,GAAG1rN,IAAI,CAACoY,qBAAqB,CAACq/M,kBAAkB,CAAC;IACnE,MAAM9L,iBAAiB,GAAGD,YAAY,CAACj7N,KAAK,CAAC,GAAG,CAAC;IACjD,IAAIm7N,MAAM,GAAG,GAAGD,iBAAiB,CAAC,CAAC,CAAC,IAAIA,iBAAiB,CAAC,CAAC,CAAC,IAAIA,iBAAiB,CAAC,CAAC,CAAC,CAACx3O,SAAS,CAAC,CAAC,CAAC,EAAE;IAEnG,MAAMwjP,aAAa,GAAG33N,IAAI,CAACoY,qBAAqB,CAACs/M,gBAAgB,CAAC;IAClE,MAAME,kBAAkB,GAAGD,aAAa,CAAClnO,KAAK,CAAC,GAAG,CAAC;IACnD,IAAIonO,MAAM,GAAG,GAAGD,kBAAkB,CAAC,CAAC,CAAC,IAAIA,kBAAkB,CAAC,CAAC,CAAC,IAAIA,kBAAkB,CAAC,CAAC,CAAC,CAACzjP,SAAS,CAAC,CAAC,CAAC,EAAE;IAEtG,MAAM2jP,aAAa,GAAG93N,IAAI,CAACoY,qBAAqB,CAACm/M,aAAa,CAAC;IAC/D,MAAMQ,kBAAkB,GAAGD,aAAa,CAACrnO,KAAK,CAAC,GAAG,CAAC;IACnD,IAAIunO,QAAQ,GAAG,GAAGD,kBAAkB,CAAC,CAAC,CAAC,IAAIA,kBAAkB,CAAC,CAAC,CAAC,IAAIA,kBAAkB,CAAC,CAAC,CAAC,CAAC5jP,SAAS,CAAC,CAAC,CAAC,EAAE;IAExG,MAAM8jP,aAAa,GAAGj4N,IAAI,CAACoY,qBAAqB,CAACo/M,WAAW,CAAC;IAC7D,MAAMU,kBAAkB,GAAGD,aAAa,CAACxnO,KAAK,CAAC,GAAG,CAAC;IACnD,IAAIiU,OAAO,GAAG,GAAGwzN,kBAAkB,CAAC,CAAC,CAAC,IAAIA,kBAAkB,CAAC,CAAC,CAAC,IAAIA,kBAAkB,CAAC,CAAC,CAAC,CAAC/jP,SAAS,CAAC,CAAC,CAAC,EAAE;IAEvGkxO,cAAc,GAAG/1O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9Cw1O,cAAc,CAACl5O,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IAC3Cg5O,cAAc,CAAC90O,YAAY,CAAC,gBAAgB,EAAE,GAAG0yG,gBAAgB,CAACnzG,EAAE,EAAE,CAAC;IAEvE,MAAMgsI,YAAY,GAAG,MAAM+vG,uBAAuB,CAAC5oI,gBAAgB,CAAC,MAAM;IAC1E,MAAMk1I,QAAQ,GAAG,YAAYH,QAAQ,MAAMtzN,OAAO,MAAM;IACxD,MAAM0zN,WAAW,GAAG,WAAWxM,MAAM,MAAMiM,MAAM,MAAM;IACvD,MAAMQ,UAAU,GAAGzwI,cAAc,GAAG,CAAC,GAAG,MAAMv3G,IAAI,IAAIu3G,cAAc,MAAM,GAAG,MAAMv3G,IAAI,MAAM;IAE7Fg1O,cAAc,CAAC54O,SAAS,GAAG;AACnC,uCAAuCqvI,YAAY,GAAGu8G,UAAU;AAChE,uCAAuCF,QAAQ,GAAGC,WAAW;AAC7D,KAAK;IAEG,OAAO/S,cAAc;EACzB;EACA,SAASvjG,cAAcA,CAAA,EAAG;IACtB,MAAMC,SAAS,GAAGzyI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CkyI,SAAS,CAAC51I,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;IAEpC,MAAMisP,OAAO,GAAG5oP,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEyiP;IACd,CAAC,CAAC;IACFrI,WAAW,GAAG77O,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClBo6O,WAAW,CAACp/O,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC,MAAMioP,iBAAiB,CAAC,CAAC;QACzB/I,WAAW,CAACp/O,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC5C;IACJ,CAAC,CAAC;IACF,IAAIm5O,UAAU,KAAK,GAAG,EAAE;MACpBgG,WAAW,CAACp/O,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC;IAEA,MAAMi/L,OAAO,GAAG57L,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZ24O,wBAAwB,CAAC,CAAC;QAC1Bn3C,eAAe,CAAC,CAAC;MACrB;IACJ,CAAC,CAAC;IAEF5wD,SAAS,CAACh1I,WAAW,CAACurP,OAAO,CAAC;IAC9B,IAAI56O,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,IAAIF,CAAC,CAACC,OAAO,CAACywC,UAAU,EAAE;MACpE2zF,SAAS,CAACh1I,WAAW,CAACw+O,WAAW,CAAC;IACtC;IACAxpG,SAAS,CAACh1I,WAAW,CAACu+L,OAAO,CAAC;IAE9B,OAAOvpD,SAAS;EACpB;EACA,SAASw2G,eAAeA,CAAA,EAAG;IACvBlU,UAAU,GAAG/0O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1Cw0O,UAAU,CAACl4O,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAEtCk4O,wBAAwB,GAAG6S,mBAAmB,CAAC,CAAC;IAChD9S,iBAAiB,GAAGxiG,cAAc,CAAC,CAAC;IAEpCuiG,UAAU,CAACt3O,WAAW,CAACw3O,wBAAwB,CAAC;IAChDF,UAAU,CAACt3O,WAAW,CAACu3O,iBAAiB,CAAC;IAEzC,OAAOD,UAAU;EACrB;EACA;EACA,eAAemU,iBAAiBA,CAAA,EAAG;IAC/B,MAAMC,cAAc,GAAGnpP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD4oP,cAAc,CAACtsP,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAE5C,MAAMu6O,SAAS,GAAGzmF,YAAY,CAACssF,YAAY,CAAC9mI,QAAQ,CAAC;IACrD,MAAM+yI,cAAc,GAAG,MAAM1R,uBAAuB,CAAC9uO,GAAG,CAAC0uO,SAAS,EAAE/oD,MAAM,CAAC;IAC3E,MAAM86D,cAAc,GAAGjpP,MAAM,CAACC,KAAK,CAAC;MAChCG,EAAE,EAAE,yBAAyB;MAC7BG,IAAI,EAAE,iBAAiB;MACvBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC,gBAAgB,CAAC;MAC9BQ,QAAQ,EAAEA,CAAA,KAAM;QACZgvJ,YAAY,CAACy4F,gBAAgB,CAAC,CAAC;MACnC;IACJ,CAAC,CAAC;IAEFH,cAAc,CAAC1rP,WAAW,CAAC4rP,cAAc,CAAC;IAC1CF,cAAc,CAAC1rP,WAAW,CAAC2rP,cAAc,CAAC;IAE1C,OAAOD,cAAc;EACzB;EACA,eAAe/P,aAAaA,CAACmQ,YAAY,EAAEC,yBAAyB,EAAE;IAClE;IACAxpP,QAAQ,CAACoQ,IAAI,CAACvT,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAEzC,MAAMihP,WAAW,GAAGiL,eAAe,CAAC,CAAC;IACrC,MAAMQ,UAAU,GAAG93O,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,iBAAiB,CAAC;IAC1DsG,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACugP,WAAW,CAAC;IACzC9uO,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACgsP,UAAU,CAAC;IACxC;IACA,MAAMlK,QAAQ,CAACr/O,IAAI,CAACquL,MAAM,CAAC;IAC3B,MAAMm7D,cAAc,CAACC,cAAc,CAACp7D,MAAM,CAAC;;IAE3C;IACA,MAAMq7D,cAAc,GAAG5pP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD,MAAMw9G,OAAO,GAAG/9G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C,MAAMspP,YAAY,GAAG7pP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDqpP,cAAc,CAACppP,EAAE,GAAG,gBAAgB;IACpCu9G,OAAO,CAACv9G,EAAE,GAAG,SAAS;IACtBqpP,YAAY,CAACrpP,EAAE,GAAG,cAAc;IAEhC,MAAMspP,WAAW,GAAGP,YAAY,GAAGA,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG;IACxD,IAAIQ,gBAAgB,GAAGD,WAAW,KAAK,GAAG,GAAG,CAAC,GAAGA,WAAW,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;;IAE5E;IACA,MAAMlyO,IAAI,GAAGa,IAAI,CAACpY,KAAK,CACnB;MACI+Z,UAAU,EAAE,MAAMF,cAAc,IAAI;QAChC,IAAIA,cAAc,KAAK,GAAG,EAAE;UACxB9L,CAAC,CAAC47O,aAAa,GAAG,gBAAgB;UAClCvxO,IAAI,CAAC4B,eAAe,CAACzC,IAAI,EAAE,SAAS,CAAC;UACrC,MAAM8iO,cAAc,CAACe,qBAAqB,CAAC;YACvCxF,UAAU;YACV1nD,MAAM;YACNt1K,QAAQ,EAAEi9N;UACd,CAAC,CAAC;UACFz9N,IAAI,CAAC4B,eAAe,CAACzC,IAAI,EAAE,QAAQ,CAAC;QACxC,CAAC,MAAM,IAAIsC,cAAc,KAAK,GAAG,EAAE;UAC/BzB,IAAI,CAAC4B,eAAe,CAACzC,IAAI,EAAE,SAAS,CAAC;UAErCxJ,CAAC,CAAC47O,aAAa,GAAG,SAAS;UAC3B,MAAMtO,GAAG,CAACC,UAAU,CAACptD,MAAM,CAAC;UAC5B91K,IAAI,CAAC4B,eAAe,CAACzC,IAAI,EAAE,QAAQ,CAAC;UACpC1I,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;QAC1B,CAAC,MAAM,IAAI3c,cAAc,KAAK,GAAG,EAAE;UAC/BzB,IAAI,CAAC4B,eAAe,CAACzC,IAAI,EAAE,SAAS,CAAC;UAErCxJ,CAAC,CAAC47O,aAAa,GAAG,cAAc;UAChC,MAAMC,kBAAkB,GAAGt4O,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,qBAAqB,CAAC;UACtEihP,YAAY,CAAC1sP,SAAS,GAAG,EAAE;UAC3B0sP,YAAY,CAACpsP,WAAW,CAACwsP,kBAAkB,CAAC;UAC5C,MAAMC,iBAAiB,GAAG,MAAMhB,iBAAiB,CAAC,CAAC;UACnDW,YAAY,CAAC1sP,SAAS,GAAG,EAAE;UAC3B0sP,YAAY,CAACpsP,WAAW,CAACysP,iBAAiB,CAAC;UAC3CzxO,IAAI,CAAC4B,eAAe,CAACzC,IAAI,EAAE,QAAQ,CAAC;QACxC;QACA1I,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;MAC1B,CAAC;MACDhf,MAAM,EAAEkyO;IACZ,CAAC,EACD,CACI;MACI11O,OAAO,EAAE,YAAY;MACrB2F,MAAM,EAAE4vO;IACZ,CAAC,EACD;MACIv1O,OAAO,EAAE,KAAK;MACd2F,MAAM,EAAE+jG;IACZ,CAAC,EACD;MACI1pG,OAAO,EAAE,UAAU;MACnB2F,MAAM,EAAE6vO;IACZ,CAAC,CAET,CAAC;;IAED;;IAEA,QAAQC,WAAW;MACf,KAAK,GAAG;QAAE;UACN17O,CAAC,CAAC47O,aAAa,GAAG,gBAAgB;UAClCD,gBAAgB,GAAG,CAAC;UAEpB,MAAMzR,cAAc,GAAG,MAAMC,UAAU,CAACC,iBAAiB,CAACjqD,MAAM,CAAC;UACjE,MAAM47D,gBAAgB,GAAG,MAAMzP,cAAc,CAACr6O,KAAK,CAACi4O,cAAc,EAAE;YAChE3kI,gBAAgB;YAChBsiI,UAAU;YACV1nD,MAAM;YACNt1K,QAAQ,EAAEi9N;UACd,CAAC,CAAC;UACF0T,cAAc,CAACnsP,WAAW,CAAC0sP,gBAAgB,CAAC;UAE5C;QACJ;MACA,KAAK,GAAG;QAAE;UACN/7O,CAAC,CAAC47O,aAAa,GAAG,SAAS;UAC3BD,gBAAgB,GAAG,CAAC;UAEpB,MAAMrO,GAAG,CAACC,UAAU,CAACptD,MAAM,CAAC;UAC5B91K,IAAI,CAAC4B,eAAe,CAACzC,IAAI,EAAE,QAAQ,CAAC;UACpC;QACJ;MACA,KAAK,GAAG;QAAE;UACNxJ,CAAC,CAAC47O,aAAa,GAAG,cAAc;UAChCD,gBAAgB,GAAG,CAAC;UAEpB,MAAME,kBAAkB,GAAGt4O,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,gBAAgB,CAAC;UACjEihP,YAAY,CAAC1sP,SAAS,GAAG,EAAE;UAC3B0sP,YAAY,CAACpsP,WAAW,CAACwsP,kBAAkB,CAAC;UAC5C,MAAMC,iBAAiB,GAAG,MAAMhB,iBAAiB,CAAC,CAAC;UACnDW,YAAY,CAAC1sP,SAAS,GAAG,EAAE;UAC3B0sP,YAAY,CAACpsP,WAAW,CAACysP,iBAAiB,CAAC;UAC3CzxO,IAAI,CAAC4B,eAAe,CAACzC,IAAI,EAAE,QAAQ,CAAC;UACpC;QACJ;IACJ;IAEA1I,GAAG,CAACiB,YAAY,CAACf,WAAW,CAACq6O,UAAU,CAAC;IACxCv6O,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACma,IAAI,CAAC;IAClCa,IAAI,CAAC4B,eAAe,CAACzC,IAAI,EAAE,QAAQ,CAAC;IAEpC,IAAI4xO,yBAAyB,EAAEA,yBAAyB,CAAC,CAAC;IAE1D,IAAIO,gBAAgB,KAAK,CAAC,EAAE;MACxBK,cAAc,CAACC,uBAAuB,CAAC,CAAC;MACxCC,eAAe,CAACC,2BAA2B,CAAC,CAAC;IACjD;IAEAr7O,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;;IAEtB;IACA;IACA;IACA;IACA;EACJ;;EAEA;EACA;EACA,SAAS2zN,iBAAiBA,CAACxU,iBAAiB,EAAE;IAC1C,OAAO,CAAC,GAAGA,iBAAiB,CAAC,CAAC3+N,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MACzC,MAAM8yO,MAAM,GAAG,IAAI1zO,IAAI,CAAC3T,CAAC,CAACy1O,aAAa,CAAC13N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACtD,MAAMupO,MAAM,GAAG,IAAI3zO,IAAI,CAACY,CAAC,CAACkhO,aAAa,CAAC13N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAEtD,IAAIspO,MAAM,KAAKC,MAAM,EAAE,OAAO,CAAC;MAE/B,OAAOD,MAAM,GAAGC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;IACnC,CAAC,CAAC;EACN;EACA,eAAeC,gBAAgBA,CAACpoP,CAAC,EAAE;IAC/B,MAAMC,cAAc,GAAGD,CAAC,CAAC3E,MAAM,CAAC0C,OAAO,CAACiC,CAAC,CAAC3E,MAAM,CAAC6E,aAAa,CAAC;IAC/D4zG,QAAQ,GAAG7zG,cAAc,CAACZ,KAAK;IAE/B,IAAI+yO,SAAS,CAAChqO,QAAQ,CAACiqO,aAAa,CAAC,EAAED,SAAS,CAACvlO,WAAW,CAACwlO,aAAa,CAAC;IAC3E,IAAID,SAAS,CAAChqO,QAAQ,CAACkqO,WAAW,CAAC,EAAEF,SAAS,CAACvlO,WAAW,CAACylO,WAAW,CAAC;IAEvE,IAAIx+H,QAAQ,KAAK,GAAG,EAAE;MAClB,MAAMsiI,SAAS,CAACiS,kBAAkB,CAAC5U,iBAAiB,CAAC;MACrD72O,IAAI,CAAC66O,WAAW,CAAC,GAAG,CAAC;MACrBnF,WAAW,GAAG8D,SAAS,CAAC0C,aAAa,CAACzsN,OAAO,IAAI;QAC7C,IAAIA,OAAO,EAAE;UACT+iK,OAAO,CAAC90L,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACxC,CAAC,MAAM;UACH60L,OAAO,CAAC90L,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC;MACJ,CAAC,CAAC;MACF43O,SAAS,CAACnlO,YAAY,CAACqlO,WAAW,EAAEljD,OAAO,CAAC;MAC5CA,OAAO,CAAC90L,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC;IAEA,IAAIu5G,QAAQ,KAAK,GAAG,EAAE;MAClBu+H,aAAa,GAAGyK,uBAAuB,CAAC,CAAC;MACzClgP,IAAI,CAAC66O,WAAW,CAAC,GAAG,CAAC;MACrBrF,SAAS,CAACnlO,YAAY,CAAColO,aAAa,EAAEjjD,OAAO,CAAC;MAC9CA,OAAO,CAAC90L,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC;EACJ;EACA,eAAe8tP,kBAAkBA,CAACl3I,gBAAgB,EAAE;IAChD,IAAIg+E,OAAO,CAAC90L,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;MACxC;IACJ;IAEA8H,aAAa,CAACT,OAAO,CAAC/U,IAAI,CAAC,uBAAuB,EAAE,EAAE,EAAE,IAAI,CAAC;IAC7D,MAAMq6O,SAAS,GAAGzmF,YAAY,CAACssF,YAAY,CAAC9mI,QAAQ,CAAC;IACrD,MAAM+mI,OAAO,GAAG,MAAMvsF,YAAY,CAACwsF,eAAe,CAAC/F,SAAS,EAAE,CAAC,CAAC;IAEhE,IAAI,CAAC8F,OAAO,IAAIA,OAAO,CAAC9/O,MAAM,KAAK,CAAC,EAAE;MAClCwtP,aAAa,CAACn3I,gBAAgB,EAAE2jI,SAAS,CAAC;MAC1C;IACJ;;IAEA;IACA;IACA,MAAMyT,gBAAgB,GAAG,MAAMvU,iBAAiB,IAAI;MAChD/jO,aAAa,CAACT,OAAO,CAAC/U,IAAI,CAAC,qBAAqB,EAAE,EAAE,EAAE,KAAK,CAAC;MAC5D;;MAEA,IAAImR,CAAC,CAACC,OAAO,CAACwlD,iBAAiB,EAAE;QAC7B,IAAIm3L,eAAe,GAAG,EAAE;QAExB,MAAMC,QAAQ,GAAGjrP,QAAQ,CAACC,aAAa,CAAC,oBAAoB,CAAC;QAC7D,IAAIgrP,QAAQ,EAAE;UACVl7O,KAAK,CAAC/S,IAAI,CAACiuP,QAAQ,CAAC;QACxB;;QAEA;QACA;QACA;QACA;QACA;;QAEA,IAAIC,eAAe;QACnB;QACA,IAAI5U,mBAAmB,IAAIA,mBAAmB,KAAK,EAAE,EAAE;UACnDC,kBAAkB,GAAGD,mBAAmB;QAC5C,CAAC,MAAM;UACH;UACA4U,eAAe,GAAGlV,iBAAiB,CAACxqO,MAAM,CAACyxO,EAAE,IAAIA,EAAE,CAACplO,MAAM,KAAK,MAAM,CAAC;UACtE,IAAIqzO,eAAe,IAAIA,eAAe,CAAC5tP,MAAM,GAAG,CAAC,EAAE;YAC/Ci5O,kBAAkB,GAAG2U,eAAe,CAAC,CAAC,CAAC,CAAC7S,cAAc;UAC1D;QACJ;QAEA,MAAM8S,WAAW,GAAG,MAAMt1D,kBAAkB,CAACu1D,gCAAgC,CAAC;UAC1Ex+M,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB20M,qBAAqB,EAAE7U,iBAAiB,CAACztN,IAAI,CAAC,IAAI,CAAC;UACnDuiO,cAAc,EAAE/U;QACpB,CAAC,CAAC;QAEF,MAAMgV,YAAY,GAAGx7O,KAAK,CAAC1P,KAAK,CAAC;UAC7BgB,UAAU,EAAE,CAAC,cAAc;QAC/B,CAAC,CAAC;QAEF,MAAM23E,KAAK,GAAGh5E,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;QAC1Cy4E,KAAK,CAAC77E,SAAS,GAAG,8BAA8B;QAChD,MAAMquP,MAAM,GAAGxrP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAC5CirP,MAAM,CAACruP,SAAS,GAAG,OAAO;QAC1BouP,YAAY,CAAC9tP,WAAW,CAACu7E,KAAK,CAAC;QAC/BuyK,YAAY,CAAC9tP,WAAW,CAAC+tP,MAAM,CAAC;QAEhC,MAAM75D,OAAO,GAAGvxL,MAAM,CAACC,KAAK,CAAC;UACzBG,EAAE,EAAE,oBAAoB;UACxBG,IAAI,EAAE,UAAU;UAChBI,IAAI,EAAE,WAAW;UACjBD,KAAK,EAAE,WAAW;UAClB;UACAO,UAAU,EAAE,iBAAiB;UAC7BQ,QAAQ,EAAEA,CAAA,KAAM;YACZ,IAAI4pP,uBAAuB,GAAG56F,YAAY,CAAC66F,wBAAwB,CAAC,CAAC;YACrE,IAAIC,oBAAoB,GAAGnV,iBAAiB;YAE5CzmO,KAAK,CAAC/S,IAAI,CAACuuP,YAAY,CAAC;YACxBT,aAAa,CAACn3I,gBAAgB,EAAE2jI,SAAS,EAAEd,iBAAiB,EAAEiV,uBAAuB,CAAC;UAC1F;QACJ,CAAC,CAAC;QAEF,IAAIN,WAAW,IAAIA,WAAW,CAAC7tP,MAAM,GAAG,CAAC,EAAE;UACvC,MAAMwjN,IAAI,GAAGjwD,YAAY,CAAC+6F,qBAAqB,CAACT,WAAW,CAAC;UAC5DI,YAAY,CAAC9tP,WAAW,CAACqjN,IAAI,CAAC;UAC9ByqC,YAAY,CAAC9tP,WAAW,CAACk0L,OAAO,CAAC;UACjC5hL,KAAK,CAAC9S,IAAI,CAACsuP,YAAY,CAAC;QAC5B,CAAC,MAAM;UACHT,aAAa,CAACn3I,gBAAgB,EAAE2jI,SAAS,EAAEd,iBAAiB,CAAC;QACjE;MACJ,CAAC,MAAM;QACH;QACAsU,aAAa,CAACn3I,gBAAgB,EAAE2jI,SAAS,EAAEd,iBAAiB,CAAC;MACjE;IACJ,CAAC;IACD3lF,YAAY,CAACg7F,qBAAqB,CAACzO,OAAO,EAAE2N,gBAAgB,CAAC;EACjE;EACA,SAASe,uBAAuBA,CAACn4I,gBAAgB,EAAE;IAC/C,MAAM3rD,IAAI,GAAG2rD,gBAAgB,CAAC2F,IAAI,CAACr5G,aAAa,CAAC,YAAY,CAAC;IAC9D,MAAMmxF,KAAK,GAAGuiB,gBAAgB,CAAC2F,IAAI,CAACr5G,aAAa,CAAC,aAAa,CAAC;IAChE,OAAO,GAAGmxF,KAAK,CAAC5sF,SAAS,IAAIwjD,IAAI,CAACxjD,SAAS,EAAE;EACjD;EACA,eAAesmP,aAAaA,CAACn3I,gBAAgB,EAAE2jI,SAAS,EAAEd,iBAAiB,EAAEiV,uBAAuB,EAAE;IAClG,MAAMrD,gBAAgB,GAAGzP,SAAS,CAACoH,mBAAmB,CAAC,CAAC;IACxD,IAAIwI,MAAM,GAAG73N,IAAI,CAACoY,qBAAqB,CAACs/M,gBAAgB,CAAC;IAEzD,IAAI2D,aAAa;IACjB,IAAIC,UAAU;IACd,IAAIC,WAAW;IACf,MAAMC,WAAW,GAAG,EAAE;IACtB,MAAMC,QAAQ,GAAG,EAAE;;IAEnB;IACA,IAAIC,uBAAuB,GAAG,MAAMn9D,kBAAkB,CAACo9D,8BAA8B,CAAC;MAClFjgG,QAAQ,EAAEz4C,gBAAgB,CAACnzG;IAC/B,CAAC,CAAC;IAEF,IAAI61G,QAAQ,KAAK,GAAG,EAAE;MAClB,MAAMuiI,iBAAiB,GAAGD,SAAS,CAACkH,oBAAoB,CAAC,CAAC;MAC1D,MAAMyM,kBAAkB,GAAG3T,SAAS,CAACqH,iBAAiB,CAAC,CAAC;MAExD,IAAIuM,YAAY,GAAG,MAAMp7C,QAAQ,CAACq7C,gBAAgB,CAAC;QAC/C5/M,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtBmM,UAAU,EAAE8wD,gBAAgB,CAACnzG,EAAE;QAC/Bq4O,aAAa,EAAEnoN,IAAI,CAACoY,qBAAqB,CAAC8vM,iBAAiB,CAAC;QAC5DO,UAAU,EAAEzoN,IAAI,CAACoY,qBAAqB,CAACwjN,kBAAkB,CAAC;QAC1DF,uBAAuB,EAAEA;MAC7B,CAAC,CAAC;MAEFG,YAAY,GAAGA,YAAY,CAACprO,KAAK,CAAC,GAAG,CAAC;MACtC4qO,aAAa,GAAGQ,YAAY,CAAC,CAAC,CAAC;MAC/BN,WAAW,GAAGM,YAAY,CAAC,CAAC,CAAC;IACjC,CAAC,MAAM;MACH,MAAMpE,kBAAkB,GAAGxP,SAAS,CAACwD,qBAAqB,CAAC,CAAC;MAC5D,MAAMG,MAAM,GAAG5rN,IAAI,CAACoY,qBAAqB,CAACq/M,kBAAkB,CAAC;MAC7D,MAAMmE,kBAAkB,GAAG3T,SAAS,CAACqH,iBAAiB,CAAC,CAAC;MAExD,IAAIuM,YAAY,GAAG,MAAMp7C,QAAQ,CAACs7C,iBAAiB,CAAC;QAChD7/M,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB4/L,mBAAmB;QACnBmC,cAAc,EAAE6D,MAAM;QACtB5D,YAAY,EAAE6P,MAAM;QACpBpP,UAAU,EAAEzoN,IAAI,CAACoY,qBAAqB,CAACwjN,kBAAkB,CAAC;QAC1DI,oBAAoB,EAAE,IAAI;QAC1BN,uBAAuB,EAAEA;MAC7B,CAAC,CAAC;MAEFG,YAAY,GAAGA,YAAY,CAACprO,KAAK,CAAC,GAAG,CAAC;MACtC4qO,aAAa,GAAGQ,YAAY,CAAC,CAAC,CAAC;MAC/BN,WAAW,GAAGM,YAAY,CAAC,CAAC,CAAC;IACjC;IACA;IACA,IAAI/V,iBAAiB,IAAIA,iBAAiB,CAACl5O,MAAM,GAAG,CAAC,EAAE;MACnD,KAAK4K,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsuO,iBAAiB,CAACl5O,MAAM,EAAE4K,CAAC,EAAE,EAAE;QAC3C,IAAIykP,YAAY,GAAGnW,iBAAiB,CAACtuO,CAAC,CAAC;QACvC;QACA,IAAI0kP,WAAW;;QAEf;QACA,IAAInB,uBAAuB,IAAIA,uBAAuB,CAACnuP,MAAM,GAAG,CAAC,EAAE;UAC/D,IAAIuvP,eAAe,GAAG,EAAE;UACxB,KAAKzqO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqpO,uBAAuB,CAACnuP,MAAM,EAAE8kB,CAAC,EAAE,EAAE;YACjD,IAAIuqO,YAAY,KAAKlB,uBAAuB,CAACrpO,CAAC,CAAC,CAAC0qO,YAAY,EAAE;cAC1D;cACAD,eAAe,CAACzhP,IAAI,CAACqgP,uBAAuB,CAACrpO,CAAC,CAAC,CAAC69G,YAAY,CAAC;YACjE;UACJ;UACA,IAAI4sH,eAAe,IAAIA,eAAe,CAACvvP,MAAM,GAAG,CAAC,EAAE;YAC/CsvP,WAAW,GAAGC,eAAe,CAAC9jO,IAAI,CAAC,GAAG,CAAC;UAC3C,CAAC,MAAM;YACH6jO,WAAW,GAAG,EAAE;UACpB;QACJ,CAAC,MAAM;UACHA,WAAW,GAAG,EAAE;QACpB;QAEAZ,UAAU,GAAG,MAAMn2D,kBAAkB,CAAC2nD,4BAA4B,CAAC;UAC/D5wM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB86I,UAAU,EAAEm7D,YAAY;UACxBlP,WAAW,EAAEsO,aAAa;UAC1B3/F,QAAQ,EAAEz4C,gBAAgB,CAACnzG,EAAE;UAC7BusP,uBAAuB,EAAEH,WAAW;UACpCI,gBAAgB,EAAEzW;QACtB,CAAC,CAAC;QACF2V,WAAW,CAAC9gP,IAAI,CAAC4gP,UAAU,CAAC;MAChC;IACJ;;IAEA;IACA,MAAMiB,eAAe,GAAG,MAAM97C,QAAQ,CAAC+7C,wBAAwB,CAAC;MAC5DtgN,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB4gM,SAAS;MACTlrF,QAAQ,EAAEz4C,gBAAgB,CAACnzG,EAAE;MAC7Bi9O,WAAW,EAAEsO,aAAa;MAC1BzV,mBAAmB,EAAEC;IACzB,CAAC,CAAC;IACF,IAAI4W,SAAS,GAAGF,eAAe,CAAC9rO,KAAK,CAAC,GAAG,CAAC;IAC1C+qO,WAAW,CAAC9gP,IAAI,CAAC,GAAG+hP,SAAS,CAAC;IAC9B;;IAEA,MAAMlC,QAAQ,GAAGjrP,QAAQ,CAACC,aAAa,CAAC,oBAAoB,CAAC;IAC7D,IAAIgrP,QAAQ,EAAE;MACV;MACAl7O,KAAK,CAAC/S,IAAI,CAACiuP,QAAQ,CAAC;IACxB;IAEAt5O,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,kBAAkB,CAAC;IAEzC+1G,+BAA+B,CAAC,+BAA+B,CAAC;IAEhEu7E,MAAM,GAAGw9D,aAAa;IACtB11I,QAAQ,GAAGA,QAAQ;IACnB4/H,UAAU,GAAG,GAAG;IAChBC,gBAAgB,GAAG,IAAI;IACvB59H,cAAc,GAAGh0G,SAAS;IAE1B,IAAI8nP,uBAAuB,KAAK,GAAG,EAAE;MACjC;MACA;MACA;MACA;MACA;MACA,MAAMljJ,QAAQ,GAAG4iJ,uBAAuB,CAACn4I,gBAAgB,CAAC;MAC1Dy5I,4CAA4C,CAAClkJ,QAAQ,EAAE,MAAM;QACzDn5F,KAAK,CAAC/S,IAAI,CAACqwP,6BAA6B,CAAC;QACzCx8F,YAAY,CAACy8F,sCAAsC,CAACpB,WAAW,CAAC;QAChE9S,aAAa,CAAC,CAAC;MACnB,CAAC,CAAC;IACN,CAAC,MAAM,IAAIgT,uBAAuB,KAAK,IAAI,EAAE;MACzC;MACA;MACA;MACA;MACA;MACA,MAAMljJ,QAAQ,GAAG4iJ,uBAAuB,CAACn4I,gBAAgB,CAAC;MAC1D45I,0BAA0B,CAACrkJ,QAAQ,EAAE+iJ,WAAW,EAAE,MAAM;QACpDl8O,KAAK,CAAC/S,IAAI,CAAC83O,gBAAgB,CAAC;QAC5BjkF,YAAY,CAACy8F,sCAAsC,CAACpB,WAAW,CAAC;QAChE9S,aAAa,CAAC,CAAC;MACnB,CAAC,CAAC;IACN,CAAC,MAAM;MACH,MAAMlwI,QAAQ,GAAG4iJ,uBAAuB,CAACn4I,gBAAgB,CAAC;MAC1D45I,0BAA0B,CAACrkJ,QAAQ,EAAE+iJ,WAAW,EAAE,MAAM;QACpDl8O,KAAK,CAAC/S,IAAI,CAAC83O,gBAAgB,CAAC;QAC5BjkF,YAAY,CAACy8F,sCAAsC,CAACpB,WAAW,CAAC;QAChE9S,aAAa,CAAC,CAAC;MACnB,CAAC,CAAC;IACN;EACJ;EAEA,SAASiG,uBAAuBA,CAACmO,aAAa,EAAEC,qBAAqB,EAAE;IACnE,MAAMxmJ,YAAY,GAAG;MACjBjzF,KAAK,EAAE,IAAI;MACXI,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC;MACpEhB,OAAO,EAAEo6O,aAAa,GAAG,2BAA2B,GAAG,mBAAmB;MAC1Ev5O,QAAQ,EAAE;IACd,CAAC;IAED,MAAMu5F,SAAS,GAAGwoI,iBAAiB,CAC9BxqO,MAAM,CAACkiP,QAAQ,IAAI;MAChB,OAAOA,QAAQ,CAAC71O,MAAM,KAAK,MAAM;IACrC,CAAC,CAAC,CACD9Q,GAAG,CAAC2mP,QAAQ,IAAI;MACb,MAAM3sP,IAAI,GAAG2sP,QAAQ,CAACr3I,QAAQ,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK;MACtD,MAAM2D,WAAW,GAAG0zI,QAAQ,CAACp1I,cAAc,KAAK,GAAG,GAAGo1I,QAAQ,CAACp1I,cAAc,GAAG,EAAE;MAClF,MAAMnjF,KAAK,GAAGu4N,QAAQ,CAAC7U,aAAa,CAAC13N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAClD,MAAMs3N,cAAc,GAAGiV,QAAQ,CAACjV,cAAc,CAACt3N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC5D,MAAMg4N,UAAU,GAAGuU,QAAQ,CAACvU,UAAU,GAAGuU,QAAQ,CAACvU,UAAU,CAACh4N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;MAElF,OAAO;QACH7L,MAAM,EAAE,CAACvU,IAAI,EAAEi5G,WAAW,EAAE7kF,KAAK,EAAEsjN,cAAc,EAAEU,UAAU,CAAC;QAC9D13O,UAAU,EAAE,CAAC;UAAEE,GAAG,EAAE,cAAc;UAAEC,KAAK,EAAE8rP,QAAQ,CAACrV;QAAe,CAAC,CAAC;QACrEljO,OAAO,EAAE5S,CAAC,IAAI;UACV,IAAI,CAACirP,aAAa,EAAE;YAChB,MAAM15O,GAAG,GAAGvR,CAAC,CAAC3E,MAAM;YACpB,MAAM6hP,oBAAoB,GAAG7K,aAAa,CAAC30O,aAAa,CAAC,WAAW,CAAC;YACrE,IAAIw/O,oBAAoB,EAAEA,oBAAoB,CAAC5iP,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;YAE3EgX,GAAG,CAACjX,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;YAE7B47O,SAAS,CAAC6G,oBAAoB,CAACkO,QAAQ,CAAC;YAExCpX,mBAAmB,GAAGoX,QAAQ,CAACrV,cAAc;YAE7C,IAAI1D,SAAS,CAAChqO,QAAQ,CAACkqO,WAAW,CAAC,EAAEF,SAAS,CAACvlO,WAAW,CAACylO,WAAW,CAAC;YACvEA,WAAW,GAAG8D,SAAS,CAAC0C,aAAa,CAACzsN,OAAO,IAAI;cAC7C,IAAIA,OAAO,EAAE;gBACT+iK,OAAO,CAAC90L,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;cACxC,CAAC,MAAM;gBACH60L,OAAO,CAAC90L,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;cACrC;YACJ,CAAC,CAAC;YACF43O,SAAS,CAACnlO,YAAY,CAACqlO,WAAW,EAAED,aAAa,CAAC;UACtD,CAAC,MAAM;YACH6Y,qBAAqB,CAAClrP,CAAC,CAAC3E,MAAM,EAAE8vP,QAAQ,CAAC;UAC7C;QACJ;MACJ,CAAC;IACL,CAAC,CAAC;IAEN,MAAMzO,kBAAkB,GAAG/rO,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;IACpD/zF,KAAK,CAAC9V,QAAQ,CAAC6hP,kBAAkB,EAAEzxI,SAAS,CAAC;IAE7C,OAAOyxI,kBAAkB;EAC7B;EACA,SAAS0O,oBAAoBA,CAACC,OAAO,EAAE;IACnC,IAAIA,OAAO,EAAE;MACT,IAAIj8D,OAAO,EAAEA,OAAO,CAAC90L,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC9C;IACJ;IAEA,IAAI40L,OAAO,EAAEA,OAAO,CAAC90L,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;EACrD;EACA,eAAe+wP,qBAAqBA,CAACl6I,gBAAgB,EAAE;IACnDghI,SAAS,GAAG30O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzCo0O,SAAS,CAAC93O,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAExCs5O,gBAAgB,GAAGL,iBAAiB,IAAIA,iBAAiB,CAAC14O,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;IAEnF62I,YAAY,GAAGnyI,QAAQ,CAAC3B,KAAK,CAAC;MAC1B8B,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE,WAAW;MAClBoB,SAAS,EAAE;IACf,CAAC,CAAC;IAEF,IAAI6zI,QAAQ;IAEZ,IAAIsgG,gBAAgB,EAAE;MAClBhgI,QAAQ,GAAG,GAAG;MACd0/B,QAAQ,GAAG,CACP;QAAEn0I,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAG,CAAC,EACxB;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAS,CAAC,EAC9B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAW,CAAC,CACnC;IACL,CAAC,MAAM;MACH01G,QAAQ,GAAG,GAAG;MACd0/B,QAAQ,GAAG,CAAC;QAAEn0I,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAS,CAAC,CAAC;IAC/C;IAEAqB,QAAQ,CAAC5E,QAAQ,CAAC+2I,YAAY,EAAE4B,QAAQ,CAAC;IAEzC5B,YAAY,CAACh0I,gBAAgB,CAAC,QAAQ,EAAEwqP,gBAAgB,CAAC;IAEzDh5D,OAAO,GAAGvxL,MAAM,CAACC,KAAK,CAAC;MACnBG,EAAE,EAAE,uBAAuB;MAC3BG,IAAI,EAAE,MAAM;MACZI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAEA,CAAA,KAAMgpP,kBAAkB,CAACl3I,gBAAgB;IACvD,CAAC,CAAC;IAEFghI,SAAS,CAACl3O,WAAW,CAAC02I,YAAY,CAAC;IAEnC,IAAI,CAACkiG,gBAAgB,EAAE;MACnBl3O,IAAI,CAAC66O,WAAW,CAAC,GAAG,CAAC;MACrB,MAAMrB,SAAS,CAACiS,kBAAkB,CAAC5U,iBAAiB,CAAC;MACrDnB,WAAW,GAAG8D,SAAS,CAAC0C,aAAa,CAACzsN,OAAO,IAAI;QAC7C,IAAIA,OAAO,EAAE;UACT+iK,OAAO,CAAC90L,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACxC,CAAC,MAAM;UACH60L,OAAO,CAAC90L,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC;MACJ,CAAC,CAAC;MACF43O,SAAS,CAACl3O,WAAW,CAACo3O,WAAW,CAAC;IACtC;IAEAF,SAAS,CAACl3O,WAAW,CAACk0L,OAAO,CAAC;IAE9B,OAAOgjD,SAAS;EACpB;;EAEA;EACA;EACA,SAASmZ,iCAAiCA,CAAA,EAAG;IACzC,MAAMzhN,YAAY,GAAGt8B,KAAK,CAAC1P,KAAK,CAAC;MAC7BG,EAAE,EAAE;MACJ;MACA;MACA;IACJ,CAAC,CAAC;IAEF,MAAMqQ,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3CsQ,OAAO,CAACrM,SAAS,GAAG,kLAAkL;IAEtM6nC,YAAY,CAAC5uC,WAAW,CAACoT,OAAO,CAAC;IAEjCd,KAAK,CAAC9S,IAAI,CAACovC,YAAY,CAAC;EAC5B;EACA,SAASkhN,0BAA0BA,CAACrkJ,QAAQ,EAAE0iF,GAAG,EAAE/pL,QAAQ,EAAE;IACzDizO,gBAAgB,GAAG/kO,KAAK,CAAC1P,KAAK,CAAC;MAC3BG,EAAE,EAAE,yBAAyB;MAC7B+P,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,IAAIq7K,GAAG,EAAE;MACLkpD,gBAAgB,CAAC33O,SAAS,IAAI,MAAM+rG,QAAQ,QAAQ0iF,GAAG,qDAAqD;IAChH,CAAC,MAAM;MACHkpD,gBAAgB,CAAC33O,SAAS,IAAI,MAAM+rG,QAAQ,oDAAoD;MAChG;MACA;MACA;IACJ;IAEA,MAAMz7C,QAAQ,GAAGrtD,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA;IACd,CAAC,CAAC;IAEFizO,gBAAgB,CAACr3O,WAAW,CAACgwD,QAAQ,CAAC;IAEtC19C,KAAK,CAAC9S,IAAI,CAAC63O,gBAAgB,CAAC;EAChC;EAEA,SAASsY,4CAA4CA,CAAClkJ,QAAQ,EAAErnG,QAAQ,EAAE;IACtEwrP,6BAA6B,GAAGt9O,KAAK,CAAC1P,KAAK,CAAC;MACxCG,EAAE,EAAE,yBAAyB;MAC7B+P,KAAK,EAAE;IACX,CAAC,CAAC;IAEF88O,6BAA6B,CAAClwP,SAAS,IAAI,MAAM+rG,QAAQ;AACjE,0FAA0F;IAElF,MAAMz7C,QAAQ,GAAGrtD,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA;IACd,CAAC,CAAC;IAEFwrP,6BAA6B,CAAC5vP,WAAW,CAACgwD,QAAQ,CAAC;IAEnD19C,KAAK,CAAC9S,IAAI,CAACowP,6BAA6B,CAAC;EAC7C;EAEA,SAASU,eAAeA,CAAA,EAAG;IACvB,OAAO3tP,MAAM,CAACC,KAAK,CAAC;MAChBM,IAAI,EAAE,cAAc;MACpBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC+M,CAAC,CAACC,OAAO,CAACywC,UAAU,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC;MACjEj9C,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAI2yO,UAAU,CAAChwO,SAAS,KAAK,cAAc,EAAE;UACzCiO,aAAa,CAACT,OAAO,CAAC/U,IAAI,CAACu3O,UAAU,CAAC;UAEtC,IAAIpmO,CAAC,CAACC,OAAO,CAAC2pC,eAAe,EAAE;YAC3B;YACAg2M,iBAAiB,GAAG,MAAM/+D,kBAAkB,CAACg/D,+BAA+B,CAAC;cACzEprM,UAAU,EAAE8wD,gBAAgB,CAACnzG;YACjC,CAAC,CAAC;YACF,IAAI,CAACwtP,iBAAiB,EAAE;cACpBv7O,aAAa,CAACT,OAAO,CAAChV,IAAI,CAACw3O,UAAU,CAAC;cACtCsZ,iCAAiC,CAAC,CAAC;cACnC;YACJ;UACJ;UAEApZ,aAAa,GAAG,MAAMmZ,qBAAqB,CAACl6I,gBAAgB,CAAC;UAE7DxH,WAAW,CAAC/8F,WAAW,CAACykG,aAAa,CAAC;UACtC1H,WAAW,CAAC1uG,WAAW,CAACi3O,aAAa,CAAC;UAEtCjiO,aAAa,CAACT,OAAO,CAAChV,IAAI,CAACw3O,UAAU,CAAC;UACtCA,UAAU,CAAChwO,SAAS,GAAG,MAAM;UAE7B,IAAIiwO,iBAAiB,EAAE;YACnBA,iBAAiB,CAAC3zO,KAAK,CAACoK,OAAO,GAAG,MAAM;UAC5C;QACJ,CAAC,MAAM;UACHihG,WAAW,CAAC/8F,WAAW,CAACslO,aAAa,CAAC;UACtCvoI,WAAW,CAAC1uG,WAAW,CAACo2G,aAAa,CAAC;UAEtC2gI,UAAU,CAAChwO,SAAS,GAAG,cAAc;UACrC,IAAIiwO,iBAAiB,EAAE;YACnBA,iBAAiB,CAAC3zO,KAAK,CAACoK,OAAO,GAAG,OAAO;UAC7C;QACJ;MACJ;IACJ,CAAC,CAAC;EACN;EAEA,SAASgjP,sBAAsBA,CAAA,EAAG;IAC9B,OAAO9tP,MAAM,CAACC,KAAK,CAAC;MAChBG,EAAE,EAAE,sBAAsB;MAC1BG,IAAI,EAAEyN,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,GAAG,kBAAkB,GAAG,aAAa;MACrFxN,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC+M,CAAC,CAACC,OAAO,CAACywC,UAAU,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC;MACjEj9C,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB4Q,aAAa,CAACT,OAAO,CAAC/U,IAAI,CAACw3O,iBAAiB,CAAC;QAC7C,MAAM0Z,gBAAgB,CAACC,uBAAuB,CAAC,CAAC;QAChD37O,aAAa,CAACT,OAAO,CAAChV,IAAI,CAACy3O,iBAAiB,CAAC;MACjD;IACJ,CAAC,CAAC;EACN;EAEA,SAAS4Z,oBAAoBA,CAAA,EAAG;IAC5B,OAAOjuP,MAAM,CAACC,KAAK,CAAC;MAChBM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC,iBAAiB,CAAC;MAC/BQ,QAAQ,EAAEysP;IACd,CAAC,CAAC;EACN;EAEA,eAAeA,kCAAkCA,CAAA,EAAG;IAChDj9O,WAAW,CAACpU,IAAI,CAAC,qBAAqB,CAAC;IAEvC,MAAMqwM,UAAU,GAAG,MAAM6D,QAAQ,CAACo9C,0BAA0B,CAAC;MACzD3hN,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE8wD,gBAAgB,CAACnzG,EAAE;MAC/B8rD,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B;IACtB,CAAC,CAAC;IAEF,IAAI+/J,UAAU,KAAK,mBAAmB,EAAE;MACpC/mJ,OAAO,GAAG,IAAI;IAClB,CAAC,MAAM;MACHA,OAAO,GAAG,KAAK;IACnB;IAEA,MAAMinJ,gBAAgB,GAAGxtM,QAAQ,CAACC,aAAa,CAAC,mBAAmB,CAAC;IACpEutM,gBAAgB,CAAC1sM,KAAK,CAACoK,OAAO,GAAG,MAAM;;IAEvC;IACA,IAAIq7C,OAAO,EAAE;MACTl1C,WAAW,CAACI,OAAO,CAAC,sBAAsB,CAAC;MAC3CyW,UAAU,CAAC,MAAM;QACb,MAAMulL,SAAS,GAAGztM,QAAQ,CAACC,aAAa,CAAC,sBAAsB,CAAC;QAChEiP,GAAG,CAACiB,YAAY,CAACf,WAAW,CAACq+L,SAAS,CAAC;QACvCvgM,OAAO,CAAClQ,IAAI,CAAC,CAAC;QAEdqmM,eAAe,CAAC,CAAC;MACrB,CAAC,EAAE,GAAG,CAAC;IACX,CAAC,MAAM;MACHhyL,WAAW,CAACK,MAAM,CAAC,4CAA4C,CAAC;MAChEwW,UAAU,CAAC,MAAM;QACb,MAAMwlL,SAAS,GAAG1tM,QAAQ,CAACC,aAAa,CAAC,gBAAgB,CAAC;QAC1DiP,GAAG,CAACiB,YAAY,CAACf,WAAW,CAACs+L,SAAS,CAAC;QACvCxgM,OAAO,CAAClQ,IAAI,CAAC,CAAC;MAClB,CAAC,EAAE,IAAI,CAAC;IACZ;EACJ;EAEA,SAASq8G,iBAAiBA,CAAA,EAAG;IACzB1F,gBAAgB,CAAC2F,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAErD,MAAM0xP,gBAAgB,GAAG76I,gBAAgB,CAAC2F,IAAI,CAACr5G,aAAa,CAAC,eAAe,CAAC;IAC7E,IAAIuuP,gBAAgB,IAAI,IAAI,EACxBA,gBAAgB,CAAC1tP,KAAK,CAACoK,OAAO,GAAG,OAAO;IAE5C,MAAM7I,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEtCsF,IAAI,CAAC5E,WAAW,CAACk2G,gBAAgB,CAAC2F,IAAI,CAAC;IAEvC,OAAOj3G,IAAI;EACf;EACA,SAAS62G,kBAAkBA,CAAA,EAAG;IAC1B,MAAMjS,YAAY,GAAG;MACjBjzF,KAAK,EAAE,KAAK;MACZI,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC;MAClGhB,OAAO,EAAE;IACb,CAAC;IAED,MAAMo6F,SAAS,GAAGwoI,iBAAiB,CAACjvO,GAAG,CAACqxO,EAAE,IAAI;MAC1C,MAAMr3O,IAAI,GAAGq3O,EAAE,CAAC/hI,QAAQ,KAAK,GAAG,GAAG,QAAQ,GAAG,UAAU;MACxD,MAAM2D,WAAW,GAAGo+H,EAAE,CAAC9/H,cAAc,KAAK,GAAG,GAAG8/H,EAAE,CAAC9/H,cAAc,GAAG,EAAE;MACtE,MAAMm2I,cAAc,GAAGrW,EAAE,CAACsW,YAAY,GAAGtW,EAAE,CAACsW,YAAY,CAACvtO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;MAC3E,MAAM+T,SAAS,GAAGkjN,EAAE,CAACS,aAAa,CAAC13N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAChD,MAAMiU,OAAO,GAAGgjN,EAAE,CAACW,WAAW,CAAC53N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC5C,MAAMs3N,cAAc,GAAGL,EAAE,CAACK,cAAc,CAACt3N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACtD,MAAMu3N,YAAY,GAAGN,EAAE,CAACM,YAAY,CAACv3N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAClD,IAAIlI,QAAQ,GAAGm/N,EAAE,CAACvgO,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,KAAK;MAClD,MAAMshO,UAAU,GAAGf,EAAE,CAACe,UAAU,GAAGf,EAAE,CAACe,UAAU,CAACh4N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;MACtE,IAAIwtO,UAAU,GAAGvW,EAAE,CAACwW,YAAY,GAAGxW,EAAE,CAACwW,YAAY,GAAG,EAAE;MACvDD,UAAU,GAAG,GAAGvW,EAAE,CAACyW,YAAY,MAAMF,UAAU,EAAE;MACjD,IAAIF,cAAc,KAAK,EAAE,EAAE;QACvB1gE,eAAe,CAAClxL,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC7C;MAEA,OAAO;QACHuY,MAAM,EAAE,CAACvU,IAAI,EAAEi5G,WAAW,EAAEy0I,cAAc,EAAEv5N,SAAS,EAAEujN,cAAc,EAAEU,UAAU,EAAEwV,UAAU,CAAC;QAC9FltP,UAAU,EAAE,CACR;UAAEE,GAAG,EAAE,kBAAkB;UAAEC,KAAK,EAAEqX;QAAS,CAAC,EAC5C;UAAEtX,GAAG,EAAE,cAAc;UAAEC,KAAK,EAAEw2O,EAAE,CAACC;QAAe,CAAC,CACpD;QACDljO,OAAO,EAAE,MAAAA,CAAA,KAAY;UACjBo5K,MAAM,GAAG6pD,EAAE,CAACC,cAAc;UAC1BhiI,QAAQ,GAAG+hI,EAAE,CAAC/hI,QAAQ,CAACx1G,WAAW,CAAC,CAAC;UACpCo1O,UAAU,GAAGmC,EAAE,CAACnC,UAAU,GAAGmC,EAAE,CAACnC,UAAU,GAAG,GAAG;UAChDC,gBAAgB,GAAGj9N,QAAQ;UAC3Bq/F,cAAc,GAAG8/H,EAAE,CAAC9/H,cAAc;UAClC89H,wBAAwB,GAAGqY,cAAc,GAAG,IAAI,GAAG,KAAK;UAExD9V,SAAS,CAACmW,kBAAkB,CAAC;YACzB55N,SAAS,EAAE,IAAIne,IAAI,CAACme,SAAS,CAAC;YAC9BE,OAAO,EAAE,IAAIre,IAAI,CAACqe,OAAO,CAAC;YAC1BqjN,cAAc,EAAE,IAAI1hO,IAAI,CAAC0hO,cAAc,CAAC;YACxCC,YAAY,EAAE,IAAI3hO,IAAI,CAAC2hO,YAAY,CAAC;YACpCS,UAAU,EAAE,IAAIpiO,IAAI,CAACoiO,UAAU;UACnC,CAAC,CAAC;UAEFC,aAAa,CAAC,CAAC;QACnB;MACJ,CAAC;IACL,CAAC,CAAC;IAEF,MAAM95H,MAAM,GAAGpsG,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAExC;IACA,MAAMzwF,OAAO,GAAG8oG,MAAM,CAACj5G,gBAAgB,CAAC,aAAa,CAAC;IACtDmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAEhD;IACAiS,KAAK,CAACqD,iBAAiB,CAAC+oG,MAAM,CAAC;IAG/BpsG,KAAK,CAAC9V,QAAQ,CAACkiH,MAAM,EAAE9R,SAAS,CAAC;IAEjC,OAAO8R,MAAM;EACjB;EACA,eAAe+jF,eAAeA,CAAA,EAAG;IAC7Bn0L,GAAG,CAACC,iBAAiB,CAAC,CAAC;IAEvBg9F,WAAW,GAAGnsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C4rG,WAAW,CAACtvG,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAE5C,MAAMg+G,YAAY,GAAG1B,iBAAiB,CAAC,CAAC;IACxCm7H,UAAU,GAAGuZ,eAAe,CAAC,CAAC;IAC9BtZ,iBAAiB,GAAGyZ,sBAAsB,CAAC,CAAC;IAC5CngE,eAAe,GAAGsgE,oBAAoB,CAAC,CAAC;IAExC,MAAM9hN,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAEvCwvC,OAAO,CAAC9uC,WAAW,CAAC+2O,UAAU,CAAC;IAC/B,IAAIpmO,CAAC,CAACC,OAAO,CAAC6wC,kBAAkB,EAAE3S,OAAO,CAAC9uC,WAAW,CAACg3O,iBAAiB,CAAC;IAExE,IAAIrmO,CAAC,CAACC,OAAO,CAAC8wC,aAAa,IAAI/wC,CAAC,CAACC,OAAO,CAAC2pC,eAAe,EAAE;MACtD;MACAg2M,iBAAiB,GAAG,MAAM/+D,kBAAkB,CAACg/D,+BAA+B,CAAC;QACzEprM,UAAU,EAAE8wD,gBAAgB,CAACnzG;MACjC,CAAC,CAAC;MAEF,IAAIwtP,iBAAiB,EAAE;QACnBzhN,OAAO,CAAC9uC,WAAW,CAACswL,eAAe,CAAC;MACxC;IACJ;IAEA5hF,WAAW,CAAC1uG,WAAW,CAACs9G,YAAY,CAAC;IACrC5O,WAAW,CAAC1uG,WAAW,CAAC8uC,OAAO,CAAC;IAChCr9B,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC0uG,WAAW,CAAC;IAEzC,MAAMwM,OAAO,GAAGhnG,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,oBAAoB,CAAC;IAC1DujG,WAAW,CAAC1uG,WAAW,CAACk7G,OAAO,CAAC;IAEhCq9H,iBAAiB,GAAG,MAAM7kC,QAAQ,CAACgnC,gBAAgB,CAAC;MAChDvrM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE8wD,gBAAgB,CAACnzG;IACjC,CAAC,CAAC;IACFw1O,iBAAiB,CAAC3+N,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MAC7B,MAAMo3O,KAAK,GAAG3rP,CAAC,CAACq1O,cAAc,CAACt3N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC5C,MAAM8oM,KAAK,GAAGtyM,CAAC,CAAC8gO,cAAc,CAACt3N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC5C,MAAM6tO,QAAQ,GAAG,IAAIj4O,IAAI,CAACg4O,KAAK,CAAC;MAChC,MAAME,QAAQ,GAAG,IAAIl4O,IAAI,CAACkzM,KAAK,CAAC;MAEhC,OAAOglC,QAAQ,GAAGD,QAAQ;IAC9B,CAAC,CAAC;IAEF7iJ,WAAW,CAAC/8F,WAAW,CAACupG,OAAO,CAAC;IAEhC9E,aAAa,GAAGqF,kBAAkB,CAAC,CAAC;IACpC/M,WAAW,CAAC1uG,WAAW,CAACo2G,aAAa,CAAC;EAC1C;EAEA,eAAe3zG,IAAIA,CAAA,EAAG;IAClBszG,wBAAwB,CAAC,MAAM,CAAC;IAChCtkG,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvB28F,OAAO,CAACoH,cAAc,CAAC,CAAC;IACxB,MAAMi+F,QAAQ,CAAC+9C,kBAAkB,CAAC,CAAC;IACnCv9O,QAAQ,CAACzR,IAAI,CAAC,CAAC;IACfyR,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,oBAAoB,CAAC;EAC/C;EAEA,OAAO;IACH+3G,YAAY;IACZ2lI,WAAW;IACXnY,WAAW;IACX8W,gBAAgB;IAChBD,mBAAmB;IACnBE,kBAAkB;IAClBC,aAAa;IACbC,mBAAmB;IACnBC,mBAAmB;IACnBwP,iBAAiB;IACjBvP,mBAAmB;IACnBE,mBAAmB;IACnBO,iBAAiB;IACjBR,gBAAgB;IAChBsG,gBAAgB;IAChBlG,WAAW;IACXF,SAAS;IACTI,aAAa;IACbI,mBAAmB;IACnBqT,oBAAoB;IACpBxvP,oBAAoB;IACpBi7O,aAAa;IACbiG,uBAAuB;IACvB8P,WAAW,EAAE9rD,eAAe;IAC5BnjM;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACr5GJ,MAAMixM,QAAQ,GAAI,YAAY;EAC5B;EACA;EACA,eAAegnC,gBAAgBA,CAACl9H,YAAY,EAAE;IAC5C;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oBAAoB;QACtBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACqsP,sBAAsB;IACpC,CAAC,CAAC,OAAOrgP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EACA,eAAek0I,uBAAuBA,CAACp0I,YAAY,EAAE;IACnD;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;QAC7BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACusP,6BAA6B;IAC3C,CAAC,CAAC,OAAOvgP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EACA,eAAeu+H,mBAAmBA,CAACz+H,YAAY,EAAE;IAC/C;;IAEA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6BAA6B;QAC/BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,OAAO;QACL,GAAGnqD,IAAI,CAACwsP;MACV,CAAC;IACH,CAAC,CAAC,OAAOxgP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB;EACF;EAEA,eAAe2xO,6BAA6BA,CAACzlI,YAAY,EAAE;IACzD;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iCAAiC;QACnCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,OAAO;QACL,GAAGnqD,IAAI,CAACysP;MACV,CAAC;IACH,CAAC,CAAC,OAAOzgP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB;EACF;;EAEA;EACA;EACA,eAAey9O,gBAAgBA,CAACvxI,YAAY,EAAE;IAC5C;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;QAC9BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,MAAMqhI,MAAM,GAAGxrL,IAAI,CAAC0sP,8BAA8B;MAClDtwP,IAAI,CAAC26O,SAAS,CAACvrD,MAAM,CAAC;MACtB,OAAOA,MAAM;IACf,CAAC,CAAC,OAAOx/K,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EACA,eAAesxI,iBAAiBA,CAACxxI,YAAY,EAAE;IAC7C;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,8BAA8B;QAChCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,MAAMqhI,MAAM,GAAGxrL,IAAI,CAAC2sP,gCAAgC;MACpDvwP,IAAI,CAAC26O,SAAS,CAACvrD,MAAM,CAAC;MACtB,OAAOA,MAAM;IACf,CAAC,CAAC,OAAOx/K,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EACA,eAAe+xI,wBAAwBA,CAACjyI,YAAY,EAAE;IACpD;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;QAC9BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAAC4sP,8BAA8B;IAC5C,CAAC,CAAC,OAAO5gP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC,CAAC;IAClC;EACF;EACA,eAAey0I,8BAA8BA,CAAC30I,YAAY,EAAE;IAC1D;IACA;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kCAAkC;QACpCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAAC8sP,oCAAoC;IAClD,CAAC,CAAC,OAAO9gP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EACA;EACA;EACA,eAAe2hI,4BAA4BA,CAAC7hI,YAAY,EAAE;IACxD;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gCAAgC;QAClCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAAC+sP,kCAAkC;IAChD,CAAC,CAAC,OAAO/gP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EACA,eAAe6gI,2BAA2BA,CAAC/gI,YAAY,EAAE;IACvD;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;QACjCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACgtP,iCAAiC;IAC/C,CAAC,CAAC,OAAOhhP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;MAC/B,OAAO;QAAEjmG,QAAQ,EAAE,IAAI;QAAErE,OAAO,EAAE9B,KAAK,CAAC6yO;MAAW,CAAC;IACtD;EACF;EACA,eAAeoO,gCAAgCA,CAAC/0I,YAAY,EAAE;IAC5D;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oCAAoC;QACtCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACktP,sCAAsC;IACpD,CAAC,CAAC,OAAOlhP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EACA,eAAe+0I,2CAA2CA,CAACj1I,YAAY,EAAE;IACvE;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+CAA+C;QACjDxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACotP,iDAAiD;IAC/D,CAAC,CAAC,OAAOphP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EACA,eAAei1I,4BAA4BA,CAACn1I,YAAY,EAAE;IACxD;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gCAAgC;QAClCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACstP,kCAAkC;IAChD,CAAC,CAAC,OAAOthP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EACA,eAAem1I,gBAAgBA,CAACr1I,YAAY,EAAE;IAC5C;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oBAAoB;QACtBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACwtP,sBAAsB;IACpC,CAAC,CAAC,OAAOxhP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EACA,eAAewkI,cAAcA,CAAC1kI,YAAY,EAAE;IAC1C;IACA;;IAEA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kBAAkB;QACpBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACytP,oBAAoB;IAClC,CAAC,CAAC,OAAOzhP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;;EAEA;EACA;EACA,eAAeqhI,UAAUA,CAACvhI,YAAY,EAAE;IACtC;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sBAAsB;QACxBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACFk9L,cAAc,CAAC3P,SAAS,CAAC,CAAC;MAC1Bt7O,IAAI,CAACw7O,WAAW,CAAC,CAAC;MAClB,OAAO53O,IAAI,CAAC0tP,wBAAwB;IACtC,CAAC,CAAC,OAAO1hP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;;EAEA;EACA;EACA,SAASu1I,kBAAkBA,CAACzwH,YAAY,EAAE7nH,OAAO,EAAE;IACjDrV,IAAI,GAAG;MACLk9H,YAAY,EAAEA;IAChB,CAAC;IACD,IAAI/xH,MAAM,GAAG,GAAGE,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,MAAMh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,IAAIj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,IAAIl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,sBAAsB;IAClI,IAAIygF,eAAe,GAAG,SAAAA,CAAU7b,IAAI,EAAE;MACpC,IAAI7pE,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;IACpC,CAAC;IAED,IAAI5yC,IAAI,GAAGva,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IACzCga,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAEiN,MAAM,CAAC;IACnCqM,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IACnCsZ,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrCsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE,kBAAkB,CAAC;IAChDsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE+qI,eAAe,CAAC;IAC7C,IAAI/E,UAAU,GAAGjnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAChD0mI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IACxCgmI,UAAU,CAAChmI,YAAY,CAAC,OAAO,EAAEmN,CAAC,CAACC,OAAO,CAACqoC,KAAK,CAAC;IACjDuwF,UAAU,CAACzmI,EAAE,GAAG,OAAO;IACvB,IAAI0mI,eAAe,GAAGlnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACrD2mI,eAAe,CAACjmI,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC;IACpDimI,eAAe,CAACjmI,YAAY,CAAC,OAAO,EAAEg/H,YAAY,CAAC;IACnDiH,eAAe,CAAC1mI,EAAE,GAAG,cAAc;IACnC,IAAIuiJ,YAAY,GAAG/iJ,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAClDwiJ,YAAY,CAAC9hJ,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;IAC5C8hJ,YAAY,CAAC9hJ,YAAY,CAAC,OAAO,EAAEmX,OAAO,CAAC;IAC3C2qI,YAAY,CAACviJ,EAAE,GAAG,SAAS;IAE3B+Z,IAAI,CAAC9c,WAAW,CAACwpI,UAAU,CAAC;IAC5B1sH,IAAI,CAAC9c,WAAW,CAACypI,eAAe,CAAC;IACjC3sH,IAAI,CAAC9c,WAAW,CAACslJ,YAAY,CAAC;IAC9BxoI,IAAI,CAACzZ,KAAK,CAACsH,QAAQ,GAAG,UAAU;IAChCmS,IAAI,CAACzZ,KAAK,CAAC+nF,OAAO,GAAG,GAAG;IACxB7oF,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAAC8c,IAAI,CAAC;IAE/BA,IAAI,CAAC4sH,MAAM,CAAC,CAAC;IACb5sH,IAAI,CAACzd,MAAM,CAAC,CAAC;EACf;EAEA,eAAe6zP,iBAAiBA,CAAC11I,YAAY,EAAE;IAC7C;IACA,IAAI;MACF,IAAIuwB,MAAM,GAAG,EAAE;MACf,IAAIC,KAAK,GAAG,IAAIx/E,UAAU,CAACgvD,YAAY,CAAChgG,UAAU,CAAC;MACnD,IAAIykB,GAAG,GAAG+rG,KAAK,CAACC,UAAU;MAC1B,KAAK,IAAIxjI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGw3B,GAAG,EAAEx3B,CAAC,EAAE,EAAE;QAC5BsjI,MAAM,IAAIzoH,MAAM,CAAC4oH,YAAY,CAACF,KAAK,CAACvjI,CAAC,CAAC,CAAC;MACzC;MACA,IAAI0jI,QAAQ,GAAGp9H,MAAM,CAACoe,IAAI,CAAC4+G,MAAM,CAAC;MAClCvwB,YAAY,CAAChgG,UAAU,GAAG2wH,QAAQ;MAClC,MAAM7oI,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;QACvBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAAC6tP,uBAAuB;IACrC,CAAC,CAAC,OAAO7hP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EAEA,SAAS01I,oBAAoBA,CAACtiE,MAAM,EAAEtuD,YAAY,EAAE;IAClDl9H,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB63I,MAAM,EAAEA,MAAM;MAAE;MAChBtuD,YAAY,EAAEA,YAAY,CAAE;IAC9B,CAAC;IACD7xH,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;MAC1BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC01F,0BAA0B;MAC/C,CAAC;MACD9zI,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAC;IACxC,CAAC,CAAC;EACJ;EACA,eAAe+hP,sBAAsBA,CAAC71I,YAAY,EAAE;IAClD,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;QAC5BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACguP,4BAA4B;IAC1C,CAAC,CAAC,OAAOhiP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;;EAEA;EACA;EACA,eAAei2F,mBAAmBA,CAACvuJ,UAAU,EAAEhhD,QAAQ,EAAE;IACvD,MAAMuM,CAAC,CAAC2+C,IAAI,CAAC;MACXhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;MACzBxoD,IAAI,EAAE,iBAAiB,GAAG8/C,UAAU,GAAG,IAAI;MAC3CmK,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC6jM,yBAAyB;QAC5C,OAAOnvP,QAAQ,CAACykD,GAAG,CAAC;MACtB;IACF,CAAC,CAAC;EACJ;EACA,eAAe2qM,wBAAwBA,CAACpuM,UAAU,EAAEhhD,QAAQ,EAAE;IAC5D,IAAI;MACF,MAAMkB,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;QACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UAAEo4B,UAAU,EAAEA;QAAW,CAAC,CAAC;QAChDmK,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACiuP,yBAAyB;IACvC,CAAC,CAAC,OAAOjiP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EACA,eAAe+1I,2BAA2BA,CAACj2I,YAAY,EAAE;IACvD;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;QACjCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,OAAOnqD,IAAI,CAACouP,iCAAiC;IAC/C,CAAC,CAAC,OAAOpiP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EACA,eAAe+zI,kBAAkBA,CAAA,EAAG;IAChC9gP,CAAC,CAACC,OAAO,CAAC2pC,eAAe,GAAG,IAAI;EACpC;EACA,eAAeo5M,aAAaA,CAAA,EAAG;IAC7B,IAAI;MACF,MAAMruP,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iBAAiB;QACnBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC,CAAC,CAAC,CAAC;QACxBuiC,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACsuP,mBAAmB;IACjC,CAAC,CAAC,OAAOtiP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EAEA,eAAeozI,0BAA0BA,CAACtzI,YAAY,EAAE;IACtD;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,8BAA8B;QAChCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACuuP,gCAAgC;IAC9C,CAAC,CAAC,OAAOviP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EAEA,OAAO;IACLg9H,gBAAgB;IAChBkX,uBAAuB;IACvB3V,mBAAmB;IACnBgH,6BAA6B;IAC7B8L,gBAAgB;IAChBC,iBAAiB;IACjBS,wBAAwB;IACxB0C,8BAA8B;IAC9B9S,4BAA4B;IAC5Bd,2BAA2B;IAC3BgU,gCAAgC;IAChCE,2CAA2C;IAC3CE,4BAA4B;IAC5Bc,2BAA2B;IAC3BvR,cAAc;IACdnD,UAAU;IACVkU,kBAAkB;IAClBC,iBAAiB;IACjBE,oBAAoB;IACpBC,sBAAsB;IACtBR,gBAAgB;IAChBpB,kBAAkB;IAClB99C,mBAAmB;IACnB6/C,wBAAwB;IACxBG,aAAa;IACb7C;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC7pBJ,MAAM7E,cAAc,GAAG,CAAC,MAAM;EAC5B,IAAI75H,WAAW;EACf,IAAI0+D,MAAM;;EAEV;EACA,MAAMgjE,cAAc,CAAC;IACnB;AACJ;AACA;AACA;AACA;AACA;IACIloO,WAAWA,CAACrZ,MAAM,EAAEwhP,UAAU,EAAE5jG,YAAY,EAAE;MAC5C,IAAI,CAACvW,sBAAsB,GAAG,EAAE;MAChC,IAAI,CAACrnI,MAAM,GAAGA,MAAM;MACpB,IAAI,CAACwhP,UAAU,GAAGA,UAAU;MAC5B,IAAI,CAAC5jG,YAAY,GAAGA,YAAY;IAClC;IAEArW,qBAAqBA,CAAA,EAAG;MACtB,IAAI1nB,WAAW,CAAC4zC,GAAG,CAAC,IAAI,CAAC+tF,UAAU,CAAC,EAClC,IAAI,CAACn6G,sBAAsB,GAAGxnB,WAAW,CAACjnH,GAAG,CAAC,IAAI,CAAC4oP,UAAU,CAAC;MAEhE,MAAMh6G,gBAAgB,GAAGp3I,MAAM,CAACC,KAAK,CAAC;QACpCG,EAAE,EAAE,UAAU,IAAI,CAACgxP,UAAU,EAAE;QAC/B7wP,IAAI,EAAE,gBAAgB,IAAI,CAAC02I,sBAAsB,CAAC/5I,MAAM,GAAG;QAC3DwD,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBc,QAAQ,EAAEA,CAAA,KAAM;UACd,IAAI,CAAC41I,eAAe,CAAC,CAAC;QACxB;MACF,CAAC,CAAC;MAEFD,gBAAgB,CAAC36I,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;MAC/C,IAAI,IAAI,CAACs6I,sBAAsB,CAAC/5I,MAAM,GAAG,CAAC,EAAEk6I,gBAAgB,CAAC36I,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MAE5F,OAAOy6I,gBAAgB;IACzB;IAEAC,eAAeA,CAAA,EAAG;MAChB,MAAM+5G,UAAU,GAAG,IAAI,CAACA,UAAU;MAClC,MAAM5jG,YAAY,GAAG,IAAI,CAACA,YAAY;MACtC,MAAMvW,sBAAsB,GAAG,IAAI,CAACA,sBAAsB;MAC1D,MAAMK,mBAAmB,GAAG,EAAE;MAC9B,MAAMC,gBAAgB,GAAG,EAAE;MAC3B;MACA,IAAI85G,EAAE;MACN,MAAMxb,UAAU,GAAG92O,IAAI,CAACq6O,aAAa,CAAC,CAAC;MACvC,MAAMtD,gBAAgB,GAAG/2O,IAAI,CAACs6O,mBAAmB,CAAC,CAAC;MAEnD,IAAIvD,gBAAgB,IAAID,UAAU,KAAK,GAAG,IAAI7nO,CAAC,CAACC,OAAO,CAACywC,UAAU,EAAE;QAClE2yM,EAAE,GAAG,KAAK;MACZ,CAAC,MAAM;QACLA,EAAE,GAAG,IAAI;MACX;MACA;MACA;MACA;MACA;MACA,SAAS75G,2BAA2BA,CAAA,EAAG;QACrC,MAAM5nI,MAAM,GAAGhQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;QAC3CyP,MAAM,CAACxL,SAAS,GAAG,uBAAuB;QAC1CqzI,oBAAoB,CAACp6I,WAAW,CAACuS,MAAM,CAAC;QAExCqnI,sBAAsB,CAAC95I,OAAO,CAAC0d,UAAU,IAAI;UAC3C,MAAM68H,aAAa,GAAG93I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;UACnDu3I,aAAa,CAACj7I,SAAS,CAACE,GAAG,CAAC,2BAA2B,CAAC;UACxD+6I,aAAa,CAAC72I,YAAY,CAAC,IAAI,EAAEga,UAAU,CAACy2O,gBAAgB,CAAC;UAC7D55G,aAAa,CAAC72I,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;UAC3C,MAAM+2I,mBAAmB,GAAG53I,MAAM,CAACC,KAAK,CAAC;YACvCS,KAAK,EAAE,WAAW;YAClBC,IAAI,EAAE,MAAM;YACZN,IAAI,EAAE,QAAQ;YACdoB,QAAQ,EAAElE,KAAK,IAAIs6I,+BAA+B,CAACt6I,KAAK,CAACC,MAAM,CAACuI,aAAa;UAC/E,CAAC,CAAC;UACF,MAAM+xI,IAAI,GAAGl4I,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;UACxC23I,IAAI,CAAC1zI,SAAS,GAAGyW,UAAU,CAACs/F,WAAW;UACvC,IAAI,CAACk3I,EAAE,EAAE35G,aAAa,CAACr6I,WAAW,CAACu6I,mBAAmB,CAAC;UACvDF,aAAa,CAACr6I,WAAW,CAACy6I,IAAI,CAAC;UAC/BA,IAAI,CAAC/3I,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;YACtC,MAAMsiI,YAAY,GAAGtiI,KAAK,CAACC,MAAM,CAACuI,aAAa,CAAC3F,EAAE;YAClD2wM,QAAQ,CAACu/C,kBAAkB,CAACzwH,YAAY,EAAE,EAAE,CAAC;UAC/C,CAAC,CAAC;UACF4X,oBAAoB,CAACp6I,WAAW,CAACq6I,aAAa,CAAC;QACjD,CAAC,CAAC;MACJ;MACA;MACA,SAASG,+BAA+BA,CAACG,iBAAiB,EAAE;QAC1D,MAAMC,mBAAmB,GAAGD,iBAAiB,CAACzxI,YAAY,CAAC,QAAQ,CAAC;QACpE,MAAMs5H,YAAY,GAAGmY,iBAAiB,CAACzxI,YAAY,CAAC,IAAI,CAAC;QACzD,QAAQ0xI,mBAAmB;UACzB,KAAK,OAAO;YACVD,iBAAiB,CAACv7I,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;YACnD26I,mBAAmB,CAACtsI,IAAI,CAAC60H,YAAY,CAAC;YACtCmY,iBAAiB,CAACn3I,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC9C;UACF,KAAK,MAAM;YACTm3I,iBAAiB,CAACv7I,SAAS,CAACC,MAAM,CAAC,kBAAkB,CAAC;YACtD46I,mBAAmB,GAAGA,mBAAmB,CAAClsI,MAAM,CAC9CyP,UAAU,IAAIA,UAAU,KAAKglH,YAC/B,CAAC;YACDmY,iBAAiB,CAACn3I,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;YAC/C;UACF;YACE;QACJ;MACF;MACA;MACA,SAASq3I,cAAcA,CAAC16I,MAAM,EAAE;QAC9B,MAAM26I,QAAQ,GAAG36I,MAAM,CAAC46I,KAAK,CAAC,CAAC,CAAC,CAACz3I,IAAI;QACrC,MAAM03I,cAAc,GAAG,IAAI9vF,MAAM,CAAC,mBAAmB,CAAC;QACtD,IAAI8vF,cAAc,CAACj1H,IAAI,CAAC+0H,QAAQ,CAAC,EAAE;UACjCrxG,KAAK,CAAC,yDAAyD,CAAC;UAChEtpC,MAAM,CAACgE,KAAK,GAAG,EAAE;UACjB,OAAO,KAAK;QACd;MACF;MACA;MACA;MACA,SAAS82I,gBAAgBA,CAAA,EAAG;QAC1B,SAASC,gCAAgCA,CAAC1qG,GAAG,EAAE;UAC7CA,GAAG,CAAC9tC,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;YACrC,MAAMi7I,SAAS,GAAGj7I,KAAK,CAACC,MAAM,CAACuI,aAAa,CAACmnB,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7E,IAAIsrH,SAAS,KAAK,EAAE,EAAE;cACpBj7I,KAAK,CAACC,MAAM,CAACuI,aAAa,CAACrJ,MAAM,CAAC,CAAC;YACrC;UACF,CAAC,CAAC;QACJ;QACA;QACA,MAAMyd,IAAI,GAAGva,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;QACtD,MAAM41I,cAAc,GAAGt+H,IAAI,CAACu+H,SAAS;QACrC,IAAID,cAAc,IAAIA,cAAc,CAAC54I,aAAa,CAAC,kBAAkB,CAAC,CAAC2B,KAAK,KAAK,EAAE,EAAE;UACnF;QACF;QACA,MAAMm3I,gBAAgB,GAAGC,mBAAmB,CAAC3pI,SAAS,CAAC,IAAI,CAAC;QAC5D0pI,gBAAgB,CAACzrH,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC1rB,KAAK,GAAG,EAAE,CAAC,CAAC;QAC9Dm3I,gBAAgB,CACbzrH,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAChCntB,gBAAgB,CAAC,QAAQ,EAAEuT,GAAG,IAAI4kI,cAAc,CAAC5kI,GAAG,CAAC9V,MAAM,CAAC,CAAC;QAChEsgI,cAAc,CAACzgI,WAAW,CAACs7I,gBAAgB,CAAC;QAC5CJ,gCAAgC,CAACI,gBAAgB,CAAC5zG,iBAAiB,CAAC;QACpE6zG,mBAAmB,GAAGD,gBAAgB;MACxC;;MAEA;MACA,eAAeE,UAAUA,CAAA,EAAG;QAC1B,eAAeC,mBAAmBA,CAAA,EAAG;UACnC,MAAMC,mBAAmB,GAAG,EAAE;UAC9B,IAAIC,eAAe,CAAC97I,MAAM,KAAK,CAAC,EAAE;UAElC87I,eAAe,CAAC77I,OAAO,CAAC0d,UAAU,IAAI;YACpC,MAAMo+H,QAAQ,GAAG,IAAI/qF,OAAO,CAACC,OAAO,IAAI;cACtC,MAAM4oE,QAAQ,GAAG;gBACfvqF,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;gBACtBk3G,YAAY,EAAEA,YAAY;gBAC1BrzC,WAAW,EAAEt/F,UAAU,CAACs/F,WAAW;gBACnCsU,cAAc,EAAE5zG,UAAU,CAACla,IAAI;gBAC/Bka,UAAU,EAAEA,UAAU,CAACq+H,WAAW;gBAClClhI,OAAO,EAAE,EAAE;gBACXo5O,UAAU,EAAEA;cACd,CAAC;cACDrgD,QAAQ,CAACw/C,iBAAiB,CAACx5H,QAAQ,CAAC,CAACrI,IAAI,CAACxoE,GAAG,IAAIiI,OAAO,CAACjI,GAAG,CAAC,CAAC;YAChE,CAAC,CAAC;YACF6yF,mBAAmB,CAAC/tI,IAAI,CAACiuI,QAAQ,CAAC;UACpC,CAAC,CAAC;UAEF,MAAMG,UAAU,GAAG,MAAMlrF,OAAO,CAACmrF,GAAG,CAACN,mBAAmB,CAAC;UACzDK,UAAU,CAACj8I,OAAO,CAACmE,GAAG,IAAI;YACxBi2I,gBAAgB,CAACvsI,IAAI,CAAC1J,GAAG,CAAC,CAAC,CAAC,CAAC;UAC/B,CAAC,CAAC;QACJ;QACA;QACAg2I,mBAAmB,CAACn6I,OAAO,CAAC0d,UAAU,IAAI;UACxCk2L,QAAQ,CAAC0/C,oBAAoB,CAACjjG,YAAY,EAAE3yI,UAAU,CAAC;QACzD,CAAC,CAAC;;QAEF;QACA,MAAM0+H,gBAAgB,GAAG35I,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC;QACtE,IAAIszI,gBAAgB,CAACr8I,MAAM,KAAK,CAAC,EAAE;UACjCyN,OAAO,CAACu6B,GAAG,CAAC,uBAAuB,CAAC;UACpC;QACF;QAEA,IAAIs0G,eAAe,GAAG,EAAE;QACxB,IAAIR,eAAe,GAAG,EAAE;QACxBO,gBAAgB,CAACp8I,OAAO,CAACs8I,YAAY,IAAI;UACvC,IAAIA,YAAY,CAACj4I,KAAK,KAAK,EAAE,EAAE;YAC7B;UACF;UACA,MAAMk4I,UAAU,GAAG,IAAIxrF,OAAO,CAACC,OAAO,IAAI;YACxC,MAAMwrF,aAAa,GAAG,CAAC,CAAC;YACxB,MAAMC,cAAc,GAAGH,YAAY,CAACrB,KAAK,CAACzkI,IAAI,CAAC,CAAC,CAAC;YACjD,MAAMkmI,cAAc,GAAGD,cAAc,CAACl0I,IAAI;YAC1C,MAAM+oH,cAAc,GAAGmrB,cAAc,CAACl0I,IAAI,CAACqb,KAAK,CAAC,GAAG,CAAC,CAAC4D,GAAG,CAAC,CAAC;YAC3Dg1H,aAAa,CAACx/B,WAAW,GAAG0/B,cAAc;YAC1CF,aAAa,CAACh5I,IAAI,GAAG8tH,cAAc;YACnC;YACA,IAAIsrB,QAAQ,CAACH,cAAc,CAAC,CAACV,WAAW,CAAC,CAAC,CAACxqB,IAAI,CAACxoE,GAAG,IAAI;cACrDyzF,aAAa,CAACT,WAAW,GAAGhzF,GAAG;cAC/B8yF,eAAe,CAAChuI,IAAI,CAAC2uI,aAAa,CAAC;cACnCxrF,OAAO,CAAC,CAAC;YACX,CAAC,CAAC;UACJ,CAAC,CAAC;UAEFqrF,eAAe,CAACxuI,IAAI,CAAC0uI,UAAU,CAAC;QAClC,CAAC,CAAC;QAEF,MAAMxrF,OAAO,CAACmrF,GAAG,CAACG,eAAe,CAAC;QAClC,MAAMV,mBAAmB,CAAC,CAAC;MAC7B;MACA;MACA;;MAEA,MAAMrpI,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;QACxB2P,MAAM,EAAE,IAAI,CAACA,MAAM;QACnBxP,EAAE,EAAE;MACN,CAAC,CAAC;MAEF,MAAM45I,gBAAgB,GAAGh6I,MAAM,CAACC,KAAK,CAAC;QACpCM,IAAI,EAAE,gBAAgB;QACtBG,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,MAAM;QACZN,IAAI,EAAE,KAAK;QACXoB,QAAQ,EAAEA,CAAA,KAAM62I,gBAAgB,CAAC;MACnC,CAAC,CAAC;MACF0B,gBAAgB,CAACr5I,IAAI,GAAG,QAAQ;MAEhC,MAAMi3I,mBAAmB,GAAG53I,MAAM,CAACC,KAAK,CAAC;QACvCS,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,MAAM;QACZN,IAAI,EAAE;MACR,CAAC,CAAC;MACFu3I,mBAAmB,CAACj3I,IAAI,GAAG,QAAQ;MAEnC,MAAMuvI,OAAO,GAAGlwI,MAAM,CAACC,KAAK,CAAC;QAC3BG,EAAE,EAAE,gBAAgB;QACpBG,IAAI,EAAE,MAAM;QACZG,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;UACpB,IAAI;YACFgO,KAAK,CAAC/O,KAAK,CAACoK,OAAO,GAAG,MAAM;YAC5BmG,WAAW,CAACpU,IAAI,CAAC,2BAA2B,CAAC;YAC7C,MAAMg8I,UAAU,CAAC,CAAC;YAClB,MAAM,IAAI,CAACoB,oBAAoB,CAAC1C,gBAAgB,EAAED,mBAAmB,CAAC;YACtErmI,WAAW,CAACI,OAAO,CAAC,OAAO,CAAC;YAC5ByW,UAAU,CAAC,YAAY;cACrBtX,cAAc,CAAC5T,IAAI,CAAC,KAAK,CAAC;cAC1B;cACA+S,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;cACjB;cACAggH,WAAW,GAAG,IAAIjoH,GAAG,CAAC,CAAC;cACvB,MAAM0+C,GAAG,GAAG,MAAM6qJ,QAAQ,CAAC2/C,sBAAsB,CAAC;gBAChDlkN,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;gBACtB63I,MAAM;gBACNn2K,OAAO,EAAE;cACX,CAAC,CAAC;cACFkuC,GAAG,CAAC/oD,OAAO,CAAC0d,UAAU,IAAI;gBACxB,IAAI02O,QAAQ,GAAG,EAAE;gBACjB,IAAI9hI,WAAW,CAAC4zC,GAAG,CAACxoJ,UAAU,CAACu2O,UAAU,CAAC,EAAE;kBAC1CG,QAAQ,GAAG9hI,WAAW,CAACjnH,GAAG,CAACqS,UAAU,CAACu2O,UAAU,CAAC;gBACnD;gBACAG,QAAQ,CAACvmP,IAAI,CAAC6P,UAAU,CAAC;gBACzB40G,WAAW,CAAC/8G,GAAG,CAACmI,UAAU,CAACu2O,UAAU,EAAEG,QAAQ,CAAC;cAClD,CAAC,CAAC;cACF;cACA;cACA;cACA;cACA;cACA;YACF,CAAC,EAAE,IAAI,CAAC;UACV,CAAC,CAAC,OAAO5iP,KAAK,EAAE;YACdsC,WAAW,CAACK,MAAM,CAAC,iCAAiC,CAAC;YACrDwW,UAAU,CAAC,MAAM;cACf/W,QAAQ,CAACnU,IAAI,CAAC,KAAK,CAAC;cACpB6S,KAAK,CAAC/O,KAAK,CAACgR,cAAc,CAAC,SAAS,CAAC;YACvC,CAAC,EAAE,IAAI,CAAC;YACR/G,OAAO,CAACgE,KAAK,CAACA,KAAK,CAAC;UACtB;QACF;MACF,CAAC,CAAC;MACF,MAAM2/B,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;QAC7BG,EAAE,EAAE,kBAAkB;QACtBG,IAAI,EAAE8wP,EAAE,GAAG,OAAO,GAAG,QAAQ;QAC7B3wP,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,UAAU;QAChBc,QAAQ,EAAEA,CAAA,KAAM;UACdkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACnB;MACF,CAAC,CAAC;MACF,MAAMgoI,oBAAoB,GAAG73I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1Ds3I,oBAAoB,CAACh7I,SAAS,CAACE,GAAG,CAAC,sBAAsB,CAAC;MAC1D,MAAMu9I,iBAAiB,GAAGt6I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACvD+5I,iBAAiB,CAACz9I,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;MACpD,MAAMw9I,oBAAoB,GAAGv6I,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;MACzDg6I,oBAAoB,CAAC/1I,SAAS,GAAG,0BAA0B;MAC3D81I,iBAAiB,CAAC78I,WAAW,CAAC88I,oBAAoB,CAAC;MAEnD,MAAMrT,eAAe,GAAGlnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;MACvD2mI,eAAe,CAACnmI,IAAI,GAAG,MAAM;MAC7BmmI,eAAe,CAACrqI,SAAS,CAACE,GAAG,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;MACtEmqI,eAAe,CAAC/mI,gBAAgB,CAAC,QAAQ,EAAEuT,GAAG,IAAI4kI,cAAc,CAAC5kI,GAAG,CAAC9V,MAAM,CAAC,CAAC;MAE7E,IAAIo7I,mBAAmB,GAAGh5I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACvDy4I,mBAAmB,CAACn8I,SAAS,CAACE,GAAG,CAAC,qBAAqB,CAAC;MACxD,MAAMmhI,cAAc,GAAGl+H,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;MACrD29H,cAAc,CAACj9H,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC;MACnDi9H,cAAc,CAACzgI,WAAW,CAACu7I,mBAAmB,CAAC;MAC/CA,mBAAmB,CAACv7I,WAAW,CAACu6I,mBAAmB,CAAC;MACpDgB,mBAAmB,CAACv7I,WAAW,CAACypI,eAAe,CAAC;MAEhD,MAAM36F,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAEhC8S,KAAK,CAACpS,WAAW,CAACo6I,oBAAoB,CAAC;MACvC,IAAI,CAAC45G,EAAE,EAAE;QACP5hP,KAAK,CAACpS,WAAW,CAAC68I,iBAAiB,CAAC;QACpCzqI,KAAK,CAACpS,WAAW,CAACygI,cAAc,CAAC;QACjCruH,KAAK,CAACpS,WAAW,CAAC28I,gBAAgB,CAAC;QACnC7tG,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC;MAC9B;MAEA/jG,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;MAC9B7+B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;MAE1B,IAAI8qG,sBAAsB,CAAC/5I,MAAM,GAAG,CAAC,EAAEs6I,2BAA2B,CAAC,CAAC;MAEpE7nI,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;IACnB;;IAEA;AACJ;AACA;AACA;IACI,IAAI2nI,gBAAgBA,CAAA,EAAG;MACrB,OAAO,IAAI,CAACD,qBAAqB,CAAC,CAAC;IACrC;IAEA8C,oBAAoBA,CAACG,gBAAgB,EAAEC,mBAAmB,EAAE;MAC1DA,mBAAmB,CAACl9I,OAAO,CAAC0iI,YAAY,IAAI;QAC1C,IAAI6gF,IAAI,GAAGjxF,WAAW,CAACjnH,GAAG,CAAC,IAAI,CAAC4oP,UAAU,CAAC;QAC3C,IAAII,OAAO,GAAG9wC,IAAI,CAACt1M,MAAM,CAACpI,CAAC,IAAIA,CAAC,CAACsuP,gBAAgB,KAAKzxH,YAAY,CAAC;QACnEpQ,WAAW,CAAC/8G,GAAG,CAAC,IAAI,CAAC0+O,UAAU,EAAEI,OAAO,CAAC;MAC3C,CAAC,CAAC;MACFp3G,gBAAgB,CAACj9I,OAAO,CAAC0d,UAAU,IAAI;QACrC,IAAI6lM,IAAI,GAAG,EAAE;QACb,IAAIjxF,WAAW,CAAC4zC,GAAG,CAAC,IAAI,CAAC+tF,UAAU,CAAC,EAAE;UACpC1wC,IAAI,GAAGjxF,WAAW,CAACjnH,GAAG,CAAC,IAAI,CAAC4oP,UAAU,CAAC;QACzC;QACA1wC,IAAI,CAAC11M,IAAI,CAAC6P,UAAU,CAAC;QACrB40G,WAAW,CAAC/8G,GAAG,CAAC,IAAI,CAAC0+O,UAAU,EAAE1wC,IAAI,CAAC;MACxC,CAAC,CAAC;MACF,IAAIjxF,WAAW,CAAC4zC,GAAG,CAAC,IAAI,CAAC+tF,UAAU,CAAC,EAAE;QACpC,IAAI,CAACn6G,sBAAsB,GAAGxnB,WAAW,CAACjnH,GAAG,CAAC,IAAI,CAAC4oP,UAAU,CAAC;MAChE,CAAC,MAAM;QACL,IAAI,CAACn6G,sBAAsB,GAAG,EAAE;MAClC;MAEA,MAAMwD,aAAa,GAAG76I,QAAQ,CAACiD,cAAc,CAAC,UAAU,IAAI,CAACuuP,UAAU,EAAE,CAAC;MAC1E32G,aAAa,CAACr2I,SAAS,GAAG,gBAAgB,IAAI,CAAC6yI,sBAAsB,CAAC/5I,MAAM,GAAG;MAE/E,MAAMu0P,gBAAgB,GAAGh3G,aAAa,CAAC10I,aAAa,CAAClG,aAAa,CAAC,qBAAqB,CAAC;MAEzF,IAAI,IAAI,CAACo3I,sBAAsB,CAAC/5I,MAAM,GAAG,CAAC,EAAE;QAC1Cu9I,aAAa,CAACh+I,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;QAC7C89I,aAAa,CAACh+I,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACzC,CAAC,MAAM;QACL+9I,aAAa,CAACh+I,SAAS,CAACC,MAAM,CAAC,gBAAgB,CAAC;QAChD,IAAI+0P,gBAAgB,CAAChsP,OAAO,EAAE;UAC5Bg1I,aAAa,CAACh+I,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACtC,CAAC,MAAM;UACL89I,aAAa,CAACh+I,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACzC;MACF;IACF;EACF;EAEA,eAAe6sP,cAAcA,CAACmI,MAAM,EAAE;IACpCvjE,MAAM,GAAGujE,MAAM;IACfjiI,WAAW,GAAG,IAAIjoH,GAAG,CAAC,CAAC;IAEvB,MAAMszI,OAAO,GAAG;MACdtuG,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB63I,MAAM;MACNn2K,OAAO,EAAE;IACX,CAAC;IACD,MAAMkuC,GAAG,GAAG,MAAM6qJ,QAAQ,CAAC2/C,sBAAsB,CAAC51G,OAAO,CAAC;IAC1D50F,GAAG,CAAC/oD,OAAO,CAAC0d,UAAU,IAAI;MACxB,IAAI02O,QAAQ,GAAG,EAAE;MACjB,IAAI9hI,WAAW,CAAC4zC,GAAG,CAACxoJ,UAAU,CAACu2O,UAAU,CAAC,EAAE;QAC1CG,QAAQ,GAAG9hI,WAAW,CAACjnH,GAAG,CAACqS,UAAU,CAACu2O,UAAU,CAAC;MACnD;MACAG,QAAQ,CAACvmP,IAAI,CAAC6P,UAAU,CAAC;MACzB40G,WAAW,CAAC/8G,GAAG,CAACmI,UAAU,CAACu2O,UAAU,EAAEG,QAAQ,CAAC;IAClD,CAAC,CAAC;EACJ;EAEA,OAAO;IACLJ,cAAc;IACd5H;EACF,CAAC;AACH,CAAC,EAAE,CAAC;AClZJ,MAAMpK,QAAQ,GAAG,CAAC,MAAM;EACtB,IAAIhxD,MAAM;EACV,IAAIwjE,OAAO;EACX,IAAIC,SAAS;;EAEb;EACA;EACA,MAAMC,eAAe,GAAG;IACtB1Z,UAAU,EAAE,CAAC,CAAC;IACdtqC,GAAG,EAAE;MACHikD,cAAc,EAAE;QACdhnE,mBAAmB,EAAE,IAAI;QACzBC,mBAAmB,EAAE;MACvB,CAAC;MACDgnE,WAAW,EAAE;QACXC,UAAU,EAAE;MACd,CAAC;MACDC,mBAAmB,EAAE;QACnBC,cAAc,EAAE,IAAI;QACpBC,iBAAiB,EAAE,KAAK;QACxBC,qBAAqB,EAAE,IAAI;QAC3BC,oBAAoB,EAAE,IAAI;QAC1BC,kBAAkB,EAAE,IAAI;QACxBC,iBAAiB,EAAE;MACrB,CAAC;MACDC,YAAY,EAAE;QACZC,UAAU,EAAE,IAAI;QAChBC,iBAAiB,EAAE,IAAI;QACvBC,kBAAkB,EAAE,IAAI;QACxBC,YAAY,EAAE;MAChB,CAAC;MACDx0P,QAAQ,EAAE;QACR+7G,WAAW,EAAE,IAAI;QACjBk2H,OAAO,EAAE,IAAI;QACbriI,OAAO,EAAE,IAAI;QACb6kJ,eAAe,EAAE,GAAG;QACpB/lC,iBAAiB,EAAE,IAAI;QAAE;QACzBC,iBAAiB,EAAE,IAAI;QAAE;QACzBE,YAAY,EAAE,GAAG;QAAE;QACnB6lC,iBAAiB,EAAE,GAAG;QAAE;QACxBC,cAAc,EAAE,IAAI;QAAE;QACtBC,aAAa,EAAE,IAAI,CAAE;MACvB,CAAC;MACD/jE,gBAAgB,EAAE;QAChBk+B,cAAc,EAAE,KAAK;QAAE;QACvB8lC,kBAAkB,EAAE,IAAI;QAAE;QAC1BC,eAAe,EAAE,GAAG;QAAE;QACtBC,aAAa,EAAE,IAAI;QAAE;QACrBvmC,oBAAoB,EAAE,IAAI;QAAE;QAC5BK,YAAY,EAAE,IAAI;QAAE;QACpB6lC,iBAAiB,EAAE,IAAI;QAAE;QACzBrlC,iBAAiB,EAAE,IAAI,CAAE;MAC3B,CAAC;MACD2lC,OAAO,EAAE;QACPC,SAAS,EAAE,KAAK;QAChBC,WAAW,EAAE,KAAK;QAClBC,YAAY,EAAE,KAAK;QACnBC,kBAAkB,EAAE,KAAK;QACzB9mC,UAAU,EAAE,KAAK;QACjBE,oBAAoB,EAAE;MACxB;IACF;EACF,CAAC;EACD,SAAS6mC,qBAAqBA,CAACz7O,OAAO,EAAE;IACtC,OAAO65O,eAAe,CAAChkD,GAAG,CAAC71L,OAAO,CAAC;EACrC;EACA,SAAS07O,uBAAuBA,CAAA,EAAG;IACjC,OAAO7B,eAAe,CAAChkD,GAAG;EAC5B;EACA,SAAS8lD,4BAA4BA,CAAC37O,OAAO,EAAE;IAC7C,OAAO65O,eAAe,CAAC1Z,UAAU,CAACngO,OAAO,CAAC;EAC5C;;EAEA;EACA;EACA,MAAM47O,sBAAsB,GAAGC,aAAa,IAAI;IAC9C,MAAMC,MAAM,GAAG,EAAE;IACjB,MAAMC,IAAI,GAAG,CAAC,CAAC;IACfF,aAAa,CAAC12P,OAAO,CAACwM,EAAE,IAAI;MAC1B,IAAI,CAACoqP,IAAI,CAACpqP,EAAE,CAACqiJ,QAAQ,CAAC,EAAE;QACtB+nG,IAAI,CAACpqP,EAAE,CAACqiJ,QAAQ,CAAC,GAAG,IAAI;QACxBriJ,EAAE,CAACq/F,QAAQ,GAAGr/F,EAAE,CAACq/F,QAAQ,CAACjoF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvC+yO,MAAM,CAAC9oP,IAAI,CAACrB,EAAE,CAAC;MACjB;IACF,CAAC,CAAC;IACF,OAAOmqP,MAAM;EACf,CAAC;EACD,MAAME,UAAU,GAAGrxP,IAAI,IAAI;IACzB,MAAMoxP,IAAI,GAAG,CAAC,CAAC;IACf,MAAME,KAAK,GAAG,CAAC,CAAC;IAChB,MAAMH,MAAM,GAAG,EAAE;IACjBnxP,IAAI,CAACxF,OAAO,CAACwM,EAAE,IAAI;MACjB,IAAI,CAACoqP,IAAI,CAACpqP,EAAE,CAACnI,KAAK,CAAC,IAAI,CAACyyP,KAAK,CAACtqP,EAAE,CAACpJ,IAAI,CAAC,EAAE;QACtCwzP,IAAI,CAACpqP,EAAE,CAACnI,KAAK,CAAC,GAAG,IAAI;QACrByyP,KAAK,CAACtqP,EAAE,CAACpJ,IAAI,CAAC,GAAG,IAAI;QACrBuzP,MAAM,CAAC9oP,IAAI,CAACrB,EAAE,CAAC;MACjB;IACF,CAAC,CAAC;IACF,OAAOmqP,MAAM;EACf,CAAC;EACD,eAAeI,eAAeA,CAAA,EAAG;IAC/B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI,MAAMC,gBAAgB,GAAG;MACvBx4I,aAAa,EAAE,CACb;QAAEn6G,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAG,CAAC,EACxB;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAiC,CAAC,EACtD;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAwB,CAAC,EAC7C;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAmB,CAAC,EACxC;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAM,CAAC,EAC3B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAsB,CAAC,EAC3C;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAc,CAAC,EACnC;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAwD,CAAC,EAC7E;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAQ,CAAC,CAC9B;MACD6zP,YAAY,EAAE,CACZ;QACE5yP,KAAK,EAAE,GAAG;QACVjB,IAAI,EAAE,+BAA+B;QACrC8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MACzC,CAAC,EACD;QACE7yP,KAAK,EAAE,GAAG;QACVjB,IAAI,EAAE,8BAA8B;QACpC8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MACzC,CAAC,EACD;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,6BAA6B;QACnC8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MACpC,CAAC,EACD;QACE7yP,KAAK,EAAE,GAAG;QACVjB,IAAI,EAAE,8CAA8C;QACpD8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MACpC,CAAC,EACD;QACE7yP,KAAK,EAAE,GAAG;QACVjB,IAAI,EAAE,2CAA2C;QACjD8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MACpC,CAAC,EACD;QAAE7yP,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE,iBAAiB;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EAC5E;QACE7yP,KAAK,EAAE,GAAG;QACVjB,IAAI,EAAE,kDAAkD;QACxD8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MACpC,CAAC,EACD;QACE7yP,KAAK,EAAE,GAAG;QACVjB,IAAI,EAAE,yCAAyC;QAC/C8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MACpC,CAAC,EACD;QAAE7yP,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE,mBAAmB;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EACzE;QAAE7yP,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE,sBAAsB;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MAAE,CAAC,EAClE;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,0DAA0D;QAChE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;MAC1B,CAAC,EACD;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,mFAAmF;QACzF8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MACrB,CAAC,EACD;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,sEAAsE;QAC5E8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MACrB,CAAC,EACD;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,mBAAmB;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MAAE,CAAC,EAChE;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,yCAAyC;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EAC3F;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,iDAAiD;QACvD8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MACrB,CAAC,EACD;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,2BAA2B;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EACvF;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,sBAAsB;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EAC7E;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,yBAAyB;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EAC3E;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,8CAA8C;QACpD8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MAC/B,CAAC,EACD;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,iCAAiC;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EACnF;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,gCAAgC;QACtC8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MACpC,CAAC,EACD;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,+BAA+B;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MAAE,CAAC,EAC5E;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,mCAAmC;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MAAE,CAAC,EAChF;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,4BAA4B;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MAAE,CAAC,EACzE;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,sBAAsB;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MAAE,CAAC,EACnE;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,kBAAkB;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EACpE;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,gDAAgD;QACtD8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MACpC,CAAC,EACD;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,kCAAkC;QACxC8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MACpC,CAAC,EACD;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,sBAAsB;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MAAE,CAAC,EACnE;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,0BAA0B;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EACjF;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,yCAAyC;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EAC3F;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,oEAAoE;QAC1E8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MACrB,CAAC,EACD;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,kEAAkE;QACxE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;MAC1B,CAAC,EACD;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,iBAAiB;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EAC7E;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,qBAAqB;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EAC5E;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,eAAe;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MAAE,CAAC,EAC5D;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,aAAa;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MAAE,CAAC,EAC1D;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,8DAA8D;QACpE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;MAC1B,CAAC,EACD;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,kCAAkC;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MAAE,CAAC,EAC/E;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,0CAA0C;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MAAE,CAAC,EACvF;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,kBAAkB;QAAE8zP,QAAQ,EAAE,CAAC,GAAG;MAAE,CAAC,EAC1D;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,0BAA0B;QAAE8zP,QAAQ,EAAE,CAAC,GAAG;MAAE,CAAC,EAClE;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,qCAAqC;QAC3C8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MACpC,CAAC,EACD;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,oCAAoC;QAC1C8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MACpC,CAAC,EACD;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,+BAA+B;QAAE8zP,QAAQ,EAAE,CAAC,GAAG;MAAE,CAAC,EACvE;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,iCAAiC;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EACxF;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,wBAAwB;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG;MAAE,CAAC,EACrE;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,8BAA8B;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EAChF;QAAE7yP,KAAK,EAAE,IAAI;QAAEjB,IAAI,EAAE,0BAA0B;QAAE8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MAAE,CAAC,EAC3F;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,gCAAgC;QACtC8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MACpC,CAAC,EACD;QACE7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,mCAAmC;QACzC8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MAC7B,CAAC,EACD;QACI7yP,KAAK,EAAE,IAAI;QACXjB,IAAI,EAAE,wBAAwB;QAC9B8zP,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;MAC5B,CAAC,CACJ;MACD7mC,aAAa,EAAE,CACb;QAAEhsN,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAG,CAAC,EACxB;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAM,CAAC;MAAC;MAC5B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAW,CAAC,CACjC;MACD+zP,wBAAwB,EAAE,CACxB;QAAE9yP,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAG,CAAC,EACxB;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAQ,CAAC,EAC7B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAS,CAAC,EAC9B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAU,CAAC,EAC/B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAQ,CAAC,EAC7B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAQ,CAAC,CAC9B;MACDg0P,qBAAqB,EAAE,CACrB;QAAE/yP,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAG,CAAC,EACxB;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAQ,CAAC,EAC7B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAS,CAAC,EAC9B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAU,CAAC,EAC/B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAQ,CAAC,CAC9B;MACDi0P,mBAAmB,EAAE,CACnB;QAAEhzP,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAG,CAAC,EACxB;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAS,CAAC,EAC9B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAU,CAAC,EAC/B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAQ,CAAC,CAC9B;MACDk0P,iBAAiB,EAAE;MACjB;MACA;QAAEjzP,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAiB,CAAC,EACtC;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAc,CAAC,EACnC;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAQ,CAAC,EAC7B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAS,CAAC,EAC9B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAgB,CAAC,EACrC;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAiB,CAAC,EACtC;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAS,CAAC,CAC/B;MACDm0P,qBAAqB,EAAE,CACrB;QAAElzP,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAG,CAAC,EACxB;QACEiB,KAAK,EAAE,GAAG;QACVjB,IAAI,EAAE;MACR,CAAC,EACD;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAmD,CAAC,EACxE;QACEiB,KAAK,EAAE,GAAG;QACVjB,IAAI,EAAE;MACR,CAAC,EACD;QACEiB,KAAK,EAAE,GAAG;QACVjB,IAAI,EAAE;MACR,CAAC,CACF;MACDo0P,mBAAmB,EAAE,CACnB;QAAEnzP,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAG,CAAC,EACxB;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAmB,CAAC,EACxC;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAU,CAAC,EAC/B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAW,CAAC,EAChC;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAS,CAAC,EAC9B;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAmB,CAAC,EACxC;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAa,CAAC,CACnC;MACDq0P,aAAa,EAAE,CACb;QAAEpzP,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAc,CAAC,EACnC;QAAEiB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAW,CAAC;IAEpC,CAAC;IAED,MAAMs6G,YAAY,GAAG;MACnBruE,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBsiM,kBAAkB,EAAEtoN,IAAI,CAAC4Z,wBAAwB,CAACquM,SAAS,CAACwD,qBAAqB,CAAC,CAAC,EAAE;QACnFr2N,MAAM,EAAE;MACV,CAAC,CAAC;MACFmzN,gBAAgB,EAAEvoN,IAAI,CAAC4Z,wBAAwB,CAACquM,SAAS,CAACoH,mBAAmB,CAAC,CAAC,EAAE;QAC/Ej6N,MAAM,EAAE;MACV,CAAC,CAAC;MACF+8B,UAAU,EAAE1jD,IAAI,CAACk6O,mBAAmB,CAAC,CAAC,CAAC74O,EAAE;MACzCw3C,eAAe,EAAE5pC,CAAC,CAACC,OAAO,CAAC2pC,eAAe;MAC1Cu2I;IACF,CAAC;IAED,IAAI;MACF,MAAMxrL,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6BAA6B;QAC/BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF8kM,SAAS,GAAG;QACV,GAAGjvP,IAAI,CAACwsP,+BAA+B;QACvC,GAAGgF;MACL,CAAC;MAEDvC,SAAS,CAACiD,qBAAqB,GAAGjD,SAAS,CAACiC,aAAa;MACzDjC,SAAS,CAACiC,aAAa,GAAGD,sBAAsB,CAAChC,SAAS,CAACiC,aAAa,CAAC;IAC3E,CAAC,CAAC,OAAOllP,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;MAElBijP,SAAS,GAAG;QACV,GAAGuC;MACL,CAAC;IACH;EACF;EACA,SAASnqH,eAAeA,CAAA,EAAG;IACzB,OAAO4nH,SAAS;EAClB;EACA,eAAekD,mBAAmBA,CAAA,EAAG;IACnC,MAAMZ,eAAe,CAAC,CAAC;IACvBa,WAAW,CAACD,mBAAmB,CAAClD,SAAS,CAAC;IAC1CoD,YAAY,CAACF,mBAAmB,CAAClD,SAAS,CAAC;IAC3C3iE,gBAAgB,CAAC6lE,mBAAmB,CAAClD,SAAS,CAAC;IAC/CqD,kBAAkB,CAACH,mBAAmB,CAAClD,SAAS,CAAC;EACnD;EACA,SAASsD,uBAAuBA,CAACC,SAAS,EAAE;IAC1C,IAAI,CAACA,SAAS,EAAE,OAAO,EAAE;IAEzB,IAAIA,SAAS,CAACC,QAAQ,CAAC,GAAG,CAAC,EAAE;MAC3B,MAAMC,WAAW,GAAGpmE,gBAAgB,CAACqmE,kBAAkB,CAAC,CAAC;MACzD,MAAMC,eAAe,GAAGF,WAAW,CAACjqP,MAAM,CAACX,EAAE,IAAI,GAAGA,EAAE,CAAC+qP,UAAU,GAAG,KAAKL,SAAS,CAAC;MACnF,IAAII,eAAe,CAACr4P,MAAM,GAAG,CAAC,EAAE;QAC9B,OAAO,GAAGq4P,eAAe,CAAC,CAAC,CAAC,CAACroC,YAAY,EAAE;MAC7C,CAAC,MAAM;QACL,OAAO,EAAE;MACX;IACF,CAAC,MAAM;MACL,MAAMqoC,eAAe,GAAG3D,SAAS,CAACiC,aAAa,CAACzoP,MAAM,CAACX,EAAE,IAAIA,EAAE,CAAC0qP,SAAS,KAAKA,SAAS,CAAC;MACxF,IAAII,eAAe,CAACr4P,MAAM,GAAG,CAAC,EAAE;QAC9B,IAAI,CAACq4P,eAAe,CAAC,CAAC,CAAC,CAACvsJ,QAAQ,IAAI,CAACusJ,eAAe,CAAC,CAAC,CAAC,CAACxsJ,SAAS,EAAE,OAAO,EAAE;QAC5E,OAAO,GAAGwsJ,eAAe,CAAC,CAAC,CAAC,CAACvsJ,QAAQ,KAAKusJ,eAAe,CAAC,CAAC,CAAC,CAACxsJ,SAAS,EAAE;MAC1E,CAAC,MAAM;QACL,OAAO,EAAE;MACX;IACF;EACF;EACA,SAAS0sJ,4BAA4BA,CAACC,WAAW,EAAE37H,YAAY,EAA2B;IAAA,IAAzB47H,eAAe,GAAAxuP,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,KAAK;IACtF;IACA;IACA,MAAMyuP,eAAe,GAAG;MACtBtyP,UAAU,EAAE,kBAAkB;MAC9BC,OAAO,EAAE,iBAAiB;MAC1BC,cAAc,EAAE;IAClB,CAAC;IACD,MAAMqyP,kBAAkB,GAAG;MACzBvyP,UAAU,EAAE,gCAAgC;MAC5CC,OAAO,EAAE,oBAAoB;MAC7BC,cAAc,EAAE;IAClB,CAAC;IACD,MAAMsyP,iBAAiB,GAAG;MACxBxyP,UAAU,EAAE,wBAAwB;MACpCC,OAAO,EAAE,mBAAmB;MAC5BC,cAAc,EAAE;IAClB,CAAC;IAEDouP,SAAS,CAACiC,aAAa,CAAC12P,OAAO,CAACsN,EAAE,IAAI;MACpC,IAAIA,EAAE,CAACsrP,WAAW,EAAE;QAClBH,eAAe,CAACpyP,cAAc,CAACwH,IAAI,CAAC;UAClCxJ,KAAK,EAAEiJ,EAAE,CAAC0qP,SAAS;UACnB50P,IAAI,EAAE,GAAGkK,EAAE,CAACu+F,QAAQ,KAAKv+F,EAAE,CAACs+F,SAAS;QACvC,CAAC,CAAC;MACJ,CAAC,MAAM;QACL8sJ,kBAAkB,CAACryP,cAAc,CAACwH,IAAI,CAAC;UACrCxJ,KAAK,EAAEiJ,EAAE,CAAC0qP,SAAS;UACnB50P,IAAI,EAAE,GAAGkK,EAAE,CAACu+F,QAAQ,KAAKv+F,EAAE,CAACs+F,SAAS;QACvC,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IAEF6sJ,eAAe,CAACpyP,cAAc,GAAGwwP,UAAU,CAAC4B,eAAe,CAACpyP,cAAc,CAAC;IAC3EqyP,kBAAkB,CAACryP,cAAc,GAAGwwP,UAAU,CAAC6B,kBAAkB,CAACryP,cAAc,CAAC;IAEjFoyP,eAAe,CAACpyP,cAAc,CAACyT,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MAC5C,MAAM2uJ,KAAK,GAAGljK,CAAC,CAACzC,IAAI,CAAC6mC,WAAW,CAAC,CAAC;MAClC,MAAM++H,KAAK,GAAG5uJ,CAAC,CAAChX,IAAI,CAAC6mC,WAAW,CAAC,CAAC;MAClC,OAAO8+H,KAAK,GAAGC,KAAK,GAAG,CAAC,CAAC,GAAGD,KAAK,GAAGC,KAAK,GAAG,CAAC,GAAG,CAAC;IACnD,CAAC,CAAC;IACF0vF,kBAAkB,CAACryP,cAAc,CAACyT,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MAC/C,MAAM2uJ,KAAK,GAAGljK,CAAC,CAACzC,IAAI,CAAC6mC,WAAW,CAAC,CAAC;MAClC,MAAM++H,KAAK,GAAG5uJ,CAAC,CAAChX,IAAI,CAAC6mC,WAAW,CAAC,CAAC;MAClC,OAAO8+H,KAAK,GAAGC,KAAK,GAAG,CAAC,CAAC,GAAGD,KAAK,GAAGC,KAAK,GAAG,CAAC,GAAG,CAAC;IACnD,CAAC,CAAC;IAEF,MAAM7E,iBAAiB,GAAG,EAAE;IAC5BA,iBAAiB,CAACt2J,IAAI,CAAC4qP,eAAe,CAAC;IACvCt0F,iBAAiB,CAACt2J,IAAI,CAAC6qP,kBAAkB,CAAC;IAE1C,IAAIF,eAAe,EAAG;MACpB,MAAMN,WAAW,GAAGpmE,gBAAgB,CAACqmE,kBAAkB,CAAC,CAAC;MACzDQ,iBAAiB,CAACtyP,cAAc,GAAG6xP,WAAW,CAAC1uP,GAAG,CAACskN,EAAE,IAAI;QACvD,OAAO;UACLzpN,KAAK,EAAE,GAAGypN,EAAE,CAACuqC,UAAU,GAAG;UAC1Bj1P,IAAI,EAAE0qN,EAAE,CAACiC;QACX,CAAC;MACH,CAAC,CAAC;MAEF4oC,iBAAiB,CAACtyP,cAAc,GAAGwwP,UAAU,CAAC8B,iBAAiB,CAACtyP,cAAc,CAAC;MAC/EsyP,iBAAiB,CAACtyP,cAAc,CAACyT,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;QAC9C,MAAM2uJ,KAAK,GAAGljK,CAAC,CAACzC,IAAI,CAAC6mC,WAAW,CAAC,CAAC;QAClC,MAAM++H,KAAK,GAAG5uJ,CAAC,CAAChX,IAAI,CAAC6mC,WAAW,CAAC,CAAC;QAClC,OAAO8+H,KAAK,GAAGC,KAAK,GAAG,CAAC,CAAC,GAAGD,KAAK,GAAGC,KAAK,GAAG,CAAC,GAAG,CAAC;MACnD,CAAC,CAAC;MACF7E,iBAAiB,CAACt2J,IAAI,CAAC8qP,iBAAiB,CAAC;IAC5C;IAECl0P,QAAQ,CAACsB,gBAAgB,CAAC;MACxBtB,QAAQ,EAAE8zP,WAAW;MACrB/yP,IAAI,EAAE2+J,iBAAiB;MACvBl+J,cAAc,EAAE,CAAC;QAAE5B,KAAK,EAAE,EAAE;QAAEjB,IAAI,EAAE;MAAG,CAAC,CAAC;MACzCqC,UAAU,EAAEm3H;IACd,CAAC,CAAC;IACF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;EACF;EAEA,eAAei8H,iCAAiCA,CAACN,WAAW,EAAE37H,YAAY,EAAE;IAC1E;IACA;IACA,MAAM67H,eAAe,GAAG;MACtBtyP,UAAU,EAAE,kBAAkB;MAC9BC,OAAO,EAAE,iBAAiB;MAC1BC,cAAc,EAAE;IAClB,CAAC;IACD,MAAMqyP,kBAAkB,GAAG;MACzBvyP,UAAU,EAAE,gCAAgC;MAC5CC,OAAO,EAAE,oBAAoB;MAC7BC,cAAc,EAAE;IAClB,CAAC;IACD,MAAMsyP,iBAAiB,GAAG;MACxBxyP,UAAU,EAAE,wBAAwB;MACpCC,OAAO,EAAE,mBAAmB;MAC5BC,cAAc,EAAE;IAClB,CAAC;IACD,MAAMyyP,cAAc,GAAG;MACrB3yP,UAAU,EAAE,0BAA0B;MACtCC,OAAO,EAAE,gBAAgB;MACzBC,cAAc,EAAE;IAClB,CAAC;IAEDouP,SAAS,CAACiC,aAAa,CAAC12P,OAAO,CAACsN,EAAE,IAAI;MACpC,IAAIA,EAAE,CAACsrP,WAAW,EAAE;QAClBH,eAAe,CAACpyP,cAAc,CAACwH,IAAI,CAAC;UAClCxJ,KAAK,EAAEiJ,EAAE,CAAC0qP,SAAS;UACnB50P,IAAI,EAAE,GAAGkK,EAAE,CAACu+F,QAAQ,KAAKv+F,EAAE,CAACs+F,SAAS;QACvC,CAAC,CAAC;MACJ,CAAC,MAAM;QACL8sJ,kBAAkB,CAACryP,cAAc,CAACwH,IAAI,CAAC;UACrCxJ,KAAK,EAAEiJ,EAAE,CAAC0qP,SAAS;UACnB50P,IAAI,EAAE,GAAGkK,EAAE,CAACu+F,QAAQ,KAAKv+F,EAAE,CAACs+F,SAAS;QACvC,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IAEF6sJ,eAAe,CAACpyP,cAAc,GAAGwwP,UAAU,CAAC4B,eAAe,CAACpyP,cAAc,CAAC;IAC3EqyP,kBAAkB,CAACryP,cAAc,GAAGwwP,UAAU,CAAC6B,kBAAkB,CAACryP,cAAc,CAAC;IAEjFoyP,eAAe,CAACpyP,cAAc,CAACyT,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MAC5C,MAAM2uJ,KAAK,GAAGljK,CAAC,CAACzC,IAAI,CAAC6mC,WAAW,CAAC,CAAC;MAClC,MAAM++H,KAAK,GAAG5uJ,CAAC,CAAChX,IAAI,CAAC6mC,WAAW,CAAC,CAAC;MAClC,OAAO8+H,KAAK,GAAGC,KAAK,GAAG,CAAC,CAAC,GAAGD,KAAK,GAAGC,KAAK,GAAG,CAAC,GAAG,CAAC;IACnD,CAAC,CAAC;IACF0vF,kBAAkB,CAACryP,cAAc,CAACyT,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MAC/C,MAAM2uJ,KAAK,GAAGljK,CAAC,CAACzC,IAAI,CAAC6mC,WAAW,CAAC,CAAC;MAClC,MAAM++H,KAAK,GAAG5uJ,CAAC,CAAChX,IAAI,CAAC6mC,WAAW,CAAC,CAAC;MAClC,OAAO8+H,KAAK,GAAGC,KAAK,GAAG,CAAC,CAAC,GAAGD,KAAK,GAAGC,KAAK,GAAG,CAAC,GAAG,CAAC;IACnD,CAAC,CAAC;IAEF,MAAM7E,iBAAiB,GAAG,EAAE;IAC5BA,iBAAiB,CAACt2J,IAAI,CAAC4qP,eAAe,CAAC;IACvCt0F,iBAAiB,CAACt2J,IAAI,CAAC6qP,kBAAkB,CAAC;IAExC,MAAMpoD,cAAc,GAAG,MAAM5e,kBAAkB,CAAC+d,qBAAqB,CAAC;MACpEpgK,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBk3G,YAAY,EAAE2gC;IAChB,CAAC,CAAC;;IAEH;IACC,IAAI+nE,YAAY,GAAGzoD,cAAc,CAACriM,MAAM,CAAC+qP,MAAM,IAAIA,MAAM,CAACx+I,QAAQ,KAAK,EAAE,CAAC;IAC1Em+I,iBAAiB,CAACtyP,cAAc,GAAG0yP,YAAY,CAACvvP,GAAG,CAACskN,EAAE,IAAI;MACxD,OAAO;QACLzpN,KAAK,EAAE,GAAGypN,EAAE,CAACtzG,QAAQ,GAAG;QACxBp3G,IAAI,EAAE0qN,EAAE,CAACvlN;MACX,CAAC;IACH,CAAC,CAAC;IAEFowP,iBAAiB,CAACtyP,cAAc,GAAGwwP,UAAU,CAAC8B,iBAAiB,CAACtyP,cAAc,CAAC;IAC/EsyP,iBAAiB,CAACtyP,cAAc,CAACyT,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MAC9C,MAAM2uJ,KAAK,GAAGljK,CAAC,CAACzC,IAAI,CAAC6mC,WAAW,CAAC,CAAC;MAClC,MAAM++H,KAAK,GAAG5uJ,CAAC,CAAChX,IAAI,CAAC6mC,WAAW,CAAC,CAAC;MAClC,OAAO8+H,KAAK,GAAGC,KAAK,GAAG,CAAC,CAAC,GAAGD,KAAK,GAAGC,KAAK,GAAG,CAAC,GAAG,CAAC;IACnD,CAAC,CAAC;IACF,IAAI+vF,YAAY,CAACh5P,MAAM,GAAG,CAAC,EAAEokK,iBAAiB,CAACt2J,IAAI,CAAC8qP,iBAAiB,CAAC;IAEtE,IAAI9nP,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAChD,IAAIkoP,cAAc,GAAG3oD,cAAc,CAACriM,MAAM,CAAC+qP,MAAM,IAAIA,MAAM,CAACjlM,UAAU,KAAK,EAAE,CAAC;MAC/E;MACC+kM,cAAc,CAACzyP,cAAc,GAAG4yP,cAAc,CAACzvP,GAAG,CAACskN,EAAE,IAAI;QACvD,OAAO;UACLzpN,KAAK,EAAE,GAAGypN,EAAE,CAAC/5J,UAAU,GAAG;UAC1B3wD,IAAI,EAAE0qN,EAAE,CAACvlN;QACX,CAAC;MACH,CAAC,CAAC;MAEFuwP,cAAc,CAACzyP,cAAc,GAAGwwP,UAAU,CAACiC,cAAc,CAACzyP,cAAc,CAAC;MACzEyyP,cAAc,CAACzyP,cAAc,CAACyT,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;QAC3C,MAAM2uJ,KAAK,GAAGljK,CAAC,CAACzC,IAAI,CAAC6mC,WAAW,CAAC,CAAC;QAClC,MAAM++H,KAAK,GAAG5uJ,CAAC,CAAChX,IAAI,CAAC6mC,WAAW,CAAC,CAAC;QAClC,OAAO8+H,KAAK,GAAGC,KAAK,GAAG,CAAC,CAAC,GAAGD,KAAK,GAAGC,KAAK,GAAG,CAAC,GAAG,CAAC;MACnD,CAAC,CAAC;MACF,IAAIiwF,cAAc,CAACl5P,MAAM,GAAG,CAAC,EAAEokK,iBAAiB,CAACt2J,IAAI,CAACirP,cAAc,CAAC;IACvE;IACF;;IAEEr0P,QAAQ,CAACsB,gBAAgB,CAAC;MACxBtB,QAAQ,EAAE8zP,WAAW;MACrB/yP,IAAI,EAAE2+J,iBAAiB;MACvBl+J,cAAc,EAAE,CAAC;QAAE5B,KAAK,EAAE,EAAE;QAAEjB,IAAI,EAAE;MAAG,CAAC,CAAC;MACzCqC,UAAU,EAAEm3H;IACd,CAAC,CAAC;EAEJ;EAEA,eAAej6H,IAAIA,CAAC4xP,MAAM,EAAE;IAC1BvjE,MAAM,GAAGujE,MAAM;IACf,MAAMwC,eAAe,CAAC,CAAC;IACvB,MAAMn7O,cAAc,CAACjZ,IAAI,CAACquL,MAAM,CAAC;EACnC;EAEA,OAAO;IACLruL,IAAI;IACJkqI,eAAe;IACfkrH,uBAAuB;IACvBzB,qBAAqB;IACrBC,uBAAuB;IACvBC,4BAA4B;IAC5B8B,4BAA4B;IAC5BO,iCAAiC;IACjClB;EACF,CAAC;AACH,CAAC,EAAE,CAAC;ACroBJ,MAAMvc,SAAS,GAAI,YAAY;EAC7B;EACA,IAAI9D,WAAW;EACf,IAAIx2B,cAAc;EAClB,IAAIC,YAAY;EAChB,IAAIm4C,uBAAuB;EAC3B,IAAIC,qBAAqB;EACzB,IAAIC,eAAe;EACnB,IAAIC,gBAAgB;EACpB;EACA,IAAIC,YAAY;EAChB,IAAIljJ,gBAAgB;EACpB;EACA,IAAIilI,iBAAiB;EACrB,IAAIE,eAAe;EACnB,IAAIE,kBAAkB;EACtB,IAAIC,gBAAgB;EACpB,IAAIC,cAAc;EAClB;EACA,IAAI4d,WAAW;EACf,IAAIC,iBAAiB;EACrB;EACA,IAAIC,qBAAqB;EACzB,IAAIC,mBAAmB;EACvB,IAAIC,sBAAsB;EAC1B,IAAIC,oBAAoB;EACxB,IAAIC,kBAAkB;EACtB;EACA,IAAIC,oBAAoB;EACxB,IAAIC,sBAAsB;EAC1B,IAAIC,uBAAuB;EAC3B,IAAIC,cAAc;EAElB,IAAIvnP,gBAAgB;EAEpB,SAASwqO,SAASA,CAAA,EAAG;IACnB5F,WAAW,GAAGvwO,SAAS;IACvB+5M,cAAc,GAAG/5M,SAAS;IAC1Bg6M,YAAY,GAAGh6M,SAAS;IACxBmyP,uBAAuB,GAAGnyP,SAAS;IACnCoyP,qBAAqB,GAAGpyP,SAAS;IAEjCuyP,YAAY,GAAGvyP,SAAS;IACxBqvG,gBAAgB,GAAGrvG,SAAS;IAC5Bs0O,iBAAiB,GAAGt0O,SAAS;IAC7Bw0O,eAAe,GAAGx0O,SAAS;IAC3B00O,kBAAkB,GAAG10O,SAAS;IAC9B20O,gBAAgB,GAAG30O,SAAS;IAC5B40O,cAAc,GAAG50O,SAAS;IAC1B+yP,oBAAoB,GAAG/yP,SAAS;IAChCizP,uBAAuB,GAAGjzP,SAAS;IACnCgzP,sBAAsB,GAAGhzP,SAAS;IAClC6yP,oBAAoB,GAAG7yP,SAAS;IAChC4yP,sBAAsB,GAAG5yP,SAAS;IAClC8yP,kBAAkB,GAAG9yP,SAAS;IAC9B2yP,mBAAmB,GAAG3yP,SAAS;IAC/B0yP,qBAAqB,GAAG1yP,SAAS;EACnC;EACA,SAASmzP,0BAA0BA,CAAA,EAAG;IACpC,MAAMC,UAAU,GAAG3nP,KAAK,CAAC1P,KAAK,CAAC;MAC7BG,EAAE,EAAE,wBAAwB;MAC5B+P,KAAK,EAAE;IACT,CAAC,CAAC;IACF,MAAMM,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3CsQ,OAAO,CAACrM,SAAS,GAAG,4EAA4E;IAEhG,MAAMqsD,KAAK,GAAGzwD,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACdkO,KAAK,CAAC/S,IAAI,CAAC06P,UAAU,CAAC;MACxB;IACF,CAAC,CAAC;IAEFA,UAAU,CAACj6P,WAAW,CAACoT,OAAO,CAAC;IAC/B6mP,UAAU,CAACj6P,WAAW,CAACozD,KAAK,CAAC;IAE7B9gD,KAAK,CAAC9S,IAAI,CAACy6P,UAAU,CAAC;EACxB;;EAEA;EACA;EACA,SAAShY,gCAAgCA,CAACiY,WAAW,EAAE;IACrDA,WAAW,CAAC/e,iBAAiB,GAAGA,iBAAiB;IACjD+e,WAAW,CAAC7e,eAAe,GAAGA,eAAe;IAC7C6e,WAAW,CAAC3e,kBAAkB,GAAGA,kBAAkB;IACnD2e,WAAW,CAAC1e,gBAAgB,GAAGA,gBAAgB;IAC/C0e,WAAW,CAACze,cAAc,GAAGA,cAAc;EAC7C;EACA,SAASsG,oBAAoBA,CAAC7G,SAAS,EAAE;IACvC;IACA,MAAMif,KAAK,GAAG;MACZhf,iBAAiB;MACjBE,eAAe;MACfE,kBAAkB;MAClBC,gBAAgB;MAChBC;IACF,CAAC;IAED,IAAI;MAAER,YAAY;MAAED,cAAc;MAAEI,aAAa;MAAEE,WAAW;MAAEI;IAAW,CAAC,GAAGR,SAAS;IACxF,MAAM/xN,KAAK,GAAG8J,IAAI,CAAC8Z,aAAa,CAAC,IAAI,CAAC;IACtC5jB,KAAK,CAACtD,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;IAE1B;IACAm1N,cAAc,GAAGA,cAAc,CAACt3N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7Cu3N,YAAY,GAAGA,YAAY,CAACv3N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzC03N,aAAa,GAAGA,aAAa,CAAC13N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3C43N,WAAW,GAAGA,WAAW,CAAC53N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvCg4N,UAAU,GAAGA,UAAU,CAACh4N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAErC63N,kBAAkB,GAAGpyN,KAAK;IAC1BqyN,gBAAgB,GAAG,IAAIliO,IAAI,CAAC2hO,YAAY,CAAC;IACzCE,iBAAiB,GAAG,IAAI7hO,IAAI,CAAC8hO,aAAa,CAAC;IAC3CC,eAAe,GAAG,IAAI/hO,IAAI,CAACgiO,WAAW,CAAC;IACvCG,cAAc,GAAGzrN,KAAK,CAACoC,SAAS,CAACopN,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAEtDoe,oBAAoB,GAAGve,eAAe;IACtCwe,sBAAsB,GAAG1e,iBAAiB;IAC1C2e,uBAAuB,GAAG,IAAIxgP,IAAI,CAAC0hO,cAAc,CAAC;IAElD,OAAOmf,KAAK;EACd;EACA,eAAehN,kBAAkBA,CAACiN,aAAa,EAAE;IAC/ClkJ,gBAAgB,GAAGx0G,IAAI,CAACk6O,mBAAmB,CAAC,CAAC;IAE7C,IAAI,CAACwd,YAAY,EAAE;MACjBA,YAAY,GAAG,MAAM1lD,QAAQ,CAACk+C,uBAAuB,CAAC;QACpDziN,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtBmM,UAAU,EAAE8wD,gBAAgB,CAACnzG;MAC/B,CAAC,CAAC;IACJ;IAEA,MAAM;MAAEs3P,QAAQ;MAAEC;IAAW,CAAC,GAAGlB,YAAY;IAC7C,IAAImB,gBAAgB;IACpB,IAAIC,qBAAqB;IACzB,IAAIC,yBAAyB;IAC7B,IAAIC,aAAa;IACjB,IAAIC,WAAW;IACf,IAAIC,aAAa;IAEjB,IAAIR,aAAa,IAAIA,aAAa,CAACv6P,MAAM,GAAG,CAAC,EAAE;MAC7C,MAAMg7P,mBAAmB,GAAGT,aAAa,CAACrsP,MAAM,CAACiT,CAAC,IAAIA,CAAC,CAAC5G,MAAM,KAAK,MAAM,CAAC;MAC1EmgP,gBAAgB,GAAGM,mBAAmB,CAACluK,MAAM,CAAC,CAAChnF,CAAC,EAAEuU,CAAC,KAAK;QACtD,OAAO,IAAIZ,IAAI,CAAC3T,CAAC,CAACy1O,aAAa,CAAC,GAAG,IAAI9hO,IAAI,CAACY,CAAC,CAACkhO,aAAa,CAAC,GAAGz1O,CAAC,GAAGuU,CAAC;MACtE,CAAC,CAAC;MAEFsgP,qBAAqB,GAAG,IAAIlhP,IAAI,CAACihP,gBAAgB,CAACnf,aAAa,CAAC;MAChEqf,yBAAyB,GAAG,IAAInhP,IAAI,CAACihP,gBAAgB,CAACO,SAAS,CAAC;IAClE;IAEA,IAAIN,qBAAqB,EAAE;MACzBE,aAAa,GAAG1qO,KAAK,CAACwC,QAAQ,CAACgoO,qBAAqB,EAAE,CAAC,CAAC;MACxD,MAAMrxO,KAAK,GAAG,IAAI7P,IAAI,CAAC,CAAC;MACxB;IACF,CAAC,MAAM;MACL,MAAM6P,KAAK,GAAG,IAAI7P,IAAI,CAAC,CAAC;MAExB,IAAI,CAAC+gP,QAAQ,IAAI,CAACC,UAAU,EAAE;QAC5BI,aAAa,GAAGvxO,KAAK;MACvB,CAAC,MAAM;QACL,MAAM4xO,WAAW,GAAG5xO,KAAK,CAAC5D,WAAW,CAAC,CAAC;QACvCm1O,aAAa,GAAG,IAAIphP,IAAI,CAACyhP,WAAW,EAAET,UAAU,GAAG,CAAC,EAAED,QAAQ,EAAE,CAAC,CAAC;MACpE;;MAEA;IACF;IAEAM,WAAW,GAAG3qO,KAAK,CAACwC,QAAQ,CAACkoO,aAAa,EAAE,CAAC,CAAC;IAC9CC,WAAW,GAAG3qO,KAAK,CAAC0C,OAAO,CAACioO,WAAW,EAAE,CAAC,CAAC;IAE3CC,aAAa,GAAG5qO,KAAK,CAACoC,SAAS,CAACuoO,WAAW,EAAE,CAAC,CAAC,CAAC;IAEhDxf,iBAAiB,GAAGuf,aAAa;IACjCrf,eAAe,GAAGsf,WAAW;IAC7Bpf,kBAAkB,GAAGJ,iBAAiB;IACtCK,gBAAgB,GAAGH,eAAe;IAClCI,cAAc,GAAGmf,aAAa;EAChC;EACA,SAASvJ,kBAAkBA,CAACrhO,KAAK,EAAE;IACjC,MAAM;MAAEyH,SAAS;MAAEE,OAAO;MAAEqjN,cAAc;MAAEC,YAAY;MAAES;IAAW,CAAC,GAAG1rN,KAAK;IAE9EmrN,iBAAiB,GAAG1jN,SAAS;IAC7B4jN,eAAe,GAAG1jN,OAAO;IACzB4jN,kBAAkB,GAAGP,cAAc;IACnCQ,gBAAgB,GAAGP,YAAY;IAC/BQ,cAAc,GAAGC,UAAU;IAE3B6d,qBAAqB,GAAG9hO,SAAS;IACjC+hO,mBAAmB,GAAG7hO,OAAO;IAC7B8hO,sBAAsB,GAAGze,cAAc;IACvC0e,oBAAoB,GAAGze,YAAY;IACnC0e,kBAAkB,GAAGje,UAAU;EACjC;EACA,eAAemC,eAAeA,CAAC/sD,MAAM,EAAEl4E,QAAQ,EAAE;IAC/C,IAAI9vD,OAAO;IAEX,IAAIwwM,iBAAiB,EAAE;MACrB,MAAM0B,iBAAiB,GAAG/nO,IAAI,CAACoY,qBAAqB,CAACowM,cAAc,CAAC;MACpE,MAAM/nC,QAAQ,CAACi/C,4BAA4B,CAAC;QAC1CxjN,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB63I,MAAM,EAAE3mK,QAAQ,CAAC2mK,MAAM,CAAC;QACxB4qD,UAAU,EAAEsf;MACd,CAAC,CAAC;MACFrB,kBAAkB,GAAGle,cAAc;IACrC;IAEA,IAAI,CAAC7iI,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,KAAK,GAAG,KAAKygJ,WAAW,EAAE;MAC9D,MAAM4B,oBAAoB,GAAGhoO,IAAI,CAACoY,qBAAqB,CAAC8vM,iBAAiB,CAAC;MAC1EryL,OAAO,GAAG,MAAM4qJ,QAAQ,CAAC6+C,gCAAgC,CAAC;QACxDpjN,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB2hM,cAAc,EAAE9pD,MAAM;QACtBoqE,gBAAgB,EAAED;MACpB,CAAC,CAAC;MACF1B,qBAAqB,GAAGpe,iBAAiB;MACzC;MACA;MACA;MACA;MACA;MACA;IACF,CAAC,MAAM,IAAI,CAACviI,QAAQ,KAAK,UAAU,IAAIA,QAAQ,KAAK,GAAG,KAAKygJ,WAAW,EAAE;MACvE,MAAM8B,qBAAqB,GAAGloO,IAAI,CAACoY,qBAAqB,CAACkwM,kBAAkB,CAAC;MAC5E,MAAM6f,mBAAmB,GAAGnoO,IAAI,CAACoY,qBAAqB,CAACmwM,gBAAgB,CAAC;MACxE1yL,OAAO,GAAG,MAAM4qJ,QAAQ,CAAC++C,2CAA2C,CAAC;QACnEtjN,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB2hM,cAAc,EAAE9pD,MAAM;QACtBuqE,iBAAiB,EAAEF,qBAAqB;QACxCG,eAAe,EAAEF;MACnB,CAAC,CAAC;MACF3B,sBAAsB,GAAGle,kBAAkB;MAC3Cme,oBAAoB,GAAGle,gBAAgB;MACvC;MACA;MACA;MACA;MACA;MACA;IACF;IAEA6d,WAAW,GAAG,KAAK;IACnBC,iBAAiB,GAAG,KAAK;IAEzB,OAAOxwM,OAAO;EAChB;EACA,SAASq1L,wBAAwBA,CAAA,EAAG;IAClChD,iBAAiB,GAAGoe,qBAAqB;IACzCle,eAAe,GAAGme,mBAAmB;IACrCje,kBAAkB,GAAGke,sBAAsB;IAC3Cje,gBAAgB,GAAGke,oBAAoB;IACvCje,cAAc,GAAGke,kBAAkB;IAEnCN,WAAW,GAAG,KAAK;IACnBC,iBAAiB,GAAG,KAAK;EAC3B;EACA,SAASlX,oBAAoBA,CAAA,EAAG;IAC9B,OAAOjH,iBAAiB;EAC1B;EACA,SAASkH,kBAAkBA,CAAA,EAAG;IAC5B,OAAOhH,eAAe;EACxB;EACA,SAASqD,qBAAqBA,CAAA,EAAG;IAC/B,OAAOnD,kBAAkB;EAC3B;EACA,SAAS+G,mBAAmBA,CAAA,EAAG;IAC7B,OAAO9G,gBAAgB;EACzB;EACA,SAAS+G,iBAAiBA,CAAA,EAAG;IAC3B,OAAO9G,cAAc;EACvB;EAEA,SAAS1W,WAAWA,CAAC/0M,KAAK,EAAE;IAC1BmrN,iBAAiB,GAAGnrN,KAAK,CAACmrN,iBAAiB;IAC3CE,eAAe,GAAGrrN,KAAK,CAACqrN,eAAe;IACvCE,kBAAkB,GAAGvrN,KAAK,CAACurN,kBAAkB;IAC7CC,gBAAgB,GAAGxrN,KAAK,CAACwrN,gBAAgB;IACzCC,cAAc,GAAGzrN,KAAK,CAACyrN,cAAc;EACvC;;EAEA;EACA;EACA,SAAS8f,sBAAsBA,CAACC,WAAW,EAAE;IAC3C,IAAItgC,UAAU,GAAGta,cAAc,CAACp+M,aAAa,CAAC,OAAO,CAAC;IACtD,IAAI24N,QAAQ,GAAGta,YAAY,CAACr+M,aAAa,CAAC,OAAO,CAAC;IAClD,IAAIi5P,mBAAmB,GAAGzC,uBAAuB,CAACx2P,aAAa,CAAC,OAAO,CAAC;IACxE,IAAIk5P,iBAAiB,GAAGzC,qBAAqB,CAACz2P,aAAa,CAAC,OAAO,CAAC;IACpE,IAAIo2G,QAAQ,GAAGl3G,IAAI,CAACo6O,kBAAkB,CAAC,CAAC;IAExC,IAAI0f,WAAW,EAAE;MACf;MACA;;MAEAxC,uBAAuB,CAAC55P,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACpD45P,qBAAqB,CAAC75P,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAElD67N,UAAU,CAAC13N,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MACzC23N,QAAQ,CAAC33N,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MACvCi4P,mBAAmB,CAACj4P,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;MACjDk4P,iBAAiB,CAACl4P,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;MAC/C;IACF;IAEA,IAAI,CAACo1G,QAAQ,EAAE;MACbgoG,cAAc,CAACxhN,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACxCuhN,YAAY,CAACzhN,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACtC05P,uBAAuB,CAAC55P,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACjD25P,qBAAqB,CAAC75P,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAE/C47N,UAAU,CAAC13N,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MACzC23N,QAAQ,CAAC33N,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MACvCi4P,mBAAmB,CAACj4P,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MAClDk4P,iBAAiB,CAACl4P,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MAChD;IACF;IAEA,IAAIo1G,QAAQ,KAAK,GAAG,EAAE;MACpBgoG,cAAc,CAACxhN,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAE3CwhN,YAAY,CAACzhN,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACtC05P,uBAAuB,CAAC55P,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACjD25P,qBAAqB,CAAC75P,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAE/C47N,UAAU,CAAC13N,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;MACxC23N,QAAQ,CAAC33N,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MACvCi4P,mBAAmB,CAACj4P,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MAClDk4P,iBAAiB,CAACl4P,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MAChD;IACF;IAEA,IAAIo1G,QAAQ,KAAK,GAAG,EAAE;MACpBgoG,cAAc,CAACxhN,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACxCuhN,YAAY,CAACzhN,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAEtC05P,uBAAuB,CAAC55P,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACpD45P,qBAAqB,CAAC75P,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAElD67N,UAAU,CAAC13N,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MACzC23N,QAAQ,CAAC33N,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MACvCi4P,mBAAmB,CAACj4P,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;MACjDk4P,iBAAiB,CAACl4P,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;MAC/C;IACF;EACF;EACA,SAASm4P,mBAAmBA,CAAA,EAAG;IAC7B,MAAMzgC,UAAU,GAAGta,cAAc,CAACp+M,aAAa,CAAC,OAAO,CAAC;IACxD,MAAMo5P,aAAa,GAAGzgB,iBAAiB,CAACxvN,OAAO,CAAC,CAAC;IACjD,MAAMkwO,iBAAiB,GAAG,IAAIviP,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAACqS,OAAO,CAAC,CAAC;IAEjE,IAAIuvM,UAAU,CAAC/2N,KAAK,KAAK,EAAE,IAAIy3P,aAAa,GAAGC,iBAAiB,EAAE;MAChEj7C,cAAc,CAACxhN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACrCoC,IAAI,CAACwuP,oBAAoB,CAAC,IAAI,CAAC;MAC/B,OAAO,OAAO;IAChB,CAAC,MAAM;MACLtvC,cAAc,CAACxhN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACxCqC,IAAI,CAACwuP,oBAAoB,CAAC,CAAC;MAC3B,OAAO,SAAS;IAClB;EACF;EACA,SAAS4L,qBAAqBA,CAAA,EAAG;IAC/B,MAAML,mBAAmB,GAAGzC,uBAAuB,CAACx2P,aAAa,CAAC,OAAO,CAAC;IAC1E,MAAMk5P,iBAAiB,GAAGzC,qBAAqB,CAACz2P,aAAa,CAAC,OAAO,CAAC;IACtE,MAAMu5P,uBAAuB,GAAGjC,uBAAuB,IAAIA,uBAAuB,CAACnuO,OAAO,CAAC,CAAC;IAC5F,MAAMiwO,aAAa,GAAGzgB,iBAAiB,CAACxvN,OAAO,CAAC,CAAC;IACjD,MAAMqwO,cAAc,GAAGnC,sBAAsB,IAAIA,sBAAsB,CAACluO,OAAO,CAAC,CAAC;IACjF,MAAMswO,WAAW,GAAG5gB,eAAe,CAAC1vN,OAAO,CAAC,CAAC;IAC7C,MAAMuwO,kBAAkB,GAAG3gB,kBAAkB,CAAC5vN,OAAO,CAAC,CAAC;IACvD,MAAMwwO,gBAAgB,GAAG3gB,gBAAgB,CAAC7vN,OAAO,CAAC,CAAC;IAEnD,IAAIywO,cAAc;IAClB,IAAIC,YAAY;IAEhB,IAAIN,uBAAuB,IAAIG,kBAAkB,IAAIH,uBAAuB,EAAE;MAC5EK,cAAc,GAAG,IAAI;IACvB;IACA,IAAIF,kBAAkB,GAAGN,aAAa,EAAE;MACtCQ,cAAc,GAAG,IAAI;IACvB;IACA,IAAIF,kBAAkB,GAAGD,WAAW,EAAE;MACpCG,cAAc,GAAG,IAAI;IACvB;IACA,IAAIJ,cAAc,IAAIE,kBAAkB,IAAIF,cAAc,EAAE;MAC1DI,cAAc,GAAG,IAAI;IACvB;IACA,IAAID,gBAAgB,GAAGD,kBAAkB,EAAE;MACzCG,YAAY,GAAG,IAAI;IACrB;IACA,IAAIF,gBAAgB,GAAGF,WAAW,EAAE;MAClCI,YAAY,GAAG,IAAI;IACrB;IAEA,IAAID,cAAc,EAAE;MAClBX,mBAAmB,CAACr8P,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC5C,CAAC,MAAM;MACLm8P,mBAAmB,CAACr8P,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC/C;IAEA,IAAIg9P,YAAY,EAAE;MAChBX,iBAAiB,CAACt8P,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACLo8P,iBAAiB,CAACt8P,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C;IAEA,IAAI+8P,cAAc,IAAIC,YAAY,EAAE;MAClC36P,IAAI,CAACwuP,oBAAoB,CAAC,IAAI,CAAC;MAC/B,OAAO,OAAO;IAChB,CAAC,MAAM;MACLxuP,IAAI,CAACwuP,oBAAoB,CAAC,CAAC;MAC3B,OAAO,SAAS;IAClB;EACF;EACA,SAAS3gI,mBAAmBA,CAAA,EAAG;IAC7B,IAAI,CAAC6nH,WAAW,EAAE;IAElB,IAAIx+H,QAAQ,GAAGl3G,IAAI,CAACo6O,kBAAkB,CAAC,CAAC;IAExC,IAAI,CAACljI,QAAQ,IAAIA,QAAQ,KAAK,GAAG,EAAE;MACjCl3G,IAAI,CAACwuP,oBAAoB,CAAC,IAAI,CAAC;MAC/B,OAAO,OAAO;IAChB;IAEA,IAAIt3I,QAAQ,KAAK,GAAG,EAAE;MACpB,OAAO+iJ,mBAAmB,CAAC/iJ,QAAQ,CAAC;IACtC;IAEA,OAAOkjJ,qBAAqB,CAACljJ,QAAQ,CAAC;EACxC;EACA,SAAS0jJ,mBAAmBA,CAACx3P,CAAC,EAAE;IAC9B,MAAM3E,MAAM,GAAG2E,CAAC,CAAC3E,MAAM,CAACuI,aAAa;IAErC,MAAM6zP,WAAW,GAAGtpO,IAAI,CAACob,qBAAqB,CAACvpC,CAAC,CAAC3E,MAAM,CAACgE,KAAK,CAAC;IAC9D,IAAIy0G,QAAQ,GAAGl3G,IAAI,CAACo6O,kBAAkB,CAAC,CAAC;IACxC,IAAIrkO,QAAQ,GAAG,KAAK;IAEpB,QAAQtX,MAAM;MACZ,KAAKygN,cAAc;QAAE;UACnB,IAAI97M,CAAC,CAAC3E,MAAM,CAACgE,KAAK,IAAIy0G,QAAQ,KAAK,GAAG,EAAE;YACtC,IAAI,CAAC2jJ,WAAW,EAAE;cAChB37C,cAAc,CAACxhN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;cACrCmY,QAAQ,GAAG,IAAI;cACf;YACF,CAAC,MAAM;cACLmpM,cAAc,CAACxhN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;YAC1C;YAEA,IAAIu5K,YAAY,GAAG9zK,CAAC,CAAC3E,MAAM,CAACgE,KAAK,CAACuf,KAAK,CAAC,GAAG,CAAC;YAC5Ck1J,YAAY,GAAG,IAAIt/J,IAAI,CAACs/J,YAAY,CAAC,CAAC,CAAC,EAAEA,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAEA,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAEjF,IAAIC,UAAU,GAAG7oJ,KAAK,CAACwC,QAAQ,CAAComJ,YAAY,EAAE,CAAC,CAAC;YAChDC,UAAU,GAAG7oJ,KAAK,CAAC0C,OAAO,CAACmmJ,UAAU,EAAE,CAAC,CAAC;;YAEzC;YACAsiE,iBAAiB,GAAGviE,YAAY;YAChCyiE,eAAe,GAAGxiE,UAAU;YAC5B0iE,kBAAkB,GAAGJ,iBAAiB;YACtCK,gBAAgB,GAAGH,eAAe;;YAElC;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;;YAEA,MAAMlgB,QAAQ,GAAGta,YAAY,CAACr+M,aAAa,CAAC,OAAO,CAAC;YACpD,MAAMk5P,iBAAiB,GAAGzC,qBAAqB,CAACz2P,aAAa,CAAC,OAAO,CAAC;YACtE,MAAMi5P,mBAAmB,GAAGzC,uBAAuB,CAACx2P,aAAa,CAAC,OAAO,CAAC;YAE1E24N,QAAQ,CAACh3N,KAAK,GAAG8uB,IAAI,CAACoY,qBAAqB,CAACwtI,UAAU,CAAC;YACvD6iF,iBAAiB,CAACv3P,KAAK,GAAG8uB,IAAI,CAACoY,qBAAqB,CAACwtI,UAAU,CAAC;YAChE4iF,mBAAmB,CAACt3P,KAAK,GAAG8uB,IAAI,CAACoY,qBAAqB,CAACutI,YAAY,CAAC;YAEpEygF,WAAW,GAAG,IAAI;UACpB;UACA;QACF;MACA,KAAKL,uBAAuB;QAAE;UAC5B,IAAI,CAACuD,WAAW,EAAE;YAChB,MAAMd,mBAAmB,GAAGzC,uBAAuB,CAACx2P,aAAa,CAAC,OAAO,CAAC;YAC1Ei5P,mBAAmB,CAACr8P,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;YAC1C,IAAIkT,gBAAgB,EAAEA,gBAAgB,CAAC,KAAK,CAAC;YAC7CiF,QAAQ,GAAG,IAAI;YACf;UACF;UACA,MAAM0jP,qBAAqB,GAAGr2P,CAAC,CAAC3E,MAAM,CAACgE,KAAK,CAACuf,KAAK,CAAC,GAAG,CAAC;UACvD63N,kBAAkB,GAAG,IAAIjiO,IAAI,CAC3B6hP,qBAAqB,CAAC,CAAC,CAAC,EACxBA,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,EAC5BA,qBAAqB,CAAC,CAAC,CAAC,EACxB,CACF,CAAC;UAED9B,WAAW,GAAG,IAAI;UAElB;QACF;MACA,KAAKJ,qBAAqB;QAAE;UAC1B,IAAI,CAACsD,WAAW,EAAE;YAChB,MAAMb,iBAAiB,GAAGzC,qBAAqB,CAACz2P,aAAa,CAAC,OAAO,CAAC;YACtEk5P,iBAAiB,CAACt8P,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;YACxC,IAAIkT,gBAAgB,EAAEA,gBAAgB,CAAC,KAAK,CAAC;YAC7CiF,QAAQ,GAAG,IAAI;YACf;UACF;UACA,MAAM2jP,mBAAmB,GAAGt2P,CAAC,CAAC3E,MAAM,CAACgE,KAAK,CAACuf,KAAK,CAAC,GAAG,CAAC;UACrD83N,gBAAgB,GAAG,IAAIliO,IAAI,CACzB8hP,mBAAmB,CAAC,CAAC,CAAC,EACtBA,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,EAC1BA,mBAAmB,CAAC,CAAC,CAAC,EACtB,CACF,CAAC;UAED/B,WAAW,GAAG,IAAI;UAElB;QACF;MACA,KAAKH,eAAe;QAAE;UACpB;UACA;UACA,IAAI,CAACqD,WAAW,EAAE;YAChBpD,gBAAgB,CAACpyP,SAAS,GAAG,4EAA4E;YACzGoyP,gBAAgB,CAAC/5P,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;YAC3C65P,eAAe,CAAC95P,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;YACtCmY,QAAQ,GAAG,IAAI;YACf;UACF;UAEA,IAAImjP,aAAa,GAAG91P,CAAC,CAAC3E,MAAM,CAACgE,KAAK,CAACuf,KAAK,CAAC,GAAG,CAAC;UAC7Ck3O,aAAa,GAAG,IAAIthP,IAAI,CAACshP,aAAa,CAAC,CAAC,CAAC,EAAEA,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAEA,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;UAErF;UACA,MAAM4B,WAAW,GAAGxsO,KAAK,CAACiF,QAAQ,CAAC2lO,aAAa,EAAEpf,gBAAgB,CAAC;UACnE,MAAMihB,YAAY,GAAGzsO,KAAK,CAAC8E,OAAO,CAAC8lO,aAAa,EAAErf,kBAAkB,CAAC;UACrE,IAAI,CAACihB,WAAW,IAAI,CAACC,YAAY,EAAE;YACjCtD,gBAAgB,CAACpyP,SAAS,GAAG,4EAA4E;YACzGoyP,gBAAgB,CAAC/5P,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;YAC3C65P,eAAe,CAAC95P,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;YACtCmY,QAAQ,GAAG,IAAI;YACf;UACF,CAAC,MAAM;YACLyhP,eAAe,CAAC95P,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;YACzC85P,gBAAgB,CAACpyP,SAAS,GAAG,EAAE;YAC/BoyP,gBAAgB,CAAC/5P,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;UAC1C;;UAEA;UACA;UACA;UACAm8O,cAAc,GAAGmf,aAAa;UAE9B,MAAM8B,WAAW,GAAGxD,eAAe,CAAC12P,aAAa,CAAC,OAAO,CAAC;UAC1Dk6P,WAAW,CAACv4P,KAAK,GAAG8uB,IAAI,CAACoY,qBAAqB,CAACuvN,aAAa,CAAC;UAC7DtB,iBAAiB,GAAG,IAAI;QAC1B;IACF;IAEA,MAAMqD,WAAW,GAAGptI,mBAAmB,CAAC,CAAC;IACzC,MAAMp+F,OAAO,GAAGwrO,WAAW,KAAK,OAAO,IAAIllP,QAAQ,GAAG,KAAK,GAAG,IAAI;IAClE,IAAIjF,gBAAgB,EAAEA,gBAAgB,CAAC2e,OAAO,CAAC;EACjD;EACA,SAASysN,aAAaA,CAACx5O,QAAQ,EAAEo3P,WAAW,EAAE;IAC5CpkB,WAAW,GAAG70O,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3Cs0O,WAAW,CAACh4O,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAC3C,IAAI8E,QAAQ,EAAEoO,gBAAgB,GAAGpO,QAAQ;IAEzC,IAAIw4P,aAAa,GAAG;MAClBl4P,KAAK,EAAE,YAAY;MACnBpB,IAAI,EAAE,MAAM;MACZU,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,sBAAsB;QAAEC,KAAK,EAAE;MAAiB,CAAC;IACvE,CAAC;IACD,IAAI04P,WAAW,GAAG;MAChBn4P,KAAK,EAAE,UAAU;MACjBpB,IAAI,EAAE,MAAM;MACZU,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,sBAAsB;QAAEC,KAAK,EAAE;MAAe,CAAC;IACrE,CAAC;IACD,IAAI24P,sBAAsB,GAAG;MAC3Bp4P,KAAK,EAAE,iBAAiB;MACxBpB,IAAI,EAAE,MAAM;MACZU,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,sBAAsB;QAAEC,KAAK,EAAE;MAA0B,CAAC;IAChF,CAAC;IACD,IAAI44P,oBAAoB,GAAG;MACzBr4P,KAAK,EAAE,eAAe;MACtBpB,IAAI,EAAE,MAAM;MACZU,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,sBAAsB;QAAEC,KAAK,EAAE;MAAwB,CAAC;IAC9E,CAAC;IACD41P,cAAc,GAAG;MACfr1P,KAAK,EAAE,QAAQ;MACfpB,IAAI,EAAE,MAAM;MACZU,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,sBAAsB;QAAEC,KAAK,EAAE;MAAkB,CAAC;IACxE,CAAC;IAED,IAAIg3O,iBAAiB,EAAE;MACrB,IAAI6hB,UAAU,GAAG/pO,IAAI,CAACoY,qBAAqB,CAAC8vM,iBAAiB,CAAC;MAC9D;MACA;MACA;MACAyhB,aAAa,CAACz4P,KAAK,GAAG64P,UAAU;IAClC;IACA,IAAIzhB,kBAAkB,EAAE;MACtB,IAAI0hB,WAAW,GAAGhqO,IAAI,CAACoY,qBAAqB,CAACkwM,kBAAkB,CAAC;MAChE;MACA;MACA;MACAuhB,sBAAsB,CAAC34P,KAAK,GAAG84P,WAAW;IAC5C;IACA,IAAI5hB,eAAe,EAAE;MACnB,IAAI6hB,UAAU,GAAGjqO,IAAI,CAACoY,qBAAqB,CAACgwM,eAAe,CAAC;MAC5D;MACA;MACA;MACAwhB,WAAW,CAAC14P,KAAK,GAAG+4P,UAAU;IAChC;IACA,IAAI1hB,gBAAgB,EAAE;MACpB,IAAI2hB,WAAW,GAAGlqO,IAAI,CAACoY,qBAAqB,CAACmwM,gBAAgB,CAAC;MAC9D;MACA;MACA;MACAuhB,oBAAoB,CAAC54P,KAAK,GAAGg5P,WAAW;IAC1C;IACA,IAAI1hB,cAAc,EAAE;MAClB,IAAI2hB,UAAU,GAAGnqO,IAAI,CAACoY,qBAAqB,CAACowM,cAAc,CAAC;MAC3D;MACA;MACA;MACAse,cAAc,CAAC51P,KAAK,GAAGi5P,UAAU;IACnC;IAEAx8C,cAAc,GAAGx6M,KAAK,CAACxD,KAAK,CAACg6P,aAAa,CAAC;IAC3C/7C,YAAY,GAAGz6M,KAAK,CAACxD,KAAK,CAACi6P,WAAW,CAAC;IACvC7D,uBAAuB,GAAG5yP,KAAK,CAACxD,KAAK,CAACk6P,sBAAsB,CAAC;IAC7D7D,qBAAqB,GAAG7yP,KAAK,CAACxD,KAAK,CAACm6P,oBAAoB,CAAC;IACzD7D,eAAe,GAAG9yP,KAAK,CAACxD,KAAK,CAACm3P,cAAc,CAAC;IAC7CZ,gBAAgB,GAAG52P,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC9Cq2P,gBAAgB,CAAC/5P,SAAS,CAACE,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC;IAE5D,IAAI,CAACk8P,WAAW,EAAE;MAChBpkB,WAAW,CAACp3O,WAAW,CAAC4gN,cAAc,CAAC;MACvCw2B,WAAW,CAACp3O,WAAW,CAAC6gN,YAAY,CAAC;IACvC;IAEAu2B,WAAW,CAACp3O,WAAW,CAACg5P,uBAAuB,CAAC;IAChD5hB,WAAW,CAACp3O,WAAW,CAACi5P,qBAAqB,CAAC;IAC9C7hB,WAAW,CAACp3O,WAAW,CAACk5P,eAAe,CAAC;IACxC9hB,WAAW,CAACp3O,WAAW,CAACm5P,gBAAgB,CAAC;IAEzCoC,sBAAsB,CAACC,WAAW,CAAC;IACnCjsI,mBAAmB,CAAC,CAAC;IAErB6nH,WAAW,CAAC10O,gBAAgB,CAAC,QAAQ,EAAE45P,mBAAmB,CAAC;IAE3D,OAAOllB,WAAW;EACpB;EAEA,SAASgH,mBAAmBA,CAAA,EAAG;IAC7B,MAAMx9B,cAAc,GAAGr+M,QAAQ,CAACC,aAAa,CAAC,yCAAyC,CAAC;IACxF,MAAMw6P,UAAU,GAAG/pO,IAAI,CAACoY,qBAAqB,CAACkuN,qBAAqB,CAAC;IACpE34C,cAAc,CAACz8M,KAAK,GAAG64P,UAAU;IAEjC,MAAMK,aAAa,GAAG96P,QAAQ,CAACC,aAAa,CAAC,uCAAuC,CAAC;IACrF,MAAM06P,UAAU,GAAGjqO,IAAI,CAACoY,qBAAqB,CAACmuN,mBAAmB,CAAC;IAClE6D,aAAa,CAACl5P,KAAK,GAAG+4P,UAAU;IAEhC,MAAMlE,uBAAuB,GAAGz2P,QAAQ,CAACC,aAAa,CACpD,kDACF,CAAC;IACD,MAAMy6P,WAAW,GAAGhqO,IAAI,CAACoY,qBAAqB,CAACouN,sBAAsB,CAAC;IACtET,uBAAuB,CAAC70P,KAAK,GAAG84P,WAAW;IAE3C,MAAMhE,qBAAqB,GAAG12P,QAAQ,CAACC,aAAa,CAClD,gDACF,CAAC;IACD,MAAM26P,WAAW,GAAGlqO,IAAI,CAACoY,qBAAqB,CAACquN,oBAAoB,CAAC;IACpET,qBAAqB,CAAC90P,KAAK,GAAGg5P,WAAW;IAEzC,MAAMjE,eAAe,GAAG32P,QAAQ,CAACC,aAAa,CAAC,0CAA0C,CAAC;IAC1F,MAAM46P,UAAU,GAAGnqO,IAAI,CAACoY,qBAAqB,CAACsuN,kBAAkB,CAAC;IACjET,eAAe,CAAC/0P,KAAK,GAAGi5P,UAAU;EACpC;EAEA,OAAO;IACLxf,aAAa;IACbQ,mBAAmB;IACnBpB,SAAS;IACTztH,mBAAmB;IACnBw1G,WAAW;IACXqd,oBAAoB;IACpBC,kBAAkB;IAClB3D,qBAAqB;IACrB4D,mBAAmB;IACnBC,iBAAiB;IACjB4K,kBAAkB;IAClBpL,oBAAoB;IACpBsP,kBAAkB;IAClBlT,wBAAwB;IACxB8D,gCAAgC;IAChCsZ,sBAAsB;IACtB1d,eAAe;IACf8d,mBAAmB;IACnBG;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC/rBJ,MAAM5mG,eAAe,GAAG,CAAC,MAAO;EAC9B,IAAIooG,aAAa,GAAG,KAAK;;EAEzB;EACA,SAAS5vF,sBAAsBA,CAACC,WAAW,EAAE;IAC3C,OAAOhrK,MAAM,CAACC,KAAK,CAAC;MAClBM,IAAI,EAAE,SAAS;MACfF,IAAI,EAAE,KAAK;MACXK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,WAAW;MACvBQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBypK,gBAAgB,CAACF,WAAW,CAAC;MAC/B;IACF,CAAC,CAAC;EACJ;EAEE,SAASxY,yBAAyBA,CAACooG,UAAU,EAAE1wJ,YAAY,EAAE;IACzD2wJ,mBAAmB,CAACC,cAAc,CAACF,UAAU,EAAE1wJ,YAAY,EAAE6wJ,4BAA4B,CAAC;EAC9F;;EAEF;EACA,SAASC,4BAA4BA,CAACz6P,IAAI,EAAE2pG,YAAY,EAAE;IACxD,OAAOlqG,MAAM,CAACC,KAAK,CAAC;MAClBM,IAAI;MACJG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpB;QACA,IAAIgO,KAAK,GAAG7P,QAAQ,CAACiD,cAAc,CAAC,sBAAsB,CAAC;QAC3D8M,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB3C,OAAO,CAAClQ,IAAI,CAAC,CAAC;QACd+P,cAAc,CAACC,gBAAgB,CAAC6C,KAAK,CAAC;;QAEtC;QACAkrP,aAAa,GAAG,IAAI;QAClBnoG,yBAAyB,CAACjyJ,IAAI,EAAE2pG,YAAY,CAAC;QAC/CuoD,gBAAgB,CAAClyJ,IAAI,EAAE2pG,YAAY,CAAC;MACtC;IACF,CAAC,CAAC;EACJ;EAEA,SAASghE,gBAAgBA,CAACF,WAAW,EAAE;IACrC;IACA,MAAMv7J,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACxBG,EAAE,EAAE,sBAAsB;MAC1B+P,KAAK,EAAE,IAAI;MACXlP,UAAU,EAAE,CAAC,OAAO,EAClB,SAAS,EACT,eAAe,EACf+pK,WAAW,CAACzqK,IAAI,EAChB,sBAAsB;IAC1B,CAAC,CAAC;IAEFkP,KAAK,CAAC5O,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC;;IAExC;IACA,MAAM+O,MAAM,GAAGhQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC3CyP,MAAM,CAAC7S,SAAS,GAAG,yBAAyB;;IAE5C;IACA;IACA,MAAM+vH,OAAO,GAAGk+C,WAAW,CAACrkK,GAAG,CAACiuH,IAAA;MAAA,IAAC;QAAEr0H,IAAI;QAAE2pG;MAAa,CAAC,GAAA0qB,IAAA;MAAA,OACrDomI,4BAA4B,CAACz6P,IAAI,EAAE2pG,YAAY,CAAC;IAAA,CAClD,CAAC;;IAED;IACA,IAAIywJ,aAAa,EAAE;MACjB7tI,OAAO,CAAC3vH,OAAO,CAAC6C,MAAM,IAAI;QACxBA,MAAM,CAAC4U,QAAQ,GAAG,IAAI;QACtB5U,MAAM,CAACvD,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAClC,CAAC,CAAC;IACJ;IAEA8S,KAAK,CAACpS,WAAW,CAACuS,MAAM,CAAC;IACzBk9G,OAAO,CAAC3vH,OAAO,CAAC6C,MAAM,IAAI;MACxByP,KAAK,CAACpS,WAAW,CAAC2C,MAAM,CAAC;IAC3B,CAAC,CAAC;;IAEF;IACA2M,cAAc,CAACY,iBAAiB,CAACkC,KAAK,CAAC;IACvC3C,OAAO,CAACjQ,IAAI,CAAC,CAAC;IACde,YAAY,CAACP,WAAW,CAACoS,KAAK,CAAC;EACjC;;EAEA;EACA,SAASgjJ,gBAAgBA,CAACmoG,UAAU,EAAE;IACpC,MAAMK,kBAAkB,GAAGtrP,KAAK,CAAC1P,KAAK,CAAC;MACrCG,EAAE,EAAE,qBAAqBw6P,UAAU,EAAE;MACrCzqP,KAAK,EAAE,IAAI;MACXlP,UAAU,EAAE;IACd,CAAC,CAAC;IAEF,MAAMorC,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAClDksC,cAAc,CAACtvC,SAAS,GAAG,QAAQ69P,UAAU,mHAAmH;IAEhK,MAAM1uN,SAAS,GAAGlsC,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBkO,KAAK,CAAC/S,IAAI,CAACq+P,kBAAkB,CAAC;QAC9BnuP,OAAO,CAAClQ,IAAI,CAAC,CAAC;QAEd,IAAI6S,KAAK,GAAG7P,QAAQ,CAACC,aAAa,CAAC,uBAAuB,CAAC;QAE3D8M,cAAc,CAACC,gBAAgB,CAAC6C,KAAK,CAAC;MACxC;IACF,CAAC,CAAC;IAEF,MAAM08B,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC6uC,SAAS,CAAC;IAE9B+uN,kBAAkB,CAAC59P,WAAW,CAACgvC,cAAc,CAAC;IAC9C4uN,kBAAkB,CAAC59P,WAAW,CAAC8uC,OAAO,CAAC;IACvCx8B,KAAK,CAAC9S,IAAI,CAACo+P,kBAAkB,CAAC;EAChC;EAEA,SAASF,4BAA4BA,CAAC70M,GAAG,EAAE;IACzC;IACArwB,OAAO,GAAGrO,QAAQ,CAACxZ,CAAC,CAACC,OAAO,CAAC6kD,aAAa,CAAC;IAC3CooM,UAAU,GAAGrlO,OAAO,GAAG,GAAG;;IAE1B;IACAhB,QAAQ,GAAGwwB,WAAW,CAAC,YAAY;MACjC,MAAM81M,mBAAmB,CAACj1M,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC,EAAEg1M,UAAU,CAAC,CAAC,CAAC;EAClB;;EAGA;EACA,eAAeC,mBAAmBA,CAACj1M,GAAG,EAAE;IACtC;IACA;IACA,MAAM20M,mBAAmB,CAACM,mBAAmB,CAACj1M,GAAG,EAAEk1M,UAAU,CAAC;EAChE;EAEA,SAASA,UAAUA,CAACl1M,GAAG,EAAEygF,gBAAgB,EAAE;IACzC,IAAIzgF,GAAG,CAAC9/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;MAC3B;IAAA,CACD,MAAM;MACLy0O,mBAAmB,CAACj0H,UAAU,CAACD,gBAAgB,CAAC;MAChDgC,aAAa,CAAC9zG,QAAQ,CAAC;MACvB8lO,aAAa,GAAG,KAAK;IACvB;EACF;EAEA,OAAO;IACL5vF,sBAAsB;IACtBvY,yBAAyB;IACzB0Y,gBAAgB;IAChB8vF,4BAA4B;IAC5BD,4BAA4B;IAC5BI,mBAAmB;IACnBC,UAAU;IACV3oG;EACF,CAAC;AACH,CAAC,EAAE,CAAC;AC9JJ,IAAIooG,mBAAmB,GAAI,YAAY;EACnC,SAASC,cAAcA,CAACF,UAAU,EAAES,UAAU,EAAE55P,QAAQ,EAAE;IACtDkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBskN,UAAU;MACVS;IACF,CAAC;IACDrtP,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kBAAkB;MACpBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACuuM,oBAAoB;QACvC75P,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnC;MAAA;IAEJ,CAAC,CAAC;EACJ;EAEF,SAASwsP,mBAAmBA,CAACj1M,GAAG,EAAEzkD,QAAQ,EAAE;IACxCkB,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBqwF,gBAAgB,EAAEzgF,GAAG,CAAC,CAAC,CAAC,CAACygF;IAC3B,CAAC;IACD34H,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;MACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACwuM,yBAAyB;QAC5C95P,QAAQ,CAACykD,GAAG,EAAEvjD,IAAI,CAACgkI,gBAAgB,CAAC;MACtC,CAAC;MACDh4H,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnC;MAAA;IAEJ,CAAC,CAAC;EACJ;EAEA,SAASi4H,UAAUA,CAACD,gBAAgB,EAAE;IACpChkI,IAAI,GAAG;MACLgkI,gBAAgB,EAAEA;IACpB,CAAC;IACD,IAAI74H,MAAM,GAAG,GAAGE,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,MAAMh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,IAAIj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,IAAIl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,cAAc;IAC1H,IAAIygF,eAAe,GAAG,SAAAA,CAAU7b,IAAI,EAAE;MACpC,IAAI7pE,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;IACpC,CAAC;IAED,IAAI5yC,IAAI,GAAGva,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IACzCga,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAEiN,MAAM,CAAC;IACnCqM,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IACnCsZ,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrCsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE,kBAAkB,CAAC;IAChDsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE+qI,eAAe,CAAC;IAC7C,IAAI/E,UAAU,GAAGjnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAChD0mI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IACxCgmI,UAAU,CAAChmI,YAAY,CAAC,OAAO,EAAEmN,CAAC,CAACC,OAAO,CAACqoC,KAAK,CAAC;IACjDuwF,UAAU,CAACzmI,EAAE,GAAG,OAAO;IACvB,IAAI0mI,eAAe,GAAGlnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACrD2mI,eAAe,CAACjmI,YAAY,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACxDimI,eAAe,CAACjmI,YAAY,CAAC,OAAO,EAAE8lI,gBAAgB,CAAC;IACvDG,eAAe,CAAC1mI,EAAE,GAAG,kBAAkB;IAEvC+Z,IAAI,CAAC9c,WAAW,CAACwpI,UAAU,CAAC;IAC5B1sH,IAAI,CAAC9c,WAAW,CAACypI,eAAe,CAAC;IACjC3sH,IAAI,CAACzZ,KAAK,CAACsH,QAAQ,GAAG,UAAU;IAChCmS,IAAI,CAACzZ,KAAK,CAAC+nF,OAAO,GAAG,GAAG;IACxB7oF,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAAC8c,IAAI,CAAC;IAE/BA,IAAI,CAAC4sH,MAAM,CAAC,CAAC;EACf;EAEF,OAAO;IACH+zH,cAAc;IACdK,mBAAmB;IACnBv0H;EACJ,CAAC;AACH,CAAC,CAAE,CAAC;AClGN,MAAMl7B,OAAO,GAAI,YAAY;EACzB;EACA,IAAIi/C,eAAe,CAAC,CAAC;EACrB,IAAI6wG,YAAY,CAAC,CAAC;EAClB,IAAIC,eAAe,CAAC,CAAC;EACrB,IAAIC,sBAAsB,CAAC,CAAC;EAC5B,IAAIC,eAAe;EACnB,IAAIC,wBAAwB;EAC5B,IAAIC,wBAAwB,CAAC,CAAC;EAC9B;EACA,IAAIC,WAAW;EACf,IAAIC,WAAW;EACf,IAAIC,cAAc;EAClB,IAAIxvJ,aAAa;EACjB,IAAIyvJ,UAAU;EACd,IAAIh3J,WAAW;EACf,IAAIC,UAAU;EACd,IAAIC,YAAY;EAChB,IAAI+2J,cAAc;EAClB,IAAIC,gBAAgB;EACpB,IAAIC,kBAAkB;EACtB,IAAIC,eAAe;EACnB,IAAIC,YAAY;EAChB,IAAIC,iBAAiB;EACrB,IAAIC,iBAAiB;EACrB;EACA,IAAIC,eAAe;EACnB,IAAIC,iBAAiB;EACrB,IAAIC,gBAAgB;EACpB,IAAIC,kBAAkB;EACtB;EACA,IAAI7xI,YAAY;EAChB,IAAI8xI,oBAAoB;EACxB,IAAIC,kBAAkB;EACtB,IAAIC,iBAAiB;EACrB,IAAI9kN,eAAe;EACnB,IAAI2rH,iBAAiB;EACrB,IAAIo5F,cAAc;EAClB,IAAIC,cAAc;EAElB,IAAI9wN,OAAO;EACX,IAAI+wN,mBAAmB;EACvB,IAAIC,2BAA2B;EAC/B,IAAIC,qBAAqB;EACzB,IAAI18F,wBAAwB;EAC5B,IAAI28F,yBAAyB;EAC7B,IAAIrnD,YAAY;EAChB;EACA,IAAIsnD,oBAAoB;EACxB,IAAIvzJ,iBAAiB,GAAG,EAAE;EAC1B,IAAIwzJ,qBAAqB,GAAG,EAAE;EAC9B,IAAIx9F,eAAe,GAAG,EAAE;EACxB,IAAI+zD,kBAAkB;EACtB,IAAI0pC,mBAAmB;EACvB,IAAIC,kBAAkB,GAAG,CAAC;EAC1B;EACA,IAAIC,gBAAgB;EACpB,IAAIpyJ,WAAW;EACf,IAAIqyJ,kBAAkB,GAAG,KAAK;EAC9B;EACA,IAAIC,mBAAmB;EACvB,IAAIC,qBAAqB;EAEzB,IAAIC,qBAAqB;EACzB,IAAIC,UAAU,GAAG,KAAK;EACtB;EACA;EACA,SAASC,6BAA6BA,CAAA,EAAG;IACrCj0J,iBAAiB,CAAC5sG,OAAO,CAACorK,EAAE,IAAIA,EAAE,CAACrvD,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC,CAAC;IACxEqjK,eAAe,GAAG,CAAC,GAAGA,eAAe,EAAE,GAAGh2D,iBAAiB,CAAC;IAC5DwzJ,qBAAqB,GAAGxzJ,iBAAiB;IACzCA,iBAAiB,GAAG,EAAE;EAC1B;EACA;EACA,SAASk0J,8BAA8BA,CAACn1J,QAAQ,EAAE;IAC9CiB,iBAAiB,CAAC/+F,IAAI,CAAC;MACnB5K,EAAE,EAAE0oG,QAAQ,CAACrrG,OAAO,CAACglD,UAAU;MAC/By2D,IAAI,EAAEpQ;IACV,CAAC,CAAC;EACN;EACA,SAASo1J,mCAAmCA,CAACz7M,UAAU,EAAE;IACrDsnD,iBAAiB,GAAGA,iBAAiB,CAAC3+F,MAAM,CAAChK,CAAC,IAAIA,CAAC,CAAChB,EAAE,KAAKqiD,UAAU,CAAC;EAC1E;EACA,SAAS07M,oBAAoBA,CAAA,EAAG;IAC5B,OAAO,CAAC,GAAGp0J,iBAAiB,CAAC;EACjC;EACA,SAASq0J,yBAAyBA,CAAA,EAAG;IACjC,OAAO,CAAC,GAAGb,qBAAqB,CAAC;EACrC;EACA;AACJ;AACA;AACA;AACA;AACA;EACI,SAASc,8BAA8BA,CAAA,EAAG;IACtC,OAAO,CAAC,GAAGd,qBAAqB,CAAC;EACrC;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,eAAee,qBAAqBA,CAAA,EAAG;IACnC,IAAI7C,eAAe,EAAE;MACjB,OAAO,CAAC,GAAGA,eAAe,CAAC;IAC/B,CAAC,MAAM;MACH,MAAM8C,aAAa,CAAC,CAAC;MACrB,MAAMC,sBAAsB,CAAC,CAAC;MAC9B,OAAO,CAAC,GAAG/C,eAAe,CAAC;IAC/B;EACJ;EACA,SAASrlH,sBAAsBA,CAAA,EAAG;IAC9BrsC,iBAAiB,GAAG,EAAE;IACtB;IACA,OAAOA,iBAAiB;EAC5B;EACA;EACA,SAASoqI,4BAA4BA,CAACrrI,QAAQ,EAAE;IAC5Ci3D,eAAe,CAAC/0J,IAAI,CAAC;MACjB5K,EAAE,EAAE0oG,QAAQ,CAACrrG,OAAO,CAACglD,UAAU;MAC/By2D,IAAI,EAAEpQ;IACV,CAAC,CAAC;EACN;EACA,SAAS0lD,iCAAiCA,CAAC/rG,UAAU,EAAE;IACnDs9G,eAAe,GAAGA,eAAe,CAAC30J,MAAM,CAAChK,CAAC,IAAIA,CAAC,CAAChB,EAAE,KAAKqiD,UAAU,CAAC;EACtE;EACA,SAASkpD,kBAAkBA,CAAA,EAAG;IAC1B,OAAO,CAAC,GAAGo0D,eAAe,CAAC;EAC/B;EACA,SAAS1pB,oBAAoBA,CAAA,EAAG;IAC5B0pB,eAAe,GAAG,EAAE;IACpB,OAAOA,eAAe;EAC1B;;EAEA;EACA;EACA,SAAS0+F,yBAAyBA,CAAA,EAAG;IACjC,IAAI,CAAC3C,WAAW,EAAE;IAClB,IAAI4C,SAAS,GAAG,EAAE,CAACvyP,KAAK,CAACC,IAAI,CAAC2vP,WAAW,CAAC91P,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;IACxF,IAAIy4P,SAAS,CAACxhQ,MAAM,GAAG,CAAC,EAAE;MACtBwhQ,SAAS,CAACvhQ,OAAO,CAACiE,CAAC,IAAI;QACnBA,CAAC,CAAC3E,SAAS,CAACC,MAAM,CAAC,mBAAmB,EAAE,aAAa,CAAC;MAC1D,CAAC,CAAC;IACN;EACJ;EACA,SAASiiQ,8BAA8BA,CAAA,EAAG;IACtC,IAAI,CAAC7C,WAAW,EAAE;IAClB,IAAI4C,SAAS,GAAG,EAAE,CAACvyP,KAAK,CAACC,IAAI,CAAC2vP,WAAW,CAAC91P,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;IACxF,IAAIy4P,SAAS,CAACxhQ,MAAM,GAAG,CAAC,EAAE;MACtBwhQ,SAAS,CAACvhQ,OAAO,CAACiE,CAAC,IAAI;QACnBA,CAAC,CAAC3E,SAAS,CAACC,MAAM,CAAC,mBAAmB,EAAE,aAAa,CAAC;MAC1D,CAAC,CAAC;IACN;EACJ;EACA,SAASkiQ,mBAAmBA,CAAA,EAAG;IAC3B,IAAIj/P,aAAa,GAAGC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;IAC9D,IAAIF,aAAa,EAAE;MACfC,QAAQ,CAACoQ,IAAI,CAAChB,WAAW,CAACrP,aAAa,CAAC;IAC5C;EACJ;EACA,SAASk/P,sBAAsBA,CAAA,EAAG;IAC9B,OAAO;MACH1tM,YAAY,EAAE0rM,oBAAoB;MAClC3rM,UAAU,EAAE4rM;IAChB,CAAC;EACL;EACA,SAASgC,eAAeA,CAAA,EAAG;IACvB,OAAO/zI,YAAY;EACvB;EACA,SAASklC,kBAAkBA,CAAA,EAAG;IAC1B,OAAOtF,eAAe;EAC1B;EACA,SAASo0G,2BAA2BA,CAAA,EAAG;IACnC,OAAOnD,wBAAwB;EACnC;EACA,SAAS9tG,kBAAkBA,CAACnnI,IAAI,EAAE;IAC9BokG,YAAY,GAAGpkG,IAAI;EACvB;EACA,SAASy+I,wBAAwBA,CAACl0G,UAAU,EAAEC,YAAY,EAAE;IACxD2rM,kBAAkB,GAAG5rM,UAAU;IAC/BjZ,eAAe,GAAGiZ,UAAU;IAC5B2rM,oBAAoB,GAAG1rM,YAAY;EACvC;EACA,SAAS6tM,eAAeA,CAACC,UAAU,EAAE;IACjCzD,YAAY,GAAGyD,UAAU;IACzBlC,iBAAiB,GAAGkC,UAAU,CAAC,CAAC,CAAC,CAACp6F,SAAS;IAC3C5sH,eAAe,GAAGgnN,UAAU,CAAC,CAAC,CAAC,CAAC95F,UAAU;IAC1C;IACA,IAAKn3J,CAAC,CAACC,OAAO,CAACoyC,aAAa,IAAI,IAAI,IAAIryC,CAAC,CAAC6kG,SAAS,KAAK,OAAO,IACvD7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,IAC9E7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,mBAAoB,IACjF7kG,CAAC,CAACC,OAAO,CAAC4hC,kBAAkB,KAAK,IAAI,IAAI7hC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IACvE7kG,CAAC,CAACC,OAAO,CAACu0C,kBAAkB,KAAK,IAAI,IAAIx0C,CAAC,CAAC6kG,SAAS,KAAK,YAAa,IACtE7kG,CAAC,CAACC,OAAO,CAAC60C,WAAW,KAAK,IAAI,IAAI90C,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAACkxC,YAAY,KAAK,IAAI,IAAInxC,CAAC,CAAC6kG,SAAS,KAAK,MAAO,IAC1D7kG,CAAC,CAACC,OAAO,CAACqvC,cAAc,KAAK,IAAI,IAAItvC,CAAC,CAAC6kG,SAAS,KAAK,QAAS,IAC9D7kG,CAAC,CAACC,OAAO,CAACwjC,uBAAuB,KAAK,IAAI,IAAIzjC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IACzE7kG,CAAC,CAACC,OAAO,CAACuxC,6BAA6B,KAAK,IAAI,IAAIxxC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IAClF7kG,CAAC,CAACC,OAAO,CAACqkC,gBAAgB,KAAK,IAAI,IAAItkC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IAClE7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IACjF7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,eAAgB,IAC9E7kG,CAAC,CAACC,OAAO,CAAC6uC,wBAAwB,KAAK,IAAI,IAAI9uC,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IAClF7kG,CAAC,CAACC,OAAO,CAAC0yC,WAAW,KAAK,IAAI,IAAI3yC,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAAC+tC,mBAAmB,KAAK,IAAI,IAAIhuC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IACtE7kG,CAAC,CAACC,OAAO,CAAC8jC,4BAA4B,KAAK,IAAI,IAAI/jC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IAC/E7kG,CAAC,CAACC,OAAO,CAAC4xC,sBAAsB,KAAK,IAAI,IAAI7xC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,EAAE;MACpF+wD,iBAAiB,GAAG,UAAU;IAClC,CAAC,MAAM;MACHA,iBAAiB,GAAGA,iBAAiB,GAAGq7F,UAAU,CAAC,CAAC,CAAC,CAACj6F,SAAS;IACnE;EACJ;EACA,SAASk6F,oBAAoBA,CAAA,EAAG;IAC5B,IAAIC,kBAAkB,GAAG7wP,QAAQ,CAACmoI,WAAW,CAAC,aAAa,CAAC,CAAC11H,KAAK,CAAC,GAAG,CAAC;IACvE,IAAIq+O,sBAAsB,GAAGD,kBAAkB,CAAC,CAAC,CAAC;IAClD,IAAIE,oBAAoB,GAAGF,kBAAkB,CAAC,CAAC,CAAC;IAEhD3D,YAAY,CAACr+P,OAAO,CAAC+iB,CAAC,IAAI;MACtB,IAAIA,CAAC,CAAC2kJ,SAAS,KAAKu6F,sBAAsB,IAAIl/O,CAAC,CAACilJ,UAAU,KAAKk6F,oBAAoB,EAAE;QACjFtC,iBAAiB,GAAG78O,CAAC,CAAC2kJ,SAAS;QAC/B5sH,eAAe,GAAG/3B,CAAC,CAACilJ,UAAU;QAC9B;QACA,IAAKn3J,CAAC,CAACC,OAAO,CAACoyC,aAAa,IAAI,IAAI,IAAIryC,CAAC,CAAC6kG,SAAS,KAAK,OAAO,IACvD7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,IAC9E7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,mBAAoB,IACjF7kG,CAAC,CAACC,OAAO,CAAC4hC,kBAAkB,KAAK,IAAI,IAAI7hC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IACvE7kG,CAAC,CAACC,OAAO,CAACu0C,kBAAkB,KAAK,IAAI,IAAIx0C,CAAC,CAAC6kG,SAAS,KAAK,YAAa,IACtE7kG,CAAC,CAACC,OAAO,CAAC60C,WAAW,KAAK,IAAI,IAAI90C,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAACkxC,YAAY,KAAK,IAAI,IAAInxC,CAAC,CAAC6kG,SAAS,KAAK,MAAO,IAC1D7kG,CAAC,CAACC,OAAO,CAACqvC,cAAc,KAAK,IAAI,IAAItvC,CAAC,CAAC6kG,SAAS,KAAK,QAAS,IAC9D7kG,CAAC,CAACC,OAAO,CAACwjC,uBAAuB,KAAK,IAAI,IAAIzjC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IACzE7kG,CAAC,CAACC,OAAO,CAACuxC,6BAA6B,KAAK,IAAI,IAAIxxC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IAClF7kG,CAAC,CAACC,OAAO,CAACqkC,gBAAgB,KAAK,IAAI,IAAItkC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IAClE7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IACjF7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,eAAgB,IAC9E7kG,CAAC,CAACC,OAAO,CAAC6uC,wBAAwB,KAAK,IAAI,IAAI9uC,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IAClF7kG,CAAC,CAACC,OAAO,CAAC0yC,WAAW,KAAK,IAAI,IAAI3yC,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAAC+tC,mBAAmB,KAAK,IAAI,IAAIhuC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IACtE7kG,CAAC,CAACC,OAAO,CAAC8jC,4BAA4B,KAAK,IAAI,IAAI/jC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IAC/E7kG,CAAC,CAACC,OAAO,CAAC4xC,sBAAsB,KAAK,IAAI,IAAI7xC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,EAAE;UACpF+wD,iBAAiB,GAAG,UAAU;QAClC,CAAC,MAAM;UACHA,iBAAiB,GAAG1jJ,CAAC,CAAC8kJ,SAAS;QACnC;MACJ;IACJ,CAAC,CAAC;IAEF,IAAI,CAACpB,iBAAiB,EAAE;MACpBm5F,iBAAiB,GAAGvB,YAAY,CAAC,CAAC,CAAC,CAAC32F,SAAS;MAC7C5sH,eAAe,GAAGujN,YAAY,CAAC,CAAC,CAAC,CAACr2F,UAAU;MAC5CvB,iBAAiB,GAAG43F,YAAY,CAAC,CAAC,CAAC,CAACx2F,SAAS;IACjD;IAEA,IAAKh3J,CAAC,CAACC,OAAO,CAACoyC,aAAa,IAAI,IAAI,IAAIryC,CAAC,CAAC6kG,SAAS,KAAK,OAAO,IACvD7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,IAC9E7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,mBAAoB,IACjF7kG,CAAC,CAACC,OAAO,CAAC4hC,kBAAkB,KAAK,IAAI,IAAI7hC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IACvE7kG,CAAC,CAACC,OAAO,CAACu0C,kBAAkB,KAAK,IAAI,IAAIx0C,CAAC,CAAC6kG,SAAS,KAAK,YAAa,IACtE7kG,CAAC,CAACC,OAAO,CAAC60C,WAAW,KAAK,IAAI,IAAI90C,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAACkxC,YAAY,KAAK,IAAI,IAAInxC,CAAC,CAAC6kG,SAAS,KAAK,MAAO,IAC1D7kG,CAAC,CAACC,OAAO,CAACqvC,cAAc,KAAK,IAAI,IAAItvC,CAAC,CAAC6kG,SAAS,KAAK,QAAS,IAC9D7kG,CAAC,CAACC,OAAO,CAACwjC,uBAAuB,KAAK,IAAI,IAAIzjC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IACzE7kG,CAAC,CAACC,OAAO,CAACuxC,6BAA6B,KAAK,IAAI,IAAIxxC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IAClF7kG,CAAC,CAACC,OAAO,CAACqkC,gBAAgB,KAAK,IAAI,IAAItkC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IAClE7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IACjF7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,eAAgB,IAC9E7kG,CAAC,CAACC,OAAO,CAAC6uC,wBAAwB,KAAK,IAAI,IAAI9uC,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IAClF7kG,CAAC,CAACC,OAAO,CAAC0yC,WAAW,KAAK,IAAI,IAAI3yC,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAAC+tC,mBAAmB,KAAK,IAAI,IAAIhuC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IACtE7kG,CAAC,CAACC,OAAO,CAAC8jC,4BAA4B,KAAK,IAAI,IAAI/jC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IAC/E7kG,CAAC,CAACC,OAAO,CAAC4xC,sBAAsB,KAAK,IAAI,IAAI7xC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,EAAE;MACpF+wD,iBAAiB,GAAG,UAAU;IAClC;EACJ;EACA,SAAS07F,uBAAuBA,CAAA,EAAG;IAC/B,IAAIhxP,QAAQ,CAACmoI,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE;MACvCqmH,kBAAkB,GAAGxuP,QAAQ,CAACmoI,WAAW,CAAC,QAAQ,CAAC;MAEnD,IAAI8oH,mBAAmB,GAAG50G,eAAe,CAACv/I,MAAM,CAACkxH,GAAG,IAAI;QACpD,OAAOwgI,kBAAkB,KAAKxgI,GAAG,CAACxuB,EAAE;MACxC,CAAC,CAAC;MAEF+uJ,oBAAoB,GAAG0C,mBAAmB,CAAC,CAAC,CAAC,CAACtpN,IAAI;MAClDjoC,CAAC,CAACC,OAAO,CAAC8pC,gBAAgB,GAAG,CAAC+kN,kBAAkB,EAAED,oBAAoB,CAAC;IAC3E;IAEA,IAAI,CAACC,kBAAkB,EAAE;MACrBA,kBAAkB,GAAG,GAAG;MACxBD,oBAAoB,GAAG,KAAK;IAChC;EACJ;EACA,SAAS2C,4BAA4BA,CAAA5qI,IAAA,EAA+B;IAAA,IAA9B;MAAE1jE,UAAU;MAAEC;IAAa,CAAC,GAAAyjE,IAAA;IAC9DioI,oBAAoB,GAAG1rM,YAAY;IACnC2rM,kBAAkB,GAAG5rM,UAAU;EACnC;EACA,SAASu0G,mBAAmBA,CAACs6E,OAAO,EAAE;IAClC;IACAjsB,kBAAkB,GAAG,EAAE;IACvB0pC,mBAAmB,GAAG,EAAE;IAExB,IAAIzd,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MACpBjsB,kBAAkB,GAAG,CAAC,GAAG,CAAC;MAC1B;IACJ;IAEAisB,OAAO,CAAC5iP,OAAO,CAAC8gB,CAAC,IAAI;MACjB,MAAM7d,EAAE,GAAG6d,CAAC,CAACunJ,WAAW,GAAGvnJ,CAAC,CAACunJ,WAAW,GAAGvnJ,CAAC;MAC5C61M,kBAAkB,CAAC9oN,IAAI,CAAC5K,EAAE,CAAC;MAC3B,IAAI6d,CAAC,CAACmmN,aAAa,EAAEo5B,mBAAmB,CAACxyP,IAAI,CAAC5K,EAAE,CAAC;IACrD,CAAC,CAAC;EACN;;EAEA;EACA;EACA,SAASq/P,YAAYA,CAAC52J,WAAW,EAAE;IAC/BA,WAAW,GAAGA,WAAW,CAACpoG,WAAW,CAAC,CAAC;IACvC,MAAMi+P,SAAS,GAAGjD,eAAe,CAACrwP,MAAM,CAACs0P,EAAE,IAAI;MAC3C,IAAI32J,SAAS,GAAG22J,EAAE,CAAC9nB,EAAE,CAACn3O,WAAW,CAAC,CAAC;MACnC,IAAIuoG,QAAQ,GAAG02J,EAAE,CAAC7nB,EAAE,CAACp3O,WAAW,CAAC,CAAC;MAClC,IAAIk/P,UAAU,GAAGD,EAAE,CAACE,EAAE,CAACn/P,WAAW,CAAC,CAAC,CAAC,CAAC;MACtC,IAAIwoG,QAAQ,GAAG,GAAGD,QAAQ,KAAK22J,UAAU,IAAI52J,SAAS,EAAE;MACxD,IAAIG,gBAAgB,GAAG,GAAGF,QAAQ,KAAKD,SAAS,IAAI42J,UAAU,EAAE;MAChE,IAAIx2J,WAAW,GAAGF,QAAQ,CAAC7iF,OAAO,CAACyiF,WAAW,CAAC;MAC/C,IAAIO,kBAAkB,GAAGF,gBAAgB,CAAC9iF,OAAO,CAACyiF,WAAW,CAAC;MAE9D,OAAOM,WAAW,KAAK,CAAC,CAAC,IAAIC,kBAAkB,KAAK,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF,MAAMy2J,WAAW,GAAG,CAAC,GAAG9D,WAAW,CAAC91P,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACtE45P,WAAW,IAAIA,WAAW,CAAC1iQ,OAAO,CAAC2iQ,EAAE,IAAI/D,WAAW,CAAC/sP,WAAW,CAAC8wP,EAAE,CAAC,CAAC;IACrEC,oBAAoB,CAACrB,SAAS,CAAC;IAC/BsB,cAAc,CAAC,CAAC;IAChBvC,kBAAkB,GAAGiB,SAAS,CAACxhQ,MAAM;IACrC+iQ,wBAAwB,CAAC,CAAC;EAC9B;EACA;EACA;EACA,SAASA,wBAAwBA,CAAA,EAAG;IAChC,IAAIrgQ,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC,IAAI,IAAI,EACxDjD,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC,CAAC9F,SAAS,GAAG,wBAAwB,GAAG0gQ,kBAAkB;EAClH;EACA,SAASnxJ,eAAeA,CAAA,EAAG;IACvB,IAAID,UAAU,GAAGzsG,QAAQ,CAACC,aAAa,CAAC,mBAAmB,CAAC;IAE5D,IAAIy2B,SAAS,GAAGy0F,YAAY,CAAChqG,KAAK,CAAC,GAAG,CAAC;IACvCi1L,YAAY,GAAG,GAAG1lL,IAAI,CAAC5B,WAAW,CAAC4H,SAAS,CAAC,CAAC,CAAC,CAAC,IAAIhG,IAAI,CAAC5B,WAAW,CAAC4H,SAAS,CAAC,CAAC,CAAC,CAAC,IAAIA,SAAS,CAAC,CAAC,CAAC,CAACnqB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAEhH,IAAI,CAACkgG,UAAU,EAAE;MACbA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAC5CujQ,WAAW,GAAGtgQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC3C+/P,WAAW,CAACzjQ,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MAC3C0xG,eAAe,CAAC,CAAC;MACjB6xJ,WAAW,CAAC7iQ,WAAW,CAAC8uC,OAAO,CAAC;MAChCkgE,UAAU,CAAChvG,WAAW,CAAC6iQ,WAAW,CAAC;IACvC;IAEA,IAAItgQ,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAClDjD,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,CAAC9F,SAAS,GAAG,QAAQ,GAAGi5M,YAAY;IAElF,IAAIgnD,cAAc,EAAE;MAChB7wN,OAAO,CAACn9B,WAAW,CAACkuP,mBAAmB,CAAC;IAC5C;IAEA,IAAIL,oBAAoB,KAAK,GAAG,IAAIA,oBAAoB,KAAK,KAAK,EAAE;MAChE1wN,OAAO,CAAC9uC,WAAW,CAAC8/P,2BAA2B,CAAC;MAChDhxN,OAAO,CAACn9B,WAAW,CAACmuP,2BAA2B,CAAC;IACpD,CAAC,MAAM;MACHhxN,OAAO,CAAC9uC,WAAW,CAAC8/P,2BAA2B,CAAC;MAChD,IAAIv9P,QAAQ,CAACiD,cAAc,CAAC,yBAAyB,CAAC,IAAI,IAAI,EAC1DjD,QAAQ,CAACiD,cAAc,CAAC,yBAAyB,CAAC,CAAC9F,SAAS,GAAG,YAAY,GAAG8/P,oBAAoB;IAC1G;IAEA,IAAIj5F,iBAAiB,KAAK,GAAG,IAAIA,iBAAiB,KAAK,UAAU,EAAE;MAC/Dz3H,OAAO,CAAC9uC,WAAW,CAACqjK,wBAAwB,CAAC;MAC7Cv0H,OAAO,CAACn9B,WAAW,CAAC0xJ,wBAAwB,CAAC;IACjD,CAAC,MAAM;MACHv0H,OAAO,CAAC9uC,WAAW,CAACqjK,wBAAwB,CAAC;MAC7C,IAAI9gK,QAAQ,CAACiD,cAAc,CAAC,sBAAsB,CAAC,IAAI,IAAI,EACvDjD,QAAQ,CAACiD,cAAc,CAAC,sBAAsB,CAAC,CAAC9F,SAAS,GAAG,SAAS,GAAG6mK,iBAAiB;IACjG;IAEA,IAAI51J,CAAC,CAACC,OAAO,CAACC,eAAe,IAAI,YAAY,KAAKF,CAAC,CAAC6kG,SAAS,KAAK,QAAQ,IAAI7kG,CAAC,CAAC6kG,SAAS,KAAK,WAAW,CAAC,EAAE;MACxG1mE,OAAO,CAAC9uC,WAAW,CAAC+/P,qBAAqB,CAAC;MAC1C,IAAIx9P,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC,IAAI,IAAI,EACpDjD,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC,CAAC9F,SAAS,GAAG,kBAAkB,GAAGkgQ,cAAc;IACpG;IAEA,IAAIr9P,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC,IAAI,IAAI,EACxDjD,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC,CAAC9F,SAAS,GAAG,wBAAwB,GAAG0gQ,kBAAkB;IAE9G,OAAOpxJ,UAAU;EACrB;EAEA,SAASgC,eAAeA,CAAA,EAAG;IACvB8xJ,eAAe,GAAGngQ,MAAM,CAACC,KAAK,CAAC;MAC3BG,EAAE,EAAE,iBAAiB;MACrBG,IAAI,EAAE,QAAQ,GAAGy1M,YAAY;MAC7Bt1M,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QACZixJ,gBAAgB,CAAC,iBAAiB,CAAC;MACvC;IACJ,CAAC,CAAC;IAEF0tG,uBAAuB,GAAGpgQ,MAAM,CAACC,KAAK,CAAC;MACnCG,EAAE,EAAE,yBAAyB;MAC7BG,IAAI,EAAE,YAAY,GAAGs8P,oBAAoB;MACzCn8P,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QACZixJ,gBAAgB,CAAC,yBAAyB,CAAC;MAC/C;IACJ,CAAC,CAAC;IACF2tG,4BAA4B,GAAGrgQ,MAAM,CAACC,KAAK,CAAC;MACxCI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QACZ,IAAI,CAACk8P,kBAAkB,EACnBjvJ,WAAW,CAAC,yBAAyB,CAAC;MAC9C;IACJ,CAAC,CAAC;IAEFs1D,oBAAoB,GAAGhkK,MAAM,CAACC,KAAK,CAAC;MAChCG,EAAE,EAAE,sBAAsB;MAC1BG,IAAI,EAAE,SAAS,GAAGqjK,iBAAiB;MACnCljK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QACZixJ,gBAAgB,CAAC,sBAAsB,CAAC;MAC5C;IACJ,CAAC,CAAC;IACFuR,yBAAyB,GAAGjkK,MAAM,CAACC,KAAK,CAAC;MACrCI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QACZitG,WAAW,CAAC,sBAAsB,CAAC;MACvC;IACJ,CAAC,CAAC;IAEF4xJ,iBAAiB,GAAGtgQ,MAAM,CAACC,KAAK,CAAC;MAC7BG,EAAE,EAAE,mBAAmB;MACvBG,IAAI,EAAE,kBAAkB,GAAG08P,cAAc;MACzCv8P,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QACZixJ,gBAAgB,CAAC,mBAAmB,CAAC;MACzC;IACJ,CAAC,CAAC;IAEF6tG,qBAAqB,GAAGvgQ,MAAM,CAACC,KAAK,CAAC;MACjCG,EAAE,EAAE,uBAAuB;MAC3BG,IAAI,EAAE,wBAAwB,GAAGk9P,kBAAkB;MACnD/8P,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE;IAChB,CAAC,CAAC;IAEFkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvCgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAEtCugQ,mBAAmB,GAAGt9P,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnD+8P,mBAAmB,CAACzgQ,SAAS,CAACE,GAAG,CAAC,6BAA6B,CAAC;IAChEugQ,mBAAmB,CAAC7/P,WAAW,CAAC8iQ,eAAe,CAAC;IAChDh0N,OAAO,CAAC9uC,WAAW,CAAC6/P,mBAAmB,CAAC;IAExCC,2BAA2B,GAAGv9P,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3Dg9P,2BAA2B,CAAC1gQ,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACnEwgQ,2BAA2B,CAAC9/P,WAAW,CAAC+iQ,uBAAuB,CAAC;IAChEjD,2BAA2B,CAAC9/P,WAAW,CAACgjQ,4BAA4B,CAAC;IACrEl0N,OAAO,CAAC9uC,WAAW,CAAC8/P,2BAA2B,CAAC;IAEhDz8F,wBAAwB,GAAG9gK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACxDugK,wBAAwB,CAACjkK,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAChE+jK,wBAAwB,CAACrjK,WAAW,CAAC2mK,oBAAoB,CAAC;IAC1D,IAAKh2J,CAAC,CAACC,OAAO,CAACoyC,aAAa,IAAI,IAAI,IAAIryC,CAAC,CAAC6kG,SAAS,KAAK,OAAO,IACvD7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,IAC9E7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,mBAAoB,IACjF7kG,CAAC,CAACC,OAAO,CAAC4hC,kBAAkB,KAAK,IAAI,IAAI7hC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IACvE7kG,CAAC,CAACC,OAAO,CAACu0C,kBAAkB,KAAK,IAAI,IAAIx0C,CAAC,CAAC6kG,SAAS,KAAK,YAAa,IACtE7kG,CAAC,CAACC,OAAO,CAAC60C,WAAW,KAAK,IAAI,IAAI90C,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAACkxC,YAAY,KAAK,IAAI,IAAInxC,CAAC,CAAC6kG,SAAS,KAAK,MAAO,IAC1D7kG,CAAC,CAACC,OAAO,CAACqvC,cAAc,KAAK,IAAI,IAAItvC,CAAC,CAAC6kG,SAAS,KAAK,QAAS,IAC9D7kG,CAAC,CAACC,OAAO,CAACwjC,uBAAuB,KAAK,IAAI,IAAIzjC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IACzE7kG,CAAC,CAACC,OAAO,CAACuxC,6BAA6B,KAAK,IAAI,IAAIxxC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IAClF7kG,CAAC,CAACC,OAAO,CAACqkC,gBAAgB,KAAK,IAAI,IAAItkC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IAClE7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IACjF7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,eAAgB,IAC9E7kG,CAAC,CAACC,OAAO,CAAC6uC,wBAAwB,KAAK,IAAI,IAAI9uC,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IAClF7kG,CAAC,CAACC,OAAO,CAAC0yC,WAAW,KAAK,IAAI,IAAI3yC,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAAC+tC,mBAAmB,KAAK,IAAI,IAAIhuC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IACtE7kG,CAAC,CAACC,OAAO,CAAC8jC,4BAA4B,KAAK,IAAI,IAAI/jC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IAC/E7kG,CAAC,CAACC,OAAO,CAAC4xC,sBAAsB,KAAK,IAAI,IAAI7xC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,EAAE,CAAE,CAAC,MACtF;MACD6tD,wBAAwB,CAACrjK,WAAW,CAAC4mK,yBAAyB,CAAC;IACnE;IAEA93H,OAAO,CAAC9uC,WAAW,CAACqjK,wBAAwB,CAAC;IAE7C,IAAI1yJ,CAAC,CAACC,OAAO,CAACC,eAAe,IAAI,YAAY,KAAKF,CAAC,CAAC6kG,SAAS,KAAK,QAAQ,IAAI7kG,CAAC,CAAC6kG,SAAS,KAAK,WAAW,CAAC,EAAE;MACxGuqJ,qBAAqB,GAAGx9P,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACrDi9P,qBAAqB,CAAC3gQ,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;MAC7DygQ,qBAAqB,CAAC//P,WAAW,CAACijQ,iBAAiB,CAAC;MACpDn0N,OAAO,CAAC9uC,WAAW,CAAC+/P,qBAAqB,CAAC;IAC9C;IAEAC,yBAAyB,GAAGz9P,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzDk9P,yBAAyB,CAAC5gQ,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACjE0gQ,yBAAyB,CAAChgQ,WAAW,CAACkjQ,qBAAqB,CAAC;IAC5Dp0N,OAAO,CAAC9uC,WAAW,CAACggQ,yBAAyB,CAAC;EAClD;EAEA,eAAe3uJ,WAAWA,CAACA,WAAW,EAAE;IACpC,IAAIA,WAAW,IAAI,yBAAyB,EAAE;MAC1CmuJ,oBAAoB,GAAG,KAAK;MAC5BC,kBAAkB,GAAG,GAAG;MAExB,IAAK9uP,CAAC,CAACC,OAAO,CAACoyC,aAAa,IAAI,IAAI,IAAIryC,CAAC,CAAC6kG,SAAS,KAAK,OAAO,IACvD7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,IAC9E7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,mBAAoB,IACjF7kG,CAAC,CAACC,OAAO,CAAC4hC,kBAAkB,KAAK,IAAI,IAAI7hC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IACvE7kG,CAAC,CAACC,OAAO,CAACu0C,kBAAkB,KAAK,IAAI,IAAIx0C,CAAC,CAAC6kG,SAAS,KAAK,YAAa,IACtE7kG,CAAC,CAACC,OAAO,CAAC60C,WAAW,KAAK,IAAI,IAAI90C,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAACkxC,YAAY,KAAK,IAAI,IAAInxC,CAAC,CAAC6kG,SAAS,KAAK,MAAO,IAC1D7kG,CAAC,CAACC,OAAO,CAACqvC,cAAc,KAAK,IAAI,IAAItvC,CAAC,CAAC6kG,SAAS,KAAK,QAAS,IAC9D7kG,CAAC,CAACC,OAAO,CAACwjC,uBAAuB,KAAK,IAAI,IAAIzjC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IACzE7kG,CAAC,CAACC,OAAO,CAACuxC,6BAA6B,KAAK,IAAI,IAAIxxC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IAClF7kG,CAAC,CAACC,OAAO,CAACqkC,gBAAgB,KAAK,IAAI,IAAItkC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IAClE7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IACjF7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,eAAgB,IAC9E7kG,CAAC,CAACC,OAAO,CAAC6uC,wBAAwB,KAAK,IAAI,IAAI9uC,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IAClF7kG,CAAC,CAACC,OAAO,CAAC0yC,WAAW,KAAK,IAAI,IAAI3yC,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAAC+tC,mBAAmB,KAAK,IAAI,IAAIhuC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IACtE7kG,CAAC,CAACC,OAAO,CAAC8jC,4BAA4B,KAAK,IAAI,IAAI/jC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IAC/E7kG,CAAC,CAACC,OAAO,CAAC4xC,sBAAsB,KAAK,IAAI,IAAI7xC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,EAAE;QACpF+wD,iBAAiB,GAAG,UAAU;QAC9Bm5F,iBAAiB,GAAG,KAAK;MAC7B,CAAC,MAAM;QACHn5F,iBAAiB,GAAG,UAAU;QAC9Bm5F,iBAAiB,GAAG,KAAK;MAC7B;MAEA5wN,OAAO,CAACn9B,WAAW,CAACmuP,2BAA2B,CAAC;MAChD,MAAMqD,YAAY,GAAG,MAAMC,qBAAqB,CAAC3D,kBAAkB,CAAC;MACpEtB,YAAY,GAAGgF,YAAY;MAC3BxyP,CAAC,CAACC,OAAO,CAAC8pC,gBAAgB,GAAG,CAAC+kN,kBAAkB,EAAED,oBAAoB,CAAC;IAC3E;IACA,IAAInuJ,WAAW,IAAI,sBAAsB,EAAE;MACvCk1D,iBAAiB,GAAG,UAAU;MAC9Bm5F,iBAAiB,GAAG,KAAK;MACzB5wN,OAAO,CAACn9B,WAAW,CAAC0xJ,wBAAwB,CAAC;IACjD;IAEAggG,mBAAmB,CAAC,CAAC;IACrBC,WAAW,CAAC,CAAC;EACjB;EAEA,SAAS5lC,cAAcA,CAAA,EAAG;IACtB,IAAIn4N,UAAU,GAAGmoH,YAAY,GAAGA,YAAY,GAAGz6F,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACnE,IAAIzjB,IAAI,GAAGljB,KAAK,CAACxD,KAAK,CAAC;MACnBU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEoB,UAAU;MACjBvB,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE8uB,IAAI,CAAC8Z,aAAa,CAAC;MAAE,CAAC;IAC5D,CAAC,CAAC;IAEF,OAAOzjB,IAAI;EACf;EACA,SAASi6O,qBAAqBA,CAAA,EAAG;IAC7B,IAAIx1G,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAClC4B,UAAU,EAAE,wBAAwB;MACpCE,KAAK,EAAE,WAAW;MAClBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,OAAO0qJ,gBAAgB;EAC3B;EACA,SAASy1G,kBAAkBA,CAAA,EAAG;IAC1B,IAAIl2F,SAAS,GAAG,KAAK;IACrB,IAAK38J,CAAC,CAACC,OAAO,CAACoyC,aAAa,IAAI,IAAI,IAAIryC,CAAC,CAAC6kG,SAAS,KAAK,OAAO,IACvD7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,IAC9E7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,mBAAoB,IACjF7kG,CAAC,CAACC,OAAO,CAAC4hC,kBAAkB,KAAK,IAAI,IAAI7hC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IACvE7kG,CAAC,CAACC,OAAO,CAACu0C,kBAAkB,KAAK,IAAI,IAAIx0C,CAAC,CAAC6kG,SAAS,KAAK,YAAa,IACtE7kG,CAAC,CAACC,OAAO,CAAC60C,WAAW,KAAK,IAAI,IAAI90C,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAACkxC,YAAY,KAAK,IAAI,IAAInxC,CAAC,CAAC6kG,SAAS,KAAK,MAAO,IAC1D7kG,CAAC,CAACC,OAAO,CAACqvC,cAAc,KAAK,IAAI,IAAItvC,CAAC,CAAC6kG,SAAS,KAAK,QAAS,IAC9D7kG,CAAC,CAACC,OAAO,CAACwjC,uBAAuB,KAAK,IAAI,IAAIzjC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IACzE7kG,CAAC,CAACC,OAAO,CAACuxC,6BAA6B,KAAK,IAAI,IAAIxxC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IAClF7kG,CAAC,CAACC,OAAO,CAACqkC,gBAAgB,KAAK,IAAI,IAAItkC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IAClE7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IACjF7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,eAAgB,IAC9E7kG,CAAC,CAACC,OAAO,CAAC6uC,wBAAwB,KAAK,IAAI,IAAI9uC,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IAClF7kG,CAAC,CAACC,OAAO,CAAC0yC,WAAW,KAAK,IAAI,IAAI3yC,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAAC+tC,mBAAmB,KAAK,IAAI,IAAIhuC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IACtE7kG,CAAC,CAACC,OAAO,CAAC8jC,4BAA4B,KAAK,IAAI,IAAI/jC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IAC/E7kG,CAAC,CAACC,OAAO,CAAC4xC,sBAAsB,KAAK,IAAI,IAAI7xC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,EAAE;MACpF83D,SAAS,GAAG,IAAI;IACpB;IACA,IAAI9K,aAAa,GAAGj+J,QAAQ,CAAC3B,KAAK,CAAC;MAC/B4B,UAAU,EAAE,qBAAqB;MACjCE,KAAK,EAAE,QAAQ;MACfrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE2oK;IACd,CAAC,CAAC;IAEF,OAAO9K,aAAa;EACxB;EACA,SAASihG,mBAAmBA,CAAA,EAAG;IAC3B,IAAIC,cAAc,GAAGn/P,QAAQ,CAAC3B,KAAK,CAAC;MAChC4B,UAAU,EAAE,sBAAsB;MAClCE,KAAK,EAAE,gBAAgB;MACvBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,OAAOqgQ,cAAc;EACzB;EACA,SAASruG,gBAAgBA,CAACjjD,MAAM,EAAE;IAC9B;IACA6sJ,YAAY,GAAG3sP,KAAK,CAAC1P,KAAK,CAAC;MACvBgB,UAAU,EAAE,CAAC,mBAAmB,CAAC;MACjCkP,KAAK,EAAE;IACX,CAAC,CAAC;IACF;IACA6wP,UAAU,GAAGjmC,cAAc,CAAC,CAAC;IAC7BkmC,iBAAiB,GAAGL,qBAAqB,CAAC,CAAC;IAC3CM,cAAc,GAAGL,kBAAkB,CAAC,CAAC;IACrCM,eAAe,GAAGL,mBAAmB,CAAC,CAAC;IACvC;IACAlxJ,SAAS,GAAG5vG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IACFkvG,UAAU,GAAG7vG,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IACF,IAAIwrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACuyG,SAAS,CAAC;IAC9BzjE,OAAO,CAAC9uC,WAAW,CAACwyG,UAAU,CAAC;;IAE/B;IACA,IAAI,CAACmtJ,cAAc,EAAE;MACjB,IAAIvtJ,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,iBAAiB,EAAE6sJ,YAAY,CAACj/P,WAAW,CAAC2jQ,UAAU,CAAC;IAC5F;IACA,IAAIvxJ,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,yBAAyB,EAAE6sJ,YAAY,CAACj/P,WAAW,CAAC4jQ,iBAAiB,CAAC;IACvG,IAAIxxJ,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,sBAAsB,EAAE6sJ,YAAY,CAACj/P,WAAW,CAAC6jQ,cAAc,CAAC;IACjG,IAAIlzP,CAAC,CAACC,OAAO,CAACC,eAAe,IAAI,YAAY,KAAKF,CAAC,CAAC6kG,SAAS,KAAK,QAAQ,IAAI7kG,CAAC,CAAC6kG,SAAS,KAAK,WAAW,CAAC,EAAE;MACxG,IAAIpD,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,mBAAmB,EAAE6sJ,YAAY,CAACj/P,WAAW,CAAC8jQ,eAAe,CAAC;IACnG;IACA7E,YAAY,CAACj/P,WAAW,CAAC8uC,OAAO,CAAC;IAEjCi1N,gBAAgB,CAAC,CAAC;IAElBzxP,KAAK,CAAC9S,IAAI,CAACy/P,YAAY,CAAC;IAExBxwG,wBAAwB,CAAC,CAAC;IAC1Bu1G,qBAAqB,CAAC,CAAC;IACvBC,sBAAsB,CAAC,CAAC;IAExB,IAAI3D,kBAAkB,EAClBsD,iBAAiB,CAACxkQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;EACnD;EACA;EACA,SAASmvJ,wBAAwBA,CAAA,EAAG;IAChC,IAAIlpJ,UAAU,GAAGk6P,kBAAkB,GAAGA,kBAAkB,GAAGxuP,QAAQ,CAACmoI,WAAW,CAAC,QAAQ,CAAC;IACzF,IAAI8qH,cAAc;IAClB,IAAI5+P,IAAI,GAAGgoJ,eAAe,CAAChkJ,GAAG,CAACsX,CAAC,IAAI;MAChC,IAAI5c,UAAU,GAAG,CAAC;QAAEE,GAAG,EAAE,gBAAgB;QAAEC,KAAK,EAAEyc,CAAC,CAACujP;MAAU,CAAC,CAAC;MAEhE,IAAIC,qBAAqB,GAAG5F,wBAAwB,CAACzwP,MAAM,CAACkxH,GAAG,IAAIA,GAAG,CAAColI,MAAM,KAAKzjP,CAAC,CAAC6vF,EAAE,CAAC;MACvF2zJ,qBAAqB,GAAGA,qBAAqB,CAACvkQ,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;MAEvE,IAAI+gB,CAAC,CAAC6vF,EAAE,KAAKlrG,UAAU,EAAE;QACrB2+P,cAAc,GAAGtjP,CAAC,CAACg4B,IAAI;QACvB,IAAIwrN,qBAAqB,EAAE;UACvBrF,kBAAkB,CAAC3/P,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;QACjD,CAAC,MAAM;UACHy/P,kBAAkB,CAAC3/P,SAAS,CAACC,MAAM,CAAC,WAAW,CAAC;QACpD;MACJ;MAEA,IAAI+kQ,qBAAqB,EAAE;QACvBpgQ,UAAU,CAAC2J,IAAI,CAAC;UAAEzJ,GAAG,EAAE,oBAAoB;UAAEC,KAAK,EAAE;QAAO,CAAC,CAAC;MACjE,CAAC,MAAM;QACHH,UAAU,CAAC2J,IAAI,CAAC;UAAEzJ,GAAG,EAAE,oBAAoB;UAAEC,KAAK,EAAE;QAAQ,CAAC,CAAC;MAClE;MAEA,OAAO;QACHpB,EAAE,EAAE6d,CAAC,CAAC6vF,EAAE;QACRtsG,KAAK,EAAEyc,CAAC,CAAC6vF,EAAE;QACXvtG,IAAI,EAAE0d,CAAC,CAACg4B,IAAI;QACZ50C;MACJ,CAAC;IACL,CAAC,CAAC;IACF,IAAIsgQ,MAAM,GAAG;MACTngQ,KAAK,EAAE,GAAG;MACVjB,IAAI,EAAE;IACV,CAAC;IAEDoC,IAAI,CAAC49D,OAAO,CAACohM,MAAM,CAAC;IAEpB//P,QAAQ,CAAC5E,QAAQ,CAACikQ,iBAAiB,EAAEt+P,IAAI,EAAEC,UAAU,CAAC;IAEtDk6P,kBAAkB,GAAGl6P,UAAU;IAC/B,IAAIk6P,kBAAkB,KAAK,GAAG,EAAE;MAC5BD,oBAAoB,GAAG,KAAK;IAChC,CAAC,MAAM;MACHA,oBAAoB,GAAG0E,cAAc;IACzC;EACJ;EACA,SAASF,qBAAqBA,CAAA,EAAG;IAC7B,IAAI/lC,KAAK,GAAGwhC,kBAAkB,KAAK,GAAG,GAAG,GAAG,GAAGA,kBAAkB;IACjE,IAAIl6P,UAAU;IACd,IAAKoL,CAAC,CAACC,OAAO,CAACoyC,aAAa,IAAI,IAAI,IAAIryC,CAAC,CAAC6kG,SAAS,KAAK,OAAO,IACvD7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,IAC9E7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,mBAAoB,IACjF7kG,CAAC,CAACC,OAAO,CAAC4hC,kBAAkB,KAAK,IAAI,IAAI7hC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IACvE7kG,CAAC,CAACC,OAAO,CAACu0C,kBAAkB,KAAK,IAAI,IAAIx0C,CAAC,CAAC6kG,SAAS,KAAK,YAAa,IACtE7kG,CAAC,CAACC,OAAO,CAAC60C,WAAW,KAAK,IAAI,IAAI90C,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAACkxC,YAAY,KAAK,IAAI,IAAInxC,CAAC,CAAC6kG,SAAS,KAAK,MAAO,IAC1D7kG,CAAC,CAACC,OAAO,CAACqvC,cAAc,KAAK,IAAI,IAAItvC,CAAC,CAAC6kG,SAAS,KAAK,QAAS,IAC9D7kG,CAAC,CAACC,OAAO,CAACwjC,uBAAuB,KAAK,IAAI,IAAIzjC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IACzE7kG,CAAC,CAACC,OAAO,CAACuxC,6BAA6B,KAAK,IAAI,IAAIxxC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IAClF7kG,CAAC,CAACC,OAAO,CAACqkC,gBAAgB,KAAK,IAAI,IAAItkC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IAClE7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IACjF7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,eAAgB,IAC9E7kG,CAAC,CAACC,OAAO,CAAC6uC,wBAAwB,KAAK,IAAI,IAAI9uC,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IAClF7kG,CAAC,CAACC,OAAO,CAAC0yC,WAAW,KAAK,IAAI,IAAI3yC,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAAC+tC,mBAAmB,KAAK,IAAI,IAAIhuC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IACtE7kG,CAAC,CAACC,OAAO,CAAC8jC,4BAA4B,KAAK,IAAI,IAAI/jC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IAC/E7kG,CAAC,CAACC,OAAO,CAAC4xC,sBAAsB,KAAK,IAAI,IAAI7xC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,EAAE;MACpFjwG,UAAU,GAAG,OAAO04N,KAAK,EAAE;MAC3ByhC,iBAAiB,GAAG,KAAK;IAC7B,CAAC,MAAM;MACHn6P,UAAU,GAAGm6P,iBAAiB,GACxBA,iBAAiB,KAAK,KAAK,GACvB,GAAGA,iBAAiB,IAAIzhC,KAAK,EAAE,GAC/B,GAAGyhC,iBAAiB,IAAI9kN,eAAe,EAAE,GAC7C,EAAE;IACZ;IAEA2sH,YAAY,GAAG,CAAC,CAAC;IAEjB,IAAIjiK,IAAI,GAAG64P,YAAY,CAAC70P,GAAG,CAACsX,CAAC,IAAI;MAC7B;MACA,IAAI,CAAC2mJ,YAAY,CAAC3mJ,CAAC,CAAC4mJ,SAAS,CAAC,EAAE;QAC5BD,YAAY,CAAC3mJ,CAAC,CAAC4mJ,SAAS,CAAC,GAAG;UACxBC,SAAS,EAAE7mJ,CAAC,CAAC4mJ,SAAS;UACtBE,SAAS,EAAE9mJ,CAAC,CAAC+mJ,SAAS;UACtBC,OAAO,EAAEhnJ,CAAC,CAACinJ,OAAO,GAAGjnJ,CAAC,CAACinJ,OAAO,CAACnkJ,KAAK,CAAC,GAAG,CAAC,GAAG9C,CAAC,CAACinJ;QAClD,CAAC;MACL;MAEA,OAAO;QACH1jK,KAAK,EAAE,GAAGyc,CAAC,CAAC4mJ,SAAS,IAAI5mJ,CAAC,CAACknJ,UAAU,EAAE;QACvC5kK,IAAI,EAAE0d,CAAC,CAAC+mJ,SAAS;QACjB3jK,UAAU,EAAE,CAAC;UAAEE,GAAG,EAAE,iBAAiB;UAAEC,KAAK,EAAEyc,CAAC,CAACknJ;QAAW,CAAC;MAChE,CAAC;IACL,CAAC,CAAC;IAEFvjK,QAAQ,CAAC5E,QAAQ,CAAC,qBAAqB,EAAE2F,IAAI,EAAEC,UAAU,CAAC;IAE1D,IAAI,CAACghK,iBAAiB,EAAE;MACpBm5F,iBAAiB,GAAGp6P,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;MACjCoiK,iBAAiB,GAAGjhK,IAAI,CAAC,CAAC,CAAC,CAACpC,IAAI;MAChC03C,eAAe,GAAGt1C,IAAI,CAAC,CAAC,CAAC,CAACtB,UAAU,CAAC,CAAC,CAAC,CAACG,KAAK;IACjD;EACJ;EAEA,SAAS8/P,sBAAsBA,CAAA,EAAG;IAC9B,MAAMM,kBAAkB,GAAI,CACxB;MAAExhQ,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,KAAK;MAAEjB,IAAI,EAAE;IAAM,CAAC,EACpC;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,IAAI;MAAEjB,IAAI,EAAE;IAAK,CAAC,CACpC;IACFqB,QAAQ,CAAC5E,QAAQ,CAAC,sBAAsB,EAAE4kQ,kBAAkB,EAAE3E,cAAc,CAAC;EACjF;EACA;EACA,SAASmE,gBAAgBA,CAAA,EAAG;IACxB,IAAIS,OAAO;IACX,IAAIC,eAAe;IACnB,IAAIC,aAAa;IACjB,IAAIC,YAAY;IAChB,IAAIC,UAAU;IACd,IAAIC,YAAY;IAChB,IAAIC,eAAe;IAEnB,IAAIrE,qBAAqB;IAEzBkD,UAAU,CAACjhQ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC3CskQ,OAAO,GAAG92I,YAAY;MACtBA,YAAY,GAAGxtH,KAAK,CAACC,MAAM,CAACgE,KAAK;IACrC,CAAC,CAAC;IACFy/P,iBAAiB,CAAClhQ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI6kQ,qBAAqB,CAAC7kQ,KAAK,CAAC,CAAC;IACnF,eAAe6kQ,qBAAqBA,CAAC7kQ,KAAK,EAAE;MACxC,IAAIogQ,kBAAkB,EAClB;MACJ,MAAMv7P,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACvE0/P,aAAa,GAAGjF,kBAAkB;MAClCgF,eAAe,GAAGjF,oBAAoB;MACtCC,kBAAkB,GAAG16P,cAAc,CAACZ,KAAK;MACzCq7P,oBAAoB,GAAGz6P,cAAc,CAACrF,SAAS;MAC/CiR,CAAC,CAACC,OAAO,CAAC8pC,gBAAgB,GAAG,CAAC+kN,kBAAkB,EAAED,oBAAoB,CAAC;MACvE6D,mBAAmB,CAAC,CAAC;MACrB2B,sBAAsB,CAAC,CAAC;MAExB,MAAMC,aAAa,GAAGlgQ,cAAc,CAAC3E,OAAO,CAAC8kQ,aAAa,KAAK,MAAM,GAAG,IAAI,GAAG,KAAK;MACpFzE,qBAAqB,GAAGwE,aAAa;MAErC,MAAM9B,YAAY,GAAG,MAAMC,qBAAqB,CAAC3D,kBAAkB,CAAC;MAEpEqF,eAAe,GAAG3G,YAAY;MAC9ByG,UAAU,GAAGhqN,eAAe;MAC5B+pN,YAAY,GAAGjF,iBAAiB;MAChCmF,YAAY,GAAGt+F,iBAAiB;MAEhC43F,YAAY,GAAGgF,YAAY;MAC3BvoN,eAAe,GAAGuoN,YAAY,CAAC,CAAC,CAAC,CAACr7F,UAAU;MAC5C43F,iBAAiB,GAAGyD,YAAY,CAAC,CAAC,CAAC,CAAC37F,SAAS;MAC7C;MACA,IAAK72J,CAAC,CAACC,OAAO,CAACoyC,aAAa,IAAI,IAAI,IAAIryC,CAAC,CAAC6kG,SAAS,KAAK,OAAO,IACvD7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,IAC9E7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,mBAAoB,IACjF7kG,CAAC,CAACC,OAAO,CAAC4hC,kBAAkB,KAAK,IAAI,IAAI7hC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IACvE7kG,CAAC,CAACC,OAAO,CAACu0C,kBAAkB,KAAK,IAAI,IAAIx0C,CAAC,CAAC6kG,SAAS,KAAK,YAAa,IACtE7kG,CAAC,CAACC,OAAO,CAAC60C,WAAW,KAAK,IAAI,IAAI90C,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAACkxC,YAAY,KAAK,IAAI,IAAInxC,CAAC,CAAC6kG,SAAS,KAAK,MAAO,IAC1D7kG,CAAC,CAACC,OAAO,CAACqvC,cAAc,KAAK,IAAI,IAAItvC,CAAC,CAAC6kG,SAAS,KAAK,QAAS,IAC9D7kG,CAAC,CAACC,OAAO,CAACwjC,uBAAuB,KAAK,IAAI,IAAIzjC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IACzE7kG,CAAC,CAACC,OAAO,CAACuxC,6BAA6B,KAAK,IAAI,IAAIxxC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IAClF7kG,CAAC,CAACC,OAAO,CAACqkC,gBAAgB,KAAK,IAAI,IAAItkC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IAClE7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IACjF7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,eAAgB,IAC9E7kG,CAAC,CAACC,OAAO,CAAC6uC,wBAAwB,KAAK,IAAI,IAAI9uC,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IAClF7kG,CAAC,CAACC,OAAO,CAAC0yC,WAAW,KAAK,IAAI,IAAI3yC,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAAC+tC,mBAAmB,KAAK,IAAI,IAAIhuC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IACtE7kG,CAAC,CAACC,OAAO,CAAC8jC,4BAA4B,KAAK,IAAI,IAAI/jC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IAC/E7kG,CAAC,CAACC,OAAO,CAAC4xC,sBAAsB,KAAK,IAAI,IAAI7xC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,EAAE;QACpF+wD,iBAAiB,GAAG,UAAU;MAClC,CAAC,MAAM;QACHA,iBAAiB,GAAG48F,YAAY,CAAC,CAAC,CAAC,CAACx7F,SAAS;MACjD;MACA;MACAq8F,qBAAqB,CAAC,CAAC;IAC3B;IACAH,cAAc,CAACnhQ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC/C,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE4/P,UAAU,GAAGhqN,eAAe;MAC5B+pN,YAAY,GAAGjF,iBAAiB;MAChCmF,YAAY,GAAGt+F,iBAAiB;MAEhCm5F,iBAAiB,GAAG36P,cAAc,CAACZ,KAAK,CAACuf,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACtDk3B,eAAe,GAAG71C,cAAc,CAAC3E,OAAO,CAACkuK,UAAU;MACnD/H,iBAAiB,GAAGxhK,cAAc,CAACrF,SAAS;IAChD,CAAC,CAAC;IACFokQ,eAAe,CAACphQ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE46P,cAAc,GAAG76P,cAAc,CAACZ,KAAK;IACzC,CAAC,CAAC;IACFouG,SAAS,CAAC7vG,gBAAgB,CAAC,OAAO,EAAE,YAAY;MAC5C4P,KAAK,CAAC/S,IAAI,CAAC0/P,YAAY,CAAC;MACxBqE,WAAW,CAAC,CAAC;IACjB,CAAC,CAAC;IACF9wJ,UAAU,CAAC9vG,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACvC4P,KAAK,CAAC/S,IAAI,CAAC0/P,YAAY,CAAC;MAExB,IAAIuF,OAAO,EAAE92I,YAAY,GAAG82I,OAAO;MACnC,IAAIE,aAAa,EAAEjF,kBAAkB,GAAGiF,aAAa;MACrD,IAAID,eAAe,EAAEjF,oBAAoB,GAAGiF,eAAe;MAC3D,IAAIG,UAAU,EAAEhqN,eAAe,GAAGgqN,UAAU;MAC5C,IAAID,YAAY,EAAEjF,iBAAiB,GAAGiF,YAAY;MAClD,IAAIE,YAAY,EAAEt+F,iBAAiB,GAAGs+F,YAAY;MAClD,IAAIC,eAAe,EAAE3G,YAAY,GAAG2G,eAAe;IACvD,CAAC,CAAC;EACN;EAEA,SAASK,mBAAmBA,CAAA,EAAG;IAC3B,IAAIz3I,YAAY,KAAK,EAAE,EAAE;MACrBA,YAAY,GAAGz6F,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACvC;IACA,IAAI9T,SAAS,GAAGy0F,YAAY,CAAChqG,KAAK,CAAC,GAAG,CAAC;IACvCi1L,YAAY,GAAG,GAAG1lL,IAAI,CAAC5B,WAAW,CAAC4H,SAAS,CAAC,CAAC,CAAC,CAAC,IAAIhG,IAAI,CAAC5B,WAAW,CAAC4H,SAAS,CAAC,CAAC,CAAC,CAAC,IAAIA,SAAS,CAAC,CAAC,CAAC,CAACnqB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAEhH,IAAIvM,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAClDjD,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,CAAC9F,SAAS,GAAG,QAAQ,GAAGi5M,YAAY;IAElF,IAAI6mD,oBAAoB,KAAK,GAAG,IAAIA,oBAAoB,KAAK,KAAK,EAAE;MAChE1wN,OAAO,CAAC9uC,WAAW,CAAC8/P,2BAA2B,CAAC;MAChDhxN,OAAO,CAACn9B,WAAW,CAACmuP,2BAA2B,CAAC;IACpD,CAAC,MAAM;MACHhxN,OAAO,CAAC9uC,WAAW,CAAC8/P,2BAA2B,CAAC;MAChDv9P,QAAQ,CAACiD,cAAc,CAAC,yBAAyB,CAAC,CAAC9F,SAAS,GAAG,YAAY,GAAG8/P,oBAAoB;IACtG;IAEA,IAAIj5F,iBAAiB,KAAK,GAAG,IAAIA,iBAAiB,KAAK,UAAU,EAAE;MAC/Dz3H,OAAO,CAAC9uC,WAAW,CAACqjK,wBAAwB,CAAC;MAC7Cv0H,OAAO,CAACn9B,WAAW,CAAC0xJ,wBAAwB,CAAC;IACjD,CAAC,MAAM;MACHv0H,OAAO,CAAC9uC,WAAW,CAACqjK,wBAAwB,CAAC;MAC7C9gK,QAAQ,CAACiD,cAAc,CAAC,sBAAsB,CAAC,CAAC9F,SAAS,GAAG,SAAS,GAAG6mK,iBAAiB;IAC7F;IACA,IAAIhkK,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC,IAAI,IAAI,EACxDjD,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC,CAAC9F,SAAS,GAAG,wBAAwB,GAAG0gQ,kBAAkB;IAE9G,IAAIzvP,CAAC,CAACC,OAAO,CAACC,eAAe,IAAI,YAAY,KAAKF,CAAC,CAAC6kG,SAAS,KAAK,QAAQ,IAAI7kG,CAAC,CAAC6kG,SAAS,KAAK,WAAW,CAAC,EAAE;MACxG1mE,OAAO,CAAC9uC,WAAW,CAAC+/P,qBAAqB,CAAC;MAC1C,IAAIx9P,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC,IAAI,IAAI,EACpDjD,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC,CAAC9F,SAAS,GAAG,kBAAkB,GAAGkgQ,cAAc;IACpG;IAEA,IAAI,CAACK,oBAAoB,EAAE;MACvBmF,YAAY,CAACC,+BAA+B,CAAC5F,kBAAkB,CAAC;IACpE;IAEA,IAAIA,kBAAkB,KAAK,KAAK,EAAE;MAC9B,IAAIxuP,QAAQ,CAAC+2J,oBAAoB,CAAC,QAAQ,CAAC,EAAE/2J,QAAQ,CAACooI,WAAW,CAAC,QAAQ,EAAEomH,kBAAkB,CAAC;IACnG;IAEA,IAAI9uP,CAAC,CAAC6kG,SAAS,KAAK,kBAAkB,IAAI7kG,CAAC,CAAC6kG,SAAS,KAAK,eAAe,EAAE;MACvE,IAAIvkG,QAAQ,CAAC+2J,oBAAoB,CAAC,iBAAiB,CAAC,EAAE/2J,QAAQ,CAACooI,WAAW,CAAC,iBAAiB,EAAEomH,kBAAkB,CAAC;IACrH;EACJ;EACA,eAAe6D,WAAWA,CAAA,EAAG;IACzBgC,YAAY,CAAC7iQ,IAAI,CAAC07P,YAAY,CAAC;IAE/B,IAAIsC,qBAAqB,EAAE;MACvB1B,kBAAkB,CAAC3/P,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;IACjD,CAAC,MAAM;MACHy/P,kBAAkB,CAAC3/P,SAAS,CAACC,MAAM,CAAC,WAAW,CAAC;IACpD;IAEA,MAAMmjQ,WAAW,GAAG,CAAC,GAAG9D,WAAW,CAAC91P,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACtE45P,WAAW,CAAC1iQ,OAAO,CAAC2iQ,EAAE,IAAI/D,WAAW,CAAC/sP,WAAW,CAAC8wP,EAAE,CAAC,CAAC;IAEtD9D,cAAc,GAAGzqP,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,4CAA4C,CAAC;IACnFuzP,WAAW,CAAC3sP,YAAY,CAAC4sP,cAAc,EAAED,WAAW,CAACrjH,SAAS,CAAC;IAC/D+kH,kBAAkB,GAAG,CAAC;IACtB,MAAMe,sBAAsB,CAAC,IAAI,CAAC;IAClC;IACA;IACA;IACA,IAAIxwP,CAAC,CAAC6kG,SAAS,KAAK,WAAW,EAAE;MAC7B,MAAMp0G,aAAa,CAACmkQ,4BAA4B,CAAC,CAAC;IACtD;IACA5C,cAAc,CAAC,CAAC;IAChBwC,mBAAmB,CAAC,CAAC;EACzB;EACA;EACA;EACA,SAASH,sBAAsBA,CAAA,EAAG;IAC9B,IAAIvF,kBAAkB,KAAK,GAAG,IAAID,oBAAoB,KAAK,KAAK,IAAI7uP,CAAC,CAACC,OAAO,CAACkvC,gBAAgB,KAAK,GAAG,EAAE;MACpGi/M,kBAAkB,CAAC3/P,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC5Cy/P,kBAAkB,CAAC3/P,SAAS,CAACC,MAAM,CAAC,WAAW,CAAC;IACpD,CAAC,MAAM;MACH0/P,kBAAkB,CAAC3/P,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACnD;EACJ;EACA,SAASgkQ,mBAAmBA,CAAA,EAAG;IAC3B,IAAImC,SAAS,GAAG70P,CAAC,CAACC,OAAO,CAACivC,gBAAgB,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK;IAEjE,IAAI,CAAC2lN,SAAS,IAAI/F,kBAAkB,KAAK,GAAG,IAAID,oBAAoB,KAAK,KAAK,EAAE;MAC5ER,eAAe,CAAC5/P,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC7C,CAAC,MAAM;MACH0/P,eAAe,CAAC5/P,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAChD;EACJ;EACA,SAASomQ,cAAcA,CAAA,EAAG;IACtB,OAAO9iQ,MAAM,CAACC,KAAK,CAAC;MAChBM,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE;IAChB,CAAC,CAAC;EACN;EACA,SAASulG,cAAcA,CAAA,EAAG;IACtB,OAAOxmG,MAAM,CAACC,KAAK,CAAC;MAChBG,EAAE,EAAE,WAAW;MACfG,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC,WAAW;IAC5B,CAAC,CAAC;EACN;EACA,SAAS8hQ,iBAAiBA,CAAA,EAAG;IACzB,OAAO/iQ,MAAM,CAACC,KAAK,CAAC;MAChBI,IAAI,EAAE,WAAW;MACjBK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE;IAChB,CAAC,CAAC;EACN;EACA,SAAS+hQ,mBAAmBA,CAAA,EAAG;IAC3B,OAAOhjQ,MAAM,CAACC,KAAK,CAAC;MAChBI,IAAI,EAAE,aAAa;MACnBK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE;IAChB,CAAC,CAAC;EACN;EACA,SAASgiQ,qBAAqBA,CAAA,EAAG;IAC7B,IAAIxB,qBAAqB,GACrB5F,wBAAwB,IAAIA,wBAAwB,CAACzwP,MAAM,CAACkxH,GAAG,IAAIA,GAAG,CAAColI,MAAM,KAAK5E,kBAAkB,CAAC;IACzG2E,qBAAqB,GAAGA,qBAAqB,CAACvkQ,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;IAEvE,MAAMgmQ,0BAA0B,GAAG,CAAC,kBAAkB,CAAC;IAEvD,IAAIpG,kBAAkB,KAAK,GAAG,IAAID,oBAAoB,KAAK,KAAK,IAAI7uP,CAAC,CAACC,OAAO,CAACkvC,gBAAgB,KAAK,GAAG,EAAE;MACpG+lN,0BAA0B,CAACl4P,IAAI,CAAC,UAAU,CAAC;IAC/C;IACA,IAAIy2P,qBAAqB,IAAIzzP,CAAC,CAACC,OAAO,CAACkvC,gBAAgB,KAAK,GAAG,EAAE;MAC7D+lN,0BAA0B,CAACl4P,IAAI,CAAC,WAAW,CAAC;IAChD;IAEA,OAAOhL,MAAM,CAACC,KAAK,CAAC;MAChBM,IAAI,EAAE,gBAAgB;MACtBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,MAAM;MACZY,UAAU,EAAEiiQ;IAChB,CAAC,CAAC;EACN;EAEA,SAASC,2BAA2BA,CAAA,EAAG;IACnC,OAAOnjQ,MAAM,CAACC,KAAK,CAAC;MAChBG,EAAE,EAAE,wBAAwB;MAC5BG,IAAI,EAAE,YAAY;MAClBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE;IAChB,CAAC,CAAC;EACN;EACA,SAASmiQ,6BAA6BA,CAAA,EAAG;IACrC,OAAOpjQ,MAAM,CAACC,KAAK,CAAC;MAChBG,EAAE,EAAE,0BAA0B;MAC9BG,IAAI,EAAE,aAAa;MACnBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE;IAChB,CAAC,CAAC;EACN;EACA,SAASoiQ,kBAAkBA,CAAA,EAAG;IAC1B,IAAIR,SAAS,GAAG70P,CAAC,CAACC,OAAO,CAACivC,gBAAgB,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK;IAEjE,OAAOl9C,MAAM,CAACC,KAAK,CAAC;MAChBM,IAAI,EAAE,aAAa;MACnBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,IAAI;MACVY,UAAU,EACN67P,kBAAkB,KAAK,GAAG,IAAID,oBAAoB,KAAK,KAAK,IAAI,CAACgG,SAAS,GACpE,CAAC,eAAe,EAAE,UAAU,CAAC,GAC7B,CAAC,eAAe,CAAC;MAC3BjiQ,MAAM,EAAE;IACZ,CAAC,CAAC;EACN;EACA,SAAS0iQ,oBAAoBA,CAAA,EAAG;IAC5B,OAAOtjQ,MAAM,CAACC,KAAK,CAAC;MAChBM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE;IACV,CAAC,CAAC;EACN;EACA,SAAS8lG,iBAAiBA,CAAA,EAAG;IACzB,IAAIh6D,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAEvCs/P,UAAU,GAAG6G,cAAc,CAAC,CAAC;IAC7B59J,UAAU,GAAGsB,cAAc,CAAC,CAAC;IAC7B01J,cAAc,GAAG6G,iBAAiB,CAAC,CAAC;IACpC5G,gBAAgB,GAAG6G,mBAAmB,CAAC,CAAC;IACxC5G,kBAAkB,GAAG6G,qBAAqB,CAAC,CAAC;IAC5C5G,eAAe,GAAGgH,kBAAkB,CAAC,CAAC;IACtCE,iBAAiB,GAAGD,oBAAoB,CAAC,CAAC;IAE1C1F,mBAAmB,GAAGuF,2BAA2B,CAAC,CAAC;IACnDtF,qBAAqB,GAAGuF,6BAA6B,CAAC,CAAC;IACvDxF,mBAAmB,CAACnhQ,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACpDkhQ,qBAAqB,CAACphQ,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACtD;IACAsoG,WAAW,GAAGrlG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C;IACA8kG,WAAW,CAACxoG,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IACzCwoG,YAAY,GAAGvlG,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC9CglG,YAAY,CAACtkG,YAAY,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC5DokG,WAAW,CAAC5nG,WAAW,CAAC6nG,UAAU,CAAC;IACnCD,WAAW,CAAC5nG,WAAW,CAAC8nG,YAAY,CAAC;IAErC,IAAIm4J,oBAAoB,EAAE;MACtB,IAAI30J,KAAK,GAAG/oG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACzC,IAAIqjQ,KAAK,GAAG5jQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACzCwoG,KAAK,CAAClsG,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAC9B6mQ,KAAK,CAAC/mQ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAC9B;MACAgsG,KAAK,CAACtrG,WAAW,CAAC4nG,WAAW,CAAC;MAC9Bu+J,KAAK,CAACnmQ,WAAW,CAAC4+P,UAAU,CAAC;MAC7BuH,KAAK,CAACnmQ,WAAW,CAAC6+P,cAAc,CAAC;MACjCsH,KAAK,CAACnmQ,WAAW,CAAC8+P,gBAAgB,CAAC;MAEnChwN,OAAO,CAAC9uC,WAAW,CAACsrG,KAAK,CAAC;MAC1Bx8D,OAAO,CAAC9uC,WAAW,CAACmmQ,KAAK,CAAC;IAC9B,CAAC,MAAM;MACH,IAAI76J,KAAK,GAAG/oG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACzC,IAAIqjQ,KAAK,GAAG5jQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACzC,IAAIsjQ,KAAK,GAAG7jQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACzCwoG,KAAK,CAAClsG,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAC9B6mQ,KAAK,CAAC/mQ,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAC9B6mQ,KAAK,CAAC/mQ,SAAS,CAACE,GAAG,CAAC,yBAAyB,CAAC;MAC9C8mQ,KAAK,CAAChnQ,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;MACxC;MACAgsG,KAAK,CAACtrG,WAAW,CAAC4+P,UAAU,CAAC;MAC7BtzJ,KAAK,CAACtrG,WAAW,CAAC4nG,WAAW,CAAC;MAE9Bu+J,KAAK,CAACnmQ,WAAW,CAAC++P,kBAAkB,CAAC;MACrCoH,KAAK,CAACnmQ,WAAW,CAACg/P,eAAe,CAAC;MAClCmH,KAAK,CAACnmQ,WAAW,CAACkmQ,iBAAiB,CAAC;MAEpCE,KAAK,CAACpmQ,WAAW,CAACugQ,mBAAmB,CAAC;MACtC6F,KAAK,CAACpmQ,WAAW,CAACwgQ,qBAAqB,CAAC;MAExC1xN,OAAO,CAAC9uC,WAAW,CAACsrG,KAAK,CAAC;MAC1Bx8D,OAAO,CAAC9uC,WAAW,CAACmmQ,KAAK,CAAC;MAC1Br3N,OAAO,CAAC9uC,WAAW,CAAComQ,KAAK,CAAC;IAC9B;IAEA,IAAIz1P,CAAC,CAACC,OAAO,CAAC+uC,KAAK,IAAIhvC,CAAC,CAACC,OAAO,CAACtQ,YAAY,KAAK,MAAM,EAAE;MACtD,MAAM+lQ,mBAAmB,GAAG1jQ,MAAM,CAACC,KAAK,CAAC;QACrCM,IAAI,EAAE,uBAAuB;QAC7BG,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBc,QAAQ,EAAE,eAAAA,CAAA,EAAkB;UACxBwP,WAAW,CAACpU,IAAI,CAAC,sBAAsB,CAAC;UACxC,MAAM8F,IAAI,GAAG,MAAMmzB,KAAK,CAACu4B,SAAS,CAAC,qCAAqC,EAAE;YAACngD,eAAe,EAAEF,CAAC,CAACC,OAAO,CAACC;UAAe,CAAC,CAAC;UACvH+C,WAAW,CAACI,OAAO,CAAC,iBAAiB,CAAC;UACtC,MAAM,IAAI68C,OAAO,CAACC,OAAO,IAAIrmC,UAAU,CAACqmC,OAAO,EAAE,IAAI,CAAC,CAAC;UACvD,MAAMr9C,mBAAmB,GAAGlR,QAAQ,CAACC,aAAa,CAAC,sBAAsB,CAAC;UAC1EiR,mBAAmB,CAACpQ,KAAK,CAACoK,OAAO,GAAG,MAAM;UAC1CmG,WAAW,CAACrU,IAAI,CAAC,CAAC;QACtB;MACJ,CAAC,CAAC;MAEFuvC,OAAO,CAAC9uC,WAAW,CAACqmQ,mBAAmB,CAAC;IAC5C;IAEA,OAAOv3N,OAAO;EAClB;;EAEA;EACA;EACA,SAASw3N,6BAA6BA,CAAA,EAAG;IACrC,MAAMC,aAAa,GAAG,CAAC,GAAGhkQ,QAAQ,CAACqG,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACrE29P,aAAa,CAACzmQ,OAAO,CAAC+7G,IAAI,IAAI;MAC1B,MAAM94G,EAAE,GAAG84G,IAAI,CAACz7G,OAAO,CAACglD,UAAU;MAClC,MAAMo+E,QAAQ,GAAG3nB,IAAI,CAACr5G,aAAa,CAAC,WAAW,CAAC;MAChDghI,QAAQ,CAAC9jI,SAAS,GAAG;AACjC;AACA,mCAAmCqD,EAAE;AACrC;AACA,UAAU;IACF,CAAC,CAAC;EACN;EACA,SAAS64G,iBAAiBA,CAAC4qJ,YAAY,EAAE;IACrC,MAAMC,KAAK,GAAGD,YAAY,CAACjsB,EAAE,GAAGisB,YAAY,CAACjsB,EAAE,CAACvvN,IAAI,CAAC,CAAC,GAAG,EAAE;IAC3D,MAAM07O,KAAK,GAAGF,YAAY,CAAChsB,EAAE,GAAGgsB,YAAY,CAAChsB,EAAE,CAACxvN,IAAI,CAAC,CAAC,GAAG,EAAE;IAC3D,MAAM27O,KAAK,GAAGH,YAAY,CAACjE,EAAE,GAAGiE,YAAY,CAACjE,EAAE,CAACv3O,IAAI,CAAC,CAAC,GAAG,EAAE;IAC3D,MAAMjoB,EAAE,GAAGyjQ,YAAY,CAACzjQ,EAAE;IAC1B,MAAM6jQ,gBAAgB,GAAGJ,YAAY,CAACK,GAAG;IACzC,MAAMC,eAAe,GAAGN,YAAY,CAACO,IAAI;IACzC,MAAM9B,aAAa,GAAG1G,wBAAwB,IAAIA,wBAAwB,CAACiI,YAAY,CAACzjQ,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK;IAC1G,MAAMu+N,QAAQ,GAAGg9B,eAAe,IAAIA,eAAe,CAACkI,YAAY,CAACzjQ,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK;IACnF,MAAMyY,QAAQ,GAAGknJ,eAAe,IAAIA,eAAe,CAAC30J,MAAM,CAACi5P,EAAE,IAAIA,EAAE,CAACjkQ,EAAE,KAAKyjQ,YAAY,CAACzjQ,EAAE,CAAC;IAC3F,MAAMkkQ,UAAU,GAAGv6J,iBAAiB,IAAIA,iBAAiB,CAAC3+F,MAAM,CAACm9J,EAAE,IAAIA,EAAE,CAACnoK,EAAE,KAAKyjQ,YAAY,CAACzjQ,EAAE,CAAC;IACjG,MAAMmkQ,QAAQ,GAAG/G,mBAAmB,IAAIA,mBAAmB,CAACpyP,MAAM,CAACo5P,GAAG,IAAIA,GAAG,KAAKX,YAAY,CAACzjQ,EAAE,CAAC;IAClG,MAAM+jO,SAAS,GAAGogC,QAAQ,IAAIA,QAAQ,CAACrnQ,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK;IAClE,MAAMunQ,WAAW,GAAGZ,YAAY,CAACa,GAAG,GAAGb,YAAY,CAACa,GAAG,CAAC3jP,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;IAC1E,MAAM4jP,YAAY,GAAGd,YAAY,CAACc,YAAY,GAAGd,YAAY,CAACc,YAAY,GAAG,EAAE;IAE/E,IAAIC,UAAU,GAAG,KAAK;IACtB,IAAI52P,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzC,IAAI21P,YAAY,CAACgB,GAAG,IAAI3gQ,SAAS,IAAI2/P,YAAY,CAACgB,GAAG,IAAI,EAAE,IAAIv0O,IAAI,CAACkY,eAAe,CAACq7N,YAAY,CAACgB,GAAG,CAAC9jP,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIgqG,YAAY,EAAE;QACjI65I,UAAU,GAAG,IAAI;MACrB;IAEJ,CAAC,MAAM,IAAI52P,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MACnD,IAAI21P,YAAY,CAACiB,UAAU,IAAI,GAAG,IAAIjB,YAAY,CAACgB,GAAG,IAAI3gQ,SAAS,IAAI2/P,YAAY,CAACgB,GAAG,IAAI,EAAE,IAAIv0O,IAAI,CAACkY,eAAe,CAACq7N,YAAY,CAACgB,GAAG,CAAC9jP,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIgqG,YAAY,EAAE;QACnK65I,UAAU,GAAG,IAAI;MACrB;IACJ;IACA,IAAIG,SAAS;IACb,IAAI,CAACjxC,kBAAkB,EAAE;MACrBixC,SAAS,GAAG,IAAI;IACpB,CAAC,MAAM,IAAIjxC,kBAAkB,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MACtCixC,SAAS,GAAG,IAAI;IACpB,CAAC,MAAM;MACHA,SAAS,GAAGjxC,kBAAkB,CAAC1oN,MAAM,CAACq3C,UAAU,IAAIA,UAAU,KAAKriD,EAAE,CAAC;MACtE2kQ,SAAS,GAAGA,SAAS,CAAC7nQ,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI;IACrD;IAEA,MAAMy9G,YAAY,GAAG/6G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDw6G,YAAY,CAACl+G,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAC1Cg+G,YAAY,CAAC95G,YAAY,CAAC,kBAAkB,EAAET,EAAE,CAAC;IACjDu6G,YAAY,CAAC95G,YAAY,CAAC,UAAU,EAAE4jQ,WAAW,CAAC;IAElD,IAAIR,gBAAgB,EAAE;MAClBtpJ,YAAY,CAAC95G,YAAY,CAAC,wBAAwB,EAAEojQ,gBAAgB,CAAC;IACzE;IACA,IAAIE,eAAe,IAAIn2P,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MAC5DysG,YAAY,CAAC95G,YAAY,CAAC,uBAAuB,EAAEsjQ,eAAe,CAAC;IACvE;IACA,IAAI7B,aAAa,EAAE;MACf3nJ,YAAY,CAAC95G,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACxD,CAAC,MAAM;MACH85G,YAAY,CAAC95G,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACzD;IAEA,IAAIyjQ,UAAU,CAACpnQ,MAAM,GAAG,CAAC,IAAIogQ,oBAAoB,EAAE;MAC/C3iJ,YAAY,CAACl+G,SAAS,CAACE,GAAG,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAClE;IAGA,IAAKkc,QAAQ,IAAIA,QAAQ,CAAC3b,MAAM,IAAI,CAAC,IAAK,CAAC6nQ,SAAS,EAAE;MAClD,IAAI/2P,CAAC,CAAC6kG,SAAS,KAAK,UAAU,EAAE;QAC5B8H,YAAY,CAACl+G,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACzCi+G,YAAY,CAACl+G,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;MACnD,CAAC,MAAM;QACHg+G,YAAY,CAACl+G,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC1C;IACJ,CAAC,MAAM;MACHg+G,YAAY,CAACl+G,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC7C;IAEA,MAAMmkI,QAAQ,GAAGjhI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9C,MAAMkwO,OAAO,GAAGzwO,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C,MAAM6kQ,UAAU,GAAGplQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD,MAAM2C,CAAC,GAAG,IAAI6T,IAAI,CAAC,CAAC;IACpB,MAAMwd,IAAI,GAAGrxB,CAAC,CAACkmB,OAAO,CAAC,CAAC;IACxB63G,QAAQ,CAACpkI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAClC,IAAIioQ,UAAU,EACVv0B,OAAO,CAAC5zO,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAEzC0zO,OAAO,CAAC5zO,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACpCqoQ,UAAU,CAACvoQ,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACjCkkI,QAAQ,CAAC9jI,SAAS,GAAG,IAAI;IACzB8jI,QAAQ,CAAC9jI,SAAS,GAAG;AAC7B;AACA,kCAAkCqD,EAAE,QAAQ+zB,IAAI;AAChD;AACA,SAAS;IAED,IAAInmB,CAAC,CAAC6kG,SAAS,KAAK,MAAM,EACtBw9H,OAAO,CAACtzO,SAAS,GAAG;AAChC;AACA,+BAA+BgnQ,KAAK;AACpC,8BAA8BD,KAAK,IAAIE,KAAK,0EAA0EW,YAAY;AAClI,YAAY,CAAC,KAEDt0B,OAAO,CAACtzO,SAAS,GAAG;AAChC;AACA,+BAA+BgnQ,KAAK;AACpC,8BAA8BD,KAAK,IAAIE,KAAK;AAC5C,YAAY;IACJgB,UAAU,CAACjoQ,SAAS,GAAG;AAC/B,QAAQ4hO,QAAQ,GAAG,mCAAmC,GAAG,EAAE;AAC3D,QAAQ,CAAC2+B,oBAAoB,GAAIgF,aAAa,GAAG,uBAAuB9hQ,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,GAAI,EAAE;AACzG,GAAG;IAEKm6G,YAAY,CAACt9G,WAAW,CAACwjI,QAAQ,CAAC;IAClClmB,YAAY,CAACt9G,WAAW,CAACgzO,OAAO,CAAC;IACjC11H,YAAY,CAACt9G,WAAW,CAAC2nQ,UAAU,CAAC;IAEpC,IAAI7gC,SAAS,EAAE;MACX,IAAI8gC,KAAK,GAAGtqJ,YAAY,CAAC96G,aAAa,CAAC,QAAQ,CAAC;MAChD,IAAIqlQ,QAAQ,GAAGD,KAAK,CAACplQ,aAAa,CAAC,YAAY,CAAC;MAChD,IAAIslQ,OAAO,GAAGvlQ,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;MACzCglQ,OAAO,CAAC1oQ,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;MAClCwoQ,OAAO,CAACpoQ,SAAS,GAAGyD,KAAK,CAAC,OAAO,CAAC;MAClC,IAAIykQ,KAAK,EAAE;QACP,IAAI,CAACC,QAAQ,EAAE;UACXD,KAAK,CAAC5nQ,WAAW,CAAC8nQ,OAAO,CAAC;QAC9B;MACJ;IACJ;IAEA,OAAOxqJ,YAAY;EACvB;;EAEA;EACA;EACA,SAAS0wD,mCAAmCA,CAAC+5F,UAAU,EAAE;IACrD,MAAMC,oBAAoB,GAAG,CAAC,GAAGv2P,GAAG,CAACiB,YAAY,CAACu1P,QAAQ,CAAC;IAC3DD,oBAAoB,CAACloQ,OAAO,CAACm4G,KAAK,IAAI;MAClC,IAAI8vJ,UAAU,KAAK,MAAM,EAAE;QACvB9vJ,KAAK,CAAC50G,KAAK,CAACoK,OAAO,GAAG,MAAM;QAC5B;MACJ;MACAwqG,KAAK,CAACnvG,eAAe,CAAC,OAAO,CAAC;IAClC,CAAC,CAAC;EACN;EACA,SAASo/P,iBAAiBA,CAACpjQ,CAAC,EAAE;IAC1B+5P,cAAc,CAACz/P,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC3Cy/P,gBAAgB,CAAC1/P,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAE7C,IAAI+/P,eAAe,EAAEA,eAAe,CAAChgQ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAEjEoS,GAAG,CAACiB,YAAY,CAACf,WAAW,CAAC0tP,iBAAiB,CAAC;IAC/CrxF,mCAAmC,CAAC,MAAM,CAAC;IAE3C,IAAIlpK,CAAC,CAAC3E,MAAM,KAAKm/P,gBAAgB,EAAE;MAC/BjxJ,OAAO,CAACsyJ,6BAA6B,CAAC,CAAC;IAC3C;EACJ;EACA,SAASwH,aAAaA,CAAA,EAAG;IACrB7I,gBAAgB,GAAG38P,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,MAAM;MACZF,IAAI,EAAE,WAAW;MACjBK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBU,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,iBAAiB;QAAEC,KAAK,EAAE;MAAiB,CAAC,CAAC;MACjEP,UAAU,EAAE,CAAC,UAAU,CAAC;MACxBQ,QAAQ,EAAE8jQ;IACd,CAAC,CAAC;IACF3I,kBAAkB,GAAG58P,MAAM,CAACC,KAAK,CAAC;MAC9BM,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,OAAO;MACbK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBU,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,iBAAiB;QAAEC,KAAK,EAAE;MAAmB,CAAC,CAAC;MACnEC,QAAQ,EAAE8jQ;IACd,CAAC,CAAC;IAEFlpQ,UAAU,CAACW,QAAQ,CAAC,CAAC2/P,gBAAgB,EAAEC,kBAAkB,CAAC,CAAC;EAC/D;EACA,SAAS6I,qBAAqBA,CAACC,aAAa,EAAE;IAC1C,QAAQ13P,CAAC,CAAC6kG,SAAS;MACf,KAAK,kBAAkB;QAAE;UACrB,IAAI,CAAC6yJ,aAAa,EAAE,OAAO,0BAA0B;UACrD,OAAO,6FAA6FA,aAAa,EAAE;UACnH;QACJ;MACA,KAAK,WAAW;QAAE;UACd,IAAI,CAACA,aAAa,EAAE,OAAO,0BAA0B;UACrD,OAAO,0FAA0FA,aAAa,EAAE;UAChH;QACJ;MACA,KAAK,UAAU;QAAE;UACb,IAAI,CAACA,aAAa,EAAE,OAAO,0BAA0B;UACrD,OAAO,wFAAwFA,aAAa,EAAE;UAC9G;QACJ;MACA,KAAK,MAAM;QAAE;UACT,OAAO,yBAAyB;QACpC;MACA;QAAS;UACL,IAAI,CAACA,aAAa,EAAE,OAAO,0BAA0B;UACrD,OAAO,+DAA+DA,aAAa,EAAE;UACrF;QACJ;IACJ;EACJ;EACA,SAASC,oBAAoBA,CAACC,YAAY,EAAE;IACxC,MAAMC,cAAc,GAAGjmQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD0lQ,cAAc,CAACppQ,SAAS,CAACE,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC;IAC9DkpQ,cAAc,CAAChlQ,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC;IAErD,IAAIgT,QAAQ,GAAGjU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC3C0T,QAAQ,CAACpX,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;IAC5CkX,QAAQ,CAAC9W,SAAS,GAAG0oQ,qBAAqB,CAAC,CAAC;;IAE5C;IACAG,YAAY,CAACx2P,YAAY,CAACyE,QAAQ,EAAE+xP,YAAY,CAACvxP,UAAU,CAACyX,WAAW,CAAC;IACxE+5O,cAAc,CAACxoQ,WAAW,CAACuoQ,YAAY,CAAC;IAExC,OAAOC,cAAc;EACzB;EACA,SAASC,mBAAmBA,CAACF,YAAY,EAAE;IACvC,IAAInJ,eAAe,EAAEA,eAAe,CAAChgQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAE9D,MAAMkB,aAAa,GAAGiR,GAAG,CAACiB,YAAY,CAACtS,OAAO,CAACI,aAAa;IAC5D;IACA;;IAEAwtK,mCAAmC,CAAC,MAAM,CAAC;IAE3CqxF,iBAAiB,GAAGiJ,oBAAoB,CAACC,YAAY,CAAC;IACtD92P,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACq/P,iBAAiB,CAAC;IAC/C8I,aAAa,CAAC,CAAC;IACf,IACIx3P,CAAC,CAAC6kG,SAAS,KAAK,UAAU,IAC1B7kG,CAAC,CAAC6kG,SAAS,KAAK,MAAM,IACtB7kG,CAAC,CAAC6kG,SAAS,KAAK,kBAAkB,IAClC7kG,CAAC,CAAC6kG,SAAS,KAAK,eAAe,IAC/B7kG,CAAC,CAAC6kG,SAAS,KAAK,YAAY,IAC5B7kG,CAAC,CAAC6kG,SAAS,KAAK,KAAK,IACrB7kG,CAAC,CAAC6kG,SAAS,KAAK,OAAO,IACvB7kG,CAAC,CAAC6kG,SAAS,KAAK,OAAO,IACvB7kG,CAAC,CAAC6kG,SAAS,KAAK,mBAAmB,IACnCh1G,aAAa,KAAK,kBAAkB,IACpCA,aAAa,KAAK,eAAe,IACjCmQ,CAAC,CAAC6kG,SAAS,KAAK,gBAAgB,EAClC;MACEqpJ,cAAc,CAACz/P,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACxCw/P,gBAAgB,CAAC1/P,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC1CggQ,gBAAgB,CAACj8P,KAAK,CAACoK,OAAO,GAAG,MAAM;MACvC8xP,kBAAkB,CAACl8P,KAAK,CAACoK,OAAO,GAAG,MAAM;IAC7C;EACJ;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,eAAeghG,cAAcA,CAAC43G,YAAY,EAAEqiD,aAAa,EAAE;IACvDnH,mBAAmB,CAAC,CAAC;IACrB;IACA7zI,YAAY,GAAGz6F,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACnC,IAAIs5K,YAAY,EAAE;MACd,MAAM;QAAExyJ,UAAU;QAAEC;MAAa,CAAC,GAAGuyJ,YAAY;MACjD,IAAIvyJ,YAAY,IAAID,UAAU,EAAE;QAC5B2rM,oBAAoB,GAAG1rM,YAAY;QACnC2rM,kBAAkB,GAAG5rM,UAAU;MACnC,CAAC,MAAM,IAAIC,YAAY,KAAK,EAAE,EAAE;QAC5B,IAAID,UAAU,KAAK,GAAG,EAAE;UACpB2rM,oBAAoB,GAAG,KAAK;UAC5BC,kBAAkB,GAAG5rM,UAAU;QACnC,CAAC,MAAM;UACHy5F,eAAe,GAAGA,eAAe,KAAK,MAAMq7G,sBAAsB,CAAC,CAAC,CAAC;UACrE,MAAMzG,mBAAmB,GAAG50G,eAAe,CAACv/I,MAAM,CAACkxH,GAAG,IAAIprE,UAAU,KAAKorE,GAAG,CAACxuB,EAAE,CAAC;UAChF+uJ,oBAAoB,GAAG0C,mBAAmB,CAAC,CAAC,CAAC,CAACtpN,IAAI;UAClD6mN,kBAAkB,GAAG5rM,UAAU;QACnC;MACJ;MACA;MACAjZ,eAAe,GAAG6kN,kBAAkB;MACpCC,iBAAiB,GAAG,KAAK;MACzBn5F,iBAAiB,GAAG,UAAU;IAClC;IACA64F,eAAe,GAAGz8P,MAAM,CAACC,KAAK,CAAC;MAC3BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBP,EAAE,EAAE,aAAa;MACjB;MACAa,UAAU,EAAE,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;MACpDQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IACIuM,CAAC,CAAC6kG,SAAS,KAAK,kBAAkB,IAClC7kG,CAAC,CAAC6kG,SAAS,KAAK,eAAe,IAC/B7kG,CAAC,CAAC6kG,SAAS,KAAK,YAAY,IAC5B7kG,CAAC,CAAC6kG,SAAS,KAAK,KAAK,IACrB7kG,CAAC,CAAC6kG,SAAS,KAAK,mBAAmB,IACnC7kG,CAAC,CAAC6kG,SAAS,KAAK,KAAK,EACvB;UACEujC,sBAAsB,CAAC,CAAC;UACxBC,oBAAoB,CAAC,CAAC;QAC1B;QACAomH,eAAe,CAAChgQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACzC,MAAMm2G,cAAc,CAACizJ,aAAa,CAAC;QACnCtJ,eAAe,CAAChgQ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAChD;IACJ,CAAC,CAAC;IAEFkD,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAACo/P,eAAe,CAAC;IAC1C3tP,GAAG,CAACkoB,eAAe,CAAC,CAAC;EACzB;EAEA,eAAe87E,cAAcA,CAAA,EAK3B;IAAA,IAJEizJ,aAAa,GAAA5+P,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG;MACZwvI,QAAQ,EAAE,KAAK;MACfsvH,gBAAgB,EAAE;IACtB,CAAC;IAED,MAAML,YAAY,GAAG,MAAMM,WAAW,CAAC;MACnCC,UAAU,EAAE,IAAI;MAChBnJ,cAAc,EAAE+I,aAAa,CAACpvH,QAAQ,GAAG,IAAI,GAAG,KAAK;MACrDyvH,gBAAgB,EAAEL,aAAa,CAACE,gBAAgB,GAAG,IAAI,GAAG;IAC9D,CAAC,CAAC;IACFH,mBAAmB,CAACF,YAAY,CAAC;IACjCnI,kBAAkB,GAAG,CAAC;IACtBR,cAAc,GAAG,IAAI;IACrB,MAAMuB,sBAAsB,CAAC,CAAC;IAC9BwB,cAAc,CAAC,CAAC;IAChBpgQ,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAAC0jG,KAAK,CAAC,CAAC;IAC5C;IACAi8J,mBAAmB,CAAC,CAAC;EACzB;EACA;AACJ;AACA;AACA;EACI,SAAS6D,0BAA0BA,CAACC,OAAO,EAAE;IACzC,IAAIA,OAAO,EAAE;MACT7J,eAAe,CAAChgQ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAChD,CAAC,MAAM;MACH+/P,eAAe,CAAChgQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC7C;EACJ;EACA;EACA;EACA,eAAeqpQ,sBAAsBA,CAAA,EAAG;IACpC,IAAI;MACA,MAAMrjQ,IAAI,GAAG,CAAC,MAAMqtJ,UAAU,CAACC,kBAAkB,CAAC,CAAC,EAAEC,sBAAsB;MAC3E,OAAOvtJ,IAAI;IACf,CAAC,CAAC,OAAOgM,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACtB;EACJ;EACA,eAAe8xP,qBAAqBA,CAAA,EAAG;IACnC,IAAI;MACA,MAAM99P,IAAI,GAAG,CAAC,MAAM8oK,gBAAgB,CAACliH,iBAAiB,CAACuzM,kBAAkB,CAAC,EAAEpxF,2BAA2B;MACvG,OAAO/oK,IAAI;IACf,CAAC,CAAC,OAAOgM,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACtB;EACJ;EACA,eAAe43P,+BAA+BA,CAAA,EAAG;IAC7C,IAAI;MACA,MAAM5jQ,IAAI,GAAG,CAAC,MAAM6jQ,iBAAiB,CAACC,2BAA2B,CAAC,CAAC,EAAEC,iCAAiC;MACtG,OAAOt8O,IAAI,CAACxT,KAAK,CAACjU,IAAI,CAAC;IAC3B,CAAC,CAAC,OAAOgM,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACtB;EACJ;EACA,eAAeg4P,uBAAuBA,CAACC,sBAAsB,EAAE;IAC3D,IAAI;MACA,MAAMjkQ,IAAI,GAAG,CAAC,MAAMqtJ,UAAU,CAAC62G,mBAAmB,CAACD,sBAAsB,CAAC,EAAEE,6BAA6B;MACzG,OAAOnkQ,IAAI;IACf,CAAC,CAAC,OAAOgM,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACtB;EACJ;EACA,eAAeo4P,oDAAoDA,CAACjK,kBAAkB,EAAE;IACpF,IAAI;MACA,MAAMn6P,IAAI,GAAG,CAAC,MAAMqkQ,iBAAiB,CAACC,gDAAgD,CAACnK,kBAAkB,CAAC,EACrGoK,sDAAsD;MAC3D,OAAO98O,IAAI,CAACxT,KAAK,CAACjU,IAAI,CAAC;IAC3B,CAAC,CAAC,OAAOgM,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACtB;EACJ;EACA,eAAe6vP,sBAAsBA,CAAC2I,gBAAgB,EAAE;IACpD,IAAKn5P,CAAC,CAACC,OAAO,CAACoyC,aAAa,IAAI,IAAI,IAAIryC,CAAC,CAAC6kG,SAAS,KAAK,OAAO,IACvD7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,IAC9E7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,mBAAoB,IACjF7kG,CAAC,CAACC,OAAO,CAAC4hC,kBAAkB,KAAK,IAAI,IAAI7hC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IACvE7kG,CAAC,CAACC,OAAO,CAACu0C,kBAAkB,KAAK,IAAI,IAAIx0C,CAAC,CAAC6kG,SAAS,KAAK,YAAa,IACtE7kG,CAAC,CAACC,OAAO,CAAC60C,WAAW,KAAK,IAAI,IAAI90C,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAACkxC,YAAY,KAAK,IAAI,IAAInxC,CAAC,CAAC6kG,SAAS,KAAK,MAAO,IAC1D7kG,CAAC,CAACC,OAAO,CAACqvC,cAAc,KAAK,IAAI,IAAItvC,CAAC,CAAC6kG,SAAS,KAAK,QAAS,IAC9D7kG,CAAC,CAACC,OAAO,CAACwjC,uBAAuB,KAAK,IAAI,IAAIzjC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IACzE7kG,CAAC,CAACC,OAAO,CAACuxC,6BAA6B,KAAK,IAAI,IAAIxxC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IAClF7kG,CAAC,CAACC,OAAO,CAACqkC,gBAAgB,KAAK,IAAI,IAAItkC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IAClE7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IACjF7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,eAAgB,IAC9E7kG,CAAC,CAACC,OAAO,CAAC6uC,wBAAwB,KAAK,IAAI,IAAI9uC,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IAClF7kG,CAAC,CAACC,OAAO,CAAC0yC,WAAW,KAAK,IAAI,IAAI3yC,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAAC+tC,mBAAmB,KAAK,IAAI,IAAIhuC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IACtE7kG,CAAC,CAACC,OAAO,CAAC8jC,4BAA4B,KAAK,IAAI,IAAI/jC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IAC/E7kG,CAAC,CAACC,OAAO,CAAC4xC,sBAAsB,KAAK,IAAI,IAAI7xC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,EAAE;MACpFkqJ,iBAAiB,GAAG,KAAK;MACzBgB,UAAU,GAAG,IAAI;IACrB;IACA,MAAM6I,sBAAsB,GAAG;MAC3B7J,iBAAiB;MACjB9kN,eAAe;MACf6kN,kBAAkB;MAClB/xI,YAAY;MACZkyI,cAAc;MACdc;IACJ,CAAC;IAED,IAAI,CAACtC,eAAe,IAAIA,eAAe,CAACv+P,MAAM,KAAK,CAAC,IAAIiqQ,gBAAgB,EAAE;MACtE1L,eAAe,GAAG,MAAMkL,uBAAuB,CAACC,sBAAsB,CAAC;IAC3E;;IAEA;IACA,MAAMQ,OAAO,GAAG,CAAC,CAAC;IAElB3L,eAAe,GAAGA,eAAe,CAACrwP,MAAM,CAAC09F,QAAQ,IAAI;MACjD,IAAIs+J,OAAO,CAACt+J,QAAQ,CAAC1oG,EAAE,CAAC,EAAE;QACtB,OAAO,KAAK;MAChB,CAAC,MAAM;QACHgnQ,OAAO,CAACt+J,QAAQ,CAAC1oG,EAAE,CAAC,GAAG,IAAI;QAC3B,OAAO,IAAI;MACf;IACJ,CAAC,CAAC;IACF2/P,oBAAoB,CAAC,CAAC;IAEtB,IAAIjD,kBAAkB,KAAK,GAAG,EAAE;MAC5B,MAAMuK,+BAA+B,GAAG,MAAMN,oDAAoD,CAC9FjK,kBACJ,CAAC;MACDlB,wBAAwB,GAAG0L,aAAa,CAACC,iCAAiC,CAACF,+BAA+B,CAAC;IAC/G,CAAC,MAAM;MACHzL,wBAAwB,GAAG,CAAC,CAAC;IACjC;IAEAD,eAAe,GAAG,MAAMr9P,YAAY,CAACkpQ,kBAAkB,CAAC1K,kBAAkB,EAAE/xI,YAAY,CAAC;EAC7F;EACA,eAAewzI,aAAaA,CAAA,EAAG;IAC3B,IAAI,CAACxzI,YAAY,EAAEA,YAAY,GAAGz6F,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IAEtDugH,eAAe,GAAG,MAAMq7G,sBAAsB,CAAC,CAAC;IAChD,IAAI,CAAClJ,kBAAkB,IAAInyG,eAAe,CAACv/I,MAAM,CAACkxH,GAAG,IAAIA,GAAG,CAACxuB,EAAE,KAAKgvJ,kBAAkB,CAAC,CAAC5/P,MAAM,KAAK,CAAC,EAAE;MAClG,IAAI4/P,kBAAkB,KAAK,GAAG,EAAEwC,uBAAuB,CAAC,CAAC;IAC7D;IAEA9D,YAAY,GAAG,MAAMiF,qBAAqB,CAAC3D,kBAAkB,CAAC;IAC9D,IAAI,CAACl5F,iBAAiB,IACd51J,CAAC,CAACC,OAAO,CAACoyC,aAAa,IAAI,IAAI,IAAIryC,CAAC,CAAC6kG,SAAS,KAAK,OAAQ,IAC3D7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,IAC9E7kG,CAAC,CAACC,OAAO,CAACwwC,sBAAsB,KAAK,IAAI,IAAIzwC,CAAC,CAAC6kG,SAAS,KAAK,mBAAoB,IACjF7kG,CAAC,CAACC,OAAO,CAAC4hC,kBAAkB,KAAK,IAAI,IAAI7hC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IACvE7kG,CAAC,CAACC,OAAO,CAACu0C,kBAAkB,KAAK,IAAI,IAAIx0C,CAAC,CAAC6kG,SAAS,KAAK,YAAa,IACtE7kG,CAAC,CAACC,OAAO,CAAC60C,WAAW,KAAK,IAAI,IAAI90C,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAACkxC,YAAY,KAAK,IAAI,IAAInxC,CAAC,CAAC6kG,SAAS,KAAK,MAAO,IAC1D7kG,CAAC,CAACC,OAAO,CAACqvC,cAAc,KAAK,IAAI,IAAItvC,CAAC,CAAC6kG,SAAS,KAAK,QAAS,IAC9D7kG,CAAC,CAACC,OAAO,CAACwjC,uBAAuB,KAAK,IAAI,IAAIzjC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IACzE7kG,CAAC,CAACC,OAAO,CAACuxC,6BAA6B,KAAK,IAAI,IAAIxxC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,IAClF7kG,CAAC,CAACC,OAAO,CAACqkC,gBAAgB,KAAK,IAAI,IAAItkC,CAAC,CAAC6kG,SAAS,KAAK,UAAW,IAClE7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IACjF7kG,CAAC,CAACC,OAAO,CAAC+zC,uBAAuB,KAAK,IAAI,IAAIh0C,CAAC,CAAC6kG,SAAS,KAAK,eAAgB,IAC9E7kG,CAAC,CAACC,OAAO,CAAC6uC,wBAAwB,KAAK,IAAI,IAAI9uC,CAAC,CAAC6kG,SAAS,KAAK,kBAAmB,IAClF7kG,CAAC,CAACC,OAAO,CAAC0yC,WAAW,KAAK,IAAI,IAAI3yC,CAAC,CAAC6kG,SAAS,KAAK,KAAM,IACxD7kG,CAAC,CAACC,OAAO,CAAC+tC,mBAAmB,KAAK,IAAI,IAAIhuC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IACtE7kG,CAAC,CAACC,OAAO,CAAC8jC,4BAA4B,KAAK,IAAI,IAAI/jC,CAAC,CAAC6kG,SAAS,KAAK,WAAY,IAC/E7kG,CAAC,CAACC,OAAO,CAAC4xC,sBAAsB,KAAK,IAAI,IAAI7xC,CAAC,CAAC6kG,SAAS,KAAK,gBAAiB,EAAE;MACpFqsJ,oBAAoB,CAAC,CAAC;IAC1B;IAEArD,wBAAwB,GAAG,MAAM0K,+BAA+B,CAAC,CAAC;EACtE;;EAEA;EACA;EACA,SAAS95J,gBAAgBA,CAAA,EAAG;IACxB,MAAMtgE,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,sBAAsB,CAAC;IAE7C,MAAMkxC,GAAG,GAAG7tC,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,cAAc;MACpBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZ6pG,WAAW,EAAE;QACb00J,cAAc,CAAC,IAAI,CAAC;MACxB;IACJ,CAAC,CAAC;IAEF7zN,OAAO,CAAC9uC,WAAW,CAACwwC,GAAG,CAAC;IAExB,OAAO1B,OAAO;EAClB;EACA,SAASs7N,wBAAwBA,CAACC,UAAU,EAAE;IAC1C,IAAIA,UAAU,EAAE;MACZ3L,WAAW,CAACt/P,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,MAAM;MACHo/P,WAAW,CAACt/P,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC5C;EACJ;EACA,eAAeirQ,iBAAiBA,CAAA,EAAG;IAC/BrK,oBAAoB,GAAG,KAAK;IAC5B1qJ,+BAA+B,CAAC,aAAa,CAAC;IAE9C,MAAMitJ,WAAW,GAAG,CAAC,GAAG9D,WAAW,CAAC91P,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACtE45P,WAAW,IAAIA,WAAW,CAAC1iQ,OAAO,CAAC2iQ,EAAE,IAAI/D,WAAW,CAAC/sP,WAAW,CAAC8wP,EAAE,CAAC,CAAC;IACrErC,kBAAkB,GAAG,CAAC;IAEtB,MAAMc,aAAa,CAAC,CAAC;IACrB,MAAMC,sBAAsB,CAAC,IAAI,CAAC;IAClCwB,cAAc,CAAC,CAAC;EACpB;EACA,SAAS4H,gBAAgBA,CAAA,EAAG;IACxB7L,WAAW,CAACh8P,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACvC,MAAM2sJ,UAAU,GAAGvxJ,KAAK,CAACC,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,cAAc,CAAC;MAClE,IAAI,CAACukJ,UAAU,EAAE;MACjB,MAAMhmD,QAAQ,GAAGvrG,KAAK,CAACC,MAAM;MAC7B,MAAMilD,UAAU,GAAGllD,KAAK,CAACC,MAAM,CAACC,OAAO,CAACglD,UAAU;MAElD,MAAM5kD,aAAa,GAAGiR,GAAG,CAACiB,YAAY,CAACtS,OAAO,CAACI,aAAa;MAE5D,IAAIA,aAAa,KAAK,aAAa,EAAE;QACjC4pQ,wBAAwB,CAAC,IAAI,CAAC;QAC9B34P,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;QACvBgrO,YAAY,CAACoF,QAAQ,CAAC/+J,QAAQ,CAAC;QAC/B;MACJ;MAEA,MAAMg/J,kBAAkB,GAAGh/J,QAAQ,CAACrsG,SAAS,CAAC8N,QAAQ,CAAC,mBAAmB,CAAC;MAC3E;;MAEA,IACIyD,CAAC,CAAC6kG,SAAS,KAAK,UAAU,IAC1B7kG,CAAC,CAAC6kG,SAAS,KAAK,MAAM,IACtB7kG,CAAC,CAAC6kG,SAAS,KAAK,gBAAgB,IAChC7kG,CAAC,CAAC6kG,SAAS,KAAK,kBAAkB,IAClC7kG,CAAC,CAAC6kG,SAAS,KAAK,eAAe,IAC/B7kG,CAAC,CAAC6kG,SAAS,KAAK,YAAY,IAC5B7kG,CAAC,CAAC6kG,SAAS,KAAK,KAAK,IACrB7kG,CAAC,CAAC6kG,SAAS,KAAK,OAAO,IACvB7kG,CAAC,CAAC6kG,SAAS,KAAK,OAAO,IACvB7kG,CAAC,CAAC6kG,SAAS,KAAK,mBAAmB,IACnC7kG,CAAC,CAAC6kG,SAAS,KAAK,KAAK,IACrBh1G,aAAa,KAAK,kBAAkB,IACpCA,aAAa,KAAK,eAAe,EACnC;QACE;QACA,IAAIiqQ,kBAAkB,EAAE;UACpBh/J,QAAQ,CAACrsG,SAAS,CAACC,MAAM,CAAC,mBAAmB,CAAC;UAC9CosG,QAAQ,CAACrsG,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;UACxCwhQ,mCAAmC,CAACz7M,UAAU,CAAC;QACnD,CAAC,MAAM;UACH,MAAM6kK,yBAAyB,GAAGy0C,WAAW,CAACl8P,aAAa,CAAC,oBAAoB,CAAC;UACjF,IAAIynN,yBAAyB,EAAE;YAC3B,MAAMygD,2BAA2B,GAAGzgD,yBAAyB,CAAC7pN,OAAO,CAACglD,UAAU;YAChF6kK,yBAAyB,CAAC7qN,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;YACzD4qN,yBAAyB,CAAC7qN,SAAS,CAACC,MAAM,CAAC,mBAAmB,CAAC;YAC/DwhQ,mCAAmC,CAAC6J,2BAA2B,CAAC;UACpE;UACAj/J,QAAQ,CAACrsG,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;UAC3CmsG,QAAQ,CAACrsG,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;UACrCshQ,8BAA8B,CAACn1J,QAAQ,CAAC;QAC5C;;QAEA;QACA6zJ,gBAAgB,CAAC97P,YAAY,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;QAClE87P,gBAAgB,CAACp2J,KAAK,CAAC,CAAC;MAC5B,CAAC,MAAM;QACH,IAAI,CAACuhK,kBAAkB,EAAE;UACrB7J,8BAA8B,CAACn1J,QAAQ,CAAC;UACxCA,QAAQ,CAACrsG,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;UAC3CmsG,QAAQ,CAACrsG,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;QACzC,CAAC,MAAM;UACHmsG,QAAQ,CAACrsG,SAAS,CAACC,MAAM,CAAC,mBAAmB,CAAC;UAC9CosG,QAAQ,CAACrsG,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;UACxCwhQ,mCAAmC,CAACz7M,UAAU,CAAC;QACnD;MACJ;MAEA,IAAI5kD,aAAa,KAAK,eAAe,EAAE;QACnC,MAAM0zL,OAAO,GAAG3xL,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC;QACrD,IAAIknG,iBAAiB,CAAC7sG,MAAM,GAAG,CAAC,EAAE;UAC9Bq0L,OAAO,CAAC90L,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACxC,CAAC,MAAM;UACH60L,OAAO,CAAC90L,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC;QACA;MACJ;MAEA,IAAIotG,iBAAiB,CAAC7sG,MAAM,GAAG,CAAC,EAAE;QAC9By/P,gBAAgB,CAAClgQ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACjD,CAAC,MAAM;QACHigQ,gBAAgB,CAAClgQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC9C;IACJ,CAAC,CAAC;IAEFu/P,cAAc,CAACn8P,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC9C,IAAImhQ,SAAS,GAAG,EAAE,CAACvyP,KAAK,CAACC,IAAI,CAAC2vP,WAAW,CAAC91P,gBAAgB,CAAC,iCAAiC,CAAC,CAAC;MAC9Fy4P,SAAS,CAACvhQ,OAAO,CAACiE,CAAC,IAAI;QACnB,IAAIA,CAAC,CAAC3E,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;QACtC,IAAIu+F,QAAQ,GAAG1nG,CAAC,CAAC6N,SAAS,CAAC,IAAI,CAAC;QAChCgvP,8BAA8B,CAACn1J,QAAQ,CAAC;QACxC1nG,CAAC,CAAC3E,SAAS,CAACE,GAAG,CAAC,mBAAmB,EAAE,aAAa,CAAC;MACvD,CAAC,CAAC;MAEF,MAAMqrQ,UAAU,GAAGtpP,MAAM,CAAC8B,IAAI,CAACk7O,sBAAsB,CAAC,CAACx+P,MAAM;MAC7D,MAAM+qQ,SAAS,GAAG38J,WAAW,GAAG,CAAC;MACjC,KAAK,IAAIxjG,CAAC,GAAGmgQ,SAAS,EAAEngQ,CAAC,IAAIkgQ,UAAU,EAAElgQ,CAAC,EAAE,EAAE;QAC1C,IAAI4zP,sBAAsB,CAAC5zP,CAAC,CAAC,EAAE;UAC3B4zP,sBAAsB,CAAC5zP,CAAC,CAAC,CAAC3K,OAAO,CAACiE,CAAC,IAAI;YACnC,IAAI0nG,QAAQ,GAAGmQ,iBAAiB,CAAC73G,CAAC,CAAC;YACnC,IAAI0nG,QAAQ,CAACrsG,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC7C0zP,8BAA8B,CAACn1J,QAAQ,CAAC;UAC5C,CAAC,CAAC;QACN;MACJ;MAEAn+F,OAAO,CAACmI,KAAK,CAACi3F,iBAAiB,CAAC;MAEhC,IAAIA,iBAAiB,CAAC7sG,MAAM,GAAG,CAAC,EAAE;QAC9By/P,gBAAgB,CAAClgQ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACjD,CAAC,MAAM;QACHigQ,gBAAgB,CAAClgQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC9C;IACJ,CAAC,CAAC;IAEFw/P,gBAAgB,CAACp8P,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAChDkhQ,yBAAyB,CAAC,CAAC;MAC3BroH,sBAAsB,CAAC,CAAC;MAExBzrI,OAAO,CAACmI,KAAK,CAACi3F,iBAAiB,CAAC;MAEhC,IAAIA,iBAAiB,CAAC7sG,MAAM,GAAG,CAAC,EAAE;QAC9By/P,gBAAgB,CAAClgQ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACjD,CAAC,MAAM;QACHigQ,gBAAgB,CAAClgQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC9C;IACJ,CAAC,CAAC;IAEFihQ,mBAAmB,CAAC79P,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACnD,IAAImhQ,SAAS,GAAG,EAAE,CAACvyP,KAAK,CAACC,IAAI,CAAC2vP,WAAW,CAAC91P,gBAAgB,CAAC,iCAAiC,CAAC,CAAC;MAC9Fy4P,SAAS,CAACvhQ,OAAO,CAACiE,CAAC,IAAI;QACnB,IAAIA,CAAC,CAAC3E,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;QACtC,IAAIu+F,QAAQ,GAAG1nG,CAAC,CAAC6N,SAAS,CAAC,IAAI,CAAC;QAChCgvP,8BAA8B,CAACn1J,QAAQ,CAAC;QACxC1nG,CAAC,CAAC3E,SAAS,CAACE,GAAG,CAAC,mBAAmB,EAAE,aAAa,CAAC;MACvD,CAAC,CAAC;MAEF,MAAMqrQ,UAAU,GAAGtpP,MAAM,CAAC8B,IAAI,CAACk7O,sBAAsB,CAAC,CAACx+P,MAAM;MAC7D,MAAM+qQ,SAAS,GAAG38J,WAAW,GAAG,CAAC;MACjC,KAAK,IAAIxjG,CAAC,GAAGmgQ,SAAS,EAAEngQ,CAAC,IAAIkgQ,UAAU,EAAElgQ,CAAC,EAAE,EAAE;QAC1C,IAAI4zP,sBAAsB,CAAC5zP,CAAC,CAAC,EAAE;UAC3B4zP,sBAAsB,CAAC5zP,CAAC,CAAC,CAAC3K,OAAO,CAACiE,CAAC,IAAI;YACnC,IAAI0nG,QAAQ,GAAGmQ,iBAAiB,CAAC73G,CAAC,CAAC;YACnC,IAAI0nG,QAAQ,CAACrsG,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC7C0zP,8BAA8B,CAACn1J,QAAQ,CAAC;UAC5C,CAAC,CAAC;QACN;MACJ;MAEAn+F,OAAO,CAACmI,KAAK,CAACi3F,iBAAiB,CAAC;MAEhC,MAAMwnF,OAAO,GAAG3xL,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC;MACrD,IAAIknG,iBAAiB,CAAC7sG,MAAM,GAAG,CAAC,EAAE;QAC9Bq0L,OAAO,CAAC90L,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACxC,CAAC,MAAM;QACH60L,OAAO,CAAC90L,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC;IAEJ,CAAC,CAAC;IAEFkhQ,qBAAqB,CAAC99P,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACrDohQ,8BAA8B,CAAC,CAAC;MAChCvoH,sBAAsB,CAAC,CAAC;MAExBzrI,OAAO,CAACmI,KAAK,CAACi3F,iBAAiB,CAAC;MAEhC,MAAMwnF,OAAO,GAAG3xL,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC;MACrD,IAAIknG,iBAAiB,CAAC7sG,MAAM,GAAG,CAAC,EAAE;QAC9Bq0L,OAAO,CAAC90L,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACxC,CAAC,MAAM;QACH60L,OAAO,CAAC90L,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC;IACJ,CAAC,CAAC;IAEFs/P,UAAU,CAACl8P,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1Cm1J,gBAAgB,CAAC,KAAK,CAAC;IAC3B,CAAC,CAAC;IAEFxtD,UAAU,CAACnlG,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1C0nG,WAAW,CAACxoG,SAAS,CAACmE,MAAM,CAAC,YAAY,CAAC;MAC1CukG,YAAY,CAAC3jG,KAAK,GAAG,EAAE;MACvB2jG,YAAY,CAAC92F,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IACF82F,YAAY,CAACplG,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5C,IAAIA,KAAK,CAAC0oB,OAAO,KAAK,EAAE,EAAE;QACtBw5O,YAAY,CAACliQ,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC;MACpC;IACJ,CAAC,CAAC;IAEF66P,eAAe,CAACt8P,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC/C,IAAIA,KAAK,CAACC,MAAM,CAACC,OAAO,CAACsD,OAAO,KAAK,MAAM,EAAE;QACzCu8P,oBAAoB,GAAG,IAAI;QAC3Bh/P,YAAY,CAAC4pQ,cAAc,CAAC,CAAC;QAC7Bt1J,+BAA+B,CAAC,eAAe,CAAC;QAChDirJ,qBAAqB,CAACn9P,KAAK,CAACoK,OAAO,GAAG,OAAO;QAC7C8yP,mBAAmB,CAACl9P,KAAK,CAACoK,OAAO,GAAG,OAAO;MAC/C,CAAC,MAAM;QACHwyP,oBAAoB,GAAG,KAAK;QAC5BjhQ,UAAU,CAACO,IAAI,CAAC,CAAC;QACjBg2G,+BAA+B,CAAC,aAAa,CAAC;QAC9CirJ,qBAAqB,CAACn9P,KAAK,CAACoK,OAAO,GAAG,MAAM;QAC5C8yP,mBAAmB,CAACl9P,KAAK,CAACoK,OAAO,GAAG,MAAM;QAC1C6zP,8BAA8B,CAAC,CAAC;QAChCvoH,sBAAsB,CAAC,CAAC;MAC5B;IACJ,CAAC,CAAC;IAEFmtH,iBAAiB,CAACxjQ,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDolQ,YAAY,CAACwF,oBAAoB,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF/L,kBAAkB,CAACr8P,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAClD6qQ,aAAa,CAACC,gBAAgB,CAAC,CAAC;IACpC,CAAC,CAAC;EACN;EACA,SAASrI,cAAcA,CAACsI,WAAW,EAAE;IACjC,IAAI,CAAC7M,eAAe,EAAE;IAEtBK,WAAW,GAAGl8P,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C27P,WAAW,CAACr/P,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAEzC,IAAI++P,sBAAsB,CAACpwJ,WAAW,CAAC,EAAE;MACrCowJ,sBAAsB,CAACpwJ,WAAW,CAAC,CAACnuG,OAAO,CAACiE,CAAC,IAAI06P,WAAW,CAACz+P,WAAW,CAAC47G,iBAAiB,CAAC73G,CAAC,CAAC,CAAC,CAAC;MAC/Fq8P,kBAAkB,GAAGhC,eAAe,CAACv+P,MAAM;IAC/C;IAEA,IAAI6+P,WAAW,CAACxxP,QAAQ,CAACyxP,cAAc,CAAC,EAAED,WAAW,CAAC/sP,WAAW,CAACgtP,cAAc,CAAC;IACjF,IAAI,CAACD,WAAW,CAACxxP,QAAQ,CAACiiG,aAAa,CAAC,EAAE;MACtCA,aAAa,GAAGC,gBAAgB,CAAC,CAAC;MAClCsvJ,WAAW,CAAC1+P,WAAW,CAACmvG,aAAa,CAAC;IAC1C;IACAuvJ,WAAW,CAAC3sP,YAAY,CAAC0sP,WAAW,EAAEtvJ,aAAa,CAAC;IACpD;IACA,MAAMy7J,SAAS,GAAG38J,WAAW,GAAG,CAAC;IACjC,IAAI,CAACowJ,sBAAsB,CAACuM,SAAS,CAAC,EAAE;MACpClM,WAAW,CAAC/sP,WAAW,CAACw9F,aAAa,CAAC;IAC1C;IAEAyzJ,wBAAwB,CAAC,CAAC;IAC1B;EACJ;EACA,SAASF,oBAAoBA,CAACrB,SAAS,EAAE;IACrC,MAAMzwJ,OAAO,GAAG,EAAE;IAClB,MAAMzC,YAAY,GAAGkzJ,SAAS,GAAGpuO,IAAI,CAACwX,UAAU,CAAC42N,SAAS,EAAEzwJ,OAAO,CAAC,GAAG39E,IAAI,CAACwX,UAAU,CAAC2zN,eAAe,EAAExtJ,OAAO,CAAC;IAChHytJ,sBAAsB,GAAG,CAAC,CAAC;IAC3BlwJ,YAAY,CAACruG,OAAO,CAAC,CAAC6F,CAAC,EAAEuT,KAAK,KAAMmlP,sBAAsB,CAACnlP,KAAK,CAAC,GAAGvT,CAAE,CAAC;IAEvE,MAAMulQ,eAAe,GAAG7pP,MAAM,CAAC8B,IAAI,CAACk7O,sBAAsB,CAAC;IAC3DgC,gBAAgB,GAAG6K,eAAe,IAAIA,eAAe,CAACrrQ,MAAM;IAC5DouG,WAAW,GAAG,CAAC;EACnB;EACA;AACJ;AACA;AACA;AACA;AACA;EACI,eAAe46J,WAAWA,CAAArxI,KAAA,EAA+BpzH,QAAQ,EAAE;IAAA,IAAxC;MAAE0kQ,UAAU;MAAE,GAAGqC;IAAU,CAAC,GAAA3zI,KAAA;IACnD4mI,eAAe,GAAG,EAAE;IAEpB6B,oBAAoB,GAAG6I,UAAU;IACjCnJ,cAAc,GAAGwL,SAAS,CAACxL,cAAc;IACzCW,kBAAkB,GAAG6K,SAAS,CAACpC,gBAAgB,GAAG,IAAI,GAAG,KAAK;IAC9DnJ,cAAc,GAAG,IAAI;IACrB,MAAMsB,aAAa,CAAC,CAAC;;IAErB;IACAxC,WAAW,GAAGn8P,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C47P,WAAW,CAACt/P,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IACnC;IACA,MAAMupG,MAAM,GAAGC,iBAAiB,CAAC,CAAC;IAClC,MAAMkG,UAAU,GAAGC,eAAe,CAAC,CAAC;IACpC;IACA0vJ,cAAc,GAAGzqP,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,4CAA4C,CAAC;IACnFuzP,WAAW,CAAC1+P,WAAW,CAAC6oG,MAAM,CAAC;IAC/B61J,WAAW,CAAC1+P,WAAW,CAACgvG,UAAU,CAAC;IACnC0vJ,WAAW,CAAC1+P,WAAW,CAAC2+P,cAAc,CAAC;IACvC;IACA4L,gBAAgB,CAAC,CAAC;IAElB/J,qBAAqB,CAACn9P,KAAK,CAACoK,OAAO,GAAG,MAAM;IAC5C8yP,mBAAmB,CAACl9P,KAAK,CAACoK,OAAO,GAAG,MAAM;IAE1C,OAAOixP,WAAW;EACtB;;EAEA;EACA;EACA,eAAe0M,cAAcA,CAAA,EAAG;IAC5B;IACA19I,YAAY,GAAGz6F,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACnC;IACA0yN,kBAAkB,GAAG,IAAI;IACzBl5F,iBAAiB,GAAG,IAAI;IAExBryJ,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,mBAAmB,CAAC;IAE1C,MAAM+oQ,YAAY,GAAG,MAAMM,WAAW,CAAC;MACnCC,UAAU,EAAE,KAAK;MACjBuC,mBAAmB,EAAE,KAAK;MAC1BC,aAAa,EAAE,KAAK;MACpB3L,cAAc,EAAE;IACpB,CAAC,CAAC;IAEFpqJ,+BAA+B,CAAC,aAAa,CAAC;IAC9C9jG,GAAG,CAACC,iBAAiB,CAAC,CAAC;IAEvB,IAAI65P,gBAAgB,GAAGnG,YAAY,CAACtyH,SAAS,CAAC,CAAC;IAC/CrhI,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACuoQ,YAAY,CAAC;IAC1C92P,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACurQ,gBAAgB,CAAC;IAC9CnG,YAAY,CAACC,+BAA+B,CAAC5F,kBAAkB,CAAC;IAEhE6F,YAAY,CAAC7iQ,IAAI,CAAC07P,YAAY,CAAC;IAC/Bl9P,YAAY,CAACwB,IAAI,CAAC,CAAC;IAEnB29P,kBAAkB,GAAG,CAAC;IACtBR,cAAc,GAAG,IAAI;IACrB,MAAMuB,sBAAsB,CAAC,CAAC;IAC9BwB,cAAc,CAAC,CAAC;IAChBpgQ,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAAC0jG,KAAK,CAAC,CAAC;IAC5Ci8J,mBAAmB,CAAC,CAAC;EACzB;EAEA,OAAO;IACHruB,4BAA4B;IAC5B+xB,WAAW;IACXjtJ,iBAAiB;IACjBo9B,oBAAoB;IACpBD,sBAAsB;IACtBzqC,kBAAkB;IAClBwyJ,oBAAoB;IACpBC,yBAAyB;IACzBC,8BAA8B;IAC9BQ,sBAAsB;IACtBC,eAAe;IACf7uG,kBAAkB;IAClBquG,qBAAqB;IACrBS,2BAA2B;IAC3B0B,qBAAqB;IACrBgI,cAAc;IACd38J,cAAc;IACdk0J,cAAc;IACd2H,iBAAiB;IACjBn5G,iCAAiC;IACjCowG,mBAAmB;IACnBZ,6BAA6B;IAC7Bv4F,mBAAmB;IACnBu5F,eAAe;IACfQ,4BAA4B;IAC5B1sJ,cAAc;IACd20J,wBAAwB;IACxBpB,0BAA0B;IAC1Bh7F,mCAAmC;IACnCvd,kBAAkB;IAClBsX,wBAAwB;IACxBu5F;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACvgEJ,MAAM3uG,UAAU,GAAI,YAAY;EAC5B,SAASC,kBAAkBA,CAACxuJ,QAAQ,EAAE;IAClC,OAAOuM,CAAC,CAAC2+C,IAAI,CAAC;MACVhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oBAAoB;MACxBxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACd,CAAC,CAAC;EACN;EACA,SAAS+5M,mBAAmBA,CAAClkQ,IAAI,EAAElB,QAAQ,EAAE;IACzC;IACA,IAAIqjK,SAAS,GAAGniK,IAAI,CAACo6P,iBAAiB;IACtC,IAAIxuF,UAAU,GACVzJ,SAAS,KAAK,KAAK,IAAIA,SAAS,KAAK,KAAK,IAAIA,SAAS,KAAK,KAAK,GAC3DniK,IAAI,CAACs1C,eAAe,GACpBt1C,IAAI,CAACm6P,kBAAkB;IAEjC,IAAIn2O,IAAI,GAAGhkB,IAAI,CAACooH,YAAY;IAC5B,IAAIwyC,YAAY,GAAGH,eAAe,CAACpvJ,CAAC,CAACC,OAAO,CAAC+qC,6BAA6B,CAAC;IAE3EryB,IAAI,GAAGA,IAAI,GAAGA,IAAI,GAAG2J,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACzC,IAAI6yN,cAAc,GAAGt6P,IAAI,CAACs6P,cAAc,IAAI/4P,SAAS,GAAG,IAAI,GAAGvB,IAAI,CAACs6P,cAAc;IAElF,OAAOjvP,CAAC,CAAC2+C,IAAI,CAAC;MACVhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;MAC/BxoD,IAAI,EACA,gBAAgB,GAChBmiK,SAAS,GACT,mBAAmB,GACnByJ,UAAU,GACV,cAAc,GACdvgK,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpB3vB,IAAI,GACJ,qBAAqB,GACrB42I,YAAY,GACZ,iBAAiB,GACjB0/F,cAAc,GACd,IAAI;MACRrwM,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACd,CAAC,CAAC;EACN;EACA,SAAS+7M,uBAAuBA,CAAClmQ,IAAI,EAAElB,QAAQ,EAAE;IAC7C;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gCAAgC;MACpC;MACAxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI;UACA,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC+7M,kCAAkC;QACzD,CAAC,CAAC,OAAO3mQ,CAAC,EAAE;UACRV,QAAQ,CAAC,4DAA4D,CAAC;QAC1E;MACJ,CAAC;MACDkN,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EACA,SAASsnQ,iBAAiBA,CAACpmQ,IAAI,EAAElB,QAAQ,EAAE;IACvC;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;MACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI;UACA,IAAI9G,GAAG,GAAG6G,QAAQ,CAACi8M,uBAAuB;UAC1CvnQ,QAAQ,CAACykD,GAAG,CAAC;QACjB,CAAC,CAAC,OAAO/jD,CAAC,EAAE;UACRV,QAAQ,CAAC,4DAA4D,CAAC;QAC1E;MACJ;IACJ,CAAC,CAAC;EACN;EACA,SAASwnQ,uBAAuBA,CAACxmN,UAAU,EAAEhhD,QAAQ,EAAE;IACnDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;MACnCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,kBAAkB,GAAGmM,UAAU,GAAG,IAAI;MAC7EmK,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACm8M,iCAAiC;QACpDznQ,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASijN,wBAAwBA,CAAC1mN,UAAU,EAAEhhD,QAAQ,EAAE;IACpDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gCAAgC;MACpCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,kBAAkB,GAAGmM,UAAU,GAAG,IAAI;MAC7EmK,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACq8M,kCAAkC;QACrD3nQ,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASmjN,oBAAoBA,CAAC5mN,UAAU,EAAEhhD,QAAQ,EAAE;IAChDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAChCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,kBAAkB,GAAGmM,UAAU,GAAG,IAAI;MAC7EmK,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACu8M,8BAA8B;QACjD7nQ,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASqjN,2BAA2BA,CAAC9mN,UAAU,EAAEhhD,QAAQ,EAAE;IACvDkB,IAAI,GAAG;MACH6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAEA;IAChB,CAAC;IACDz0C,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;MACnCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtCrqD,IAAI,GAAGoqD,QAAQ,CAACy8M,iCAAiC;QACjD/nQ,QAAQ,CAACkB,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EACA,SAAS8mQ,mBAAmBA,CAACv4M,UAAU,EAAEzO,UAAU,EAAEhhD,QAAQ,EAAE;IAC3DkB,IAAI,GAAG;MACH6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB4a,UAAU,EAAEA,UAAU;MACtBzO,UAAU,EAAEA;IAChB,CAAC;IACDz0C,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAChCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC08M,YAAY,GAAG38M,QAAQ,CAAC48M,8BAA8B;QACtDloQ,QAAQ,CAACioQ,YAAY,CAAC;MAC1B;IACJ,CAAC,CAAC;EACN;EACA,eAAeE,cAAcA,CAACC,SAAS,EAAEzpQ,EAAE,EAAEo9C,YAAY,EAAE/7C,QAAQ,EAAE;IACjE,MAAMuM,CAAC,CAAC2+C,IAAI,CAAC;MACThsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kBAAkB;MACtBxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,wBAAwB,GACxBtoC,CAAC,CAACC,OAAO,CAACk/B,MAAM,GAChB,iBAAiB,GACjB08N,SAAS,GACT,UAAU,GACVzpQ,EAAE,GACF,oBAAoB,GACpBo9C,YAAY,GACZ,IAAI;MACRoP,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClCtrD,QAAQ,CAAC,CAAC;MACd,CAAC;MACDkN,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjChE,OAAO,CAACu6B,GAAG,CAAChrB,MAAM,CAAC;QACnBvP,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;QAClBhE,OAAO,CAACu6B,GAAG,CAAC8nB,GAAG,CAAC+tD,YAAY,CAAC;MACjC;IACJ,CAAC,CAAC;EACN;EACA,SAASq/C,oBAAoBA,CAAC34J,QAAQ,EAAE;IACpCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAChCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC+8M,8BAA8B;QACjDroQ,QAAQ,CAAC,IAAI,EAAEykD,GAAG,CAAC;MACvB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAACkN,KAAK,EAAE,IAAI,CAAC;QACrB;MACJ;IACJ,CAAC,CAAC;EACN;EACA,eAAeo7P,0BAA0BA,CAAClvJ,YAAY,EAAE;IACpD;IACA,IAAI;MACA,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;QAChCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,OAAO;QACH,GAAGnqD,IAAI,CAACqnQ;MACZ,CAAC;IACL,CAAC,CAAC,OAAOr7P,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACtB;EACJ;EACA,eAAes7P,mBAAmBA,CAACpvJ,YAAY,EAAE;IAC7C;IACA,IAAI;MACA,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;QAC3BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,OAAO;QACH,GAAGnqD,IAAI,CAACunQ;MACZ,CAAC;IACL,CAAC,CAAC,OAAOv7P,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACtB;EACJ;EAEA,eAAew7P,wBAAwBA,CAAA,EAAG;IACtC,IAAI;MACA,MAAMxnQ,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;QAChCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC,CAAC;QACtBuiC,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOnqD,IAAI;IACf,CAAC,CAAC,OAAOgM,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACtB;EACJ;EAEA,eAAey7P,4BAA4BA,CAAC3nN,UAAU,EAAE5pC,QAAQ,EAAE;IAC9D,IAAI;MACA,MAAMya,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oCAAoC;QACxCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,kBAAkB,GAAGmM,UAAU,GAAG,gBAAgB,GAAG5pC,QAAQ,GAAG,IAAI;QAC3G+zC,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAesvJ,oBAAoBA,CAAA,EAAG;IAClC,IAAI;MACA,MAAM/2O,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;QAChCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QACrB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeuvJ,oBAAoBA,CAAA,EAAG;IAClC,IAAI;MACA,MAAMh3O,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;QAChCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QACrB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAewvJ,wBAAwBA,CAACC,aAAa,EAAE;IACnD,IAAI;MACA,MAAMl3O,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gCAAgC;QACpCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBm0N,YAAY,EAAED;QAClB,CAAC,CAAC;QACF59M,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAe2vJ,sBAAsBA,CAACC,wBAAwB,EAAEC,qBAAqB,EAAEnoN,UAAU,EAAE;IAC/F,IAAI;MACA,MAAMnvB,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;QAC9BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB4V,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;UACxB09N,4BAA4B,EAAEF,wBAAwB;UACtDG,yBAAyB,EAAEF,qBAAqB;UAChDnoN,UAAU,EAAEA;QAChB,CAAC,CAAC;QACFmK,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,OAAO;IACHk1C,kBAAkB;IAClB42G,mBAAmB;IACnBgC,uBAAuB;IACvBE,iBAAiB;IACjBE,uBAAuB;IACvBI,oBAAoB;IACpBE,2BAA2B;IAC3BE,mBAAmB;IACnBG,cAAc;IACdT,wBAAwB;IACxB/uG,oBAAoB;IACpB2vG,0BAA0B;IAC1BE,mBAAmB;IACnBE,wBAAwB;IACxBC,4BAA4B;IAC5BC,oBAAoB;IACpBC,oBAAoB;IACpBI,sBAAsB;IACtBH;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACrgBJ,MAAMQ,cAAc,GAAG,CAAC,MAAM;EAC5B,IAAItyJ,kBAAkB;EAEtB,eAAey0I,sCAAsCA,CAACpB,WAAW,EAAE;IACjE,IAAIA,WAAW,CAAC5uP,MAAM,IAAI,CAAC,EAAE,OAAO,KAAK;IAEzC,IAAI8tQ,cAAc,GAAGlf,WAAW,CAAChrO,QAAQ,CAAC,CAAC;IAC3C,MAAMmqP,uBAAuB,GAAGD,cAAc,CAAC7iN,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;IACnE;;IAEA,eAAe+iN,kCAAkCA,CAACC,iBAAiB,EAAE;MACnE,IAAIC,eAAe,GAAG,MAAM31E,kBAAkB,CAACy1E,kCAAkC,CAAC;QAChFpf,WAAW,EAAEqf,iBAAiB,CAACrqP,QAAQ,CAAC;MAC1C,CAAC,CAAC;MAEF,OAAOsqP,eAAe;IACxB;IAEA,IAAIA,eAAe,GAAG,MAAMF,kCAAkC,CAACD,uBAAuB,CAAC;IAEvF,MAAMI,aAAa,GAAG,EAAE;IACxB,IAAID,eAAe,CAACluQ,MAAM,GAAG,CAAC,EAAE;MAC9B,KAAK,IAAI4K,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsjQ,eAAe,CAACluQ,MAAM,EAAE4K,CAAC,EAAE,EAAE;QAC/CujQ,aAAa,CAACrgQ,IAAI,CAACogQ,eAAe,CAACtjQ,CAAC,CAAC,CAACpC,IAAI,CAAC;MAC7C;MACA,IAAI4lQ,gBAAgB,GAAGD,aAAa,CAAC1iP,IAAI,CAAC,IAAI,CAAC;MAC/C4iP,4BAA4B,CAACD,gBAAgB,CAAC;IAChD;EACF;EACA,SAASC,4BAA4BA,CAACF,aAAa,EAAE;IACnD,IAAIpoB,UAAU,GAAGtzO,KAAK,CAAC1P,KAAK,CAAC;MAC3BG,EAAE,EAAE,gBAAgB;MACpBa,UAAU,EAAE;IACd,CAAC,CAAC;IACF,IAAIiiP,YAAY,GAAGtjP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD+iP,YAAY,CAACzmP,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrC,IAAIolP,UAAU,GAAG/hP,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QAC1BkO,KAAK,CAAC/S,IAAI,CAACqmP,UAAU,CAAC;MACxB;IACF,CAAC,CAAC;IAEFC,YAAY,CAAC7lP,WAAW,CAAC0kP,UAAU,CAAC;IACpC,IAAIoB,YAAY,GAAGvjP,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC9CgjP,YAAY,CAACpmP,SAAS,GACpB,gGAAgG,GAAGsuQ,aAAa;IAClHpoB,UAAU,CAAC5lP,WAAW,CAAC8lP,YAAY,CAAC;IACpCF,UAAU,CAAC5lP,WAAW,CAAC6lP,YAAY,CAAC;IACpCvzO,KAAK,CAAC9S,IAAI,CAAComP,UAAU,CAAC;EACxB;EAEA,eAAeuoB,oBAAoBA,CAAA,EAAG;IACpC,IAAIp1B,iBAAiB,GAAG,EAAE;IAE1B,MAAMq1B,OAAO,GAAG97P,KAAK,CAAC1P,KAAK,CAAC;MAC1B2P,MAAM,EAAE,+BAA+B;MACvCxP,EAAE,EAAE;IACN,CAAC,CAAC;;IAEF;IACA;IACA,MAAM48O,OAAO,GAAG,MAAMvnD,kBAAkB,CAACi2E,qBAAqB,CAAC;MAC7Dl/N,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB4gM,SAAS,EAAE,CAAC;MACZmG,WAAW,EAAE5kI,kBAAkB;MAC/BkzJ,OAAO,EAAE;IACX,CAAC,CAAC;IAEF,MAAMC,YAAY,GAAGhsQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDyrQ,YAAY,CAACnvQ,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAE1CqgP,OAAO,CAAC7/O,OAAO,CAACutC,GAAG,IAAI;MACrB,MAAMmhO,OAAO,GAAGjsQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC7C0rQ,OAAO,CAACpvQ,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MACzCkvQ,OAAO,CAAChrQ,YAAY,CAAC,kBAAkB,EAAE6pC,GAAG,CAACyyM,kBAAkB,CAAC;MAChE0uB,OAAO,CAAC9uQ,SAAS,GAAG,OAAO2tC,GAAG,CAACsqJ,YAAY,YAAYtqJ,GAAG,CAACyvE,WAAW,MAAM;MAC5EyxJ,YAAY,CAACvuQ,WAAW,CAACwuQ,OAAO,CAAC;IACnC,CAAC,CAAC;IAEFD,YAAY,CAAC7rQ,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MAC1C,IAAIA,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QACnD,MAAMqyO,UAAU,GAAGz6O,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAAC2zL,UAAU;QAE9C,IAAI,CAACjvL,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC5CpI,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UAClCy5O,iBAAiB,CAACprO,IAAI,CAAC4xO,UAAU,CAAC;QACpC,CAAC,MAAM;UACLz6O,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UACrC05O,iBAAiB,GAAGA,iBAAiB,CAAChrO,MAAM,CAACyxO,EAAE,IAAIA,EAAE,KAAKD,UAAU,CAAC;QACvE;QAEAxG,iBAAiB,CAACl5O,MAAM,GAAG,CAAC,GAAGq0L,OAAO,CAAC90L,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC,GAAG60L,OAAO,CAAC90L,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACzG;IACF,CAAC,CAAC;;IAEF;IACA;IACA,MAAM40L,OAAO,GAAGvxL,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB,MAAMqqP,WAAW,GAAG,EAAE;QAEtB,IAAI1V,iBAAiB,IAAIA,iBAAiB,CAACl5O,MAAM,GAAG,CAAC,EAAE;UACrD,IAAI;YACF,KAAK4K,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsuO,iBAAiB,CAACl5O,MAAM,EAAE4K,CAAC,EAAE,EAAE;cAC7C,IAAIykP,YAAY,GAAGnW,iBAAiB,CAACtuO,CAAC,CAAC;cACvC,IAAI8jP,UAAU,GAAG,MAAMn2D,kBAAkB,CAAC2nD,4BAA4B,CAAC;gBACrE5wM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;gBACtB86I,UAAU,EAAEm7D,YAAY;gBACxBlP,WAAW,EAAE5kI,kBAAkB;gBAC/BuzC,QAAQ,EAAEvzC;cACZ,CAAC,CAAC;cACFqzI,WAAW,CAAC9gP,IAAI,CAAC4gP,UAAU,CAAC;YAC9B;YAEA,MAAMkgB,SAAS,GAAG,MAAMC,mBAAmB,CAAC,CAAC;YAC7CC,aAAa,CAACF,SAAS,CAAC;UAC1B,CAAC,CAAC,OAAOn9P,KAAK,EAAE;YACdhE,OAAO,CAACgE,KAAK,CAAC,2BAA2B,CAAC;UAC5C;UAEA,MAAMu+O,sCAAsC,CAACpB,WAAW,CAAC;QAC3D;QAEAn8O,KAAK,CAAC/S,IAAI,CAAC6uQ,OAAO,CAAC;MACrB;IACF,CAAC,CAAC;IACF,MAAMn9N,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MAC7BG,EAAE,EAAE,sBAAsB;MAC1BG,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAMkO,KAAK,CAAC/S,IAAI,CAAC6uQ,OAAO;IACpC,CAAC,CAAC;IACF,MAAMt/N,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACk0L,OAAO,CAAC;IAC5BplJ,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAG9Bm9N,OAAO,CAACpuQ,WAAW,CAACuuQ,YAAY,CAAC;IACjCH,OAAO,CAACpuQ,WAAW,CAAC8uC,OAAO,CAAC;IAE5Bx8B,KAAK,CAAC9S,IAAI,CAAC4uQ,OAAO,CAAC;EACrB;EAEA,eAAeM,mBAAmBA,CAAA,EAAG;IACnC,MAAM/iB,cAAc,GAAG,MAAM1R,uBAAuB,CAAC9uO,GAAG,CAAC,CAAC,EAAEiwG,kBAAkB,EAAE,IAAI,CAAC;IAErF,MAAMwwI,cAAc,GAAGjpP,MAAM,CAACC,KAAK,CAAC;MAClCM,IAAI,EAAE,iBAAiB;MACvBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB+pQ,oBAAoB,CAAC,CAAC;MACxB;IACF,CAAC,CAAC;IAEF,OAAO;MAACxiB,cAAc;MAAEC;IAAc,CAAC;EACzC;EAEA,eAAegjB,iBAAiBA,CAAA,EAAG;IACjC,MAAMH,SAAS,GAAG,MAAMC,mBAAmB,CAAC,CAAC;IAE7C,OAAOD,SAAS;EAClB;EAEA,SAAShsQ,IAAIA,CAAC2iD,UAAU,EAAE2pF,YAAY,EAAE8/H,iBAAiB,EAAE;IACzDF,aAAa,GAAGE,iBAAiB;IACjCzzJ,kBAAkB,GAAGh2D,UAAU;IAC/Bz0C,CAAC,CAACm+P,kBAAkB,GAAG1zJ,kBAAkB;IACzCzqG,CAAC,CAACo+P,oBAAoB,GAAGhgI,YAAY;EACvC;EAEA,OAAO;IACLtsI,IAAI;IACJmsQ,iBAAiB;IACjBT;EACF,CAAC;AACH,CAAC,EAAE,CAAC;AC1LJ,IAAIa,UAAU,GAAI,YAAY;EAC5B,SAASC,qBAAqBA,CAAA,EAAG;IAC/B,IAAIC,qBAAqB,GAAGvsQ,MAAM,CAACC,KAAK,CAAC;MACvCM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBmxG,+BAA+B,CAAC,qBAAqB,CAAC;QACtDrhG,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,qBAAqB,CAAC;QAC5C2vQ,kBAAkB,CAAC1sQ,IAAI,CAAC,CAAC;MAC3B;IACF,CAAC,CAAC;IACF,IAAI2sQ,2BAA2B,GAAGzsQ,MAAM,CAACC,KAAK,CAAC;MAC7CM,IAAI,EAAE,kBAAkB;MACxBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBmxG,+BAA+B,CAAC,2BAA2B,CAAC;QAC5DrhG,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,YAAY,CAAC;QACnC6vQ,wBAAwB,CAAC5sQ,IAAI,CAAC,CAAC;MACjC;IACF,CAAC,CAAC;IACF,IAAI6sQ,2BAA2B,GAAG3sQ,MAAM,CAACC,KAAK,CAAC;MAC7CM,IAAI,EAAE,kBAAkB;MACxBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBmxG,+BAA+B,CAAC,4BAA4B,CAAC;QAC7DrhG,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,YAAY,CAAC;QACnC+vQ,wBAAwB,CAAC9sQ,IAAI,CAAC,CAAC;MACjC;IACF,CAAC,CAAC;IAEF,IAAIqsC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAEvCwvC,OAAO,CAAC9uC,WAAW,CAACkvQ,qBAAqB,CAAC;IAE1C,IAAIv+P,CAAC,CAACC,OAAO,CAACiwC,cAAc,KAAK,IAAI,IAAIlwC,CAAC,CAACC,OAAO,CAACgwC,gBAAgB,KAAK,KAAK,EAAE,CAC/E,CAAC,MAAM;MACL9R,OAAO,CAAC9uC,WAAW,CAACovQ,2BAA2B,CAAC;MAChDtgO,OAAO,CAAC9uC,WAAW,CAACsvQ,2BAA2B,CAAC;IAClD;IAEA79P,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC8uC,OAAO,CAAC;EACvC;EAEA,SAASrsC,IAAIA,CAAA,EAAG;IACd;IACA,IAAI,CAACkO,CAAC,CAACC,OAAO,CAACgwC,gBAAgB,EAAE;MAC/B20D,+BAA+B,CAAC,qBAAqB,CAAC;MACtD45J,kBAAkB,CAAC1sQ,IAAI,CAAC,CAAC;IAC3B,CAAC,MAAM;MACLwsQ,qBAAqB,CAAC,CAAC;IACzB;EACF;EAEA,OAAO;IACLxsQ;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC5DJ,IAAI+sQ,cAAc,GAAI,YAAY;EAChC,SAASC,oCAAoCA,CAAC11O,EAAE,EAAE;IAC9CppB,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,oCAAoC;MACxExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACggN,sCAAsC;QACzD31O,EAAE,CAAC8uB,GAAG,CAAC;MACX,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA;EACA;EACA,SAASq+P,mCAAmCA,CAAC97M,UAAU,EAAE4gK,QAAQ,EAAE16L,EAAE,EAAE;IACnEppB,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,mCAAmC;MACvExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAG4a,UAAU,GAAG,iBAAiB,GAAG4gK,QAAQ,GAAG,IAAI;MAC7GllK,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACkgN,qCAAqC;QACxD71O,EAAE,CAAC8uB,GAAG,EAAEgL,UAAU,CAAC;MACrB,CAAC;MACDviD,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEA,eAAeu+P,4BAA4BA,CAAC7gN,UAAU,EAAE;IACpD;IACA,IAAI;MACF,MAAM/4B,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,4BAA4B;QAChExoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACgiC,UAAU,CAAC;QAChCO,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACd,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACrC;EACJ;EAEA,SAASoyJ,6BAA6BA,CAAC/1O,EAAE,EAAE;IACvC;IACAppB,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,6BAA6B;MACjExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACqgN,+BAA+B;QAClDh2O,EAAE,CAAC8uB,GAAG,CAAC;MACX,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEE,SAAS0+P,+BAA+BA,CAACC,SAAS,EAAEp8M,UAAU,EAAE95B,EAAE,EAAE;IAClE;IACAk2O,SAAS,GAAGh9O,IAAI,CAACkY,eAAe,CAAC8kO,SAAS,CAAC;IAC3Ct/P,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,+BAA+B;MACnExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,iBAAiB,GAAGg3N,SAAS,GAAG,kBAAkB,GAAGp8M,UAAU,GAAE,IAAI;MAC5GtE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACwgN,iCAAiC;QACpDn2O,EAAE,CAAC8uB,GAAG,CAAC;MACX,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACJ;EAEA,SAAS6+P,kCAAkCA,CAACp2O,EAAE,EAAE;IAC5C;IACAppB,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,sCAAsC;MAC1ExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC0gN,wCAAwC;QAC3Dr2O,EAAE,CAAC8uB,GAAG,CAAC;MACX,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEF,SAAS++P,gCAAgCA,CAACrhN,UAAU,EAAE;IAClD;IACAr+C,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,gCAAgC;MACpE;MACAxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACgiC,UAAU,CAAC;MAChCO,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC4gN,kCAAkC;MACzD,CAAC;MACDh/P,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEA,SAASi/P,wBAAwBA,CAACx2O,EAAE,EAAE;IAClC;IACAppB,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,wBAAwB;MAC5DxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC8gN,0BAA0B;QAC7Cz2O,EAAE,CAAC8uB,GAAG,CAAC;MACX,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEA,SAASm/P,8BAA8BA,CAAC58M,UAAU,EAAE95B,EAAE,EAAE;IAAC;IACrDppB,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,8BAA8B;MAClExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,kBAAkB,GAAG4a,UAAU,GAAG,IAAI;MAC7EtE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACghN,gCAAgC;QACnD32O,EAAE,CAAC8uB,GAAG,CAAC;MACX,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEA,SAASq/P,kCAAkCA,CAAC3hN,UAAU,EAAE;IAAC;IACrDr+C,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,kCAAkC;MACtExoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACgiC,UAAU,CAAC;MAChCO,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACkhN,oCAAoC;QACvD;MACJ,CAAC;MACDt/P,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEA,eAAeu/P,oCAAoCA,CAACC,OAAO,EAAEr8C,QAAQ,EAAE;IACrE,IAAI;MACA,MAAMx+L,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,oCAAoC;QACxExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,eAAe,GAAG63N,OAAO,GAAG,gBAAgB,GAAGr8C,QAAQ,GAAG,IAAI;QACrGllK,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAeqzJ,kCAAkCA,CAACD,OAAO,EAAEr8C,QAAQ,EAAE;IACjE,IAAI;MACA,MAAMx+L,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,kCAAkC;QAClExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,eAAe,GAAG63N,OAAO,GAAG,gBAAgB,GAAGr8C,QAAQ,GAAG,IAAI;QACzGllK,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEE,SAASszJ,oCAAoCA,CAACC,cAAc,EAAE;IAAC;IAC3DtgQ,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,oCAAoC;MACxExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,sBAAsB,GAAGg4N,cAAc,GAAG,IAAI;MACrF1hN,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACwhN,sCAAsC;MAC7D,CAAC;MACD5/P,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEA,SAAS6/P,yCAAyCA,CAACniN,UAAU,EAAE;IAAC;IAC5Dr+C,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,yCAAyC;MAC7ExoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACgiC,UAAU,CAAC;MAChCO,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC0hN,2CAA2C;MAClE,CAAC;MACD9/P,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEA,SAAS+/P,uCAAuCA,CAACriN,UAAU,EAAE;IAAC;IAC1Dr+C,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,uCAAuC;MAC3ExoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACgiC,UAAU,CAAC;MAChCO,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC4hN,yCAAyC;MAChE,CAAC;MACDhgQ,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEE,eAAeigQ,uCAAuCA,CAACviN,UAAU,EAAE;IAAC;IACpE,IAAI;MACA,MAAM/4B,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QAC1BhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,uCAAuC;QAC3ExoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACgiC,UAAU,CAAC;QAChCO,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACA,OAAOx5B,MAAM,CAACu7O,yCAAyC;IAEzD,CAAC,CAAC,OAAOlgQ,KAAK,EAAE;MAChB,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEE,SAAS+zJ,6BAA6BA,CAACziN,UAAU,EAAEj1B,EAAE,EAAE;IAAC;IACpDppB,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,6BAA6B;MACjExoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACgiC,UAAU,CAAC;MAChCO,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACgiN,+BAA+B;QAClD33O,EAAE,CAAC8uB,GAAG,CAAC;MACX,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEA,OAAO;IACHq+P,mCAAmC,EAAEA,mCAAmC;IACxEF,oCAAoC,EAAEA,oCAAoC;IAC1EI,4BAA4B,EAAEA,4BAA4B;IAC1DC,6BAA6B,EAAEA,6BAA6B;IAC5DE,+BAA+B,EAAEA,+BAA+B;IAChEK,gCAAgC,EAAEA,gCAAgC;IAClEE,wBAAwB,EAAEA,wBAAwB;IAClDE,8BAA8B,EAAEA,8BAA8B;IAC9DO,oCAAoC,EAAEA,oCAAoC;IAC1EL,kCAAkC,EAAEA,kCAAkC;IACtEE,oCAAoC,EAAEA,oCAAoC;IAC1EE,kCAAkC,EAAEA,kCAAkC;IACtEI,yCAAyC,EAAEA,yCAAyC;IACpFE,uCAAuC,EAAEA,uCAAuC;IAChFE,uCAAuC,EAAEA,uCAAuC;IAChFE,6BAA6B,EAAEA,6BAA6B;IAC5DtB,kCAAkC,EAAEA;EACxC,CAAC;AAEH,CAAC,CAAE,CAAC;ACvUJ,IAAIl/P,QAAQ,GAAI,YAAY;EACxB;EACA,IAAI0gQ,sBAAsB;EAC1B,IAAIC,mBAAmB;EACvB,IAAIC,2BAA2B;EAC/B,IAAIC,yBAAyB;EAC7B,IAAIC,wBAAwB;EAC5B,IAAIC,+BAA+B;EACnC,IAAIC,iBAAiB;EACrB,IAAIC,sBAAsB;EAC1B,IAAIC,oBAAoB;EACxB,IAAIC,mBAAmB;EACvB,IAAIC,0BAA0B;EAC9B,IAAIC,eAAe;EACnB,IAAIC,sBAAsB;EAC1B,IAAIC,0BAA0B;;EAE9B;EACA,IAAIhhP,UAAU,GAAGyB,IAAI,CAAC8Z,aAAa,CAAC,CAAC;EACrC,IAAI0lO,cAAc;EAClB,IAAIC,WAAW;EACf,IAAIC,eAAe;EACnB,IAAIC,mBAAmB;EACvB,IAAIC,iBAAiB;EACrB,IAAIC,gBAAgB;EACpB,IAAIC,uBAAuB;EAC3B,IAAIC,SAAS;EACb,IAAIC,cAAc;EAClB,IAAIC,YAAY;EAChB,IAAIC,WAAW;EACf,IAAIC,kBAAkB;EAEtB,IAAIC,0BAA0B;EAC9B;EACA,IAAIC,sBAAsB;EAC1B,IAAIC,oBAAoB;EACxB,IAAIC,2BAA2B;EAC/B,IAAIC,qBAAqB;EACzB,IAAIC,qBAAqB;EACzB,IAAIC,uBAAuB;EAE3B,SAASv6H,WAAWA,CAAC54H,MAAM,EAAE;IACzB;IACA,QAAQA,MAAM;MACV,KAAK,QAAQ;QAAE;UACX,OAAO7P,CAAC,CAACC,OAAO,CAAC+oC,qBAAqB,KAAK,MAAM,IAC7ChpC,CAAC,CAACC,OAAO,CAAC+oC,qBAAqB,KAAK,GAAG,GACrC,EAAE,GACFhpC,CAAC,CAACC,OAAO,CAAC+oC,qBAAqB;UACrC;QACJ;MACA,KAAK,aAAa;QAAE;UAChB,OAAOhpC,CAAC,CAACC,OAAO,CAACspC,uBAAuB;UACxC;QACJ;MACA,KAAK,aAAa;QAAE;UAChB,OAAOvpC,CAAC,CAACC,OAAO,CAAC4oC,yBAAyB;UAC1C;QACJ;MACA,KAAK,WAAW;QAAE;UACd,OAAO7oC,CAAC,CAACC,OAAO,CAACupC,uBAAuB;UACxC;QACJ;MACA,KAAK,UAAU;QAAE;UACb,OAAOxpC,CAAC,CAACC,OAAO,CAACopC,4BAA4B;UAC7C;QACJ;MACA,KAAK,iBAAiB;QAAE;UACpB,OAAOrpC,CAAC,CAACC,OAAO,CAAC0pC,mCAAmC;UACpD;QACJ;MACA;QAAS;UACL,OAAO,IAAI;UACX;QACJ;IACJ;EACJ;EAEA,SAAS++F,WAAWA,CAAC74H,MAAM,EAAErc,KAAK,EAAEkE,IAAI,EAAE;IACtC;IACA,QAAQmY,MAAM;MACV,KAAK,QAAQ;QAAE;UACXiyP,cAAc,GAAGtuQ,KAAK;UACtByvQ,YAAY,CAACC,wBAAwB,CAAC,GAAG,EAAEpB,cAAc,CAAC;UAC1D;UACA9hQ,CAAC,CAACC,OAAO,CAAC+oC,qBAAqB,GAAG84N,cAAc;UAChD;QACJ;MACA,KAAK,aAAa;QAAE;UAChBC,WAAW,GAAGvuQ,KAAK;UACnByvQ,YAAY,CAACC,wBAAwB,CAAC,GAAG,EAAEnB,WAAW,EAAEC,eAAe,CAAC;UACxE;UACAhiQ,CAAC,CAACC,OAAO,CAACspC,uBAAuB,GAAGw4N,WAAW;UAC/C;QACJ;MACA,KAAK,aAAa;QAAE;UAChBE,mBAAmB,GAAGzuQ,KAAK;UAC3ByvQ,YAAY,CAACC,wBAAwB,CAAC,GAAG,EAAEjB,mBAAmB,CAAC;UAC/D;UACAjiQ,CAAC,CAACC,OAAO,CAAC4oC,yBAAyB,GAAGo5N,mBAAmB;UACzD;QACJ;MACA,KAAK,WAAW;QAAE;UACdC,iBAAiB,GAAG1uQ,KAAK;UACzByvQ,YAAY,CAACC,wBAAwB,CAAC,GAAG,EAAEhB,iBAAiB,CAAC;UAC7D;UACAliQ,CAAC,CAACC,OAAO,CAACupC,uBAAuB,GAAG04N,iBAAiB;UACrD;QACJ;MACA,KAAK,UAAU;QAAE;UACbC,gBAAgB,GAAG3uQ,KAAK;UACxByvQ,YAAY,CAACC,wBAAwB,CAAC,GAAG,EAAEf,gBAAgB,CAAC;UAC5D;UACAniQ,CAAC,CAACC,OAAO,CAACopC,4BAA4B,GAAG84N,gBAAgB;UACzD;QACJ;MACA,KAAK,iBAAiB;QAAE;UACpBC,uBAAuB,GAAG5uQ,KAAK;UAC/ByvQ,YAAY,CAACC,wBAAwB,CAAC,GAAG,EAAEd,uBAAuB,CAAC;UACnE;UACApiQ,CAAC,CAACC,OAAO,CAAC0pC,mCAAmC,GAAGy4N,uBAAuB;UACvE;QACJ;MACA;QAAS;UACL,OAAO,IAAI;UACX;QACJ;IACJ;;IAEA;EACJ;EAEA,SAASe,uBAAuBA,CAACtzP,MAAM,EAAE;IACrC;IACA,QAAQA,MAAM;MACV,KAAK,QAAQ;QAAE;UACX,IAAIwyP,SAAS,EAAE;YACXY,YAAY,CAACG,uBAAuB,CAAC,GAAG,EAAE,wBAAwB,CAAC;YACnEpjQ,CAAC,CAACC,OAAO,CAACqpC,yBAAyB,GAAG,wBAAwB;UAClE,CAAC,MAAM;YACH25N,YAAY,CAACG,uBAAuB,CAAC,GAAG,EAAE,EAAE,CAAC;YAC7CpjQ,CAAC,CAACC,OAAO,CAACqpC,yBAAyB,GAAG,EAAE;UAC5C;UACA;QACJ;MACA,KAAK,aAAa;QAAE;UAChB,IAAIg5N,cAAc,EAAE;YAChBW,YAAY,CAACG,uBAAuB,CAAC,GAAG,EAAE,wBAAwB,CAAC;YACnEpjQ,CAAC,CAACC,OAAO,CAACkpC,6BAA6B,GAAG,wBAAwB;UACtE,CAAC,MAAM;YACH85N,YAAY,CAACG,uBAAuB,CAAC,GAAG,EAAE,EAAE,CAAC;YAC7CpjQ,CAAC,CAACC,OAAO,CAACkpC,6BAA6B,GAAG,EAAE;UAChD;UACA;QACJ;MACA,KAAK,WAAW;QAAE;UACd,IAAIo5N,YAAY,EAAE;YACdU,YAAY,CAACG,uBAAuB,CAAC,GAAG,EAAE,wBAAwB,CAAC;YACnEpjQ,CAAC,CAACC,OAAO,CAACwpC,sBAAsB,GAAG,wBAAwB;UAC/D,CAAC,MAAM;YACHw5N,YAAY,CAACG,uBAAuB,CAAC,GAAG,EAAE,EAAE,CAAC;YAC7CpjQ,CAAC,CAACC,OAAO,CAACwpC,sBAAsB,GAAG,EAAE;UACzC;UACA;QACJ;MACA,KAAK,UAAU;QAAE;UACb,IAAI+4N,WAAW,EAAE;YACbS,YAAY,CAACG,uBAAuB,CAAC,GAAG,EAAE,wBAAwB,CAAC;YACnEpjQ,CAAC,CAACC,OAAO,CAACmpC,uBAAuB,GAAG,wBAAwB;UAChE,CAAC,MAAM;YACH65N,YAAY,CAACG,uBAAuB,CAAC,GAAG,EAAE,EAAE,CAAC;YAC7CpjQ,CAAC,CAACC,OAAO,CAACmpC,uBAAuB,GAAG,EAAE;UAC1C;UACA;QACJ;MACA,KAAK,iBAAiB;QAAE;UACpB,IAAIq5N,kBAAkB,EAAE;YACpBQ,YAAY,CAACG,uBAAuB,CAAC,GAAG,EAAE,wBAAwB,CAAC;YACnEpjQ,CAAC,CAACC,OAAO,CAACypC,8BAA8B,GAAG,wBAAwB;UACvE,CAAC,MAAM;YACHu5N,YAAY,CAACG,uBAAuB,CAAC,GAAG,EAAE,EAAE,CAAC;YAC7CpjQ,CAAC,CAACC,OAAO,CAACypC,8BAA8B,GAAG,EAAE;UACjD;UACA;QACJ;MACA;QAAS;UACL,OAAO,IAAI;UACX;QACJ;IACJ;EACJ;;EAEA;EACA;EACA;;EAEA,SAAS25N,QAAQA,CAACxzP,MAAM,EAAE;IACtB,QAAQA,MAAM;MACV,KAAK,QAAQ;QAAE;UACX,OAAOkyP,WAAW;UAClB;QACJ;IACJ;EACJ;EAEA,SAASuB,QAAQA,CAACzzP,MAAM,EAAE0xG,QAAQ,EAAE;IAChC;IACA,QAAQ1xG,MAAM;MACV,KAAK,QAAQ;QAAE;UACXkyP,WAAW,GAAGxgJ,QAAQ;UACtB;QACJ;IACJ;IAEA0hJ,YAAY,CAACjoN,eAAe,CAAC,CAAC;EAClC;EAEA,SAASy0E,YAAYA,CAAA,EAAG;IACpB,IAAI8zI,yBAAyB,GAAG,IAAIrjN,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MACnEgxJ,cAAc,CAACkK,sBAAsB,CAAC39I,UAAU,EAAEytG,GAAG,IAAI;QACrDq0I,sBAAsB,GAAGr0I,GAAG,CAAC31H,GAAG,CAAC21H,GAAG,IAAI;UACpC,IAAIl8H,EAAE,GAAG,MAAMk8H,GAAG,CAACprE,UAAU,EAAE;UAC/B,IAAI1vD,KAAK,GAAG86H,GAAG,CAACprE,UAAU;UAC1B,IAAI3wD,IAAI,GAAG+7H,GAAG,CAACrmF,IAAI;UACnB,OAAO;YACH71C,EAAE;YACFoB,KAAK;YACLjB;UACJ,CAAC;QACL,CAAC,CAAC;QACF;QACA;QACA;QACA,IAAIk2I,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,EACjCk6H,sBAAsB,CAACpwM,OAAO,CAAC;UAC3BngE,EAAE,EAAE,MAAM;UACVoB,KAAK,EAAE,IAAI;UACXjB,IAAI,EAAE;QACV,CAAC,CAAC;QACN4tD,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAIqjN,uBAAuB,GAAG,IAAItjN,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MACjEmgQ,YAAY,CAACC,iBAAiB,CAAC7iP,UAAU,EAAE5Q,CAAC,IAAI;QAC5C2yP,oBAAoB,GAAG3yP,CAAC,CAACtX,GAAG,CAAC21H,GAAG,IAAI;UAChC,IAAIl8H,EAAE,GAAG,MAAMk8H,GAAG,CAACl8H,EAAE,EAAE;UACvB,IAAIoB,KAAK,GAAG86H,GAAG,CAACl8H,EAAE;UAClB,IAAIG,IAAI,GAAG+7H,GAAG,CAAC52H,IAAI;UACnB,OAAO;YACHtF,EAAE;YACFoB,KAAK;YACLjB;UACJ,CAAC;QACL,CAAC,CAAC;QACF;QACA;QACA;QACA,IAAIk2I,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,IAAIA,WAAW,CAAC,UAAU,CAAC,KAAK,GAAG,EACjEm6H,oBAAoB,CAACrwM,OAAO,CAAC;UAAEngE,EAAE,EAAE,MAAM;UAAEoB,KAAK,EAAE,GAAG;UAAEjB,IAAI,EAAE;QAAM,CAAC,CAAC;QACzE4tD,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAIwjN,wBAAwB,GAAG,IAAIzjN,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MAClEw/P,qBAAqB,GAAG9iQ,CAAC,CAACC,OAAO,CAACyoC,SAAS,CAAC/vC,GAAG,CAAC,CAACkB,QAAQ,EAAE0O,KAAK,KAAK;QACjE,IAAInW,EAAE,GAAG,MAAM4N,CAAC,CAACC,OAAO,CAAC0oC,WAAW,CAACpgC,KAAK,CAAC,EAAE;QAC7C,IAAI/U,KAAK,GAAGwM,CAAC,CAACC,OAAO,CAAC0oC,WAAW,CAACpgC,KAAK,CAAC;QACxC,IAAIhW,IAAI,GAAGsH,QAAQ;QACnB,OAAO;UACHzH,EAAE;UACFoB,KAAK;UACLjB;QACJ,CAAC;MACL,CAAC,CAAC;MACF;MACA;MACA;MACA,IAAIk2I,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE;QACjCq6H,qBAAqB,CAACvwM,OAAO,CAAC;UAAEngE,EAAE,EAAE,MAAM;UAAEoB,KAAK,EAAE,IAAI;UAAEjB,IAAI,EAAE;QAAoB,CAAC,CAAC;MACzF;MACA4tD,OAAO,CAAC,SAAS,CAAC;IACtB,CAAC,CAAC;IAEF,IAAIyjN,gBAAgB,GAAG,IAAI1jN,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MAC1D2/P,YAAY,CAAChhH,kBAAkB,CAAC3zB,GAAG,IAAI;QACnCy0I,qBAAqB,GAAGz0I,GAAG,CAAC31H,GAAG,CAAC21H,GAAG,IAAI;UACnC,IAAIl8H,EAAE,GAAG,OAAOk8H,GAAG,CAACxuB,EAAE,EAAE;UACxB,IAAItsG,KAAK,GAAG86H,GAAG,CAACxuB,EAAE;UAClB,IAAIvtG,IAAI,GAAG+7H,GAAG,CAACrmF,IAAI;UACnB,OAAO;YACH71C,EAAE;YACFoB,KAAK;YACLjB;UACJ,CAAC;QACL,CAAC,CAAC;QACF;QACA;QACA;QACA,IAAIk2I,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,EAC5Bs6H,qBAAqB,CAACxwM,OAAO,CAAC;UAAEngE,EAAE,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEjB,IAAI,EAAE;QAAM,CAAC,CAAC;QAC5E4tD,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAI0jN,kBAAkB,GAAG,IAAI3jN,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MAC5D2/P,YAAY,CAAC1nN,iBAAiB,CAC1Bv7C,CAAC,CAACC,OAAO,CAAC+oC,qBAAqB,KAAK,MAAM,GAAG,EAAE,GAAGhpC,CAAC,CAACC,OAAO,CAAC+oC,qBAAqB,EACjFkP,GAAG,IAAI;QACH8qN,uBAAuB,GAAG9qN,GAAG,CAACv/C,GAAG,CAACtD,KAAK,IAAI;UACvC,IAAIjD,EAAE,GAAG,SAASiD,KAAK,CAACwhK,SAAS,IAAIxhK,KAAK,CAAC8hK,UAAU,EAAE;UACvD,IAAI3jK,KAAK,GAAG,GAAG6B,KAAK,CAACwhK,SAAS,IAAIxhK,KAAK,CAAC8hK,UAAU,EAAE;UACpD,IAAI5kK,IAAI,GAAG8C,KAAK,CAAC2hK,SAAS;UAC1B,OAAO;YACH5kK,EAAE;YACFoB,KAAK;YACLjB;UACJ,CAAC;QACL,CAAC,CAAC;QACF;QACA;QACA;QACA;QACA4tD,OAAO,CAAC,SAAS,CAAC;MACtB,CACJ,CAAC;IACL,CAAC,CAAC;IAEF,IAAI2jN,8BAA8B,GAAG,IAAI5jN,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MACxE2/P,YAAY,CAAChhH,kBAAkB,CAAC3zB,GAAG,IAAI;QACnCu0I,2BAA2B,GAAGv0I,GAAG,CAAC31H,GAAG,CAAC21H,GAAG,IAAI;UACzC,IAAIl8H,EAAE,GAAG,OAAOk8H,GAAG,CAACxuB,EAAE,EAAE;UACxB,IAAItsG,KAAK,GAAG86H,GAAG,CAACxuB,EAAE;UAClB,IAAIvtG,IAAI,GAAG+7H,GAAG,CAACrmF,IAAI;UACnB,OAAO;YACH71C,EAAE;YACFoB,KAAK;YACLjB;UACJ,CAAC;QACL,CAAC,CAAC;QACF;QACA;QACA;QACAswQ,2BAA2B,CAACtwM,OAAO,CAAC;UAAEngE,EAAE,EAAE,OAAO;UAAEoB,KAAK,EAAE,GAAG;UAAEjB,IAAI,EAAE;QAAM,CAAC,CAAC;QAC7E4tD,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;IAEFD,OAAO,CAACmrF,GAAG,CAAC,CACRk4H,yBAAyB,EACzBC,uBAAuB,EACvBG,wBAAwB,EACxBC,gBAAgB,EAChBC,kBAAkB,EAClBC,8BAA8B,CACjC,CAAC,CAACpjJ,IAAI,CAAC,MAAM;MACVlgH,SAAS,CAAC,CAAC;IACf,CAAC,CAAC;EACN;EAEA,SAAS62J,oBAAoBA,CAACxnJ,MAAM,EAAE;IAClC,QAAQA,MAAM;MACV,KAAK,QAAQ;QAAE;UACX,IAAI7P,CAAC,CAACC,OAAO,CAACqpC,yBAAyB,KAAK,wBAAwB,EAAE,OAAO,IAAI,CAAC,KAC7E,OAAO,KAAK;UACjB;QACJ;MACA,KAAK,aAAa;QAAE;UAChB,IAAItpC,CAAC,CAACC,OAAO,CAACkpC,6BAA6B,KAAK,wBAAwB,EACpE,OAAO,IAAI,CAAC,KACX,OAAO,KAAK;UACjB;QACJ;MACA,KAAK,WAAW;QAAE;UACd,IAAInpC,CAAC,CAACC,OAAO,CAACwpC,sBAAsB,KAAK,wBAAwB,EAAE,OAAO,IAAI,CAAC,KAC1E,OAAO,KAAK;UACjB;QACJ;MACA,KAAK,UAAU;QAAE;UACb,IAAIzpC,CAAC,CAACC,OAAO,CAACmpC,uBAAuB,KAAK,wBAAwB,EAAE,OAAO,IAAI,CAAC,KAC3E,OAAO,KAAK;UACjB;QACJ;MACA,KAAK,iBAAiB;QAAE;UACpB,IAAIppC,CAAC,CAACC,OAAO,CAACypC,8BAA8B,KAAK,wBAAwB,EAAE,OAAO,IAAI,CAAC,KAClF,OAAO,KAAK;UACjB;QACJ;MACA;QAAS;UACL,OAAO,IAAI;UACX;QACJ;IACJ;EACJ;EAEA,SAASq6N,6BAA6BA,CAACz1I,GAAG,EAAE;IACxC2yI,mBAAmB,CAACxyQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC7Cq0Q,uBAAuB,GAAG,IAAI;IAC9BC,YAAY,CAAC1nN,iBAAiB,CAAC+yE,GAAG,EAAEp2E,GAAG,IAAI;MACvC8qN,uBAAuB,GAAG9qN,GAAG,CAACv/C,GAAG,CAACtD,KAAK,IAAI;QACvC,IAAIjD,EAAE,GAAG,SAASiD,KAAK,CAACwhK,SAAS,IAAIxhK,KAAK,CAAC8hK,UAAU,EAAE;QACvD,IAAI3jK,KAAK,GAAG,GAAG6B,KAAK,CAACwhK,SAAS,IAAIxhK,KAAK,CAAC8hK,UAAU,EAAE;QACpD,IAAI5kK,IAAI,GAAG8C,KAAK,CAAC2hK,SAAS;QAC1B,OAAO;UACH5kK,EAAE;UACFoB,KAAK;UACLjB;QACJ,CAAC;MACL,CAAC,CAAC;MACF;MACA;MACA;MACA;MACAm2I,WAAW,CAAC,aAAa,EAAE,OAAOpa,GAAG,EAAE,CAAC;MACxC16H,QAAQ,CAAC5E,QAAQ,CAACiyQ,mBAAmB,EAAE+B,uBAAuB,EAAE,OAAO10I,GAAG,EAAE,CAAC;MAC7E2yI,mBAAmB,CAACxyQ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACpD,CAAC,CAAC;EACN;EAEA,SAAS8R,SAASA,CAAA,EAAG;IACjB,IAAIwjQ,YAAY,GAAGpyQ,QAAQ,CAACC,aAAa,CAAC,sBAAsB,CAAC;IACjEmyQ,YAAY,CAACj1Q,SAAS,GAAG,EAAE;IAE3B,MAAMk1Q,QAAQ,GAAGryQ,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC5C8xQ,QAAQ,CAAC7tQ,SAAS,GAAG,UAAU;IAC/B6tQ,QAAQ,CAACx1Q,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAExC,IAAIu1Q,aAAa,GAAGtyQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD,IAAIgyQ,mBAAmB,GAAGvyQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACtD+xQ,aAAa,CAACz1Q,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAC9Cw1Q,mBAAmB,CAAC11Q,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC3Cw1Q,mBAAmB,CAACp1Q,SAAS,GAAG,QAAQ;IAExC,IAAIq1Q,iBAAiB,GAAGxyQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD,IAAIkyQ,uBAAuB,GAAGzyQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC1DiyQ,iBAAiB,CAAC31Q,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAClD01Q,uBAAuB,CAAC51Q,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC/C01Q,uBAAuB,CAACt1Q,SAAS,GAAG,cAAc;IAElD,IAAIu1Q,gBAAgB,GAAG1yQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD,IAAIoyQ,sBAAsB,GAAG3yQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACzDmyQ,gBAAgB,CAAC71Q,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACjD41Q,sBAAsB,CAAC91Q,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC9C41Q,sBAAsB,CAACx1Q,SAAS,GAAG,yBAAyB;IAE5D,IAAIy1Q,eAAe,GAAG5yQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnD,IAAIsyQ,qBAAqB,GAAG7yQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACxDqyQ,eAAe,CAAC/1Q,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAChD81Q,qBAAqB,CAACh2Q,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC7C81Q,qBAAqB,CAAC11Q,SAAS,GAAG,UAAU;IAE5C,IAAI21Q,uBAAuB,GAAG9yQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3D,IAAIwyQ,6BAA6B,GAAG/yQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAChEuyQ,uBAAuB,CAACj2Q,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACxDg2Q,6BAA6B,CAACl2Q,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IACrDg2Q,6BAA6B,CAAC51Q,SAAS,GAAG,mBAAmB;IAE7D,IAAI61Q,sBAAsB,GAAGhzQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1D,IAAI0yQ,4BAA4B,GAAGjzQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC/DyyQ,sBAAsB,CAACn2Q,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACvDk2Q,4BAA4B,CAACp2Q,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IACpDk2Q,4BAA4B,CAAC91Q,SAAS,GAAG,kBAAkB;IAE3D,IAAI+1Q,gBAAgB,GAAGlzQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD,IAAI4yQ,sBAAsB,GAAGnzQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACzD2yQ,gBAAgB,CAACr2Q,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACjDo2Q,sBAAsB,CAACt2Q,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC9Co2Q,sBAAsB,CAACh2Q,SAAS,GAAG,YAAY;IAE/CiyQ,sBAAsB,GAAGptQ,QAAQ,CAAC3B,KAAK,CAAC;MACpC4B,UAAU,EAAE,uBAAuB;MACnCE,KAAK,EAAE,kBAAkB;MACzBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEF4uQ,iBAAiB,GAAG7rQ,KAAK,CAACyB,aAAa,CAAC;MACpC3E,IAAI,EAAE,wBAAwB;MAC9BuB,SAAS,EAAE,aAAa;MACxBpB,KAAK,EAAE,WAAW;MAClB0E,SAAS,EAAEirQ;IACf,CAAC,CAAC;IACFpB,mBAAmB,GAAGrtQ,QAAQ,CAAC3B,KAAK,CAAC;MACjC4B,UAAU,EAAE,oBAAoB;MAChCE,KAAK,EAAE,eAAe;MACtBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFwuQ,2BAA2B,GAAGttQ,QAAQ,CAAC3B,KAAK,CAAC;MACzC4B,UAAU,EAAE,4BAA4B;MACxCC,SAAS,EAAE,mBAAmB;MAC9BC,KAAK,EAAE,kBAAkB;MACzBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEF6uQ,sBAAsB,GAAG9rQ,KAAK,CAACyB,aAAa,CAAC;MACzC3E,IAAI,EAAE,wBAAwB;MAC9BuB,SAAS,EAAE,aAAa;MACxBpB,KAAK,EAAE,WAAW;MAClB0E,SAAS,EAAEkrQ;IACf,CAAC,CAAC;IACFnB,yBAAyB,GAAGvtQ,QAAQ,CAAC3B,KAAK,CAAC;MACvC4B,UAAU,EAAE,0BAA0B;MACtCC,SAAS,EAAE,mBAAmB;MAC9BC,KAAK,EAAE,kBAAkB;MACzBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEF8uQ,oBAAoB,GAAG/rQ,KAAK,CAACyB,aAAa,CAAC;MACvC3E,IAAI,EAAE,wBAAwB;MAC9BuB,SAAS,EAAE,aAAa;MACxBpB,KAAK,EAAE,WAAW;MAClB0E,SAAS,EAAEmrQ;IACf,CAAC,CAAC;IACFnB,wBAAwB,GAAGxtQ,QAAQ,CAAC3B,KAAK,CAAC;MACtC4B,UAAU,EAAE,yBAAyB;MACrCC,SAAS,EAAE,mBAAmB;MAC9BC,KAAK,EAAE,kBAAkB;MACzBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEF+uQ,mBAAmB,GAAGhsQ,KAAK,CAACyB,aAAa,CAAC;MACtC3E,IAAI,EAAE,wBAAwB;MAC9BuB,SAAS,EAAE,aAAa;MACxBpB,KAAK,EAAE,WAAW;MAClB0E,SAAS,EAAEorQ;IACf,CAAC,CAAC;IACFnB,+BAA+B,GAAGztQ,QAAQ,CAAC3B,KAAK,CAAC;MAC7C4B,UAAU,EAAE,gCAAgC;MAC5CC,SAAS,EAAE,mBAAmB;MAC9BC,KAAK,EAAE,kBAAkB;MACzBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEFgvQ,0BAA0B,GAAGjsQ,KAAK,CAACyB,aAAa,CAAC;MAC7C3E,IAAI,EAAE,wBAAwB;MAC9BuB,SAAS,EAAE,aAAa;MACxBpB,KAAK,EAAE,WAAW;MAClB0E,SAAS,EAAEqrQ;IACf,CAAC,CAAC;IAEF,IAAIxzE,UAAU,GAAGj9L,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,MAAM;MACZF,IAAI,EAAE,WAAW;MACjBM,IAAI,EAAE,MAAM;MACZU,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,aAAa;QAAEC,KAAK,EAAE;MAAO,CAAC;IACtD,CAAC,CAAC;IAEFmuQ,eAAe,GAAGlsQ,KAAK,CAACxD,KAAK,CAAC;MAC1BG,EAAE,EAAE,YAAY;MAChB2B,KAAK,EAAE,sBAAsB;MAC7BpB,IAAI,EAAE,QAAQ;MACdD,KAAK,EAAE,WAAW;MAClBW,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,EAC1B;QAAED,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAM,CAAC,EAC5B;QACID,GAAG,EAAE,YAAY;QACjBC,KAAK,EAAE;MACX,CAAC,CACJ;MACDA,KAAK,EAAEwM,CAAC,CAACC,OAAO,CAAC0nC;IACrB,CAAC,CAAC;IAEFi6N,sBAAsB,GAAGnsQ,KAAK,CAACxD,KAAK,CAAC;MACjCG,EAAE,EAAE,YAAY;MAChB2B,KAAK,EAAE,qBAAqB;MAC5BpB,IAAI,EAAE,QAAQ;MACdD,KAAK,EAAE,WAAW;MAClBW,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,EAC1B;QAAED,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAK,CAAC,EAC3B;QACID,GAAG,EAAE,YAAY;QACjBC,KAAK,EAAE;MACX,CAAC,CACJ;MACDA,KAAK,EAAEwM,CAAC,CAACC,OAAO,CAAC8qC;IACrB,CAAC,CAAC;IAEF82N,0BAA0B,GAAGpsQ,KAAK,CAACxD,KAAK,CAAC;MACrCG,EAAE,EAAE,mBAAmB;MACvB2B,KAAK,EAAE,oCAAoC;MAC3CpB,IAAI,EAAE,QAAQ;MACdD,KAAK,EAAE,WAAW;MAClBW,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,EAC1B;QAAED,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAM,CAAC,EAC5B;QACID,GAAG,EAAE,YAAY;QACjBC,KAAK,EAAE;MACX,CAAC,CACJ;MACDA,KAAK,EAAEwM,CAAC,CAACC,OAAO,CAAC+qC;IACrB,CAAC,CAAC;;IAEF;IACAg5N,YAAY,CAAC30Q,WAAW,CAAC40Q,QAAQ,CAAC;;IAElC;IACA,IAAI5B,SAAS,EAAErB,sBAAsB,CAACvyQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC/D,IAAI0zQ,SAAS,EAAEpB,mBAAmB,CAACxyQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC5D,IAAI2zQ,cAAc,EAAEpB,2BAA2B,CAACzyQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzE,IAAI4zQ,YAAY,EAAEpB,yBAAyB,CAAC1yQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrE,IAAI6zQ,WAAW,EAAEpB,wBAAwB,CAAC3yQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACnE,IAAI8zQ,kBAAkB,EAAEpB,+BAA+B,CAAC5yQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;;IAEjF;IACAq2Q,gBAAgB,GAAGpzQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD8yQ,qBAAqB,GAAGrzQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD+yQ,mBAAmB,GAAGtzQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDgzQ,kBAAkB,GAAGvzQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDizQ,yBAAyB,GAAGxzQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzD6yQ,gBAAgB,CAACv2Q,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAC9Cs2Q,qBAAqB,CAACx2Q,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IACnDu2Q,mBAAmB,CAACz2Q,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IACjDw2Q,kBAAkB,CAAC12Q,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAChDy2Q,yBAAyB,CAAC32Q,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAEvDq2Q,gBAAgB,CAAC31Q,WAAW,CAACiyQ,iBAAiB,CAAC;IAC/C2D,qBAAqB,CAAC51Q,WAAW,CAACkyQ,sBAAsB,CAAC;IACzD2D,mBAAmB,CAAC71Q,WAAW,CAACmyQ,oBAAoB,CAAC;IACrD2D,kBAAkB,CAAC91Q,WAAW,CAACoyQ,mBAAmB,CAAC;IACnD2D,yBAAyB,CAAC/1Q,WAAW,CAACqyQ,0BAA0B,CAAC;;IAEjE;IACAwC,aAAa,CAAC70Q,WAAW,CAAC80Q,mBAAmB,CAAC;IAC9CD,aAAa,CAAC70Q,WAAW,CAAC2xQ,sBAAsB,CAAC;IACjDkD,aAAa,CAAC70Q,WAAW,CAAC21Q,gBAAgB,CAAC;IAC3Cd,aAAa,CAAC70Q,WAAW,CAAC4xQ,mBAAmB,CAAC;IAC9CiD,aAAa,CAAC70Q,WAAW,CAACwyQ,0BAA0B,CAAC;;IAErD;IACAuC,iBAAiB,CAAC/0Q,WAAW,CAACg1Q,uBAAuB,CAAC;IACtDD,iBAAiB,CAAC/0Q,WAAW,CAAC6xQ,2BAA2B,CAAC;IAC1DkD,iBAAiB,CAAC/0Q,WAAW,CAAC41Q,qBAAqB,CAAC;;IAEpD;IACAX,gBAAgB,CAACj1Q,WAAW,CAACk1Q,sBAAsB,CAAC;IACpDD,gBAAgB,CAACj1Q,WAAW,CAAC8xQ,yBAAyB,CAAC;IACvDmD,gBAAgB,CAACj1Q,WAAW,CAAC61Q,mBAAmB,CAAC;;IAEjD;IACA,IAAIllQ,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzCskQ,eAAe,CAACn1Q,WAAW,CAACo1Q,qBAAqB,CAAC;MAClDD,eAAe,CAACn1Q,WAAW,CAAC+xQ,wBAAwB,CAAC;MACrDoD,eAAe,CAACn1Q,WAAW,CAAC81Q,kBAAkB,CAAC;IACnD;;IAEA;IACA,IAAInlQ,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzCwkQ,uBAAuB,CAACr1Q,WAAW,CAACs1Q,6BAA6B,CAAC;MAClED,uBAAuB,CAACr1Q,WAAW,CAACsyQ,eAAe,CAAC;IACxD;;IAEA;IACA,IAAI3hQ,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzC0kQ,sBAAsB,CAACv1Q,WAAW,CAACw1Q,4BAA4B,CAAC;MAChED,sBAAsB,CAACv1Q,WAAW,CAACgyQ,+BAA+B,CAAC;MACnEuD,sBAAsB,CAACv1Q,WAAW,CAAC+1Q,yBAAyB,CAAC;IACjE;;IAEA;IACAN,gBAAgB,CAACz1Q,WAAW,CAAC01Q,sBAAsB,CAAC;IACpDD,gBAAgB,CAACz1Q,WAAW,CAACuyQ,sBAAsB,CAAC;IAEpDoC,YAAY,CAAC30Q,WAAW,CAAC4/L,UAAU,CAAC;IACpC+0E,YAAY,CAAC30Q,WAAW,CAAC60Q,aAAa,CAAC;IACvCF,YAAY,CAAC30Q,WAAW,CAAC+0Q,iBAAiB,CAAC;IAC3CJ,YAAY,CAAC30Q,WAAW,CAACy1Q,gBAAgB,CAAC;IAC1C,IAAI9kQ,CAAC,CAACC,OAAO,CAAC6oC,WAAW,EAAEk7N,YAAY,CAAC30Q,WAAW,CAACi1Q,gBAAgB,CAAC;IACrE,IAAItkQ,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EACvC8jQ,YAAY,CAAC30Q,WAAW,CAACm1Q,eAAe,CAAC;IAC7C,IAAIxkQ,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EACvC8jQ,YAAY,CAAC30Q,WAAW,CAACq1Q,uBAAuB,CAAC;IACrD,IAAI1kQ,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EACvC8jQ,YAAY,CAAC30Q,WAAW,CAACu1Q,sBAAsB,CAAC;IAEpD5D,sBAAsB,CAACvyQ,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IACzDuyQ,2BAA2B,CAACzyQ,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAC9DwyQ,yBAAyB,CAAC1yQ,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAC5DyyQ,wBAAwB,CAAC3yQ,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAC3D0yQ,+BAA+B,CAAC5yQ,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;;IAElE;IACA,IAAI0zQ,SAAS,IAAIriQ,CAAC,CAACC,OAAO,CAACspC,uBAAuB,KAAK,KAAK,EACxDm/F,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC;;IAErC;IACA;IACA90I,QAAQ,CAAC5E,QAAQ,CACbgyQ,sBAAsB,EACtB+B,qBAAqB,EACrB/iQ,CAAC,CAACC,OAAO,CAAC+oC,qBAAqB,KAAK,MAAM,GAAG,EAAE,GAAGhpC,CAAC,CAACC,OAAO,CAAC+oC,qBAChE,CAAC;IAEDp1C,QAAQ,CAAC5E,QAAQ,CACbiyQ,mBAAmB,EACnB+B,uBAAuB,EACvBhjQ,CAAC,CAACC,OAAO,CAACspC,uBACd,CAAC;IAED31C,QAAQ,CAAC5E,QAAQ,CACbkyQ,2BAA2B,EAC3ByB,sBAAsB,EACtB3iQ,CAAC,CAACC,OAAO,CAAC4oC,yBACd,CAAC;IAEDj1C,QAAQ,CAAC5E,QAAQ,CACboyQ,wBAAwB,EACxBwB,oBAAoB,EACpB5iQ,CAAC,CAACC,OAAO,CAACopC,4BACd,CAAC;IAEDz1C,QAAQ,CAAC5E,QAAQ,CACbqyQ,+BAA+B,EAC/BwB,2BAA2B,EAC3B7iQ,CAAC,CAACC,OAAO,CAAC0pC,mCACd,CAAC;IACD,IAAI3pC,CAAC,CAACC,OAAO,CAAC6oC,WAAW,EACrBl1C,QAAQ,CAAC5E,QAAQ,CACbmyQ,yBAAyB,EACzB2B,qBAAqB,EACrB9iQ,CAAC,CAACC,OAAO,CAACupC,uBACd,CAAC;IACLg0H,iBAAiB,CAAC,CAAC;EACvB;EAEA,SAAS6nG,gCAAgCA,CAAA,EAAG;IACxChD,SAAS,GAAGhrG,oBAAoB,CAAC,QAAQ,CAAC;IAC1CirG,cAAc,GAAGjrG,oBAAoB,CAAC,aAAa,CAAC;IACpDkrG,YAAY,GAAGlrG,oBAAoB,CAAC,WAAW,CAAC;IAChDmrG,WAAW,GAAGnrG,oBAAoB,CAAC,UAAU,CAAC;IAC9CorG,kBAAkB,GAAGprG,oBAAoB,CAAC,iBAAiB,CAAC;EAChE;EAEA,SAASmG,iBAAiBA,CAAA,EAAG;IACzB;IACA;IACAqkG,0BAA0B,CAAC9vQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MACxD,IAAIuzQ,MAAM,GAAG9rP,QAAQ,CAACjqB,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC;MACzC,IAAI8xQ,MAAM,IAAI,GAAG,IAAIA,MAAM,IAAI,CAAC,EAAE;QAC9BrC,YAAY,CAACsC,2BAA2B,CAACD,MAAM,CAAC;MACpD;IACJ,CAAC,CAAC;IACFtE,sBAAsB,CAACjvQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MACpD22I,WAAW,CAAC,QAAQ,EAAEn5I,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACb,KAAK,CAAC;MAC7EuwQ,6BAA6B,CACzBx0Q,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACb,KACrD,CAAC;MACD;MACAk1I,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC;IACjD,CAAC,CAAC;IACF44H,iBAAiB,CAACvvQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MAC/CswQ,SAAS,GAAG,CAACA,SAAS;MACtBc,uBAAuB,CAAC,QAAQ,CAAC;MAEjC,IAAId,SAAS,EAAE;QACXmD,oBAAoB,GAAG5zQ,QAAQ,CAACiD,cAAc,CAAC,oBAAoB,CAAC;QACpEmsQ,sBAAsB,CAACvyQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAChDsyQ,mBAAmB,CAACxyQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC7C62Q,oBAAoB,CAACnxQ,aAAa,GAAG,KAAK;QAC1Cq0I,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC;MACjD,CAAC,MAAM;QACHs4H,sBAAsB,CAACvyQ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACnDuyQ,mBAAmB,CAACxyQ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACpD;IACJ,CAAC,CAAC;IACFuyQ,mBAAmB,CAAClvQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MACjD22I,WAAW,CACP,aAAa,EACbn5I,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACb,KAAK,EACtDjE,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACtF,SACrD,CAAC;IACL,CAAC,CAAC;IACF;IACA;IACAqyQ,wBAAwB,CAACrvQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MACtD22I,WAAW,CAAC,UAAU,EAAEn5I,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACb,KAAK,CAAC;IACnF,CAAC,CAAC;IACFiuQ,mBAAmB,CAAC1vQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MACjDywQ,WAAW,GAAG,CAACA,WAAW;MAC1BW,uBAAuB,CAAC,UAAU,CAAC;MACnC,IAAIX,WAAW,EAAEpB,wBAAwB,CAAC3yQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC,CAAC,KAC/DyyQ,wBAAwB,CAAC3yQ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC9D,CAAC,CAAC;IACF;IACA;IACA2yQ,+BAA+B,CAACtvQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MAC7D,IAAI,CAACsvQ,+BAA+B,CAAC5yQ,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;QACjEmsI,WAAW,CAAC,iBAAiB,EAAEn5I,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACb,KAAK,CAAC;MAC1F,CAAC,MACI;QACD5B,QAAQ,CAACiD,cAAc,CAAC,gCAAgC,CAAC,CAACrB,KAAK,GAAGwM,CAAC,CAACC,OAAO,CAAC0pC,mCAAmC;MACnH;IACJ,CAAC,CAAC;IACF+3N,0BAA0B,CAAC3vQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MACxD0wQ,kBAAkB,GAAG,CAACA,kBAAkB;MACxCU,uBAAuB,CAAC,iBAAiB,CAAC;MAC1C,IAAIV,kBAAkB,EAAEpB,+BAA+B,CAAC5yQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC,CAAC,KAC7E0yQ,+BAA+B,CAAC5yQ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACrE,CAAC,CAAC;IACF;IACA;IACAwyQ,2BAA2B,CAACnvQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MACzD22I,WAAW,CAAC,aAAa,EAAEn5I,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACb,KAAK,CAAC;IACtF,CAAC,CAAC;IAEF+tQ,sBAAsB,CAACxvQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MACpDuwQ,cAAc,GAAG,CAACA,cAAc;MAChCa,uBAAuB,CAAC,aAAa,CAAC;MACtC,IAAIb,cAAc,EAAEpB,2BAA2B,CAACzyQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC,CAAC,KACrEuyQ,2BAA2B,CAACzyQ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACjE,CAAC,CAAC;IACF;IACA;IACAizQ,eAAe,CAAC5vQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MAC7C,IAAIuzQ,MAAM,GAAG9rP,QAAQ,CAACjqB,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC;MACzC,IAAI8xQ,MAAM,IAAI,GAAG,IAAIA,MAAM,IAAI,CAAC,EAAE;QAC9BtlQ,CAAC,CAACC,OAAO,CAAC0nC,+BAA+B,GAAG29N,MAAM;QAClDrC,YAAY,CAACjtE,8BAA8B,CAACsvE,MAAM,CAAC;MACvD;IACJ,CAAC,CAAC;IACF;IACA;IACA1D,sBAAsB,CAAC7vQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MACpD,IAAIuzQ,MAAM,GAAG9rP,QAAQ,CAACjqB,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC;MACzC,IAAI8xQ,MAAM,IAAI,EAAE,IAAIA,MAAM,IAAI,CAAC,EAAE;QAC7BtlQ,CAAC,CAACC,OAAO,CAAC8qC,yBAAyB,GAAGu6N,MAAM;QAC5CrC,YAAY,CAACwC,uBAAuB,CAACH,MAAM,CAAC;MAChD;IACJ,CAAC,CAAC;;IAEF;IACA;IACA,IAAItlQ,CAAC,CAACC,OAAO,CAAC6oC,WAAW,EAAE;MACvBq4N,yBAAyB,CAACpvQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;QACvD22I,WAAW,CAAC,WAAW,EAAEn5I,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACb,KAAK,CAAC;MACpF,CAAC,CAAC;MACFguQ,oBAAoB,CAACzvQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;QAClDwwQ,YAAY,GAAG,CAACA,YAAY;QAC5BY,uBAAuB,CAAC,WAAW,CAAC;QACpC,IAAIZ,YAAY,EAAEpB,yBAAyB,CAAC1yQ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC,CAAC,KACjEwyQ,yBAAyB,CAAC1yQ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC/D,CAAC,CAAC;IACN;EACJ;EACA;EACA;EACA,eAAei6J,0BAA0BA,CAAA,EAAG;IACxC,MAAM+8G,eAAe,GAAG,MAAMzC,YAAY,CAAC0C,kBAAkB,CAAC,CAAC;IAE/D,IAAID,eAAe,CAACx2Q,MAAM,KAAK,CAAC,EAAE;;IAElC;IACA,MAAM02Q,+BAA+B,GAAGjkQ,KAAK,CAAC1P,KAAK,CAAC;MAChDG,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,MAAM6nK,WAAW,GAAGjoK,MAAM,CAACC,KAAK,CAAC;MAC7BG,EAAE,EAAE,2BAA2B;MAC/BG,IAAI,EAAE,UAAU;MAChBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACg3Q,+BAA+B,CAAC;MAC/C;IACJ,CAAC,CAAC;IAEF3rG,WAAW,CAACvnK,KAAK,CAACiS,KAAK,GAAG,MAAM;;IAEhC;IACA,MAAMlC,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CsQ,OAAO,CAAChU,SAAS,CAACE,GAAG,CAAC,uBAAuB,CAAC;IAC9C8T,OAAO,CAAC1T,SAAS,GAAG;AAC5B;AACA,YAAYyD,KAAK,CAACkb,QAAQ;AAC1B,SAAS;IAED,MAAMm4P,UAAU,GAAGj0Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC9C0zQ,UAAU,CAACzvQ,SAAS,GAAG,4BAA4B;IACnDyvQ,UAAU,CAACp3Q,SAAS,CAACE,GAAG,CAAC,0BAA0B,CAAC;;IAEpD;IACA,MAAM+jN,IAAI,GAAG9gN,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACzCugN,IAAI,CAACjkN,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;IAExC+2Q,eAAe,CAACv2Q,OAAO,CAAC22Q,GAAG,IAAI;MAC3B,MAAMnzD,QAAQ,GAAG/gN,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;MAC7CwgN,QAAQ,CAAC5jN,SAAS,GAAG,+BAA+B+2Q,GAAG,CAAC3iN,YAAY,6BAA6B2iN,GAAG,CAACC,aAAa,EAAE;MACpHrzD,IAAI,CAACrjN,WAAW,CAACsjN,QAAQ,CAAC;IAC9B,CAAC,CAAC;;IAEF;IACAizD,+BAA+B,CAACv2Q,WAAW,CAACoT,OAAO,CAAC;IACpDmjQ,+BAA+B,CAACv2Q,WAAW,CAACw2Q,UAAU,CAAC;IACvDD,+BAA+B,CAACv2Q,WAAW,CAACqjN,IAAI,CAAC;IACjDkzD,+BAA+B,CAACv2Q,WAAW,CAAC4qK,WAAW,CAAC;IAExDt4J,KAAK,CAAC9S,IAAI,CAAC+2Q,+BAA+B,CAAC;;IAE3C;IACAF,eAAe,CAACv2Q,OAAO,CAAC22Q,GAAG,IAAI;MAC3B,QAAQA,GAAG,CAACC,aAAa;QACrB,KAAK,yBAAyB;UAC1Br9H,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;UACzBA,WAAW,CAAC,aAAa,EAAE,EAAE,CAAC;UAC9B;QACJ,KAAK,+BAA+B;UAChCA,WAAW,CAAC,aAAa,EAAE,EAAE,CAAC;UAC9B;QACJ,KAAK,6BAA6B;UAC9BA,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;UAC5B;QACJ,KAAK,2BAA2B;UAC5BA,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC;UAC3B;QACJ,KAAK,kCAAkC;UACnCA,WAAW,CAAC,iBAAiB,EAAE,EAAE,CAAC;UAClC;QACJ;UACI/rI,OAAO,CAACC,IAAI,CAAC,mCAAmC,CAAC;UACjD;MACR;IACJ,CAAC,CAAC;EACN;EAEA,SAAS9K,IAAIA,CAAA,EAAG;IACZuzQ,gCAAgC,CAAC,CAAC;IAClC51I,YAAY,CAAC,CAAC;EAClB;EAEA,OAAO;IACH39H,IAAI;IACJ0O,SAAS;IACTioI,WAAW;IACX46H,QAAQ;IACR16G,0BAA0B;IAC1BjgB,WAAW;IACX46H,QAAQ;IACRjsG;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AC56BJ,IAAI4rG,YAAY,GAAI,YAAY;EAC5B,SAASjoN,eAAeA,CAACroD,IAAI,EAAEa,KAAK,EAAEkE,IAAI,EAAE;IACxC,IAAI0jD,QAAQ,GAAG,EAAE;IACjB,IAAIC,UAAU,GAAG,CAAC;IAClB,QAAQ1oD,IAAI;MACR,KAAK,CAAC;QACFyoD,QAAQ,GAAG,wBAAwB;QACnC;MACJ,KAAK,CAAC;QACFA,QAAQ,GAAG,yBAAyB;QACpC1F,YAAY,CAAC,wBAAwB,EAAE,UAAU,EAAE,CAAC,CAAC;QACrDA,YAAY,CAAC,yBAAyB,EAAE,KAAK,EAAE,CAAC,CAAC;QACjD4F,2BAA2B,CAAC,GAAG,EAAE,UAAU,CAAC;QAC5C3F,4BAA4B,CAAC,GAAG,EAAE,KAAK,CAAC;QACxC31C,CAAC,CAAC,eAAe,CAAC,CAACzN,IAAI,CAAC,UAAU,CAAC;QACnC,IAAIiB,KAAK,IAAI,CAAC,IAAIkE,IAAI,IAAI,IAAI,EAAE;UAC5B6jD,iBAAiB,CAAC/nD,KAAK,EAAEkE,IAAI,CAAC;UAC9BsI,CAAC,CAACC,OAAO,CAAC+oC,qBAAqB,GAAGx1C,KAAK;UACvCkiD,YAAY,CAAC,2BAA2B,EAAEh+C,IAAI,EAAE,CAAC,CAAC;UAClD4jD,2BAA2B,CAAC,GAAG,EAAE5jD,IAAI,CAAC;QAC1C,CAAC,MAAM;UACHg+C,YAAY,CACR,2BAA2B,EAC3B,wBAAwB,EACxB,CACJ,CAAC;UACD4F,2BAA2B,CAAC,GAAG,EAAE,wBAAwB,CAAC;QAC9D;QACA;MACJ,KAAK,CAAC;QACFF,QAAQ,GAAG,8BAA8B;QACzC,IAAI5nD,KAAK,IAAI,CAAC,IAAIkE,IAAI,IAAI,IAAI,EAAE;UAC5Bg+C,YAAY,CAAC,+BAA+B,EAAEh+C,IAAI,EAAE,CAAC,CAAC;UACtDg+C,YAAY,CAAC,oCAAoC,EAAEliD,KAAK,EAAE,CAAC,CAAC;UAC5DkiD,YAAY,CAAC,+BAA+B,EAAE,KAAK,EAAE,CAAC,CAAC;UACvD4F,2BAA2B,CAAC,GAAG,EAAE5jD,IAAI,CAAC;UACtCi+C,4BAA4B,CAAC,GAAG,EAAEniD,KAAK,CAAC;UACxCwM,CAAC,CAACC,OAAO,CAAC8oC,6BAA6B,GAAG,OAAO;UACjD/oC,CAAC,CAACC,OAAO,CAACoqC,qBAAqB,GAAG,KAAK;QAC3C,CAAC,MAAM;UACH,IAAIj1B,IAAI,GAAGpV,CAAC,CAAC,IAAI,CAAC,CAACzN,IAAI,CAAC,CAAC;UACzB+oD,2BAA2B,CAAC,GAAG,EAAE,wBAAwB,CAAC;UAC1D,IAAI5jD,IAAI,IAAI,IAAI,EAAE;YACdg+C,YAAY,CAAC,+BAA+B,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD11C,CAAC,CAACC,OAAO,CAAC8oC,6BAA6B,GAAG,MAAM;UACpD;QACJ;QACA;MACJ,KAAK,CAAC;QACFqS,QAAQ,GAAG,6BAA6B;QACxC,IAAI5nD,KAAK,IAAI,CAAC,IAAIkE,IAAI,IAAI,IAAI,EAAE;UAC5Bg+C,YAAY,CAAC,8BAA8B,EAAEh+C,IAAI,EAAE,CAAC,CAAC;UACrDg+C,YAAY,CAAC,+BAA+B,EAAEliD,KAAK,EAAE,CAAC,CAAC;UACvD8nD,2BAA2B,CAAC,GAAG,EAAE5jD,IAAI,CAAC;UACtCi+C,4BAA4B,CAAC,GAAG,EAAEniD,KAAK,CAAC;QAC5C,CAAC,MAAM,CACP;QACA;QACA6nD,UAAU,GAAG,GAAG;QAChB1F,4BAA4B,CAAC0F,UAAU,EAAE7nD,KAAK,CAAC;QAC/C;MACJ,KAAK,CAAC;QACF4nD,QAAQ,GAAG,2BAA2B;QACtC,IAAI5nD,KAAK,IAAI,CAAC,IAAIkE,IAAI,IAAI,IAAI,EAAE;UAC5Bg+C,YAAY,CAAC,6BAA6B,EAAEh+C,IAAI,EAAE,CAAC,CAAC;UACpDg+C,YAAY,CAAC,8BAA8B,EAAEliD,KAAK,EAAE,CAAC,CAAC;UACtD8nD,2BAA2B,CAAC,GAAG,EAAE5jD,IAAI,CAAC;UACtCi+C,4BAA4B,CAAC,GAAG,EAAEniD,KAAK,CAAC;QAC5C,CAAC,MAAM;UACHkiD,YAAY,CACR,6BAA6B,EAC7B,wBAAwB,EACxB,CACJ,CAAC;UACD4F,2BAA2B,CAAC,GAAG,EAAE,wBAAwB,CAAC;QAC9D;QACA;MACJ,KAAK,CAAC;QACFF,QAAQ,GAAG,sBAAsB;QACjC,IAAI5nD,KAAK,IAAI,CAAC,IAAIkE,IAAI,IAAI,IAAI,EAAE;UAC5Bg+C,YAAY,CAAC,wBAAwB,EAAEh+C,IAAI,EAAE,CAAC,CAAC;UAC/Cg+C,YAAY,CAAC,yBAAyB,EAAEliD,KAAK,EAAE,CAAC,CAAC;UACjD8nD,2BAA2B,CAAC,GAAG,EAAE5jD,IAAI,CAAC;UACtCi+C,4BAA4B,CAAC,GAAG,EAAEniD,KAAK,CAAC;QAC5C,CAAC,MAAM;UACHkiD,YAAY,CAAC,wBAAwB,EAAE,UAAU,EAAE,CAAC,CAAC;UACrD4F,2BAA2B,CAAC,GAAG,EAAE,UAAU,CAAC;QAChD;QACA;MACJ,KAAK,CAAC;QACFF,QAAQ,GAAG,kCAAkC;QAC7C,IAAI5nD,KAAK,IAAI,CAAC,IAAIkE,IAAI,IAAI,IAAI,EAAE;UAC5Bg+C,YAAY,CAAC,oCAAoC,EAAEh+C,IAAI,EAAE,CAAC,CAAC;UAC3Dg+C,YAAY,CAAC,qCAAqC,EAAEliD,KAAK,EAAE,CAAC,CAAC;UAC7D8nD,2BAA2B,CAAC,GAAG,EAAE5jD,IAAI,CAAC;UACtCi+C,4BAA4B,CAAC,GAAG,EAAEniD,KAAK,CAAC;QAC5C,CAAC,MAAM;UACHkiD,YAAY,CACR,oCAAoC,EACpC,wBAAwB,EACxB,CACJ,CAAC;UACD4F,2BAA2B,CAAC,GAAG,EAAE,wBAAwB,CAAC;QAC9D;QACA;IACR;IAEA7F,aAAa,CAAC9iD,IAAI,EAAEa,KAAK,CAAC;EAC9B;EAEA,eAAemyQ,kBAAkBA,CAAA,EAAG;IAChC;IACA,MAAM94J,YAAY,GAAG;MACjBruE,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;IACrB,CAAC;IACD,IAAI;MACA,MAAM3zC,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sBAAsB;QAC1BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,OAAOnqD,IAAI,CAACqxQ,wBAAwB;IACxC,CAAC,CAAC,OAAOrlQ,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACtB;EACJ;EAEA,SAASuiQ,wBAAwBA,CAAC7nN,UAAU,EAAE6H,UAAU,EAAE;IACtDljD,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAChCxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnB+S,UAAU,GACV,mBAAmB,GACnB6H,UAAU,GACV,IAAI;MACRtE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;MACtC;MACA;IACJ,CAAC,CAAC;EACN;EAEA,SAASqkN,uBAAuBA,CAAC/nN,UAAU,EAAE8H,YAAY,EAAE;IACvDnjD,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,2BAA2B;MAC9IxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAG+S,UAAU,GAAG,qBAAqB,GAAG8H,YAAY,GAAG,IAAI;MACrHvE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;MACtC;MACA;IACJ,CAAC,CAAC;EACN;EAEA,SAASwmN,2BAA2BA,CAACtvE,iBAAiB,EAAE;IACpDj2L,CAAC,CAACC,OAAO,CAAC+qC,6BAA6B,GAAGirJ,iBAAiB;IAC3Dj2L,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;MACnCxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,0BAA0B,GAC1B2tJ,iBAAiB,GACjB,IAAI;MACRr3I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;MACtC,CAAC;MACDp+C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;EAEA,SAASslQ,oCAAoCA,CAAA,EAAG;IAC5CC,oBAAoB,GAAGlmQ,CAAC,CAAC,iCAAiC,CAAC,CAACm+C,GAAG,CAAC,CAAC;IACjEn+C,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wCAAwC;MAC5CxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,6BAA6B,GAC7B49N,oBAAoB,GACpB,IAAI;MACRtnN,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;MACtC,CAAC;MACDp+C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA,SAASq1L,8BAA8BA,CAACC,iBAAiB,EAAE;IACvDj2L,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,kCAAkC;MACrJxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,0BAA0B,GAAG2tJ,iBAAiB,GAAG,IAAI;MAC5Fr3I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACm3I,oCAAoC;MAC3D,CAAC;MACDv1L,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA,SAAS8kQ,uBAAuBA,CAACU,eAAe,EAAE;IAC9CnmQ,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,6BAA6B;MAChJxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,0BAA0B,GAAG69N,eAAe,GAAG,IAAI;MAC1FvnN,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACqnN,+BAA+B;MACtD,CAAC;MACDzlQ,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA;;EAEA,SAASshJ,kBAAkBA,CAACxuJ,QAAQ,EAAE;IAClCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,oBAAoB;MACvIxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACmjG,sBAAsB;QACzCzuJ,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EACA,SAAS8nD,iBAAiBA,CAAC2H,UAAU,EAAEzvD,QAAQ,EAAE;IAC7CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,yBAAyB;MACvDxoD,IAAI,EAAE,iBAAiB,GAAGuuD,UAAU,GAAG,cAAc,GAAGljD,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC9EsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC2+G,2BAA2B;QAC9CjqK,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EAEA,OAAO;IACH8C,eAAe;IACfuqN,2BAA2B;IAC3BU,oCAAoC;IACpC/C,wBAAwB;IACxBE,uBAAuB;IACvBptE,8BAA8B;IAC9ByvE,uBAAuB;IACvBlqN,iBAAiB;IACjB0mG,kBAAkB;IAClB0jH;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACpUJ,IAAIplQ,IAAI,GAAI,YAAW;EAErB,SAASC,SAASA,CAAA,EAAG;IACnB,IAAI6lQ,QAAQ,GAAGz0Q,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;IACzDw0Q,QAAQ,CAACt3Q,SAAS,GAAG,EAAE;IAEvB,IAAIkgM,UAAU,GAAGj9L,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,MAAM;MACZF,IAAI,EAAE,WAAW;MACjBM,IAAI,EAAE,MAAM;MACZU,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,aAAa;QAAEC,KAAK,EAAE;MAAO,CAAC;IACpD,CAAC,CAAC;IACF,IAAI8yQ,UAAU,GAAGt0Q,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,uBAAuB;MAC/BF,IAAI,EAAE,SAAS;MACfM,IAAI,EAAE,MAAM;MACZU,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,aAAa;QAAEC,KAAK,EAAE;MAAiB,CAAC;IAC9D,CAAC,CAAC;IAEF6yQ,QAAQ,CAACh3Q,WAAW,CAAC4/L,UAAU,CAAC;IAChCo3E,QAAQ,CAACh3Q,WAAW,CAACi3Q,UAAU,CAAC;EAClC;EACA,OAAO;IACL9lQ;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACzBJ,MAAME,WAAW,GAAI,YAAY;EAC7B,IAAI6lQ,eAAe;EACnB,IAAI7nC,UAAU;EACd,IAAI8nC,kBAAkB;EACtB,IAAIC,UAAU,GAAG,KAAK;EACtB;EACA,IAAIC,QAAQ;EACZ,IAAIz0J,aAAa;EACjB,IAAIE,aAAa;EACjB,IAAIE,SAAS;EACb,IAAIE,UAAU;EACd,IAAIC,QAAQ;EACZ,IAAIE,UAAU;EACd,IAAIi0J,eAAe;EACnB,IAAIh5F,UAAU;EAEd,eAAei5F,8BAA8BA,CAAA,EAAG;IAC5C,IAAI;MACA,MAAMjyQ,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6BAA6B;QACjCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QACrB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,OAAOnqD,IAAI,CAACkyQ,+BAA+B,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,OAAOlmQ,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACtB;EACJ;EACA,eAAemmQ,iCAAiCA,CAAA,EAAG;IAC/C,MAAMC,mBAAmB,GAAG;MAAE,GAAGR,eAAe;MAAE,GAAG7nC;IAAW,CAAC;IAEjE,IAAI;MACA,MAAM/pO,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gCAAgC;QACpCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB,GAAGy+N;QACP,CAAC,CAAC;QACFnoN,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,OAAOnqD,IAAI,CAACqyQ,kCAAkC;IAClD,CAAC,CAAC,OAAOrmQ,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACtB;EACJ;EACA,eAAesmQ,wBAAwBA,CAAA,EAAG;IACtC,IAAI;MACA,MAAMtyQ,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;QAChCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QACrB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,OAAOnqD,IAAI,CAACuyQ,8BAA8B;IAC9C,CAAC,CAAC,OAAOvmQ,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACtB;EACJ;EAEA,eAAewmQ,qBAAqBA,CAAA,EAAG;IACnC,MAAMC,WAAW,GAAG,MAAMR,8BAA8B,CAAC,CAAC;IAE1D,IAAIloC,UAAU,CAAC91D,KAAK,IAAI81D,UAAU,CAAC91D,KAAK,KAAKw+F,WAAW,CAACx+F,KAAK,IAAI,CAAC69F,UAAU,EAAE;MAC3EA,UAAU,GAAG,IAAI;MACjB;MACA,MAAMY,gBAAgB,GAAGz1Q,QAAQ,CAACC,aAAa,CAAC,yCAAyC,CAAC;MAC1F,MAAMy1Q,QAAQ,GAAG11Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;MAC5Cm1Q,QAAQ,CAAClxQ,SAAS,GAAG,oCAAoC;MACzDixQ,gBAAgB,CAACh4Q,WAAW,CAACi4Q,QAAQ,CAAC;MACtC7xQ,KAAK,CAACkC,iBAAiB,CAACg2K,UAAU,CAAC;IACvC;IAEA,MAAM45F,WAAW,GAAG72P,MAAM,CAAC8B,IAAI,CAACksN,UAAU,CAAC;IAC3C,IAAI6oC,WAAW,CAACr4Q,MAAM,KAAK,CAAC,IAAIq4Q,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,IAAId,UAAU,EAAE;MACtE;IAAA,CACH,MAAM;MACH,MAAMe,OAAO,GAAGhlQ,cAAc,CAAChI,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC;MAChEksQ,QAAQ,CAACr3Q,WAAW,CAACm4Q,OAAO,CAAC;MAC7B1tP,UAAU,CAAC,MAAM;QACb4sP,QAAQ,CAAC1lQ,WAAW,CAACwmQ,OAAO,CAAC;MACjC,CAAC,EAAE,IAAI,CAAC;IACZ;IAEAjB,eAAe,GAAGa,WAAW;IAC7B1oC,UAAU,GAAG,CAAC,CAAC;IAEfzsH,aAAa,CAACpgH,aAAa,CAAC,OAAO,CAAC,CAAC2B,KAAK,GAAG+yQ,eAAe,CAACkB,UAAU;IACvEt1J,aAAa,CAACtgH,aAAa,CAAC,OAAO,CAAC,CAAC2B,KAAK,GAAG+yQ,eAAe,CAACmB,UAAU;IACvEr1J,SAAS,CAACxgH,aAAa,CAAC,OAAO,CAAC,CAAC2B,KAAK,GAAG+yQ,eAAe,CAACj0J,IAAI;IAC7DC,UAAU,CAAC1gH,aAAa,CAAC,OAAO,CAAC,CAAC2B,KAAK,GAAG+yQ,eAAe,CAACnnO,KAAK;IAC/DozE,QAAQ,CAAC3gH,aAAa,CAAC,OAAO,CAAC,CAAC2B,KAAK,GAAG+yQ,eAAe,CAAC9zJ,OAAO;IAC/DC,UAAU,CAAC7gH,aAAa,CAAC,OAAO,CAAC,CAAC2B,KAAK,GAAGsnC,iBAAiB,CAACyrO,eAAe,CAACoB,WAAW,CAAC;IACxFh6F,UAAU,CAAC97K,aAAa,CAAC,OAAO,CAAC,CAAC2B,KAAK,GAAG+yQ,eAAe,CAAC39F,KAAK;EACnE;EAEA,eAAeg/F,2BAA2BA,CAAA,EAAG;IACzC,IAAI;MACA,MAAMjzQ,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;QACnCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBsgI,KAAK,EAAE81D,UAAU,CAAC91D;QACtB,CAAC,CAAC;QACFhqH,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,OAAOnqD,IAAI,CAACkzQ,iCAAiC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,OAAOlnQ,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACtB;EACJ;EAEA,eAAemnQ,eAAeA,CAAA,EAAG;IAC7B,MAAMxiP,MAAM,GAAG,MAAMsiP,2BAA2B,CAAC,CAAC;IAClD,IAAItiP,MAAM,CAACyiP,YAAY,IAAI,CAAC,IAAIziP,MAAM,CAACyiP,YAAY,IAAI,GAAG,EAAE;MACxD,MAAMjB,iCAAiC,CAAC,CAAC;MACzC,MAAMK,qBAAqB,CAAC,CAAC;IACjC,CAAC,MACI;MACDa,qBAAqB,CAAC,CAAC;IAC3B;EACJ;EAGA,SAASA,qBAAqBA,CAAA,EAAG;IAC7B,MAAMC,qBAAqB,GAAGtmQ,KAAK,CAAC1P,KAAK,CAAC;MACtCkQ,KAAK,EAAE;IACX,CAAC,CAAC;IACF,MAAMsgD,KAAK,GAAGzwD,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACq5Q,qBAAqB,CAAC;MACrC;IACJ,CAAC,CAAC;IACFxlN,KAAK,CAAC/vD,KAAK,CAACiS,KAAK,GAAG,MAAM;IAC1B,MAAMsB,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAACvT,KAAK,CAACw8J,SAAS,GAAG,OAAO;IACjCjpJ,OAAO,CAACvT,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACnCz8C,OAAO,CAAC7P,SAAS,GAAG,yBAAyB;IAG7C,MAAMqM,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3CsQ,OAAO,CAACrM,SAAS,GAAG,8EAA8E;IAClGqM,OAAO,CAAC/P,KAAK,CAACguC,SAAS,GAAG,QAAQ;IAClCj+B,OAAO,CAAC/P,KAAK,CAACgwD,YAAY,GAAG,MAAM;IACnCulN,qBAAqB,CAAC54Q,WAAW,CAAC4W,OAAO,CAAC;IAC1CgiQ,qBAAqB,CAAC54Q,WAAW,CAACoT,OAAO,CAAC;IAC1CwlQ,qBAAqB,CAAC54Q,WAAW,CAACozD,KAAK,CAAC;IACxCA,KAAK,CAACpiD,KAAK,CAAC,CAAC;IACbsB,KAAK,CAAC9S,IAAI,CAACo5Q,qBAAqB,CAAC;EACrC;EAEA,SAASntO,iBAAiBA,CAAChb,MAAM,EAAE;IAC/B,IAAI,CAACA,MAAM,EAAE,OAAO,EAAE;IAEtB,MAAMooP,WAAW,GAAGpoP,MAAM,CACrBtjB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CACxB29C,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CACnBA,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;IAExB,MAAMw/D,WAAW,GAAGr3F,IAAI,CAACwY,iBAAiB,CAACotO,WAAW,CAAC7vP,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrE,MAAMuhG,QAAQ,GAAGsuJ,WAAW,CAAC7vP,MAAM,CAAC,EAAE,CAAC;IAEvC,MAAMjJ,KAAK,GAAGwqG,QAAQ,GAAG,GAAGD,WAAW,KAAKC,QAAQ,GAAG,GAAG,GAAGD,WAAW,EAAE;IAE1E,OAAOvqG,KAAK;EAChB;EACA,SAAS+4P,aAAaA,CAAC11J,OAAO,EAAE;IAC5B,MAAMw4E,GAAG,GAAGx4E,OAAO,CAACj2G,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC29C,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;IAChE,IAAI8wI,GAAG,CAAC/7L,MAAM,IAAI,CAAC,EAAE;MACjB,OAAO+7L,GAAG;IACd,CAAC,MAAM;MACH,OAAOA,GAAG,CAAC9sL,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG8sL,GAAG,CAAC9sL,KAAK,CAAC,CAAC,CAAC;IAC/C;EACJ;EACA,SAASiqQ,gBAAgBA,CAACC,IAAI,EAAEC,QAAQ,EAAE;IACtC,IAAID,IAAI,IAAI,IAAI,EAAE;MACd,IAAIA,IAAI,CAACv6G,eAAe,EAAE;QACtB,IAAIC,KAAK,GAAGs6G,IAAI,CAACv6G,eAAe,CAAC,CAAC;QAClCC,KAAK,CAACw6G,IAAI,CAAC,WAAW,EAAED,QAAQ,CAAC;QACjCv6G,KAAK,CAAC75J,MAAM,CAAC,CAAC;MAClB,CAAC,MAAM;QACH,IAAIm0Q,IAAI,CAACz6G,cAAc,EAAE;UACrBy6G,IAAI,CAAChoQ,KAAK,CAAC,CAAC;UACZgoQ,IAAI,CAAC16G,iBAAiB,CAAC26G,QAAQ,EAAEA,QAAQ,CAAC;QAC9C,CAAC,MAAMD,IAAI,CAAChoQ,KAAK,CAAC,CAAC;MACvB;IACJ;EACJ;EACA,SAASmoQ,SAASA,CAACnrO,MAAM,EAAEtW,KAAK,EAAE0hP,SAAS,EAAE;IACzC,OAAOprO,MAAM,CAACl/B,KAAK,CAAC,CAAC,EAAE4oB,KAAK,CAAC,GAAG0hP,SAAS,GAAGprO,MAAM,CAACl/B,KAAK,CAAC4oB,KAAK,CAAC;EACnE;EAEA,SAAS2hP,uBAAuBA,CAAChhB,WAAW,EAAE;IAC1C,MAAM/yP,IAAI,GAAG6xQ,kBAAkB,CAAC7tQ,GAAG,CAACgwQ,OAAO,IAAI;MAC3C,OAAO;QACHn1Q,KAAK,EAAEm1Q,OAAO,CAACC,SAAS;QACxBr2Q,IAAI,EAAEo2Q,OAAO,CAACE;MAClB,CAAC;IACL,CAAC,CAAC;IACFl0Q,IAAI,CAACsU,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAMvU,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,GAAG,CAAC,CAAC,GAAG,CAAE,CAAC;IAC/CoC,IAAI,CAAC49D,OAAO,CAAC;MACT/+D,KAAK,EAAE,EAAE;MACTjB,IAAI,EAAE;IACV,CAAC,CAAC;IAEFqB,QAAQ,CAAC5E,QAAQ,CAAC04P,WAAW,EAAE/yP,IAAI,EAAE4xQ,eAAe,CAACoC,OAAO,CAAC;EACjE;EAEA,SAASG,mBAAmBA,CAAA,EAAG;IAC3B,MAAMC,cAAc,GAAGn3Q,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpD42Q,cAAc,CAACt6Q,SAAS,CAACE,GAAG,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;IAEpE,MAAMsX,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3C8T,OAAO,CAAC7P,SAAS,GAAG,SAAS;IAE7B,MAAM4L,IAAI,GAAGpQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C6P,IAAI,CAACvT,SAAS,CAACE,GAAG,CAAC,0BAA0B,CAAC;IAE9CsjH,aAAa,GAAGx8G,KAAK,CAACxD,KAAK,CAAC;MACxB8B,KAAK,EAAE,WAAW;MAClBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,CAAC,UAAU,CAAC;MACxBI,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,WAAW;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;MAC/CA,KAAK,EAAE+yQ,eAAe,CAACkB,UAAU;MACjCh0Q,QAAQ,EAAEU,CAAC,IAAI;QACXuqO,UAAU,CAAC+oC,UAAU,GAAGtzQ,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MAC1C;IACJ,CAAC,CAAC;IACF2+G,aAAa,GAAG18G,KAAK,CAACxD,KAAK,CAAC;MACxB8B,KAAK,EAAE,WAAW;MAClBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,CAAC,UAAU,CAAC;MACxBI,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,WAAW;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;MAC/CA,KAAK,EAAE+yQ,eAAe,CAACmB,UAAU;MACjCj0Q,QAAQ,EAAEU,CAAC,IAAI;QACXuqO,UAAU,CAACgpC,UAAU,GAAGvzQ,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MAC1C;IACJ,CAAC,CAAC;IACF6+G,SAAS,GAAG58G,KAAK,CAACxD,KAAK,CAAC;MACpB8B,KAAK,EAAE,MAAM;MACbpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,CAAC,MAAM,CAAC;MACpBI,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,WAAW;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;MAC/CA,KAAK,EAAE+yQ,eAAe,CAACj0J,IAAI;MAC3B7+G,QAAQ,EAAEU,CAAC,IAAI;QACXuqO,UAAU,CAACpsH,IAAI,GAAGn+G,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACpC;IACJ,CAAC,CAAC;IACF++G,UAAU,GAAG98G,KAAK,CAACxD,KAAK,CAAC;MACrB8B,KAAK,EAAE,OAAO;MACdpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,CAAC,OAAO,CAAC;MACrBI,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,WAAW;QAAEC,KAAK,EAAE;MAAI,CAAC,CAAC;MAC9CA,KAAK,EAAE+yQ,eAAe,CAACnnO,KAAK;MAC5B3rC,QAAQ,EAAEU,CAAC,IAAI;QACXuqO,UAAU,CAACt/L,KAAK,GAAGjrC,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACrC;IACJ,CAAC,CAAC;IACFg/G,QAAQ,GAAG/8G,KAAK,CAACxD,KAAK,CAAC;MACnB8B,KAAK,EAAE,UAAU;MACjBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,CAAC,KAAK,CAAC;MACnBI,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,WAAW;QAAEC,KAAK,EAAE;MAAI,CAAC,CAAC;MAC9CA,KAAK,EAAE20Q,aAAa,CAAC5B,eAAe,CAAC9zJ,OAAO,CAAC;MAC7Ch/G,QAAQ,EAAEU,CAAC,IAAI;QACXuqO,UAAU,CAACjsH,OAAO,GAAGt+G,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACvC;IACJ,CAAC,CAAC;IAEF,IAAI,CAACwM,CAAC,CAACC,OAAO,CAACqhC,mBAAmB,EAAE;MAChC7rC,KAAK,CAACkC,iBAAiB,CAACs6G,aAAa,CAAC;MACtCx8G,KAAK,CAACkC,iBAAiB,CAACw6G,aAAa,CAAC;MACtC18G,KAAK,CAACkC,iBAAiB,CAAC06G,SAAS,CAAC;MAClC58G,KAAK,CAACkC,iBAAiB,CAAC46G,UAAU,CAAC;MACnC98G,KAAK,CAACkC,iBAAiB,CAAC66G,QAAQ,CAAC;IACrC;IAEA,MAAMw2J,YAAY,GAAGp3Q,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClD62Q,YAAY,CAACv6Q,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAC1Cq6Q,YAAY,CAAC35Q,WAAW,CAACkjH,UAAU,CAAC;IACpCy2J,YAAY,CAAC35Q,WAAW,CAACmjH,QAAQ,CAAC;IAElCxwG,IAAI,CAAC3S,WAAW,CAAC4iH,aAAa,CAAC;IAC/BjwG,IAAI,CAAC3S,WAAW,CAAC8iH,aAAa,CAAC;IAC/BnwG,IAAI,CAAC3S,WAAW,CAACgjH,SAAS,CAAC;IAC3BrwG,IAAI,CAAC3S,WAAW,CAAC25Q,YAAY,CAAC;IAE9BD,cAAc,CAAC15Q,WAAW,CAAC4W,OAAO,CAAC;IACnC8iQ,cAAc,CAAC15Q,WAAW,CAAC2S,IAAI,CAAC;IAEhC,OAAO+mQ,cAAc;EACzB;EACA,SAASE,mBAAmBA,CAAA,EAAG;IAC3B,IAAIC,UAAU,GAAG,KAAK;IAEtB,MAAMC,aAAa,GAAGv3Q,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDg3Q,aAAa,CAAC16Q,SAAS,CAACE,GAAG,CAAC,eAAe,EAAE,oBAAoB,CAAC;IAElE,MAAMsX,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3C8T,OAAO,CAAC7P,SAAS,GAAG,eAAe;IAEnC,MAAM4L,IAAI,GAAGpQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C6P,IAAI,CAACvT,SAAS,CAACE,GAAG,CAAC,0BAA0B,CAAC;IAE9C+jH,UAAU,GAAGj9G,KAAK,CAACxD,KAAK,CAAC;MACrB8B,KAAK,EAAE,QAAQ;MACfpB,IAAI,EAAE,KAAK;MACXD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,CAAC,OAAO,CAAC;MACrBO,KAAK,EAAEsnC,iBAAiB,CAACyrO,eAAe,CAACoB,WAAW,CAAC;MACrDl0Q,QAAQ,EAAEU,CAAC,IAAI;QACX,IAAIA,CAAC,CAAC3E,MAAM,CAACgE,KAAK,KAAK,EAAE,IAAI,CAAC01Q,UAAU,EAAE;UACtCxqC,UAAU,CAACipC,WAAW,GAAG,EAAE;UAC3B;QACJ;QAEA,IAAIO,WAAW,GAAG/zQ,CAAC,CAAC3E,MAAM,CAACgE,KAAK,CAACuf,KAAK,CAAC,GAAG,CAAC;QAE3C,IAAI4mG,WAAW,GAAGuuJ,WAAW,CAAC,CAAC,CAAC,CAAC1rQ,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QACzD,IAAIo9G,QAAQ,GAAGsuJ,WAAW,CAAC,CAAC,CAAC,GAAGA,WAAW,CAAC,CAAC,CAAC,CAAC1rQ,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE;QAErF4sQ,SAAS,GAAGxvJ,QAAQ,GAAG,GAAGD,WAAW,GAAGC,QAAQ,EAAE,GAAG,GAAGD,WAAW,EAAE;QAErE+kH,UAAU,CAACipC,WAAW,GAAGyB,SAAS;MACtC;IACJ,CAAC,CAAC;IACF12J,UAAU,CAAC3gH,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACtC,IAAIA,CAAC,CAACwsC,IAAI,KAAK,WAAW,EAAE;MAE5B,IAAIntC,KAAK,GAAGW,CAAC,CAAC3E,MAAM,CAACgE,KAAK,CACrBgJ,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CACxB29C,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CACnBh8C,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;MAEjB,IAAIw7G,WAAW;MAEf,IAAInmH,KAAK,CAACtE,MAAM,KAAK,CAAC,EAAE;QACpBg6Q,UAAU,GAAG,IAAI;QACjB;MACJ;MACA,IAAI11Q,KAAK,CAACtE,MAAM,IAAI,CAAC,IAAIsE,KAAK,CAACtE,MAAM,IAAI,CAAC,EAAE;QACxCyqH,WAAW,GAAG6uJ,SAAS,CAACh1Q,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC;QACtCW,CAAC,CAAC3E,MAAM,CAACgE,KAAK,GAAGmmH,WAAW;MAChC;MACA,IAAInmH,KAAK,CAACtE,MAAM,IAAI,CAAC,IAAIsE,KAAK,CAACtE,MAAM,GAAG,EAAE,EAAE;QACxCyqH,WAAW,GAAG6uJ,SAAS,CAACh1Q,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC;QACtCmmH,WAAW,GAAG6uJ,SAAS,CAAC7uJ,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC;QAC5CxlH,CAAC,CAAC3E,MAAM,CAACgE,KAAK,GAAGmmH,WAAW;MAChC;MACA,IAAInmH,KAAK,CAACtE,MAAM,IAAI,EAAE,EAAE;QACpByqH,WAAW,GAAG6uJ,SAAS,CAACh1Q,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC;QACtCmmH,WAAW,GAAG6uJ,SAAS,CAAC7uJ,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC;QAC5CA,WAAW,GAAG6uJ,SAAS,CAAC7uJ,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC;QAC9CA,WAAW,GAAG6uJ,SAAS,CAAC7uJ,WAAW,EAAEA,WAAW,CAACzqH,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC;QACjEiF,CAAC,CAAC3E,MAAM,CAACgE,KAAK,GAAGmmH,WAAW;QAE5ByuJ,gBAAgB,CAACj0Q,CAAC,CAAC3E,MAAM,EAAEmqH,WAAW,CAACzqH,MAAM,GAAG,CAAC,CAAC;QAElDg6Q,UAAU,GAAG,IAAI;MACrB;MACA,IAAI,CAACA,UAAU,EAAE;QACbx2J,UAAU,CAACjkH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACrC,CAAC,MAAM;QACH+jH,UAAU,CAACjkH,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACxC;IACJ,CAAC,CAAC;IAEFi4Q,eAAe,GAAG/yQ,QAAQ,CAAC3B,KAAK,CAAC;MAC7B4B,UAAU,EAAE,iBAAiB;MAC7BE,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEU,CAAC,IAAI;QACX,MAAMC,cAAc,GAAGD,CAAC,CAAC3E,MAAM,CAAC0C,OAAO,CAACiC,CAAC,CAAC3E,MAAM,CAAC6E,aAAa,CAAC;QAC/DqqO,UAAU,CAACiqC,OAAO,GAAGv0Q,cAAc,CAACZ,KAAK;MAC7C;IACJ,CAAC,CAAC;IAEF,IAAI,CAACwM,CAAC,CAACC,OAAO,CAACqhC,mBAAmB,EAAE;MAChC7rC,KAAK,CAACkC,iBAAiB,CAAC+6G,UAAU,CAAC;MACnCj9G,KAAK,CAACkC,iBAAiB,CAACgvQ,eAAe,CAAC;IAC5C;IAEA+B,uBAAuB,CAAC/B,eAAe,CAAC;IAExC3kQ,IAAI,CAAC3S,WAAW,CAACqjH,UAAU,CAAC;IAC5B1wG,IAAI,CAAC3S,WAAW,CAACs3Q,eAAe,CAAC;IAEjCwC,aAAa,CAAC95Q,WAAW,CAAC4W,OAAO,CAAC;IAClCkjQ,aAAa,CAAC95Q,WAAW,CAAC2S,IAAI,CAAC;IAE/B,OAAOmnQ,aAAa;EACxB;EACA,SAASE,iBAAiBA,CAAA,EAAG;IACzB,MAAMC,YAAY,GAAG13Q,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDm3Q,YAAY,CAAC76Q,SAAS,CAACE,GAAG,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAEhE,MAAMsX,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3C8T,OAAO,CAAC7P,SAAS,GAAG,eAAe;IAEnC,MAAM4L,IAAI,GAAGpQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C6P,IAAI,CAACvT,SAAS,CAACE,GAAG,CAAC,0BAA0B,CAAC;IAE9Cg/K,UAAU,GAAGl4K,KAAK,CAACxD,KAAK,CAAC;MACrB8B,KAAK,EAAE,OAAO;MACdpB,IAAI,EAAE,OAAO;MACbD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE+yQ,eAAe,CAAC39F,KAAK;MAC5Bn1K,QAAQ,EAAEU,CAAC,IAAI;QACXuqO,UAAU,CAAC91D,KAAK,GAAGz0K,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACrC;IACJ,CAAC,CAAC;IACF,IAAI,CAACwM,CAAC,CAACC,OAAO,CAACqhC,mBAAmB,EAAE;MAChC7rC,KAAK,CAACkC,iBAAiB,CAACg2K,UAAU,CAAC;IACvC;IAEA3rK,IAAI,CAAC3S,WAAW,CAACs+K,UAAU,CAAC;IAE5B27F,YAAY,CAACj6Q,WAAW,CAAC4W,OAAO,CAAC;IACjCqjQ,YAAY,CAACj6Q,WAAW,CAAC2S,IAAI,CAAC;IAE9B,OAAOsnQ,YAAY;EACvB;EAEA,SAAS9oQ,SAASA,CAAA,EAAG;IACjBkmQ,QAAQ,GAAG90Q,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;IACrD60Q,QAAQ,CAAC33Q,SAAS,GAAG,EAAE;IAEvB,MAAMk1Q,QAAQ,GAAGryQ,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC5C8xQ,QAAQ,CAAC7tQ,SAAS,GAAG,gBAAgB;IACrC6tQ,QAAQ,CAACx1Q,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAExC,MAAMsgM,UAAU,GAAGj9L,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,MAAM;MACZF,IAAI,EAAE,WAAW;MACjBM,IAAI,EAAE,MAAM;MACZU,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,aAAa;QAAEC,KAAK,EAAE;MAAO,CAAC;IACtD,CAAC,CAAC;IAEF,MAAM+1Q,YAAY,GAAGv3Q,MAAM,CAACC,KAAK,CAAC;MAC9BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,sBAAsB;MAClC;MACA;MACA;MACA;MACAQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAAE,MAAMq0Q,eAAe,CAAC,CAAC;MAAE;IAErD,CAAC,CAAC;IAEF,MAAM0B,kBAAkB,GAAGP,mBAAmB,CAAC,CAAC;IAChD,MAAMK,YAAY,GAAGD,iBAAiB,CAAC,CAAC;IAExC3C,QAAQ,CAACr3Q,WAAW,CAAC40Q,QAAQ,CAAC;IAC9ByC,QAAQ,CAACr3Q,WAAW,CAAC4/L,UAAU,CAAC;IAChC,IAAIjvL,CAAC,CAACC,OAAO,CAACqhC,mBAAmB,EAAE;MAC/BolO,QAAQ,CAACr3Q,WAAW,CAACk6Q,YAAY,CAAC;IACtC;IAEA,IAAIvpQ,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzC,MAAM6oQ,cAAc,GAAGD,mBAAmB,CAAC,CAAC;MAC5CpC,QAAQ,CAACr3Q,WAAW,CAAC05Q,cAAc,CAAC;IACxC;IAEArC,QAAQ,CAACr3Q,WAAW,CAACm6Q,kBAAkB,CAAC;IACxC9C,QAAQ,CAACr3Q,WAAW,CAACi6Q,YAAY,CAAC;EACtC;EAEA,eAAex3Q,IAAIA,CAAA,EAAG;IAClBy0Q,eAAe,GAAG,MAAMK,8BAA8B,CAAC,CAAC;IACxDJ,kBAAkB,GAAG,MAAMS,wBAAwB,CAAC,CAAC;IACrDvoC,UAAU,GAAG,CAAC,CAAC;IACf,IAAI,CAAC6nC,eAAe,EAAE;MAClBA,eAAe,GAAG;QACdkB,UAAU,EAAE,EAAE;QACdC,UAAU,EAAE,EAAE;QACdp1J,IAAI,EAAE,EAAE;QACRlzE,KAAK,EAAE,EAAE;QACTqzE,OAAO,EAAE,EAAE;QACXk1J,WAAW,EAAE,EAAE;QACfgB,OAAO,EAAE,EAAE;QACX//F,KAAK,EAAE;MACX,CAAC;IACL;IACApoK,SAAS,CAAC,CAAC;EACf;EAEA,OAAO;IACH1O;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACjiBJ,IAAI23Q,SAAS,GAAI,YAAY;EACzB,IAAIC,eAAe,GAAG,EAAE;EACxB,IAAIC,UAAU,GAAG,EAAE;EACnB,IAAIC,qBAAqB;EACzB,IAAIC,gBAAgB;EACpB,IAAIC,gBAAgB;EACpB,IAAInlP,WAAW;EACf,IAAI+jB,SAAS;EACb,IAAIqhO,kBAAkB;EACtB,IAAIC,SAAS;EACb,IAAIC,cAAc;EAClB,IAAIC,wBAAwB;EAC5B,IAAIC,sBAAsB;EAC1B,IAAIC,aAAa;EACjB;EACA,IAAIC,cAAc,GAAG;IACjBC,qBAAqB,EAAE,EAAE;IACzBC,cAAc,EAAE,EAAE;IAClBC,kBAAkB,EAAE,EAAE;IACtBC,sBAAsB,EAAE,EAAE;IAC1BC,gBAAgB,EAAE,EAAE;IACpBC,kBAAkB,EAAE,EAAE;IACtBC,kBAAkB,EAAE,EAAE;IACtBC,mBAAmB,EAAE;EACzB,CAAC;;EAED;EACA,IAAIC,qBAAqB;EACzB,IAAIC,wBAAwB;EAC5B,IAAIC,uBAAuB;EAC3B;EACA,IAAIC,oBAAoB;EACxB,IAAIC,4BAA4B;EAChC,IAAIC,8BAA8B;EAClC,IAAIC,2BAA2B;EAC/B,IAAIC,qBAAqB,GAAG,CAAC,CAAC;;EAE9B;EACA;EACA,SAASC,YAAYA,CAACC,YAAY,EAAEC,iBAAiB,EAAE;IACnDpB,aAAa,GAAGoB,iBAAiB;IACjC,IAAID,YAAY,KAAK,GAAG,EAAE;MACtB,IAAIx7I,WAAW,GAAGt/H,aAAa,CAACyvH,cAAc,CAAC,CAAC;MAChDurJ,eAAe,CAACC,uBAAuB,CAAC37I,WAAW,EAAE,UAAUj2B,OAAO,EAAE;QACpE,IAAIA,OAAO,CAAC5qG,MAAM,GAAG,CAAC,EAAE;UACpBy8Q,gBAAgB,CAAC,CAAC;QACtB,CAAC,MAAM;UACH3rQ,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,GAC5B69N,wBAAwB,CAAC,CAAC,GAC1BN,YAAY,CAAC,EAAE,EAAElB,aAAa,CAAC;QACzC;MACJ,CAAC,CAAC;MAEF;IACJ;IAEA,IAAIrhJ,QAAQ,GAAGt4H,aAAa,CAACo7Q,iBAAiB,CAAC,CAAC;IAEhD,IAAI7rQ,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,KAAK,KAAK,IAAI,CAACg7E,QAAQ,CAAC7hG,OAAO,EAAE;MACnE4kP,aAAa,CAAC/iJ,QAAQ,CAAC;IAC3B,CAAC,MAAM;MACH;;MAEA;MACA,IAAIgjJ,SAAS,GAAGt7Q,aAAa,CAACo7Q,iBAAiB,CAAC,CAAC;MACjDE,SAAS,CAACC,UAAU,GAAGD,SAAS,CAACE,uBAAuB,CAAC,CAAC,CAAC,CAACC,cAAc;MAC1EH,SAAS,CAAC7kP,OAAO,GAAG,OAAO;MAE3B,IAAI,CAAC6kP,SAAS,CAACI,uBAAuB,EAAE;QACpCJ,SAAS,CAACK,SAAS,GAAG,EAAE;QACxBC,eAAe,CAAC,CAAC,KAAK,QAAQ,GACvBN,SAAS,CAACO,UAAU,GAAG,QAAQ,GAC/BP,SAAS,CAACO,UAAU,GAAG,OAAQ;MAC1C;;MAEA;;MAEA;MACA,IAAIC,SAAS,GAAG97Q,aAAa,CAACo7Q,iBAAiB,CAAC,CAAC;MACjDU,SAAS,CAACP,UAAU,GAAGO,SAAS,CAACN,uBAAuB,CAAC,CAAC,CAAC,CAACO,cAAc;MAC1ED,SAAS,CAACtkP,SAAS,GAAG,OAAO;;MAE7B;MACAskP,SAAS,CAACE,WAAW,GAAG,EAAE;MAC1BF,SAAS,CAACG,kBAAkB,GAAG,EAAE;MACjCH,SAAS,CAACI,WAAW,GAAG,EAAE;MAC1BJ,SAAS,CAACK,aAAa,GAAG,EAAE;MAC5BL,SAAS,CAAC31O,MAAM,GAAG,EAAE;MACrB21O,SAAS,CAACM,0BAA0B,GAAG,EAAE;MACzCN,SAAS,CAACO,mBAAmB,GAAG,CAAC;;MAEjC;MACA;MACA;MACA,MAAMh0P,IAAI,GAAGU,QAAQ,CAAC+yP,SAAS,CAACQ,aAAa,CAACh6P,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,MAAMmG,KAAK,GAAGM,QAAQ,CAAC+yP,SAAS,CAACQ,aAAa,CAACh6P,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC7D,MAAMyP,GAAG,GAAGhJ,QAAQ,CAAC+yP,SAAS,CAACQ,aAAa,CAACh6P,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3D,IAAIi6P,OAAO,GAAG,IAAIrkQ,IAAI,CAACmQ,IAAI,EAAEI,KAAK,GAAG,CAAC,EAAEsJ,GAAG,CAAC;MAC5CwqP,OAAO,CAACj4P,OAAO,CAACi4P,OAAO,CAACl4P,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;MAEtC,IAAIrY,EAAE,GAAG,CAAC,GAAG,GAAGuwQ,OAAO,CAACl4P,OAAO,CAAC,CAAC,EAAE3W,KAAK,CAAC,CAAC,CAAC,CAAC;MAC5C,IAAIuX,EAAE,GAAG,CAAC,GAAG,IAAIs3P,OAAO,CAACn4P,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE1W,KAAK,CAAC,CAAC,CAAC,CAAC;MACnD,IAAI4X,IAAI,GAAGi3P,OAAO,CAACp4P,WAAW,CAAC,CAAC;MAEhC23P,SAAS,CAACQ,aAAa,GAAGh3P,IAAI,GAAG,GAAG,GAAGL,EAAE,GAAG,GAAG,GAAGjZ,EAAE;MAEpD,IAAI,CAAC8vQ,SAAS,CAACU,qBAAqB,EAAE;QAClCV,SAAS,CAACH,SAAS,GAAG,EAAE;QACxBC,eAAe,CAAC,CAAC,KAAK,QAAQ,GACvBE,SAAS,CAACD,UAAU,GAAG,QAAQ,GAC/BC,SAAS,CAACD,UAAU,GAAG,OAAQ;MAC1C;MAEAR,aAAa,CAACC,SAAS,EAAEQ,SAAS,CAAC;IACvC;EACJ;EACA,SAAST,aAAaA,CAAC/iJ,QAAQ,EAAEwjJ,SAAS,EAAE;IACxC,IAAIxjJ,QAAQ,CAAC7lE,UAAU,KAAK,EAAE,IAAI6lE,QAAQ,CAACt0E,UAAU,KAAK,EAAE,EAAE;MAC1D,IAAI21N,aAAa,EAAE;QACf,IAAI/rO,cAAc,GAAG,wHAAwH;QAE7IomH,gBAAgB,CAACpmH,cAAc,EAAE,MAAM;UACnCotO,eAAe,CAACyB,oBAAoB,CAACnkJ,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;YAC9D,MAAMqzK,OAAO,GAAGrzK,OAAO,CAAC,CAAC,CAAC,CAACt9F,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,MAAM4wQ,SAAS,GAAG;cACd5uO,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;cACtB+kO,mBAAmB,EAAEF,OAAO;cAC5Bx/B,SAAS,EAAE;YACf,CAAC;YAED89B,eAAe,CAAC6B,uBAAuB,CAACF,SAAS,EAAE,YAAY;cAC3D,IAAI,CAACb,SAAS,EAAE;gBACZ/pQ,cAAc,CAAC3T,IAAI,CAAC,mBAAmB,CAAC;gBACxCirB,UAAU,CAAC,YAAY;kBACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;kBACrB6B,aAAa,CAAC88Q,uBAAuB,CAAC,CAAC;kBACvC7vK,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;kBAC9BmlI,YAAY,CAAC17Q,IAAI,CAAC,IAAI,CAAC;gBAC3B,CAAC,EAAE,IAAI,CAAC;cACZ,CAAC,MAAM;gBACH25Q,eAAe,CAACyB,oBAAoB,CAACX,SAAS,EAAE,UAAUkB,QAAQ,EAAE;kBAChE,MAAMC,QAAQ,GAAGD,QAAQ,CAAC,CAAC,CAAC,CAACjxQ,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;kBAC9C,MAAMmxQ,UAAU,GAAG;oBACfnvO,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;oBACtB+kO,mBAAmB,EAAEK,QAAQ;oBAC7B//B,SAAS,EAAE;kBACf,CAAC;kBAED89B,eAAe,CAAC6B,uBAAuB,CAACK,UAAU,EAAE,YAAY;oBAC5DnrQ,cAAc,CAAC3T,IAAI,CAAC,mBAAmB,CAAC;oBACxCirB,UAAU,CAAC,YAAY;sBACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;sBACrB6B,aAAa,CAAC88Q,uBAAuB,CAAC,CAAC;sBACvC7vK,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;sBAC9BmlI,YAAY,CAAC17Q,IAAI,CAAC,IAAI,CAAC;oBAC3B,CAAC,EAAE,IAAI,CAAC;kBACZ,CAAC,CAAC;gBACN,CAAC,CAAC;cACN;YACJ,CAAC,CAAC;UACN,CAAC,CAAC;QACN,CAAC,CAAC;MACN,CAAC,MAAM;QACH25Q,eAAe,CAACyB,oBAAoB,CAACnkJ,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;UAC9D,IAAI,CAACyyK,SAAS,EAAE;YACZ/pQ,cAAc,CAAC3T,IAAI,CAAC,OAAO,CAAC;YAC5BirB,UAAU,CAAC,YAAY;cACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;cACrB6B,aAAa,CAAC88Q,uBAAuB,CAAC,CAAC;cACvC7vK,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;cAC9BmlI,YAAY,CAAC17Q,IAAI,CAAC,IAAI,CAAC;YAC3B,CAAC,EAAE,IAAI,CAAC;UACZ,CAAC,MAAM;YACH25Q,eAAe,CAACyB,oBAAoB,CAACX,SAAS,EAAE,UAAUzyK,OAAO,EAAE;cAC/Dt3F,cAAc,CAAC3T,IAAI,CAAC,OAAO,CAAC;cAC5BirB,UAAU,CAAC,YAAY;gBACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;gBACrB6B,aAAa,CAAC88Q,uBAAuB,CAAC,CAAC;gBACvC7vK,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;gBAC9BmlI,YAAY,CAAC17Q,IAAI,CAAC,IAAI,CAAC;cAC3B,CAAC,EAAE,IAAI,CAAC;YACZ,CAAC,CAAC;UACN;QACJ,CAAC,CAAC;MACN;IACJ,CAAC,MAAM;MACH,IAAIs4Q,aAAa,EAAE;QACf,IAAI/rO,cAAc,GAAG,wHAAwH;QAE7IomH,gBAAgB,CAACpmH,cAAc,EAAE,MAAM;UACnC;UACAotO,eAAe,CAACmC,4BAA4B,CAAC7kJ,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;YACtEsxK,2BAA2B,GAAGtxK,OAAO;YACrC;YACA,IAAIsxK,2BAA2B,CAACl8Q,MAAM,KAAK,CAAC,EAAE;cAC1Cu8Q,eAAe,CAACoC,oBAAoB,CAAC9kJ,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;gBAC9D,MAAMi4I,OAAO,GAAGj4I,OAAO,CAACnhG,GAAG,CAACsX,CAAC,IAAIA,CAAC,CAAC69P,aAAa,CAAC;gBACjD,MAAMV,SAAS,GAAG;kBACd5uO,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;kBACtB+kO,mBAAmB,EAAEt7B,OAAO,CAACp3N,IAAI,CAAC,GAAG,CAAC;kBACtCgzN,SAAS,EAAE;gBACf,CAAC;gBAED89B,eAAe,CAAC6B,uBAAuB,CAACF,SAAS,EAAE,YAAY;kBAC3D,IAAI,CAACb,SAAS,EAAE;oBACZ/pQ,cAAc,CAAC3T,IAAI,CAAC,mBAAmB,CAAC;oBACxCirB,UAAU,CAAC,YAAY;sBACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;sBACrB6B,aAAa,CAAC88Q,uBAAuB,CAAC,CAAC;sBACvC7vK,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;sBAC9BmlI,YAAY,CAAC17Q,IAAI,CAAC,CAAC;oBACvB,CAAC,EAAE,IAAI,CAAC;kBACZ,CAAC,MAAM;oBACH25Q,eAAe,CAACoC,oBAAoB,CAACtB,SAAS,EAAE,UAAUkB,QAAQ,EAAE;sBAChE,MAAM17B,OAAO,GAAG07B,QAAQ,CAAC90Q,GAAG,CAACsX,CAAC,IAAIA,CAAC,CAAC69P,aAAa,CAAC;sBAClD,MAAMH,UAAU,GAAG;wBACfnvO,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;wBACtB+kO,mBAAmB,EAAEt7B,OAAO,CAACp3N,IAAI,CAAC,GAAG,CAAC;wBACtCgzN,SAAS,EAAE;sBACf,CAAC;sBAED89B,eAAe,CAAC6B,uBAAuB,CAACK,UAAU,EAAE,YAAY;wBAC5DnrQ,cAAc,CAAC3T,IAAI,CAAC,mBAAmB,CAAC;wBACxCirB,UAAU,CAAC,YAAY;0BACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;0BACrB6B,aAAa,CAAC88Q,uBAAuB,CAAC,CAAC;0BACvC7vK,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;0BAC9BmlI,YAAY,CAAC17Q,IAAI,CAAC,CAAC;wBACvB,CAAC,EAAE,IAAI,CAAC;sBACZ,CAAC,CAAC;oBACN,CAAC,CAAC;kBACN;gBACJ,CAAC,CAAC;cACN,CAAC,CAAC;YACN,CAAC,MAAM;cACH;cACAi8Q,4BAA4B,CAACj0K,OAAO,CAAC;YACzC;UACJ,CAAC,CAAC;QACN,CAAC,CAAC;MACN,CAAC,MAAM;QACH;;QAEA;QACA2xK,eAAe,CAACmC,4BAA4B,CAAC7kJ,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;UACtEsxK,2BAA2B,GAAGtxK,OAAO;;UAErC;UACA,IAAIsxK,2BAA2B,CAACl8Q,MAAM,KAAK,CAAC,EAAE;YAC1Cu8Q,eAAe,CAACoC,oBAAoB,CAAC9kJ,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;cAC9D,IAAI,CAACyyK,SAAS,EAAE;gBACZ/pQ,cAAc,CAAC3T,IAAI,CAAC,OAAO,CAAC;gBAC5BirB,UAAU,CAAC,YAAY;kBACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;kBACrB6B,aAAa,CAAC88Q,uBAAuB,CAAC,CAAC;kBACvC7vK,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;kBAC9BmlI,YAAY,CAAC17Q,IAAI,CAAC,CAAC;gBACvB,CAAC,EAAE,IAAI,CAAC;cACZ,CAAC,MAAM;gBACH25Q,eAAe,CAACoC,oBAAoB,CAACtB,SAAS,EAAE,UAAUzyK,OAAO,EAAE;kBAC/Dt3F,cAAc,CAAC3T,IAAI,CAAC,OAAO,CAAC;kBAC5BirB,UAAU,CAAC,YAAY;oBACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;oBACrB6B,aAAa,CAAC88Q,uBAAuB,CAAC,CAAC;oBACvC7vK,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;oBAC9BmlI,YAAY,CAAC17Q,IAAI,CAAC,CAAC;kBACvB,CAAC,EAAE,IAAI,CAAC;gBACZ,CAAC,CAAC;cACN;YACJ,CAAC,CAAC;UACN,CAAC,MAAM;YACH;YACAi8Q,4BAA4B,CAACj0K,OAAO,CAAC;UACzC;QACJ,CAAC,CAAC;MACN;IACJ;EACJ;EACA,SAASk0K,iBAAiBA,CAACC,WAAW,EAAEC,SAAS,EAAExvC,UAAU,EAAE;IAC3D+sC,eAAe,CAACuC,iBAAiB,CAACtvC,UAAU,EAAE,UAAU5kI,OAAO,EAAE;MAC7D,IAAI,CAACswK,aAAa,EAAE;QAChB;QACA,IAAI,CAACpqQ,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,EAAE;UACrCvrC,cAAc,CAAC3T,IAAI,CAAC,SAAS,CAAC;QAClC;QACAirB,UAAU,CAAC,YAAY;UACnB,IAAI,CAAC9Z,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,EAAE;YACrCvrC,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACzB;UACA8uG,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;UAC9B53I,aAAa,CAAC88Q,uBAAuB,CAAC,CAAC;UAEvC,IAAIU,WAAW,EAAE;YACbt9Q,YAAY,CAACw9Q,WAAW,CAACD,SAAS,CAAC;UACvC,CAAC,MAAM;YACHx9Q,eAAe,CAACy9Q,WAAW,CAACD,SAAS,CAAC;UAC1C;QACJ,CAAC,EAAE,IAAI,CAAC;MACZ,CAAC,MAAM;QACH;QACA,IAAId,SAAS,GAAG;UACZ5uO,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB+kO,mBAAmB,EAAE3uC,UAAU,CAACovC,aAAa;UAC7CngC,SAAS,EAAE;QACf,CAAC;QACD,IAAItvM,cAAc,GAAG,wHAAwH;QAE7IomH,gBAAgB,CAACpmH,cAAc,EAAE,MAAM;UACnCotO,eAAe,CAAC6B,uBAAuB,CAACF,SAAS,EAAE,MAAM;YACrD,IAAI,CAACptQ,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,EAAE;cACrCvrC,cAAc,CAAC3T,IAAI,CAAC,qBAAqB,CAAC;YAC9C;YACAirB,UAAU,CAAC,YAAY;cACnB,IAAI,CAAC9Z,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,EAAE;gBACrCvrC,cAAc,CAAC5T,IAAI,CAAC,CAAC;cACzB;cACA8uG,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;cAC9B53I,aAAa,CAAC88Q,uBAAuB,CAAC,CAAC;cAEvC,IAAIU,WAAW,EAAE;gBACbt9Q,YAAY,CAACw9Q,WAAW,CAACD,SAAS,CAAC;cACvC,CAAC,MAAM;gBACHx9Q,eAAe,CAACy9Q,WAAW,CAACD,SAAS,CAAC;cAC1C;YACJ,CAAC,EAAE,IAAI,CAAC;UACZ,CAAC,CAAC;QACN,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;EACN;EACA,SAASE,kCAAkCA,CAACrlJ,QAAQ,EAAE21G,UAAU,EAAEuvC,WAAW,EAAEC,SAAS,EAAE;IACtFzC,eAAe,CAACuC,iBAAiB,CAACtvC,UAAU,EAAE2vC,aAAa,IAAI;MAC3D;MACA,MAAMC,UAAU,GAAG;QACf9vO,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB+kO,mBAAmB,EAAE3uC,UAAU,CAACovC,aAAa;QAC7CngC,SAAS,EAAE;MACf,CAAC;MACD89B,eAAe,CAACyB,oBAAoB,CAACnkJ,QAAQ,EAAEwlJ,WAAW,IAAI;QAC1D,MAAMZ,UAAU,GAAG;UACfnvO,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtB+kO,mBAAmB,EAAEkB,WAAW,CAAC,CAAC,CAAC,CAAC/xQ,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;UACrDmxO,SAAS,EAAE;QACf,CAAC;QAED,IAAIy8B,aAAa,EAAE;UACf,IAAI/rO,cAAc,GAAG,wHAAwH;UAC7IomH,gBAAgB,CAACpmH,cAAc,EAAE,MAAM;YACnCotO,eAAe,CAAC6B,uBAAuB,CAACgB,UAAU,EAAE,MAAM;cACtD7C,eAAe,CAAC6B,uBAAuB,CAACK,UAAU,EAAE,MAAM;gBACtDnrQ,cAAc,CAAC3T,IAAI,CAAC,qBAAqB,CAAC;gBAC1CirB,UAAU,CAAC,YAAY;kBACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;kBACrB6B,aAAa,CAAC88Q,uBAAuB,CAAC,CAAC;kBACvC7vK,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;kBAE9B,IAAI4lI,WAAW,EAAE;oBACbt9Q,YAAY,CAACw9Q,WAAW,CAACD,SAAS,CAAC;kBACvC,CAAC,MAAM;oBACHx9Q,eAAe,CAACy9Q,WAAW,CAACD,SAAS,CAAC;kBAC1C;gBACJ,CAAC,EAAE,IAAI,CAAC;cACZ,CAAC,CAAC;YACN,CAAC,CAAC;UACN,CAAC,CAAC;QACN,CAAC,MAAM;UACH1rQ,cAAc,CAAC3T,IAAI,CAAC,SAAS,CAAC;UAC9BirB,UAAU,CAAC,YAAY;YACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;YACrB6B,aAAa,CAAC88Q,uBAAuB,CAAC,CAAC;YACvC7vK,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;YAE9B,IAAI4lI,WAAW,EAAE;cACbt9Q,YAAY,CAACw9Q,WAAW,CAACD,SAAS,CAAC;YACvC,CAAC,MAAM;cACHx9Q,eAAe,CAACy9Q,WAAW,CAACD,SAAS,CAAC;YAC1C;UACJ,CAAC,EAAE,IAAI,CAAC;QACZ;MACJ,CAAC,CAAC;IACN,CAAC,CAAC;EACN;EACA,SAASM,WAAWA,CAACP,WAAW,EAAEC,SAAS,EAAE3C,YAAY,EAAEC,iBAAiB,EAAE;IAC1EpB,aAAa,GAAGoB,iBAAiB;IAEjC,IAAID,YAAY,KAAK,GAAG,EAAE;MACtB,IAAIvrQ,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,EAAE;QACpCm8N,wBAAwB,GAAG+D,WAAW;QACtC9D,sBAAsB,GAAG+D,SAAS;QAClCtC,wBAAwB,CAAC,QAAQ,CAAC;QAClC;MACJ;IACJ;IAEA,IAAI7iJ,QAAQ,GAAGt4H,aAAa,CAACo7Q,iBAAiB,CAAC,MAAM,CAAC;IACtD,IAAIntC,UAAU,GAAGjuO,aAAa,CAACo7Q,iBAAiB,CAAC,QAAQ,CAAC;IAC1D;IACA,IAAI7rQ,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,EAAE;MACpC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;MAEA;MACAg7E,QAAQ,CAACijJ,UAAU,GAAGjjJ,QAAQ,CAACkjJ,uBAAuB,CAAC,CAAC,CAAC,CAACO,cAAc;MACxEzjJ,QAAQ,CAAC9gG,SAAS,GAAG,OAAO;;MAE5B;MACA8gG,QAAQ,CAAC0jJ,WAAW,GAAG,EAAE;MACzB1jJ,QAAQ,CAAC2jJ,kBAAkB,GAAG,EAAE;MAChC3jJ,QAAQ,CAAC4jJ,WAAW,GAAG,EAAE;MACzB5jJ,QAAQ,CAAC6jJ,aAAa,GAAG,EAAE;MAC3B7jJ,QAAQ,CAACnyF,MAAM,GAAG,EAAE;MACpBmyF,QAAQ,CAAC8jJ,0BAA0B,GAAG,EAAE;MACxC9jJ,QAAQ,CAAC+jJ,mBAAmB,GAAG,CAAC;MAEhC,IAAI,CAAC/jJ,QAAQ,CAACkkJ,qBAAqB,EAAE;QACjClkJ,QAAQ,CAACqjJ,SAAS,GAAG,EAAE;QACvBC,eAAe,CAAC,CAAC,KAAK,QAAQ,GACvBtjJ,QAAQ,CAACujJ,UAAU,GAAG,QAAQ,GAC9BvjJ,QAAQ,CAACujJ,UAAU,GAAG,OAAQ;MACzC;MACA;MACA;MACA;MACA,MAAMxzP,IAAI,GAAGU,QAAQ,CAACuvG,QAAQ,CAACgkJ,aAAa,CAACh6P,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3D,MAAMmG,KAAK,GAAGM,QAAQ,CAACuvG,QAAQ,CAACgkJ,aAAa,CAACh6P,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,MAAMyP,GAAG,GAAGhJ,QAAQ,CAACuvG,QAAQ,CAACgkJ,aAAa,CAACh6P,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC1D,IAAIi6P,OAAO,GAAG,IAAIrkQ,IAAI,CAACmQ,IAAI,EAAEI,KAAK,GAAG,CAAC,EAAEsJ,GAAG,CAAC;MAC5CwqP,OAAO,CAACj4P,OAAO,CAACi4P,OAAO,CAACl4P,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;MAEtC,IAAIrY,EAAE,GAAG,CAAC,GAAG,GAAGuwQ,OAAO,CAACl4P,OAAO,CAAC,CAAC,EAAE3W,KAAK,CAAC,CAAC,CAAC,CAAC;MAC5C,IAAIuX,EAAE,GAAG,CAAC,GAAG,IAAIs3P,OAAO,CAACn4P,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE1W,KAAK,CAAC,CAAC,CAAC,CAAC;MACnD,IAAI4X,IAAI,GAAGi3P,OAAO,CAACp4P,WAAW,CAAC,CAAC;MAEhCm0G,QAAQ,CAACgkJ,aAAa,GAAGh3P,IAAI,GAAG,GAAG,GAAGL,EAAE,GAAG,GAAG,GAAGjZ,EAAE;;MAEnD;MACAiiO,UAAU,CAACstC,UAAU,GAAGjjJ,QAAQ,CAACkjJ,uBAAuB,CAAC,CAAC,CAAC,CAACC,cAAc;MAC1ExtC,UAAU,CAACx3M,OAAO,GAAG,OAAO;MAE5BknP,kCAAkC,CAC9BrlJ,QAAQ,EACR21G,UAAU,EACVwrC,wBAAwB,EACxBC,sBACJ,CAAC;IACL,CAAC,MAAM;MACH6D,iBAAiB,CAACC,WAAW,EAAEC,SAAS,EAAExvC,UAAU,CAAC;IACzD;EACJ;EACA,SAAS+vC,WAAWA,CAACtB,OAAO,EAAEc,WAAW,EAAEC,SAAS,EAAE;IAClD,IAAI,CAACf,OAAO,EAAE;IAEd1B,eAAe,CAACiD,uBAAuB,CAACvB,OAAO,EAAE,UAAUrzK,OAAO,EAAE;MAChEt3F,cAAc,CAAC3T,IAAI,CAAC,SAAS,CAAC;MAC9BirB,UAAU,CAAC,YAAY;QACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrB,IAAIq/Q,WAAW,EAAE;UACbt9Q,YAAY,CAACw9Q,WAAW,CAACD,SAAS,CAAC;QACvC,CAAC,MAAM;UACHx9Q,eAAe,CAACy9Q,WAAW,CAACD,SAAS,CAAC;QAC1C;MACJ,CAAC,EAAE,IAAI,CAAC;IACZ,CAAC,CAAC;EACN;EAEA,SAASvC,gBAAgBA,CAAA,EAAwB;IAAA,IAAvBgD,YAAY,GAAAx1Q,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,MAAM;IAC3C,IAAIsI,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAIwQ,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACzCsQ,OAAO,CAAC/P,KAAK,CAACgwD,YAAY,GAAG,KAAK;IAClCjgD,OAAO,CAAC1T,SAAS,GAAG,iFAAiF;IAErG,IAAIovC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB,IAAIzB,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,IAAI4gO,YAAY,KAAK,MAAM,EAAE;UAC/D/C,wBAAwB,CAAC,CAAC;QAC9B;QACA,IAAI,CAAC5rQ,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,IAAI4gO,YAAY,KAAK,MAAM,EAAE;UAChErD,YAAY,CAAC,EAAE,EAAElB,aAAa,CAAC;QACnC;QACA,IAAIpqQ,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,IAAI4gO,YAAY,KAAK,QAAQ,EAAE;UACjE/C,wBAAwB,CAAC,QAAQ,CAAC;QACtC;QACA,IAAI,CAAC5rQ,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,IAAI4gO,YAAY,KAAK,QAAQ,EAAE;UAClEH,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEpE,aAAa,CAAC;QAC1C;MACJ;IACJ,CAAC,CAAC;IACF,IAAI9tH,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;MACrB;IACJ,CAAC,CAAC;IAEFA,KAAK,CAACpS,WAAW,CAACoT,OAAO,CAAC;IAC1B07B,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B76I,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAE1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACrB;EACA,SAASgjJ,gBAAgBA,CAACmqH,WAAW,EAAEn7Q,QAAQ,EAAE;IAC7C,IAAIgO,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MAAEgB,UAAU,EAAE,CAAC,SAAS,CAAC;MAAEkP,KAAK,EAAE;IAAK,CAAC,CAAC;IACjE,IAAIM,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACzCsQ,OAAO,CAAC1T,SAAS,GAAG6/Q,WAAW;IAC/B,IAAIzwO,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,KAAK;MACXI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjBhO,QAAQ,CAAC,CAAC;MACd;IACJ,CAAC,CAAC;IACF,IAAI6oJ,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjBhR,aAAa,CAACo+Q,iBAAiB,CAAC,CAAC;MACrC;IACJ,CAAC,CAAC;IACF1wO,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B76I,KAAK,CAACpS,WAAW,CAACoT,OAAO,CAAC;IAC1BhB,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAE1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACrB;EACA,SAASmqQ,wBAAwBA,CAAA,EAAwB;IAAA,IAAvB+C,YAAY,GAAAx1Q,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,MAAM;IACnD,IAAI21Q,MAAM,GAAGntQ,KAAK,CAAC1P,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI88Q,QAAQ,GAAGn9Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC1C48Q,QAAQ,CAAChgR,SAAS,GAAG,kJAAkJ;IACvK,IAAIovC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAIqgR,OAAO,GAAGh9Q,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAACkgR,MAAM,CAAC;QAClBH,YAAY,KAAK,MAAM,GACjBrD,YAAY,CAAC,EAAE,EAAElB,aAAa,CAAC,GAC/BoE,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEpE,aAAa,CAAC;MAChD;IACJ,CAAC,CAAC;IACF,IAAI6E,MAAM,GAAGj9Q,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAACkgR,MAAM,CAAC;MACtB;IACJ,CAAC,CAAC;IACF3wO,OAAO,CAAC9uC,WAAW,CAAC2/Q,OAAO,CAAC;IAC5B7wO,OAAO,CAAC9uC,WAAW,CAAC4/Q,MAAM,CAAC;IAC3BH,MAAM,CAACz/Q,WAAW,CAAC0/Q,QAAQ,CAAC;IAC5BD,MAAM,CAACz/Q,WAAW,CAAC8uC,OAAO,CAAC;IAC3B;;IAEAx8B,KAAK,CAAC9S,IAAI,CAACigR,MAAM,CAAC;EACtB;;EAEA;EACA,SAASI,oCAAoCA,CAACC,gBAAgB,EAAE;IAC5D;IACAlE,oBAAoB,GAAGkE,gBAAgB,CAACnzL,MAAM,CAAC,CAAChnF,CAAC,EAAEb,CAAC,KAAK;MACrDa,CAAC,CAACb,CAAC,CAACsgD,UAAU,CAAC,GAAG,EAAEz/C,CAAC,CAACb,CAAC,CAACsgD,UAAU,CAAC,IAAI,CAAC;MACxC,OAAOz/C,CAAC;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;;IAEN;IACAk2Q,4BAA4B,GAAGiE,gBAAgB,CAAC/xQ,MAAM,CAClDjJ,CAAC,IAAI,CAAC82Q,oBAAoB,CAAC92Q,CAAC,CAACsgD,UAAU,CAC3C,CAAC;;IAED;IACA02N,8BAA8B,GAAGgE,gBAAgB,CAAC/xQ,MAAM,CACpDjJ,CAAC,IAAI82Q,oBAAoB,CAAC92Q,CAAC,CAACsgD,UAAU,CAC1C,CAAC;EACL;EACA,SAAS26N,0BAA0BA,CAAA,EAAG;IAClC,MAAMC,KAAK,GAAG,CAAC,GAAGvE,qBAAqB,CAAC7yQ,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEnE,IAAIo3Q,KAAK,CAACngR,MAAM,GAAG,CAAC,EAAE;MAClB87Q,uBAAuB,CAACv8Q,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrD,CAAC,MAAM;MACHq8Q,uBAAuB,CAACv8Q,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxD;EACJ;EACA,SAAS4gR,gCAAgCA,CAACC,OAAO,EAAEz0K,QAAQ,EAAE;IACzD,IAAI00K,sBAAsB,GAAGrE,8BAA8B,CAAC/tQ,MAAM,CAC9D+gD,GAAG,IAAIA,GAAG,CAAC1J,UAAU,KAAKqmD,QAAQ,CAACrmD,UACvC,CAAC;IAED,IAAI9/C,IAAI,GAAG66Q,sBAAsB,CAAC72Q,GAAG,CAACkB,QAAQ,KAAK;MAC/CzH,EAAE,EAAEyH,QAAQ,CAAC46C,UAAU;MACvBjhD,KAAK,EAAEqG,QAAQ,CAACqpD,UAAU;MAC1B3wD,IAAI,EAAEsH,QAAQ,CAACspD;IACnB,CAAC,CAAC,CAAC;IACHxuD,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,EAAE;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC3DqB,QAAQ,CAAC5E,QAAQ,CAACugR,OAAO,EAAE56Q,IAAI,CAAC;EACpC;EACA,SAAS86Q,6BAA6BA,CAAC30K,QAAQ,EAAEvyF,KAAK,EAAE;IACpD,MAAMtU,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAE1C,MAAMu9Q,iCAAiC,GAAG99Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACrEu9Q,iCAAiC,CAAC3gR,SAAS,GAAG,mDAAmD+rG,QAAQ,CAACsjC,YAAY,aAAa;IAEnI,MAAM2sI,wBAAwB,GAAGn3Q,QAAQ,CAAC3B,KAAK,CAAC;MAC5C8B,KAAK,EAAE,WAAW;MAClBF,UAAU,EAAE,2BAA2B0U,KAAK;IAChD,CAAC,CAAC;IAEFwiQ,wBAAwB,CAACt8Q,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAE/Co8Q,wBAAwB,CAACh5Q,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACzD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,MAAMs7Q,mBAAmB,GAAGv7Q,cAAc,CAACZ,KAAK;MAChD63Q,qBAAqB,CAACvwK,QAAQ,CAACrmD,UAAU,CAAC,GAAGk7N,mBAAmB;MAChE;MACA,IAAI,CAACA,mBAAmB,IAAIA,mBAAmB,KAAK,QAAQ,EAAE;QAC1D5E,wBAAwB,CAACt8Q,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACnD,CAAC,MAAM;QACHo8Q,wBAAwB,CAACt8Q,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACtD;MACA0gR,0BAA0B,CAAC,CAAC;IAChC,CAAC,CAAC;IAEFE,gCAAgC,CAACvE,wBAAwB,EAAEjwK,QAAQ,CAAC;IAEpE7mG,IAAI,CAAC5E,WAAW,CAACqgR,iCAAiC,CAAC;IACnDz7Q,IAAI,CAAC5E,WAAW,CAAC07Q,wBAAwB,CAAC;IAE1C,OAAO92Q,IAAI;EACf;EACA,SAAS85Q,4BAA4BA,CAACj0K,OAAO,EAAE;IAC3Co1K,oCAAoC,CAACp1K,OAAO,CAAC;;IAE7C;IACAgxK,qBAAqB,GAAGnpQ,KAAK,CAAC1P,KAAK,CAAC;MAChC2P,MAAM,EAAE,iDAAiD;MACzDO,KAAK,EAAE,KAAK;MACZ/P,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,IAAIs9Q,iCAAiC,GAAG99Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACnEu9Q,iCAAiC,CAAC3gR,SAAS,GAAG,uKAAuK;IAErN+7Q,qBAAqB,CAACz7Q,WAAW,CAACqgR,iCAAiC,CAAC;;IAEpE;IACA,IAAIE,mBAAmB,GAAGzE,8BAA8B,CACnDxyQ,GAAG,CAACgN,IAAI,KAAK;MAAE8uC,UAAU,EAAE9uC,IAAI,CAAC8uC,UAAU;MAAE2pF,YAAY,EAAEz4H,IAAI,CAACy4H;IAAa,CAAC,CAAC,CAAC,CAC/EhhI,MAAM,CAAC,CAAC5J,KAAK,EAAE+U,KAAK,EAAEsI,IAAI,KAAKA,IAAI,CAACuH,OAAO,CAAC5kB,KAAK,CAAC,KAAK+U,KAAK,CAAC;;IAElE;IACA,KAAK,MAAMuyF,QAAQ,IAAI80K,mBAAmB,EAAE;MACxC,IAAI70K,SAAS,GAAGD,QAAQ,CAACsjC,YAAY,CAACrrH,KAAK,CAAC,GAAG,CAAC,CAAC5U,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACwc,IAAI,CAAC,GAAG,CAAC;MACvE,IAAIqgF,QAAQ,GAAGF,QAAQ,CAACsjC,YAAY,CAACrrH,KAAK,CAAC,GAAG,CAAC,CAAC5U,KAAK,CAAC,CAAC,CAAC,CAAC,CAACwc,IAAI,CAAC,GAAG,CAAC;MACnEmgF,QAAQ,CAACsjC,YAAY,GAAGpjC,QAAQ,GAAG,IAAI,GAAGD,SAAS;IACvD;IACA;IACA60K,mBAAmB,GAAGA,mBAAmB,CAACxyQ,MAAM,CAC5C,CAAC5J,KAAK,EAAE+U,KAAK,EAAEsI,IAAI,KACftI,KAAK,KACLsI,IAAI,CAACsqB,SAAS,CACVxrB,CAAC,IAAIA,CAAC,CAAC8kC,UAAU,KAAKjhD,KAAK,CAACihD,UAAU,IAAI9kC,CAAC,CAACyuH,YAAY,KAAK5qI,KAAK,CAAC4qI,YACvE,CACR,CAAC;IACD;IACA;IACAwxI,mBAAmB,CAAC3mQ,IAAI,CAAC,UAAUjU,CAAC,EAAEuU,CAAC,EAAE;MACrC,IAAI2uJ,KAAK,GAAGljK,CAAC,CAACopI,YAAY,CAAChlG,WAAW,CAAC,CAAC;MACxC,IAAI++H,KAAK,GAAG5uJ,CAAC,CAAC60H,YAAY,CAAChlG,WAAW,CAAC,CAAC;MACxC,OAAO8+H,KAAK,GAAGC,KAAK,GAAG,CAAC,CAAC,GAAGD,KAAK,GAAGC,KAAK,GAAG,CAAC,GAAG,CAAC;IACrD,CAAC,CAAC;;IAEF;IACAy3G,mBAAmB,CAACzgR,OAAO,CAAC,CAAC2rG,QAAQ,EAAEvyF,KAAK,KAAK;MAC7C,MAAMqD,MAAM,GAAG6jQ,6BAA6B,CAAC30K,QAAQ,EAAEvyF,KAAK,CAAC;MAC7DuiQ,qBAAqB,CAACz7Q,WAAW,CAACuc,MAAM,CAAC;IAC7C,CAAC,CAAC;IAEFo/P,uBAAuB,GAAGh5Q,MAAM,CAACC,KAAK,CAAC;MACnCG,EAAE,EAAE,yBAAyB;MAC7BG,IAAI,EAAE,MAAM;MACZI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAI22Q,aAAa,EAAE;UACf;;UAEAzoQ,KAAK,CAAC/S,IAAI,CAACk8Q,qBAAqB,CAAC;UACjC,IAAI+E,yBAAyB,GAAG,MAAMC,mCAAmC,CAAC,CAAC;UAC3E,IAAI16P,IAAI,GAAGy6P,yBAAyB;UACpC,IAAIzC,SAAS,GAAG;YACZ5uO,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;YACtB+kO,mBAAmB,EAAEwC,yBAAyB,CAACl1P,IAAI,CAAC,GAAG,CAAC;YACxDgzN,SAAS,EAAE;UACf,CAAC;UAED89B,eAAe,CAAC6B,uBAAuB,CAACF,SAAS,EAAE,YAAY;YAC3D5qQ,cAAc,CAAC3T,IAAI,CAAC,mBAAmB,CAAC;YACxCirB,UAAU,CAAC,YAAY;cACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;cACrB6B,aAAa,CAAC88Q,uBAAuB,CAAC,CAAC;cACvC7vK,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;cAC9BmlI,YAAY,CAAC17Q,IAAI,CAAC,IAAI,CAAC;YAC3B,CAAC,EAAE,IAAI,CAAC;UACZ,CAAC,CAAC,CAAC,CAAC;;UAEJu5Q,qBAAqB,GAAG,CAAC,CAAC;QAC9B,CAAC,MAAM;UACH;;UAEA,IAAIwE,yBAAyB,GAAG,MAAMC,mCAAmC,CAAC,CAAC;UAC3E,IAAI16P,IAAI,GAAGy6P,yBAAyB;UAEpCluQ,KAAK,CAAC/S,IAAI,CAACk8Q,qBAAqB,CAAC;UACjCtoQ,cAAc,CAAC3T,IAAI,CAAC,OAAO,CAAC;UAC5BirB,UAAU,CAAC,YAAY;YACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;YACrB6B,aAAa,CAAC88Q,uBAAuB,CAAC,CAAC;YACvC7vK,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;YAC9BmlI,YAAY,CAAC17Q,IAAI,CAAC,CAAC;UACvB,CAAC,EAAE,IAAI,CAAC;UAERu5Q,qBAAqB,GAAG,CAAC,CAAC;QAC9B;MACJ;IACJ,CAAC,CAAC;IACF,IAAI,CAACnmF,UAAU,GAAG8lF,uBAAuB;IAEzC,IAAI1qO,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MACzBG,EAAE,EAAE,2BAA2B;MAC/BG,IAAI,EAAE,QAAQ;MACdI,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAM;QACZ43Q,qBAAqB,GAAG,CAAC,CAAC;QAE1B1pQ,KAAK,CAAC/S,IAAI,CAACk8Q,qBAAqB,CAAC;QAEjC,IAAIV,aAAa,EAAE;UACf35Q,aAAa,CAACo+Q,iBAAiB,CAAC,CAAC;QACrC,CAAC,MAAM;UACHp+Q,aAAa,CAACs/Q,gBAAgB,CAAC,CAAC;QACpC;MACJ;IACJ,CAAC,CAAC;IAEFC,yBAAyB,GAAG7E,8BAA8B,CAAC,CAAC,CAAC,CAAC12N,UAAU;IACxE,IAAItW,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC27Q,uBAAuB,CAAC;IAC5C7sO,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAC9BwqO,qBAAqB,CAACz7Q,WAAW,CAAC8uC,OAAO,CAAC;IAE1Cx8B,KAAK,CAAC9S,IAAI,CAACi8Q,qBAAqB,CAAC;EACrC;EACA,eAAegF,mCAAmCA,CAAA,EAAG;IACjD,IAAIG,8BAA8B,GAAG,EAAE;IACvC,IAAIC,qCAAqC,GAAG,EAAE;;IAE9C;IACA,IAAIC,cAAc,GAAGjF,4BAA4B,CAAClvL,MAAM,CAAC,CAAChnF,CAAC,EAAEb,CAAC,KAAK;MAC/Da,CAAC,CAACb,CAAC,CAAC+uD,UAAU,CAAC,GAAG,EAAEluD,CAAC,CAACb,CAAC,CAAC+uD,UAAU,CAAC,IAAI,CAAC;MACxC,OAAOluD,CAAC;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;;IAEN;IACA;IACA,IAAIo7Q,0BAA0B,GAAG,EAAE;IACnC,KAAKxzO,IAAI,IAAIuzO,cAAc,EAAE;MACzB,IAAIA,cAAc,CAACvzO,IAAI,CAAC,KAAK,CAAC,EAAE;QAC5BwzO,0BAA0B,CAACpzQ,IAAI,CAAC4/B,IAAI,CAAC;MACzC;IACJ;IAEA,IAAIwzO,0BAA0B,CAAClhR,MAAM,GAAG,CAAC,EAAE;MACvC,KAAK,MAAMmhR,UAAU,IAAID,0BAA0B,EAAE;QACjD;QACA,IAAIE,mCAAmC;QACvCA,mCAAmC,GAAGpF,4BAA4B,CAAC9tQ,MAAM,CAACjJ,CAAC,IAAI;UAC3E,OAAOA,CAAC,CAAC+uD,UAAU,KAAKmtN,UAAU;QACtC,CAAC,CAAC;QAEF,IAAIC,mCAAmC,CAACphR,MAAM,GAAG,CAAC,EAAE;UAChD,IAAIqhR,cAAc,GAAG,EAAE;UACvB,IAAIC,UAAU;UACd;UACAF,mCAAmC,CAACnhR,OAAO,CAAC,UAAUwW,IAAI,EAAE;YACxD4qQ,cAAc,GAAGA,cAAc,GAAG5qQ,IAAI,CAAC8uC,UAAU,GAAG,GAAG;YACvD+7N,UAAU,GAAG7qQ,IAAI,CAACu9C,UAAU;UAChC,CAAC,CAAC;UAEFqtN,cAAc,GAAGA,cAAc,CAACpyQ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;UAE5C4qH,QAAQ,GAAGt4H,aAAa,CAACo7Q,iBAAiB,CAAC,CAAC;UAC5C9iJ,QAAQ,CAAC7lE,UAAU,GAAGstN,UAAU;UAChCznJ,QAAQ,CAACt0E,UAAU,GAAG87N,cAAc;;UAEpC;UACA;UACA,IAAIE,aAAa;UACjB,MAAMhF,eAAe,CAACyB,oBAAoB,CAACnkJ,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;YACpE22K,aAAa,GAAG32K,OAAO,CAAC,CAAC,CAAC,CAAC37F,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;UAC3C,CAAC,CAAC;UACF8xQ,8BAA8B,CAACjzQ,IAAI,CAAC;YAChCkmD,UAAU,EAAE6lE,QAAQ,CAAC7lE,UAAU;YAC/B4qN,aAAa,EAAE2C;UACnB,CAAC,CAAC;QACN,CAAC,CAAC;MACN,CAAC,CAAC;IACN,CAAC,CAAC;;IAEF;IACA;IACA,IAAIC,sCAAsC;IAC1CA,sCAAsC,GAAGxF,4BAA4B,CAAC9tQ,MAAM,CACxEjJ,CAAC,IAAI,CAACg8Q,cAAc,CAACh8Q,CAAC,CAAC+uD,UAAU,CACrC,CAAC;;IAED;IACA;IACA,IAAIwtN,sCAAsC,CAACxhR,MAAM,GAAG,CAAC,EAAE;MACnD,KAAK,MAAMyW,IAAI,IAAI+qQ,sCAAsC,EAAE;QACvD3nJ,QAAQ,GAAGt4H,aAAa,CAACo7Q,iBAAiB,CAAC,CAAC;QAC5C9iJ,QAAQ,CAAC7lE,UAAU,GAAGv9C,IAAI,CAACu9C,UAAU;QACrC6lE,QAAQ,CAACt0E,UAAU,GAAG9uC,IAAI,CAAC8uC,UAAU;QACrC,IAAIg8N,aAAa;QACjB,MAAMhF,eAAe,CAACyB,oBAAoB,CAACnkJ,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;UACpE22K,aAAa,GAAG32K,OAAO,CAAC,CAAC,CAAC,CAAC37F,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC;QACF8xQ,8BAA8B,CAACjzQ,IAAI,CAAC;UAChCkmD,UAAU,EAAE6lE,QAAQ,CAAC7lE,UAAU;UAC/B4qN,aAAa,EAAE2C;QACnB,CAAC,CAAC;MACN;IACJ;IACA;IACA;IACA,IACIR,8BAA8B,CAAC/gR,MAAM,GAAG,CAAC,IACzCghR,qCAAqC,CAAChhR,MAAM,GAAG,CAAC,IAChDwhB,MAAM,CAACxJ,MAAM,CAACmkQ,qBAAqB,CAAC,CAACn8Q,MAAM,KAAK,CAAC,EACnD;MACE;MACA,KAAK0tC,IAAI,IAAIyuO,qBAAqB,EAAE;QAChC,IAAIsF,aAAa,GAAG,KAAK;QACzB,IAAIC,wBAAwB,GAAGvF,qBAAqB,CAACzuO,IAAI,CAAC;QAC1D,IAAIozO,yBAAyB,GAAGpzO,IAAI;QAEpC,IAAIszO,qCAAqC,CAAChhR,MAAM,GAAG,CAAC,EAAE;UAClD;UACA,KAAK,MAAMyW,IAAI,IAAIuqQ,qCAAqC,EAAE;YACtD;YACA,IAAIvqQ,IAAI,CAACu9C,UAAU,KAAK0tN,wBAAwB,EAAE;cAC9CD,aAAa,GAAG,IAAI;cACpB,IAAI5nJ,QAAQ,GAAGt4H,aAAa,CAACo7Q,iBAAiB,CAAC,CAAC;cAChDhW,YAAY,GAAG;gBACXr3N,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;gBACtBwlO,aAAa,EAAEnoQ,IAAI,CAACmoQ,aAAa;gBACjCr5N,UAAU,EAAEu7N,yBAAyB;gBACrC1D,UAAU,EAAEvjJ,QAAQ,CAACujJ,UAAU;gBAC/BF,SAAS,EAAErjJ,QAAQ,CAACqjJ;cACxB,CAAC;cACD;cACA,MAAMX,eAAe,CAACoF,iCAAiC,CACnDhb,YAAY,EAC5B,UAAU39M,GAAG,EAAE,CAAC,CACJ,CAAC;YACL,CAAC,CAAC;UACN,CAAC,CAAC;QACN,CAAC,MAAM;UACH;;UAEA;UACA,KAAK,MAAMvyC,IAAI,IAAIsqQ,8BAA8B,EAAE;YAC/C;YACA,IAAItqQ,IAAI,CAACu9C,UAAU,KAAK0tN,wBAAwB,EAAE;cAC9CD,aAAa,GAAG,IAAI;cACpB,IAAI5nJ,QAAQ,GAAGt4H,aAAa,CAACo7Q,iBAAiB,CAAC,CAAC;cAChDhW,YAAY,GAAG;gBACXr3N,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;gBACtBwlO,aAAa,EAAEnoQ,IAAI,CAACmoQ,aAAa;gBACjCr5N,UAAU,EAAEu7N,yBAAyB;gBACrC1D,UAAU,EAAEvjJ,QAAQ,CAACujJ,UAAU;gBAC/BF,SAAS,EAAErjJ,QAAQ,CAACqjJ;cACxB,CAAC;cACD;cACA,MAAMX,eAAe,CAACoF,iCAAiC,CACnDhb,YAAY,EAC5B,UAAU39M,GAAG,EAAE,CAAC,CACJ,CAAC;YACL,CAAC,CAAC;UACN,CAAC,CAAC;QACN,CAAC,CAAC;;QAEF;QACA,IAAI,CAACy4N,aAAa,EAAE,MAAMG,gCAAgC,CAACl0O,IAAI,CAAC;MACpE,CAAC,CAAC;IACN,CAAC,MAAM;MACH;;MAEA,MAAMk0O,gCAAgC,CAACl0O,IAAI,CAAC;IAChD;IACA;;IAEA;IACA,eAAek0O,gCAAgCA,CAACl0O,IAAI,EAAE;MAClDmsF,QAAQ,GAAGt4H,aAAa,CAACo7Q,iBAAiB,CAAC,CAAC;MAE5C,IAAI4E,aAAa;MACjB,MAAMG,wBAAwB,GAAGvF,qBAAqB,CAACzuO,IAAI,CAAC;MAC5D,MAAMozO,yBAAyB,GAAGpzO,IAAI;MACtCmsF,QAAQ,CAAC7lE,UAAU,GAAG0tN,wBAAwB;MAC9C7nJ,QAAQ,CAACt0E,UAAU,GAAGu7N,yBAAyB;MAE/C,MAAMvE,eAAe,CAACyB,oBAAoB,CAACnkJ,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;QACpE22K,aAAa,GAAG32K,OAAO,CAAC,CAAC,CAAC,CAAC37F,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC+xQ,qCAAqC,CAAClzQ,IAAI,CAAC;UACvCkmD,UAAU,EAAE6lE,QAAQ,CAAC7lE,UAAU;UAC/B4qN,aAAa,EAAE2C;QACnB,CAAC,CAAC;MACN,CAAC,CAAC;IACN,CAAC,CAAC;;IAEF;IACA,IAAIM,oCAAoC,GAAGd,8BAA8B,CAACp9P,MAAM,CAC5Eq9P,qCACJ,CAAC;;IAED;IACA;IACA,KAAK,MAAMvqQ,IAAI,IAAIorQ,oCAAoC,EAAE;MACrD,MAAMtF,eAAe,CAACuF,mCAAmC,CAACrrQ,IAAI,CAACmoQ,aAAa,EAAE,UAAU51N,GAAG,EAAE;QACzF6wE,QAAQ,CAAC+kJ,aAAa,GAAGnoQ,IAAI,CAACmoQ,aAAa;QAC3C/kJ,QAAQ,CAAC7lE,UAAU,GAAGv9C,IAAI,CAACu9C,UAAU;QACrC6lE,QAAQ,CAACkoJ,wBAAwB,GAAG/4N,GAAG,CAAChpD,MAAM;MAClD,CAAC,CAAC;MACR,MAAMu8Q,eAAe,CAACuC,iBAAiB,CAACjlJ,QAAQ,EAAE,UAAUjvB,OAAO,EAAE,CAAC,CAAC,CAAC;IACtE;IACA;IACA,MAAMo3K,kBAAkB,GAAGH,oCAAoC,CAACp4Q,GAAG,CAACsX,CAAC,IAAIA,CAAC,CAAC69P,aAAa,CAAC;IAEzF,OAAOoD,kBAAkB;EAC7B,CAAC,CAAC;;EAEF;EACA;EACA,SAAS7E,eAAeA,CAAA,EAAG;IACvB,IAAIrsQ,CAAC,CAACC,OAAO,CAACwoC,EAAE,KAAK,aAAa,IAAIzoC,CAAC,CAACC,OAAO,CAACwoC,EAAE,KAAK,OAAO,EAAE;MAC5D,OAAO,QAAQ;IACnB,CAAC,MAAM,OAAO,OAAO;EACzB;EACA,SAAS0oO,iBAAiBA,CAACr3K,OAAO,EAAE;IAChC,IAAI5hD,GAAG,GAAG4hD,OAAO,CAAC,CAAC,CAAC;IAEpBuwK,cAAc,CAACC,qBAAqB,GAAGpyN,GAAG,CAACk5N,mBAAmB;IAC9D/G,cAAc,CAACE,cAAc,GAAGryN,GAAG,CAACm5N,YAAY;IAChDhH,cAAc,CAACG,kBAAkB,GAAGtyN,GAAG,CAACo5N,gBAAgB;IACxDjH,cAAc,CAACI,sBAAsB,GAAGvyN,GAAG,CAACq5N,oBAAoB;IAChElH,cAAc,CAACK,gBAAgB,GAAGxyN,GAAG,CAACs5N,cAAc;IACpDnH,cAAc,CAACM,kBAAkB,GAAGzyN,GAAG,CAACu5N,kBAAkB;IAC1DpH,cAAc,CAACO,kBAAkB,GAAG1yN,GAAG,CAACw5N,kBAAkB;IAC1DrH,cAAc,CAACQ,mBAAmB,GAAG3yN,GAAG,CAACy5N,qBAAqB;EAClE;EACA,SAASC,oBAAoBA,CAACr4O,UAAU,EAAEC,QAAQ,EAAExU,UAAU,EAAE;IAC5D;IACA,IAAI6sP,QAAQ,GAAGt4O,UAAU;IACzB,IAAIu4O,MAAM,GAAGt4O,QAAQ;IAErB,OAAO;MACHzS,KAAK,EAAE8qP,QAAQ;MACf5qP,GAAG,EAAE6qP,MAAM;MACX9sP;IACJ,CAAC;EACL;EACA,SAAS+sP,cAAcA,CAACj4K,OAAO,EAAE;IAC7B,IAAIk4K,aAAa,GAAG,KAAK;IACzB,IAAIC,QAAQ,GAAG,KAAK;IACpB,IAAIC,iBAAiB;IACrB,IAAIC,YAAY;IAChB,IAAI51O,GAAG,GAAG,IAAI5zB,IAAI,CAAC,CAAC;IACpB4zB,GAAG,CAACrnB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAExB4kF,OAAO,CAAC3qG,OAAO,CAAC,CAAC8gB,CAAC,EAAEnW,CAAC,KAAK;MACtB,IAAIs4Q,cAAc,GAAGniQ,CAAC,CAACoiQ,cAAc;MACrC,IAAIC,WAAW,GAAGriQ,CAAC,CAACsiQ,WAAW;MAC/B,IAAIzrP,SAAS,GAAG7W,CAAC,CAACuiQ,SAAS,CAACz/P,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3C,IAAIiU,OAAO,GAAG/W,CAAC,CAACwiQ,OAAO,CAAC1/P,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACvC,IAAI2/P,YAAY,GAAGpwP,IAAI,CAACkY,eAAe,CAAC1T,SAAS,CAAC,CAAC,CAAC;MACpD,IAAI6rP,UAAU,GAAGrwP,IAAI,CAACkY,eAAe,CAACxT,OAAO,CAAC,CAAC,CAAC;;MAEhD,IAAIhC,UAAU,GAAG,GAAG8B,SAAS,MAAME,OAAO,EAAE,CAAC,CAAC;MAC9C,IAAI4rP,MAAM,GAAG;QACT7rP,KAAK,EAAE2rP,YAAY;QACnBzrP,GAAG,EAAE0rP,UAAU;QACf3tP,UAAU;QACVstP,WAAW,EAAEA;MACjB,CAAC;MAED,IAAIO,YAAY,GAAG,IAAIlqQ,IAAI,CAACme,SAAS,CAAC;MACtC,IAAIgsP,UAAU,GAAG,IAAInqQ,IAAI,CAACqe,OAAO,CAAC;MAElC,IAAIltB,CAAC,KAAK,CAAC,EAAE;QACTo4Q,iBAAiB,GAAGN,oBAAoB,CAACc,YAAY,EAAEC,UAAU,EAAE3tP,UAAU,CAAC;MAClF;MACA,IAAIotP,cAAc,KAAK,OAAO,IAAI,CAACD,YAAY,EAAE;QAC7CA,YAAY,GAAGP,oBAAoB,CAACc,YAAY,EAAEC,UAAU,EAAE3tP,UAAU,CAAC;MAC7E;;MAEA;MACA,IAAIuX,GAAG,IAAIs2O,YAAY,IAAIt2O,GAAG,IAAIu2O,UAAU,EAAE;QAC1ChJ,gBAAgB,GAAGxnP,IAAI,CAACkY,eAAe,CACnC,GAAG+B,GAAG,CAAC1nB,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI0nB,GAAG,CAACznB,OAAO,CAAC,CAAC,IAAIynB,GAAG,CAAC3nB,WAAW,CAAC,CAAC,EAC/D,CAAC;QACDg1P,qBAAqB,GAAGgI,oBAAoB,CAACc,YAAY,EAAEC,UAAU,EAAE3tP,UAAU,CAAC;QAClFgtP,aAAa,GAAG,IAAI;QAEpB,IAAII,cAAc,KAAK,OAAO,EAAE;UAC5BztP,WAAW,GAAGrC,IAAI,CAACkY,eAAe,CAC9B,GAAG+B,GAAG,CAAC1nB,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI0nB,GAAG,CAACznB,OAAO,CAAC,CAAC,IAAIynB,GAAG,CAAC3nB,WAAW,CAAC,CAAC,EAC/D,CAAC;UACDi1P,gBAAgB,GAAG+H,oBAAoB,CAACc,YAAY,EAAEC,UAAU,EAAE3tP,UAAU,CAAC;UAC7EitP,QAAQ,GAAG,IAAI;QACnB;MACJ;MACA;MACAvI,eAAe,CAAC1sQ,IAAI,CAAC41Q,MAAM,CAAC;MAC5B,IAAIR,cAAc,KAAK,OAAO,EAAE;QAC5BzI,UAAU,CAAC3sQ,IAAI,CAAC41Q,MAAM,CAAC;MAC3B;IACJ,CAAC,CAAC;IAEF,IAAI,CAACZ,aAAa,EAAE;MAChBlI,gBAAgB,GAAGoI,iBAAiB,CAACnrP,KAAK;MAC1C6iP,qBAAqB,GAAGsI,iBAAiB;IAC7C;IACA,IAAI,CAACD,QAAQ,IAAIE,YAAY,EAAE;MAC3BxtP,WAAW,GAAGwtP,YAAY,CAACprP,KAAK;MAChC8iP,gBAAgB,GAAGsI,YAAY;IACnC;EACJ;EACA,SAASY,aAAaA,CAACC,KAAK,EAAE;IAC1B,IAAIA,KAAK,EAAE;MACP,OAAO,CAAC,GAAGtJ,eAAe,CAAC;IAC/B,CAAC,MAAM;MACH,OAAO,CAAC,GAAGC,UAAU,CAAC;IAC1B;EACJ;EACA,SAASsJ,mBAAmBA,CAACD,KAAK,EAAE;IAChC,IAAIA,KAAK,EAAE;MACP,OAAO1wP,IAAI,CAACqa,aAAa,CAACitO,qBAAqB,CAAC;IACpD,CAAC,MAAM;MACH,OAAOtnP,IAAI,CAACqa,aAAa,CAACktO,gBAAgB,CAAC;IAC/C;EACJ;EACA,SAASqJ,cAAcA,CAACF,KAAK,EAAE;IAC3B,IAAIA,KAAK,EAAE;MACP,OAAOlJ,gBAAgB;IAC3B,CAAC,MAAM;MACH,OAAOnlP,WAAW;IACtB;EACJ;EACA,SAAS0vK,YAAYA,CAAA,EAAG;IACpB,OAAO,CAAC,GAAG3rJ,SAAS,CAAC;EACzB;EACA,SAASyqO,iBAAiBA,CAAA,EAAG;IACzB,OAAO,CAAC,GAAGlJ,cAAc,CAAC;EAC9B;EACA,SAASmJ,qBAAqBA,CAAA,EAAG;IAC7B,IAAI,CAACrJ,kBAAkB,EAAE,OAAO,EAAE;IAClC,OAAO,CAAC,GAAGA,kBAAkB,CAAC;EAClC;EACA,eAAesJ,YAAYA,CAACC,eAAe,EAAE;IACzC,IAAI,CAACA,eAAe,EAAE;MAClB,OAAO,CAAC,GAAGtJ,SAAS,CAAC;IACzB;IAEA,MAAMuJ,YAAY,GAAG,MAAM9H,eAAe,CAAC+H,iBAAiB,CAACF,eAAe,CAAC;IAE7E,OAAO,CAAC,GAAGC,YAAY,CAAC;EAC5B;EACA,SAASE,iBAAiBA,CAAA,EAAG;IACzB,OAAOnxP,IAAI,CAACqa,aAAa,CAAC0tO,cAAc,CAAC;EAC7C;EACA,SAASqJ,cAAcA,CAACjgR,QAAQ,EAAE;IAC9B,IACIk2Q,UAAU,CAACz6Q,MAAM,KAAK,CAAC,IACvBw6Q,eAAe,CAACx6Q,MAAM,KAAK,CAAC,IAC5B,CAACw5C,SAAS,IACV,CAACshO,SAAS,IACV,CAACC,cAAc,EACjB;MACE,IAAI0J,QAAQ,GAAG,EAAE;MAEjB,MAAMC,wBAAwB,GAAG,IAAI1zN,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;QAC9DmoQ,eAAe,CAACmI,wBAAwB,CAAC95K,OAAO,IAAI;UAChDi4K,cAAc,CAACj4K,OAAO,CAAC;UACvB35C,OAAO,CAAC,+BAA+B,CAAC;QAC5C,CAAC,CAAC;MACN,CAAC,CAAC;MACFwzN,QAAQ,CAAC32Q,IAAI,CAAC42Q,wBAAwB,CAAC;MAEvC,MAAMC,uBAAuB,GAAG,IAAI3zN,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;QAC7DmoQ,eAAe,CAACoI,uBAAuB,CAAC/5K,OAAO,IAAI;UAC/CpxD,SAAS,GAAGoxD,OAAO;UACnB35C,OAAO,CAAC,8BAA8B,CAAC;QAC3C,CAAC,CAAC;MACN,CAAC,CAAC;MACFwzN,QAAQ,CAAC32Q,IAAI,CAAC62Q,uBAAuB,CAAC;MAEtC,MAAMC,4BAA4B,GAAG,IAAI5zN,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;QAClEmoQ,eAAe,CAACqI,4BAA4B,CAACh6K,OAAO,IAAI;UACpDq3K,iBAAiB,CAACr3K,OAAO,CAAC;UAC1B35C,OAAO,CAAC,mCAAmC,CAAC;QAChD,CAAC,CAAC;MACN,CAAC,CAAC;MACFwzN,QAAQ,CAAC32Q,IAAI,CAAC82Q,4BAA4B,CAAC;MAE3C,MAAMT,YAAY,GAAG,IAAInzN,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;QAClDmoQ,eAAe,CAAC4H,YAAY,CAACv5K,OAAO,IAAI;UACpCkwK,SAAS,GAAGlwK,OAAO;UACnB35C,OAAO,CAAC,mBAAmB,CAAC;QAChC,CAAC,CAAC;MACN,CAAC,CAAC;MACFwzN,QAAQ,CAAC32Q,IAAI,CAACq2Q,YAAY,CAAC;MAE3B,MAAMU,yBAAyB,GAAG,IAAI7zN,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;QAC/DmoQ,eAAe,CAACsI,yBAAyB,CAACj6K,OAAO,IAAI;UACjDiwK,kBAAkB,GAAGjwK,OAAO;UAC5B35C,OAAO,CAAC,mBAAmB,CAAC;QAChC,CAAC,CAAC;MACN,CAAC,CAAC;MACFwzN,QAAQ,CAAC32Q,IAAI,CAAC+2Q,yBAAyB,CAAC;MAExC,MAAMZ,iBAAiB,GAAG,IAAIjzN,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;QACvDmoQ,eAAe,CAAC0H,iBAAiB,CAACr5K,OAAO,IAAI;UACzCmwK,cAAc,GAAGnwK,OAAO;UACxB35C,OAAO,CAAC,wBAAwB,CAAC;QACrC,CAAC,CAAC;MACN,CAAC,CAAC;MACFwzN,QAAQ,CAAC32Q,IAAI,CAACm2Q,iBAAiB,CAAC;MAEhCjzN,OAAO,CAACmrF,GAAG,CAACsoI,QAAQ,CAAC,CAACjzJ,IAAI,CAAC,MAAM;QAC7BjtH,QAAQ,CAAC,CAAC;MACd,CAAC,CAAC;;MAEF;MACA;;MAEA;MACA;;MAEA;MACA;;MAEA;MACA;;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACJ,CAAC,MAAM;MACHA,QAAQ,CAAC,CAAC;IACd;EACJ;EAEA,SAASugR,4BAA4BA,CAAA,EAAG;IACpC,IAAIj1P,SAAS,CAAC6c,WAAW,EAAE;MACvB7c,SAAS,CAAC6c,WAAW,CAACC,kBAAkB,CACpC,UAAU7hC,QAAQ,EAAE;QAChB;QACAgG,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,GAAG,KAAK;QAC1Cy/N,YAAY,CAAC17Q,IAAI,CAAC,CAAC;MACvB,CAAC,EACD,UAAU6O,KAAK,EAAE;QACb;QACA,MAAMszQ,qBAAqB,GAAGtyQ,KAAK,CAAC1P,KAAK,CAAC;UACtCG,EAAE,EAAE,cAAc;UAClB+P,KAAK,EAAE,KAAK;UACZlP,UAAU,EAAE;QAChB,CAAC,CAAC;QAEF,MAAMwvD,KAAK,GAAGzwD,MAAM,CAACC,KAAK,CAAC;UACvBM,IAAI,EAAE,IAAI;UACVG,KAAK,EAAE,WAAW;UAClBC,IAAI,EAAE,WAAW;UACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;YAClBkO,KAAK,CAAC/S,IAAI,CAACqlR,qBAAqB,CAAC;UACrC;QACJ,CAAC,CAAC;QACF,MAAM91O,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;QAChCwvC,OAAO,CAAC9uC,WAAW,CAACozD,KAAK,CAAC;QAE1B,MAAMpkB,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QAClDksC,cAAc,CAACtvC,SAAS,GACpB,0IAA0I;QAC9IklR,qBAAqB,CAAC5kR,WAAW,CAACgvC,cAAc,CAAC;QACjD41O,qBAAqB,CAAC5kR,WAAW,CAAC8uC,OAAO,CAAC;QAC1Cx8B,KAAK,CAAC9S,IAAI,CAAColR,qBAAqB,CAAC;MACrC,CACJ,CAAC;IACL,CAAC,MAAM;MACH;MACA,MAAMA,qBAAqB,GAAGtyQ,KAAK,CAAC1P,KAAK,CAAC;QACtCG,EAAE,EAAE,cAAc;QAClB+P,KAAK,EAAE,KAAK;QACZlP,UAAU,EAAE;MAChB,CAAC,CAAC;MAEF,MAAMwvD,KAAK,GAAGzwD,MAAM,CAACC,KAAK,CAAC;QACvBM,IAAI,EAAE,IAAI;QACVG,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;UAClBkO,KAAK,CAAC/S,IAAI,CAACqlR,qBAAqB,CAAC;QACrC;MACJ,CAAC,CAAC;MACF,MAAM91O,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAChCwvC,OAAO,CAAC9uC,WAAW,CAACozD,KAAK,CAAC;MAE1B,MAAMpkB,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;MAClDksC,cAAc,CAACtvC,SAAS,GACpB,0IAA0I;MAC9IklR,qBAAqB,CAAC5kR,WAAW,CAACgvC,cAAc,CAAC;MACjD41O,qBAAqB,CAAC5kR,WAAW,CAAC8uC,OAAO,CAAC;MAC1Cx8B,KAAK,CAAC9S,IAAI,CAAColR,qBAAqB,CAAC;IACrC;EACJ;;EAEA;EACA;EACA,eAAeC,oBAAoBA,CAAA,EAAG;IAClC,IAAIl0Q,CAAC,CAACC,OAAO,CAAC2tC,2BAA2B,KAAK,GAAG,EAAE;MAC/C;MACAomO,4BAA4B,CAAC,CAAC;IAClC,CAAC,MAAM;MACH;MACA,MAAM1uP,MAAM,GAAG,MAAMmmP,eAAe,CAAC0I,oBAAoB,CAAC,CAAC;MAC3D,MAAM;QAAEC;MAA2B,CAAC,GAAG9uP,MAAM;MAC7C,IAAI8uP,0BAA0B,CAACllR,MAAM,GAAG,CAAC,IAAI8Q,CAAC,CAACC,OAAO,CAACs1C,iBAAiB,IAAI,GAAG,EAAE;QAC7Ei4N,YAAY,CAAC6G,mBAAmB,CAACD,0BAA0B,CAAC;MAChE,CAAC,MACI;QACDp0Q,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,GAAG,KAAK;QAC1Cy/N,YAAY,CAAC17Q,IAAI,CAAC,CAAC;MACvB;IACJ;EACJ;EACA,SAASwiR,uBAAuBA,CAAA,EAAG;IAC/Bt0Q,CAAC,CAACC,OAAO,CAAC8tC,wBAAwB,GAAG,KAAK;IAC1C62D,+BAA+B,CAAC,kBAAkB,CAAC;IACnDl0G,eAAe,CAACoB,IAAI,CAAC,CAAC;EAC1B;EACA,SAASyiR,yBAAyBA,CAAA,EAAG;IACjC3vK,+BAA+B,CAAC,oBAAoB,CAAC;IACrDj0G,YAAY,CAACmB,IAAI,CAAC,CAAC;EACvB;EACA,SAAS0iR,sBAAsBA,CAAA,EAAG;IAC9B,IAAIC,YAAY,GAAGziR,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,WAAW;MACjBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEygR;IACd,CAAC,CAAC;IACF,IAAIQ,aAAa,GAAG1iR,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,aAAa;MACnBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE6gR;IACd,CAAC,CAAC;IACF,IAAIK,eAAe,GAAG3iR,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE8gR;IACd,CAAC,CAAC;IAEF,IAAIp2O,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAEvCwvC,OAAO,CAAC9uC,WAAW,CAAColR,YAAY,CAAC;IACjCt2O,OAAO,CAAC9uC,WAAW,CAACqlR,aAAa,CAAC;IAClC,IAAI10Q,CAAC,CAACC,OAAO,CAACqtC,oBAAoB,IAAIttC,CAAC,CAACC,OAAO,CAAC4nC,iBAAiB,EAAE;MAC/D1J,OAAO,CAAC9uC,WAAW,CAACslR,eAAe,CAAC;IACxC;IAEA7zQ,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC8uC,OAAO,CAAC;EACzC;EACA,SAASrsC,IAAIA,CAAA,EAAG;IACZgP,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBwC,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,uBAAuB,CAAC;IAC9C6kR,cAAc,CAACc,sBAAsB,CAAC;EAC1C;EAEA,OAAO;IACH5C,oBAAoB;IACpBmB,aAAa;IACbE,mBAAmB;IACnBC,cAAc;IACd7+E,YAAY;IACZ++E,qBAAqB;IACrBC,YAAY;IACZI,iBAAiB;IACjBC,cAAc;IACdP,iBAAiB;IACjB7H,YAAY;IACZkD,WAAW;IACXC,WAAW;IACX38Q;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACj0CJ,IAAI25Q,eAAe,GAAI,YAAY;EAC/B;EACA,SAASiD,uBAAuBA,CAACZ,aAAa,EAAEr6Q,QAAQ,EAAE;IACtDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;MAC/BxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,sBAAsB,GAAGwlO,aAAa,GAAG,IAAI;MACpFlvN,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClCtrD,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;;EAEA;EACA,SAASmhR,8BAA8BA,CAAC9G,aAAa,EAAEr6Q,QAAQ,EAAE;IAC7DuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sCAAsC;MAC1CxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,sBAAsB,GAAGwlO,aAAa,GAAG,IAAI;MACpFlvN,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC81N,wCAAwC;QAC3DphR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACPv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAC;IACpC,CAAC,CAAC;EACN;;EAEA;EACA,eAAeqwQ,mCAAmCA,CAAClD,aAAa,EAAEr6Q,QAAQ,EAAE;IACxE,IAAI;MACA,MAAMkB,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sCAAsC;QAC1CxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,sBAAsB,GAAGwlO,aAAa,GAAG,IAAI;QACpFlvN,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,IAAI5G,GAAG,GAAGvjD,IAAI,CAACkgR,wCAAwC;MACvDphR,QAAQ,CAACykD,GAAG,CAAC;;MAEb;IACJ,CAAC,CAAC,OAAOv3C,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEA,SAAS+nK,8BAA8BA,CAACr+E,YAAY,EAAEhjM,QAAQ,EAAE;IAC5DuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sCAAsC;MAC1CxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,qBAAqB,GAAGmuJ,YAAY,GAAG,IAAI;MAClF73I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACg2N,wCAAwC;QAC3DthR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EACA,SAASmgR,wBAAwBA,CAACngR,QAAQ,EAAE;IACxC;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gCAAgC;MACpCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MACtBD,UAAU,EAAE,SAAAA,CAAA,EAAY,CAAC,CAAC;MAC1BxzC,QAAQ,EAAE,SAAAA,CAAA,EAAY,CAAC,CAAC;MAClB8sC,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACi2N,kCAAkC;QACrDvhR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EACA,SAASqgR,4BAA4BA,CAACrgR,QAAQ,EAAE;IAC5CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oCAAoC;MACxCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACk2N,sCAAsC;QACzDxhR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EACA,SAAS4/Q,YAAYA,CAAC5/Q,QAAQ,EAAE;IAC5BuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oBAAoB;MACxBxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACm2N,sBAAsB;QACzCzhR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EACA,eAAe+/Q,iBAAiBA,CAAC2B,eAAe,EAAE;IAC9C,MAAMtoK,YAAY,GAAG;MACjBruE,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB6sO,eAAe,EAAE,CAACA,eAAe,GAAG,GAAG,GAAG;IAC9C,CAAC;IACD,IAAI;MACA,MAAMxgR,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oBAAoB;QACxBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEFniD,OAAO,CAACu6B,GAAG,CAACviC,IAAI,CAACugR,sBAAsB,CAAC;MAExC,OAAOvgR,IAAI,CAACugR,sBAAsB;IACtC,CAAC,CAAC,OAAOv0Q,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EACA,SAAS8mK,uBAAuBA,CAACpgR,QAAQ,EAAE;IACvCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;MACnCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MACtBD,UAAU,EAAE,SAAAA,CAAA,EAAY,CAAC,CAAC;MAC1BxzC,QAAQ,EAAE,SAAAA,CAAA,EAAY,CAAC,CAAC;MAClB8sC,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACq2N,iCAAiC;QACpD3hR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EACA;EACA,SAAS4hR,6BAA6BA,CAACnyN,UAAU,EAAEoyN,MAAM,EAAE;IACvD,OAAOt1Q,CAAC,CAAC2+C,IAAI,CAAC;MACVhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qCAAqC;MACzCxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnB4a,UAAU,GACV,eAAe,GACfoyN,MAAM,GACN,IAAI;MACR12N,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACd,CAAC,CAAC;IACF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EACJ;EACA;EACA,SAASy2N,oBAAoBA,CAACh6K,OAAO,EAAE9nG,QAAQ,EAAE;IAC7C;IACA;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAChCxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,eAAe,GACfizD,OAAO,CAACr9C,MAAM,GACd,kBAAkB,GAClBq9C,OAAO,CAACz0E,SAAS,GACjB,gBAAgB,GAChBy0E,OAAO,CAACv0E,OAAO,GACf,mBAAmB,GACnBu0E,OAAO,CAACr4C,UAAU,GAClB,gBAAgB,GAChBq4C,OAAO,CAACi6K,QAAQ,GAChB,IAAI;MACR52N,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC02N,8BAA8B;QACjDhiR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACPv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAC;IACpC,CAAC,CAAC;EACN;EACA;EACA,SAAS+0Q,kBAAkBA,CAAC5H,aAAa,EAAEr6Q,QAAQ,EAAE;IACjDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;MAC9BxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,sBAAsB,GAAGwlO,aAAa,GAAG,IAAI;MACpFlvN,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC42N,4BAA4B;QAC/CC,aAAa,CAACC,8BAA8B,CAAC/H,aAAa,CAAC;QAC3Dr6Q,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACPv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAC;IACpC,CAAC,CAAC;EACN;EACA;EACA,eAAeusQ,oBAAoBA,CAACv4Q,IAAI,EAAElB,QAAQ,EAAE;IAChD,MAAMuM,CAAC,CAAC2+C,IAAI,CAAC;MACThsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;MACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClC7G,GAAG,GAAGA,GAAG,CAACnlC,KAAK,CAAC,uBAAuB,CAAC;QACxC,IAAI+iQ,kBAAkB,GAAG59N,GAAG,CAAC,CAAC,CAAC,CAAC/5C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C43Q,oBAAoB,CAACD,kBAAkB,CAAC;QACxCriR,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EAEA,eAAe24N,iCAAiCA,CAAChb,YAAY,EAAEpiQ,QAAQ,EAAE;IACrE,MAAMuM,CAAC,CAAC2+C,IAAI,CAAC;MACThsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qCAAqC;MACzCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACw5O,YAAY,CAAC;MAClCj3M,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClC;QACAtrD,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjC;MAAA;IAER,CAAC,CAAC;EACN;;EAEA;EACA,SAASktQ,oBAAoBA,CAACxvN,UAAU,EAAE5qD,QAAQ,EAAE;IAChDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;MAC5BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACgiC,UAAU,CAAC;MAChCO,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI86C,OAAO,GAAG/6C,QAAQ,CAACi3N,0BAA0B;QACjD,IAAIF,kBAAkB,GAAGh8K,OAAO,CAAC,CAAC,CAAC,CAACg0K,aAAa;QACjD,IAAImI,sBAAsB,GAAG,EAAE;QAC/B,IAAIC,eAAe,GAAGp8K,OAAO,CAAC18F,MAAM,CAAC86C,GAAG,IAAI;UACxC,IAAIA,GAAG,CAAC41N,aAAa,IAAI,IAAI,EAAE,OAAO,IAAI;QAC9C,CAAC,CAAC;QACFiI,oBAAoB,CAACG,eAAe,CAAC;QACrCp8K,OAAO,CAAC3qG,OAAO,CAACm2B,MAAM,IAAI;UACtB,IAAIA,MAAM,CAAC49B,UAAU,KAAK,EAAE,IAAI59B,MAAM,CAAC49B,UAAU,KAAK,GAAG,EAAE;YACvD+yN,sBAAsB,GAAGA,sBAAsB,GAAG3wP,MAAM,CAACmvB,UAAU,GAAG,IAAI;UAC9E;QACJ,CAAC,CAAC;QACF,IAAIwhO,sBAAsB,IAAI,EAAE,EAAE;UAC9Bn9O,KAAK,CACD,qGAAqG,GACrGm9O,sBACJ,CAAC;QACL;QAEAxiR,QAAQ,CAACqmG,OAAO,CAAC;MACrB;IACJ,CAAC,CAAC;EACN;;EAEA;EACA;EACA,SAAS8zK,4BAA4BA,CAACvvN,UAAU,EAAE5qD,QAAQ,EAAE;IACxDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gCAAgC;MACpCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACgiC,UAAU,CAAC;MAChCO,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI86C,OAAO,GAAG/6C,QAAQ,CAACo3N,kCAAkC;QACzD1iR,QAAQ,CAACqmG,OAAO,CAAC;MACrB;IACJ,CAAC,CAAC;EACN;;EAEA;EACA,SAAS4xK,uBAAuBA,CAAC37I,WAAW,EAAEt8H,QAAQ,EAAE;IACpDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;MACnCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC0zG,WAAW,CAAC;MACjCnxE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACq3N,iCAAiC;QACpD3iR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EACA;EACA,SAAS65Q,uBAAuBA,CAAC1lI,UAAU,EAAEn0I,QAAQ,EAAE;IACnDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;MAC/BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACurH,UAAU,CAAC;MAChChpF,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClC,IAAItrD,QAAQ,EAAEA,QAAQ,CAACykD,GAAG,CAAC;MAC/B,CAAC;MACPv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAC;IACpC,CAAC,CAAC;EACN;EACA;EACA,SAASqtQ,iBAAiBA,CAACtvC,UAAU,EAAEjrO,QAAQ,EAAE;IAC7CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;MACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACqiN,UAAU,CAAC;MAChC9/K,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC+2N,oBAAoB,CAACr3C,UAAU,CAACovC,aAAa,CAAC;QAE9C,IAAI/uN,QAAQ,CAACs3N,uBAAuB,CAAC3/P,KAAK,CAAC,QAAQ,CAAC,EAAE;UAClDjjB,QAAQ,CAAC,qEAAqE,CAAC;UAC/E;QACJ;QAEAA,QAAQ,CAAC,6BAA6B,CAAC;MAC3C,CAAC;MACDkN,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,qEAAqE,CAAC;MACnF;IACJ,CAAC,CAAC;EACN;;EAEA;EACA;EACA,SAAS6iR,4BAA4BA,CAACC,eAAe,EAAE9iR,QAAQ,EAAE;IAC7D;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gCAAgC;MACpCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACk6P,eAAe,CAAC;MACrC33N,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClC,IAAItrD,QAAQ,EAAEA,QAAQ,CAACykD,GAAG,CAAC;MAC/B,CAAC;MACPv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAC;IACpC,CAAC,CAAC;EACN;EACA,SAAS61Q,wBAAwBA,CAAC1I,aAAa,EAAE;IAC7C9tQ,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAChCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,sBAAsB,GAAGwlO,aAAa,GAAG,IAAI;MACpFlvN,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClClgD,OAAO,CAAC,aAAa,CAAC;MAC1B,CAAC;MACP8B,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAC;IACpC,CAAC,CAAC;EACN;EACA,SAAS81Q,uBAAuBA,CAAChjR,QAAQ,EAAE;IACvCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iCAAiC;MACrCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC;QACA,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC23N,mCAAmC;QACtDjjR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EACA,SAASkjR,yBAAyBA,CAAClgF,YAAY,EAAEhjM,QAAQ,EAAE;IACvDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,mCAAmC;MACvCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,qBAAqB,GAAGmuJ,YAAY,GAAG,IAAI;MAClF73I,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC63N,qCAAqC;QACxDnjR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EACA,SAASojR,4BAA4BA,CAACpjR,QAAQ,EAAE;IAC5CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oCAAoC;MACxCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MACtBD,UAAU,EAAE,SAAAA,CAAA,EAAY,CAAC,CAAC;MAC1BxzC,QAAQ,EAAE,SAAAA,CAAA,EAAY,CAAC,CAAC;MAClB8sC,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC;QACA,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC+3N,sCAAsC;QACzDrjR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EACA,SAASsjR,0BAA0BA,CAACC,UAAU,EAAEvjR,QAAQ,EAAE;IACtDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kCAAkC;MACtCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC26P,UAAU,CAAC;MAChCp4N,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACk4N,oCAAoC;QACvDxjR,QAAQ,CAACykD,GAAG,CAAC;MACjB;IACJ,CAAC,CAAC;EACN;EACA,SAASg/N,mBAAmBA,CAACtoP,GAAG,EAAEC,GAAG,EAAEp7B,QAAQ,EAAE;IAC7CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,KAAK;MACXoN,GAAG,EACC,2DAA2D,GAC3D6uB,GAAG,GACH,GAAG,GACHC,GAAG,GACH,OAAO,GACP7uB,CAAC,CAACm3Q,YAAY;MAClBr4N,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IACID,QAAQ,IACRA,QAAQ,CAAC+6C,OAAO,IAChB/6C,QAAQ,CAAC+6C,OAAO,CAAC,CAAC,CAAC,IACnB/6C,QAAQ,CAAC+6C,OAAO,CAAC,CAAC,CAAC,CAACs9K,iBAAiB,EACvC;UACE3jR,QAAQ,CAACsrD,QAAQ,CAAC+6C,OAAO,CAAC,CAAC,CAAC,CAACs9K,iBAAiB,CAAC;QACnD,CAAC,MAAM3jR,QAAQ,CAAC,EAAE,CAAC;MACvB,CAAC;MACDkN,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,EAAE,CAAC;MAChB;IACJ,CAAC,CAAC;EACN;EACA,SAAS4jR,uCAAuCA,CAAC1iR,IAAI,EAAElB,QAAQ,EAAE;IAC7DuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2CAA2C;MAC/CxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClCtrD,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACPv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAC;IACpC,CAAC,CAAC;EACN;EACA,SAAS22Q,qBAAqBA,CAACC,WAAW,EAAE9jR,QAAQ,EAAE;IAClD;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6BAA6B;MACjCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACk7P,WAAW,CAAC;MACjC34N,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACy4N,+BAA+B;QAClD/jR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EAEA,SAASsgR,yBAAyBA,CAACtgR,QAAQ,EAAE;IACzCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iCAAiC;MACrCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MACtBD,UAAU,EAAE,SAAAA,CAAA,EAAY,CAAC,CAAC;MAC1BxzC,QAAQ,EAAE,SAAAA,CAAA,EAAY,CAAC,CAAC;MAClB8sC,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC;QACA,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC04N,mCAAmC;QACtDhkR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EACA,SAAS0/Q,iBAAiBA,CAAC1/Q,QAAQ,EAAE;IACjCuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oCAAoC;MACxCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MACtBD,UAAU,EAAE,SAAAA,CAAA,EAAY,CAAC,CAAC;MAC1BxzC,QAAQ,EAAE,SAAAA,CAAA,EAAY,CAAC,CAAC;MAClB8sC,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC24N,sCAAsC;QACzDjkR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EAEA,SAASkkR,iBAAiBA,CAACljO,UAAU,EAAEmjO,SAAS,EAAEnkR,QAAQ,EAAE;IACxDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oCAAoC;MACxCxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnBmM,UAAU,GACV,mBAAmB,GACnBmjO,SAAS,GACT,IAAI;MACRh5N,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MACtBD,UAAU,EAAE,SAAAA,CAAA,EAAY,CAAC,CAAC;MAC1BxzC,QAAQ,EAAE,SAAAA,CAAA,EAAY,CAAC,CAAC;MAClB8sC,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC84N,sCAAsC;QACzDpkR,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAAC,IAAI,CAAC;MAClB;IACJ,CAAC,CAAC;EACN;EAEA,eAAeqkR,sBAAsBA,CAACrjO,UAAU,EAAEmjO,SAAS,EAAE;IACzD,IAAI;MACA,MAAMjjR,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oCAAoC;QACxCxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,mBAAmB,GACnBmM,UAAU,GACV,mBAAmB,GACnBmjO,SAAS,GACT,IAAI;QACRh5N,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,OAAOnqD,IAAI,CAACkjR,sCAAsC;IACtD,CAAC,CAAC,OAAOl3Q,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACnC;EACJ;EAEA,eAAeonK,oBAAoBA,CAAA,EAAG;IAClC,IAAI;MACA,MAAM7uP,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;QAC5BxoD,IAAI,EACA,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,IAAI;QACRsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,OAAO;IACH2hK,uBAAuB;IACvBkG,8BAA8B;IAC9B5D,mCAAmC;IACnC8D,8BAA8B;IAC9BlB,wBAAwB;IACxBE,4BAA4B;IAC5BT,YAAY;IACZG,iBAAiB;IACjBK,uBAAuB;IACvBwB,6BAA6B;IAC7BE,oBAAoB;IACpBG,kBAAkB;IAClBxI,oBAAoB;IACpB2D,iCAAiC;IACjChD,oBAAoB;IACpBD,4BAA4B;IAC5BlC,uBAAuB;IACvB4B,uBAAuB;IACvBU,iBAAiB;IACjB;IACAwI,wBAAwB;IACxBF,4BAA4B;IAC5BG,uBAAuB;IACvBE,yBAAyB;IACzB;IACAE,4BAA4B;IAC5BE,0BAA0B;IAC1BG,mBAAmB;IACnBG,uCAAuC;IACvCC,qBAAqB;IACrBvD,yBAAyB;IACzBZ,iBAAiB;IACjBwE,iBAAiB;IACjBG,sBAAsB;IACtB3D;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACl6BJ,MAAM4D,qBAAqB,GAAI,YAAW;EACxC,IAAIC,eAAe;EACnB,IAAIC,cAAc;EAClB,IAAIC,qBAAqB;EAEzB,SAASC,oBAAoBA,CAACznB,SAAS,EAAE;IACvCsnB,eAAe,CAACjpR,SAAS,GAAG,0CAA0C;IACtE,IAAIqpR,WAAW,GAAG,EAAE;IACpB1nB,SAAS,CAACvhQ,OAAO,CAAC2rG,QAAQ,IAAI;MAC5B,MAAME,QAAQ,GAAGF,QAAQ,CAAC82B,YAAY,CAAC7+G,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACpD,MAAMgoF,SAAS,GAAGD,QAAQ,CAAC82B,YAAY,CAAC7+G,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACrD,IAAIihJ,cAAc,GAAG,GAAGh5D,QAAQ,KAAKD,SAAS,EAAE;MAChDi5D,cAAc,GAAGA,cAAc,CAAC35I,IAAI,CAAC,CAAC;MACtC+9P,WAAW,CAACp7Q,IAAI,CAACg3J,cAAc,CAAC;IAClC,CAAC,CAAC;IACFokH,WAAW,CAACnvQ,IAAI,CAAC,UAAUjU,CAAC,EAAEuU,CAAC,EAAE;MAC/B,OAAOvU,CAAC,CAACvC,WAAW,CAAC,CAAC,CAACmlI,aAAa,CAACruH,CAAC,CAAC9W,WAAW,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC;IACA2lR,WAAW,CAACjpR,OAAO,CAAC2rG,QAAQ,IAAI;MAC9B,MAAMu9K,WAAW,GAAGzmR,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACjDkmR,WAAW,CAAC5pR,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;MACxC0pR,WAAW,CAACtpR,SAAS,GAAG+rG,QAAQ;MAChCk9K,eAAe,CAAC3oR,WAAW,CAACgpR,WAAW,CAAC;IAC1C,CAAC,CAAC;EACJ;EAEA,SAASC,0BAA0BA,CAACC,EAAE,EAAE;IACtCC,SAAS,GAAGD,EAAE,CAAC,CAAC,CAAC;IACjBL,qBAAqB,CAACnpR,SAAS,GAAG,EAAE;IACpC,IAAIypR,SAAS,CAACC,oBAAoB,KAAK,EAAE,IAAID,SAAS,CAAC9L,kBAAkB,KAAK,EAAE,EAAE;IAClF,IAAIgM,UAAU,GAAGF,SAAS,CAACG,2BAA2B,KAAK,GAAG,GAAG,SAAS,GAAG,UAAU;IACvF,IAAIC,YAAY,GAAGJ,SAAS,CAACC,oBAAoB;IACjD,IAAII,aAAa,GAAGL,SAAS,CAACM,aAAa;IAC3C,IAAIC,WAAW,GAAGP,SAAS,CAACQ,WAAW;IACvC,IAAIC,iBAAiB,GAAGT,SAAS,CAAC/L,WAAW;IAC7C,IAAIyM,kBAAkB,GAAGV,SAAS,CAAC9L,kBAAkB;IACrD,IAAIyM,YAAY,GAAGX,SAAS,CAAC5hP,MAAM;IAEnCshP,qBAAqB,CAACnpR,SAAS,GAAI;AACvC;AACA,uEAAuE2pR,UAAU;AACjF,MAAMG,aAAa,KAAK,EAAE,GAAG,+DAA+DA,aAAa,QAAQ,GAAG,EAAE;AACtH,MAAME,WAAW,KAAK,EAAE,GAAG,6DAA6DA,WAAW,QAAQ,GAAG,EAAE;AAChH,+DAA+DH,YAAY;AAC3E,MAAMM,kBAAkB,KAAM,EAAE,GAAG,8DAA8DA,kBAAkB,QAAQ,GAAG,EAAE;AAChI,MAAMD,iBAAiB,KAAK,EAAE,GAAG,4DAA4DA,iBAAiB,QAAQ,GAAG,EAAE;AAC3H,MAAME,YAAY,KAAK,EAAE,GAAG,uDAAuDA,YAAY,QAAQ,GAAG,EAAE;AAC5G,KAAK;EACH;EAEA,SAASrnR,IAAIA,CAACq7Q,OAAO,EAAEiM,gBAAgB,EAAE;IACvCpB,eAAe,GAAGpmR,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC;IAC5DojR,cAAc,GAAGrmR,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;IAC1DqjR,qBAAqB,GAAGtmR,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC;IACxE,IAAI2jR,SAAS,GAAG,IAAI;IACpB,IAAI9nB,SAAS,GAAG,IAAI;IAEpB1sP,kBAAkB,CAAClS,IAAI,CAAC,CAAC;IACzBkS,kBAAkB,CAACJ,OAAO,CAAC/U,IAAI,CAACopR,cAAc,EAAE,qCAAqC,CAAC;IACtF,IAAItE,QAAQ,GAAG,EAAE;IAEjB,MAAM0F,SAAS,GAAG,IAAIn5N,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;MACjDmoQ,eAAe,CAACiK,kBAAkB,CAACvI,OAAO,EAAErzK,OAAO,IAAI;QACrD0+K,SAAS,GAAG1+K,OAAO;QACnB35C,OAAO,CAAC,WAAW,CAAC;MACtB,CAAC,CAAC;IACJ,CAAC,CAAC;IACFwzN,QAAQ,CAAC32Q,IAAI,CAACq8Q,SAAS,CAAC;IACxB,MAAMC,cAAc,GAAG,IAAIp5N,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;MACtDmoQ,eAAe,CAACmJ,8BAA8B,CAACzH,OAAO,EAAEoM,YAAY,IAAI;QACtE7oB,SAAS,GAAG6oB,YAAY;QACxBp5N,OAAO,CAAC,cAAc,CAAC;MACzB,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,IAAIi5N,gBAAgB,KAAK,GAAG,EAAEzF,QAAQ,CAAC32Q,IAAI,CAACs8Q,cAAc,CAAC;IAE3Dp5N,OAAO,CAACmrF,GAAG,CAACsoI,QAAQ,CAAC,CAACjzJ,IAAI,CAAC,MAAM;MAC/B18G,kBAAkB,CAACJ,OAAO,CAAChV,IAAI,CAAC,CAAC;MACjC0pR,0BAA0B,CAACE,SAAS,EAAE9nB,SAAS,CAAC;MAChD,IAAI0oB,gBAAgB,KAAK,GAAG,EAAEjB,oBAAoB,CAACznB,SAAS,CAAC;IAC/D,CAAC,CAAC;EACJ;EAEA,OAAO;IACL5+P;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACtFJ,IAAI2M,SAAS,GAAI,YAAY;EAC3B,IAAI+6Q,qBAAqB;EAEzB,SAASC,oBAAoBA,CAAA,EAAG;IAC9B,MAAMC,eAAe,GAAG/3Q,KAAK,CAAC1P,KAAK,CAAC;MAClCG,EAAE,EAAE,cAAc;MAClBa,UAAU,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC;MAC9CkP,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,MAAMM,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3CsQ,OAAO,CAACrM,SAAS,GAAG,kEAAkE;IAEtF,MAAMqsD,KAAK,GAAGzwD,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEU,CAAC,IAAI;QACbwN,KAAK,CAAC/S,IAAI,CAAC8qR,eAAe,CAAC;QAC3BF,qBAAqB,CAAC/qR,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACpD;IACF,CAAC,CAAC;IAEFgrR,eAAe,CAACrqR,WAAW,CAACoT,OAAO,CAAC;IACpCi3Q,eAAe,CAACrqR,WAAW,CAACozD,KAAK,CAAC;IAElC9gD,KAAK,CAAC9S,IAAI,CAAC6qR,eAAe,CAAC;EAC7B;EAEA,eAAeh7Q,cAAcA,CAAA,EAAG;IAC9B86Q,qBAAqB,GAAG5nR,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC;IAC7D2kR,qBAAqB,CAAC/qR,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAE/C,IAAI;MACF,MAAMwpD,OAAO,GAAG,MAAMwhO,aAAa,CAACj7Q,cAAc,CAAC,CAAC;MACpD86Q,qBAAqB,CAAC/qR,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACpD,CAAC,CAAC,OAAOiS,KAAK,EAAE;MACd84Q,oBAAoB,CAAC,CAAC;IACxB;EACF;EAEA,OAAO;IACL/6Q,cAAc;IACd+6Q;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC7CJ,IAAIE,aAAa,GAAI,YAAY;EAC/B,eAAej7Q,cAAcA,CAAA,EAAG;IAC9BmuG,YAAY,GAAG;MACbruE,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;IACnB,CAAC;IACD,IAAI;MACF,IAAI3zC,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACtBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kBAAkB;QACpBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACFnqD,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACdhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kBAAkB;QACtBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACJ86N,QAAQ,GAAGjlR,IAAI,CAACklR,oBAAoB;MACpCz5Q,MAAM,CAAC7F,IAAI,CAACq/Q,QAAQ,EAAE,QAAQ,CAAC;IACjC,CAAC,CAAC,OAAOj5Q,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;MAC/BtuG,SAAS,CAACg7Q,oBAAoB,CAAC,CAAC;IAClC;EACF;EAEA,OAAO;IACL/6Q;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC/CJ,MAAMo7Q,iBAAiB,GAAI,YAAW;EACpC;EACA,IAAIC,OAAO,EAAEC,oBAAoB,EAAEC,QAAQ,EAAEvxO,SAAS,EAAEwxO,YAAY;EAEpE,SAASC,yBAAyBA,CAACx5N,MAAM,EAAE;IACzC,MAAMy5N,WAAW,GAAGpoR,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,WAAW;MACjBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACd4mR,aAAa,CAACvoR,IAAI,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;IACF,MAAMwoR,eAAe,GAAGtoR,MAAM,CAACC,KAAK,CAAC;MACnCM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM8mR,kBAAkB,CAACzoR,IAAI,CAAC;IAC1C,CAAC,CAAC;IACF,MAAM0oR,WAAW,GAAGxoR,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAMtC,cAAc,CAACW,IAAI,CAAC;IACtC,CAAC,CAAC;IACF,MAAM2oR,oBAAoB,GAAGzoR,MAAM,CAACC,KAAK,CAAC;MACxCM,IAAI,EAAE,oBAAoB;MAC1BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAMinR,8BAA8B,CAAC5oR,IAAI,CAAC;IACtD,CAAC,CAAC;IACF,MAAMqsC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IACvCwvC,OAAO,CAAC9uC,WAAW,CAAC+qR,WAAW,CAAC;IAChC,IAAIp6Q,CAAC,CAACC,OAAO,CAAC0xC,yBAAyB,KAAK,IAAI,EAAGxT,OAAO,CAAC9uC,WAAW,CAACirR,eAAe,CAAC;IACvF,IAAIt6Q,CAAC,CAACC,OAAO,CAAC2xC,sBAAsB,KAAK,IAAI,EAAGzT,OAAO,CAAC9uC,WAAW,CAACmrR,WAAW,CAAC;IAChFr8O,OAAO,CAAC9uC,WAAW,CAACorR,oBAAoB,CAAC;IACzC35Q,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC8uC,OAAO,CAAC;EACvC;EAEA,SAASm2J,aAAaA,CAAA,EAAG;IACvB,OAAO0lF,oBAAoB;EAC7B;EACA,SAASW,WAAWA,CAAA,EAAG;IACrB,OAAO,IAAInhR,GAAG,CAAC,CAAC,GAAGygR,QAAQ,CAAC,CAAC78Q,MAAM,CAACwpH,IAAA;MAAA,IAAC,CAACjzG,CAAC,EAACxM,CAAC,CAAC,GAAAy/G,IAAA;MAAA,OAAKz/G,CAAC,CAACozF,MAAM,KAAK,GAAG;IAAA,EAAC,CAAC;EACnE;EACA,SAAS85F,YAAYA,CAAA,EAAG;IACtB,OAAO3rJ,SAAS;EAClB;EACA,SAASkyO,mBAAmBA,CAACnmO,UAAU,EAAE;IACvC,OAAOylO,YAAY,CAAC1/Q,GAAG,CAACi6C,UAAU,CAAC;EACrC;EAEA,SAASomO,gBAAgBA,CAAA,EAAG;IAC1BC,qBAAqB,CAACC,eAAe,CAAC,CAAC,CAACr6J,IAAI,CAACxoE,GAAG,IAAI;MAClD,MAAM8iO,gBAAgB,GAAG9iO,GAAG,CAAC+iO,2BAA2B;MACxD,IAAIC,mBAAmB,GAAG,IAAI1hR,GAAG,CAAC,CAAC;MACnCwhR,gBAAgB,CAAC7rR,OAAO,CAAC8tD,OAAO,IAAI;QAClC,IAAIi+N,mBAAmB,CAAC7lH,GAAG,CAACp4G,OAAO,CAACxI,UAAU,CAAC,EAAE;UAC/C,MAAM0mO,MAAM,GAAGD,mBAAmB,CAAC1gR,GAAG,CAACyiD,OAAO,CAACxI,UAAU,CAAC;UAC1D0mO,MAAM,CAACn+Q,IAAI,CAACigD,OAAO,CAAC;UACpBi+N,mBAAmB,CAACx2Q,GAAG,CAACu4C,OAAO,CAACxI,UAAU,EAAE0mO,MAAM,CAAC;QACrD,CAAC,MAAM;UACLD,mBAAmB,CAACx2Q,GAAG,CAACu4C,OAAO,CAACxI,UAAU,EAAE,CAACwI,OAAO,CAAC,CAAC;QACxD;MACF,CAAC,CAAC;MACFi9N,YAAY,GAAGgB,mBAAmB;IACpC,CAAC,CAAC;EACJ;EAEA,SAASE,aAAaA,CAACpzE,YAAY,EAAE;IACnC;IACA,IAAI,CAACA,YAAY,EAAEA,YAAY,GAAG1lL,IAAI,CAAC8Z,aAAa,CAAC,IAAI,CAAC;IAC1D,OAAO,IAAI5iC,GAAG,CACZ,CAAC,GAAGugR,OAAO,CAAC,CAAC38Q,MAAM,CAACypH,KAAA,IAAW;MAAA,IAAV,CAAClzG,CAAC,EAACxM,CAAC,CAAC,GAAA0/G,KAAA;MACxB,MAAMw0J,UAAU,GAAG,IAAI1yQ,IAAI,CAACxB,CAAC,CAACk0Q,UAAU,CAAC;MACzC,MAAMC,YAAY,GAAG,IAAI3yQ,IAAI,CAACxB,CAAC,CAACm0Q,YAAY,CAAC;MAC7C,MAAMC,QAAQ,GAAG,IAAI5yQ,IAAI,CAACxB,CAAC,CAACo0Q,QAAQ,CAAC;MACrC,OACE,CAACF,UAAU,IAAIrzE,YAAY,IAAI7gM,CAAC,CAACk0Q,UAAU,KAAK,EAAE,MACjDE,QAAQ,IAAIvzE,YAAY,IAAI7gM,CAAC,CAACo0Q,QAAQ,KAAK,EAAE,CAAC,IAC9CD,YAAY,IAAItzE,YAAa;IAElC,CAAC,CACH,CAAC;EACH;EAEA,SAASwzE,YAAYA,CAACppR,EAAE,EAAE;IACxB,OAAO2nR,OAAO,CAACv/Q,GAAG,CAACpI,EAAE,CAAC;EACxB;EACA,SAASqpR,aAAaA,CAACrpR,EAAE,EAAE;IACzB,MAAMspR,GAAG,GAAGzB,QAAQ,CAAC5kH,GAAG,CAACjjK,EAAE,CAAC,GAAG6nR,QAAQ,CAACz/Q,GAAG,CAACpI,EAAE,CAAC,GAAG,uBAAuB;IACzE,IAAIspR,GAAG,KAAK,uBAAuB,IAAItpR,EAAE,KAAK,GAAG,EAAEuK,OAAO,CAACgE,KAAK,CAAC,eAAevO,EAAE,kCAAkC,CAAC;IACrH,OAAOspR,GAAG;EACZ;EACA,SAASC,cAAcA,CAACvpR,EAAE,EAAE;IAC1B,OAAOs2C,SAAS,CAACluC,GAAG,CAACpI,EAAE,CAAC;EAC1B;EACC,SAASwpR,qBAAqBA,CAACxpR,EAAE,EAAE;IACjC,OAAO6nR,QAAQ,CAACz/Q,GAAG,CAACpI,EAAE,CAAC;EACzB;EAED,eAAeqwI,OAAOA,CAAA,EAAG;IACvBl/H,QAAQ,CAACzR,IAAI,CAAC,CAAC;IACfyR,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,mBAAmB,CAAC;IAC1C,SAASgtR,cAAcA,CAAC3jO,GAAG,EAAE;MAC3B,MAAM4jO,UAAU,GAAG5jO,GAAG,CAAC,CAAC,CAAC,CAAC6jO,gBAAgB;MAC1C,MAAMC,cAAc,GAAG9jO,GAAG,CAAC,CAAC,CAAC,CAAC+jO,6BAA6B;MAC3D,MAAMC,YAAY,GAAGhkO,GAAG,CAAC,CAAC,CAAC,CAACikO,wBAAwB;MACpD,MAAMC,aAAa,GAAGlkO,GAAG,CAAC,CAAC,CAAC,CAACgqG,sBAAsB;MACnD,MAAM84H,gBAAgB,GAAG9iO,GAAG,CAAC,CAAC,CAAC,CAAC+iO,2BAA2B;MAE3D,IAAIoB,aAAa,GAAG,IAAI7iR,GAAG,CAAC,CAAC;MAC7B,IAAI8iR,iBAAiB,GAAG,IAAI9iR,GAAG,CAAC,CAAC;MACjC,IAAI+iR,eAAe,GAAG,IAAI/iR,GAAG,CAAC,CAAC;MAC/B,IAAIgjR,gBAAgB,GAAG,IAAIhjR,GAAG,CAAC,CAAC;MAChC,IAAI0hR,mBAAmB,GAAG,IAAI1hR,GAAG,CAAC,CAAC;MAEnCsiR,UAAU,CAAC3sR,OAAO,CAACstR,MAAM,IAAI;QAC3BJ,aAAa,CAAC33Q,GAAG,CAAC+3Q,MAAM,CAACC,SAAS,EAAED,MAAM,CAAC;MAC7C,CAAC,CAAC;MACFT,cAAc,CAAC7sR,OAAO,CAACuhG,QAAQ,IAAI;QACjC4rL,iBAAiB,CAAC53Q,GAAG,CAACgsF,QAAQ,CAAC4hD,UAAU,EAAE;UAACpV,IAAI,EAAExsC,QAAQ,CAACyb,WAAW;UAAEwwK,OAAO,EAAEjsL,QAAQ,CAACisL;QAAO,CAAC,CAAC;MACrG,CAAC,CAAC;MACFT,YAAY,CAAC/sR,OAAO,CAACytR,OAAO,IAAI;QAC9BL,eAAe,CAAC73Q,GAAG,CAACk4Q,OAAO,CAACC,oBAAoB,EAAED,OAAO,CAAC;MAC5D,CAAC,CAAC;MACFR,aAAa,CAACjtR,OAAO,CAAC0K,QAAQ,IAAI;QAChC;QACA,IAAIA,QAAQ,CAAC25P,SAAS,KAAK,GAAG,EAAEgpB,gBAAgB,CAAC93Q,GAAG,CAAC7K,QAAQ,CAACimG,EAAE,EAAEjmG,QAAQ,CAAC;MAC7E,CAAC,CAAC;MACFmhR,gBAAgB,CAAC7rR,OAAO,CAAC8tD,OAAO,IAAI;QAClC,IAAIi+N,mBAAmB,CAAC7lH,GAAG,CAACp4G,OAAO,CAACxI,UAAU,CAAC,EAAE;UAC/C,MAAM0mO,MAAM,GAAGD,mBAAmB,CAAC1gR,GAAG,CAACyiD,OAAO,CAACxI,UAAU,CAAC;UAC1D0mO,MAAM,CAACn+Q,IAAI,CAACigD,OAAO,CAAC;UACpBi+N,mBAAmB,CAACx2Q,GAAG,CAACu4C,OAAO,CAACxI,UAAU,EAAE0mO,MAAM,CAAC;QACrD,CAAC,MAAM;UACLD,mBAAmB,CAACx2Q,GAAG,CAACu4C,OAAO,CAACxI,UAAU,EAAE,CAACwI,OAAO,CAAC,CAAC;QACxD;MACF,CAAC,CAAC;MAEF88N,OAAO,GAAGsC,aAAa;MACvBrC,oBAAoB,GAAGsC,iBAAiB;MACxCrC,QAAQ,GAAGsC,eAAe;MAC1B7zO,SAAS,GAAG8zO,gBAAgB;MAC5BtC,YAAY,GAAGgB,mBAAmB;IACpC;IAEA,MAAMvH,QAAQ,GAAG,EAAE;IAEnB,MAAMmJ,WAAW,GAAIhC,qBAAqB,CAACiC,UAAU,CAAC,CAAC;IACvDpJ,QAAQ,CAAC32Q,IAAI,CAAC8/Q,WAAW,CAAC;IAC1B,MAAME,YAAY,GAAIC,2BAA2B,CAACC,uBAAuB,CAAC,CAAC;IAC3EvJ,QAAQ,CAAC32Q,IAAI,CAACggR,YAAY,CAAC;IAC3B,MAAMG,WAAW,GAAIrC,qBAAqB,CAACH,WAAW,CAAC,CAAC;IACxDhH,QAAQ,CAAC32Q,IAAI,CAACmgR,WAAW,CAAC;IAC1B,MAAMC,YAAY,GAAGp7H,UAAU,CAACC,kBAAkB,CAAC,CAAC;IACpD0xH,QAAQ,CAAC32Q,IAAI,CAACogR,YAAY,CAAC;IAC3B,MAAMC,cAAc,GAAGvC,qBAAqB,CAACC,eAAe,CAAC,CAAC;IAC9DpH,QAAQ,CAAC32Q,IAAI,CAACqgR,cAAc,CAAC;IAE7B,MAAMn9N,OAAO,CAACmrF,GAAG,CAACsoI,QAAQ,CAAC,CAC1BjzJ,IAAI,CAACxoE,GAAG,IAAI2jO,cAAc,CAAC3jO,GAAG,CAAC,CAAC,CAChCyoE,KAAK,CAAC2/B,GAAG,IAAI3jJ,OAAO,CAACgE,KAAK,CAAC,uDAAuD,GAAG2/I,GAAG,CAAC,CAAC;EAC7F;EAEA,eAAexuJ,IAAIA,CAAA,EAAG;IACpB,IAAI,CAACioR,OAAO,IAAI,CAACE,QAAQ,IAAI,CAACD,oBAAoB,EAAE;MAClD,MAAMv3I,OAAO,CAAC,CAAC;IACjB;IACA3hI,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;IACvB3oB,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvB,MAAMpP,aAAa,GAAGC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;IAChE,IAAIF,aAAa,EAAE;MACjBA,aAAa,CAACjD,MAAM,CAAC,CAAC;MACtBoS,GAAG,CAACkoB,eAAe,CAAC,CAAC;IACvB;IACAmxP,yBAAyB,CAAC,CAAC;IAC3B,IAAIn6Q,CAAC,CAACC,OAAO,CAACwxC,oBAAoB,KAAK,KAAK,EAAE90C,OAAO,CAACgR,IAAI,CAAC,2FAA2F,CAAC;EACzJ;EACA,OAAO;IACL7b,IAAI;IACJspR,aAAa;IACbI,YAAY;IACZlnF,aAAa;IACbqmF,WAAW;IACXc,aAAa;IACbpnF,YAAY;IACZumF,mBAAmB;IACnBe,cAAc;IACdC,qBAAqB;IACrBf;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACjMJ,MAAMC,qBAAqB,GAAI,YAAW;EAExC,SAASiC,UAAUA,CAAA,EAAG;IACpB,MAAMpoR,IAAI,GAAG;MACX6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;IACnB,CAAC;IACD,OAAOtoC,CAAC,CAAC2+C,IAAI,CAAC;MACfhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,cAAc;MACjIxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACX,CAAC,CAAC;EACF;EAEA,SAAS67N,WAAWA,CAAA,EAAG;IACrB,MAAMhmR,IAAI,GAAG;MACX6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;IACnB,CAAC;IACD,OAAOtoC,CAAC,CAAC2+C,IAAI,CAAC;MACfhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,sBAAsB;MACzIxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACX,CAAC,CAAC;EACF;EACA,SAASi8N,eAAeA,CAAA,EAAG;IACzB,MAAMpmR,IAAI,GAAG;MACX6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBmM,UAAU,EAAE;IACd,CAAC;IACD,OAAOz0C,CAAC,CAAC2+C,IAAI,CAAC;MACfhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,yBAAyB;MAC5IxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACX,CAAC,CAAC;EACF;EACA,OAAO;IACLi+N,UAAU;IACVpC,WAAW;IACXI;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC7CJ,MAAMuC,WAAW,GAAG,CAAC,MAAM;EACzB,SAASC,MAAMA,CAAA,EAAG;IAChBr/J,IAAI,CAACn8G,YAAY,CAAC5J,eAAe,CAAC,SAAS,CAAC;IAC5CqlR,qBAAqB,CAACD,MAAM,CAAC,CAAC;EAChC;EAEA,eAAe95N,IAAIA,CAAA,EAAG;IACpBy6D,IAAI,CAACn8G,YAAY,CAAChT,SAAS,GAAG,EAAE;IAChCmvH,IAAI,CAACn8G,YAAY,CAAClP,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC;IAC/CqrH,IAAI,CAAC9Y,wBAAwB,CAAC,aAAa,CAAC;IAE5Cq4K,aAAa,GAAGv/J,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAc,CAAC,CAAC;IACnEwkL,eAAe,GAAGx/J,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAsB,CAAC,CAAC;IAC7EykL,aAAa,GAAGz/J,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAoB,CAAC,CAAC;IAEzEukL,aAAa,CAACpuR,WAAW,CAACquR,eAAe,CAAC;IAC1CD,aAAa,CAACpuR,WAAW,CAACsuR,aAAa,CAAC;IACxCz/J,IAAI,CAACn8G,YAAY,CAAC1S,WAAW,CAACouR,aAAa,CAAC;IAE5CG,mBAAmB,CAAC9rR,IAAI,CAAC;MAAE+rR,YAAY,EAAEH,eAAe;MAAEI,UAAU,EAAEH;IAAc,CAAC,CAAC;EACxF;EAEA,OAAO;IACL7rR,IAAI,EAAE2xD,IAAI;IACV85N;EACF,CAAC;AACH,CAAC,EAAE,CAAC;AC1BJ,MAAMC,qBAAqB,GAAG,CAAC,MAAM;EACnC;EACA;EACA;EACA,IAAIO,eAAe,GAAG,IAAI;EAC1B,IAAIx4K,gBAAgB;EACpB,IAAIy4K,MAAM;EACV,IAAIC,QAAQ;EACZ,IAAIC,QAAQ;EACZ,IAAIC,QAAQ;EACZ,IAAIC,WAAW;EACf,IAAIC,cAAc;EAClB,IAAIC,YAAY,GAAG,CAAC;EACpB,IAAIC,cAAc;EAClB,IAAIC,oBAAoB;EACxB;EACA;EACA;EACA,IAAIhjC,cAAc;EAClB,IAAIU,eAAe;EACnB,IAAIuiC,6BAA6B;EACjC,IAAIC,SAAS;EACb,IAAIC,QAAQ;EACZ,IAAIC,aAAa;EACjB;EACA;EACA;EACA,IAAIC,WAAW;EACf,IAAI5vF,UAAU;EACd,IAAItiF,YAAY;EAChB,IAAImyK,OAAO;EACX,IAAIC,iBAAiB;EACrB,IAAIC,eAAe;EACnB,IAAIC,cAAc;EAClB,IAAIC,aAAa;EACjB,IAAIC,eAAe;EACnB,IAAIC,aAAa;EACjB,IAAIC,cAAc;EAElB,MAAMx1Q,QAAQ,GAAG;IACfy1Q,eAAe,EAAE;MACf5nR,IAAI,EAAE,0BAA0B;MAChC6nR,OAAO,EAAE,8BAA8B;MACvCvoM,OAAO,EAAE,IAAI;MACb3qE,YAAY,EAAE,CACZ;QACEja,EAAE,EAAE,eAAe;QACnBO,IAAI,EAAE,MAAM;QACZoB,KAAK,EAAE,gBAAgB;QACvB83H,QAAQ,EAAE;MACZ,CAAC,EACD;QACEz5H,EAAE,EAAE,kBAAkB;QACtB2B,KAAK,EAAE,sCAAsC;QAC7CpB,IAAI,EAAE,MAAM;QACZk5H,QAAQ,EAAE;MACZ,CAAC,EACD;QACEz5H,EAAE,EAAE,uBAAuB;QAC3B2B,KAAK,EAAE,uCAAuC;QAC9CpB,IAAI,EAAE,MAAM;QACZk5H,QAAQ,EAAE;MACZ,CAAC,EACD;QACEz5H,EAAE,EAAE,0BAA0B;QAC9B2B,KAAK,EAAE,yCAAyC;QAChDpB,IAAI,EAAE,QAAQ;QACdk5H,QAAQ,EAAE,IAAI;QACdl3H,IAAI,EAAE,CACJ;UAAEnB,KAAK,EAAE,EAAE;UAAEjB,IAAI,EAAE;QAAG,CAAC,EACvB;UAAEiB,KAAK,EAAE,aAAa;UAAEjB,IAAI,EAAE;QAAc,CAAC,EAC7C;UAAEiB,KAAK,EAAE,uCAAuC;UAAEjB,IAAI,EAAE;QAAwC,CAAC,EACjG;UAAEiB,KAAK,EAAE,0CAA0C;UAAEjB,IAAI,EAAE;QAA2C,CAAC,EACvG;UAAEiB,KAAK,EAAE,wCAAwC;UAAEjB,IAAI,EAAE;QAAyC,CAAC,EACnG;UAAEiB,KAAK,EAAE,6BAA6B;UAAEjB,IAAI,EAAE;QAA8B,CAAC,EAC7E;UAAEiB,KAAK,EAAE,OAAO;UAAEjB,IAAI,EAAE;QAAQ,CAAC;MAErC,CAAC,EACD;QACEH,EAAE,EAAE,wBAAwB;QAC5B2B,KAAK,EAAE,mCAAmC;QAC1CuzH,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBiU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC,EACD;QACEz5H,EAAE,EAAE,sBAAsB;QAC1B2B,KAAK,EAAE,gDAAgD;QACvDuzH,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBk5H,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC;IACD2zJ,YAAY,EAAE;MACZ9nR,IAAI,EAAE,cAAc;MACpBs/E,OAAO,EAAE;IACX,CAAC;IACDyoM,UAAU,EAAE;MACV/nR,IAAI,EAAE,YAAY;MAClB6nR,OAAO,EAAE,gBAAgB;MACzBvoM,OAAO,EAAE,IAAI;MACb3qE,YAAY,EAAE,CACZ;QACEja,EAAE,EAAE,uBAAuB;QAC3BO,IAAI,EAAE,YAAY;QAClBk5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EAAE,wMAAwM;QACpNs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA2B,CAAC,EAC7E;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA0B,CAAC;MAE9E,CAAC,EACD;QACEA,EAAE,EAAE,UAAU;QACdO,IAAI,EAAE,YAAY;QAClBk5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EAAE,0CAA0C;QACtDs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAc,CAAC,EAChE;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAa,CAAC;MAEjE,CAAC,EACD;QACEA,EAAE,EAAE,uBAAuB;QAC3BO,IAAI,EAAE,YAAY;QAClBk5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EAAE,mDAAmD;QAC/Ds2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA2B,CAAC,EAC7E;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA0B,CAAC;MAE9E,CAAC;IAEL,CAAC;IACDstR,wBAAwB,EAAE;MACxBhoR,IAAI,EAAE,4BAA4B;MAClC6nR,OAAO,EAAE,qBAAqB;MAC9BvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACE1Z,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,sBAAsB;QAC1BkD,UAAU,EAAE,iCAAiC;QAC7Cu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA0B,CAAC,EAC5E;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAyB,CAAC;MAE7E,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,gCAAgC;QACpCkD,UAAU,EAAE,wCAAwC;QACpDu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAoC,CAAC,EACtF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAmC,CAAC;MAEvF,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,eAAe;QACnBkD,UAAU,EAAE,4CAA4C;QACxDu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAmB,CAAC,EACrE;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAkB,CAAC;MAEtE,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,eAAe;QACnBkD,UAAU,EAAE,mCAAmC;QAC/Cu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAmB,CAAC,EACrE;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAkB,CAAC;MAEtE,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,cAAc;QAClBkD,UAAU,EAAE,8BAA8B;QAC1Cu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAkB,CAAC,EACpE;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAiB,CAAC;MAErE,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,cAAc;QAClBkD,UAAU,EAAE,yEAAyE;QACrFu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAkB,CAAC,EACpE;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAiB,CAAC;MAErE,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,oBAAoB;QACxBkD,UAAU,EAAE,mBAAmB;QAC/Bu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAwB,CAAC,EAC1E;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAuB,CAAC;MAE3E,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,0CAA0C;QAC9CkD,UAAU,EAAE,sCAAsC;QAClDu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA8C,CAAC,EAChG;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA6C,CAAC;MAEjG,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,6CAA6C;QACjDkD,UAAU,EAAE,yCAAyC;QACrDu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAiD,CAAC,EACnG;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAgD,CAAC;MAEpG,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,4BAA4B;QAChCkD,UAAU,EAAE,0CAA0C;QACtDu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAgC,CAAC,EAClF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA+B,CAAC;MAEnF,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,6BAA6B;QACjCkD,UAAU,EAAE,uBAAuB;QACnCu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAiC,CAAC,EACnF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAgC,CAAC;MAEpF,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,yBAAyB;QAC7BkD,UAAU,EAAE,iBAAiB;QAC7Bu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA6B,CAAC,EAC/E;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA4B,CAAC;MAEhF,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,+BAA+B;QACnCkD,UAAU,EAAE,wBAAwB;QACpCu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAmC,CAAC,EACrF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAkC,CAAC;MAEtF,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,uBAAuB;QAC3BkD,UAAU,EAAE,eAAe;QAC3Bu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA2B,CAAC,EAC7E;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA0B,CAAC;MAE9E,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,qBAAqB;QACzBkD,UAAU,EAAE,oCAAoC;QAChDu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAyB,CAAC,EAC3E;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAwB,CAAC;MAE5E,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,yBAAyB;QAC7BkD,UAAU,EAAE,kBAAkB;QAC9Bu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA6B,CAAC,EAC/E;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA4B,CAAC;MAEhF,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,gBAAgB;QACpBkD,UAAU,EAAE,OAAO;QACnBu2H,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAoB,CAAC,EACtE;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAmB,CAAC;MAEvE,CAAC,EACD;QACE2B,KAAK,EAAE,QAAQ;QACf3B,EAAE,EAAE,kBAAkB;QACtBk1H,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBiU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC;IACD8zJ,yBAAyB,EAAE;MACzBjoR,IAAI,EAAE,4BAA4B;MAClCs/E,OAAO,EAAE,KAAK;MACdsgL,QAAQ,EAAE,CACR,kBAAkB,EAClB,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe;IAEnB,CAAC;IACDsoB,gBAAgB,EAAE;MAChBloR,IAAI,EAAE,mBAAmB;MACzB6nR,OAAO,EAAE,wBAAwB;MACjCvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACE1Z,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,+BAA+B;QACnCy5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EACR,8LAA8L;QAChMs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAmC,CAAC,EACrF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAkC,CAAC;MAEtF,CAAC,EACD;QACE2B,KAAK,EACH,2GAA2G;QAC7G3B,EAAE,EAAE,0BAA0B;QAC9Bk1H,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBiU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC,EACD;QACEl5H,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,0BAA0B;QAC9BkD,UAAU,EAAE,yGAAyG;QACrHs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA8B,CAAC,EAChF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA6B,CAAC,CAC9E;QACDwU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC,EACD;QACE93H,KAAK,EAAE,+BAA+B;QACtC3B,EAAE,EAAE,2BAA2B;QAC/Bk1H,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBiU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC,EACD;QACEl5H,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,4BAA4B;QAChCkD,UAAU,EAAE,yLAAyL;QACrMs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAgC,CAAC,EAClF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA+B,CAAC,CAChF;QACDwU,QAAQ,EAAE;MACZ,CAAC,EACD;QACE7S,KAAK,EAAE,uGAAuG;QAC9G3B,EAAE,EAAE,6BAA6B;QACjCk1H,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBiU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC,EACD;QACE93H,KAAK,EAAE,mBAAmB;QAC1B3B,EAAE,EAAE,2BAA2B;QAC/Bk1H,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBiU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC,EACD;QACE93H,KAAK,EAAE,sBAAsB;QAC7B3B,EAAE,EAAE,kCAAkC;QACtCk1H,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE;MACR,CAAC;IAEL,CAAC;IACDq7H,KAAK,EAAE;MACLt2H,IAAI,EAAE,OAAO;MACbs/E,OAAO,EAAE;IACX,CAAC;IACD6oM,UAAU,EAAE;MACVnoR,IAAI,EAAE,YAAY;MAClB6nR,OAAO,EAAE,WAAW;MACpBvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACEzF,QAAQ,EAAE,IAAI;QACdjU,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,mBAAmB;QACvBkD,UAAU,EACR,iIAAiI;QACnI0Y,IAAI,EAAE,0EAA0E;QAChF49G,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAuB,CAAC,EACzE;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAsB,CAAC;MAE1E,CAAC,EACD;QACEO,IAAI,EAAE,eAAe;QACrBP,EAAE,EAAE,SAAS;QACbkD,UAAU,EAAE,uBAAuB;QACnCs2H,MAAM,EAAE,CACN;UACEj5H,IAAI,EAAE,UAAU;UAChBoB,KAAK,EAAE,4FAA4F;UACnG3B,EAAE,EAAE;QACN,CAAC,EACD;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,qBAAqB;UAAE3B,EAAE,EAAE;QAA4B,CAAC,EACnF;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,aAAa;UAAE3B,EAAE,EAAE;QAAoB,CAAC,EACnE;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,cAAc;UAAE3B,EAAE,EAAE;QAAqB,CAAC,EACrE;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,WAAW;UAAE3B,EAAE,EAAE;QAAmB,CAAC,EAChE;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,kBAAkB;UAAE3B,EAAE,EAAE;QAAyB,CAAC,EAC7E;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,OAAO;UAAE3B,EAAE,EAAE;QAAe,CAAC,CACzD;QACDy5H,QAAQ,EAAE;MACZ,CAAC,EACD;QACE93H,KAAK,EAAE,8DAA8D;QACrE3B,EAAE,EAAE,2BAA2B;QAC/Bk1H,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBiU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC,EACD;QACEl5H,IAAI,EAAE,eAAe;QACrBP,EAAE,EAAE,UAAU;QACdkD,UAAU,EAAE,gDAAgD;QAC5Ds2H,MAAM,EAAE,CACN;UACEj5H,IAAI,EAAE,UAAU;UAChBoB,KAAK,EAAE,0FAA0F;UACjG3B,EAAE,EAAE;QACN,CAAC,EACD;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,kBAAkB;UAAE3B,EAAE,EAAE;QAAuB,CAAC,EAC3E;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,oBAAoB;UAAE3B,EAAE,EAAE;QAAyB,CAAC,EAC/E;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,6BAA6B;UAAE3B,EAAE,EAAE;QAA2B,CAAC,EAC1F;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,0BAA0B;UAAE3B,EAAE,EAAE;QAAkC,CAAC,EAC9F;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,OAAO;UAAE3B,EAAE,EAAE;QAAwB,CAAC,CAClE;QACDy5H,QAAQ,EAAE;MACZ,CAAC,EACD;QACE93H,KAAK,EAAE,QAAQ;QACf3B,EAAE,EAAE,+BAA+B;QACnCk1H,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBiU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC;IACDi0J,QAAQ,EAAE;MACRpoR,IAAI,EAAE,UAAU;MAChB6nR,OAAO,EAAE,oBAAoB;MAC7BvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACEzF,QAAQ,EAAE,IAAI;QACdjU,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,mCAAmC;QACvCkD,UAAU,EAAE,yEAAyE;QACrF0Y,IAAI,EAAE,0EAA0E;QAChF49G,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAuC,CAAC,EACzF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAsC,CAAC;MAE1F,CAAC,EACD;QACEO,IAAI,EAAE,eAAe;QACrBP,EAAE,EAAE,eAAe;QACnBkD,UAAU,EAAE,uBAAuB;QACnCs2H,MAAM,EAAE,CACN;UACEj5H,IAAI,EAAE,UAAU;UAChBoB,KAAK,EAAE,8DAA8D;UACrE3B,EAAE,EAAE;QACN,CAAC,EACD;UACEO,IAAI,EAAE,UAAU;UAChBoB,KAAK,EAAE,iGAAiG;UACxG3B,EAAE,EAAE;QACN,CAAC,EACD;UACEO,IAAI,EAAE,UAAU;UAChBoB,KAAK,EAAE,kFAAkF;UACzF3B,EAAE,EAAE;QACN,CAAC,EACD;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,OAAO;UAAE3B,EAAE,EAAE;QAAuB,CAAC,CACjE;QACDy5H,QAAQ,EAAE;MACZ,CAAC,EACD;QACE93H,KAAK,EAAE,iEAAiE;QACxE3B,EAAE,EAAE,0BAA0B;QAC9Bk1H,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBiU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC;IACD+pD,OAAO,EAAE;MACPl+K,IAAI,EAAE,SAAS;MACf6nR,OAAO,EAAE,mBAAmB;MAC5BvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACEzF,QAAQ,EAAE,IAAI;QACdjU,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,+BAA+B;QACnCkD,UAAU,EAAE,uFAAuF;QACnG0Y,IAAI,EAAE,0EAA0E;QAChF49G,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAmC,CAAC,EACrF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAkC,CAAC;MAEtF,CAAC,EACD;QACEO,IAAI,EAAE,eAAe;QACrBP,EAAE,EAAE,cAAc;QAClBy5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EAAE,yBAAyB;QACrCs2H,MAAM,EAAE,CACN;UACEj5H,IAAI,EAAE,UAAU;UAChBoB,KAAK,EAAE,4EAA4E;UACnF3B,EAAE,EAAE;QACN,CAAC,EACD;UACEO,IAAI,EAAE,UAAU;UAChBoB,KAAK,EAAE,kFAAkF;UACzF3B,EAAE,EAAE;QACN,CAAC,EACD;UACEO,IAAI,EAAE,UAAU;UAChBoB,KAAK,EACH,uGAAuG;UACzG3B,EAAE,EAAE;QACN,CAAC,EACD;UACEO,IAAI,EAAE,UAAU;UAChBoB,KAAK,EAAE,uFAAuF;UAC9F3B,EAAE,EAAE;QACN,CAAC,EACD;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,OAAO;UAAE3B,EAAE,EAAE;QAAsB,CAAC;MAEnE,CAAC,EACD;QACE2B,KAAK,EAAE,2DAA2D;QAClE3B,EAAE,EAAE,yBAAyB;QAC7Bk1H,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBiU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC;IACDuzB,KAAK,EAAE;MACL1nJ,IAAI,EAAE,OAAO;MACb6nR,OAAO,EAAE,WAAW;MACpBvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACE1Z,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,uCAAuC;QAC3CkD,UAAU,EACR,iIAAiI;QACnIs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA2C,CAAC,EAC7F;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA0C,CAAC,CAC3F;QACDwU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC,EACD;QACEl5H,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,kCAAkC;QACtCkD,UAAU,EACR,mIAAmI;QACrIs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAsC,CAAC,EACxF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAqC,CAAC,CACtF;QACDwU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC;IACDk0J,cAAc,EAAE;MACdroR,IAAI,EAAE,iBAAiB;MACvB6nR,OAAO,EAAE,sBAAsB;MAC/BvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACEzF,QAAQ,EAAE,IAAI;QACdjU,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,mBAAmB;QACvBkD,UAAU,EACR,2HAA2H;QAC7H0Y,IAAI,EAAE,0EAA0E;QAChF49G,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAuB,CAAC,EACzE;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAsB,CAAC;MAE1E,CAAC,EACD;QACEO,IAAI,EAAE,eAAe;QACrBP,EAAE,EAAE,MAAM;QACVy5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EAAE,wEAAwE;QACpFs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,0DAA0D;UAAE3B,EAAE,EAAE;QAAW,CAAC,EACvG;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,2BAA2B;UAAE3B,EAAE,EAAE;QAA0C,CAAC,EACvG;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,cAAc;UAAE3B,EAAE,EAAE;QAA+B,CAAC,EAC/E;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,iBAAiB;UAAE3B,EAAE,EAAE;QAAkC,CAAC,EACrF;UAAEO,IAAI,EAAE,UAAU;UAAEoB,KAAK,EAAE,OAAO;UAAE3B,EAAE,EAAE;QAAyB,CAAC;MAEtE,CAAC,EACD;QACE2B,KAAK,EAAE,+EAA+E;QACtF3B,EAAE,EAAE,eAAe;QACnBk1H,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBiU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC,EACD;QACEl5H,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,4BAA4B;QAChCkD,UAAU,EAAE,4DAA4D;QACxEs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAgC,CAAC,EAClF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA+B,CAAC,CAChF;QACDwU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC;IACDm0J,YAAY,EAAE;MACZtoR,IAAI,EAAE,eAAe;MACrB6nR,OAAO,EAAE,oBAAoB;MAC7BvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACEzF,QAAQ,EAAE,IAAI;QACdjU,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,kBAAkB;QACtBkD,UAAU,EACR,uLAAuL;QACzL0Y,IAAI,EAAE,0EAA0E;QAChF49G,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAsB,CAAC,EACxE;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAqB,CAAC;MAEzE,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,kBAAkB;QACtBy5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EAAE,0EAA0E;QACtFs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAsB,CAAC,EACxE;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAqB,CAAC;MAEzE,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,mBAAmB;QACvBy5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EACR,6HAA6H;QAC/Hs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAuB,CAAC,EACzE;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAsB,CAAC;MAE1E,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,6BAA6B;QACjCy5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EAAE,8DAA8D;QAC1Es2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAiC,CAAC,EACnF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAgC,CAAC;MAEpF,CAAC;IAEL,CAAC;IACD6tR,oBAAoB,EAAE;MACpBvoR,IAAI,EAAE,uBAAuB;MAC7B6nR,OAAO,EAAE,0BAA0B;MACnCvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACEzF,QAAQ,EAAE,IAAI;QACdjU,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,qBAAqB;QACzBkD,UAAU,EACR,+MAA+M;QACjN0Y,IAAI,EAAE,0EAA0E;QAChF49G,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAyB,CAAC,EAC3E;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAwB,CAAC;MAE5E,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,iCAAiC;QACrCy5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EAAE,iGAAiG;QAC7Gs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAqC,CAAC,EACvF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAoC,CAAC;MAExF,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,kCAAkC;QACtCy5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EAAE,yEAAyE;QACrFs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAsC,CAAC,EACxF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAqC,CAAC;MAEzF,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,gCAAgC;QACpCy5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EACR,yGAAyG;QAC3Gs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAoC,CAAC,EACtF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAmC,CAAC;MAEvF,CAAC;IAEL,CAAC;IACD8tR,qBAAqB,EAAE;MACrBxoR,IAAI,EAAE,yBAAyB;MAC/B6nR,OAAO,EAAE,+BAA+B;MACxCvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACEzF,QAAQ,EAAE,IAAI;QACdjU,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,kBAAkB;QACtBkD,UAAU,EACR,gNAAgN;QAClN0Y,IAAI,EAAE,0EAA0E;QAChF49G,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAsB,CAAC,EACxE;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAqB,CAAC;MAEzE,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,2BAA2B;QAC/By5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EACR,4GAA4G;QAC9Gs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA+B,CAAC,EACjF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA8B,CAAC;MAElF,CAAC,EACD;QACEA,EAAE,EAAE,mBAAmB;QACvBO,IAAI,EAAE,MAAM;QACZoB,KAAK,EAAE,kBAAkB;QACzB6S,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC,EACD;QACEl5H,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,0BAA0B;QAC9By5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EAAE,uFAAuF;QACnGs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA8B,CAAC,EAChF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA6B,CAAC;MAEjF,CAAC;IAEL,CAAC;IACD+tR,kBAAkB,EAAE;MAClBzoR,IAAI,EAAE,sBAAsB;MAC5B6nR,OAAO,EAAE,6BAA6B;MACtCvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACEzF,QAAQ,EAAE,IAAI;QACdjU,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,0BAA0B;QAC9BkD,UAAU,EAAE,0FAA0F;QACtG0Y,IAAI,EAAE,0EAA0E;QAChF49G,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA8B,CAAC,EAChF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA6B,CAAC;MAEjF,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,uBAAuB;QAC3By5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EACR,yIAAyI;QAC3Is2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA2B,CAAC,EAC7E;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA0B,CAAC;MAE9E,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,2BAA2B;QAC/By5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EACR,qJAAqJ;QACvJs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA+B,CAAC,EACjF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA8B,CAAC;MAElF,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,2BAA2B;QAC/By5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EACR,wKAAwK;QAC1Ks2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA+B,CAAC,EACjF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA8B,CAAC;MAElF,CAAC;IAEL,CAAC;IACDguR,aAAa,EAAE;MACb1oR,IAAI,EAAE,gBAAgB;MACtB6nR,OAAO,EAAE,qBAAqB;MAC9BvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACEzF,QAAQ,EAAE,IAAI;QACdjU,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,wBAAwB;QAC5BkD,UAAU,EACR,uGAAuG;QACzG0Y,IAAI,EAAE,0EAA0E;QAChF49G,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA4B,CAAC,EAC9E;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA2B,CAAC;MAE/E,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,wBAAwB;QAC5By5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EAAE,0EAA0E;QACtFs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA4B,CAAC,EAC9E;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA2B,CAAC;MAE/E,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,+BAA+B;QACnCy5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EACR,uHAAuH;QACzHs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAmC,CAAC,EACrF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAkC,CAAC;MAEtF,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,2BAA2B;QAC/By5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EAAE,iJAAiJ;QAC7Js2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA+B,CAAC,EACjF;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAA8B,CAAC;MAElF,CAAC;IAEL,CAAC;IACDiuR,cAAc,EAAE;MACd3oR,IAAI,EAAE,iBAAiB;MACvB6nR,OAAO,EAAE,qBAAqB;MAC9BvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACE1Z,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,kBAAkB;QACtBy5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EAAE,qGAAqG;QACjH0Y,IAAI,EAAE,0EAA0E;QAChF49G,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAsB,CAAC,EACxE;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAqB,CAAC,CACtE;QACDwU,QAAQ,EAAE;MACZ,CAAC,EACD;QACE7S,KAAK,EAAE,wCAAwC;QAC/C3B,EAAE,EAAE,qBAAqB;QACzBk1H,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBk5H,QAAQ,EAAE,IAAI;QACdjlH,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC;IACD05Q,YAAY,EAAE;MACZ5oR,IAAI,EAAE,eAAe;MACrB6nR,OAAO,EAAE,iBAAiB;MAC1BvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACEzF,QAAQ,EAAE,IAAI;QACdjU,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,eAAe;QACnBkD,UAAU,EAAE,8CAA8C;QAC1D0Y,IAAI,EAAE,0EAA0E;QAChF69G,QAAQ,EAAE,IAAI;QACdD,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAmB,CAAC,EACrE;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAkB,CAAC;MAEtE,CAAC,EACD;QACEO,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,oBAAoB;QACxBkD,UAAU,EAAE,wGAAwG;QACpHs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAAwB,CAAC,EAC1E;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAuB,CAAC,CACxE;QACDwU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC,EACD;QACE93H,KAAK,EAAE,oCAAoC;QAC3C3B,EAAE,EAAE,uBAAuB;QAC3Bk1H,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBiU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC;IACD00J,gBAAgB,EAAE;MAChB7oR,IAAI,EAAE,mBAAmB;MACzB6nR,OAAO,EAAE,wBAAwB;MACjCvoM,OAAO,EAAE,KAAK;MACd3qE,YAAY,EAAE,CACZ;QACE1Z,IAAI,EAAE,YAAY;QAClBP,EAAE,EAAE,sCAAsC;QAC1Cy5H,QAAQ,EAAE,IAAI;QACdv2H,UAAU,EACR,iKAAiK;QACnKs2H,MAAM,EAAE,CACN;UAAEj5H,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,KAAK;UAAEP,KAAK,EAAE,KAAK;UAAEpB,EAAE,EAAE;QAA0C,CAAC,EAC5F;UAAEO,IAAI,EAAE,OAAO;UAAEoB,KAAK,EAAE,IAAI;UAAEP,KAAK,EAAE,IAAI;UAAEpB,EAAE,EAAE;QAAyC,CAAC;MAE7F,CAAC,EACD;QACE2B,KAAK,EAAE,6FAA6F;QACpG3B,EAAE,EAAE,uCAAuC;QAC3Ck1H,UAAU,EAAE,IAAI;QAChB30H,IAAI,EAAE,UAAU;QAChBiU,QAAQ,EAAE,IAAI;QACdilH,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC;IACD20J,UAAU,EAAE;MACV9oR,IAAI,EAAE,YAAY;MAClBs/E,OAAO,EAAE,IAAI;MACb3qE,YAAY,EAAE,CACZ;QACE1Z,IAAI,EAAE,eAAe;QACrBP,EAAE,EAAE,aAAa;QACjBkD,UAAU,EACR,mGAAmG;QACrGsR,QAAQ,EAAE,IAAI;QACdglH,MAAM,EAAE,CACN;UACEj5H,IAAI,EAAE,UAAU;UAChBoB,KAAK,EACH,+IAA+I;UACjJ3B,EAAE,EAAE;QACN,CAAC,EACD;UACEO,IAAI,EAAE,UAAU;UAChBoB,KAAK,EACH,iMAAiM;UACnM3B,EAAE,EAAE;QACN,CAAC,EACD;UACEO,IAAI,EAAE,UAAU;UAChBoB,KAAK,EACH,4NAA4N;UAC9N3B,EAAE,EAAE;QACN,CAAC,EACD;UACEO,IAAI,EAAE,UAAU;UAChBoB,KAAK,EACH,qKAAqK;UACvK3B,EAAE,EAAE;QACN,CAAC;MAEL,CAAC,EACD;QACEO,IAAI,EAAE,MAAM;QACZP,EAAE,EAAE,yBAAyB;QAC7B2B,KAAK,EAAE,wCAAwC;QAC/C83H,QAAQ,EAAE;MACZ,CAAC,EACD;QACEl5H,IAAI,EAAE,MAAM;QACZP,EAAE,EAAE,6BAA6B;QACjC2B,KAAK,EAAE,yCAAyC;QAChD83H,QAAQ,EAAE;MACZ,CAAC,EACD;QACEz5H,EAAE,EAAE,wBAAwB;QAC5BO,IAAI,EAAE,MAAM;QACZoB,KAAK,EAAE;MACT,CAAC,EACD;QACEA,KAAK,EAAE,yBAAyB;QAChC3B,EAAE,EAAE,iBAAiB;QACrBO,IAAI,EAAE,QAAQ;QACdq5H,kBAAkB,EAAE;MACtB,CAAC;IAEL;EACF,CAAC;EACD,MAAMy0J,aAAa,GAAG;IACpBf,wBAAwB,EAAEA,CAAA,KAAM;MAC9BZ,OAAO,CAAC,0BAA0B,CAAC,CAAChwR,KAAK,CAAC,CAAC;MAE3CgwR,OAAO,CAAC,0BAA0B,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;IACrF,CAAC;IACD6gK,gBAAgB,EAAEA,CAAA,KAAM;MACtBd,OAAO,CAAC,kBAAkB,CAAC,CAAChwR,KAAK,CAAC,CAAC;MAEnCgwR,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;MACnF+/J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;MACnF+/J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;MACrF+/J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;MACpF+/J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,6BAA6B,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;MACtF+/J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;IACtF,CAAC;IACD8gK,UAAU,EAAEA,CAAA,KAAM;MAChBf,OAAO,CAAC,YAAY,CAAC,CAAChwR,KAAK,CAAC,CAAC;MAE7BgwR,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;MAC9E+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,+BAA+B,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;;MAElF;MACA+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,aAAa,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACjE+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MAC/E+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACvE+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACxE+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACtE+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MAC5E+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,cAAc,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MAClE;MACA+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,aAAa,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MAChEw4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MAC9Ew4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACtEw4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACvEw4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACrEw4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MAC3Ew4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,cAAc,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACjE;MACAw4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACxE+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,sBAAsB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MAC1E+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MAC5E+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MAC9E+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,iCAAiC,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACrF+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,uBAAuB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MAC3E;MACA+/J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACvEw4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,sBAAsB,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACzEw4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MAC3Ew4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MAC7Ew4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,iCAAiC,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACpFw4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,uBAAuB,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;IAC5E,CAAC;IACDw5J,QAAQ,EAAEA,CAAA,KAAM;MACdhB,OAAO,CAAC,UAAU,CAAC,CAAChwR,KAAK,CAAC,CAAC;MAE3BgwR,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;;MAE3E;MACA+/J,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,qBAAqB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACvE+/J,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,mCAAmC,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACrF+/J,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACzF+/J,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,sBAAsB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACxE;MACA+/J,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,qBAAqB,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACtEw4J,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,mCAAmC,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACpFw4J,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACxFw4J,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,sBAAsB,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;IACzE,CAAC;IACDsvD,OAAO,EAAEA,CAAA,KAAM;MACbkpG,OAAO,CAAC,SAAS,CAAC,CAAChwR,KAAK,CAAC,CAAC;MAE1BgwR,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,yBAAyB,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;;MAEzE;MACA+/J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACrE+/J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,sCAAsC,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACvF+/J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,kCAAkC,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACnF+/J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,yCAAyC,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MAC1F+/J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,qBAAqB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACtE;MACA+/J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACpEw4J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,sCAAsC,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACtFw4J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,kCAAkC,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MAClFw4J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,yCAAyC,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACzFw4J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,qBAAqB,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;IACvE,CAAC;IACD84B,KAAK,EAAEA,CAAA,KAAM;MACX0/H,OAAO,CAAC,OAAO,CAAC,CAAChwR,KAAK,CAAC,CAAC;MAExBgwR,OAAO,CAAC,OAAO,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;MACrF+/J,OAAO,CAAC,OAAO,CAAC,CAACh7J,MAAM,CAAC,kCAAkC,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;IAClF,CAAC;IACDghK,cAAc,EAAEA,CAAA,KAAM;MACpBjB,OAAO,CAAC,gBAAgB,CAAC,CAAChwR,KAAK,CAAC,CAAC;MAEjCgwR,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,eAAe,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;MACtE+/J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;;MAEnF;MACA+/J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,UAAU,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MAClE+/J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,yCAAyC,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACjG+/J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,8BAA8B,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACtF+/J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,iCAAiC,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACzF+/J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MAChF;MACA+/J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,UAAU,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACjEw4J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,yCAAyC,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MAChGw4J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,8BAA8B,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACrFw4J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,iCAAiC,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;MACxFw4J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAACwC,cAAc,CAAC,IAAI,CAAC;IACjF,CAAC;IACD05J,YAAY,EAAEA,CAAA,KAAM;MAClBlB,OAAO,CAAC,cAAc,CAAC,CAAChwR,KAAK,CAAC,CAAC;IACjC,CAAC;IACDmxR,oBAAoB,EAAEA,CAAA,KAAM;MAC1BnB,OAAO,CAAC,sBAAsB,CAAC,CAAChwR,KAAK,CAAC,CAAC;IACzC,CAAC;IACDoxR,qBAAqB,EAAEA,CAAA,KAAM;MAC3BpB,OAAO,CAAC,uBAAuB,CAAC,CAAChwR,KAAK,CAAC,CAAC;MAExCgwR,OAAO,CAAC,uBAAuB,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;IACnF,CAAC;IACDohK,kBAAkB,EAAEA,CAAA,KAAM;MACxBrB,OAAO,CAAC,oBAAoB,CAAC,CAAChwR,KAAK,CAAC,CAAC;IACvC,CAAC;IACDsxR,aAAa,EAAEA,CAAA,KAAM;MACnBtB,OAAO,CAAC,eAAe,CAAC,CAAChwR,KAAK,CAAC,CAAC;IAClC,CAAC;IACDuxR,cAAc,EAAEA,CAAA,KAAM;MACpBvB,OAAO,CAAC,gBAAgB,CAAC,CAAChwR,KAAK,CAAC,CAAC;MAEjCgwR,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,qBAAqB,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;IAC9E,CAAC;IACDuhK,YAAY,EAAEA,CAAA,KAAM;MAClBxB,OAAO,CAAC,cAAc,CAAC,CAAChwR,KAAK,CAAC,CAAC;MAE/BgwR,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;MACzE+/J,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,uBAAuB,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;IAC9E,CAAC;IACDwhK,gBAAgB,EAAEA,CAAA,KAAM;MACtBzB,OAAO,CAAC,kBAAkB,CAAC,CAAChwR,KAAK,CAAC,CAAC;MAEnCgwR,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;IAClG;EACF,CAAC;;EAED;EACA;EACA,eAAew+J,MAAMA,CAAA,EAAG;IACtB,MAAMsB,WAAW,CAAC6B,gBAAgB,CAAC,CAAC;IAEpCn7K,gBAAgB,GAAGrvG,SAAS;IAC5B8nR,MAAM,GAAG9nR,SAAS;IAClB+nR,QAAQ,GAAG/nR,SAAS;IACpBgoR,QAAQ,GAAGhoR,SAAS;IACpBioR,QAAQ,GAAGjoR,SAAS;IACpBkoR,WAAW,GAAGloR,SAAS;IACvBmoR,cAAc,GAAGnoR,SAAS;EAC5B;EACA,SAASyqR,iBAAiBA,CAACt0Q,YAAY,EAAEu0Q,QAAQ,EAAE;IACjD,IAAIC,SAAS;IAEb,KAAK,MAAMjpR,OAAO,IAAIyU,YAAY,EAAE;MAClC,IAAIzU,OAAO,CAACxF,EAAE,KAAKwuR,QAAQ,EAAE;QAC3BC,SAAS,GAAGjpR,OAAO,CAACjF,IAAI;QACxB;MACF;MACA,IAAIiF,OAAO,CAACjF,IAAI,KAAK,eAAe,EAAE;QACpC,IAAIiF,OAAO,CAACg0H,MAAM,CAAC/2F,IAAI,CAAC5jB,CAAC,IAAIA,CAAC,CAAC7e,EAAE,KAAKwuR,QAAQ,CAAC,EAAE;UAC/CC,SAAS,GAAG,eAAe;UAC3B;QACF;MACF;IACF;IAEA,OAAOA,SAAS;EAClB;EACA,SAASC,oBAAoBA,CAAAl6J,IAAA,EAA2B;IAAA,IAA1B;MAAEghE,UAAU;MAAEm5F;IAAS,CAAC,GAAAn6J,IAAA;IACpD,MAAMo6J,YAAY,GAAG9iK,IAAI,CAAC/rH,aAAa,CAAC,GAAG,EAAE;MAAE+mG,KAAK,EAAE,eAAe;MAAE3mG,IAAI,EAAEwuR;IAAS,CAAC,CAAC;IACxF,MAAME,UAAU,GAAGC,IAAI,CAACC,OAAO,CAAC,QAAQ,CAAC;IACzCH,YAAY,CAAC3xR,WAAW,CAAC4xR,UAAU,CAAC;IAEpCD,YAAY,CAACjvR,gBAAgB,CAAC,OAAO,EAAE,MAAMoC,CAAC,IAAI;MAChD,IAAIA,CAAC,CAAC3E,MAAM,KAAKyxR,UAAU,EAAE;QAC3B,MAAMn5P,KAAK,CAACu4B,SAAS,CAAC,0BAA0B,EAAE;UAAEwxE,YAAY,EAAE+1D;QAAW,CAAC,CAAC;QAC/E;MACF;MAEA,IAAIz7K,IAAI,GAAGva,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;MACzCga,IAAI,CAACtZ,YAAY,CACf,QAAQ,EACR,GAAGmN,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,MAAMh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,IAAIj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,IAAIl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,6BACjG,CAAC;MACDhxC,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;MACnCsZ,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;MACrCsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE,kBAAkB,CAAC;MAChDsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;MACtC,IAAIgmI,UAAU,GAAGjnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;MAChD0mI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;MACxCgmI,UAAU,CAAChmI,YAAY,CAAC,OAAO,EAAEmN,CAAC,CAACC,OAAO,CAACqoC,KAAK,CAAC;MACjDuwF,UAAU,CAACzmI,EAAE,GAAG,OAAO;MACvB,IAAI0mI,eAAe,GAAGlnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;MACrD2mI,eAAe,CAACjmI,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC;MACpDimI,eAAe,CAACjmI,YAAY,CAAC,OAAO,EAAE+0L,UAAU,CAAC;MACjD9uD,eAAe,CAAC1mI,EAAE,GAAG,cAAc;MAEnC+Z,IAAI,CAAC9c,WAAW,CAACwpI,UAAU,CAAC;MAC5B1sH,IAAI,CAAC9c,WAAW,CAACypI,eAAe,CAAC;MACjC3sH,IAAI,CAACzZ,KAAK,CAACsH,QAAQ,GAAG,UAAU;MAChCmS,IAAI,CAACzZ,KAAK,CAAC+nF,OAAO,GAAG,GAAG;MACxB7oF,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAAC8c,IAAI,CAAC;MAE/BA,IAAI,CAAC4sH,MAAM,CAAC,CAAC;IACf,CAAC,CAAC;IAEF6lJ,aAAa,CAACvvR,WAAW,CAAC2xR,YAAY,CAAC;EACzC;EACA,SAASI,4BAA4BA,CAACC,KAAK,EAAE7hC,OAAO,EAAE;IACpD6hC,KAAK,CAAClyR,OAAO,CAACmyR,IAAI,IAAI;MACpB3C,QAAQ,CAAC2C,IAAI,CAAC,CAAC7yR,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE4sP,OAAO,CAAC;IACxD,CAAC,CAAC;EACJ;EACA,SAAS+hC,0BAA0BA,CAAC16F,QAAQ,EAAE;IAC5C,MAAM26F,cAAc,GAAG,CACrB,GAAG1C,OAAO,CAACj4F,QAAQ,CAAC,CAAC16K,IAAI,CAAClU,gBAAgB,CACxC,oGACF,CAAC,CACF;IAEDsmR,cAAc,GAAG,IAAI;IACrB,IAAIiD,cAAc,CAACtyR,MAAM,EAAE;MACzBqvR,cAAc,GAAGiD,cAAc,CAAC7oR,GAAG,CAAClD,KAAK,IAAIA,KAAK,CAACgsR,aAAa,CAAC,CAAC,CAAC,CAACxrD,KAAK,CAACz1M,OAAO,IAAIA,OAAO,CAAC;IAC/F;IAEAm+P,QAAQ,CAAC93F,QAAQ,CAAC,CAACp4L,SAAS,CAACmE,MAAM,CAAC,cAAc,EAAE2rR,cAAc,CAAC;EACrE;EACA,SAASmD,yBAAyBA,CAAA,EAAG;IACnC,MAAMC,kBAAkB,GAAGjxQ,MAAM,CAACxJ,MAAM,CAACy3Q,QAAQ,CAAC,CAACvhR,MAAM,CAACkkR,IAAI,IAAI;MAChE,OACE,CAACA,IAAI,CAAC7yR,SAAS,CAAC8N,QAAQ,CAAC,YAAY,CAAC,IACtC,CAAC+kR,IAAI,CAAC7yR,SAAS,CAAC8N,QAAQ,CAAC,cAAc,CAAC,IACxC,CAAC+kR,IAAI,CAAC7yR,SAAS,CAAC8N,QAAQ,CAAC,QAAQ,CAAC,IAClC,CAAC+kR,IAAI,CAAC7yR,SAAS,CAAC8N,QAAQ,CAAC,YAAY,CAAC;IAE1C,CAAC,CAAC;IAEFiiR,oBAAoB,GAAGmD,kBAAkB,CAACzyR,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI;EACrE;EACA,SAAS0yR,6BAA6BA,CAAA,EAAG;IACvC;IACA,MAAMD,kBAAkB,GAAGjxQ,MAAM,CAACxJ,MAAM,CAACy3Q,QAAQ,CAAC,CAACvhR,MAAM,CAACkkR,IAAI,IAAI;MAChE,OACE,CAACA,IAAI,CAAC7yR,SAAS,CAAC8N,QAAQ,CAAC,YAAY,CAAC,IACtC,CAAC+kR,IAAI,CAAC7yR,SAAS,CAAC8N,QAAQ,CAAC,cAAc,CAAC,IACxC,CAAC+kR,IAAI,CAAC7yR,SAAS,CAAC8N,QAAQ,CAAC,QAAQ,CAAC;IAEtC,CAAC,CAAC;IAEF,IAAI,CAACyD,CAAC,CAACC,OAAO,CAACqxC,iBAAiB,EAAE;MAChC0tO,eAAe,CAACjgK,cAAc,CAAC,IAAI,CAAC;MACpC;IACF;IAEAigK,eAAe,CAACjgK,cAAc,CAAC4iK,kBAAkB,CAACzyR,MAAM,GAAG,CAAC,IAAI,CAAC8Q,CAAC,CAACC,OAAO,CAAC80C,oBAAoB,CAAC;EAClG;;EAEA;EACA;EACA,SAAS8sO,6BAA6BA,CAACruR,KAAK,EAAEb,IAAI,EAAE;IAClD,IAAIa,KAAK,KAAK,EAAE,EAAE,OAAOA,KAAK;IAE9B,IAAIb,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,UAAU,EAAE;MAC3C,OAAOa,KAAK,KAAK,KAAK,IAAIA,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;IAClD;IAEA,OAAOA,KAAK;EACd;EACA,SAASsuR,wBAAwBA,CAACj7F,QAAQ,EAAEk7F,cAAc,EAAE;IAC1D,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC1+K,QAAQ,CAACwjF,QAAQ,CAAC,EAAE;MACxD,OAAOk7F,cAAc,KAAK,GAAG,GAAG,CAAC,GAAG9D,QAAQ;IAC9C;IAEA,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC56K,QAAQ,CAACwjF,QAAQ,CAAC,EAAE;MAC5D,OAAOs3F,QAAQ;IACjB;IAEA,IACE,CACE,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,OAAO,CACR,CAAC96K,QAAQ,CAACwjF,QAAQ,CAAC,EACpB;MACA,OAAOq3F,QAAQ;IACjB;IAEA,OAAOD,QAAQ;EACjB;EACA,eAAe+D,iBAAiBA,CAAA,EAAG;IACjC,MAAMjgK,IAAI,GAAG,MAAMj6F,KAAK,CAACu4B,SAAS,CAAC,8BAA8B,CAAC;IAClE,MAAM4hO,cAAc,GAAGlgK,IAAI,CAACmgK,kCAAkC;IAC9D,OAAOD,cAAc,CAACtpR,GAAG,CAACwpR,EAAE,IAAI;MAC9B,OAAO;QACL3uR,KAAK,EAAE2uR,EAAE,CAACC,eAAe;QACzB7vR,IAAI,EAAE4vR,EAAE,CAACh2K;MACX,CAAC;IACH,CAAC,CAAC;EACJ;EACA,eAAek2K,YAAYA,CAACC,aAAa,EAAE;IACzC,MAAMvgK,IAAI,GAAG,MAAMj6F,KAAK,CAACu4B,SAAS,CAAC,yBAAyB,EAAE;MAC5DkiO,wBAAwB,EAAEtE,QAAQ;MAClC9xK,WAAW,EAAEm2K,aAAa,CAACn2K,WAAW;MACtCq2K,cAAc,EAAE7tR,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG;MAClD8rH,cAAc,EAAE6hK,aAAa,CAAC3vR,IAAI;MAClCka,UAAU,EAAEy1Q,aAAa,CAACz1Q;IAC5B,CAAC,CAAC;IACF,OAAOk1G,IAAI,CAAC0gK,6BAA6B,CAAC,CAAC,CAAC,CAACC,oBAAoB;EACnE;EACA;EACA,eAAeC,8BAA8BA,CAACluO,UAAU,EAAE;IACxD,MAAM9/C,IAAI,GAAG,MAAMmzB,KAAK,CAACu4B,SAAS,CAAC,8BAA8B,EAAE;MACjEjuD,EAAE,EAAE,CAAC;MACLwwR,MAAM,EAAE,CAAC;MACTC,YAAY,EAAE,YAAY;MAC1BrvR,KAAK,EAAEihD,UAAU;MACjBquO,QAAQ,EAAE,EAAE;MACZC,cAAc,EAAE;IAClB,CAAC,CAAC;IAEF,OAAO3mQ,IAAI,CAACxT,KAAK,CAACjU,IAAI,CAACquR,kCAAkC,CAAC;EAC5D;EACA,eAAeC,oBAAoBA,CAAAp8J,KAAA,EAAyD;IAAA,IAAxD;MAAEz0H,EAAE;MAAEwwR,MAAM,GAAG,CAAC;MAAEC,YAAY;MAAErvR,KAAK;MAAEsvR,QAAQ,GAAG;IAAG,CAAC,GAAAj8J,KAAA;IACxF,MAAMlyH,IAAI,GAAG,MAAMmzB,KAAK,CAACu4B,SAAS,CAAC,8BAA8B,EAAE;MACjEjuD,EAAE;MACFwwR,MAAM;MACNC,YAAY;MACZrvR,KAAK;MACLsvR,QAAQ;MACRC,cAAc,EAAE;IAClB,CAAC,CAAC;IAEF,OAAOpuR,IAAI,CAACquR,kCAAkC;EAChD;EACA,eAAeE,oBAAoBA,CAAAp8J,KAAA,EAAqD;IAAA,IAApD;MAAE10H,EAAE;MAAEwwR,MAAM;MAAEC,YAAY;MAAErvR,KAAK;MAAEsvR,QAAQ,GAAG;IAAG,CAAC,GAAAh8J,KAAA;IACpF,MAAMnyH,IAAI,GAAG,MAAMmzB,KAAK,CAACu4B,SAAS,CAAC,8BAA8B,EAAE;MACjEjuD,EAAE;MACFwwR,MAAM;MACNC,YAAY;MACZrvR,KAAK;MACLsvR,QAAQ;MACRC,cAAc,EAAE;IAClB,CAAC,CAAC;IAEF,OAAO3mQ,IAAI,CAACxT,KAAK,CAACjU,IAAI,CAACquR,kCAAkC,CAAC;EAC5D;EACA,eAAeG,0BAA0BA,CAAAj8J,KAAA,EAAkC;IAAA,IAAjC;MAAExvH,IAAI;MAAEmvL,QAAQ;MAAEl0L,IAAI;MAAEa;IAAM,CAAC,GAAA0zH,KAAA;IACvE,IAAI,CAACk8J,UAAU,CAACv8F,QAAQ,CAAC,CAACz0L,EAAE,EAAE;MAC5B,MAAM2vH,IAAI,GAAG,MAAMmhK,oBAAoB,CAAC;QACtC9wR,EAAE,EAAE,CAAC;QACLwwR,MAAM,EAAEd,wBAAwB,CAACj7F,QAAQ,EAAE,GAAG,CAAC;QAC/Cg8F,YAAY,EAAEnrR,IAAI;QAClBlE,KAAK,EAAEquR,6BAA6B,CAACruR,KAAK,EAAEb,IAAI;MAClD,CAAC,CAAC;MAEFywR,UAAU,CAACv8F,QAAQ,CAAC,CAACz0L,EAAE,GAAG2vH,IAAI,CAAC,CAAC,CAAC,CAACshK,WAAW;MAC7C;IACF;IAEAxE,WAAW,CAACyE,SAAS,CAAC;MACpBlxR,EAAE,EAAEsF,IAAI;MACR/C,IAAI,EAAE;QACJvC,EAAE,EAAEy0L,QAAQ,KAAK,OAAO,GAAGs3F,QAAQ,GAAGiF,UAAU,CAACv8F,QAAQ,CAAC,CAACz0L,EAAE;QAC7DwwR,MAAM,EAAEd,wBAAwB,CAACj7F,QAAQ,EAAE,GAAG,CAAC;QAC/Cg8F,YAAY,EAAEnrR,IAAI;QAClBlE,KAAK,EAAEquR,6BAA6B,CAACruR,KAAK,EAAEb,IAAI,CAAC;QACjDmwR,QAAQ,EAAE,EAAE;QACZC,cAAc,EAAE;MAClB;IACF,CAAC,CAAC;EACJ;;EAEA;EACA;EACA,SAASQ,gBAAgBA,CAACr5C,cAAc,EAAE;IACxC,IAAI,CAACA,cAAc,EAAE,OAAO,EAAE;IAE9B+zC,QAAQ,GAAG/zC,cAAc,CAACs5C,QAAQ;IAClCtF,QAAQ,GAAGh0C,cAAc,CAACu5C,cAAc;IACxCtF,QAAQ,GAAGj0C,cAAc,CAACw5C,MAAM;IAEhCrF,cAAc,GAAG,CAAC,CAAC;IACnB,IAAIn0C,cAAc,CAACs1C,YAAY,EAAE;MAC/B,KAAK,MAAMmE,eAAe,IAAIz5C,cAAc,CAACs1C,YAAY,CAACzsQ,KAAK,CAAC,IAAI,CAAC,EAAE;QACrE,MAAM6wQ,UAAU,GAAGD,eAAe,CAAC5wQ,KAAK,CAAC,GAAG,CAAC;QAC7CsrQ,cAAc,CAACuF,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG;UAC9BxxR,EAAE,EAAEwxR,UAAU,CAAC,CAAC,CAAC;UACjB18Q,MAAM,EAAE,CAAC08Q,UAAU,CAAC,CAAC,CAAC,EAAEA,UAAU,CAAC,CAAC,CAAC;QACvC,CAAC;MACH;IACF;IAEAR,UAAU,CAAC,iBAAiB,CAAC,CAAChxR,EAAE,GAAG6rR,QAAQ;IAC3CmF,UAAU,CAAC,YAAY,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAAC25C,WAAW;IACxDT,UAAU,CAAC,0BAA0B,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAAC45C,eAAe;IAC1EV,UAAU,CAAC,kBAAkB,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAAC65C,kBAAkB;IACrEX,UAAU,CAAC,YAAY,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAAC85C,MAAM;IACnDZ,UAAU,CAAC,UAAU,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAAC+5C,cAAc;IACzDb,UAAU,CAAC,SAAS,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAACg6C,aAAa;IACvDd,UAAU,CAAC,OAAO,CAAC,CAAChxR,EAAE,GAAG+rR,QAAQ;IACjCiF,UAAU,CAAC,gBAAgB,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAACi6C,gBAAgB;IACjEf,UAAU,CAAC,cAAc,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAACk6C,cAAc;IAC7DhB,UAAU,CAAC,sBAAsB,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAACm6C,qBAAqB;IAC5EjB,UAAU,CAAC,uBAAuB,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAACo6C,iBAAiB;IACzElB,UAAU,CAAC,oBAAoB,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAACq6C,sBAAsB;IAC3EnB,UAAU,CAAC,eAAe,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAACs6C,eAAe;IAC/DpB,UAAU,CAAC,gBAAgB,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAACu6C,eAAe;IAChErB,UAAU,CAAC,cAAc,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAACw6C,WAAW;IAC1DtB,UAAU,CAAC,kBAAkB,CAAC,CAAChxR,EAAE,GAAG83O,cAAc,CAACy6C,kBAAkB;IACrEvB,UAAU,CAAC,YAAY,CAAC,CAAChxR,EAAE,GAAG6rR,QAAQ;IAEtC,MAAMtpR,IAAI,GAAG;MACX2qR,eAAe,EAAE;QACfsF,gBAAgB,EAAE16C,cAAc,CAAC06C,gBAAgB;QACjDC,qBAAqB,EAAE36C,cAAc,CAAC26C,qBAAqB;QAC3DC,wBAAwB,EAAE56C,cAAc,CAAC46C,wBAAwB;QACjEC,sBAAsB,EAAE76C,cAAc,CAAC66C,sBAAsB;QAC7DC,oBAAoB,EAAE96C,cAAc,CAAC86C,oBAAoB;QACzDC,aAAa,EAAE/6C,cAAc,CAAC+6C;MAChC,CAAC;MACDxF,UAAU,EAAE;QACVyF,qBAAqB,EAAEh7C,cAAc,CAACg7C,qBAAqB;QAC3DC,QAAQ,EAAEj7C,cAAc,CAACi7C,QAAQ;QACjCC,qBAAqB,EAAEl7C,cAAc,CAACk7C;MACxC,CAAC;MACD1F,wBAAwB,EAAE;QACxB2F,oBAAoB,EAAEn7C,cAAc,CAACm7C,oBAAoB;QACzDC,8BAA8B,EAAEp7C,cAAc,CAACo7C,8BAA8B;QAC7EC,aAAa,EAAEr7C,cAAc,CAACq7C,aAAa;QAC3CC,aAAa,EAAEt7C,cAAc,CAACs7C,aAAa;QAC3CC,YAAY,EAAEv7C,cAAc,CAACu7C,YAAY;QACzCC,YAAY,EAAEx7C,cAAc,CAACw7C,YAAY;QACzCC,kBAAkB,EAAEz7C,cAAc,CAACy7C,kBAAkB;QACrDC,wCAAwC,EAAE17C,cAAc,CAAC07C,wCAAwC;QACjGC,2CAA2C,EAAE37C,cAAc,CAAC27C,2CAA2C;QACvGC,0BAA0B,EAAE57C,cAAc,CAAC47C,0BAA0B;QACrEC,2BAA2B,EAAE77C,cAAc,CAAC67C,2BAA2B;QACvEC,uBAAuB,EAAE97C,cAAc,CAAC87C,uBAAuB;QAC/DC,6BAA6B,EAAE/7C,cAAc,CAAC+7C,6BAA6B;QAC3EC,qBAAqB,EAAEh8C,cAAc,CAACg8C,qBAAqB;QAC3DC,mBAAmB,EAAEj8C,cAAc,CAACi8C,mBAAmB;QACvDC,uBAAuB,EAAEl8C,cAAc,CAACk8C,uBAAuB;QAC/DC,cAAc,EAAEn8C,cAAc,CAACm8C,cAAc;QAC7CC,gBAAgB,EAAEp8C,cAAc,CAACo8C;MACnC,CAAC;MACD1G,gBAAgB,EAAE;QAChB2G,6BAA6B,EAAEr8C,cAAc,CAACq8C,6BAA6B;QAC3EC,wBAAwB,EAAEt8C,cAAc,CAACs8C,wBAAwB;QACjEC,wBAAwB,EAAEv8C,cAAc,CAACu8C,wBAAwB;QACjEC,yBAAyB,EAAEx8C,cAAc,CAACw8C,yBAAyB;QACnEC,0BAA0B,EAAEz8C,cAAc,CAACy8C,0BAA0B;QACrEC,2BAA2B,EAAE18C,cAAc,CAAC08C,2BAA2B;QACvEC,yBAAyB,EAAE38C,cAAc,CAAC28C,yBAAyB;QACnEC,gCAAgC,EAAE58C,cAAc,CAAC48C;MACnD,CAAC;MACDjH,UAAU,EAAE;QACVkH,WAAW,EAAE78C,cAAc,CAAC68C,WAAW;QACvCC,iBAAiB,EAAE98C,cAAc,CAAC88C,iBAAiB;QACnDC,yBAAyB,EAAE/8C,cAAc,CAAC+8C,yBAAyB;QACnEC,iBAAiB,EAAEh9C,cAAc,CAACg9C,iBAAiB;QACnDC,kBAAkB,EAAEj9C,cAAc,CAACi9C,kBAAkB;QACrDC,gBAAgB,EAAEl9C,cAAc,CAACk9C,gBAAgB;QACjDC,sBAAsB,EAAEn9C,cAAc,CAACm9C,sBAAsB;QAC7DC,YAAY,EAAEp9C,cAAc,CAACo9C,YAAY;QACzCC,yBAAyB,EAAEr9C,cAAc,CAACq9C,yBAAyB;QACnEC,kBAAkB,EAAEt9C,cAAc,CAACs9C,kBAAkB;QACrDC,oBAAoB,EAAEv9C,cAAc,CAACu9C,oBAAoB;QACzDC,sBAAsB,EAAEx9C,cAAc,CAACw9C,sBAAsB;QAC7DC,wBAAwB,EAAEz9C,cAAc,CAACy9C,wBAAwB;QACjEC,+BAA+B,EAAE19C,cAAc,CAAC09C,+BAA+B;QAC/EC,qBAAqB,EAAE39C,cAAc,CAAC29C,qBAAqB;QAC3DC,6BAA6B,EAAE59C,cAAc,CAAC49C;MAChD,CAAC;MACDhI,QAAQ,EAAE;QACRiI,iCAAiC,EAAE79C,cAAc,CAAC69C,iCAAiC;QACnFC,mBAAmB,EAAE99C,cAAc,CAAC89C,mBAAmB;QACvDC,iCAAiC,EAAE/9C,cAAc,CAAC+9C,iCAAiC;QACnFC,qCAAqC,EAAEh+C,cAAc,CAACg+C,qCAAqC;QAC3FC,oBAAoB,EAAEj+C,cAAc,CAACi+C,oBAAoB;QACzDC,wBAAwB,EAAEl+C,cAAc,CAACk+C;MAC3C,CAAC;MACDxyG,OAAO,EAAE;QACPyyG,6BAA6B,EAAEn+C,cAAc,CAACm+C,6BAA6B;QAC3EC,kBAAkB,EAAEp+C,cAAc,CAACo+C,kBAAkB;QACrDC,oCAAoC,EAAEr+C,cAAc,CAACq+C,oCAAoC;QACzFC,gCAAgC,EAAEt+C,cAAc,CAACs+C,gCAAgC;QACjFC,uCAAuC,EAAEv+C,cAAc,CAACu+C,uCAAuC;QAC/FC,mBAAmB,EAAEx+C,cAAc,CAACw+C,mBAAmB;QACvDC,uBAAuB,EAAEz+C,cAAc,CAACy+C;MAC1C,CAAC;MACDvpI,KAAK,EAAE;QACLwpI,qCAAqC,EAAE1+C,cAAc,CAAC0+C,qCAAqC;QAC3FC,gCAAgC,EAAE3+C,cAAc,CAAC2+C;MACnD,CAAC;MACD9I,cAAc,EAAE;QACd+I,iBAAiB,EAAE5+C,cAAc,CAAC4+C,iBAAiB;QACnDC,QAAQ,EAAE7+C,cAAc,CAAC6+C,QAAQ;QACjCC,uCAAuC,EAAE9+C,cAAc,CAAC8+C,uCAAuC;QAC/FC,4BAA4B,EAAE/+C,cAAc,CAAC++C,4BAA4B;QACzEC,+BAA+B,EAAEh/C,cAAc,CAACg/C,+BAA+B;QAC/EC,sBAAsB,EAAEj/C,cAAc,CAACi/C,sBAAsB;QAC7DC,aAAa,EAAEl/C,cAAc,CAACk/C,aAAa;QAC3CC,0BAA0B,EAAEn/C,cAAc,CAACm/C;MAC7C,CAAC;MACDrJ,YAAY,EAAE;QACZsJ,gBAAgB,EAAEp/C,cAAc,CAACo/C,gBAAgB;QACjDC,gBAAgB,EAAEr/C,cAAc,CAACq/C,gBAAgB;QACjDC,iBAAiB,EAAEt/C,cAAc,CAACs/C,iBAAiB;QACnDC,2BAA2B,EAAEv/C,cAAc,CAACu/C;MAC9C,CAAC;MACDxJ,oBAAoB,EAAE;QACpByJ,mBAAmB,EAAEx/C,cAAc,CAACw/C,mBAAmB;QACvDC,+BAA+B,EAAEz/C,cAAc,CAACy/C,+BAA+B;QAC/EC,gCAAgC,EAAE1/C,cAAc,CAAC0/C,gCAAgC;QACjFC,8BAA8B,EAAE3/C,cAAc,CAAC2/C;MACjD,CAAC;MACD3J,qBAAqB,EAAE;QACrB4J,gBAAgB,EAAE5/C,cAAc,CAAC4/C,gBAAgB;QACjDC,yBAAyB,EAAE7/C,cAAc,CAAC6/C,yBAAyB;QACnEC,iBAAiB,EAAE9/C,cAAc,CAAC8/C,iBAAiB,GAAG9/C,cAAc,CAAC8/C,iBAAiB,CAACj3Q,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;QACzGk3Q,wBAAwB,EAAE//C,cAAc,CAAC+/C;MAC3C,CAAC;MACD9J,kBAAkB,EAAE;QAClB+J,wBAAwB,EAAEhgD,cAAc,CAACggD,wBAAwB;QACjEC,qBAAqB,EAAEjgD,cAAc,CAACigD,qBAAqB;QAC3DC,yBAAyB,EAAElgD,cAAc,CAACkgD,yBAAyB;QACnEC,yBAAyB,EAAEngD,cAAc,CAACmgD;MAC5C,CAAC;MACDjK,aAAa,EAAE;QACbkK,sBAAsB,EAAEpgD,cAAc,CAACogD,sBAAsB;QAC7DC,sBAAsB,EAAErgD,cAAc,CAACqgD,sBAAsB;QAC7DC,6BAA6B,EAAEtgD,cAAc,CAACsgD,6BAA6B;QAC3EC,yBAAyB,EAAEvgD,cAAc,CAACugD;MAC5C,CAAC;MACDpK,cAAc,EAAE;QACdqK,gBAAgB,EAAExgD,cAAc,CAACwgD,gBAAgB;QACjDC,mBAAmB,EAAEzgD,cAAc,CAACygD;MACtC,CAAC;MACDrK,YAAY,EAAE;QACZsK,aAAa,EAAE1gD,cAAc,CAAC0gD,aAAa;QAC3CC,kBAAkB,EAAE3gD,cAAc,CAAC2gD,kBAAkB;QACrDC,qBAAqB,EAAE5gD,cAAc,CAAC4gD;MACxC,CAAC;MACDvK,gBAAgB,EAAE;QAChBwK,oCAAoC,EAAE7gD,cAAc,CAAC6gD,oCAAoC;QACzFC,qCAAqC,EAAE9gD,cAAc,CAAC8gD;MACxD,CAAC;MACDxK,UAAU,EAAE;QACVyK,oBAAoB,EAAE/gD,cAAc,CAACghD,gBAAgB,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG;QACzEC,8BAA8B,EAAEjhD,cAAc,CAACghD,gBAAgB,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG;QACnFE,8BAA8B,EAAElhD,cAAc,CAACghD,gBAAgB,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG;QACnFG,8BAA8B,EAAEnhD,cAAc,CAACghD,gBAAgB,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG;QACnF;QACAI,uBAAuB,EAAEphD,cAAc,CAACohD,uBAAuB;QAC/DC,2BAA2B,EAAErhD,cAAc,CAACqhD,2BAA2B;QACvEC,sBAAsB,EAAEthD,cAAc,CAACshD,sBAAsB;QAC7DpJ,eAAe,EAAEl4C,cAAc,CAACk4C;MAClC;IACF,CAAC;IAED,KAAKttR,CAAC,IAAIH,IAAI,EAAE;MACd,KAAK8H,EAAE,IAAI9H,IAAI,CAACG,CAAC,CAAC,EAAE;QAClB,MAAM22R,SAAS,GAAG9K,iBAAiB,CAAC92Q,QAAQ,CAAC/U,CAAC,CAAC,CAACuX,YAAY,EAAE5P,EAAE,CAAC;QAEjE,IAAIgvR,SAAS,KAAK,YAAY,EAAE;UAC9B,IAAI92R,IAAI,CAACG,CAAC,CAAC,CAAC2H,EAAE,CAAC,KAAK,GAAG,EAAE;YACvB9H,IAAI,CAACG,CAAC,CAAC,CAAC2H,EAAE,CAAC,GAAG,GAAGA,EAAE,IAAI;UACzB;UAEA,IAAI9H,IAAI,CAACG,CAAC,CAAC,CAAC2H,EAAE,CAAC,KAAK,GAAG,EAAE;YACvB9H,IAAI,CAACG,CAAC,CAAC,CAAC2H,EAAE,CAAC,GAAG,GAAGA,EAAE,KAAK;UAC1B;QACF;QAEA,IAAIgvR,SAAS,KAAK,eAAe,EAAE;UACjC,IAAI92R,IAAI,CAACG,CAAC,CAAC,CAAC2H,EAAE,CAAC,KAAK,EAAE,IAAI9H,IAAI,CAACG,CAAC,CAAC,CAAC2H,EAAE,CAAC,KAAK,GAAG,EAAE;YAC7C9H,IAAI,CAACG,CAAC,CAAC,CAAC2H,EAAE,CAAC,GAAG,KAAK;UACrB;UAEA,IAAI9H,IAAI,CAACG,CAAC,CAAC,CAAC2H,EAAE,CAAC,KAAK,GAAG,EAAE;YACvB9H,IAAI,CAACG,CAAC,CAAC,CAAC2H,EAAE,CAAC,GAAG,IAAI;UACpB;QACF;MACF;IACF;IAEA,OAAO9H,IAAI;EACb;EACA,SAAS+2R,uBAAuBA,CAAA,EAAG;IACjC,MAAMC,0BAA0B,GAAG3N,MAAM,CAACyB,UAAU,CAACyF,qBAAqB,CAAC7hL,QAAQ,CAAC,KAAK,CAAC;IAC1F,MAAMuoL,aAAa,GAAG5N,MAAM,CAACyB,UAAU,CAAC0F,QAAQ,CAAC9hL,QAAQ,CAAC,KAAK,CAAC;IAChE,MAAMwoL,wBAAwB,GAAG7N,MAAM,CAACyB,UAAU,CAAC2F,qBAAqB,CAAC/hL,QAAQ,CAAC,KAAK,CAAC;IAExF,IAAI,CAACsoL,0BAA0B,IAAI,CAACC,aAAa,IAAI,CAACC,wBAAwB,EAAE;MAC9E;IACF;IAEApN,6BAA6B,CAAChwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC5DowR,OAAO,CAAC,kBAAkB,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC7EowR,OAAO,CAAC,kBAAkB,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC7EowR,OAAO,CAAC,0BAA0B,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAErFiwR,QAAQ,CAAC,2BAA2B,CAAC,CAAClwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IACpEiwR,QAAQ,CAAC,kBAAkB,CAAC,CAAClwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC3DiwR,QAAQ,CAAC,kBAAkB,CAAC,CAAClwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC3DiwR,QAAQ,CAAC,0BAA0B,CAAC,CAAClwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAEnE,MAAMo9R,wBAAwB,GAAG9N,MAAM,CAAC4B,gBAAgB,CAAC6G,wBAAwB;IACjF,MAAMsF,aAAa,GAAG/N,MAAM,CAAC4B,gBAAgB,CAAC2G,6BAA6B;IAC3E,MAAMyF,uBAAuB,GAAGhO,MAAM,CAAC5+H,KAAK,CAACwpI,qCAAqC;IAClF,MAAMqD,gBAAgB,GAAGjO,MAAM,CAAC+B,cAAc,CAACsJ,0BAA0B;IACzE,MAAME,gBAAgB,GAAGvL,MAAM,CAACgC,YAAY,CAACuJ,gBAAgB;IAC7D,MAAMC,iBAAiB,GAAGxL,MAAM,CAACgC,YAAY,CAACwJ,iBAAiB;IAC/D,MAAMC,2BAA2B,GAAGzL,MAAM,CAACgC,YAAY,CAACyJ,2BAA2B;IACnF,MAAMyC,4CAA4C,GAAGlO,MAAM,CAAC+B,cAAc,CAACiJ,uCAAuC;IAClH,MAAMmD,iCAAiC,GAAGnO,MAAM,CAAC+B,cAAc,CAACkJ,4BAA4B;IAC5F,MAAMmD,oCAAoC,GAAGpO,MAAM,CAAC+B,cAAc,CAACmJ,+BAA+B;IAClG,MAAMmD,2BAA2B,GAAGrO,MAAM,CAAC+B,cAAc,CAACoJ,sBAAsB;IAEhF,IACE2C,wBAAwB,CAACzoL,QAAQ,CAAC,IAAI,CAAC,IACtCyoL,wBAAwB,CAACzoL,QAAQ,CAAC,KAAK,CAAC,IAAI0oL,aAAa,CAAC1oL,QAAQ,CAAC,IAAI,CAAE,EAC1E;MACAq7K,SAAS,CAACjwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MACxCowR,OAAO,CAAC,YAAY,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MACvEowR,OAAO,CAAC,UAAU,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MACrEowR,OAAO,CAAC,SAAS,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MACpEiwR,QAAQ,CAAC,OAAO,CAAC,CAAClwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MAChDiwR,QAAQ,CAAC,YAAY,CAAC,CAAClwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MACrDiwR,QAAQ,CAAC,UAAU,CAAC,CAAClwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MACnDiwR,QAAQ,CAAC,SAAS,CAAC,CAAClwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IACpD;IAEA,IAAIs9R,uBAAuB,CAAC3oL,QAAQ,CAAC,IAAI,CAAC,EAAE;MAC1Cy7K,OAAO,CAAC,gBAAgB,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MAC3EiwR,QAAQ,CAAC,gBAAgB,CAAC,CAAClwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC3D;IAEA,IAAIu9R,gBAAgB,CAAC5oL,QAAQ,CAAC,IAAI,CAAC,EAAE;MACnCy7K,OAAO,CAAC,cAAc,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MACzEiwR,QAAQ,CAAC,cAAc,CAAC,CAAClwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IACzD;IAEA,IACEu9R,gBAAgB,CAAC5oL,QAAQ,CAAC,IAAI,CAAC,IAC/B26K,MAAM,CAAC+B,cAAc,CAACsJ,0BAA0B,KAAK,EAAE,IACvD2C,uBAAuB,CAAC3oL,QAAQ,CAAC,IAAI,CAAC,IACtC26K,MAAM,CAAC5+H,KAAK,CAACwpI,qCAAqC,KAAK,EAAE,EACzD;MACA9J,OAAO,CAAC,cAAc,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MACzEiwR,QAAQ,CAAC,cAAc,CAAC,CAAClwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IACzD;IAEA,IACG,CAACw9R,4CAA4C,IAC5CC,iCAAiC,IACjCC,oCAAoC,IACpCC,2BAA2B,KAC3BJ,gBAAgB,CAAC5oL,QAAQ,CAAC,KAAK,CAAC,IAClC2oL,uBAAuB,CAAC3oL,QAAQ,CAAC,KAAK,CAAC,IACvCyoL,wBAAwB,CAACzoL,QAAQ,CAAC,KAAK,CAAC,EACxC;MACAy7K,OAAO,CAAC,gBAAgB,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MAC3EiwR,QAAQ,CAAC,gBAAgB,CAAC,CAAClwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;IAC3D;IAEA,IACE66R,gBAAgB,CAAClmL,QAAQ,CAAC,IAAI,CAAC,IAC/BmmL,iBAAiB,CAACnmL,QAAQ,CAAC,IAAI,CAAC,IAChComL,2BAA2B,CAACpmL,QAAQ,CAAC,IAAI,CAAC,EAC1C;MACA,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAACl0G,OAAO,CAAC4zI,IAAI,IAAI;QACvG+7I,OAAO,CAAC/7I,IAAI,CAAC,CAAC52H,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;QAC/DiwR,QAAQ,CAAC57I,IAAI,CAAC,CAACt0I,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MAC/C,CAAC,CAAC;IACJ;EACF;EACA,SAAS49R,qBAAqBA,CAAA,EAAG;IAC/B;IACA;IACA,IAAItO,MAAM,CAACsB,eAAe,CAACwF,wBAAwB,KAAK,OAAO,EAAE;MAC/DhG,OAAO,CAACQ,eAAe,CAACx7J,MAAM,CAAC,wBAAwB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;IAChF;;IAEA;IACA;IACA,IAAIi/J,MAAM,CAAC0B,wBAAwB,CAAC2G,cAAc,CAAChjL,QAAQ,CAAC,KAAK,CAAC,EAAE;MAClEy7K,OAAO,CAAC,0BAA0B,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;IACtF;;IAEA;IACA;IACA,IAAIi/J,MAAM,CAAC4B,gBAAgB,CAAC2G,6BAA6B,CAACljL,QAAQ,CAAC,KAAK,CAAC,EAAE;MACzEy7K,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACpF+/J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;IACtF,CAAC,MAAM;MACL+/J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;IACxF;IACA,IAAIi/J,MAAM,CAAC4B,gBAAgB,CAAC6G,wBAAwB,CAACpjL,QAAQ,CAAC,KAAK,CAAC,EAAE;MACpEy7K,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;IACvF;IACA,IAAIi/J,MAAM,CAAC4B,gBAAgB,CAAC+G,0BAA0B,CAACtjL,QAAQ,CAAC,KAAK,CAAC,EAAE;MACtEy7K,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,6BAA6B,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;MACvF+/J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;IACvF;;IAEA;IACA;IACA,MAAMwtK,kBAAkB,GAAG,CACzBvO,MAAM,CAAC6B,UAAU,CAACkH,WAAW,EAC7B/I,MAAM,CAAC6B,UAAU,CAACoH,yBAAyB,EAC3CjJ,MAAM,CAAC6B,UAAU,CAACqH,iBAAiB,EACnClJ,MAAM,CAAC6B,UAAU,CAACsH,kBAAkB,EACpCnJ,MAAM,CAAC6B,UAAU,CAACuH,gBAAgB,EAClCpJ,MAAM,CAAC6B,UAAU,CAACwH,sBAAsB,EACxCrJ,MAAM,CAAC6B,UAAU,CAACyH,YAAY,CAC/B,CAACzyP,IAAI,CAACrhC,KAAK,IAAIA,KAAK,KAAK,IAAI,CAAC;IAC/B,MAAMg5R,sBAAsB,GAAG,CAC7BxO,MAAM,CAAC6B,UAAU,CAAC2H,kBAAkB,EACpCxJ,MAAM,CAAC6B,UAAU,CAAC4H,oBAAoB,EACtCzJ,MAAM,CAAC6B,UAAU,CAAC6H,sBAAsB,EACxC1J,MAAM,CAAC6B,UAAU,CAAC8H,wBAAwB,EAC1C3J,MAAM,CAAC6B,UAAU,CAAC+H,+BAA+B,EACjD5J,MAAM,CAAC6B,UAAU,CAACgI,qBAAqB,CACxC,CAAChzP,IAAI,CAACrhC,KAAK,IAAIA,KAAK,KAAK,IAAI,CAAC;IAC/B,MAAMi5R,gBAAgB,GAAG,CACvBzO,MAAM,CAAC8B,QAAQ,CAACkI,mBAAmB,EACnChK,MAAM,CAAC8B,QAAQ,CAACmI,iCAAiC,EACjDjK,MAAM,CAAC8B,QAAQ,CAACoI,qCAAqC,EACrDlK,MAAM,CAAC8B,QAAQ,CAACqI,oBAAoB,CACrC,CAACtzP,IAAI,CAACrhC,KAAK,IAAIA,KAAK,KAAK,IAAI,CAAC;IAC/B,MAAMk5R,eAAe,GAAG,CACtB1O,MAAM,CAACpoG,OAAO,CAAC0yG,kBAAkB,EACjCtK,MAAM,CAACpoG,OAAO,CAAC2yG,oCAAoC,EACnDvK,MAAM,CAACpoG,OAAO,CAAC4yG,gCAAgC,EAC/CxK,MAAM,CAACpoG,OAAO,CAAC6yG,uCAAuC,EACtDzK,MAAM,CAACpoG,OAAO,CAAC8yG,mBAAmB,CACnC,CAAC7zP,IAAI,CAACrhC,KAAK,IAAIA,KAAK,KAAK,IAAI,CAAC;IAE/B,IAAI+4R,kBAAkB,EAAE;MACtBzN,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAAC/E,cAAc,CAACi/J,MAAM,CAAC6B,UAAU,CAACkH,WAAW,CAAC;MAEvGjI,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,aAAa,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACjEw4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MAC/Ew4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACvEw4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACxEw4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACtEw4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MAC5Ew4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,cAAc,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;IACpE;IACA,IAAIkmK,sBAAsB,EAAE;MAC1B1N,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACxEw4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,sBAAsB,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MAC1Ew4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MAC5Ew4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MAC9Ew4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,iCAAiC,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACrFw4J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,uBAAuB,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;IAC7E;IACA,IAAImmK,gBAAgB,EAAE;MACpB3N,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAAC/E,cAAc,CAACi/J,MAAM,CAAC8B,QAAQ,CAACkI,mBAAmB,CAAC;MAE1GlJ,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,qBAAqB,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACvEw4J,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,mCAAmC,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACrFw4J,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACzFw4J,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,sBAAsB,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;IAC1E;IACA,IAAIomK,eAAe,EAAE;MACnB5N,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,yBAAyB,CAAC,CAAC/E,cAAc,CAACi/J,MAAM,CAACpoG,OAAO,CAAC0yG,kBAAkB,CAAC;MAEtGxJ,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACrEw4J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,sCAAsC,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACvFw4J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,kCAAkC,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACnFw4J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,yCAAyC,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MAC1Fw4J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,qBAAqB,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;IACxE;IACA,IAAKimK,kBAAkB,IAAIC,sBAAsB,IAAKC,gBAAgB,IAAIC,eAAe,EAAE;MACzF/N,QAAQ,CAAC,OAAO,CAAC,CAAClwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MAChDowR,OAAO,CAAC,OAAO,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MAClEowR,OAAO,CAAC,OAAO,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;IACxF;IAEA,IAAIi/J,MAAM,CAAC6B,UAAU,CAACgI,qBAAqB,EAAE;MAC3C/I,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,+BAA+B,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;IACrF;IACA,IAAIi/J,MAAM,CAAC5+H,KAAK,CAACwpI,qCAAqC,CAACvlL,QAAQ,CAAC,IAAI,CAAC,EAAE;MACrEy7K,OAAO,CAAC,OAAO,CAAC,CAACh7J,MAAM,CAAC,kCAAkC,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;IACnF;;IAEA;IACA;IACA,MAAM4tK,uBAAuB,GAAG,CAC9B3O,MAAM,CAAC+B,cAAc,CAACgJ,QAAQ,EAC9B/K,MAAM,CAAC+B,cAAc,CAACiJ,uCAAuC,EAC7DhL,MAAM,CAAC+B,cAAc,CAACkJ,4BAA4B,EAClDjL,MAAM,CAAC+B,cAAc,CAACmJ,+BAA+B,EACrDlL,MAAM,CAAC+B,cAAc,CAACoJ,sBAAsB,CAC7C,CAACt0P,IAAI,CAACrhC,KAAK,IAAIA,KAAK,KAAK,IAAI,CAAC;IAE/B,IAAIm5R,uBAAuB,EAAE;MAC3B7N,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,eAAe,CAAC,CAAC/E,cAAc,CAACi/J,MAAM,CAAC+B,cAAc,CAACgJ,QAAQ,CAAC;MAChGjK,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAAC/E,cAAc,CAACi/J,MAAM,CAAC+B,cAAc,CAACgJ,QAAQ,CAAC;MAE7GjK,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,UAAU,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MAClEw4J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,yCAAyC,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACjGw4J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,8BAA8B,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACtFw4J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,iCAAiC,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;MACzFw4J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAACwC,cAAc,CAAC,KAAK,CAAC;IAClF;;IAEA;IACA;IACA,IAAI03J,MAAM,CAACkC,qBAAqB,CAAC6J,yBAAyB,CAAC1mL,QAAQ,CAAC,KAAK,CAAC,EAAE;MAC1Ey7K,OAAO,CAAC,uBAAuB,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;IACpF;;IAEA;IACA;IACA,IAAIi/J,MAAM,CAACsC,YAAY,CAACsK,aAAa,CAACvnL,QAAQ,CAAC,KAAK,CAAC,EAAE;MACrDy7K,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;IAC5E;IACA,IAAIi/J,MAAM,CAACsC,YAAY,CAACuK,kBAAkB,CAACxnL,QAAQ,CAAC,KAAK,CAAC,EAAE;MAC1Dy7K,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,uBAAuB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;IAC/E;;IAEA;IACA;IACA,IAAIi/J,MAAM,CAACqC,cAAc,CAACqK,gBAAgB,CAACrnL,QAAQ,CAAC,KAAK,CAAC,EAAE;MAC1Dy7K,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,qBAAqB,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;IAC/E;;IAEA;IACA;IACA,IAAIi/J,MAAM,CAACuC,gBAAgB,CAACwK,oCAAoC,CAAC1nL,QAAQ,CAAC,IAAI,CAAC,EAAE;MAC/Ey7K,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAAC/E,cAAc,CAAC,KAAK,CAAC;IACnG;EACF;;EAEA;EACA;EACA,eAAe6tK,kBAAkBA,CAAA,EAAG;IAClC,MAAMrG,6BAA6B,GACjCzH,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,+BAA+B,CAAC,CAACe,QAAQ,CAAC,CAAC;IAChF,MAAM4hK,wBAAwB,GAAG3H,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAACe,QAAQ,CAAC,CAAC;IAC1G,MAAMgoK,SAAS,GAAGtG,6BAA6B,CAACljL,QAAQ,CAAC,IAAI,CAAC,GAC1D,IAAI,GACJkjL,6BAA6B,CAACljL,QAAQ,CAAC,KAAK,CAAC,IAAIojL,wBAAwB,CAACpjL,QAAQ,CAAC,IAAI,CAAC,GACxF,IAAI,GACJ,KAAK;IAETq7K,SAAS,CAACjwR,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACi6R,SAAS,CAAC;IACpDlO,QAAQ,CAAC,OAAO,CAAC,CAAClwR,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACi6R,SAAS,CAAC;IAE5D,CAAC,YAAY,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC19R,OAAO,CAAC,MAAM4zI,IAAI,IAAI;MAC1D+7I,OAAO,CAAC/7I,IAAI,CAAC,CAAC52H,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACi6R,SAAS,CAAC;MAC3ElO,QAAQ,CAAC57I,IAAI,CAAC,CAACt0I,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACi6R,SAAS,CAAC;MAEzD,IAAI,CAACA,SAAS,EAAE;QACdpM,aAAa,CAAC19I,IAAI,CAAC,CAAC,CAAC;MACvB,CAAC,MAAM;QACLw+I,0BAA0B,CAACx+I,IAAI,CAAC;MAClC;IACF,CAAC,CAAC;IAEF,IAAI,CAAC8pJ,SAAS,EAAE;MACd/kQ,KAAK,CAACu4B,SAAS,CAAC,uBAAuB,EAAE;QACvCysO,UAAU,EAAE,CACV,GAAG1J,UAAU,CAAC,YAAY,CAAC,CAAChxR,EAAE,IAAIgxR,UAAU,CAAC,YAAY,CAAC,CAAC7D,OAAO,EAAE,EACpE,GAAG6D,UAAU,CAAC,UAAU,CAAC,CAAChxR,EAAE,IAAIgxR,UAAU,CAAC,UAAU,CAAC,CAAC7D,OAAO,EAAE,EAChE,GAAG6D,UAAU,CAAC,SAAS,CAAC,CAAChxR,EAAE,IAAIgxR,UAAU,CAAC,SAAS,CAAC,CAAC7D,OAAO,EAAE;MAElE,CAAC,CAAC;IACJ;EACF;EACA,eAAewN,sBAAsBA,CAAA,EAAG;IACtC,MAAMC,qBAAqB,GAAGlO,OAAO,CAAC,OAAO,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAACe,QAAQ,CAAC,CAAC;IACzG,MAAMooK,MAAM,GAAGD,qBAAqB,CAAC3pL,QAAQ,CAAC,IAAI,CAAC;IAEnDy7K,OAAO,CAAC,gBAAgB,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACq6R,MAAM,CAAC;IACpFtO,QAAQ,CAAC,gBAAgB,CAAC,CAAClwR,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACq6R,MAAM,CAAC;IAElE,IAAI,CAACA,MAAM,EAAE;MACXxM,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;MACjC34P,KAAK,CAACu4B,SAAS,CAAC,uBAAuB,EAAE;QACvCysO,UAAU,EAAE,CAAC,GAAG1J,UAAU,CAAC,gBAAgB,CAAC,CAAChxR,EAAE,IAAIgxR,UAAU,CAAC,gBAAgB,CAAC,CAAC7D,OAAO,EAAE;MAC3F,CAAC,CAAC;IACJ;EACF;EACA,eAAe2N,yBAAyBA,CAAA,EAAG;IACzC,MAAM1D,iBAAiB,GAAG1K,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAACe,QAAQ,CAAC,CAAC;IACxF,MAAM0kK,gBAAgB,GAAGzK,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAACe,QAAQ,CAAC,CAAC;IACtF,MAAM4kK,2BAA2B,GAAG3K,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,6BAA6B,CAAC,CAACe,QAAQ,CAAC,CAAC;IAE5G,MAAMsoK,QAAQ,GAAG,CAAC3D,iBAAiB,EAAED,gBAAgB,EAAEE,2BAA2B,CAAC,CAAC50P,IAAI,CAACwrG,MAAM,IAC7FA,MAAM,CAACh9B,QAAQ,CAAC,IAAI,CACtB,CAAC;IAED,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAACl0G,OAAO,CAAC4zI,IAAI,IAAI;MACvG+7I,OAAO,CAAC/7I,IAAI,CAAC,CAAC52H,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACu6R,QAAQ,CAAC;MAC1ExO,QAAQ,CAAC57I,IAAI,CAAC,CAACt0I,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACu6R,QAAQ,CAAC;MAExD,IAAI,CAACA,QAAQ,EAAE;QACb1M,aAAa,CAAC19I,IAAI,CAAC,CAAC,CAAC;MACvB,CAAC,MAAM;QACLw+I,0BAA0B,CAACx+I,IAAI,CAAC;MAClC;IACF,CAAC,CAAC;IAEF,IAAI,CAACoqJ,QAAQ,EAAE;MACbrlQ,KAAK,CAACu4B,SAAS,CAAC,uBAAuB,EAAE;QACvCysO,UAAU,EAAE,CACV,GAAG1J,UAAU,CAAC,sBAAsB,CAAC,CAAChxR,EAAE,IAAIgxR,UAAU,CAAC,sBAAsB,CAAC,CAAC7D,OAAO,EAAE,EACxF,GAAG6D,UAAU,CAAC,uBAAuB,CAAC,CAAChxR,EAAE,IAAIgxR,UAAU,CAAC,uBAAuB,CAAC,CAAC7D,OAAO,EAAE,EAC1F,GAAG6D,UAAU,CAAC,oBAAoB,CAAC,CAAChxR,EAAE,IAAIgxR,UAAU,CAAC,oBAAoB,CAAC,CAAC7D,OAAO,EAAE,EACpF,GAAG6D,UAAU,CAAC,eAAe,CAAC,CAAChxR,EAAE,IAAIgxR,UAAU,CAAC,eAAe,CAAC,CAAC7D,OAAO,EAAE;MAE9E,CAAC,CAAC;IACJ;EACF;EACA,eAAe6N,oBAAoBA,CAAA,EAAG;IACpC,MAAMC,qBAAqB,GAAGvO,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAACe,QAAQ,CAAC,CAAC;IACvG,MAAMyoK,OAAO,GAAGD,qBAAqB,CAAChqL,QAAQ,CAAC,IAAI,CAAC;IAEpDy7K,OAAO,CAAC,cAAc,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAAC06R,OAAO,CAAC;IACnF3O,QAAQ,CAAC,cAAc,CAAC,CAAClwR,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAAC06R,OAAO,CAAC;IAEjE,IAAI,CAACA,OAAO,EAAE;MACZ7M,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;MAC/B34P,KAAK,CAACu4B,SAAS,CAAC,uBAAuB,EAAE;QACvCysO,UAAU,EAAE,CAAC,GAAG1J,UAAU,CAAC,cAAc,CAAC,CAAChxR,EAAE,IAAIgxR,UAAU,CAAC,cAAc,CAAC,CAAC7D,OAAO,EAAE;MACvF,CAAC,CAAC;IACJ;EACF;EACA,eAAegO,sBAAsBA,CAAA,EAAG;IACtC,MAAMC,WAAW,GAAGC,kCAAkC,CAAC,CAAC;IACxD,MAAMC,kBAAkB,GAAG5O,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAACe,QAAQ,CAAC,CAAC;IACpG,MAAM8oK,qBAAqB,GAAG7O,OAAO,CAAC,OAAO,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAACe,QAAQ,CAAC,CAAC;IACzG,MAAM+oK,0BAA0B,GAAG9O,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAACe,QAAQ,CAAC,CAAC;IAC5G,MAAMgpK,eAAe,GAAG/O,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAACe,QAAQ,CAAC,CAAC;IACtF,MAAMipK,mBAAmB,GAAGhP,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,6BAA6B,CAAC,CAACe,QAAQ,CAAC,CAAC;IACpG,MAAMkpK,aAAa,GAAGjP,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAACe,QAAQ,CAAC,CAAC;IAEnF,MAAMmpK,WAAW,GACfH,eAAe,CAACxqL,QAAQ,CAAC,KAAK,CAAC,IAAIyqL,mBAAmB,CAACzqL,QAAQ,CAAC,KAAK,CAAC,IAAI0qL,aAAa,CAAC1qL,QAAQ,CAAC,KAAK,CAAC;IAEzG,MAAM4qL,kBAAkB,GACtBN,qBAAqB,CAACtqL,QAAQ,CAAC,KAAK,CAAC,IACpCqqL,kBAAkB,CAACrqL,QAAQ,CAAC,KAAK,CAAC,IAAImqL,WAAY,IACnDI,0BAA0B,CAACvqL,QAAQ,CAAC,KAAK,CAAC,IAC1C2qL,WAAW;IAEblP,OAAO,CAAC,gBAAgB,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACq7R,kBAAkB,CAAC;IAChGtP,QAAQ,CAAC,gBAAgB,CAAC,CAAClwR,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACq7R,kBAAkB,CAAC;IAC9EnP,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,qBAAqB,CAAC,CAAC/E,cAAc,CAAC,CAACkvK,kBAAkB,CAAC;IAE3F,IAAIA,kBAAkB,EAAE;MACtBnP,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAACC,QAAQ,CAAC,qBAAqB,CAAC;MACpF,MAAMo/J,0BAA0B,CAAC;QAC/B3vR,KAAK,EAAE,KAAK;QACZkE,IAAI,EAAE,kBAAkB;QACxB/E,IAAI,EAAE,OAAO;QACbk0L,QAAQ,EAAE;MACZ,CAAC,CAAC;IACJ,CAAC,MAAM;MACL45F,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;MACjC34P,KAAK,CAACu4B,SAAS,CAAC,uBAAuB,EAAE;QACvCysO,UAAU,EAAE,CAAC,GAAG1J,UAAU,CAAC,gBAAgB,CAAC,CAAChxR,EAAE,IAAIgxR,UAAU,CAAC,gBAAgB,CAAC,CAAC7D,OAAO,EAAE;MAC3F,CAAC,CAAC;IACJ;EACF;EACA,eAAe2O,oBAAoBA,CAAA,EAAG;IACpC,MAAMlB,qBAAqB,GAAGlO,OAAO,CAAC,OAAO,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAACe,QAAQ,CAAC,CAAC;IACzG,MAAMwoK,qBAAqB,GAAGvO,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAACe,QAAQ,CAAC,CAAC;IACvG,MAAMgpK,eAAe,GAAG/O,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAACe,QAAQ,CAAC,CAAC;IACtF,MAAMipK,mBAAmB,GAAGhP,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,6BAA6B,CAAC,CAACe,QAAQ,CAAC,CAAC;IACpG,MAAMkpK,aAAa,GAAGjP,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAACe,QAAQ,CAAC,CAAC;IAEnF,MAAMspK,UAAU,GACdN,eAAe,CAACxqL,QAAQ,CAAC,IAAI,CAAC,IAAIyqL,mBAAmB,CAACzqL,QAAQ,CAAC,IAAI,CAAC,IAAI0qL,aAAa,CAAC1qL,QAAQ,CAAC,IAAI,CAAC;IACtG,MAAM2qL,WAAW,GAAGH,eAAe,CAACxqL,QAAQ,CAAC,KAAK,CAAC,IAAIyqL,mBAAmB,CAACzqL,QAAQ,CAAC,KAAK,CAAC,IAAI0qL,aAAa,CAAC1qL,QAAQ,CAAC,KAAK,CAAC;IAC3H,IAAI+qL,gBAAgB;IAEpB,IAAIJ,WAAW,EAAE;MACfI,gBAAgB,GAAG,KAAK;IAC1B,CAAC,MAAM,IAAID,UAAU,EAAE;MACrBC,gBAAgB,GAAG,IAAI;IACzB,CAAC,MAAM;MACLA,gBAAgB,GAAGpB,qBAAqB,CAAC3pL,QAAQ,CAAC,IAAI,CAAC,IAAIgqL,qBAAqB,CAAChqL,QAAQ,CAAC,IAAI,CAAC;IACjG;IAEAy7K,OAAO,CAAC,cAAc,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACw7R,gBAAgB,CAAC;IAC5FzP,QAAQ,CAAC,cAAc,CAAC,CAAClwR,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACw7R,gBAAgB,CAAC;IAE1E,IAAI,CAACA,gBAAgB,EAAE;MACrB3N,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;MAC/B34P,KAAK,CAACu4B,SAAS,CAAC,uBAAuB,EAAE;QACvCysO,UAAU,EAAE,CAAC,GAAG1J,UAAU,CAAC,cAAc,CAAC,CAAChxR,EAAE,IAAIgxR,UAAU,CAAC,cAAc,CAAC,CAAC7D,OAAO,EAAE;MACvF,CAAC,CAAC;IACJ;EACF;EACA;EACA,SAAS8O,uBAAuBA,CAAA,EAAG;IACjC,OAAO,CACLvP,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,uBAAuB,CAAC,CAACe,QAAQ,CAAC,0BAA0B,CAAC,EAC1Fi6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,UAAU,CAAC,CAACe,QAAQ,CAAC,aAAa,CAAC,EAChEi6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,uBAAuB,CAAC,CAACe,QAAQ,CAAC,0BAA0B,CAAC,CAC3F,CAACoxG,KAAK,CAACr+N,OAAO,IAAIA,OAAO,KAAK,IAAI,CAAC;EACtC;EACA,SAAS61R,kCAAkCA,CAAA,EAAG;IAC5C,OAAO,CACL3O,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,yCAAyC,CAAC,CAACe,QAAQ,CAAC,CAAC,EACtFi6J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,8BAA8B,CAAC,CAACe,QAAQ,CAAC,CAAC,EAC3Ei6J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,iCAAiC,CAAC,CAACe,QAAQ,CAAC,CAAC,EAC9Ei6J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAACe,QAAQ,CAAC,CAAC,CACtE,CAAChwF,IAAI,CAACj9B,OAAO,IAAIA,OAAO,KAAK,IAAI,CAAC;EACrC;EACA,SAAS02R,6BAA6BA,CAAA,EAAG;IACvC,OAAO,CACLxP,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAACe,QAAQ,CAAC,CAAC,EACpEi6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAACe,QAAQ,CAAC,CAAC,EAC5Di6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAACe,QAAQ,CAAC,CAAC,EAC7Di6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAACe,QAAQ,CAAC,CAAC,EAC3Di6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAACe,QAAQ,CAAC,CAAC,EACjEi6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,cAAc,CAAC,CAACe,QAAQ,CAAC,CAAC,CACxD,CAAChwF,IAAI,CAACj9B,OAAO,IAAIA,OAAO,KAAK,IAAI,CAAC;EACrC;EACA,SAAS22R,iCAAiCA,CAAA,EAAG;IAC3C,OAAO,CACLzP,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,sBAAsB,CAAC,CAACe,QAAQ,CAAC,CAAC,EAC/Di6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAACe,QAAQ,CAAC,CAAC,EACjEi6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAACe,QAAQ,CAAC,CAAC,EACnEi6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,iCAAiC,CAAC,CAACe,QAAQ,CAAC,CAAC,EAC1Ei6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,uBAAuB,CAAC,CAACe,QAAQ,CAAC,CAAC,CACjE,CAAChwF,IAAI,CAACj9B,OAAO,IAAIA,OAAO,KAAK,IAAI,CAAC;EACrC;EACA,SAAS42R,4BAA4BA,CAAA,EAAG;IACtC,OAAO,CACL1P,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,mCAAmC,CAAC,CAACe,QAAQ,CAAC,CAAC,EAC1Ei6J,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAACe,QAAQ,CAAC,CAAC,EAC9Ei6J,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,sBAAsB,CAAC,CAACe,QAAQ,CAAC,CAAC,CAC9D,CAAChwF,IAAI,CAACj9B,OAAO,IAAIA,OAAO,KAAK,IAAI,CAAC;EACrC;EACA,SAAS62R,2BAA2BA,CAAA,EAAG;IACrC,OAAO,CACL3P,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,sCAAsC,CAAC,CAACe,QAAQ,CAAC,CAAC,EAC5Ei6J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,kCAAkC,CAAC,CAACe,QAAQ,CAAC,CAAC,EACxEi6J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,yCAAyC,CAAC,CAACe,QAAQ,CAAC,CAAC,EAC/Ei6J,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,qBAAqB,CAAC,CAACe,QAAQ,CAAC,CAAC,CAC5D,CAAChwF,IAAI,CAACj9B,OAAO,IAAIA,OAAO,KAAK,IAAI,CAAC;EACrC;EACA;EACA,eAAe82R,eAAeA,CAAA,EAAG;IAC/B,MAAMC,mBAAmB,GAAGL,6BAA6B,CAAC,CAAC;IAC3D,MAAMM,mBAAmB,GAAGL,iCAAiC,CAAC,CAAC;IAC/D,MAAM9B,gBAAgB,GAAG+B,4BAA4B,CAAC,CAAC;IACvD,MAAM9B,eAAe,GAAG+B,2BAA2B,CAAC,CAAC;IAErD,MAAMI,oBAAoB,GAAIF,mBAAmB,IAAIC,mBAAmB,IAAKnC,gBAAgB,IAAIC,eAAe;IAEhH5N,OAAO,CAAC,OAAO,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACi8R,oBAAoB,CAAC;IACzFlQ,QAAQ,CAAC,OAAO,CAAC,CAAClwR,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACi8R,oBAAoB,CAAC;IACvE/P,OAAO,CAAC,OAAO,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAAC/E,cAAc,CAAC8vK,oBAAoB,KAAK,KAAK,CAAC;IAE/G,IAAI,CAACA,oBAAoB,EAAE;MACzB/P,OAAO,CAAC,OAAO,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;MAC7E+6J,OAAO,CAAC,OAAO,CAAC,CAACh7J,MAAM,CAAC,kCAAkC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;MACxE+6J,OAAO,CAAC,OAAO,CAAC,CAACh7J,MAAM,CAAC,kCAAkC,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;IAClF;IAEAwiK,0BAA0B,CAAC,OAAO,CAAC;IAEnC,IAAI,CAACsN,oBAAoB,EAAE;MACzB/mQ,KAAK,CAACu4B,SAAS,CAAC,uBAAuB,EAAE;QACvCysO,UAAU,EAAE,CAAC,GAAG1J,UAAU,CAAC,OAAO,CAAC,CAAChxR,EAAE,IAAIgxR,UAAU,CAAC,OAAO,CAAC,CAAC7D,OAAO,EAAE;MACzE,CAAC,CAAC;IACJ;EACF;EACA;EACA,eAAeuP,iCAAiCA,CAAA,EAAG;IACjD,MAAMn6R,IAAI,GAAG,CACXmqR,OAAO,CAAC,sBAAsB,CAAC,CAACh7J,MAAM,CAAC,iCAAiC,CAAC,CAACe,QAAQ,CAChF,oCACF,CAAC,EACDi6J,OAAO,CAAC,sBAAsB,CAAC,CAACh7J,MAAM,CAAC,kCAAkC,CAAC,CAACe,QAAQ,CACjF,qCACF,CAAC,EACDi6J,OAAO,CAAC,sBAAsB,CAAC,CAACh7J,MAAM,CAAC,gCAAgC,CAAC,CAACe,QAAQ,CAC/E,mCACF,CAAC,CACF;IAED,MAAMkqK,YAAY,GAAGp6R,IAAI,CAACshO,KAAK,CAACr+N,OAAO,IAAIA,OAAO,KAAK,IAAI,CAAC;IAC5D,MAAM6jD,OAAO,GAAGszO,YAAY,GAAG,wBAAwB,GAAG,uBAAuB;IAEjFjQ,OAAO,CAAC,sBAAsB,CAAC,CAACh7J,MAAM,CAAC,qBAAqB,CAAC,CAACC,QAAQ,CAACtoE,OAAO,CAAC;IAC/E,MAAM0nO,0BAA0B,CAAC;MAC/B3vR,KAAK,EAAEu7R,YAAY,GAAG,KAAK,GAAG,IAAI;MAClCr3R,IAAI,EAAE,qBAAqB;MAC3B/E,IAAI,EAAE,OAAO;MACbk0L,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF,MAAMmoG,yBAAyB,CAAC,CAAC;EACnC;EACA,eAAeC,yBAAyBA,CAAA,EAAG;IACzC,MAAMt6R,IAAI,GAAG,CACXmqR,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAACe,QAAQ,CAAC,qBAAqB,CAAC,EAClFi6J,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAACe,QAAQ,CAAC,sBAAsB,CAAC,EACpFi6J,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,6BAA6B,CAAC,CAACe,QAAQ,CAAC,gCAAgC,CAAC,CACzG;IAED,MAAMkqK,YAAY,GAAGp6R,IAAI,CAACshO,KAAK,CAACr+N,OAAO,IAAIA,OAAO,KAAK,IAAI,CAAC;IAC5D,MAAM6jD,OAAO,GAAGszO,YAAY,GAAG,qBAAqB,GAAG,oBAAoB;IAE3EjQ,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAACC,QAAQ,CAACtoE,OAAO,CAAC;IACpE,MAAM0nO,0BAA0B,CAAC;MAC/B3vR,KAAK,EAAEu7R,YAAY,GAAG,KAAK,GAAG,IAAI;MAClCr3R,IAAI,EAAE,kBAAkB;MACxB/E,IAAI,EAAE,OAAO;MACbk0L,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EACA,eAAeqoG,kCAAkCA,CAAA,EAAG;IAClD,MAAMv6R,IAAI,GAAG,CACXmqR,OAAO,CAAC,uBAAuB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAACe,QAAQ,CAAC,8BAA8B,CAAC,EAC7Gi6J,OAAO,CAAC,uBAAuB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAACe,QAAQ,CAAC,6BAA6B,CAAC,CAC5G;IAED,MAAMkqK,YAAY,GAAGp6R,IAAI,CAACshO,KAAK,CAACr+N,OAAO,IAAIA,OAAO,KAAK,IAAI,CAAC;IAC5D,MAAM6jD,OAAO,GAAGszO,YAAY,GAAG,qBAAqB,GAAG,oBAAoB;IAE3EjQ,OAAO,CAAC,uBAAuB,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAACC,QAAQ,CAACtoE,OAAO,CAAC;IAE7E,MAAM0nO,0BAA0B,CAAC;MAC/B3vR,KAAK,EAAEu7R,YAAY,GAAG,KAAK,GAAG,IAAI;MAClCr3R,IAAI,EAAE,kBAAkB;MACxB/E,IAAI,EAAE,OAAO;MACbk0L,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF,MAAMmoG,yBAAyB,CAAC,CAAC;EACnC;EACA,eAAeG,+BAA+BA,CAAA,EAAG;IAC/C,MAAMx6R,IAAI,GAAG,CACXmqR,OAAO,CAAC,oBAAoB,CAAC,CAACh7J,MAAM,CAAC,uBAAuB,CAAC,CAACe,QAAQ,CAAC,0BAA0B,CAAC,EAClGi6J,OAAO,CAAC,oBAAoB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAACe,QAAQ,CAAC,8BAA8B,CAAC,EAC1Gi6J,OAAO,CAAC,oBAAoB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAACe,QAAQ,CAAC,8BAA8B,CAAC,CAC3G;IAED,MAAMkqK,YAAY,GAAGp6R,IAAI,CAACshO,KAAK,CAACr+N,OAAO,IAAIA,OAAO,KAAK,IAAI,CAAC;IAC5D,MAAM6jD,OAAO,GAAGszO,YAAY,GAAG,6BAA6B,GAAG,4BAA4B;IAE3FjQ,OAAO,CAAC,oBAAoB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAACC,QAAQ,CAACtoE,OAAO,CAAC;IAElF,MAAM0nO,0BAA0B,CAAC;MAC/B3vR,KAAK,EAAEu7R,YAAY,GAAG,KAAK,GAAG,IAAI;MAClCr3R,IAAI,EAAE,0BAA0B;MAChC/E,IAAI,EAAE,OAAO;MACbk0L,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF,MAAMmoG,yBAAyB,CAAC,CAAC;EACnC;EACA,eAAeI,0BAA0BA,CAAA,EAAG;IAC1C,MAAMz6R,IAAI,GAAG,CACXmqR,OAAO,CAAC,eAAe,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAACe,QAAQ,CAAC,2BAA2B,CAAC,EAC/Fi6J,OAAO,CAAC,eAAe,CAAC,CAACh7J,MAAM,CAAC,+BAA+B,CAAC,CAACe,QAAQ,CAAC,kCAAkC,CAAC,EAC7Gi6J,OAAO,CAAC,eAAe,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAACe,QAAQ,CAAC,8BAA8B,CAAC,CACtG;IAED,MAAMkqK,YAAY,GAAGp6R,IAAI,CAACshO,KAAK,CAACr+N,OAAO,IAAIA,OAAO,KAAK,IAAI,CAAC;IAC5D,MAAM6jD,OAAO,GAAGszO,YAAY,GAAG,2BAA2B,GAAG,0BAA0B;IAEvFjQ,OAAO,CAAC,eAAe,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAACC,QAAQ,CAACtoE,OAAO,CAAC;IAE3E,MAAM0nO,0BAA0B,CAAC;MAC/B3vR,KAAK,EAAEu7R,YAAY,GAAG,KAAK,GAAG,IAAI;MAClCr3R,IAAI,EAAE,wBAAwB;MAC9B/E,IAAI,EAAE,OAAO;MACbk0L,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF,MAAMmoG,yBAAyB,CAAC,CAAC;EACnC;EACA,eAAeA,yBAAyBA,CAAA,EAAG;IACzC,IAAIrQ,QAAQ,CAAC,cAAc,CAAC,CAAClwR,SAAS,CAAC8N,QAAQ,CAAC,YAAY,CAAC,EAAE;IAE/D,MAAMgqR,6BAA6B,GACjCzH,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,+BAA+B,CAAC,CAACe,QAAQ,CAAC,CAAC;IAChF,MAAM4hK,wBAAwB,GAAG3H,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAACe,QAAQ,CAAC,CAAC;IAC1G,MAAM8hK,0BAA0B,GAAG7H,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAACe,QAAQ,CAAC,CAAC;IAC9G,MAAMmiK,iBAAiB,GAAGlI,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAACe,QAAQ,CAAC,CAAC;IACtF,MAAMkjK,iCAAiC,GACrCjJ,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,mCAAmC,CAAC,CAACe,QAAQ,CAAC,CAAC;IAC5E,MAAMwjK,6BAA6B,GAAGvJ,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,+BAA+B,CAAC,CAACe,QAAQ,CAAC,CAAC;IAC3G,MAAMgkK,gCAAgC,GAAG/J,OAAO,CAAC,OAAO,CAAC,CAACh7J,MAAM,CAAC,kCAAkC,CAAC,CAACe,QAAQ,CAAC,CAAC;IAC/G,MAAM6kK,mBAAmB,GAAG5K,OAAO,CAAC,sBAAsB,CAAC,CAACh7J,MAAM,CAAC,qBAAqB,CAAC,CAACe,QAAQ,CAAC,CAAC;IACpG,MAAMilK,gBAAgB,GAAGhL,OAAO,CAAC,uBAAuB,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAACe,QAAQ,CAAC,CAAC;IAC/F,MAAMqlK,wBAAwB,GAAGpL,OAAO,CAAC,oBAAoB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAACe,QAAQ,CAAC,CAAC;IAC5G,MAAMylK,sBAAsB,GAAGxL,OAAO,CAAC,eAAe,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAACe,QAAQ,CAAC,CAAC;IAEnG,MAAM46J,UAAU,GAAG,CACjB8G,6BAA6B,CAACljL,QAAQ,CAAC,KAAK,CAAC,IAAIojL,wBAAwB,CAACpjL,QAAQ,CAAC,IAAI,CAAC,EACxFkjL,6BAA6B,CAACljL,QAAQ,CAAC,IAAI,CAAC,IAAIsjL,0BAA0B,CAACtjL,QAAQ,CAAC,KAAK,CAAC,EAC1F2jL,iBAAiB,CAAC3jL,QAAQ,CAAC,KAAK,CAAC,EACjC0kL,iCAAiC,CAAC1kL,QAAQ,CAAC,KAAK,CAAC,EACjDglL,6BAA6B,CAAChlL,QAAQ,CAAC,KAAK,CAAC,IAAIwlL,gCAAgC,CAACxlL,QAAQ,CAAC,KAAK,CAAC,EACjGqmL,mBAAmB,CAACrmL,QAAQ,CAAC,KAAK,CAAC,EACnCymL,gBAAgB,CAACzmL,QAAQ,CAAC,KAAK,CAAC,EAChC6mL,wBAAwB,CAAC7mL,QAAQ,CAAC,KAAK,CAAC,EACxCinL,sBAAsB,CAACjnL,QAAQ,CAAC,KAAK,CAAC,CACvC;IAED,IAAIgsL,QAAQ,GAAG,IAAI;IAEnB,KAAK,MAAMC,SAAS,IAAI7P,UAAU,EAAE;MAClC,IAAI6P,SAAS,EAAE;QACbD,QAAQ,GAAG,KAAK;MAClB;IACF;IAEAvQ,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,eAAe,CAAC,CAACC,QAAQ,CAAC,gBAAgBsrK,QAAQ,EAAE,CAAC;IACpFvQ,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAAC/E,cAAc,CAACswK,QAAQ,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;IAEtG,IAAIA,QAAQ,KAAK,IAAI,EAAE;MACrBvQ,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;MACjE+6J,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,uBAAuB,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;MAC5E+/J,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,uBAAuB,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;MAEpE,MAAMo/J,0BAA0B,CAAC;QAC/B3vR,KAAK,EAAE,KAAK;QACZkE,IAAI,EAAE,oBAAoB;QAC1B/E,IAAI,EAAE,OAAO;QACbk0L,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,MAAMs8F,0BAA0B,CAAC;QAC/B3vR,KAAK,EAAE,EAAE;QACTkE,IAAI,EAAE,uBAAuB;QAC7B/E,IAAI,EAAE,MAAM;QACZk0L,QAAQ,EAAE;MACZ,CAAC,CAAC;IACJ;IAEA,MAAMs8F,0BAA0B,CAAC;MAC/B3vR,KAAK,EAAE67R,QAAQ;MACf33R,IAAI,EAAE,eAAe;MACrB/E,IAAI,EAAE,OAAO;MACbk0L,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF06F,0BAA0B,CAAC,cAAc,CAAC;EAC5C;EACA,eAAegO,2BAA2BA,CAAA,EAAG;IAC3C;EAAA;EAEF;EACA,SAASC,aAAaA,CAAA,EAAG;IACvB,IAAI,CAAChR,oBAAoB,EAAE;IAE3B,MAAMiR,mBAAmB,GAAGpB,uBAAuB,CAAC,CAAC;IAErD,MAAM3D,gBAAgB,GAAG5L,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAACe,QAAQ,CAAC,CAAC;IACxF,MAAM6qK,oBAAoB,GAAG5Q,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,sCAAsC,CAAC,CAACe,QAAQ,CAAC,CAAC;IAClH,MAAM+lK,aAAa,GAAG9L,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,eAAe,CAAC,CAACe,QAAQ,CAAC,CAAC;IAChF,MAAMgmK,kBAAkB,GAAG/L,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,oBAAoB,CAAC,CAACe,QAAQ,CAAC,CAAC;IAE1Fi6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,sBAAsB,CAAC,CAACC,QAAQ,CAAC,KAAK,CAAC;IACpE+6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,gCAAgC,CAAC,CAACC,QAAQ,CAAC,KAAK,CAAC;IAC9E+6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,gCAAgC,CAAC,CAACC,QAAQ,CAAC,KAAK,CAAC;IAC9E+6J,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,gCAAgC,CAAC,CAACC,QAAQ,CAAC,KAAK,CAAC;IAE9E,IAAI,CAAC0rK,mBAAmB,EAAE;MACxB3Q,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,gCAAgC,CAAC,CAACC,QAAQ,CAAC,IAAI,CAAC;MAC7Eo/J,0BAA0B,CAAC;QACzBzrR,IAAI,EAAE,kBAAkB;QACxBmvL,QAAQ,EAAE,iBAAiB;QAC3Bl0L,IAAI,EAAE,QAAQ;QACda,KAAK,EAAE;MACT,CAAC,CAAC;MACF;IACF;IAEA,IAAIk8R,oBAAoB,CAACrsL,QAAQ,CAAC,IAAI,CAAC,EAAE;MACvCy7K,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,gCAAgC,CAAC,CAACC,QAAQ,CAAC,IAAI,CAAC;MAC7Eo/J,0BAA0B,CAAC;QACzBzrR,IAAI,EAAE,kBAAkB;QACxBmvL,QAAQ,EAAE,iBAAiB;QAC3Bl0L,IAAI,EAAE,QAAQ;QACda,KAAK,EAAE;MACT,CAAC,CAAC;MACF;IACF;IAEA,IAAI,CAACmrR,QAAQ,CAAC,gBAAgB,CAAC,CAAClwR,SAAS,CAAC8N,QAAQ,CAAC,YAAY,CAAC,IAAImuR,gBAAgB,CAACrnL,QAAQ,CAAC,KAAK,CAAC,EAAE;MACpGy7K,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,sBAAsB,CAAC,CAACC,QAAQ,CAAC,IAAI,CAAC;MACnEo/J,0BAA0B,CAAC;QACzBzrR,IAAI,EAAE,kBAAkB;QACxBmvL,QAAQ,EAAE,iBAAiB;QAC3Bl0L,IAAI,EAAE,QAAQ;QACda,KAAK,EAAE;MACT,CAAC,CAAC;MACF;IACF;IAEA,IAAI,CAACmrR,QAAQ,CAAC,cAAc,CAAC,CAAClwR,SAAS,CAAC8N,QAAQ,CAAC,YAAY,CAAC,EAAE;MAC9D,IAAIquR,aAAa,CAACvnL,QAAQ,CAAC,KAAK,CAAC,IAAIwnL,kBAAkB,CAACxnL,QAAQ,CAAC,KAAK,CAAC,EAAE;QACvEy7K,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,gCAAgC,CAAC,CAACC,QAAQ,CAAC,IAAI,CAAC;QAC7Eo/J,0BAA0B,CAAC;UACzBzrR,IAAI,EAAE,kBAAkB;UACxBmvL,QAAQ,EAAE,iBAAiB;UAC3Bl0L,IAAI,EAAE,QAAQ;UACda,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACA,IAAIo3R,aAAa,CAACvnL,QAAQ,CAAC,IAAI,CAAC,IAAIwnL,kBAAkB,CAACxnL,QAAQ,CAAC,IAAI,CAAC,EAAE;QACrEy7K,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,gCAAgC,CAAC,CAACC,QAAQ,CAAC,IAAI,CAAC;QAC7Eo/J,0BAA0B,CAAC;UACzBzrR,IAAI,EAAE,kBAAkB;UACxBmvL,QAAQ,EAAE,iBAAiB;UAC3Bl0L,IAAI,EAAE,QAAQ;UACda,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;IACF;EACF;EACA;EACA,MAAMmzH,iBAAiB,GAAG;IACxB;IACAm+J,wBAAwB,EAAE,MAAA39J,KAAA,IAAqB;MAAA,IAAd;QAAE3zH;MAAM,CAAC,GAAA2zH,KAAA;MACxC23J,OAAO,CAAC,iBAAiB,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAAC/E,cAAc,CAACvrH,KAAK,KAAK,OAAO,CAAC;MAE7F,IAAIA,KAAK,KAAK,OAAO,IAAIsrR,OAAO,CAAC,iBAAiB,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAACe,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;QACtGi6J,OAAO,CAAC,iBAAiB,CAAC,CAACh7J,MAAM,CAAC,wBAAwB,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QACxE,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,wBAAwB;UAC9B/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;IACF,CAAC;IACD;IACAw/F,cAAc,EAAE,MAAAsJ,KAAA,IAAqB;MAAA,IAAd;QAAEn8R;MAAM,CAAC,GAAAm8R,KAAA;MAC9B7Q,OAAO,CAAC,0BAA0B,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAAC/E,cAAc,CAACvrH,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;MAE7G,IAAIA,KAAK,KAAK,KAAK,EAAE;QACnBsrR,OAAO,CAAC,0BAA0B,CAAC,CAACh7J,MAAM,CAAC,kBAAkB,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAC3E,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,kBAAkB;UACxB/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;IACF,CAAC;IACD;IACA0/F,6BAA6B,EAAE,MAAAqJ,KAAA,IAAqB;MAAA,IAAd;QAAEp8R;MAAM,CAAC,GAAAo8R,KAAA;MAC7C,MAAMnJ,wBAAwB,GAAG3H,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAACe,QAAQ,CAAC,CAAC;MAC1G,MAAMgrK,gCAAgC,GACpCr8R,KAAK,KAAK,IAAI,GAAG,IAAI,GAAGizR,wBAAwB,CAACpjL,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK;MAChFy7K,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAAC/E,cAAc,CAC7E,CAAC8wK,gCACH,CAAC;MACD,IAAI,CAACA,gCAAgC,EAAE;QACrC/Q,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAE7E,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,4BAA4B;UAClC/E,IAAI,EAAE,OAAO;UACbk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;MAEAi4F,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAAC/E,cAAc,CAACvrH,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;MAC7GsrR,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAAC/E,cAAc,CAACvrH,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;MAE7G,IAAIA,KAAK,KAAK,KAAK,EAAE;QACnBsrR,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAC3E+6J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAC3E+6J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAC5E+6J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;QAEpF,MAAMokK,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,0BAA0B;UAChC/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;QACF,MAAMs8F,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,0BAA0B;UAChC/E,IAAI,EAAE,OAAO;UACbk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;QACF,MAAMs8F,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,2BAA2B;UACjC/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ,CAAC,MAAM;QACLi4F,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,6BAA6B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAC9E+6J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAC5E+6J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,6BAA6B,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;QACtF+/J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;QAEpF,MAAMokK,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,6BAA6B;UACnC/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;QACF,MAAMs8F,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,2BAA2B;UACjC/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;MAEA,MAAM+lG,kBAAkB,CAAC,CAAC;MAC1B,MAAMW,sBAAsB,CAAC,CAAC;MAC9B,MAAMyB,yBAAyB,CAAC,CAAC;IACnC,CAAC;IACDvI,wBAAwB,EAAE,MAAAqJ,KAAA,IAAqB;MAAA,IAAd;QAAEt8R;MAAM,CAAC,GAAAs8R,KAAA;MACxC,MAAMvJ,6BAA6B,GACjCzH,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,+BAA+B,CAAC,CAACe,QAAQ,CAAC,CAAC;MAChF,MAAMgrK,gCAAgC,GAAGtJ,6BAA6B,CAACljL,QAAQ,CAAC,IAAI,CAAC,GACjF,IAAI,GACJ7vG,KAAK,KAAK,IAAI,GACd,IAAI,GACJ,KAAK;MACTsrR,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAAC/E,cAAc,CAC7E,CAAC8wK,gCACH,CAAC;MACD,IAAI,CAACA,gCAAgC,EAAE;QACrC/Q,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAE7E,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,4BAA4B;UAClC/E,IAAI,EAAE,OAAO;UACbk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;MAEAi4F,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAAC/E,cAAc,CAACvrH,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;MAC9GsrR,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAAC/E,cAAc,CAACvrH,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;MAE9G,IAAIA,KAAK,KAAK,KAAK,EAAE;QACnBsrR,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAC5E,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,2BAA2B;UACjC/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ,CAAC,MAAM;QACLi4F,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAC7E,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,IAAI;UACXkE,IAAI,EAAE,4BAA4B;UAClC/E,IAAI,EAAE,OAAO;UACbk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;MAEA,MAAM+lG,kBAAkB,CAAC,CAAC;MAC1B,MAAMW,sBAAsB,CAAC,CAAC;MAC9B,MAAMyB,yBAAyB,CAAC,CAAC;IACnC,CAAC;IACDrI,0BAA0B,EAAE,MAAAoJ,KAAA,IAAqB;MAAA,IAAd;QAAEv8R;MAAM,CAAC,GAAAu8R,KAAA;MAC1CjR,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,6BAA6B,CAAC,CAAC/E,cAAc,CAACvrH,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;MAChHsrR,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAAC/E,cAAc,CAACvrH,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;MAE9G,IAAIA,KAAK,KAAK,KAAK,EAAE;QACnBsrR,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,6BAA6B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAC9E+6J,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAE5E,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,6BAA6B;UACnC/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;QACF,MAAMs8F,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,2BAA2B;UACjC/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;MAEA,MAAMmoG,yBAAyB,CAAC,CAAC;IACnC,CAAC;IACD;IACAgB,OAAO,EAAE,MAAAC,MAAA,IAA2B;MAAA,IAApB;QAAEv4R,IAAI;QAAElE;MAAM,CAAC,GAAAy8R,MAAA;MAC7B,MAAMC,eAAe,GAAGx4R,IAAI,KAAK,aAAa,IAAIlE,KAAK,KAAK,IAAI;MAChE,MAAM28R,QAAQ,GAAGD,eAAe,GAAG,KAAK,GAAG5B,6BAA6B,CAAC,CAAC;MAC1E,MAAM8B,YAAY,GAAG7B,iCAAiC,CAAC,CAAC;MACxD,MAAM8B,wBAAwB,GAAGF,QAAQ,IAAIC,YAAY,GAAG,sBAAsB,GAAG,qBAAqB;MAE1GtR,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAAC/E,cAAc,CAAC,CAACoxK,QAAQ,CAAC;MACnF,IAAI,CAACA,QAAQ,EAAE;QACbrR,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,2BAA2B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QACtE,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,2BAA2B;UACjC/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;MAEAi4F,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAACC,QAAQ,CAACssK,wBAAwB,CAAC;MACpF,MAAMlN,0BAA0B,CAAC;QAC/B3vR,KAAK,EAAE28R,QAAQ,IAAIC,YAAY,GAAG,KAAK,GAAG,IAAI;QAC9C14R,IAAI,EAAE,mBAAmB;QACzB/E,IAAI,EAAE,OAAO;QACbk0L,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,CACE,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,cAAc,CACf,CAAC13L,OAAO,CAAC,MAAMssD,OAAO,IAAI;QACzBqjO,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAAC6qE,cAAc,CAAC6pK,QAAQ,IAAID,eAAe,GAAG,KAAK,GAAG,IAAI,CAAC;QAEhG,IAAIpR,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACopE,QAAQ,CAAC,CAAC,EAAE;UACpD,IAAIppE,OAAO,KAAK,aAAa,IAAI00O,QAAQ,EAAE;YACzCrR,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACsoE,QAAQ,CAAC,KAAK,CAAC;YACrD,MAAMo/J,0BAA0B,CAAC;cAC/B3vR,KAAK,EAAE,KAAK;cACZkE,IAAI,EAAE+jD,OAAO;cACb9oD,IAAI,EAAE,UAAU;cAChBk0L,QAAQ,EAAE;YACZ,CAAC,CAAC;UACJ,CAAC,MAAM,IAAIqpG,eAAe,IAAIz0O,OAAO,KAAK,aAAa,EAAE;YACvDqjO,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACsoE,QAAQ,CAAC,KAAK,CAAC;YACrD,MAAMo/J,0BAA0B,CAAC;cAC/B3vR,KAAK,EAAE,KAAK;cACZkE,IAAI,EAAE+jD,OAAO;cACb9oD,IAAI,EAAE,UAAU;cAChBk0L,QAAQ,EAAE;YACZ,CAAC,CAAC;UACJ;QACF;MACF,CAAC,CAAC;MAEF,MAAMmoG,yBAAyB,CAAC,CAAC;MACjC,MAAMN,eAAe,CAAC,CAAC;IACzB,CAAC;IACD4B,QAAQ,EAAE,MAAAC,MAAA,IAA2B;MAAA,IAApB;QAAE74R,IAAI;QAAElE;MAAM,CAAC,GAAA+8R,MAAA;MAC9B,MAAML,eAAe,GAAGx4R,IAAI,KAAK,oBAAoB,IAAIlE,KAAK,KAAK,IAAI;MACvE,MAAM28R,QAAQ,GAAG7B,6BAA6B,CAAC,CAAC;MAChD,MAAM8B,YAAY,GAAGF,eAAe,GAAG,KAAK,GAAG3B,iCAAiC,CAAC,CAAC;MAClF,MAAM8B,wBAAwB,GAAGF,QAAQ,IAAIC,YAAY,GAAG,sBAAsB,GAAG,qBAAqB;MAE1GtR,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAACC,QAAQ,CAACssK,wBAAwB,CAAC;MACpF,MAAMlN,0BAA0B,CAAC;QAC/B3vR,KAAK,EAAE28R,QAAQ,IAAIC,YAAY,GAAG,KAAK,GAAG,IAAI;QAC9C14R,IAAI,EAAE,mBAAmB;QACzB/E,IAAI,EAAE,OAAO;QACbk0L,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,CACE,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,uBAAuB,CACxB,CAAC13L,OAAO,CAAC,MAAMssD,OAAO,IAAI;QACzBqjO,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAAC6qE,cAAc,CAAC8pK,YAAY,IAAIF,eAAe,GAAG,KAAK,GAAG,IAAI,CAAC;QAEpG,IAAIpR,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACopE,QAAQ,CAAC,CAAC,EAAE;UACpD,IAAIurK,YAAY,IAAI30O,OAAO,KAAK,oBAAoB,EAAE;YACpDqjO,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACsoE,QAAQ,CAAC,KAAK,CAAC;YACrD,MAAMo/J,0BAA0B,CAAC;cAC/B3vR,KAAK,EAAE,KAAK;cACZkE,IAAI,EAAE+jD,OAAO;cACb9oD,IAAI,EAAE,UAAU;cAChBk0L,QAAQ,EAAE;YACZ,CAAC,CAAC;UACJ,CAAC,MAAM,IAAIqpG,eAAe,IAAIz0O,OAAO,KAAK,oBAAoB,EAAE;YAC9DqjO,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACsoE,QAAQ,CAAC,KAAK,CAAC;YACrD,MAAMo/J,0BAA0B,CAAC;cAC/B3vR,KAAK,EAAE,KAAK;cACZkE,IAAI,EAAE+jD,OAAO;cACb9oD,IAAI,EAAE,UAAU;cAChBk0L,QAAQ,EAAE;YACZ,CAAC,CAAC;UACJ;QACF;MACF,CAAC,CAAC;MAEF,MAAMmoG,yBAAyB,CAAC,CAAC;MACjC,MAAMN,eAAe,CAAC,CAAC;IACzB,CAAC;IACD7G,qBAAqB,EAAE,MAAA2I,MAAA,IAA2B;MAAA,IAApB;QAAE94R,IAAI;QAAElE;MAAM,CAAC,GAAAg9R,MAAA;MAC3C1R,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,+BAA+B,CAAC,CAAC/E,cAAc,CAACvrH,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;MAE3G,IAAIA,KAAK,KAAK,IAAI,EAAE;QAClBsrR,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,+BAA+B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAC1E,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,KAAK;UACZkE,IAAI,EAAE,+BAA+B;UACrC/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;IACF,CAAC;IACD;IACA4pG,aAAa,EAAE,MAAAC,MAAA,IAA2B;MAAA,IAApB;QAAEh5R,IAAI;QAAElE;MAAM,CAAC,GAAAk9R,MAAA;MACnC,MAAMR,eAAe,GAAGx4R,IAAI,KAAK,qBAAqB,IAAIlE,KAAK,KAAK,IAAI;MACxE,MAAM28R,QAAQ,GAAGD,eAAe,GAAG,KAAK,GAAG1B,4BAA4B,CAAC,CAAC;MACzE,MAAMmC,2BAA2B,GAAGR,QAAQ,GACxC,sCAAsC,GACtC,qCAAqC;MAEzCrR,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAAC/E,cAAc,CAAC,CAACoxK,QAAQ,CAAC;MAChF,IAAI,CAACA,QAAQ,EAAE;QACbrR,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,0BAA0B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QACnE,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,0BAA0B;UAChC/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;MAEAi4F,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAAC,mCAAmC,CAAC,CAACC,QAAQ,CAAC4sK,2BAA2B,CAAC;MACrG,MAAMxN,0BAA0B,CAAC;QAC/B3vR,KAAK,EAAE28R,QAAQ,GAAG,KAAK,GAAG,IAAI;QAC9Bz4R,IAAI,EAAE,mCAAmC;QACzC/E,IAAI,EAAE,OAAO;QACbk0L,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,CACE,qBAAqB,EACrB,mCAAmC,EACnC,uCAAuC,EACvC,sBAAsB,CACvB,CAAC13L,OAAO,CAAC,MAAMssD,OAAO,IAAI;QACzBqjO,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAAC6qE,cAAc,CAAC6pK,QAAQ,IAAID,eAAe,GAAG,KAAK,GAAG,IAAI,CAAC;QAE9F,IAAIpR,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACopE,QAAQ,CAAC,CAAC,EAAE;UAClD,IAAIsrK,QAAQ,IAAI10O,OAAO,KAAK,qBAAqB,EAAE;YACjDqjO,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACsoE,QAAQ,CAAC,KAAK,CAAC;YACnD,MAAMo/J,0BAA0B,CAAC;cAC/B3vR,KAAK,EAAE,KAAK;cACZkE,IAAI,EAAE+jD,OAAO;cACb9oD,IAAI,EAAE,UAAU;cAChBk0L,QAAQ,EAAE;YACZ,CAAC,CAAC;UACJ,CAAC,MAAM,IAAIqpG,eAAe,IAAIz0O,OAAO,KAAK,qBAAqB,EAAE;YAC/DqjO,OAAO,CAAC,UAAU,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACsoE,QAAQ,CAAC,KAAK,CAAC;YACnD,MAAMo/J,0BAA0B,CAAC;cAC/B3vR,KAAK,EAAE,KAAK;cACZkE,IAAI,EAAE+jD,OAAO;cACb9oD,IAAI,EAAE,UAAU;cAChBk0L,QAAQ,EAAE;YACZ,CAAC,CAAC;UACJ;QACF;MACF,CAAC,CAAC;MAEF,MAAMmoG,yBAAyB,CAAC,CAAC;MACjC,MAAMN,eAAe,CAAC,CAAC;IACzB,CAAC;IACD;IACAkC,YAAY,EAAE,MAAAC,MAAA,IAA2B;MAAA,IAApB;QAAEn5R,IAAI;QAAElE;MAAM,CAAC,GAAAq9R,MAAA;MAClC,MAAMX,eAAe,GAAGx4R,IAAI,KAAK,oBAAoB,IAAIlE,KAAK,KAAK,IAAI;MACvE,MAAM28R,QAAQ,GAAGD,eAAe,GAAG,KAAK,GAAGzB,2BAA2B,CAAC,CAAC;MACxE,MAAMhzO,OAAO,GAAG00O,QAAQ,GAAG,kCAAkC,GAAG,iCAAiC;MAEjGrR,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,yBAAyB,CAAC,CAAC/E,cAAc,CAAC,CAACoxK,QAAQ,CAAC;MAC9E,IAAI,CAACA,QAAQ,EAAE;QACbrR,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,yBAAyB,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QACjE,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,yBAAyB;UAC/B/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;MAEAi4F,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAAC,+BAA+B,CAAC,CAACC,QAAQ,CAACtoE,OAAO,CAAC;MAC5E,MAAM0nO,0BAA0B,CAAC;QAC/B3vR,KAAK,EAAE28R,QAAQ,GAAG,KAAK,GAAG,IAAI;QAC9Bz4R,IAAI,EAAE,+BAA+B;QACrC/E,IAAI,EAAE,OAAO;QACbk0L,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,CACE,oBAAoB,EACpB,sCAAsC,EACtC,kCAAkC,EAClC,yCAAyC,EACzC,qBAAqB,CACtB,CAAC13L,OAAO,CAAC,MAAMssD,OAAO,IAAI;QACzBqjO,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAAC6qE,cAAc,CAAC6pK,QAAQ,IAAID,eAAe,GAAG,KAAK,GAAG,IAAI,CAAC;QAE7F,IAAIpR,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACopE,QAAQ,CAAC,CAAC,EAAE;UACjD,IAAIsrK,QAAQ,IAAI10O,OAAO,KAAK,oBAAoB,EAAE;YAChDqjO,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACsoE,QAAQ,CAAC,KAAK,CAAC;YAClD,MAAMo/J,0BAA0B,CAAC;cAC/B3vR,KAAK,EAAE,KAAK;cACZkE,IAAI,EAAE+jD,OAAO;cACb9oD,IAAI,EAAE,UAAU;cAChBk0L,QAAQ,EAAE;YACZ,CAAC,CAAC;UACJ,CAAC,MAAM,IAAIqpG,eAAe,IAAIz0O,OAAO,KAAK,oBAAoB,EAAE;YAC9DqjO,OAAO,CAAC,SAAS,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACsoE,QAAQ,CAAC,KAAK,CAAC;YAClD,MAAMo/J,0BAA0B,CAAC;cAC/B3vR,KAAK,EAAE,KAAK;cACZkE,IAAI,EAAE+jD,OAAO;cACb9oD,IAAI,EAAE,UAAU;cAChBk0L,QAAQ,EAAE;YACZ,CAAC,CAAC;UACJ;QACF;MACF,CAAC,CAAC;MAEF,MAAMmoG,yBAAyB,CAAC,CAAC;MACjC,MAAMN,eAAe,CAAC,CAAC;IACzB,CAAC;IACD;IACA9F,qCAAqC,EAAE,MAAAkI,MAAA,IAAqB;MAAA,IAAd;QAAEt9R;MAAM,CAAC,GAAAs9R,MAAA;MACrD,MAAMC,wBAAwB,GAAGv9R,KAAK,KAAK,KAAK;MAEhDsrR,OAAO,CAAC,OAAO,CAAC,CAACh7J,MAAM,CAAC,kCAAkC,CAAC,CAAC/E,cAAc,CAACgyK,wBAAwB,CAAC;MAEpG,IAAIA,wBAAwB,EAAE;QAC5BjS,OAAO,CAAC,OAAO,CAAC,CAACh7J,MAAM,CAAC,kCAAkC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAExE,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,kCAAkC;UACxC/E,IAAI,EAAE,OAAO;UACbk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;MAEA,MAAMkmG,sBAAsB,CAAC,CAAC;MAC9B,MAAMQ,sBAAsB,CAAC,CAAC;MAC9B,MAAMW,oBAAoB,CAAC,CAAC;IAC9B,CAAC;IACDrF,gCAAgC,EAAE,MAAAA,CAAA,KAAY;MAC5C,MAAMmG,yBAAyB,CAAC,CAAC;IACnC,CAAC;IACD;IACAgC,IAAI,EAAE,MAAAC,MAAA,IAA2B;MAAA,IAApB;QAAEv5R,IAAI;QAAElE;MAAM,CAAC,GAAAy9R,MAAA;MAC1B,IAAIC,YAAY,GAAG,KAAK;MACxB,IAAIC,aAAa,GAAG1D,kCAAkC,CAAC,CAAC;MAExD,CACE,UAAU,EACV,yCAAyC,EACzC,8BAA8B,EAC9B,iCAAiC,EACjC,wBAAwB,CACzB,CAACt+R,OAAO,CAAC,MAAMssD,OAAO,IAAI;QACzB,MAAM21O,UAAU,GAAGD,aAAa,IAAKz5R,IAAI,KAAK,UAAU,IAAIlE,KAAK,KAAK,IAAK,GAAG,KAAK,GAAG,IAAI;QAC1FsrR,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAAC6qE,cAAc,CAAC8qK,UAAU,CAAC;QAEpE,IAAItS,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACopE,QAAQ,CAAC,CAAC,EAAE;UACxD,IAAIntH,IAAI,KAAK,UAAU,IAAI+jD,OAAO,KAAK,UAAU,EAAE;YACjDqjO,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACsoE,QAAQ,CAAC,KAAK,CAAC;YACzD,MAAMo/J,0BAA0B,CAAC;cAC/B3vR,KAAK,EAAE,KAAK;cACZkE,IAAI,EAAE+jD,OAAO;cACb9oD,IAAI,EAAE,UAAU;cAChBk0L,QAAQ,EAAE;YACZ,CAAC,CAAC;UACJ,CAAC,MAAM,IAAIsqG,aAAa,IAAI11O,OAAO,KAAK,UAAU,EAAE;YAClDy1O,YAAY,GAAG,IAAI;YACnBpS,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAACroE,OAAO,CAAC,CAACsoE,QAAQ,CAAC,KAAK,CAAC;YACzD,MAAMo/J,0BAA0B,CAAC;cAC/B3vR,KAAK,EAAE,KAAK;cACZkE,IAAI,EAAE+jD,OAAO;cACb9oD,IAAI,EAAE,UAAU;cAChBk0L,QAAQ,EAAE;YACZ,CAAC,CAAC;UACJ;QACF;MACF,CAAC,CAAC;MAEFsqG,aAAa,GAAG1D,kCAAkC,CAAC,CAAC;MAEpD3O,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,eAAe,CAAC,CAAC/E,cAAc,CAAC,CAACoyK,aAAa,CAAC;MAChFrS,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAAC/E,cAAc,CAAC,CAACoyK,aAAa,CAAC;MAE7F,MAAMjB,eAAe,GAAGpR,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,UAAU,CAAC,CAACe,QAAQ,CAAC,CAAC;MAE/E,IAAIqrK,eAAe,EAAE;QACnBpR,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,eAAe,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAC9D+6J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAACC,QAAQ,CAAC,8BAA8B,CAAC;QACvG+6J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAACC,QAAQ,CAAC,qBAAqB,CAAC;QAErF,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,IAAI;UACXkE,IAAI,EAAE,4BAA4B;UAClC/E,IAAI,EAAE,OAAO;UACbk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;QACF,MAAMs8F,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,IAAI;UACXkE,IAAI,EAAE,mBAAmB;UACzB/E,IAAI,EAAE,OAAO;UACbk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;QACF,MAAMs8F,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,eAAe;UACrB/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ,CAAC,MAAM,IAAIqqG,YAAY,EAAE;QACvBpS,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,4BAA4B,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAC3E+6J,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QAElE,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,4BAA4B;UAClC/E,IAAI,EAAE,OAAO;UACbk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;QACF,MAAMs8F,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,mBAAmB;UACzB/E,IAAI,EAAE,OAAO;UACbk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;MAEA,MAAMumG,oBAAoB,CAAC,CAAC;MAC5B,MAAMG,sBAAsB,CAAC,CAAC;MAC9B,MAAMW,oBAAoB,CAAC,CAAC;IAC9B,CAAC;IACD7E,0BAA0B,EAAE,MAAAgI,MAAA,IAAqB;MAAA,IAAd;QAAE79R;MAAM,CAAC,GAAA69R,MAAA;MAC1C,MAAMhE,qBAAqB,GAAG75R,KAAK;MACnC,MAAMioD,OAAO,GAAG4xO,qBAAqB,KAAK,KAAK,GAAG,sBAAsB,GAAG,qBAAqB;;MAEhG;MACAvO,OAAO,CAAC,gBAAgB,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAACC,QAAQ,CAACtoE,OAAO,CAAC;MACvE,MAAM0nO,0BAA0B,CAAC;QAC/B3vR,KAAK,EAAE65R,qBAAqB,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI;QACrD31R,IAAI,EAAE,mBAAmB;QACzB/E,IAAI,EAAE,OAAO;QACbk0L,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,MAAMumG,oBAAoB,CAAC,CAAC;MAC5B,MAAMG,sBAAsB,CAAC,CAAC;MAC9B,MAAMW,oBAAoB,CAAC,CAAC;IAC9B,CAAC;IACD;IACA3E,gBAAgB,EAAE,MAAA+H,MAAA,IAAqB;MAAA,IAAd;QAAE99R;MAAM,CAAC,GAAA89R,MAAA;MAChC,MAAM/D,sBAAsB,CAAC,CAAC;MAC9B,MAAMW,oBAAoB,CAAC,CAAC;MAC5B,MAAMhB,yBAAyB,CAAC,CAAC;MACjC,MAAM+B,yBAAyB,CAAC,CAAC;IACnC,CAAC;IACDzF,iBAAiB,EAAE,MAAA+H,MAAA,IAAqB;MAAA,IAAd;QAAE/9R;MAAM,CAAC,GAAA+9R,MAAA;MACjC,MAAMhE,sBAAsB,CAAC,CAAC;MAC9B,MAAMW,oBAAoB,CAAC,CAAC;MAC5B,MAAMhB,yBAAyB,CAAC,CAAC;MACjC,MAAM+B,yBAAyB,CAAC,CAAC;IACnC,CAAC;IACDxF,2BAA2B,EAAE,MAAA+H,MAAA,IAAqB;MAAA,IAAd;QAAEh+R;MAAM,CAAC,GAAAg+R,MAAA;MAC3C,MAAMjE,sBAAsB,CAAC,CAAC;MAC9B,MAAMW,oBAAoB,CAAC,CAAC;MAC5B,MAAMhB,yBAAyB,CAAC,CAAC;MACjC,MAAM+B,yBAAyB,CAAC,CAAC;IACnC,CAAC;IACD;IACAtF,+BAA+B,EAAEmF,iCAAiC;IAClElF,gCAAgC,EAAEkF,iCAAiC;IACnEjF,8BAA8B,EAAEiF,iCAAiC;IACjE;IACA/E,yBAAyB,EAAE,MAAA0H,MAAA,IAAqB;MAAA,IAAd;QAAEj+R;MAAM,CAAC,GAAAi+R,MAAA;MACzC3S,OAAO,CAAC,uBAAuB,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAAC/E,cAAc,CAACvrH,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;MAE3G,IAAIA,KAAK,KAAK,KAAK,EAAE;QACnBsrR,OAAO,CAAC,uBAAuB,CAAC,CAACh7J,MAAM,CAAC,mBAAmB,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QACzE,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,mBAAmB;UACzB/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;MAEA,MAAMqoG,kCAAkC,CAAC,CAAC;IAC5C,CAAC;IACDjF,wBAAwB,EAAEiF,kCAAkC;IAC5D;IACA/E,qBAAqB,EAAEgF,+BAA+B;IACtD/E,yBAAyB,EAAE+E,+BAA+B;IAC1D9E,yBAAyB,EAAE8E,+BAA+B;IAC1D;IACA5E,sBAAsB,EAAE6E,0BAA0B;IAClD5E,6BAA6B,EAAE4E,0BAA0B;IACzD3E,yBAAyB,EAAE2E,0BAA0B;IACrD;IACAvE,kBAAkB,EAAE,MAAA6G,MAAA,IAAqB;MAAA,IAAd;QAAEl+R;MAAM,CAAC,GAAAk+R,MAAA;MAClC5S,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,uBAAuB,CAAC,CAAC/E,cAAc,CAACvrH,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;MAEtG,IAAIA,KAAK,KAAK,KAAK,EAAE;QACnBsrR,OAAO,CAAC,cAAc,CAAC,CAACh7J,MAAM,CAAC,uBAAuB,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QACpE,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,uBAAuB;UAC7B/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;IACF,CAAC;IACD;IACAkkG,oCAAoC,EAAE,MAAA4G,MAAA,IAAqB;MAAA,IAAd;QAAEn+R;MAAM,CAAC,GAAAm+R,MAAA;MACpD7S,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAAC/E,cAAc,CACxFvrH,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,IAC3B,CAAC;MAED,IAAIA,KAAK,KAAK,IAAI,EAAE;QAClBsrR,OAAO,CAAC,kBAAkB,CAAC,CAACh7J,MAAM,CAAC,uCAAuC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;QACxF,MAAMo/J,0BAA0B,CAAC;UAC/B3vR,KAAK,EAAE,EAAE;UACTkE,IAAI,EAAE,uCAAuC;UAC7C/E,IAAI,EAAE,MAAM;UACZk0L,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ;IACF;EACF,CAAC;EACD,MAAM+qG,0BAA0B,GAAG;IACjCnS,UAAU,EAAE,MAAAoS,MAAA,IAA2B;MAAA,IAApB;QAAEn6R,IAAI;QAAElE;MAAM,CAAC,GAAAq+R,MAAA;MAChC,MAAMpC,mBAAmB,GAAGpB,uBAAuB,CAAC,CAAC;MAErD,IAAI,CAACoB,mBAAmB,EAAE;QACxB,IAAIqC,aAAa,GAAG,EAAE;QAEtB,CACE,YAAY,EACZ,UAAU,EACV,SAAS,EACT,OAAO,EACP,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,0BAA0B,EAC1B,kBAAkB,CACnB,CAAC3iS,OAAO,CAAC03L,QAAQ,IAAI;UACpBi4F,OAAO,CAACj4F,QAAQ,CAAC,CAAC16K,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;UAChEgwR,QAAQ,CAAC93F,QAAQ,CAAC,CAACp4L,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;UAC9CmwR,OAAO,CAACj4F,QAAQ,CAAC,CAAC/3L,KAAK,CAAC,CAAC;UACzB6vR,QAAQ,CAAC93F,QAAQ,CAAC,CAACp4L,SAAS,CAACC,MAAM,CAAC,cAAc,CAAC;UACnD,IAAI+xR,aAAa,CAAC55F,QAAQ,CAAC,EAAE;YAC3B45F,aAAa,CAAC55F,QAAQ,CAAC,CAAC,CAAC;UAC3B;UAEA,IAAIu8F,UAAU,CAACv8F,QAAQ,CAAC,CAACz0L,EAAE,EAAE;YAC3B0/R,aAAa,CAAC90R,IAAI,CAAC,GAAGomR,UAAU,CAACv8F,QAAQ,CAAC,CAACz0L,EAAE,IAAIgxR,UAAU,CAACv8F,QAAQ,CAAC,CAAC04F,OAAO,EAAE,CAAC;YAChF6D,UAAU,CAACv8F,QAAQ,CAAC,CAACz0L,EAAE,GAAG,EAAE;UAC9B;QACF,CAAC,CAAC;QAEFqsR,6BAA6B,CAAChwR,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;QACzD+vR,SAAS,CAACjwR,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;QAErCyyR,4BAA4B,CAAC,CAAC,2BAA2B,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC;QAE1E,IAAI0Q,aAAa,CAAC5iS,MAAM,EAAE;UACxB44B,KAAK,CAACu4B,SAAS,CAAC,uBAAuB,EAAE;YAAEysO,UAAU,EAAEgF;UAAc,CAAC,CAAC;UACvE5T,QAAQ,GAAG,EAAE;UACbC,QAAQ,GAAG,EAAE;QACf;QAEA;MACF;MAEAM,6BAA6B,CAAChwR,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MAC5DowR,OAAO,CAAC,kBAAkB,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MAC7EowR,OAAO,CAAC,kBAAkB,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MAC7EowR,OAAO,CAAC,0BAA0B,CAAC,CAAC3yQ,IAAI,CAACpU,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,YAAY,CAAC;MAErF0yR,4BAA4B,CAC1B,CAAC,2BAA2B,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,0BAA0B,CAAC,EACjG,KACF,CAAC;;MAED;MACA,IAAI,CAAClD,QAAQ,EAAE;QACb,MAAMn8J,IAAI,GAAG,MAAMmhK,oBAAoB,CAAC;UACtC9wR,EAAE,EAAE,CAAC;UACLwwR,MAAM,EAAE3E,QAAQ;UAChB4E,YAAY,EAAE,mBAAmB;UACjCrvR,KAAK,EAAE;QACT,CAAC,CAAC;QAEF0qR,QAAQ,GAAGn8J,IAAI,CAAC,CAAC,CAAC,CAACshK,WAAW;MAChC;MACA;MACA,IAAI,CAAClF,QAAQ,IAAID,QAAQ,EAAE;QACzB,MAAMn8J,IAAI,GAAG,MAAMmhK,oBAAoB,CAAC;UACtC9wR,EAAE,EAAE,CAAC;UACLwwR,MAAM,EAAE1E,QAAQ;UAChB2E,YAAY,EAAE,uCAAuC;UACrDrvR,KAAK,EAAE;QACT,CAAC,CAAC;QACF2qR,QAAQ,GAAGp8J,IAAI,CAAC,CAAC,CAAC,CAACshK,WAAW;QAC9BD,UAAU,CAAC,OAAO,CAAC,CAAChxR,EAAE,GAAG+rR,QAAQ;MACnC;IACF;EACF,CAAC;EACD,eAAen3J,YAAYA,CAACz3H,KAAK,EAAE;IACjC,MAAMoD,IAAI,GAAGpD,KAAK,CAACC,MAAM,CAACmD,IAAI;IAC9B,MAAM+E,IAAI,GAAGnI,KAAK,CAACC,MAAM,CAACkI,IAAI;IAC9B,MAAMtF,EAAE,GAAG7C,KAAK,CAACC,MAAM,CAAC4C,EAAE;IAC1B,MAAMy0L,QAAQ,GAAGt3L,KAAK,CAACC,MAAM,CAAC2c,IAAI,CAACzU,IAAI;IACvC,IAAIlE,KAAK,GAAGjE,KAAK,CAACC,MAAM,CAACgE,KAAK;IAC9B,IAAIu+R,eAAe;IAEnB,IAAIp/R,IAAI,KAAK,UAAU,EAAE;MAAA,IAAAq/R,qBAAA;MACvBx+R,KAAK,GAAGjE,KAAK,CAACC,MAAM,CAACiI,OAAO,GAAG,IAAI,GAAG,KAAK;MAC3Cs6R,eAAe,IAAAC,qBAAA,GAAGziS,KAAK,CAACC,MAAM,CAACgrN,OAAO,CAAC,UAAU,CAAC,cAAAw3E,qBAAA,uBAAhCA,qBAAA,CAAkC5/R,EAAE;IACxD;IAEA,MAAM+wR,0BAA0B,CAAC;MAAE3vR,KAAK;MAAEkE,IAAI;MAAE/E,IAAI;MAAEk0L;IAAS,CAAC,CAAC;IAEjE,IAAIlgE,iBAAiB,CAACjvH,IAAI,CAAC,EAAE;MAC3B,MAAMivH,iBAAiB,CAACjvH,IAAI,CAAC,CAAC;QAAElE,KAAK;QAAEkE;MAAK,CAAC,CAAC;IAChD;IAEA,IAAIivH,iBAAiB,CAACorK,eAAe,CAAC,EAAE;MACtC,MAAMprK,iBAAiB,CAACorK,eAAe,CAAC,CAAC;QAAEv+R,KAAK;QAAEkE;MAAK,CAAC,CAAC;IAC3D;IAEA,IAAIk6R,0BAA0B,CAAC/qG,QAAQ,CAAC,EAAE;MACxC,MAAM+qG,0BAA0B,CAAC/qG,QAAQ,CAAC,CAAC;QACzCrzL,KAAK;QACLkE,IAAI;QACJmvL;MACF,CAAC,CAAC;IACJ;IAEA06F,0BAA0B,CAAC16F,QAAQ,CAAC;IACpC66F,yBAAyB,CAAC,CAAC;IAC3B8N,aAAa,CAAC,CAAC;IACf5N,6BAA6B,CAAC,CAAC;EACjC;;EAEA;EACA;EACA,SAAS72J,YAAYA,CAAA,EAAG;IACtBi0J,eAAe,CAACj4Q,OAAO,CAAC,YAAY;MAClCk4Q,cAAc,CAACpwR,IAAI,CAAC,CAAC;MACrB,MAAMgwR,WAAW,CAAC6B,gBAAgB,CAAC,CAAC;IACtC,CAAC,CAAC;IACFxB,aAAa,CAAC/zJ,QAAQ,CAAC,OAAOx2H,IAAI,EAAE8zH,SAAS,KAAK;MAChD,IAAI1G,IAAI,GAAG,MAAMj6F,KAAK,CAACu4B,SAAS,CAAC,qCAAqC,EAAE;QACtE4xO,aAAa,EAAEhU;MACjB,CAAC,CAAC;MACFl8J,IAAI,GAAGA,IAAI,CAACmwK,yCAAyC;MAErD,SAASnlC,4BAA4BA,CAAC70M,GAAG,EAAE;QACzC;QACA,MAAMi6O,eAAe,GAAG34Q,QAAQ,CAACxZ,CAAC,CAACC,OAAO,CAAC6kD,aAAa,CAAC;QACzD,MAAMstO,oBAAoB,GAAGD,eAAe,GAAG,GAAG;;QAElD;QACA,MAAMtrQ,QAAQ,GAAGwwB,WAAW,CAAC,YAAY;UACvC,MAAMg7O,YAAY,GAAG,MAAMllC,mBAAmB,CAACj1M,GAAG,CAAC;UACnD,IAAIm6O,YAAY,EAAE;YAChB13J,aAAa,CAAC9zG,QAAQ,CAAC;YACvB,MAAMyrQ,KAAK,GAAG,MAAMxqQ,KAAK,CAACu4B,SAAS,CAAC,iCAAiC,EAAE;cACrEz+C,MAAM,EAAEjN,IAAI,CAAC,aAAa,CAAC;cAC3BqN,IAAI,EAAErN,IAAI,CAAC,WAAW,CAAC;cACvBgkI,gBAAgB,EAAEzgF,GAAG;cACrB+5O,aAAa,EAAEhU;YACjB,CAAC,CAAC;UACJ;QACF,CAAC,EAAEmU,oBAAoB,CAAC;MAC1B;MAEA,eAAejlC,mBAAmBA,CAACj1M,GAAG,EAAE;QACtC,MAAMvjD,IAAI,GAAG;UACX6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBqwF,gBAAgB,EAAEzgF,GAAG,CAAC,CAAC,CAAC,CAACygF;QAC3B,CAAC;QAED,IAAI;UACF,MAAM55E,QAAQ,GAAG,MAAM/+C,CAAC,CAAC2+C,IAAI,CAAC;YAC5BhsD,IAAI,EAAE,MAAM;YACZoN,GAAG,EAAE,GAAGC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,MAAMh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,IAAIj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,IAAIl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,uBAAuB;YAC3HxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;YAC1BiqD,WAAW,EAAE,iCAAiC;YAC9CE,QAAQ,EAAE;UACZ,CAAC,CAAC;UAEF,OAAOC,QAAQ,CAACwuM,yBAAyB,CAACn1O,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC,CAAC,OAAOzX,KAAK,EAAE;UACdhE,OAAO,CAACgE,KAAK,CAAC,QAAQ,EAAEA,KAAK,CAAC;UAC9B,OAAO,KAAK;QACd;MACF;MAEAosP,4BAA4B,CAAChrI,IAAI,CAAC;MAElCk9J,cAAc,CAAC9hR,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IACF+hR,aAAa,CAAC9zJ,OAAO,CAAC,MAAM;MAC1B6zJ,cAAc,CAAC9hR,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IAEFgiR,eAAe,CAACp4Q,OAAO,CAAC,YAAY;MAClCs4Q,cAAc,CAACxwR,IAAI,CAAC,CAAC;MACrB,MAAMgwR,WAAW,CAAC6B,gBAAgB,CAAC,CAAC;IACtC,CAAC,CAAC;IACFtB,aAAa,CAACj0J,QAAQ,CAAC,OAAOx2H,IAAI,EAAE8zH,SAAS,EAAE+7D,MAAM,KAAK;MACxD,MAAM89F,aAAa,GAAG,MAAMpkK,IAAI,CAACgK,oBAAoB,CAACvzH,IAAI,CAAC,MAAM,CAAC,CAAC;MAEnE,MAAMizL,UAAU,GAAG,MAAMy6F,YAAY,CAACC,aAAa,CAAC;MAEpD,MAAMvB,QAAQ,GAAGj5P,KAAK,CAACyqQ,gBAAgB,CAACjQ,aAAa,CAACn2K,WAAW,EAAE,EAAE,CAAC;MACtEiyK,WAAW,CAACx2F,UAAU,CAAC,GAAG;QACxBx1L,EAAE,EAAEw1L,UAAU;QACd1gL,MAAM,EAAE,CAAC65Q,QAAQ,EAAEuB,aAAa,CAAC3vR,IAAI;MACvC,CAAC;MAEDmuR,oBAAoB,CAAC;QAAEl5F,UAAU;QAAEm5F;MAAS,CAAC,CAAC;MAE9C3B,aAAa,CAACtwR,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;IACFswR,aAAa,CAACh0J,OAAO,CAAC,MAAM;MAC1Bi0J,cAAc,CAACliR,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IAEFq1R,gBAAgB,CAACrnK,QAAQ,CAAC,OAAOx2H,IAAI,EAAE8zH,SAAS,EAAE+7D,MAAM,KAAK;MAC3D,IAAIA,MAAM,EAAE;QACV,MAAMy+F,oBAAoB,CAAC;UACzB7wR,EAAE,EAAEoyL,MAAM;UACVo+F,MAAM,EAAE3E,QAAQ;UAChB4E,YAAY,EAAE,cAAc;UAC5BrvR,KAAK,EAAEmB,IAAI,CAAC89R,eAAe;UAC3B3P,QAAQ,EAAEnuR,IAAI,CAAC+9R;QACjB,CAAC,CAAC;QACFrU,cAAc,CAAC75F,MAAM,CAAC,CAACt9K,MAAM,GAAG,CAACvS,IAAI,CAAC89R,eAAe,EAAE99R,IAAI,CAAC+9R,uBAAuB,CAAC;MACtF,CAAC,MAAM;QACL,MAAM3wK,IAAI,GAAG,MAAMmhK,oBAAoB,CAAC;UACtC9wR,EAAE,EAAE,CAAC;UACLwwR,MAAM,EAAE3E,QAAQ;UAChB4E,YAAY,EAAE,cAAc;UAC5BrvR,KAAK,EAAEmB,IAAI,CAAC89R,eAAe;UAC3B3P,QAAQ,EAAEnuR,IAAI,CAAC+9R;QACjB,CAAC,CAAC;QACF,MAAMC,aAAa,GAAG5wK,IAAI,CAAC,CAAC,CAAC,CAACshK,WAAW;QAEzChF,cAAc,CAACsU,aAAa,CAAC,GAAG;UAC9BvgS,EAAE,EAAEugS,aAAa;UACjBzrR,MAAM,EAAE,CAACvS,IAAI,CAAC89R,eAAe,EAAE99R,IAAI,CAAC+9R,uBAAuB;QAC7D,CAAC;MACH;;MAEA;MACAF,gBAAgB,CAAC1jS,KAAK,CAAC,CAAC;;MAExB;MACAiwR,iBAAiB,CAAC/vR,QAAQ,CAAC0hB,MAAM,CAACxJ,MAAM,CAACm3Q,cAAc,CAAC,CAAC;MAEzDM,QAAQ,CAAC,cAAc,CAAC,CAAClwR,SAAS,CAACmE,MAAM,CAAC,cAAc,EAAE8d,MAAM,CAACxJ,MAAM,CAACm3Q,cAAc,CAAC,CAACnvR,MAAM,CAAC;IACjG,CAAC,CAAC;IACF6vR,iBAAiB,CAAC6T,UAAU,CAAChrR,KAAK,IAAI;MACpC,IAAI,CAAC5H,CAAC,CAACC,OAAO,CAACqxC,iBAAiB,EAAE;MAElC,MAAM5pC,OAAO,GAAG22Q,cAAc,CAACz2Q,KAAK,CAAC;MACrC4qR,gBAAgB,CAACxjS,QAAQ,CACvB;QACEyjS,eAAe,EAAE/qR,OAAO,CAACR,MAAM,CAAC,CAAC,CAAC;QAClCwrR,uBAAuB,EAAEhrR,OAAO,CAACR,MAAM,CAAC,CAAC;MAC3C,CAAC,EACDU,KACF,CAAC;IACH,CAAC,CAAC;IACFm3Q,iBAAiB,CAAC8T,WAAW,CAAC,OAAOntR,GAAG,EAAEkC,KAAK,KAAK;MAClD,IAAI,CAAC5H,CAAC,CAACC,OAAO,CAACqxC,iBAAiB,EAAE;MAElC,MAAMxpB,KAAK,CAACu4B,SAAS,CAAC,8BAA8B,EAAE;QACpDsyO,aAAa,EAAEn5Q,QAAQ,CAAC5R,KAAK;MAC/B,CAAC,CAAC;MAEF,OAAOy2Q,cAAc,CAACz2Q,KAAK,CAAC;MAE5Bm3Q,iBAAiB,CAAC/vR,QAAQ,CAAC0hB,MAAM,CAACxJ,MAAM,CAACm3Q,cAAc,CAAC,CAAC;MAEzDM,QAAQ,CAAC,cAAc,CAAC,CAAClwR,SAAS,CAACmE,MAAM,CAAC,cAAc,EAAE8d,MAAM,CAACxJ,MAAM,CAACm3Q,cAAc,CAAC,CAACnvR,MAAM,CAAC;IACjG,CAAC,CAAC;IAEF+/L,UAAU,CAACloL,OAAO,CAAC,YAAY;MAC7B,MAAM83Q,WAAW,CAAC6B,gBAAgB,CAAC,CAAC;MACpC9C,mBAAmB,CAAC9rR,IAAI,CAAC;QAAE+rR,YAAY;QAAEC,UAAU;QAAEv4K;MAAiB,CAAC,CAAC;IAC1E,CAAC,CAAC;EACJ;EACA,SAASoB,QAAQA,CAAA,EAAG;IAClB;IACAgG,YAAY,CAAC2e,QAAQ,CAACuyJ,YAAY,CAAC;IACnC,MAAMiV,iBAAiB,GAAG50K,IAAI,CAAC/rH,aAAa,CAAC,KAAK,CAAC;IACnD88L,UAAU,CAAC3jE,QAAQ,CAACwnK,iBAAiB,CAAC;IACtC9T,eAAe,CAAC1zJ,QAAQ,CAACwnK,iBAAiB,CAAC;IAC3C3T,eAAe,CAAC7zJ,QAAQ,CAACwnK,iBAAiB,CAAC;IAC3CjV,YAAY,CAACxuR,WAAW,CAACyjS,iBAAiB,CAAC;IAE3C5T,aAAa,CAAC5zJ,QAAQ,CAAC2zJ,cAAc,CAACvoJ,MAAM,CAAC;IAC7CuoJ,cAAc,CAAC3zJ,QAAQ,CAACpN,IAAI,CAACn8G,YAAY,CAAC;IAE1C68Q,aAAa,GAAG1gK,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAU,CAAC,CAAC;IAC/DmmL,cAAc,CAAC3oJ,MAAM,CAACrnI,WAAW,CAACuvR,aAAa,CAAC;IAChDQ,aAAa,CAAC9zJ,QAAQ,CAAC+zJ,cAAc,CAAC3oJ,MAAM,CAAC;IAC7C2oJ,cAAc,CAAC/zJ,QAAQ,CAACpN,IAAI,CAACn8G,YAAY,CAAC;;IAE1C;IACA,KAAKiI,OAAO,IAAIH,QAAQ,EAAE;MACxB,MAAMkpR,qCAAqC,GAAG,CAC5C,OAAO,EACP,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,CAChB,CAAC1vL,QAAQ,CAACr5F,OAAO,CAAC;MACnB,MAAMgpR,iBAAiB,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC3vL,QAAQ,CAACr5F,OAAO,CAAC;;MAE1F;MACA,MAAMlW,SAAS,GAAGi/R,qCAAqC,IAAIC,iBAAiB,GAAG,YAAY,GAAG,SAAS;MACvG,MAAMC,UAAU,GAAG/0K,IAAI,CAAC/rH,aAAa,CAAC,GAAG,EAAE;QAAE+mG,KAAK,EAAE,CAACplG,SAAS,EAAEkW,OAAO;MAAE,CAAC,CAAC;MAC3E,MAAMkpR,cAAc,GAAGh1K,IAAI,CAAC/rH,aAAa,CAAC,GAAG,EAAE;QAAEssB,IAAI,EAAE,IAAIzU,OAAO,EAAE;QAAEzX,IAAI,EAAEsX,QAAQ,CAACG,OAAO,CAAC,CAACtS;MAAK,CAAC,CAAC;MACrG,MAAMy7R,UAAU,GAAGjS,IAAI,CAACC,OAAO,CAAC,OAAO,CAAC;MACxC8R,UAAU,CAAC5jS,WAAW,CAAC6jS,cAAc,CAAC;MACtCD,UAAU,CAAC5jS,WAAW,CAAC8jS,UAAU,CAAC;MAClCj3C,eAAe,CAAC7sP,WAAW,CAAC4jS,UAAU,CAAC;MACvCA,UAAU,CAACxkS,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACiX,QAAQ,CAACG,OAAO,CAAC,CAACgtE,OAAO,CAAC;MACrE2nM,QAAQ,CAAC30Q,OAAO,CAAC,GAAGipR,UAAU;;MAE9B;MACA,MAAMG,WAAW,GAAGl1K,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QAAEC,EAAE,EAAE4X,OAAO;QAAEkvF,KAAK,EAAE;MAAS,CAAC,CAAC;MAC/E,MAAMm6L,aAAa,GAAGn1K,IAAI,CAAC/rH,aAAa,CAAC,IAAI,EAAE;QAC7CI,IAAI,EAAEyX,OAAO,KAAK,cAAc,GAAG,eAAe,GAAG8d,KAAK,CAACwrQ,uBAAuB,CAACtpR,OAAO;MAC5F,CAAC,CAAC;MACFopR,WAAW,CAAC/jS,WAAW,CAACgkS,aAAa,CAAC;MACtCD,WAAW,CAAC3kS,SAAS,CAACmE,MAAM,CAAC,YAAY,EAAE,CAACiX,QAAQ,CAACG,OAAO,CAAC,CAACgtE,OAAO,CAAC;MAEtE,IAAIhtE,OAAO,KAAK,cAAc,EAAE;QAC9B+0Q,iBAAiB,CAACzzJ,QAAQ,CAAC8nK,WAAW,CAAC;QACvCZ,gBAAgB,CAAClnK,QAAQ,CAAC8nK,WAAW,CAAC;QACtC53C,cAAc,CAACnsP,WAAW,CAAC+jS,WAAW,CAAC;QACvC;MACF;MAEA,IAAIppR,OAAO,KAAK,2BAA2B,EAAE;QAC3Cy0Q,6BAA6B,GAAG2U,WAAW;QAC3CH,UAAU,CAACxkS,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACpC;MACA,IAAIqb,OAAO,KAAK,OAAO,EAAE;QACvB00Q,SAAS,GAAG0U,WAAW;QACvBH,UAAU,CAACxkS,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACpC;MAEA,IAAIkb,QAAQ,CAACG,OAAO,CAAC,CAACqC,YAAY,EAAE;QAClCyyQ,OAAO,CAAC90Q,OAAO,CAAC,GAAG,IAAI2hH,IAAI,CAAC;UAC1B4nK,cAAc,EAAE,IAAI;UACpB3nK,MAAM,EAAE/hH,QAAQ,CAACG,OAAO,CAAC,CAACqC,YAAY;UACtCw6K,QAAQ,EAAE78K;QACZ,CAAC,CAAC;QAEF80Q,OAAO,CAAC90Q,OAAO,CAAC,CAACshH,QAAQ,CAAC8nK,WAAW,CAAC;QACtCtU,OAAO,CAAC90Q,OAAO,CAAC,CAACghH,QAAQ,CAAChE,YAAY,CAAC;MACzC;MAEA,IAAI+rK,qCAAqC,EAAE;QACzCtU,6BAA6B,CAACpvR,WAAW,CAAC+jS,WAAW,CAAC;MACxD,CAAC,MAAM,IAAIJ,iBAAiB,EAAE;QAC5BtU,SAAS,CAACrvR,WAAW,CAAC+jS,WAAW,CAAC;MACpC,CAAC,MAAM;QACL53C,cAAc,CAACnsP,WAAW,CAAC+jS,WAAW,CAAC;MACzC;IACF;EACF;EACA,SAAS7nK,gBAAgBA,CAAA,EAAG;IAC1BuyJ,UAAU,CAAC/uR,SAAS,GAAG,EAAE;IACzB8uR,YAAY,CAAC9uR,SAAS,GAAG,EAAE;IAE3BmtP,eAAe,GAAGh+H,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAA6B,CAAC,CAAC;IACpFsiJ,cAAc,GAAGt9H,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAwB,CAAC,CAAC;IAE9E4kL,UAAU,CAACzuR,WAAW,CAAC6sP,eAAe,CAAC;IACvC4hC,UAAU,CAACzuR,WAAW,CAACmsP,cAAc,CAAC;EACxC;;EAEA;EACA;EACA,SAASg4C,YAAYA,CAAA,EAAG;IACtB,OAAO;MACLlU,eAAe,EAAE;QAAEC,OAAO,EAAE;MAA+B,CAAC;MAC5DE,UAAU,EAAE;QAAEF,OAAO,EAAE;MAAiB,CAAC;MACzCK,gBAAgB,EAAE;QAAEL,OAAO,EAAE;MAAyB,CAAC;MACvDY,kBAAkB,EAAE;QAAEZ,OAAO,EAAE;MAA8B,CAAC;MAC9DW,qBAAqB,EAAE;QAAEX,OAAO,EAAE;MAAgC,CAAC;MACnEG,wBAAwB,EAAE;QAAEH,OAAO,EAAE;MAAsB,CAAC;MAC5De,YAAY,EAAE;QAAEf,OAAO,EAAE;MAAkB,CAAC;MAC5Ca,aAAa,EAAE;QAAEb,OAAO,EAAE;MAAsB,CAAC;MACjDS,YAAY,EAAE;QAAET,OAAO,EAAE;MAAqB,CAAC;MAC/CU,oBAAoB,EAAE;QAAEV,OAAO,EAAE;MAA2B,CAAC;MAC7Dc,cAAc,EAAE;QAAEd,OAAO,EAAE;MAAsB,CAAC;MAClDQ,cAAc,EAAE;QAAER,OAAO,EAAE;MAAuB,CAAC;MACnDgB,gBAAgB,EAAE;QAAEhB,OAAO,EAAE;MAAyB,CAAC;MACvDM,UAAU,EAAE;QAAEN,OAAO,EAAE;MAAY,CAAC;MACpCO,QAAQ,EAAE;QAAEP,OAAO,EAAE;MAAqB,CAAC;MAC3C3pG,OAAO,EAAE;QAAE2pG,OAAO,EAAE;MAAoB,CAAC;MACzCngI,KAAK,EAAE;QAAEmgI,OAAO,EAAE;MAAY,CAAC;MAC/BiB,UAAU,EAAE;QAAEjB,OAAO,EAAE;MAA+B;IACxD,CAAC;EACH;EACA,SAAS/zJ,cAAcA,CAAA,EAAG;IACxB;IACAuzJ,iBAAiB,GAAG,IAAI5lJ,KAAK,CAAC;MAC5Bs6J,cAAc,EAAE,IAAI;MACpBC,WAAW,EAAE,IAAI;MACjBt6J,QAAQ,EAAE,CACR;QACE7mI,IAAI,EAAE,qBAAqB;QAC3BI,IAAI,EAAE;MACR,CAAC,EACD;QACEJ,IAAI,EAAE,4BAA4B;QAClCI,IAAI,EAAE;MACR,CAAC;IAEL,CAAC,CAAC;IACF6/R,gBAAgB,GAAG,IAAI7mK,IAAI,CAAC;MAC1BC,MAAM,EAAE,CACN;QACEj5H,IAAI,EAAE,MAAM;QACZoB,KAAK,EAAE,qBAAqB;QAC5B3B,EAAE,EAAE;QACJ;MACF,CAAC,EACD;QACEO,IAAI,EAAE,MAAM;QACZoB,KAAK,EAAE,4BAA4B;QACnC3B,EAAE,EAAE;QACJ;MACF,CAAC;IAEL,CAAC,CAAC;;IAEF;IACA4sR,eAAe,GAAG,IAAI9pJ,MAAM,CAAC;MAC3B3iI,IAAI,EAAE,aAAa;MACnBG,KAAK,EAAE,SAAS;MAChBw5H,SAAS,EAAE,WAAW;MACtBtlH,QAAQ,EAAE;IACZ,CAAC,CAAC;IACFs4Q,aAAa,GAAG,IAAIvzJ,IAAI,CAAC;MACvBC,MAAM,EAAE,CACN;QACEj5H,IAAI,EAAE,MAAM;QACZoB,KAAK,EAAE,cAAc;QACrB3B,EAAE,EAAE,aAAa;QACjBoB,KAAK,EAAE;MACT,CAAC,EACD;QACEb,IAAI,EAAE,MAAM;QACZoB,KAAK,EAAE,YAAY;QACnB3B,EAAE,EAAE,WAAW;QACfoB,KAAK,EAAE,+BAA+B+xG,gBAAgB,CAACxK,SAAS,IAAIwK,gBAAgB,CAACosJ,UAAU,IAAIpsJ,gBAAgB,CAACvK,QAAQ;MAC9H,CAAC;IAEL,CAAC,CAAC;IACFikL,cAAc,GAAG,IAAIpoJ,MAAM,CAAC;MAAE/iI,SAAS,EAAE;IAAe,CAAC,CAAC;;IAE1D;IACAqrR,eAAe,GAAG,IAAIjqJ,MAAM,CAAC;MAC3B3iI,IAAI,EAAE,uBAAuB;MAC7BG,KAAK,EAAE,SAAS;MAChBw5H,SAAS,EAAE,WAAW;MACtBtlH,QAAQ,EAAE,CAAC5G,CAAC,CAACC,OAAO,CAACqxC;IACvB,CAAC,CAAC;IACF8tO,aAAa,GAAG,IAAIzzJ,IAAI,CAAC;MACvBC,MAAM,EAAE,CACN;QAAEj5H,IAAI,EAAE,MAAM;QAAEP,EAAE,EAAE,MAAM;QAAE2B,KAAK,EAAE;MAAkB,CAAC,EACtD;QAAEpB,IAAI,EAAE,UAAU;QAAEP,EAAE,EAAE,OAAO;QAAE2B,KAAK,EAAE;MAAoB,CAAC;IAEjE,CAAC,CAAC;IACFsrR,cAAc,GAAG,IAAIxoJ,MAAM,CAAC;MAAE/iI,SAAS,EAAE;IAAkB,CAAC,CAAC;;IAE7D;IACAm7L,UAAU,GAAG,IAAI/5D,MAAM,CAAC;MACtB3iI,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,SAAS;MAChBw5H,SAAS,EAAE;IACb,CAAC,CAAC;;IAEF;IACAvf,YAAY,GAAG,IAAIgnL,UAAU,CAAC;MAC5Bl/O,UAAU,EAAE8wD,gBAAgB,CAACnzG,EAAE;MAC/B2oG,SAAS,EAAEwK,gBAAgB,CAACxK,SAAS;MACrC42J,UAAU,EAAEpsJ,gBAAgB,CAACosJ,UAAU;MACvC32J,QAAQ,EAAEuK,gBAAgB,CAACvK;IAC7B,CAAC,CAAC;;IAEF;IACA6jL,WAAW,GAAG,IAAI/2P,KAAK,CAAC8rQ,UAAU,CAAC,8BAA8B,EAAEtV,YAAY,EAAEuV,SAAS,IAAI,CAAC,CAAC,CAAC;EACnG;EAEA,eAAe/hS,IAAIA,CAAC4D,IAAI,EAAE;IACxBwoR,QAAQ,GAAG,EAAE;IACbC,QAAQ,GAAG,EAAE;IACbW,OAAO,GAAG,CAAC,CAAC;IACZH,QAAQ,GAAG,CAAC,CAAC;IACbP,WAAW,GAAG,EAAE;IAChBC,cAAc,GAAG,CAAC,CAAC;IACnB+E,UAAU,GAAGoQ,YAAY,CAAC,CAAC;IAC3BxV,MAAM,GAAGuF,gBAAgB,CAAC7tR,IAAI,CAACsoR,MAAM,CAAC;IACtCz4K,gBAAgB,GAAG7vG,IAAI,CAAC6vG,gBAAgB;IACxCs4K,YAAY,GAAGnoR,IAAI,CAACmoR,YAAY;IAChCC,UAAU,GAAGpoR,IAAI,CAACooR,UAAU;IAE5BvyJ,gBAAgB,CAAC,CAAC;IAClBC,cAAc,CAAC,CAAC;IAChB7kB,QAAQ,CAAC,CAAC;IACVokB,YAAY,CAAC,CAAC;IAEd,MAAMk3J,cAAc,GAAG,MAAMD,iBAAiB,CAAC,CAAC;IAEhD,IAAI,CAAChE,MAAM,EAAE;MACX,MAAMj8J,IAAI,GAAG,MAAM4gK,8BAA8B,CAACp9K,gBAAgB,CAACnzG,EAAE,CAAC;MACtE6rR,QAAQ,GAAGl8J,IAAI,CAAC,CAAC,CAAC,CAACshK,WAAW;MAC9BD,UAAU,CAAC,iBAAiB,CAAC,CAAChxR,EAAE,GAAG6rR,QAAQ;MAC3CmF,UAAU,CAAC,YAAY,CAAC,CAAChxR,EAAE,GAAG6rR,QAAQ;MACtCa,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,iBAAiB,CAAC,CAAC90H,QAAQ,CAACizR,cAAc,CAAC;MAExE;IACF;IAEAlE,eAAe,GAAG,KAAK;IACvB2N,uBAAuB,CAAC,CAAC;IACzBY,qBAAqB,CAAC,CAAC;IAEvB,KAAKtiR,OAAO,IAAIg0Q,MAAM,EAAE;MACtBc,OAAO,CAAC90Q,OAAO,CAAC,CAAChb,QAAQ,CAACgvR,MAAM,CAACh0Q,OAAO,CAAC,CAAC;MAC1Cu3Q,0BAA0B,CAACv3Q,OAAO,CAAC;MACnC,IAAI,CAAChK,CAAC,CAACC,OAAO,CAACqxC,iBAAiB,EAAE;QAChCwtO,OAAO,CAAC90Q,OAAO,CAAC,CAAC8gH,iBAAiB,CAAC,IAAI,CAAC;MAC1C;IACF;IAEA,IAAI,CAAC9qH,CAAC,CAACC,OAAO,CAACqxC,iBAAiB,EAAE;MAChCkhP,gBAAgB,CAAC1nK,iBAAiB,CAAC,IAAI,CAAC;IAC1C;IAEAi0J,iBAAiB,CAAC/vR,QAAQ,CAAC0hB,MAAM,CAACxJ,MAAM,CAACm3Q,cAAc,CAAC,CAAC;IAEzDM,QAAQ,CAAC,cAAc,CAAC,CAAClwR,SAAS,CAACmE,MAAM,CAAC,cAAc,EAAE8d,MAAM,CAACxJ,MAAM,CAACm3Q,cAAc,CAAC,CAACnvR,MAAM,CAAC;IAE/F4vR,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,iBAAiB,CAAC,CAAC90H,QAAQ,CAACizR,cAAc,EAAEjE,MAAM,CAAC,YAAY,CAAC,CAACoE,eAAe,CAAC;IAC9G,IAAI,CAACpiR,CAAC,CAACC,OAAO,CAACqxC,iBAAiB,EAAE;MAChCwtO,OAAO,CAAC,YAAY,CAAC,CAACh7J,MAAM,CAAC,iBAAiB,CAAC,CAAC/E,cAAc,CAAC,IAAI,CAAC;IACtE;IAEA6iK,6BAA6B,CAAC,CAAC;IAE/B,MAAMkS,OAAO,GAAG,MAAMhsQ,KAAK,CAACu4B,SAAS,CAAC,6BAA6B,EAAE;MAAEkiO,wBAAwB,EAAEtE;IAAS,CAAC,CAAC;IAC5G,KAAK,MAAMx7F,GAAG,IAAIqxG,OAAO,CAACC,iCAAiC,EAAE;MAC3D,MAAMhT,QAAQ,GAAGj5P,KAAK,CAACyqQ,gBAAgB,CAAC9vG,GAAG,CAACt2E,WAAW,EAAE,EAAE,CAAC;MAC5DiyK,WAAW,CAAC37F,GAAG,CAACigG,oBAAoB,CAAC,GAAG;QACtCtwR,EAAE,EAAEqwL,GAAG,CAACigG,oBAAoB;QAC5Bx7Q,MAAM,EAAE,CAAC65Q,QAAQ,EAAEt+F,GAAG,CAAC9vL,IAAI;MAC7B,CAAC;MAEDmuR,oBAAoB,CAAC;QAAEl5F,UAAU,EAAEnF,GAAG,CAACigG,oBAAoB;QAAE3B;MAAS,CAAC,CAAC;IAC1E;EACF;EAEA,OAAO;IAAEjvR,IAAI;IAAEyrR;EAAO,CAAC;AACzB,CAAC,EAAE,CAAC;ACzgHJ,CAAC,UAAU3pP,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAACogQ,eAAe,GAAGngQ,OAAO,CAAC,CAAC;AACpC,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;EACA;EACA;EACA;AACF;AACA;AACA;AACA;AACA;EACE,SAASmgQ,eAAeA,CAAA,EAAG,CAAC;;EAE5B;;EAEAA,eAAe,CAAC/gR,SAAS,CAACghR,2BAA2B,GAAG,gBAAgBx/O,UAAU,EAAE;IAClF,MAAM9/C,IAAI,GAAG,MAAMmzB,KAAK,CAACu4B,SAAS,CAAC,8BAA8B,EAAE;MACjEjuD,EAAE,EAAE,CAAC;MACLwwR,MAAM,EAAE,CAAC;MACTC,YAAY,EAAE,YAAY;MAC1BrvR,KAAK,EAAEihD,UAAU;MACjBquO,QAAQ,EAAE,EAAE;MACZC,cAAc,EAAE;IAClB,CAAC,CAAC;IAEF,OAAO3mQ,IAAI,CAACxT,KAAK,CAACjU,IAAI,CAACquR,kCAAkC,CAAC;EAC5D,CAAC;EAEDgR,eAAe,CAAC/gR,SAAS,CAACiwQ,oBAAoB,GAAG,gBAAAt8J,IAAA,EAAoE;IAAA,IAApD;MAAEx0H,EAAE;MAAEwwR,MAAM;MAAEC,YAAY;MAAErvR,KAAK;MAAEsvR,QAAQ,GAAG;IAAG,CAAC,GAAAl8J,IAAA;IACjH,MAAMjyH,IAAI,GAAG,MAAMmzB,KAAK,CAACu4B,SAAS,CAAC,8BAA8B,EAAE;MACjEjuD,EAAE;MACFwwR,MAAM;MACNC,YAAY;MACZrvR,KAAK;MACLsvR,QAAQ;MACRC,cAAc,EAAE;IAClB,CAAC,CAAC;IAEF,OAAO3mQ,IAAI,CAACxT,KAAK,CAACjU,IAAI,CAACquR,kCAAkC,CAAC;EAC5D,CAAC;EAEDgR,eAAe,CAAC/gR,SAAS,CAACgwQ,oBAAoB,GAAG,gBAAAp8J,KAAA,EAM9C;IAAA,IAN8D;MAC/Dz0H,EAAE;MACFwwR,MAAM,GAAG,CAAC;MACVC,YAAY;MACZrvR,KAAK;MACLsvR,QAAQ,GAAG;IACb,CAAC,GAAAj8J,KAAA;IACC,MAAMlyH,IAAI,GAAG,MAAMmzB,KAAK,CAACu4B,SAAS,CAAC,8BAA8B,EAAE;MACjEjuD,EAAE;MACFwwR,MAAM;MACNC,YAAY;MACZrvR,KAAK;MACLsvR,QAAQ;MACRC,cAAc,EAAE;IAClB,CAAC,CAAC;IAEF,OAAOpuR,IAAI,CAACquR,kCAAkC;EAChD,CAAC;EAEDgR,eAAe,CAAC/gR,SAAS,CAACihR,uBAAuB,GAAG,gBAAgBz/O,UAAU,EAAE;IAC9E,MAAM9/C,IAAI,GAAG,MAAMmzB,KAAK,CAACu4B,SAAS,CAAC,2BAA2B,EAAE;MAC9D5L;IACF,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;;IAEA;IACA,OAAO9/C,IAAI,CAACw/R,+BAA+B,CAACx7R,GAAG,CAC7CmuH,KAAA,IAA+E;MAAA,IAA9E;QAAE08J,QAAQ;QAAEyB,aAAa;QAAEiG,gBAAgB;QAAEkJ,cAAc;QAAE7zC;MAAW,CAAC,GAAAz5H,KAAA;MACxE,OAAO;QACL10H,EAAE,EAAEoxR,QAAQ;QACZt8Q,MAAM,EAAE,CACNob,IAAI,CAACkY,eAAe,CAACyqP,aAAa,CAAClyQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EACjDm4Q,gBAAgB,EAChBkJ,cAAc,EACd9xQ,IAAI,CAACkY,eAAe,CAAC+lN,UAAU,CAACxtO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAElD,CAAC;IACH,CACF,CAAC;EACH,CAAC;EAED,OAAOihR,eAAe;AACxB,CAAC,CAAC;ACzFF,MAAMpW,mBAAmB,GAAG,CAAC,MAAM;EACjC,IAAI3iE,WAAW,EAAEo5E,aAAa;EAC9B;EACA,IAAI9uL,gBAAgB;EACpB,IAAI6tB,YAAY;EAChB,IAAIkhK,aAAa;EACjB,IAAIC,kBAAkB;;EAEtB;EACA;EACA,eAAeL,uBAAuBA,CAACz/O,UAAU,EAAE;IACjD,MAAM9/C,IAAI,GAAG,MAAMmzB,KAAK,CAACu4B,SAAS,CAAC,2BAA2B,EAAE;MAC9D5L;IACF,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;;IAEA,MAAM+/O,iBAAiB,GAAG;MACxB,CAAC,EAAE,yBAAyB;MAC5B,CAAC,EAAE,gBAAgB;MACnB,CAAC,EAAE,cAAc;MACjB,CAAC,EAAE;IACL,CAAC;IAED,IAAIC,4BAA4B,GAAG,KAAK;IAExC,MAAMr1L,SAAS,GAAGzqG,IAAI,CAACw/R,+BAA+B,CACnDx7R,GAAG,CAACiuH,IAAA,IAA+E;MAAA,IAA9E;QAAE48J,QAAQ;QAAEyB,aAAa;QAAEiG,gBAAgB;QAAEkJ,cAAc;QAAE7zC;MAAW,CAAC,GAAA35H,IAAA;MAC7E,MAAMjH,OAAO,GAAG,IAAIh3G,IAAI,CAAC,CAAC,CAACuM,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAIvM,IAAI,CAACs8Q,aAAa,CAAC,CAAC/vQ,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAChG,IAAIyqG,OAAO,EAAE80K,4BAA4B,GAAG,IAAI;MAEhD,OAAO;QACLriS,EAAE,EAAEoxR,QAAQ;QACZt8Q,MAAM,EAAE,CACNob,IAAI,CAACkY,eAAe,CAACyqP,aAAa,CAAClyQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EACjDyhR,iBAAiB,CAACtJ,gBAAgB,CAAC,EACnC5oQ,IAAI,CAACkY,eAAe,CAAC45P,cAAc,CAACrhR,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAClDuP,IAAI,CAACkY,eAAe,CAAC+lN,UAAU,CAACxtO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAElD,CAAC;IACH,CAAC,CAAC,CACD9J,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MACd,MAAMmrR,KAAK,GAAG,IAAI/rR,IAAI,CAAC3T,CAAC,CAACkS,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC8T,OAAO,CAAC,CAAC;MAC7C,MAAM25Q,KAAK,GAAG,IAAIhsR,IAAI,CAACY,CAAC,CAACrC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC8T,OAAO,CAAC,CAAC;MAE7C,IAAI05Q,KAAK,GAAGC,KAAK,EAAE;QACjB,OAAO,CAAC,CAAC;MACX,CAAC,MAAM,IAAID,KAAK,GAAGC,KAAK,EAAE;QACxB,OAAO,CAAC;MACV,CAAC,MAAM;QACL,OAAO,CAAC;MACV;IACF,CAAC,CAAC;IAEJ,OAAO;MAAEv1L,SAAS;MAAEq1L;IAA6B,CAAC;EACpD;;EAEA;EACA;EACA,eAAeG,mBAAmBA,CAAA,EAAG;IACnCN,aAAa,CAACxlS,KAAK,CAAC,CAAC;IAErB,IAAI,CAACy2G,gBAAgB,EAAE;MACrBsvL,gBAAgB,CAAC91K,cAAc,CAAC,IAAI,CAAC;MACrC;IACF;IAAC;IAED,MAAM;MAAE3f,SAAS;MAAEq1L;IAA6B,CAAC,GAAG,MAAMP,uBAAuB,CAAC3uL,gBAAgB,CAACnzG,EAAE,CAAC;IACtGkiS,aAAa,CAACtlS,QAAQ,CAACowG,SAAS,CAAC;IACjC,MAAM01L,0BAA0B,GAAGL,4BAA4B,IAAI,CAACz0R,CAAC,CAACC,OAAO,CAACmxC,iBAAiB;IAC/FyjP,gBAAgB,CAAC91K,cAAc,CAAC+1K,0BAA0B,CAAC;EAC7D;EACA,SAAS/pK,YAAYA,CAAA,EAAG;IACtB8pK,gBAAgB,CAAC9tR,OAAO,CAAC,MAAM;MAC7By2Q,qBAAqB,CAAC1rR,IAAI,CAAC;QAAEyzG,gBAAgB;QAAEs4K,YAAY;QAAEC;MAAW,CAAC,EAAE,IAAI,CAAC;IAClF,CAAC,CAAC;IAEFngK,YAAY,CAAC8L,gBAAgB,CAC3B90H,IAAI,IAAI;MACN4wG,gBAAgB,GAAG70F,MAAM,CAACxJ,MAAM,CAACvS,IAAI,CAAC,CAAC,CAAC,CAAC;MACzCigS,mBAAmB,CAAC,CAAC;IACvB,CAAC,EACD;MAAEG,MAAM,EAAE;IAAK,CACjB,CAAC;IAEDT,aAAa,CAAC1B,UAAU,CAAC,MAAMhrR,KAAK,IAAI;MACtC,IAAI,CAAC5H,CAAC,CAACC,OAAO,CAACoxC,eAAe,EAAE;MAChC,MAAM0wE,IAAI,GAAG,MAAMj6F,KAAK,CAACu4B,SAAS,CAAC,0BAA0B,EAAE;QAAE20O,uBAAuB,EAAEx7Q,QAAQ,CAAC5R,KAAK;MAAE,CAAC,CAAC;MAC5G41Q,qBAAqB,CAAC1rR,IAAI,CAAC;QACzBksR,MAAM,EAAEj8J,IAAI,CAACkzK,8BAA8B,CAAC,CAAC,CAAC;QAC9C1vL,gBAAgB,EAAEA,gBAAgB;QAClCs4K,YAAY;QACZC;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IACFwW,aAAa,CAACzB,WAAW,CAAC,OAAOntR,GAAG,EAAEkC,KAAK,KAAK;MAC9CqzM,WAAW,GAAGv1M,GAAG;MACjB2uR,aAAa,GAAGzsR,KAAK;MAErB2sR,kBAAkB,CAAC1lS,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;EACJ;;EAEA;EACA;EACA,SAASqmS,0BAA0BA,CAAA,EAAG;IACpC,MAAM17J,UAAU,GAAGtb,IAAI,CAAC/rH,aAAa,CAAC,GAAG,EAAE;MACvC+mG,KAAK,EAAE,uBAAuB;MAC9B3mG,IAAI,EAAE;IACV,CAAC,CAAC;IAEF,MAAM4rC,OAAO,GAAG+/E,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAc,CAAC,CAAC;IACnE,MAAMi8L,aAAa,GAAG,IAAIjgK,MAAM,CAAC;MAC7B3iI,IAAI,EAAE,KAAK;MACXmF,IAAI,EAAE;MACN;IACJ,CAAC,CAAC;IACF,MAAM09R,YAAY,GAAG,IAAIlgK,MAAM,CAAC;MAC5B3iI,IAAI,EAAE,IAAI;MACVmF,IAAI,EAAE;MACN;IACJ,CAAC,CAAC;IAEFy9R,aAAa,CAACpuR,OAAO,CAAC,YAAY;MAChC,MAAMg7G,IAAI,GAAG,MAAMj6F,KAAK,CAACu4B,SAAS,CAAC,6BAA6B,EAAE;QAChE4xO,aAAa,EAAEz4Q,QAAQ,CAAC66Q,aAAa;MACvC,CAAC,CAAC;MAEFC,aAAa,CAACe,SAAS,CAACp6E,WAAW,CAAC;MAEpCs5E,kBAAkB,CAACp3R,KAAK,CAAC,CAAC;MAE1B89M,WAAW,GAAG,IAAI;MAClBo5E,aAAa,GAAG,IAAI;IACtB,CAAC,CAAC;IACFe,YAAY,CAACruR,OAAO,CAAC,MAAM;MACzBwtR,kBAAkB,CAACp3R,KAAK,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEFg4R,aAAa,CAAC7pK,QAAQ,CAACntF,OAAO,CAAC;IAC/Bi3P,YAAY,CAAC9pK,QAAQ,CAACntF,OAAO,CAAC;IAE9Bo2P,kBAAkB,CAAC79J,MAAM,CAACrnI,WAAW,CAACmqI,UAAU,CAAC;IACjD+6J,kBAAkB,CAAC79J,MAAM,CAACrnI,WAAW,CAAC8uC,OAAO,CAAC;EAChD;EACA,eAAewoE,QAAQA,CAAA,EAAG;IACxB,MAAMgX,YAAY,CAACqM,cAAc,CAAC,CAAC;IACnCrM,YAAY,CAAC3uH,QAAQ,CAAC,CAAC;IAEvBulS,kBAAkB,CAACjpK,QAAQ,CAACpN,IAAI,CAACn8G,YAAY,CAAC;IAC9CmzR,0BAA0B,CAAC,CAAC;EAC9B;EACA,SAAS3pK,gBAAgBA,CAAA,EAAG;IAC1BuyJ,UAAU,CAAC/uR,SAAS,GAAG,EAAE;IACzB8uR,YAAY,CAAC9uR,SAAS,GAAG,EAAE;IAE3BqkI,YAAY,GAAGlV,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAsB,CAAC,CAAC;IAE1E4kL,UAAU,CAACzuR,WAAW,CAAC+jI,YAAY,CAAC;IAEpCkhK,aAAa,CAAChpK,QAAQ,CAAC8H,YAAY,CAAC;IACpCzV,YAAY,CAAC2N,QAAQ,CAAC8H,YAAY,CAAC;IACnCyhK,gBAAgB,CAACvpK,QAAQ,CAACuyJ,YAAY,CAAC;EACzC;;EAEA;EACA;EACA,SAASryJ,cAAcA,CAAA,EAAG;IACxB8oK,aAAa,GAAG,IAAIn7J,KAAK,CAAC;MACxBs6J,cAAc,EAAE,IAAI;MACpBC,WAAW,EAAE1zR,CAAC,CAACC,OAAO,CAACsxC,iBAAiB;MACxC6nF,QAAQ,EAAE,CACR;QACE7mI,IAAI,EAAE,gBAAgB;QACtBI,IAAI,EAAE;MACR,CAAC,EACD;QACEJ,IAAI,EAAE,YAAY;QAClBI,IAAI,EAAE;MACR,CAAC,EACD;QACEJ,IAAI,EAAE,iBAAiB;QACvBI,IAAI,EAAE;MACR,CAAC,EACD;QACEJ,IAAI,EAAE,cAAc;QACpBI,IAAI,EAAE;MACR,CAAC;IAEL,CAAC,CAAC;IAEFgrH,YAAY,GAAG,IAAIiM,YAAY,CAAC;MAC9BC,gBAAgB,EAAE,KAAK;MACvBC,gBAAgB,EAAE;IACpB,CAAC,CAAC;IAEF+qK,gBAAgB,GAAG,IAAI3/J,MAAM,CAAC;MAC5B3iI,IAAI,EAAE,gBAAgB;MACtBG,KAAK,EAAE,SAAS;MAChBw5H,SAAS,EAAE,WAAW;MACtBtlH,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF2tR,kBAAkB,GAAG,IAAI19J,MAAM,CAAC;MAAE/iI,SAAS,EAAE;IAAuB,CAAC,CAAC;EACxE;EACA,eAAe2kD,MAAMA,CAAA,EAAG;IACtB8yE,gBAAgB,CAAC,CAAC;IAClB,MAAM5kB,QAAQ,CAAC,CAAC;IAChBokB,YAAY,CAAC,CAAC;EAChB;EACA,eAAej5H,IAAIA,CAAC4D,IAAI,EAAE;IACxBmoR,YAAY,GAAGnoR,IAAI,CAACmoR,YAAY;IAChCC,UAAU,GAAGpoR,IAAI,CAACooR,UAAU;IAC5Bv4K,gBAAgB,GAAG7vG,IAAI,CAAC6vG,gBAAgB;IAExCimB,cAAc,CAAC,CAAC;IAChBD,gBAAgB,CAAC,CAAC;IAClB,MAAM5kB,QAAQ,CAAC,CAAC;IAChBokB,YAAY,CAAC,CAAC;IAEd,IAAIxlB,gBAAgB,EAAE;MACpBqvL,mBAAmB,CAAC,CAAC;MACrBj3K,YAAY,CAACyK,oBAAoB,CAAC,CAAC7iB,gBAAgB,CAACnzG,EAAE,CAAC,CAAC;IAC1D;EACF;EAEA,OAAO;IACLN,IAAI;IACJ2mD;EACF,CAAC;AACH,CAAC,EAAE,CAAC;AC1OJz4C,CAAC,CAACC,OAAO,CAACq1R,yBAAyB;AACnC;AACA;AACA;;AAEAt1R,CAAC,CAACC,OAAO,CAACwtC,eAAe;AACzB;AACA;ACPA,IAAI78C,QAAQ,GAAI,YAAY;EACxB;EACA,IAAIwsJ,gBAAgB;EACpB,IAAIm4I,WAAW;EACf,IAAIC,kBAAkB;EACtB,IAAIn/H,cAAc;EAClB,IAAIo/H,cAAc;EAClB,IAAIC,eAAe;EACnB,IAAIp1L,SAAS;EACb;EACA,IAAImzD,oBAAoB;EACxB,IAAIkiI,0BAA0B;EAC9B,IAAIC,eAAe;EACnB,IAAIC,2BAA2B;EAC/B,IAAIC,qBAAqB;EACzB,IAAIC,sBAAsB;EAE1B,IAAIriI,eAAe,GAAG,KAAK;EAC3B;EACA,IAAIzB,UAAU;EACd,IAAI+jI,eAAe;EACnB,IAAIpjI,gBAAgB;EACpB,IAAI72D,iBAAiB,GAAG,EAAE;EAC1B,IAAIk6L,mBAAmB,GAAG,EAAE;EAC5B,IAAIC,QAAQ;EACZ,IAAIC,UAAU;EACd,IAAIC,UAAU;EACd,IAAIC,MAAM;EACV,IAAIC,cAAc;EAClB,IAAIC,sBAAsB,GAAG;IACzB/3P,KAAK,EAAE,EAAE;IACTu+E,YAAY,EAAE,EAAE;IAChB5P,WAAW,EAAEylD,gBAAgB;IAC7B1vG,UAAU,EAAE,CAAC;IACbszO,SAAS,EAAE,CAAC;IACZ9wO,WAAW,EAAE,EAAE;IACf+wO,OAAO,EAAET,eAAe;IACxB7yO,YAAY,EAAE;EAClB,CAAC;EACD,IAAIuzO,WAAW,GAAG;IACdC,mBAAmB,EAAE,CAAC;IACtBC,kBAAkB,EAAE;EACxB,CAAC;EACD,IAAIC,aAAa,GAAG,CAAC,CAAC;EACtB,IAAIC,WAAW,GAAG,CAAC,CAAC;EACpB,IAAIC,gBAAgB,GAAG,CAAC,CAAC;EACzB,IAAIC,gBAAgB;EACpB,IAAIC,sBAAsB,GAAG,EAAE;EAE/B,IAAI94P,OAAO;EACX,IAAIq0H,eAAe;EACnB,IAAI0kI,cAAc;EAClB,IAAIzkI,kBAAkB;;EAGtB;EACA,SAAS0kI,cAAcA,CAACniS,CAAC,EAAEuU,CAAC,EAAE;IAC1B,MAAM6tR,KAAK,GAAGpiS,CAAC,CAACzC,IAAI,CAAC6mC,WAAW,CAAC,CAAC;IAClC,MAAMi+P,KAAK,GAAG9tR,CAAC,CAAChX,IAAI,CAAC6mC,WAAW,CAAC,CAAC;IAElC,IAAIk+P,UAAU,GAAG,CAAC;IAClB,IAAIF,KAAK,GAAGC,KAAK,EAAE;MACfC,UAAU,GAAG,CAAC;IAClB,CAAC,MAAM,IAAIF,KAAK,GAAGC,KAAK,EAAE;MACtBC,UAAU,GAAG,CAAC,CAAC;IACnB;IACA,OAAOA,UAAU;EACrB;EAEA,SAAS14K,mBAAmBA,CAAC/+E,GAAG,EAAE;IAC9B,IAAIskE,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxB2wC,GAAG,CAACpxC,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACpC,CAAC,MAAM;MACHmxC,GAAG,CAACpxC,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACjC;EACJ;;EAEA;EACA,IAAI8qJ,UAAU,GAAG93I,KAAK,CAAC1P,KAAK,CAAC;IACzB2P,MAAM,EAAE,OAAO;IACfxP,EAAE,EAAE,YAAY;IAChBa,UAAU,EAAE;EAChB,CAAC,CAAC;EACF,IAAIsiK,cAAc,GAAG3jK,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;EAChDojK,cAAc,CAAC9mK,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;EAC7C8qJ,UAAU,CAACpqJ,WAAW,CAACkmK,cAAc,CAAC;EACtC;;EAEA;EACA;EACA,SAASa,cAAcA,CAAA,EAAG;IACtB;IACAq/H,cAAc,GAAGzjS,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,WAAW;MACjBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBwiS,mBAAmB,CAAC9mS,OAAO,CAAC2rG,QAAQ,IAAI;UACpC,IAAIp+D,GAAG,GAAG,CAAC,CAAC;UACZA,GAAG,CAAC,IAAI,CAAC,GAAGo+D,QAAQ;UACpBiB,iBAAiB,CAAC/+F,IAAI,CAAC0/B,GAAG,CAAC;QAC/B,CAAC,CAAC;QACF08H,qBAAqB,CAAC,KAAK,CAAC;QAC5B;QACAs8H,eAAe,GAAG9jS,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;QAC5DxD,UAAU,CAACO,IAAI,CAAC,CAAC;QACjB8kK,eAAe,GAAG,KAAK;QACvBuiI,mBAAmB,GAAG,EAAE;QACxB31L,SAAS,CAAC7xG,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACtC2nK,cAAc,CAAC5nK,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;QAC1CgnS,eAAe,CAACjnS,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QAC5C;QACA,IAAI8nK,YAAY,GAAG5kK,QAAQ,CAACqG,gBAAgB,CAAC,WAAW,CAAC;QACzD,EAAE,CAAC9I,OAAO,CAACiP,IAAI,CAACo4J,YAAY,EAAE,UAAU76J,EAAE,EAAE;UACxCA,EAAE,CAAClN,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACnC,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEFL,UAAU,CAACS,KAAK,CAAC,CAAC;IAClBT,UAAU,CAACW,QAAQ,CAAC,CAACymS,cAAc,CAAC,CAAC;IACrCpnS,UAAU,CAACO,IAAI,CAAC,CAAC;EACrB;EAEA,SAAS2oS,gBAAgBA,CAAA,EAAG;IACxB9zB,YAAY,CAAC+zB,oBAAoB,CAAC1iS,CAAC,IAAI;MACnC,IAAI2iS,WAAW;MACfA,WAAW,GAAG3iS,CAAC;MACf,IAAI4iS,gBAAgB,GAAG9lS,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACpDulS,gBAAgB,CAACjpS,SAAS,CAACE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC;MAEjE,IAAIiT,MAAM,GAAGhQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;MACzCyP,MAAM,CAACnT,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;MACnC+oS,gBAAgB,CAACroS,WAAW,CAACuS,MAAM,CAAC;MAEpC,IAAI61R,WAAW,CAACvoS,MAAM,IAAI,CAAC,EAAE;QACzB8mS,eAAe,GAAGyB,WAAW,CAAC,CAAC,CAAC,CAACrlS,EAAE;QACnC8jS,QAAQ,GAAGuB,WAAW,CAAC,CAAC,CAAC,CAACjlB,SAAS;QACnC6jB,MAAM,GAAGoB,WAAW,CAAC,CAAC,CAAC,CAAChlB,OAAO;QAC/B70G,YAAY,CAAC,CAAC;MAClB,CAAC,MAAM,IAAI65H,WAAW,CAACvoS,MAAM,GAAG,CAAC,EAAE;QAC/B0S,MAAM,CAAC7S,SAAS,GAAG,uBAAuB;QAC1C,IAAI2vK,QAAQ,GAAG1sK,MAAM,CAACC,KAAK,CAAC;UACxBG,EAAE,EAAE,OAAO;UACXG,IAAI,EAAE,OAAO;UACbG,KAAK,EAAE,WAAW;UAClBC,IAAI,EAAE,WAAW;UACjBN,IAAI,EAAE,WAAW;UACjBoB,QAAQ,EAAE,SAAAA,CAAA,EAAY;YAClBuiS,eAAe,GACXA,eAAe,KAAK,EAAE,GAAGyB,WAAW,CAAC,CAAC,CAAC,CAACrlS,EAAE,GAAG4jS,eAAe;YAChE,KAAK,IAAI7jR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGslR,WAAW,CAACvoS,MAAM,EAAEijB,CAAC,EAAE,EAAE;cACzC,IAAIslR,WAAW,CAACtlR,CAAC,CAAC,CAAC/f,EAAE,KAAK4jS,eAAe,EAAE;gBACvCE,QAAQ,GAAGuB,WAAW,CAACtlR,CAAC,CAAC,CAACqgQ,SAAS;gBACnC6jB,MAAM,GAAGoB,WAAW,CAACtlR,CAAC,CAAC,CAACsgQ,OAAO;cACnC;YACJ;YACA3xQ,GAAG,CAACiB,YAAY,CAACf,WAAW,CAAC02R,gBAAgB,CAAC;YAC9C54R,OAAO,CAAClQ,IAAI,CAAC,CAAC;YACdgvK,YAAY,CAAC,CAAC;UAClB;QACJ,CAAC,CAAC;QAEF,IAAI+5H,aAAa,GAAG/jS,QAAQ,CAAC3B,KAAK,CAAC;UAC/B4B,UAAU,EAAE,eAAe;UAC3BE,KAAK,EAAE,OAAO;UACdrB,KAAK,EAAE;QACX,CAAC,CAAC;QACF,IAAI8lB,KAAK,GAAG8J,IAAI,CAAC8Z,aAAa,CAAC,CAAC;QAChC,IAAIw7P,SAAS,GAAG,CAAC;QACjBp/Q,KAAK,GAAG,IAAI7P,IAAI,CAAC6P,KAAK,CAAChc,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3Ci7R,WAAW,CAACtoS,OAAO,CAAC0oS,gBAAgB,CAAC;QACrC,SAASA,gBAAgBA,CAACzoS,GAAG,EAAE;UAC3B,IAAI03B,SAAS,GAAG,IAAIne,IAAI,CAACvZ,GAAG,CAACojR,SAAS,CAAC;UACvC,IAAIxrP,OAAO,GAAG,IAAIre,IAAI,CAACvZ,GAAG,CAACqjR,OAAO,CAAC;UACnC,IAAIj6P,KAAK,IAAIsO,SAAS,IAAItO,KAAK,IAAIwO,OAAO,EAAE;YACxC4wQ,SAAS,GAAGxoS,GAAG,CAACgD,EAAE;YAClBqlS,WAAW,CAACz5Q,MAAM,CAACy5Q,WAAW,CAACr/Q,OAAO,CAAChpB,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/CqoS,WAAW,CAACllO,OAAO,CAACnjE,GAAG,CAAC;UAC5B;QACJ;QACA,IAAIqgI,YAAY,GAAGgoK,WAAW,CAAC9+R,GAAG,CAAC4Q,CAAC,IAAI;UACpC,IAAInX,EAAE,GAAGmX,CAAC,CAACnX,EAAE;UACb,IAAIoB,KAAK,GAAG+V,CAAC,CAACnX,EAAE;UAChB,IAAIG,IAAI,GAAGgX,CAAC,CAAC7R,IAAI;UACjB,OAAO;YACHtF,EAAE;YACFoB,KAAK;YACLjB;UACJ,CAAC;QACL,CAAC,CAAC;QAEFmlS,gBAAgB,CAACroS,WAAW,CAACsoS,aAAa,CAAC;QAC3CD,gBAAgB,CAACroS,WAAW,CAACqvK,QAAQ,CAAC;QACtC59J,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACqoS,gBAAgB,CAAC;QAC9C9jS,QAAQ,CAAC5E,QAAQ,CAAC,eAAe,EAAEygI,YAAY,CAAC;QAChDkoK,aAAa,CAAC5lS,gBAAgB,CAAC,QAAQ,EAAE,MAAM;UAC3C,IAAIqC,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;UACrE2hS,eAAe,GAAG5hS,cAAc,CAAChC,EAAE;UACnC4jS,eAAe,GAAGx8Q,QAAQ,CAACw8Q,eAAe,CAAC;QAC/C,CAAC,CAAC;QACFl3R,OAAO,CAACjQ,IAAI,CAAC,CAAC;MAClB,CAAC,MAAM;QACH+S,MAAM,CAAC7S,SAAS,GACZ,4FAA4F;QAChG,IAAI+oS,OAAO,GAAG9lS,MAAM,CAACC,KAAK,CAAC;UACvBG,EAAE,EAAE,MAAM;UACVG,IAAI,EAAE,MAAM;UACZG,KAAK,EAAE,WAAW;UAClBC,IAAI,EAAE,WAAW;UACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;YAClBqN,GAAG,CAACiB,YAAY,CAACf,WAAW,CAAC02R,gBAAgB,CAAC;YAC9C54R,OAAO,CAAClQ,IAAI,CAAC,CAAC;YACdiQ,OAAO,CAAC,MAAM,CAAC;UACnB;QACJ,CAAC,CAAC;QACFC,OAAO,CAACjQ,IAAI,CAAC,CAAC;QACd6oS,gBAAgB,CAACroS,WAAW,CAACyoS,OAAO,CAAC;QACrCh3R,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACqoS,gBAAgB,CAAC;MAClD;IACJ,CAAC,CAAC;EACN;EAEA,SAASK,qBAAqBA,CAACC,aAAa,EAAE;IAC1C,IAAIC,cAAc,GAAGD,aAAa,CAACr/R,GAAG,CAACvF,CAAC,IAAIA,CAAC,CAAChB,EAAE,CAAC,CAACuoB,IAAI,CAAC,GAAG,CAAC;IAC3D,OAAOs9Q,cAAc;EACzB;EAEA,SAASC,oBAAoBA,CAAA,EAAG;IAC5B/B,UAAU,GAAG7zQ,IAAI,CAACkY,eAAe,CAAC07P,QAAQ,CAACnjR,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzDqjR,UAAU,GAAG9zQ,IAAI,CAACkY,eAAe,CAAC67P,MAAM,CAACtjR,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,IAAIyF,KAAK,GAAG8J,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IAEhC,IAAI5jB,KAAK,GAAG29Q,UAAU,IAAI39Q,KAAK,GAAG49Q,UAAU,EAAE;MAC1CE,cAAc,GAAGH,UAAU;IAC/B,CAAC,MAAM;MACHG,cAAc,GAAG99Q,KAAK;IAC1B;IACA;IACAg9Q,kBAAkB,GAAG5hS,QAAQ,CAAC3B,KAAK,CAAC;MAChC4B,UAAU,EAAE,oBAAoB;MAChCE,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFylS,aAAa,GAAG1iS,KAAK,CAACxD,KAAK,CAAC;MACxBG,EAAE,EAAE,MAAM;MACV2B,KAAK,EAAE,MAAM;MACbpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE8iS,cAAc;MACrBjjS,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE2iS;MAAW,CAAC,EACjC;QAAE5iS,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE4iS;MAAW,CAAC;IAEzC,CAAC,CAAC;IAEF+B,aAAa,CAACpmS,gBAAgB,CAAC,SAAS,EAAExC,KAAK,IAAI;MAC/CA,KAAK,CAACyH,cAAc,CAAC,CAAC;MACtBzH,KAAK,CAAC0N,eAAe,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEFk7R,aAAa,CAACpmS,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC9CgnS,sBAAsB,CAACx5K,YAAY,GAAGxtH,KAAK,CAACC,MAAM,CAACgE,KAAK;IAC5D,CAAC,CAAC;EAEN;EAEA,SAAS4kS,WAAWA,CAAA,EAAG;IACnB;IACA;IACAjC,UAAU,GAAG7zQ,IAAI,CAACkY,eAAe,CAAC07P,QAAQ,CAACnjR,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzDqjR,UAAU,GAAG9zQ,IAAI,CAACkY,eAAe,CAAC67P,MAAM,CAACtjR,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,IAAIyF,KAAK,GAAG8J,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IAChC,IAAIgN,uBAAuB,GAAG9oC,QAAQ,CAACmoI,WAAW,CAAC,UAAU,CAAC;IAC9D,IAAIr/F,uBAAuB,KAAK,EAAE,EAAEA,uBAAuB,GAAG,CAAC;IAC/D6oH,UAAU,GAAG7oH,uBAAuB;IACpC,IAAI5wB,KAAK,GAAG29Q,UAAU,IAAI39Q,KAAK,GAAG49Q,UAAU,EAAE;MAC1CE,cAAc,GAAGH,UAAU;IAC/B,CAAC,MAAM;MACHG,cAAc,GAAG99Q,KAAK;IAC1B;IACAklF,OAAO,CAACoiD,kBAAkB,CAACw2I,cAAc,CAAC;IAC1CC,sBAAsB,CAACx5K,YAAY,GAAGu5K,cAAc;IACpDC,sBAAsB,CAACE,OAAO,GAAGT,eAAe;IAChDO,sBAAsB,CAAC/3P,KAAK,GAAGx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;IAC9CiuP,sBAAsB,CAAC7wO,WAAW,GAAG1lD,CAAC,CAACC,OAAO,CAACC,eAAe;IAC9Dq2R,sBAAsB,CAACppL,WAAW,GAAG4qL,qBAAqB,CACtDd,sBACJ,CAAC;IACD;IACAxzB,YAAY,CAAC40B,8BAA8B,CACvC/B,cAAc,EACdltP,uBAAuB,EACvB8O,GAAG,IAAI;MACH,MAAMq/G,gBAAgB,GAAG,EAAE;MAC3Br/G,GAAG,CAAC/oD,OAAO,CAAC8gB,CAAC,IAAI;QACb,IAAIunJ,WAAW,GAAGvnJ,CAAC,CAACqoR,WAAW;QAC/B,MAAMC,gBAAgB,GAAGtB,sBAAsB,CAAC75R,MAAM,CAAC09F,QAAQ,IAAIA,QAAQ,CAAC1oG,EAAE,KAAKolK,WAAW,CAAC;QAC/F,IAAI+gI,gBAAgB,CAACrpS,MAAM,KAAK,CAAC,EAAEqoK,gBAAgB,CAACv6J,IAAI,CAAC;UAAE,aAAa,EAAEw6J;QAAY,CAAC,CAAC;MAC5F,CAAC,CAAC;MACF95D,OAAO,CAAC+5D,mBAAmB,CAACF,gBAAgB,CAAC;IACjD,CACJ,CAAC;IAEDksG,YAAY,CAACC,iBAAiB,CAAC4yB,cAAc,EAAErmR,CAAC,IAAI;MAChDA,CAAC,CAAC9gB,OAAO,CAAC8gB,CAAC,IAAI;QACX,IAAI,CAAC8mR,gBAAgB,CAAC9mR,CAAC,CAAC7d,EAAE,CAAC,EAAE;UACzBsqC,GAAG,GAAG;YACF+xF,OAAO,EAAEx+G,CAAC,CAACvY;UACf,CAAC;UACDq/R,gBAAgB,CAAC9mR,CAAC,CAAC7d,EAAE,CAAC,GAAGsqC,GAAG;QAChC;MACJ,CAAC,CAAC;MAEF+2H,oBAAoB,GAAGxjJ,CAAC,CAACtX,GAAG,CAACsX,CAAC,IAAI;QAC9B,IAAI7d,EAAE,GAAG,MAAM6d,CAAC,CAAC7d,EAAE,EAAE;QACrB,IAAIoB,KAAK,GAAGyc,CAAC,CAAC7d,EAAE;QAChB,IAAIG,IAAI,GAAG0d,CAAC,CAACvY,IAAI;QACjB,OAAO;UACHtF,EAAE;UACFoB,KAAK;UACLjB;QACJ,CAAC;MACL,CAAC,CAAC;MACFojS,0BAA0B,GAAG,CAAC,GAAGliI,oBAAoB,CAAC;MACtDkiI,0BAA0B,CAACpjO,OAAO,CAAC;QAAEngE,EAAE,EAAE,MAAM;QAAEoB,KAAK,EAAE,CAAC;QAAEjB,IAAI,EAAE;MAAM,CAAC,CAAC;MACzEkhK,oBAAoB,CAAClhG,OAAO,CAAC;QAAEngE,EAAE,EAAE,MAAM;QAAEoB,KAAK,EAAE,CAAC;QAAEjB,IAAI,EAAE;MAAG,CAAC,CAAC;IACpE,CAAC,CAAC;IAEFkxQ,YAAY,CAAC+0B,sBAAsB,CAAClC,cAAc,EAAErmR,CAAC,IAAI;MACrD8lR,sBAAsB,GAAG9lR,CAAC,CAACtX,GAAG,CAACsX,CAAC,IAAI;QAChC,IAAI7d,EAAE,GAAG,MAAM6d,CAAC,CAAC7d,EAAE,EAAE;QACrB,IAAIoB,KAAK,GAAGyc,CAAC,CAAC7d,EAAE;QAChB,IAAIG,IAAI,GAAG0d,CAAC,CAACvY,IAAI;QACjB,OAAO;UACHtF,EAAE;UACFoB,KAAK;UACLjB;QACJ,CAAC;MACL,CAAC,CAAC;MACFwjS,sBAAsB,CAAC9sR,IAAI,CAACkuR,cAAc,CAAC;MAC3CpB,sBAAsB,CAACxjO,OAAO,CAAC;QAAEngE,EAAE,EAAE,MAAM;QAAEoB,KAAK,EAAE,CAAC;QAAEjB,IAAI,EAAE;MAAG,CAAC,CAAC;IACtE,CAAC,CAAC;IAEFkxQ,YAAY,CAACg1B,kBAAkB,CAACnC,cAAc,EAAE,CAAC,EAAErmR,CAAC,IAAI;MACpDA,CAAC,CAAC9gB,OAAO,CAAC8gB,CAAC,IAAI;QACX,IAAI,CAAC6mR,WAAW,CAAC7mR,CAAC,CAACyoR,SAAS,CAAC,EAAE;UAC3Bh8P,GAAG,GAAG;YACFi8P,YAAY,EAAE1oR,CAAC,CAAC2oR,YAAY;YAC5BpC,SAAS,EAAEvmR,CAAC,CAACyoR,SAAS;YACtBG,SAAS,EAAE5oR,CAAC,CAAC6oR;UACjB,CAAC;UACDhC,WAAW,CAAC7mR,CAAC,CAACyoR,SAAS,CAAC,GAAGh8P,GAAG;QAClC;MACJ,CAAC,CAAC;MAEFk5P,eAAe,GAAG3lR,CAAC,CAACtX,GAAG,CAACsX,CAAC,IAAI;QACzB,IAAI7d,EAAE,GAAG,MAAM6d,CAAC,CAACyoR,SAAS,EAAE;QAC5B,IAAIllS,KAAK,GAAGyc,CAAC,CAACyoR,SAAS;QACvB,IAAInmS,IAAI,GAAG,GAAG0d,CAAC,CAAC8oR,YAAY,MAAM9oR,CAAC,CAAC+oR,OAAO,MAAM/oR,CAAC,CAACgpR,OAAO,MAAMhpR,CAAC,CAAC6oR,gBAAgB,EAAE;QACpF,OAAO;UACH1mS,EAAE;UACFoB,KAAK;UACLjB;QACJ,CAAC;MACL,CAAC,CAAC;MACFujS,qBAAqB,GAAG,CAAC,GAAGF,eAAe,CAAC;MAC5CE,qBAAqB,CAACvjO,OAAO,CAAC;QAAEngE,EAAE,EAAE,MAAM;QAAEoB,KAAK,EAAE,CAAC;QAAEjB,IAAI,EAAE;MAAM,CAAC,CAAC;MACpEqjS,eAAe,CAACrjO,OAAO,CAAC;QAAEngE,EAAE,EAAE,MAAM;QAAEoB,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAG,CAAC,CAAC;IACjE,CAAC,CAAC;EACN;EAEA,SAAS2mS,iBAAiBA,CAACh2O,UAAU,EAAEi2O,SAAS,EAAE;IAC9C11B,YAAY,CAACg1B,kBAAkB,CAACnC,cAAc,EAAEpzO,UAAU,EAAEjzC,CAAC,IAAI;MAC7D,IAAIkpR,SAAS,EAAE;QACXtD,2BAA2B,GAAG5lR,CAAC,CAACtX,GAAG,CAACsX,CAAC,IAAI;UACrC,IAAI7d,EAAE,GAAG,MAAM6d,CAAC,CAACyoR,SAAS,EAAE;UAC5B,IAAIllS,KAAK,GAAGyc,CAAC,CAACyoR,SAAS;UACvB,IAAInmS,IAAI,GAAG,GAAG0d,CAAC,CAAC8oR,YAAY,MAAM9oR,CAAC,CAAC+oR,OAAO,MAAM/oR,CAAC,CAACgpR,OAAO,MAAMhpR,CAAC,CAAC6oR,gBAAgB,EAAE;UACpF,OAAO;YACH1mS,EAAE;YACFoB,KAAK;YACLjB;UACJ,CAAC;QACL,CAAC,CAAC;QACFsjS,2BAA2B,CAACtjO,OAAO,CAAC;UAChCngE,EAAE,EAAE,MAAM;UACVoB,KAAK,EAAE,CAAC;UACRjB,IAAI,EAAE;QACV,CAAC,CAAC;QACFqB,QAAQ,CAAC5E,QAAQ,CAAC,mBAAmB,EAAE6mS,2BAA2B,CAAC;MACvE,CAAC,MAAM;QACH,IAAIuD,qBAAqB,GAAGnpR,CAAC,CAACtX,GAAG,CAACsX,CAAC,IAAI;UACnC,IAAI7d,EAAE,GAAG,MAAM6d,CAAC,CAACyoR,SAAS,EAAE;UAC5B,IAAIllS,KAAK,GAAGyc,CAAC,CAACyoR,SAAS;UACvB,IAAInmS,IAAI,GAAG,GAAG0d,CAAC,CAAC8oR,YAAY,MAAM9oR,CAAC,CAAC+oR,OAAO,MAAM/oR,CAAC,CAACgpR,OAAO,MAAMhpR,CAAC,CAAC6oR,gBAAgB,EAAE;UACpF,OAAO;YACH1mS,EAAE;YACFoB,KAAK;YACLjB;UACJ,CAAC;QACL,CAAC,CAAC;QACF6mS,qBAAqB,CAAC7mO,OAAO,CAAC;UAAEngE,EAAE,EAAE,MAAM;UAAEoB,KAAK,EAAE,GAAG;UAAEjB,IAAI,EAAE;QAAG,CAAC,CAAC;QACnEqB,QAAQ,CAAC5E,QAAQ,CAAC,sBAAsB,EAAEoqS,qBAAqB,CAAC;MACpE;IACJ,CAAC,CAAC;EACN;EAEA,SAASC,kBAAkBA,CAAC1kS,IAAI,EAAElB,QAAQ,EAAE;IACxC,IAAI2rG,SAAS,GAAGzqG,IAAI;IAEpB0hK,cAAc,GAAGrkK,MAAM,CAACC,KAAK,CAAC;MAC1BG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,cAAc;MACpBF,IAAI,EAAE,aAAa;MACnBK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBslK,mBAAmB,CAAC1C,cAAc,CAAC;QACnC/1D,SAAS,CAAC7xG,SAAS,CAACmE,MAAM,CAAC,UAAU,CAAC;MAC1C;IACJ,CAAC,CAAC;IAEF,SAASgqK,eAAeA,CAAA,EAAG;MACvB,OAAQ1gE,YAAY,GAAG;QACnBo9L,gBAAgB,EAAE/C,sBAAsB,CAACrzO,UAAU;QACnDq2O,WAAW,EAAEhD,sBAAsB,CAACC,SAAS;QAC7CgD,YAAY,EAAEjD,sBAAsB,CAACx5K,YAAY;QACjD08K,iBAAiB,EAAEtD,UAAU;QAC7BuD,eAAe,EAAEtD;MACrB,CAAC;IACL;IACA;IACA,SAASr5H,sBAAsBA,CAACC,WAAW,EAAE;MACzC,OAAOhrK,MAAM,CAACC,KAAK,CAAC;QAChBM,IAAI,EAAE,SAAS;QACfF,IAAI,EAAE,KAAK;QACXK,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBM,UAAU,EAAE,WAAW;QACvBQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;UAClB;UACAupK,WAAW,CAAC7tK,OAAO,CAAC,UAAU8tK,UAAU,EAAE;YACtCA,UAAU,CAAC/gE,YAAY,GAAG0gE,eAAe,CAAC,CAAC;UAC/C,CAAC,CAAC;UAEFrY,eAAe,CAAC2Y,gBAAgB,CAACF,WAAW,CAAC;QACjD;MACJ,CAAC,CAAC;IACN;IAEAG,UAAU,GAAGJ,sBAAsB,CAAC,CAAC;MAAExqK,IAAI,EAAE;IAAiD,CAAC,CAAC,CAAC;IAEjG,IAAIonS,iBAAiB,GAAG;MACpB9zR,QAAQ,EAAE,kBAAkByc,IAAI,CAACmY,iBAAiB,CAC9C07P,UACJ,CAAC,MAAM7zQ,IAAI,CAACmY,iBAAiB,CACzB27P,UACJ,CAAC,cAAc9zQ,IAAI,CAACmY,iBAAiB,CAAC67P,cAAc,CAAC,EAAE;MACvDtwR,cAAc,EAAE,CACZ,UAAU,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,EACV,OAAO,EACP,UAAU,EACV,YAAY,CACf;MACDhB,OAAO,EAAE;MACT;IACJ,CAAC;IAEDrQ,IAAI,CAACxF,OAAO,CAAC2F,CAAC,IAAI;MACd,IAAI,CAAC+hS,aAAa,CAAC/hS,CAAC,CAAC8kS,QAAQ,CAAC,EAAE;QAC5Bl9P,GAAG,GAAG;UACFzU,SAAS,EAAEnzB,CAAC,CAAC+tH,SAAS;UACtB37F,OAAO,EAAEpyB,CAAC,CAACguH,OAAO;UAClB+2K,QAAQ,EAAE/kS,CAAC,CAAC+kS,QAAQ;UACpB/+L,QAAQ,EAAEhmG,CAAC,CAAC4C,IAAI;UAChB0pH,UAAU,EAAEtsH,CAAC,CAACssH,UAAU;UACxB04K,WAAW,EAAEhlS,CAAC,CAAC8jS,YAAY,KAAK,GAAG,GAAG,IAAI,GAAG;QACjD,CAAC;QACD/B,aAAa,CAAC/hS,CAAC,CAAC8kS,QAAQ,CAAC,GAAGl9P,GAAG;MACnC;IACJ,CAAC,CAAC;IAEF0iE,SAAS,GAAGzqG,IAAI,CAACgE,GAAG,CAAC7D,CAAC,IAAI;MACtBspI,YAAY,GAAG,GAAGtpI,CAAC,CAAC4C,IAAI,CAACqb,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAKje,CAAC,CAAC4C,IAAI,CAACqb,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;MACjEgnR,UAAU,GAAGjlS,CAAC,CAAC6yB,KAAK,CAACxpB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;MACjC,IAAIrJ,CAAC,CAAC6yB,KAAK,KAAK,EAAE,EAAE;QAChBoyQ,UAAU,GAAGh6Q,MAAM,CAACg6Q,UAAU,CAAC;MACnC;MACA;MACA,OAAO;QACH7yR,MAAM,EAAE,CACJk3H,YAAY,EACZ97G,IAAI,CAAC8E,mBAAmB,CAACtyB,CAAC,CAAC+tH,SAAS,CAAC,EACrC/tH,CAAC,CAACguH,OAAO,KAAK,EAAE,GAAGtwH,KAAK,CAACmO,KAAK,GAAG2hB,IAAI,CAAC8E,mBAAmB,CAACtyB,CAAC,CAACguH,OAAO,CAAC,EACpEhuH,CAAC,CAACkkS,OAAO,EACTlkS,CAAC,CAACmkS,OAAO,EACTc,UAAU,KAAK,EAAE,GAAG,GAAG,GAAGA,UAAU,EACpCjlS,CAAC,CAAC8jS,YAAY,KAAK,GAAG,GAChB,GAAG,GACH9jS,CAAC,CAAC+kS,QAAQ,KAAK,EAAE,IAAI/kS,CAAC,CAAC+kS,QAAQ,KAAK,GAAG,GACnCrnS,KAAK,CAACmO,KAAK,GACX7L,CAAC,CAAC+kS,QAAQ,EACpB/kS,CAAC,CAACklS,UAAU,KAAK,GAAG,GAAG,GAAG,GAAGllS,CAAC,CAACklS,UAAU,CAC5C;QACD5nS,EAAE,EAAE,SAAS0C,CAAC,CAAC8kS,QAAQ,EAAE;QACzBvmS,UAAU,EAAE,CAAC;UAAEE,GAAG,EAAE,mBAAmB;UAAEC,KAAK,EAAEsB,CAAC,CAAC8kS;QAAS,CAAC,CAAC;QAC7D7yR,OAAO,EAAEkzR;QACT;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;MACJ,CAAC;IACL,CAAC,CAAC;IAEFn5R,GAAG,CAACC,iBAAiB,CAAC,CAAC;IAEvBq8J,yBAAyB,GAAGxrK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzDirK,yBAAyB,CAAC3uK,SAAS,CAACE,GAAG,CAAC,SAAS,EAAE,2BAA2B,CAAC;IAE/EyuK,yBAAyB,CAAC/tK,WAAW,CAACgnK,cAAc,CAAC;IACrD+G,yBAAyB,CAAC/tK,WAAW,CAAC8tK,UAAU,CAAC;IAEjDr8J,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC+tK,yBAAyB,CAAC;IAEvD,MAAM/+D,UAAU,GAAGs3D,0BAA0B,CAAC,CAAC;IAC/C70J,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACgvG,UAAU,CAAC;IACxC,IAAI67L,aAAa,GAAGp1R,KAAK,CAAC7S,KAAK,CAAC0nS,iBAAiB,CAAC;;IAElD;IACA,MAAMvxR,OAAO,GAAG8xR,aAAa,CAACjiS,gBAAgB,CAAC,aAAa,CAAC;IAC7DmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAGhDiO,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC6qS,aAAa,CAAC;;IAE3C;IACAp1R,KAAK,CAACqD,iBAAiB,CAAC+xR,aAAa,CAAC;IAEtCp1R,KAAK,CAAC9V,QAAQ,CAAC,eAAe,EAAEowG,SAAS,CAAC;;IAE1C;IACA,IAAI,CAACp/F,CAAC,CAACC,OAAO,CAACokC,cAAc,EAAE;MAC3BgyH,cAAc,CAAC5nK,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACxC0nK,cAAc,CAAC5nK,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MAC1C2pQ,0BAA0B,CAAC,KAAK,CAAC;IACrC;IACA,IAAI5kQ,QAAQ,EAAE;MACVA,QAAQ,CAAC,CAAC;IACd;EACJ;EAEA,SAASwmS,yBAAyBA,CAAC1qS,KAAK,EAAE;IACtC,IAAIwoK,KAAK,GAAGxoK,KAAK,CAACC,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,YAAY,CAAC;IACzD,IAAI49R,MAAM,GAAG5qS,KAAK,CAACC,MAAM,CAACC,OAAO,CAAC2qS,WAAW;IAC7C,IAAI,CAACriI,KAAK,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC/3J,CAAC,CAACC,OAAO,CAACokC,cAAc,EAAE,OAAO,CAAE;;IAExC,IAAIqvH,eAAe,EAAE;MACjB,IAAImjI,aAAa,CAACsD,MAAM,CAAC,CAACjzQ,OAAO,EAAE,OAAO,CAAC;MAC3C33B,KAAK,CAACC,MAAM,CAACf,SAAS,CAACmE,MAAM,CAAC,UAAU,CAAC;MACzC;MACA,IAAIrD,KAAK,CAACC,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC7C;QACA,IAAI,CAAC05R,mBAAmB,CAAC5yL,QAAQ,CAACwzL,aAAa,CAACsD,MAAM,CAAC,CAAC/4K,UAAU,CAAC,EAAE;UACjE60K,mBAAmB,CAACj5R,IAAI,CAAC65R,aAAa,CAACsD,MAAM,CAAC,CAAC/4K,UAAU,CAAC;QAC9D;MACJ,CAAC,MAAM;QACH;QACA60K,mBAAmB,CAACj4Q,MAAM,CACtBi4Q,mBAAmB,CAAC79Q,OAAO,CAACy+Q,aAAa,CAACsD,MAAM,CAAC,CAAC/4K,UAAU,CAAC,EAC7D,CACJ,CAAC;MACL;MACA;MACA,IAAI60K,mBAAmB,CAAC/mS,MAAM,KAAK,CAAC,EAAE;QAClCumS,cAAc,CAAChnS,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC5C,CAAC,MAAM;QACH8mS,cAAc,CAAChnS,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC/C;IACJ,CAAC,MAAM,IAAI,CAACglK,eAAe,EAAE;MACzB2mI,aAAa,CAAC9qS,KAAK,CAACC,MAAM,CAAC;IAC/B;EACJ;EAEA,SAASupK,mBAAmBA,CAACC,QAAQ,EAAE;IACnC5C,cAAc,CAAC,CAAC;IAChBzkK,aAAa,GAAGC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;IAC1D6hK,eAAe,GAAG,CAACA,eAAe;IAClCsF,QAAQ,CAACvqK,SAAS,CAACmE,MAAM,CAAC,SAAS,CAAC;IACpCjB,aAAa,CAAClD,SAAS,CAACmE,MAAM,CAAC,UAAU,CAAC;IAE1C,IAAI8gK,eAAe,EAAE;MACjBrlK,UAAU,CAACQ,IAAI,CAAC,CAAC;IACrB,CAAC,MAAM;MACHktG,iBAAiB,GAAG,EAAE;MACtB1tG,UAAU,CAACO,IAAI,CAAC,CAAC;IACrB;IAEA,IAAI0nK,eAAe,GAAG,EAAE,CAACn4J,KAAK,CAACC,IAAI,CAC/BxM,QAAQ,CAACqG,gBAAgB,CAAC,sBAAsB,CACpD,CAAC;IACDq+J,eAAe,CAACnnK,OAAO,CAACuW,GAAG,IAAIA,GAAG,CAACjX,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC,CAAC;EACpE;EAEA,SAAS2rS,aAAaA,CAAC30R,GAAG,EAAE;IACxB;IACA00R,WAAW,GAAG10R,GAAG,CAACjW,OAAO,CAAC2qS,WAAW;IACrCA,WAAW,GAAG5gR,QAAQ,CAAC4gR,WAAW,CAAC;IACnC,IAAIN,WAAW,GAAGjD,aAAa,CAACuD,WAAW,CAAC,CAACN,WAAW;IACxD,IAAI7hI,QAAQ,GAAGt2J,KAAK,CAAC1P,KAAK,CAAC;MACvBgB,UAAU,EAAE,uBAAuB;MACnC2O,MAAM,EAAEi1R,aAAa,CAACuD,WAAW,CAAC,CAACt/L,QAAQ;MAC3C1oG,EAAE,EAAE,SAASgoS,WAAW;IAC5B,CAAC,CAAC;IAEF,IAAIE,cAAc,GAAG7kS,KAAK,CAACxD,KAAK,CAAC;MAC7BG,EAAE,EAAE,WAAW;MACf2B,KAAK,EAAE,YAAY;MACnBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEqjS,aAAa,CAACuD,WAAW,CAAC,CAACnyQ;IACtC,CAAC,CAAC;IAEF,IAAIsyQ,YAAY,GAAG9kS,KAAK,CAACxD,KAAK,CAAC;MAC3BG,EAAE,EAAE,SAAS;MACb2B,KAAK,EAAE,UAAU;MACjBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEqjS,aAAa,CAACuD,WAAW,CAAC,CAAClzQ;IACtC,CAAC,CAAC;;IAEF;IACA,IAAIszQ,aAAa,GAAG/kS,KAAK,CAACxD,KAAK,CAAC;MAC5BG,EAAE,EAAE,mBAAmB;MACvB2B,KAAK,EAAE,UAAU;MACjBpB,IAAI,EAAE,QAAQ;MACdD,KAAK,EAAE,WAAW;MAClBW,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,EAC1B;QAAED,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAQ,CAAC,EAC9B;QAAED,GAAG,EAAE,YAAY;QAAEC,KAAK,EAAE;MAAsD,CAAC,CACtF;MACDA,KAAK,EAAEqjS,aAAa,CAACuD,WAAW,CAAC,CAACP;IACtC,CAAC,CAAC;IACF;IACA,IAAI33J,OAAO,GAAGlwI,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,MAAM;MACVG,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,MAAM;MACZ;MACAoB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBgnS,mBAAmB,CAACL,WAAW,EAAE10R,GAAG,EAAEuyJ,QAAQ,CAAC;MACnD;IACJ,CAAC,CAAC;IAEF,IAAIyiI,cAAc,GAAG1oS,MAAM,CAACC,KAAK,CAAC;MAC9BG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,cAAc;MACpBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBN,IAAI,EAAE,QAAQ;MACdoB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBysJ,kBAAkB,CACd+X,QAAQ,EACP//G,GAAG,GAAGA,CAAA,KAAM;UACT,IAAIA,GAAG,EAAE;YACLurN,YAAY,CAACk3B,mBAAmB,CAACP,WAAW,CAAC;YAC7C,IAAI14R,MAAM,GAAGgE,GAAG,CAAC3N,aAAa;YAC9B2J,MAAM,CAACV,WAAW,CAAC0E,GAAG,CAAC;UAC3B;QACJ,CACJ,CAAC;MACL;IACJ,CAAC,CAAC;IAEF,IAAIy4B,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACxCwvC,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC;IAC5B/jG,OAAO,CAAC9uC,WAAW,CAACqrS,cAAc,CAAC;IAEnCziI,QAAQ,CAAC5oK,WAAW,CAACirS,cAAc,CAAC;IACpCriI,QAAQ,CAAC5oK,WAAW,CAACkrS,YAAY,CAAC;IAClC,IAAIT,WAAW,EAAE7hI,QAAQ,CAAC5oK,WAAW,CAACmrS,aAAa,CAAC;IACpDviI,QAAQ,CAAC5oK,WAAW,CAAC8uC,OAAO,CAAC;IAE7Bx8B,KAAK,CAAC9S,IAAI,CAACopK,QAAQ,CAAC;EACxB;EAEA,SAAS/X,kBAAkBA,CAAC+X,QAAQ,EAAExkK,QAAQ,EAAE;IAC5CkO,KAAK,CAAC/S,IAAI,CAACqpK,QAAQ,CAAC;IACpB,IAAI6D,SAAS,GAAGn6J,KAAK,CAAC1P,KAAK,CAAC;MACxBgB,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,IAAIqtC,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,IAAI;MACVoB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAACktK,SAAS,CAAC;QACrBn6J,KAAK,CAAC9S,IAAI,CAACopK,QAAQ,CAAC;QACpBxkK,QAAQ,CAAEykD,GAAG,GAAG,KAAM,CAAC;MAC3B;IACJ,CAAC,CAAC;IACF,IAAI6jH,UAAU,GAAG/pK,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,cAAc;MACpBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBP,EAAE,EAAE,eAAe;MACnBC,IAAI,EAAE,QAAQ;MACdoB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAACktK,SAAS,CAAC;QACrBroK,QAAQ,CAAEykD,GAAG,GAAG,IAAK,CAAC;MAC1B;IACJ,CAAC,CAAC;IACF,IAAI/Z,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAC9BnC,OAAO,CAAC9uC,WAAW,CAAC0sK,UAAU,CAAC;IAE/B,IAAI7B,QAAQ,GAAGtoK,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC1C+nK,QAAQ,CAACzrK,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IACzCurK,QAAQ,CAACnrK,SAAS,GAAG,8CAA8C;IACnE+sK,SAAS,CAACzsK,WAAW,CAAC6qK,QAAQ,CAAC;IAC/B4B,SAAS,CAACzsK,WAAW,CAAC8uC,OAAO,CAAC;IAC9Bx8B,KAAK,CAAC9S,IAAI,CAACitK,SAAS,CAAC;EACzB;EAEA,SAAS2+H,mBAAmBA,CAACL,WAAW,EAAE10R,GAAG,EAAEjE,KAAK,EAAE;IAClD;IACA;IACA;IACA;IACA;IACA;;IAEA,IAAIm5R,gBAAgB,GAAGhpS,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAACrB,KAAK;IACjE,IAAIy0B,SAAS,GAAG4uQ,aAAa,CAACuD,WAAW,CAAC,CAACnyQ,SAAS;IACpD,IAAIsyQ,YAAY,GAAG3oS,QAAQ,CAACiD,cAAc,CAAC,SAAS,CAAC;IACrD,IAAI2lS,aAAa,GAAG5oS,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC;IAEhE,IAAI0lS,YAAY,CAAC/mS,KAAK,EAAE;MACpB,IAAIqnS,cAAc,GAAGN,YAAY,CAAC/mS,KAAK;MACvC,IAAIqnS,cAAc,CAAC3rS,MAAM,GAAG,CAAC,EAAE;QAC3B2rS,cAAc,IAAI,KAAK;MAC3B;IACJ;IACA,IAAIL,aAAa,EAAE;MACf,IAAIA,aAAa,CAAChnS,KAAK,EAAE;QAAE,IAAIqmS,QAAQ,GAAGW,aAAa,CAAChnS,KAAK;MAAE,CAAC,MAC3D,IAAIqmS,QAAQ,GAAG,GAAG;IAC3B;IAEA,IAAIe,gBAAgB,KAAKC,cAAc,EAAE;MACrCl5R,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;MACjBE,KAAK,CAAC9S,IAAI,CAAC4qJ,UAAU,CAAC;MACtB8b,cAAc,CAACxmK,SAAS,GAAG,4CAA4C;MACvE;IACJ;;IAEA;IACA;IACA,IAAIk5B,SAAS,KAAKr2B,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAACrB,KAAK,EAAE;MAC1D,IAAIonS,gBAAgB,GAAGhpS,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAACrB,KAAK;MACjE,IAAIonS,gBAAgB,CAAC1rS,MAAM,GAAG,CAAC,EAAE;QAC7B0rS,gBAAgB,IAAI,KAAK;MAC7B;MACA,IAAI,CAACC,cAAc,IAAID,gBAAgB,GAAGC,cAAc,EAAE;QACtDp3B,YAAY,CAACq3B,qBAAqB,CAC9BV,WAAW,EACXQ,gBAAgB,EAChB1iP,GAAG,IAAI;UACH,IAAI;YACA,IAAIA,GAAG,CAAC9/B,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE;cACpC,MAAM,cAAc;YACxB;YACAy+Q,aAAa,CAACuD,WAAW,CAAC,CAACnyQ,SAAS,GAAG2yQ,gBAAgB;YACvD,IAAIG,uBAAuB,GAAGz4Q,IAAI,CAAC8E,mBAAmB,CAClDwzQ,gBACJ,CAAC;YACDl1R,GAAG,CAAC4xP,QAAQ,CAAC,CAAC,CAAC,CAACvoQ,SAAS,GAAGgsS,uBAAuB;YACnDr1R,GAAG,CAACjX,SAAS,CAACC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;YACtCi5B,KAAK,GAAG5H,MAAM,CACVuC,IAAI,CAACgX,mBAAmB,CACpBu9P,aAAa,CAACuD,WAAW,CAAC,CAACnyQ,SAAS,EACpC4uQ,aAAa,CAACuD,WAAW,CAAC,CAAClzQ,OAC/B,CACJ,CAAC;YACDxhB,GAAG,CAAC4xP,QAAQ,CAAC,CAAC,CAAC,CAACvoQ,SAAS,GAAG44B,KAAK;UACrC,CAAC,CAAC,OAAOxzB,CAAC,EAAE;YACR,IAAIA,CAAC,KAAK,cAAc,EAAE;cACtBwN,KAAK,CAAC9S,IAAI,CAAC4qJ,UAAU,CAAC;cACtB8b,cAAc,CAACxmK,SAAS,GACpB,sCAAsC;YAC9C;UACJ;QACJ,CACJ,CAAC;MACL,CAAC,MAAM;QACH4S,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjBE,KAAK,CAAC9S,IAAI,CAAC4qJ,UAAU,CAAC;QACtB8b,cAAc,CAACxmK,SAAS,GAAG,yCAAyC;QACpE;MACJ;IACJ;;IAEA;IACA,IAAI8rS,cAAc,EAAE;MAChB,IACIA,cAAc,GAAGhE,aAAa,CAACuD,WAAW,CAAC,CAACnyQ,SAAS,IACrD4yQ,cAAc,KAAKhE,aAAa,CAACuD,WAAW,CAAC,CAAClzQ,OAAO,EACvD;QACE2vQ,aAAa,CAACuD,WAAW,CAAC,CAAClzQ,OAAO,GAAG2zQ,cAAc;QACnDp3B,YAAY,CAACu3B,sBAAsB,CAC/BZ,WAAW,EACXS,cAAc,EACd3iP,GAAG,IAAI;UACH,IAAI;YACA,IAAIA,GAAG,CAAC9/B,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;cAClC,MAAM,cAAc;YACxB;YACA6iR,qBAAqB,GAAG34Q,IAAI,CAAC8E,mBAAmB,CAACyzQ,cAAc,CAAC;YAChEn1R,GAAG,CAAC4xP,QAAQ,CAAC,CAAC,CAAC,CAACvoQ,SAAS,GAAGksS,qBAAqB;YACjDv1R,GAAG,CAACjX,SAAS,CAACC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;YACtCi5B,KAAK,GAAG5H,MAAM,CACVuC,IAAI,CAACgX,mBAAmB,CACpBu9P,aAAa,CAACuD,WAAW,CAAC,CAACnyQ,SAAS,EACpC4uQ,aAAa,CAACuD,WAAW,CAAC,CAAClzQ,OAC/B,CACJ,CAAC;YACDxhB,GAAG,CAAC4xP,QAAQ,CAAC,CAAC,CAAC,CAACvoQ,SAAS,GAAG44B,KAAK;UACrC,CAAC,CAAC,OAAOxzB,CAAC,EAAE;YACRwN,KAAK,CAAC9S,IAAI,CAAC4qJ,UAAU,CAAC;YACtB8b,cAAc,CAACxmK,SAAS,GAAG,sCAAsC;UACrE;QACJ,CACJ,CAAC;MACL,CAAC,MAAM,IAAI8rS,cAAc,GAAG5yQ,SAAS,EAAE;QACnCtmB,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjBE,KAAK,CAAC9S,IAAI,CAAC4qJ,UAAU,CAAC;QACtB8b,cAAc,CAACxmK,SAAS,GAAG,0CAA0C;QACrE;MACJ;IACJ;;IAEA;IACA,IAAI8qS,QAAQ,IAAIA,QAAQ,KAAKhD,aAAa,CAACuD,WAAW,CAAC,CAACP,QAAQ,EAAE;MAC9DhD,aAAa,CAACuD,WAAW,CAAC,CAACP,QAAQ,GAAGA,QAAQ;MAC9Cp2B,YAAY,CAACy3B,sBAAsB,CAACrB,QAAQ,EAAEO,WAAW,CAAC;MAC1D10R,GAAG,CAAC4xP,QAAQ,CAAC,CAAC,CAAC,CAACvoQ,SAAS,GAAG8qS,QAAQ,KAAK,GAAG,GAAGrnS,KAAK,CAACmO,KAAK,GAAGk5R,QAAQ;IACzE;IACAl4R,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;EACrB;EAEA,SAAS05R,gBAAgBA,CAAC15L,MAAM,EAAE;IAC9B,IAAI3F,WAAW,GAAGn6F,KAAK,CAAC1P,KAAK,CAAC;MAC1B2P,MAAM,EAAE,cAAc;MACtBxP,EAAE,EAAE;IACR,CAAC,CAAC;;IAEF;IACAgrJ,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAC9B4B,UAAU,EAAE,kBAAkB;MAC9BE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEF0qJ,gBAAgB,CAACrrJ,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MAC9C,IAAIqC,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE49J,UAAU,GAAG79J,cAAc,CAACZ,KAAK;MACjCkjS,WAAW,CAACC,mBAAmB,GAAGpnS,KAAK,CAACC,MAAM,CAAC6E,aAAa;MAC5DkiS,sBAAsB,CAACpzO,YAAY,GAAG/uD,cAAc,CAACrF,SAAS;MAC9DmqS,iBAAiB,CAACjnI,UAAU,EAAE,IAAI,CAAC;IACvC,CAAC,CAAC;;IAEF;IACAsjI,WAAW,GAAG3hS,QAAQ,CAAC3B,KAAK,CAAC;MACzB4B,UAAU,EAAE,mBAAmB;MAC/BE,KAAK,EAAE,KAAK;MACZrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,IAAI0oS,cAAc,GAAGppS,MAAM,CAACC,KAAK,CAAC;MAC9BG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClByiK,iBAAiB,CAAC,CAAC;QACnBv0J,KAAK,CAAC/S,IAAI,CAACktG,WAAW,CAAC;MAC3B;IACJ,CAAC,CAAC;IAEF,IAAI2F,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,aAAa,EAC1C3F,WAAW,CAACzsG,WAAW,CAAC+tJ,gBAAgB,CAAC;IAC7C,IAAI37C,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,YAAY,EACzC3F,WAAW,CAACzsG,WAAW,CAACkmS,WAAW,CAAC;IACxC,IAAI9zL,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,gBAAgB,EAC7C3F,WAAW,CAACzsG,WAAW,CAAC8oS,aAAa,CAAC;IAC1Cr8L,WAAW,CAACzsG,WAAW,CAAC+rS,cAAc,CAAC;IACvCz5R,KAAK,CAAC9S,IAAI,CAACitG,WAAW,CAAC;IACvBo9L,iBAAiB,CAACjnI,UAAU,EAAE,IAAI,CAAC;IAEnCopI,sBAAsB,GAAGzpS,QAAQ,CAACiD,cAAc,CAAC,kBAAkB,CAAC;IACpEymS,iBAAiB,GAAG1pS,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC;;IAEhE;IACAjB,QAAQ,CAAC5E,QAAQ,CACb,kBAAkB,EAClB2mS,0BAA0B,EAC1B1jI,UACJ,CAAC;IACD;IACA;IACA6jI,qBAAqB,CAAC,CAAC,CAAC,CAACvjS,IAAI,GAAG,KAAK;IACrCujS,qBAAqB,CAAC,CAAC,CAAC,CAACtiS,KAAK,GAAG,CAAC;IAClCqiS,2BAA2B,GACrBjiS,QAAQ,CAAC5E,QAAQ,CAAC,mBAAmB,EAAE6mS,2BAA2B,CAAC,GACnEjiS,QAAQ,CAAC5E,QAAQ,CAAC,mBAAmB,EAAE8mS,qBAAqB,CAAC;IACnEwF,iBAAiB,CAACppS,OAAO,CAACmC,aAAa,GAAGqiS,WAAW,CAACE,kBAAkB;EAC5E;EAEA,SAAS1gI,iBAAiBA,CAAA,EAAG;IACzB,IAAItkK,QAAQ,CAACiD,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;MACzCyhS,cAAc,GAAG1kS,QAAQ,CAACiD,cAAc,CAAC,MAAM,CAAC,CAACrB,KAAK;MACtD+iS,sBAAsB,CAACx5K,YAAY,GAAGu5K,cAAc;IACxD;IAEA,IAAI1kS,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC,IAAI,IAAI,EAAE;MACtD0gS,WAAW,GAAG3jS,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC;MAC1D0hS,sBAAsB,CAACC,SAAS,GAAGjB,WAAW,CAACrjS,OAAO,CAACqjS,WAAW,CAAClhS,aAAa,CAAC,CAACb,KAAK;MACvFkjS,WAAW,CAACE,kBAAkB,GAAGrB,WAAW,CAAClhS,aAAa;IAC9D;IACA,IAAIzC,QAAQ,CAACiD,cAAc,CAAC,kBAAkB,CAAC,IAAI,IAAI,EAAE;MACrDuoJ,gBAAgB,GAAGxrJ,QAAQ,CAACiD,cAAc,CAAC,kBAAkB,CAAC;MAC9D0hS,sBAAsB,CAACrzO,UAAU,GAAGk6F,gBAAgB,CAAClrJ,OAAO,CAACkrJ,gBAAgB,CAAC/oJ,aAAa,CAAC,CAACb,KAAK;MAClGy+J,UAAU,GAAG7U,gBAAgB,CAAClrJ,OAAO,CAACkrJ,gBAAgB,CAAC/oJ,aAAa,CAAC,CAACb,KAAK;MAC3EkjS,WAAW,CAACC,mBAAmB,GAAGv5I,gBAAgB,CAAC/oJ,aAAa;IACpE,CAAC,MACI;MACDkiS,sBAAsB,CAACrzO,UAAU,GAAG+uG,UAAU;IAClD;IAEA,IAAI3xJ,QAAQ,CAAC+2J,oBAAoB,CAAC,UAAU,CAAC,EACzC/2J,QAAQ,CAACooI,WAAW,CAAC,UAAU,EAAEupB,UAAU,CAAC;;IAEhD;IACAv0D,OAAO,CAACoiD,kBAAkB,CAACw2I,cAAc,CAAC;IAC1C;IACA7yB,YAAY,CAAC40B,8BAA8B,CACvC/B,cAAc,EACdC,sBAAsB,CAACrzO,UAAU,EACjChL,GAAG,IAAI;MACH,MAAMq/G,gBAAgB,GAAG,EAAE;MAC3Br/G,GAAG,CAAC/oD,OAAO,CAAC8gB,CAAC,IAAI;QACb,IAAIunJ,WAAW,GAAGvnJ,CAAC,CAACqoR,WAAW;QAC/B,MAAMC,gBAAgB,GAAGtB,sBAAsB,CAAC75R,MAAM,CAAC09F,QAAQ,IAAIA,QAAQ,CAAC1oG,EAAE,KAAKolK,WAAW,CAAC;QAC/F,IAAI+gI,gBAAgB,CAACrpS,MAAM,KAAK,CAAC,EAAEqoK,gBAAgB,CAACv6J,IAAI,CAAC;UAAE,aAAa,EAAEw6J;QAAY,CAAC,CAAC;MAC5F,CAAC,CAAC;MACF95D,OAAO,CAAC+5D,mBAAmB,CAACF,gBAAgB,CAAC;IACjD,CACJ,CAAC;IACDksG,YAAY,CAAC83B,kBAAkB,CAAChF,sBAAsB,EAAE8C,kBAAkB,CAAC;IAC3E1jI,0BAA0B,CAAC,CAAC;EAChC;EAEA,SAASA,0BAA0BA,CAAA,EAAG;IAClC,IAAIvtD,oBAAoB,GAAGx2G,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IACpE,IAAI,CAACu2G,oBAAoB,EAAE;MACvBmuL,sBAAsB,CAACpzO,YAAY,GAAG8uG,UAAU,IAAI,CAAC,GAAG,KAAK,GAAG8kI,gBAAgB,CAAC9kI,UAAU,CAAC,CAACxjC,OAAO;MACpG8nK,sBAAsB,CAACrzO,UAAU,GAAG+uG,UAAU;MAC9C7pD,oBAAoB,GAAGx2G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACpDi2G,oBAAoB,CAAC35G,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MACpD0xG,eAAe,CAAC,CAAC;MACjB+H,oBAAoB,CAAC/4G,WAAW,CAAC8uC,OAAO,CAAC;IAC7C;IAEAiqE,oBAAoB,CAAC11G,KAAK,CAAC4yF,QAAQ,GAAG,MAAM;IAE5C,IAAIixM,sBAAsB,CAACrzO,UAAU,IAAI,GAAG,EAAE;MAC1C/kB,OAAO,CAAC9uC,WAAW,CAACmjK,eAAe,CAAC;MACpCr0H,OAAO,CAACn9B,WAAW,CAACwxJ,eAAe,CAAC;IACxC,CAAC,MAAM;MACH,IAAI5gK,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,IAAI,IAAI,EAC9CjD,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,CAAC9F,SAAS,GAAG,YAAY,GAAGwnS,sBAAsB,CAACpzO,YAAY;MACzGhlB,OAAO,CAAC9uC,WAAW,CAACmjK,eAAe,CAAC;IACxC;IAEA,IAAI+jI,sBAAsB,CAACC,SAAS,KAAK,GAAG,IAAID,sBAAsB,CAACC,SAAS,KAAK,CAAC,EAAE;MACpFr4P,OAAO,CAAC9uC,WAAW,CAAC6nS,cAAc,CAAC;MACnC/4P,OAAO,CAACn9B,WAAW,CAACk2R,cAAc,CAAC;IACvC,CAAC,MAAM;MACH,IAAItlS,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,IAAI,IAAI,EAC7CjD,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,CAAC9F,SAAS,GAAGwnS,sBAAsB,CAACC,SAAS,IAAI,GAAG,GAAG,UAAU,GAAG,OAAO,GAAGM,WAAW,CAACP,sBAAsB,CAACC,SAAS,CAAC,CAACqC,SAAS;MAC9K16P,OAAO,CAAC9uC,WAAW,CAAC6nS,cAAc,CAAC;IACvC;IAEA,IAAItlS,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC,IAAI,IAAI,EACjDjD,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC,CAAC9F,SAAS,GAAG,QAAQ,GAAGwnS,sBAAsB,CAACx5K,YAAY;IAGxG,OAAO3U,oBAAoB;EAC/B;EAEA,SAAS/H,eAAeA,CAAA,EAAG;IACvBC,SAAS,GAAGtuG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,cAAc;MAC1BQ,QAAQ,EAAEA,CAAA,KAAM;QAAE0nS,gBAAgB,CAAC,KAAK,CAAC;MAAC;IAC9C,CAAC,CAAC;IAEFrlI,WAAW,GAAG9jK,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,YAAY,GAAGgkS,sBAAsB,CAACpzO,YAAY;MACxDzwD,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE0nS,gBAAgB,CAAC,aAAa,CAAC;MAAC;IACtD,CAAC,CAAC;IACFK,gBAAgB,GAAGxpS,MAAM,CAACC,KAAK,CAAC;MAC5BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,aAAa,CAAC;MAAC;IACjD,CAAC,CAAC;IAEF+6L,UAAU,GAAGzpS,MAAM,CAACC,KAAK,CAAC;MACtBG,EAAE,EAAE,YAAY;MAChBG,IAAI,EAAEgkS,sBAAsB,CAACC,SAAS,IAAI,GAAG,IAAID,sBAAsB,CAACC,SAAS,KAAK,CAAC,GAAG,UAAU,GAAG,OAAO,GAAGM,WAAW,CAACP,sBAAsB,CAACC,SAAS,CAAC,CAACqC,SAAS;MACxKnmS,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE0nS,gBAAgB,CAAC,YAAY,CAAC;MAAC;IACrD,CAAC,CAAC;IACFO,eAAe,GAAG1pS,MAAM,CAACC,KAAK,CAAC;MAC3BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,YAAY,CAAC;MAAC;IAChD,CAAC,CAAC;IAEFq1D,cAAc,GAAG/jK,MAAM,CAACC,KAAK,CAAC;MAC1BG,EAAE,EAAE,gBAAgB;MACpBG,IAAI,EAAE,QAAQ,GAAGgkS,sBAAsB,CAACx5K,YAAY;MACpDrqH,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE0nS,gBAAgB,CAAC,gBAAgB,CAAC;MAAC;IACzD,CAAC,CAAC;IAEFh9P,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvCgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IACtCwvC,OAAO,CAAC9uC,WAAW,CAACixG,SAAS,CAAC;IAE9BkyD,eAAe,GAAG5gK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CqgK,eAAe,CAAC/jK,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvD6jK,eAAe,CAACnjK,WAAW,CAACymK,WAAW,CAAC;IACxCtD,eAAe,CAACnjK,WAAW,CAACmsS,gBAAgB,CAAC;IAC7Cr9P,OAAO,CAAC9uC,WAAW,CAACmjK,eAAe,CAAC;IAEpC0kI,cAAc,GAAGtlS,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9C+kS,cAAc,CAACzoS,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACtDuoS,cAAc,CAAC7nS,WAAW,CAACosS,UAAU,CAAC;IACtCvE,cAAc,CAAC7nS,WAAW,CAACqsS,eAAe,CAAC;IAC3Cv9P,OAAO,CAAC9uC,WAAW,CAAC6nS,cAAc,CAAC;IAEnCzkI,kBAAkB,GAAG7gK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDsgK,kBAAkB,CAAChkK,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC1D8jK,kBAAkB,CAACpjK,WAAW,CAAC0mK,cAAc,CAAC;IAC9C53H,OAAO,CAAC9uC,WAAW,CAACojK,kBAAkB,CAAC;EAC3C;EAEA,SAAS/xD,WAAWA,CAACA,WAAW,EAAE;IAC9B,IAAIA,WAAW,IAAI,YAAY,EAAE;MAC7B61L,sBAAsB,CAACC,SAAS,GAAG,CAAC;IACxC;IACA,IAAI91L,WAAW,IAAI,aAAa,EAAE;MAC9BuxD,UAAU,GAAG,GAAG;MAChBskI,sBAAsB,CAACrzO,UAAU,GAAG,GAAG;IAC3C;IACAgzG,iBAAiB,CAAC,CAAC;EACvB;EAEA,SAASC,qBAAqBA,CAAA,EAAG;IAC7B,IAAI10J,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACpB2P,MAAM,EAAE,yBAAyB;MACjCxP,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,IAAIioK,UAAU,GAAGroK,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,UAAU;MAChBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB23J,qBAAqB,CAAC,IAAI,CAAC;MAC/B;IACJ,CAAC,CAAC;IACF,IAAIuB,WAAW,GAAG3oK,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,WAAW;MACjBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB23J,qBAAqB,CAAC,KAAK,CAAC;MAChC;IACJ,CAAC,CAAC;IACF,IAAIj7H,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IACtCwvC,OAAO,CAAC9uC,WAAW,CAACgrK,UAAU,CAAC;IAC/Bl8H,OAAO,CAAC9uC,WAAW,CAACsrK,WAAW,CAAC;IAChCl5J,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACrB;EAEA,SAAS23J,qBAAqBA,CAACwB,MAAM,EAAE;IACnC;IACA,IAAI+gI,eAAe,GAAG/pS,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAClDwpS,eAAe,CAAC5sS,SAAS,GAAG,aAAakjK,UAAU,IAAI,CAAC,GAClD,uBAAuB,GACvB8kI,gBAAgB,CAAC9kI,UAAU,CAAC,CAACxjC,OAAO,EACpC;IACN;IACA;IACA;IACA;IACA;IACA,IAAImtK,WAAW,GAAGhqS,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC9CypS,WAAW,CAAC7sS,SAAS,GAAG,kBAAkBuzB,IAAI,CAACmY,iBAAiB,CAC5D67P,cACJ,CAAC,EAAE;IAEHuF,oBAAoB,GAAGjoS,QAAQ,CAAC3B,KAAK,CAAC;MAClC4B,UAAU,EAAE,sBAAsB;MAClCE,KAAK,EAAE,KAAK;MACZrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEFyuQ,yBAAyB,GAAGvtQ,QAAQ,CAAC3B,KAAK,CAAC;MACvC4B,UAAU,EAAE,2BAA2B;MACvCE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,IAAImoK,OAAO,GAAGl5J,KAAK,CAAC1P,KAAK,CAAC;MACtB2P,MAAM,EAAE,UAAU;MAClBxP,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,IAAI0oK,QAAQ,GAAGn5J,KAAK,CAAC1P,KAAK,CAAC;MACvB2P,MAAM,EAAE,WAAW;MACnBxP,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,IAAI2oK,WAAW,GAAGtlK,KAAK,CAACxD,KAAK,CAAC;MAC1BG,EAAE,EAAE,QAAQ;MACZ2B,KAAK,EAAE,SAAS;MAChBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAE,SAAAA,CAAA,EAAY,CAAE;IAC5B,CAAC,CAAC;IACFsnK,WAAW,CAACtsK,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAElC,IAAIqsK,YAAY,GAAGvlK,KAAK,CAACxD,KAAK,CAAC;MAC3BG,EAAE,EAAE,SAAS;MACb2B,KAAK,EAAE,UAAU;MACjBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE;IACX,CAAC,CAAC;IACFsoK,YAAY,CAACvsK,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAEnC,IAAI0rK,UAAU,GAAGroK,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,UAAU;MAChBG,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBN,IAAI,EAAE,WAAW;MACjBP,EAAE,EAAE,YAAY;MAChBqB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBwnK,OAAO,CAAC,CAAC;QACTt5J,KAAK,CAAC/S,IAAI,CAACisK,OAAO,CAAC;QACnB;MACJ;IACJ,CAAC,CAAC;IAEF,IAAIF,WAAW,GAAG3oK,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,WAAW;MACjBG,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBN,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBynK,QAAQ,CAAC,CAAC;QACVx9D,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;QAC9B1mI,KAAK,CAAC/S,IAAI,CAACksK,QAAQ,CAAC;QACpB;MACJ;IACJ,CAAC,CAAC;IAEF,IAAIK,WAAW,GAAGnpK,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBiqG,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;QAC9B1mI,KAAK,CAAC/S,IAAI,CAACisK,OAAO,CAAC;MACvB;IACJ,CAAC,CAAC;IAEF,IAAIO,YAAY,GAAGppK,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBiqG,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;QAC9B1mI,KAAK,CAAC/S,IAAI,CAACksK,QAAQ,CAAC;MACxB;IACJ,CAAC,CAAC;IAEF,IAAI38H,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhCosK,WAAW,CAAChpK,gBAAgB,CAAC,QAAQ,EAAE,YAAY;MAC/C,IAAI2nK,WAAW,GAAG9nK,QAAQ,CAACiD,cAAc,CAAC,QAAQ,CAAC;MACnD,IAAI6kK,WAAW,CAAClmK,KAAK,KAAK,EAAE,EAAE;QAC1BunK,WAAW,CAACtsK,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACtC,CAAC,MAAM;QACHosK,WAAW,CAACtsK,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACzC;MACAkwH,mBAAmB,CAACy7C,UAAU,CAAC;IACnC,CAAC,CAAC;IACFW,YAAY,CAACjpK,gBAAgB,CAAC,QAAQ,EAAE,YAAY;MAChD,IAAI4nK,YAAY,GAAG/nK,QAAQ,CAACiD,cAAc,CAAC,SAAS,CAAC;MACrD,IAAI8kK,YAAY,CAACnmK,KAAK,KAAK,EAAE,EAAE;QAC3BwnK,YAAY,CAACvsK,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACvC,CAAC,MAAM;QACHqsK,YAAY,CAACvsK,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC1C;MACAkwH,mBAAmB,CAAC+7C,WAAW,CAAC;IACpC,CAAC,CAAC;IACFkhI,oBAAoB,CAACptS,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC3CktS,oBAAoB,CAAC9pS,gBAAgB,CAAC,QAAQ,EAAE,YAAY;MACxD,IAAI+pS,yBAAyB,GAAGlqS,QAAQ,CAACiD,cAAc,CACnD,sBACJ,CAAC;MACD,IACIinS,yBAAyB,CAAC5pS,OAAO,CAC7B4pS,yBAAyB,CAACznS,aAAa,CAC1C,CAACb,KAAK,KAAK,GAAG,EACjB;QACEqoS,oBAAoB,CAACptS,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MAC/C,CAAC,MAAM;QACHktS,oBAAoB,CAACptS,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAClD;MACAkwH,mBAAmB,CAACy7C,UAAU,CAAC;IACnC,CAAC,CAAC;IAEF,QAAQO,MAAM;MACV,KAAK,IAAI;QAAE;UACPC,OAAO,CAACxrK,WAAW,CAACusS,WAAW,CAAC;UAChC/gI,OAAO,CAACxrK,WAAW,CAACssS,eAAe,CAAC;UACpC9gI,OAAO,CAACxrK,WAAW,CAACwsS,oBAAoB,CAAC;UACzChhI,OAAO,CAACxrK,WAAW,CAACmmS,kBAAkB,CAAC;UACvC36H,OAAO,CAACxrK,WAAW,CAAC0rK,WAAW,CAAC;UAChC58H,OAAO,CAAC9uC,WAAW,CAACgrK,UAAU,CAAC;UAC/Bl8H,OAAO,CAAC9uC,WAAW,CAAC8rK,WAAW,CAAC;UAChCN,OAAO,CAACxrK,WAAW,CAAC8uC,OAAO,CAAC;UAC5Bx8B,KAAK,CAAC9S,IAAI,CAACgsK,OAAO,CAAC;UAEnBq+H,iBAAiB,CAACjnI,UAAU,EAAE,KAAK,CAAC;UACpC;;UAEA;UACA;;UAEAr+J,QAAQ,CAAC5E,QAAQ,CAAC,sBAAsB,EAAE8mS,qBAAqB,CAAC;UAChEliS,QAAQ,CAAC5E,QAAQ,CACb,oBAAoB,EACpB+mS,sBAAsB,EACtB/1R,CAAC,CAACC,OAAO,CAACmoC,QACd,CAAC,CAAC,CAAC;UACH;QACJ;MACA,KAAK,KAAK;QAAE;UACR0yH,QAAQ,CAACzrK,WAAW,CAAC2rK,YAAY,CAAC;UAClC78H,OAAO,CAAC9uC,WAAW,CAACsrK,WAAW,CAAC;UAChCx8H,OAAO,CAAC9uC,WAAW,CAAC+rK,YAAY,CAAC;UACjCN,QAAQ,CAACzrK,WAAW,CAAC8uC,OAAO,CAAC;UAC7Bx8B,KAAK,CAAC9S,IAAI,CAACisK,QAAQ,CAAC;UACpB;QACJ;IACJ;EACJ;EAEA,SAASG,OAAOA,CAAA,EAAG;IACf,IAAI8gI,YAAY;IAChB,IAAIT,iBAAiB,GAAG1pS,QAAQ,CAACiD,cAAc,CAAC,sBAAsB,CAAC;IACvE,IAAImnS,YAAY,GAAGxiR,QAAQ,CACvB8hR,iBAAiB,CAACppS,OAAO,CAACopS,iBAAiB,CAACjnS,aAAa,CAAC,CAACb,KAC/D,CAAC;IACD;IACA,IAAIyoS,gBAAgB,GAAGrqS,QAAQ,CAACiD,cAAc,CAAC,oBAAoB,CAAC;IACpE,IAAIqnS,gBAAgB,GAAGD,gBAAgB,CAAC5nS,aAAa;IACrD,IAAI6nS,gBAAgB,KAAK,CAAC,CAAC,EAAE;MACzBH,YAAY,GACRE,gBAAgB,CAAC/pS,OAAO,CAAC+pS,gBAAgB,CAAC5nS,aAAa,CAAC,CAACb,KAAK;IACtE,CAAC,MAAM;MACHuoS,YAAY,GAAG,GAAG;IACtB;IACA,IAAIriI,WAAW,GAAG9nK,QAAQ,CAACiD,cAAc,CAAC,QAAQ,CAAC;IACnD,IAAIqkK,MAAM,GAAGQ,WAAW,CAAClmK,KAAK,GAAG,KAAK;IAEtC2oS,MAAM,GAAG;MACL1F,OAAO,EAAET,eAAe;MACxBoG,WAAW,EAAErgM,iBAAiB,CAACpjG,GAAG,CAACxE,CAAC,IAAIA,CAAC,CAAC/B,EAAE,CAAC,CAACuoB,IAAI,CAAC,GAAG,CAAC;MACvD0hR,UAAU,EAAEvF,WAAW,CAACkF,YAAY,CAAC,CAACrD,YAAY;MAClDnC,SAAS,EAAEM,WAAW,CAACkF,YAAY,CAAC,CAACxF,SAAS;MAC9CqC,SAAS,EAAE/B,WAAW,CAACkF,YAAY,CAAC,CAACnD,SAAS;MAC9Ch/R,QAAQ,EAAEo4J,UAAU;MACpBl1C,YAAY,EAAEu5K,cAAc;MAC5BgG,UAAU,EAAE,OAAO;MACnBtC,UAAU,EAAE+B,YAAY;MACxB51Q,IAAI,EAAE+yI,MAAM;MACZ16H,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;IACrB,CAAC;IAEDiuP,sBAAsB,CAACC,SAAS,GAAG,CAAC;IAEpC/yB,YAAY,CAAC84B,eAAe,CAACJ,MAAM,EAAEjkP,GAAG,IAAI;MACxC,IAAIA,GAAG,CAAChpD,MAAM,GAAG,CAAC,EAAE;QAChB;QACAstS,iBAAiB,CAACtkP,GAAG,EAAE,IAAI,CAAC;MAChC,CAAC,MAAM;QACH6jD,iBAAiB,GAAG,EAAE;QACtB86L,aAAa,GAAG,CAAC,CAAC;QAClBpzB,YAAY,CAAC83B,kBAAkB,CAC3BhF,sBAAsB,EACtB8C,kBACJ,CAAC;MACL;MAEA37L,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;IAClC,CAAC,CAAC;EACN;EAEA,SAAS6yB,QAAQA,CAAA,EAAG;IAChB,IAAIvB,YAAY,GAAG/nK,QAAQ,CAACiD,cAAc,CAAC,SAAS,CAAC;IACrD,IAAI2kK,OAAO,GAAGG,YAAY,CAACnmK,KAAK,GAAG,KAAK;IACxCipS,OAAO,GAAG;MACNhG,OAAO,EAAET,eAAe;MACxBoG,WAAW,EAAErgM,iBAAiB,CAACpjG,GAAG,CAACxE,CAAC,IAAIA,CAAC,CAAC/B,EAAE,CAAC,CAACuoB,IAAI,CAAC,GAAG,CAAC;MACvD0hR,UAAU,EAAE,EAAE;MACd7F,SAAS,EAAE,GAAG;MACdqC,SAAS,EAAE,EAAE;MACbh/R,QAAQ,EAAE,GAAG;MACbkjH,YAAY,EAAEu5K,cAAc;MAC5BgG,UAAU,EAAE,KAAK;MACjBtC,UAAU,EAAE,GAAG;MACf7zQ,IAAI,EAAEqzI,OAAO;MACbh7H,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;IACrB,CAAC;IAEDiuP,sBAAsB,CAACC,SAAS,GAAG,CAAC;IAEpC/yB,YAAY,CAACi5B,gBAAgB,CAACD,OAAO,EAAEvkP,GAAG,IAAI;MAC1C,IAAIA,GAAG,CAAChpD,MAAM,GAAG,CAAC,EAAE;QAChBstS,iBAAiB,CAACtkP,GAAG,EAAE,KAAK,CAAC;MACjC,CAAC,MAAM;QACH6jD,iBAAiB,GAAG,EAAE;QACtB86L,aAAa,GAAG,CAAC,CAAC;QAClBpzB,YAAY,CAAC83B,kBAAkB,CAC3BhF,sBAAsB,EACtB8C,kBACJ,CAAC;MACL;IACJ,CAAC,CAAC;EACN;EAEA,SAASmD,iBAAiBA,CAACG,cAAc,EAAEC,WAAW,EAAE;IACpD,IAAIpiI,kBAAkB,GAAGz+D,iBAAiB,CAAC7sG,MAAM,GAAGytS,cAAc,CAACztS,MAAM;IAEzE,IAAIstS,iBAAiB,GAAG76R,KAAK,CAAC1P,KAAK,CAAC;MAChC2P,MAAM,EAAE;AACpB,QAAQ44J,kBAAkB,IAAIA,kBAAkB,KAAK,CAAC,GAAG,WAAW,GAAG,UAAU,YACrDoiI,WAAW;AACvC,cAAcD,cAAc,CAACztS,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,IAAIytS,cAAc,CAACztS,MAAM,IAC7DytS,cAAc,CAACztS,MAAM,KAAK,CAAC,GAAG,UAAU,GAAG,WAAW;AAC1E,OAAO;MACKkD,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,IAAIyqS,sBAAsB,GAAGjrS,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAE1DwqS,cAAc,CAACxtS,OAAO,CAAC8gB,CAAC,IAAI;MACxB,IAAI6sR,aAAa,GAAGlrS,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;MAC/C2qS,aAAa,CAAC/tS,SAAS,GAAG,OAAO8nS,aAAa,CAAC5mR,CAAC,CAAC,CAAC6qF,QAAQ;AACtE,iBAAiBx4E,IAAI,CAAC8E,mBAAmB,CAACyvQ,aAAa,CAAC5mR,CAAC,CAAC,CAACgY,SAAS,CAAC;AACrE,kBAAkB3F,IAAI,CAAC8E,mBAAmB,CAACyvQ,aAAa,CAAC5mR,CAAC,CAAC,CAACiX,OAAO,CAAC;AACpE,OAAO;MACK21Q,sBAAsB,CAACxtS,WAAW,CAACytS,aAAa,CAAC;IACrD,CAAC,CAAC;IAEF,IAAIC,UAAU,GAAG/qS,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,kBAAkB;MACxBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC4tS,iBAAiB,CAAC;QAC7BQ,iBAAiB,CAACL,cAAc,CAAC;MACrC;IACJ,CAAC,CAAC;IACF,IAAI1iI,WAAW,GAAGjoK,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,UAAU;MAChBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBojS,aAAa,GAAG,CAAC,CAAC;QAClBpzB,YAAY,CAAC83B,kBAAkB,CAC3BhF,sBAAsB,EACtB8C,kBACJ,CAAC;QACD13R,KAAK,CAAC/S,IAAI,CAAC4tS,iBAAiB,CAAC;MACjC;IACJ,CAAC,CAAC;IACFzgM,iBAAiB,GAAG,EAAE;IACtB,IAAI59D,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC0tS,UAAU,CAAC;IAC/B5+P,OAAO,CAAC9uC,WAAW,CAAC4qK,WAAW,CAAC;IAChCuiI,iBAAiB,CAACntS,WAAW,CAACwtS,sBAAsB,CAAC;IACrDL,iBAAiB,CAACntS,WAAW,CAAC8uC,OAAO,CAAC;IAEtCx8B,KAAK,CAAC9S,IAAI,CAAC2tS,iBAAiB,CAAC;EACjC;EAEA,SAASQ,iBAAiBA,CAACL,cAAc,EAAE;IACvCpG,sBAAsB,CAACppL,WAAW,GAAGwvL,cAAc,CAC9ChkS,GAAG,CAACsX,CAAC,IAAI4mR,aAAa,CAAC5mR,CAAC,CAAC,CAACmxG,UAAU,CAAC,CACrCzmG,IAAI,CAAC,GAAG,CAAC;IAEd8oP,YAAY,CAAC83B,kBAAkB,CAAChF,sBAAsB,EAAEr+O,GAAG,IAAI;MAC3Dq+O,sBAAsB,CAACppL,WAAW,GAAG4qL,qBAAqB,CACtDd,sBACJ,CAAC;MACDoC,kBAAkB,CAACnhP,GAAG,EAAEzkD,QAAQ,IAAI;QAChCkpS,cAAc,CAACxtS,OAAO,CAAC8gB,CAAC,IAAI;UACxBvK,GAAG,GAAG9T,QAAQ,CAACiD,cAAc,CAAC,SAASob,CAAC,EAAE,CAAC;UAC3CvK,GAAG,CAACjX,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;QACrC,CAAC,CAAC;MACN,CAAC,CAAC;IACN,CAAC,CAAC;EACN;EAEA,SAASoB,oBAAoBA,CAACP,MAAM,EAAE;IAClC,IAAIiuG,YAAY,GAAGjuG,MAAM,CAACC,OAAO,CAACC,SAAS;IAC3C,IAAIutS,UAAU,GAAGrrS,QAAQ,CAACC,aAAa,CAAC,yBAAyB,CAAC;IAClE,IAAImoK,YAAY,GAAGpoK,QAAQ,CAACC,aAAa,CAAC,yBAAyB,CAAC;IACpE6jS,eAAe,GAAG9jS,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;IAE5D,QAAQ4rG,YAAY;MAChB;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA,KAAK,gBAAgB;QAAE;UACnB,IAAIu5L,gBAAgB,EAAE;YAClBC,sBAAsB,GAAGv5L,OAAO,CAACC,kBAAkB,CAAC,CAAC;YACrDq5L,gBAAgB,GAAG,KAAK;YACxBpyL,+BAA+B,CAAC,UAAU,CAAC;YAC3C9jG,GAAG,CAACkoB,eAAe,CAAC,CAAC;YACrB00E,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;YAC9BkuJ,sBAAsB,CAACppL,WAAW,GAAG4qL,qBAAqB,CACtDd,sBACJ,CAAC;YACDM,gBAAgB,CAAC,CAAC;UACtB,CAAC,MAAM;YACHx7L,iBAAiB,GAAG2B,OAAO,CAACC,kBAAkB,CAAC,CAAC;YAChD78F,GAAG,CAACkoB,eAAe,CAAC,CAAC;YACrBmtI,qBAAqB,CAAC,CAAC;YACvBz4D,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;UAClC;UACA;QACJ;MACA,KAAK,kBAAkB;QAAE;UACrB,IAAI2uJ,gBAAgB,EAAE;YAClBn4R,OAAO,CAAC,MAAM,CAAC;UACnB,CAAC,MAAM;YACHiC,GAAG,CAACkoB,eAAe,CAAC,CAAC;YACrB00E,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;UAClC;UACA;QACJ;IACJ;EACJ;EAEA,SAASu1B,YAAYA,CAAA,EAAG;IACpB98J,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBwC,QAAQ,CAACzR,IAAI,CAAC,CAAC;IACfyR,QAAQ,CAACK,OAAO,CAAC9R,IAAI,CAAC,CAAC;IACvByR,QAAQ,CAACK,OAAO,CAAC/U,IAAI,CAAC,gBAAgB,CAAC;IAEvCqpS,oBAAoB,CAAC,CAAC;IACtBE,WAAW,CAAC,CAAC;IACb30B,YAAY,CAAC83B,kBAAkB,CAAChF,sBAAsB,EAAE8C,kBAAkB,CAAC;EAC/E;EAEA,SAASvnS,IAAIA,CAAA,EAAG;IACZ;IACA4kS,WAAW,GAAG;MACVC,mBAAmB,EAAE,CAAC;MACtBC,kBAAkB,EAAE;IACxB,CAAC;IACDL,sBAAsB,CAACC,SAAS,GAAG,CAAC;IACpCR,eAAe,GAAG,EAAE;IACpBtiI,eAAe,GAAG,KAAK;IACvB;IACA,IAAItqH,uBAAuB,GAAG9oC,QAAQ,CAACmoI,WAAW,CAAC,UAAU,CAAC;IAC9D,IAAIr/F,uBAAuB,KAAK,EAAE,EAAE;MAChC9oC,QAAQ,CAACooI,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;MACnCt/F,uBAAuB,GAAG,GAAG;IACjC;IACAs0D,OAAO,CAACI,cAAc,CAAC;MACnB56C,UAAU,EAAE9Z,uBAAuB;MACnC+Z,YAAY,EAAE;IAClB,CAAC,EAAE;MACCwlF,QAAQ,EAAE;IACd,CAAC,CAAC;IAEFquJ,gBAAgB,GAAG,IAAI;IACvBkG,OAAO,GAAGtrS,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;IACxC+yG,+BAA+B,CAAC,UAAU,CAAC;IAE3ClH,OAAO,CAACoH,cAAc,CAAC;MAAE6jC,QAAQ,EAAE;IAAK,CAAC,CAAC;;IAI1C;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EACJ;EAEA,OAAO;IACH72I,IAAI;IACJ/B;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACnkDJ,IAAI0zQ,YAAY,GAAI,YAAW;EAC7B,SAASu3B,sBAAsBA,CAACmC,QAAQ,EAAEC,WAAW,EAAE3pS,QAAQ,EAAE;IAC/D4pS,kBAAkB,GAAG;MACnB7+P,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBg1P,aAAa,EAAEH,QAAQ;MACvBC,WAAW,EAAEA;IACf,CAAC;IACDp9R,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;MAC5BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACghR,kBAAkB,CAAC;MACxCz+O,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI;UACF,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;UAClCtrD,QAAQ,CAACykD,GAAG,CAAC;UACb;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;QACF,CAAC,CAAC,OAAO/jD,CAAC,EAAE,CAAC;MACf,CAAC;MACDwM,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClCm4B,KAAK,CAAC,gBAAgB,GAAGkmB,GAAG,CAAC9yC,MAAM,GAAG,IAAI,GAAG8yC,GAAG,CAAC+tD,YAAY,CAAC;MAChE;IACF,CAAC,CAAC;EACJ;EAEA,SAAS4tL,mBAAmBA,CAAC4C,QAAQ,EAAE9pS,QAAQ,EAAE;IAC/C+pS,UAAU,GAAG;MACXh/P,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBg1P,aAAa,EAAEC;IACjB,CAAC;IACDv9R,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;MACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACmhR,UAAU,CAAC;MAChC5+O,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI;UACFrqD,IAAI,GAAGoqD,QAAQ,CAAC0+O,4BAA4B;UAC5ChqS,QAAQ,CAAC,CAAC;QACZ,CAAC,CAAC,OAAOU,CAAC,EAAE,CAAC;MACf,CAAC;MACDwM,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClCm4B,KAAK,CAAC,gBAAgB,GAAGkmB,GAAG,CAAC9yC,MAAM,GAAG,IAAI,GAAG8yC,GAAG,CAAC+tD,YAAY,CAAC;MAChE;IACF,CAAC,CAAC;EACJ;;EAEA;EACA,SAAS2wL,oBAAoBA,CAAC/oS,IAAI,EAAElB,QAAQ,EAAE;IAC5CA,QAAQ,CAAC,CAAC;EACZ;EAEA,SAAS4kS,8BAA8BA,CAACt7K,YAAY,EAAEhzE,gBAAgB,EAAEt2C,QAAQ,EAAE;IAChF;IACA;IACA;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kCAAkC;MACpCxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,qBAAqB,GACrBy0E,YAAY,GACZ,yBAAyB,GACzBhzE,gBAAgB,GAChB,IAAI;MACN6U,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI9G,GAAG,GAAG97B,IAAI,CAACxT,KAAK,CAACm2C,QAAQ,CAAC4+O,oCAAoC,CAAC;QACnElqS,QAAQ,CAACykD,GAAG,CAAC;QACb;MACF,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAC;IACvC,CAAC,CAAC;EACJ;EAEA,SAASm6R,qBAAqBA,CAACqC,QAAQ,EAAEC,WAAW,EAAE3pS,QAAQ,EAAE;IAC9DmqS,iBAAiB,GAAG;MAClBp/P,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBg1P,aAAa,EAAEH,QAAQ;MACvBC,WAAW,EAAEA;IACf,CAAC;IACDp9R,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,yBAAyB;MAC3BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACuhR,iBAAiB,CAAC;MACvCh/O,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI;UACF,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;UAClCtrD,QAAQ,CAACykD,GAAG,CAAC;UACb;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACF,CAAC,CAAC,OAAO/jD,CAAC,EAAE,CAAC;MACf,CAAC;MACDwM,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClCm4B,KAAK,CAAC,gBAAgB,GAAGkmB,GAAG,CAAC9yC,MAAM,GAAG,IAAI,GAAG8yC,GAAG,CAAC+tD,YAAY,CAAC;MAChE;IACF,CAAC,CAAC;EACJ;EAEA,SAASmuL,sBAAsBA,CAACrB,QAAQ,EAAE0D,QAAQ,EAAE;IAClDl/O,UAAU,GAAG;MACX7f,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBuxP,QAAQ,EAAEA,QAAQ;MAClByD,aAAa,EAAEC;IACjB,CAAC;IACDv9R,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;MAC5BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACgiC,UAAU,CAAC;MAChCO,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI;UACFrqD,IAAI,GAAGoqD,QAAQ,CAAC8+O,+BAA+B;QAEjD,CAAC,CAAC,OAAO1pS,CAAC,EAAE,CAAC;MACf,CAAC;MACDwM,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClCm4B,KAAK,CAAC,gBAAgB,GAAGkmB,GAAG,CAAC9yC,MAAM,GAAG,IAAI,GAAG8yC,GAAG,CAAC+tD,YAAY,CAAC;MAChE;IACF,CAAC,CAAC;EACJ;EAEA,SAASyqL,oBAAoBA,CAAC/jS,QAAQ,EAAE;IACtC,IAAIk2H,OAAO,GAAG,IAAIhhH,IAAI,CAAC,CAAC;IACxBm1R,WAAW,GACTn0K,OAAO,CAAC/0G,WAAW,CAAC,CAAC,GACrB,GAAG,IACF+0G,OAAO,CAAC90G,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GACxB,GAAG,GACH80G,OAAO,CAAC70G,OAAO,CAAC,CAAC;IACnB9U,CAAC,CAACC,OAAO,CAACwtC,eAAe,GAAG,EAAE;IAC9BztC,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;MAC1BxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpBw1P,WAAW,GACX,IAAI;MACNl/O,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvCrqD,IAAI,GAAGoqD,QAAQ,CAACg/O,0BAA0B;QAC1CtqS,QAAQ,CAACkB,IAAI,CAAC;QACd;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;MACF,CAAC;MACDgM,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClClN,QAAQ,CAACkN,KAAK,EAAE,IAAI,CAAC;MACvB;IACF,CAAC,CAAC;EACJ;EAEA,SAAS+iQ,iBAAiBA,CAACs6B,YAAY,EAAEvqS,QAAQ,EAAE;IACjD;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;MACvBxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpB01P,YAAY,GACZ,IAAI;MACNp/O,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI;UACFrqD,IAAI,GAAGoqD,QAAQ,CAACk/O,uBAAuB;UACvCxqS,QAAQ,CAACkB,IAAI,CAAC;UACd;QACF,CAAC,CAAC,OAAOR,CAAC,EAAE,CAAC;MACf,CAAC;MACDwM,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClCm4B,KAAK,CAAC,gBAAgB,GAAGkmB,GAAG,CAAC9yC,MAAM,GAAG,IAAI,GAAG8yC,GAAG,CAAC+tD,YAAY,CAAC;MAChE;IACF,CAAC,CAAC;EACJ;EAEA,SAASyrL,sBAAsBA,CAAC7/Q,IAAI,EAAEllB,QAAQ,EAAE;IAC9C;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,0BAA0B;MAC5BxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,qBAAqB,GACrB3vB,IAAI,GACJ,IAAI;MACNimC,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI;UACFrqD,IAAI,GAAGoqD,QAAQ,CAACm/O,4BAA4B;UAC5CzqS,QAAQ,CAACkB,IAAI,CAAC;UACd;QACF,CAAC,CAAC,OAAOR,CAAC,EAAE,CAAC;MACf,CAAC;MACDwM,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAC;IACvC,CAAC,CAAC;EACJ;EAEA,SAAS83R,kBAAkBA,CAAC9/Q,IAAI,EAAE9e,QAAQ,EAAEpG,QAAQ,EAAE;IACpD;IACA;IACA0qS,SAAS,GAAG;MACV3/P,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBy0E,YAAY,EAAEpkG,IAAI;MAClB9e,QAAQ,EAAEA;IACZ,CAAC;IACDmG,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,sBAAsB;MACxBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC8hR,SAAS,CAAC;MAC/Bv/O,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI;UACFrqD,IAAI,GAAGoqD,QAAQ,CAACq/O,wBAAwB;UACxC3qS,QAAQ,CAACkB,IAAI,CAAC;UACd;QACF,CAAC,CAAC,OAAOR,CAAC,EAAE,CAAC;MACf,CAAC;MACDwM,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAC;IACvC,CAAC,CAAC;EACJ;EAEA,SAAS46R,kBAAkBA,CAAC5mS,IAAI,EAAElB,QAAQ,EAAE;IAC1CuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6BAA6B;MAC/BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI;UACFrqD,IAAI,GAAGoqD,QAAQ,CAACs/O,+BAA+B;UAC/C5qS,QAAQ,CAACkB,IAAI,CAAC;UACd;QACF,CAAC,CAAC,OAAOR,CAAC,EAAE;UACVwI,OAAO,CAACu6B,GAAG,CAAC/iC,CAAC,CAAC;QAChB;MACF,CAAC;MACDwM,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClC;MAAA;IAEJ,CAAC,CAAC;EACJ;EAEA,SAAS47R,eAAeA,CAAC5nS,IAAI,EAAElB,QAAQ,EAAE;IACvCuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;MACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI;UACF;UACA9G,GAAG,GAAG6G,QAAQ,CAACu/O,yBAAyB;UACxC7qS,QAAQ,CAACykD,GAAG,CAAC;QACf,CAAC,CAAC,OAAO/jD,CAAC,EAAE;UACVV,QAAQ,CAACU,CAAC,EAAE,IAAI,CAAC;QACnB;MACF,CAAC;MACDwM,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClCm4B,KAAK,CAAC,gBAAgB,GAAGkmB,GAAG,CAAC9yC,MAAM,GAAG,IAAI,GAAG8yC,GAAG,CAAC+tD,YAAY,CAAC;MAChE;IACF,CAAC,CAAC;EACJ;EAEA,SAAS2vL,gBAAgBA,CAAC/nS,IAAI,EAAElB,QAAQ,EAAE;IACxCuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;MACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACvC,IAAI;UACF9G,GAAG,GAAG6G,QAAQ,CAACu/O,yBAAyB;UACxC7qS,QAAQ,CAACykD,GAAG,CAAC;QACf,CAAC,CAAC,OAAO/jD,CAAC,EAAE;UACVV,QAAQ,CAACU,CAAC,EAAE,IAAI,CAAC;QACnB;MACF,CAAC;MACDwM,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QAClCm4B,KAAK,CAAC,gBAAgB,GAAGkmB,GAAG,CAAC9yC,MAAM,GAAG,IAAI,GAAG8yC,GAAG,CAAC+tD,YAAY,CAAC;MAChE;IACF,CAAC,CAAC;EACJ;EAEA,OAAO;IACLiuL,sBAAsB;IACtBL,mBAAmB;IACnB+C,oBAAoB;IACpBrF,8BAA8B;IAC9ByC,qBAAqB;IACrBI,sBAAsB;IACtB1D,oBAAoB;IACpB9zB,iBAAiB;IACjB80B,sBAAsB;IACtBC,kBAAkB;IAClB8C,kBAAkB;IAClBgB,eAAe;IACfG;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC9bJ,MAAMhtR,QAAQ,GACV,YAAW;EAEP,SAAS5d,IAAIA,CAAA,EAAE;IAGX;IACA,MAAMysS,aAAa,GAAG;MAClBhsS,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM61O,uBAAuB,CAAC/uO,IAAI,CAAC4uO,eAAe,CAACE,oBAAoB,EAAE,iBAAiB;IACxG,CAAC;IACD,MAAMm1D,SAAS,GAAGxsS,MAAM,CAACC,KAAK,CAACssS,aAAa,CAAC;IAC7CC,SAAS,CAAC9rS,KAAK,GAAG,cAAc;IAEhC,MAAMyrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAEvCwvC,OAAO,CAAC9uC,WAAW,CAACmvS,SAAS,CAAC;IAE9B19R,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC8uC,OAAO,CAAC;EAEzC;EAEA,OAAO;IACHrsC;EACJ,CAAC;AAEL,CAAC,CACH,CAAC;AC/BH,CAAC,UAAU8hC,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAAC6qQ,aAAa,GAAG5qQ,OAAO,CAAC,CAAC;AAClC,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;EACA;EACA;EACA;AACF;AACA;AACA;EACE,MAAM6qQ,eAAe,GAAG,CAAC,CAAC;;EAE1B;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAASD,aAAaA,CAACvsS,OAAO,EAAE;IAC9B;IACA,IAAI,CAACA,OAAO,GAAG41B,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC;IAC3D,IAAI,CAAC0sS,aAAa,GAAG,CAAC,CAAC;;IAEvB;IACA,IAAI,CAAC3lK,WAAW,GAAG,IAAI;IAEvB,IAAI,CAACvF,MAAM,CAAC,CAAC;EACf;;EAEA;AACF;AACA;EACE+qK,aAAa,CAACxrR,SAAS,CAACygH,MAAM,GAAG,YAAY;IAC3C,IAAI,CAACuF,WAAW,GAAG/a,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAgB,CAAC,CAAC;EAC1E,CAAC;;EAED;AACF;AACA;EACEulM,aAAa,CAACxrR,SAAS,CAACpkB,IAAI,GAAG,YAAY;IACzC,IAAI,IAAI,CAAC+vS,aAAa,EAAE,CACxB;IAEA,MAAMC,OAAO,GAAG3gL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE,CAAC,mBAAmB;IAAE,CAAC,CAAC;IAE3E,OAAO,IAAI;EACb,CAAC;EAED,OAAOulM,aAAa;AACtB,CAAC,CAAC;AClDF,CAAC,UAAU7qQ,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAACkrQ,QAAQ,GAAGjrQ,OAAO,CAAC,CAAC;AAC7B,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;AACF;AACA;AACA;EACE,MAAM6qQ,eAAe,GAAG,CAAC,CAAC;;EAE1B;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAMK,uBAAuB,GAAGC,WAAW,IAAI;IAC7C,OAAOtuR,MAAM,CAAComD,MAAM,CAAC,CAAC,CAAC,EAAE4nO,eAAe,EAAEM,WAAW,CAAC;EACxD,CAAC;;EAED;EACA;EACA;EACA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASC,aAAaA,CAAA,EAAmD;IAAA,IAAlDC,YAAY,GAAA/lS,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG;MAAEglE,WAAW,EAAE,CAAC;MAAEghO,UAAU,EAAE;IAAE,CAAC;IACrE,IAAI,CAAChhO,WAAW,GAAG+gO,YAAY,CAAC/gO,WAAW;IAC3C,IAAI,CAACghO,UAAU,GAAGD,YAAY,CAACC,UAAU;IACzC,IAAI,CAACC,SAAS,GAAG,EAAE;EACrB;;EAEA;AACF;AACA;AACA;AACA;EACEH,aAAa,CAAChsR,SAAS,CAACosR,SAAS,GAAG,UAAUC,gBAAgB,EAAE;IAC9D,IAAI,CAACF,SAAS,CAACpiS,IAAI,CAACsiS,gBAAgB,CAAC;EACvC,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEL,aAAa,CAAChsR,SAAS,CAACssR,WAAW,GAAG,UAAUD,gBAAgB,EAAE;IAChE,MAAM/2R,KAAK,GAAG,IAAI,CAAC62R,SAAS,CAAChnR,OAAO,CAACknR,gBAAgB,CAAC;IACtD,IAAI/2R,KAAK,GAAG,CAAC,CAAC,EAAE;MACd,IAAI,CAAC62R,SAAS,CAACphR,MAAM,CAACzV,KAAK,EAAE,CAAC,CAAC;IACjC;EACF,CAAC;;EAED;AACF;AACA;AACA;EACE02R,aAAa,CAAChsR,SAAS,CAACusR,QAAQ,GAAG,UAAUC,QAAQ,EAAE;IACrD/uR,MAAM,CAAComD,MAAM,CAAC,IAAI,EAAE2oO,QAAQ,CAAC;IAC7B,IAAI,CAACL,SAAS,CAACjwS,OAAO,CAACmwS,gBAAgB,IAAIA,gBAAgB,CAAC,IAAI,CAAC,CAAC;EACpE,CAAC;;EAED;AACF;AACA;EACEL,aAAa,CAAChsR,SAAS,CAACiI,IAAI,GAAG,YAAY;IACzC,IAAI,IAAI,CAACijD,WAAW,GAAG,IAAI,CAACghO,UAAU,EAAE;MACtC,IAAI,CAACK,QAAQ,CAAC;QAAErhO,WAAW,EAAE,IAAI,CAACA,WAAW,GAAG;MAAE,CAAC,CAAC;IACtD;EACF,CAAC;;EAED;AACF;AACA;EACE8gO,aAAa,CAAChsR,SAAS,CAACysR,IAAI,GAAG,YAAY;IACzC,IAAI,IAAI,CAACvhO,WAAW,GAAG,CAAC,EAAE;MACxB,IAAI,CAACqhO,QAAQ,CAAC;QAAErhO,WAAW,EAAE,IAAI,CAACA,WAAW,GAAG;MAAE,CAAC,CAAC;IACtD;EACF,CAAC;;EAED;EACA;EACA;;EAEA;AACF;AACA;AACA;EACE,SAAS2gO,QAAQA,CAAC5sS,OAAO,EAAE;IACzB;IACA,IAAI,CAACA,OAAO,GAAG6sS,uBAAuB,CAAC7sS,OAAO,CAAC;IAC/C,IAAI,CAACgtS,YAAY,GAAG;MAAE/gO,WAAW,EAAE,CAAC;MAAEghO,UAAU,EAAE;IAAE,CAAC;IACrD,IAAI,CAACQ,aAAa,GAAG,IAAIV,aAAa,CAACC,YAAY,CAAC;;IAEpD;IACA,IAAI,CAACU,QAAQ,GAAG,IAAI;EACtB;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEd,QAAQ,CAAC7rR,SAAS,CAAChhB,KAAK,GAAG,YAAY;IACrC,IAAI,CAAC2tS,QAAQ,GAAG1hL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,CAAC;;IAEzC;IACA,IAAI,CAACwtS,aAAa,CAACN,SAAS,CAAC,SAAShhO,MAAMA,CAACj/B,KAAK,EAAE;MAClD;IAAA,CACD,CAAC;;IAEF;IACA;IACA;;IAEA,OAAO,IAAI;EACb,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE0/P,QAAQ,CAAC7rR,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IAC5C,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAACuwS,QAAQ,CAAC;IACjC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOd,QAAQ;AACjB,CAAC,CAAC;AC5IF,CAAC,UAAUlrQ,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAACisQ,qBAAqB,GAAGhsQ,OAAO,CAAC,CAAC;AAC1C,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;EACA;EACA;EACA;AACF;AACA;AACA;AACA;AACA;EACE,SAASgsQ,qBAAqBA,CAAC3tS,OAAO,EAAE;IACtC;IACA,IAAI,CAACA,OAAO,GAAG;MAAE,GAAGA;IAAQ,CAAC;IAC7B,IAAI,CAAC4tS,KAAK,GAAG,CAAC,CAAC;IACf;IACA,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACC,UAAU,GAAG,IAAI;IACtB,IAAI,CAACC,YAAY,GAAG,IAAI;IAExB,IAAI,CAACvsK,MAAM,CAAC,CAAC;EACf;;EAEA;AACF;AACA;EACEmsK,qBAAqB,CAAC5sR,SAAS,CAACygH,MAAM,GAAG,YAAY;IACnD,IAAI,CAACqsK,cAAc,GAAG7hL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAc,CAAC,CAAC;IAEzE,IAAI,CAAC8mM,UAAU,GAAG9hL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAkB,CAAC,CAAC;IAEzE,IAAI,CAAC+mM,YAAY,GAAG/hL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAqB,CAAC,CAAC;IAE9E,IAAI,CAAC6mM,cAAc,CAAC1wS,WAAW,CAAC,IAAI,CAAC2wS,UAAU,CAAC;IAChD,IAAI,CAACD,cAAc,CAAC1wS,WAAW,CAAC,IAAI,CAAC4wS,YAAY,CAAC;EACpD,CAAC;EACD;AACF;AACA;AACA;AACA;EACEJ,qBAAqB,CAAC5sR,SAAS,CAACitR,UAAU,GAAG,UAAAt5K,IAAA,EAA6B;IAAA,IAAnB;MAAElvH,IAAI;MAAE+K;IAAQ,CAAC,GAAAmkH,IAAA;IACtE,IAAI,IAAI,CAACk5K,KAAK,CAACpoS,IAAI,CAAC,EAAE;MACpBiF,OAAO,CAACgE,KAAK,CAAC,SAASjJ,IAAI,0DAA0D,CAAC;IACxF;IAEA,MAAMyoS,YAAY,GAAG,IAAIC,iBAAiB,CAAC;MACzC1oS,IAAI;MACJ+K,OAAO;MACP9P,IAAI,EAAE;IACR,CAAC,CAAC;IAEFwtS,YAAY,CAAC70K,QAAQ,CAAC,IAAI,CAAC20K,YAAY,CAAC;IAExC,IAAI,CAACH,KAAK,CAACpoS,IAAI,CAAC,GAAGyoS,YAAY;EACjC,CAAC;EACD;AACF;AACA;AACA;AACA;EACEN,qBAAqB,CAAC5sR,SAAS,CAACoyG,WAAW,GAAG,UAAAwB,KAAA,EAA6B;IAAA,IAAnB;MAAEnvH,IAAI;MAAE,GAAGi/O;IAAK,CAAC,GAAA9vH,KAAA;IACvE,IAAI,CAAC,IAAI,CAACi5K,KAAK,CAACpoS,IAAI,CAAC,EAAE;MACrB,IAAI,CAACwoS,UAAU,CAAC;QAAExoS,IAAI;QAAE,GAAGi/O;MAAK,CAAC,CAAC;IACpC;IAEA,IAAI,CAACmpD,KAAK,CAACpoS,IAAI,CAAC,CAACmnS,OAAO,CAACpwS,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;EACrD,CAAC;EACD;AACF;AACA;AACA;AACA;EACEmxS,qBAAqB,CAAC5sR,SAAS,CAACotR,QAAQ,GAAG,UAAAv5K,KAAA,EAA6B;IAAA,IAAnB;MAAEpvH,IAAI;MAAE+K;IAAQ,CAAC,GAAAqkH,KAAA;IACpE,IAAI,IAAI,CAACg5K,KAAK,CAACpoS,IAAI,CAAC,EAAE;MACpBiF,OAAO,CAACgE,KAAK,CAAC,SAASjJ,IAAI,0DAA0D,CAAC;IACxF;IAEA,MAAMyoS,YAAY,GAAG,IAAIC,iBAAiB,CAAC;MACzC1oS,IAAI;MACJ+K,OAAO;MACP9P,IAAI,EAAE;IACR,CAAC,CAAC;IAEFwtS,YAAY,CAAC70K,QAAQ,CAAC,IAAI,CAAC00K,UAAU,CAAC;IAEtC,IAAI,CAACF,KAAK,CAACpoS,IAAI,CAAC,GAAGyoS,YAAY;EACjC,CAAC;EACD;AACF;AACA;AACA;AACA;EACEN,qBAAqB,CAAC5sR,SAAS,CAACgyG,SAAS,GAAG,UAAAiC,KAAA,EAA6B;IAAA,IAAnB;MAAExvH,IAAI;MAAE,GAAGi/O;IAAK,CAAC,GAAAzvH,KAAA;IACrE,IAAI,CAAC,IAAI,CAAC44K,KAAK,CAACpoS,IAAI,CAAC,EAAE;MACrB,IAAI,CAAC2oS,QAAQ,CAAC;QAAE3oS,IAAI;QAAE,GAAGi/O;MAAK,CAAC,CAAC;IAClC;IAEA,IAAI,CAACmpD,KAAK,CAACpoS,IAAI,CAAC,CAACmnS,OAAO,CAACpwS,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;EACrD,CAAC;EACD;AACF;AACA;AACA;AACA;EACEmxS,qBAAqB,CAAC5sR,SAAS,CAACrkB,IAAI,GAAG,UAAU8I,IAAI,EAAE;IACrD,IAAI,CAAC,IAAI,CAACooS,KAAK,CAACpoS,IAAI,CAAC,EAAE;IACvB,IAAI,CAACooS,KAAK,CAACpoS,IAAI,CAAC,CAACmnS,OAAO,CAACpwS,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;EAClD,CAAC;EACD;AACF;AACA;AACA;AACA;EACEkxS,qBAAqB,CAAC5sR,SAAS,CAACqtR,iBAAiB,GAAG,UAAU5oS,IAAI,EAAE6oS,OAAO,EAAE;IAC3E,IAAIA,OAAO,EAAE;MACX,IAAI,CAACT,KAAK,CAACpoS,IAAI,CAAC,CAACmnS,OAAO,CAACpwS,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACpD,CAAC,MAAM;MACL,IAAI,CAACoxS,KAAK,CAACpoS,IAAI,CAAC,CAACmnS,OAAO,CAACpwS,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACjD;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEkxS,qBAAqB,CAAC5sR,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IACzD,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC0wS,cAAc,CAAC;IACvC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOF,qBAAqB;AAC9B,CAAC,CAAC;AC3IF,CAAC,UAAUjsQ,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAAC24F,iBAAiB,GAAG14F,OAAO,CAAC,CAAC;AACtC,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;AACF;AACA;AACA;EACE,MAAM6qQ,eAAe,GAAG;IACtB5qS,SAAS,EAAE;EACb,CAAC;EAED,SAASy4H,iBAAiBA,CAACr6H,OAAO,EAAE;IAClC;IACA,IAAI,CAACA,OAAO,GAAG41B,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC;IAC3D,IAAI,CAACsuS,aAAa,GAAG,IAAI;;IAEzB;IACA,IAAI,CAAC9pK,MAAM,GAAG,IAAI;IAClB,IAAI,CAAC8C,UAAU,GAAG,IAAI;IACtB,IAAI,CAAC27J,aAAa,GAAG,IAAI;IACzB,IAAI,CAACC,YAAY,GAAG,IAAI;IAExB,IAAI,CAAC1hK,MAAM,CAAC,CAAC;EACf;EAEAnH,iBAAiB,CAACt5G,SAAS,CAACygH,MAAM,GAAG,YAAY;IAC/C,IAAI,CAACgD,MAAM,GAAG,IAAIG,MAAM,CAAC;MAAE/iI,SAAS,EAAE,IAAI,CAAC5B,OAAO,CAAC4B;IAAU,CAAC,CAAC;IAE/D,IAAI,CAAC0lI,UAAU,GAAGtb,IAAI,CAAC/rH,aAAa,CAAC,GAAG,EAAE;MACxC+mG,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,MAAM/6D,OAAO,GAAG+/E,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAc,CAAC,CAAC;IACnE,IAAI,CAACi8L,aAAa,GAAG,IAAIjgK,MAAM,CAAC;MAC9B3iI,IAAI,EAAE,IAAI;MACVmF,IAAI,EAAE;IACR,CAAC,CAAC;IACF,IAAI,CAAC09R,YAAY,GAAG,IAAIlgK,MAAM,CAAC;MAC7B3iI,IAAI,EAAE,QAAQ;MACd25H,SAAS,EAAE,UAAU;MACrBx0H,IAAI,EAAE;IACR,CAAC,CAAC;IAEF,IAAI,CAACy9R,aAAa,CAAC7pK,QAAQ,CAACntF,OAAO,CAAC;IACpC,IAAI,CAACi3P,YAAY,CAAC9pK,QAAQ,CAACntF,OAAO,CAAC;IAEnC,IAAI,CAACu4F,MAAM,CAACA,MAAM,CAACrnI,WAAW,CAAC,IAAI,CAACmqI,UAAU,CAAC;IAC/C,IAAI,CAAC9C,MAAM,CAACA,MAAM,CAACrnI,WAAW,CAAC8uC,OAAO,CAAC;EACzC,CAAC;;EAED;AACF;AACA;EACEouF,iBAAiB,CAACt5G,SAAS,CAAC0gH,YAAY,GAAG,UAAUyC,MAAM,EAAE;IAC3D,IAAI,CAACM,MAAM,CAACA,MAAM,CAAC3kI,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MAChD;MACAiiI,MAAM,CAAC,CAAC;IACV,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;EACE7J,iBAAiB,CAACt5G,SAAS,CAACpkB,IAAI,GAAG,UAAU4T,OAAO,EAAE;IACpD,IAAI,IAAI,CAAC+9R,aAAa,KAAK,MAAM,EAAE;IAEnC,IAAI/9R,OAAO,EAAE,IAAI,CAAC+2H,UAAU,CAACpjI,SAAS,GAAGqM,OAAO;IAChD,IAAI,CAACi0H,MAAM,CAAC7nI,IAAI,CAAC,CAAC;IAClB,IAAI,CAAC2xS,aAAa,GAAG,MAAM;IAE3B,OAAO,IAAItgP,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;MACtC,MAAMm9R,gBAAgB,GAAGtsS,CAAC,IAAI;QAC5B;QACA,IAAI,CAACuiI,MAAM,CAACA,MAAM,CAAC78G,mBAAmB,CAAC,OAAO,EAAE4mR,gBAAgB,CAAC;QACjE,IAAI,CAACtjS,KAAK,CAAC,CAAC;QACZgjD,OAAO,CAAChsD,CAAC,CAAC3E,MAAM,CAACkI,IAAI,CAAC;MACxB,CAAC;MAED,IAAI,CAACg/H,MAAM,CAACA,MAAM,CAAC3kI,gBAAgB,CAAC,OAAO,EAAE0uS,gBAAgB,CAAC;IAChE,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;EACEl0K,iBAAiB,CAACt5G,SAAS,CAAC9V,KAAK,GAAG,YAAY;IAC9C,IAAI,CAACu5H,MAAM,CAACv5H,KAAK,CAAC,CAAC;IACnB,IAAI,CAACqjS,aAAa,GAAG,QAAQ;EAC/B,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEj0K,iBAAiB,CAACt5G,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IACrD,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAACqnI,MAAM,CAACA,MAAM,CAAC;IACtC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOnK,iBAAiB;AAC1B,CAAC,CAAC;AC1GF,CAAC,UAAU34F,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAAC63F,cAAc,GAAG53F,OAAO,CAAC,CAAC;AACnC,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB,MAAM6sQ,IAAI,GAAG;IACX,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,KAAK;IACR,CAAC,EAAE;EACL,CAAC;;EAED;EACA;EACA;EACA;AACF;AACA;AACA;AACA;AACA;EACE,SAASC,UAAUA,CAAA,EAAG;IACpB,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB,IAAI,CAACnrS,KAAK,GAAG,IAAI;IAEjB,IAAI,CAACxD,KAAK,CAAC,CAAC;EACd;;EAEA;AACF;AACA;AACA;AACA;EACE0uS,UAAU,CAAC1tR,SAAS,CAAChhB,KAAK,GAAG,YAAY;IACvC;IACA,IAAI,CAAC2uS,SAAS,GAAG1iL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MACzC+mG,KAAK,EAAE;IACT,CAAC,CAAC;;IAEF;IACA,IAAI,CAACzjG,KAAK,GAAGyoH,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MACvCC,EAAE,EAAE,YAAY;MAChBO,IAAI,EAAE,MAAM;MACZ+E,IAAI,EAAE;IACR,CAAC,CAAC;IACF,MAAMmpS,QAAQ,GAAG3iL,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAC3CmkI,IAAI,EAAE4qJ,IAAI,CAACC,OAAO,CAAC,UAAU,CAAC;MAC9B/jQ,GAAG,EAAE;IACP,CAAC,CAAC;IACFyjR,QAAQ,CAAC9uS,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACtC,IAAI,CAACsB,KAAK,CAACqrS,UAAU,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,IAAI,CAACF,SAAS,CAACvxS,WAAW,CAAC,IAAI,CAACoG,KAAK,CAAC;IACtC,IAAI,CAACmrS,SAAS,CAACvxS,WAAW,CAACwxS,QAAQ,CAAC;EACtC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEF,UAAU,CAAC1tR,SAAS,CAACy2G,YAAY,GAAG,UAAU0M,MAAM,EAAE;IACpD,IAAI,CAAC3gI,KAAK,CAAC1D,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MACzCiiI,MAAM,CAACjiI,CAAC,CAAC3E,MAAM,CAACgE,KAAK,CAAC;IACxB,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEmtS,UAAU,CAAC1tR,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IAC9C,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAACuxS,SAAS,CAAC;IAClC;IAEA,OAAO,IAAI;EACb,CAAC;;EAED;EACA;EACA;EACA;AACF;AACA;AACA;EACE,MAAMlC,eAAe,GAAG;IACtB3hL,YAAY,EAAE19F,KAAK,CAACuB,gBAAgB,CAAC,CAAC;IACtC8qG,eAAe,EAAE;EACnB,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASD,cAAcA,CAACv5H,OAAO,EAAE;IAC/B;IACA,IAAI,CAACA,OAAO,GAAG41B,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC;IAC3D;IACA;IACA,IAAI,CAACyxO,SAAS,GAAGtkN,KAAK,CAACqD,cAAc,CAAC,IAAI,CAACxwB,OAAO,CAAC6qH,YAAY,CAAC;IAChE,IAAI,CAAC+mH,OAAO,GAAGzkN,KAAK,CAAC8C,SAAS,CAAC,IAAI,CAACjwB,OAAO,CAAC6qH,YAAY,CAAC;IACzD,IAAI,CAACgkL,aAAa,GAAG1hR,KAAK,CAACuH,iBAAiB,CAAC;MAC3CG,KAAK,EAAE,IAAI,CAAC48M,SAAS;MACrB18M,GAAG,EAAE,IAAI,CAAC68M;IACZ,CAAC,CAAC;IAEF,IAAI,CAACk9D,aAAa,GAAG3hR,KAAK,CAACqF,mBAAmB,CAAC,IAAI,CAACxyB,OAAO,CAAC6qH,YAAY,CAAC;IAEzE,IAAI,CAAC,IAAI,CAAC7qH,OAAO,CAACw5H,eAAe,IAAIrsG,KAAK,CAACyF,cAAc,CAAC,IAAI,CAAC5yB,OAAO,CAAC6qH,YAAY,CAAC,EAAE;MACpF,MAAM,IAAIh/F,KAAK,CAAC,uFAAuF,CAAC;IAC1G;;IAEA;IACA,IAAI,CAACkjR,aAAa,GAAG,IAAI;IACzB,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,cAAc,GAAG,IAAI;IAE1B,IAAI,CAAClvS,KAAK,CAAC,CAAC;EACd;;EAEA;AACF;AACA;AACA;AACA;EACEw5H,cAAc,CAACx4G,SAAS,CAAChhB,KAAK,GAAG,YAAY;IAC3C,IAAI,CAACgvS,aAAa,GAAG/iL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAiB,CAAC,CAAC;IAC3E,IAAI,CAACgoM,WAAW,GAAGhjL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAO,CAAC,CAAC;IAE/D,IAAI,CAACioM,cAAc,GAAGjjL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAC9C+mG,KAAK,EAAE,YAAY;MACnBo9B,IAAI,EAAE4qJ,IAAI,CAACC,OAAO,CAAC,WAAW;IAChC,CAAC,CAAC;IACF,IAAI,CAACigB,cAAc,GAAGljL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAC9C+mG,KAAK,EAAE,IAAI,CAAC8nM,aAAa,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,YAAY;MACrE1qK,IAAI,EAAE4qJ,IAAI,CAACC,OAAO,CAAC,YAAY;IACjC,CAAC,CAAC;IACF,IAAI,CAACkgB,gBAAgB,GAAG,IAAIV,UAAU,CAAC,CAAC;IAExC,IAAI,CAACM,aAAa,CAAC5xS,WAAW,CAAC,IAAI,CAACgyS,gBAAgB,CAACT,SAAS,CAAC;IAC/D,IAAI,CAACK,aAAa,CAAC5xS,WAAW,CAAC,IAAI,CAAC8xS,cAAc,CAAC;IACnD,IAAI,CAACF,aAAa,CAAC5xS,WAAW,CAAC,IAAI,CAAC6xS,WAAW,CAAC;IAChD,IAAI,CAACD,aAAa,CAAC5xS,WAAW,CAAC,IAAI,CAAC+xS,cAAc,CAAC;IAEnD,IAAI,CAACpyS,QAAQ,CAAC,CAAC;IACf,IAAI,CAAC+nI,WAAW,CAAC,CAAC;EACpB,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEtL,cAAc,CAACx4G,SAAS,CAACjkB,QAAQ,GAAG,YAAY;IAC9C,IAAI,CAACkyS,WAAW,CAACnyS,SAAS,GAAG,EAAE;IAE/B,IAAI,CAACgyS,aAAa,CAAC5xS,OAAO,CAACwpB,IAAI,IAAI;MACjC,MAAM2oR,uBAAuB,GAAG3oR,IAAI,CAACqC,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC9oB,OAAO,CAAC6qH,YAAY,CAAC/hG,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK;MACrG,MAAM8J,cAAc,GAAGzF,KAAK,CAACyF,cAAc,CAACnM,IAAI,CAAC;MAEjD,MAAMgyJ,SAAS,GAAGhyJ,IAAI,CAAC3D,MAAM,CAAC,CAAC;MAC/B,MAAMkE,KAAK,GAAGP,IAAI,CAAC9D,QAAQ,CAAC,CAAC,GAAG,CAAC;MACjC,MAAM2N,GAAG,GAAG7J,IAAI,CAAC7D,OAAO,CAAC,CAAC;MAE1B,MAAMysR,UAAU,GAAG,CAAC,KAAK,CAAC;MAC1B,IAAID,uBAAuB,EAAEC,UAAU,CAACvkS,IAAI,CAAC,UAAU,CAAC;MACxD,IAAI8nB,cAAc,IAAI,CAAC,IAAI,CAAC5yB,OAAO,CAACw5H,eAAe,EAAE61K,UAAU,CAACvkS,IAAI,CAAC,UAAU,CAAC;MAEhF,MAAMwkS,WAAW,GAAGtjL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QAC5C+mG,KAAK,EAAEqoM,UAAU;QACjB,WAAW,EAAE5oR,IAAI,CAAC8oR,YAAY,CAAC,CAAC;QAChC,aAAa,EAAE;MACjB,CAAC,CAAC;MACF,MAAMC,YAAY,GAAGxjL,IAAI,CAAC/rH,aAAa,CAAC,GAAG,EAAE;QAAEI,IAAI,EAAEmuS,IAAI,CAAC/1H,SAAS,CAAC;QAAEzxE,KAAK,EAAE;MAAU,CAAC,CAAC;MACzF,MAAMyoM,OAAO,GAAGzjL,IAAI,CAAC/rH,aAAa,CAAC,GAAG,EAAE;QAAEI,IAAI,EAAE,GAAG2mB,KAAK,IAAIsJ,GAAG,EAAE;QAAE02E,KAAK,EAAE;MAAO,CAAC,CAAC;MAEnFsoM,WAAW,CAACnyS,WAAW,CAACsyS,OAAO,CAAC;MAChCH,WAAW,CAACnyS,WAAW,CAACqyS,YAAY,CAAC;MAErC,IAAI,CAACR,WAAW,CAAC7xS,WAAW,CAACmyS,WAAW,CAAC;IAC3C,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE/1K,cAAc,CAACx4G,SAAS,CAAC8jH,WAAW,GAAG,YAAY;IACjD,IAAI,CAACoqK,cAAc,CAACpvS,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACjD,IAAI,CAACwvO,SAAS,GAAGtkN,KAAK,CAAC2C,QAAQ,CAAC,IAAI,CAAC2hN,SAAS,EAAE,CAAC,CAAC;MAClD,IAAI,CAACG,OAAO,GAAGzkN,KAAK,CAAC2C,QAAQ,CAAC,IAAI,CAAC8hN,OAAO,EAAE,CAAC,CAAC;MAC9C,IAAI,CAACi9D,aAAa,GAAG1hR,KAAK,CAACuH,iBAAiB,CAAC;QAC3CG,KAAK,EAAE,IAAI,CAAC48M,SAAS;QACrB18M,GAAG,EAAE,IAAI,CAAC68M;MACZ,CAAC,CAAC;MAEF,IAAI,CAAC5xO,OAAO,CAAC6qH,YAAY,GAAG,IAAI,CAACgkL,aAAa,CAAC,CAAC,CAAC;MACjD,IAAI,CAACC,aAAa,GAAG3hR,KAAK,CAACqF,mBAAmB,CAAC,IAAI,CAACxyB,OAAO,CAAC6qH,YAAY,CAAC;MACzE,IAAI,CAACqkL,cAAc,CAAC3yS,SAAS,CAACmE,MAAM,CAAC,UAAU,EAAE,IAAI,CAACouS,aAAa,CAAC;MAEpE,IAAI,CAAChyS,QAAQ,CAAC,CAAC;MAEf,MAAMomI,WAAW,GAAG,IAAIC,WAAW,CAAC,cAAc,CAAC;MACnD,IAAI,CAAC6rK,WAAW,CAACnmR,aAAa,CAACq6G,WAAW,CAAC;IAC7C,CAAC,CAAC;IAEF,IAAI,CAACgsK,cAAc,CAACrvS,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACjD,IAAI,CAACwvO,SAAS,GAAGtkN,KAAK,CAACmC,QAAQ,CAAC,IAAI,CAACmiN,SAAS,EAAE,CAAC,CAAC;MAClD,IAAI,CAACG,OAAO,GAAGzkN,KAAK,CAACmC,QAAQ,CAAC,IAAI,CAACsiN,OAAO,EAAE,CAAC,CAAC;MAC9C,IAAI,CAACi9D,aAAa,GAAG1hR,KAAK,CAACuH,iBAAiB,CAAC;QAC3CG,KAAK,EAAE,IAAI,CAAC48M,SAAS;QACrB18M,GAAG,EAAE,IAAI,CAAC68M;MACZ,CAAC,CAAC;MAEF,IAAI,CAAC5xO,OAAO,CAAC6qH,YAAY,GAAG,IAAI,CAACgkL,aAAa,CAAC,CAAC,CAAC;MACjD,IAAI,CAACC,aAAa,GAAG3hR,KAAK,CAACqF,mBAAmB,CAAC,IAAI,CAACxyB,OAAO,CAAC6qH,YAAY,CAAC;MACzE,IAAI,CAACqkL,cAAc,CAAC3yS,SAAS,CAACmE,MAAM,CAAC,UAAU,EAAE,IAAI,CAACouS,aAAa,CAAC;MAEpE,IAAI,CAAChyS,QAAQ,CAAC,CAAC;MAEf,MAAMomI,WAAW,GAAG,IAAIC,WAAW,CAAC,cAAc,CAAC;MACnD,IAAI,CAAC6rK,WAAW,CAACnmR,aAAa,CAACq6G,WAAW,CAAC;IAC7C,CAAC,CAAC;IAEF,IAAI,CAAC8rK,WAAW,CAACnvS,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MAC9C,IAAIA,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAACD,MAAM,KAAK,MAAM,EAAE;QACtC,MAAMoyS,mBAAmB,GAAG,IAAI,CAACV,WAAW,CAACrvS,aAAa,CAAC,WAAW,CAAC;QACvE,IAAI+vS,mBAAmB,EAAE;UACvBA,mBAAmB,CAACnzS,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QAClD;QAEA,IAAI,CAACwD,OAAO,CAAC6qH,YAAY,GAAG,IAAIp0G,IAAI,CAACxU,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAACkpB,IAAI,CAAC;QAC3DxkB,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAElC,MAAMymI,WAAW,GAAG,IAAIC,WAAW,CAAC,cAAc,CAAC;QACnD,IAAI,CAAC6rK,WAAW,CAACnmR,aAAa,CAACq6G,WAAW,CAAC;QAE3C;MACF;IACF,CAAC,CAAC;IAEF,IAAI,CAACisK,gBAAgB,CAAC33K,YAAY,CAACC,OAAO,IAAI;MAC5C,MAAMtoG,YAAY,GAAG,IAAI1Y,IAAI,CAAC,GAAGghH,OAAO,WAAW,CAAC;MAEpD,IAAI,CAAC,IAAI,CAACz3H,OAAO,CAACw5H,eAAe,EAAE;QACjC,IAAIrsG,KAAK,CAACyF,cAAc,CAACzD,YAAY,CAAC,EAAE;UACtC;QACF;MACF;MAEA,IAAI,CAACnvB,OAAO,CAAC6qH,YAAY,GAAG17F,YAAY;MACxC,IAAI,CAAC2/Q,aAAa,GAAG3hR,KAAK,CAACqF,mBAAmB,CAAC,IAAI,CAACxyB,OAAO,CAAC6qH,YAAY,CAAC;MACzE,IAAI,CAAC4mH,SAAS,GAAGtkN,KAAK,CAACqD,cAAc,CAAC,IAAI,CAACxwB,OAAO,CAAC6qH,YAAY,CAAC;MAChE,IAAI,CAAC+mH,OAAO,GAAGzkN,KAAK,CAAC8C,SAAS,CAAC,IAAI,CAACjwB,OAAO,CAAC6qH,YAAY,CAAC;MACzD,IAAI,CAACgkL,aAAa,GAAG1hR,KAAK,CAACuH,iBAAiB,CAAC;QAC3CG,KAAK,EAAE,IAAI,CAAC48M,SAAS;QACrB18M,GAAG,EAAE,IAAI,CAAC68M;MACZ,CAAC,CAAC;MAEF,IAAI,CAACs9D,cAAc,CAAC3yS,SAAS,CAACmE,MAAM,CAAC,UAAU,EAAE,IAAI,CAACouS,aAAa,CAAC;MAEpE,IAAI,CAAChyS,QAAQ,CAAC,CAAC;MAEf,MAAMomI,WAAW,GAAG,IAAIC,WAAW,CAAC,cAAc,CAAC;MACnD,IAAI,CAAC6rK,WAAW,CAACnmR,aAAa,CAACq6G,WAAW,CAAC;IAC7C,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE3J,cAAc,CAACx4G,SAAS,CAACy2G,YAAY,GAAG,UAAU0M,MAAM,EAAE;IACxD,IAAI,CAAC8qK,WAAW,CAACnvS,gBAAgB,CAAC,cAAc,EAAE,MAAM;MACtDqkI,MAAM,CAAC,IAAI,CAAClkI,OAAO,CAAC6qH,YAAY,CAAC;IACnC,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE0O,cAAc,CAACx4G,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IAClD,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC4xS,aAAa,CAAC;IACtC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOx1K,cAAc;AACvB,CAAC,CAAC;ACrTF,CAAC,UAAU73F,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAAC04F,sBAAsB,GAAGz4F,OAAO,CAAC,CAAC;AAC3C,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;EACA;EACA;EACA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAM6qQ,eAAe,GAAG;IACtBmD,cAAc,EAAE,YAAY;IAC5BC,cAAc,EAAE,UAAU;IAC1BC,YAAY,EAAE,UAAU;IACxBtjO,QAAQ,EAAE;EACZ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE,SAAS6tD,sBAAsBA,CAACp6H,OAAO,EAAE;IACvC;IACA,IAAI,CAACA,OAAO,GAAG41B,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC;;IAE3D;IACA,IAAI,CAACwkI,MAAM,GAAG,IAAI;IAClB,IAAI,CAACnsB,OAAO,GAAG,IAAI;;IAEnB;IACA,IAAI,CAACy3L,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACxoK,UAAU,GAAG,IAAI;IAEtB,IAAI,CAACvnI,KAAK,CAAC,CAAC;EACd;;EAEA;AACF;AACA;AACA;AACA;EACEq6H,sBAAsB,CAACr5G,SAAS,CAAChhB,KAAK,GAAG,YAAY;IACnD,IAAI,CAACykI,MAAM,GAAG,IAAIG,MAAM,CAAC;MACvBorK,eAAe,EAAE,KAAK;MACtBnuS,SAAS,EAAE;IACb,CAAC,CAAC;IAEF,IAAI,CAACkuS,QAAQ,GAAG9jL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAW,CAAC,CAAC;IAChE,IAAI,CAACw9B,MAAM,CAACA,MAAM,CAACrnI,WAAW,CAAC,IAAI,CAAC2yS,QAAQ,CAAC;IAE7C,IAAI,CAACz3L,OAAO,GAAG,IAAI23L,OAAO,CAAC,CAAC;IAC5B,IAAI,CAAC33L,OAAO,CAAC+gB,QAAQ,CAAC,IAAI,CAAC02K,QAAQ,CAAC;IAEpC,IAAI,CAACxoK,UAAU,GAAGtb,IAAI,CAAC/rH,aAAa,CAAC,GAAG,CAAC;IACzC,IAAI,CAACukI,MAAM,CAACA,MAAM,CAACrnI,WAAW,CAAC,IAAI,CAACmqI,UAAU,CAAC;EACjD,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACElN,sBAAsB,CAACr5G,SAAS,CAACpkB,IAAI,GAAG,UAAU4T,OAAO,EAAE;IACzD,IAAI,CAAC+2H,UAAU,CAACpjI,SAAS,GAAGqM,OAAO;IACnC,IAAI,CAACi0H,MAAM,CAAC7nI,IAAI,CAAC,CAAC;EACpB,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEy9H,sBAAsB,CAACr5G,SAAS,CAACkvR,WAAW,GAAG,UAAU1/R,OAAO,EAAE;IAChE,IAAI,CAAC+2H,UAAU,CAACpjI,SAAS,GAAGqM,OAAO;IACnC,IAAI,CAACu/R,QAAQ,CAAC34R,UAAU,CAAC,CAAC,CAAC,CAAC3a,MAAM,CAAC,CAAC;IACpC,IAAI,CAACszS,QAAQ,CAAC3yS,WAAW,CAAC,IAAI,CAACk7G,OAAO,CAACrnG,WAAW,CAAC;EACrD,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEopH,sBAAsB,CAACr5G,SAAS,CAACmvR,WAAW,GAAG,gBAAgB3/R,OAAO,EAAmB;IAAA,IAAjBg8D,QAAQ,GAAAtlE,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,IAAI;IACrF,IAAI,CAACqgI,UAAU,CAACpjI,SAAS,GAAGqM,OAAO;IACnC,IAAI,CAAC8nG,OAAO,CAAC83L,WAAW,CAACnhB,IAAI,CAACC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEnD,IAAI,CAAC6gB,QAAQ,CAACvzS,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAEvC,MAAMo5B,KAAK,CAACw6Q,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE7jO,QAAQ,CAAC;EACjD,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE6tD,sBAAsB,CAACr5G,SAAS,CAACgyG,SAAS,GAAG,UAAUxiH,OAAO,EAAE;IAC9D,IAAI,CAAC+2H,UAAU,CAACpjI,SAAS,GAAGqM,OAAO;IACnC,IAAI,CAAC8nG,OAAO,CAAC83L,WAAW,CAACnhB,IAAI,CAACC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC6gB,QAAQ,CAACvzS,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;EACtC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE29H,sBAAsB,CAACr5G,SAAS,CAAC6uG,QAAQ,GAAG,gBAAgB51G,MAAM,EAAEzJ,OAAO,EAAmB;IAAA,IAAjBg8D,QAAQ,GAAAtlE,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,IAAI;IAC1F;IACA,IAAI+S,MAAM,KAAK,SAAS,EAAE;MACxB,IAAI,CAACk2R,WAAW,CAAC3/R,OAAO,CAAC;IAC3B,CAAC,MAAM;MACL,IAAI,CAACwiH,SAAS,CAACxiH,OAAO,CAAC;IACzB;IAEA,MAAMqlB,KAAK,CAACw6Q,eAAe,CAAC,MAAM;MAChC,IAAI,CAAC5rK,MAAM,CAACv5H,KAAK,CAAC,CAAC;MACnB,IAAI,CAAC6kS,QAAQ,CAAC34R,UAAU,CAAC,CAAC,CAAC,CAAC3a,MAAM,CAAC,CAAC;MACpC,IAAI,CAACszS,QAAQ,CAAC3yS,WAAW,CAAC,IAAI,CAACk7G,OAAO,CAACrnG,WAAW,CAAC;IACrD,CAAC,EAAEu7D,QAAQ,CAAC;EACd,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE6tD,sBAAsB,CAACr5G,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IAC1D,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAACqnI,MAAM,CAACA,MAAM,CAAC;IACtC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOpK,sBAAsB;AAC/B,CAAC,CAAC;ACvJF,CAAC,UAAU14F,MAAM,EAAEC,OAAO,EAAE;EACxBD,MAAM,CAAC+/P,UAAU,GAAG9/P,OAAO,CAAC,CAAC;AACjC,CAAC,EAAE,IAAI,EAAE,YAAY;EACjB;AACJ;AACA;AACA;AACA;AACA;EACI,SAAS8/P,UAAUA,CAACzhS,OAAO,EAAE;IACzB,IAAI,CAACuiD,UAAU,GAAGviD,OAAO,CAACuiD,UAAU;IACpC,IAAI,CAACsmD,SAAS,GAAG7oG,OAAO,CAAC6oG,SAAS;IAClC,IAAI,CAAC42J,UAAU,GAAGz/P,OAAO,CAACy/P,UAAU;IACpC,IAAI,CAAC32J,QAAQ,GAAG9oG,OAAO,CAAC8oG,QAAQ;IAChC,IAAI,CAAC47J,UAAU,GAAG1kQ,OAAO,CAAC0kQ,UAAU;IACpC,IAAI,CAAC39H,WAAW,GAAG,IAAI;IAEvB,IAAI,CAAChnI,KAAK,CAAC,CAAC;EAChB;;EAEA;AACJ;AACA;AACA;AACA;EACI0hS,UAAU,CAAC1gR,SAAS,CAAChhB,KAAK,GAAG,YAAY;IAAA,IAAAswS,gBAAA;IACrC,IAAI,CAACtpK,WAAW,GAAG/a,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MACzC+mG,KAAK,EAAE,YAAY;MACnB,SAAS,EAAE,IAAI,CAACzkD,UAAU;MAC1B,aAAa,EAAE;IACnB,CAAC,CAAC;;IAEF;IACA,MAAMo+E,QAAQ,GAAG,IAAIC,QAAQ,CAAC,IAAI,CAACr+E,UAAU,CAAC;;IAE9C;IACA,MAAMsmD,SAAS,GAAGmjB,IAAI,CAAC/rH,aAAa,CAAC,GAAG,EAAE;MACtCI,IAAI,EAAE,GAAG,IAAI,CAACwoG,SAAS,CAAC1gF,IAAI,CAAC,CAAC,IAAI,EAAAkoR,gBAAA,OAAI,CAAC5wC,UAAU,cAAA4wC,gBAAA,uBAAfA,gBAAA,CAAiBloR,IAAI,CAAC,CAAC,KAAI,EAAE,EAAE,CAACA,IAAI,CAAC;IAC3E,CAAC,CAAC;IACF,MAAM2gF,QAAQ,GAAGkjB,IAAI,CAAC/rH,aAAa,CAAC,GAAG,EAAE;MAAEI,IAAI,EAAE,GAAG,IAAI,CAACyoG,QAAQ,CAAC3gF,IAAI,CAAC,CAAC;IAAI,CAAC,CAAC;IAE9E,MAAMmoR,QAAQ,GAAG,IAAIC,gBAAgB,CAAC,CAAC;IACvCD,QAAQ,CAACv2I,MAAM,CAACjxD,QAAQ,EAAED,SAAS,CAAC;IAGpC,MAAMsnI,OAAO,GAAG,IAAI,CAACu0B,UAAU,IAAI,IAAI,GAAG14I,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE,iBAAiB;MAAEo9B,IAAI,EAAEksK;IAAS,CAAC,CAAC,GAAGtkL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE,SAAS;MAAEo9B,IAAI,EAAEksK;IAAS,CAAC,CAAC;;IAEnL;IACA3vK,QAAQ,CAACvH,QAAQ,CAAC,IAAI,CAAC2N,WAAW,CAAC;IACnC,IAAI,CAACA,WAAW,CAAC5pI,WAAW,CAACgzO,OAAO,CAAC;EACzC,CAAC;;EAED;AACJ;AACA;AACA;AACA;AACA;AACA;EACIsxD,UAAU,CAAC1gR,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IAC5C,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACtBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC4pI,WAAW,CAAC;IACtC;IAEA,OAAO,IAAI;EACf,CAAC;EAED,OAAO06J,UAAU;AACrB,CAAC,CAAC;ACpEF,CAAC,UAAU//P,MAAM,EAAEC,OAAO,EAAE;EACxBD,MAAM,CAACg2F,YAAY,GAAG/1F,OAAO,CAAC,CAAC;AACnC,CAAC,EAAE,IAAI,EAAE,YAAY;EACjB;EACA;EACA;EACA;AACJ;AACA;AACA;EACI,MAAM6qQ,eAAe,GAAG;IACpB70K,gBAAgB,EAAE,KAAK;IACvBC,gBAAgB,EAAE,KAAK;IACvB1M,UAAU,EAAE;EAChB,CAAC;EACD,IAAI2M,aAAa;EACjB,IAAIklI,cAAc,GAAG,IAAI;EACzB,IAAIyzC,UAAU;EACd,IAAIC,kBAAkB;EACtB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,SAAS/4K,YAAYA,CAAC13H,OAAO,EAAE;IAC3B;IACA,IAAI,CAACA,OAAO,GAAG41B,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC;IAC3D,IAAI,CAACw+P,SAAS,GAAG,CAAC,CAAC;IACnB,IAAI,CAAC30J,iBAAiB,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC6mM,gBAAgB,GAAG,IAAIt+D,GAAG,CAAC,CAAC;IACjC,IAAI,CAACxtE,SAAS,GAAG,KAAK;;IAEtB;IACA,IAAI,CAAC79B,WAAW,GAAG,IAAI;IACvB,IAAI,CAAC4pK,aAAa,GAAG,IAAI;IACzB,IAAI,CAACC,iBAAiB,GAAG,IAAI;IAC7B,IAAI,CAACC,mBAAmB,GAAG,IAAI;IAC/B,IAAI,CAACC,mBAAmB,GAAG,IAAI;IAC/B,IAAI,CAACptC,aAAa,GAAG,IAAI;IAEzB,IAAI,CAACliI,MAAM,CAAC,CAAC;IACb,IAAI,CAACC,YAAY,CAAC,CAAC;EACvB;;EAEA;AACJ;AACA;AACA;AACA;EACI/J,YAAY,CAAC32G,SAAS,CAACygH,MAAM,GAAG,YAAY;IACxC,IAAI,CAACuF,WAAW,GAAG/a,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAe,CAAC,CAAC;IACvE,IAAI,CAAC2pM,aAAa,GAAG3kL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAA0B,CAAC,CAAC;IACpF6wB,aAAa,GAAG,IAAI,CAAC73H,OAAO,CAAC63H,aAAa;IAC1C,IAAI,CAACk5K,cAAc,GAAG,IAAI,CAAC/wS,OAAO,CAAC43H,gBAAgB,GAAGo3J,IAAI,CAACC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;IAChF,IAAI,CAAC3nJ,UAAU,GAAGtb,IAAI,CAAC/rH,aAAa,CAAC,GAAG,EAAE;MACtC+mG,KAAK,EAAE,uBAAuB;MAC9Bo9B,IAAI,EAAE,IAAI,CAAC2sK,cAAc;MACzB1wS,IAAI,EAAE,IAAI,CAACL,OAAO,CAAC43H,gBAAgB,GAC7B,IAAI,CAAC53H,OAAO,CAAC23H,gBAAgB,GACzB,yBAAyB,GACzB,sBAAsB,GAC1B;IACV,CAAC,CAAC;IACF,IAAI,CAAC2P,UAAU,CAAC/qI,SAAS,CAACmE,MAAM,CAC5B,OAAO,EACP,IAAI,CAACV,OAAO,CAAC43H,gBAAgB,IAAI,CAACp5G,MAAM,CAAC8B,IAAI,CAAC,IAAI,CAACupF,iBAAiB,CAAC,CAAC7sG,MAC1E,CAAC;IAED,IAAI,CAAC4zS,iBAAiB,GAAG,IAAI/uK,KAAK,CAAC;MAC/BphI,IAAI,EAAE,QAAQ;MACdP,EAAE,EAAE,oBAAoB;MACxBsF,IAAI,EAAE,oBAAoB;MAC1Bs8H,WAAW,EAAE;IACjB,CAAC,CAAC;IAEF,IAAKh0H,CAAC,CAACC,OAAO,CAAC8jC,4BAA4B,KAAK,IAAI,IAAI/jC,CAAC,CAAC6kG,SAAS,KAAK,WAAW,IAC3E7kG,CAAC,CAACC,OAAO,CAACuxC,6BAA6B,KAAK,IAAI,IAAIxxC,CAAC,CAAC6kG,SAAS,KAAK,aAAc,EAAE;MACxF89L,kBAAkB,GAAG,IAAI;MACzB,IAAI,CAAC7rI,SAAS,GAAG,KAAK;IAC1B,CAAC,MAAM;MACH6rI,kBAAkB,GAAG,KAAK;MAC1B,IAAI,CAAC7rI,SAAS,GAAG,KAAK;IAC1B;IAEA,IAAI,CAACisI,mBAAmB,GAAG,IAAI9uK,QAAQ,CAAC;MACpClgI,KAAK,EAAE,oBAAoB;MAC3B3B,EAAE,EAAE,gBAAgB;MACpBsF,IAAI,EAAE,UAAU;MAChBD,OAAO,EAAEkrS,kBAAkB;MAC3B/7R,QAAQ,EAAE+7R;IACd,CAAC,CAAC;IAEF,IAAI,CAACK,mBAAmB,GAAG,IAAI/uK,QAAQ,CAAC;MACpClgI,KAAK,EAAE,2BAA2B;MAClC3B,EAAE,EAAE,gBAAgB;MACpBsF,IAAI,EAAE,UAAU;MAChBD,OAAO,EAAE,KAAK;MACdgmE,MAAM,EAAEz9D,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK;IAC1C,CAAC,CAAC;IAEF,IAAI,CAAC+4H,WAAW,CAACgzB,MAAM,CACnB,IAAI,CAACzyB,UAAU,EACf,IAAI,CAACspK,iBAAiB,CAAC7pK,WAAW,EAClC,IAAI,CAAC8pK,mBAAmB,CAAC9pK,WAAW,EACpC,IAAI,CAAC+pK,mBAAmB,CAAC/pK,WAAW,EACpC,IAAI,CAAC4pK,aACT,CAAC;EACL,CAAC;EAEDj5K,YAAY,CAAC32G,SAAS,CAACiwR,kBAAkB,GAAG,YAAY;IACpD,IAAI,CAACC,eAAe,GAAG,IAAIjuK,MAAM,CAAC;MAC9B7iI,IAAI,EAAE,aAAa;MACnB6mG,KAAK,EAAE,CAAC,iBAAiB;IAC7B,CAAC,CAAC;EACN,CAAC;;EAED;AACJ;AACA;AACA;AACA;EACI0wB,YAAY,CAAC32G,SAAS,CAAC0gH,YAAY,GAAG,YAAY;IAC9C,IAAI,CAACkvK,aAAa,CAAC9wS,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MAC9C,IAAIA,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAACD,MAAM,KAAK,aAAa,EAAE;QAC3C,IAAI,CAAC2E,CAAC,CAAC3E,MAAM,CAACkqB,UAAU,CAACA,UAAU,CAACjrB,SAAS,CAAC8N,QAAQ,CAAC,QAAQ,CAAC,EAAE;UAC9DpI,CAAC,CAAC3E,MAAM,CAACkqB,UAAU,CAACA,UAAU,CAACjrB,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC1D,CAAC,MAAM;UACHwF,CAAC,CAAC3E,MAAM,CAACkqB,UAAU,CAACA,UAAU,CAACjrB,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QAC7D;QAEA;MACJ;MAEA,IAAIyF,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAACD,MAAM,KAAK,YAAY,EAAE;QAC1C,IAAI2E,CAAC,CAAC3E,MAAM,CAACkqB,UAAU,CAACjrB,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UACpDpI,CAAC,CAAC3E,MAAM,CAACkqB,UAAU,CAACjrB,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UAChD,OAAO,IAAI,CAACqtG,iBAAiB,CAAC5nG,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAAC2C,EAAE,CAAC;QACtD,CAAC,MAAM;UACH,IAAI,CAAC,IAAI,CAACF,OAAO,CAAC23H,gBAAgB,EAAE,IAAI,CAACue,sBAAsB,CAAC,CAAC;UAEjEj0I,CAAC,CAAC3E,MAAM,CAACkqB,UAAU,CAACjrB,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UAC7C,IAAI,CAACotG,iBAAiB,CAAC5nG,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAAC2C,EAAE,CAAC,GAAG+B,CAAC,CAAC3E,MAAM;QAC1D;QAEA,IAAI,CAAC4zS,cAAc,CAAC,CAAC;QAErB,MAAMhuK,WAAW,GAAG,IAAIC,WAAW,CAAC,kBAAkB,CAAC;QACvD,IAAI,CAACwtK,aAAa,CAAC9nR,aAAa,CAACq6G,WAAW,CAAC;QAE7C;MACJ;IACJ,CAAC,CAAC;IAEF,IAAI,CAACytK,aAAa,CAAC9wS,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MAC9C,IAAIA,CAAC,CAAC3E,MAAM,CAAC6zS,OAAO,KAAK,KAAK,EAAE;QAC5B,IAAI,CAACT,gBAAgB,CAACj0S,GAAG,CAACwF,CAAC,CAAC3E,MAAM,CAAC4kB,GAAG,CAAC;MAC3C;IACJ,CAAC,CAAC;IAEF,IAAI,CAAC0uR,iBAAiB,CAAC73K,OAAO,CAC1BnjG,KAAK,CAACosG,QAAQ,CAAC//H,CAAC,IAAI;MAChB,IAAI,CAACmvS,wBAAwB,CAACnvS,CAAC,CAAC;IACpC,CAAC,EAAE,GAAG,CACV,CAAC;IAED,IAAI,CAAC2uS,iBAAiB,CAAC93K,QAAQ,CAAC72H,CAAC,IAAI;MACjC,IAAI,CAACmvS,wBAAwB,CAACnvS,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,IAAI,CAAC2uS,iBAAiB,CAAC/7R,OAAO,CAAC5S,CAAC,IAAI;MAChCwI,OAAO,CAACu6B,GAAG,CAAC/iC,CAAC,CAAC;MACd;IACJ,CAAC,CAAC;IAEF,IAAI,CAAC4uS,mBAAmB,CAAC/3K,QAAQ,CAAC,MAAM72H,CAAC,IAAI;MACzC,IAAI,CAAC2iK,SAAS,GAAG3iK,CAAC,CAAC3E,MAAM,CAACiI,OAAO,GAAG,KAAK,GAAG,KAAK;MACjD,MAAM,IAAI,CAACuyH,cAAc,CAAC,CAAC;MAC3B,IAAI,CAACh7H,QAAQ,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,IAAI,CAACg0S,mBAAmB,CAACh4K,QAAQ,CAAC,MAAM72H,CAAC,IAAI;MACzC86P,cAAc,GAAG96P,CAAC,CAAC3E,MAAM,CAACiI,OAAO,GAAG,KAAK,GAAG,IAAI;MAChD,MAAM,IAAI,CAACuyH,cAAc,CAAC,CAAC;MAC3B,IAAI,CAACh7H,QAAQ,CAAC,CAAC;IACnB,CAAC,CAAC;EACN,CAAC;;EAED;AACJ;AACA;AACA;AACA;AACA;EACI46H,YAAY,CAAC32G,SAAS,CAACqwR,wBAAwB,GAAG,UAAUnvS,CAAC,EAAE;IAC3D,KAAKwxK,UAAU,IAAI,IAAI,CAAC+qF,SAAS,EAAE;MAC/B,MAAM31J,SAAS,GAAG,IAAI,CAAC21J,SAAS,CAAC/qF,UAAU,CAAC,CAACikE,EAAE,CAACn3O,WAAW,CAAC,CAAC,CAAC4nB,IAAI,CAAC,CAAC;MACpE,MAAMs3O,UAAU,GAAG,IAAI,CAACjB,SAAS,CAAC/qF,UAAU,CAAC,CAACisF,EAAE,CAACn/P,WAAW,CAAC,CAAC,CAAC4nB,IAAI,CAAC,CAAC;MACrE,MAAM2gF,QAAQ,GAAG,IAAI,CAAC01J,SAAS,CAAC/qF,UAAU,CAAC,CAACkkE,EAAE,CAACp3O,WAAW,CAAC,CAAC,CAAC4nB,IAAI,CAAC,CAAC;MAEnE,MAAMkpR,gBAAgB,GAAG,CACrB,GAAGxoM,SAAS,IAAI42J,UAAU,IAAI32J,QAAQ,EAAE,EACxC,GAAGA,QAAQ,KAAKD,SAAS,IAAI42J,UAAU,EAAE,EACzC,GAAG52J,SAAS,IAAIC,QAAQ,EAAE,EAC1B,GAAGA,QAAQ,KAAKD,SAAS,EAAE,EAC3B,GAAGA,SAAS,IAAI42J,UAAU,EAAE,EAC5B,GAAGA,UAAU,IAAI32J,QAAQ,EAAE,CAC9B;MAED,MAAMu5B,OAAO,GAAGgvK,gBAAgB,CAAC1uQ,IAAI,CAAC2/F,KAAK,IAAIA,KAAK,CAACp8G,OAAO,CAACjkB,CAAC,CAAC3E,MAAM,CAACgE,KAAK,CAACf,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;MAClG,IAAI8hI,OAAO,EAAE;QACT,IAAI,CAACm8H,SAAS,CAAC/qF,UAAU,CAAC,CAAC69H,OAAO,CAAC9pR,UAAU,CAACjrB,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC9E,CAAC,MAAM;QACH,IAAI,CAACgiQ,SAAS,CAAC/qF,UAAU,CAAC,CAAC69H,OAAO,CAAC9pR,UAAU,CAACjrB,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3E;IACJ;EACJ,CAAC;;EAED;AACJ;AACA;EACIi7H,YAAY,CAAC32G,SAAS,CAACwwR,YAAY,GAAG,YAAY;IAC9C,IAAI,CAACZ,aAAa,CAACzoR,SAAS,GAAG,CAAC;EACpC,CAAC;;EAED;AACJ;AACA;EACIwvG,YAAY,CAAC32G,SAAS,CAACmwR,cAAc,GAAG,YAAY;IAChD,IAAIM,OAAO;IAEX,IAAI,IAAI,CAACxxS,OAAO,CAAC43H,gBAAgB,IAAI,CAACp5G,MAAM,CAAC8B,IAAI,CAAC,IAAI,CAACupF,iBAAiB,CAAC,CAAC7sG,MAAM,EAAE;MAC9Ew0S,OAAO,GAAGxiB,IAAI,CAACC,OAAO,CAAC,OAAO,CAAC;MAC/B,IAAI,CAAC3nJ,UAAU,CAAC/qI,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACH+0S,OAAO,GAAGxiB,IAAI,CAACC,OAAO,CAAC,WAAW,CAAC;MACnC,IAAI,CAAC3nJ,UAAU,CAAC/qI,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C;IAEA,IAAI,CAAC8qI,UAAU,CAACzxH,YAAY,CAAC27R,OAAO,EAAE,IAAI,CAACT,cAAc,CAAC;IAC1D,IAAI,CAACA,cAAc,GAAGS,OAAO;EACjC,CAAC;;EAED;AACJ;AACA;AACA;AACA;AACA;EACI95K,YAAY,CAAC32G,SAAS,CAAC+2G,cAAc,GAAG,kBAAkB;IACtD,IAAI;MACA,MAAMnpG,UAAU,GAAGkpG,aAAa,IAAI7zH,SAAS,GAAGmpB,KAAK,CAACuB,gBAAgB,CAAC,CAAC,GAAGmpG,aAAa;MACxFlpG,UAAU,CAAC3L,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAC/BwtR,UAAU,GAAGrjR,KAAK,CAAC8F,SAAS,CAACtE,UAAU,EAAE;QAAEwE,cAAc,EAAE;MAAO,CAAC,CAAC;MACpE,IAAIkqI,YAAY,GAAGlwI,KAAK,CAAC0C,OAAO,CAAClB,UAAU,EAAE7gB,CAAC,CAACC,OAAO,CAAC+qC,6BAA6B,CAAC;MAErF,MAAMr2C,IAAI,GAAG,MAAMmzB,KAAK,CAACu4B,SAAS,CAAC,yBAAyB,EAAE;QAC1Dy2G,SAAS,EAAE,IAAI,CAACA,SAAS;QACzByJ,UAAU,EAAE,GAAG;QACftgD,WAAW,EAAEyiL,UAAU;QACvBnzI,YAAY,EAAElwI,KAAK,CAAC8F,SAAS,CAACoqI,YAAY,EAAE;UAAElqI,cAAc,EAAE;QAAO,CAAC,CAAC;QACvExa,QAAQ,EAAEokP;MACd,CAAC,CAAC;MACF,IAAI,CAACyB,SAAS,GAAG/7P,IAAI,CAACmkQ,6BAA6B,CAAC98K,MAAM,CAAC,CAAC+kC,GAAG,EAAE4iL,EAAE,KAAK;QACpE5iL,GAAG,CAAC4iL,EAAE,CAACvxS,EAAE,CAAC,GAAGuxS,EAAE;QACf,OAAO5iL,GAAG;MACd,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC,CAAC,OAAOpgH,KAAK,EAAE;MACZhE,OAAO,CAACu6B,GAAG,CAAC,wCAAwC,EAAEv2B,KAAK,CAAC8B,OAAO,CAAC;IACxE;IAEA,OAAO,IAAI;EACf,CAAC;;EAED;AACJ;AACA;AACA;AACA;EACImnH,YAAY,CAAC32G,SAAS,CAACjkB,QAAQ,GAAG,YAAY;IAC1C,IAAI,CAAC6zS,aAAa,CAAC9zS,SAAS,GAAG,EAAE;IAEjC2hB,MAAM,CAACxJ,MAAM,CAAC,IAAI,CAACwpP,SAAS,CAAC,CACxBznP,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MACZ,IAAIvU,CAAC,CAAC60O,EAAE,GAAGtgO,CAAC,CAACsgO,EAAE,EAAE,OAAO,CAAC,CAAC;MAC1B,IAAI70O,CAAC,CAAC60O,EAAE,GAAGtgO,CAAC,CAACsgO,EAAE,EAAE,OAAO,CAAC;MAEzB,IAAI70O,CAAC,CAAC40O,EAAE,GAAGrgO,CAAC,CAACqgO,EAAE,EAAE,OAAO,CAAC,CAAC;MAC1B,IAAI50O,CAAC,CAAC40O,EAAE,GAAGrgO,CAAC,CAACqgO,EAAE,EAAE,OAAO,CAAC;MAEzB,OAAO,CAAC;IACZ,CAAC,CAAC,CACDz6O,OAAO,CAAC2rG,QAAQ,IAAI;MACjB;MACA,MAAM8oM,oBAAoB,GAAG1lL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QAAE+mG,KAAK,EAAE;MAAiB,CAAC,CAAC;MACnF,IAAI2qM,QAAQ,GAAG,KAAK;MAEpB,IAAI7jS,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;QAC5C,IAAI46F,QAAQ,CAACg8J,UAAU,IAAI,GAAG,IAAIh8J,QAAQ,CAAC+7J,GAAG,IAAI3gQ,SAAS,IAAI4kG,QAAQ,CAAC+7J,GAAG,IAAI,EAAE,IAAIv0O,IAAI,CAACkY,eAAe,CAACsgE,QAAQ,CAAC+7J,GAAG,CAAC9jP,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI2vR,UAAU,EAAE;UACjJmB,QAAQ,GAAG,IAAI;QACnB;MACJ;MACA,MAAMC,UAAU,GAAG,IAAInQ,UAAU,CAAC;QAC9Bl/O,UAAU,EAAEqmD,QAAQ,CAAC1oG,EAAE;QACvB2oG,SAAS,EAAED,QAAQ,CAAC8uI,EAAE;QACtB+nB,UAAU,EAAE72J,QAAQ,CAAC82J,EAAE;QACvB52J,QAAQ,EAAEF,QAAQ,CAAC+uI,EAAE;QACrB+sB,UAAU,EAAEitC;MAChB,CAAC,CAAC;MACFC,UAAU,CAACx4K,QAAQ,CAACs4K,oBAAoB,CAAC;;MAEzC;MACA,MAAMG,WAAW,GAAG7iB,IAAI,CAACC,OAAO,CAAC,KAAK,CAAC;MACvC4iB,WAAW,CAAClxS,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC;MACtDixS,UAAU,CAAC7qK,WAAW,CAAC5pI,WAAW,CAAC00S,WAAW,CAAC;;MAE/C;MACA,IAAI,CAAClB,aAAa,CAACxzS,WAAW,CAACu0S,oBAAoB,CAAC;;MAEpD;MACA9oM,QAAQ,CAAC0oM,OAAO,GAAGM,UAAU,CAAC7qK,WAAW;IAC7C,CAAC,CAAC;EACV,CAAC;;EAED;AACJ;AACA;AACA;AACA;AACA;EACIrP,YAAY,CAAC32G,SAAS,CAACw2G,gBAAgB,GAAG,UAAU2M,MAAM,EAAa;IAAA,IAAX1gI,IAAI,GAAAyD,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,CAAC,CAAC;IACjE,IAAI,CAAC0pS,aAAa,CAAC9wS,gBAAgB,CAAC,kBAAkB,EAAE,MAAM;MAC1D,IAAI2D,IAAI,CAACq/R,MAAM,EAAE;QACb,MAAMh5L,iBAAiB,GAAGrrF,MAAM,CAAC8B,IAAI,CAAC,IAAI,CAACupF,iBAAiB,CAAC,CAAC/f,MAAM,CAAC,CAAC+kC,GAAG,EAAE4iL,EAAE,KAAK;UAC9E,MAAM7oM,QAAQ,GAAG,IAAI,CAAC41J,SAAS,CAACizC,EAAE,CAAC;UACnC5iL,GAAG,CAAC4iL,EAAE,CAAC,GAAG;YACNvxS,EAAE,EAAEuxS,EAAE;YACN5oM,SAAS,EAAED,QAAQ,CAAC8uI,EAAE;YACtB+nB,UAAU,EAAE72J,QAAQ,CAAC82J,EAAE;YACvB52J,QAAQ,EAAEF,QAAQ,CAAC+uI;UACvB,CAAC;UACD,OAAO9oH,GAAG;QACd,CAAC,EAAE,CAAC,CAAC,CAAC;QAENqV,MAAM,CAACr6B,iBAAiB,CAAC;QACzB;MACJ;MAEAq6B,MAAM,CAAC1lH,MAAM,CAAC8B,IAAI,CAAC,IAAI,CAACupF,iBAAiB,CAAC,CAAC;IAC/C,CAAC,CAAC;EACN,CAAC;;EAED;AACJ;AACA;AACA;AACA;AACA;EACI6tB,YAAY,CAAC32G,SAAS,CAACu3G,oBAAoB,GAAG,UAAUnzH,UAAU,EAAoB;IAAA,IAAlB2sS,QAAQ,GAAA7qS,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,KAAK;IAChF,KAAKu3P,SAAS,IAAI,IAAI,CAACA,SAAS,EAAE;MAC9B,IAAI,CAACr5P,UAAU,EAAE;QACb,IAAI,CAACq5P,SAAS,CAACA,SAAS,CAAC,CAAC8yC,OAAO,CAAC9pR,UAAU,CAACjrB,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACzE;MACJ;MAEA,IAAIs1S,QAAQ,EAAE;QACV,IAAI,CAACtzC,SAAS,CAACA,SAAS,CAAC,CAAC8yC,OAAO,CAAC9pR,UAAU,CAACjrB,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACtE;MACJ;MAEA,MAAM2nQ,UAAU,GAAG,IAAI,CAAC5F,SAAS,CAACA,SAAS,CAAC,CAAC8yC,OAAO,CAAC9pR,UAAU,CAACjrB,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC;MAC9F,MAAM0nS,QAAQ,GAAG,IAAI,CAACvzC,SAAS,CAACA,SAAS,CAAC,CAAC8yC,OAAO,CAAC9pR,UAAU,CAACjrB,SAAS,CAAC8N,QAAQ,CAAC,QAAQ,CAAC;MAE1F,IAAI,CAAC+5P,UAAU,IAAI,CAAC2tC,QAAQ,EAAE;QAC1B,IAAI,CAACvzC,SAAS,CAACA,SAAS,CAAC,CAAC8yC,OAAO,CAAC9pR,UAAU,CAACjrB,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC1E;IACJ;EACJ,CAAC;;EAED;AACJ;AACA;AACA;AACA;AACA;EACIi7H,YAAY,CAAC32G,SAAS,CAACyrG,uBAAuB,GAAG,UAAUmL,gBAAgB,EAAE;IACzE,IAAI,CAAC33H,OAAO,CAAC23H,gBAAgB,GAAGA,gBAAgB;IAEhD,IAAI,IAAI,CAAC33H,OAAO,CAAC23H,gBAAgB,EAAE;MAC/B;MACA,KAAK87C,UAAU,IAAI,IAAI,CAAC5pE,iBAAiB,EAAE;QACvC,IAAI,CAAC,IAAI,CAACA,iBAAiB,CAAC4pE,UAAU,CAAC,CAACjsJ,UAAU,CAACjrB,SAAS,CAAC8N,QAAQ,CAAC,QAAQ,CAAC,EAAE;UAC7E,IAAI,CAACw/F,iBAAiB,CAAC4pE,UAAU,CAAC,CAACjsJ,UAAU,CAACjrB,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UAC1E,OAAO,IAAI,CAACqtG,iBAAiB,CAAC4pE,UAAU,CAAC;QAC7C;MACJ;IACJ;EACJ,CAAC;;EAED;AACJ;AACA;AACA;AACA;EACI/7C,YAAY,CAAC32G,SAAS,CAACm1H,sBAAsB,GAAG,YAAY;IACxD,KAAKu9B,UAAU,IAAI,IAAI,CAAC5pE,iBAAiB,EAAE;MACvC,IAAI,CAACA,iBAAiB,CAAC4pE,UAAU,CAAC,CAACjsJ,UAAU,CAACjrB,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC1E,IAAI,CAACqtG,iBAAiB,CAAC4pE,UAAU,CAAC,CAACjsJ,UAAU,CAACjrB,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MACxE,IAAI,CAACqtG,iBAAiB,CAAC4pE,UAAU,CAAC,CAACjsJ,UAAU,CAACjrB,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC1E,OAAO,IAAI,CAACqtG,iBAAiB,CAAC4pE,UAAU,CAAC;IAC7C;EACJ,CAAC;;EAED;AACJ;AACA;AACA;AACA;AACA;EACI/7C,YAAY,CAAC32G,SAAS,CAACm1G,oBAAoB,GAAG,UAAUjb,WAAW,EAAoB;IAAA,IAAlB+2L,QAAQ,GAAA/qS,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,KAAK;IACjF,IAAI,CAACivI,sBAAsB,CAAC,CAAC;IAE7Bj7B,WAAW,CAACh+G,OAAO,CAACg1S,GAAG,IAAI;MACvB,IAAI,CAACpoM,iBAAiB,CAACooM,GAAG,CAAC,GAAG,IAAI,CAACzzC,SAAS,CAACyzC,GAAG,CAAC,CAACX,OAAO;MACzD,IAAI,CAAC9yC,SAAS,CAACyzC,GAAG,CAAC,CAACX,OAAO,CAAC9pR,UAAU,CAACjrB,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAEhE,IAAIu1S,QAAQ,EAAE;QACV,IAAI,CAACxzC,SAAS,CAACyzC,GAAG,CAAC,CAACX,OAAO,CAAC9pR,UAAU,CAACjrB,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MAClE;IACJ,CAAC,CAAC;IAEF,IAAI,CAACy0S,cAAc,CAAC,CAAC;IAErB,IAAI,CAACK,YAAY,CAAC,CAAC;EACvB,CAAC;;EAED;AACJ;AACA;AACA;AACA;AACA;AACA;EACI75K,YAAY,CAAC32G,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IAC9C,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACtBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC4pI,WAAW,CAAC;IACtC;IAEA,OAAO,IAAI;EACf,CAAC;EAED,OAAOrP,YAAY;AACvB,CAAC,CAAC;ACtcF,CAAC,UAAUh2F,MAAM,EAAEC,OAAO,EAAE;EACxBD,MAAM,CAAC44F,YAAY,GAAG34F,OAAO,CAAC,CAAC;AACnC,CAAC,EAAE,IAAI,EAAE,YAAY;EACjB;AACJ;AACA;AACA;EACI,MAAM6qQ,eAAe,GAAG;IACpB5qS,SAAS,EAAE;EACf,CAAC;EAED,SAAS04H,YAAYA,CAACt6H,OAAO,EAAE;IAC3B;IACA,IAAI,CAACA,OAAO,GAAG41B,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC;IAC3D,IAAI,CAACsuS,aAAa,GAAG,IAAI;;IAEzB;IACA,IAAI,CAAC9pK,MAAM,GAAG,IAAI;IAClB,IAAI,CAAC8C,UAAU,GAAG,IAAI;IACtB,IAAI,CAAC27J,aAAa,GAAG,IAAI;IACzB,IAAI,CAACC,YAAY,GAAG,IAAI;IAExB,IAAI,CAAC1hK,MAAM,CAAC,CAAC;EACjB;EAEAlH,YAAY,CAACv5G,SAAS,CAACygH,MAAM,GAAG,YAAY;IACxC,IAAI,CAACgD,MAAM,GAAG,IAAIG,MAAM,CAAC;MAAE10H,KAAK,EAAE,KAAK;MAAErO,SAAS,EAAE,IAAI,CAAC5B,OAAO,CAAC4B;IAAU,CAAC,CAAC;IAE7E,IAAI,CAAC0lI,UAAU,GAAGtb,IAAI,CAAC/rH,aAAa,CAAC,GAAG,EAAE;MACtC+mG,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,MAAM/6D,OAAO,GAAG+/E,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAc,CAAC,CAAC;IACnE,IAAI,CAACi8L,aAAa,GAAG,IAAIjgK,MAAM,CAAC;MAC5B3iI,IAAI,EAAE,KAAK;MACXmF,IAAI,EAAE,SAAS;MACfrF,IAAI,EAAE;IACV,CAAC,CAAC;IACF,IAAI,CAAC+iS,YAAY,GAAG,IAAIlgK,MAAM,CAAC;MAC3B3iI,IAAI,EAAE,IAAI;MACVmF,IAAI,EAAE,QAAQ;MACdrF,IAAI,EAAE;IACV,CAAC,CAAC;IAEF,IAAI,CAAC8iS,aAAa,CAAC7pK,QAAQ,CAACntF,OAAO,CAAC;IACpC,IAAI,CAACi3P,YAAY,CAAC9pK,QAAQ,CAACntF,OAAO,CAAC;IAEnC,IAAI,CAACu4F,MAAM,CAACA,MAAM,CAACrnI,WAAW,CAAC,IAAI,CAACmqI,UAAU,CAAC;IAC/C,IAAI,CAAC9C,MAAM,CAACA,MAAM,CAACrnI,WAAW,CAAC8uC,OAAO,CAAC;EAC3C,CAAC;;EAED;AACJ;AACA;EACIquF,YAAY,CAACv5G,SAAS,CAAC0gH,YAAY,GAAG,UAAUyC,MAAM,EAAE;IACpD,IAAI,CAACM,MAAM,CAACA,MAAM,CAAC3kI,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MAC9CwI,OAAO,CAACu6B,GAAG,CAAC/iC,CAAC,CAAC3E,MAAM,CAAC;MACrB4mI,MAAM,CAAC,CAAC;IACZ,CAAC,CAAC;EACN,CAAC;;EAED;AACJ;AACA;EACI5J,YAAY,CAACv5G,SAAS,CAACpkB,IAAI,GAAG,UAAU4T,OAAO,EAAE;IAC7C,IAAI,IAAI,CAAC+9R,aAAa,KAAK,MAAM,EAAE;IAEnC,IAAI/9R,OAAO,EAAE,IAAI,CAAC+2H,UAAU,CAACpjI,SAAS,GAAGqM,OAAO;IAChD,IAAI,CAACi0H,MAAM,CAAC7nI,IAAI,CAAC,CAAC;IAClB,IAAI,CAAC2xS,aAAa,GAAG,MAAM;IAE3B,OAAO,IAAItgP,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;MACpC,MAAMm9R,gBAAgB,GAAGtsS,CAAC,IAAI;QAC1B;QACA,IAAI,CAACuiI,MAAM,CAACA,MAAM,CAAC78G,mBAAmB,CAAC,OAAO,EAAE4mR,gBAAgB,CAAC;QACjE,IAAI,CAACtjS,KAAK,CAAC,CAAC;QACZgjD,OAAO,CAAChsD,CAAC,CAAC3E,MAAM,CAACkI,IAAI,CAAC;MAC1B,CAAC;MAED,IAAI,CAACg/H,MAAM,CAACA,MAAM,CAAC3kI,gBAAgB,CAAC,OAAO,EAAE0uS,gBAAgB,CAAC;IAClE,CAAC,CAAC;EACN,CAAC;;EAED;AACJ;AACA;EACIj0K,YAAY,CAACv5G,SAAS,CAAC9V,KAAK,GAAG,YAAY;IACvC,IAAI,CAACu5H,MAAM,CAACv5H,KAAK,CAAC,CAAC;IACnB,IAAI,CAACqjS,aAAa,GAAG,QAAQ;EACjC,CAAC;;EAED;AACJ;AACA;AACA;AACA;AACA;AACA;EACIh0K,YAAY,CAACv5G,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IAC9C,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACtBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAACqnI,MAAM,CAACA,MAAM,CAAC;IACxC;IAEA,OAAO,IAAI;EACf,CAAC;EAED,OAAOlK,YAAY;AACvB,CAAC,CAAC;AC3GF,CAAC,UAAU54F,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAACwwQ,WAAW,GAAGvwQ,OAAO,CAAC,CAAC;AAChC,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASwwQ,IAAIA,CAACnyS,OAAO,EAAE;IACrB;IACA,IAAI,CAACA,OAAO,GAAGgsH,IAAI,CAAComL,uBAAuB,CAACpyS,OAAO,CAAC;IACpD,IAAI,CAACA,OAAO,CAACmB,UAAU,CAACqE,IAAI,GAAG,IAAI,CAACxF,OAAO,CAACmB,UAAU,CAACjB,EAAE;;IAEzD;IACA,IAAI,CAAC6mI,WAAW,GAAG,IAAI;IACvB,IAAI,CAACxjI,KAAK,GAAG,IAAI;IACjB,IAAI,CAACorS,QAAQ,GAAG,IAAI;IAEpB,IAAI,CAACntK,MAAM,CAAC,CAAC;EACf;;EAEA;AACF;AACA;EACE2wK,IAAI,CAACpxR,SAAS,CAACygH,MAAM,GAAG,YAAY;IAClC;IACA,MAAM6tK,UAAU,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAACrvS,OAAO,CAACmB,UAAU,CAACjB,EAAE,EAAE,CAAC;IAC1E,MAAMmyS,UAAU,GAAGrmL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAC3C+mG,KAAK,EAAE,IAAI,CAAChnG,OAAO,CAACurE,MAAM,GAAG,CAAC,GAAG8jO,UAAU,EAAE,oBAAoB,CAAC,GAAGA;IACvE,CAAC,CAAC;;IAEF;IACA,IAAI,CAAC9rS,KAAK,GAAGyoH,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAAE,GAAG,IAAI,CAACD,OAAO,CAACmB;IAAW,CAAC,CAAC;IACxE,IAAI,CAACwtS,QAAQ,GAAG3iL,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAC1CI,IAAI,EAAE,IAAI,CAACL,OAAO,CAAC6B,KAAK;MACxBqpB,GAAG,EAAE,IAAI,CAAClrB,OAAO,CAACmB,UAAU,CAACjB;IAC/B,CAAC,CAAC;IAEFmyS,UAAU,CAACt4I,MAAM,CAAC,IAAI,CAAC40I,QAAQ,EAAE,IAAI,CAACprS,KAAK,CAAC;IAE5C,IAAI,CAACwjI,WAAW,GAAGsrK,UAAU;EAC/B,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEF,IAAI,CAACpxR,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IACxC,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC4pI,WAAW,CAAC;IACpC;IAEA,OAAO,IAAI;EACb,CAAC;;EAED;EACA;EACA;EACA;AACF;AACA;EACE,SAASmrK,WAAWA,CAAClyS,OAAO,EAAE;IAC5B;IACA,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACA,OAAO,CAACS,IAAI,GAAG,MAAM;IAC1B,IAAI,CAACmxH,MAAM,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC0gL,cAAc,GAAG,EAAE;;IAExB;IACA,IAAI,CAACvrK,WAAW,GAAG,IAAI;IAEvB,IAAI,CAACvF,MAAM,CAAC,CAAC;IACb,IAAI,CAACC,YAAY,CAAC,CAAC;EACrB;;EAEA;AACF;AACA;EACEywK,WAAW,CAACnxR,SAAS,CAACygH,MAAM,GAAG,YAAY;IACzC,IAAI,CAACuF,WAAW,GAAG/a,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAc,CAAC,CAAC;IAEtE,MAAMzjG,KAAK,GAAG,IAAI4uS,IAAI,CAAC;MAAE,GAAG,IAAI,CAACnyS;IAAQ,CAAC,CAAC;IAE3CuD,KAAK,CAAC61H,QAAQ,CAAC,IAAI,CAAC2N,WAAW,CAAC;IAEhC,IAAI,CAACnV,MAAM,CAAC,IAAI,CAAC5xH,OAAO,CAACE,EAAE,CAAC,GAAGqD,KAAK;EACtC,CAAC;;EAED;AACF;AACA;EACE2uS,WAAW,CAACnxR,SAAS,CAAC0gH,YAAY,GAAG,UAAUyC,MAAM,EAAE;IACrD,IAAI,CAAC6C,WAAW,CAAClnI,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC/C,MAAMswS,QAAQ,GAAGtwS,CAAC,CAAC3E,MAAM,CAAC4C,EAAE;;MAE5B;MACA,MAAMsyS,cAAc,GAAG,IAAInqP,MAAM,CAAC,mBAAmB,CAAC;MACtD,MAAMoqP,eAAe,GAAG78Q,KAAK,CAAC88Q,gBAAgB,CAACzwS,CAAC,EAAEuwS,cAAc,CAAC;MACjE,IAAI,CAACC,eAAe,EAAE;;MAEtB;MACA,MAAME,UAAU,GAAG/8Q,KAAK,CAACwxN,eAAe,CAACmrD,QAAQ,CAAC;MAClD,MAAMK,gBAAgB,GAAG,IAAIT,IAAI,CAAC;QAChC1xS,IAAI,EAAE,MAAM;QACZoB,KAAK,EAAE,gBAAgB;QACvB3B,EAAE,EAAEyyS;MACN,CAAC,CAAC;MACF,IAAI,CAAC/gL,MAAM,CAAC+gL,UAAU,CAAC,GAAGC,gBAAgB;MAC1C,IAAI,CAAChhL,MAAM,CAAC2gL,QAAQ,CAAC,CAACxrK,WAAW,CAACqjF,qBAAqB,CAAC,aAAa,EAAEwoF,gBAAgB,CAAC7rK,WAAW,CAAC;;MAEpG;MACA,IAAI,CAACnV,MAAM,CAAC2gL,QAAQ,CAAC,CAACxrK,WAAW,CAACxqI,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAC1D,IAAI,CAACm1H,MAAM,CAAC2gL,QAAQ,CAAC,CAAC5D,QAAQ,CAACzqS,SAAS,GAAG0xB,KAAK,CAACyqQ,gBAAgB,CAACp+R,CAAC,CAAC3E,MAAM,CAAC46I,KAAK,CAAC,CAAC,CAAC,CAAC1yI,IAAI,EAAE,IAAI,CAAC8sS,cAAc,CAAC;MAC9G,MAAMvjB,UAAU,GAAGC,IAAI,CAACC,OAAO,CAAC,QAAQ,CAAC;MACzC,IAAI,CAACr9J,MAAM,CAAC2gL,QAAQ,CAAC,CAAC5D,QAAQ,CAACz/R,YAAY,CAAC6/Q,UAAU,EAAE,IAAI,CAACn9J,MAAM,CAAC2gL,QAAQ,CAAC,CAAC5D,QAAQ,CAACx6R,UAAU,CAAC;MAClG46Q,UAAU,CAAClvR,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QACxCA,CAAC,CAAC8I,eAAe,CAAC,CAAC;QACnB,IAAI,CAAC6mH,MAAM,CAAC2gL,QAAQ,CAAC,CAACxrK,WAAW,CAACvqI,MAAM,CAAC,CAAC;QAC1C,OAAO,IAAI,CAACo1H,MAAM,CAAC2gL,QAAQ,CAAC;QAC5B;QACA;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;EACEL,WAAW,CAACnxR,SAAS,CAAC8xR,eAAe,GAAG,UAAUlzK,YAAY,EAAE;IAC9D,MAAM/xH,MAAM,GAAG,GAAGE,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,MAAMh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,IAAIj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,IAAIl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,0BAA0B;IAExI,MAAMhxC,IAAI,GAAGva,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IAC3Cga,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAEiN,MAAM,CAAC;IACnCqM,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IACnCsZ,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrCsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE,kBAAkB,CAAC;IAChDsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAEqlD,GAAG,IAAI97B,IAAI,CAACC,SAAS,CAAC67B,GAAG,CAAC,CAAC;IAExD,MAAM2gF,UAAU,GAAGjnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAClD0mI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IACxCgmI,UAAU,CAAChmI,YAAY,CAAC,OAAO,EAAEmN,CAAC,CAACC,OAAO,CAACqoC,KAAK,CAAC;IACjDuwF,UAAU,CAACzmI,EAAE,GAAG,OAAO;IAEvB,MAAM0mI,eAAe,GAAGlnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACvD2mI,eAAe,CAACjmI,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC;IACpDimI,eAAe,CAACjmI,YAAY,CAAC,OAAO,EAAEg/H,YAAY,CAAC;IACnDiH,eAAe,CAAC1mI,EAAE,GAAG,cAAc;IAEnC+Z,IAAI,CAAC9c,WAAW,CAACwpI,UAAU,CAAC;IAC5B1sH,IAAI,CAAC9c,WAAW,CAACypI,eAAe,CAAC;IACjC3sH,IAAI,CAACzZ,KAAK,CAACsH,QAAQ,GAAG,UAAU;IAChCmS,IAAI,CAACzZ,KAAK,CAAC+nF,OAAO,GAAG,GAAG;IAExB7oF,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAAC8c,IAAI,CAAC;IAE/BA,IAAI,CAAC4sH,MAAM,CAAC,CAAC;EACf,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEqrK,WAAW,CAACnxR,SAAS,CAAC23G,cAAc,GAAG,UAAUo6K,cAAc,EAAE;IAC/DA,cAAc,CAAC71S,OAAO,CAAC81S,aAAa,IAAI;MACtC,MAAMV,UAAU,GAAGrmL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QAAE+mG,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS;MAAE,CAAC,CAAC;MAE5E,MAAMnlG,KAAK,GAAGmqH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QACtC+mG,KAAK,EAAE,WAAW;QAClB3mG,IAAI,EAAEu1B,KAAK,CAACyqQ,gBAAgB,CAAC0S,aAAa,CAAC94L,WAAW,EAAE,IAAI,CAACq4L,cAAc;MAC7E,CAAC,CAAC;MAEF,MAAMvjB,UAAU,GAAGC,IAAI,CAACC,OAAO,CAAC,QAAQ,CAAC;MAEzCptR,KAAK,CAACqN,YAAY,CAAC6/Q,UAAU,EAAEltR,KAAK,CAACsS,UAAU,CAAC;MAChDk+R,UAAU,CAACt4I,MAAM,CAACl4J,KAAK,CAAC;MAExBwwS,UAAU,CAACxyS,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QACxC,IAAIA,CAAC,CAAC3E,MAAM,KAAKyxR,UAAU,EAAE;UAC3B,MAAM7rJ,WAAW,GAAG,IAAIC,WAAW,CAAC,YAAY,EAAE;YAChDr+F,OAAO,EAAE,IAAI;YACbytF,MAAM,EAAEwgL,aAAa,CAACpzK;UACxB,CAAC,CAAC;UACF,IAAI,CAACoH,WAAW,CAACl+G,aAAa,CAACq6G,WAAW,CAAC;UAC3C;QACF,CAAC,MAAM;UACL;UACAmG,aAAa,CAACoC,sBAAsB,CAACsnK,aAAa,CAACpzK,YAAY,CAAC;QAClE;MACF,CAAC,CAAC;MAEF,IAAI,CAACoH,WAAW,CAACgzB,MAAM,CAACs4I,UAAU,CAAC;IACrC,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEH,WAAW,CAACnxR,SAAS,CAACnkB,KAAK,GAAG,YAAY;IACxC,IAAI,CAACg1H,MAAM,GAAG,CAAC,CAAC;IAEhB,IAAI,CAACmV,WAAW,CAAClqI,SAAS,GAAG,EAAE;IAE/B,MAAM0G,KAAK,GAAG,IAAI4uS,IAAI,CAAC;MAAE,GAAG,IAAI,CAACnyS;IAAQ,CAAC,CAAC;IAC3CuD,KAAK,CAAC61H,QAAQ,CAAC,IAAI,CAAC2N,WAAW,CAAC;IAChC,IAAI,CAACnV,MAAM,CAAC,IAAI,CAAC5xH,OAAO,CAACE,EAAE,CAAC,GAAGqD,KAAK;EACtC,CAAC;EAED,OAAO2uS,WAAW;AACpB,CAAC,CAAC;AC1NF,CAAC,UAAUxwQ,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAACshG,MAAM,GAAGrhG,OAAO,CAAC,CAAC;AAC3B,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;EACA;EACA;EACA;AACF;AACA;AACA;EACE,MAAM6qQ,eAAe,GAAG;IACtBnsS,IAAI,EAAE,IAAI;IACVI,IAAI,EAAE,QAAQ;IACdN,IAAI,EAAE,IAAI;IACVK,KAAK,EAAE,SAAS;IAChBw5H,SAAS,EAAE,WAAW;IACtBtlH,QAAQ,EAAE,KAAK;IACfsyF,KAAK,EAAE;EACT,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASg8B,MAAMA,CAAChjI,OAAO,EAAE;IACvB;IACA,IAAI,CAACA,OAAO,GAAGgsH,IAAI,CAAComL,uBAAuB,CAACx8Q,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC,CAAC;;IAEzF;IACA,IAAI,CAACF,MAAM,GAAG,IAAI;IAElB,IAAI,CAAC0hI,MAAM,CAAC,CAAC;EACf;;EAEA;AACF;AACA;AACA;AACA;EACEwB,MAAM,CAACjiH,SAAS,CAACygH,MAAM,GAAG,YAAY;IACpC,MAAMwxK,OAAO,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAChzS,OAAO,CAACQ,KAAK,EAAE,IAAI,CAACR,OAAO,CAACg6H,SAAS,EAAE,GAAG,IAAI,CAACh6H,OAAO,CAACgnG,KAAK,CAAC;IAC7F,IAAI,CAAClnG,MAAM,GAAGksH,IAAI,CAAC/rH,aAAa,CAAC,QAAQ,EAAE;MACzC+mG,KAAK,EAAE,IAAI,CAAChnG,OAAO,CAACurE,MAAM,GAAG,CAAC,GAAGynO,OAAO,EAAE,gBAAgB,CAAC,GAAGA,OAAO;MACrEvyS,IAAI,EAAE,IAAI,CAACT,OAAO,CAACmB,UAAU,CAACV,IAAI;MAClC+E,IAAI,EAAE,IAAI,CAACxF,OAAO,CAACmB,UAAU,CAACqE,IAAI;MAClClE,KAAK,EAAE,IAAI,CAACtB,OAAO,CAACmB,UAAU,CAACG,KAAK;MACpCoT,QAAQ,EAAE,IAAI,CAAC1U,OAAO,CAACmB,UAAU,CAACuT;IACpC,CAAC,CAAC;IAEF,IAAI,IAAI,CAAC1U,OAAO,CAACG,IAAI,EAAE;MACrB,IAAI,IAAI,CAACH,OAAO,CAACK,IAAI,EAAE;QACrB,MAAM4yS,QAAQ,GAAGvzS,QAAQ,CAACgtB,cAAc,CAAC,IAAI,CAAC1sB,OAAO,CAACK,IAAI,CAAC;QAC3D,IAAI,CAACP,MAAM,CAACi6J,MAAM,CAACi1H,IAAI,CAACC,OAAO,CAAC,IAAI,CAACjvR,OAAO,CAACG,IAAI,CAAC,EAAE8yS,QAAQ,CAAC;QAC7D,IAAI,CAACnzS,MAAM,CAACvD,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;MAC3C,CAAC,MAAM;QACL,IAAI,CAACqD,MAAM,CAAC3C,WAAW,CAAC6xR,IAAI,CAACC,OAAO,CAAC,IAAI,CAACjvR,OAAO,CAACG,IAAI,CAAC,CAAC;QACxD,IAAI,CAACL,MAAM,CAACvD,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;MAChD;IACF,CAAC,MAAM;MACL,IAAI,CAACqD,MAAM,CAACoE,SAAS,GAAG,IAAI,CAAClE,OAAO,CAACK,IAAI;IAC3C;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE2iI,MAAM,CAACjiH,SAAS,CAAClM,OAAO,GAAG,UAAUqvH,MAAM,EAAE;IAC3C,IAAI,CAACpkI,MAAM,CAACD,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACzCA,CAAC,CAAC6C,cAAc,CAAC,CAAC;MAClB,IAAIo/H,MAAM,EAAEA,MAAM,CAACjiI,CAAC,CAAC;IACvB,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE+gI,MAAM,CAACjiH,SAAS,CAAC8rG,cAAc,GAAG,UAAUqmL,SAAS,EAAE;IACrD,IAAI,CAACpzS,MAAM,CAAC4U,QAAQ,GAAGw+R,SAAS;EAClC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACElwK,MAAM,CAACjiH,SAAS,CAACwwG,gBAAgB,GAAG,UAAU4hL,QAAQ,EAAE;IACtD,IAAI,CAACrzS,MAAM,CAACvD,SAAS,CAACmE,MAAM,CAAC,gBAAgB,EAAEyyS,QAAQ,CAAC;EAC1D,CAAC;EAEDnwK,MAAM,CAACjiH,SAAS,CAACqyR,UAAU,GAAG,UAAUh6I,OAAO,EAAE;IAC/C,IAAI,CAACt5J,MAAM,CAACoE,SAAS,GAAG,EAAE;IAE1B,MAAM+uS,QAAQ,GAAGvzS,QAAQ,CAACgtB,cAAc,CAAC0sI,OAAO,CAAC;IAEjD,IAAI,IAAI,CAACp5J,OAAO,CAACG,IAAI,EAAE;MACrB,IAAI,CAACL,MAAM,CAACi6J,MAAM,CAACi1H,IAAI,CAACC,OAAO,CAAC,IAAI,CAACjvR,OAAO,CAACG,IAAI,CAAC,CAAC;IACrD;IAEA,IAAI,CAACL,MAAM,CAACi6J,MAAM,CAACk5I,QAAQ,CAAC;EAC9B,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEjwK,MAAM,CAACjiH,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IAC1C,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC2C,MAAM,CAAC;IAC/B;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOkjI,MAAM;AACf,CAAC,CAAC;AC5IF,CAAC,UAAUthG,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAACqgG,QAAQ,GAAGpgG,OAAO,CAAC,CAAC;AAC7B,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;EACA;EACA;EACA;AACF;AACA;AACA;EACE,MAAM6qQ,eAAe,GAAG;IACtB1wR,IAAI,EAAE;EACR,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASimH,QAAQA,CAAC/hI,OAAO,EAAE;IACzB;IACA,IAAI,CAACA,OAAO,GAAGgsH,IAAI,CAAComL,uBAAuB,CAACx8Q,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC,CAAC;IACzF,IAAI,CAACA,OAAO,CAACmB,UAAU,CAACqE,IAAI,GAAG,IAAI,CAACxF,OAAO,CAACmB,UAAU,CAACjB,EAAE;IACzD,IAAI,CAACF,OAAO,CAACmB,UAAU,CAACV,IAAI,GAAG,UAAU;;IAEzC;IACA,IAAI,CAACsmI,WAAW,GAAG,IAAI;IACvB,IAAI,CAACssK,SAAS,GAAG,IAAI;IACrB,IAAI,CAAC9vS,KAAK,GAAG,IAAI;IAEjB,IAAI,CAACi+H,MAAM,CAAC,CAAC;EACf;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEO,QAAQ,CAAChhH,SAAS,CAACygH,MAAM,GAAG,YAAY;IACtC;IACA,MAAM6tK,UAAU,GAAG,CAAC,YAAY,EAAE,GAAG,IAAI,CAACrvS,OAAO,CAACmB,UAAU,CAACjB,EAAE,EAAE,CAAC;IAClE,IAAI,CAACF,OAAO,CAACU,MAAM,GAAG2uS,UAAU,CAACvkS,IAAI,CAAC,iBAAiB,CAAC,GAAGukS,UAAU,CAACvkS,IAAI,CAAC,UAAU,CAAC;IACtF,IAAI,CAACi8H,WAAW,GAAG/a,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAC3C+mG,KAAK,EAAE,IAAI,CAAChnG,OAAO,CAACurE,MAAM,GAAG,CAAC,GAAG8jO,UAAU,EAAE,oBAAoB,CAAC,GAAGA;IACvE,CAAC,CAAC;;IAEF;IACA,IAAI,CAAC9rS,KAAK,GAAGyoH,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAAE,GAAG,IAAI,CAACD,OAAO,CAACmB;IAAW,CAAC,CAAC;IACxE,IAAI,CAACwtS,QAAQ,GAAG3iL,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAC1CI,IAAI,EAAE,IAAI,CAACL,OAAO,CAAC6B,KAAK;MACxBqpB,GAAG,EAAE,IAAI,CAAClrB,OAAO,CAACmB,UAAU,CAACjB;IAC/B,CAAC,CAAC;IACF,IAAI,CAAC6mI,WAAW,CAAC5pI,WAAW,CAAC,IAAI,CAACoG,KAAK,CAAC;IACxC,IAAI,CAACwjI,WAAW,CAAC5pI,WAAW,CAAC,IAAI,CAACwxS,QAAQ,CAAC;;IAE3C;IACA,IAAI,IAAI,CAAC3uS,OAAO,CAAC8b,IAAI,EAAE;MACrB,MAAMw3R,SAAS,GAAGtnL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QAAE+mG,KAAK,EAAE,kBAAkB;QAAE3mG,IAAI,EAAE,IAAI,CAACL,OAAO,CAAC8b;MAAK,CAAC,CAAC;MACnG,IAAI,CAACirH,WAAW,CAAC5pI,WAAW,CAACm2S,SAAS,CAAC;IACzC;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEvxK,QAAQ,CAAChhH,SAAS,CAAC8wG,QAAQ,GAAG,UAAUvwH,KAAK,EAAE;IAC7C,IAAIA,KAAK,KAAK,EAAE,EAAE;IAElB,IAAI,CAACiC,KAAK,CAACgC,OAAO,GAAGjE,KAAK;EAC5B,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEygI,QAAQ,CAAChhH,SAAS,CAAC4xG,QAAQ,GAAG,YAAY;IACxC,OAAO,IAAI,CAACpvH,KAAK,CAACgC,OAAO;EAC3B,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEw8H,QAAQ,CAAChhH,SAAS,CAACnkB,KAAK,GAAG,YAAY;IACrC,IAAI,CAAC2G,KAAK,CAACgC,OAAO,GAAG,KAAK;EAC5B,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEw8H,QAAQ,CAAChhH,SAAS,CAACqzG,cAAc,GAAG,UAAU8qK,UAAU,EAAE;IACxD,IAAI,CAAC37R,KAAK,CAACo2H,QAAQ,GAAGulK,UAAU;EAClC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEn9J,QAAQ,CAAChhH,SAAS,CAAC8rG,cAAc,GAAG,UAAUqmL,SAAS,EAAE;IACvD,IAAI,CAAC3vS,KAAK,CAACmR,QAAQ,GAAGw+R,SAAS;IAC/B,IAAI,CAAC3vS,KAAK,CAACgwS,QAAQ,GAAGL,SAAS;EACjC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEnxK,QAAQ,CAAChhH,SAAS,CAAC+xG,eAAe,GAAG,UAAUviH,OAAO,EAAE;IACtD,IAAI,CAAChN,KAAK,CAACiwS,iBAAiB,CAACjjS,OAAO,CAAC;EACvC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEwxH,QAAQ,CAAChhH,SAAS,CAAC+3G,QAAQ,GAAG,UAAUoL,MAAM,EAAE;IAC9C,IAAI,CAAC3gI,KAAK,CAAC1D,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACxC,IAAI,IAAI,CAACjC,OAAO,CAACU,MAAM,EAAEuB,CAAC,CAAC6C,cAAc,CAAC,CAAC;MAC3C,IAAIo/H,MAAM,EAAEA,MAAM,CAACjiI,CAAC,CAAC;IACvB,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE8/H,QAAQ,CAAChhH,SAAS,CAAC0yR,gBAAgB,GAAG,UAAUvjL,QAAQ,EAAE;IACxD,IAAIlE,IAAI,CAAC0nL,kBAAkB,CAACxjL,QAAQ,CAAC,EAAE;MACrC,IAAI,CAACy+K,QAAQ,CAAC9xS,SAAS,GAAGqzH,QAAQ;MAElC;IACF;IAEA,IAAI,CAACy+K,QAAQ,CAACzqS,SAAS,GAAGgsH,QAAQ;EACpC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE6R,QAAQ,CAAChhH,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IAC5C,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC4pI,WAAW,CAAC;IACpC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOhF,QAAQ;AACjB,CAAC,CAAC;ACvLF,CAAC,UAAUrgG,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAACiyQ,aAAa,GAAGhyQ,OAAO,CAAC,CAAC;AAClC,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;EACA;EACA;EACA;AACF;AACA;AACA;EACE,MAAM6qQ,eAAe,GAAG;IACtBppS,UAAU,EAAE,IAAI;IAChBs2H,MAAM,EAAE;EACV,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASi6K,aAAaA,CAAC3zS,OAAO,EAAE;IAC9B;IACA,IAAI,CAACA,OAAO,GAAG41B,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC;IAC3D,IAAI,CAAC4xH,MAAM,GAAG,CAAC,CAAC;;IAEhB;IACA,IAAI,CAACmV,WAAW,GAAG,IAAI;IACvB,IAAI,CAAC6sK,aAAa,GAAG,IAAI;IAEzB,IAAI,CAACpyK,MAAM,CAAC,CAAC;EACf;EAEAmyK,aAAa,CAAC5yR,SAAS,CAACygH,MAAM,GAAG,YAAY;IAC3C,IAAI,CAACuF,WAAW,GAAG/a,IAAI,CAAC/rH,aAAa,CAAC,UAAU,EAAE;MAAEC,EAAE,EAAE,IAAI,CAACF,OAAO,CAACE;IAAG,CAAC,CAAC;IAC1E,IAAI,CAAC0zS,aAAa,GAAG5nL,IAAI,CAAC/rH,aAAa,CAAC,QAAQ,EAAE;MAAEI,IAAI,EAAE,IAAI,CAACL,OAAO,CAACoD;IAAW,CAAC,CAAC;IACpF,IAAI,CAAC2jI,WAAW,CAAC5pI,WAAW,CAAC,IAAI,CAACy2S,aAAa,CAAC;IAEhD,IAAI,CAAC5zS,OAAO,CAAC05H,MAAM,CAACz8H,OAAO,CAAC42S,KAAK,IAAI;MACnC,IAAIC,aAAa,GAAG,IAAI/xK,QAAQ,CAAC;QAAE,GAAG8xK,KAAK;QAAEn/R,QAAQ,EAAE,IAAI,CAAC1U,OAAO,CAAC0U,QAAQ;QAAEilH,QAAQ,EAAE,IAAI,CAAC35H,OAAO,CAAC25H;MAAS,CAAC,CAAC;MAChH,IAAI,CAACoN,WAAW,CAAC5pI,WAAW,CAAC22S,aAAa,CAAC/sK,WAAW,CAAC;MACvD,IAAI,CAACnV,MAAM,CAACiiL,KAAK,CAAC3zS,EAAE,CAAC,GAAG4zS,aAAa;IACvC,CAAC,CAAC;EACJ,CAAC;EAED,OAAOH,aAAa;AACtB,CAAC,CAAC;ACjDF,CAAC,UAAUjyQ,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAACijG,MAAM,GAAGhjG,OAAO,CAAC,CAAC;AAC3B,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB,SAASoyQ,YAAYA,CAAA,EAAG,CAAC;EAEzB,SAASC,KAAKA,CAAA,EAAG,CAAC;;EAElB;EACA;EACA;EACA;AACF;AACA;AACA;EACE,MAAMxH,eAAe,GAAG;IACtBuD,eAAe,EAAE,IAAI;IACrBnuS,SAAS,EAAE,IAAI;IACfqyS,OAAO,EAAE;EACX,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAStvK,MAAMA,CAAC3kI,OAAO,EAAE;IACvB,IAAI,CAACA,OAAO,GAAGgsH,IAAI,CAAComL,uBAAuB,CAACx8Q,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC,CAAC;;IAEzF;IACA,IAAI,CAACwkI,MAAM,GAAG,IAAI;IAElB,IAAI,CAAChD,MAAM,CAAC,CAAC;IACb,IAAI,CAACC,YAAY,CAAC,CAAC;EACrB;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEkD,MAAM,CAAC5jH,SAAS,CAACygH,MAAM,GAAG,YAAY;IACpC,IAAI6tK,UAAU,GAAG,CAAC,QAAQ,CAAC;IAC3B,IAAI,IAAI,CAACrvS,OAAO,CAACi0S,OAAO,EAAE5E,UAAU,CAACvkS,IAAI,CAAC,OAAO,CAAC;IAClD,IAAI,IAAI,CAAC9K,OAAO,CAAC4B,SAAS,EAAEytS,UAAU,CAACvkS,IAAI,CAAC,IAAI,CAAC9K,OAAO,CAAC4B,SAAS,CAAC;IAEnE,IAAI,CAAC4iI,MAAM,GAAGxY,IAAI,CAAC/rH,aAAa,CAAC,QAAQ,EAAE;MACzC+mG,KAAK,EAAEqoM;IACT,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE1qK,MAAM,CAAC5jH,SAAS,CAAC0gH,YAAY,GAAG,YAAY;IAC1C,IAAI,IAAI,CAACzhI,OAAO,CAAC+vS,eAAe,EAAE;MAChC,IAAI,CAACvrK,MAAM,CAAC3kI,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QACzC,MAAMiyS,gBAAgB,GAAG,IAAI,CAAC1vK,MAAM,CAAC18G,qBAAqB,CAAC,CAAC;QAE5D,IACE7lB,CAAC,CAACihG,OAAO,GAAGgxM,gBAAgB,CAAC7rR,IAAI,IACjCpmB,CAAC,CAACihG,OAAO,GAAGgxM,gBAAgB,CAAC9rR,KAAK,IAClCnmB,CAAC,CAACyhC,OAAO,GAAGwwQ,gBAAgB,CAACnsR,GAAG,IAChC9lB,CAAC,CAACyhC,OAAO,GAAGwwQ,gBAAgB,CAAC5rO,MAAM,EACnC;UACA,IAAI,CAACr9D,KAAK,CAAC,CAAC;UAEZ,MAAMi4H,WAAW,GAAG,IAAIC,WAAW,CAAC,SAAS,CAAC;UAC9C,IAAI,CAACqB,MAAM,CAAC37G,aAAa,CAACq6G,WAAW,CAAC;QACxC;MACF,CAAC,CAAC;IACJ;EACF,CAAC;;EAED;AACF;AACA;AACA;EACEyB,MAAM,CAAC5jH,SAAS,CAACozR,OAAO,GAAG,UAAUjwK,MAAM,EAAE;IAC3C,IAAI,CAACM,MAAM,CAAC3kI,gBAAgB,CAAC,SAAS,EAAEoC,CAAC,IAAI;MAC3CiiI,MAAM,CAAC,CAAC;IACV,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;EACES,MAAM,CAAC5jH,SAAS,CAACpkB,IAAI,GAAG,YAAY;IAClC,IAAI,IAAI,CAACqD,OAAO,CAACi0S,OAAO,EAAE;MACxB,IAAI,CAACzvK,MAAM,CAAC4vK,SAAS,CAAC,CAAC;IACzB,CAAC,MAAM;MACL,IAAI,CAAC5vK,MAAM,CAAC7nI,IAAI,CAAC,CAAC;IACpB;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEgoI,MAAM,CAAC5jH,SAAS,CAAC9V,KAAK,GAAG,YAAY;IACnC,IAAI,CAACu5H,MAAM,CAACv5H,KAAK,CAAC,CAAC;EACrB,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE05H,MAAM,CAAC5jH,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IAC1C,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAACqnI,MAAM,CAAC;IAC/B;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOG,MAAM;AACf,CAAC,CAAC;ACpIF;;AAEA,CAAC,UAAUjjG,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAAC+3F,IAAI,GAAG93F,OAAO,CAAC,CAAC;AACzB,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;EACA;EACA;EACA;AACF;AACA;AACA;EACE,MAAM6qQ,eAAe,GAAG;IACtBthL,UAAU,EAAE,KAAK;IACjBm2K,cAAc,EAAE,KAAK;IACrB1sG,QAAQ,EAAE;EACZ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASl7D,IAAIA,CAACz5H,OAAO,EAAE;IACrB;IACA,IAAI,CAACA,OAAO,GAAG41B,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC;IAC3D,IAAI,CAAC4xH,MAAM,GAAG,CAAC,CAAC;IAChB,IAAI,CAAChF,OAAO,GAAG,CAAC,CAAC;IACjB,IAAI,CAACsF,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACogE,MAAM,GAAG,IAAI;;IAElB;IACA,IAAI,CAACr4K,IAAI,GAAG,IAAI;IAEhB,IAAI,CAACunH,MAAM,CAAC,CAAC;IACb,IAAI,CAACC,YAAY,CAAC,CAAC;EACrB;;EAEA;AACF;AACA;AACA;AACA;EACEhI,IAAI,CAAC14G,SAAS,CAACygH,MAAM,GAAG,YAAY;IAClC,IAAI,CAACvnH,IAAI,GAAG+xG,IAAI,CAAC/rH,aAAa,CAAC,MAAM,EAAE;MAAEuF,IAAI,EAAE,IAAI,CAACxF,OAAO,CAAC20L;IAAS,CAAC,CAAC;;IAEvE;IACA,IAAI,CAAC30L,OAAO,CAAC05H,MAAM,CAACz8H,OAAO,CAACC,GAAG,IAAI;MACjC,MAAMq8R,SAAS,GAAGr8R,GAAG,CAACuD,IAAI,CAACF,WAAW,CAAC,CAAC;MACxC,IAAIuzS,aAAa;MAEjB,QAAQva,SAAS;QACf,KAAK,YAAY;UAAE;YACjBua,aAAa,GAAG,IAAIO,UAAU,CAAC;cAAE,GAAGn3S;YAAI,CAAC,CAAC;YAC1C;UACF;QACA,KAAK,UAAU;UAAE;YACf42S,aAAa,GAAG,IAAI/xK,QAAQ,CAAC;cAAE,GAAG7kI;YAAI,CAAC,CAAC;YACxC;UACF;QACA,KAAK,eAAe;UAAE;YACpB42S,aAAa,GAAG,IAAIH,aAAa,CAAC;cAAE,GAAGz2S;YAAI,CAAC,CAAC;YAC7C;UACF;QACA,KAAK,QAAQ;UAAE;YACb,MAAMo3S,MAAM,GAAG;cAAE,GAAGp3S;YAAI,CAAC;YACzB,OAAOo3S,MAAM,CAAC7zS,IAAI,CAAC,CAAC;;YAEpBqzS,aAAa,GAAG,IAAIS,MAAM,CAAC;cAAE,GAAGD;YAAO,CAAC,CAAC;YACzC;UACF;QACA,KAAK,UAAU;UAAE;YACf,MAAMA,MAAM,GAAG;cAAE,GAAGp3S;YAAI,CAAC;YACzB,OAAOo3S,MAAM,CAAC7zS,IAAI,CAAC,CAAC;YACpBqzS,aAAa,GAAG,IAAIU,QAAQ,CAAC;cAAE,GAAGF;YAAO,CAAC,CAAC;YAC3C;UACF;QACA,KAAK,YAAY;UAAE;YACjB,MAAMA,MAAM,GAAG;cAAE,GAAGp3S;YAAI,CAAC;YACzB,OAAOo3S,MAAM,CAAC7zS,IAAI,CAAC,CAAC;YACpBqzS,aAAa,GAAG,IAAI5B,WAAW,CAAC;cAAE,GAAGoC;YAAO,CAAC,CAAC;YAC9C;UACF;QACA;UAAS;YACPR,aAAa,GAAG,IAAIjyK,KAAK,CAAC;cAAE,GAAG3kI;YAAI,CAAC,CAAC;UACvC;MACF;MAEA,IAAI,OAAO,IAAI,CAAC8C,OAAO,CAAC84H,QAAQ,KAAK,UAAU,EAAE;QAC/C;QACAg7K,aAAa,CAACh7K,QAAQ,CAAC,IAAI,CAAC94H,OAAO,CAAC84H,QAAQ,CAAC;MAC/C;MAEA,IAAI,CAAC7+G,IAAI,CAAC9c,WAAW,CAAC22S,aAAa,CAAC/sK,WAAW,CAAC;MAEhD,IAAIwyJ,SAAS,KAAK,eAAe,EAAE;QACjC,IAAI,CAAC3nK,MAAM,GAAG;UAAE,GAAG,IAAI,CAACA,MAAM;UAAE,GAAGkiL,aAAa,CAACliL;QAAO,CAAC;MAC3D,CAAC,MAAM;QACL,IAAI,CAACA,MAAM,CAAC10H,GAAG,CAACgD,EAAE,CAAC,GAAG4zS,aAAa;MACrC;IACF,CAAC,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC9zS,OAAO,CAACqhS,cAAc,EAAE;MAChC,MAAMp1P,OAAO,GAAG+/E,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QAAE+mG,KAAK,EAAE;MAAc,CAAC,CAAC;MACnE;MACA,MAAMytM,YAAY,GAAG,IAAIzxK,MAAM,CAAC;QAC9BviI,IAAI,EAAE,QAAQ;QACdJ,IAAI,EAAE,MAAM;QACZmF,IAAI,EAAE,MAAM;QACZrF,IAAI,EAAE;MACR,CAAC,CAAC,CAACi5H,QAAQ,CAACntF,OAAO,CAAC;MACpB,IAAI,CAAC2gF,OAAO,CAAC,QAAQ,CAAC,GAAG6nL,YAAY;;MAErC;MACA,IAAI,IAAI,CAACz0S,OAAO,CAAC4sH,OAAO,EAAE;QACxB,IAAI,CAAC5sH,OAAO,CAAC4sH,OAAO,CAAC3vH,OAAO,CAAC6C,MAAM,IAAI;UACrC,MAAM40S,SAAS,GAAG,IAAI1xK,MAAM,CAAC;YAAE,GAAGljI;UAAO,CAAC,CAAC,CAACs5H,QAAQ,CAACntF,OAAO,CAAC;UAC7D,IAAInsC,MAAM,CAAC0F,IAAI,EAAE;YACf,IAAI,CAAConH,OAAO,CAAC9sH,MAAM,CAAC0F,IAAI,CAAC,GAAGkvS,SAAS;UACvC;QACF,CAAC,CAAC;MACJ;;MAEA;MACA,MAAMzxK,YAAY,GAAG,IAAID,MAAM,CAAC;QAC9BviI,IAAI,EAAE,QAAQ;QACdJ,IAAI,EAAE,QAAQ;QACdmF,IAAI,EAAE,QAAQ;QACdrF,IAAI,EAAE,QAAQ;QACdK,KAAK,EAAE,QAAQ;QACfw5H,SAAS,EAAE,UAAU;QACrBzuD,MAAM,EAAE;MACV,CAAC,CAAC,CAAC6tD,QAAQ,CAACntF,OAAO,CAAC;MACpB,IAAI,CAAC2gF,OAAO,CAAC,QAAQ,CAAC,GAAGqW,YAAY;;MAErC;MACA,MAAMigK,YAAY,GAAG,IAAIlgK,MAAM,CAAC;QAC9BviI,IAAI,EAAE,OAAO;QACbJ,IAAI,EAAE,QAAQ;QACdmF,IAAI,EAAE,QAAQ;QACdhF,KAAK,EAAE,SAAS;QAChBw5H,SAAS,EAAE;MACb,CAAC,CAAC,CAACZ,QAAQ,CAACntF,OAAO,CAAC;MACpB,IAAI,CAAC2gF,OAAO,CAAC,QAAQ,CAAC,GAAGs2K,YAAY;MAErC,IAAI,CAACjpR,IAAI,CAAC9c,WAAW,CAAC8uC,OAAO,CAAC;IAChC;;IAEA;IACA;IACA;EACF,CAAC;EAEDwtF,IAAI,CAAC14G,SAAS,CAAC0gH,YAAY,GAAG,YAAY;IACxC,IAAI,CAACxnH,IAAI,CAACpa,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MACxC,MAAMihI,WAAW,GAAG,IAAIC,WAAW,CAAC,UAAU,EAAE;QAAE5Q,MAAM,EAAEtwH;MAAE,CAAC,CAAC;MAC9D,IAAI,CAACgY,IAAI,CAAC4O,aAAa,CAACq6G,WAAW,CAAC;IACtC,CAAC,CAAC;IAEF,IAAI,CAACjpH,IAAI,CAACpa,gBAAgB,CACxB,OAAO,EACP+1B,KAAK,CAACosG,QAAQ,CAAC//H,CAAC,IAAI;MAClB,MAAMihI,WAAW,GAAG,IAAIC,WAAW,CAAC,SAAS,EAAE;QAAE5Q,MAAM,EAAEtwH;MAAE,CAAC,CAAC;MAC7D,IAAI,CAACgY,IAAI,CAAC4O,aAAa,CAACq6G,WAAW,CAAC;IACtC,CAAC,EAAE,GAAG,CACR,CAAC;IAED,IAAI,IAAI,CAACtW,OAAO,CAAC,QAAQ,CAAC,EAAE;MAC1B,IAAI,CAACA,OAAO,CAAC,QAAQ,CAAC,CAAC/3G,OAAO,CAAC5S,CAAC,IAAI;QAClC,MAAMihI,WAAW,GAAG,IAAIC,WAAW,CAAC,UAAU,EAAE;UAAE5Q,MAAM,EAAEtwH;QAAE,CAAC,CAAC;QAC9D,IAAI,CAACgY,IAAI,CAAC4O,aAAa,CAACq6G,WAAW,CAAC;MACtC,CAAC,CAAC;IACJ;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEzJ,IAAI,CAAC14G,SAAS,CAACk4G,QAAQ,GAAG,UAAUiL,MAAM,EAAE;IAC1C,IAAI,CAACjqH,IAAI,CAACpa,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MACxCA,CAAC,CAAC6C,cAAc,CAAC,CAAC;MAElB,MAAMotH,QAAQ,GAAG,IAAIyiL,QAAQ,CAAC,IAAI,CAAC16R,IAAI,CAAC;MACxC,MAAMgI,OAAO,GAAGiwG,QAAQ,CAACjwG,OAAO,CAAC,CAAC;MAClC,MAAMxf,IAAI,GAAG+b,MAAM,CAACo2R,WAAW,CAAC3yR,OAAO,CAAC;MAExCiiH,MAAM,CAACzhI,IAAI,EAAER,CAAC,CAACs0H,SAAS,EAAE,IAAI,CAAC+7D,MAAM,CAAC;IACxC,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE74D,IAAI,CAAC14G,SAAS,CAACm4G,OAAO,GAAG,UAAUgL,MAAM,EAAE;IACzC,IAAI,CAACjqH,IAAI,CAACpa,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACvCA,CAAC,CAAC6C,cAAc,CAAC,CAAC;MAElB,IAAI,CAAClI,KAAK,CAAC,CAAC;MAEZsnI,MAAM,CAAC,CAAC;IACV,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEzK,IAAI,CAAC14G,SAAS,CAACi4G,QAAQ,GAAG,UAAUkL,MAAM,EAAE;IACxC,IAAI,CAACjqH,IAAI,CAACpa,gBAAgB,CAAC,UAAU,EAAEoC,CAAC,IAAI;MAC5CA,CAAC,CAAC6C,cAAc,CAAC,CAAC;MAElBo/H,MAAM,CAACzhI,IAAI,EAAER,CAAC,CAACs0H,SAAS,CAAC;IAC3B,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEkD,IAAI,CAAC14G,SAAS,CAAC+3G,QAAQ,GAAG,UAAUoL,MAAM,EAAE;IAC1C,IAAI,CAACjqH,IAAI,CAACpa,gBAAgB,CAAC,UAAU,EAAEoC,CAAC,IAAI;MAC1CiiI,MAAM,CAACjiI,CAAC,CAACswH,MAAM,EAAE,IAAI,CAAC+/D,MAAM,CAAC;IAC/B,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE74D,IAAI,CAAC14G,SAAS,CAACg4G,OAAO,GAAG,UAAUmL,MAAM,EAAE;IACzC,IAAI,CAACjqH,IAAI,CAACpa,gBAAgB,CACxB,SAAS,EACT+1B,KAAK,CAACosG,QAAQ,CAAC//H,CAAC,IAAI;MAClBiiI,MAAM,CAACjiI,CAAC,CAACswH,MAAM,CAAC;IAClB,CAAC,EAAE,GAAG,CACR,CAAC;EACH,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEkH,IAAI,CAAC14G,SAAS,CAACuxG,YAAY,GAAG,UAAU4R,MAAM,EAAE;IAC9C,IAAI,CAACjqH,IAAI,CAACpa,gBAAgB,CAAC,YAAY,EAAEoC,CAAC,IAAI;MAC5CiiI,MAAM,CAACjiI,CAAC,CAAC;IACX,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEw3H,IAAI,CAAC14G,SAAS,CAACnkB,KAAK,GAAG,YAAY;IACjC,IAAI,CAACs1H,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACogE,MAAM,GAAG,IAAI;;IAElB;IACA,KAAKriE,SAAS,IAAI,IAAI,CAAC2B,MAAM,EAAE;MAC7B,IAAI,CAACA,MAAM,CAAC3B,SAAS,CAAC,CAACrzH,KAAK,CAAC,CAAC;IAChC;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE68H,IAAI,CAAC14G,SAAS,CAAC63G,iBAAiB,GAAG,YAA0B;IAAA,IAAhB00H,OAAO,GAAArmP,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,IAAI;IACzD,KAAKgpH,SAAS,IAAI,IAAI,CAAC2B,MAAM,EAAE;MAC7B,IAAI,CAACA,MAAM,CAAC3B,SAAS,CAAC,CAACpD,cAAc,CAACygI,OAAO,CAAC;IAChD;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE7zH,IAAI,CAAC14G,SAAS,CAACjkB,QAAQ,GAAG,UAAU2F,IAAI,EAAE6vL,MAAM,EAAE;IAChD,IAAI,CAAC11L,KAAK,CAAC,CAAC;IAEZ,IAAI,CAACs1H,QAAQ,GAAGzvH,IAAI;IACpB,IAAI,CAAC6vL,MAAM,GAAGA,MAAM;IAEpB,KAAKriE,SAAS,IAAIxtH,IAAI,EAAE;MACtB,IAAI,CAACmvH,MAAM,CAAC3B,SAAS,CAAC,CAAC4B,QAAQ,CAACpvH,IAAI,CAACwtH,SAAS,CAAC,CAAC;IAClD;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEwJ,IAAI,CAAC14G,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IACxC,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC8c,IAAI,CAAC;IAC7B;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOw/G,IAAI;AACb,CAAC,CAAC;ACzUF,CAAC,UAAU/3F,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAACstP,IAAI,GAAGrtP,OAAO,CAAC,CAAC;AACzB,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB,MAAMkzQ,GAAG,GAAG;IACVp4S,GAAG,EAAE;AACT;AACA;AACA;AACA,KAAK;IACDke,UAAU,EAAE;AAChB;AACA;AACA;AACA,KAAK;IACDm6R,UAAU,EAAE;AAChB;AACA;AACA;AACA,KAAK;IACDC,SAAS,EAAE;AACf;AACA;AACA;AACA,KAAK;IACDhnJ,MAAM,EAAE;AACZ;AACA;AACA;AACA,KAAK;IACD/yI,QAAQ,EAAE;AACd;AACA;AACA;AACA,KAAK;IACDG,SAAS,EAAE;AACf;AACA;AACA;AACA,KAAK;IACD65R,OAAO,EAAE;AACb;AACA;AACA;AACA,KAAK;IACD/pS,KAAK,EAAE;AACX;AACA;AACA;AACA,KAAK;IACDgqS,YAAY,EAAE;AAClB;AACA;AACA;AACA,KAAK;IACDC,aAAa,EAAE;AACnB;AACA;AACA;AACA,KAAK;IACDviS,MAAM,EAAE;AACZ;AACA;AACA;AACA,KAAK;IACDyI,IAAI,EAAE;AACV;AACA;AACA;AACA,KAAK;IACD3M,KAAK,EAAE;AACX;AACA;AACA;AACA,KAAK;IACD0mS,cAAc,EAAE;AACpB;AACA;AACA;AACA,KAAK;IACDC,cAAc,EAAE;AACpB;AACA;AACA;AACA,KAAK;IACDxyQ,IAAI,EAAE;AACV;AACA;AACA;AACA,KAAK;IACDyyQ,KAAK,EAAE;AACX;AACA;AACA;AACA,KAAK;IACDC,MAAM,EAAE;AACZ;AACA;AACA;AACA,KAAK;IACDv4R,WAAW,EAAE;AACjB;AACA;AACA;AACA,KAAK;IACDw4R,GAAG,EAAE;AACT;AACA;AACA;AACA,KAAK;IACDC,IAAI,EAAE;AACV;AACA;AACA;AACA,KAAK;IACDt5R,IAAI,EAAE;AACV;AACA;AACA;AACA,KAAK;IACDqpB,IAAI,EAAE;AACV;AACA;AACA;AACA,KAAK;IACDlpB,OAAO,EAAE;AACb;AACA;AACA;AACA;EACE,CAAC;EAED,MAAM4yQ,OAAO,GAAGzpR,IAAI,IAAI;IACtB,OAAOwmH,IAAI,CAAC/rH,aAAa,CAAC,MAAM,EAAE;MAAEimD,IAAI,EAAE2uP,GAAG,CAACrvS,IAAI,CAAC;MAAEwhG,KAAK,EAAE;IAAU,CAAC,CAAC;EAC1E,CAAC;EAED,MAAMyuM,aAAa,GAAGjwS,IAAI,IAAI;IAC5B,OAAOwmH,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAEimD,IAAI,EAAE,yBAAyB2uP,GAAG,CAACrvS,IAAI,CAAC,SAAS;MAAEwhG,KAAK,EAAE;IAAa,CAAC,CAAC;EAC9G,CAAC;EAED,OAAO;IACLioL,OAAO;IACPwmB;EACF,CAAC;AACH,CAAC,CAAC;AC/IF,CAAC,UAAU/zQ,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAACmgG,KAAK,GAAGlgG,OAAO,CAAC,CAAC;AAC1B,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;EACA;EACA;EACA;AACF;AACA;AACA;EACE,MAAM6qQ,eAAe,GAAG;IACtBkJ,SAAS,EAAE,KAAK;IAChB55R,IAAI,EAAE,IAAI;IACVxa,KAAK,EAAE;EACT,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASugI,KAAKA,CAAC7hI,OAAO,EAAE;IACtB;IACA,IAAI,CAACA,OAAO,GAAGgsH,IAAI,CAAComL,uBAAuB,CAACx8Q,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC,CAAC;IACzF,IAAI,CAACA,OAAO,CAACmB,UAAU,CAACqE,IAAI,GAAG,IAAI,CAACxF,OAAO,CAACmB,UAAU,CAACjB,EAAE;;IAEzD;IACA,IAAI,CAAC6mI,WAAW,GAAG,IAAI;IACvB,IAAI,CAACxjI,KAAK,GAAG,IAAI;IACjB,IAAI,CAACorS,QAAQ,GAAG,IAAI;IACpB,IAAI,CAAC2E,SAAS,GAAG,IAAI;IAErB,IAAI,CAAC9xK,MAAM,CAAC,CAAC;IAEb,IAAI,IAAI,CAACxhI,OAAO,CAACsB,KAAK,EAAE;MACtB,IAAI,CAACuwH,QAAQ,CAAC,IAAI,CAAC7xH,OAAO,CAACsB,KAAK,CAAC;IACnC;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEugI,KAAK,CAAC9gH,SAAS,CAACygH,MAAM,GAAG,YAAY;IACnC;IACA,MAAM6tK,UAAU,GAAG,CAAC,YAAY,EAAE,GAAG,IAAI,CAACrvS,OAAO,CAACmB,UAAU,CAACV,IAAI,EAAE,EAAE,GAAG,IAAI,CAACT,OAAO,CAACmB,UAAU,CAACjB,EAAE,EAAE,CAAC;IACrG,MAAMmyS,UAAU,GAAGrmL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAC3C+mG,KAAK,EAAE,IAAI,CAAChnG,OAAO,CAACurE,MAAM,GAAG,CAAC,GAAG8jO,UAAU,EAAE,oBAAoB,CAAC,GAAGA;IACvE,CAAC,CAAC;;IAEF;IACA,MAAMgE,SAAS,GAAGrnL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAwB,CAAC,CAAC;IAC/E,IAAI,CAACzjG,KAAK,GAAGyoH,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAAE,GAAG,IAAI,CAACD,OAAO,CAACmB;IAAW,CAAC,CAAC;IACxE,IAAI,CAACwtS,QAAQ,GAAG3iL,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAC1CI,IAAI,EAAE,IAAI,CAACL,OAAO,CAAC6B,KAAK;MACxBqpB,GAAG,EAAE,IAAI,CAAClrB,OAAO,CAACmB,UAAU,CAACjB;IAC/B,CAAC,CAAC;IACFmzS,SAAS,CAACt5I,MAAM,CAAC,IAAI,CAACx2J,KAAK,CAAC;IAE5B8uS,UAAU,CAACt4I,MAAM,CAAC,IAAI,CAAC40I,QAAQ,EAAE0E,SAAS,CAAC;;IAE3C;IACA,IAAI,CAACC,SAAS,GAAGtnL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE,kBAAkB;MAAE3mG,IAAI,EAAE,IAAI,CAACL,OAAO,CAAC8b,IAAI,IAAI;IAAG,CAAC,CAAC;IACxGu2R,UAAU,CAACt4I,MAAM,CAAC,IAAI,CAACu5I,SAAS,CAAC;;IAEjC;IACA,IAAI,IAAI,CAACtzS,OAAO,CAAC01S,SAAS,EAAE;MAC1B,MAAMC,WAAW,GAAG,IAAI,CAAC31S,OAAO,CAACmB,UAAU,CAACyjI,SAAS,GACjD;QAAE1+E,IAAI,EAAE,GAAG,CAAC,iBAAiB,IAAI,CAAClmD,OAAO,CAACmB,UAAU,CAACyjI,SAAS;MAAG,CAAC,GAClE;QAAEvkI,IAAI,EAAE;MAAI,CAAC;MACjB,MAAMu1S,UAAU,GAAG5pL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QAAE+mG,KAAK,EAAE,uBAAuB;QAAE,GAAG2uM;MAAY,CAAC,CAAC;MAChGtD,UAAU,CAACt4I,MAAM,CAAC67I,UAAU,CAAC;IAC/B;IAEA,IAAI,CAAC7uK,WAAW,GAAGsrK,UAAU;IAE7B,OAAO,IAAI;EACb,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACExwK,KAAK,CAAC9gH,SAAS,CAAC8wG,QAAQ,GAAG,UAAUvwH,KAAK,EAAE;IAC1C,IAAI,IAAI,CAACtB,OAAO,CAACmB,UAAU,CAACV,IAAI,KAAK,MAAM,EAAE;MAC3C,IAAI,CAACa,KAAK,EAAE;QACV,IAAI,CAACiC,KAAK,CAACjC,KAAK,GAAG,EAAE;QACrB;MACF;MAEAA,KAAK,GAAGA,KAAK,CAACuf,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAE3B,MAAMg1R,UAAU,GAAG1oR,KAAK,CAAC0F,WAAW,CAACvxB,KAAK,CAAC;MAC3C,IAAIu0S,UAAU,KAAK,UAAU,EAAE;QAC7Bv0S,KAAK,GAAG6rB,KAAK,CAAC+G,YAAY,CAAC5yB,KAAK,CAAC;MACnC;IACF;IAEA,IAAI,CAACiC,KAAK,CAACjC,KAAK,GAAGA,KAAK;EAC1B,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEugI,KAAK,CAAC9gH,SAAS,CAAC4xG,QAAQ,GAAG,YAAY;IACrC,OAAO,IAAI,CAACpvH,KAAK,CAACjC,KAAK;EACzB,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEugI,KAAK,CAAC9gH,SAAS,CAACnkB,KAAK,GAAG,YAAY;IAClC,IAAI,CAAC2G,KAAK,CAACjC,KAAK,GAAG,EAAE;EACvB,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEugI,KAAK,CAAC9gH,SAAS,CAACqzG,cAAc,GAAG,UAAU8qK,UAAU,EAAE;IACrD,IAAI,CAAC37R,KAAK,CAACo2H,QAAQ,GAAGulK,UAAU;EAClC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEr9J,KAAK,CAAC9gH,SAAS,CAAC8rG,cAAc,GAAG,UAAUqmL,SAAS,EAAE;IACpD,IAAI,CAAC3vS,KAAK,CAACmR,QAAQ,GAAGw+R,SAAS;IAC/B,IAAI,CAAC3vS,KAAK,CAACgwS,QAAQ,GAAGL,SAAS;EACjC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACErxK,KAAK,CAAC9gH,SAAS,CAAC+xG,eAAe,GAAG,UAAUviH,OAAO,EAAE;IACnD,IAAI,CAAChN,KAAK,CAACiwS,iBAAiB,CAACjjS,OAAO,CAAC;EACvC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEsxH,KAAK,CAAC9gH,SAAS,CAACgyG,SAAS,GAAG,UAAUxiH,OAAO,EAAE;IAC7C,IAAI,CAAC+iS,SAAS,CAACz2S,SAAS,GAAG0T,OAAO;IAClC;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEsxH,KAAK,CAAC9gH,SAAS,CAACoyG,WAAW,GAAG,UAAU5iH,OAAO,EAAE;IAC/C,IAAI,CAAC+iS,SAAS,CAACz2S,SAAS,GAAG0T,OAAO;IAClC;EACF,CAAC;;EAED;AACF;AACA;EACEsxH,KAAK,CAAC9gH,SAAS,CAACqyG,mBAAmB,GAAG,YAAY;IAChD,IAAI,CAACkgL,SAAS,CAACpvS,SAAS,GAAG,IAAI,CAAClE,OAAO,CAAC8b,IAAI;EAC9C,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE+lH,KAAK,CAAC9gH,SAAS,CAAC+3G,QAAQ,GAAG,UAAUoL,MAAM,EAAE;IAC3C,IAAI,CAAC3gI,KAAK,CAAC1D,gBAAgB,CAAC,UAAU,EAAEoC,CAAC,IAAI;MAC3C,IAAIiiI,MAAM,EAAEA,MAAM,CAACjiI,CAAC,CAAC;IACvB,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE4/H,KAAK,CAAC9gH,SAAS,CAACg4G,OAAO,GAAG,UAAUmL,MAAM,EAAE;IAC1C,IAAI,CAAC3gI,KAAK,CAAC1D,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACxC,IAAIiiI,MAAM,EAAEA,MAAM,CAACjiI,CAAC,CAAC;IACvB,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE4/H,KAAK,CAAC9gH,SAAS,CAAClM,OAAO,GAAG,UAAUqvH,MAAM,EAAE;IAC1C,IAAI,CAAC3gI,KAAK,CAAC1D,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACxC,IAAIiiI,MAAM,EAAEA,MAAM,CAACjiI,CAAC,CAAC;IACvB,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE4/H,KAAK,CAAC9gH,SAAS,CAAC0yR,gBAAgB,GAAG,UAAUvjL,QAAQ,EAAE;IACrD,IAAIlE,IAAI,CAAC0nL,kBAAkB,CAACxjL,QAAQ,CAAC,EAAE;MACrC,IAAI,CAACy+K,QAAQ,CAAC9xS,SAAS,GAAGqzH,QAAQ;MAElC;IACF;IAEA,IAAI,CAACy+K,QAAQ,CAACzqS,SAAS,GAAGgsH,QAAQ;EACpC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE2R,KAAK,CAAC9gH,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IACzC,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC4pI,WAAW,CAAC;IACpC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOlF,KAAK;AACd,CAAC,CAAC;AC/QF,CAAC,UAAUngG,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAACk/F,QAAQ,GAAGj/F,OAAO,CAAC,CAAC;AAC7B,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;AACF;AACA;AACA;AACA;AACA;EACE,SAASi/F,QAAQA,CAACr+E,UAAU,EAAE;IAC5B,IAAI,CAACA,UAAU,GAAGA,UAAU;IAE5B,IAAI,CAACwkF,WAAW,GAAG,IAAI;IAEvB,IAAI,CAAChnI,KAAK,CAAC,CAAC;EACd;;EAEA;AACF;AACA;AACA;AACA;EACE6gI,QAAQ,CAAC7/G,SAAS,CAAChhB,KAAK,GAAG,YAAY;IACrC,MAAM+1S,SAAS,GAAG,sBAAsB,IAAI,CAACvzP,UAAU,QAAQ,IAAI9rC,IAAI,CAAC,CAAC,CAACuM,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;IAChG,MAAM+yR,gBAAgB,GAAG,2CAA2C;IAEpE,MAAMC,KAAK,GAAGhqL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MACtCiiB,GAAG,EAAE4zR,SAAS;MACdG,OAAO,EAAEF,gBAAgB;MACzBG,OAAO,EAAE;IACX,CAAC,CAAC;IAEF,IAAI,CAACnvK,WAAW,GAAG/a,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE,UAAU;MAAEo9B,IAAI,EAAE4xK;IAAM,CAAC,CAAC;EAClF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEp1K,QAAQ,CAAC7/G,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IAC5C,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC4pI,WAAW,CAAC;IACpC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOnG,QAAQ;AACjB,CAAC,CAAC;ACnDF,CAAC,UAAUl/F,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAAC2yQ,UAAU,GAAG1yQ,OAAO,CAAC,CAAC;AAC/B,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;AACF;AACA;AACA;EACE,MAAM6qQ,eAAe,GAAG;IACtB93R,QAAQ,EAAE,KAAK;IACfilH,QAAQ,EAAE;EACZ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASw8K,KAAKA,CAACn2S,OAAO,EAAE;IACtB;IACA,IAAI,CAACA,OAAO,GAAGgsH,IAAI,CAAComL,uBAAuB,CAACx8Q,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC,CAAC;IACzF,IAAI,CAACA,OAAO,CAACmB,UAAU,CAACV,IAAI,GAAG,OAAO;;IAEtC;IACA,IAAI,CAACsmI,WAAW,GAAG,IAAI;IACvB,IAAI,CAACxjI,KAAK,GAAG,IAAI;IACjB,IAAI,CAACorS,QAAQ,GAAG,IAAI;IAEpB,IAAI,CAACntK,MAAM,CAAC,CAAC;EACf;;EAEA;AACF;AACA;AACA;AACA;EACE20K,KAAK,CAACp1R,SAAS,CAACygH,MAAM,GAAG,YAAY;IACnC;IACA,MAAM6tK,UAAU,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,IAAI,CAACrvS,OAAO,CAACmB,UAAU,CAACjB,EAAE,EAAE,CAAC;IAC3E,IAAI,CAAC6mI,WAAW,GAAG/a,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAC3C+mG,KAAK,EAAEqoM;IACT,CAAC,CAAC;;IAEF;IACA,IAAI,CAAC9rS,KAAK,GAAGyoH,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAAE,GAAG,IAAI,CAACD,OAAO,CAACmB;IAAW,CAAC,CAAC;IACxE,IAAI,CAACwtS,QAAQ,GAAG3iL,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAC1CI,IAAI,EAAE,IAAI,CAACL,OAAO,CAAC6B,KAAK;MACxBqpB,GAAG,EAAE,IAAI,CAAClrB,OAAO,CAACmB,UAAU,CAACjB;IAC/B,CAAC,CAAC;IACF,IAAI,CAAC6mI,WAAW,CAAC5pI,WAAW,CAAC,IAAI,CAACoG,KAAK,CAAC;IACxC,IAAI,CAACwjI,WAAW,CAAC5pI,WAAW,CAAC,IAAI,CAACwxS,QAAQ,CAAC;EAC7C,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEwH,KAAK,CAACp1R,SAAS,CAAC8wG,QAAQ,GAAG,UAAUvwH,KAAK,EAAE;IAC1C,IAAI,CAACiC,KAAK,CAACgC,OAAO,GAAGjE,KAAK;EAC5B,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE60S,KAAK,CAACp1R,SAAS,CAAC4xG,QAAQ,GAAG,YAAY;IACrC,OAAO,IAAI,CAACpvH,KAAK,CAACgC,OAAO;EAC3B,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE4wS,KAAK,CAACp1R,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IACzC,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC4pI,WAAW,CAAC;IACpC;IAEA,OAAO,IAAI;EACb,CAAC;;EAED;EACA;EACA;EACA;AACF;AACA;AACA;EACE,MAAMqvK,iBAAiB,GAAG;IACxB1hS,QAAQ,EAAE,KAAK;IACfilH,QAAQ,EAAE;EACZ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAS06K,UAAUA,CAACr0S,OAAO,EAAE;IAC3B;IACA,IAAI,CAACA,OAAO,GAAG41B,KAAK,CAAC62Q,YAAY,CAAC2J,iBAAiB,EAAEp2S,OAAO,CAAC;IAC7D,IAAI,CAAC4xH,MAAM,GAAG,CAAC,CAAC;;IAEhB;IACA,IAAI,CAACmV,WAAW,GAAG,IAAI;IACvB,IAAI,CAAC6sK,aAAa,GAAG,IAAI;IAEzB,IAAI,CAACpyK,MAAM,CAAC,CAAC;EACf;;EAEA;AACF;AACA;AACA;AACA;EACE6yK,UAAU,CAACtzR,SAAS,CAACygH,MAAM,GAAG,YAAY;IACxC,IAAI,CAACuF,WAAW,GAAG/a,IAAI,CAAC/rH,aAAa,CAAC,UAAU,CAAC;IACjD,IAAI,CAAC2zS,aAAa,GAAG5nL,IAAI,CAAC/rH,aAAa,CAAC,QAAQ,EAAE;MAAEI,IAAI,EAAE,IAAI,CAACL,OAAO,CAACoD;IAAW,CAAC,CAAC;IACpF,IAAI,CAAC2jI,WAAW,CAAC5pI,WAAW,CAAC,IAAI,CAACy2S,aAAa,CAAC;IAEhD,IAAI,CAAC5zS,OAAO,CAAC05H,MAAM,CAACz8H,OAAO,CAAC42S,KAAK,IAAI;MACnC,MAAMC,aAAa,GAAG,IAAIqC,KAAK,CAAC;QAC9B,GAAGtC,KAAK;QACRruS,IAAI,EAAE,IAAI,CAACxF,OAAO,CAACE,EAAE;QACrBwU,QAAQ,EAAE,IAAI,CAAC1U,OAAO,CAAC0U,QAAQ;QAC/BilH,QAAQ,EAAE,IAAI,CAAC35H,OAAO,CAAC25H;MACzB,CAAC,CAAC;MACF,IAAI,CAACoN,WAAW,CAAC5pI,WAAW,CAAC22S,aAAa,CAAC/sK,WAAW,CAAC;MACvD,IAAI,CAACnV,MAAM,CAACiiL,KAAK,CAAC3zS,EAAE,CAAC,GAAG4zS,aAAa;IACvC,CAAC,CAAC;IAEF,IAAI,CAACR,SAAS,GAAGtnL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE,kBAAkB;MAAE3mG,IAAI,EAAE,IAAI,CAACL,OAAO,CAAC8b,IAAI,IAAI;IAAG,CAAC,CAAC;IACxG,IAAI,CAACirH,WAAW,CAACgzB,MAAM,CAAC,IAAI,CAACu5I,SAAS,CAAC;EACzC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEe,UAAU,CAACtzR,SAAS,CAAC8wG,QAAQ,GAAG,UAAUtoE,OAAO,EAAE;IACjD,IAAI,CAACA,OAAO,IAAIA,OAAO,KAAK,EAAE,EAAE;MAC9B,IAAI,CAAC3sD,KAAK,CAAC,CAAC;MACZ;IACF;IAEA,IAAI,CAAC,IAAI,CAACg1H,MAAM,CAACroE,OAAO,CAAC,EAAE;MACzB;IACF;IAEA,IAAI,CAACqoE,MAAM,CAACroE,OAAO,CAAC,CAACsoE,QAAQ,CAAC,IAAI,CAAC;EACrC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEwiL,UAAU,CAACtzR,SAAS,CAAC4xG,QAAQ,GAAG,UAAUppE,OAAO,EAAE;IACjD,IAAI,CAACA,OAAO,EAAE;MACZ,IAAI8sP,cAAc;MAElB,KAAK9sP,OAAO,IAAI,IAAI,CAACqoE,MAAM,EAAE;QAC3B,IAAI,IAAI,CAACA,MAAM,CAACroE,OAAO,CAAC,CAACopE,QAAQ,CAAC,CAAC,EAAE;UACnC0jL,cAAc,GAAG,IAAI,CAACzkL,MAAM,CAACroE,OAAO,CAAC,CAAChmD,KAAK,CAACrD,EAAE;QAChD;MACF;MAEA,OAAOm2S,cAAc,GAAGA,cAAc,GAAG,EAAE;IAC7C;IAEA,OAAO,IAAI,CAACzkL,MAAM,CAACroE,OAAO,CAAC,CAACopE,QAAQ,CAAC,CAAC;EACxC,CAAC;EAED0hL,UAAU,CAACtzR,SAAS,CAACnkB,KAAK,GAAG,YAAY;IACvC,KAAK2sD,OAAO,IAAI,IAAI,CAACqoE,MAAM,EAAE;MAC3B,IAAI,CAACA,MAAM,CAACroE,OAAO,CAAC,CAACsoE,QAAQ,CAAC,KAAK,CAAC;IACtC;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEwiL,UAAU,CAACtzR,SAAS,CAAC8rG,cAAc,GAAG,UAAUqmL,SAAS,EAAE;IACzD,KAAK3pP,OAAO,IAAI,IAAI,CAACqoE,MAAM,EAAE;MAC3B,IAAI,CAACA,MAAM,CAACroE,OAAO,CAAC,CAAChmD,KAAK,CAACmR,QAAQ,GAAGw+R,SAAS;MAC/C,IAAI,CAACthL,MAAM,CAACroE,OAAO,CAAC,CAAChmD,KAAK,CAACgwS,QAAQ,GAAGL,SAAS;IACjD;EACF,CAAC;EAED,OAAOmB,UAAU;AACnB,CAAC,CAAC;ACjNF,CAAC,UAAU3yQ,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAAC6yQ,MAAM,GAAG5yQ,OAAO,CAAC,CAAC;AAC3B,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;EACA;EACA;EACA;AACF;AACA;AACA;EACE,MAAM6qQ,eAAe,GAAG;IACtB/pS,IAAI,EAAE,EAAE;IACR8oE,MAAM,EAAE,KAAK;IACbzvD,IAAI,EAAE,IAAI;IACV69G,QAAQ,EAAE,KAAK;IACfG,kBAAkB,EAAE;EACtB,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASy6K,MAAMA,CAACv0S,OAAO,EAAE;IACvB;IACA,IAAI,CAACA,OAAO,GAAGgsH,IAAI,CAAComL,uBAAuB,CAACx8Q,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC,CAAC;IACzF,IAAI,CAACA,OAAO,CAACmB,UAAU,CAACqE,IAAI,GAAG,IAAI,CAACxF,OAAO,CAACmB,UAAU,CAACjB,EAAE;;IAEzD;IACA,IAAI,CAAC6mI,WAAW,GAAG,IAAI;IACvB,IAAI,CAACssK,SAAS,GAAG,IAAI;IACrB,IAAI,CAACrxS,MAAM,GAAG,IAAI;IAClB,IAAI,CAACsxS,SAAS,GAAG,IAAI;IAErB,IAAI,CAAC9xK,MAAM,CAAC,CAAC;EACf;;EAEA;AACF;AACA;AACA;AACA;EACE+yK,MAAM,CAACxzR,SAAS,CAACygH,MAAM,GAAG,YAAY;IACpC,MAAM6tK,UAAU,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,IAAI,CAACrvS,OAAO,CAACmB,UAAU,CAACjB,EAAE,EAAE,CAAC;IAC5E,IAAI,CAAC6mI,WAAW,GAAG/a,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAC3C+mG,KAAK,EAAE,IAAI,CAAChnG,OAAO,CAACurE,MAAM,GAAG,CAAC,GAAG8jO,UAAU,EAAE,oBAAoB,CAAC,GAAGA;IACvE,CAAC,CAAC;IAEF,IAAI,CAACgE,SAAS,GAAGrnL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAwB,CAAC,CAAC;IAC9E,IAAI,CAAChlG,MAAM,GAAGgqH,IAAI,CAAC/rH,aAAa,CAAC,QAAQ,EAAE;MAAE,GAAG,IAAI,CAACD,OAAO,CAACmB;IAAW,CAAC,CAAC;IAC1E,MAAMwtS,QAAQ,GAAG3iL,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAC3CI,IAAI,EAAE,IAAI,CAACL,OAAO,CAAC6B,KAAK;MACxBqpB,GAAG,EAAE,IAAI,CAAClrB,OAAO,CAACmB,UAAU,CAACjB;IAC/B,CAAC,CAAC;IAEF,IAAI,CAACmzS,SAAS,CAACl2S,WAAW,CAAC,IAAI,CAAC6E,MAAM,CAAC;IACvC,IAAI,CAACqxS,SAAS,CAACl2S,WAAW,CAAC6xR,IAAI,CAACC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEnD,IAAI,CAACloJ,WAAW,CAAC5pI,WAAW,CAACwxS,QAAQ,CAAC;IACtC,IAAI,CAAC5nK,WAAW,CAAC5pI,WAAW,CAAC,IAAI,CAACk2S,SAAS,CAAC;IAE5C,IAAI,CAACC,SAAS,GAAGtnL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE,kBAAkB;MAAE3mG,IAAI,EAAE,IAAI,CAACL,OAAO,CAAC8b,IAAI,IAAI;IAAG,CAAC,CAAC;IACxG,IAAI,CAACirH,WAAW,CAAC5pI,WAAW,CAAC,IAAI,CAACm2S,SAAS,CAAC;IAE5C,IAAI,CAACx2S,QAAQ,CAAC,CAAC;EACjB,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEy3S,MAAM,CAACxzR,SAAS,CAACjkB,QAAQ,GAAG,UAAU2F,IAAI,EAAEo3H,YAAY,EAAE;IACxD,IAAIp3H,IAAI,IAAIzB,KAAK,CAACC,OAAO,CAACwB,IAAI,CAAC,EAAE,IAAI,CAACzC,OAAO,CAACyC,IAAI,GAAG,CAAC,GAAGA,IAAI,CAAC;IAE9D,IAAI,CAACT,MAAM,CAACnF,SAAS,GAAG,EAAE;IAE1B,IAAI,IAAI,CAACmD,OAAO,CAACyC,IAAI,CAACzF,MAAM,GAAG,CAAC,EAAE;MAChC,IAAI,IAAI,CAACgD,OAAO,CAAC85H,kBAAkB,EAAE;QACnC,IAAI,CAAC95H,OAAO,CAACyC,IAAI,CAAC49D,OAAO,CAAC;UAAE/+D,KAAK,EAAE,EAAE;UAAEjB,IAAI,EAAE;QAAG,CAAC,CAAC;MACpD;MAEA,IAAI,CAACL,OAAO,CAACyC,IAAI,CAACsU,IAAI,CAAC6e,KAAK,CAAC0gR,cAAc,CAAC,MAAM,CAAC,CAAC,CAACr5S,OAAO,CAAC2F,CAAC,IAAI;QAChE,MAAM2zS,SAAS,GAAGvqL,IAAI,CAAC/rH,aAAa,CAAC,QAAQ,EAAE;UAAEqB,KAAK,EAAEsB,CAAC,CAACtB,KAAK;UAAEjB,IAAI,EAAEuC,CAAC,CAACvC;QAAK,CAAC,CAAC;QAChF,IAAI,CAAC2B,MAAM,CAAC7E,WAAW,CAACo5S,SAAS,CAAC;MACpC,CAAC,CAAC;IACJ;;IAEA;IACA,IAAI,CAAC,IAAI,CAACv2S,OAAO,CAACyC,IAAI,IAAI,IAAI,CAACzC,OAAO,CAACyC,IAAI,CAACzF,MAAM,KAAK,CAAC,EAAE;MACxD,IAAI,CAAC6vH,cAAc,CAAC,IAAI,CAAC;IAC3B,CAAC,MAAM;MACL,IAAI,CAACA,cAAc,CAAC,KAAK,CAAC;IAC5B;IAEA,MAAM9xF,EAAE,GAAG8+F,YAAY,GAAGA,YAAY,GAAG,IAAI,CAAC75H,OAAO,CAAC65H,YAAY;IAClE,IAAI,CAAC73H,MAAM,CAACV,KAAK,GAAGy5B,EAAE;EACxB,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEw5Q,MAAM,CAACxzR,SAAS,CAAC8wG,QAAQ,GAAG,UAAUvwH,KAAK,EAAE;IAC3C,IAAI,CAACU,MAAM,CAACV,KAAK,GAAGA,KAAK;EAC3B,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEizS,MAAM,CAACxzR,SAAS,CAAC4xG,QAAQ,GAAG,YAAY;IACtC,OAAO,IAAI,CAAC3wH,MAAM,CAACV,KAAK;EAC1B,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEizS,MAAM,CAACxzR,SAAS,CAACnkB,KAAK,GAAG,YAAY;IACnC,IAAI,CAACoF,MAAM,CAACV,KAAK,GAAG,EAAE;EACxB,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEizS,MAAM,CAACxzR,SAAS,CAAC+xG,eAAe,GAAG,UAAUviH,OAAO,EAAE;IACpD,IAAI,CAACvO,MAAM,CAACwxS,iBAAiB,CAACjjS,OAAO,CAAC;EACxC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEsxH,KAAK,CAAC9gH,SAAS,CAACgyG,SAAS,GAAG,UAAUxiH,OAAO,EAAE;IAC7C,IAAI,CAAC+iS,SAAS,CAACz2S,SAAS,GAAG0T,OAAO;IAClC;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEsxH,KAAK,CAAC9gH,SAAS,CAACoyG,WAAW,GAAG,UAAU5iH,OAAO,EAAE;IAC/C,IAAI,CAAC+iS,SAAS,CAACz2S,SAAS,GAAG0T,OAAO;IAClC;EACF,CAAC;;EAED;AACF;AACA;EACEsxH,KAAK,CAAC9gH,SAAS,CAACqyG,mBAAmB,GAAG,YAAY;IAChD,IAAI,CAACkgL,SAAS,CAACpvS,SAAS,GAAG,IAAI,CAAClE,OAAO,CAAC8b,IAAI,IAAI,EAAE;EACpD,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEy4R,MAAM,CAACxzR,SAAS,CAACqzG,cAAc,GAAG,UAAUoiL,KAAK,EAAE;IACjD,IAAI,CAACx0S,MAAM,CAAC23H,QAAQ,GAAG68K,KAAK;EAC9B,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEjC,MAAM,CAACxzR,SAAS,CAAC8rG,cAAc,GAAG,UAAUqmL,SAAS,EAAE;IACrD,IAAI,CAAClxS,MAAM,CAAC0S,QAAQ,GAAGw+R,SAAS;IAChC,IAAI,CAAClxS,MAAM,CAACuxS,QAAQ,GAAGL,SAAS;EAClC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEqB,MAAM,CAACxzR,SAAS,CAAC+3G,QAAQ,GAAG,UAAUoL,MAAM,EAAE;IAC5C,IAAI,CAACliI,MAAM,CAACnC,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC1CiiI,MAAM,CAACjiI,CAAC,CAAC;IACX,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEsyS,MAAM,CAACxzR,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IAC1C,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC4pI,WAAW,CAAC;IACpC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOwtK,MAAM;AACf,CAAC,CAAC;ACvOF,CAAC,UAAU7yQ,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAACsuQ,OAAO,GAAGruQ,OAAO,CAAC,CAAC;AAC5B,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;;EAEA;EACA;EACA;EACA;AACF;AACA;AACA;EACE,MAAM6qQ,eAAe,GAAG;IACtB36R,KAAK,EAAE,QAAQ;IACfioB,IAAI,EAAE;EACR,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASk2Q,OAAOA,CAAChwS,OAAO,EAAE;IACxB;IACA,IAAI,CAACA,OAAO,GAAG41B,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC;;IAE3D;IACA,IAAI,CAACgR,WAAW,GAAG,IAAI;IACvB,IAAI,CAACqnG,OAAO,GAAG,IAAI;IAEnB,IAAI,CAACt4G,KAAK,CAAC,CAAC;EACd;;EAEA;AACF;AACA;AACA;AACA;EACEiwS,OAAO,CAACjvR,SAAS,CAAChhB,KAAK,GAAG,YAAY;IACpC,IAAI,CAACiR,WAAW,GAAGg7G,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAiB,CAAC,CAAC;IACzE,IAAI,CAACqR,OAAO,GAAG2T,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAsB,CAAC,CAAC;IAE1E,IAAI,CAACh2F,WAAW,CAAC7T,WAAW,CAAC,IAAI,CAACk7G,OAAO,CAAC;EAC5C,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE23L,OAAO,CAACjvR,SAAS,CAAC01R,aAAa,GAAG,YAAY;IAC5C,IAAI,CAACzlS,WAAW,CAACxU,MAAM,CAAC,CAAC;EAC3B,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEwzS,OAAO,CAACjvR,SAAS,CAACovR,WAAW,GAAG,UAAU/rK,IAAI,EAAE;IAC9C,IAAI,CAACpzH,WAAW,CAACm/R,WAAW,CAAC/rK,IAAI,CAAC;EACpC,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE4rK,OAAO,CAACjvR,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IAC3C,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC6T,WAAW,CAAC;IACpC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOg/R,OAAO;AAChB,CAAC,CAAC;ACvFF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,UAAUtuQ,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,GAAGA,MAAM,IAAI/iB,IAAI;EACvB+iB,MAAM,CAACulG,KAAK,GAAGtlG,OAAO,CAAC,CAAC;AAC1B,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;AACF;AACA;AACA;AACA;EACE,MAAM+0Q,YAAY,GAAGtyK,IAAI,IAAI;IAC3B,OAAOpjI,KAAK,CAACoV,IAAI,CAACguH,IAAI,CAAC58G,UAAU,CAAC49O,QAAQ,CAAC,CAACl/O,OAAO,CAACk+G,IAAI,CAAC;EAC3D,CAAC;EAED,SAASuyK,eAAeA,CAAC7jR,UAAU,EAAE;IACnC;IACA,MAAMC,gBAAgB,GAAG,qBAAqB;IAC9C;IACA,MAAMC,qBAAqB,GAAG,uBAAuB;IAErD,IAAID,gBAAgB,CAAC7P,IAAI,CAAC4P,UAAU,CAAC,EAAE;MACrC,OAAO,KAAK;IACd,CAAC,MAAM,IAAIE,qBAAqB,CAAC9P,IAAI,CAAC4P,UAAU,CAAC,EAAE;MACjD,OAAO,UAAU;IACnB,CAAC,MAAM;MACL,OAAO,gBAAgB;IACzB;EACF;;EAEA;AACF;AACA;AACA;EACE,MAAM+iF,UAAU,GAAG/iF,UAAU,IAAI;IAC/B,IAAI,CAACA,UAAU,EAAE,OAAO,EAAE;IAC1B,IAAI6jR,eAAe,CAAC7jR,UAAU,CAAC,KAAK,KAAK,EAAE,OAAO,EAAE;IACpD,MAAMrM,IAAI,GAAG,IAAIhQ,IAAI,CAAC,GAAGqc,UAAU,QAAQ,CAAC;IAC5C,OAAO,IAAI0iF,IAAI,CAACuqB,cAAc,CAAC,OAAO,CAAC,CAACv6G,MAAM,CAACiB,IAAI,CAAC;EACtD,CAAC;;EAED;EACA;EACA;EACA;AACF;AACA;AACA;EACE,MAAM+lR,eAAe,GAAG;IACtBhsS,KAAK,EAAE,SAAS;IAChBo2S,WAAW,EAAE,KAAK;IAClBrV,cAAc,EAAE,KAAK;IACrB/sR,SAAS,EAAE,KAAK;IAChBgtR,WAAW,EAAE;EACf,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASv6J,KAAKA,CAACjnI,OAAO,EAAE;IACtB;IACA,IAAI,CAACA,OAAO,GAAG41B,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC;IAC3D,IAAI,CAAC6W,IAAI,GAAG,CAAC,CAAC;IACd,IAAI,CAACggS,YAAY,GAAG,CAAC,CAAC;IAEtB,IAAI,CAAC9vK,WAAW,GAAG,IAAI;IACvB,IAAI,CAACn0H,KAAK,GAAG,IAAI;IAEjB,IAAI,CAAC4uH,MAAM,CAAC,CAAC;IACb,IAAI,CAACC,YAAY,CAAC,CAAC;;IAEnB;IACA;IACA;IACA;IACA;IACA;IACA;EACF;;EAEA;AACF;AACA;EACEwF,KAAK,CAAClmH,SAAS,CAACygH,MAAM,GAAG,YAAY;IACnC;IACA,IAAI,CAACuF,WAAW,GAAG/a,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAW,CAAC,CAAC;IACnE,MAAM8vM,QAAQ,GAAG9qL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAgB,CAAC,CAAC;IACtE,IAAI,CAACp0F,KAAK,GAAGo5G,IAAI,CAAC/rH,aAAa,CAAC,OAAO,CAAC;IACxC,MAAM4S,SAAS,GAAGm5G,IAAI,CAAC/rH,aAAa,CAAC,OAAO,CAAC;IAC7C,MAAMosJ,WAAW,GAAGrgC,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAAEmkI,IAAI,EAAEpY,IAAI,CAAC/rH,aAAa,CAAC,IAAI;IAAE,CAAC,CAAC;IAEnF,IAAI,CAAC2S,KAAK,CAACzV,WAAW,CAACkvJ,WAAW,CAAC;IACnC,IAAI,CAACz5I,KAAK,CAACzV,WAAW,CAAC0V,SAAS,CAAC;IAEjC,IAAI,CAACk0H,WAAW,CAAC5pI,WAAW,CAAC25S,QAAQ,CAAC;IACtC,IAAI,CAAC/vK,WAAW,CAAC5pI,WAAW,CAAC,IAAI,CAACyV,KAAK,CAAC;;IAExC;IACA,IAAI,CAAC5S,OAAO,CAACknI,QAAQ,CAACjqI,OAAO,CAAC8W,OAAO,IAAI;MACvC,MAAMe,IAAI,GAAGk3G,IAAI,CAAC/rH,aAAa,CAAC,IAAI,EAAE;QACpCI,IAAI,EAAE0T,OAAO,CAAC1T,IAAI;QAClB2mG,KAAK,EAAE,IAAI,CAAChnG,OAAO,CAACuhS,cAAc,GAAG,UAAU,GAAG,EAAE;QACpD,WAAW,EAAExtR,OAAO,CAACtT;MACvB,CAAC,CAAC;MACF4rJ,WAAW,CAACx1I,IAAI,CAAC,CAAC,CAAC,CAAC1Z,WAAW,CAAC2X,IAAI,CAAC;IACvC,CAAC,CAAC;;IAEF;IACA,IAAI,IAAI,CAAC9U,OAAO,CAACwhS,WAAW,EAAE;MAC5B,MAAM1sR,IAAI,GAAGk3G,IAAI,CAAC/rH,aAAa,CAAC,IAAI,EAAE;QACpC,WAAW,EAAE;MACf,CAAC,CAAC;MACFosJ,WAAW,CAACx1I,IAAI,CAAC,CAAC,CAAC,CAAC1Z,WAAW,CAAC2X,IAAI,CAAC;IACvC;EACF,CAAC;;EAED;AACF;AACA;EACEmyH,KAAK,CAAClmH,SAAS,CAAC0gH,YAAY,GAAG,YAAY;IACzC,IAAI,CAAC7uH,KAAK,CAACmkS,OAAO,CAAC,CAAC,CAAC,CAACl3S,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACnD,IAAIA,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAACkD,IAAI,KAAK,WAAW,EAAE;QACzC,MAAMyiI,WAAW,GAAG,IAAIC,WAAW,CAAC,aAAa,EAAE;UAAE5Q,MAAM,EAAEtwH,CAAC,CAAC3E,MAAM,CAACgrN,OAAO,CAAC,IAAI;QAAE,CAAC,CAAC;QACtF,IAAI,CAAC11M,KAAK,CAACmkS,OAAO,CAAC,CAAC,CAAC,CAACluR,aAAa,CAACq6G,WAAW,CAAC;QAChD;MACF;MAEA,MAAMA,WAAW,GAAG,IAAIC,WAAW,CAAC,YAAY,EAAE;QAAE5Q,MAAM,EAAEtwH,CAAC,CAAC3E,MAAM,CAACgrN,OAAO,CAAC,IAAI;MAAE,CAAC,CAAC;MACrF,IAAI,CAAC11M,KAAK,CAACmkS,OAAO,CAAC,CAAC,CAAC,CAACluR,aAAa,CAACq6G,WAAW,CAAC;IAClD,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;EACE+D,KAAK,CAAClmH,SAAS,CAACi2R,YAAY,GAAG,YAAY;IACzC;;IAEA;IACA,MAAMC,WAAW,GAAG,IAAIp1K,KAAK,CAAC;MAC5B3hI,EAAE,EAAE,gBAAgB;MACpBO,IAAI,EAAE,UAAU;MAChBoB,KAAK,EAAE;IACT,CAAC,CAAC;IACF,MAAMq1S,aAAa,GAAGD,WAAW,CAAClwK,WAAW;IAC7CmwK,aAAa,CAACr3S,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC5CwI,OAAO,CAACu6B,GAAG,CAAC,gBAAgB,CAAC;IAC/B,CAAC,CAAC;IACF,MAAMmyQ,EAAE,GAAGnrL,IAAI,CAAC/rH,aAAa,CAAC,IAAI,EAAE;MAAEmkI,IAAI,EAAE8yK;IAAc,CAAC,CAAC;IAC5D,IAAI,CAACtkS,KAAK,CAACwkS,KAAK,CAACvgS,IAAI,CAAC,CAAC,CAAC,CAAC3H,YAAY,CAACioS,EAAE,EAAE,IAAI,CAACvkS,KAAK,CAACwkS,KAAK,CAACvgS,IAAI,CAAC,CAAC,CAAC,CAACwgS,KAAK,CAAC,CAAC,CAAC,CAAC;;IAE5E;IACA,MAAMxgS,IAAI,GAAG7V,KAAK,CAACoV,IAAI,CAAC,IAAI,CAACxD,KAAK,CAACmkS,OAAO,CAAC,CAAC,CAAC,CAAClgS,IAAI,CAAC;IACnDA,IAAI,CAAC5Z,OAAO,CAACuW,GAAG,IAAI;MAClB,MAAMyjS,WAAW,GAAG,IAAIp1K,KAAK,CAAC;QAC5B3hI,EAAE,EAAE,GAAGsT,GAAG,CAACtT,EAAE,UAAU;QACvBO,IAAI,EAAE,UAAU;QAChBoB,KAAK,EAAE;MACT,CAAC,CAAC;MACF,MAAMq1S,aAAa,GAAGD,WAAW,CAAClwK,WAAW;MAC7CmwK,aAAa,CAACr3S,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;QAC5CwI,OAAO,CAACu6B,GAAG,CAAC,gBAAgB,EAAExxB,GAAG,CAAC;MACpC,CAAC,CAAC;MACF,MAAMK,EAAE,GAAGm4G,IAAI,CAAC/rH,aAAa,CAAC,IAAI,EAAE;QAAEmkI,IAAI,EAAE8yK;MAAc,CAAC,CAAC;MAC5D1jS,GAAG,CAACtE,YAAY,CAAC2E,EAAE,EAAEL,GAAG,CAAC6jS,KAAK,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,IAAI,CAACzkS,KAAK,CAAC/S,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACxCwI,OAAO,CAACu6B,GAAG,CAAC/iC,CAAC,CAAC3E,MAAM,EAAE,eAAe,CAAC;IACxC,CAAC,CAAC;IAEF,OAAO,IAAI;EACb,CAAC;;EAED;AACF;AACA;EACE2pI,KAAK,CAAClmH,SAAS,CAACu2R,WAAW,GAAG,YAAY;IACxC,IAAI,CAAC1kS,KAAK,CAACrW,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEnC,IAAI,CAACmW,KAAK,CAACwkS,KAAK,CAACv3S,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MAC9C,IAAIA,CAAC,CAAC3E,MAAM,CAACsI,QAAQ,KAAK,IAAI,EAAE;MAEhC,MAAM2xS,QAAQ,GAAGb,YAAY,CAACz0S,CAAC,CAAC3E,MAAM,CAAC;MACvC,MAAMuZ,IAAI,GAAG7V,KAAK,CAACoV,IAAI,CAAC,IAAI,CAACxD,KAAK,CAACmkS,OAAO,CAAC,CAAC,CAAC,CAAClgS,IAAI,CAAC;MAEnD,IAAIF,SAAS,GAAG,CAAC,IAAI,CAAC6gS,aAAa,GAAG,KAAK,GAAG,IAAI,CAACA,aAAa,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK;MAC3F,IAAIv5M,QAAQ;MAEZ,IAAI,IAAI,CAACw5M,WAAW,EAAE;QACpB,IAAI,CAACA,WAAW,CAACl7S,SAAS,CAACC,MAAM,CAAC,IAAI,CAACg7S,aAAa,CAAC;MACvD;MAEA,IAAI,IAAI,CAACA,aAAa,EAAE;QACtBv1S,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACC,MAAM,CAAC,IAAI,CAACg7S,aAAa,CAAC;MAC/C;MAEAv1S,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACE,GAAG,CAACka,SAAS,CAAC;MAEjC,IAAI1U,CAAC,CAAC3E,MAAM,CAAC+pB,YAAY,CAAC,WAAW,CAAC,EAAE;QACtC,IAAIplB,CAAC,CAAC3E,MAAM,CAAC+I,YAAY,CAAC,WAAW,CAAC,KAAK,MAAM,EAAE;UACjD43F,QAAQ,GAAG,IAAI;QACjB;MACF;;MAEA;MACApnF,IAAI,CAACE,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;QAClB,IAAI4sC,EAAE,GAAGnhD,CAAC,CAACu0S,KAAK,CAACE,QAAQ,CAAC,CAACrwR,WAAW;QACtC,IAAIgQ,EAAE,GAAG7f,CAAC,CAACggS,KAAK,CAACE,QAAQ,CAAC,CAACrwR,WAAW;QAEtC,IAAI+2E,QAAQ,EAAE;UACZh6C,EAAE,GAAG,IAAIxtC,IAAI,CAACwtC,EAAE,CAAC,CAACn7B,OAAO,CAAC,CAAC;UAC3BoO,EAAE,GAAG,IAAIzgB,IAAI,CAACygB,EAAE,CAAC,CAACpO,OAAO,CAAC,CAAC;QAC7B,CAAC,MAAM;UACLm7B,EAAE,GAAGA,EAAE,CAAC35C,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;UACpC4sB,EAAE,GAAGA,EAAE,CAAC5sB,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;QACtC;QAEA25C,EAAE,GAAG,CAAC/iC,KAAK,CAAC+iC,EAAE,CAAC,GAAG38B,QAAQ,CAAC28B,EAAE,EAAE,EAAE,CAAC,GAAGA,EAAE;QACvC/sB,EAAE,GAAG,CAAChW,KAAK,CAACgW,EAAE,CAAC,GAAG5P,QAAQ,CAAC4P,EAAE,EAAE,EAAE,CAAC,GAAGA,EAAE;QAEvC,IAAIvgB,SAAS,KAAK,KAAK,EAAE;UACvB,OAAOstC,EAAE,GAAG/sB,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,MAAM;UACL,OAAO+sB,EAAE,GAAG/sB,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB;MACF,CAAC,CAAC;MAEF,IAAI,CAACugR,WAAW,GAAGx1S,CAAC,CAAC3E,MAAM;MAC3B,IAAI,CAACk6S,aAAa,GAAG7gS,SAAS;;MAE9B;MACA,MAAM+gS,eAAe,GAAG,IAAI,CAAC9kS,KAAK,CAACmkS,OAAO,CAAC,CAAC,CAAC,CAAChoS,SAAS,CAAC,CAAC;MAEzD,KAAK,IAAInH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiP,IAAI,CAAC7Z,MAAM,EAAE4K,CAAC,EAAE,EAAE;QACpC8vS,eAAe,CAACv6S,WAAW,CAAC0Z,IAAI,CAACjP,CAAC,CAAC,CAAC;MACtC;MAEA,IAAI,CAACgL,KAAK,CAACiD,YAAY,CAAC6hS,eAAe,EAAE,IAAI,CAAC9kS,KAAK,CAACmkS,OAAO,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC;IAEF,OAAO,IAAI;EACb,CAAC;;EAED;AACF;AACA;EACE9vK,KAAK,CAAClmH,SAAS,CAAC42R,QAAQ,GAAG,YAAY;IACrC;IACA;IACA,OAAO,IAAI3kS,QAAQ,CAAC,IAAI,CAACH,SAAS,EAAE;MAClCI,MAAM,EAAE,gBAAgB;MACxBC,SAAS,EAAE,UAAU;MACrBC,MAAM,EAAE,SAAAA,CAAUC,GAAG,EAAE;QACrB,MAAMwkS,OAAO,GAAG;UACdtkS,QAAQ,EAAEF,GAAG,CAACE,QAAQ;UACtBC,QAAQ,EAAEH,GAAG,CAACG,QAAQ;UACtBC,GAAG,EAAEJ,GAAG,CAACK;QACX,CAAC;QACDhJ,OAAO,CAACu6B,GAAG,CAAC4yQ,OAAO,CAAC;MACtB;IACF,CAAC,CAAC;;IAEF;IACA,IAAI,IAAI,CAAC53S,OAAO,CAAC42S,WAAW,EAAE;MAC5B,MAAM9hS,IAAI,GAAGk3G,IAAI,CAAC/rH,aAAa,CAAC,IAAI,EAAE;QAAEimD,IAAI,EAAE6+M,KAAK,CAAChwP;MAAK,CAAC,CAAC;MAC3D8iS,MAAM,CAAC16S,WAAW,CAAC2X,IAAI,CAAC;IAC1B;;IAEA;IACA,IAAI,IAAI,CAAC9U,OAAO,CAAC42S,WAAW,EAAE;MAC5B,IAAI,CAACkB,WAAW,CAAC,CAAC;MAElB,MAAMjkS,EAAE,GAAGm4G,IAAI,CAAC/rH,aAAa,CAAC,IAAI,CAAC;MACnC,IAAI,CAACosJ,WAAW,CAACx1I,IAAI,CAAC,CAAC,CAAC,CAAC3H,YAAY,CAAC2E,EAAE,EAAE,IAAI,CAACw4I,WAAW,CAACx1I,IAAI,CAAC,CAAC,CAAC,CAACwgS,KAAK,CAAC,CAAC,CAAC,CAAC;MAC5E,IAAI,CAACzkS,KAAK,CAACrW,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACtC;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEwqI,KAAK,CAAClmH,SAAS,CAACnkB,KAAK,GAAG,YAAY;IAClC,IAAI,CAACgW,KAAK,CAACmkS,OAAO,CAAC,CAAC,CAAC,CAACl6S,SAAS,GAAG,EAAE;EACtC,CAAC;;EAED;AACF;AACA;AACA;EACEoqI,KAAK,CAAClmH,SAAS,CAACjkB,QAAQ,GAAG,UAAU2F,IAAI,EAAE;IACzC,IAAI,CAAC7F,KAAK,CAAC,CAAC;;IAEZ;IACA6F,IAAI,CAACxF,OAAO,CAAC,CAACuW,GAAG,EAAE5L,CAAC,KAAK;MACvB,MAAMiwS,MAAM,GAAG7rL,IAAI,CAAC/rH,aAAa,CAAC,IAAI,EAAE;QAAE,GAAGuT,GAAG,CAACrS,UAAU;QAAEjB,EAAE,EAAEsT,GAAG,CAACtT;MAAG,CAAC,CAAC;MAE1E,IAAI,CAAC2W,IAAI,CAACrD,GAAG,CAACtT,EAAE,CAAC,GAAG23S,MAAM;;MAE1B;MACArkS,GAAG,CAACwB,MAAM,CAAC/X,OAAO,CAAC,CAACilI,EAAE,EAAEt6H,CAAC,KAAK;QAAA,IAAAmwS,qBAAA;QAC5B,MAAMnrP,QAAQ,GAAG,EAAAmrP,qBAAA,OAAI,CAAC/3S,OAAO,CAACknI,QAAQ,CAACt/H,CAAC,CAAC,cAAAmwS,qBAAA,uBAAxBA,qBAAA,CAA0Bt3S,IAAI,KAAI,EAAE;QACrDyhI,EAAE,GAAGt1E,QAAQ,KAAK,MAAM,GAAGipD,UAAU,CAACqsB,EAAE,CAAC,GAAGA,EAAE;QAC9C,MAAMptH,IAAI,GAAGk3G,IAAI,CAAC/rH,aAAa,CAAC,IAAI,EAAE;UAAEI,IAAI,EAAE6hI,EAAE;UAAE,WAAW,EAAEt1E;QAAS,CAAC,CAAC;QAC1EirP,MAAM,CAAC16S,WAAW,CAAC2X,IAAI,CAAC;MAC1B,CAAC,CAAC;;MAEF;MACA,IAAI,IAAI,CAAC9U,OAAO,CAACwhS,WAAW,EAAE;QAC5B,MAAM1sR,IAAI,GAAGk3G,IAAI,CAAC/rH,aAAa,CAAC,IAAI,EAAE;UACpCmkI,IAAI,EAAE4qJ,IAAI,CAACC,OAAO,CAAC,QAAQ,CAAC;UAC5B,WAAW,EAAE;QACf,CAAC,CAAC;QACF4oB,MAAM,CAAC16S,WAAW,CAAC2X,IAAI,CAAC;MAC1B;MAEA,IAAI,CAAClC,KAAK,CAACmkS,OAAO,CAAC,CAAC,CAAC,CAAC55S,WAAW,CAAC06S,MAAM,CAAC;IAC3C,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE5wK,KAAK,CAAClmH,SAAS,CAAC2/Q,UAAU,GAAG,UAAUx8J,MAAM,EAAE;IAC7C,IAAI,CAACtxH,KAAK,CAACmkS,OAAO,CAAC,CAAC,CAAC,CAACl3S,gBAAgB,CAAC,YAAY,EAAEoC,CAAC,IAAI;MACxDiiI,MAAM,CAACjiI,CAAC,CAACswH,MAAM,CAACryH,EAAE,CAAC;IACrB,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE+mI,KAAK,CAAClmH,SAAS,CAAC4/Q,WAAW,GAAG,UAAUz8J,MAAM,EAAE;IAC9C,IAAI,CAACtxH,KAAK,CAACmkS,OAAO,CAAC,CAAC,CAAC,CAACl3S,gBAAgB,CAAC,aAAa,EAAEoC,CAAC,IAAI;MACzDiiI,MAAM,CAACjiI,CAAC,CAACswH,MAAM,EAAEtwH,CAAC,CAACswH,MAAM,CAACryH,EAAE,CAAC;IAC/B,CAAC,CAAC;EACJ,CAAC;EAED+mI,KAAK,CAAClmH,SAAS,CAACoiR,SAAS,GAAG,UAAU3vR,GAAG,EAAE;IACzCA,GAAG,CAAChX,MAAM,CAAC,CAAC;EACd,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEyqI,KAAK,CAAClmH,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IACzC,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC4pI,WAAW,CAAC;IACpC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOE,KAAK;AACd,CAAC,CAAC;AC/XF,CAAC,UAAUvlG,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAAC8yQ,QAAQ,GAAG7yQ,OAAO,CAAC,CAAC;AAC7B,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;;EAEA;EACA;EACA;;EAEA;AACF;AACA;AACA;AACA;EACE,SAASq2Q,YAAYA,CAACC,gBAAgB,EAAE;IACtC,IAAI,CAACA,gBAAgB,GAAGA,gBAAgB;IAExC,IAAI,CAACj0Q,YAAY,GAAG,IAAI;IACxB,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,IAAI,CAACi0Q,mBAAmB,GAAG,KAAK;IAChC,IAAI,CAACC,WAAW,GAAG,KAAK;EAC1B;;EAEA;AACF;AACA;EACEH,YAAY,CAACj3R,SAAS,CAACnhB,IAAI,GAAG,YAAY;IACxC,IAAI;MACF,IAAI,CAACokC,YAAY,GAAGM,SAAS,CAAC4B,YAAY,CAACC,gBAAgB,CAACr4B,CAAC,CAACC,OAAO,CAACq4B,WAAW,EAAE,QAAQ,CAAC;MAC5F,IAAI,CAACpC,YAAY,CAACqC,yBAAyB,GAAG,OAAO;MACrD,IAAI,CAACrC,YAAY,CAACsC,eAAe,CAAC,CAAC;MACnC,IAAI,CAACtC,YAAY,CAACuC,kBAAkB,CAClC,aAAa,EACb,UAAU,EACVjC,SAAS,CAACkC,sBAAsB,CAACC,iBACnC,CAAC;MACD,IAAI,CAACxC,WAAW,GAAGK,SAAS,CAACoC,WAAW,CAACC,0BAA0B,CAAC,CAAC;MACrE,IAAI,CAACuxQ,mBAAmB,GAAG,IAAI;IACjC,CAAC,CAAC,OAAOzpS,KAAK,EAAE;MACd,IAAIA,KAAK,CAAC8B,OAAO,KAAK,yCAAyC,EAAE;QAC/D,MAAMu+B,YAAY,GAChB,+JAA+J;QACjKrkC,OAAO,CAACu6B,GAAG,CAAC8J,YAAY,CAAC;QACzB,OAAO,IAAI;MACb;MAEA,MAAMA,YAAY,GAChB,gIAAgI;MAClIrkC,OAAO,CAACu6B,GAAG,CAAC8J,YAAY,CAAC;IAC3B;IAEA,IAAI,IAAI,CAACopQ,mBAAmB,EAAE;MAC5B,IAAI,CAACE,oBAAoB,CAAC,CAAC;MAC3B,IAAI,CAACC,gBAAgB,CAAC,CAAC;IACzB;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEL,YAAY,CAACj3R,SAAS,CAACq3R,oBAAoB,GAAG,YAAY;IACxD,IAAI,CAACE,gBAAgB,GAAG,IAAIh0Q,SAAS,CAACC,gBAAgB,CAAC,IAAI,CAACP,YAAY,EAAE,IAAI,CAACC,WAAW,CAAC;IAE3F,IAAI,CAACq0Q,gBAAgB,CAAC7zQ,UAAU,GAAG,CAACnlB,CAAC,EAAErd,CAAC,KAAK;MAC3C,IAAIA,CAAC,CAACmxB,MAAM,CAACsR,MAAM,IAAIJ,SAAS,CAACK,YAAY,CAACC,gBAAgB,EAAE;QAC9D,MAAM2zQ,SAAS,GAAG,IAAI,CAACN,gBAAgB,CAACtlL,QAAQ,CAAC,CAAC;QAClD,MAAMzC,QAAQ,GAAG,GAAGqoL,SAAS,IAAIt2S,CAAC,CAACmxB,MAAM,CAAC/yB,IAAI,GAAG;QACjD,IAAI,CAAC43S,gBAAgB,CAACpmL,QAAQ,CAAC3B,QAAQ,CAAC;QACxC,IAAI,CAAC+nL,gBAAgB,CAAC10S,KAAK,CAACslB,aAAa,CAAC,IAAIH,KAAK,CAAC,QAAQ,EAAE;UAAEoc,OAAO,EAAE;QAAK,CAAC,CAAC,CAAC;MACnF,CAAC,MAAM;QACLr6B,OAAO,CAACu6B,GAAG,CAAC,0CAA0C,CAAC;MACzD;IACF,CAAC;IACD,IAAI,CAACszQ,gBAAgB,CAACrzQ,QAAQ,GAAG,CAAC3lB,CAAC,EAAErd,CAAC,KAAK;MACzCwI,OAAO,CAACu6B,GAAG,CAAC,oBAAoB/iC,CAAC,CAACyiC,MAAM,EAAE,CAAC;MAE3C,IAAIziC,CAAC,CAACyiC,MAAM,IAAIQ,kBAAkB,CAACrZ,KAAK,EAAE;QACxCphB,OAAO,CAACu6B,GAAG,CAAC,wBAAwB/iC,CAAC,CAACkjC,SAAS,EAAE,CAAC;QAClD16B,OAAO,CAACu6B,GAAG,CAAC,2BAA2B/iC,CAAC,CAACmjC,YAAY,EAAE,CAAC;QACxD36B,OAAO,CAACu6B,GAAG,CAAC,iDAAiD,CAAC;MAChE;IACF,CAAC;EACH,CAAC;;EAED;AACF;AACA;EACEgzQ,YAAY,CAACj3R,SAAS,CAACy3R,qBAAqB,GAAG,YAAY;IACzD,IAAI,CAACF,gBAAgB,CAAChzQ,+BAA+B,CAAC,CAAC;EACzD,CAAC;;EAED;AACF;AACA;EACE0yQ,YAAY,CAACj3R,SAAS,CAAC03R,oBAAoB,GAAG,YAAY;IACxD,IAAI,CAACH,gBAAgB,CAAC9yQ,8BAA8B,CAAC,CAAC;EACxD,CAAC;;EAED;AACF;AACA;EACEwyQ,YAAY,CAACj3R,SAAS,CAAC23R,qBAAqB,GAAG,YAAY;IACzD,IAAI,CAACJ,gBAAgB,CAACrtS,KAAK,CAAC,CAAC;EAC/B,CAAC;;EAED;AACF;AACA;EACE+sS,YAAY,CAACj3R,SAAS,CAACs3R,gBAAgB,GAAG,YAAY;IACpD;IACA,MAAM1yQ,QAAQ,GAAG,IAAIK,gBAAgB,CAAC,UAAUJ,YAAY,EAAED,QAAQ,EAAE;MACtE,KAAK,IAAIE,QAAQ,IAAID,YAAY,EAAE;QACjC,IAAIC,QAAQ,CAACplC,IAAI,KAAK,YAAY,EAAE;UAClC,IAAIolC,QAAQ,CAACC,aAAa,KAAK,qBAAqB,EAAE;YACpDH,QAAQ,CAACI,UAAU,CAAC,CAAC;YACrB,IAAI,CAAC2yQ,qBAAqB,CAAC,CAAC;UAC9B;QACF;MACF;IACF,CAAC,CAAC;IAEF/yQ,QAAQ,CAACM,OAAO,CAAC+lF,IAAI,CAACn8G,YAAY,EAAE;MAAE1O,UAAU,EAAE;IAAK,CAAC,CAAC;EAC3D,CAAC;;EAED;EACA;EACA;EACA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAASw3S,kBAAkBA,CAACV,gBAAgB,EAAE;IAC5C,IAAI,CAACA,gBAAgB,GAAGA,gBAAgB;IAExC,IAAI,CAACW,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACC,kBAAkB,GAAG,IAAI;IAC9B,IAAI,CAACxjL,aAAa,GAAG,IAAI;IAEzB,IAAI,CAACt1H,KAAK,CAAC,CAAC;EACd;;EAEA;AACF;AACA;AACA;AACA;EACE44S,kBAAkB,CAAC53R,SAAS,CAAChhB,KAAK,GAAG,YAAY;IAC/C;IACA,IAAI,CAAC64S,gBAAgB,GAAG,IAAIj0K,MAAM,CAAC;MACjC/iI,SAAS,EAAE;IACb,CAAC,CAAC;IACF,IAAI,CAACg3S,gBAAgB,CAACx/K,QAAQ,CAACpN,IAAI,CAACn8G,YAAY,CAAC;;IAEjD;IACA,IAAI,CAACwlH,aAAa,GAAG,IAAI,CAAC4iL,gBAAgB,CAAClxK,WAAW,CAACh4H,SAAS,CAAC,IAAI,CAAC;;IAEtE;IACA,IAAI,CAAC8pS,kBAAkB,GAAG7sL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAClD+mG,KAAK,EAAE,CAAC,qBAAqB,EAAE,OAAO,CAAC;MACvCo9B,IAAI,EAAE4qJ,IAAI,CAACC,OAAO,CAAC,gBAAgB;IACrC,CAAC,CAAC;IACF,IAAI,CAAC55J,aAAa,CAACl4H,WAAW,CAAC,IAAI,CAAC07S,kBAAkB,CAAC;;IAEvD;IACA,MAAMC,eAAe,GAAG,IAAI,CAACzjL,aAAa,CAAC11H,aAAa,CAAC,2BAA2B,CAAC;IACrF,IAAI,CAAC01H,aAAa,CAACvmH,WAAW,CAACgqS,eAAe,CAAC;;IAE/C;IACA,IAAI,CAACF,gBAAgB,CAACp0K,MAAM,CAACrnI,WAAW,CAAC,IAAI,CAACk4H,aAAa,CAAC;IAE5D,IAAI,CAACwP,WAAW,CAAC,CAAC;EACpB,CAAC;;EAED;AACF;AACA;EACE8zK,kBAAkB,CAAC53R,SAAS,CAAC8jH,WAAW,GAAG,YAAY;IACrD,IAAI,CAACozK,gBAAgB,CAACc,iBAAiB,CAACl5S,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACrE,IAAI,CAAC22S,gBAAgB,CAACj8S,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;IACF,IAAI,CAACk8S,kBAAkB,CAACh5S,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACrD,IAAI,CAAC22S,gBAAgB,CAAC3tS,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,IAAI,CAACoqH,aAAa,CAACx1H,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MAChD;MACA,IAAI,CAACg2S,gBAAgB,CAACpmL,QAAQ,CAAC5vH,CAAC,CAAC3E,MAAM,CAACgE,KAAK,CAAC;IAChD,CAAC,CAAC;IACF,IAAI,CAAC+zH,aAAa,CAACx1H,gBAAgB,CACjC,OAAO,EACP+1B,KAAK,CAACosG,QAAQ,CAAC//H,CAAC,IAAI;MAClB;MACA,IAAI,CAACg2S,gBAAgB,CAACpmL,QAAQ,CAAC5vH,CAAC,CAAC3E,MAAM,CAACgE,KAAK,CAAC;MAC9C;MACA,MAAMjE,KAAK,GAAG,IAAI8lI,WAAW,CAAC,OAAO,EAAE;QACrCr+F,OAAO,EAAE,IAAI;QACbs+F,UAAU,EAAE,IAAI;QAChB7Q,MAAM,EAAE;MACV,CAAC,CAAC;MACF,IAAI,CAAC0lL,gBAAgB,CAAC10S,KAAK,CAACslB,aAAa,CAACxrB,KAAK,CAAC;IAClD,CAAC,EAAE,GAAG,CACR,CAAC;IACD,IAAI,CAACu7S,gBAAgB,CAACzE,OAAO,CAAC,MAAM;MAClC,IAAI,CAAC8D,gBAAgB,CAACprL,cAAc,CAAC,KAAK,CAAC;IAC7C,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;EACE8rL,kBAAkB,CAAC53R,SAAS,CAAC40G,gBAAgB,GAAG,UAAUr0H,KAAK,EAAE;IAC/D,MAAM03S,UAAU,GAAG,IAAI,CAAC3jL,aAAa,CAAC11H,aAAa,CAAC,UAAU,CAAC;IAC/Dq5S,UAAU,CAAC13S,KAAK,GAAGA,KAAK;EAC1B,CAAC;;EAED;AACF;AACA;EACEq3S,kBAAkB,CAAC53R,SAAS,CAACu0G,iBAAiB,GAAG,UAAU49K,SAAS,EAAE;IACpE,IAAI,CAAC2F,kBAAkB,CAACr4S,KAAK,CAACoD,aAAa,GAAGsvS,SAAS,GAAG,MAAM,GAAG,KAAK;EAC1E,CAAC;EAEDyF,kBAAkB,CAAC53R,SAAS,CAAC8rG,cAAc,GAAG,UAAUqmL,SAAS,EAAE;IACjE,MAAM3vS,KAAK,GAAG,IAAI,CAAC8xH,aAAa,CAAC11H,aAAa,CAAC,UAAU,CAAC;IAC1D4D,KAAK,CAACmR,QAAQ,GAAGw+R,SAAS;EAC5B,CAAC;EACDyF,kBAAkB,CAAC53R,SAAS,CAACqzG,cAAc,GAAG,UAAU8qK,UAAU,EAAE;IAClE,MAAM37R,KAAK,GAAG,IAAI,CAAC8xH,aAAa,CAAC11H,aAAa,CAAC,UAAU,CAAC;IAC1D4D,KAAK,CAACo2H,QAAQ,GAAGulK,UAAU;EAC7B,CAAC;;EAED;EACA;EACA;EACA;AACF;AACA;AACA;EACE,MAAMsN,eAAe,GAAG;IACtBkJ,SAAS,EAAE,KAAK;IAChB55R,IAAI,EAAE,IAAI;IACVs5G,UAAU,EAAE;EACd,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASo/K,QAAQA,CAACx0S,OAAO,EAAE;IACzB;IACA,IAAI,CAACA,OAAO,GAAGgsH,IAAI,CAAComL,uBAAuB,CAACx8Q,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC,CAAC;IACzF,IAAI,CAACA,OAAO,CAACmB,UAAU,CAACqE,IAAI,GAAG,IAAI,CAACxF,OAAO,CAACmB,UAAU,CAACjB,EAAE;;IAEzD;IACA,IAAI,CAAC6mI,WAAW,GAAG,IAAI;IACvB,IAAI,CAACssK,SAAS,GAAG,IAAI;IACrB,IAAI,CAAC9vS,KAAK,GAAG,IAAI;IACjB,IAAI,CAAC6xH,UAAU,GAAG,IAAI;IACtB,IAAI,CAAC2jL,iBAAiB,GAAG,IAAI;IAC7B,IAAI,CAACE,eAAe,GAAG,IAAI;IAE3B,IAAI,CAACz3K,MAAM,CAAC,CAAC;IACb,IAAI,CAACC,YAAY,CAAC,CAAC;EACrB;;EAEA;AACF;AACA;AACA;AACA;EACE+yK,QAAQ,CAACzzR,SAAS,CAACygH,MAAM,GAAG,YAAY;IACtC,MAAM6tK,UAAU,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAACrvS,OAAO,CAACmB,UAAU,CAACjB,EAAE,EAAE,CAAC;IAC9E,IAAI,CAAC6mI,WAAW,GAAG/a,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAC3C+mG,KAAK,EAAE,IAAI,CAAChnG,OAAO,CAACurE,MAAM,GAAG,CAAC,GAAG8jO,UAAU,EAAE,oBAAoB,CAAC,GAAGA;IACvE,CAAC,CAAC;;IAEF;IACA,IAAI,CAACgE,SAAS,GAAGrnL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;MAAE+mG,KAAK,EAAE;IAAwB,CAAC,CAAC;IAC9E,IAAI,CAACzjG,KAAK,GAAGyoH,IAAI,CAAC/rH,aAAa,CAAC,UAAU,EAAE;MAAE,GAAG,IAAI,CAACD,OAAO,CAACmB;IAAW,CAAC,CAAC;IAC3E,MAAMwtS,QAAQ,GAAG3iL,IAAI,CAAC/rH,aAAa,CAAC,OAAO,EAAE;MAC3CI,IAAI,EAAE,IAAI,CAACL,OAAO,CAAC6B,KAAK;MACxBqpB,GAAG,EAAE,IAAI,CAAClrB,OAAO,CAACmB,UAAU,CAACjB;IAC/B,CAAC,CAAC;IACF,IAAI,CAACmzS,SAAS,CAACl2S,WAAW,CAAC,IAAI,CAACoG,KAAK,CAAC;IAEtC,IAAI,CAACwjI,WAAW,CAAC5pI,WAAW,CAACwxS,QAAQ,CAAC;IACtC,IAAI,CAAC5nK,WAAW,CAAC5pI,WAAW,CAAC,IAAI,CAACk2S,SAAS,CAAC;;IAE5C;IACA,IAAI,IAAI,CAACrzS,OAAO,CAAC8b,IAAI,EAAE;MACrB,MAAMw3R,SAAS,GAAGtnL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QAAE+mG,KAAK,EAAE,kBAAkB;QAAE3mG,IAAI,EAAE,IAAI,CAACL,OAAO,CAAC8b;MAAK,CAAC,CAAC;MACnG,IAAI,CAACirH,WAAW,CAAC5pI,WAAW,CAACm2S,SAAS,CAAC;IACzC;;IAEA;IACA,IAAI,IAAI,CAACtzS,OAAO,CAAC01S,SAAS,EAAE;MAC1B,MAAMC,WAAW,GAAG,IAAI,CAAC31S,OAAO,CAACmB,UAAU,CAACyjI,SAAS,GACjD;QAAE1+E,IAAI,EAAE,GAAG,CAAC,iBAAiB,IAAI,CAAClmD,OAAO,CAACmB,UAAU,CAACyjI,SAAS;MAAG,CAAC,GAClE;QAAEvkI,IAAI,EAAE;MAAI,CAAC;MACjB,MAAMu1S,UAAU,GAAG5pL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QAAE+mG,KAAK,EAAE,WAAW;QAAE,GAAG2uM;MAAY,CAAC,CAAC;MACpF,IAAI,CAAC5uK,WAAW,CAAC5pI,WAAW,CAACy4S,UAAU,CAAC;IAC1C;;IAEA;IACA,IAAI,IAAI,CAAC51S,OAAO,CAACo1H,UAAU,EAAE;MAC3B,IAAI,CAAC7xH,KAAK,CAAChH,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;MACtC;MACA,IAAI,CAACs8S,iBAAiB,GAAG/sL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QACjD+mG,KAAK,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,YAAY,CAAC;QACpDo9B,IAAI,EAAE4qJ,IAAI,CAACC,OAAO,CAAC,gBAAgB;MACrC,CAAC,CAAC;MACF,IAAI,CAACloJ,WAAW,CAAC5pI,WAAW,CAAC,IAAI,CAAC47S,iBAAiB,CAAC;;MAEpD;MACA,IAAI,CAAC3jL,UAAU,GAAG,IAAIujL,kBAAkB,CAAC,IAAI,CAAC;IAChD;;IAEA;IACA,IAAI,IAAI,CAAC34S,OAAO,CAAC+5H,YAAY,EAAE;MAC7B,IAAI,CAACx2H,KAAK,CAAChH,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;MACxC,IAAI,CAACw8S,eAAe,GAAGjtL,IAAI,CAAC/rH,aAAa,CAAC,KAAK,EAAE;QAC/C+mG,KAAK,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,YAAY,CAAC;QAC/Co9B,IAAI,EAAE4qJ,IAAI,CAACC,OAAO,CAAC,QAAQ;MAC7B,CAAC,CAAC;MACF,IAAI,CAACloJ,WAAW,CAAC5pI,WAAW,CAAC,IAAI,CAAC87S,eAAe,CAAC;;MAElD;MACA,IAAI,CAACl/K,YAAY,GAAG,IAAIi+K,YAAY,CAAC,IAAI,CAAC;MAC1C,IAAI,CAACj+K,YAAY,CAACn6H,IAAI,CAAC,CAAC;IAC1B;IAEA,IAAI,IAAI,CAACI,OAAO,CAACo1H,UAAU,IAAI,IAAI,CAACp1H,OAAO,CAAC+5H,YAAY,EAAE;MACxD,IAAI,CAACgN,WAAW,CAACxqI,SAAS,CAACE,GAAG,CAAC,uBAAuB,CAAC;IACzD;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE+3S,QAAQ,CAACzzR,SAAS,CAAC0gH,YAAY,GAAG,YAAY;IAC5C,IAAI,IAAI,CAACzhI,OAAO,CAACo1H,UAAU,EAAE;MAC3B,IAAI,CAAC7xH,KAAK,CAAC1D,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;QACzC,IAAI,CAACmzH,UAAU,CAACO,gBAAgB,CAAC1zH,CAAC,CAAC3E,MAAM,CAACgE,KAAK,CAAC;MAClD,CAAC,CAAC;IACJ;IAEA,IAAI,IAAI,CAACtB,OAAO,CAAC+5H,YAAY,IAAI,IAAI,CAACA,YAAY,CAACm+K,mBAAmB,EAAE;MACtE,IAAI,CAACe,eAAe,CAACp5S,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QAClD,IAAI,CAAC83H,YAAY,CAACo+K,WAAW,GAAG,CAAC,IAAI,CAACp+K,YAAY,CAACo+K,WAAW;QAE9D,IAAI,IAAI,CAACp+K,YAAY,CAACo+K,WAAW,EAAE;UACjC,IAAI,CAACp+K,YAAY,CAACy+K,qBAAqB,CAAC,MAAM;YAC5C;YACA,IAAI,CAACS,eAAe,CAACp8S,SAAS,GAAG,EAAE;YACnC;YACA,IAAI,CAACo8S,eAAe,CAAC97S,WAAW,CAAC6xR,IAAI,CAACC,OAAO,CAAC,OAAO,CAAC,CAAC;YACvD;YACA,IAAI,CAACgqB,eAAe,CAAC18S,SAAS,CAACC,MAAM,CAAC,KAAK,CAAC;UAC9C,CAAC,CAAC;QACJ,CAAC,MAAM;UACL,IAAI,CAACu9H,YAAY,CAAC0+K,oBAAoB,CAAC,MAAM;YAC3C;YACA,IAAI,CAACQ,eAAe,CAACp8S,SAAS,GAAG,EAAE;YACnC;YACA,IAAI,CAACo8S,eAAe,CAAC97S,WAAW,CAAC6xR,IAAI,CAACC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxD;YACA,IAAI,CAACgqB,eAAe,CAAC18S,SAAS,CAACE,GAAG,CAAC,KAAK,CAAC;UAC3C,CAAC,CAAC;QACJ;MACF,CAAC,CAAC;IACJ;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE+3S,QAAQ,CAACzzR,SAAS,CAAC8wG,QAAQ,GAAG,UAAUvwH,KAAK,EAAE;IAC7C,IAAI,CAACiC,KAAK,CAACjC,KAAK,GAAGA,KAAK;IACxB,IAAI,IAAI,CAACtB,OAAO,CAACo1H,UAAU,EAAE;MAC3B,IAAI,CAACA,UAAU,CAACO,gBAAgB,CAACr0H,KAAK,CAAC;IACzC;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEkzS,QAAQ,CAACzzR,SAAS,CAAC4xG,QAAQ,GAAG,YAAY;IACxC,OAAO,IAAI,CAACpvH,KAAK,CAACjC,KAAK;EACzB,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEkzS,QAAQ,CAACzzR,SAAS,CAACnkB,KAAK,GAAG,YAAY;IACrC,IAAI,CAAC2G,KAAK,CAACjC,KAAK,GAAG,EAAE;IACrB,IAAI,IAAI,CAACtB,OAAO,CAACo1H,UAAU,EAAE;MAC3B,IAAI,CAACA,UAAU,CAACO,gBAAgB,CAAC,EAAE,CAAC;IACtC;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE6+K,QAAQ,CAACzzR,SAAS,CAAC+xG,eAAe,GAAG,UAAUviH,OAAO,EAAE;IACtD,IAAI,CAAChN,KAAK,CAACiwS,iBAAiB,CAACjjS,OAAO,CAAC;EACvC,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEikS,QAAQ,CAACzzR,SAAS,CAAC60G,QAAQ,GAAG,YAAY;IACxC,IAAI,CAACryH,KAAK,CAAC4K,KAAK,CAAC,CAAC;EACpB,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEqmS,QAAQ,CAACzzR,SAAS,CAACqzG,cAAc,GAAG,UAAU8qK,UAAU,EAAE;IACxD,IAAI,CAAC37R,KAAK,CAACo2H,QAAQ,GAAGulK,UAAU;IAEhC,IAAI,IAAI,CAACl/R,OAAO,CAACo1H,UAAU,EAAE;MAC3B,IAAI,CAACA,UAAU,CAAChB,cAAc,CAAC8qK,UAAU,CAAC;IAC5C;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEsV,QAAQ,CAACzzR,SAAS,CAAC8rG,cAAc,GAAG,UAAUqmL,SAAS,EAAE;IACvD,IAAI,CAAC3vS,KAAK,CAACmR,QAAQ,GAAGw+R,SAAS;IAC/B,IAAI,CAAC3vS,KAAK,CAACgwS,QAAQ,GAAGL,SAAS;IAE/B,IAAI,IAAI,CAAClzS,OAAO,CAACo1H,UAAU,EAAE;MAC3B,IAAI,CAACA,UAAU,CAACvI,cAAc,CAACqmL,SAAS,CAAC;IAC3C;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEsB,QAAQ,CAACzzR,SAAS,CAAC+3G,QAAQ,GAAG,UAAUoL,MAAM,EAAE;IAC9C,IAAI,CAAC3gI,KAAK,CAAC1D,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACxC,IAAIiiI,MAAM,EAAEA,MAAM,CAACjiI,CAAC,CAAC;MAErB,IAAI,IAAI,CAACjC,OAAO,CAACo1H,UAAU,EAAE;QAC3B,IAAI,CAACA,UAAU,CAACO,gBAAgB,CAAC1zH,CAAC,CAAC3E,MAAM,CAACgE,KAAK,CAAC;MAClD;IACF,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACEkzS,QAAQ,CAACzzR,SAAS,CAACg4G,OAAO,GAAG,UAAUmL,MAAM,EAAE;IAC7C,IAAI,CAAC3gI,KAAK,CAAC1D,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACxC,IAAIiiI,MAAM,EAAEA,MAAM,CAACjiI,CAAC,CAAC;MAErB,IAAI,IAAI,CAACjC,OAAO,CAACo1H,UAAU,EAAE;QAC3B,IAAI,CAACA,UAAU,CAACO,gBAAgB,CAAC1zH,CAAC,CAAC3E,MAAM,CAACgE,KAAK,CAAC;MAClD;IACF,CAAC,CAAC;EACJ,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEkzS,QAAQ,CAACzzR,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IAC5C,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAAC4pI,WAAW,CAAC;IACpC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOytK,QAAQ;AACjB,CAAC,CAAC;ACjhBF,CAAC,UAAU9yQ,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAACu4F,KAAK,GAAGt4F,OAAO,CAAC,CAAC;AAC1B,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;EACA;EACA;EACA;AACF;AACA;AACA;EACE,MAAM6qQ,eAAe,GAAG;IACtB0M,SAAS,EAAE,KAAK;IAChBC,YAAY,EAAE;EAChB,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASl/K,KAAKA,CAACj6H,OAAO,EAAE;IACtB;IACA,IAAI,CAACA,OAAO,GAAG41B,KAAK,CAAC62Q,YAAY,CAACD,eAAe,EAAExsS,OAAO,CAAC;IAC3D,IAAI,CAACsuS,aAAa,GAAG,IAAI;;IAEzB;IACA,IAAI,CAAC9pK,MAAM,GAAG,IAAI;IAClB,IAAI,CAAC40K,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAAC9xK,UAAU,GAAG,IAAI;IAEtB,IAAI,CAAC9F,MAAM,CAAC,CAAC;EACf;;EAEA;AACF;AACA;EACEvH,KAAK,CAACl5G,SAAS,CAACygH,MAAM,GAAG,YAAY;IACnC,IAAI,CAACgD,MAAM,GAAG,IAAIG,MAAM,CAAC;MAAE/iI,SAAS,EAAE,OAAO;MAAEqyS,OAAO,EAAE;IAAM,CAAC,CAAC;IAEhE,IAAI,CAAC3sK,UAAU,GAAGtb,IAAI,CAAC/rH,aAAa,CAAC,GAAG,EAAE;MACxC+mG,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,IAAI,CAACoyM,gBAAgB,GAAG,IAAIp2K,MAAM,CAAC;MAAE7iI,IAAI,EAAE,OAAO;MAAEK,KAAK,EAAE,WAAW;MAAEw5H,SAAS,EAAE;IAAO,CAAC,CAAC;IAE5F,IAAI,CAACwK,MAAM,CAACA,MAAM,CAACrnI,WAAW,CAAC,IAAI,CAACmqI,UAAU,CAAC;IAC/C,IAAI,CAAC8xK,gBAAgB,CAAChgL,QAAQ,CAAC,IAAI,CAACoL,MAAM,CAACA,MAAM,CAAC;EACpD,CAAC;;EAED;AACF;AACA;EACEvK,KAAK,CAACl5G,SAAS,CAACpkB,IAAI,GAAG,UAAU4T,OAAO,EAAE;IACxC,IAAI,IAAI,CAAC+9R,aAAa,KAAK,MAAM,EAAE;IAEnC,IAAI/9R,OAAO,EAAE,IAAI,CAAC+2H,UAAU,CAACpjI,SAAS,GAAGqM,OAAO;IAChD,IAAI,CAACi0H,MAAM,CAAC7nI,IAAI,CAAC,CAAC;IAClB,IAAI,CAAC2xS,aAAa,GAAG,MAAM;EAC7B,CAAC;;EAED;AACF;AACA;EACEr0K,KAAK,CAACl5G,SAAS,CAAC9V,KAAK,GAAG,YAAY;IAClC,IAAI,CAACu5H,MAAM,CAACv5H,KAAK,CAAC,CAAC;IACnB,IAAI,CAACqjS,aAAa,GAAG,QAAQ;EAC/B,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEr0K,KAAK,CAACl5G,SAAS,CAACq4G,QAAQ,GAAG,UAAUgL,IAAI,EAAE;IACzC,IAAIA,IAAI,YAAYC,IAAI,EAAE;MACxBD,IAAI,CAACjnI,WAAW,CAAC,IAAI,CAACqnI,MAAM,CAACA,MAAM,CAAC;IACtC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAOvK,KAAK;AACd,CAAC,CAAC;AC3FF,CAAC,UAAUv4F,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAACsqF,IAAI,GAAGrqF,OAAO,CAAC,CAAC;AACzB,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB,MAAM9xB,YAAY,GAAGnQ,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC;;EAE5D;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAS1C,aAAaA,CAACoa,GAAG,EAAElZ,UAAU,EAAE;IACtC,MAAMuE,OAAO,GAAGhG,QAAQ,CAACO,aAAa,CAACoa,GAAG,CAAC;IAC3C,MAAMi2R,QAAQ,GAAG,IAAIC,gBAAgB,CAAC,CAAC;IAEvC,IAAIpvS,UAAU,IAAI,OAAOA,UAAU,KAAK,QAAQ,EAAE;MAChD,IAAI2kC,aAAa;MACjB,KAAKA,aAAa,IAAI3kC,UAAU,EAAE;QAChC,IAAI,CAACA,UAAU,CAAC2kC,aAAa,CAAC,EAAE;QAEhC,QAAQA,aAAa;UACnB,KAAK,MAAM;YAAE;cACX,MAAMuzQ,OAAO,GAAG35S,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;cAC7Co5S,OAAO,CAACx8S,SAAS,GAAGsE,UAAU,CAAC2kC,aAAa,CAAC;cAE7C,MAAMwzQ,YAAY,GAAG,IAAI/I,gBAAgB,CAAC,CAAC;cAE3C,OAAO8I,OAAO,CAACllS,UAAU,EAAE;gBACzBmlS,YAAY,CAACn8S,WAAW,CAACk8S,OAAO,CAACllS,UAAU,CAAC;cAC9C;cAEAm8R,QAAQ,CAACv2I,MAAM,CAACu/I,YAAY,CAAC;cAC7B;YACF;UACA,KAAK,MAAM;YAAE;cACX,MAAMrG,QAAQ,GAAGvzS,QAAQ,CAACgtB,cAAc,CAACvrB,UAAU,CAAC2kC,aAAa,CAAC,CAAC;cACnEwqQ,QAAQ,CAACv2I,MAAM,CAACk5I,QAAQ,CAAC;cACzB;YACF;UACA,KAAK,MAAM;YAAE;cACX,IAAIjyS,KAAK,CAACC,OAAO,CAACE,UAAU,CAAC2kC,aAAa,CAAC,CAAC,EAAE;gBAC5C3kC,UAAU,CAAC2kC,aAAa,CAAC,CAAC7oC,OAAO,CAACmE,GAAG,IAAI;kBACvCkvS,QAAQ,CAACv2I,MAAM,CAAC34J,GAAG,CAAC;gBACtB,CAAC,CAAC;cACJ,CAAC,MAAM;gBACLkvS,QAAQ,CAACv2I,MAAM,CAAC54J,UAAU,CAAC2kC,aAAa,CAAC,CAAC;cAC5C;cACA;YACF;UACA,KAAK,OAAO;YAAE;cACZ,IAAI9kC,KAAK,CAACC,OAAO,CAACE,UAAU,CAAC2kC,aAAa,CAAC,CAAC,EAAE;gBAC5C3kC,UAAU,CAAC2kC,aAAa,CAAC,CAAC7oC,OAAO,CAACmE,GAAG,IAAI;kBACvCsE,OAAO,CAACnJ,SAAS,CAACE,GAAG,CAAC2E,GAAG,CAAC;gBAC5B,CAAC,CAAC;cACJ,CAAC,MAAM;gBACLsE,OAAO,CAACnJ,SAAS,CAACE,GAAG,CAAC0E,UAAU,CAAC2kC,aAAa,CAAC,CAAC;cAClD;cACA;YACF;UACA;YAAS;cACP,IAAI,OAAO3kC,UAAU,CAAC2kC,aAAa,CAAC,KAAK,SAAS,EAAE;gBAClDpgC,OAAO,CAAC/E,YAAY,CAACmlC,aAAa,EAAE,EAAE,CAAC;cACzC,CAAC,MAAM;gBACLpgC,OAAO,CAAC/E,YAAY,CAACmlC,aAAa,EAAE3kC,UAAU,CAAC2kC,aAAa,CAAC,CAAC;cAChE;YACF;QACF;MACF;IACF;IAEApgC,OAAO,CAACq0J,MAAM,CAACu2I,QAAQ,CAAC;IACxB,OAAO5qS,OAAO;EAChB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,eAAeswH,oBAAoBA,CAAC4hB,IAAI,EAAE;IACxC,MAAM6B,aAAa,GAAG,CAAC,CAAC;IACxB,MAAMC,cAAc,GAAG9B,IAAI;IAC3B,MAAM+B,cAAc,GAAGD,cAAc,CAACl0I,IAAI;IAC1C,MAAM+oH,cAAc,GAAGmrB,cAAc,CAACl0I,IAAI,CAACqb,KAAK,CAAC,GAAG,CAAC,CAAC4D,GAAG,CAAC,CAAC;IAE3Dg1H,aAAa,CAACx/B,WAAW,GAAG0/B,cAAc;IAC1CF,aAAa,CAACh5I,IAAI,GAAG8tH,cAAc;IAEnC,MAAM1hE,QAAQ,GAAG,IAAIgtF,QAAQ,CAACH,cAAc,CAAC;IAC7C,MAAMV,WAAW,GAAG,MAAMnsF,QAAQ,CAACmsF,WAAW,CAAC,CAAC;;IAEhD;IACA,MAAM7N,KAAK,GAAG,IAAIx/E,UAAU,CAACqtF,WAAW,CAAC;IACzC,MAAM9N,MAAM,GAAGlqI,KAAK,CAACoV,IAAI,CAAC+0H,KAAK,CAAC,CAACrhD,MAAM,CAAC,CAAC+kC,GAAG,EAAE0qL,IAAI,KAAK;MACrD,OAAO1qL,GAAG,GAAGpsG,MAAM,CAAC4oH,YAAY,CAACkuK,IAAI,CAAC;IACxC,CAAC,EAAE,EAAE,CAAC;IACN,MAAMjuK,QAAQ,GAAGp9H,MAAM,CAACoe,IAAI,CAAC4+G,MAAM,CAAC;IAEpCuO,aAAa,CAAC9+H,UAAU,GAAG2wH,QAAQ;IAEnC,OAAOmO,aAAa;EACtB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAAS+/J,eAAeA,CAACp1K,IAAI,EAAE;IAC7B,OAAO,CAAC1kI,QAAQ,CAAC+5S,uBAAuB,CAACr1K,IAAI,CAAC,GAAGC,IAAI,CAACq1K,8BAA8B,MAAM,CAAC;EAC7F;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAStH,uBAAuBA,CAACpyS,OAAO,EAAE;IACxC,MAAM25S,KAAK,GAAG,CACZ,QAAQ,EACR,KAAK,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,MAAM,EACN,IAAI,EACJ,MAAM,EACN,KAAK,EACL,WAAW,EACX,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,SAAS,EACT,aAAa,EACb,UAAU,EACV,UAAU,EACV,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,CACR;IAED,MAAM,CAAC72S,CAAC,EAAEuU,CAAC,CAAC,GAAGmH,MAAM,CAACyD,OAAO,CAACjiB,OAAO,CAAC,CAAC8pF,MAAM,CAC3C,CAAA4qC,IAAA,EAAAC,KAAA;MAAA,IAAC,CAACilL,QAAQ,EAAEC,QAAQ,CAAC,GAAAnlL,IAAA;MAAA,IAAE,CAACrzH,GAAG,EAAEC,KAAK,CAAC,GAAAqzH,KAAA;MAAA,OACjCglL,KAAK,CAACxoM,QAAQ,CAAC9vG,GAAG,CAAC,IAAIA,GAAG,CAACwmD,UAAU,CAAC,OAAO,CAAC,GAC1C,CAACrpC,MAAM,CAAComD,MAAM,CAACg1O,QAAQ,EAAE;QAAE,CAACv4S,GAAG,GAAGC;MAAM,CAAC,CAAC,EAAEu4S,QAAQ,CAAC,GACrD,CAACD,QAAQ,EAAEp7R,MAAM,CAAComD,MAAM,CAACi1O,QAAQ,EAAE;QAAE,CAACx4S,GAAG,GAAGC;MAAM,CAAC,CAAC,CAAC;IAAA,GAC3D,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACT,CAAC;IAED,OAAO;MAAE,GAAG+V,CAAC;MAAElW,UAAU,EAAE;QAAE,GAAG2B;MAAE;IAAE,CAAC;EACvC;;EAEA;AACF;AACA;EACE,SAASowG,wBAAwBA,CAAC/jG,OAAO,EAAE;IACzCU,YAAY,CAAClP,YAAY,CAAC,oBAAoB,EAAEwO,OAAO,CAAC;EAC1D;;EAEA;AACF;AACA;EACE,SAASujG,+BAA+BA,CAAConM,WAAW,EAAE;IACpDjqS,YAAY,CAAClP,YAAY,CAAC,qBAAqB,EAAEm5S,WAAW,CAAC;EAC/D;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,SAASpG,kBAAkBA,CAAC1sQ,GAAG,EAAE;IAC/B,MAAM+yQ,MAAM,GAAG,UAAU;IACzB,OAAOA,MAAM,CAAC72R,IAAI,CAAC8jB,GAAG,CAAC;EACzB;;EAEA;AACF;AACA;EACE,SAASixF,WAAWA,CAAA,EAAG;IACrB/pH,MAAM,CAAC8rS,QAAQ,CAAC;MACdjyR,GAAG,EAAE,CAAC;MACNM,IAAI,EAAE,CAAC;MACP4xR,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EAEA,OAAO;IACL;IACApqS,YAAY;IACZqjG,wBAAwB;IACxBR,+BAA+B;IAC/B;IACAzyG,aAAa;IACb+1H,oBAAoB;IACpBwjL,eAAe;IACfpH,uBAAuB;IACvBsB,kBAAkB;IAClBz7K;EACF,CAAC;AACH,CAAC,CAAC;AClOF,CAAC,UAAUv2F,MAAM,EAAEC,OAAO,EAAE;EAC1BD,MAAM,CAAC9L,KAAK,GAAG+L,OAAO,CAAC,CAAC;AAC1B,CAAC,EAAE,IAAI,EAAE,YAAY;EACnB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASylN,eAAeA,CAACpgN,GAAG,EAAE;IAC5B;IACA,MAAMkzQ,KAAK,GAAG,SAAS;;IAEvB;IACA,MAAM11R,KAAK,GAAGwiB,GAAG,CAACxiB,KAAK,CAAC01R,KAAK,CAAC;IAE9B,IAAI11R,KAAK,EAAE;MACT;MACA,MAAMoJ,MAAM,GAAGtG,QAAQ,CAAC9C,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;MACzC,OAAOwiB,GAAG,CAAC18B,OAAO,CAAC4vS,KAAK,EAAE,IAAItsR,MAAM,EAAE,CAAC;IACzC,CAAC,MAAM;MACL;MACA,OAAO,GAAGoZ,GAAG,IAAI;IACnB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAASopQ,eAAeA,CAAC7uS,QAAQ,EAAEs2G,EAAE,EAAE;IACrC,IAAIsiM,SAAS;IAEb,MAAM7rL,OAAO,GAAG,IAAItgE,OAAO,CAACC,OAAO,IAAI;MACrCksP,SAAS,GAAGvyR,UAAU,CAAC,MAAM;QAC3BrmB,QAAQ,CAAC,CAAC;QACV0sD,OAAO,CAAC,CAAC;QACTm6E,YAAY,CAAC+xK,SAAS,CAAC;MACzB,CAAC,EAAEtiM,EAAE,CAAC;IACR,CAAC,CAAC;IAEF,OAAOyW,OAAO;EAChB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAASozK,UAAUA,CAAC0Y,WAAW,EAAgD;IAAA,IAA9ChuB,YAAY,GAAAnlR,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,EAAE;IAAA,IAAEozS,cAAc,GAAApzS,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,MAAM,CAAC,CAAC;IAC3E,IAAI,CAACmzS,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAAChuB,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACiuB,cAAc,GAAGA,cAAc;IAEpC,IAAI,CAACC,KAAK,GAAG,CAAC,CAAC;IACf,IAAI,CAACC,WAAW,GAAG,CAAC;IACpB,IAAI,CAACC,aAAa,GAAG,EAAE;IACvB,IAAI,CAACC,SAAS,GAAG,KAAK;EACxB;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE/Y,UAAU,CAAC3gR,SAAS,CAACqwQ,SAAS,GAAG,UAAU5kD,UAAU,EAAE;IACrD,IAAI,CAAC8tE,KAAK,CAAC9tE,UAAU,CAACtsO,EAAE,CAAC,GAAGssO,UAAU,CAAC/pO,IAAI;IAC3C,IAAI,CAAC83S,WAAW,GAAG/7R,MAAM,CAAC8B,IAAI,CAAC,IAAI,CAACg6R,KAAK,CAAC,CAACt9S,MAAM;IAEjD,IAAI,IAAI,CAACu9S,WAAW,IAAI,IAAI,CAACnuB,YAAY,EAAE;MACzC,IAAI,CAACsuB,WAAW,CAAC,CAAC;IACpB;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;EACEhZ,UAAU,CAAC3gR,SAAS,CAAC25R,WAAW,GAAG,kBAAqC;IAAA,IAArBC,WAAW,GAAA1zS,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,KAAK;IACpE,IAAI,IAAI,CAACszS,WAAW,KAAK,CAAC,IAAK,IAAI,CAACE,SAAS,IAAI,CAACE,WAAY,EAAE;MAC9D,IAAI,CAACN,cAAc,CAAC,EAAE,CAAC;MACvB;IACF;IAEA,IAAI,CAACI,SAAS,GAAG,IAAI;IAErB,MAAMG,aAAa,GAAGp8R,MAAM,CAACxJ,MAAM,CAAC,IAAI,CAACslS,KAAK,CAAC;IAC/C,IAAI,CAACA,KAAK,GAAG,CAAC,CAAC;IACf,IAAI,CAACC,WAAW,GAAG,CAAC;IAEpB,MAAMM,YAAY,GAAGD,aAAa,CAACn0S,GAAG,CAAC,MAAM8oE,MAAM,IAAI;MACrD,IAAI;QACF,MAAM1iB,QAAQ,GAAG,MAAMj3B,KAAK,CAACu4B,SAAS,CAAC,IAAI,CAACisP,WAAW,EAAE7qO,MAAM,CAAC;QAChE,OAAO;UAAEtpB,OAAO,EAAE,IAAI;UAAExjD,IAAI,EAAEoqD,QAAQ;UAAE0iB;QAAO,CAAC;MAClD,CAAC,CAAC,OAAO9gE,KAAK,EAAE;QACdhE,OAAO,CAACgE,KAAK,CAAC,uBAAuB,EAAE8gE,MAAM,EAAE9gE,KAAK,CAAC;QACrD,IAAI,CAAC+rS,aAAa,CAAC1vS,IAAI,CAACykE,MAAM,CAAC;QAC/B,OAAO;UAAEtpB,OAAO,EAAE,KAAK;UAAEx3C,KAAK,EAAEA,KAAK,CAAC8B,OAAO;UAAEg/D;QAAO,CAAC;MACzD;IACF,CAAC,CAAC;IAEF,MAAMq4B,OAAO,GAAG,MAAM55C,OAAO,CAACmrF,GAAG,CAAC0hK,YAAY,CAAC;IAC/C,IAAI,CAACJ,SAAS,GAAG,KAAK;IACtB,IAAI,CAACJ,cAAc,CAACzyM,OAAO,CAAC;EAC9B,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE85L,UAAU,CAAC3gR,SAAS,CAAC+5R,uBAAuB,GAAG,UAAUv5S,QAAQ,EAAE;IACjE,IAAI,CAAC84S,cAAc,GAAG94S,QAAQ;EAChC,CAAC;;EAED;AACF;AACA;EACEmgS,UAAU,CAAC3gR,SAAS,CAACytQ,gBAAgB,GAAG,kBAAkB;IACxD,MAAM,IAAI,CAACksB,WAAW,CAAC,IAAI,CAAC;EAC9B,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAStZ,uBAAuBA,CAAC2Z,YAAY,EAAE;IAC7C;IACA,IAAIC,SAAS,GAAGD,YAAY,CAACzwS,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC6d,IAAI,CAAC,CAAC;;IAE9D;IACA,OAAO6yR,SAAS,CAAC55R,MAAM,CAAC,CAAC,CAAC,CAAC8lB,WAAW,CAAC,CAAC,GAAG8zQ,SAAS,CAAC/uS,KAAK,CAAC,CAAC,CAAC;EAC/D;EAEA,SAASgvS,eAAeA,CAAA,EAAG;IACzB,IAAIntS,CAAC,CAACC,OAAO,CAAC2kD,kBAAkB,EAAE;IAElC,MAAMwoP,WAAW,GAAG,IAAIv2K,MAAM,CAAC;MAAE/iI,SAAS,EAAE;IAA6B,CAAC,CAAC;IAC3E,MAAMu5S,aAAa,GAAGnvL,IAAI,CAAC/rH,aAAa,CAAC,GAAG,CAAC;IAC7Ci7S,WAAW,CAAC12K,MAAM,CAACrnI,WAAW,CAACg+S,aAAa,CAAC;IAC7CD,WAAW,CAAC9hL,QAAQ,CAAC15H,QAAQ,CAACoQ,IAAI,CAAC;IAEnC5B,MAAM,CAACrO,gBAAgB,CAAC,SAAS,EAAExC,KAAK,IAAI;MAC1C89S,aAAa,CAACj3S,SAAS,GAAG,uCAAuC;MACjEg3S,WAAW,CAACv+S,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;IAEFuR,MAAM,CAACrO,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACzC89S,aAAa,CAACj3S,SAAS,GAAG,uCAAuC;MACjE0jB,UAAU,CAAC,MAAM;QACfszR,WAAW,CAACjwS,KAAK,CAAC,CAAC;MACrB,CAAC,EAAE,IAAI,CAAC;IACV,CAAC,CAAC;IAEFR,OAAO,CAAC7N,KAAK,CAAC,CAAC;IACf6N,OAAO,CAACu6B,GAAG,CAAC,0BAA0B,CAAC;IACvCl3B,CAAC,CAACC,OAAO,CAAC2kD,kBAAkB,GAAG,IAAI;EACrC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASsvE,QAAQA,CAAC60B,IAAI,EAAEukJ,IAAI,EAAE;IAC5B,IAAItiJ,OAAO;IAEX,OAAO,SAASuiJ,gBAAgBA,CAAA,EAAU;MAAA,SAAAC,IAAA,GAAAr0S,SAAA,CAAAjK,MAAA,EAANu+S,IAAI,OAAAv6S,KAAA,CAAAs6S,IAAA,GAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;QAAJD,IAAI,CAAAC,IAAA,IAAAv0S,SAAA,CAAAu0S,IAAA;MAAA;MACtC,MAAMC,OAAO,GAAG,IAAI;MAEpB,MAAMC,KAAK,GAAG,SAAAA,CAAA,EAAY;QACxB5iJ,OAAO,GAAG,IAAI;QACdjC,IAAI,CAAC32I,KAAK,CAACu7R,OAAO,EAAEF,IAAI,CAAC;MAC3B,CAAC;MAEDnzK,YAAY,CAAC0wB,OAAO,CAAC;MACrBA,OAAO,GAAGlxI,UAAU,CAAC8zR,KAAK,EAAEN,IAAI,CAAC;IACnC,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,eAAejtP,SAASA,CAAC67D,OAAO,EAAErP,YAAY,EAAE;IAC9C,MAAMghM,QAAQ,GAAG,GAAG7tS,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,MAAMh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,IAAIj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,IAAIl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,EAAE;IAClH,MAAM/+B,GAAG,GAAG,GAAGyvR,QAAQ,IAAI3xL,OAAO,GAAG;IAErC,IAAI;MACF,IAAIn9D,QAAQ,GAAG,MAAM+uP,KAAK,CAAC1vR,GAAG,EAAE;QAC9BogC,MAAM,EAAE,MAAM;QACdp2C,OAAO,EAAE;UAAE,cAAc,EAAE;QAAmB,CAAC;QAC/CpG,IAAI,EAAEoa,IAAI,CAACC,SAAS,CAAC;UAAEmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UAAE,GAAGukE;QAAa,CAAC;MAClE,CAAC,CAAC;MAEF,IAAI,CAAC9tD,QAAQ,CAACgvP,EAAE,EAAE;QAChB,MAAM,IAAIhwR,KAAK,CAAC,yCAAyC,CAAC;MAC5D;MAEA,IAAIppB,IAAI,GAAG,MAAMoqD,QAAQ,CAACivP,IAAI,CAAC,CAAC;MAEhC,OAAOr5S,IAAI;IACb,CAAC,CAAC,OAAOgM,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAAC,4BAA4BglF,OAAO,EAAE,EAAEv7G,KAAK,CAAC8B,OAAO,CAAC;MACjE,MAAM9B,KAAK;IACb;EACF;EAEA,SAASstS,aAAaA,CAAA,EAAG;IACvB,MAAMh0Q,EAAE,GAAGlb,SAAS,CAACC,SAAS;;IAE9B;IACA,MAAMiK,QAAQ,GAAG,gEAAgE,CAAC7T,IAAI,CAAC6kB,EAAE,CAAC;IAC1F,MAAMi0Q,QAAQ,GAAG,eAAe,CAAC94R,IAAI,CAAC6kB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC7kB,IAAI,CAAC6kB,EAAE,CAAC;IAEhE,IAAIhR,QAAQ,EAAE;MACZ,OAAOilR,QAAQ,GAAG,QAAQ,GAAG,QAAQ;IACvC,CAAC,MAAM;MACL,OAAO,SAAS;IAClB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAMr6K,mBAAmB,GAAG;IAC1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACIr5H,GAAGA,CAACjH,GAAG,EAAE;MACP,IAAI;QACF;QACA,MAAM46S,WAAW,GAAG9uQ,YAAY,CAACC,OAAO,CAAC,aAAat/B,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAAE,CAAC;QACzE,IAAIgvQ,WAAW,EAAE;UACf,IAAI;YACF,MAAM/uQ,KAAK,GAAGhjB,IAAI,CAACxT,KAAK,CAACulS,WAAW,CAAC;YACrC,OAAO/uQ,KAAK,GAAGA,KAAK,CAAC7rC,GAAG,CAAC,GAAG,IAAI;UAClC,CAAC,CAAC,OAAOoN,KAAK,EAAE;YACd,OAAOwtS,WAAW;UACpB;QACF;QAEA,OAAO,IAAI;MACb,CAAC,CAAC,OAAOxtS,KAAK,EAAE;QACdhE,OAAO,CAACu6B,GAAG,CAAC,6DAA6D,EAAEv2B,KAAK,CAAC;MACnF;IACF,CAAC;IACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI+D,GAAGA,CAACnR,GAAG,EAAEC,KAAK,EAAE;MACd,IAAI;QACF,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;UAC7BA,KAAK,GAAG4oB,IAAI,CAACxT,KAAK,CAACpV,KAAK,CAAC;QAC3B;;QAEA;QACA,MAAM26S,WAAW,GAAG9uQ,YAAY,CAACC,OAAO,CAAC,aAAat/B,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAAE,CAAC;QACzE,IAAI,CAACgvQ,WAAW,EAAE;UAChBA,WAAW,GAAG,CAAC,CAAC;QAClB;QACA;QACAA,WAAW,CAAC56S,GAAG,CAAC,GAAGC,KAAK;;QAExB;QACA,MAAM46S,YAAY,GAAGhyR,IAAI,CAACC,SAAS,CAAC8xR,WAAW,CAAC;QAChD9uQ,YAAY,CAACG,OAAO,CAAC,aAAax/B,CAAC,CAACC,OAAO,CAACk/B,MAAM,EAAE,EAAEivQ,YAAY,CAAC;MACrE,CAAC,CAAC,OAAOztS,KAAK,EAAE;QACdhE,OAAO,CAACu6B,GAAG,CAAC,2DAA2D,EAAEv2B,KAAK,CAAC;MACjF;IACF;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASg+R,YAAYA,CAAC0P,UAAU,EAAEC,WAAW,EAAE;IAC7C,OAAO59R,MAAM,CAAComD,MAAM,CAAC,CAAC,CAAC,EAAEu3O,UAAU,EAAEC,WAAW,CAAC;EACnD;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,SAASvmR,iBAAiBA,CAACjI,MAAM,EAAE;IACjC,OAAOA,MAAM,GAAG,EAAE,GAAG,GAAG,GAAGA,MAAM,GAAGA,MAAM,CAAChN,QAAQ,CAAC,CAAC;EACvD;;EAEA;AACF;AACA;AACA;AACA;EACE,SAAS+qB,uBAAuBA,CAAC7vB,IAAI,EAAE;IACrC,IAAIA,IAAI,IAAI,IAAI,EAAE,OAAO,IAAI;IAC7B,IAAIA,IAAI,KAAK,EAAE,EAAE,OAAO,EAAE;;IAE1B;IACA,IAAIA,IAAI,CAACoK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;MAC5BpK,IAAI,GAAGA,IAAI,CAACxR,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAChC;;IAEA;IACA,IAAIwR,IAAI,CAACoK,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;MAC3BpK,IAAI,GAAGA,IAAI,CAACxR,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;IACjC;;IAEA;IACA,IAAIwR,IAAI,CAACoK,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;MAC3BpK,IAAI,GAAGA,IAAI,CAACxR,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;IACjC;;IAEA;IACAwR,IAAI,GAAGA,IAAI,CAACxR,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAElC,OAAOwR,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAASw6R,cAAcA,CAAC+F,QAAQ,EAAE;IAChC,OAAO,UAAUv5S,CAAC,EAAEuU,CAAC,EAAE;MACrB,MAAMilS,MAAM,GAAGx5S,CAAC,CAACu5S,QAAQ,CAAC,IAAI,EAAE;MAChC,MAAME,MAAM,GAAGllS,CAAC,CAACglS,QAAQ,CAAC,IAAI,EAAE;;MAEhC;MACA,OAAOC,MAAM,CAAC52K,aAAa,CAAC62K,MAAM,CAAC;IACrC,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASC,sBAAsBA,CAACC,QAAQ,EAAE9C,KAAK,EAAE;IAC/C,MAAM,CAAC72S,CAAC,EAAEuU,CAAC,CAAC,GAAGmH,MAAM,CAACyD,OAAO,CAACw6R,QAAQ,CAAC,CAAC3yN,MAAM,CAC5C,CAAA4qC,IAAA,EAAAC,KAAA;MAAA,IAAC,CAACilL,QAAQ,EAAEC,QAAQ,CAAC,GAAAnlL,IAAA;MAAA,IAAE,CAACrzH,GAAG,EAAEC,KAAK,CAAC,GAAAqzH,KAAA;MAAA,OACjCglL,KAAK,CAACxoM,QAAQ,CAAC9vG,GAAG,CAAC,GACf,CAACmd,MAAM,CAAComD,MAAM,CAACg1O,QAAQ,EAAE;QAAE,CAACv4S,GAAG,GAAGC;MAAM,CAAC,CAAC,EAAEu4S,QAAQ,CAAC,GACrD,CAACD,QAAQ,EAAEp7R,MAAM,CAAComD,MAAM,CAACi1O,QAAQ,EAAE;QAAE,CAACx4S,GAAG,GAAGC;MAAM,CAAC,CAAC,CAAC;IAAA,GAC3D,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACT,CAAC;IAED,OAAO,CAAC;MAAE,GAAGwB;IAAE,CAAC,EAAE;MAAE,GAAGuU;IAAE,CAAC,CAAC;EAC7B;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASgpR,gBAAgBA,CAAC/vG,QAAQ,EAAkB;IAAA,IAAhBosH,SAAS,GAAAz1S,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,EAAE;IAChD,MAAM01S,aAAa,GAAGrsH,QAAQ,CAACzvK,KAAK,CAAC,GAAG,CAAC,CAAC4D,GAAG,CAAC,CAAC;;IAE/C;IACA,MAAMm4R,aAAa,GAAGF,SAAS,GAAGC,aAAa,CAAC3/S,MAAM,GAAG,CAAC;IAE1D,IAAIszL,QAAQ,CAACtzL,MAAM,GAAG0/S,SAAS,EAAE;MAC/B,MAAMG,eAAe,GAAGn+R,IAAI,CAACuC,KAAK,CAAC27R,aAAa,GAAG,CAAC,CAAC;MACrD,MAAME,gBAAgB,GAAGF,aAAa,GAAGC,eAAe;;MAExD;MACA,MAAMz4D,SAAS,GAAG9zD,QAAQ,CAAC/rL,SAAS,CAAC,CAAC,EAAEs4S,eAAe,CAAC;MACxD,MAAMx4D,UAAU,GAAG/zD,QAAQ,CAAC/rL,SAAS,CACnC+rL,QAAQ,CAACtzL,MAAM,GAAG2/S,aAAa,CAAC3/S,MAAM,GAAG8/S,gBAAgB,EACzDxsH,QAAQ,CAACtzL,MAAM,GAAG2/S,aAAa,CAAC3/S,MAClC,CAAC;MAED,OAAO,GAAGonP,SAAS,MAAMC,UAAU,GAAGs4D,aAAa,EAAE;IACvD;IAEA,OAAOrsH,QAAQ;EACjB;;EAEA;AACF;AACA;AACA;AACA;EACE,SAASysH,aAAaA,CAACC,YAAY,EAAEz7S,QAAQ,EAAE;IAC7C,IAAID,KAAK,GAAG07S,YAAY;IAExB,OAAO;MACLrqL,QAAQA,CAAA,EAAG;QACT,OAAOrxH,KAAK;MACd,CAAC;MACDuwH,QAAQA,CAAC3B,QAAQ,EAAE;QACjB,IAAI5uH,KAAK,KAAK4uH,QAAQ,EAAE;UACtB3uH,QAAQ,CAACD,KAAK,EAAE4uH,QAAQ,CAAC;QAC3B;QACA5uH,KAAK,GAAG4uH,QAAQ;MAClB;IACF,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAASwiL,gBAAgBA,CAACr1S,KAAK,EAAE4/S,qBAAqB,EAAE;IAAA,IAAAC,oBAAA;IACtD,MAAMjlK,QAAQ,IAAAilK,oBAAA,GAAG7/S,KAAK,CAACC,MAAM,CAAC46I,KAAK,CAAC,CAAC,CAAC,cAAAglK,oBAAA,uBAArBA,oBAAA,CAAuBz8S,IAAI;IAE5C,IAAI,CAACw3I,QAAQ,EAAE;MACbxtI,OAAO,CAACC,IAAI,CAAC,mBAAmB,CAAC;MACjC,OAAO,KAAK;IACd;IAEA,IAAIuyS,qBAAqB,CAAC/5R,IAAI,CAAC+0H,QAAQ,CAAC,EAAE;MACxCrxG,KAAK,CAAC,oEAAoE,CAAC;MAC3EvpC,KAAK,CAACC,MAAM,CAACgE,KAAK,GAAG,EAAE;MACvB,OAAO,KAAK;IACd;IACA,OAAO,IAAI;EACb;EAEA,OAAO;IACL8lP,eAAe;IACfgpD,eAAe;IACf1O,UAAU;IACVuZ,eAAe;IACf7Z,uBAAuB;IACvBp/J,QAAQ;IACR+5K,aAAa;IACb5tP,SAAS;IACTwzE,mBAAmB;IACnB8qK,YAAY;IACZ52Q,iBAAiB;IACjB8V,uBAAuB;IACvB2qQ,cAAc;IACdkG,sBAAsB;IACtBnc,gBAAgB;IAChB0c,aAAa;IACbrK;EACF,CAAC;AACH,CAAC,CAAC;AC/fF,MAAMyK,SAAS,GAAI,YAAY;EAC3B;EACA,IAAIC,eAAe,EAAEC,gBAAgB,EAAEC,mBAAmB,EAAEC,oBAAoB,EAAEC,iBAAiB;EACnG,IAAIzuG,qBAAqB,EAAEC,mBAAmB;EAC9C,IAAIyuG,qBAAqB,EAAEC,mBAAmB;EAC9C,IAAIlxI,QAAQ;EACZ,IAAImxI,yBAAyB;EAC7B;EACA,IAAIC,kBAAkB,EAClBC,kBAAkB,EAClBC,eAAe,EACfC,kBAAkB,EAClBC,uBAAuB,EACvBC,iBAAiB;EACrB,IAAIC,iBAAiB,EAAEC,sBAAsB,EAAEC,mBAAmB,EAAEC,mBAAmB;EACvF,IAAInzJ,gBAAgB,EAAEwkE,eAAe,EAAE4uF,YAAY,EAAEC,eAAe,EAAEC,oBAAoB,EAAEC,gCAAgC;EAC5H,IAAIC,cAAc,EAAEC,mBAAmB,EAAEC,gBAAgB,EAAEC,aAAa;EACxE,IAAIC,uBAAuB;EAC3B;EACA,IAAI90M,YAAY;EAChB,IAAI/9D,OAAO;EACX,IAAI8yQ,aAAa;EACjB,IAAIC,eAAe;EACnB,IAAIC,qBAAqB;EACzB,IAAIC,mBAAmB;EACvB,IAAIC,gBAAgB;EACpB,IAAIC,+BAA+B;EACnC,IAAIC,mBAAmB;EACvB,IAAIC,mBAAmB;EACvB,IAAIh/I,eAAe;EACnB,IAAIuvC,cAAc;EAClB,IAAI0vG,WAAW;EACf,IAAIC,cAAc;EAClB,IAAIC,mBAAmB;EACvB,IAAIC,aAAa;EACjB,IAAIC,kBAAkB;EACtB,IAAIC,mBAAmB;EACvB,IAAIC,eAAe;EACnB;EACA,IAAIC,oBAAoB;EACxB,IAAIC,mBAAmB,CAAC,CAAC;EACzB,IAAIC,gBAAgB,EAAEC,mBAAmB,EAAE1+I,oBAAoB,EAAE2+I,mBAAmB;EACpF,IAAIC,aAAa,GAAG,GAAG;EAEvB,SAASC,oBAAoBA,CAAA,EAAG;IAC5BhD,eAAe,GAAG17S,QAAQ,CAAC3B,KAAK,CAAC;MAC7B4B,UAAU,EAAE,gBAAgB;MAC5BE,KAAK,EAAE,QAAQ;MACfrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF68S,gBAAgB,GAAG37S,QAAQ,CAAC3B,KAAK,CAAC;MAC9B4B,UAAU,EAAE,kBAAkB;MAC9BE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF88S,mBAAmB,GAAG57S,QAAQ,CAAC3B,KAAK,CAAC;MACjC4B,UAAU,EAAE,qBAAqB;MACjCE,KAAK,EAAEiM,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,GAAG,cAAc,GAAG,cAAc;MACnFxN,KAAK,EAAE;IACX,CAAC,CAAC;IACF+8S,oBAAoB,GAAG77S,QAAQ,CAAC3B,KAAK,CAAC;MAClC4B,UAAU,EAAE,sBAAsB;MAClCE,KAAK,EAAE,eAAe;MACtBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFg9S,iBAAiB,GAAG97S,QAAQ,CAAC3B,KAAK,CAAC;MAC/B4B,UAAU,EAAE,mBAAmB;MAC/BE,KAAK,EAAE,WAAW;MAClBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFi+S,gCAAgC,GAAG/8S,QAAQ,CAAC3B,KAAK,CAAC;MAC9C4B,UAAU,EAAE,kCAAkC;MAC9CE,KAAK,EAAE,4BAA4B;MACnCrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFuuM,qBAAqB,GAAGxrM,KAAK,CAACxD,KAAK,CAAC;MAChCU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,oBAAoB;MAC3BrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0oG,YAAY,CAACw/B;IACxB,CAAC,CAAC;IACFwlE,mBAAmB,GAAGzrM,KAAK,CAACxD,KAAK,CAAC;MAC9BU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,kBAAkB;MACzBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0oG,YAAY,CAACy/B;IACxB,CAAC,CAAC;IACFg0K,qBAAqB,GAAGl6S,KAAK,CAACxD,KAAK,CAAC;MAChCU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,oBAAoB;MAC3BrB,KAAK,EAAE,WAAW;MAClB;MACAc,KAAK,EAAE0oG,YAAY,CAAC0/B;IACxB,CAAC,CAAC;IACFg0K,mBAAmB,GAAGn6S,KAAK,CAACxD,KAAK,CAAC;MAC9BU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,kBAAkB;MACzBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0oG,YAAY,CAAC2/B;IACxB,CAAC,CAAC;IACF;IACAuhB,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAC9B4B,UAAU,EAAE,kBAAkB;MAC9BE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFkvN,eAAe,GAAGhuN,QAAQ,CAAC3B,KAAK,CAAC;MAC7B4B,UAAU,EAAE,iBAAiB;MAC7BE,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF89S,YAAY,GAAG58S,QAAQ,CAAC3B,KAAK,CAAC;MAC1B4B,UAAU,EAAE,cAAc;MAC1BE,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF+9S,eAAe,GAAG78S,QAAQ,CAAC3B,KAAK,CAAC;MAC7B4B,UAAU,EAAE,iBAAiB;MAC7BE,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFg+S,oBAAoB,GAAG98S,QAAQ,CAAC3B,KAAK,CAAC;MAClC4B,UAAU,EAAE,sBAAsB;MAClCE,KAAK,EAAE,cAAc;MACrBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFk+S,cAAc,GAAGh9S,QAAQ,CAAC3B,KAAK,CAAC;MAC5B4B,UAAU,EAAE,gBAAgB;MAC5BE,KAAK,EAAE,QAAQ;MACfrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFm+S,mBAAmB,GAAGj9S,QAAQ,CAAC3B,KAAK,CAAC;MACjC4B,UAAU,EAAE,qBAAqB;MACjCE,KAAK,EAAE,aAAa;MACpBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFo+S,gBAAgB,GAAGl9S,QAAQ,CAAC3B,KAAK,CAAC;MAC9B4B,UAAU,EAAE,kBAAkB;MAC9BE,KAAK,EAAE,WAAW;MAClBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFq+S,aAAa,GAAGt7S,KAAK,CAACxD,KAAK,CAAC;MACxB8B,KAAK,EAAE,WAAW;MAClBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE0oG,YAAY,CAACinB,QAAQ,IAAI,GAAG,GAAG,EAAE,GAAGjnB,YAAY,CAACinB;IAC5D,CAAC,CAAC;EACN;EAEA,SAASovL,8BAA8BA,CAAA,EAAG;IACtChC,mBAAmB,GAAG96S,KAAK,CAACyB,aAAa,CAAC;MACtC3E,IAAI,EAAE;IACV,CAAC,CAAC;IACFu9S,kBAAkB,GAAGr6S,KAAK,CAACyB,aAAa,CAAC;MACrC3E,IAAI,EAAE,UAAU;MAChB6E,SAAS,EAAE45S,uBAAuB,CAACn3S;IACvC,CAAC,CAAC;IACFk2S,kBAAkB,GAAGt6S,KAAK,CAACyB,aAAa,CAAC;MACrC3E,IAAI,EAAE,SAAS;MACf6E,SAAS,EAAE45S,uBAAuB,CAAC90L;IACvC,CAAC,CAAC;IACF8zL,eAAe,GAAGv6S,KAAK,CAACyB,aAAa,CAAC;MAClC3E,IAAI,EAAE,MAAM;MACZ6E,SAAS,EAAE45S,uBAAuB,CAACvuL;IACvC,CAAC,CAAC;IACFwtL,kBAAkB,GAAGx6S,KAAK,CAACyB,aAAa,CAAC;MACrC3E,IAAI,EAAE,SAAS;MACf6E,SAAS,EAAE45S,uBAAuB,CAACn6L;IACvC,CAAC,CAAC;IACFq5L,uBAAuB,GAAGz6S,KAAK,CAACyB,aAAa,CAAC;MAC1C3E,IAAI,EAAE,cAAc;MACpB6E,SAAS,EAAE45S,uBAAuB,CAAC3tL;IACvC,CAAC,CAAC;IACF+sL,iBAAiB,GAAG36S,KAAK,CAACyB,aAAa,CAAC;MACpC3E,IAAI,EAAE,QAAQ;MACd6E,SAAS,EAAE45S,uBAAuB,CAACj7K;IACvC,CAAC,CAAC;IACFs6K,sBAAsB,GAAG56S,KAAK,CAACyB,aAAa,CAAC;MACzC3E,IAAI,EAAE,aAAa;MACnB6E,SAAS,EAAE45S,uBAAuB,CAACvvL;IACvC,CAAC,CAAC;IACF0uL,iBAAiB,GAAG16S,KAAK,CAACyB,aAAa,CAAC;MACpCpD,SAAS,EAAE,YAAY;MACvBvB,IAAI,EAAE,oBAAoB;MAC1B6E,SAAS,EAAEi7S,aAAa,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK;MAC/C5+S,QAAQ,EAAEA,CAAA,KAAM++S,mBAAmB,CAACjjT,KAAK,CAACC,MAAM;IACpD,CAAC,CAAC;IACF2gT,iBAAiB,CAAC/9S,EAAE,GAAG,qBAAqB;IAC5Ck+S,mBAAmB,GAAG76S,KAAK,CAACyB,aAAa,CAAC;MACtC3E,IAAI,EAAE,WAAW;MACjB6E,SAAS,EAAE45S,uBAAuB,CAAC7tL;IACvC,CAAC,CAAC;;IAEF;IACAotL,mBAAmB,CAAC79S,KAAK,CAACqpE,QAAQ,GAAG,MAAM;IAC3Cw0O,mBAAmB,CAAC79S,KAAK,CAACgwD,YAAY,GAAG,MAAM;EACnD;EAEA,SAASgiG,gBAAgBA,CAACjjD,MAAM,EAAE;IAC9B,MAAMhgG,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACtBgB,UAAU,EAAE;IAChB,CAAC,CAAC;IAEFyrK,QAAQ,GAAG1sK,MAAM,CAACC,KAAK,CAAC;MACpBM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBg/S,kBAAkB,CAAC,CAAC;QACpB98I,0BAA0B,CAAC,CAAC;QAC5Bh0J,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB05H,aAAa,CAACu3K,qBAAqB,CAACx2M,YAAY,CAAC;MACrD;IACJ,CAAC,CAAC;IACF,MAAMy2M,gBAAgB,GAAG3gT,MAAM,CAACC,KAAK,CAAC;MAClCM,IAAI,EAAE,qBAAqB;MAC3BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjBmxS,qBAAqB,CAAC,CAAC;MAC3B;IACJ,CAAC,CAAC;IAEF,MAAMC,aAAa,GAAGjhT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnD09S,yBAAyB,GAAGj+S,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzD2gT,oBAAoB,CAACrxM,MAAM,CAAC;IAC5BoxM,aAAa,CAACpkT,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEtC,MAAMokT,eAAe,GAAGF,aAAa,CAAC5xS,SAAS,CAAC,CAAC;IACjD8xS,eAAe,CAACtkT,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAC/C,MAAMqkT,cAAc,GAAGH,aAAa,CAAC5xS,SAAS,CAAC,CAAC;IAChD+xS,cAAc,CAACvkT,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAE9CkkT,aAAa,CAACxjT,WAAW,CAACqvK,QAAQ,CAAC;IAEnCq0I,eAAe,CAAC1jT,WAAW,CAAC4xM,qBAAqB,CAAC;IAClD8xG,eAAe,CAAC1jT,WAAW,CAAC6xM,mBAAmB,CAAC;IAEhD8xG,cAAc,CAAC3jT,WAAW,CAACsgT,qBAAqB,CAAC;IACjDqD,cAAc,CAAC3jT,WAAW,CAACugT,mBAAmB,CAAC;IAC/C,IAAInuM,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,iBAAiB,EAC9ChgG,KAAK,CAACpS,WAAW,CAAC8gT,iBAAiB,CAAC;IACxC,IAAI1uM,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,WAAW,EACxChgG,KAAK,CAACpS,WAAW,CAACigT,eAAe,CAAC;IACtC,IAAI7tM,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,aAAa,EAC1ChgG,KAAK,CAACpS,WAAW,CAACkgT,gBAAgB,CAAC;IACvC,IAAI9tM,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,uBAAuB,EACpDhgG,KAAK,CAACpS,WAAW,CAACmgT,mBAAmB,CAAC;IAC1C,IAAI/tM,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,iBAAiB,EAC9ChgG,KAAK,CAACpS,WAAW,CAACogT,oBAAoB,CAAC;IAC3C,IAAIzvS,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,KAAKuhG,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,cAAc,CAAC,EAC3FhgG,KAAK,CAACpS,WAAW,CAACqgT,iBAAiB,CAAC;IACxC,IAAI1vS,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,KAAKuhG,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,6BAA6B,CAAC,EAC1GhgG,KAAK,CAACpS,WAAW,CAACshT,gCAAgC,CAAC;IACvD,IAAIlvM,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,iBAAiB,EAC9ChgG,KAAK,CAACpS,WAAW,CAAC0jT,eAAe,CAAC;IACtC,IAAItxM,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,iBAAiB,EAC9ChgG,KAAK,CAACpS,WAAW,CAAC2jT,cAAc,CAAC;IAErCvxS,KAAK,CAACpS,WAAW,CAACwgT,yBAAyB,CAAC;IAE5C,IAAIpuM,MAAM,IAAI,KAAK,EACfhgG,KAAK,CAACpS,WAAW,CAACsjT,gBAAgB,CAAC;IAEvClxS,KAAK,CAACpS,WAAW,CAACwjT,aAAa,CAAC;IAEhClxS,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;IACjB+7J,iBAAiB,CAAC,CAAC;EACvB;EAEA,SAASo1I,qBAAqBA,CAAA,EAAG;IAC7B,MAAMK,eAAe,GAAGtxS,KAAK,CAAC1P,KAAK,CAAC;MAChCkQ,KAAK,EAAE,IAAI;MACXlP,UAAU,EAAE;IAChB,CAAC,CAAC;IAEF,MAAMyrK,QAAQ,GAAG1sK,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZy/S,sBAAsB,CAAC,CAAC;QACxBvxS,KAAK,CAAC/S,IAAI,CAACqkT,eAAe,CAAC;QAC3BvuJ,gBAAgB,CAAC,KAAK,CAAC;MAC3B;IACJ,CAAC,CAAC;IAEF,MAAMvmH,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhC,MAAMwkT,aAAa,GAAGvhT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDghT,aAAa,CAAC1kT,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAE5CwkT,aAAa,CAAC9jT,WAAW,CAACkhT,mBAAmB,CAAC;IAC9C4C,aAAa,CAAC9jT,WAAW,CAACygT,kBAAkB,CAAC;IAC7CqD,aAAa,CAAC9jT,WAAW,CAAC0gT,kBAAkB,CAAC;IAC7CoD,aAAa,CAAC9jT,WAAW,CAAC2gT,eAAe,CAAC;IAC1CmD,aAAa,CAAC9jT,WAAW,CAAC4gT,kBAAkB,CAAC;IAC7CkD,aAAa,CAAC9jT,WAAW,CAAC6gT,uBAAuB,CAAC;IAClDiD,aAAa,CAAC9jT,WAAW,CAAC+gT,iBAAiB,CAAC;IAC5C,IAAIpwS,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAC1CizS,aAAa,CAAC9jT,WAAW,CAACghT,sBAAsB,CAAC;IACrD8C,aAAa,CAAC9jT,WAAW,CAACihT,mBAAmB,CAAC;IAE9C2C,eAAe,CAAC5jT,WAAW,CAAC8jT,aAAa,CAAC;IAE1Ch1Q,OAAO,CAAC9uC,WAAW,CAACqvK,QAAQ,CAAC;IAC7B;IACAvgI,OAAO,CAACzrC,KAAK,CAACw8J,SAAS,GAAG,MAAM;IAEhC+jJ,eAAe,CAAC5jT,WAAW,CAAC8uC,OAAO,CAAC;IAEpCx8B,KAAK,CAAC9S,IAAI,CAACokT,eAAe,CAAC;EAC/B;EAEA,SAASC,sBAAsBA,CAAA,EAAG;IAC9BlC,uBAAuB,CAACn3S,QAAQ,GAAGi2S,kBAAkB,CAACzpS,UAAU,CAAC5O,OAAO;IACxEu5S,uBAAuB,CAAC90L,OAAO,GAAG6zL,kBAAkB,CAAC1pS,UAAU,CAAC5O,OAAO;IACvEu5S,uBAAuB,CAACvuL,IAAI,GAAGutL,eAAe,CAAC3pS,UAAU,CAAC5O,OAAO;IACjEu5S,uBAAuB,CAACn6L,OAAO,GAAGo5L,kBAAkB,CAAC5pS,UAAU,CAAC5O,OAAO;IACvEu5S,uBAAuB,CAAC3tL,YAAY,GAAG6sL,uBAAuB,CAAC7pS,UAAU,CAAC5O,OAAO;IACjFu5S,uBAAuB,CAACj7K,MAAM,GAAGq6K,iBAAiB,CAAC/pS,UAAU,CAAC5O,OAAO;IACrE,IAAIuI,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAC1C8wS,uBAAuB,CAACvvL,WAAW,GAAG4uL,sBAAsB,CAAChqS,UAAU,CAAC5O,OAAO;IACnFu5S,uBAAuB,CAAC7tL,QAAQ,GAAGmtL,mBAAmB,CAACjqS,UAAU,CAAC5O,OAAO;IAEzE,IAAI,CAACu5S,uBAAuB,CAACn3S,QAAQ,EAAE6mG,WAAW,CAAC,aAAa,CAAC;IACjE,IAAI,CAACswM,uBAAuB,CAAC90L,OAAO,EAAExb,WAAW,CAAC,YAAY,CAAC;IAC/D,IAAI,CAACswM,uBAAuB,CAACvuL,IAAI,EAAE/hB,WAAW,CAAC,SAAS,CAAC;IACzD,IAAI,CAACswM,uBAAuB,CAACn6L,OAAO,EAAEnW,WAAW,CAAC,YAAY,CAAC;IAC/D,IAAI,CAACswM,uBAAuB,CAAC3tL,YAAY,EAAE3iB,WAAW,CAAC,iBAAiB,CAAC;IACzE,IAAI,CAACswM,uBAAuB,CAACj7K,MAAM,EAAEr1B,WAAW,CAAC,WAAW,CAAC;IAC7D,IAAI1gG,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,IAAI,CAAC8wS,uBAAuB,CAACvvL,WAAW,EAAE/gB,WAAW,CAAC,WAAW,CAAC;IAChH,IAAI,CAACswM,uBAAuB,CAAC7tL,QAAQ,EAAEziB,WAAW,CAAC,aAAa,CAAC;EACrE;EAEA,SAASoyM,oBAAoBA,CAACrxM,MAAM,EAAE;IAClC,IAAIuvM,uBAAuB,CAACn3S,QAAQ,KAAK4nG,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,aAAa,CAAC,EAAEouM,yBAAyB,CAACxgT,WAAW,CAAC+tJ,gBAAgB,CAAC;IAC7I,IAAI4zJ,uBAAuB,CAAC90L,OAAO,KAAKza,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,YAAY,CAAC,EAAEouM,yBAAyB,CAACxgT,WAAW,CAACuyN,eAAe,CAAC;IAC1I,IAAIovF,uBAAuB,CAACvuL,IAAI,KAAKhhB,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,SAAS,CAAC,EAAEouM,yBAAyB,CAACxgT,WAAW,CAACmhT,YAAY,CAAC;IACjI,IAAIQ,uBAAuB,CAACn6L,OAAO,KAAKpV,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,YAAY,CAAC,EAAEouM,yBAAyB,CAACxgT,WAAW,CAACohT,eAAe,CAAC;IAC1I,IAAIO,uBAAuB,CAAC3tL,YAAY,KAAK5hB,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,iBAAiB,CAAC,EACxFouM,yBAAyB,CAACxgT,WAAW,CAACqhT,oBAAoB,CAAC;IAC/D,IAAIM,uBAAuB,CAACj7K,MAAM,KAAKt0B,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,WAAW,CAAC,EAAEouM,yBAAyB,CAACxgT,WAAW,CAACuhT,cAAc,CAAC;IACvI,IAAI5wS,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,IAAI8wS,uBAAuB,CAACvvL,WAAW,KAAKhgB,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,gBAAgB,CAAC,EACpIouM,yBAAyB,CAACxgT,WAAW,CAACwhT,mBAAmB,CAAC;IAC9D,IAAIG,uBAAuB,CAAC7tL,QAAQ,KAAK1hB,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,aAAa,CAAC,EAAE;MAClFouM,yBAAyB,CAACxgT,WAAW,CAACyhT,gBAAgB,CAAC;MACvDjB,yBAAyB,CAACxgT,WAAW,CAAC0hT,aAAa,CAAC;MACpD,IAAI70M,YAAY,CAACinB,QAAQ,KAAK,GAAG,IAAIjnB,YAAY,CAACinB,QAAQ,KAAK,EAAE,EAAE;QAC/D4tL,aAAa,CAACr+S,KAAK,CAACoK,OAAO,GAAG,MAAM;MACxC,CAAC,MAAM;QACHi0S,aAAa,CAACl/S,aAAa,CAAC,OAAO,CAAC,CAAC2B,KAAK,GAAG0oG,YAAY,CAACinB,QAAQ;MACtE;IACJ;EACJ;EAEA,SAASq6C,iBAAiBA,CAAA,EAAG;IACzBgyI,mBAAmB,CAACz9S,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpD;MACA2sG,YAAY,CAACriG,QAAQ,GAAG,GAAG;MAC3BqiG,YAAY,CAACggB,OAAO,GAAG,GAAG;MAC1BhgB,YAAY,CAACumB,IAAI,GAAG,GAAG;MACvBvmB,YAAY,CAAC2a,OAAO,GAAG,GAAG;MAC1B;MACAu8L,uBAAuB,CAAC7jT,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC;IAC/C,CAAC,CAAC;IACFs9S,gBAAgB,CAAC/+S,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAIA,KAAK,CAACC,MAAM,CAACgE,KAAK,KAAK,UAAU,EAAE;QACnCu9S,aAAa,CAACr+S,KAAK,CAACgR,cAAc,CAAC,SAAS,CAAC;MACjD,CAAC,MAAM;QACHqtS,aAAa,CAACr+S,KAAK,CAACoK,OAAO,GAAG,MAAM;QACpCi0S,aAAa,CAAC1qS,UAAU,CAAC7S,KAAK,GAAG,EAAE;MACvC;IACJ,CAAC,CAAC;IACF+8S,mBAAmB,CAACx+S,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpD,IAAIA,KAAK,CAACC,MAAM,CAACiI,OAAO,EAAE;QACtBq4S,kBAAkB,CAACzpS,UAAU,CAAC5O,OAAO,GAAG,IAAI;QAC5Cs4S,kBAAkB,CAAC1pS,UAAU,CAAC5O,OAAO,GAAG,IAAI;QAC5Cu4S,eAAe,CAAC3pS,UAAU,CAAC5O,OAAO,GAAG,IAAI;QACzCw4S,kBAAkB,CAAC5pS,UAAU,CAAC5O,OAAO,GAAG,IAAI;QAC5Cy4S,uBAAuB,CAAC7pS,UAAU,CAAC5O,OAAO,GAAG,IAAI;QACjD24S,iBAAiB,CAAC/pS,UAAU,CAAC5O,OAAO,GAAG,IAAI;QAC3C,IAAIuI,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAC1CmwS,sBAAsB,CAAChqS,UAAU,CAAC5O,OAAO,GAAG,IAAI;QACpD64S,mBAAmB,CAACjqS,UAAU,CAAC5O,OAAO,GAAG,IAAI;MACjD,CAAC,MAAM;QACHq4S,kBAAkB,CAACzpS,UAAU,CAAC5O,OAAO,GAAG,KAAK;QAC7Cs4S,kBAAkB,CAAC1pS,UAAU,CAAC5O,OAAO,GAAG,KAAK;QAC7Cu4S,eAAe,CAAC3pS,UAAU,CAAC5O,OAAO,GAAG,KAAK;QAC1Cw4S,kBAAkB,CAAC5pS,UAAU,CAAC5O,OAAO,GAAG,KAAK;QAC7Cy4S,uBAAuB,CAAC7pS,UAAU,CAAC5O,OAAO,GAAG,KAAK;QAClD24S,iBAAiB,CAAC/pS,UAAU,CAAC5O,OAAO,GAAG,KAAK;QAC5C,IAAIuI,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAC1CmwS,sBAAsB,CAAChqS,UAAU,CAAC5O,OAAO,GAAG,KAAK;QACrD64S,mBAAmB,CAACjqS,UAAU,CAAC5O,OAAO,GAAG,KAAK;MAClD;IACJ,CAAC,CAAC;EACN;EAEA,SAASg7S,kBAAkBA,CAAA,EAAG;IAC1Bv2M,YAAY,CAAC25B,QAAQ,GAAGy5K,eAAe,CAACjpS,UAAU,CAAC7S,KAAK;IACxD0oG,YAAY,CAACpB,QAAQ,GAAGy0M,gBAAgB,CAAClpS,UAAU,CAAC7S,KAAK;IACzD0oG,YAAY,CAAC45B,WAAW,GAAG05K,mBAAmB,CAACnpS,UAAU,CAAC7S,KAAK;IAC/D0oG,YAAY,CAACg6B,YAAY,GAAGu5K,oBAAoB,CAACppS,UAAU,CAAC7S,KAAK;IACjE0oG,YAAY,CAACktB,SAAS,GAAGsmL,iBAAiB,CAACrpS,UAAU,CAAC7S,KAAK;IAC3D0oG,YAAY,CAAConB,wBAAwB,GAAGqtL,gCAAgC,CAACtqS,UAAU,CAAC7S,KAAK;IACzF0oG,YAAY,CAACw/B,gBAAgB,GAAGulE,qBAAqB,CAAC56L,UAAU,CAAC7S,KAAK;IACtE0oG,YAAY,CAACy/B,cAAc,GAAGulE,mBAAmB,CAAC76L,UAAU,CAAC7S,KAAK;IAClE0oG,YAAY,CAAC0/B,gBAAgB,GACzB+zK,qBAAqB,CAACtpS,UAAU,CAAC7S,KAAK,KAAK,EAAE,GACvC,YAAY,GACZm8S,qBAAqB,CAACtpS,UAAU,CAAC7S,KAAK;IAChD0oG,YAAY,CAAC2/B,cAAc,GAAG+zK,mBAAmB,CAACvpS,UAAU,CAAC7S,KAAK;IAClE0oG,YAAY,CAACriG,QAAQ,GAAGujJ,gBAAgB,CAAC/2I,UAAU,CAAC7S,KAAK;IACzD0oG,YAAY,CAACggB,OAAO,GAAG0lG,eAAe,CAACv7M,UAAU,CAAC7S,KAAK;IACvD0oG,YAAY,CAACumB,IAAI,GAAG+tL,YAAY,CAACnqS,UAAU,CAAC7S,KAAK;IACjD0oG,YAAY,CAAC2a,OAAO,GAAG45L,eAAe,CAACpqS,UAAU,CAAC7S,KAAK;IACvD0oG,YAAY,CAACmnB,YAAY,GAAGqtL,oBAAoB,CAACrqS,UAAU,CAAC7S,KAAK;IACjE0oG,YAAY,CAAC65B,MAAM,GAAG66K,cAAc,CAACvqS,UAAU,CAAC7S,KAAK;IACrD,IAAIwM,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAC1Cg8F,YAAY,CAACulB,WAAW,GAAGovL,mBAAmB,CAACxqS,UAAU,CAAC7S,KAAK;IACnE0oG,YAAY,CAACysB,QAAQ,GAAG0pL,aAAa;IACrC,QAAQvB,gBAAgB,CAACzqS,UAAU,CAAC7S,KAAK;MACrC,KAAK,UAAU;QACX0oG,YAAY,CAACinB,QAAQ,GAAG4tL,aAAa,CAAC1qS,UAAU,CAAC7S,KAAK;QACtD;MACJ,KAAK,OAAO;QACR0oG,YAAY,CAACinB,QAAQ,GAAG,EAAE;QAC1B;MACJ,KAAK,GAAG;QACJjnB,YAAY,CAACinB,QAAQ,GAAG,GAAG;QAC3B;MACJ;QACI;IACR;EACJ;EAEA,SAASkwL,qBAAqBA,CAAA,EAAG;IAC7B,MAAMC,wBAAwB,GAAG,CAC7B;MAAE/gT,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,EAC3B;MAAEjB,IAAI,EAAE,cAAc;MAAEiB,KAAK,EAAE;IAAI,CAAC,EACpC;MAAEjB,IAAI,EAAE,QAAQ;MAAEiB,KAAK,EAAE;IAAI,CAAC,EAC9B;MAAEjB,IAAI,EAAE,UAAU;MAAEiB,KAAK,EAAE;IAAI,CAAC,CACnC;IACD,MAAMw/I,yBAAyB,GAAIugK,kBAAkB,GAAGC,sBAAsB,GAAGC,qBAAqB,GAAGC,oCAAoC,GAAG,CAC5I;MAAEnhT,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,EAC3B;MAAEjB,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,EAC3B;MAAEjB,IAAI,EAAE,IAAI;MAAEiB,KAAK,EAAE;IAAI,CAAC,CAC5B;IACF,MAAMmgT,oBAAoB,GAAG,CACzB;MAAEphT,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,EAC3B;MAAEjB,IAAI,EAAE,OAAO;MAAEiB,KAAK,EAAE;IAAQ,CAAC,EACjC;MAAEjB,IAAI,EAAE,UAAU;MAAEiB,KAAK,EAAE;IAAW,CAAC,CAC1C;IACD;IACA,IAAIogT,eAAe;IACnB,IAAI13M,YAAY,CAACinB,QAAQ,KAAK,GAAG,EAAE;MAC/BywL,eAAe,GAAG13M,YAAY,CAACinB,QAAQ;IAC3C,CAAC,MAAM,IAAIjnB,YAAY,CAACinB,QAAQ,KAAK,EAAE,EAAE;MACrCywL,eAAe,GAAG,OAAO;IAC7B,CAAC,MAAM;MACHA,eAAe,GAAG,UAAU;IAChC;IACAhgT,QAAQ,CAAC5E,QAAQ,CAACygT,oBAAoB,EAAE6D,wBAAwB,EAAEp3M,YAAY,CAACg6B,YAAY,CAAC;IAC5FtiI,QAAQ,CAAC5E,QAAQ,CAAC0gT,iBAAiB,EAAE+D,qBAAqB,EAAEv3M,YAAY,CAACktB,SAAS,CAAC;IACnFx1H,QAAQ,CAAC5E,QAAQ,CAAC0hT,oBAAoB,EAAE19J,yBAAyB,EAAE92C,YAAY,CAACmnB,YAAY,CAAC;IAC7FzvH,QAAQ,CAAC5E,QAAQ,CAAC4hT,cAAc,EAAE2C,kBAAkB,EAAEr3M,YAAY,CAAC65B,MAAM,CAAC;IAC1EniI,QAAQ,CAAC5E,QAAQ,CAAC2hT,gCAAgC,EAAE+C,oCAAoC,EAAEx3M,YAAY,CAAConB,wBAAwB,CAAC;IAChI,IAAItjH,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAC1CtM,QAAQ,CAAC5E,QAAQ,CAAC6hT,mBAAmB,EAAE2C,sBAAsB,EAAEt3M,YAAY,CAACulB,WAAW,CAAC;IAC5F7tH,QAAQ,CAAC5E,QAAQ,CAAC8hT,gBAAgB,EAAE6C,oBAAoB,EAAEC,eAAe,CAAC;EAC9E;EAEA,SAASC,sBAAsBA,CAAA,EAAG;IAC9BC,oBAAoB,GAAG9B,oBAAoB,CAACr5S,GAAG,CAACgD,EAAE,IAAI;MAClD,OAAO;QACHpJ,IAAI,EAAE,GAAGoJ,EAAE,CAACkuO,EAAE,KAAKluO,EAAE,CAACiuO,EAAE,EAAE;QAC1Bp2O,KAAK,EAAEmI,EAAE,CAACvJ;MACd,CAAC;IACL,CAAC,CAAC;IACF0hT,oBAAoB,CAACvhP,OAAO,CAAC;MAAEhgE,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,CAAC;IACzDI,QAAQ,CAAC5E,QAAQ,CAACugT,gBAAgB,EAAEuE,oBAAoB,EAAE53M,YAAY,CAACpB,QAAQ,CAAC;EACpF;EAEA,SAASi5M,uBAAuBA,CAACC,OAAO,EAAE;IACtC,IAAIr/S,IAAI,GAAGq/S,OAAO,CAACr7S,GAAG,CAAC,CAAC4Q,CAAC,EAAEhB,KAAK,KAAK;MACjC,IAAIA,KAAK,KAAK,CAAC,EAAE;QACbu0G,aAAa,GAAGvzG,CAAC,CAACssH,QAAQ;MAC9B;MACA,OAAO;QACHriI,KAAK,EAAE+V,CAAC,CAACssH,QAAQ;QACjBtjI,IAAI,EAAEgX,CAAC,CAAC0qS;MACZ,CAAC;IACL,CAAC,CAAC;IACFt/S,IAAI,CAAC49D,OAAO,CAAC;MAAE/+D,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IACzC;IACA,IAAI,CAAC2pG,YAAY,CAAC25B,QAAQ,EAAE35B,YAAY,CAAC25B,QAAQ,GAAG71H,CAAC,CAACC,OAAO,CAACmoC,QAAQ;IACtEx0C,QAAQ,CAAC5E,QAAQ,CAACsgT,eAAe,EAAE36S,IAAI,EAAEunG,YAAY,CAAC25B,QAAQ,CAAC;EACnE;EAEA,SAASq+K,mCAAmCA,CAACC,uBAAuB,EAAE;IAClElC,mBAAmB,CAAC1/O,OAAO,CAAC;MAAE/+D,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IACxD2/S,gBAAgB,CAAC3/O,OAAO,CAAC;MAAE/+D,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IACrD4/S,mBAAmB,CAAC5/O,OAAO,CAAC;MAAE/+D,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IACxD6/S,mBAAmB,CAAC7/O,OAAO,CAAC;MAAE/+D,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IACxDkhK,oBAAoB,CAAClhG,OAAO,CAAC;MAAE/+D,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IACzDqB,QAAQ,CAAC5E,QAAQ,CAACwgT,mBAAmB,EAAEyC,mBAAmB,EAAEkC,uBAAuB,CAAC;IACpFvgT,QAAQ,CAAC5E,QAAQ,CAACouJ,gBAAgB,EAAEqW,oBAAoB,EAAEv3D,YAAY,CAACriG,QAAQ,CAAC;IAChFjG,QAAQ,CAAC5E,QAAQ,CAAC4yN,eAAe,EAAEuwF,mBAAmB,EAAEj2M,YAAY,CAACggB,OAAO,CAAC;IAC7EtoH,QAAQ,CAAC5E,QAAQ,CAACwhT,YAAY,EAAE0B,gBAAgB,EAAEh2M,YAAY,CAACumB,IAAI,CAAC;IACpE7uH,QAAQ,CAAC5E,QAAQ,CAACyhT,eAAe,EAAE2B,mBAAmB,EAAEl2M,YAAY,CAAC2a,OAAO,CAAC;EACjF;EAEA,eAAeu8L,uBAAuBA,CAACe,uBAAuB,EAAE;IAC5D,MAAMC,eAAe,GAAG,CACpB,MAAM74K,aAAa,CAACsD,4BAA4B,CAACs1K,uBAAuB,CAAC,EAC3EE,kCAAkC;IACpCC,mBAAmB,CAACF,eAAe,CAAC;IACpCF,mCAAmC,CAACC,uBAAuB,CAAC;EAChE;EAEA,SAASI,uBAAuBA,CAAA,EAAG;IAC/B,OAAO,IAAIr0P,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;MACpCi4H,aAAa,CAACyC,uBAAuB,CAAC9lF,GAAG,IAAI;QACzC85P,oBAAoB,GAAG95P,GAAG;QAC1B27P,sBAAsB,CAAC,CAAC;QACxB1zP,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;EACN;EAEA,SAASqyP,mBAAmBA,CAAC/8S,KAAK,EAAE;IAChC,IAAI2B,SAAS,GAAG3B,KAAK,CAACgC,OAAO;IAC7B,IAAIL,SAAS,EAAE;MACXi7S,aAAa,GAAG,GAAG;IACvB,CAAC,MAAM;MACHA,aAAa,GAAG,GAAG;IACvB;EAEJ;EAEA,SAASmC,sBAAsBA,CAAA,EAAG;IAC9B,OAAO,IAAIt0P,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;MACpCi4H,aAAa,CAACW,yBAAyB,CAAChkF,GAAG,IAAI;QAC3C67P,uBAAuB,CAAC77P,GAAG,CAAC;QAC5BiI,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;EACN;EAEA,SAASm0P,mBAAmBA,CAACF,eAAe,EAAE;IAC1CnC,mBAAmB,GAAG,EAAE;IACxBC,gBAAgB,GAAG,EAAE;IACrBC,mBAAmB,GAAG,EAAE;IACxB1+I,oBAAoB,GAAG,EAAE;IACzB2+I,mBAAmB,GAAG,EAAE;IACxB;IACAgC,eAAe,CAACnrS,IAAI,CAAC,UAAUjU,CAAC,EAAEuU,CAAC,EAAE;MACjC,IAAIvU,CAAC,CAACg1G,OAAO,CAAC5wE,WAAW,CAAC,CAAC,GAAG7vB,CAAC,CAACygG,OAAO,CAAC5wE,WAAW,CAAC,CAAC,EAAE;QACnD,OAAO,CAAC,CAAC;MACb;MACA,IAAIpkC,CAAC,CAACg1G,OAAO,CAAC5wE,WAAW,CAAC,CAAC,GAAG7vB,CAAC,CAACygG,OAAO,CAAC5wE,WAAW,CAAC,CAAC,EAAE;QACnD,OAAO,CAAC;MACZ;MACA,OAAO,CAAC;IACZ,CAAC,CAAC;IACF;IACAg7Q,eAAe,CAACjlT,OAAO,CAACwM,EAAE,IAAI;MAC1B,QAAQA,EAAE,CAAC/H,QAAQ;QACf,KAAK,aAAa;UACdq+S,mBAAmB,CAACj1S,IAAI,CAAC;YAAEzK,IAAI,EAAEoJ,EAAE,CAACquG,OAAO;YAAEx2G,KAAK,EAAEmI,EAAE,CAAC84S;UAAU,CAAC,CAAC;UACnE;QACJ,KAAK,MAAM;UACPvC,gBAAgB,CAACl1S,IAAI,CAAC;YAAEzK,IAAI,EAAEoJ,EAAE,CAACquG,OAAO;YAAEx2G,KAAK,EAAEmI,EAAE,CAAC84S;UAAU,CAAC,CAAC;UAChE;QACJ,KAAK,SAAS;UACVtC,mBAAmB,CAACn1S,IAAI,CAAC;YAAEzK,IAAI,EAAEoJ,EAAE,CAACquG,OAAO;YAAEx2G,KAAK,EAAEmI,EAAE,CAAC84S;UAAU,CAAC,CAAC;UACnE;QACJ,KAAK,SAAS;UACVrC,mBAAmB,CAACp1S,IAAI,CAAC;YAAEzK,IAAI,EAAEoJ,EAAE,CAACquG,OAAO;YAAEx2G,KAAK,EAAEmI,EAAE,CAAC84S;UAAU,CAAC,CAAC;UACnE;QACJ,KAAK,UAAU;UACXhhJ,oBAAoB,CAACz2J,IAAI,CAAC;YAAEzK,IAAI,EAAEoJ,EAAE,CAACquG,OAAO;YAAEx2G,KAAK,EAAEmI,EAAE,CAAC84S;UAAU,CAAC,CAAC;UACpE;QACJ;UACI;MACR;IACJ,CAAC,CAAC;EACN;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,SAAS9+I,0BAA0BA,CAAA,EAAG;IAClC,IAAIvtD,oBAAoB,GAAGx2G,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IACpE,MAAMoiT,UAAU,GACZ3E,eAAe,IAAIp5S,SAAS,IAAIo5S,eAAe,CAACjpS,UAAU,CAACnU,OAAO,CAACo9S,eAAe,CAACjpS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,GAAGo5S,eAAe,CAACjpS,UAAU,CAACnU,OAAO,CAACo9S,eAAe,CAACjpS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IAC9N,IAAI8lG,YAAY,IAAIhmG,SAAS,EAAEgmG,YAAY,CAAC+3M,UAAU,GAAGA,UAAU;IACnE,MAAM71K,YAAY,GACdmxK,gBAAgB,IAAIr5S,SAAS,IAAIq5S,gBAAgB,CAAClpS,UAAU,CAACnU,OAAO,CAACq9S,gBAAgB,CAAClpS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,GAAGq5S,gBAAgB,CAAClpS,UAAU,CAACnU,OAAO,CAACq9S,gBAAgB,CAAClpS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IACnO,IAAI8lG,YAAY,IAAIhmG,SAAS,EAAEgmG,YAAY,CAACkiC,YAAY,GAAGA,YAAY;IACvE,MAAMD,YAAY,GACdqxK,mBAAmB,IAAIt5S,SAAS,IAAIs5S,mBAAmB,CAACnpS,UAAU,CAACnU,OAAO,CAACs9S,mBAAmB,CAACnpS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,GAAGs5S,mBAAmB,CAACnpS,UAAU,CAACnU,OAAO,CAACs9S,mBAAmB,CAACnpS,UAAU,CAAChS,aAAa,CAAC,CACvN+B,SAAS,GAAG,KAAK;IAC1B,IAAI8lG,YAAY,IAAIhmG,SAAS,EAAEgmG,YAAY,CAACiiC,YAAY,GAAGA,YAAY;IACvE,MAAMu2K,gBAAgB,GAClBjF,oBAAoB,IAAIv5S,SAAS,IAAIu5S,oBAAoB,CAACppS,UAAU,CAACnU,OAAO,CAACu9S,oBAAoB,CAACppS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,GAAGu5S,oBAAoB,CAACppS,UAAU,CAACnU,OAAO,CAACu9S,oBAAoB,CAACppS,UAAU,CAAChS,aAAa,CAAC,CAC5N+B,SAAS,GAAG,KAAK;IAC1B,MAAMu+S,aAAa,GACfjF,iBAAiB,IAAIx5S,SAAS,IAAIw5S,iBAAiB,CAACrpS,UAAU,CAACnU,OAAO,CAACw9S,iBAAiB,CAACrpS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,GAAGw5S,iBAAiB,CAACrpS,UAAU,CAACnU,OAAO,CAACw9S,iBAAiB,CAACrpS,UAAU,CAAChS,aAAa,CAAC,CAC7M+B,SAAS,GAAG,KAAK;IAC1B,MAAMw+S,4BAA4B,GAC9BjE,gCAAgC,IAAIz6S,SAAS,IAAIy6S,gCAAgC,CAACtqS,UAAU,CAACnU,OAAO,CAACy+S,gCAAgC,CAACtqS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,GAAGy6S,gCAAgC,CAACtqS,UAAU,CAACnU,OAAO,CAACy+S,gCAAgC,CAACtqS,UAAU,CAAChS,aAAa,CAAC,CACxR+B,SAAS,GAAG,KAAK;IAC1B,MAAMy+S,YAAY,GACdz3J,gBAAgB,IAAIlnJ,SAAS,IAAIknJ,gBAAgB,CAAC/2I,UAAU,CAACnU,OAAO,CAACkrJ,gBAAgB,CAAC/2I,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,GAAGknJ,gBAAgB,CAAC/2I,UAAU,CAACnU,OAAO,CAACkrJ,gBAAgB,CAAC/2I,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IACnO,IAAI8lG,YAAY,IAAIhmG,SAAS,EAAEgmG,YAAY,CAAC24M,YAAY,GAAGA,YAAY;IACvE,MAAMC,WAAW,GACblzF,eAAe,IAAI1rN,SAAS,IAAI0rN,eAAe,CAACv7M,UAAU,CAACnU,OAAO,CAAC0vN,eAAe,CAACv7M,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,GAAG0rN,eAAe,CAACv7M,UAAU,CAACnU,OAAO,CAAC0vN,eAAe,CAACv7M,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IAC9N,IAAI8lG,YAAY,IAAIhmG,SAAS,EAAEgmG,YAAY,CAAC44M,WAAW,GAAGA,WAAW;IACrE,MAAMC,QAAQ,GACVvE,YAAY,IAAIt6S,SAAS,IAAIs6S,YAAY,CAACnqS,UAAU,CAACnU,OAAO,CAACs+S,YAAY,CAACnqS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,GAAGs6S,YAAY,CAACnqS,UAAU,CAACnU,OAAO,CAACs+S,YAAY,CAACnqS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IAC/M,MAAM4+S,WAAW,GACbvE,eAAe,IAAIv6S,SAAS,IAAIu6S,eAAe,CAACpqS,UAAU,CAACnU,OAAO,CAACu+S,eAAe,CAACpqS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,GAAGu6S,eAAe,CAACpqS,UAAU,CAACnU,OAAO,CAACu+S,eAAe,CAACpqS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IAC9N,MAAM6+S,gBAAgB,GAClBvE,oBAAoB,IAAIx6S,SAAS,IAAIw6S,oBAAoB,CAACrqS,UAAU,CAACnU,OAAO,CAACw+S,oBAAoB,CAACrqS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,GAAGw6S,oBAAoB,CAACrqS,UAAU,CAACnU,OAAO,CAACw+S,oBAAoB,CAACrqS,UAAU,CAAChS,aAAa,CAAC,CAC5N+B,SAAS,GAAG,KAAK;IAC1B,MAAM8+S,UAAU,GACZtE,cAAc,IAAI16S,SAAS,IAAI06S,cAAc,CAACvqS,UAAU,CAACnU,OAAO,CAAC0+S,cAAc,CAACvqS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,GAAG06S,cAAc,CAACvqS,UAAU,CAACnU,OAAO,CAAC0+S,cAAc,CAACvqS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IACzN,IAAI++S,eAAe;IACnB,IAAIn1S,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC5Ci1S,eAAe,GACXtE,mBAAmB,IAAI36S,SAAS,IAAI26S,mBAAmB,CAACxqS,UAAU,CAACnU,OAAO,CAAC2+S,mBAAmB,CAACxqS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,GAAG26S,mBAAmB,CAACxqS,UAAU,CAACnU,OAAO,CAAC2+S,mBAAmB,CAACxqS,UAAU,CAAChS,aAAa,CAAC,CACvN+B,SAAS,GAAG,KAAK;MAC1B++S,eAAe,GAAGA,eAAe,GAAGA,eAAe,GAAG,KAAK,CAAC;IAChE;IACA,IAAIC,gBAAgB,GAAG,IAAI;IAC3B,IAAI/C,aAAa,KAAK,GAAG,EAAE;MACvB+C,gBAAgB,GAAG,IAAI;IAC3B,CAAC,MAAM;MACHA,gBAAgB,GAAG,KAAK;IAC5B;IAEA,MAAMC,YAAY,GACdvE,gBAAgB,IAAI56S,SAAS,IAAI46S,gBAAgB,CAACzqS,UAAU,CAACnU,OAAO,CAAC4+S,gBAAgB,CAACzqS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,GAAG46S,gBAAgB,CAACzqS,UAAU,CAACnU,OAAO,CAAC4+S,gBAAgB,CAACzqS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,KACnN,UAAU,GACR,aAAa26S,aAAa,CAAC1qS,UAAU,CAAC7S,KAAK,EAAE,GAC7Cs9S,gBAAgB,CAACzqS,UAAU,CAACnU,OAAO,CAAC4+S,gBAAgB,CAACzqS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IAE1G,MAAMk/S,uBAAuB,GAAGr0G,qBAAqB,IAAI/qM,SAAS,IAAIgmG,YAAY,CAACw/B,gBAAgB,IAAI,EAAE,GAAGp5G,IAAI,CAACmY,iBAAiB,CAACyhE,YAAY,CAACw/B,gBAAgB,CAAC,GAAGx/B,YAAY,CAACw/B,gBAAgB;IACjM,MAAM65K,qBAAqB,GAAGr0G,mBAAmB,IAAIhrM,SAAS,IAAIgmG,YAAY,CAACy/B,cAAc,IAAI,EAAE,GAAGr5G,IAAI,CAACmY,iBAAiB,CAACyhE,YAAY,CAACy/B,cAAc,CAAC,GAAGz/B,YAAY,CAACy/B,cAAc;IACvL,MAAM65K,uBAAuB,GAAG7F,qBAAqB,IAAIz5S,SAAS,IAAIgmG,YAAY,CAAC0/B,gBAAgB,IAAI,EAAE,GAAGt5G,IAAI,CAACmY,iBAAiB,CAACyhE,YAAY,CAAC0/B,gBAAgB,CAAC,GAAG1/B,YAAY,CAAC0/B,gBAAgB;IACjM,MAAM65K,sBAAsB,GAAG7F,mBAAmB,IAAI15S,SAAS,IAAIgmG,YAAY,CAAC2/B,cAAc,IAAI,EAAE,GAAGv5G,IAAI,CAACmY,iBAAiB,CAACyhE,YAAY,CAAC2/B,cAAc,CAAC,GAAG3/B,YAAY,CAAC2/B,cAAc;IAExL65K,cAAc,CAACzB,UAAU,EAAE71K,YAAY,EAAED,YAAY,EAAEu2K,gBAAgB,EAAEC,aAAa,EAAEW,uBAAuB,EAAEC,qBAAqB,EAAEC,uBAAuB,EAAEC,sBAAsB,EACnLZ,YAAY,EAAEC,WAAW,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,gBAAgB,EAAEC,UAAU,EAAEC,eAAe,EAAEC,gBAAgB,EAAEC,YAAY,EAAET,4BAA4B,CAAC;EAEtK;EAEA,SAASc,cAAcA,CAACzB,UAAU,EAAE71K,YAAY,EAAED,YAAY,EAAEu2K,gBAAgB,EAAEC,aAAa,EAAEW,uBAAuB,EAAEC,qBAAqB,EAAEC,uBAAuB,EAAEC,sBAAsB,EAC5LZ,YAAY,EAAEC,WAAW,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,gBAAgB,EAAEC,UAAU,EAAEC,eAAe,EAAEC,gBAAgB,EAAEC,YAAY,EAAET,4BAA4B,EAAE;IAE/J,IAAI,CAAC14M,YAAY,EAAE;MACfA,YAAY,GAAG;QACX25B,QAAQ,EAAE71H,CAAC,CAACC,OAAO,CAACmoC,QAAQ;QAC5B0yD,QAAQ,EAAE,GAAG;QACbsjC,YAAY,EAAE,KAAK;QACnBtI,WAAW,EAAE,GAAG;QAChBI,YAAY,EAAE,GAAG;QACjBwF,gBAAgB,EAAE45K,uBAAuB;QACzC35K,cAAc,EAAE45K,qBAAqB;QACrC35K,gBAAgB,EAAE45K,uBAAuB;QACzC35K,cAAc,EAAE45K,sBAAsB;QACtC57S,QAAQ,EAAE,GAAG;QACbqiH,OAAO,EAAE,GAAG;QACZuG,IAAI,EAAE,GAAG;QACT5L,OAAO,EAAE,GAAG;QACZwM,YAAY,EAAE,GAAG;QACjB+F,SAAS,EAAE,GAAG;QACd2M,MAAM,EAAE,GAAG;QACXtU,WAAW,EAAE,GAAG;QAChBkH,QAAQ,EAAE,GAAG;QACbxF,QAAQ,EAAE,GAAG;QACbwyL,aAAa,EAAE,EAAE;QACjBryL,wBAAwB,EAAE;MAC9B,CAAC;IACL;IAEA,IAAI2wL,UAAU,KAAK,GAAG,IAAIA,UAAU,KAAK,KAAK,EAAE;MAC5C91Q,OAAO,CAAC9uC,WAAW,CAAC4hT,aAAa,CAAC;MAClC9yQ,OAAO,CAACn9B,WAAW,CAACiwS,aAAa,CAAC;IACtC,CAAC,MACI;MACD9yQ,OAAO,CAAC9uC,WAAW,CAAC4hT,aAAa,CAAC;MAClC,IAAIr/S,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,IAAI,IAAI,EAC5CjD,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAAC9F,SAAS,GAAG,UAAU,GAAGklT,UAAU;IAChF;IAEA,IAAI71K,YAAY,KAAK,GAAG,IAAIA,YAAY,KAAK,KAAK,EAAE;MAChDjgG,OAAO,CAAC9uC,WAAW,CAAC6hT,eAAe,CAAC;MACpC/yQ,OAAO,CAACn9B,WAAW,CAACkwS,eAAe,CAAC;IACxC,CAAC,MACI;MACD/yQ,OAAO,CAAC9uC,WAAW,CAAC6hT,eAAe,CAAC;MACpC,IAAIt/S,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,IAAI,IAAI,EAC9CjD,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,CAAC9F,SAAS,GAAG,YAAY,GAAGqvI,YAAY;IACtF;IAEA,IAAID,YAAY,KAAK,GAAG,IAAIA,YAAY,KAAK,KAAK,EAAE;MAChDhgG,OAAO,CAAC9uC,WAAW,CAAC8hT,qBAAqB,CAAC;MAC1ChzQ,OAAO,CAACn9B,WAAW,CAACmwS,qBAAqB,CAAC;IAC9C,CAAC,MACI;MACDhzQ,OAAO,CAAC9uC,WAAW,CAAC8hT,qBAAqB,CAAC;MAC1C,IAAIv/S,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC,IAAI,IAAI,EACxDjD,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC,CAAC9F,SAAS,GAAGiR,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,GAAG,gBAAgB,GAAGi+H,YAAY,GAAG,gBAAgB,GAAGA,YAAY;IACnL;IAEA,IAAIu2K,gBAAgB,KAAK,GAAG,IAAIA,gBAAgB,KAAK,KAAK,EAAE;MACxDv2Q,OAAO,CAAC9uC,WAAW,CAAC+hT,mBAAmB,CAAC;MACxCjzQ,OAAO,CAACn9B,WAAW,CAACowS,mBAAmB,CAAC;IAC5C,CAAC,MACI;MACDjzQ,OAAO,CAAC9uC,WAAW,CAAC+hT,mBAAmB,CAAC;MACxC,IAAIx/S,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAClDjD,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,CAAC9F,SAAS,GAAG,iBAAiB,GAAG2lT,gBAAgB;IACnG;IACA,IAAI10S,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC5C,IAAIy0S,aAAa,KAAK,GAAG,IAAIA,aAAa,KAAK,KAAK,EAAE;QAClDx2Q,OAAO,CAAC9uC,WAAW,CAACgiT,gBAAgB,CAAC;QACrClzQ,OAAO,CAACn9B,WAAW,CAACqwS,gBAAgB,CAAC;MACzC,CAAC,MACI;QACDlzQ,OAAO,CAAC9uC,WAAW,CAACgiT,gBAAgB,CAAC;QACrC,IAAIz/S,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC,IAAI,IAAI,EAC/CjD,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC,CAAC9F,SAAS,GAAG,aAAa,GAAG4lT,aAAa;MACzF;MAEA,IAAIC,4BAA4B,KAAK,GAAG,IAAIA,4BAA4B,KAAK,KAAK,EAAE;QAChFz2Q,OAAO,CAAC9uC,WAAW,CAACiiT,+BAA+B,CAAC;QACpDnzQ,OAAO,CAACn9B,WAAW,CAACswS,+BAA+B,CAAC;MACxD,CAAC,MACI;QACDnzQ,OAAO,CAAC9uC,WAAW,CAACiiT,+BAA+B,CAAC;QACpD,IAAI1/S,QAAQ,CAACiD,cAAc,CAAC,6BAA6B,CAAC,IAAI,IAAI,EAC9DjD,QAAQ,CAACiD,cAAc,CAAC,6BAA6B,CAAC,CAAC9F,SAAS,GAAG,8BAA8B,GAAG6lT,4BAA4B;MACxI;IACJ;IAEA,IAAIU,uBAAuB,KAAK,EAAE,IAAIC,qBAAqB,KAAK,EAAE,EAAE;MAChEp3Q,OAAO,CAAC9uC,WAAW,CAACkiT,mBAAmB,CAAC;MACxCpzQ,OAAO,CAACn9B,WAAW,CAACuwS,mBAAmB,CAAC;IAC5C,CAAC,MACI;MACDpzQ,OAAO,CAAC9uC,WAAW,CAACkiT,mBAAmB,CAAC;MACxC,IAAI3/S,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAClDjD,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,CAAC9F,SAAS,GAAG,iBAAiB,GAAGumT,uBAAuB,GAAG,KAAK,GAAGC,qBAAqB;IAC1I;IAEA,IAAIC,uBAAuB,KAAK,EAAE,IAAIC,sBAAsB,KAAK,EAAE,EAAE;MACjEt3Q,OAAO,CAAC9uC,WAAW,CAACmiT,mBAAmB,CAAC;MACxCrzQ,OAAO,CAACn9B,WAAW,CAACwwS,mBAAmB,CAAC;IAC5C,CAAC,MACI;MACDrzQ,OAAO,CAAC9uC,WAAW,CAACmiT,mBAAmB,CAAC;MACxC,IAAI5/S,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAClDjD,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,CAAC9F,SAAS,GAAG,iBAAiB,GAAGymT,uBAAuB,GAAG,KAAK,GAAGC,sBAAsB;IAC3I;IAEA,IAAIZ,YAAY,KAAK,GAAG,IAAIA,YAAY,KAAK,KAAK,EAAE;MAChD12Q,OAAO,CAAC9uC,WAAW,CAACmjK,eAAe,CAAC;MACpCr0H,OAAO,CAACn9B,WAAW,CAACwxJ,eAAe,CAAC;IACxC,CAAC,MACI;MACDr0H,OAAO,CAAC9uC,WAAW,CAACmjK,eAAe,CAAC;MACpC,IAAI5gK,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,IAAI,IAAI,EAC9CjD,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,CAAC9F,SAAS,GAAG,YAAY,GAAG8lT,YAAY;IACtF;IAEA,IAAIC,WAAW,KAAK,GAAG,IAAIA,WAAW,KAAK,KAAK,EAAE;MAC9C32Q,OAAO,CAAC9uC,WAAW,CAAC0yM,cAAc,CAAC;MACnC5jK,OAAO,CAACn9B,WAAW,CAAC+gM,cAAc,CAAC;IACvC,CAAC,MACI;MACD5jK,OAAO,CAAC9uC,WAAW,CAAC0yM,cAAc,CAAC;MACnC,IAAInwM,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,IAAI,IAAI,EAC7CjD,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,CAAC9F,SAAS,GAAG,WAAW,GAAG+lT,WAAW;IACnF;IAEA,IAAIC,QAAQ,KAAK,GAAG,IAAIA,QAAQ,KAAK,KAAK,EAAE;MACxC52Q,OAAO,CAAC9uC,WAAW,CAACoiT,WAAW,CAAC;MAChCtzQ,OAAO,CAACn9B,WAAW,CAACywS,WAAW,CAAC;IACpC,CAAC,MACI;MACDtzQ,OAAO,CAAC9uC,WAAW,CAACoiT,WAAW,CAAC;MAChC,IAAI7/S,QAAQ,CAACiD,cAAc,CAAC,SAAS,CAAC,IAAI,IAAI,EAC1CjD,QAAQ,CAACiD,cAAc,CAAC,SAAS,CAAC,CAAC9F,SAAS,GAAG,QAAQ,GAAGgmT,QAAQ;IAC1E;IAEA,IAAIC,WAAW,KAAK,GAAG,IAAIA,WAAW,KAAK,KAAK,EAAE;MAC9C72Q,OAAO,CAAC9uC,WAAW,CAACqiT,cAAc,CAAC;MACnCvzQ,OAAO,CAACn9B,WAAW,CAAC0wS,cAAc,CAAC;IACvC,CAAC,MACI;MACDvzQ,OAAO,CAAC9uC,WAAW,CAACqiT,cAAc,CAAC;MACnC,IAAI9/S,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,IAAI,IAAI,EAC7CjD,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC,CAAC9F,SAAS,GAAG,WAAW,GAAGimT,WAAW;IACnF;IAEA,IAAIC,gBAAgB,KAAK,GAAG,IAAIA,gBAAgB,KAAK,KAAK,EAAE;MACxD92Q,OAAO,CAAC9uC,WAAW,CAACsiT,mBAAmB,CAAC;MACxCxzQ,OAAO,CAACn9B,WAAW,CAAC2wS,mBAAmB,CAAC;IAC5C,CAAC,MACI;MACDxzQ,OAAO,CAAC9uC,WAAW,CAACsiT,mBAAmB,CAAC;MACxC,IAAI//S,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAClDjD,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,CAAC9F,SAAS,GAAG,gBAAgB,GAAGkmT,gBAAgB;IAClG;IAEA,IAAIC,UAAU,KAAK,GAAG,IAAIA,UAAU,KAAK,KAAK,EAAE;MAC5C/2Q,OAAO,CAAC9uC,WAAW,CAACuiT,aAAa,CAAC;MAClCzzQ,OAAO,CAACn9B,WAAW,CAAC4wS,aAAa,CAAC;IACtC,CAAC,MACI;MACDzzQ,OAAO,CAAC9uC,WAAW,CAACuiT,aAAa,CAAC;MAClC,IAAIhgT,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,IAAI,IAAI,EAC5CjD,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAAC9F,SAAS,GAAG,UAAU,GAAGmmT,UAAU;IAChF;IAEA,IAAIl1S,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC5C,IAAIi1S,eAAe,KAAK,GAAG,IAAIA,eAAe,KAAK,KAAK,EAAE;QACtDh3Q,OAAO,CAAC9uC,WAAW,CAACwiT,kBAAkB,CAAC;QACvC1zQ,OAAO,CAACn9B,WAAW,CAAC6wS,kBAAkB,CAAC;MAC3C,CAAC,MACI;QACD1zQ,OAAO,CAAC9uC,WAAW,CAACwiT,kBAAkB,CAAC;QACvC,IAAIjgT,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC,IAAI,IAAI,EACjDjD,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC,CAAC9F,SAAS,GAAG,eAAe,GAAGomT,eAAe;MAC/F;IACJ;IAEAh3Q,OAAO,CAAC9uC,WAAW,CAACyiT,mBAAmB,CAAC;IACxC,IAAIlgT,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAClDjD,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC,CAAC9F,SAAS,GAAG,iBAAiB,GAAGqmT,gBAAgB;IAE/F,IAAIC,YAAY,KAAK,GAAG,IAAIA,YAAY,KAAK,KAAK,EAAE;MAChDl3Q,OAAO,CAAC9uC,WAAW,CAAC0iT,eAAe,CAAC;MACpC5zQ,OAAO,CAACn9B,WAAW,CAAC+wS,eAAe,CAAC;IACxC,CAAC,MACI;MACD5zQ,OAAO,CAAC9uC,WAAW,CAAC0iT,eAAe,CAAC;MACpC,IAAIngT,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,IAAI,IAAI,EAC9CjD,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,CAAC9F,SAAS,GAAG,aAAa,GAAGsmT,YAAY;IACvF;IACA,OAAOl3Q,OAAO;EAClB;EAEA,SAASkiE,eAAeA,CAAC4zM,UAAU,EAAE2B,mBAAmB,EAAEz3K,YAAY,EAAEu2K,gBAAgB,EAAEC,aAAa,EAAEW,uBAAuB,EAAEC,qBAAqB,EAAEC,uBAAuB,EAAEC,sBAAsB,EACpMZ,YAAY,EAAEC,WAAW,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,gBAAgB,EAAEC,UAAU,EAAEC,eAAe,EAAEC,gBAAgB,EAAEC,YAAY,EAAEn5M,YAAY,EAAE04M,4BAA4B,EAAE;IAC7Kt0M,SAAS,GAAGtuG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,cAAc;MAC1BQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,KAAK,CAAC;MAAC;IAC1D,CAAC,CAAC;IAEF25M,SAAS,GAAG7jT,MAAM,CAACC,KAAK,CAAC;MACrBG,EAAE,EAAE,WAAW;MACfG,IAAI,EAAE,UAAU,GAAG0hT,UAAU;MAC7BvhT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,WAAW,CAAC;MAAC;IAChE,CAAC,CAAC;IACF45M,cAAc,GAAG9jT,MAAM,CAACC,KAAK,CAAC;MAC1BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,WAAW,CAAC;MAAC;IAC/C,CAAC,CAAC;IAEFq1M,WAAW,GAAG/jT,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,YAAY,GAAGqjT,mBAAmB;MACxCljT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,aAAa,CAAC;MAAC;IAClE,CAAC,CAAC;IACF85M,gBAAgB,GAAGhkT,MAAM,CAACC,KAAK,CAAC;MAC5BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,aAAa,CAAC;MAAC;IACjD,CAAC,CAAC;IAEFu1M,qBAAqB,GAAGjkT,MAAM,CAACC,KAAK,CAAC;MACjCG,EAAE,EAAE,uBAAuB;MAC3BG,IAAI,EAAEyN,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,GAAG,gBAAgB,GAAG,gBAAgB,GAAGi+H,YAAY;MACrGzrI,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,uBAAuB,CAAC;MAAC;IAC5E,CAAC,CAAC;IACFg6M,0BAA0B,GAAGlkT,MAAM,CAACC,KAAK,CAAC;MACtCI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,uBAAuB,CAAC;MAAC;IAC3D,CAAC,CAAC;IAEFy1M,eAAe,GAAGnkT,MAAM,CAACC,KAAK,CAAC;MAC3BG,EAAE,EAAE,iBAAiB;MACrBG,IAAI,EAAE,iBAAiB,GAAGmiT,gBAAgB;MAC1ChiT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,iBAAiB,CAAC;MAAC;IACtE,CAAC,CAAC;IACFk6M,oBAAoB,GAAGpkT,MAAM,CAACC,KAAK,CAAC;MAChCI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,iBAAiB,CAAC;MAAC;IACrD,CAAC,CAAC;IAEF21M,YAAY,GAAGrkT,MAAM,CAACC,KAAK,CAAC;MACxBG,EAAE,EAAE,cAAc;MAClBG,IAAI,EAAE,aAAa,GAAGoiT,aAAa;MACnCjiT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,cAAc,CAAC;MAAC;IACnE,CAAC,CAAC;IACFo6M,iBAAiB,GAAGtkT,MAAM,CAACC,KAAK,CAAC;MAC7BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,cAAc,CAAC;MAAC;IAClD,CAAC,CAAC;IAEF61M,2BAA2B,GAAGvkT,MAAM,CAACC,KAAK,CAAC;MACvCG,EAAE,EAAE,6BAA6B;MACjCG,IAAI,EAAE,8BAA8B,GAAGqiT,4BAA4B;MACnEliT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,6BAA6B,CAAC;MAAC;IAClF,CAAC,CAAC;IACFs6M,gCAAgC,GAAGxkT,MAAM,CAACC,KAAK,CAAC;MAC5CI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,6BAA6B,CAAC;MAAC;IACjE,CAAC,CAAC;IAEF+1M,eAAe,GAAGzkT,MAAM,CAACC,KAAK,CAAC;MAC3BG,EAAE,EAAE,iBAAiB;MACrBG,IAAI,EAAE,iBAAiB,GAAG+iT,uBAAuB,GAAG,KAAK,GAAGC,qBAAqB;MACjF7iT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,iBAAiB,CAAC;MAAC;IACtE,CAAC,CAAC;IAEFw6M,eAAe,GAAG1kT,MAAM,CAACC,KAAK,CAAC;MAC3BG,EAAE,EAAE,iBAAiB;MACrBG,IAAI,EAAE,iBAAiB,GAAGijT,uBAAuB,GAAG,KAAK,GAAGC,sBAAsB;MAClF/iT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,iBAAiB,CAAC;MAAC;IACtE,CAAC,CAAC;IAEF45D,WAAW,GAAG9jK,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,YAAY,GAAGsiT,YAAY;MACjCniT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,aAAa,CAAC;MAAC;IAClE,CAAC,CAAC;IACFs/L,gBAAgB,GAAGxpS,MAAM,CAACC,KAAK,CAAC;MAC5BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,aAAa,CAAC;MAAC;IACjD,CAAC,CAAC;IAEF2nG,UAAU,GAAGr2M,MAAM,CAACC,KAAK,CAAC;MACtBG,EAAE,EAAE,YAAY;MAChBG,IAAI,EAAE,WAAW,GAAGuiT,WAAW;MAC/BpiT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,YAAY,CAAC;MAAC;IACjE,CAAC,CAAC;IACFosG,eAAe,GAAGt2M,MAAM,CAACC,KAAK,CAAC;MAC3BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,YAAY,CAAC;MAAC;IAChD,CAAC,CAAC;IAEFi2M,OAAO,GAAG3kT,MAAM,CAACC,KAAK,CAAC;MACnBG,EAAE,EAAE,SAAS;MACbG,IAAI,EAAE,QAAQ,GAAGwiT,QAAQ;MACzBriT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,SAAS,CAAC;MAAC;IAC9D,CAAC,CAAC;IACF06M,YAAY,GAAG5kT,MAAM,CAACC,KAAK,CAAC;MACxBI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,SAAS,CAAC;MAAC;IAC7C,CAAC,CAAC;IAEFm2M,UAAU,GAAG7kT,MAAM,CAACC,KAAK,CAAC;MACtBG,EAAE,EAAE,YAAY;MAChBG,IAAI,EAAE,WAAW,GAAGyiT,WAAW;MAC/BtiT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,YAAY,CAAC;MAAC;IACjE,CAAC,CAAC;IACF46M,eAAe,GAAG9kT,MAAM,CAACC,KAAK,CAAC;MAC3BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,YAAY,CAAC;MAAC;IAChD,CAAC,CAAC;IAEFq2M,eAAe,GAAG/kT,MAAM,CAACC,KAAK,CAAC;MAC3BG,EAAE,EAAE,iBAAiB;MACrBG,IAAI,EAAE,gBAAgB,GAAG0iT,gBAAgB;MACzCviT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,iBAAiB,CAAC;MAAC;IACtE,CAAC,CAAC;IACF86M,oBAAoB,GAAGhlT,MAAM,CAACC,KAAK,CAAC;MAChCI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,iBAAiB,CAAC;MAAC;IACrD,CAAC,CAAC;IAEFu2M,cAAc,GAAGjlT,MAAM,CAACC,KAAK,CAAC;MAC1BG,EAAE,EAAE,gBAAgB;MACpBG,IAAI,EAAE,eAAe,GAAG4iT,eAAe;MACvCziT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,gBAAgB,CAAC;MAAC;IACrE,CAAC,CAAC;IACFg7M,mBAAmB,GAAGllT,MAAM,CAACC,KAAK,CAAC;MAC/BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,gBAAgB,CAAC;MAAC;IACpD,CAAC,CAAC;IAEFy2M,SAAS,GAAGnlT,MAAM,CAACC,KAAK,CAAC;MACrBG,EAAE,EAAE,WAAW;MACfG,IAAI,EAAE,UAAU,GAAG2iT,UAAU;MAC7BxiT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,WAAW,CAAC;MAAC;IAChE,CAAC,CAAC;IACFk7M,cAAc,GAAGplT,MAAM,CAACC,KAAK,CAAC;MAC1BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,WAAW,CAAC;MAAC;IAC/C,CAAC,CAAC;IAGF22M,eAAe,GAAGrlT,MAAM,CAACC,KAAK,CAAC;MAC3BG,EAAE,EAAE,iBAAiB;MACrBG,IAAI,EAAE,iBAAiB,GAAG6iT,gBAAgB;MAC1C1iT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,iBAAiB,CAAC;MAAC;IACtE,CAAC,CAAC;IAEFo7M,WAAW,GAAGtlT,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,aAAa,GAAG8iT,YAAY;MAClC3iT,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,EAAE,aAAa,CAAC;MAAC;IAClE,CAAC,CAAC;IACFq7M,gBAAgB,GAAGvlT,MAAM,CAACC,KAAK,CAAC;MAC5BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,aAAa,CAAC;MAAC;IACjD,CAAC,CAAC;IAEFviE,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvCgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IACtCwvC,OAAO,CAAC9uC,WAAW,CAACixG,SAAS,CAAC;IAE9B2wM,aAAa,GAAGr/S,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C8+S,aAAa,CAACxiT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACrDsiT,aAAa,CAAC5hT,WAAW,CAACwmT,SAAS,CAAC;IACpC5E,aAAa,CAAC5hT,WAAW,CAACymT,cAAc,CAAC;IACzC33Q,OAAO,CAAC9uC,WAAW,CAAC4hT,aAAa,CAAC;IAElCC,eAAe,GAAGt/S,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/C++S,eAAe,CAACziT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvDuiT,eAAe,CAAC7hT,WAAW,CAAC0mT,WAAW,CAAC;IACxC7E,eAAe,CAAC7hT,WAAW,CAAC2mT,gBAAgB,CAAC;IAC7C73Q,OAAO,CAAC9uC,WAAW,CAAC6hT,eAAe,CAAC;IAEpCC,qBAAqB,GAAGv/S,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDg/S,qBAAqB,CAAC1iT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC7DwiT,qBAAqB,CAAC9hT,WAAW,CAAC4mT,qBAAqB,CAAC;IACxD9E,qBAAqB,CAAC9hT,WAAW,CAAC6mT,0BAA0B,CAAC;IAC7D/3Q,OAAO,CAAC9uC,WAAW,CAAC8hT,qBAAqB,CAAC;IAE1CC,mBAAmB,GAAGx/S,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDi/S,mBAAmB,CAAC3iT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC3DyiT,mBAAmB,CAAC/hT,WAAW,CAAC8mT,eAAe,CAAC;IAChD/E,mBAAmB,CAAC/hT,WAAW,CAAC+mT,oBAAoB,CAAC;IACrDj4Q,OAAO,CAAC9uC,WAAW,CAAC+hT,mBAAmB,CAAC;IAGxCC,gBAAgB,GAAGz/S,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChDk/S,gBAAgB,CAAC5iT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACxD0iT,gBAAgB,CAAChiT,WAAW,CAACgnT,YAAY,CAAC;IAC1ChF,gBAAgB,CAAChiT,WAAW,CAACinT,iBAAiB,CAAC;IAC/C,IAAIt2S,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC5Ci+B,OAAO,CAAC9uC,WAAW,CAACgiT,gBAAgB,CAAC;IACzC;IAEAC,+BAA+B,GAAG1/S,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/Dm/S,+BAA+B,CAAC7iT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvE2iT,+BAA+B,CAACjiT,WAAW,CAACknT,2BAA2B,CAAC;IACxEjF,+BAA+B,CAACjiT,WAAW,CAACmnT,gCAAgC,CAAC;IAC7E,IAAIx2S,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC5Ci+B,OAAO,CAAC9uC,WAAW,CAACiiT,+BAA+B,CAAC;IACxD;IAEAC,mBAAmB,GAAG3/S,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDo/S,mBAAmB,CAAC9iT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC3D4iT,mBAAmB,CAACliT,WAAW,CAAConT,eAAe,CAAC;IAChDt4Q,OAAO,CAAC9uC,WAAW,CAACkiT,mBAAmB,CAAC;IAExCC,mBAAmB,GAAG5/S,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDq/S,mBAAmB,CAAC/iT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC3D6iT,mBAAmB,CAACniT,WAAW,CAACqnT,eAAe,CAAC;IAChDv4Q,OAAO,CAAC9uC,WAAW,CAACmiT,mBAAmB,CAAC;IAExCh/I,eAAe,GAAG5gK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CqgK,eAAe,CAAC/jK,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvD6jK,eAAe,CAACnjK,WAAW,CAACymK,WAAW,CAAC;IACxCtD,eAAe,CAACnjK,WAAW,CAACmsS,gBAAgB,CAAC;IAC7Cr9P,OAAO,CAAC9uC,WAAW,CAACmjK,eAAe,CAAC;IAGpCuvC,cAAc,GAAGnwM,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9C4vM,cAAc,CAACtzM,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACtDozM,cAAc,CAAC1yM,WAAW,CAACg5M,UAAU,CAAC;IACtCtG,cAAc,CAAC1yM,WAAW,CAACi5M,eAAe,CAAC;IAC3CnqK,OAAO,CAAC9uC,WAAW,CAAC0yM,cAAc,CAAC;IAEnC0vG,WAAW,GAAG7/S,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3Cs/S,WAAW,CAAChjT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACnD8iT,WAAW,CAACpiT,WAAW,CAACsnT,OAAO,CAAC;IAChClF,WAAW,CAACpiT,WAAW,CAACunT,YAAY,CAAC;IACrCz4Q,OAAO,CAAC9uC,WAAW,CAACoiT,WAAW,CAAC;IAEhCC,cAAc,GAAG9/S,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9Cu/S,cAAc,CAACjjT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACtD+iT,cAAc,CAACriT,WAAW,CAACwnT,UAAU,CAAC;IACtCnF,cAAc,CAACriT,WAAW,CAACynT,eAAe,CAAC;IAC3C34Q,OAAO,CAAC9uC,WAAW,CAACqiT,cAAc,CAAC;IAEnCC,mBAAmB,GAAG//S,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDw/S,mBAAmB,CAACljT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC3DgjT,mBAAmB,CAACtiT,WAAW,CAAC0nT,eAAe,CAAC;IAChDpF,mBAAmB,CAACtiT,WAAW,CAAC2nT,oBAAoB,CAAC;IACrD74Q,OAAO,CAAC9uC,WAAW,CAACsiT,mBAAmB,CAAC;IAExCC,aAAa,GAAGhgT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7Cy/S,aAAa,CAACnjT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACrDijT,aAAa,CAACviT,WAAW,CAAC8nT,SAAS,CAAC;IACpCvF,aAAa,CAACviT,WAAW,CAAC+nT,cAAc,CAAC;IACzCj5Q,OAAO,CAAC9uC,WAAW,CAACuiT,aAAa,CAAC;IAGlCC,kBAAkB,GAAGjgT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClD0/S,kBAAkB,CAACpjT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC1DkjT,kBAAkB,CAACxiT,WAAW,CAAC4nT,cAAc,CAAC;IAC9CpF,kBAAkB,CAACxiT,WAAW,CAAC6nT,mBAAmB,CAAC;IACnD,IAAIl3S,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC5Ci+B,OAAO,CAAC9uC,WAAW,CAACwiT,kBAAkB,CAAC;IAC3C;IAEAC,mBAAmB,GAAGlgT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnD2/S,mBAAmB,CAACrjT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAC3DmjT,mBAAmB,CAACziT,WAAW,CAACgoT,eAAe,CAAC;IAChDl5Q,OAAO,CAAC9uC,WAAW,CAACyiT,mBAAmB,CAAC;IAExCC,eAAe,GAAGngT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/C4/S,eAAe,CAACtjT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvDojT,eAAe,CAAC1iT,WAAW,CAACioT,WAAW,CAAC;IACxCvF,eAAe,CAAC1iT,WAAW,CAACkoT,gBAAgB,CAAC;IAC7Cp5Q,OAAO,CAAC9uC,WAAW,CAAC0iT,eAAe,CAAC;IAEpC,OAAO5zQ,OAAO;EAClB;EAEA,SAASuiE,WAAWA,CAACA,WAAW,EAAE;IAE9B,IAAIA,WAAW,IAAI,WAAW,EAAE;MAC5BxE,YAAY,CAAC25B,QAAQ,GAAG,GAAG;MAC3B,IAAIy5K,eAAe,IAAIp5S,SAAS,EAAE;QAC9Bo5S,eAAe,CAACjpS,UAAU,CAAC7S,KAAK,GAAG,KAAK;QACxC,IAAI87S,eAAe,CAACjpS,UAAU,CAACnU,OAAO,CAACo9S,eAAe,CAACjpS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,EACzFo5S,eAAe,CAACjpS,UAAU,CAACnU,OAAO,CAACo9S,eAAe,CAACjpS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;MACtG;IAEJ;IACA,IAAIsqG,WAAW,IAAI,aAAa,EAAE;MAC9BxE,YAAY,CAACpB,QAAQ,GAAG,GAAG;MAC3By0M,gBAAgB,CAAClpS,UAAU,CAAC7S,KAAK,GAAG,KAAK;MACzC,IAAI+7S,gBAAgB,CAAClpS,UAAU,CAACnU,OAAO,CAACq9S,gBAAgB,CAAClpS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,EAC3Fq5S,gBAAgB,CAAClpS,UAAU,CAACnU,OAAO,CAACq9S,gBAAgB,CAAClpS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IACxG;IACA,IAAIsqG,WAAW,IAAI,uBAAuB,EAAE;MACxCxE,YAAY,CAAC45B,WAAW,GAAG,GAAG;MAC9B05K,mBAAmB,CAACnpS,UAAU,CAAC7S,KAAK,GAAG,KAAK;MAC5C,IAAIg8S,mBAAmB,CAACnpS,UAAU,CAACnU,OAAO,CAACs9S,mBAAmB,CAACnpS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,EACjGs5S,mBAAmB,CAACnpS,UAAU,CAACnU,OAAO,CAACs9S,mBAAmB,CAACnpS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IAC9G;IACA,IAAIsqG,WAAW,IAAI,iBAAiB,EAAE;MAClCxE,YAAY,CAACg6B,YAAY,GAAG,GAAG;MAC/Bu5K,oBAAoB,CAACppS,UAAU,CAAC7S,KAAK,GAAG,KAAK;MAC7C,IAAIi8S,oBAAoB,CAACppS,UAAU,CAACnU,OAAO,CAACu9S,oBAAoB,CAACppS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,EACnGu5S,oBAAoB,CAACppS,UAAU,CAACnU,OAAO,CAACu9S,oBAAoB,CAACppS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IAChH;IAEA,IAAIsqG,WAAW,IAAI,cAAc,EAAE;MAC/BxE,YAAY,CAACktB,SAAS,GAAG,GAAG;MAC5BsmL,iBAAiB,CAACrpS,UAAU,CAAC7S,KAAK,GAAG,KAAK;MAC1C,IAAIk8S,iBAAiB,CAACrpS,UAAU,CAACnU,OAAO,CAACw9S,iBAAiB,CAACrpS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,EAC7Fw5S,iBAAiB,CAACrpS,UAAU,CAACnU,OAAO,CAACw9S,iBAAiB,CAACrpS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IAC1G;IAEA,IAAIsqG,WAAW,IAAI,6BAA6B,EAAE;MAC9CxE,YAAY,CAAConB,wBAAwB,GAAG,GAAG;MAC3CqtL,gCAAgC,CAACtqS,UAAU,CAAC7S,KAAK,GAAG,KAAK;MACzD,IAAIm9S,gCAAgC,CAACtqS,UAAU,CAACnU,OAAO,CAACy+S,gCAAgC,CAACtqS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,EAC3Hy6S,gCAAgC,CAACtqS,UAAU,CAACnU,OAAO,CAACy+S,gCAAgC,CAACtqS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IACxI;IAEA,IAAIsqG,WAAW,IAAI,aAAa,EAAE;MAC9BxE,YAAY,CAACriG,QAAQ,GAAG,GAAG;MAC3BujJ,gBAAgB,CAAC/2I,UAAU,CAAC7S,KAAK,GAAG,KAAK;MACzC,IAAI4pJ,gBAAgB,CAAC/2I,UAAU,CAACnU,OAAO,CAACkrJ,gBAAgB,CAAC/2I,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,EAC3FknJ,gBAAgB,CAAC/2I,UAAU,CAACnU,OAAO,CAACkrJ,gBAAgB,CAAC/2I,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IACxG;IACA,IAAIsqG,WAAW,IAAI,YAAY,EAAE;MAC7BxE,YAAY,CAACggB,OAAO,GAAG,GAAG;MAC1B0lG,eAAe,CAACv7M,UAAU,CAAC7S,KAAK,GAAG,KAAK;MACxC,IAAIouN,eAAe,CAACv7M,UAAU,CAACnU,OAAO,CAAC0vN,eAAe,CAACv7M,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,EACzF0rN,eAAe,CAACv7M,UAAU,CAACnU,OAAO,CAAC0vN,eAAe,CAACv7M,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IACtG;IACA,IAAIsqG,WAAW,IAAI,SAAS,EAAE;MAC1BxE,YAAY,CAACumB,IAAI,GAAG,GAAG;MACvB+tL,YAAY,CAACnqS,UAAU,CAAC7S,KAAK,GAAG,KAAK;MACrC,IAAIg9S,YAAY,CAACnqS,UAAU,CAACnU,OAAO,CAACs+S,YAAY,CAACnqS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,EACnFs6S,YAAY,CAACnqS,UAAU,CAACnU,OAAO,CAACs+S,YAAY,CAACnqS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IAChG;IACA,IAAIsqG,WAAW,IAAI,YAAY,EAAE;MAC7BxE,YAAY,CAAC2a,OAAO,GAAG,GAAG;MAC1B45L,eAAe,CAACpqS,UAAU,CAAC7S,KAAK,GAAG,KAAK;MACxC,IAAIi9S,eAAe,CAACpqS,UAAU,CAACnU,OAAO,CAACu+S,eAAe,CAACpqS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,EACzFu6S,eAAe,CAACpqS,UAAU,CAACnU,OAAO,CAACu+S,eAAe,CAACpqS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IACtG;IACA,IAAIsqG,WAAW,IAAI,iBAAiB,EAAE;MAClCxE,YAAY,CAACmnB,YAAY,GAAG,GAAG;MAC/BqtL,oBAAoB,CAACrqS,UAAU,CAAC7S,KAAK,GAAG,KAAK;MAC7C,IAAIk9S,oBAAoB,CAACrqS,UAAU,CAACnU,OAAO,CAACw+S,oBAAoB,CAACrqS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,EACnGw6S,oBAAoB,CAACrqS,UAAU,CAACnU,OAAO,CAACw+S,oBAAoB,CAACrqS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IAChH;IACA,IAAIsqG,WAAW,IAAI,WAAW,EAAE;MAC5BxE,YAAY,CAAC65B,MAAM,GAAG,GAAG;MACzB66K,cAAc,CAACvqS,UAAU,CAAC7S,KAAK,GAAG,KAAK;MACvC,IAAIo9S,cAAc,CAACvqS,UAAU,CAACnU,OAAO,CAAC0+S,cAAc,CAACvqS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,EACvF06S,cAAc,CAACvqS,UAAU,CAACnU,OAAO,CAAC0+S,cAAc,CAACvqS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IACpG;IAEA,IAAIsqG,WAAW,IAAI,gBAAgB,EAAE;MACjCxE,YAAY,CAACulB,WAAW,GAAG,GAAG;MAC9BovL,mBAAmB,CAACxqS,UAAU,CAAC7S,KAAK,GAAG,KAAK;MAC5C,IAAIq9S,mBAAmB,CAACxqS,UAAU,CAACnU,OAAO,CAAC2+S,mBAAmB,CAACxqS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,EACjG26S,mBAAmB,CAACxqS,UAAU,CAACnU,OAAO,CAAC2+S,mBAAmB,CAACxqS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IAC9G;IAEA,IAAIsqG,WAAW,IAAI,aAAa,EAAE;MAC9BxE,YAAY,CAACinB,QAAQ,GAAG,GAAG;MAC3B2tL,gBAAgB,CAACzqS,UAAU,CAAC7S,KAAK,GAAG,KAAK;MACzC,IAAIs9S,gBAAgB,CAACzqS,UAAU,CAACnU,OAAO,CAAC4+S,gBAAgB,CAACzqS,UAAU,CAAChS,aAAa,CAAC,IAAI6B,SAAS,EAC3F46S,gBAAgB,CAACzqS,UAAU,CAACnU,OAAO,CAAC4+S,gBAAgB,CAACzqS,UAAU,CAAChS,aAAa,CAAC,CAAC+B,SAAS,GAAG,KAAK;IACxG;IAEAu/J,0BAA0B,CAAC,CAAC;IAC5Bx6B,aAAa,CAACu3K,qBAAqB,CAACx2M,YAAY,CAAC;EACrD;EAEA,SAASpqG,IAAIA,CAAC0lT,oBAAoB,EAAE/1M,MAAM,EAAE;IACxCvF,YAAY,GAAGs7M,oBAAoB;IACnC,IAAIt7M,YAAY,CAACysB,QAAQ,KAAK,GAAG,EAAE;MAC/B0pL,aAAa,GAAG,GAAG;IACvB;IACA,IAAI,CAACrB,uBAAuB,EAAE;MAC1BA,uBAAuB,GAAG;QACtBn3S,QAAQ,EAAE,KAAK;QACfqiH,OAAO,EAAE,KAAK;QACduG,IAAI,EAAE,KAAK;QACX5L,OAAO,EAAE,KAAK;QACdwM,YAAY,EAAE,KAAK;QACnB0S,MAAM,EAAE,KAAK;QACbtU,WAAW,EAAE,KAAK;QAClB0B,QAAQ,EAAE;MACd,CAAC;IACL;IACAmvL,oBAAoB,CAAC,CAAC;IACtB,MAAMmF,eAAe,GAAGlD,uBAAuB,CAAC,CAAC;IACjD,MAAMmD,aAAa,GAAGlD,sBAAsB,CAAC,CAAC;IAC9Ct0P,OAAO,CAACy3P,IAAI,CAAC,CAACF,eAAe,EAAEC,aAAa,CAAC,CAAC,CAACh3L,IAAI,CAAC,MAAM,CAAE,CAAC,CAAC;IAC9D0yL,uBAAuB,CAACl3M,YAAY,CAAC45B,WAAW,CAAC;IACjDu9K,qBAAqB,CAAC,CAAC;IACvBd,8BAA8B,CAAC,CAAC;IAChC7tJ,gBAAgB,CAACjjD,MAAM,CAAC;EAC5B;EAEA,OAAO;IACH3vG,IAAI;IACJuuG,eAAe;IACfq1M,cAAc;IACd//I;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AC32CJ,IAAIx6B,aAAa,GAAI,YAAY;EAC7B;EACA,IAAI11B,aAAa;EACjB;EACA,IAAIuuM,OAAO;EACX,IAAI4D,mBAAmB;EACvB,IAAIC,MAAM;EACV,IAAIC,cAAc;EAClB;EACA,IAAIzoL,WAAW;EACf,IAAI0oL,YAAY;EAChB;EACA,IAAI77M,YAAY;EAChB,IAAI25B,QAAQ;EACZ,IAAIo+K,UAAU;EACd,IAAIv4K,gBAAgB;EACpB,IAAIC,cAAc;EAClB,IAAIq8K,iBAAiB,CAAC,CAAC;EACvB,IAAIC,eAAe,CAAC,CAAC;EACrB,IAAIC,gBAAgB;EACpB;EACA,IAAIC,gBAAgB,GAAG,EAAE;EACzB,IAAIC,SAAS;EACb,IAAIvxR,QAAQ,GAAG,IAAI;EACnB;EACA,IAAIwxR,OAAO,GAAG,EAAE;EAChB,IAAIC,UAAU,GAAG,EAAE;EAEnB,IAAI7uK,oBAAoB;EACxB,IAAI9U,WAAW;EAEf,IAAIg4H,aAAa,GAAG,KAAK;EAEzB,IAAI4rD,aAAa;EACjB;EACA;EACA,SAASC,2BAA2BA,CAAClc,UAAU,EAAE;IAC7C,IAAIhtI,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG91I,QAAQ,CAACxZ,CAAC,CAACC,OAAO,CAAC8qC,yBAAyB,CAAC;IACpF,IAAIlqB,UAAU,GAAG,IAAIlY,IAAI,CAAC,CAAC;IAC3B,IAAI4mJ,YAAY,GAAG,IAAI5mJ,IAAI,CAAC,CAAC;IAC7B,IAAIghH,OAAO;IACX4lC,YAAY,CAAC35G,OAAO,CAAC25G,YAAY,CAACv0I,OAAO,CAAC,CAAC,GAAGs0I,UAAU,CAAC;IACzD,IAAIgtI,UAAU,KAAK,OAAO,EAAE;MACxB3yK,OAAO,GACH4lC,YAAY,CAAC36I,WAAW,CAAC,CAAC,GAC1B,GAAG,GACH,CAAC,GAAG,IAAI26I,YAAY,CAAC16I,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE1W,KAAK,CAAC,CAAC,CAAC,CAAC,GAC/C,GAAG,GACH,CAAC,GAAG,GAAGoxJ,YAAY,CAACz6I,OAAO,CAAC,CAAC,EAAE3W,KAAK,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,MAAM;MACHwrH,OAAO,GACH9oG,UAAU,CAACjM,WAAW,CAAC,CAAC,GACxB,GAAG,GACH,CAAC,GAAG,IAAIiM,UAAU,CAAChM,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE1W,KAAK,CAAC,CAAC,CAAC,CAAC,GAC7C,GAAG,GACH,CAAC,GAAG,GAAG0iB,UAAU,CAAC/L,OAAO,CAAC,CAAC,EAAE3W,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9C;IAEA,OAAOwrH,OAAO;EAClB;;EAEA;EACA;EACA,SAAS8uL,qBAAqBA,CAAA,EAAG;IAC7B,IAAI9gR,UAAU,GAAG/lC,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC;IACxD,IAAI+iC,MAAM,GAAG;MAAEvkC,UAAU,EAAE;IAAK,CAAC;IACjC,IAAII,QAAQ,GAAG,SAAAA,CAAUqkC,YAAY,EAAED,QAAQ,EAAE;MAC7C,KAAK,IAAIE,QAAQ,IAAID,YAAY,EAAE;QAC/B,IAAIC,QAAQ,CAACplC,IAAI,KAAK,YAAY,EAAE;UAChC,IACIolC,QAAQ,CAACvoC,MAAM,CAACC,OAAO,CAACI,aAAa,KAAK,eAAe,IACzDkoC,QAAQ,CAACvoC,MAAM,CAACC,OAAO,CAACI,aAAa,KAAK,kBAAkB,EAC9D;YACEgoC,QAAQ,CAACI,UAAU,CAAC,CAAC;UACzB,CAAC,MAAM,IAAIF,QAAQ,CAACC,aAAa,KAAK,qBAAqB,EAAE;YACzDH,QAAQ,CAACI,UAAU,CAAC,CAAC;YACrBtmC,aAAa,GAAGC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;YAC1D,IAAIF,aAAa,EAAEA,aAAa,CAAClD,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UACjE;UACA;UACA,IAAIqpC,QAAQ,CAACvoC,MAAM,CAACC,OAAO,CAACE,YAAY,KAAK,WAAW,EAAE;YACtD+oT,iBAAiB,CAAC,CAAC;UACvB;QACJ;MACJ;IACJ,CAAC;IACD,MAAM7gR,QAAQ,GAAG,IAAIK,gBAAgB,CAACzkC,QAAQ,CAAC;IAC/CokC,QAAQ,CAACM,OAAO,CAACR,UAAU,EAAEC,MAAM,CAAC;EACxC;EAEA,SAAS+gR,kBAAkBA,CAAA,EAAG;IAC1B;IACA,IAAIl3S,KAAK,GAAG7P,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzCsP,KAAK,CAAChT,SAAS,CAACE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,uBAAuB,CAAC;IACjF8S,KAAK,CAAC5O,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC;IACxC;IACA,IAAI+O,MAAM,GAAGhQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACzCyP,MAAM,CAAC7S,SAAS,GAAG,yBAAyB;IAC5C;IACA,IAAI4sL,OAAO,GAAG;AACtB;AACA;AACA,KAAK;IACD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEI,IAAIgxE,aAAa,EAAE;MACfisD,SAAS,CAAChyS,QAAQ,GAAG,IAAI;MACzB6tQ,YAAY,CAAC7tQ,QAAQ,GAAG,IAAI;IAChC;IAEAnF,KAAK,CAACpS,WAAW,CAACuS,MAAM,CAAC;IACzBH,KAAK,CAACpS,WAAW,CAACupT,SAAS,CAAC;IAC5Bn3S,KAAK,CAACpS,WAAW,CAAColR,YAAY,CAAC;;IAE/B;IACA91Q,cAAc,CAACY,iBAAiB,CAACkC,KAAK,CAAC;IACvC3C,OAAO,CAACjQ,IAAI,CAAC,CAAC;IACde,YAAY,CAACP,WAAW,CAACoS,KAAK,CAAC;EACnC;EAEA,SAASo3S,+BAA+BA,CAAC38M,YAAY,EAAE;IACnDq/B,aAAa,CAAC2C,sBAAsB,CAAChiC,YAAY,EAAE48M,8BAA8B,CAAC;EACtF;EAEA,SAASC,kCAAkCA,CAAC78M,YAAY,EAAE;IACtDq/B,aAAa,CAACiD,4BAA4B,CAACtiC,YAAY,EAAE48M,8BAA8B,CAAC;EAC5F;EAEA,SAASA,8BAA8BA,CAAC5gQ,GAAG,EAAE;IACzCrwB,OAAO,GAAGrO,QAAQ,CAACxZ,CAAC,CAACC,OAAO,CAAC6kD,aAAa,CAAC;IAC3CooM,UAAU,GAAGrlO,OAAO,GAAG,IAAI;IAC3BhB,QAAQ,GAAGwwB,WAAW,CAAC,YAAY;MAC/B,MAAM2hQ,mBAAmB,CAAC9gQ,GAAG,CAAC;IAClC,CAAC,EAAEg1M,UAAU,CAAC;EAClB;EAEA,eAAe8rD,mBAAmBA,CAAC9gQ,GAAG,EAAE;IACpC,MAAMqjF,aAAa,CAACmD,qBAAqB,CAACxmF,GAAG,EAAE+gQ,YAAY,CAAC;EAChE;EAEA,SAASA,YAAYA,CAAC/gQ,GAAG,EAAEygF,gBAAgB,EAAE;IACzC,IAAIzgF,GAAG,CAAC9/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;MACzB;IAAA,CACH,MAAM;MACHmjH,aAAa,CAACqD,kBAAkB,CAACjG,gBAAgB,CAAC;MAClDgC,aAAa,CAAC9zG,QAAQ,CAAC;MACvB8lO,aAAa,GAAG,KAAK;IACzB;EACJ;EAEA,SAASusD,iBAAiBA,CAAA,EAAG;IACzB,IAAI,CAACjF,UAAU,EAAE;MACbD,OAAO,CAAC7kT,OAAO,CAACgqT,MAAM,IAAI;QACtB,IAAIA,MAAM,CAACtjL,QAAQ,IAAI71H,CAAC,CAACC,OAAO,CAACmoC,QAAQ,EAAE;UACvC6rQ,UAAU,GAAGkF,MAAM,CAAClF,UAAU;QAClC;MACJ,CAAC,CAAC;IACN;IAEA,MAAM2B,mBAAmB,GAAG15M,YAAY,CAACkiC,YAAY;IAErD,IAAIk3K,uBAAuB,GAAGhzR,IAAI,CAACmY,iBAAiB,CAACihG,gBAAgB,CAAC;IACtE,IAAI65K,qBAAqB,GAAGjzR,IAAI,CAACmY,iBAAiB,CAACkhG,cAAc,CAAC;IAClE,IAAI65K,uBAAuB,GAAGlzR,IAAI,CAACmY,iBAAiB,CAACu9Q,iBAAiB,CAAC;IACvE,IAAIvC,sBAAsB,GAAGnzR,IAAI,CAACmY,iBAAiB,CAACw9Q,eAAe,CAAC;IAEpE,IAAI7vM,oBAAoB,GAAGx2G,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IACpE,IAAI,CAACu2G,oBAAoB,EAAE;MACvBA,oBAAoB,GAAGx2G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACpDi2G,oBAAoB,CAAC35G,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MACpDy5G,oBAAoB,CAACh2G,EAAE,GAAG,gBAAgB;MAC1CmmT,aAAa,GAAGlJ,SAAS,CAAChvM,eAAe,CAAC4zM,UAAU,EAAE2B,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAEN,uBAAuB,EAAEC,qBAAqB,EAAEC,uBAAuB,EAAEC,sBAAsB,EAC3L,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAEv5M,YAAY,EAAC,KAAK,CAAC;MACrFkM,oBAAoB,CAAC/4G,WAAW,CAACkpT,aAAa,CAAC;MAC/CA,aAAa,GAAGlJ,SAAS,CAACqG,cAAc,CAACzB,UAAU,EAAE2B,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAEN,uBAAuB,EAAEC,qBAAqB,EAAEC,uBAAuB,EAAEC,sBAAsB,EAC1L,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,KAAK,CAAC;MACvErtM,oBAAoB,CAAC/4G,WAAW,CAACkpT,aAAa,CAAC;IACnD;IAEA,OAAOnwM,oBAAoB;EAC/B;EACA,SAASgxM,YAAYA,CAAA,EAAG;IACpB;IACAliN,UAAU,GAAGllG,MAAM,CAACC,KAAK,CAAC;MACtBG,EAAE,EAAE,WAAW;MACfG,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEFskG,WAAW,GAAGrlG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C8kG,WAAW,CAACxoG,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAC3CwoG,YAAY,GAAGvlG,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC9CglG,YAAY,CAACtkG,YAAY,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC5DokG,WAAW,CAAC5nG,WAAW,CAAC6nG,UAAU,CAAC;IACnCD,WAAW,CAAC5nG,WAAW,CAAC8nG,YAAY,CAAC;IAErC,IAAIkiN,UAAU,GAAGrnT,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,UAAU;MAChBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACXoB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB;QACAilT,iBAAiB,CAAC,CAAC;QACnB14S,CAAC,CAACC,OAAO,CAAC+jC,iBAAiB,IAAIo0Q,SAAS,GAAGn9K,OAAO,CAACnpI,IAAI,CAAC,KAAK,CAAC,GAAGkc,IAAI,CAAClc,IAAI,CAAC,KAAK,CAAC;MACrF;IACJ,CAAC,CAAC;IACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA,IAAIwnT,WAAW,GAAG/0J,eAAe,CAACwY,sBAAsB,CAAC,CAAE;MAAExqK,IAAI,EAAE,eAAe;MAAE2pG;IAAY,CAAC,EAAC;MAAE3pG,IAAI,EAAE,iBAAiB;MAAE2pG;IAAY,CAAC,EAAE;MAAE3pG,IAAI,EAAE,sBAAsB;MAAE2pG;IAAY,CAAC,EAAE;MAAE3pG,IAAI,EAAE,gBAAgB;MAAE2pG;IAAY,CAAC,CAAC,CAAC;IAEhOq9M,cAAc,GAAGh1J,eAAe,CAACwY,sBAAsB,CAAC,CAAC;MAAExqK,IAAI,EAAE,+BAA+B;MAAE2pG;IAAa,CAAC,EAAE;MAAE3pG,IAAI,EAAE,iBAAiB;MAAE2pG;IAAY,CAAC,CAAC,CAAC;IAE5J,IAAI/9D,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;;IAElC;IACA;IACA,IAAIqR,CAAC,CAACC,OAAO,CAAC4jC,eAAe,EAAE1F,OAAO,CAAC9uC,WAAW,CAACgqT,UAAU,CAAC;IAC9D,IAAIr5S,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAEi+B,OAAO,CAAC9uC,WAAW,CAACiqT,WAAW,CAAC;IAChF,IAAIt5S,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAEi+B,OAAO,CAAC9uC,WAAW,CAACkqT,cAAc,CAAC;IAChFz4S,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC8uC,OAAO,CAAC;IACrCr9B,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC4nG,WAAW,CAAC;IACzC,MAAMoH,UAAU,GAAG66M,iBAAiB,CAAC,CAAC;IACtCp4S,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACgvG,UAAU,CAAC;EAC5C;;EAEA;EACA;EACA,SAASm7M,iBAAiBA,CAAA,EAAG;IACzB,IAAIzhJ,KAAK,GAAGxoK,KAAK,CAACC,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,YAAY,CAAC;IACzD,IAAI,CAACw7J,KAAK,EAAE;IACZ;IACA,IAAIt7C,UAAU,GAAGltH,KAAK,CAACC,MAAM,CAAC4C,EAAE;IAChC,IAAIqiD,UAAU,GAAGllD,KAAK,CAACC,MAAM,CAACC,OAAO,CAACglD,UAAU;IAChD,IAAI2jQ,SAAS,GAAG7oT,KAAK,CAACC,MAAM,CAACC,OAAO,CAACgqT,SAAS;IAE9C,IAAIz5S,CAAC,CAACC,OAAO,CAAC+jC,iBAAiB,IAAIo0Q,SAAS,KAAK,GAAG,EAAE;MAClD78K,aAAa,CAACO,eAAe,CAACrf,UAAU,EAAE,UAAU3iB,OAAO,EAAE;QACzDmhC,OAAO,CAACnpI,IAAI,CAAC,QAAQ,EAAEgoG,OAAO,EAAE+9M,MAAM,CAAC;MAC3C,CAAC,CAAC;IACN,CAAC,MAAM;MACHt8K,aAAa,CAACO,eAAe,CAACrf,UAAU,EAAE,UAAU3iB,OAAO,EAAE;QACzD9rF,IAAI,CAAClc,IAAI,CAAC,QAAQ,EAAEgoG,OAAO,EAAE+9M,MAAM,CAAC;MACxC,CAAC,CAAC;IACN;EACJ;EAEA,SAAS6B,YAAYA,CAAA,EAAG;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACAn+K,aAAa,CAACC,wBAAwB,CAACt/B,YAAY,EAAEy9M,YAAY,IAAI;MACjE,IAAIA,YAAY,CAACzqT,MAAM,KAAK,CAAC,EAAE;QAC3BopT,UAAU,GAAGqB,YAAY,CAAC,CAAC,CAAC,CAAChxL,QAAQ;MACzC;MAEA5uB,aAAa,CAAC4/M,YAAY,CAAC;MAC3B9B,MAAM,GAAG,CAAC,CAAC;MACXC,cAAc,GAAG,EAAE;MACnB6B,YAAY,CAACxqT,OAAO,CAACyqT,EAAE,IAAI;QACvB,IAAIA,EAAE,CAAC3oL,aAAa,KAAK,GAAG,EAAE;UAC1B,MAAMzsF,WAAW,GAAGo1Q,EAAE,CAAC1oL,WAAW,CAACn+G,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAChD,IAAI0hC,UAAU,GAAGmlQ,EAAE,CAACx4L,UAAU,CAACruG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAC5C,IAAIrb,IAAI,GAAG,GAAGkiT,EAAE,CAACzoL,QAAQ,KAAKyoL,EAAE,CAACxoL,SAAS,EAAE;UAC5C,IAAI,CAACymL,MAAM,CAACrzQ,WAAW,CAAC,EAAE;YACtBqzQ,MAAM,CAACrzQ,WAAW,CAAC,GAAG;cAAE,CAACiQ,UAAU,GAAG/8C;YAAK,CAAC;UAChD;UACAmgT,MAAM,CAACrzQ,WAAW,CAAC,CAACiQ,UAAU,CAAC,GAAG/8C,IAAI;QAC1C;MACJ,CAAC,CAAC;MACFiiT,YAAY,CAACxqT,OAAO,CAACyqT,EAAE,IAAI;QACvB,IAAIC,IAAI,GAAGD,EAAE,CAACvoL,UAAU,CAACt+G,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtC,IAAIgoF,SAAS,GAAG6+M,EAAE,CAACxoL,SAAS;QAC5B,IAAIp2B,QAAQ,GAAG4+M,EAAE,CAACzoL,QAAQ;QAC1B,IAAIz0F,GAAG,GAAG;UAAEtqC,EAAE,EAAEynT,IAAI;UAAEx/M,SAAS,EAAEU,SAAS;UAAEZ,QAAQ,EAAEa;QAAS,CAAC;QAChE88M,cAAc,CAAC96S,IAAI,CAAC0/B,GAAG,CAAC;MAC5B,CAAC,CAAC;IACN,CAAC,CAAC;EACN;EACA,SAASq9D,aAAaA,CAACqF,SAAS,EAAE;IAC9BA,SAAS,GAAG06M,iBAAiB,CAAC16M,SAAS,CAAC;IACxC,IAAI26M,WAAW,GAAG,CAAC,CAAC;IAEpB36M,SAAS,CAACjwG,OAAO,CAAC4W,EAAE,IAAI;MACpB,IAAIxQ,OAAO;MACX,IAAIwQ,EAAE,CAACmrH,WAAW,KAAK,IAAI,EAAE;QACzB37H,OAAO,GAAG,EAAE;MAChB,CAAC,MAAM;QACHA,OAAO,GAAGwQ,EAAE,CAACmrH,WAAW,CAACn+G,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC1C;MACA,IAAI,CAACgnS,WAAW,CAACxkT,OAAO,CAAC,EAAE;QACvBwkT,WAAW,CAACxkT,OAAO,CAAC,GAAG,CAAC;MAC5B;MAEAwkT,WAAW,CAACxkT,OAAO,CAAC,EAAE;IAC1B,CAAC,CAAC;IAEF,IAAIZ,IAAI,GAAGyqG,SAAS,CAACzmG,GAAG,CAACoN,EAAE,IAAI;MAC3B,IAAIi0S,UAAU,GAAG,KAAK;MACtB,IAAIC,kBAAkB,GAAGl0S,EAAE,CAACm0S,cAAc,CAACnnS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACxD,IAAIonS,WAAW,GAAG73R,IAAI,CAACmY,iBAAiB,CAAC10B,EAAE,CAACo0S,WAAW,CAACpnS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACtE,IAAI8vG,SAAS,GAAGvgG,IAAI,CAAC8E,mBAAmB,CAACrhB,EAAE,CAAC88G,SAAS,CAAC;MACtD,IAAIC,OAAO,GAAGxgG,IAAI,CAAC8E,mBAAmB,CAACrhB,EAAE,CAAC+8G,OAAO,CAAC;MAClD,IAAIprH,IAAI,GAAG,GAAGqO,EAAE,CAACorH,QAAQ,KAAKprH,EAAE,CAACqrH,SAAS,EAAE;MAC5C,IAAIgpL,cAAc,GAAG93R,IAAI,CAACmY,iBAAiB,CAACw/Q,kBAAkB,CAAC;MAC/D,IAAItkK,YAAY,GAAG5vI,EAAE,CAACs0S,aAAa;MACnC;MACA,IAAIrgD,UAAU,GAAGj0P,EAAE,CAACkrH,aAAa;MACjC,IAAIxU,UAAU,GAAG12G,EAAE,CAACsrH,UAAU,CAACt+G,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC5C,IAAIulS,UAAU,KAAK,IAAI,EAAE;QACrB,IAAIA,UAAU,CAACj1M,QAAQ,CAACoZ,UAAU,CAAC,EAAEu9L,UAAU,GAAG,IAAI;MAC1D;MACA,IAAIvlQ,UAAU,GAAG1uC,EAAE,CAACq7G,UAAU,CAACruG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC5CqlS,SAAS,GAAGryS,EAAE,CAACqyS,SAAS;MACxB;MACAzjL,WAAW,GAAG5uH,EAAE,CAAC4uH,WAAW;MAE5B0jL,OAAO,CAACr7S,IAAI,CAACy/G,UAAU,CAAC;MAExB,IAAI69L,WAAW;MACf,IAAIC,SAAS,GACT,CAAC5lL,WAAW,IAAIA,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAK,GAAG,GACrD,kCAAkC,GAClC,GAAGniI,KAAK,CAAC,YAAY,CAAC,EAAE;MAClC,IAAIgoT,UAAU,GAAG,IAAI;MAErB,IAAIx6S,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;QAC5Co6S,WAAW,GAAGC,SAAS;MAC3B,CAAC,MAAM;QACHD,WAAW,GAAGE,UAAU;MAC5B;MAEA,OAAO;QACHtzS,MAAM,EAAE,CAACizS,WAAW,EAAEt3L,SAAS,EAAEC,OAAO,EAAEprH,IAAI,EAAE0iT,cAAc,EAAEzkK,YAAY,EAAEqkH,UAAU,CAAC;QACzF5nQ,EAAE,EAAEqqH,UAAU;QACd51G,OAAO,EAAEmzS,UAAU;QACnB3mT,UAAU,EAAE,CACR;UAAEE,GAAG,EAAE,kBAAkB;UAAEC,KAAK,EAAEihD;QAAW,CAAC,EAC9C;UAAElhD,GAAG,EAAE,gBAAgB;UAAEC,KAAK,EAAE4kT;QAAU,CAAC,CAC9C;QACD9xS,OAAO,EAAEg0S,WAAW;QACpBjzS,eAAe,EAAElT,CAAC,IAAI;UAClBA,CAAC,CAAC8I,eAAe,CAAC,CAAC;UACnB,IAAIw9S,WAAW,GAAGtmT,CAAC,CAAC3E,MAAM,CAACkqB,UAAU,CAACjrB,SAAS,CAAC8N,QAAQ,CAAC,YAAY,CAAC;UACtE,IAAI,CAACk+S,WAAW,EAAE;UAClB;UACA,IAAIh+L,UAAU,GAAGtoH,CAAC,CAAC3E,MAAM,CAACkqB,UAAU,CAACtnB,EAAE;UACvC,IAAIsoT,UAAU,GAAG,OAAO;UACxBn/K,aAAa,CAACc,0BAA0B,CAAC5f,UAAU,EAAE,UAAU3iB,OAAO,EAAE;YACpEuvC,eAAe,CAAC,CAAC;YACjB,IAAIvvC,OAAO,CAAC5qG,MAAM,KAAK,CAAC,EAAEs6I,2BAA2B,CAAC1vC,OAAO,CAAC;;YAE9D;UACJ,CAAC,CAAC;QACN,CAAC;QACD/yF,OAAO,EAAEyyS;MACb,CAAC;IACL,CAAC,CAAC;IAEF10S,KAAK,CAAC9V,QAAQ,CAACy2G,aAAa,EAAE9wG,IAAI,CAAC;EACvC;EAEA,SAASyjG,UAAUA,CAAA,EAAG;IAClB,IAAIuiN,kBAAkB,GAAG,EAAE;IAC3B,IAAIC,gBAAgB,GAAG,CACnB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,MAAM,EACN,cAAc,EACd,cAAc,EACd,OAAO,EACP,QAAQ,CACX;IACD,IAAIC,iBAAiB,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,CAAC;IACnH76S,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,GACnCy6S,kBAAkB,GAAGC,gBAAgB,GACrCD,kBAAkB,GAAGE,iBAAkB;IAE9Cp1M,aAAa,GAAG3gG,KAAK,CAAC7S,KAAK,CAAC;MACxB+S,OAAO,EAAE,sBAAsB;MAC/BgB,cAAc,EAAE20S,kBAAkB;MAClCr0S,OAAO,EAAE,CAACquH,WAAW,IAAIA,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAK,GAAG,GAAG,KAAK,GAAG;IACnF,CAAC,CAAC;;IAEF;IACA,MAAMvsH,OAAO,GAAGq9F,aAAa,CAACxtG,gBAAgB,CAAC,aAAa,CAAC;IAC7DmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChD;;IAEA;IACAiO,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACo2G,aAAa,CAAC;;IAE3C;IACA3gG,KAAK,CAACqD,iBAAiB,CAACs9F,aAAa,CAAC;EAC1C;EAEA,SAASq1M,mBAAmBA,CAACjgN,WAAW,EAAE;IACtCA,WAAW,GAAGA,WAAW,CAACpoG,WAAW,CAAC,CAAC;IACvC;IACA;IACAkgK,kBAAkB,GAAG,CAAC93D,WAAW,CAAC;IAClCi9M,cAAc,CAAC3oT,OAAO,CAAC2rG,QAAQ,IAAI;MAC/B,IAAIC,SAAS,GAAGD,QAAQ,CAACT,SAAS,CAAC5nG,WAAW,CAAC,CAAC;MAChD,IAAIuoG,QAAQ,GAAGF,QAAQ,CAACX,QAAQ,CAAC1nG,WAAW,CAAC,CAAC;MAC9C,IAAIwoG,QAAQ,GAAG,GAAGD,QAAQ,KAAKD,SAAS,EAAE;MAC1C,IAAIG,gBAAgB,GAAG,GAAGF,QAAQ,KAAKD,SAAS,EAAE;MAClD,IAAII,WAAW,GAAGF,QAAQ,CAAC7iF,OAAO,CAACyiF,WAAW,CAAC;MAC/C,IAAIO,kBAAkB,GAAGF,gBAAgB,CAAC9iF,OAAO,CAACyiF,WAAW,CAAC;MAC9D,IAAImuB,QAAQ,GAAGp3H,QAAQ,CAACiD,cAAc,CAACimG,QAAQ,CAAC1oG,EAAE,CAAC;MAEnD,IAAI+oG,WAAW,KAAK,CAAC,CAAC,IAAIC,kBAAkB,KAAK,CAAC,CAAC,EAAE;QACjD4tB,QAAQ,CAACv6H,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QACnCikK,kBAAkB,CAAC31J,IAAI,CAAC89F,QAAQ,CAAC1oG,EAAE,CAAC;MACxC,CAAC,MAAM;QACH42H,QAAQ,CAACv6H,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAChC,IAAI4Z,KAAK,GAAGoqJ,kBAAkB,CAACv6I,OAAO,CAAC0iF,QAAQ,CAAC1oG,EAAE,CAAC;QACnD,IAAImW,KAAK,GAAG,CAAC,CAAC,EAAEoqJ,kBAAkB,CAAC30I,MAAM,CAACzV,KAAK,EAAE,CAAC,CAAC;MACvD;IACJ,CAAC,CAAC;EACN;EAEA,SAASmqS,qBAAqBA,CAAChsM,eAAe,EAAE;IAC5CxK,YAAY,GAAGwK,eAAe;IAC9BgzM,YAAY,CAAC,CAAC;EAClB;EAEA,SAAShB,iBAAiBA,CAAA,EAAG;IACzBx8M,YAAY,GAAG,IAAI;IAEnB25B,QAAQ,GAAG,IAAI;IACf6F,gBAAgB,GAAG,IAAI;IACvBC,cAAc,GAAG,IAAI;IACrBq8K,iBAAiB,GAAG,IAAI;IACxBC,eAAe,GAAG,IAAI;EAC1B;EACA;EACA,SAAS6B,iBAAiBA,CAAC16M,SAAS,EAAE;IAClC,IAAI27M,QAAQ,GAAG,EAAE;IACjB;IACA;IACA,IAAI1rL,WAAW,IAAI0oL,YAAY,EAAE;MAC7B,KAAK,IAAIiD,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAG57M,SAAS,CAAClwG,MAAM,EAAE8rT,GAAG,EAAE,EAAE;QAC7C,KAAK,IAAIC,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAGrD,mBAAmB,CAAC1oT,MAAM,EAAE+rT,IAAI,EAAE,EAAE;UAC1D,IACIrD,mBAAmB,CAACqD,IAAI,CAAC,CAAC7oT,EAAE,CAACgnC,WAAW,CAAC,CAAC,KAAKgmE,SAAS,CAAC47M,GAAG,CAAC,CAAC55L,UAAU,CAACruG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAACqmB,WAAW,CAAC,CAAC,IACpGgmE,SAAS,CAAC47M,GAAG,CAAC,CAACzpL,SAAS,CAACn4F,WAAW,CAAC,CAAC,KAAKp5B,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC/F,WAAW,CAAC,CAAC,EAC3E;YACE2hR,QAAQ,CAAC/9S,IAAI,CAACoiG,SAAS,CAAC47M,GAAG,CAAC,CAAC;YAC7B;UACJ;QACJ;MACJ;MACA,OAAOD,QAAQ;IACnB,CAAC,MAAM,IAAI1rL,WAAW,EAAE;MACpB,KAAK,IAAI2rL,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAG57M,SAAS,CAAClwG,MAAM,EAAE8rT,GAAG,EAAE,EAAE;QAC7C,IAAI57M,SAAS,CAAC47M,GAAG,CAAC,CAACzpL,SAAS,CAACn4F,WAAW,CAAC,CAAC,KAAKp5B,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC/F,WAAW,CAAC,CAAC,EAAE;UAC3E2hR,QAAQ,CAAC/9S,IAAI,CAACoiG,SAAS,CAAC47M,GAAG,CAAC,CAAC;QACjC;MACJ;MACA,OAAOD,QAAQ;IACnB,CAAC,MAAM,IAAIhD,YAAY,EAAE;MACrB,KAAK,IAAIiD,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAG57M,SAAS,CAAClwG,MAAM,EAAE8rT,GAAG,EAAE,EAAE;QAC7C,KAAK,IAAIC,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAGrD,mBAAmB,CAAC1oT,MAAM,EAAE+rT,IAAI,EAAE,EAAE;UAC1D,IAAIrD,mBAAmB,CAACqD,IAAI,CAAC,CAAC7oT,EAAE,KAAKgtG,SAAS,CAAC47M,GAAG,CAAC,CAAC55L,UAAU,CAACruG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1EgoS,QAAQ,CAAC/9S,IAAI,CAACoiG,SAAS,CAAC47M,GAAG,CAAC,CAAC;YAC7B;UACJ;QACJ;MACJ;MACA,OAAOD,QAAQ;IACnB,CAAC,MAAM,OAAO37M,SAAS;EAC3B;EAEA,SAAS87M,kBAAkBA,CAAA,EAAG;IAC1BhkN,UAAU,CAACnlG,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1C0nG,WAAW,CAACxoG,SAAS,CAACmE,MAAM,CAAC,YAAY,CAAC;MAC1CukG,YAAY,CAAC3jG,KAAK,GAAG,EAAE;MACvB2jG,YAAY,CAAC92F,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IACF82F,YAAY,CAACplG,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5C,IAAIA,KAAK,CAAC0oB,OAAO,KAAK,EAAE,EAAE;QACtB6iS,mBAAmB,CAACvrT,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC;MAC3C;IACJ,CAAC,CAAC;EACN;EAEA,SAAS2nT,oBAAoBA,CAAA,EAAG;IAC5B,IAAIt7Q,GAAG,GAAGjuC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;IACpD,IAAIguC,GAAG,EAAEA,GAAG,CAACpxC,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;EAC1C;EAEA,SAASg4G,QAAQA,CAAA,EAAG;IAChB,IAAI,CAACzK,YAAY,CAAC25B,QAAQ,EAAE35B,YAAY,CAAC25B,QAAQ,GAAG71H,CAAC,CAACC,OAAO,CAACmoC,QAAQ;IACtEtnC,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBq4S,YAAY,CAAC,CAAC;IACdhhN,UAAU,CAAC,CAAC;IACZshN,YAAY,CAAC,CAAC;IACdjB,qBAAqB,CAAC,CAAC;IACvB0C,oBAAoB,CAAC,CAAC;IACtBD,kBAAkB,CAAC,CAAC;IACpBtpT,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAAC0jG,KAAK,CAAC,CAAC;IAC5C82M,SAAS,CAAC15I,0BAA0B,CAAC,CAAC;EAC1C;EAEA,SAASyiI,WAAWA,CAAC3kS,QAAQ,EAAE;IAC3B,MAAM2nT,SAAS,GAAG,EAAE;IAEpB,IAAIrD,YAAY,EAAE;MACd,MAAMsD,0BAA0B,GAAG,IAAIn7P,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;QACtEi4H,aAAa,CAAC0D,sBAAsB,CAAC/mF,GAAG,IAAI;UACxC0/P,mBAAmB,GAAG1/P,GAAG;UACzBiI,OAAO,CAAC,SAAS,CAAC;QACtB,CAAC,CAAC;MACN,CAAC,CAAC;MACFi7P,SAAS,CAACp+S,IAAI,CAACq+S,0BAA0B,CAAC;IAC9C;;IAEA;IACA;IACA;IACA,MAAMC,qBAAqB,GAAG,IAAIp7P,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MACjEi4H,aAAa,CAACW,yBAAyB,CAAChkF,GAAG,IAAI;QAC3C87P,OAAO,GAAG97P,GAAG;QACbiI,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;IACFi7P,SAAS,CAACp+S,IAAI,CAACs+S,qBAAqB,CAAC;IAErCp7P,OAAO,CAACmrF,GAAG,CAAC+vK,SAAS,CAAC,CAAC16L,IAAI,CAAC,YAAY;MACpCjtH,QAAQ,CAAC,CAAC;IACd,CAAC,CAAC;EACN;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI,SAAS8nT,YAAYA,CAAC72F,QAAQ,EAAEjwK,UAAU,EAAE+mQ,wBAAwB,EAAEp9K,YAAY,EAAE;IAChF,MAAMmxB,YAAY,GAAG,IAAI5mJ,IAAI,CAAC,CAAC;IAC/B4mJ,YAAY,CAACx6I,OAAO,CAACw6I,YAAY,CAACz6I,OAAO,CAAC,CAAC,GAAG4vM,QAAQ,CAAC;IACvDwzF,gBAAgB,GAAGzjQ,UAAU;IAC7B46E,WAAW,GAAGrvH,CAAC,CAACC,OAAO,CAAC2jC,oBAAoB,GAAG43Q,wBAAwB,GAAG,KAAK;IAC/EzD,YAAY,GAAG/3S,CAAC,CAACC,OAAO,CAAC8jC,4BAA4B;IACrD6gE,+BAA+B,CAAC,oBAAoB,CAAC;IACrD;IACA,IAAI,CAAC82B,gBAAgB,EAAEA,gBAAgB,GAAGp5G,IAAI,CAACoY,qBAAqB,CAAC60H,YAAY,CAAC;IAClF,IAAI,CAAC5zB,cAAc,EAAEA,cAAc,GAAG68K,2BAA2B,CAAC,KAAK,CAAC;IACxER,iBAAiB,GAAG,YAAY;IAChC,IAAI,CAACC,eAAe,EAAEA,eAAe,GAAG31R,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IAC5D8/D,YAAY,GAAG;MACX25B,QAAQ,EAAE71H,CAAC,CAACC,OAAO,CAACmoC,QAAQ;MAC5B6rQ,UAAU,EAAE,EAAE;MACdn5M,QAAQ,EAAEo9M,gBAAgB;MAC1B95K,YAAY,EAAEA,YAAY;MAC1BtI,WAAW,EAAE,GAAG;MAChBI,YAAY,EAAE,GAAG;MACjBwF,gBAAgB,EAAEA,gBAAgB;MAClCC,cAAc,EAAEA,cAAc;MAC9BC,gBAAgB,EAAEo8K,iBAAiB;MACnCn8K,cAAc,EAAEo8K,eAAe;MAC/Bp+S,QAAQ,EAAE,GAAG;MACbqiH,OAAO,EAAE,GAAG;MACZuG,IAAI,EAAE,GAAG;MACT5L,OAAO,EAAE,GAAG;MACZwM,YAAY,EAAE,GAAG;MACjB+F,SAAS,EAAE,GAAG;MACd2M,MAAM,EAAE,GAAG;MACXtU,WAAW,EAAE,GAAG;MAChB0B,QAAQ,EAAE,GAAG;MACbwyL,aAAa,EAAE,EAAE;MACjBryL,wBAAwB,EAAE;IAC9B,CAAC;IAED80K,WAAW,CAACzxL,QAAQ,CAAC;EACzB;EAEA,SAAS80M,mBAAmBA,CAAA,EAAG;IAC3B;IACA,IAAI,CAAC//K,gBAAgB,EAAEA,gBAAgB,GAAG88K,2BAA2B,CAAC,OAAO,CAAC;IAC9E,IAAI,CAAC78K,cAAc,EAAEA,cAAc,GAAG68K,2BAA2B,CAAC,KAAK,CAAC;IACxE,IAAI,CAACR,iBAAiB,EAAEA,iBAAiB,GAAG,YAAY;IACxD,IAAI,CAACC,eAAe,EAAEA,eAAe,GAAG31R,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IAC5D,IAAI,CAAC8/D,YAAY,EAAE;MACfA,YAAY,GAAG;QACX25B,QAAQ,EAAE71H,CAAC,CAACC,OAAO,CAACmoC,QAAQ;QAC5B0yD,QAAQ,EAAE,GAAG;QACbsjC,YAAY,EAAE,KAAK;QACnBtI,WAAW,EAAE,GAAG;QAChBI,YAAY,EAAE,GAAG;QACjBwF,gBAAgB,EAAEA,gBAAgB;QAClCC,cAAc,EAAEA,cAAc;QAC9BC,gBAAgB,EAAEo8K,iBAAiB;QACnCn8K,cAAc,EAAEo8K,eAAe;QAC/Bp+S,QAAQ,EAAE,GAAG;QACbqiH,OAAO,EAAE,GAAG;QACZuG,IAAI,EAAE,GAAG;QACT5L,OAAO,EAAE,GAAG;QACZwM,YAAY,EAAE,GAAG;QACjB+F,SAAS,EAAE,GAAG;QACd2M,MAAM,EAAE,GAAG;QACXtU,WAAW,EAAE,GAAG;QAChBkH,QAAQ,EAAE,GAAG;QACbxF,QAAQ,EAAE,GAAG;QACbwyL,aAAa,EAAE,EAAE;QACjBtmL,WAAW;QACX0oL,YAAY;QACZ75P,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;QACxBmkF,wBAAwB,EAAE;MAC9B,CAAC;IACL;EACJ;EAEA,SAAS+lB,eAAeA,CAAA,EAAG;IACvB,MAAM5nI,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACtB2P,MAAM,EAAE,aAAa;MACrBxP,EAAE,EAAE;IACR,CAAC,CAAC;IAEF45I,gBAAgB,GAAGh6I,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,gBAAgB;MACtBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZN,IAAI,EAAE;MACN;IACJ,CAAC,CAAC;IACF25I,gBAAgB,CAACr5I,IAAI,GAAG,QAAQ;IAChCi3I,mBAAmB,GAAG53I,MAAM,CAACC,KAAK,CAAC;MAC/BS,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZN,IAAI,EAAE;IACV,CAAC,CAAC;IACFu3I,mBAAmB,CAACj3I,IAAI,GAAG,QAAQ;IACnC;IACA,MAAMuvI,OAAO,GAAGlwI,MAAM,CAACC,KAAK,CAAC;MACzBG,EAAE,EAAE,gBAAgB;MACpBG,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZ;QACAkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;MACrB;IACJ,CAAC,CAAC;IACF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEAgoI,oBAAoB,GAAG73I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpDs3I,oBAAoB,CAACh7I,SAAS,CAACE,GAAG,CAAC,sBAAsB,CAAC;IAC1Du9I,iBAAiB,GAAGt6I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD+5I,iBAAiB,CAACz9I,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IACpD,MAAMw9I,oBAAoB,GAAGv6I,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACzDg6I,oBAAoB,CAAC/1I,SAAS,GAAG,0BAA0B;IAC3D;IACA;IACA;;IAEA0iI,eAAe,GAAGlnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACjD2mI,eAAe,CAACnmI,IAAI,GAAG,MAAM;IAC7BmmI,eAAe,CAACrqI,SAAS,CAACE,GAAG,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;IACtEmqI,eAAe,CAAC4iL,QAAQ,GAAGnsT,KAAK,IAAI26I,cAAc,CAAC36I,KAAK,CAACC,MAAM,CAAC;IAEhEo7I,mBAAmB,GAAGh5I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDy4I,mBAAmB,CAACn8I,SAAS,CAACE,GAAG,CAAC,qBAAqB,CAAC;IACxDmhI,cAAc,GAAGl+H,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IAC/C29H,cAAc,CAACj9H,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC;IACnD;IACA;IACA;IACA;IACA;IACA;;IAEA,MAAMsrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhC8S,KAAK,CAACpS,WAAW,CAACo6I,oBAAoB,CAAC;IACvChoI,KAAK,CAACpS,WAAW,CAAC68I,iBAAiB,CAAC;IACpCzqI,KAAK,CAACpS,WAAW,CAACygI,cAAc,CAAC;IACjC;IACA;IACA;;IAEA3xF,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC;IAC5B;IACAzgI,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACrB;EAEA,SAAS+nI,2BAA2BA,CAACmyK,iBAAiB,EAAE;IACpD,MAAM/5S,MAAM,GAAGhQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC3CyP,MAAM,CAACxL,SAAS,GAAG,+BAA+B;IAClDqzI,oBAAoB,CAACp6I,WAAW,CAACuS,MAAM,CAAC;IACxC;;IAEA+5S,iBAAiB,CAACxsT,OAAO,CAAC0d,UAAU,IAAI;MACpC,MAAM68H,aAAa,GAAG93I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACnDu3I,aAAa,CAACj7I,SAAS,CAACE,GAAG,CAAC,2BAA2B,CAAC;MACxD+6I,aAAa,CAAC72I,YAAY,CAAC,IAAI,EAAEga,UAAU,CAACglH,YAAY,CAAC;MACzD6X,aAAa,CAAC72I,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;MAE3C,MAAM+2I,mBAAmB,GAAG53I,MAAM,CAACC,KAAK,CAAC;QACrCS,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,MAAM;QACZN,IAAI,EAAE;QACN;MACJ,CAAC,CAAC;MAEF,MAAMy3I,IAAI,GAAGl4I,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;MACxC23I,IAAI,CAAC1zI,SAAS,GAAGyW,UAAU,CAACs/F,WAAW;MACvC;MACA;MACA;MACAu9B,aAAa,CAACr6I,WAAW,CAACy6I,IAAI,CAAC;MAC/BA,IAAI,CAAC/3I,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;QACpC,MAAMsiI,YAAY,GAAGtiI,KAAK,CAACC,MAAM,CAACuI,aAAa,CAAC3F,EAAE;QAClDmpI,aAAa,CAACoC,sBAAsB,CAAC9L,YAAY,CAAC;MACtD,CAAC,CAAC;MACF4X,oBAAoB,CAACp6I,WAAW,CAACq6I,aAAa,CAAC;IACnD,CAAC,CAAC;EACN;EAEA,SAAS53I,IAAIA,CAAA,EAAG;IACZomT,gBAAgB,GAAG,IAAI;IACvB7oL,WAAW,GAAGrvH,CAAC,CAACC,OAAO,CAAC2jC,oBAAoB;IAC5Cm0Q,YAAY,GAAG/3S,CAAC,CAACC,OAAO,CAAC8jC,4BAA4B;IACrD6gE,+BAA+B,CAAC,oBAAoB,CAAC;IACrD62M,mBAAmB,CAAC,CAAC;IACrBrjB,WAAW,CAACzxL,QAAQ,CAAC;EACzB;EAEA,OAAO;IACH70G,IAAI;IACJypT,YAAY;IACZ7I,qBAAqB;IACrBoH;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AC11BJ,MAAM8B,YAAY,GAAI,YAAY;EAChC;EACA,IAAI9rL,cAAc,EAAEgJ,eAAe,EAAE8R,mBAAmB,EAAEoB,gBAAgB,EAAEpC,mBAAmB;EAC/F,IAAIH,oBAAoB,EAAEyC,iBAAiB;EAC3C;EACA,IAAI2tK,IAAI;EACR,IAAIvwK,mBAAmB,EAAEuyK,qBAAqB;EAE9C,IAAIzD,SAAS;EACb,IAAInjJ,SAAS;EAEb,MAAM6mJ,gBAAgB,GAAG,EAAE;EAE3B,SAASzyK,eAAeA,CAAA,EAAG;IACzB,MAAM5nI,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACxB2P,MAAM,EAAE,aAAa;MACrBxP,EAAE,EAAE;IACN,CAAC,CAAC;IAEF45I,gBAAgB,GAAGh6I,MAAM,CAACC,KAAK,CAAC;MAC9BM,IAAI,EAAE,gBAAgB;MACtBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZN,IAAI,EAAE,KAAK;MACXoB,QAAQ,EAAE62I;IACZ,CAAC,CAAC;IACF0B,gBAAgB,CAACr5I,IAAI,GAAG,QAAQ;IAChCi3I,mBAAmB,GAAG53I,MAAM,CAACC,KAAK,CAAC;MACjCS,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZN,IAAI,EAAE;IACR,CAAC,CAAC;IACFu3I,mBAAmB,CAACj3I,IAAI,GAAG,QAAQ;IACnC43I,gCAAgC,CAACX,mBAAmB,CAAC;IACrD,MAAM1H,OAAO,GAAGlwI,MAAM,CAACC,KAAK,CAAC;MAC3BG,EAAE,EAAE,gBAAgB;MACpBG,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACdo3I,UAAU,CAAC,CAAC;QACZlpI,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;MACnB;IACF,CAAC,CAAC;IACF,MAAM6+B,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MAC7BG,EAAE,EAAE,kBAAkB;MACtBG,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACdkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;MACnB;IACF,CAAC,CAAC;IAEFgoI,oBAAoB,GAAG73I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACpDs3I,oBAAoB,CAACh7I,SAAS,CAACE,GAAG,CAAC,sBAAsB,CAAC;IAC1Du9I,iBAAiB,GAAGt6I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD+5I,iBAAiB,CAACz9I,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IACpD,MAAMw9I,oBAAoB,GAAGv6I,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACzDg6I,oBAAoB,CAAC/1I,SAAS,GAAG,0BAA0B;IAC3D,IAAI6+J,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,IAAI,EAAE;MAC1C/oB,iBAAiB,CAAC78I,WAAW,CAAC88I,oBAAoB,CAAC;IACrD;IAEArT,eAAe,GAAGlnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACjD2mI,eAAe,CAACnmI,IAAI,GAAG,MAAM;IAC7BmmI,eAAe,CAACrqI,SAAS,CAACE,GAAG,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;IACtEmqI,eAAe,CAAC4iL,QAAQ,GAAGnsT,KAAK,IAAI26I,cAAc,CAAC36I,KAAK,CAACC,MAAM,CAAC;IAEhEo7I,mBAAmB,GAAGh5I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDy4I,mBAAmB,CAACn8I,SAAS,CAACE,GAAG,CAAC,qBAAqB,CAAC;IACxDmhI,cAAc,GAAGl+H,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IAC/C29H,cAAc,CAACj9H,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC;IACnD,IAAIoiK,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,IAAI,EAAE;MAC1CnlC,cAAc,CAACzgI,WAAW,CAACu7I,mBAAmB,CAAC;MAC/CA,mBAAmB,CAACv7I,WAAW,CAACu6I,mBAAmB,CAAC;MACpDgB,mBAAmB,CAACv7I,WAAW,CAACypI,eAAe,CAAC;IAClD;IACA;;IAEA,MAAM36F,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhC8S,KAAK,CAACpS,WAAW,CAACo6I,oBAAoB,CAAC;IACvChoI,KAAK,CAACpS,WAAW,CAAC68I,iBAAiB,CAAC;IACpCzqI,KAAK,CAACpS,WAAW,CAACygI,cAAc,CAAC;IACjC,IAAImlC,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,IAAI,EAAE;MAC1CxzJ,KAAK,CAACpS,WAAW,CAAC28I,gBAAgB,CAAC;IACrC;IAEA7tG,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC;IAC5B/jG,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAC9B7+B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACnB;EAEA,SAASyoI,cAAcA,CAAC16I,MAAM,EAAE;IAC9B,MAAM26I,QAAQ,GAAG36I,MAAM,CAAC46I,KAAK,CAAC,CAAC,CAAC,CAACz3I,IAAI;IACrC,MAAM03I,cAAc,GAAG,IAAI9vF,MAAM,CAAC,mBAAmB,CAAC;IACtD,IAAI8vF,cAAc,CAACj1H,IAAI,CAAC+0H,QAAQ,CAAC,EAAE;MACjCrxG,KAAK,CAAC,yDAAyD,CAAC;MAChEtpC,MAAM,CAACgE,KAAK,GAAG,EAAE;MACjB,OAAO,KAAK;IACd;EACF;EAEA,SAAS82I,gBAAgBA,CAAA,EAAG;IAC1B;IACA,MAAMn+H,IAAI,GAAGva,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;IACtD,MAAM41I,cAAc,GAAGt+H,IAAI,CAACu+H,SAAS;IACrC,IAAID,cAAc,IAAIA,cAAc,CAAC54I,aAAa,CAAC,kBAAkB,CAAC,CAAC2B,KAAK,KAAK,EAAE,EAAE;MACnF;IACF;IACA,MAAMm3I,gBAAgB,GAAGC,mBAAmB,CAAC3pI,SAAS,CAAC,IAAI,CAAC;IAC5D0pI,gBAAgB,CAACzrH,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC1rB,KAAK,GAAG,EAAE,CAAC,CAAC;IAC9Dm3I,gBAAgB,CAACzrH,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAACw8R,QAAQ,GAAGnsT,KAAK,IAChE26I,cAAc,CAAC36I,KAAK,CAACC,MAAM,CAAC;IAC9BsgI,cAAc,CAACzgI,WAAW,CAACs7I,gBAAgB,CAAC;IAC5CJ,gCAAgC,CAACI,gBAAgB,CAAC5zG,iBAAiB,CAAC;IACpE6zG,mBAAmB,GAAGD,gBAAgB;EACxC;EAEA,SAASJ,gCAAgCA,CAAC1qG,GAAG,EAAE;IAC7CA,GAAG,CAAC9tC,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACrC,MAAMi7I,SAAS,GAAGj7I,KAAK,CAACC,MAAM,CAACuI,aAAa,CAACmnB,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;MAC7E,IAAIsrH,SAAS,KAAK,EAAE,EAAE;QACpBj7I,KAAK,CAACC,MAAM,CAACuI,aAAa,CAACrJ,MAAM,CAAC,CAAC;MACrC;IACF,CAAC,CAAC;EACJ;EAEA,SAASm8I,UAAUA,CAAA,EAAG;IACpBkxK,wBAAwB,CAAC,CAAC;IAC1B,MAAMxwK,gBAAgB,GAAG35I,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC;IACtE,IAAIszI,gBAAgB,CAACr8I,MAAM,KAAK,CAAC,EAAE;MACjC;IACF;IAEA,IAAIs8I,eAAe,GAAG,EAAE;IACxB,IAAIR,eAAe,GAAG,EAAE;IACxBO,gBAAgB,CAACp8I,OAAO,CAACs8I,YAAY,IAAI;MACvC,IAAIA,YAAY,CAACj4I,KAAK,KAAK,EAAE,EAAE;QAC7B;MACF;MACA,MAAMk4I,UAAU,GAAG,IAAIxrF,OAAO,CAACC,OAAO,IAAI;QACxC,MAAMwrF,aAAa,GAAG,CAAC,CAAC;QACxB,MAAMC,cAAc,GAAGH,YAAY,CAACrB,KAAK,CAACzkI,IAAI,CAAC,CAAC,CAAC;QACjD,MAAMkmI,cAAc,GAAGD,cAAc,CAACl0I,IAAI;QAC1C,MAAM+oH,cAAc,GAAGmrB,cAAc,CAACl0I,IAAI,CAACqb,KAAK,CAAC,GAAG,CAAC,CAAC4D,GAAG,CAAC,CAAC;QAC3Dg1H,aAAa,CAACx/B,WAAW,GAAG0/B,cAAc;QAC1CF,aAAa,CAACh5I,IAAI,GAAG8tH,cAAc;QACnC;QACA,IAAIsrB,QAAQ,CAACH,cAAc,CAAC,CAACV,WAAW,CAAC,CAAC,CAACxqB,IAAI,CAACxoE,GAAG,IAAI;UACrDyzF,aAAa,CAACT,WAAW,GAAGhzF,GAAG;UAC/B8yF,eAAe,CAAChuI,IAAI,CAAC2uI,aAAa,CAAC;UACnCxrF,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFqrF,eAAe,CAACxuI,IAAI,CAAC0uI,UAAU,CAAC;IAClC,CAAC,CAAC;IAEFxrF,OAAO,CAACmrF,GAAG,CAACG,eAAe,CAAC,CAAC9qB,IAAI,CAACxoE,GAAG,IAAI;MACvCoxF,mBAAmB,CAACn6I,OAAO,CAAC6sT,aAAa,IAAI;QAC3CH,qBAAqB,GAAGA,qBAAqB,CAACz+S,MAAM,CAClDyP,UAAU,IAAIA,UAAU,CAACglH,YAAY,KAAKmqL,aAC5C,CAAC;MACH,CAAC,CAAC;MACF;MACA,IAAI5D,SAAS,EAAE;QACbn9K,OAAO,CAACghL,kBAAkB,CAACjxK,eAAe,EAAE6wK,qBAAqB,CAAC;MACpE,CAAC,MAAM;QACL7tS,IAAI,CAACiuS,kBAAkB,CAACjxK,eAAe,EAAE6wK,qBAAqB,CAAC;MACjE;IACF,CAAC,CAAC;IACF;EACF;EAEA,SAAShyK,+BAA+BA,CAACG,iBAAiB,EAAE;IAC1D,MAAMC,mBAAmB,GAAGD,iBAAiB,CAACzxI,YAAY,CAAC,QAAQ,CAAC;IACpE,MAAMs5H,YAAY,GAAGmY,iBAAiB,CAACzxI,YAAY,CAAC,IAAI,CAAC;IACzD,QAAQ0xI,mBAAmB;MACzB,KAAK,OAAO;QACVD,iBAAiB,CAACv7I,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;QACnD26I,mBAAmB,CAACtsI,IAAI,CAAC60H,YAAY,CAAC;QACtCmY,iBAAiB,CAACn3I,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC;QAC9C;MACF,KAAK,MAAM;QACTm3I,iBAAiB,CAACv7I,SAAS,CAACC,MAAM,CAAC,kBAAkB,CAAC;QACtD46I,mBAAmB,GAAGA,mBAAmB,CAAClsI,MAAM,CAACyP,UAAU,IAAIA,UAAU,KAAKglH,YAAY,CAAC;QAC3FmY,iBAAiB,CAACn3I,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;QAC/C;MACF;QACE;IACJ;EACF;EAEA,SAASkpT,wBAAwBA,CAAA,EAAG;IAClCzyK,mBAAmB,CAACn6I,OAAO,CAAC0d,UAAU,IAAI;MACxC0uH,aAAa,CAACmC,wBAAwB,CAACm8K,IAAI,EAAEhtS,UAAU,CAAC;IAC1D,CAAC,CAAC;EACJ;EAEA,SAAS28H,2BAA2BA,CAACmyK,iBAAiB,EAAE;IACtD,MAAM/5S,MAAM,GAAGhQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC3CyP,MAAM,CAACxL,SAAS,GAAG,uBAAuB;IAC1CqzI,oBAAoB,CAACp6I,WAAW,CAACuS,MAAM,CAAC;IACxC;;IAEA+5S,iBAAiB,CAACxsT,OAAO,CAAC0d,UAAU,IAAI;MACtC,MAAM68H,aAAa,GAAG93I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACnDu3I,aAAa,CAACj7I,SAAS,CAACE,GAAG,CAAC,2BAA2B,CAAC;MACxD+6I,aAAa,CAAC72I,YAAY,CAAC,IAAI,EAAEga,UAAU,CAACglH,YAAY,CAAC;MACzD6X,aAAa,CAAC72I,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;MAE3C,MAAM+2I,mBAAmB,GAAG53I,MAAM,CAACC,KAAK,CAAC;QACvCS,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,MAAM;QACZN,IAAI,EAAE,QAAQ;QACdoB,QAAQ,EAAElE,KAAK,IAAIs6I,+BAA+B,CAACt6I,KAAK,CAACC,MAAM,CAACuI,aAAa;MAC/E,CAAC,CAAC;MAEF,MAAM+xI,IAAI,GAAGl4I,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;MACxC23I,IAAI,CAAC1zI,SAAS,GAAGyW,UAAU,CAACs/F,WAAW;MACvC,IAAI8oD,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,IAAI,EAAE;QAC1CvrB,aAAa,CAACr6I,WAAW,CAACu6I,mBAAmB,CAAC;MAChD;MACAF,aAAa,CAACr6I,WAAW,CAACy6I,IAAI,CAAC;MAC/BA,IAAI,CAAC/3I,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;QACtC,MAAMsiI,YAAY,GAAGtiI,KAAK,CAACC,MAAM,CAACuI,aAAa,CAAC3F,EAAE;QAClDmpI,aAAa,CAACoC,sBAAsB,CAAC9L,YAAY,CAAC;MACpD,CAAC,CAAC;MACF4X,oBAAoB,CAACp6I,WAAW,CAACq6I,aAAa,CAAC;IACjD,CAAC,CAAC;EACJ;EAEA,SAASwyK,sBAAsBA,CAAClX,cAAc,EAAE;IAC9CA,cAAc,CAAC71S,OAAO,CAAC0d,UAAU,IAAI;MACnC,MAAM68H,aAAa,GAAG93I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACnDu3I,aAAa,CAACj7I,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;MACrD,IAAIypT,SAAS,EAAE;QACb,MAAMxuK,mBAAmB,GAAG53I,MAAM,CAACC,KAAK,CAAC;UACvCS,KAAK,EAAE,WAAW;UAClBC,IAAI,EAAE,MAAM;UACZN,IAAI,EAAE,QAAQ;UACdoB,QAAQ,EAAElE,KAAK,IAAI;YACjB,MAAMs8I,cAAc,GAClBt8I,KAAK,CAACC,MAAM,CAACuI,aAAa,CAACmnB,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC9oB,SAAS;YACnE6kI,OAAO,CAACkhL,uCAAuC,CAACtwK,cAAc,CAAC;YAC/Dt8I,KAAK,CAACC,MAAM,CAACuI,aAAa,CAACrJ,MAAM,CAAC,CAAC;UACrC;QACF,CAAC,CAAC;MACJ,CAAC,MAAM;QACL,MAAMk7I,mBAAmB,GAAG53I,MAAM,CAACC,KAAK,CAAC;UACvCS,KAAK,EAAE,WAAW;UAClBC,IAAI,EAAE,MAAM;UACZN,IAAI,EAAE,QAAQ;UACdoB,QAAQ,EAAElE,KAAK,IAAI;YACjB,MAAMs8I,cAAc,GAClBt8I,KAAK,CAACC,MAAM,CAACuI,aAAa,CAACmnB,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC9oB,SAAS;YACnE4X,IAAI,CAACmuS,uCAAuC,CAACtwK,cAAc,CAAC;YAC5Dt8I,KAAK,CAACC,MAAM,CAACuI,aAAa,CAACrJ,MAAM,CAAC,CAAC;UACrC;QACF,CAAC,CAAC;MACJ;MAEA,MAAMo7I,IAAI,GAAGl4I,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;MACxC23I,IAAI,CAAC1zI,SAAS,GAAGyW,UAAU,CAACs/F,WAAW;MACvC,IAAI8oD,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,IAAI,EAAE;QAC1CvrB,aAAa,CAACr6I,WAAW,CAACu6I,mBAAmB,CAAC;MAChD;MACAF,aAAa,CAACr6I,WAAW,CAACy6I,IAAI,CAAC;MAC/BoC,iBAAiB,CAAC78I,WAAW,CAACq6I,aAAa,CAAC;IAC9C,CAAC,CAAC;EACJ;EAEA,SAAS53I,IAAIA,CAACkzS,cAAc,EAAE2W,iBAAiB,EAAES,SAAS,EAAsC;IAAA,IAApC3/L,UAAU,GAAAtjH,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,IAAI;IAAA,IAAEkjT,OAAO,GAAAljT,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,KAAK;IAC5Fi/S,SAAS,GAAGiE,OAAO;IACnBxC,IAAI,GAAGp9L,UAAU;IACjBw4C,SAAS,GAAGmnJ,SAAS;IACrB9yK,mBAAmB,GAAG,EAAE;IACxBuyK,qBAAqB,GAAGF,iBAAiB;IACzCtyK,eAAe,CAAC,CAAC;IACjB,IAAI27J,cAAc,CAAC91S,MAAM,KAAK,CAAC,EAAEgtT,sBAAsB,CAAClX,cAAc,CAAC;IACvE,IAAI2W,iBAAiB,CAACzsT,MAAM,KAAK,CAAC,EAAEs6I,2BAA2B,CAACmyK,iBAAiB,CAAC;EACpF;EAEA,OAAO;IACL7pT;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AClSJ,MAAMwqT,eAAe,GAAI,YAAW;EAClC;EACA,IAAIC,cAAc;EAClB,IAAIC,iBAAiB;EACrB,IAAIC,mBAAmB;EACvB,IAAIC,eAAe;EACnB,MAAMC,iBAAiB,GAAG/qT,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;EACrDwqT,iBAAiB,CAACluT,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;EACpD;EACA,IAAIiuT,aAAa,GAAG,CAAC,CAAC;EACtB,IAAIC,gBAAgB;EACpB,IAAIC,WAAW;EACf,IAAIC,eAAe;EACnB,IAAIxlL,cAAc;EAElB,IAAI6gL,SAAS;EAEb,SAASvpT,IAAIA,CAACmf,IAAI,EAAmB;IAAA,IAAjBquS,OAAO,GAAAljT,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,KAAK;IACjCi/S,SAAS,GAAGiE,OAAO;IACnBS,WAAW,GAAG9uS,IAAI;IAClB+uS,eAAe,GAAG,IAAI;IACtBF,gBAAgB,GAAG,IAAI;IACvBF,iBAAiB,CAAC5tT,SAAS,GAAG,EAAE;IAChC,QAAQiuT,WAAW,CAACxiT,GAAG,CAAC,CAAC;MACvB,KAAK,MAAM;QACT+8H,cAAc,GAAG,IAAI;QACrB;MACF,KAAK,OAAO;QACVA,cAAc,GAAG,KAAK;QACtB;MACF;QACEA,cAAc,GAAG,KAAK;QACtB;IACJ;IACA0lL,WAAW,CAAC,CAAC;IACbx6K,OAAO,CAACuE,gBAAgB,CAAC;EAC3B;EAEA,SAASvE,OAAOA,CAACr5G,EAAE,EAAE;IACnB4uG,OAAO,GAAGT,cAAc,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG;IAC7C,MAAM2lL,UAAU,GAAG,IAAIh9P,OAAO,CAAC,UAASC,OAAO,EAAE78C,MAAM,EAAE;MACvDi4H,aAAa,CAACsC,gBAAgB,CAAC7F,OAAO,EAAE9/E,GAAG,IAAI;QAC7CA,GAAG,CAAC/oD,OAAO,CAAC8nI,MAAM,IAAI;UACpB,IAAIv6F,GAAG,GAAG;YAAEu6F,MAAM,EAAEA,MAAM,CAACA,MAAM;YAAED,QAAQ,EAAEC,MAAM,CAACkB;UAAgB,CAAC;UACrEykL,aAAa,CAAC3lL,MAAM,CAACiB,SAAS,CAAC,GAAGx7F,GAAG;QACvC,CAAC,CAAC;QACFyjB,OAAO,CAAC,MAAM,CAAC;MACjB,CAAC,CAAC;IACJ,CAAC,CAAC;IACFD,OAAO,CAACmrF,GAAG,CAAC,CAAC6xK,UAAU,CAAC,CAAC,CAACx8L,IAAI,CAAC,YAAW;MACxCt3F,EAAE,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEA,SAAS6zR,WAAWA,CAAA,EAAG;IACrB,IAAIE,YAAY,GAAGx7S,KAAK,CAAC1P,KAAK,CAAC;MAC7B2P,MAAM,EAAE,SAAS;MACjBO,KAAK,EAAE,IAAI;MACX/P,EAAE,EAAE;IACN,CAAC,CAAC;IAEFmqT,cAAc,GAAG3oT,QAAQ,CAAC3B,KAAK,CAAC;MAC9B8B,KAAK,EAAE,SAAS;MAChBF,UAAU,EAAE;IACd,CAAC,CAAC;IAEF4oT,mBAAmB,GAAGhnT,KAAK,CAACxD,KAAK,CAAC;MAChC8B,KAAK,EAAE,MAAM;MACbpB,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEspT;IACT,CAAC,CAAC;IAEFJ,eAAe,GAAG1qT,MAAM,CAACC,KAAK,CAAC;MAC7BG,EAAE,EAAE,iBAAiB;MACrBG,IAAI,EAAE,QAAQ;MACdI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAE,SAAAA,CAAA,EAAW;QACnB2pT,YAAY,CAAC,CAAC;MAChB;IACF,CAAC,CAAC;IAEF,IAAI75H,OAAO,GAAGvxL,MAAM,CAACC,KAAK,CAAC;MACzBG,EAAE,EAAE,eAAe;MACnBG,IAAI,EAAE,MAAM;MACZI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAE,SAAAA,CAAA,EAAW;QACnB4pT,UAAU,CAAC,CAAC;MACd;IACF,CAAC,CAAC;IAEF,IAAI/8Q,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MAC3BG,EAAE,EAAE,iBAAiB;MACrBG,IAAI,EAAE,QAAQ;MACdI,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAE,SAAAA,CAAA,EAAW;QACnBkO,KAAK,CAAC/S,IAAI,CAACuuT,YAAY,CAAC;MAC1B;IACF,CAAC,CAAC;IAEF,IAAIG,iBAAiB,GAAG1rT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDmrT,iBAAiB,CAAC7uT,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;IACrD2uT,iBAAiB,CAACvuT,SAAS,GAAG;AAClC;AACA;AACA,KAAK;IAED,IAAIovC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACk0L,OAAO,CAAC;IAC5BplJ,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAC9B68Q,YAAY,CAAC9tT,WAAW,CAACiuT,iBAAiB,CAAC;IAC3CH,YAAY,CAAC9tT,WAAW,CAACktT,cAAc,CAAC;IACxCY,YAAY,CAAC9tT,WAAW,CAACstT,iBAAiB,CAAC;IAC3CQ,YAAY,CAAC9tT,WAAW,CAACqtT,eAAe,CAAC;IACzCS,YAAY,CAAC9tT,WAAW,CAACotT,mBAAmB,CAAC;IAC7CU,YAAY,CAAC9tT,WAAW,CAAC8uC,OAAO,CAAC;IAGjCx8B,KAAK,CAAC9S,IAAI,CAACsuT,YAAY,CAAC;IACxB3/I,iBAAiB,CAAC,CAAC;IACnB+/I,iBAAiB,CAAC,CAAC;EACrB;EAEA,SAASA,iBAAiBA,CAAA,EAAG;IAC3B,IAAIC,aAAa,GAAG5rT,QAAQ,CAACiD,cAAc,CAAC,eAAe,CAAC;IAC5D,IAAI4oT,cAAc,GAAG7rT,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;IAC9D,IAAI0iI,cAAc,EAAE;MAClBkmL,cAAc,CAAChmT,OAAO,GAAG,IAAI;IAC/B,CAAC,MAAM+lT,aAAa,CAAC/lT,OAAO,GAAG,IAAI;EACrC;EAEA,SAASuvI,gBAAgBA,CAAA,EAAG;IAC1B,IAAIryI,IAAI,GAAG+b,MAAM,CAAC8B,IAAI,CAACoqS,aAAa,CAAC,CAACjkT,GAAG,CAACpF,GAAG,IAAI;MAC/C,IAAImqT,UAAU,GAAGd,aAAa,CAACrpT,GAAG,CAAC,CAAC0jI,MAAM;MAC1C,IAAI0mL,YAAY,GACdD,UAAU,CAACxuT,MAAM,GAAG,EAAE,GAClBwuT,UAAU,CAACv/S,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,GAClCu/S,UAAU;MAChB,OAAO;QACLlqT,KAAK,EAAED,GAAG;QACVhB,IAAI,EAAE,GAAGqqT,aAAa,CAACrpT,GAAG,CAAC,CAACyjI,QAAQ,MAAM2mL,YAAY;MACxD,CAAC;IACH,CAAC,CAAC;IACFhpT,IAAI,CAAC49D,OAAO,CAAC;MAAE/+D,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC,CAAC,CAAC;;IAExCoC,IAAI,CAACsU,IAAI,CAAC,UAASjU,CAAC,EAAEuU,CAAC,EAAE;MACvB;MACA,IAAIvU,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE;QACnB,OAAO,CAAC,CAAC;MACX;MACA,IAAIyC,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE;QACnB,OAAO,CAAC;MACV;MACA,OAAO,CAAC;IACV,CAAC,CAAC;IACFqB,QAAQ,CAAC5E,QAAQ,CAACutT,cAAc,EAAE5nT,IAAI,CAAC;EACzC;EAEA,SAAS6oK,iBAAiBA,CAAA,EAAG;IAC3B++I,cAAc,CAACxqT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjDstT,gBAAgB,GAAGttT,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACb,KAAK;MACzEmpT,iBAAiB,CAAC5tT,SAAS,GACzB8tT,gBAAgB,KAAK,GAAG,GAAG,EAAE,GAAGD,aAAa,CAACC,gBAAgB,CAAC,CAAC5lL,MAAM;IAC1E,CAAC,CAAC;IACFwlL,mBAAmB,CAAC1qT,gBAAgB,CAAC,SAAS,EAAExC,KAAK,IAAI;MACvDwtT,eAAe,GAAG;QAChBh2R,KAAK,EAAEx3B,KAAK,CAACC,MAAM,CAACo+J,cAAc;QAClC3mI,GAAG,EAAE13B,KAAK,CAACC,MAAM,CAACq+J;MACpB,CAAC;IACH,CAAC,CAAC;IACF4uJ,mBAAmB,CAAC1qT,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACrDutT,WAAW,GAAGvtT,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChCupT,eAAe,GAAG;QAChBh2R,KAAK,EAAEx3B,KAAK,CAACC,MAAM,CAACo+J,cAAc;QAClC3mI,GAAG,EAAE13B,KAAK,CAACC,MAAM,CAACq+J;MACpB,CAAC;IACH,CAAC,CAAC;IAEF,IAAI2vJ,aAAa,GAAG5rT,QAAQ,CAACiD,cAAc,CAAC,eAAe,CAAC;IAC5D2oT,aAAa,CAACzrT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChDgoI,cAAc,GAAG,KAAK;MACtBylL,WAAW,CAACt4S,GAAG,CAAC6yH,cAAc,CAAC;MAC/BqlL,aAAa,GAAG,CAAC,CAAC;MAClBC,gBAAgB,GAAG,IAAI;MACvBF,iBAAiB,CAAC5tT,SAAS,GAAG,EAAE;MAChC0zI,OAAO,CAACuE,gBAAgB,CAAC;IAC3B,CAAC,CAAC;IACF,IAAIy2K,cAAc,GAAG7rT,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;IAC9D4oT,cAAc,CAAC1rT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjDgoI,cAAc,GAAG,IAAI;MACrBylL,WAAW,CAACt4S,GAAG,CAAC6yH,cAAc,CAAC;MAC/BqlL,aAAa,GAAG,CAAC,CAAC;MAClBC,gBAAgB,GAAG,IAAI;MACvBF,iBAAiB,CAAC5tT,SAAS,GAAG,EAAE;MAChC0zI,OAAO,CAACuE,gBAAgB,CAAC;IAC3B,CAAC,CAAC;EACJ;EAEA,SAASo2K,YAAYA,CAAA,EAAG;IACtB,IAAIP,gBAAgB,KAAK,GAAG,EAAE;IAC9B,IAAIe,WAAW,GAAG,EAAE;IACpB,IAAIb,eAAe,KAAK,IAAI,EAAE;MAC5Ba,WAAW,GAAG,CAACd,WAAW,CAAC5tT,MAAM,EAAE4tT,WAAW,CAAC5tT,MAAM,CAAC;IACxD,CAAC,MAAM;MACL0uT,WAAW,GAAG,CAACb,eAAe,CAACh2R,KAAK,EAAEg2R,eAAe,CAAC91R,GAAG,CAAC;IAC5D;IACA,IAAI42R,SAAS,GAAGf,WAAW,CAACzkS,MAAM,CAAC,CAAC,EAAEulS,WAAW,CAAC,CAAC,CAAC,CAAC,CAACvjS,IAAI,CAAC,CAAC;IAC5D,IAAIyjS,UAAU,GAAGlB,aAAa,CAACC,gBAAgB,CAAC,CAAC5lL,MAAM,CAAC58G,IAAI,CAAC,CAAC;IAC9D,IAAI0jS,OAAO,GAAGjB,WAAW,CAACzkS,MAAM,CAACulS,WAAW,CAAC,CAAC,CAAC,CAAC,CAACvjS,IAAI,CAAC,CAAC;IAEvDyiS,WAAW,GAAG,GAAGe,SAAS,IAAIC,UAAU,IAAIC,OAAO,EAAE,CAAC1jS,IAAI,CAAC,CAAC;IAC5DoiS,mBAAmB,CAAC5qT,aAAa,CAC/B,qBACF,CAAC,CAAC2B,KAAK,GAAGspT,WAAW;EACvB;EAEA,SAASO,UAAUA,CAAA,EAAG;IACpBP,WAAW,GAAGL,mBAAmB,CAAC5qT,aAAa,CAAC,qBAAqB,CAAC,CACnE2B,KAAK;IACRmO,KAAK,CAAC/S,IAAI,CAACuuT,YAAY,CAAC;IACxB,IAAIa,WAAW,GAAGpsT,QAAQ,CAACiD,cAAc,CAAC,eAAe,CAAC;IAC1DmpT,WAAW,CAACxqT,KAAK,GAAGspT,WAAW;IAE9B1E,SAAS,GAAIn9K,OAAO,CAACgjL,aAAa,CAACnB,WAAW,CAAC,GAAG9uS,IAAI,CAACiwS,aAAa,CAACnB,WAAW,CAAC;EACpF;EAEA,MAAME,WAAW,GAAI,YAAW;IAC9B,SAASxiT,GAAGA,CAAA,EAAG;MACb,IAAI0kC,IAAI,GAAGl/B,CAAC,CAACC,OAAO,CAACk/B,MAAM;MAC3B,OAAOE,YAAY,CAACC,OAAO,CAAC,QAAQJ,IAAI,oBAAoB,CAAC;IAC/D;IACA,SAASx6B,GAAGA,CAACszH,OAAO,EAAE;MACpB,IAAI94F,IAAI,GAAGl/B,CAAC,CAACC,OAAO,CAACk/B,MAAM;MAC3BE,YAAY,CAACG,OAAO,CAAC,QAAQN,IAAI,oBAAoB,EAAE84F,OAAO,CAAC;IACjE;IACA,OAAO;MACLx9H,GAAG,EAAEA,GAAG;MACRkK,GAAG,EAAEA;IACP,CAAC;EACH,CAAC,CAAE,CAAC;EAEJ,OAAO;IACL7V,IAAI;IACJwuT;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACzPJ,IAAIvtT,OAAO,GAAI,YAAY;EACzB,IAAIiiK,eAAe;EACnB;EACA;EACA,SAAShiK,oBAAoBA,CAACP,MAAM,EAAE;IACpC,IAAIiuG,YAAY,GAAGjuG,MAAM,CAACC,OAAO,CAACC,SAAS;IAC3C,IAAIsqK,YAAY,GAAGpoK,QAAQ,CAACC,aAAa,CAAC,yBAAyB,CAAC;IAEpE,QAAQ4rG,YAAY;MAClB,KAAK,gBAAgB;QAAE;UACrB38F,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;UACvB3oB,GAAG,CAACC,iBAAiB,CAAC,CAAC;UAEvB68J,YAAY,CAAC,CAAC;UAEd5vJ,IAAI,CAACkwS,6BAA6B,CAAC,CAAC;UACpClwS,IAAI,CAACmwS,UAAU,CAAC,CAAC;UAEjBr9S,GAAG,CAACkoB,eAAe,CAAC,CAAC;UAErB;QACF;MACA,KAAK,kBAAkB;QAAE;UACvBloB,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrBnqB,OAAO,CAAC,WAAW,CAAC;UAEpB;QACF;IACF;EACF;EACA;EACA,SAASwhH,eAAeA,CAAC5D,UAAU,EAAEgF,WAAW,EAAE28L,UAAU,EAAE;IAC5D,MAAMC,uBAAuB,GAAG,EAAE;IAClC58L,WAAW,CAACtyH,OAAO,CAAC0d,UAAU,IAAI;MAChC,MAAM2zG,OAAO,GAAG,IAAItgE,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;QAC/Ci4H,aAAa,CAAC0B,qBAAqB,CACjCxgB,UAAU,EACV5vG,UAAU,CAACs/F,WAAW,EACtBt/F,UAAU,CAACla,IAAI,EACfka,UAAU,CAACq+H,WAAW,EACtBhzF,GAAG,IAAI;UACLiI,OAAO,CAAC,OAAO,CAAC;QAClB,CACF,CAAC;MACH,CAAC,CAAC;MACFk+P,uBAAuB,CAACrhT,IAAI,CAACwjH,OAAO,CAAC;IACvC,CAAC,CAAC;IACFtgE,OAAO,CAACmrF,GAAG,CAACgzK,uBAAuB,CAAC,CAAC39L,IAAI,CAAC,MAAM;MAC9Cz9G,WAAW,CAACI,OAAO,CAAC,CAAC;MACrByW,UAAU,CAAC,YAAY;QACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrB,IAAIwvT,UAAU,EAAE;UACdpwS,IAAI,CAAClc,IAAI,CAAC,KAAK,CAAC;QAClB,CAAC,MAAM;UACLqpI,aAAa,CAACrpI,IAAI,CAAC,CAAC;QACtB;MACF,CAAC,EAAE,IAAI,CAAC;IACV,CAAC,CAAC;EACJ;;EAEA;EACA;EACA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAASkvH,SAASA,CAAC+H,QAAQ,EAAEgH,WAAW,EAAE4d,mBAAmB,EAAEywK,UAAU,EAAE;IACzE,IAAIE,iBAAiB,GAAG,EAAE;IAC1B3wK,mBAAmB,CAACx+I,OAAO,CAACovT,GAAG,IAAI;MACjCD,iBAAiB,CAACthT,IAAI,CACpB,IAAIkjD,OAAO,CAAC,UAAU78C,OAAO,EAAEC,MAAM,EAAE;QACrCysH,WAAW,CAACt7E,UAAU,GAAG8pQ,GAAG;QAE5B,IAAIx1L,QAAQ,CAACG,kBAAkB,KAAK,GAAG,EAAE;UACvCH,QAAQ,CAACG,kBAAkB,GAAG,CAAC;QACjC;QAEAqS,aAAa,CAACkB,oBAAoB,CAAC1M,WAAW,EAAE,SAASyuL,kBAAkBA,CAAC1kN,OAAO,EAAE;UACnF,IAAIA,OAAO,CAAC5qG,MAAM,GAAG,CAAC,EAAE;YACtB;YACA;YACA,IAAI0C,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC,EAAE;cAC3Ck0H,QAAQ,CAAC/hF,kBAAkB,GAAG2mG,mBAAmB,CAACz+I,MAAM;cACxD65H,QAAQ,CAACt0E,UAAU,GAAG8pQ,GAAG;cACzBhjL,aAAa,CAACqB,iBAAiB,CAAC7T,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;gBAC3Dz2F,OAAO,CAAC,CAAC;cACX,CAAC,CAAC;cACF;YACF;YACA,IAAIo7S,eAAe,GAAG,EAAE;YACxB3kN,OAAO,CAAC3qG,OAAO,CAAC8gB,CAAC,IAAI;cACnB,IAAI,CAACwuS,eAAe,CAACp7M,QAAQ,CAACpzF,CAAC,CAAC2hH,YAAY,CAAC,EAAE6sL,eAAe,CAACzhT,IAAI,CAACiT,CAAC,CAAC2hH,YAAY,CAAC;YACrF,CAAC,CAAC;YACF,IAAI8sL,WAAW,GAAG,oBAAoBD,eAAe,CAAC9jS,IAAI,CAAC,IAAI,CAAC,EAAE;YAClEsjB,YAAY,CAACygR,WAAW,EAAE,YAAY;cACpC31L,QAAQ,CAAC/hF,kBAAkB,GAAG2mG,mBAAmB,CAACz+I,MAAM;cACxD65H,QAAQ,CAACt0E,UAAU,GAAG8pQ,GAAG;cACzBhjL,aAAa,CAACqB,iBAAiB,CAAC7T,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;gBAC3Dz2F,OAAO,CAAC,CAAC;cACX,CAAC,CAAC;YACJ,CAAC,CAAC;UACJ,CAAC,MAAM;YACL0lH,QAAQ,CAAC/hF,kBAAkB,GAAG2mG,mBAAmB,CAACz+I,MAAM;YACxD65H,QAAQ,CAACt0E,UAAU,GAAG8pQ,GAAG;YACzBhjL,aAAa,CAACqB,iBAAiB,CAAC7T,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;cAC3Dz2F,OAAO,CAAC,CAAC;YACX,CAAC,CAAC;UACJ;QACF,CAAC,CAAC;MACJ,CAAC,CACH,CAAC;IACH,CAAC,CAAC;IAEF68C,OAAO,CAACmrF,GAAG,CAACizK,iBAAiB,CAAC,CAC3B59L,IAAI,CAAC,UAAUxoE,GAAG,EAAE;MACnB11C,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrBirB,UAAU,CAAC,YAAY;QACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrB,IAAIwvT,UAAU,EAAE;UACdpwS,IAAI,CAAClc,IAAI,CAAC,KAAK,CAAC;QAClB,CAAC,MAAM;UACLqpI,aAAa,CAACrpI,IAAI,CAAC,CAAC;QACtB;MACF,CAAC,EAAE,IAAI,CAAC;IACV,CAAC,CAAC,CACD6uH,KAAK,CAAC,UAAUhgH,KAAK,EAAE;MACtBhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB,CAAC,CAAC;EACN;EACA;AACF;AACA;AACA;AACA;AACA;EACE,SAASg+S,UAAUA,CAAC51L,QAAQ,EAAEtH,WAAW,EAAE28L,UAAU,EAAE;IACrDn7S,WAAW,CAACpU,IAAI,CAAC,CAAC;IAClB,MAAMkuC,MAAM,GAAG,IAAIE,SAAS,CAAC,CAAC;IAC9Bs+F,aAAa,CAACmB,kBAAkB,CAAC3T,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;MAC5D;MACA,IAAI95F,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;QAC3C+C,WAAW,CAACI,OAAO,CAAC,CAAC;QACrByW,UAAU,CAAC,YAAY;UACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrB,IAAIwvT,UAAU,EAAE;YACdpwS,IAAI,CAAClc,IAAI,CAAC,KAAK,CAAC;UAClB,CAAC,MAAM;YACLqpI,aAAa,CAACrpI,IAAI,CAAC,CAAC;UACtB;QACF,CAAC,EAAE,IAAI,CAAC;MACV,CAAC,MAAM;QACL,IAAIgoG,OAAO,KAAK,IAAI,EAAE;UACpB,MAAM8kN,eAAe,GAAG7hR,MAAM,CAACG,eAAe,CAAC48D,OAAO,EAAE,UAAU,CAAC;UACnE,MAAM2iB,UAAU,GAAGmiM,eAAe,CAAC1/R,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC7V,UAAU,CAAC,CAAC,CAAC,CAACw1S,SAAS;UAChGx+L,eAAe,CAAC5D,UAAU,EAAEgF,WAAW,EAAE28L,UAAU,CAAC;QACtD,CAAC,MAAM;UACLn7S,WAAW,CAACI,OAAO,CAAC,CAAC;UACrByW,UAAU,CAAC,YAAY;YACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;YACrB,IAAIwvT,UAAU,EAAE;cACdpwS,IAAI,CAAClc,IAAI,CAAC,KAAK,CAAC;YAClB,CAAC,MAAM;cACLqpI,aAAa,CAACrpI,IAAI,CAAC,CAAC;YACtB;UACF,CAAC,EAAE,IAAI,CAAC;QACV;MACF;IACF,CAAC,CAAC;EACJ;EACA;AACF;AACA;AACA;AACA;AACA;EACE,SAAS0vH,QAAQA,CAAC9rH,IAAI,EAAE+rH,WAAW,EAAE;IACnC,IAAIq9L,OAAO,GAAGppT,IAAI,CAACi4I,mBAAmB,CAACz+I,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;IAEhE,IAAI4vT,OAAO,EAAE;MACXvjL,aAAa,CAACQ,cAAc,CAAC,SAASgjL,wBAAwBA,CAACjlN,OAAO,EAAE;QACtEpkG,IAAI,CAACqzH,QAAQ,CAACvkF,WAAW,GAAGs1D,OAAO,CAAC,CAAC,CAAC,CAACt1D,WAAW;QAClDw8E,SAAS,CAACtrH,IAAI,CAACqzH,QAAQ,EAAErzH,IAAI,CAACq6H,WAAW,EAAEr6H,IAAI,CAACi4I,mBAAmB,EAAEj4I,IAAI,CAAC0oT,UAAU,CAAC;MACvF,CAAC,CAAC;IACJ,CAAC,MAAM;MACL1oT,IAAI,CAACi4I,mBAAmB,CAACx+I,OAAO,CAACiD,EAAE,IAAI;QACrCsD,IAAI,CAACq6H,WAAW,CAACt7E,UAAU,GAAGriD,EAAE;QAChCmpI,aAAa,CAACkB,oBAAoB,CAAC/mI,IAAI,CAACq6H,WAAW,EAAE,SAASyuL,kBAAkBA,CAAC1kN,OAAO,EAAE;UACxF,IAAIA,OAAO,CAAC5qG,MAAM,GAAG,CAAC,EAAE;YACtB,IAAIuvT,eAAe,GAAG,EAAE;YACxB3kN,OAAO,CAAC3qG,OAAO,CAAC8gB,CAAC,IAAI;cACnB,IAAI,CAACwuS,eAAe,CAACp7M,QAAQ,CAACpzF,CAAC,CAAC2hH,YAAY,CAAC,EAAE6sL,eAAe,CAACzhT,IAAI,CAACiT,CAAC,CAAC2hH,YAAY,CAAC;YACrF,CAAC,CAAC;YACF,IAAI8sL,WAAW,GAAG,oBAAoBD,eAAe,CAAC9jS,IAAI,CAAC,IAAI,CAAC,EAAE;YAClEsjB,YAAY,CAACygR,WAAW,EAAE,YAAY;cACpChpT,IAAI,CAACqzH,QAAQ,CAACt0E,UAAU,GAAGriD,EAAE;cAC7BusT,UAAU,CAACjpT,IAAI,CAACqzH,QAAQ,EAAEtH,WAAW,EAAE/rH,IAAI,CAAC0oT,UAAU,CAAC;YACzD,CAAC,CAAC;UACJ,CAAC,MAAM;YACL1oT,IAAI,CAACqzH,QAAQ,CAACt0E,UAAU,GAAGriD,EAAE;YAC7BusT,UAAU,CAACjpT,IAAI,CAACqzH,QAAQ,EAAEtH,WAAW,EAAE/rH,IAAI,CAAC0oT,UAAU,CAAC;UACzD;QACF,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EACF;EAEA,SAASngR,YAAYA,CAAC1rC,IAAI,EAAEysT,kBAAkB,EAAE;IAC9C,IAAIv9S,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACtBG,EAAE,EAAE,cAAc;MAClBa,UAAU,EAAE;IACd,CAAC,CAAC;IACF,IAAIgnK,WAAW,GAAGjoK,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,UAAU;MAChBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBurT,kBAAkB,CAAC,CAAC;QACpBr9S,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;MACnB;IACF,CAAC,CAAC;IACF,IAAI08B,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC4qK,WAAW,CAAC;IAEhC,IAAI57H,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAGwD,IAAI;IAC/BkP,KAAK,CAACpS,WAAW,CAACgvC,cAAc,CAAC;IACjC58B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACnB;EACA,SAASw9S,aAAaA,CAAA,EAAG;IACvB,MAAMC,WAAW,GAAGttT,QAAQ,CAACC,aAAa,CAAC,oCAAoC,CAAC;IAChF,IAAIqtT,WAAW,EAAE;MACf,MAAMx9S,MAAM,GAAGw9S,WAAW,CAACnnT,aAAa;MACxC2J,MAAM,CAACV,WAAW,CAACk+S,WAAW,CAAC;MAC/BttT,QAAQ,CAACiD,cAAc,CAAC,4BAA4B,CAAC,CAACnG,MAAM,CAAC,CAAC;IAChE;EACF;;EAEA;EACA,SAASkvK,YAAYA,CAACuhJ,iBAAiB,EAAE;IACvCr+S,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;IACvB;;IAEA,IAAI21R,iBAAiB,GAAGxtT,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACpDitT,iBAAiB,CAACvsT,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACzDusT,iBAAiB,CAACrwT,SAAS,GAAG,0CAA0C;IAExE,IAAI8pB,SAAS,GAAGjnB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0mB,SAAS,CAACpqB,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;IAEpC,IAAI0wT,QAAQ,GAAGrxS,IAAI,CAACsxS,iBAAiB,CAAC,CAAC;IACvC,IAAIC,aAAa,GAAGvxS,IAAI,CAACwxS,kBAAkB,CAAC,CAAC;IAE7C3mS,SAAS,CAACxpB,WAAW,CAAC+vT,iBAAiB,CAAC;IACxCvmS,SAAS,CAACxpB,WAAW,CAACkwT,aAAa,CAAC;IACpC1mS,SAAS,CAACxpB,WAAW,CAACgwT,QAAQ,CAAC;IAC/Bv+S,GAAG,CAACiB,YAAY,CAACX,YAAY,CAACyX,SAAS,EAAE/X,GAAG,CAACiB,YAAY,CAACsH,UAAU,CAAC,CAAC,CAAC,CAAC;IAExE2E,IAAI,CAACyxS,WAAW,CAAC,CAAC,CAAC,CAAC;;IAEpBzxS,IAAI,CAAC4wG,mBAAmB,CAAC,CAAC;IAC1B5wG,IAAI,CAACswG,cAAc,CAAC,CAAC;IACrBl+G,MAAM,CAAC0Z,UAAU,CAACmlS,aAAa,EAAE,IAAI,CAAC;EACxC;EAEA,SAASntT,IAAIA,CAACqtT,iBAAiB,EAAE;IAC/B,IAAIA,iBAAiB,EAAE;MACrBvhJ,YAAY,CAACuhJ,iBAAiB,CAAC;IACjC,CAAC,MAAM;MACLv6M,+BAA+B,CAAC,eAAe,CAAC;MAChDlH,OAAO,CAAC+5D,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC;MAClC/5D,OAAO,CAACoH,cAAc,CAAC,CAAC;IAC1B;EACF;EAEA,OAAO;IACL/0G,oBAAoB;IACpByxH,QAAQ;IACRy9L,aAAa;IACbntT;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC9RJ,IAAI9B,UAAU,GAAI,YAAY;EAC5B,IAAI+rG,iBAAiB;EACrB,IAAIg2D,eAAe;EACnB;EACA;EACA,SAAShiK,oBAAoBA,CAACP,MAAM,EAAE;IACpC,IAAIiuG,YAAY,GAAGjuG,MAAM,CAACC,OAAO,CAACC,SAAS;IAC3C,IAAIsqK,YAAY,GAAGpoK,QAAQ,CAACC,aAAa,CAAC,yBAAyB,CAAC;IACpE,IAAI6jS,eAAe,GAAG9jS,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;IAEhE,QAAQ4rG,YAAY;MAClB,KAAK,gBAAgB;QAAE;UACrBs0D,eAAe,GAAGr0D,OAAO,CAACC,kBAAkB,CAAC,CAAC;UAE9C,IAAIo0D,eAAe,CAAC7iK,MAAM,KAAK,CAAC,EAAE;YAChC4R,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;YACvB3oB,GAAG,CAACC,iBAAiB,CAAC,CAAC;YACvB68J,YAAY,CAAC7L,eAAe,CAAC,CAAC,CAAC,CAAC3/J,EAAE,CAAC;YACnC,IAAI0sT,OAAO,GAAG,KAAK;YACnB7jL,OAAO,CAACijL,6BAA6B,CAACnsJ,eAAe,EAAE+sJ,OAAO,CAAC;YAC/D7jL,OAAO,CAACkjL,UAAU,CAAC,CAAC;YACpBr9S,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACvB,CAAC,MAAM;YACL;;YAEA;YACA,IAAIyhF,kBAAkB,GAAGsnD,eAAe,CAACA,eAAe,CAAC7iK,MAAM,GAAG,CAAC,CAAC,CAACkD,EAAE;YACvE,IAAIgsI,YAAY,GAAG2zB,eAAe,CAACA,eAAe,CAAC7iK,MAAM,GAAG,CAAC,CAAC,CAACg8G,IAAI,CAAC90G,SAAS,CAACoG,OAAO,CACnF,KAAK,EACL,EACF,CAAC;YACD,IAAIkjT,eAAe,GAAGthL,YAAY,CAACrrH,KAAK,CAAC,GAAG,CAAC;YAC7C,IAAI4sS,UAAU,GAAGD,eAAe,CAAC,CAAC,CAAC;YACnC,IAAIE,UAAU,GAAGF,eAAe,CAAC,CAAC,CAAC;;YAEnC;YACA,IAAIG,WAAW,GAAG,IAAI;YACtBA,WAAW,GAAGniN,OAAO,CAACuN,iBAAiB,CAAC;cACtC2+H,EAAE,EAAE+1E,UAAU;cACd91E,EAAE,EAAE+1E,UAAU;cACdxtT,EAAE,EAAEq4G;YACN,CAAC,CAAC;;YAEF;YACA,IAAIsnD,eAAe,CAAC7iK,MAAM,GAAG,CAAC,EAAE;cAC9B6iK,eAAe,CAAC5iK,OAAO,CAAC2rG,QAAQ,IAAI;gBAClC4C,OAAO,CAAC8iD,iCAAiC,CAAC1lD,QAAQ,CAAC1oG,EAAE,CAAC;cACxD,CAAC,CAAC;YACJ;;YAEA;YACAsrG,OAAO,CAACyoI,4BAA4B,CAAC05E,WAAW,CAAC;YACjD9tJ,eAAe,GAAGr0D,OAAO,CAACC,kBAAkB,CAAC,CAAC;;YAE9C;YACA78F,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;YACvB3oB,GAAG,CAACC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACzB;YACA68J,YAAY,CAAC7L,eAAe,CAAC,CAAC,CAAC,CAAC3/J,EAAE,CAAC;YACnC,IAAI0sT,OAAO,GAAG,KAAK;YACnB7jL,OAAO,CAACijL,6BAA6B,CAACnsJ,eAAe,EAAE+sJ,OAAO,CAAC;YAC/D7jL,OAAO,CAACkjL,UAAU,CAAC,CAAC;YACpBr9S,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACvB;UACA;QACF;MACA,KAAK,kBAAkB;QAAE;UACvB;UACAloB,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrBnqB,OAAO,CAAC,WAAW,CAAC;UACpB;QACF;IACF;EACF;EACA;EACA,SAASwhH,eAAeA,CAAC5D,UAAU,EAAEgF,WAAW,EAAE28L,UAAU,EAAE;IAC5D,MAAMC,uBAAuB,GAAG,EAAE;IAClC58L,WAAW,CAACtyH,OAAO,CAAC0d,UAAU,IAAI;MAChC,MAAM2zG,OAAO,GAAG,IAAItgE,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;QAC/Ci4H,aAAa,CAAC0B,qBAAqB,CACjCxgB,UAAU,EACV5vG,UAAU,CAACs/F,WAAW,EACtBt/F,UAAU,CAACla,IAAI,EACfka,UAAU,CAACq+H,WAAW,EACtBhzF,GAAG,IAAI;UACLiI,OAAO,CAAC,OAAO,CAAC;QAClB,CACF,CAAC;MACH,CAAC,CAAC;MACFk+P,uBAAuB,CAACrhT,IAAI,CAACwjH,OAAO,CAAC;IACvC,CAAC,CAAC;IACFtgE,OAAO,CAACmrF,GAAG,CAACgzK,uBAAuB,CAAC,CAAC39L,IAAI,CAAC,MAAM;MAC9Cz9G,WAAW,CAACI,OAAO,CAAC,CAAC;MACrByW,UAAU,CAAC,YAAY;QACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrB,IAAIwvT,UAAU,EAAE;UACdnjL,OAAO,CAACnpI,IAAI,CAAC,KAAK,CAAC;QACrB,CAAC,MAAM;UACLqpI,aAAa,CAACrpI,IAAI,CAAC,CAAC;QACtB;MACF,CAAC,EAAE,IAAI,CAAC;IACV,CAAC,CAAC;EACJ;;EAEA;EACA;EACA,SAASkvH,SAASA,CAAC+H,QAAQ,EAAEgH,WAAW,EAAE4d,mBAAmB,EAAE;IAC7D,IAAI2wK,iBAAiB,GAAG,EAAE;IAC1B3wK,mBAAmB,CAACx+I,OAAO,CAACovT,GAAG,IAAI;MACjCD,iBAAiB,CAACthT,IAAI,CACpB,IAAIkjD,OAAO,CAAC,UAAU78C,OAAO,EAAEC,MAAM,EAAE;QACrCysH,WAAW,CAACt7E,UAAU,GAAG8pQ,GAAG;QAE5BhjL,aAAa,CAACkB,oBAAoB,CAAC1M,WAAW,EAAE,SAASyuL,kBAAkBA,CAAC1kN,OAAO,EAAE;UACnF,IAAIA,OAAO,CAAC5qG,MAAM,GAAG,CAAC,EAAE;YACtB;YACA;YACA,IAAI0C,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC,EAAE;cAC3Ck0H,QAAQ,CAAC/hF,kBAAkB,GAAG2mG,mBAAmB,CAACz+I,MAAM;cACxD65H,QAAQ,CAACt0E,UAAU,GAAG8pQ,GAAG;cACzBhjL,aAAa,CAACqB,iBAAiB,CAAC7T,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;gBAC3Dz2F,OAAO,CAAC,CAAC;cACX,CAAC,CAAC;cACF;YACF;YACA,IAAIo7S,eAAe,GAAG,EAAE;YACxB3kN,OAAO,CAAC3qG,OAAO,CAAC8gB,CAAC,IAAI;cACnB,IAAI,CAACwuS,eAAe,CAACp7M,QAAQ,CAACpzF,CAAC,CAAC2hH,YAAY,CAAC,EAAE6sL,eAAe,CAACzhT,IAAI,CAACiT,CAAC,CAAC2hH,YAAY,CAAC;YACrF,CAAC,CAAC;YACF,IAAI8sL,WAAW,GAAG,oBAAoBD,eAAe,CAAC9jS,IAAI,CAAC,IAAI,CAAC,EAAE;YAClEsjB,YAAY,CAACygR,WAAW,EAAE,YAAY;cACpC31L,QAAQ,CAAC/hF,kBAAkB,GAAG2mG,mBAAmB,CAACz+I,MAAM;cACxD65H,QAAQ,CAACt0E,UAAU,GAAG8pQ,GAAG;cACzBhjL,aAAa,CAACqB,iBAAiB,CAAC7T,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;gBAC3Dz2F,OAAO,CAAC,CAAC;cACX,CAAC,CAAC;YACJ,CAAC,CAAC;UACJ,CAAC,MAAM;YACL0lH,QAAQ,CAAC/hF,kBAAkB,GAAG2mG,mBAAmB,CAACz+I,MAAM;YACxD65H,QAAQ,CAACt0E,UAAU,GAAG8pQ,GAAG;YACzBhjL,aAAa,CAACqB,iBAAiB,CAAC7T,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;cAC3Dz2F,OAAO,CAAC,CAAC;YACX,CAAC,CAAC;UACJ;QACF,CAAC,CAAC;MACJ,CAAC,CACH,CAAC;IACH,CAAC,CAAC;IAEF68C,OAAO,CAACmrF,GAAG,CAACizK,iBAAiB,CAAC,CAC3B59L,IAAI,CAAC,UAAUxoE,GAAG,EAAE;MACnB11C,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrBirB,UAAU,CAAC,YAAY;QACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrB,IAAIwvT,UAAU,EAAE;UACdnjL,OAAO,CAACnpI,IAAI,CAAC,KAAK,CAAC;QACrB,CAAC,MAAM;UACLqpI,aAAa,CAACrpI,IAAI,CAAC,CAAC;QACtB;MACF,CAAC,EAAE,IAAI,CAAC;IACV,CAAC,CAAC,CACD6uH,KAAK,CAAC,UAAUhgH,KAAK,EAAE;MACtBhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB,CAAC,CAAC;EACN;EACA,SAASg+S,UAAUA,CAAC51L,QAAQ,EAAEtH,WAAW,EAAE28L,UAAU,EAAE;IACrDn7S,WAAW,CAACpU,IAAI,CAAC,CAAC;IAClB,MAAMkuC,MAAM,GAAG,IAAIE,SAAS,CAAC,CAAC;IAC9Bs+F,aAAa,CAACmB,kBAAkB,CAAC3T,QAAQ,EAAE,UAAUjvB,OAAO,EAAE;MAC5D;MACA,IAAI95F,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;QAC3C+C,WAAW,CAACI,OAAO,CAAC,CAAC;QACrByW,UAAU,CAAC,YAAY;UACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrB,IAAIwvT,UAAU,EAAE;YACdnjL,OAAO,CAACnpI,IAAI,CAAC,KAAK,CAAC;UACrB,CAAC,MAAM;YACLqpI,aAAa,CAACrpI,IAAI,CAAC,CAAC;UACtB;QACF,CAAC,EAAE,IAAI,CAAC;MACV,CAAC,MAAM;QACL,IAAIgoG,OAAO,KAAK,IAAI,EAAE;UACpB,MAAM8kN,eAAe,GAAG7hR,MAAM,CAACG,eAAe,CAAC48D,OAAO,EAAE,UAAU,CAAC;UACnE,MAAM2iB,UAAU,GAAGmiM,eAAe,CAAC1/R,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC7V,UAAU,CAAC,CAAC,CAAC,CACnFw1S,SAAS;UACZx+L,eAAe,CAAC5D,UAAU,EAAEgF,WAAW,EAAE28L,UAAU,CAAC;QACtD,CAAC,MAAM;UACLn7S,WAAW,CAACI,OAAO,CAAC,CAAC;UACrByW,UAAU,CAAC,YAAY;YACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;YACrB,IAAIwvT,UAAU,EAAE;cACdnjL,OAAO,CAACnpI,IAAI,CAAC,KAAK,CAAC;YACrB,CAAC,MAAM;cACLqpI,aAAa,CAACrpI,IAAI,CAAC,CAAC;YACtB;UACF,CAAC,EAAE,IAAI,CAAC;QACV;MACF;IACF,CAAC,CAAC;EACJ;EACA,SAAS0vH,QAAQA,CAAC9rH,IAAI,EAAE+rH,WAAW,EAAE;IACnC,IAAIq9L,OAAO,GAAGppT,IAAI,CAACi4I,mBAAmB,CAACz+I,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;IAEhE,IAAI4vT,OAAO,EAAE;MACXvjL,aAAa,CAACQ,cAAc,CAAC,SAASgjL,wBAAwBA,CAACjlN,OAAO,EAAE;QACtEpkG,IAAI,CAACqzH,QAAQ,CAACvkF,WAAW,GAAGs1D,OAAO,CAAC,CAAC,CAAC,CAACt1D,WAAW;QAClDw8E,SAAS,CAACtrH,IAAI,CAACqzH,QAAQ,EAAErzH,IAAI,CAACq6H,WAAW,EAAEr6H,IAAI,CAACi4I,mBAAmB,EAAEj4I,IAAI,CAAC0oT,UAAU,CAAC;MACvF,CAAC,CAAC;IACJ,CAAC,MAAM;MACL1oT,IAAI,CAACi4I,mBAAmB,CAACx+I,OAAO,CAACiD,EAAE,IAAI;QACrCsD,IAAI,CAACq6H,WAAW,CAACt7E,UAAU,GAAGriD,EAAE;QAChCmpI,aAAa,CAACkB,oBAAoB,CAAC/mI,IAAI,CAACq6H,WAAW,EAAE,SAASyuL,kBAAkBA,CAAC1kN,OAAO,EAAE;UACxF,IAAIA,OAAO,CAAC5qG,MAAM,GAAG,CAAC,EAAE;YACtB,IAAIuvT,eAAe,GAAG,EAAE;YACxB3kN,OAAO,CAAC3qG,OAAO,CAAC8gB,CAAC,IAAI;cACnB,IAAI,CAACwuS,eAAe,CAACp7M,QAAQ,CAACpzF,CAAC,CAAC2hH,YAAY,CAAC,EAAE6sL,eAAe,CAACzhT,IAAI,CAACiT,CAAC,CAAC2hH,YAAY,CAAC;YACrF,CAAC,CAAC;YACF,IAAI8sL,WAAW,GAAG,oBAAoBD,eAAe,CAAC9jS,IAAI,CAAC,IAAI,CAAC,EAAE;YAClEsjB,YAAY,CAACygR,WAAW,EAAE,YAAY;cACpChpT,IAAI,CAACqzH,QAAQ,CAACt0E,UAAU,GAAGriD,EAAE;cAC7BusT,UAAU,CAACjpT,IAAI,CAACqzH,QAAQ,EAAEtH,WAAW,EAAE/rH,IAAI,CAAC0oT,UAAU,CAAC;YACzD,CAAC,CAAC;UACJ,CAAC,MAAM;YACL1oT,IAAI,CAACqzH,QAAQ,CAACt0E,UAAU,GAAGriD,EAAE;YAC7BusT,UAAU,CAACjpT,IAAI,CAACqzH,QAAQ,EAAEtH,WAAW,EAAE/rH,IAAI,CAAC0oT,UAAU,CAAC;UACzD;QACF,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EACF;EAEA,SAASngR,YAAYA,CAAC1rC,IAAI,EAAEysT,kBAAkB,EAAE;IAC9C,IAAIv9S,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACtBG,EAAE,EAAE,cAAc;MAClBa,UAAU,EAAE;IACd,CAAC,CAAC;IACF,IAAIgnK,WAAW,GAAGjoK,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,UAAU;MAChBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBurT,kBAAkB,CAAC,CAAC;QACpBr9S,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;MACnB;IACF,CAAC,CAAC;IACF,IAAI08B,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC4qK,WAAW,CAAC;IAEhC,IAAI57H,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAGwD,IAAI;IAC/BkP,KAAK,CAACpS,WAAW,CAACgvC,cAAc,CAAC;IACjC58B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACnB;EACA,SAASw9S,aAAaA,CAAA,EAAG;IACvB,MAAMC,WAAW,GAAGttT,QAAQ,CAACC,aAAa,CAAC,oCAAoC,CAAC;IAChF,IAAIqtT,WAAW,EAAE;MACf,MAAMx9S,MAAM,GAAGw9S,WAAW,CAACnnT,aAAa;MACxC2J,MAAM,CAACV,WAAW,CAACk+S,WAAW,CAAC;MAC/BttT,QAAQ,CAACiD,cAAc,CAAC,4BAA4B,CAAC,CAACnG,MAAM,CAAC,CAAC;IAChE;EACF;;EAEA;EACA,SAASkvK,YAAYA,CAACnzD,kBAAkB,EAAE;IACxC3pG,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;IACvB,IAAI,CAAC73B,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC,EAAE6rG,OAAO,CAACI,cAAc,CAAC,CAAC,CAAC,CAAC;;IAE3E,IAAIshN,iBAAiB,GAAGxtT,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACpDitT,iBAAiB,CAACvsT,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACzDusT,iBAAiB,CAACrwT,SAAS,GAAG,0CAA0C;IAExE,IAAI8pB,SAAS,GAAGjnB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0mB,SAAS,CAACpqB,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;IAEpC,IAAI0wT,QAAQ,GAAGpkL,OAAO,CAACqkL,iBAAiB,CAAC70M,kBAAkB,CAAC;IAC5D,IAAI80M,aAAa,GAAGtkL,OAAO,CAACukL,kBAAkB,CAAC,CAAC;IAEhD3mS,SAAS,CAACxpB,WAAW,CAAC+vT,iBAAiB,CAAC;IACxCvmS,SAAS,CAACxpB,WAAW,CAACkwT,aAAa,CAAC;IACpC1mS,SAAS,CAACxpB,WAAW,CAACgwT,QAAQ,CAAC;IAC/Bv+S,GAAG,CAACiB,YAAY,CAACX,YAAY,CAACyX,SAAS,EAAE/X,GAAG,CAACiB,YAAY,CAACsH,UAAU,CAAC,CAAC,CAAC,CAAC;IAExE4xH,OAAO,CAACwkL,WAAW,CAAC,CAAC,CAAC,CAAC;;IAEvBxkL,OAAO,CAACrc,mBAAmB,CAAC,CAAC;IAC7B;IACAqc,OAAO,CAAC3c,cAAc,CAAC,CAAC;IACxBl+G,MAAM,CAAC0Z,UAAU,CAACmlS,aAAa,EAAE,IAAI,CAAC;EACxC;EAEA,SAASntT,IAAIA,CAAA,EAAG;IACd8yG,+BAA+B,CAAC,kBAAkB,CAAC;IACnDlH,OAAO,CAAC+5D,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC;IAClC/5D,OAAO,CAACoH,cAAc,CAAC,CAAC;EAC1B;EAEA,OAAO;IACL/0G,oBAAoB;IACpByxH,QAAQ;IACRy9L,aAAa;IACbntT;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACjTJ,IAAIkc,IAAI,GAAI,YAAY;EACpB;EACA,IAAI8xS,YAAY;EAChB,IAAI1/G,gBAAgB,EAAE2/G,cAAc,EAAEC,YAAY,EAAEjP,aAAa,EAAEkP,YAAY;EAC/E,IAAI9nM,mBAAmB,CAAC,CAAC;EACzB,IAAIilC,gBAAgB,EAChBwkE,eAAe,EACfs+F,uBAAuB,EACvB1P,YAAY,EACZ7qM,cAAc,EACd8qM,eAAe;EACnB,IAAI0P,YAAY,EACZC,aAAa,EACbC,aAAa,EACbC,aAAa,EACbC,YAAY,EACZ7qB,eAAe,EACfuhB,cAAc,EACduJ,iBAAiB;EACrB,IAAIC,oBAAoB;EACxB,IAAIC,yBAAyB;EAC7B,IAAIC,mBAAmB,EAAEC,sBAAsB;EAC/C,IAAIC,gBAAgB;EACpB;EACA,IAAIlzK,mBAAmB,GAAG,EAAE;EAC5B,IAAImzK,gBAAgB;EACpB,IAAIrxL,YAAY,GAAG,CAAC,CAAC;EACrB,IAAIukL,OAAO,CAAC,CAAC;EACb,IAAInkL,2BAA2B;EAC/B,IAAI1S,kBAAkB;EACtB,IAAI4jM,UAAU;EACd,IAAIhgL,YAAY;EAChB,IAAIigL,SAAS;EACb,IAAIzuF,aAAa;EACjB,IAAIngG,SAAS;EACb,IAAIsgG,WAAW;EACf,IAAIuuF,cAAc;EAClB,IAAIl+L,OAAO;EACX,IAAIm+L,kBAAkB;EACtB,IAAIz0L,aAAa;EACjB,IAAI0yL,iBAAiB;EACrB;EACA,IAAIgC,kBAAkB;EACtB,IAAIC,cAAc;EAClB,IAAIC,iBAAiB;EACrB,IAAIC,iBAAiB;EACrB,IAAIC,iBAAiB;EACrB,IAAIC,iBAAiB;EACrB;EACA,IAAIxhM,MAAM;EACV,IAAI6K,MAAM;EACV,IAAIjd,WAAW;EACf,IAAI1qD,UAAU;EACd,IAAIgrE,SAAS;EACb,IAAIuzL,iBAAiB;EACrB,IAAI/9B,MAAM;EACV,IAAI/5K,QAAQ;EACZ,IAAIw9I,SAAS;EACb,IAAIlnI,WAAW;EACf,IAAIh4F,SAAS;EACb,IAAIf,OAAO;EACX,IAAIi8F,QAAQ;EACZ,IAAIE,YAAY;EAChB,IAAIsZ,iBAAiB;EACrB,IAAIpT,cAAc;EAClB,IAAIhE,iBAAiB;EACrB,IAAItC,UAAU;EACd;EACA,IAAIy+L,mBAAmB,GAAG,EAAE;IACxB7F,qBAAqB,GAAG,EAAE;IAC1B8F,eAAe;EACnB;EACA,IAAI7kM,aAAa;EACjB,IAAIroE,UAAU;EACd,IAAI2pF,YAAY;EAChB,IAAIwjL,UAAU,CAAC,CAAC;EAChB,IAAIC,aAAa;EACjB,IAAIC,kBAAkB;EACtB,IAAIC,iBAAiB;EACrB,IAAI34L,SAAS;EACb,IAAI44L,WAAW;EACf,IAAI9kM,eAAe;EACnB,IAAI+kM,kBAAkB,GAAG,KAAK,CAAC,CAAC;EAChC,IAAI7tL,EAAE;EACN;EACA,IAAI8tL,QAAQ;EACZ,IAAI9F,SAAS;EACb;EACA,IAAI+E,kBAAkB,GAAG,EAAE;EAC3B,IAAIG,iBAAiB,GAAG,EAAE;EAC1B,IAAIF,cAAc,GAAG,EAAE;EACvB,IAAIC,iBAAiB,GAAG,EAAE;EAC1B,IAAIc,mBAAmB,GAAG,EAAE;EAC5B,IAAIC,kBAAkB,GAAG,EAAE;EAC3B,IAAIC,eAAe,GAAG,EAAE;EACxB,IAAIC,kBAAkB,GAAG,EAAE;EAC3B;EACA,IAAIllM,UAAU;;EAEd;EACA;EACA,SAASn/E,YAAYA,CAAC1rC,IAAI,EAAEgwT,YAAY,EAAEC,UAAU,EAAiB;IAAA,IAAfC,MAAM,GAAAtpT,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,IAAI;IAC/D,MAAMsI,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACtBG,EAAE,EAAE,cAAc;MAClBa,UAAU,EAAE,SAAS;MACrBkP,KAAK,EAAEsgT;IACX,CAAC,CAAC;IACF,IAAItkR,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI4zT,YAAY,EAAE;MACd,MAAMtoJ,WAAW,GAAGjoK,MAAM,CAACC,KAAK,CAAC;QAC7BM,IAAI,EAAE,UAAU;QAChBG,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;UAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;UACjB8gT,YAAY,CAAC,CAAC;QAClB;MACJ,CAAC,CAAC;MACFpkR,OAAO,CAAC9uC,WAAW,CAAC4qK,WAAW,CAAC;IACpC;IACA,IAAIuoJ,UAAU,EAAE;MACZ,IAAIliR,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;QACzBM,IAAI,EAAE,QAAQ;QACdG,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;UAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;UACjB+gT,UAAU,CAAC,CAAC;QAChB;MACJ,CAAC,CAAC;MACFrkR,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAClC;IACA,IAAIjC,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAGwD,IAAI;IAC/BkP,KAAK,CAACpS,WAAW,CAACgvC,cAAc,CAAC;IACjC58B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACrB;EAEA,SAASihT,2BAA2BA,CAAA,EAAG;IACnC,IAAIn4F,UAAU,GAAGw1F,cAAc,CAACluT,aAAa,CAAC,OAAO,CAAC;IACtD,IAAI24N,QAAQ,GAAGw1F,YAAY,CAACnuT,aAAa,CAAC,OAAO,CAAC;IAClD,IAAIqrJ,SAAS,GAAGkjD,gBAAgB,CAACvuM,aAAa,CAAC,OAAO,CAAC;IACvD;IACA,IAAIo2B,SAAS,GAAGsiM,UAAU,CAAC/2N,KAAK;IAChC;IACA,IAAI0zB,OAAO,GAAGsjM,QAAQ,CAACh3N,KAAK;IAC5B,IAAImxB,WAAW,GAAGrC,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACtC,IAAIw+F,WAAW,GAAGt4G,IAAI,CAACga,cAAc,CAAC,CAAC;IAEvC,IAAIqmR,WAAW;IACfA,WAAW,GAAG,IAAI;IAElB,IAAIzlK,SAAS,CAAC1pJ,KAAK,KAAKmxB,WAAW,EAAE;MACjCg+R,WAAW,GAAG/nL,WAAW,GAAG3yG,SAAS,IAAI2yG,WAAW,GAAG1zG,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;IACnF;IAEA,IAAIe,SAAS,IAAIf,OAAO,EAAE;MACtBy7R,WAAW,GAAG,KAAK,CAAC,CAAC;IACzB;IAEA,IAAI16R,SAAS,KAAK,EAAE,IAAIf,OAAO,KAAK,EAAE,EAAE;MACpCy7R,WAAW,GAAG,KAAK,CAAC,CAAC;IACzB;;IAEA;;IAEA,OAAO;MACHniS,OAAO,EAAEmiS,WAAW;MACpB16R,SAAS;MACTf;IACJ,CAAC;EACL;EACA,SAAS07R,gBAAgBA,CAAA,EAAG;IACxB,IAAIC,WAAW,GAAG,IAAIl6S,IAAI,CAACy3L,gBAAgB,CAAC5sM,KAAK,CAAC;IAClD,IAAIqtB,UAAU,GAAG,IAAIlY,IAAI,CAAC,CAAC;IAC3Bk6S,WAAW,GAAGA,WAAW,CAACviS,eAAe,CAAC,CAAC;IAC3CO,UAAU,GAAGA,UAAU,CAACP,eAAe,CAAC,CAAC;IAEzC,OAAOuiS,WAAW,KAAKhiS,UAAU,GAAG,CAAC,GAAG,CAAC;EAC7C;EAEA,SAASwpM,qBAAqBA,CAAC7sL,YAAY,EAAE;IACzC,IAAI+sL,UAAU,GAAGw1F,cAAc,CAACluT,aAAa,CAAC,OAAO,CAAC;IACtD,IAAI24N,QAAQ,GAAGw1F,YAAY,CAACnuT,aAAa,CAAC,OAAO,CAAC;IAClD,IAAIqrJ,SAAS,GAAGkjD,gBAAgB,CAACvuM,aAAa,CAAC,OAAO,CAAC;IACvD,IAAIo2B,SAAS,GAAGsiM,UAAU,CAAC/2N,KAAK;IAChC,IAAI0zB,OAAO,GAAGsjM,QAAQ,CAACh3N,KAAK;IAC5B,IAAImxB,WAAW,GAAGrC,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACtC,IAAIw+F,WAAW,GAAGt4G,IAAI,CAACga,cAAc,CAAC,CAAC;IAEvC,IAAIkB,YAAY,KAAK,YAAY,EAAE;MAC/B,IAAI0/G,SAAS,CAAC1pJ,KAAK,KAAKmxB,WAAW,EAAE;QACjC,IAAIsD,SAAS,GAAG2yG,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC;MAC/C;MAEA,IAAI3yG,SAAS,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC;MACpC,IAAIA,SAAS,KAAK,EAAE,IAAIf,OAAO,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC;IACzD,CAAC,MAAM;MACH;MACA,IAAIg2H,SAAS,CAAC1pJ,KAAK,KAAKmxB,WAAW,EAAE;QACjC,IAAIuC,OAAO,GAAG0zG,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC;MAC7C;MAEA,IAAI1zG,OAAO,KAAK,EAAE,IAAIA,OAAO,KAAK,OAAO,EAAE,OAAO,KAAK,CAAC,CAAC;IAC7D;IAEA,OAAOe,SAAS,IAAIf,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;EAChD;EAEA,SAAS47R,aAAaA,CAAClB,UAAU,EAAE;IAC/B,IAAIb,UAAU,KAAK,KAAK,EAAE;MACtBjkM,aAAa,GAAG98G,CAAC,CAACC,OAAO,CAACmoC,QAAQ;MAClCqM,UAAU,GAAG,EAAE;MACf2pF,YAAY,GAAG,EAAE;MACjBlhB,eAAe,GAAG,KAAK;MAEvB8C,MAAM,GAAG,CAAC;MACVpS,WAAW,GAAG,EAAE;MAChB1qD,UAAU,GAAG,EAAE;MACfgrE,SAAS,GAAG,EAAE;MACduzL,iBAAiB,GAAG,EAAE;MACtB/9B,MAAM,GAAG,EAAE;MACX/5K,QAAQ,GAAG,EAAE;MACbw9I,SAAS,GAAG,EAAE;MACdlnI,WAAW,GAAG39F,IAAI,CAAC8Z,aAAa,CAAC,CAAC;MAClCnU,SAAS,GAAG3F,IAAI,CAACga,cAAc,CAAC,CAAC;MACjCpV,OAAO,GAAG,EAAE;MACZi8F,QAAQ,GAAG,EAAE;MACbE,YAAY,GAAG,GAAG;MAClBsZ,iBAAiB,GAAG,GAAG;MACvBvT,SAAS,GAAG,GAAG;MACfG,cAAc,GAAG,EAAE;IACvB,CAAC,MAAM;MACH6K,EAAE,GAAGwtL,UAAU,CAAC,CAAC,CAAC;MAClBI,WAAW,GAAG5tL,EAAE,CAAC/J,OAAO,KAAK,EAAE,GAAG,KAAK,GAAG,IAAI;MAE9CvN,aAAa,GAAGsX,EAAE,CAAC9J,aAAa;MAChC71E,UAAU,GAAG2/E,EAAE,CAAChT,UAAU;MAC1Bgd,YAAY,GAAGhK,EAAE,CAACxC,YAAY;MAC9B5R,MAAM,GAAGoU,EAAE,CAAC2uL,MAAM;MAClBv+Q,WAAW,GAAG4vF,EAAE,CAAC/J,OAAO,KAAK,EAAE,GAAG,CAAC,GAAG+J,EAAE,CAAC/J,OAAO;MAChDQ,MAAM,GAAGuJ,EAAE,CAACvJ,MAAM;MAClBjd,WAAW,GAAGwmB,EAAE,CAAC9R,0BAA0B,CAAC,CAAC;MAC7Cp/D,UAAU,GAAGkxE,EAAE,CAAC7R,YAAY;MAC5B2L,SAAS,GAAGkG,EAAE,CAAC3J,WAAW,CAAC,CAAC;MAC5Bg3L,iBAAiB,GAAGrtL,EAAE,CAAC5R,iBAAiB;MACxCkhK,MAAM,GAAGtvJ,EAAE,CAAC1R,eAAe;MAC3B/Y,QAAQ,GAAGyqB,EAAE,CAACzR,QAAQ;MACtBwkI,SAAS,GAAG/yH,EAAE,CAACxR,WAAW;MAC1B3C,WAAW,GAAG39F,IAAI,CAACkY,eAAe,CAAC45F,EAAE,CAAC+lL,WAAW,CAACpnS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAChEkV,SAAS,GAAGmsG,EAAE,CAACvR,SAAS;MACxB37F,OAAO,GAAGktG,EAAE,CAACtR,OAAO;MACpBK,QAAQ,GAAGiR,EAAE,CAAChR,QAAQ;MACtBC,YAAY,GAAG+Q,EAAE,CAAC/Q,YAAY;MAC9BsZ,iBAAiB,GAAGvI,EAAE,CAAC9Q,wBAAwB;MAC/C8F,SAAS,GAAGgL,EAAE,CAAChL,SAAS;MACxBG,cAAc,GAAG6K,EAAE,CAAChE,cAAc,KAAK,EAAE,GAAG,GAAG,GAAGgE,EAAE,CAAChE,cAAc;MACnEyxL,aAAa,GAAGztL,EAAE,CAAC4uL,aAAa;MAChClB,kBAAkB,GAAG1tL,EAAE,CAAC6uL,eAAe;MACvC19L,iBAAiB,GAAG6O,EAAE,CAAC7J,YAAY;MACnCtH,UAAU,GAAGmR,EAAE,CAAClR,UAAU;MAC1BwvG,WAAW,GAAGt+F,EAAE,CAAC8uL,UAAU;MAC3B9wL,SAAS,GAAGgC,EAAE,CAAC+uL,cAAc;MAC7B/G,SAAS,GAAGhoL,EAAE,CAACgvL,OAAO;MACtBC,gBAAgB,GAAGjvL,EAAE,CAACkvL,oBAAoB;MAC1CvgM,OAAO,GAAGqR,EAAE,CAACpR,UAAU;IAC3B;EACJ;EACA,SAASqxC,cAAcA,CAAA,EAAG;IACtB,OAAO+nJ,SAAS,KAAK,EAAE,GAAG,IAAI,GAAG,KAAK;EAC1C;EAEA,SAASmH,aAAaA,CAAA,EAAG;IACrB,OAAO14L,MAAM,KAAK,GAAG,IAAIA,MAAM,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;EAC7D;EAEA,SAAS24L,kBAAkBA,CAAA,EAAG;IAC1B,IAAI34L,MAAM,KAAK,GAAG,IAAIA,MAAM,KAAK,IAAI,EAAE;MACnCzN,UAAU,GAAG,IAAI;MACjB;MACA;IACJ,CAAC,MAAM;MACHA,UAAU,GAAG,KAAK;IACtB;EACJ;EACA,SAASqmM,oBAAoBA,CAAChwT,QAAQ,EAAE;IACpC,MAAMiwT,cAAc,GAAG/hT,KAAK,CAAC1P,KAAK,CAAC;MAC/BG,EAAE,EAAE,gBAAgB;MACpBa,UAAU,EAAE,SAAS;MACrBkP,KAAK,EAAEsgT;IACX,CAAC,CAAC;IAEF,MAAMhgT,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3CsQ,OAAO,CAACrM,SAAS,GAAG;AAC5B;AACA,6CAA6C;IAErC,MAAMqsD,KAAK,GAAGzwD,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC80T,cAAc,CAAC;QAC1BjwT,QAAQ,CAAC,CAAC;MACd;IACJ,CAAC,CAAC;IACF,MAAM6sC,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC80T,cAAc,CAAC;MAC9B;IACJ,CAAC,CAAC;IAEF,IAAIvlR,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACozD,KAAK,CAAC;IAC1BtkB,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAE9BojR,cAAc,CAACr0T,WAAW,CAACoT,OAAO,CAAC;IACnCihT,cAAc,CAACr0T,WAAW,CAAC8uC,OAAO,CAAC;IAEnCx8B,KAAK,CAAC9S,IAAI,CAAC60T,cAAc,CAAC;EAC9B;EAEA,eAAeC,cAAcA,CAACvF,UAAU,EAAE;IACtC;IACAzwK,mBAAmB,CAACx+I,OAAO,CAACovT,GAAG,IAAI;MAC/B7gN,OAAO,CAAC8iD,iCAAiC,CAAC+9J,GAAG,CAAC;IAClD,CAAC,CAAC;IACF,IAAIqF,WAAW,GAAGj+M,cAAc,CAAC5uE,iBAAiB;IAClD,IAAI8sR,aAAa,GAAGzmK,gBAAgB,CAACrmH,iBAAiB;IACtD,IAAI+sR,YAAY,GAAGliG,eAAe,CAAC7qL,iBAAiB;IACpD,IAAIgtR,SAAS,GAAGvT,YAAY,CAACz5Q,iBAAiB;IAC9C,IAAIitR,YAAY,GAAGvT,eAAe,CAAC15Q,iBAAiB;IACpD2pG,kBAAkB,CAACc,SAAS;IAC5Bre,QAAQ,GAAG7gG,IAAI,CAACub,uBAAuB,CAACslF,QAAQ,CAAC;IACjD;IACA,IAAI8+L,kBAAkB,EAAE;MACpB,MAAMgC,qBAAqB,CAAC,CAAC;IACjC;IACA,IAAIlD,UAAU,KAAK,KAAK,EAAE;MACtB,IAAIhxL,WAAW,GAAG;QACdt7E,UAAU;QACVxsB,SAAS;QACTf,OAAO;QACP+4F,WAAW;QACXnD,aAAa;QACbkD,MAAM,EAAE,CAAC;QACTx7E,WAAW,EAAE;MACjB,CAAC;MACD,IAAIukF,QAAQ,GAAG;QACXjM,aAAa;QACbkD,MAAM;QACN;QACAqB,sBAAsB,EAAEzT,WAAW;QACnCyb,YAAY,EAAEnmE,UAAU;QACxB0qD,WAAW,EAAEsgB,SAAS;QACtB5E,QAAQ,EAAEo6J,MAAM;QAChBzjK,WAAW;QACXh4F,SAAS;QACTf,OAAO;QACPyiF,QAAQ,EAAEi6M,WAAW,CAACpwT,KAAK;QAC3B21H,WAAW,EAAEg+H,SAAS;QACtB39H,mBAAmB,EAAEi4L,iBAAiB;QACtCz4L,QAAQ,EAAE7F,QAAQ;QAAE;QACpBE,YAAY;QAAE;QACd+F,SAAS;QAAE;;QAEXH,eAAe,EAAEt0G,MAAM,CAACouG,OAAO,CAAC,KAAK,MAAM,GAAG,GAAG,GAAGpuG,MAAM,CAACouG,OAAO,CAAC;QACnEmG,kBAAkB,EAAEv0G,MAAM,CAACsuG,UAAU,CAAC;QACtCsC,iBAAiB,EAAE5wG,MAAM,CAAC4wG,iBAAiB,CAAC;QAC5CgE,cAAc;QACdoT,iBAAiB,CAAE;MACvB,CAAC;MACD7sI,OAAO,CAAC0xH,QAAQ,CACZ;QAAEuO,WAAW;QAAEhH,QAAQ;QAAE4kB,mBAAmB;QAAEywK;MAAW,CAAC,EAC1DsD,mBACJ,CAAC;MACD;IACJ;IAEA,IAAIX,UAAU,KAAK,QAAQ,EAAE;MACzB;MACA75R,OAAO,GAAGA,OAAO,CAACh4B,MAAM,KAAK,CAAC,GAAGg4B,OAAO,CAACzwB,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGywB,OAAO;MAClEe,SAAS,GAAGA,SAAS,CAAC/4B,MAAM,KAAK,CAAC,GAAG+4B,SAAS,CAACxxB,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGwxB,SAAS;MAC1E,IAAIi8R,iBAAiB,GAAG;QACpBzvQ,UAAU;QACVxsB,SAAS;QACTf,OAAO;QACP+4F,WAAW;QACXnD,aAAa;QACbkD,MAAM;QACNx7E;MACJ,CAAC;MACD,IAAIk6L,UAAU,GAAG;QACb1+G,MAAM;QACNx7E,WAAW;QACXs4E,aAAa;QACbroE,UAAU;QACV4sE,sBAAsB,EAAEzT,WAAW;QACnCyb,YAAY,EACRw6L,aAAa,CAACxvT,aAAa,KAAK,CAAC,CAAC,GAC5B,CAAC,GACDwvT,aAAa,CAAC3xT,OAAO,CAAC2xT,aAAa,CAACxvT,aAAa,CAAC,CAACb,KAAK;QAClEo6G,WAAW,EACPk2M,YAAY,CAACzvT,aAAa,KAAK,CAAC,CAAC,GAC3B,CAAC,GACDyvT,YAAY,CAAC5xT,OAAO,CAAC4xT,YAAY,CAACzvT,aAAa,CAAC,CAACb,KAAK;QAChE81H,QAAQ,EACJy6L,SAAS,CAAC1vT,aAAa,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG0vT,SAAS,CAAC7xT,OAAO,CAAC6xT,SAAS,CAAC1vT,aAAa,CAAC,CAACb,KAAK;QACzFysH,WAAW;QACXh4F,SAAS;QACTf,OAAO;QACPyiF,QAAQ;QACRwf,WAAW,EACP66L,YAAY,CAAC3vT,aAAa,KAAK,CAAC,CAAC,GAC3B,CAAC,GACD2vT,YAAY,CAAC9xT,OAAO,CAAC8xT,YAAY,CAAC3vT,aAAa,CAAC,CAACb,KAAK;QAChEg2H,mBAAmB,EAAEi4L,iBAAiB;QACtCl4L,cAAc;QACdlG,YAAY;QACZ+F,SAAS;QACTuT,iBAAiB;QACjB3T,QAAQ,EAAE7F,QAAQ;QAClB8F,eAAe,EAAEt0G,MAAM,CAACouG,OAAO,CAAC,KAAK,MAAM,GAAG,EAAE,GAAGpuG,MAAM,CAACouG,OAAO,CAAC;QAClEmG,kBAAkB,EAAEjG,UAAU,KAAK,IAAI,GAAGtuG,MAAM,CAAC,CAAC,CAAC,GAAGA,MAAM,CAACsuG,UAAU,CAAC;QACxEsC,iBAAiB,EAAEA,iBAAiB,KAAK,IAAI,GAAG5wG,MAAM,CAAC,CAAC,CAAC,GAAGA,MAAM,CAAC4wG,iBAAiB;MACxF,CAAC;MACDt1H,UAAU,CAACk0T,UAAU,CACjB;QAAEp0L,WAAW,EAAEm0L,iBAAiB;QAAExlF,UAAU;QAAE/wF,mBAAmB;QAAEq0K;MAAY,CAAC,EAChFN,mBACJ,CAAC;IACL;EACJ;;EAEA;EACA;EACA,SAAS10L,8BAA8BA,CAAC90E,GAAG,EAAE;IACzC,SAAS+0E,WAAWA,CAAC/0E,GAAG,EAAE;MACtB,IAAIlb,MAAM;QACNroC,IAAI,GAAG,EAAE;MACbqoC,MAAM,GAAG1a,IAAI,CAACua,QAAQ,CAClB,wCAAwC,GAAGqb,GAAG,CAAC83E,0BACnD,CAAC;MAED,IAAI9C,YAAY,GAAG,EAAE,CAAC/uH,KAAK,CAACC,IAAI,CAAC4+B,MAAM,CAAC9d,oBAAoB,CAAC,aAAa,CAAC,CAAC;MAC5EguG,YAAY,CAAC/9H,OAAO,CAACg+H,EAAE,IAAI;QACvB,IAAIxU,cAAc,GAAG,EAAE,CAACx6G,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAIkuG,YAAY,GAAG,EAAE,CAACjvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAImuG,iBAAiB,GAAG,EAAE,CAAClvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAIouG,kBAAkB,GAAG,EAAE,CAACnvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAIquG,mBAAmB,GAAG,EAAE,CAACpvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,IAAIsuG,eAAe,GAAG,EAAE,CAACrvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,IAAIuuG,kBAAkB,GAAG,EAAE,CAACtvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAIwuG,kBAAkB,GAAG,EAAE,CAACvvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAIyuG,kBAAkB,GAAG,EAAE,CAACxvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAI0uG,kBAAkB,GAAG,EAAE,CAACzvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAI2uG,qBAAqB,GAAG,EAAE,CAAC1vH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,IAAIwpB,SAAS,GAAG,EAAE,CAACvqC,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI4uG,QAAQ,GAAG,EAAE,CAAC3vH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI6uG,QAAQ,GAAG,EAAE,CAAC5vH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI8uG,KAAK,GAAG,EAAE,CAAC7vH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAE1D,IAAI+uG,SAAS,GAAG,CAAC,CAAC;QAClBA,SAAS,CAACrgB,WAAW,GAAG+K,cAAc,GAAGA,cAAc,CAACv/F,WAAW,GAAG,EAAE;QACxE60G,SAAS,CAACC,SAAS,GAAGd,YAAY,GAAGA,YAAY,CAACh0G,WAAW,GAAG,EAAE;QAClE60G,SAAS,CAACE,cAAc,GAAGd,iBAAiB,GAAGA,iBAAiB,CAACj0G,WAAW,GAAG,EAAE;QACjF60G,SAAS,CAAC7H,eAAe,GAAGkH,kBAAkB,GAAGA,kBAAkB,CAACl0G,WAAW,GAAG,EAAE;QACpF60G,SAAS,CAACnI,gBAAgB,GAAGyH,mBAAmB,GAAGA,mBAAmB,CAACn0G,WAAW,GAAG,EAAE;QACvF60G,SAAS,CAACjI,YAAY,GAAGwH,eAAe,GAAGA,eAAe,CAACp0G,WAAW,GAAG,EAAE;QAC3E60G,SAAS,CAAC/H,eAAe,GAAGuH,kBAAkB,GAAGA,kBAAkB,CAACr0G,WAAW,GAAG,EAAE;QACpF60G,SAAS,CAAC/Q,eAAe,GAAGwQ,kBAAkB,GAAGA,kBAAkB,CAACt0G,WAAW,GAAG,EAAE;QACpF60G,SAAS,CAACzI,eAAe,GAAGmI,kBAAkB,GAAGA,kBAAkB,CAACv0G,WAAW,GAAG,EAAE;QACpF60G,SAAS,CAACG,eAAe,GAAGR,kBAAkB,GAAGA,kBAAkB,CAACx0G,WAAW,GAAG,EAAE;QACpF60G,SAAS,CAACI,kBAAkB,GAAGR,qBAAqB,GAC9CA,qBAAqB,CAACz0G,WAAW,GACjC,EAAE;QACR60G,SAAS,CAACvlF,SAAS,GAAG,EAAE;QACxBulF,SAAS,CAACH,QAAQ,GAAG,EAAE;QACvBG,SAAS,CAACF,QAAQ,GAAG,EAAE;QACvBE,SAAS,CAACD,KAAK,GAAG,EAAE;QAEpBtlF,SAAS,CAACv5C,OAAO,CAACm/H,GAAG,IAAI;UACrB,IAAIC,UAAU,GAAG,EAAE,CAACpwH,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F,WAAW;UAClF,IAAIo1G,UAAU,GAAG,EAAE,CAACrwH,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F,WAAW;UAClF60G,SAAS,CAACvlF,SAAS,CAAC1rC,IAAI,CAAC;YACrByxH,OAAO,EAAEF,UAAU;YACnBG,OAAO,EAAEF;UACb,CAAC,CAAC;QACN,CAAC,CAAC;QACFV,QAAQ,CAAC3+H,OAAO,CAACm/H,GAAG,IAAI;UACpB,IAAIK,cAAc,GAAG,EAAE,CAACxwH,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CACzE9F,WAAW;UAChB,IAAIw1G,cAAc,GAAG,EAAE,CAACzwH,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CACzE9F,WAAW;UAChB60G,SAAS,CAACH,QAAQ,CAAC9wH,IAAI,CAAC;YACpB40G,WAAW,EAAE+c,cAAc;YAC3BxF,WAAW,EAAEyF;UACjB,CAAC,CAAC;QACN,CAAC,CAAC;QACFb,QAAQ,CAAC5+H,OAAO,CAACm/H,GAAG,IAAI;UACpB,IAAIO,cAAc,GAAG,EAAE,CAAC1wH,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CACzE9F,WAAW;UAChB,IAAIu/F,cAAc,GAAG,EAAE,CAACx6G,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CACzE9F,WAAW;UAChB60G,SAAS,CAACF,QAAQ,CAAC/wH,IAAI,CAAC;YACpBmgD,WAAW,EAAE0xE,cAAc;YAC3BjhB,WAAW,EAAE+K;UACjB,CAAC,CAAC;QACN,CAAC,CAAC;QACFqV,KAAK,CAAC7+H,OAAO,CAACm/H,GAAG,IAAI;UACjB,IAAIQ,WAAW,GAAG,EAAE,CAAC3wH,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F,WAAW;UACpF,IAAI21G,WAAW,GAAG,EAAE,CAAC5wH,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F,WAAW;UACpF60G,SAAS,CAACD,KAAK,CAAChxH,IAAI,CAAC;YACjBgyH,QAAQ,EAAEF,WAAW;YACrBxF,QAAQ,EAAEyF;UACd,CAAC,CAAC;QACN,CAAC,CAAC;QAEFp6H,IAAI,CAACqI,IAAI,CAACixH,SAAS,CAAC;MACxB,CAAC,CAAC;MAEF,OAAOt5H,IAAI;IACf;IAEA,IAAIs6H,eAAe,GAAGhC,WAAW,CAAC/0E,GAAG,CAAC;;IAEtC;IACA+2E,eAAe,CAAC9/H,OAAO,CAACsN,EAAE,IAAI;MAC1B;MACA,IAAI,CAACgzH,YAAY,CAAChzH,EAAE,CAACyxH,SAAS,CAAC,EAAE;QAC7BuB,YAAY,CAAChzH,EAAE,CAACyxH,SAAS,CAAC,GAAG;UACzBA,SAAS,EAAEzxH,EAAE,CAACyxH,SAAS;UACvBtgB,WAAW,EAAEnxG,EAAE,CAACmxG,WAAW;UAC3BugB,cAAc,EAAE1xH,EAAE,CAAC0xH,cAAc;UACjCzlF,SAAS,EAAE,CAAC,GAAGjsC,EAAE,CAACisC,SAAS,CAAC;UAC5BolF,QAAQ,EAAE,CAAC,GAAGrxH,EAAE,CAACqxH,QAAQ,CAAC;UAC1BC,QAAQ,EAAE,CAAC,GAAGtxH,EAAE,CAACsxH,QAAQ,CAAC;UAC1BC,KAAK,EAAE,CAAC,GAAGvxH,EAAE,CAACuxH,KAAK,CAAC;UACpBI,eAAe,EAAE3xH,EAAE,CAAC2xH,eAAe;UACnCC,kBAAkB,EAAE5xH,EAAE,CAAC4xH,kBAAkB;UACzC7I,eAAe,EAAE/oH,EAAE,CAAC+oH,eAAe;UACnCM,gBAAgB,EAAErpH,EAAE,CAACqpH,gBAAgB;UACrCE,YAAY,EAAEvpH,EAAE,CAACupH,YAAY;UAC7BI,eAAe,EAAE3pH,EAAE,CAAC2pH,eAAe;UACnCF,eAAe,EAAEzpH,EAAE,CAACypH,eAAe;UACnChJ,eAAe,EAAEzgH,EAAE,CAACygH;QACxB,CAAC;MACL;IACJ,CAAC,CAAC;IACF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA4jM,gBAAgB,GAAGpwS,MAAM,CAAC8B,IAAI,CAACi9G,YAAY,CAAC;IAC5C,OAAOA,YAAY;EACvB;EAEA,SAAS20L,mBAAmBA,CAAA,EAAG;IAC3B,IAAIpkT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzC,IACIi4G,mBAAmB,CAAC9xG,UAAU,CAACnU,OAAO,CAClCimH,mBAAmB,CAAC9xG,UAAU,CAAChS,aAAa,CAC/C,CAACkE,YAAY,CAAC,sBAAsB,CAAC,KAAK,GAAG,EAChD;QACE2nT,uBAAuB,CAACzxT,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC/CuxT,uBAAuB,CAACzxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACjDwxT,uBAAuB,CAAC75S,UAAU,CAAChS,aAAa,GAAG,CAAC;QACpDotT,iBAAiB,GAAG,IAAI;MAC5B,CAAC,MAAM;QACHvB,uBAAuB,CAACzxT,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QAClD,IAAI+yT,iBAAiB,KAAK,EAAE,IAAIA,iBAAiB,KAAK,IAAI,EACtDvB,uBAAuB,CAACzxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACtD;IACJ;EACJ;EAEA,SAAS01T,sBAAsBA,CAAA,EAAG;IAC9BnD,kBAAkB,GAAGJ,gBAAgB,CAACnoT,GAAG,CAAC,CAACpF,GAAG,EAAEgV,KAAK,KAAK;MACtD,IAAIA,KAAK,KAAK,CAAC,EAAEqlG,WAAW,GAAGr6G,GAAG;MAClC,OAAO;QACHC,KAAK,EAAEi8H,YAAY,CAACl8H,GAAG,CAAC,CAAC26H,SAAS;QAClC37H,IAAI,EAAE+vB,IAAI,CAAC8a,YAAY,CAACqyF,YAAY,CAACl8H,GAAG,CAAC,CAACq6G,WAAW,CAAC;QACtDv6G,UAAU,EAAE,CACR;UAAEE,GAAG,EAAE,sBAAsB;UAAEC,KAAK,EAAEi8H,YAAY,CAACl8H,GAAG,CAAC,CAAC46H;QAAe,CAAC,EACxE;UAAE56H,GAAG,EAAE,sBAAsB;UAAEC,KAAK,EAAEi8H,YAAY,CAACl8H,GAAG,CAAC,CAAC2pH;QAAgB,CAAC;MAEjF,CAAC;IACL,CAAC,CAAC;IAEFgkM,kBAAkB,CAAC3uP,OAAO,CAAC;MAAEngE,EAAE,EAAE,GAAG;MAAEoB,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC,CAAC,CAAC;IAC9D2uT,kBAAkB,CAACj4S,IAAI,CAAC,UAAUjU,CAAC,EAAEuU,CAAC,EAAE;MACpC;MACA,IAAIvU,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE;QACjB,OAAO,CAAC,CAAC;MACb;MACA,IAAIyC,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE;QACjB,OAAO,CAAC;MACZ;MACA,OAAO,CAAC;IACZ,CAAC,CAAC;IAEF,IAAIqC,UAAU;IAEdA,UAAU,GAAGuoH,kBAAkB;IAE/B,IAAIiX,EAAE,IAAIA,EAAE,CAAC9R,0BAA0B,EAAE;MACrC1U,WAAW,GAAGwmB,EAAE,CAAC9R,0BAA0B;MAC3C1tH,UAAU,GAAGg5G,WAAW;IAC5B,CAAC,MAAM;MACHA,WAAW,GAAGh5G,UAAU;IAC5B;IAEA,IAAIoL,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzCg9G,eAAe,GAAG,IAAI;IAC1B,CAAC,MAAM;MACH,IAAI6jM,UAAU,KAAK,QAAQ,EAAE;QACzB7jM,eAAe,GAAGuS,YAAY,CAAC76H,UAAU,CAAC,CAACsoH,eAAe,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK;MACrF;IACJ;IAEAtpH,QAAQ,CAAC5E,QAAQ,CAACmpH,mBAAmB,EAAE+oM,kBAAkB,EAAEtsT,UAAU,CAAC;IACtE0vT,8BAA8B,CAAC,CAAC;IAChC,IAAItkT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC5CqkT,qBAAqB,CAAC,CAAC;IAC3B;EACJ;EACA,SAASC,uBAAuBA,CAAA,EAAG;IAC/B,IAAI97Q,SAAS,GAAG+mF,YAAY,CAAC7hB,WAAW,CAAC,CAACllE,SAAS;IACnD,IAAI/zC,IAAI,GAAG+zC,SAAS,CAAC/vC,GAAG,CAAC21H,GAAG,IAAI;MAC5B,OAAO;QACH96H,KAAK,EAAE86H,GAAG,CAACI,OAAO;QAClBn8H,IAAI,EAAE+7H,GAAG,CAACG;MACd,CAAC;IACL,CAAC,CAAC;IAEF95H,IAAI,CAAC49D,OAAO,CAAC;MAAE/+D,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAErC,IAAIqC,UAAU;IAEd,IAAIw/H,EAAE,IAAIA,EAAE,CAAC7R,YAAY,EAAE;MACvBr/D,UAAU,GAAGkxE,EAAE,CAAC7R,YAAY;MAC5B3tH,UAAU,GAAGw/H,EAAE,CAAC7R,YAAY;IAChC,CAAC,MAAM;MACHr/D,UAAU,GAAGvuD,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAGmB,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAG,EAAE;IAC9D;IAEAixT,eAAe,CAAC9vT,IAAI,EAAE,iBAAiB,CAAC;IAExCf,QAAQ,CAAC5E,QAAQ,CAACouJ,gBAAgB,EAAEzoJ,IAAI,EAAEC,UAAU,CAAC;EACzD;EACA,SAAS8vT,uBAAuBA,CAAA,EAAG;IAC/B,IAAI32L,QAAQ,GAAG0B,YAAY,CAAC7hB,WAAW,CAAC,CAACmgB,QAAQ;IACjD,IAAIp5H,IAAI,GAAGo5H,QAAQ,CAACp1H,GAAG,CAACujH,OAAO,IAAI;MAC/B,OAAO;QACH1oH,KAAK,EAAE0oH,OAAO,CAACtO,WAAW;QAC1Br7G,IAAI,EAAE2pH,OAAO,CAAC/+D;MAClB,CAAC;IACL,CAAC,CAAC;IAEFxoD,IAAI,CAAC49D,OAAO,CAAC;MAAE/+D,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IACrC,IAAIqC,UAAU;IAEd,IAAIw/H,EAAE,IAAIA,EAAE,CAAC3J,WAAW,EAAE;MACtB71H,UAAU,GAAGw/H,EAAE,CAAC3J,WAAW;IAC/B,CAAC,MAAM;MACHyD,SAAS,GAAGv5H,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAGmB,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAG,EAAE;IAC7D;IAEAixT,eAAe,CAAC9vT,IAAI,EAAE,gBAAgB,CAAC;IAEvCf,QAAQ,CAAC5E,QAAQ,CAAC4yN,eAAe,EAAEjtN,IAAI,EAAEC,UAAU,CAAC;EACxD;EACA,SAAS+vT,uBAAuBA,CAAA,EAAG;IAC/B,IAAI72L,QAAQ,GAAG2B,YAAY,CAAC7hB,WAAW,CAAC,CAACkgB,QAAQ;;IAEjD;;IAEA,IAAIn5H,IAAI,GAAGm5H,QAAQ,CAACn1H,GAAG,CAACk+G,OAAO,IAAI;MAC/B,OAAO;QACHrjH,KAAK,EAAEqjH,OAAO,CAACsS,WAAW;QAC1B52H,IAAI,EAAEskH,OAAO,CAACjF;MAClB,CAAC;IACL,CAAC,CAAC;IACFj9G,IAAI,CAAC49D,OAAO,CAAC;MAAE/+D,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IACrC,IAAIqC,UAAU;IAEd,IAAIw/H,EAAE,IAAIA,EAAE,CAACxR,WAAW,EAAE;MACtBhuH,UAAU,GAAGw/H,EAAE,CAACxR,WAAW;IAC/B,CAAC,MAAM;MACHukI,SAAS,GAAGxyP,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAGmB,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAG,EAAE;IAC7D;IAEAixT,eAAe,CAAC9vT,IAAI,EAAE,gBAAgB,CAAC;IAEvCf,QAAQ,CAAC5E,QAAQ,CAACyhT,eAAe,EAAE97S,IAAI,EAAEC,UAAU,CAAC;EACxD;EACA,SAASgwT,oBAAoBA,CAAA,EAAG;IAC5B,IAAI52L,KAAK,GAAGyB,YAAY,CAAC7hB,WAAW,CAAC,CAACogB,KAAK;IAC3C,IAAIr5H,IAAI,GAAGq5H,KAAK,CAACr1H,GAAG,CAAC8pH,IAAI,IAAI;MACzB,OAAO;QACHjvH,KAAK,EAAEivH,IAAI,CAAC6G,QAAQ;QACpB/2H,IAAI,EAAEkwH,IAAI,CAACuM;MACf,CAAC;IACL,CAAC,CAAC;IACFr6H,IAAI,CAAC49D,OAAO,CAAC;MAAE/+D,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IACrC,IAAIqC,UAAU;IAEd,IAAIw/H,EAAE,IAAIA,EAAE,CAAC1R,eAAe,EAAE;MAC1B9tH,UAAU,GAAGw/H,EAAE,CAAC1R,eAAe;IACnC,CAAC,MAAM;MACHghK,MAAM,GAAG/uR,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAGmB,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAG,EAAE;IAC1D;IAEAixT,eAAe,CAAC9vT,IAAI,EAAE,aAAa,CAAC;IAEpCf,QAAQ,CAAC5E,QAAQ,CAACwhT,YAAY,EAAE77S,IAAI,EAAEC,UAAU,CAAC;EACrD;EAEA,SAAS6vT,eAAeA,CAAC9vT,IAAI,EAAEkwT,QAAQ,EAAE;IACrC,IAAIlwT,IAAI,CAACzF,MAAM,GAAG,CAAC,EAAE;MACjB0C,QAAQ,CAACiD,cAAc,CAACgwT,QAAQ,CAAC,CAAC9sT,aAAa,CAACrF,KAAK,CAACoK,OAAO,GAAG,EAAE;MAClE;IACJ,CAAC,MAAM;MACHlL,QAAQ,CAACiD,cAAc,CAACgwT,QAAQ,CAAC,CAAC9sT,aAAa,CAACrF,KAAK,CAACoK,OAAO,GAAG,MAAM;MACtE;IACJ;EACJ;EAEA,SAASwnT,8BAA8BA,CAAA,EAAG;IACtC;IACA,IAAI12M,WAAW,KAAK,EAAE,EAAE;MACpB,IAAI,CAACwmB,EAAE,EAAE;QACLlxE,UAAU,GAAG,EAAE;QACfgrE,SAAS,GAAG,EAAE;QACdw1J,MAAM,GAAG,EAAE;QACXv8B,SAAS,GAAG,EAAE;MAClB;MACA;MACA;MACA;MACA;MACA;MACA,IAAI13H,YAAY,CAAC7hB,WAAW,CAAC,EAAE;QAC3B42M,uBAAuB,CAAC,CAAC;QACzBE,uBAAuB,CAAC,CAAC;QACzBC,uBAAuB,CAAC,CAAC;QACzBC,oBAAoB,CAAC,CAAC;MAC1B,CAAC,MAAM;QACHh3M,WAAW,GAAG,EAAE;QAChBh6G,QAAQ,CAAC5E,QAAQ,CAACmpH,mBAAmB,EAAE+oM,kBAAkB,CAAC;MAC9D;IACJ;IACA,IAAI9sL,EAAE,EAAE;MACJuZ,mBAAmB,CAAC,CAAC,CAAC,GAAGvZ,EAAE,CAAChT,UAAU;MACtC5X,sBAAsB,CAAC,CAAC;MACxBs7M,wBAAwB,CAAC,CAAC;IAC9B;EACJ;EACA,SAASt7M,sBAAsBA,CAAA,EAAG;IAC9B+xB,aAAa,CAACgB,0BAA0B,CACpCoR,mBAAmB,CAAC,CAAC,CAAC,EACtB1tB,WAAW,EACX,UAAUnmB,OAAO,EAAE;MACf,IAAInlG,IAAI,GAAGmlG,OAAO,CAACnhG,GAAG,CAACsX,CAAC,IAAI;QACxB,OAAO;UACHzc,KAAK,EAAEyc,CAAC,CAAC05F,QAAQ;UACjBp3G,IAAI,EAAE0d,CAAC,CAAC25F;QACZ,CAAC;MACL,CAAC,CAAC;MACF;MACA;MACA,IAAIh1G,UAAU;MAEd,IAAIw/H,EAAE,IAAIA,EAAE,CAACzR,QAAQ,EAAE;QACnB/tH,UAAU,GAAGw/H,EAAE,CAACzR,QAAQ;MAC5B,CAAC,MAAM;QACHhZ,QAAQ,GAAGh1G,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAGmB,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAG,EAAE;QACxDoB,UAAU,GAAG+0G,QAAQ;MACzB;MAEA/1G,QAAQ,CAAC5E,QAAQ,CAAC22G,cAAc,EAAEhxG,IAAI,EAAEC,UAAU,CAAC;IACvD,CACJ,CAAC;EACL;EACA,SAASkwT,wBAAwBA,CAAA,EAAG;IAChC,IAAIC,cAAc,GAAG;MAAE9kM,WAAW;MAAExrE,UAAU,EAAEk5F,mBAAmB,CAAC,CAAC;IAAE,CAAC;IACxEpS,aAAa,CAACiB,sCAAsC,CAACuoL,cAAc,EAAE,UAAUjrN,OAAO,EAAE;MACpF,IAAInlG,IAAI,GAAGmlG,OAAO,CAACnhG,GAAG,CAACsX,CAAC,IAAI;QACxB,OAAO;UACHzc,KAAK,EAAEyc,CAAC,CAAC0wB,IAAI;UACbpuC,IAAI,EAAE0d,CAAC,CAAC+5F;QACZ,CAAC;MACL,CAAC,CAAC;MACFr1G,IAAI,CAAC49D,OAAO,CAAC;QAAE/+D,KAAK,EAAE,EAAE;QAAEjB,IAAI,EAAE;MAAG,CAAC,CAAC;MACrC,IAAIqC,UAAU;MAEd,IAAIw/H,EAAE,IAAIA,EAAE,CAAC5R,iBAAiB,EAAE;QAC5B5tH,UAAU,GAAGw/H,EAAE,CAAC5R,iBAAiB;MACrC,CAAC,MAAM;QACH;QACAi/L,iBAAiB,GAAG9sT,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAGmB,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAG,IAAI;MACvE;MAEA,IAAIwM,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EACvCtM,QAAQ,CAAC5E,QAAQ,CAACkxT,uBAAuB,EAAEvrT,IAAI,EAAEC,UAAU,CAAC;IACpE,CAAC,CAAC;EACN;;EAEA;EACA;EACA,SAAS6qT,WAAWA,CAAA,EAAG;IACnB;IACA;EAAA;EAEJ,SAAStB,UAAUA,CAAA,EAAG;IAClB2B,YAAY,CAACrxT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACzCkwH,mBAAmB,CAAC,CAAC;EACzB;EACA;EACA,SAAS3T,iBAAiBA,CAACp1C,KAAK,EAAE;IAC9B,IAAIq1C,IAAI,GAAGt5G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACxC+4G,IAAI,CAACz8G,SAAS,CAACE,GAAG,CAAC,qBAAqB,CAAC;IACzCu8G,IAAI,CAAC77G,WAAW,CAACwmE,KAAK,CAAC;IACvB,OAAOq1C,IAAI;EACf;EAEA,SAASgzM,6BAA6BA,CAAA,EAAG;IACrC;;IAEA,MAAMlkJ,YAAY,GAAGpoK,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IAC9D,IAAIkgK,eAAe,GAAGr0D,OAAO,CAACC,kBAAkB,CAAC,CAAC;IAClD,IAAIqnN,oBAAoB,GAAGtnN,OAAO,CAAC0yJ,yBAAyB,CAAC,CAAC;;IAE9D;IACA;IACA,IAAI2wD,UAAU,KAAK,KAAK,EAAE;MACtB;MACA,IAAI3B,iBAAiB,GAAGxtT,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC;MACpEuqT,iBAAiB,CAAC3wT,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;;MAEzC;MACA,MAAMs2T,SAAS,GAAGlzJ,eAAe,CAAC,CAAC,CAAC;MACpC;MACA,IAAIl8F,KAAK,GAAGovP,SAAS,CAAC/5M,IAAI,CAACjqG,SAAS,CAAC,IAAI,CAAC;MAC1C,IAAIiqG,IAAI,GAAGD,iBAAiB,CAACp1C,KAAK,CAAC;MACnCq1C,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;MACpCsrK,YAAY,CAAC3qK,WAAW,CAAC67G,IAAI,CAAC;;MAE9B;MACAA,IAAI,CAACn5G,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;QACpC,IAAImmS,eAAe,GAAG9jS,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;QAChE,IAAIipG,QAAQ,GAAGvrG,KAAK,CAACC,MAAM,CAAC+I,YAAY,CAAC,kBAAkB,CAAC;QAC5DhJ,KAAK,CAACC,MAAM,CAACuI,aAAa,CAACrJ,MAAM,CAAC,CAAC;QACnCi/I,mBAAmB,GAAGA,mBAAmB,CAACvwI,MAAM,CAACuI,IAAI,IAAIA,IAAI,KAAKm1F,QAAQ,CAAC;QAC3E4C,OAAO,CAAC8iD,iCAAiC,CAAC1lD,QAAQ,CAAC;QACnD,IAAI6yC,mBAAmB,CAACz+I,MAAM,KAAK,CAAC,EAAE;UAClC,IAAIwmS,eAAe,EAAEA,eAAe,CAACjnS,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UACjE41T,8BAA8B,CAAC,CAAC;UAChC;UACA,IAAIvD,UAAU,KAAK,KAAK,EAAE;YACtB,IAAI3B,iBAAiB,GAAGxtT,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC;YACpEuqT,iBAAiB,CAAC3wT,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;UAChD;QACJ;QACAkwH,mBAAmB,CAAC,CAAC;QACrBsmM,uBAAuB,CAAC,CAAC;QACzB,IAAInE,UAAU,KAAK,QAAQ,EAAE;UACzB,IAAIpzK,mBAAmB,CAACz+I,MAAM,KAAK,CAAC,EAAE;YAClC+yT,kBAAkB,GAAG,KAAK;UAC9B;QACJ;MACJ,CAAC,CAAC;MAEFt0K,mBAAmB,CAAC3wI,IAAI,CAACioT,SAAS,CAAC7yT,EAAE,CAAC;MACtC8yT,uBAAuB,CAAC,CAAC;IAC7B;;IAEA;IACA;IACA,IAAInE,UAAU,KAAK,QAAQ,EAAE;MACzB,IAAI,CAAC7jM,eAAe,EAAE;QAClB+kM,kBAAkB,GAAG,KAAK;MAC9B,CAAC,MAAM,IAAI,CAACD,WAAW,IAAI9kM,eAAe,EAAE;QACxC+kM,kBAAkB,GAAG,IAAI;MAC7B;MAEA,IAAI/kM,eAAe,EAAE;QACjB60C,eAAe,CAAC5iK,OAAO,CAACg2T,SAAS,IAAI;UACjC;UACA,IAAIx3K,mBAAmB,CAACvwI,MAAM,CAAChL,EAAE,IAAIA,EAAE,KAAK+yT,SAAS,CAAC/yT,EAAE,CAAC,CAAClD,MAAM,GAAG,CAAC,EAAE;UACtE;UACA,MAAMk2T,iBAAiB,GAAGJ,oBAAoB,CAAC5nT,MAAM,CAACioT,GAAG,IAAI;YACzD,MAAMC,MAAM,GAAGD,GAAG,CAACjzT,EAAE,KAAK+yT,SAAS,CAAC/yT,EAAE;YACtC,OAAOkzT,MAAM;UACjB,CAAC,CAAC;UACF,IAAIF,iBAAiB,CAACl2T,MAAM,KAAK,CAAC,EAAE;YAChC;UACJ;;UAEA;UACA,IAAI2mE,KAAK,GAAGsvP,SAAS,CAACj6M,IAAI,CAACjqG,SAAS,CAAC,IAAI,CAAC;UAC1C,IAAIiqG,IAAI,GAAGD,iBAAiB,CAACp1C,KAAK,CAAC;UACnCq1C,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;UACpCsrK,YAAY,CAAC3qK,WAAW,CAAC67G,IAAI,CAAC;;UAE9B;UACAA,IAAI,CAACn5G,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;YACpC,IAAImmS,eAAe,GAAG9jS,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;YAChE,IAAIipG,QAAQ,GAAGvrG,KAAK,CAACC,MAAM,CAAC+I,YAAY,CAAC,kBAAkB,CAAC;YAC5DhJ,KAAK,CAACC,MAAM,CAACuI,aAAa,CAACrJ,MAAM,CAAC,CAAC;YACnCi/I,mBAAmB,GAAGA,mBAAmB,CAACvwI,MAAM,CAACuI,IAAI,IAAIA,IAAI,KAAKm1F,QAAQ,CAAC;YAC3E4C,OAAO,CAAC8iD,iCAAiC,CAAC1lD,QAAQ,CAAC;YACnD,IAAI6yC,mBAAmB,CAACz+I,MAAM,KAAK,CAAC,EAAE;cAClC,IAAIwmS,eAAe,EAAEA,eAAe,CAACjnS,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;cACjE41T,8BAA8B,CAAC,CAAC;cAChC;cACA,IAAIvD,UAAU,KAAK,KAAK,EAAE;gBACtB,IAAI3B,iBAAiB,GAAGxtT,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC;gBACpEuqT,iBAAiB,CAAC3wT,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;cAChD;YACJ;YACAkwH,mBAAmB,CAAC,CAAC;YACrBsmM,uBAAuB,CAAC,CAAC;YACzB,IAAInE,UAAU,KAAK,QAAQ,EAAE;cACzB,IAAIpzK,mBAAmB,CAACz+I,MAAM,KAAK,CAAC,EAAE;gBAClC+yT,kBAAkB,GAAG,KAAK;cAC9B;YACJ;UACJ,CAAC,CAAC;UAEFt0K,mBAAmB,CAAC3wI,IAAI,CAACmoT,SAAS,CAAC/yT,EAAE,CAAC;UACtC8yT,uBAAuB,CAAC,CAAC;QAC7B,CAAC,CAAC;MACN,CAAC,MAAM;QACH;QACA,IAAIz6M,kBAAkB,GAAGsnD,eAAe,CAACA,eAAe,CAAC7iK,MAAM,GAAG,CAAC,CAAC,CAACkD,EAAE;QACvE,MAAMmrO,oBAAoB,GAAGxrE,eAAe,CACxCA,eAAe,CAAC7iK,MAAM,GAAG,CAAC,CAC7B,CAACg8G,IAAI,CAAC90G,SAAS,CAACoG,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnC,MAAMkjT,eAAe,GAAGniF,oBAAoB,CAACxqN,KAAK,CAAC,GAAG,CAAC;QACvD,MAAM4sS,UAAU,GAAGD,eAAe,CAAC,CAAC,CAAC;QACrC,MAAME,UAAU,GAAGF,eAAe,CAAC,CAAC,CAAC;;QAErC;QACA,IAAIG,WAAW,GAAG,IAAI;QACtBA,WAAW,GAAGniN,OAAO,CAACuN,iBAAiB,CAAC;UACpC2+H,EAAE,EAAE+1E,UAAU;UACd91E,EAAE,EAAE+1E,UAAU;UACdxtT,EAAE,EAAEq4G;QACR,CAAC,CAAC;QACFo1M,WAAW,CAACpxT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;;QAExC;QACA+lD,UAAU,GAAGg2D,kBAAkB;QAC/B2zB,YAAY,GAAG,GAAGuhL,UAAU,IAAIC,UAAU,EAAE;;QAE5C;QACAjyK,mBAAmB,GAAG,CAACljC,kBAAkB,CAAC;QAC1C/M,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;QAC9B3qC,OAAO,CAACyoI,4BAA4B,CAAC05E,WAAW,CAAC;;QAEjD;QACA,IAAIz9K,UAAU,GAAGxwI,QAAQ,CAACC,aAAa,CAAC,eAAe,CAAC;QACxDuwI,UAAU,CAACrzI,SAAS,GAAG,qBAAqBqvI,YAAY,OAAO;MACnE;IACJ;;IAEA;IACA50B,sBAAsB,CAAC,CAAC;IACxB,IAAIxpG,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzC4kT,wBAAwB,CAAC,CAAC;IAC9B,CAAC,MAAM;MACHP,qBAAqB,CAAC,gBAAgB,CAAC;IAC3C;IACA3lM,mBAAmB,CAAC,CAAC,CAAC,CAAC;EAC3B;EACA;EACA,SAAS2mM,YAAYA,CAAA,EAAG;IACpB,IAAIC,aAAa,GAAG5zT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD,IAAIszT,iBAAiB,GAAG7zT,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACpDszT,iBAAiB,CAAC12T,SAAS,GAAG,UAAU;IACxCy2T,aAAa,CAACn2T,WAAW,CAACo2T,iBAAiB,CAAC;IAC5CD,aAAa,CAAC/2T,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAC3C,IAAI+2T,WAAW,GAAG9zT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CuzT,WAAW,CAACj3T,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAEvC,IAAIg3T,OAAO,GAAG/zT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CwzT,OAAO,CAACvzT,EAAE,GAAG,SAAS;IACtBuzT,OAAO,CAACl3T,SAAS,CAACE,GAAG,CAAC,MAAM,CAAC;IAC7Bg3T,OAAO,CAACt2T,WAAW,CAACm2T,aAAa,CAAC;IAClCG,OAAO,CAACt2T,WAAW,CAACq2T,WAAW,CAAC;IAEhC5kT,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACs2T,OAAO,CAAC;IAErC,IAAIz3L,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,GAAG,EAAEy3L,OAAO,CAACl3T,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;;IAE1E;IACA,IAAIwuH,kBAAkB,EAAE;MACpB,IAAIsS,YAAY,CAACtS,kBAAkB,CAAC,CAACiR,eAAe,KAAK,GAAG,EAAE;QAC1Du3L,OAAO,CAACl3T,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QAClC;MACJ;IACJ;IAEA,IAAIk3T,cAAc,GAAGh0T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDyzT,cAAc,CAACn3T,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;;IAEzC;IACA,IAAIwvC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAClD2xT,aAAa,GAAGtuT,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,OAAO;MACbH,EAAE,EAAE,cAAc;MAClBM,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBU,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,cAAc;QAAEC,KAAK,EAAE;MAAQ,CAAC,CAAC;MACrDC,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB;QACA,IAAIstI,YAAY,KAAK,IAAI,EAAE;QAC3BL,kBAAkB,CAACmB,UAAU,CAACtc,iBAAiB,CAAC;QAChDwb,YAAY,GAAG,IAAI;QACnB;MACJ;IACJ,CAAC,CAAC;IACFw/K,YAAY,GAAGvuT,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,MAAM;MACZH,EAAE,EAAE,aAAa;MACjBM,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB;QACA,IAAIstI,YAAY,KAAK,KAAK,EAAE;QAC5Bxb,iBAAiB,GAAGmb,kBAAkB,CAACc,SAAS,CAAC,CAAC;QAClDT,YAAY,GAAG,KAAK;MACxB;IACJ,CAAC,CAAC;;IAEF;IACA,IAAI8kL,aAAa,GAAGzxL,EAAE,GAChBA,EAAE,CAAC7J,YAAY,GACX35G,IAAI,CAAC0F,KAAK,CAAC1F,IAAI,CAACuC,KAAK,CAACqG,QAAQ,CAAC46G,EAAE,CAAC7J,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAC1D,CAAC,GACL,CAAC;IACPo2L,mBAAmB,GAAGlrT,KAAK,CAACxD,KAAK,CAAC;MAC9B8B,KAAK,EAAE,kBAAkB;MACzB3B,EAAE,EAAE,uBAAuB;MAC3BO,IAAI,EAAE,MAAM;MACZU,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,EAC1B;QAAED,GAAG,EAAE,WAAW;QAAEC,KAAK,EAAE;MAAI,CAAC,EAChC;QACID,GAAG,EAAE,YAAY;QACjBC,KAAK,EAAE;MACX,CAAC,CACJ;MACDQ,QAAQ,EAAEgM,CAAC,CAACC,OAAO,CAAConC,sBAAsB,KAAK,KAAK,GAAG,IAAI,GAAG,KAAK;MACnE7zC,KAAK,EAAEmhB,MAAM,CAACkxS,aAAa;IAC/B,CAAC,CAAC;IAEFjF,sBAAsB,GAAGnrT,KAAK,CAACxD,KAAK,CAAC;MACjC8B,KAAK,EAAE,qBAAqB;MAC5B3B,EAAE,EAAE,0BAA0B;MAC9BiB,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,EAC1B;QAAED,GAAG,EAAE,WAAW;QAAEC,KAAK,EAAE;MAAI,CAAC,EAChC;QACID,GAAG,EAAE,YAAY;QACjBC,KAAK,EAAE;MACX,CAAC,CACJ;MACDA,KAAK,EAAE4gI,EAAE,GAAIA,EAAE,CAAClR,UAAU,GAAGkR,EAAE,CAAClR,UAAU,GAAG,EAAE,GAAI,EAAE;MACrDvwH,IAAI,EAAE;IACV,CAAC,CAAC;;IAEF;IACAguT,mBAAmB,CAAC5uT,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACnD,IAAIA,KAAK,CAACC,MAAM,CAACgE,KAAK,CAACtE,MAAM,GAAG,CAAC,EAAE;QAC/BK,KAAK,CAACC,MAAM,CAACgE,KAAK,GAAGjE,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC6kB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;MACxD;IACJ,CAAC,CAAC;IACFuoS,sBAAsB,CAAC7uT,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACtD,IAAIA,KAAK,CAACC,MAAM,CAACgE,KAAK,CAACtE,MAAM,GAAG,CAAC,EAAE;QAC/BK,KAAK,CAACC,MAAM,CAACgE,KAAK,GAAGjE,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC6kB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;MACxD;IACJ,CAAC,CAAC;IAEFutS,cAAc,CAACv2T,WAAW,CAACsxT,mBAAmB,CAAC;IAC/CiF,cAAc,CAACv2T,WAAW,CAACuxT,sBAAsB,CAAC;IAClDziR,OAAO,CAAC9uC,WAAW,CAACixT,aAAa,CAAC;IAClCniR,OAAO,CAAC9uC,WAAW,CAACkxT,YAAY,CAAC;IAEjCmF,WAAW,CAACr2T,WAAW,CAAC8uC,OAAO,CAAC;IAChCunR,WAAW,CAACr2T,WAAW,CAACu2T,cAAc,CAAC;IAEvC,OAAOD,OAAO;EAClB;EACA,SAASG,iBAAiBA,CAAC7mM,SAAS,EAAE;IAClC,MAAM8mM,QAAQ,GAAG9mM,SAAS,CAAC5b,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;IACtD,IAAIl9E,IAAI;IAER,IAAI4/R,QAAQ,KAAK,IAAI,EAAE;MACnB5/R,IAAI,GAAG,GAAG84F,SAAS,CAAClsG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;IAC1C,CAAC,MAAM;MACHoT,IAAI,GAAG,GAAG84F,SAAS,CAAClsG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;IAC1C;IAEAoT,IAAI,GAAG7D,IAAI,CAACgF,iBAAiB,CAACnB,IAAI,CAAC;IACnC,OAAOA,IAAI,CAAChoB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC5B;EACA,SAAS6nT,4BAA4BA,CAAA,EAAG;IACpC,MAAM1mM,SAAS,GAAGwmM,iBAAiB,CAAC9lT,CAAC,CAACC,OAAO,CAAC8mD,yBAAyB,CAAC;IACxE,MAAMw4D,OAAO,GAAGumM,iBAAiB,CAAC9lT,CAAC,CAACC,OAAO,CAACgnD,uBAAuB,CAAC;IAEpE,IACIjnD,CAAC,CAACC,OAAO,CAAC8mD,yBAAyB,KAAK,OAAO,IAC/C/mD,CAAC,CAACC,OAAO,CAACgnD,uBAAuB,KAAK,OAAO,IAC7C,CAACjnD,CAAC,CAACC,OAAO,CAAC8mD,yBAAyB,IACpC,CAAC/mD,CAAC,CAACC,OAAO,CAACgnD,uBAAuB,IAClCjnD,CAAC,CAACC,OAAO,CAAC8mD,yBAAyB,KAAK,MAAM,IAC9C/mD,CAAC,CAACC,OAAO,CAACgnD,uBAAuB,KAAK,MAAM,EAC9C;MACE,OAAO,IAAI;IACf;IAEA,IAAIh/B,SAAS,GAAGq3F,SAAS,IAAIr3F,SAAS,GAAGs3F,OAAO,IAAIr4F,OAAO,GAAGo4F,SAAS,IAAIp4F,OAAO,GAAGq4F,OAAO,EAAE;MAC1F,OAAO,KAAK;IAChB;IAEA,OAAO,IAAI;EACf;EACA,SAAS0mM,uBAAuBA,CAAA,EAAG;IAC/B,eAAeC,aAAaA,CAAC9H,UAAU,EAAE;MACrC,SAAS+H,OAAOA,CAAA,EAAG;QACf,IAAInmT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,IAAI6gI,YAAY,EAAE;UAC5Dxb,iBAAiB,GAAGmb,kBAAkB,CAACc,SAAS,CAAC,CAAC;UAClDT,YAAY,GAAG,KAAK;QACxB;QACA;QACA,IAAI/gI,CAAC,CAACC,OAAO,CAAC+xC,UAAU,IAAIpgD,QAAQ,CAACqG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC/I,MAAM,GAAG,CAAC,EAAE;UAChF,MAAMk3T,cAAc,GAAGx0T,QAAQ,CAACqG,gBAAgB,CAAC,gBAAgB,CAAC;UAClEmuT,cAAc,CAACj3T,OAAO,CAACmnI,IAAI,IAAI;YAC3BA,IAAI,CAACv7G,aAAa,CAAC,IAAIH,KAAK,CAAC,OAAO,CAAC,CAAC;UAC1C,CAAC,CAAC;QACN;MACJ;MAEA,IACI,CAAC8mS,mBAAmB,CAACxyT,MAAM,GAAG,CAAC,IAAI2sT,qBAAqB,CAAC3sT,MAAM,GAAG,CAAC,KACnE+yT,kBAAkB,EACpB;QACE,MAAM5jR,cAAc,GAAG;AACvC,+DAA+D;QAC/CJ,YAAY,CACRI,cAAc,EACd,YAAY;UACRgoR,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UAC3Cw3T,OAAO,CAAC,CAAC;UACT,IAAInmT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;YAC5C,MAAMomT,uBAAuB,GAAGN,4BAA4B,CAAC,CAAC;YAC9D,IAAIM,uBAAuB,EAAE;cACzB,MAAM3C,cAAc,CAACvF,UAAU,CAAC;YACpC,CAAC,MAAM;cACHngR,YAAY,CACR;AACpC,uEAAuE,EACnC,YAAY;gBACR,MAAM0lR,cAAc,CAACvF,UAAU,CAAC;cACpC,CAAC,EACD,MAAM;gBACFiI,WAAW,CAAC53T,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;gBACxC8xT,iBAAiB,CAAC/xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;gBAC9C;cACJ,CACJ,CAAC;YACL;UACJ,CAAC,MAAM;YACH,MAAMi1T,cAAc,CAACvF,UAAU,CAAC;UACpC;QACJ,CAAC,EACD,MAAM;UACF;QACJ,CACJ,CAAC;MACL,CAAC,MAAM;QACHiI,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC3Cw3T,OAAO,CAAC,CAAC;QACT,IAAInmT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;UAC5C,MAAMomT,uBAAuB,GAAGN,4BAA4B,CAAC,CAAC;UAC9D,IAAIM,uBAAuB,EAAE;YACzB,MAAM3C,cAAc,CAACvF,UAAU,CAAC;UACpC,CAAC,MAAM;YACHngR,YAAY,CACR;AAC5B,mEAAmE,EACvC,YAAY;cACR,MAAM0lR,cAAc,CAACvF,UAAU,CAAC;YACpC,CAAC,EACD,MAAM;cACFiI,WAAW,CAAC53T,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;cACxC8xT,iBAAiB,CAAC/xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;cAC9C;YACJ,CACJ,CAAC;UACL;QACJ,CAAC,MAAM;UACH,MAAMi1T,cAAc,CAACvF,UAAU,CAAC;QACpC;MACJ;IACJ;IACA;;IAEA,IAAI/7E,OAAO,GAAGzwO,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CkwO,OAAO,CAAC5zO,SAAS,CAACE,GAAG,CAAC,YAAY,EAAE,uBAAuB,CAAC;IAC5D;IACAkyT,gBAAgB,GAAGjvT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD0uT,gBAAgB,CAACpyT,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAClDkyT,gBAAgB,CAAC9xT,SAAS,GAAGkyT,cAAc;;IAE3C;IACA,IAAIvuT,KAAK,GAAG,WAAW;IAEvB8wT,kBAAkB,CAAC,CAAC;IAEpBrrM,mBAAmB,GAAGvkH,QAAQ,CAAC3B,KAAK,CAAC;MACjC4B,UAAU,EAAE,qBAAqB;MACjCE,KAAK,EAAEiM,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,GAAG,YAAY,GAAG,aAAa;MAChFxN;IACJ,CAAC,CAAC;IACF;;IAEA0qJ,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAC9B4B,UAAU,EAAE,iBAAiB;MAC7BE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFkvN,eAAe,GAAGhuN,QAAQ,CAAC3B,KAAK,CAAC;MAC7B4B,UAAU,EAAE,gBAAgB;MAC5BE,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIsN,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzCggT,uBAAuB,GAAGtsT,QAAQ,CAAC3B,KAAK,CAAC;QACrC8B,KAAK,EAAE,kBAAkB;QACzBrB;MACJ,CAAC,CAAC;IACN;IACA89S,YAAY,GAAG58S,QAAQ,CAAC3B,KAAK,CAAC;MAC1B4B,UAAU,EAAE,aAAa;MACzBE,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFizG,cAAc,GAAG/xG,QAAQ,CAAC3B,KAAK,CAAC;MAC5B8B,KAAK,EAAE,QAAQ;MACfrB;IACJ,CAAC,CAAC;IACF+9S,eAAe,GAAG78S,QAAQ,CAAC3B,KAAK,CAAC;MAC7B4B,UAAU,EAAE,gBAAgB;MAC5BE,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF;IACA0tM,gBAAgB,GAAG3qM,KAAK,CAACxD,KAAK,CAAC;MAC3B8B,KAAK,EAAE,cAAc;MACrBpB,IAAI,EAAE,MAAM;MACZD,KAAK;MACLc,KAAK,EAAEutT,UAAU,KAAK,QAAQ,GAAG9gM,WAAW,GAAG39F,IAAI,CAAC8Z,aAAa,CAAC,CAAC;MACnE/oC,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE8uB,IAAI,CAAC8Z,aAAa,CAAC;MAAE,CAAC;IAC5D,CAAC,CAAC;IACF2jR,cAAc,GAAGtqT,KAAK,CAACxD,KAAK,CAAC;MACzB8B,KAAK,EAAE,YAAY;MACnBpB,IAAI,EAAE,MAAM;MACZD,KAAK;MACLc,KAAK,EAAEy0B;IACX,CAAC,CAAC;IACF+3R,YAAY,GAAGvqT,KAAK,CAACxD,KAAK,CAAC;MACvB8B,KAAK,EAAE,UAAU;MACjBpB,IAAI,EAAE,MAAM;MACZD,KAAK;MACLc,KAAK,EAAE0zB;IACX,CAAC,CAAC;IACF+4R,YAAY,GAAGxqT,KAAK,CAACxD,KAAK,CAAC;MACvB8B,KAAK,EAAE,SAAS;MAChBrB,KAAK;MACLc,KAAK,EAAEuvH,OAAO,KAAK,GAAG,IAAIA,OAAO,KAAK,MAAM,GAAG,EAAE,GAAGA,OAAO;MAC3D1vH,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC;IAC3C,CAAC,CAAC;IACF2sT,YAAY,GAAGnuT,MAAM,CAACC,KAAK,CAAC;MACxBG,EAAE,EAAE,cAAc;MAClBG,IAAI,EAAE,YAAY;MAClBI,IAAI,EAAE,WAAW;MACjBD,KAAK;MACLe,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB;QACA8yT,cAAc,CAAC,CAAC;MACpB;IACJ,CAAC,CAAC;IACFxV,aAAa,GAAGt7S,KAAK,CAACxD,KAAK,CAAC;MACxBG,EAAE,EAAE,eAAe;MACnB2B,KAAK,EAAE,MAAM;MACbpB,IAAI,EAAE,UAAU;MAChBD,KAAK;MACLO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAE2vH,QAAQ;MACfvsH,GAAG,EAAEoJ,CAAC,CAACC,OAAO,CAAC+xC,UAAU,IAAI,CAACoqQ,SAAS,IAAIp8S,CAAC,CAACC,OAAO,CAAC4jC;IACzD,CAAC,CAAC;IACF;IACA48Q,oBAAoB,GAAGhrT,KAAK,CAACyB,aAAa,CAAC;MACvC3E,IAAI,EAAE,cAAc;MACpB6E,SAAS,EAAEisH,YAAY,KAAK,GAAG,GAAG,IAAI,GAAG;IAC7C,CAAC,CAAC;IAEFq9L,yBAAyB,GAAGjrT,KAAK,CAACyB,aAAa,CAAC;MAC5C3E,IAAI,EAAE,4BAA4B;MAClC6E,SAAS,EAAEulI,iBAAiB,KAAK,GAAG,GAAG,IAAI,GAAG;IAClD,CAAC,CAAC;;IAEF;IACAs6K,cAAc,GAAGjlT,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,gBAAgBovT,eAAe,GAAG;MACxCjvT,KAAK;MACLC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,YAAY;MAClBoB,QAAQ,EAAEA,CAAA,KAAM;QACZmoT,YAAY,CAAC9pT,IAAI,CAAC4vT,mBAAmB,EAAE7F,qBAAqB,EAAEO,SAAS,EAAEp8L,MAAM,CAAC;MACpF;IACJ,CAAC,CAAC;IACF,IAAI2hM,eAAe,GAAG,CAAC,EAAE1K,cAAc,CAACxoT,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAEvE,IAAI4D,IAAI,GAAGwuT,UAAU,KAAK,KAAK,GAAG,MAAM,GAAG,QAAQ;IACnDsF,WAAW,GAAGr0T,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI;MACJG,KAAK;MACLC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,MAAM;MACZY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAEA,CAAA,KAAMyyT,aAAa,CAAC,KAAK;IACvC,CAAC,CAAC;IACF1F,iBAAiB,GAAGxuT,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,YAAY;MAClBG,KAAK;MACLC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACXY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAEA,CAAA,KAAMyyT,aAAa,CAAC,IAAI;IACtC,CAAC,CAAC;IACF7F,aAAa,GAAGruT,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,QAAQ;MACdG,KAAK;MACLC,IAAI,EAAE,UAAU;MAChBN,IAAI,EAAE,OAAO;MACbY,UAAU,EAAE,CAAC,gBAAgB,CAAC;MAC9BQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBk6I,mBAAmB,CAACx+I,OAAO,CAACovT,GAAG,IAAI;UAC/B7gN,OAAO,CAAC8iD,iCAAiC,CAAC+9J,GAAG,CAAC;QAClD,CAAC,CAAC;QACF,IAAIx9K,YAAY,KAAK,IAAI,EAAE;UACvBL,kBAAkB,CAACc,SAAS,CAAC,CAAC;UAC9BT,YAAY,GAAG,KAAK;QACxB;QACA5F,aAAa,CAACrpI,IAAI,CAAC,CAAC;MACxB;IACJ,CAAC,CAAC;IACF;IACAsuT,aAAa,GAAGpuT,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,QAAQ;MACdG,KAAK;MACLC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,QAAQ;MACdY,UAAU,EAAE,CAAC,gBAAgB,CAAC;MAC9BQ,QAAQ,EAAEysJ;IACd,CAAC,CAAC;IAEF,IAAI/hH,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACg3T,WAAW,CAAC;IAChC,IAAItF,UAAU,KAAK,QAAQ,EAAE;MACzBsF,WAAW,CAAC53T,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACxCyvC,OAAO,CAAC9uC,WAAW,CAAC+wT,aAAa,CAAC;IACtC,CAAC,MAAM;MACHjiR,OAAO,CAAC9uC,WAAW,CAACmxT,iBAAiB,CAAC;IAC1C;IAEA,MAAMgG,QAAQ,GAAG50T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9Cq0T,QAAQ,CAAC/3T,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACjC63T,QAAQ,CAACn3T,WAAW,CAACgxT,aAAa,CAAC;IACnC;IACA,IAAIU,UAAU,KAAK,KAAK,EAAE;MACtBf,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACvC;;IAEA;IACA,IAAI83T,UAAU,GAAG70T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9C,IAAIu0T,UAAU,GAAG90T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;;IAE9C;IACAs0T,UAAU,CAACp3T,WAAW,CAAC8oH,mBAAmB,CAAC;IAC3CsuM,UAAU,CAACp3T,WAAW,CAAC+tJ,gBAAgB,CAAC;IACxCqpK,UAAU,CAACp3T,WAAW,CAACuyN,eAAe,CAAC;IACvC6kG,UAAU,CAACp3T,WAAW,CAACmhT,YAAY,CAAC;IACpCiW,UAAU,CAACp3T,WAAW,CAACohT,eAAe,CAAC;IAEvC,IAAIzwS,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzCumT,UAAU,CAACp3T,WAAW,CAAC6wT,uBAAuB,CAAC;IACnD;IACAuG,UAAU,CAACp3T,WAAW,CAACs2G,cAAc,CAAC;IAEtC+gN,UAAU,CAACr3T,WAAW,CAAC+wM,gBAAgB,CAAC;IACxCsmH,UAAU,CAACr3T,WAAW,CAAC0wT,cAAc,CAAC;IACtC2G,UAAU,CAACr3T,WAAW,CAAC2wT,YAAY,CAAC;IACpC,IAAI,CAAC5D,SAAS,EAAEsK,UAAU,CAACr3T,WAAW,CAAC8wT,YAAY,CAAC;IACpDuG,UAAU,CAACr3T,WAAW,CAAC0hT,aAAa,CAAC;IACrC2V,UAAU,CAACr3T,WAAW,CAAC4wT,YAAY,CAAC;IACpC,IAAIjgT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAEwmT,UAAU,CAACr3T,WAAW,CAAC4nT,cAAc,CAAC;IACtFyP,UAAU,CAACr3T,WAAW,CAACoxT,oBAAoB,CAAC;IAE5C,IAAIzgT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC5CwmT,UAAU,CAACr3T,WAAW,CAACqxT,yBAAyB,CAAC;MACjDA,yBAAyB,CAACjyT,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;MACtD,IAAIytT,SAAS,EAAE;QACXsE,yBAAyB,CAACr6S,UAAU,CAACxT,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;QACnE6tT,yBAAyB,CAACjyT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvD;IACJ;IACA;IACA,IAAIu/H,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,GAAG,EAAE+xL,YAAY,CAACxxT,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAE/E,IAAIoyT,UAAU,KAAK,QAAQ,EAAE;MACzB,IAAIv8Q,WAAW,KAAK,CAAC,EAAEkiR,UAAU,CAACr3T,WAAW,CAACwxT,gBAAgB,CAAC;MAC/D;MACA,IAAI8F,kBAAkB,GAAG/0T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACtDw0T,kBAAkB,CAACl4T,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;MACtD,IAAIi4T,kBAAkB,GAAGh1T,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;MACpDy0T,kBAAkB,CAAC73T,SAAS,GAAG;AAC3C,wBAAwB2jO,WAAW,qBAAqBtgG,SAAS,KAAKixL,gBAAgB,OAAO;MACjFsD,kBAAkB,CAACt3T,WAAW,CAACu3T,kBAAkB,CAAC;MAElD,IAAIC,oBAAoB,GAAGj1T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACxD00T,oBAAoB,CAACp4T,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;MACvDozT,iBAAiB,GAAGtsT,KAAK,CAACyB,aAAa,CAAC;QACpC3E,IAAI,EAAE,WAAW;QACjB6E,SAAS,EAAEgyH,SAAS,KAAK,GAAG,GAAG,IAAI,GAAG;MAC1C,CAAC,CAAC;MAEFy9L,oBAAoB,CAACx3T,WAAW,CAAC0yT,iBAAiB,CAAC;;MAEnD;MACA,IAAI+E,UAAU;MACd,QAAQjF,aAAa;QACjB,KAAK,GAAG;UACJiF,UAAU,GAAG,cAAc;UAC3B;QACJ,KAAK,GAAG;UACJA,UAAU,GAAG,QAAQ;UACrB;QACJ,KAAK,GAAG;UACJA,UAAU,GAAG,UAAU;UACvB;QACJ;UACIA,UAAU,GAAGjF,aAAa;UAC1B;MACR;MAEA,IAAIt4L,cAAc,KAAK,GAAG,IAAIvpH,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;QACtE,IAAI6mT,aAAa,GAAGn1T,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QAC/C40T,aAAa,CAACt4T,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;QAC5Co4T,aAAa,CAACh4T,SAAS,GAAG;AAC1C,sEAAsE+3T,UAAU;AAChF,UAAUhF,kBAAkB,KAAK,EAAE,GAAG,EAAE,GAAG,0BAA0BA,kBAAkB,EAAE,EAAE;QAC3E,IAAID,aAAa,KAAK,GAAG,EAAEkF,aAAa,CAAC13T,WAAW,CAACw3T,oBAAoB,CAAC;MAC9E;;MAEA;MACA,IAAIt9L,cAAc,KAAK,GAAG,IAAIvpH,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;QACnE,IAAI6mT,aAAa,GAAGn1T,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QAC/C40T,aAAa,CAACt4T,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;QAC5Co4T,aAAa,CAACh4T,SAAS,GAAG;AAC1C,sEAAsE+3T,UAAU,EAAE;QAClEC,aAAa,CAAC13T,WAAW,CAACw3T,oBAAoB,CAAC;MACnD;IACJ;IAEAH,UAAU,CAACr3T,WAAW,CAAC8uC,OAAO,CAAC;IAC/BuoR,UAAU,CAACr3T,WAAW,CAACm3T,QAAQ,CAAC;IAChCnkF,OAAO,CAAChzO,WAAW,CAACo3T,UAAU,CAAC;IAC/BpkF,OAAO,CAAChzO,WAAW,CAACq3T,UAAU,CAAC;IAC/B,IAAI3F,UAAU,KAAK,QAAQ,EAAE;MACzB2F,UAAU,CAACr3T,WAAW,CAACs3T,kBAAkB,CAAC;MAC1C,IAAIp9L,cAAc,KAAK,GAAG,EAAEm9L,UAAU,CAACr3T,WAAW,CAAC03T,aAAa,CAAC;IACrE;IAEA,IAAI/mT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAEqlT,YAAY,CAAC,CAAC;IAE9DzkT,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACgzO,OAAO,CAAC;IAErCgiF,sBAAsB,CAAC,CAAC;IACxB;IACAa,uBAAuB,CAAC,CAAC;IACzB8B,eAAe,CAAC,CAAC;IACjB5C,mBAAmB,CAAC,CAAC;IACrB,IAAIpkT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzC+mT,sBAAsB,CAAC,CAAC;IAC5B;IAEAnmT,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;IAEtB,OAAO45M,OAAO;EAClB;EACA,SAASm9E,kBAAkBA,CAAA,EAAG;IAC1B,IAAIxlJ,YAAY,GAAGpoK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nK,YAAY,CAACvrK,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAE5C,OAAOqrK,YAAY;EACvB;EAEA,SAASslJ,iBAAiBA,CAAA,EAAG;IACzBQ,YAAY,GAAGluT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C2tT,YAAY,CAACrxT,SAAS,CAACE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAElD,IAAIyzI,UAAU,GAAGxwI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9CiwI,UAAU,CAAC3zI,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IACxCyzI,UAAU,CAACrzI,SAAS,GAChBgyT,UAAU,KAAK,KAAK,GAAG,mBAAmB,GAAG,qBAAqB3iL,YAAY,OAAO;IAEzF,IAAI8oL,WAAW,GAAGjB,uBAAuB,CAAC,CAAC;;IAE3C;IACAnG,YAAY,CAACzwT,WAAW,CAAC+yI,UAAU,CAAC;IACpC09K,YAAY,CAACzwT,WAAW,CAAC63T,WAAW,CAAC;IAErC,OAAOpH,YAAY;EACvB;EAEA,SAASyG,cAAcA,CAAA,EAAG;IACtBjK,eAAe,CAACztT,IAAI,CAACkiT,aAAa,CAACl/S,aAAa,CAAC,qBAAqB,CAAC,CAAC2B,KAAK,CAAC;EAClF;EACA,SAASyqT,aAAaA,CAACjwS,IAAI,EAAE;IACzBm1G,QAAQ,GAAGn1G,IAAI;IACf4wG,mBAAmB,CAAC,CAAC;EACzB;EAEA,SAASuoM,oBAAoBA,CAAA,EAAG;IAC5B,IAAIv1T,QAAQ,CAACiD,cAAc,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC7DuyT,YAAY,GAAGzlT,KAAK,CAAC1P,KAAK,CAAC;MACvBG,EAAE,EAAE;IACR,CAAC,CAAC;IACF,IAAIiqJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBP,EAAE,EAAE,cAAc;MAClBqB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBitI,kBAAkB,CAACmB,UAAU,CAACtc,iBAAiB,CAAC;QAChDwb,YAAY,GAAG,IAAI;QACnBp/H,KAAK,CAAC/S,IAAI,CAACw4T,YAAY,CAAC;MAC5B;IACJ,CAAC,CAAC;IACF,IAAI9qK,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBP,EAAE,EAAE,aAAa;MACjBqB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAACw4T,YAAY,CAAC;MAC5B;IACJ,CAAC,CAAC;IACF,IAAIjpR,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAE1B,IAAI+qK,SAAS,GAAGz1T,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3Ck1T,SAAS,CAACt4T,SAAS,GACf,0FAA0F;IAC9Fq4T,YAAY,CAAC/3T,WAAW,CAACg4T,SAAS,CAAC;IACnCD,YAAY,CAAC/3T,WAAW,CAAC8uC,OAAO,CAAC;IACjCx8B,KAAK,CAAC9S,IAAI,CAACu4T,YAAY,CAAC;EAC5B;EAEA,SAASH,sBAAsBA,CAACK,YAAY,EAAE;IAC1C,IAAIC,0BAA0B,GAAG31T,QAAQ,CAACiD,cAAc,CAAC,qBAAqB,CAAC;IAC/E+4G,WAAW,GACP25M,0BAA0B,CAACr1T,OAAO,CAACq1T,0BAA0B,CAAClzT,aAAa,CAAC,CAACb,KAAK;IACtF,IAAIo6G,WAAW,KAAK,EAAE,EAAE;MACpBuK,mBAAmB,CAAC1pH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MAC1CiwH,mBAAmB,CAAC,CAAC;MACrB;IACJ,CAAC,MAAMzG,mBAAmB,CAAC1pH,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACpDyzT,mBAAmB,GAAG1yL,YAAY,CAAC7hB,WAAW,CAAC,CAACkY,gBAAgB;IAChEu8L,eAAe,GAAG5yL,YAAY,CAAC7hB,WAAW,CAAC,CAACoY,YAAY;IACxDs8L,kBAAkB,GAAG7yL,YAAY,CAAC7hB,WAAW,CAAC,CAACsY,eAAe;IAC9Dk8L,kBAAkB,GAAG3yL,YAAY,CAAC7hB,WAAW,CAAC,CAACwY,eAAe;IAE9D,IAAI19E,SAAS,GAAG+mF,YAAY,CAAC7hB,WAAW,CAAC,CAACllE,SAAS;IACnD,IAAIy5Q,mBAAmB,KAAK,GAAG,IAAIz5Q,SAAS,CAACx5C,MAAM,KAAK,CAAC,EAAE;MACvDkuJ,gBAAgB,CAAC3uJ,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC9C,CAAC,MAAM,IAAIyzT,mBAAmB,KAAK,GAAG,KAAKj/P,UAAU,KAAK,EAAE,IAAIA,UAAU,KAAK,GAAG,CAAC,EAAE;MACjFk6F,gBAAgB,CAAC3uJ,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC3C,CAAC,MAAMyuJ,gBAAgB,CAAC3uJ,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAEjD,IAAIs/H,KAAK,GAAGyB,YAAY,CAAC7hB,WAAW,CAAC,CAACogB,KAAK;IAC3C,IAAIq0L,eAAe,KAAK,GAAG,IAAIr0L,KAAK,CAAC9+H,MAAM,KAAK,CAAC,EAAE;MAC/CshT,YAAY,CAAC/hT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM,IAAI2zT,eAAe,KAAK,GAAG,KAAK3+B,MAAM,KAAK,EAAE,IAAIA,MAAM,KAAK,GAAG,CAAC,EAAE;MACrE8sB,YAAY,CAAC/hT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACvC,CAAC,MAAM6hT,YAAY,CAAC/hT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAE7C,IAAIo/H,QAAQ,GAAG2B,YAAY,CAAC7hB,WAAW,CAAC,CAACkgB,QAAQ;IACjD,IAAIw0L,kBAAkB,KAAK,GAAG,IAAIx0L,QAAQ,CAAC5+H,MAAM,KAAK,CAAC,EAAE;MACrDuhT,eAAe,CAAChiT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C,CAAC,MAAM,IAAI4zT,kBAAkB,KAAK,GAAG,KAAKn7D,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,GAAG,CAAC,EAAE;MAC9EspD,eAAe,CAAChiT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM8hT,eAAe,CAAChiT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAEhD,IAAIq/H,QAAQ,GAAG0B,YAAY,CAAC7hB,WAAW,CAAC,CAACmgB,QAAQ;IACjD,IAAIq0L,kBAAkB,KAAK,GAAG,IAAIr0L,QAAQ,CAAC7+H,MAAM,KAAK,CAAC,EAAE;MACrD0yN,eAAe,CAACnzN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C,CAAC,MAAM,IAAI0zT,kBAAkB,KAAK,GAAG,KAAKl0L,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,GAAG,CAAC,EAAE;MAC9E0zF,eAAe,CAACnzN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAMizN,eAAe,CAACnzN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;;IAEhD;IACA,IAAIsR,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,KAAKguH,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,GAAG,CAAC,EAAE;MACpF/V,mBAAmB,CAAC1pH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9C;IAEAiwH,mBAAmB,CAAC,CAAC;EACzB;EAEA,SAAS2lM,qBAAqBA,CAAC+C,YAAY,EAAE;IACzC,IAAIC,0BAA0B,GAAG31T,QAAQ,CAACiD,cAAc,CAAC,qBAAqB,CAAC;IAC/E,IAAI6gS,eAAe,GAAG9jS,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;IAChE,IAAI21T,cAAc,GAAG51T,QAAQ,CAACiD,cAAc,CAAC,SAAS,CAAC;IACvD,IAAI4yT,YAAY,GAAG71T,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IAC5D,IAAI8uT,mBAAmB,GAAG/uT,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC;IAC1E,IAAI+rT,sBAAsB,GAAGhvT,QAAQ,CAACiD,cAAc,CAAC,0BAA0B,CAAC;IAChF+4G,WAAW,GACP25M,0BAA0B,CAACr1T,OAAO,CAACq1T,0BAA0B,CAAClzT,aAAa,CAAC,CAACb,KAAK;IACtF,IAAIo6G,WAAW,KAAK,EAAE,EAAE;MACpBuK,mBAAmB,CAAC1pH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MAC1CiwH,mBAAmB,CAAC,CAAC;MACrB;IACJ,CAAC,MAAMzG,mBAAmB,CAAC1pH,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACpD,IAAI0/H,eAAe,GAAGqB,YAAY,CAAC7hB,WAAW,CAAC,CAACwgB,eAAe;IAC/D,IAAIC,kBAAkB,GAAGoB,YAAY,CAAC7hB,WAAW,CAAC,CAACygB,kBAAkB;IACrE8yL,kBAAkB,GAAG1xL,YAAY,CAAC7hB,WAAW,CAAC,CAACkY,gBAAgB;IAC/Ds7L,cAAc,GAAG3xL,YAAY,CAAC7hB,WAAW,CAAC,CAACoY,YAAY;IACvDq7L,iBAAiB,GAAG5xL,YAAY,CAAC7hB,WAAW,CAAC,CAACsY,eAAe;IAC7Dq7L,iBAAiB,GAAG9xL,YAAY,CAAC7hB,WAAW,CAAC,CAACsP,eAAe;IAC7DokM,iBAAiB,GAAG7xL,YAAY,CAAC7hB,WAAW,CAAC,CAACwY,eAAe;IAC7Do7L,iBAAiB,GAAG/xL,YAAY,CAAC7hB,WAAW,CAAC,CAAC4X,eAAe;;IAE7D;IACA,IAAI4I,eAAe,KAAK,GAAG,EAAEmzL,iBAAiB,GAAG,GAAG;;IAEpD;IACA;IACA,IAAInzL,eAAe,KAAK,GAAG,IAAIC,kBAAkB,KAAK,GAAG,EAAE;MACvDm5L,cAAc,CAAC/4T,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC7C,CAAC,MAAM84T,cAAc,CAAC/4T,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC7C;IACA;IACA;IACA,IACIy/H,eAAe,KAAK,GAAG,IACvBk5L,YAAY,KAAK,gBAAgB,KAChClL,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,IAAI,CAAC,EAC1C;MACE;MACA,IAAI,CAACh/L,UAAU,EAAE+pM,oBAAoB,CAAC,CAAC;IAC3C;IACA,QAAQ/4L,eAAe;MACnB,KAAK,GAAG;QACJuyL,mBAAmB,CAAC5oT,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QAC5D+4T,YAAY,CAACh5T,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QACvC;MACJ;QACIiyT,mBAAmB,CAAC5oT,aAAa,CAACtJ,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACzD84T,YAAY,CAACh5T,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACpCgyT,mBAAmB,CAACntT,KAAK,GAAG,GAAG;QAC/BktI,kBAAkB,CAACc,SAAS,CAAC,CAAC;QAC9BT,YAAY,GAAG,KAAK;QACpBxb,iBAAiB,GAAG,EAAE;QACtB;IACR;IACA,QAAQ8I,kBAAkB;MACtB,KAAK,GAAG;QACJuyL,sBAAsB,CAAC7oT,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QAC/D;MACJ;QACIkyT,sBAAsB,CAAC7oT,aAAa,CAACtJ,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC5DiyT,sBAAsB,CAACptT,KAAK,GAAG,GAAG;QAClCyvH,UAAU,GAAG,EAAE;QACf;IACR;IACA,QAAQu+L,iBAAiB;MACrB,KAAK,GAAG;QACJvB,YAAY,CAACxxT,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QACvC;MACJ;QACIuxT,YAAY,CAACxxT,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACpCsxT,YAAY,CAACzsT,KAAK,GAAG,EAAE;QACvBuvH,OAAO,GAAG,EAAE;QACZ;IACR;;IAEA;;IAEA,IAAIr6E,SAAS,GAAG+mF,YAAY,CAAC7hB,WAAW,CAAC,CAACllE,SAAS;IACnD,IAAIy4Q,kBAAkB,KAAK,GAAG,IAAIz4Q,SAAS,CAACx5C,MAAM,KAAK,CAAC,EAAE;MACtDkuJ,gBAAgB,CAAC3uJ,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC9C,CAAC,MAAM,IAAIyyT,kBAAkB,KAAK,GAAG,KAAKj+P,UAAU,KAAK,EAAE,IAAIA,UAAU,KAAK,GAAG,CAAC,EAAE;MAChFk6F,gBAAgB,CAAC3uJ,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC3C,CAAC,MAAMyuJ,gBAAgB,CAAC3uJ,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAEjD,IAAIs/H,KAAK,GAAGyB,YAAY,CAAC7hB,WAAW,CAAC,CAACogB,KAAK;IAC3C,IAAIozL,cAAc,KAAK,GAAG,IAAIpzL,KAAK,CAAC9+H,MAAM,KAAK,CAAC,EAAE;MAC9CshT,YAAY,CAAC/hT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM,IAAI0yT,cAAc,KAAK,GAAG,KAAK19B,MAAM,KAAK,EAAE,IAAIA,MAAM,KAAK,GAAG,CAAC,EAAE;MACpE8sB,YAAY,CAAC/hT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACvC,CAAC,MAAM6hT,YAAY,CAAC/hT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAE7C,IAAIo/H,QAAQ,GAAG2B,YAAY,CAAC7hB,WAAW,CAAC,CAACkgB,QAAQ;IACjD,IAAIuzL,iBAAiB,KAAK,GAAG,IAAIvzL,QAAQ,CAAC5+H,MAAM,KAAK,CAAC,EAAE;MACpDuhT,eAAe,CAAChiT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C,CAAC,MAAM,IAAI2yT,iBAAiB,KAAK,GAAG,KAAKl6D,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,GAAG,CAAC,EAAE;MAC7EspD,eAAe,CAAChiT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM8hT,eAAe,CAAChiT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAEhD,IAAIq/H,QAAQ,GAAG0B,YAAY,CAAC7hB,WAAW,CAAC,CAACmgB,QAAQ;IACjD,IAAIuzL,iBAAiB,KAAK,GAAG,IAAIvzL,QAAQ,CAAC7+H,MAAM,KAAK,CAAC,EAAE;MACpD0yN,eAAe,CAACnzN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C,CAAC,MAAM,IAAI4yT,iBAAiB,KAAK,GAAG,KAAKpzL,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,GAAG,CAAC,EAAE;MAC7E0zF,eAAe,CAACnzN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAMizN,eAAe,CAACnzN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;;IAEhD;IACA,IAAI8yT,iBAAiB,KAAK,GAAG,EAAE;MAC3BvB,YAAY,CAACxxT,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC3C,CAAC,MAAM;MACHuxT,YAAY,CAACzsT,KAAK,GAAG,EAAE;MACvBysT,YAAY,CAACxxT,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IACxC;IACA;IACA,IAAIqR,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,KAAKguH,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,GAAG,CAAC,EAAE;MACpF/V,mBAAmB,CAAC1pH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9C;;IAEA;IACA;IACA,IAAI4yT,iBAAiB,KAAK,GAAG,EAAE;MAC3B,QAAQR,UAAU;QACd,KAAK,QAAQ;UACT,IAAIpzK,mBAAmB,CAACz+I,MAAM,GAAG,CAAC,EAAE;YAChC,IAAIk4T,YAAY,EAAEzlT,KAAK,CAAC/S,IAAI,CAACw4T,YAAY,CAAC;YAC1CM,0BAA0B,CAAC,CAAC;YAC5B,IAAIhyB,eAAe,EAAEA,eAAe,CAACjnS,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UACrE;UACA;QACJ,KAAK,KAAK;UACN,IAAIi/I,mBAAmB,CAACz+I,MAAM,KAAK,CAAC,EAAE,CACtC,CAAC,MAAM,IAAIy+I,mBAAmB,CAACz+I,MAAM,GAAG,CAAC,EAAE;YACvCw4T,0BAA0B,CAAC,CAAC;UAChC;UACA;QACJ;UACI;MACR;IACJ,CAAC,MAAM;MACH,IAAIhyB,eAAe,EAAEA,eAAe,CAACjnS,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACrE;IACAkwH,mBAAmB,CAAC,CAAC;EACzB;EAEA,SAASooM,eAAeA,CAAA,EAAG;IACvB,IAAIW,UAAU;IACd;IACAxvM,mBAAmB,CAACpmH,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpD,MAAM6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACvE6oH,eAAe,GAAG3tH,KAAK,CAACC,MAAM,CAACC,OAAO,CAACytH,eAAe;MACtDtP,WAAW,GAAGx5G,cAAc,CAACZ,KAAK;MAClC;MACA8wT,8BAA8B,CAAC,CAAC;MAChC;MACAphQ,UAAU,GAAG,EAAE;MACfgrE,SAAS,GAAG,EAAE;MACdw1J,MAAM,GAAG,EAAE;MACXv8B,SAAS,GAAG,EAAE;MACd/pG,gBAAgB,CAACrmH,iBAAiB,CAAC1iC,aAAa,GAAG,CAAC;MACpDutN,eAAe,CAAC7qL,iBAAiB,CAAC1iC,aAAa,GAAG,CAAC;MACnDm8S,YAAY,CAACz5Q,iBAAiB,CAAC1iC,aAAa,GAAG,CAAC;MAChDo8S,eAAe,CAAC15Q,iBAAiB,CAAC1iC,aAAa,GAAG,CAAC;MACnD+vT,mBAAmB,CAAC,CAAC;MACrBxlM,mBAAmB,CAAC,CAAC;MACrB,IAAI5+G,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;QAC5CqkT,qBAAqB,CAAC,CAAC;MAC3B;MACA,IAAIvkT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;QACzC+mT,sBAAsB,CAAC,CAAC;MAC5B;IACJ,CAAC,CAAC;IACF7pK,gBAAgB,CAACrrJ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE6uD,UAAU,GAAG9uD,cAAc,CAACZ,KAAK;MACjC;MACA;MACA,IAAI2uT,mBAAmB,KAAK,GAAG,IAAIhB,kBAAkB,KAAK,GAAG,EAAE;QAC3D,IAAIj+P,UAAU,KAAK,EAAE,EAAE;UACnBk6F,gBAAgB,CAAC3uJ,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAC3C,CAAC,MAAMyuJ,gBAAgB,CAAC3uJ,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACjDkwH,mBAAmB,CAAC,CAAC;MACzB;MACA;IACJ,CAAC,CAAC;IACFgjG,eAAe,CAAC7vN,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE65H,SAAS,GAAG95H,cAAc,CAACZ,KAAK;MAChC;MACA,IAAI4uT,kBAAkB,KAAK,GAAG,IAAId,iBAAiB,KAAK,GAAG,EAAE;QACzD,IAAIpzL,SAAS,KAAK,EAAE,EAAE;UAClB0zF,eAAe,CAACnzN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAC1C,CAAC,MAAMizN,eAAe,CAACnzN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAChDkwH,mBAAmB,CAAC,CAAC;MACzB;MACA;IACJ,CAAC,CAAC;IACF,IAAI5+G,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzCggT,uBAAuB,CAACnuT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;QACxD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;QACrEotT,iBAAiB,GAAGrtT,cAAc,CAACZ,KAAK;QACxC,IAAIiuT,iBAAiB,KAAK,EAAE,EAAE;UAC1BvB,uBAAuB,CAACzxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACrD,CAAC,MAAMwxT,uBAAuB,CAACzxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACrDiwH,mBAAmB,CAAC,CAAC;MACzB,CAAC,CAAC;IACN;IACA4xL,YAAY,CAACz+S,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC7C,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEqvR,MAAM,GAAGtvR,cAAc,CAACZ,KAAK;MAC7B;MACA,IAAI6uT,eAAe,KAAK,GAAG,IAAIjB,cAAc,KAAK,GAAG,EAAE;QACnD,IAAI19B,MAAM,KAAK,EAAE,EAAE;UACf8sB,YAAY,CAAC/hT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACvC,CAAC,MAAM6hT,YAAY,CAAC/hT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC7CkwH,mBAAmB,CAAC,CAAC;MACzB;MACA;IACJ,CAAC,CAAC;IACFjZ,cAAc,CAAC5zG,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC/C,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEs1G,QAAQ,GAAGv1G,cAAc,CAACZ,KAAK;IACnC,CAAC,CAAC;IACFi9S,eAAe,CAAC1+S,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE8yP,SAAS,GAAG/yP,cAAc,CAACZ,KAAK;MAChC;MACA,IAAI8uT,kBAAkB,KAAK,GAAG,IAAIjB,iBAAiB,KAAK,GAAG,EAAE;QACzD,IAAIl6D,SAAS,KAAK,EAAE,EAAE;UAClBspD,eAAe,CAAChiT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAC1C,CAAC,MAAM8hT,eAAe,CAAChiT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAChDkwH,mBAAmB,CAAC,CAAC;MACzB;MACA;IACJ,CAAC,CAAC;IACF;IACAwhF,gBAAgB,CAACruM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAIq4T,QAAQ,GAAGlF,2BAA2B,CAAC,CAAC;MAC5C,IAAImF,QAAQ,GAAGjF,gBAAgB,CAAC,CAAC;MAEjC,IAAIkF,eAAe,GAAG7nM,WAAW;MACjC,IAAI2a,WAAW,GAAGt4G,IAAI,CAACga,cAAc,CAAC,CAAC;MAEvC,IAAIsrR,QAAQ,CAACpnS,OAAO,IAAIqnS,QAAQ,EAAE;QAC9B7nT,CAAC,CAACC,OAAO,CAACimC,iBAAiB,GAAG,MAAM;MACxC,CAAC,MAAM;QACHlmC,CAAC,CAACC,OAAO,CAACimC,iBAAiB,GAAG,MAAM;MACxC;MAEA+5E,WAAW,GAAG1wH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChC,IAAIysH,WAAW,GAAG39F,IAAI,CAAC8Z,aAAa,CAAC,CAAC,IAAI6jF,WAAW,KAAK,EAAE,EAAE;QAC1DmgF,gBAAgB,CAAC3xM,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACvCsxH,WAAW,GAAG6nM,eAAe;MACjC,CAAC,MAAM1nH,gBAAgB,CAAC3xM,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAEjD,IAAIm5T,QAAQ,IAAIjtL,WAAW,GAAG3yG,SAAS,EAAE;QACrC2/R,QAAQ,CAAC3/R,SAAS,GAAG,KAAK;MAC9B;MACA,IAAI4/R,QAAQ,IAAIjtL,WAAW,GAAG1zG,OAAO,EAAE;QACnC0gS,QAAQ,CAAC1gS,OAAO,GAAG,KAAK;MAC5B;MAEA,IAAI0gS,QAAQ,CAACpnS,OAAO,EAAE;QAClBu/R,cAAc,CAACtxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACxCsxT,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC1C,CAAC,MAAM;QACH,IAAI,CAACk5T,QAAQ,CAAC3/R,SAAS,EAAE83R,cAAc,CAACtxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAC9D,IAAI,CAACi5T,QAAQ,CAAC1gS,OAAO,EAAE84R,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MAC9D;MAEA66G,sBAAsB,CAAC,CAAC,CAAC,CAAC;;MAE1B;MACAoV,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC;IACFmhM,cAAc,CAAChuT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC/C,IAAIixB,OAAO,GAAG6pM,qBAAqB,CAAC,YAAY,CAAC;MACjDpiM,SAAS,GAAG14B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9B,IAAI,CAACgtB,OAAO,EAAE;QACV6lS,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC3CoxT,cAAc,CAACtxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACrC;MACJ,CAAC,MAAM;QACHoxT,cAAc,CAACtxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACxC,IAAI27N,qBAAqB,CAAC,UAAU,CAAC,EAAE;UACnC21F,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC1C;MACJ;MACA;MACAkwH,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC;IAEFohM,YAAY,CAACjuT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC7C,IAAIixB,OAAO,GAAG6pM,qBAAqB,CAAC,UAAU,CAAC;MAC/CnjM,OAAO,GAAG33B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC5B;MACA,IAAI,CAACgtB,OAAO,EAAE;QACV;QACAw/R,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACnC03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC3C;MACJ,CAAC,MAAM;QACHqxT,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACtC,IAAI27N,qBAAqB,CAAC,YAAY,CAAC,EAAE;UACrC01F,cAAc,CAACtxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC5C;MACJ;MACAkwH,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC;IAEFqhM,YAAY,CAACluT,gBAAgB,CAAC,UAAU,EAAExC,KAAK,IAAI;MAC/C;MACAo4T,UAAU,GAAGp4T,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC/B,IAAIjE,KAAK,CAACgE,GAAG,KAAK,GAAG,IAAIhE,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC4kB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;QAC7D;QACA7oB,KAAK,CAACyH,cAAc,CAAC,CAAC;QACtB;MACJ;;MAEA;MACA,IAAIgJ,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;QAC5C,IAAI,CAAC3Q,KAAK,CAAC0oB,OAAO,GAAG,EAAE,IAAI1oB,KAAK,CAAC0oB,OAAO,GAAG,EAAE,KAAK1oB,KAAK,CAAC0oB,OAAO,KAAK,EAAE,EAAE;UACpE1oB,KAAK,CAACyH,cAAc,CAAC,CAAC;UACtB;QACJ;MACJ,CAAC,MAAM;QACH,IAAIzH,KAAK,CAAC0oB,OAAO,GAAG,EAAE,IAAI1oB,KAAK,CAAC0oB,OAAO,GAAG,EAAE,EAAE;UAC1C1oB,KAAK,CAACyH,cAAc,CAAC,CAAC;UACtB;QACJ;MACJ;IACJ,CAAC,CAAC;IACF,IAAIgJ,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzC;MACA+/S,YAAY,CAACluT,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;QAC5C,IAAIA,KAAK,CAACC,MAAM,CAACgE,KAAK,CAACtE,MAAM,GAAG,EAAE,EAAEK,KAAK,CAACC,MAAM,CAACgE,KAAK,GAAGm0T,UAAU;QACnE5kM,OAAO,GAAGxzH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChC,CAAC,CAAC;IACN;IAEA,IAAIwM,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC5C;MACA+/S,YAAY,CAACluT,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;QAC5C,IAAIkuC,SAAS,GAAGluC,KAAK,CAACC,MAAM,CAACgE,KAAK,CAACuf,KAAK,CAAC,GAAG,CAAC;QAC7C,IAAI0qB,SAAS,CAAC,CAAC,CAAC,CAACvuC,MAAM,GAAG,CAAC,EAAEK,KAAK,CAACC,MAAM,CAACgE,KAAK,GAAGm0T,UAAU;QAC5D,IAAIlqR,SAAS,CAAC,CAAC,CAAC,IAAIA,SAAS,CAAC,CAAC,CAAC,CAACvuC,MAAM,GAAG,CAAC,EAAEK,KAAK,CAACC,MAAM,CAACgE,KAAK,GAAGm0T,UAAU;QAE5E5kM,OAAO,GAAGr6G,UAAU,CAACnZ,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC,CAACqmC,OAAO,CAAC,CAAC,CAAC;MACvD,CAAC,CAAC;MAEF8mR,mBAAmB,CAAC5uT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;QACpDg2H,iBAAiB,GAAG/rG,QAAQ,CAACjqB,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;MAC3D,CAAC,CAAC;MACFotT,sBAAsB,CAAC7uT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;QACvD0zH,UAAU,GAAG1zH,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC,CAAC;MACrC,CAAC,CAAC;IACN;IACAu9S,aAAa,CAACh/S,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C4zH,QAAQ,GAAG5zH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC7BorH,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC;IACF;IACA6hM,oBAAoB,CAAC1uT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACrD8zH,YAAY,GAAG9zH,KAAK,CAACC,MAAM,CAACiI,OAAO,GAAG,GAAG,GAAG,GAAG;IACnD,CAAC,CAAC;IACFipT,yBAAyB,CAAC3uT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC1DotI,iBAAiB,GAAGptI,KAAK,CAACC,MAAM,CAACiI,OAAO,GAAG,GAAG,GAAG,GAAG;IACxD,CAAC,CAAC;IACF,IAAIspT,UAAU,KAAK,QAAQ,IAAIx3L,cAAc,KAAK,GAAG,IAAIs4L,aAAa,KAAK,GAAG,EAAE;MAC5EE,iBAAiB,CAAChwT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;QAClD65H,SAAS,GAAG75H,KAAK,CAACC,MAAM,CAACiI,OAAO,GAAG,GAAG,GAAG,GAAG;MAChD,CAAC,CAAC;IACN;EACJ;EACA;EACA,SAASmnH,mBAAmBA,CAAA,EAAG;IAC3B,IAAI2oM,0BAA0B,GAAG31T,QAAQ,CAACiD,cAAc,CAAC,qBAAqB,CAAC;IAC/E+4G,WAAW,GACP25M,0BAA0B,CAACr1T,OAAO,CAACq1T,0BAA0B,CAAClzT,aAAa,CAAC,CAACb,KAAK;IAEtF,IAAIsvN,SAAS,GAAGiuF,aAAa,CAACl/S,aAAa,CAAC,UAAU,CAAC;IACvD,IAAI6+P,SAAS,GAAG9+P,QAAQ,CAACqG,gBAAgB,CAAC,oBAAoB,CAAC;IAE/D,IAAI6qN,SAAS,CAACtvN,KAAK,KAAK,EAAE,EAAE;MACxBu9S,aAAa,CAACtiT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACxC,CAAC,MAAM;MACHoiT,aAAa,CAACtiT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC3C;IAEA,IAAIk/G,WAAW,KAAK,EAAE,EAAE;MACpBuK,mBAAmB,CAAC1pH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9C,CAAC,MAAM;MACHwpH,mBAAmB,CAAC1pH,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACjD;IAEA,IAAIi/I,mBAAmB,CAACz+I,MAAM,GAAG,CAAC,EAAE;MAChC+nT,cAAc,CAACxoT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACxC+yT,mBAAmB,GAAG,EAAE;IAC5B,CAAC,MAAM;MACHzK,cAAc,CAACxoT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC/C;IAEA,IAAI26G,MAAM,GAAGz3G,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC;IAChD,IAAIoxG,MAAM,CAACn6G,MAAM,GAAG,CAAC,EAAE;MACnBm3T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC/C,CAAC,MAAM,IAAIg/I,mBAAmB,CAACz+I,MAAM,GAAG,CAAC,IAAI6xT,UAAU,KAAK,QAAQ,EAAE;MAClEsF,WAAW,CAAC53T,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACxC8xT,iBAAiB,CAAC/xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAClD,CAAC,MAAM;MACH23T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC/C;IAEA,IAAIyuH,UAAU,EAAE;MACZipM,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3CyxT,aAAa,CAAC3xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC3C;EACJ;EAEA,SAASu2T,uBAAuBA,CAAA,EAAG;IAC/B,IAAIllT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;IAChD,IAAI6nT,cAAc,GAAG,KAAK;IAC1Bl4L,2BAA2B,CAAC1gI,OAAO,CAACiE,CAAC,IAAI;MACrCu6I,mBAAmB,CAACx+I,OAAO,CAACovT,GAAG,IAAI;QAC/B,IAAInrT,CAAC,KAAKmrT,GAAG,EAAE;UACXwJ,cAAc,GAAG,IAAI;QACzB;MACJ,CAAC,CAAC;IACN,CAAC,CAAC;IACF,QAAQA,cAAc;MAClB,KAAK,IAAI;QACL9H,YAAY,CAACxxT,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QACvC;MAEJ;QACIuxT,YAAY,CAACxxT,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACpCo0H,OAAO,GAAG,EAAE;QACZ;IACR;EACJ;EAEA,SAASwe,qBAAqBA,CAACp7G,IAAI,EAAE;IACjC46G,YAAY,GAAG,KAAK;IACpBxb,iBAAiB,GAAGp/F,IAAI;EAC5B;EAEA,SAASuhS,0BAA0BA,CAAA,EAAG;IAClC,IAAIM,KAAK,GAAGp2T,QAAQ,CAACqG,gBAAgB,CAAC,eAAe,CAAC;IACtD+vT,KAAK,CAAC74T,OAAO,CAAC+7G,IAAI,IAAI;MAClB,IAAIqzM,GAAG,GAAGrzM,IAAI,CAAC3yG,YAAY,CAAC,kBAAkB,CAAC;MAC/Co1I,mBAAmB,GAAGA,mBAAmB,CAACvwI,MAAM,CAACuI,IAAI,IAAIA,IAAI,KAAK44S,GAAG,CAAC;MACtErzM,IAAI,CAACnzG,aAAa,CAACrJ,MAAM,CAAC,CAAC;MAC3BgvG,OAAO,CAAC8iD,iCAAiC,CAAC+9J,GAAG,CAAC;IAClD,CAAC,CAAC;IACF+F,8BAA8B,CAAC,CAAC;IAChCrmR,YAAY,CACR,iGAAiG,EACjG,IAAI,EACJ,IAAI,EACJ,KACJ,CAAC;EACL;EAEA,SAASiiH,kBAAkBA,CAAA,EAAG;IAC1B,IAAIz+I,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACpBG,EAAE,EAAE,oBAAoB;MACxBa,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,IAAIkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB,IAAIs/H,YAAY,EAAE;UACdL,kBAAkB,CAACc,SAAS,CAAC,CAAC;UAC9BT,YAAY,GAAG,KAAK;QACxB;QACA99H,WAAW,CAACpU,IAAI,CAAC,kBAAkB,CAAC;QACpC,MAAM0sI,aAAa,CAACwB,sBAAsB,CAAC/c,MAAM,CAAC;QAClD/8G,WAAW,CAACI,OAAO,CAAC,SAAS,CAAC;QAC9ByW,UAAU,CAAC,YAAY;UACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrBusI,aAAa,CAACrpI,IAAI,CAAC,CAAC;QACxB,CAAC,EAAE,IAAI,CAAC;MACZ;IACJ,CAAC,CAAC;IACF,IAAIwqJ,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,OAAO;MACboB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;MACrB;IACJ,CAAC,CAAC;IACF08B,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B,IAAIj+G,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,uDAAuD;IAClF0S,KAAK,CAACpS,WAAW,CAACgvC,cAAc,CAAC;IACjC58B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACrB;EAEA,eAAewiT,qBAAqBA,CAAA,EAAG;IACnC,MAAM1oL,aAAa,CAACwB,sBAAsB,CAAC/c,MAAM,CAAC;IAClD+gM,UAAU,GAAG,KAAK;IAClBiB,WAAW,GAAG,IAAI;IAClBhiM,MAAM,GAAG,CAAC;IACViiM,kBAAkB,GAAG,IAAI;IACzB;IACA,IAAIh/L,UAAU,KAAK,IAAI,EAAEA,UAAU,GAAG,CAAC;IACvC,IAAIsC,iBAAiB,KAAK,IAAI,EAAEA,iBAAiB,GAAG,CAAC;IACrDr+F,OAAO,GAAGA,OAAO,CAACzwB,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IACjCwxB,SAAS,GAAGA,SAAS,CAACxxB,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;EACzC;EAEA,SAASwxT,YAAYA,CAAA,EAAG;IACpB;IACAhH,cAAc,GAAG,qCAAqC;IACtD,KAAK,IAAI,CAAC7uT,EAAE,EAAEsF,IAAI,CAAC,IAAIgZ,MAAM,CAACyD,OAAO,CAAC6sS,SAAS,CAACx8Q,WAAW,CAAC,CAAC,EAAE;MAC3D,IAAI0jR,SAAS,GAAGxwT,IAAI,CAACqb,KAAK,CAAC,GAAG,CAAC;MAC/B,IAAI+nF,QAAQ,GAAG4C,OAAO,CAACuN,iBAAiB,CAAC;QACrC2+H,EAAE,EAAEs+E,SAAS,CAAC,CAAC,CAAC;QAChBr+E,EAAE,EAAEq+E,SAAS,CAAC,CAAC,CAAC;QAChB91T,EAAE,EAAEA;MACR,CAAC,CAAC;MACFsrG,OAAO,CAACyoI,4BAA4B,CAACrrI,QAAQ,CAAC;MAC9C,IAAI1oG,EAAE,KAAKqiD,UAAU,EAAEwsQ,cAAc,IAAI,MAAMvpT,IAAI,GAAG;IAC1D;EACJ;EAEA,SAAS4mH,cAAcA,CAAA,EAAG;IACtB;IACA;IACA;IACA4jM,QAAQ,GAAG,CAACliT,CAAC,CAACC,OAAO,CAAC4jC,eAAe;IACrC;IACA;IACA,IAAIq+Q,QAAQ,IAAK9F,SAAS,IAAIA,SAAS,KAAK,EAAG,EAAE+L,mBAAmB,CAAC,CAAC;;IAEtE;IACA;IACA,IAAInoT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,KAAK,CAACk8S,SAAS,IAAIA,SAAS,KAAK,EAAE,CAAC,EAAE;MAChF,IAAIp8S,CAAC,CAACC,OAAO,CAAC4jC,eAAe,EAAE;QAC3B,IACI,CAAC7jC,CAAC,CAACC,OAAO,CAAC6jC,sBAAsB,IAChC9jC,CAAC,CAACC,OAAO,CAAC6jC,sBAAsB,IAAIg5E,aAAa,KAAK98G,CAAC,CAACC,OAAO,CAACmoC,QAAS,EAC5E;UACEg1E,UAAU,GAAG,KAAK,CAAC,CAAC;QACxB,CAAC,MAAM;UACHA,UAAU,GAAG,IAAI,CAAC,CAAC;QACvB;MACJ,CAAC,MAAM;QACHA,UAAU,GAAG,IAAI,CAAC,CAAC;MACvB;IACJ;IAEA,IAAIA,UAAU,EAAE+qM,mBAAmB,CAAC,CAAC;;IAErC;IACA,IAAI17L,aAAa,EAAE;MACfyxL,6BAA6B,CAACiB,iBAAiB,CAAC;IACpD;EACJ;EAEA,SAASgJ,mBAAmBA,CAAA,EAAG;IAC3B;IACA/nH,gBAAgB,CAACvuM,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IACpFktT,cAAc,CAACluT,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAClFmtT,YAAY,CAACnuT,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAChFk+S,aAAa,CAACl/S,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IACjFotT,YAAY,CAACpuT,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAChF;IACAslH,mBAAmB,CAACtmH,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IACrFuqJ,gBAAgB,CAACvrJ,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAClF+uN,eAAe,CAAC/vN,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IACjF,IAAIqtT,uBAAuB,EACvBA,uBAAuB,CAACruT,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAC7F29S,YAAY,CAAC3+S,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAC9E8yG,cAAc,CAAC9zG,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAChF49S,eAAe,CAAC5+S,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IACjF4tT,oBAAoB,CAACp6S,UAAU,CAACxT,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAC9D,IAAImN,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAEwgT,yBAAyB,CAACr6S,UAAU,CAACxT,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAEnH,IAAI8tT,mBAAmB,EACnBA,mBAAmB,CAAC9uT,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAC3F,IAAI+tT,sBAAsB,EACtBA,sBAAsB,CAAC/uT,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAC9F;IACAutT,aAAa,CAAC1xT,MAAM,CAAC,CAAC;IACtB23T,WAAW,CAAC33T,MAAM,CAAC,CAAC;IACpB;IACA,IAAI6xT,YAAY,EAAEA,YAAY,CAAC7xT,MAAM,CAAC,CAAC;IACvC,IAAI4xT,aAAa,EAAEA,aAAa,CAAC5xT,MAAM,CAAC,CAAC;IACzC;IACA,IAAIgnS,eAAe,GAAG9jS,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;IAChE,IAAI6jS,eAAe,EAAE;MACjBA,eAAe,CAACjnS,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC7C;EACJ;EAEA,SAASstT,kBAAkBA,CAACx6L,WAAW,EAAEk6L,iBAAiB,EAAE;IACxDE,qBAAqB,GAAGF,iBAAiB;IACzCl6L,WAAW,CAACtyH,OAAO,CAAC0d,UAAU,IAAI;MAC9B60S,mBAAmB,CAAC1kT,IAAI,CAAC6P,UAAU,CAAC;IACxC,CAAC,CAAC;IACF80S,eAAe,GAAGD,mBAAmB,CAACxyT,MAAM,GAAG2sT,qBAAqB,CAAC3sT,MAAM;IAC3E+nT,cAAc,CAAC/3R,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC9oB,SAAS,GAAG,gBAAgBurT,eAAe,GAAG;IAC7F,IAAIA,eAAe,GAAG,CAAC,EAAE;MACrB1K,cAAc,CAACxoT,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAClD,CAAC,MAAMsoT,cAAc,CAACxoT,SAAS,CAACC,MAAM,CAAC,gBAAgB,CAAC;EAC5D;EAEA,SAASytT,uCAAuCA,CAACtwK,cAAc,EAAE;IAC7D61K,mBAAmB,GAAGA,mBAAmB,CAACtkT,MAAM,CAC5CyP,UAAU,IAAIA,UAAU,CAACs/F,WAAW,KAAK0/B,cAC7C,CAAC;EACL;EAEA,SAASu8K,iBAAiBA,CAAA,EAAG;IACzB,IAAI/kM,YAAY,KAAK,GAAG,IAAIvG,aAAa,KAAK98G,CAAC,CAACC,OAAO,CAACmoC,QAAQ,EAAE;MAC9D2oQ,aAAa,CAACl/S,aAAa,CAAC,qBAAqB,CAAC,CAAC2B,KAAK,GAAG,8BAA8B;MACzFu9S,aAAa,CAACl/S,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MACjF4tT,oBAAoB,CAACp6S,UAAU,CAACxT,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAClE;EACJ;EAEA,SAAS06Q,uBAAuBA,CAAA,EAAG;IAC/BxqJ,OAAO,GAAG,IAAI;IACdwG,cAAc,GAAG,IAAI;IACrBlG,YAAY,GAAG,IAAI;IACnBsZ,iBAAiB,GAAG,IAAI;IACxBvT,SAAS,GAAG,IAAI;IAChBgzL,SAAS,GAAG,IAAI;IAChBsF,mBAAmB,GAAG,EAAE;IACxB7F,qBAAqB,GAAG,EAAE;EAC9B;EAEA,SAASl1M,QAAQA,CAAC0hN,YAAY,EAAE;IAC5B,MAAMC,WAAW,GAAG,EAAE;IACtB,MAAMC,UAAU,GAAG,EAAE;IACrB,MAAMC,mBAAmB,GAAG,IAAItoQ,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MAC/Di4H,aAAa,CAACS,eAAe,CAAC,UAAUvM,YAAY,EAAE;QAClDzC,8BAA8B,CAACyC,YAAY,CAAC;QAC5CtvE,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;IACFmoQ,WAAW,CAACtrT,IAAI,CAACwrT,mBAAmB,CAAC;IACrCD,UAAU,CAACvrT,IAAI,CAACwrT,mBAAmB,CAAC;IAEpC,MAAMlN,qBAAqB,GAAG,IAAIp7P,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MACjEi4H,aAAa,CAACW,yBAAyB,CAAC,UAAUpiC,OAAO,EAAE;QACvDk6M,OAAO,GAAGl6M,OAAO;QACjB35C,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;IACFmoQ,WAAW,CAACtrT,IAAI,CAACs+S,qBAAqB,CAAC;IACvCiN,UAAU,CAACvrT,IAAI,CAACs+S,qBAAqB,CAAC;;IAEtC;IACA,IAAIt7S,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzC,MAAMuoT,qCAAqC,GAAG,IAAIvoQ,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;QACjFi4H,aAAa,CAACU,8BAA8B,CAAC,UAAUniC,OAAO,EAAE;UAC5D+1B,2BAA2B,GAAG,EAAE;UAChC/1B,OAAO,CAAC3qG,OAAO,CAACiE,CAAC,IAAI;YACjBy8H,2BAA2B,CAAC7yH,IAAI,CAAC5J,CAAC,CAACguH,UAAU,CAAC;UAClD,CAAC,CAAC;UACFjhE,OAAO,CAAC,SAAS,CAAC;QACtB,CAAC,CAAC;MACN,CAAC,CAAC;MACFmoQ,WAAW,CAACtrT,IAAI,CAACyrT,qCAAqC,CAAC;IAC3D;IAEA,MAAMC,sCAAsC,GAAG,IAAIxoQ,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MAClFi4H,aAAa,CAACa,+BAA+B,CAACp8H,CAAC,CAACC,OAAO,CAACmoC,QAAQ,EAAE,UAAU0xD,OAAO,EAAE;QACjFyvB,cAAc,GAAGzvB,OAAO,CAAC,CAAC,CAAC,CAACs2B,cAAc,KAAK,EAAE,GAAG,GAAG,GAAGt2B,OAAO,CAAC,CAAC,CAAC,CAACs2B,cAAc;QACnFjT,kBAAkB,GAAGrjB,OAAO,CAAC,CAAC,CAAC,CAACu2B,SAAS;QACzClwE,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;IACFmoQ,WAAW,CAACtrT,IAAI,CAAC0rT,sCAAsC,CAAC;IACxDH,UAAU,CAACvrT,IAAI,CAAC0rT,sCAAsC,CAAC;;IAEvD;IACA,IAAI1oT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,IAAI6gT,UAAU,KAAK,QAAQ,EAAE;MACvE,MAAM4H,qBAAqB,GAAG,IAAIzoQ,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;QACjEi4H,aAAa,CAACc,0BAA0B,CAACrc,MAAM,EAAE9nE,GAAG,IAAI;UACpD2jQ,qBAAqB,GAAG3jQ,GAAG;UAC3BypQ,eAAe,GAAG9F,qBAAqB,CAAC3sT,MAAM;UAC9CixD,OAAO,CAAC,SAAS,CAAC;QACtB,CAAC,CAAC;MACN,CAAC,CAAC;MACFooQ,UAAU,CAACvrT,IAAI,CAAC2rT,qBAAqB,CAAC;IAC1C;IAEA,IAAI3oT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzCggD,OAAO,CAACmrF,GAAG,CAACi9K,WAAW,CAAC,CAAC5nM,IAAI,CAAC,YAAY;QACtC,IAAIqgM,UAAU,KAAK,KAAK,EAAE;UACtB,IAAIsH,YAAY,EAAE;YACd,MAAMjqL,YAAY,GAAGiqL,YAAY,CAAC3wT,IAAI,CAACqb,KAAK,CAAC,GAAG,CAAC;YACjD,MAAM+nF,QAAQ,GAAG4C,OAAO,CAACuN,iBAAiB,CAAC;cACvC2+H,EAAE,EAAExrG,YAAY,CAAC,CAAC,CAAC;cACnByrG,EAAE,EAAEzrG,YAAY,CAAC,CAAC,CAAC;cACnBhsI,EAAE,EAAEi2T,YAAY,CAACj2T;YACrB,CAAC,CAAC;YACFsrG,OAAO,CAACyoI,4BAA4B,CAACrrI,QAAQ,CAAC;YAC9CqkN,iBAAiB,GAAGzhN,OAAO,CAACC,kBAAkB,CAAC,CAAC;YAChD7tG,OAAO,CAACgC,IAAI,CAACu2T,YAAY,CAAC;YAC1B;UACJ,CAAC,MAAM;YACHv4T,OAAO,CAACgC,IAAI,CAAC,CAAC;YACd;UACJ;QACJ;QACA,IAAIivT,UAAU,KAAK,QAAQ,EAAE;UACzB,IAAIv8Q,WAAW,KAAK,CAAC,EAAE;YACnByjR,YAAY,CAAC,CAAC,CAAC,CAAC;UACpB,CAAC,MAAM;YACH;YACA,IAAIC,SAAS,GAAG9zL,EAAE,CAACxC,YAAY,CAAC7+G,KAAK,CAAC,GAAG,CAAC;YAC1C;YACA,IAAI+nF,QAAQ,GAAG4C,OAAO,CAACuN,iBAAiB,CAAC;cACrC2+H,EAAE,EAAEs+E,SAAS,CAAC,CAAC,CAAC;cAChBr+E,EAAE,EAAEq+E,SAAS,CAAC,CAAC,CAAC;cAChB91T,EAAE,EAAEqiD;YACR,CAAC,CAAC;YACFipD,OAAO,CAACyoI,4BAA4B,CAACrrI,QAAQ,CAAC;UAClD;UACA7qG,UAAU,CAAC6B,IAAI,CAAC,CAAC;UACjB;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,MAAM;MACHouD,OAAO,CAACmrF,GAAG,CAACk9K,UAAU,CAAC,CAAC7nM,IAAI,CAAC,YAAY;QACrC,IAAIqgM,UAAU,KAAK,KAAK,EAAE;UACtB,IAAIsH,YAAY,EAAE;YACd,MAAMjqL,YAAY,GAAGiqL,YAAY,CAAC3wT,IAAI,CAACqb,KAAK,CAAC,GAAG,CAAC;YACjD,MAAM+nF,QAAQ,GAAG4C,OAAO,CAACuN,iBAAiB,CAAC;cACvC2+H,EAAE,EAAExrG,YAAY,CAAC,CAAC,CAAC;cACnByrG,EAAE,EAAEzrG,YAAY,CAAC,CAAC,CAAC;cACnBhsI,EAAE,EAAEi2T,YAAY,CAACj2T;YACrB,CAAC,CAAC;YACFsrG,OAAO,CAACyoI,4BAA4B,CAACrrI,QAAQ,CAAC;YAC9CqkN,iBAAiB,GAAGzhN,OAAO,CAACC,kBAAkB,CAAC,CAAC;YAChD7tG,OAAO,CAACgC,IAAI,CAACu2T,YAAY,CAAC;YAC1B;UACJ,CAAC,MAAM;YACHv4T,OAAO,CAACgC,IAAI,CAAC,CAAC;YACd;UACJ;QACJ;QACA,IAAIivT,UAAU,KAAK,QAAQ,EAAE;UACzB,IAAIv8Q,WAAW,KAAK,CAAC,EAAE;YACnByjR,YAAY,CAAC,CAAC,CAAC,CAAC;UACpB,CAAC,MAAM;YACH;YACA,IAAIC,SAAS,GAAG9zL,EAAE,CAACxC,YAAY,CAAC7+G,KAAK,CAAC,GAAG,CAAC;YAC1C,IAAI+nF,QAAQ,GAAG4C,OAAO,CAACuN,iBAAiB,CAAC;cACrC2+H,EAAE,EAAEs+E,SAAS,CAAC,CAAC,CAAC;cAChBr+E,EAAE,EAAEq+E,SAAS,CAAC,CAAC,CAAC;cAChB91T,EAAE,EAAEqiD;YACR,CAAC,CAAC;YACFipD,OAAO,CAACyoI,4BAA4B,CAACrrI,QAAQ,CAAC;UAClD;UACA7qG,UAAU,CAAC6B,IAAI,CAAC,CAAC;UACjB;QACJ;MACJ,CAAC,CAAC;IACN;EACJ;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI,SAASA,IAAIA,CAAC82T,UAAU,EAAEC,cAAc,EAAEC,EAAE,EAAEC,gBAAgB,EAAE;IAC5D,IAAIA,gBAAgB,EAAE;MAClBt8L,aAAa,GAAG,IAAI;IACxB,CAAC,MAAMA,aAAa,GAAG,KAAK;IAC5BkhB,mBAAmB,CAACx+I,OAAO,CAACovT,GAAG,IAAI;MAC/B7gN,OAAO,CAAC8iD,iCAAiC,CAAC+9J,GAAG,CAAC;IAClD,CAAC,CAAC;IACF;IACA,IAAIyC,SAAS,IAAIx8Q,WAAW,KAAK,CAAC,EAAE;MAChC,KAAK,IAAI,CAACpyC,EAAE,EAAEsF,IAAI,CAAC,IAAIgZ,MAAM,CAACyD,OAAO,CAAC6sS,SAAS,CAACx8Q,WAAW,CAAC,CAAC,EAAE;QAC3Dk5D,OAAO,CAAC8iD,iCAAiC,CAACpuJ,EAAE,CAAC;MACjD;IACJ;IACAsjS,eAAe,GAAG9jS,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAC;IAC5D,IAAI6jS,eAAe,EAAEA,eAAe,CAACjnS,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACjEsyT,SAAS,GAAG8H,EAAE;IACd10L,EAAE,GAAG,IAAI;IACTrR,OAAO,GAAG,IAAI;IACdwG,cAAc,GAAG,IAAI;IACrBlG,YAAY,GAAG,IAAI;IACnBsZ,iBAAiB,GAAG,IAAI;IACxBvT,SAAS,GAAG,IAAI;IAChBgzL,SAAS,GAAG,IAAI;IAChBn5L,UAAU,GAAG,CAAC;IACd8d,YAAY,GAAG,KAAK;IACpBxb,iBAAiB,GAAG,CAAC;IACrBooB,mBAAmB,GAAG,EAAE;IACxB+zK,mBAAmB,GAAG,EAAE;IACxB7F,qBAAqB,GAAG,EAAE;IAC1B8F,eAAe,GAAG,CAAC;IACnBZ,UAAU,GAAG6H,UAAU;IACvB9F,aAAa,CAAC+F,cAAc,CAAC;IAC7BliN,QAAQ,CAACoiN,gBAAgB,CAAC;EAC9B;EAEA,OAAO;IACHnqM,mBAAmB;IACnB;IACA0gM,iBAAiB;IACjBE,kBAAkB;IAClB+F,YAAY;IACZ;IACAlB,sBAAsB;IACtB;IACA5E,WAAW;IACXtB,UAAU;IACVD,6BAA6B;IAC7BqG,qBAAqB;IACrB6D,iBAAiB;IACjB/zJ,cAAc;IACdkvJ,aAAa;IACbhiL,qBAAqB;IACrB;IACA08K,aAAa;IACb;IACA3/L,cAAc;IACd;IACAivJ,uBAAuB;IACvB;IACA0uC,kBAAkB;IAClBE,uCAAuC;IACvC;IACAnvL,8BAA8B;IAC9B;IACAl7H;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AC/7EJ,IAAImpI,OAAO,GAAI,YAAY;EACvB;EACA,IAAI6kL,YAAY;EAChB,IAAI1/G,gBAAgB,EAChB2/G,cAAc,EACdC,YAAY,EACZjP,aAAa,EACbkP,YAAY,EACZO,iBAAiB;EACrB,IAAIroM,mBAAmB,CAAC,CAAC;EACzB,IAAIilC,gBAAgB,EAChBwkE,eAAe,EACfs+F,uBAAuB,EACvB1P,YAAY,EACZ7qM,cAAc,EACd8qM,eAAe;EACnB,IAAI0P,YAAY,EACZC,aAAa,EACbC,aAAa,EACbC,aAAa,EACbC,YAAY,EACZ7qB,eAAe,EACfuhB,cAAc;EAClB,IAAIwJ,oBAAoB;EACxB,IAAIC,yBAAyB;EAC7B,IAAIC,mBAAmB,EAAEC,sBAAsB;EAC/C,IAAIC,gBAAgB;EACpB;EACA,IAAIlzK,mBAAmB,GAAG,EAAE;EAC5B,IAAIq7K,kBAAkB;EACtB,IAAIlI,gBAAgB;EACpB,IAAIrxL,YAAY,GAAG,CAAC,CAAC;EACrB,IAAIukL,OAAO,CAAC,CAAC;EACb,IAAInkL,2BAA2B;EAC/B,IAAI1S,kBAAkB;EACtB,IAAI4jM,UAAU;EACd,IAAIhgL,YAAY;EAChB,IAAIigL,SAAS;EACb,IAAIzuF,aAAa;EACjB,IAAIngG,SAAS;EACb,IAAIsgG,WAAW;EACf,IAAIuuF,cAAc;EAClB,IAAIl+L,OAAO;EACX,IAAIm+L,kBAAkB;EACtB,IAAIz0L,aAAa;EACjB,IAAI0yL,iBAAiB;EACrB;EACA,IAAI8J,oBAAoB;EACxB,IAAI9H,kBAAkB;EACtB,IAAIC,cAAc;EAClB,IAAIC,iBAAiB;EACrB,IAAIC,iBAAiB;EACrB,IAAIC,iBAAiB;EACrB,IAAIC,iBAAiB;EACrB;EACA,IAAIpJ,SAAS,GAAG,IAAI;EACpB,IAAIp4L,MAAM;EACV,IAAI6K,MAAM;EACV,IAAIjd,WAAW;EACf,IAAIs7M,eAAe;EACnB,IAAIhmQ,UAAU;EACd,IAAIgrE,SAAS;EACb,IAAI/wE,WAAW,CAAC,CAAC;EACjB,IAAIgsQ,WAAW,CAAC,CAAC;EACjB,IAAIhqL,qBAAqB;EACzB,IAAIsiL,iBAAiB;EACrB,IAAI/9B,MAAM;EACV,IAAI/5K,QAAQ;EACZ,IAAIw9I,SAAS;EACb,IAAIlnI,WAAW;EACf,IAAIh4F,SAAS;EACb,IAAIf,OAAO;EACX,IAAIi8F,QAAQ;EACZ,IAAIE,YAAY;EAChB,IAAIsZ,iBAAiB;EACrB,IAAIpT,cAAc;EAClB,IAAIhE,iBAAiB;EACrB,IAAItC,UAAU;EACd;EACA,IAAIy+L,mBAAmB,GAAG,EAAE;IACxB7F,qBAAqB,GAAG,EAAE;IAC1B8F,eAAe;EACnB;EACA,IAAI7kM,aAAa;EACjB,IAAIroE,UAAU;EACd,IAAImtQ,UAAU,CAAC,CAAC;EAChB,IAAIC,aAAa;EACjB,IAAIC,kBAAkB;EACtB,IAAIC,iBAAiB;EACrB,IAAI34L,SAAS;EACb,IAAI44L,WAAW;EACf,IAAIC,kBAAkB,GAAG,KAAK,CAAC,CAAC;EAChC,IAAI7tL,EAAE;EACN;EACA,IAAI8tL,QAAQ;EACZ,IAAI9F,SAAS;EACb;EACA,IAAI+E,kBAAkB,GAAG,EAAE;EAC3B,IAAIG,iBAAiB,GAAG,EAAE;EAC1B,IAAIF,cAAc,GAAG,EAAE;EACvB,IAAIC,iBAAiB,GAAG,EAAE;EAC1B,IAAIc,mBAAmB,GAAG,EAAE;EAC5B,IAAIC,kBAAkB,GAAG,EAAE;EAC3B,IAAIC,eAAe,GAAG,EAAE;EACxB,IAAIC,kBAAkB,GAAG,EAAE;EAC3B;EACA,IAAIllM,UAAU;;EAEd;EACA;EACA,SAASn/E,YAAYA,CAAC1rC,IAAI,EAAEgwT,YAAY,EAAEC,UAAU,EAAiB;IAAA,IAAfC,MAAM,GAAAtpT,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,IAAI;IAC/D,MAAMsI,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACtBG,EAAE,EAAE,cAAc;MAClBa,UAAU,EAAE,SAAS;MACrBkP,KAAK,EAAEsgT;IACX,CAAC,CAAC;IACF,IAAItkR,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI4zT,YAAY,EAAE;MACd,MAAMtoJ,WAAW,GAAGjoK,MAAM,CAACC,KAAK,CAAC;QAC7BM,IAAI,EAAE,UAAU;QAChBG,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;UAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;UACjB8gT,YAAY,CAAC,CAAC;QAClB;MACJ,CAAC,CAAC;MACFpkR,OAAO,CAAC9uC,WAAW,CAAC4qK,WAAW,CAAC;IACpC;IACA,IAAIuoJ,UAAU,EAAE;MACZ,IAAIliR,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;QACzBM,IAAI,EAAE,QAAQ;QACdG,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;UAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;UACjB+gT,UAAU,CAAC,CAAC;QAChB;MACJ,CAAC,CAAC;MACFrkR,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAClC;IACA,IAAIjC,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAGwD,IAAI;IAC/BkP,KAAK,CAACpS,WAAW,CAACgvC,cAAc,CAAC;IACjC58B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACrB;EAEA,SAASihT,2BAA2BA,CAAA,EAAG;IACnC,IAAIn4F,UAAU,GAAGw1F,cAAc,CAACluT,aAAa,CAAC,OAAO,CAAC;IACtD,IAAI24N,QAAQ,GAAGw1F,YAAY,CAACnuT,aAAa,CAAC,OAAO,CAAC;IAClD,IAAIqrJ,SAAS,GAAGkjD,gBAAgB,CAACvuM,aAAa,CAAC,OAAO,CAAC;IACvD;IACA,IAAIo2B,SAAS,GAAGsiM,UAAU,CAAC/2N,KAAK;IAChC;IACA,IAAI0zB,OAAO,GAAGsjM,QAAQ,CAACh3N,KAAK;IAC5B,IAAImxB,WAAW,GAAGrC,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACtC,IAAIw+F,WAAW,GAAGt4G,IAAI,CAACga,cAAc,CAAC,CAAC;IAEvC,IAAIqmR,WAAW;IACfA,WAAW,GAAG,IAAI;IAElB,IAAIzlK,SAAS,CAAC1pJ,KAAK,KAAKmxB,WAAW,EAAE;MACjCg+R,WAAW,GAAG/nL,WAAW,GAAG3yG,SAAS,IAAI2yG,WAAW,GAAG1zG,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;IACnF;IAEA,IAAIe,SAAS,IAAIf,OAAO,EAAE;MACtBy7R,WAAW,GAAG,KAAK,CAAC,CAAC;IACzB;IAEA,IAAI16R,SAAS,KAAK,EAAE,IAAIf,OAAO,KAAK,EAAE,EAAE;MACpCy7R,WAAW,GAAG,KAAK,CAAC,CAAC;IACzB;;IAEA;;IAEA,OAAO;MACHniS,OAAO,EAAEmiS,WAAW;MACpB16R,SAAS;MACTf;IACJ,CAAC;EACL;EACA,SAAS07R,gBAAgBA,CAAA,EAAG;IACxB,IAAIC,WAAW,GAAG,IAAIl6S,IAAI,CAACy3L,gBAAgB,CAAC5sM,KAAK,CAAC;IAClD,IAAIqtB,UAAU,GAAG,IAAIlY,IAAI,CAAC,CAAC;IAC3Bk6S,WAAW,GAAGA,WAAW,CAACviS,eAAe,CAAC,CAAC;IAC3CO,UAAU,GAAGA,UAAU,CAACP,eAAe,CAAC,CAAC;IAEzC,OAAOuiS,WAAW,KAAKhiS,UAAU,GAAG,CAAC,GAAG,CAAC;EAC7C;EAEA,SAASwpM,qBAAqBA,CAAC7sL,YAAY,EAAE;IACzC,IAAI+sL,UAAU,GAAGw1F,cAAc,CAACluT,aAAa,CAAC,OAAO,CAAC;IACtD,IAAI24N,QAAQ,GAAGw1F,YAAY,CAACnuT,aAAa,CAAC,OAAO,CAAC;IAClD,IAAIqrJ,SAAS,GAAGkjD,gBAAgB,CAACvuM,aAAa,CAAC,OAAO,CAAC;IACvD,IAAIo2B,SAAS,GAAGsiM,UAAU,CAAC/2N,KAAK;IAChC,IAAI0zB,OAAO,GAAGsjM,QAAQ,CAACh3N,KAAK;IAC5B,IAAImxB,WAAW,GAAGrC,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACtC,IAAIw+F,WAAW,GAAGt4G,IAAI,CAACga,cAAc,CAAC,CAAC;IAEvC,IAAIkB,YAAY,KAAK,YAAY,EAAE;MAC/B,IAAI0/G,SAAS,CAAC1pJ,KAAK,KAAKmxB,WAAW,EAAE;QACjC,IAAIsD,SAAS,GAAG2yG,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC;MAC/C;MAEA,IAAI3yG,SAAS,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC;MACpC,IAAIA,SAAS,KAAK,EAAE,IAAIf,OAAO,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC;IACzD,CAAC,MAAM;MACH;MACA,IAAIg2H,SAAS,CAAC1pJ,KAAK,KAAKmxB,WAAW,EAAE;QACjC,IAAIuC,OAAO,GAAG0zG,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC;MAC7C;MAEA,IAAI1zG,OAAO,KAAK,EAAE,IAAIA,OAAO,KAAK,OAAO,EAAE,OAAO,KAAK,CAAC,CAAC;IAC7D;IAEA,OAAOe,SAAS,IAAIf,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;EAChD;EAEA,SAAS47R,aAAaA,CAAClB,UAAU,EAAE;IAC/B,IAAIb,UAAU,KAAK,KAAK,EAAE;MACtBjkM,aAAa,GAAG98G,CAAC,CAACC,OAAO,CAACmoC,QAAQ;MAClCqM,UAAU,GAAG,EAAE;MAEfurE,MAAM,GAAG,CAAC;MACVpS,WAAW,GAAG,EAAE;MAChB1qD,UAAU,GAAG,EAAE;MACfgrE,SAAS,GAAG,EAAE;MACduzL,iBAAiB,GAAG,EAAE;MACtB/9B,MAAM,GAAG,EAAE;MACX/5K,QAAQ,GAAG,EAAE;MACbw9I,SAAS,GAAG,EAAE;MACdlnI,WAAW,GAAG39F,IAAI,CAAC8Z,aAAa,CAAC,CAAC;MAClCnU,SAAS,GAAG3F,IAAI,CAACga,cAAc,CAAC,CAAC;MACjCpV,OAAO,GAAG,EAAE;MACZi8F,QAAQ,GAAG,EAAE;MACbE,YAAY,GAAG,GAAG;MAClBsZ,iBAAiB,GAAG,GAAG;MACvBvT,SAAS,GAAG,GAAG;MACfG,cAAc,GAAG,EAAE;IACvB,CAAC,MAAM;MACH6K,EAAE,GAAGwtL,UAAU,CAAC,CAAC,CAAC;MAClBI,WAAW,GAAG5tL,EAAE,CAAC/J,OAAO,KAAK,EAAE,GAAG,KAAK,GAAG,IAAI;MAE9CvN,aAAa,GAAGsX,EAAE,CAAC9J,aAAa;MAChC71E,UAAU,GAAG2/E,EAAE,CAAChT,UAAU;MAC1BpB,MAAM,GAAGoU,EAAE,CAAC2uL,MAAM;MAClBv+Q,WAAW,GAAG4vF,EAAE,CAAC/J,OAAO,KAAK,EAAE,GAAG,CAAC,GAAG+J,EAAE,CAAC/J,OAAO;MAChDQ,MAAM,GAAGuJ,EAAE,CAACvJ,MAAM;MAClBjd,WAAW,GAAGwmB,EAAE,CAAC9R,0BAA0B,CAAC,CAAC;MAC7C4mM,eAAe,GAAG90L,EAAE,CAACg1L,4BAA4B;MACjDlmQ,UAAU,GAAGkxE,EAAE,CAAC7R,YAAY;MAC5B2L,SAAS,GAAGkG,EAAE,CAAC3J,WAAW,CAAC,CAAC;MAC5BttE,WAAW,GAAGi3E,EAAE,CAAC+0L,WAAW;MAC5B1H,iBAAiB,GAAGrtL,EAAE,CAAC5R,iBAAiB;MACxCkhK,MAAM,GAAGtvJ,EAAE,CAAC1R,eAAe;MAC3B/Y,QAAQ,GAAGyqB,EAAE,CAACzR,QAAQ;MACtBwkI,SAAS,GAAG/yH,EAAE,CAACxR,WAAW;MAC1B3C,WAAW,GAAG39F,IAAI,CAACkY,eAAe,CAAC45F,EAAE,CAAC+lL,WAAW,CAACpnS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAChEkV,SAAS,GAAGmsG,EAAE,CAACvR,SAAS;MACxB37F,OAAO,GAAGktG,EAAE,CAACtR,OAAO;MACpBK,QAAQ,GAAGiR,EAAE,CAAChR,QAAQ;MACtBC,YAAY,GAAG+Q,EAAE,CAAC/Q,YAAY;MAC9BsZ,iBAAiB,GAAGvI,EAAE,CAAC9Q,wBAAwB;MAC/C8F,SAAS,GAAGgL,EAAE,CAAChL,SAAS;MACxBG,cAAc,GAAG6K,EAAE,CAAChE,cAAc,KAAK,EAAE,GAAG,GAAG,GAAGgE,EAAE,CAAChE,cAAc;MACnEyxL,aAAa,GAAGztL,EAAE,CAAC4uL,aAAa;MAChClB,kBAAkB,GAAG1tL,EAAE,CAAC6uL,eAAe;MACvC19L,iBAAiB,GAAG6O,EAAE,CAAC7J,YAAY;MACnCtH,UAAU,GAAGmR,EAAE,CAAClR,UAAU;MAC1BwvG,WAAW,GAAGt+F,EAAE,CAAC8uL,UAAU;MAC3B9wL,SAAS,GAAGgC,EAAE,CAAC+uL,cAAc;MAC7BE,gBAAgB,GAAGjvL,EAAE,CAACkvL,oBAAoB;MAC1ClH,SAAS,GAAGhoL,EAAE,CAACgvL,OAAO;MACtBrgM,OAAO,GAAGqR,EAAE,CAACpR,UAAU;IAC3B;EACJ;EACA,SAASqxC,cAAcA,CAAA,EAAG;IACtB,OAAO+nJ,SAAS,KAAK,EAAE,GAAG,IAAI,GAAG,KAAK;EAC1C;EAEA,SAASmH,aAAaA,CAAA,EAAG;IACrB,OAAO14L,MAAM,KAAK,GAAG,IAAIA,MAAM,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;EAC5D;EAEA,SAAS24L,kBAAkBA,CAAA,EAAG;IAC1B,IAAI34L,MAAM,KAAK,GAAG,IAAIA,MAAM,KAAK,IAAI,EAAE;MACnCzN,UAAU,GAAG,IAAI;MACjB;MACA;IACJ,CAAC,MAAM;MACHA,UAAU,GAAG,KAAK;IACtB;EACJ;EAEA,SAASumM,cAAcA,CAACvF,UAAU,EAAE;IAChC;IACAzwK,mBAAmB,CAACx+I,OAAO,CAACovT,GAAG,IAAI;MAC/B7gN,OAAO,CAAC8iD,iCAAiC,CAAC+9J,GAAG,CAAC;IAClD,CAAC,CAAC;IACF,IAAIqF,WAAW,GAAGj+M,cAAc,CAAC5uE,iBAAiB;IAClD,IAAI8sR,aAAa,GAAGzmK,gBAAgB,CAACrmH,iBAAiB;IACtD,IAAI+sR,YAAY,GAAGliG,eAAe,CAAC7qL,iBAAiB;IACpD,IAAIgtR,SAAS,GAAGvT,YAAY,CAACz5Q,iBAAiB;IAC9C,IAAIitR,YAAY,GAAGvT,eAAe,CAAC15Q,iBAAiB;IACpD2pG,kBAAkB,CAACc,SAAS;IAC5Bre,QAAQ,GAAG7gG,IAAI,CAACub,uBAAuB,CAACslF,QAAQ,CAAC;IACjD;IACA,IAAI8+L,kBAAkB,EAAE;MACpBgC,qBAAqB,CAAC,CAAC;IAC3B;IACA,IAAIlD,UAAU,KAAK,KAAK,EAAE;MACtB,IAAIhxL,WAAW,GAAG;QACdt7E,UAAU;QACVxsB,SAAS;QACTf,OAAO;QACP+4F,WAAW;QACXnD,aAAa;QACbkD,MAAM,EAAE,CAAC;QACTx7E,WAAW,EAAE;MACjB,CAAC;MACD,IAAIukF,QAAQ,GAAG;QACXjM,aAAa;QACbkD,MAAM;QACN;QACAqB,sBAAsB,EAAEzT,WAAW;QACnCyb,YAAY,EAAEnmE,UAAU;QACxB0qD,WAAW,EAAEsgB,SAAS;QACtB5E,QAAQ,EAAEo6J,MAAM;QAChBzjK,WAAW;QACXh4F,SAAS;QACTf,OAAO;QACPyiF,QAAQ,EAAEi6M,WAAW,CAAC1xT,OAAO,CAAC0xT,WAAW,CAACvvT,aAAa,CAAC,IAAI6B,SAAS,GAAG,EAAE,GAAG0tT,WAAW,CAAC1xT,OAAO,CAAC0xT,WAAW,CAACvvT,aAAa,CAAC,CAACb,KAAK;QACjI21H,WAAW,EAAEg+H,SAAS;QACtB39H,mBAAmB,EAAEi4L,iBAAiB;QACtCz4L,QAAQ,EAAE7F,QAAQ;QAAE;QACpBE,YAAY;QAAE;QACd+F,SAAS;QAAE;;QAEXH,eAAe,EAAEt0G,MAAM,CAACouG,OAAO,CAAC,KAAK,MAAM,GAAG,GAAG,GAAGpuG,MAAM,CAACouG,OAAO,CAAC;QACnEmG,kBAAkB,EAAEv0G,MAAM,CAACsuG,UAAU,CAAC;QACtCsC,iBAAiB,EAAE5wG,MAAM,CAAC4wG,iBAAiB,CAAC;QAC5CgE,cAAc;QACdoT,iBAAiB,CAAE;MACvB,CAAC;MACD3sI,UAAU,CAACwxH,QAAQ,CACf;QAAEuO,WAAW;QAAEhH,QAAQ;QAAE4kB,mBAAmB;QAAEywK;MAAW,CAAC,EAC1DsD,mBACJ,CAAC;MACD;IACJ;IAEA,IAAIX,UAAU,KAAK,QAAQ,EAAE;MACzB;MACA75R,OAAO,GAAGA,OAAO,CAACh4B,MAAM,KAAK,CAAC,GAAGg4B,OAAO,CAACzwB,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGywB,OAAO;MAClEe,SAAS,GAAGA,SAAS,CAAC/4B,MAAM,KAAK,CAAC,GAAG+4B,SAAS,CAACxxB,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGwxB,SAAS;MAC1E,IAAIi8R,iBAAiB,GAAG;QACpBzvQ,UAAU;QACVxsB,SAAS;QACTf,OAAO;QACP+4F,WAAW;QACXnD,aAAa;QACbkD,MAAM;QACNx7E;MACJ,CAAC;MACD,IAAIk6L,UAAU,GAAG;QACb1+G,MAAM;QACNx7E,WAAW;QACXs4E,aAAa;QACbroE,UAAU;QACV4sE,sBAAsB,EAAEzT,WAAW;QAAE;QACrCyb,YAAY,EACRw6L,aAAa,CAACxvT,aAAa,KAAK,CAAC,CAAC,GAC5B,IAAI,GACJwvT,aAAa,CAAC3xT,OAAO,CAAC2xT,aAAa,CAACxvT,aAAa,CAAC,CAACb,KAAK;QAClEo6G,WAAW,EAAEsgB,SAAS;QAAE;QACxB5E,QAAQ,EACJy6L,SAAS,CAAC1vT,aAAa,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG0vT,SAAS,CAAC7xT,OAAO,CAAC6xT,SAAS,CAAC1vT,aAAa,CAAC,CAACb,KAAK;QAC5FysH,WAAW;QACXh4F,SAAS;QACTf,OAAO;QACPyiF,QAAQ;QACRwf,WAAW,EACP66L,YAAY,CAAC3vT,aAAa,KAAK,CAAC,CAAC,GAC3B,IAAI,GACJ2vT,YAAY,CAAC9xT,OAAO,CAAC8xT,YAAY,CAAC3vT,aAAa,CAAC,CAACb,KAAK;QAChEg2H,mBAAmB,EAAEi4L,iBAAiB;QACtCl4L,cAAc;QACdlG,YAAY;QACZ+F,SAAS;QACTJ,QAAQ,EAAE7F,QAAQ;QAClB8F,eAAe,EAAEt0G,MAAM,CAACouG,OAAO,CAAC,KAAK,MAAM,GAAG,EAAE,GAAGpuG,MAAM,CAACouG,OAAO,CAAC;QAClEmG,kBAAkB,EAAEjG,UAAU,KAAK,IAAI,GAAGtuG,MAAM,CAAC,CAAC,CAAC,GAAGA,MAAM,CAACsuG,UAAU,CAAC;QACxEsC,iBAAiB,EAAEA,iBAAiB,KAAK,IAAI,GAAG5wG,MAAM,CAAC,CAAC,CAAC,GAAGA,MAAM,CAAC4wG,iBAAiB,CAAC;QACrFoX;MACJ,CAAC;MACD1sI,UAAU,CAACk0T,UAAU,CACjB;QAAEp0L,WAAW,EAAEm0L,iBAAiB;QAAExlF,UAAU;QAAE/wF,mBAAmB;QAAEq0K;MAAY,CAAC,EAChFN,mBACJ,CAAC;IACL;EACJ;;EAEA;EACA;EACA,SAAS10L,8BAA8BA,CAAC90E,GAAG,EAAE;IACzC,SAAS+0E,WAAWA,CAAC/0E,GAAG,EAAE;MACtB,IAAIlb,MAAM;QACNroC,IAAI,GAAG,EAAE;MACbqoC,MAAM,GAAG1a,IAAI,CAACua,QAAQ,CAClB,wCAAwC,GAAGqb,GAAG,CAAC83E,0BACnD,CAAC;MAED,IAAI9C,YAAY,GAAG,EAAE,CAAC/uH,KAAK,CAACC,IAAI,CAAC4+B,MAAM,CAAC9d,oBAAoB,CAAC,aAAa,CAAC,CAAC;MAC5EguG,YAAY,CAAC/9H,OAAO,CAACg+H,EAAE,IAAI;QACvB,IAAIxU,cAAc,GAAG,EAAE,CAACx6G,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAIkuG,YAAY,GAAG,EAAE,CAACjvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAImuG,iBAAiB,GAAG,EAAE,CAAClvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAIouG,kBAAkB,GAAG,EAAE,CAACnvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAIquG,mBAAmB,GAAG,EAAE,CAACpvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,IAAIsuG,eAAe,GAAG,EAAE,CAACrvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,IAAIuuG,kBAAkB,GAAG,EAAE,CAACtvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAIwuG,kBAAkB,GAAG,EAAE,CAACvvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAIyuG,kBAAkB,GAAG,EAAE,CAACxvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAI0uG,kBAAkB,GAAG,EAAE,CAACzvH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAI2uG,qBAAqB,GAAG,EAAE,CAAC1vH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,IAAIwpB,SAAS,GAAG,EAAE,CAACvqC,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI4uG,QAAQ,GAAG,EAAE,CAAC3vH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI6uG,QAAQ,GAAG,EAAE,CAAC5vH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI8uG,KAAK,GAAG,EAAE,CAAC7vH,KAAK,CAACC,IAAI,CAAC+uH,EAAE,CAACjuG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAE1D,IAAI+uG,SAAS,GAAG,CAAC,CAAC;QAClBA,SAAS,CAACrgB,WAAW,GAAG+K,cAAc,GAAGA,cAAc,CAACv/F,WAAW,GAAG,EAAE;QACxE60G,SAAS,CAACC,SAAS,GAAGd,YAAY,GAAGA,YAAY,CAACh0G,WAAW,GAAG,EAAE;QAClE60G,SAAS,CAACE,cAAc,GAAGd,iBAAiB,GAAGA,iBAAiB,CAACj0G,WAAW,GAAG,EAAE;QACjF60G,SAAS,CAAC7H,eAAe,GAAGkH,kBAAkB,GAAGA,kBAAkB,CAACl0G,WAAW,GAAG,EAAE;QACpF60G,SAAS,CAACnI,gBAAgB,GAAGyH,mBAAmB,GAAGA,mBAAmB,CAACn0G,WAAW,GAAG,EAAE;QACvF60G,SAAS,CAACjI,YAAY,GAAGwH,eAAe,GAAGA,eAAe,CAACp0G,WAAW,GAAG,EAAE;QAC3E60G,SAAS,CAAC/H,eAAe,GAAGuH,kBAAkB,GAAGA,kBAAkB,CAACr0G,WAAW,GAAG,EAAE;QACpF60G,SAAS,CAAC/Q,eAAe,GAAGwQ,kBAAkB,GAAGA,kBAAkB,CAACt0G,WAAW,GAAG,EAAE;QACpF60G,SAAS,CAACzI,eAAe,GAAGmI,kBAAkB,GAAGA,kBAAkB,CAACv0G,WAAW,GAAG,EAAE;QACpF60G,SAAS,CAACG,eAAe,GAAGR,kBAAkB,GAAGA,kBAAkB,CAACx0G,WAAW,GAAG,EAAE;QACpF60G,SAAS,CAACI,kBAAkB,GAAGR,qBAAqB,GAC9CA,qBAAqB,CAACz0G,WAAW,GACjC,EAAE;QACR60G,SAAS,CAACvlF,SAAS,GAAG,EAAE;QACxBulF,SAAS,CAACH,QAAQ,GAAG,EAAE;QACvBG,SAAS,CAACF,QAAQ,GAAG,EAAE;QACvBE,SAAS,CAACD,KAAK,GAAG,EAAE;QAEpBtlF,SAAS,CAACv5C,OAAO,CAACm/H,GAAG,IAAI;UACrB,IAAIC,UAAU,GAAG,EAAE,CAACpwH,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F,WAAW;UAClF,IAAIo1G,UAAU,GAAG,EAAE,CAACrwH,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F,WAAW;UAClF60G,SAAS,CAACvlF,SAAS,CAAC1rC,IAAI,CAAC;YACrByxH,OAAO,EAAEF,UAAU;YACnBG,OAAO,EAAEF;UACb,CAAC,CAAC;QACN,CAAC,CAAC;QACFV,QAAQ,CAAC3+H,OAAO,CAACm/H,GAAG,IAAI;UACpB,IAAIK,cAAc,GAAG,EAAE,CAACxwH,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CACzE9F,WAAW;UAChB,IAAIw1G,cAAc,GAAG,EAAE,CAACzwH,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CACzE9F,WAAW;UAChB60G,SAAS,CAACH,QAAQ,CAAC9wH,IAAI,CAAC;YACpB40G,WAAW,EAAE+c,cAAc;YAC3BxF,WAAW,EAAEyF;UACjB,CAAC,CAAC;QACN,CAAC,CAAC;QACFb,QAAQ,CAAC5+H,OAAO,CAACm/H,GAAG,IAAI;UACpB,IAAIO,cAAc,GAAG,EAAE,CAAC1wH,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CACzE9F,WAAW;UAChB,IAAIu/F,cAAc,GAAG,EAAE,CAACx6G,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CACzE9F,WAAW;UAChB60G,SAAS,CAACF,QAAQ,CAAC/wH,IAAI,CAAC;YACpBmgD,WAAW,EAAE0xE,cAAc;YAC3BjhB,WAAW,EAAE+K;UACjB,CAAC,CAAC;QACN,CAAC,CAAC;QACFqV,KAAK,CAAC7+H,OAAO,CAACm/H,GAAG,IAAI;UACjB,IAAIQ,WAAW,GAAG,EAAE,CAAC3wH,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F,WAAW;UACpF,IAAI21G,WAAW,GAAG,EAAE,CAAC5wH,KAAK,CAACC,IAAI,CAACkwH,GAAG,CAACpvG,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F,WAAW;UACpF60G,SAAS,CAACD,KAAK,CAAChxH,IAAI,CAAC;YACjBgyH,QAAQ,EAAEF,WAAW;YACrBxF,QAAQ,EAAEyF;UACd,CAAC,CAAC;QACN,CAAC,CAAC;QAEFp6H,IAAI,CAACqI,IAAI,CAACixH,SAAS,CAAC;MACxB,CAAC,CAAC;MAEF,OAAOt5H,IAAI;IACf;IAEA,IAAIs6H,eAAe,GAAGhC,WAAW,CAAC/0E,GAAG,CAAC;;IAEtC;IACA+2E,eAAe,CAAC9/H,OAAO,CAACsN,EAAE,IAAI;MAC1B;MACA,IAAI,CAACgzH,YAAY,CAAChzH,EAAE,CAACyxH,SAAS,CAAC,EAAE;QAC7BuB,YAAY,CAAChzH,EAAE,CAACyxH,SAAS,CAAC,GAAG;UACzBA,SAAS,EAAEzxH,EAAE,CAACyxH,SAAS;UACvBtgB,WAAW,EAAEnxG,EAAE,CAACmxG,WAAW;UAC3BugB,cAAc,EAAE1xH,EAAE,CAAC0xH,cAAc;UACjCzlF,SAAS,EAAE,CAAC,GAAGjsC,EAAE,CAACisC,SAAS,CAAC;UAC5BolF,QAAQ,EAAE,CAAC,GAAGrxH,EAAE,CAACqxH,QAAQ,CAAC;UAC1BC,QAAQ,EAAE,CAAC,GAAGtxH,EAAE,CAACsxH,QAAQ,CAAC;UAC1BC,KAAK,EAAE,CAAC,GAAGvxH,EAAE,CAACuxH,KAAK,CAAC;UACpBI,eAAe,EAAE3xH,EAAE,CAAC2xH,eAAe;UACnCC,kBAAkB,EAAE5xH,EAAE,CAAC4xH,kBAAkB;UACzC7I,eAAe,EAAE/oH,EAAE,CAAC+oH,eAAe;UACnCM,gBAAgB,EAAErpH,EAAE,CAACqpH,gBAAgB;UACrCE,YAAY,EAAEvpH,EAAE,CAACupH,YAAY;UAC7BI,eAAe,EAAE3pH,EAAE,CAAC2pH,eAAe;UACnCF,eAAe,EAAEzpH,EAAE,CAACypH,eAAe;UACnChJ,eAAe,EAAEzgH,EAAE,CAACygH;QACxB,CAAC;MACL;IACJ,CAAC,CAAC;IAEF4jM,gBAAgB,GAAGpwS,MAAM,CAAC8B,IAAI,CAACi9G,YAAY,CAAC;IAC5C,OAAOA,YAAY;EACvB;EAEA,SAAS20L,mBAAmBA,CAAA,EAAG;IAC3B,IAAIpkT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzC,IACIi4G,mBAAmB,CAAC9xG,UAAU,CAACnU,OAAO,CAClCimH,mBAAmB,CAAC9xG,UAAU,CAAChS,aAAa,CAC/C,CAACkE,YAAY,CAAC,sBAAsB,CAAC,KAAK,GAAG,EAChD;QACE2nT,uBAAuB,CAACzxT,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC/CuxT,uBAAuB,CAACzxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACjDwxT,uBAAuB,CAAC75S,UAAU,CAAChS,aAAa,GAAG,CAAC;QACpDotT,iBAAiB,GAAG,IAAI;MAC5B,CAAC,MAAM;QACHvB,uBAAuB,CAACzxT,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QAClD,IAAI+yT,iBAAiB,KAAK,EAAE,IAAIA,iBAAiB,KAAK,IAAI,EACtDvB,uBAAuB,CAACzxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACtD;IACJ;EACJ;;EAEA;EACA,SAASk+N,uBAAuBA,CAACw8F,UAAU,EAAE;IACzC9tL,aAAa,CAACwD,4BAA4B,CAACsqL,UAAU,EAAEppM,WAAW,EAAE,UAAUnmB,OAAO,EAAE;MACnF,IAAInlG,IAAI,GAAGmlG,OAAO,CAACnhG,GAAG,CAACsX,CAAC,IAAI;QACxB,OAAO;UACHzc,KAAK,EAAEyc,CAAC,CAAC29F,WAAW;UACpBr7G,IAAI,EAAE0d,CAAC,CAACgrF,QAAQ;UAChB5nG,UAAU,EAAE,CAAC;YAAEE,GAAG,EAAE,gBAAgB;YAAEC,KAAK,EAAEyc,CAAC,CAACq5S;UAAe,CAAC;QACnE,CAAC;MACL,CAAC,CAAC;MACF,IAAItpT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAEvL,IAAI,CAAC49D,OAAO,CAAC;QAAE/+D,KAAK,EAAE,EAAE;QAAEjB,IAAI,EAAE;MAAG,CAAC,CAAC,CAAC,CAAC;;MAEvF,IAAIqC,UAAU;MACd,IAAI20T,aAAa,GAAG,KAAK;MACzB,IAAIC,0BAA0B;;MAE9B;MACA,IAAIp1L,EAAE,IAAIA,EAAE,CAAC3J,WAAW,EAAE;QACtByD,SAAS,GAAGkG,EAAE,CAAC3J,WAAW;QAC1B71H,UAAU,GAAGs5H,SAAS;QACtB;QACA,KAAK,IAAIp0H,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGnF,IAAI,CAACzF,MAAM,EAAE4K,CAAC,EAAE,EAAE;UAClC,IAAInF,IAAI,CAACmF,CAAC,CAAC,CAACtG,KAAK,KAAK06H,SAAS,EAAE;YAC7Bi7L,WAAW,GAAGx0T,IAAI,CAACmF,CAAC,CAAC,CAACvH,IAAI;YAC1Bi3T,0BAA0B,GAAG70T,IAAI,CAACmF,CAAC,CAAC,CAACzG,UAAU,CAAC,CAAC,CAAC,CAACG,KAAK;YACxD+1T,aAAa,GAAG,IAAI;UACxB;QACJ;MACJ,CAAC,MAAM;QACHr7L,SAAS,GAAGv5H,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAGmB,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAG,EAAE;MAC7D;MAEAixT,eAAe,CAAC9vT,IAAI,EAAE,gBAAgB,CAAC;MAEvCf,QAAQ,CAAC5E,QAAQ,CAAC4yN,eAAe,EAAEjtN,IAAI,EAAEC,UAAU,CAAC;;MAEpD;MACA,IAAI,CAACA,UAAU,EAAE;QACbgtN,eAAe,CAACnzN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACtC;QACA,IAAI86T,cAAc,GAAG73T,QAAQ,CAACiD,cAAc,CAAC,qBAAqB,CAAC;QACnE40T,cAAc,CAACv3T,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;QAChCimH,mBAAmB,CAAC1pH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAC1C03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC/C,CAAC,MAAM;QACHizN,eAAe,CAACnzN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC7C;;MAEA;MACA,IAAIqyT,UAAU,KAAK,QAAQ,EAAE;QACzB,IAAI,CAACwI,aAAa,EAAE;UAChB3nG,eAAe,CAACnzN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;UACtC03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC/C,CAAC,MAAM;UACHizN,eAAe,CAACnzN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;UACzCkwH,mBAAmB,CAAC,CAAC;UACrBylM,sBAAsB,CAAC8E,WAAW,EAAEK,0BAA0B,CAAC;UAC/DlF,8BAA8B,CAAC,CAAC;QACpC;MACJ;IACJ,CAAC,CAAC;EACN;;EAEA;EACA,SAASD,sBAAsBA,CAAC8E,WAAW,EAAEO,qBAAqB,EAAE;IAChEnuL,aAAa,CAAC2D,0BAA0B,CACpCiqL,WAAW,EACXO,qBAAqB,EACrB,UAAU5vN,OAAO,EAAE6vN,MAAM,EAAE;MACvB,IAAIC,cAAc,GAAG9vN,OAAO,CAAC18F,MAAM,CAACysT,OAAO,IACvCA,OAAO,CAACC,QAAQ,KAAKH,MAAM,IAAIE,OAAO,CAACC,QAAQ,KAAK,GAAG,GAAG,IAAI,GAAG,KACrE,CAAC;MACD,IAAIF,cAAc,CAAC16T,MAAM,GAAG,CAAC,EAAE06T,cAAc,GAAG9vN,OAAO;MACvD,IAAInlG,IAAI,GAAGi1T,cAAc,CAACjxT,GAAG,CAACsX,CAAC,IAAI;QAC/B,OAAO;UACHzc,KAAK,EAAEyc,CAAC,CAAC85S,UAAU;UACnBx3T,IAAI,EAAE0d,CAAC,CAACgrF,QAAQ;UAChB5nG,UAAU,EAAE,CAAC;YAAEE,GAAG,EAAE,aAAa;YAAEC,KAAK,EAAEyc,CAAC,CAAC29F;UAAY,CAAC;QAC7D,CAAC;MACL,CAAC,CAAC;MAEF,IAAIh5G,UAAU,GAAGuoH,kBAAkB;;MAEnC;MACA,IAAIxoH,IAAI,CAACzF,MAAM,KAAK,CAAC,EAAE;QACnB,IAAI6xT,UAAU,KAAK,QAAQ,EAAE;UACzB;UACA;UACA,IAAIpsT,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,KAAK4gI,EAAE,CAAC9R,0BAA0B,EAAE;YACjD;YACA3tH,IAAI,CAAC49D,OAAO,CAAC;cACTngE,EAAE,EAAE,GAAG;cACPoB,KAAK,EAAE4gI,EAAE,CAAC9R,0BAA0B;cACpC/vH,IAAI,EAAE6hI,EAAE,CAACg1L;YACb,CAAC,CAAC;;YAEF;YACA,IAAID,WAAW,KAAK/0L,EAAE,CAAC+0L,WAAW,EAAE;cAChCv0T,UAAU,GAAGw/H,EAAE,CAAC9R,0BAA0B;cAC1C1U,WAAW,GAAGwmB,EAAE,CAAC9R,0BAA0B;cAC3C3tH,IAAI,CAACqpB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC,MAAM;cACH;cACAppB,UAAU,GAAGD,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;cAC1Bo6G,WAAW,GAAGj5G,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;cAC3BmB,IAAI,CAACqpB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;cACnBumS,qBAAqB,CAAC,CAAC;cACvByF,qBAAqB,CAAC,CAAC;YAC3B;YACA1F,8BAA8B,CAAC,CAAC;;YAEhC;UACJ,CAAC,MAAM;YACH1vT,UAAU,GAAGD,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;YAC1Bo6G,WAAW,GAAGj5G,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;YAC3B8wT,8BAA8B,CAAC,CAAC;YAChCC,qBAAqB,CAAC,CAAC;YACvB,IAAI,CAAC0E,oBAAoB,EAAEe,qBAAqB,CAAC,CAAC;UACtD;QACJ,CAAC,MAAM;UACH;UACAp1T,UAAU,GAAGD,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;UAC1Bo6G,WAAW,GAAGj5G,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;UAC3B8wT,8BAA8B,CAAC,CAAC;UAChC2F,2BAA2B,CAAC,CAAC;QACjC;MACJ,CAAC,MAAM;QACH;QACAt1T,IAAI,CAAC49D,OAAO,CAAC;UAAEngE,EAAE,EAAE,GAAG;UAAEoB,KAAK,EAAE,EAAE;UAAEjB,IAAI,EAAE;QAAG,CAAC,CAAC,CAAC,CAAC;QAChDoC,IAAI,CAACsU,IAAI,CAAC,UAAUjU,CAAC,EAAEuU,CAAC,EAAE;UACtB;UACA,IAAIvU,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE;YACjB,OAAO,CAAC,CAAC;UACb;UACA,IAAIyC,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE;YACjB,OAAO,CAAC;UACZ;UACA,OAAO,CAAC;QACZ,CAAC,CAAC;MACN;MAEAqB,QAAQ,CAAC5E,QAAQ,CAACmpH,mBAAmB,EAAExjH,IAAI,EAAEC,UAAU,CAAC;;MAExD;MACA,IAAIA,UAAU,KAAK,EAAE,EAAE;QACnBujH,mBAAmB,CAAC1pH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAC1C03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC/C,CAAC,MAAM;QACHwpH,mBAAmB,CAAC1pH,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC7C;QACAkwH,mBAAmB,CAAC,CAAC;MACzB;;MAEA;MACAqqM,oBAAoB,GAAG,KAAK;MAE5B9wM,mBAAmB,CAACtmH,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;;MAErF;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACJ,CACJ,CAAC;EACL;EAEA,SAASq3T,cAAcA,CAACv1T,IAAI,EAAE;IAC1BA,IAAI,CAACsU,IAAI,CAAC,UAAUjU,CAAC,EAAEuU,CAAC,EAAE;MACtB;MACA,IAAIvU,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE;QACjB,OAAO,CAAC,CAAC;MACb;MACA,IAAIyC,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE;QACjB,OAAO,CAAC;MACZ;MACA,OAAO,CAAC;IACZ,CAAC,CAAC;IAEF,OAAOoC,IAAI;EACf;EAEA,SAAS6vT,uBAAuBA,CAAA,EAAG;IAC/B,IAAI97Q,SAAS,GAAG+mF,YAAY,CAAC7hB,WAAW,CAAC,CAACllE,SAAS;IACnD,IAAI/zC,IAAI,GAAG+zC,SAAS,CAAC/vC,GAAG,CAAC21H,GAAG,IAAI;MAC5B,OAAO;QACH96H,KAAK,EAAE86H,GAAG,CAACI,OAAO;QAClBn8H,IAAI,EAAE+7H,GAAG,CAACG;MACd,CAAC;IACL,CAAC,CAAC;IAEF95H,IAAI,GAAGu1T,cAAc,CAACv1T,IAAI,CAAC;IAC3BA,IAAI,CAAC49D,OAAO,CAAC;MAAE/+D,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAErC,IAAIqC,UAAU;IAEd,IAAIw/H,EAAE,IAAIA,EAAE,CAAC7R,YAAY,EAAE;MACvBr/D,UAAU,GAAGkxE,EAAE,CAAC7R,YAAY;MAC5B3tH,UAAU,GAAGw/H,EAAE,CAAC7R,YAAY;IAChC,CAAC,MAAM;MACHr/D,UAAU,GAAGvuD,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAGmB,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAG,EAAE;IAC9D;IAEAixT,eAAe,CAAC9vT,IAAI,EAAE,iBAAiB,CAAC;IAExCf,QAAQ,CAAC5E,QAAQ,CAACouJ,gBAAgB,EAAEzoJ,IAAI,EAAEC,UAAU,CAAC;EACzD;EAEA,SAAS+vT,uBAAuBA,CAAA,EAAG;IAC/B,IAAI72L,QAAQ,GAAG2B,YAAY,CAAC7hB,WAAW,CAAC,CAACkgB,QAAQ;IAEjD,IAAIn5H,IAAI,GAAGm5H,QAAQ,CAACn1H,GAAG,CAACk+G,OAAO,IAAI;MAC/B,OAAO;QACHrjH,KAAK,EAAEqjH,OAAO,CAACsS,WAAW;QAC1B52H,IAAI,EAAEskH,OAAO,CAACjF;MAClB,CAAC;IACL,CAAC,CAAC;IAEFj9G,IAAI,GAAGu1T,cAAc,CAACv1T,IAAI,CAAC;IAC3BA,IAAI,CAAC49D,OAAO,CAAC;MAAE/+D,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAErC,IAAIqC,UAAU;IAEd,IAAIw/H,EAAE,IAAIA,EAAE,CAACxR,WAAW,EAAE;MACtBukI,SAAS,GAAG/yH,EAAE,CAACxR,WAAW;MAC1BhuH,UAAU,GAAGw/H,EAAE,CAACxR,WAAW;IAC/B,CAAC,MAAM;MACHukI,SAAS,GAAGxyP,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAGmB,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAG,EAAE;IAC7D;IAEAixT,eAAe,CAAC9vT,IAAI,EAAE,gBAAgB,CAAC;IAEvCf,QAAQ,CAAC5E,QAAQ,CAACyhT,eAAe,EAAE97S,IAAI,EAAEC,UAAU,CAAC;EACxD;EAEA,SAASgwT,oBAAoBA,CAAA,EAAG;IAC5B,IAAI52L,KAAK,GAAGyB,YAAY,CAAC7hB,WAAW,CAAC,CAACogB,KAAK;IAC3C,IAAIr5H,IAAI,GAAGq5H,KAAK,CAACr1H,GAAG,CAAC8pH,IAAI,IAAI;MACzB,OAAO;QACHjvH,KAAK,EAAEivH,IAAI,CAAC6G,QAAQ;QACpB/2H,IAAI,EAAEkwH,IAAI,CAACuM;MACf,CAAC;IACL,CAAC,CAAC;IAEFr6H,IAAI,GAAGu1T,cAAc,CAACv1T,IAAI,CAAC;IAC3BA,IAAI,CAAC49D,OAAO,CAAC;MAAE/+D,KAAK,EAAE,EAAE;MAAEjB,IAAI,EAAE;IAAG,CAAC,CAAC;IAErC,IAAIqC,UAAU;IAEd,IAAIw/H,EAAE,IAAIA,EAAE,CAAC1R,eAAe,EAAE;MAC1BghK,MAAM,GAAGtvJ,EAAE,CAAC1R,eAAe;MAC3B9tH,UAAU,GAAGw/H,EAAE,CAAC1R,eAAe;IACnC,CAAC,MAAM;MACHghK,MAAM,GAAG/uR,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAGmB,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAG,EAAE;IAC1D;IAEAixT,eAAe,CAAC9vT,IAAI,EAAE,aAAa,CAAC;IAEpCf,QAAQ,CAAC5E,QAAQ,CAACwhT,YAAY,EAAE77S,IAAI,EAAEC,UAAU,CAAC;EACrD;EAEA,SAAS6vT,eAAeA,CAAC9vT,IAAI,EAAEkwT,QAAQ,EAAE;IACrC,IAAIlwT,IAAI,CAACzF,MAAM,GAAG,CAAC,EAAE;MACjB0C,QAAQ,CAACiD,cAAc,CAACgwT,QAAQ,CAAC,CAAC9sT,aAAa,CAACrF,KAAK,CAACoK,OAAO,GAAG,EAAE;MAClE;IACJ,CAAC,MAAM;MACHlL,QAAQ,CAACiD,cAAc,CAACgwT,QAAQ,CAAC,CAAC9sT,aAAa,CAACrF,KAAK,CAACoK,OAAO,GAAG,MAAM;MACtE;IACJ;EACJ;EAEA,SAASmtT,2BAA2BA,CAAA,EAAG;IACnC/mQ,UAAU,GAAG,EAAE;IACfwgO,MAAM,GAAG,EAAE;IACXv8B,SAAS,GAAG,EAAE;IACd/pG,gBAAgB,CAACrmH,iBAAiB,CAAC1iC,aAAa,GAAG,CAAC;IACpDm8S,YAAY,CAACz5Q,iBAAiB,CAAC1iC,aAAa,GAAG,CAAC;IAChDo8S,eAAe,CAAC15Q,iBAAiB,CAAC1iC,aAAa,GAAG,CAAC;IAEnD+vT,mBAAmB,CAAC,CAAC;;IAErB;IACA,IAAIx2M,WAAW,KAAK,EAAE,EAAE;MACpBuK,mBAAmB,CAAC1pH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MAC1C03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC/C,CAAC,MAAM;MACHwpH,mBAAmB,CAAC1pH,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC7C;IACJ;IAEAkwH,mBAAmB,CAAC,CAAC;IAErB,IAAI5+G,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC5CqkT,qBAAqB,CAAC,CAAC;IAC3B;IAEA,IAAIvkT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzC+mT,sBAAsB,CAAC,CAAC;IAC5B;EACJ;EAEA,SAAS3C,8BAA8BA,CAAA,EAAG;IACtC;IACA,IAAI12M,WAAW,KAAK,EAAE,EAAE;MACpB,IAAI,CAACwmB,EAAE,EAAE;QACLlxE,UAAU,GAAG,EAAE;QACfwgO,MAAM,GAAG,EAAE;QACXv8B,SAAS,GAAG,EAAE;MAClB;MACA;MACA;MACA;MACA;MACA;MACA,IAAI13H,YAAY,CAAC7hB,WAAW,CAAC,EAAE;QAC3B42M,uBAAuB,CAAC,CAAC;QACzBG,uBAAuB,CAAC,CAAC;QACzBC,oBAAoB,CAAC,CAAC;MAC1B,CAAC,MAAM;QACH;QACA;MAAA;IAER;IACA,IAAIxwL,EAAE,EAAE;MACJuZ,mBAAmB,CAAC,CAAC,CAAC,GAAGvZ,EAAE,CAAChT,UAAU;MACtC5X,sBAAsB,CAAC,CAAC;MACxBs7M,wBAAwB,CAAC,CAAC;IAC9B;EACJ;EAEA,SAASt7M,sBAAsBA,CAAA,EAAG;IAC9B+xB,aAAa,CAACgB,0BAA0B,CACpCoR,mBAAmB,CAAC,CAAC,CAAC,EACtB1tB,WAAW,EACX,UAAUnmB,OAAO,EAAE;MACf,IAAInlG,IAAI,GAAGmlG,OAAO,CAACnhG,GAAG,CAACsX,CAAC,IAAI;QACxB,OAAO;UACHzc,KAAK,EAAEyc,CAAC,CAAC05F,QAAQ;UACjBp3G,IAAI,EAAE0d,CAAC,CAAC25F;QACZ,CAAC;MACL,CAAC,CAAC;MACF;MACA,IAAIh1G,UAAU;MAEd,IAAIw/H,EAAE,IAAIA,EAAE,CAACzR,QAAQ,EAAE;QACnB/tH,UAAU,GAAGw/H,EAAE,CAACzR,QAAQ;MAC5B,CAAC,MAAM;QACHhZ,QAAQ,GAAGh1G,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAGmB,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAG,EAAE;QACxDoB,UAAU,GAAG+0G,QAAQ;MACzB;MAEA/1G,QAAQ,CAAC5E,QAAQ,CAAC22G,cAAc,EAAEhxG,IAAI,EAAEC,UAAU,CAAC;IACvD,CACJ,CAAC;EACL;EAEA,SAASkwT,wBAAwBA,CAAA,EAAG;IAChC,IAAIC,cAAc,GAAG;MAAE9kM,WAAW;MAAExrE,UAAU,EAAEk5F,mBAAmB,CAAC,CAAC;IAAE,CAAC;IACxEpS,aAAa,CAACiB,sCAAsC,CAACuoL,cAAc,EAAE,UAAUjrN,OAAO,EAAE;MACpF,IAAInlG,IAAI,GAAGmlG,OAAO,CAACnhG,GAAG,CAACsX,CAAC,IAAI;QACxB,OAAO;UACHzc,KAAK,EAAEyc,CAAC,CAAC0wB,IAAI;UACbpuC,IAAI,EAAE0d,CAAC,CAAC+5F;QACZ,CAAC;MACL,CAAC,CAAC;MACFr1G,IAAI,CAAC49D,OAAO,CAAC;QAAE/+D,KAAK,EAAE,EAAE;QAAEjB,IAAI,EAAE;MAAG,CAAC,CAAC;MACrC,IAAIqC,UAAU;MAEd,IAAIw/H,EAAE,IAAIA,EAAE,CAAC5R,iBAAiB,EAAE;QAC5B5tH,UAAU,GAAGw/H,EAAE,CAAC5R,iBAAiB;MACrC,CAAC,MAAM;QACH;QACAi/L,iBAAiB,GAAG9sT,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAGmB,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK,GAAG,IAAI;MACvE;MAEA,IAAIwM,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EACvCtM,QAAQ,CAAC5E,QAAQ,CAACkxT,uBAAuB,EAAEvrT,IAAI,EAAEC,UAAU,CAAC;IACpE,CAAC,CAAC;EACN;;EAEA;EACA;EACA,SAAS6qT,WAAWA,CAAA,EAAG;IACnB;IACA;EAAA;EAEJ,SAAStB,UAAUA,CAAA,EAAG;IAClB2B,YAAY,CAACrxT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACzCkwH,mBAAmB,CAAC,CAAC;EACzB;EACA;EACA,SAAS3T,iBAAiBA,CAACp1C,KAAK,EAAE;IAC9B,IAAIq1C,IAAI,GAAGt5G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACxC+4G,IAAI,CAACz8G,SAAS,CAACE,GAAG,CAAC,qBAAqB,CAAC;IACzCu8G,IAAI,CAAC77G,WAAW,CAACwmE,KAAK,CAAC;IACvB,OAAOq1C,IAAI;EACf;EACA,SAASgzM,6BAA6BA,CAACniN,iBAAiB,EAAE+iN,OAAO,EAAE;IAC/D,IAAI9kJ,YAAY,GAAGpoK,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IAC5D,IAAIkvT,UAAU,KAAK,QAAQ,EAAE;MACzB,IAAI,CAACiB,WAAW,EAAE;QACdC,kBAAkB,GAAG,IAAI;MAC7B;IACJ;IACA;IACA,IAAIlB,UAAU,KAAK,KAAK,EAAE;MACtB,IAAI3B,iBAAiB,GAAGxtT,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC;MACpEuqT,iBAAiB,CAAC3wT,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACzCqzT,WAAW,GAAGlD,OAAO;IACzB;IACA/iN,iBAAiB,CAAC5sG,OAAO,CAAC2rG,QAAQ,IAAI;MAClC;MACA,IAAI6yC,mBAAmB,CAACvwI,MAAM,CAAChL,EAAE,IAAIA,EAAE,KAAK0oG,QAAQ,CAAC1oG,EAAE,CAAC,CAAClD,MAAM,GAAG,CAAC,EAAE;MACrE;MACA,IAAI8yT,WAAW,EAAE;QACb,IAAItxS,MAAM,CAAC8B,IAAI,CAACwuS,SAAS,CAACx8Q,WAAW,CAAC,CAAC,CAACpnC,MAAM,CAAChL,EAAE,IAAIA,EAAE,KAAK0oG,QAAQ,CAAC1oG,EAAE,CAAC,CAAClD,MAAM,GAAG,CAAC,EAAE;MACzF;MACA4rG,QAAQ,CAACoQ,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;MAC7CosG,QAAQ,CAACoQ,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC1CosG,QAAQ,CAACoQ,IAAI,CAACz8G,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;MAChD,IAAIknE,KAAK,GAAGilC,QAAQ,CAACoQ,IAAI,CAACjqG,SAAS,CAAC,IAAI,CAAC;MACzC,IAAIiqG,IAAI,GAAGD,iBAAiB,CAACp1C,KAAK,CAAC;MACnC;MACAq1C,IAAI,CAACn5G,gBAAgB,CAAC,OAAO,EAAE,MAAM;QACjC;QACA,IAAI+oG,QAAQ,GAAGvrG,KAAK,CAACC,MAAM,CAAC+I,YAAY,CAAC,kBAAkB,CAAC;QAC5DhJ,KAAK,CAACC,MAAM,CAACuI,aAAa,CAACrJ,MAAM,CAAC,CAAC;QACnCi/I,mBAAmB,GAAGA,mBAAmB,CAACvwI,MAAM,CAACuI,IAAI,IAAIA,IAAI,KAAKm1F,QAAQ,CAAC;QAC3E4C,OAAO,CAAC8iD,iCAAiC,CAAC1lD,QAAQ,CAAC;QACnD,IAAI6yC,mBAAmB,CAACz+I,MAAM,KAAK,CAAC,EAAE;UAClC;UACAo1T,8BAA8B,CAAC,CAAC;UAChC;UACA,IAAIvD,UAAU,KAAK,KAAK,EAAE;YACtB,IAAI3B,iBAAiB,GAAGxtT,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC;YACpEuqT,iBAAiB,CAAC3wT,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;UAChD;QACJ;QACAkwH,mBAAmB,CAAC,CAAC;QACrBsmM,uBAAuB,CAAC,CAAC;QACzB,IAAInE,UAAU,KAAK,QAAQ,EAAE;UACzB,IAAIpzK,mBAAmB,CAACz+I,MAAM,KAAK,CAAC,EAAE;YAClC+yT,kBAAkB,GAAG,KAAK;UAC9B;QACJ;MACJ,CAAC,CAAC;MACFjoJ,YAAY,CAAC3qK,WAAW,CAAC67G,IAAI,CAAC;;MAE9B;MACA,IAAI61M,UAAU,KAAK,KAAK,EAAE;QACtBpzK,mBAAmB,CAACz+I,MAAM,GAAG,CAAC;QAC9By+I,mBAAmB,CAAC3wI,IAAI,CAAC89F,QAAQ,CAAC1oG,EAAE,CAAC;MACzC,CAAC,MAAM;QACH,IAAIu7I,mBAAmB,CAACtqC,QAAQ,CAACvI,QAAQ,CAAC1oG,EAAE,CAAC,KAAK,KAAK,EAAE;UACrDu7I,mBAAmB,CAAC3wI,IAAI,CAAC89F,QAAQ,CAAC1oG,EAAE,CAAC;QACzC;MACJ;MAEA8yT,uBAAuB,CAAC,CAAC;IAC7B,CAAC,CAAC;;IAEF;IACA17M,sBAAsB,CAAC,CAAC;IACxB,IAAIxpG,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzC4kT,wBAAwB,CAAC,CAAC;IAC9B,CAAC,MAAM;MACH;IAAA;IAEJlmM,mBAAmB,CAAC,CAAC,CAAC,CAAC;EAC3B;EACA;EACA,SAAS2mM,YAAYA,CAAA,EAAG;IACpB,IAAIG,WAAW,GAAG9zT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/C;;IAEA,IAAIwzT,OAAO,GAAG/zT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CwzT,OAAO,CAACvzT,EAAE,GAAG,SAAS;IACtB;IACAuzT,OAAO,CAACt2T,WAAW,CAACq2T,WAAW,CAAC;IAEhC5kT,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACs2T,OAAO,CAAC;IAErC,IAAIz3L,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,GAAG,EAAEy3L,OAAO,CAACl3T,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAE1E,IAAIi3T,cAAc,GAAGh0T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClD;;IAEA;IACA,IAAIgsC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAClD2xT,aAAa,GAAGtuT,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,iBAAiB;MACvBH,EAAE,EAAE,cAAc;MAClBM,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBU,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,cAAc;QAAEC,KAAK,EAAE;MAAQ,CAAC,CAAC;MACrDC,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB;QACA,IAAIstI,YAAY,KAAK,IAAI,EAAE;QAC3BL,kBAAkB,CAACmB,UAAU,CAACtc,iBAAiB,CAAC;QAChDwb,YAAY,GAAG,IAAI;QACnB;MACJ;IACJ,CAAC,CAAC;IACFw/K,YAAY,GAAGvuT,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,gBAAgB;MACtBH,EAAE,EAAE,aAAa;MACjBM,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB;QACA,IAAIstI,YAAY,KAAK,KAAK,EAAE;QAC5Bxb,iBAAiB,GAAGmb,kBAAkB,CAACc,SAAS,CAAC,CAAC;QAClDT,YAAY,GAAG,KAAK;MACxB;IACJ,CAAC,CAAC;;IAEF;IACA,IAAI8kL,aAAa,GAAGzxL,EAAE,GAChBA,EAAE,CAAC7J,YAAY,GACX35G,IAAI,CAAC0F,KAAK,CAAC1F,IAAI,CAACuC,KAAK,CAACqG,QAAQ,CAAC46G,EAAE,CAAC7J,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAC1D,CAAC,GACL,CAAC;IACPo2L,mBAAmB,GAAGlrT,KAAK,CAACxD,KAAK,CAAC;MAC9B8B,KAAK,EAAE,kBAAkB;MACzB3B,EAAE,EAAE,uBAAuB;MAC3BO,IAAI,EAAE,MAAM;MACZU,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,EAC1B;QAAED,GAAG,EAAE,WAAW;QAAEC,KAAK,EAAE;MAAI,CAAC,EAChC;QAAED,GAAG,EAAE,YAAY;QAAEC,KAAK,EAAE;MAAsD,CAAC,CACtF;MACDQ,QAAQ,EAAEgM,CAAC,CAACC,OAAO,CAAConC,sBAAsB,KAAK,KAAK,GAAG,IAAI,GAAG,KAAK;MACnE7zC,KAAK,EAAEmhB,MAAM,CAACkxS,aAAa;IAC/B,CAAC,CAAC;IAEFD,cAAc,CAACv2T,WAAW,CAACsxT,mBAAmB,CAAC;IAC/CxiR,OAAO,CAAC9uC,WAAW,CAACixT,aAAa,CAAC;IAClCniR,OAAO,CAAC9uC,WAAW,CAACkxT,YAAY,CAAC;IAEjCmF,WAAW,CAACr2T,WAAW,CAAC8uC,OAAO,CAAC;IAChCunR,WAAW,CAACr2T,WAAW,CAACu2T,cAAc,CAAC;IAEvC,OAAOD,OAAO;EAClB;EACA,SAASG,iBAAiBA,CAAC7mM,SAAS,EAAE;IAClC,MAAM8mM,QAAQ,GAAG9mM,SAAS,CAAC5b,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;IACtD,IAAIl9E,IAAI;IAER,IAAI4/R,QAAQ,KAAK,IAAI,EAAE;MACnB5/R,IAAI,GAAG,GAAG84F,SAAS,CAAClsG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;IAC1C,CAAC,MAAM;MACHoT,IAAI,GAAG,GAAG84F,SAAS,CAAClsG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;IAC1C;IAEAoT,IAAI,GAAG7D,IAAI,CAACgF,iBAAiB,CAACnB,IAAI,CAAC;IACnC,OAAOA,IAAI,CAAChoB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC5B;EACA,SAAS6nT,4BAA4BA,CAAA,EAAG;IACpC,MAAM1mM,SAAS,GAAGwmM,iBAAiB,CAAC9lT,CAAC,CAACC,OAAO,CAAC8mD,yBAAyB,CAAC;IACxE,MAAMw4D,OAAO,GAAGumM,iBAAiB,CAAC9lT,CAAC,CAACC,OAAO,CAACgnD,uBAAuB,CAAC;IAEpE,IACIjnD,CAAC,CAACC,OAAO,CAAC8mD,yBAAyB,KAAK,OAAO,IAC/C/mD,CAAC,CAACC,OAAO,CAACgnD,uBAAuB,KAAK,OAAO,IAC7C,CAACjnD,CAAC,CAACC,OAAO,CAAC8mD,yBAAyB,IACpC,CAAC/mD,CAAC,CAACC,OAAO,CAACgnD,uBAAuB,IAClCjnD,CAAC,CAACC,OAAO,CAAC8mD,yBAAyB,KAAK,MAAM,IAC9C/mD,CAAC,CAACC,OAAO,CAACgnD,uBAAuB,KAAK,MAAM,EAC9C;MACE,OAAO,IAAI;IACf;IAEA,IAAIh/B,SAAS,GAAGq3F,SAAS,IAAIr3F,SAAS,GAAGs3F,OAAO,IAAIr4F,OAAO,GAAGo4F,SAAS,IAAIp4F,OAAO,GAAGq4F,OAAO,EAAE;MAC1F,OAAO,KAAK;IAChB;IAEA,OAAO,IAAI;EACf;EACA,SAAS0mM,uBAAuBA,CAAA,EAAG;IAC/B,SAASC,aAAaA,CAAC9H,UAAU,EAAE;MAC/B,SAAS+H,OAAOA,CAAA,EAAG;QACf,IAAInmT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,IAAI6gI,YAAY,EAAE;UAC5Dxb,iBAAiB,GAAGmb,kBAAkB,CAACc,SAAS,CAAC,CAAC;UAClDT,YAAY,GAAG,KAAK;QACxB;QACA;QACA,IAAI/gI,CAAC,CAACC,OAAO,CAAC+xC,UAAU,IAAIpgD,QAAQ,CAACqG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC/I,MAAM,GAAG,CAAC,EAAE;UAChF,MAAMk3T,cAAc,GAAGx0T,QAAQ,CAACqG,gBAAgB,CAAC,gBAAgB,CAAC;UAClEmuT,cAAc,CAACj3T,OAAO,CAACmnI,IAAI,IAAI;YAC3BA,IAAI,CAACv7G,aAAa,CAAC,IAAIH,KAAK,CAAC,OAAO,CAAC,CAAC;UAC1C,CAAC,CAAC;QACN;MACJ;MACA,IACI,CAAC8mS,mBAAmB,CAACxyT,MAAM,GAAG,CAAC,IAAI2sT,qBAAqB,CAAC3sT,MAAM,GAAG,CAAC,KACnE+yT,kBAAkB,EACpB;QACE,MAAM5jR,cAAc,GAAG;AACvC,2DAA2D;QAC3CJ,YAAY,CACRI,cAAc,EACd,MAAM;UACFgoR,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UAC3Cw3T,OAAO,CAAC,CAAC;UACT,IAAInmT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;YAC5C,MAAMomT,uBAAuB,GAAGN,4BAA4B,CAAC,CAAC;YAC9D,IAAIM,uBAAuB,EAAE;cACzB3C,cAAc,CAACvF,UAAU,CAAC;YAC9B,CAAC,MAAM;cACHngR,YAAY,CACR;AACpC,uEAAuE,EACnC,MAAM;gBACF0lR,cAAc,CAACvF,UAAU,CAAC;cAC9B,CAAC,EACD,MAAM;gBACFiI,WAAW,CAAC53T,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;gBACxC8xT,iBAAiB,CAAC/xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;gBAC9C;cACJ,CACJ,CAAC;YACL;UACJ,CAAC,MAAM;YACHi1T,cAAc,CAACvF,UAAU,CAAC;UAC9B;QACJ,CAAC,EACD,MAAM;UACF;QACJ,CACJ,CAAC;MACL,CAAC,MAAM;QACHiI,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC3Cw3T,OAAO,CAAC,CAAC;QACT,IAAInmT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;UAC5C,MAAMomT,uBAAuB,GAAGN,4BAA4B,CAAC,CAAC;UAC9D,IAAIM,uBAAuB,EAAE;YACzB3C,cAAc,CAACvF,UAAU,CAAC;UAC9B,CAAC,MAAM;YACHngR,YAAY,CACR;AAC5B,mEAAmE,EACvC,MAAM;cACF0lR,cAAc,CAACvF,UAAU,CAAC;YAC9B,CAAC,EACD,MAAM;cACFiI,WAAW,CAAC53T,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;cACxC8xT,iBAAiB,CAAC/xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;cAC9C;YACJ,CACJ,CAAC;UACL;QACJ,CAAC,MAAM;UACHi1T,cAAc,CAACvF,UAAU,CAAC;QAC9B;MACJ;IACJ;IACA,IAAI/7E,OAAO,GAAGzwO,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CkwO,OAAO,CAAC5zO,SAAS,CAACE,GAAG,CAAC,YAAY,EAAE,uBAAuB,CAAC;IAC5D;IACAkyT,gBAAgB,GAAGjvT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD0uT,gBAAgB,CAACpyT,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAClDkyT,gBAAgB,CAAC9xT,SAAS,GAAGkyT,cAAc;;IAE3C;IACA,IAAIvuT,KAAK,GAAG,WAAW;IAEvB8wT,kBAAkB,CAAC,CAAC;IAEpBrrM,mBAAmB,GAAGvkH,QAAQ,CAAC3B,KAAK,CAAC;MACjC4B,UAAU,EAAE,qBAAqB;MACjCE,KAAK,EAAEiM,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,GAAG,YAAY,GAAG,aAAa;MAChFxN;IACJ,CAAC,CAAC;IACF;;IAEA0qJ,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAC9B4B,UAAU,EAAE,iBAAiB;MAC7BE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFkvN,eAAe,GAAGhuN,QAAQ,CAAC3B,KAAK,CAAC;MAC7B4B,UAAU,EAAE,gBAAgB;MAC5BE,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIsN,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzCggT,uBAAuB,GAAGtsT,QAAQ,CAAC3B,KAAK,CAAC;QACrC8B,KAAK,EAAE,kBAAkB;QACzBrB;MACJ,CAAC,CAAC;IACN;IACA89S,YAAY,GAAG58S,QAAQ,CAAC3B,KAAK,CAAC;MAC1B4B,UAAU,EAAE,aAAa;MACzBE,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFizG,cAAc,GAAG/xG,QAAQ,CAAC3B,KAAK,CAAC;MAC5B8B,KAAK,EAAE,QAAQ;MACfrB;IACJ,CAAC,CAAC;IACF+9S,eAAe,GAAG78S,QAAQ,CAAC3B,KAAK,CAAC;MAC7B4B,UAAU,EAAE,gBAAgB;MAC5BE,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF;IACA0tM,gBAAgB,GAAG3qM,KAAK,CAACxD,KAAK,CAAC;MAC3B8B,KAAK,EAAE,cAAc;MACrBpB,IAAI,EAAE,MAAM;MACZD,KAAK;MACLc,KAAK,EAAEutT,UAAU,KAAK,QAAQ,GAAG9gM,WAAW,GAAGA,WAAW;MAC1D5sH,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE8uB,IAAI,CAAC8Z,aAAa,CAAC;MAAE,CAAC;IAC5D,CAAC,CAAC;IACF2jR,cAAc,GAAGtqT,KAAK,CAACxD,KAAK,CAAC;MACzB8B,KAAK,EAAE,YAAY;MACnBpB,IAAI,EAAE,MAAM;MACZD,KAAK;MACLc,KAAK,EAAEy0B;IACX,CAAC,CAAC;IACF+3R,YAAY,GAAGvqT,KAAK,CAACxD,KAAK,CAAC;MACvB8B,KAAK,EAAE,UAAU;MACjBpB,IAAI,EAAE,MAAM;MACZD,KAAK;MACLc,KAAK,EAAE0zB;IACX,CAAC,CAAC;IACF+4R,YAAY,GAAGxqT,KAAK,CAACxD,KAAK,CAAC;MACvBG,EAAE,EAAE,cAAc;MAClB2B,KAAK,EAAE,SAAS;MAChBrB,KAAK;MACLc,KAAK,EAAEuvH,OAAO,KAAK,GAAG,IAAIA,OAAO,KAAK,MAAM,GAAG,EAAE,GAAGA,OAAO;MAC3D1vH,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,CAAC;MACxCb,IAAI,EAAE;IACV,CAAC,CAAC;IAEFiuT,sBAAsB,GAAGnrT,KAAK,CAACxD,KAAK,CAAC;MACjC8B,KAAK,EAAE,qBAAqB;MAC5B3B,EAAE,EAAE,0BAA0B;MAC9BiB,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,EAC1B;QAAED,GAAG,EAAE,WAAW;QAAEC,KAAK,EAAE;MAAI,CAAC,EAChC;QAAED,GAAG,EAAE,YAAY;QAAEC,KAAK,EAAE;MAAsD,CAAC,CACtF;MACDA,KAAK,EAAE4gI,EAAE,GAAIA,EAAE,CAAClR,UAAU,GAAGkR,EAAE,CAAClR,UAAU,GAAG,EAAE,GAAI,EAAE;MACrDvwH,IAAI,EAAE;IACV,CAAC,CAAC;IAEFwtT,YAAY,GAAGnuT,MAAM,CAACC,KAAK,CAAC;MACxBG,EAAE,EAAE,cAAc;MAClBG,IAAI,EAAE,YAAY;MAClBI,IAAI,EAAE,WAAW;MACjBD,KAAK;MACLe,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClB;QACA8yT,cAAc,CAAC,CAAC;MACpB;IACJ,CAAC,CAAC;IACFxV,aAAa,GAAGt7S,KAAK,CAACxD,KAAK,CAAC;MACxBG,EAAE,EAAE,eAAe;MACnB2B,KAAK,EAAE,MAAM;MACbpB,IAAI,EAAE,UAAU;MAChBD,KAAK;MACLO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAE2vH,QAAQ;MACfvsH,GAAG,EAAEoJ,CAAC,CAACC,OAAO,CAAC+xC,UAAU,IAAI,CAACoqQ;IAClC,CAAC,CAAC;IACF;IACAqE,oBAAoB,GAAGhrT,KAAK,CAACyB,aAAa,CAAC;MACvC3E,IAAI,EAAE,cAAc;MACpB6E,SAAS,EAAEisH,YAAY,KAAK,GAAG,GAAG,IAAI,GAAG;IAC7C,CAAC,CAAC;IACFq9L,yBAAyB,GAAGjrT,KAAK,CAACyB,aAAa,CAAC;MAC5C3E,IAAI,EAAE,4BAA4B;MAClC6E,SAAS,EAAEulI,iBAAiB,KAAK,GAAG,GAAG,IAAI,GAAG;IAClD,CAAC,CAAC;IACF;IACAs6K,cAAc,GAAGjlT,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,gBAAgBovT,eAAe,GAAG;MACxCjvT,KAAK;MACLC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,YAAY;MAClBoB,QAAQ,EAAEA,CAAA,KAAM;QACZmoT,YAAY,CAAC9pT,IAAI,CAAC4vT,mBAAmB,EAAE7F,qBAAqB,EAAEO,SAAS,EAAEp8L,MAAM,EAAEo4L,SAAS,CAAC;MAC/F;IACJ,CAAC,CAAC;IACF,IAAIuJ,eAAe,GAAG,CAAC,EAAE1K,cAAc,CAACxoT,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAEvE,IAAI4D,IAAI,GAAGwuT,UAAU,KAAK,KAAK,GAAG,MAAM,GAAG,QAAQ;IACnDsF,WAAW,GAAGr0T,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI;MACJG,KAAK;MACLC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,MAAM;MACZY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAEA,CAAA,KAAMyyT,aAAa,CAAC,KAAK;IACvC,CAAC,CAAC;IACF1F,iBAAiB,GAAGxuT,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,YAAY;MAClBG,KAAK;MACLC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACXY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAEA,CAAA,KAAMyyT,aAAa,CAAC,IAAI;IACtC,CAAC,CAAC;IACF7F,aAAa,GAAGruT,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,QAAQ;MACdG,KAAK;MACLC,IAAI,EAAE,UAAU;MAChBN,IAAI,EAAE,OAAO;MACbY,UAAU,EAAE,CAAC,gBAAgB,CAAC;MAC9BQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBk6I,mBAAmB,CAACx+I,OAAO,CAACovT,GAAG,IAAI;UAC/B7gN,OAAO,CAAC8iD,iCAAiC,CAAC+9J,GAAG,CAAC;QAClD,CAAC,CAAC;QACF,IAAIx9K,YAAY,KAAK,IAAI,EAAE;UACvBL,kBAAkB,CAACc,SAAS,CAAC,CAAC;UAC9BT,YAAY,GAAG,KAAK;QACxB;QACA5F,aAAa,CAACrpI,IAAI,CAAC,CAAC;MACxB;IACJ,CAAC,CAAC;IACFuuT,aAAa,CAAC3tT,KAAK,CAACiS,KAAK,GAAG,MAAM;IAClC;IACAy7S,aAAa,GAAGpuT,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,QAAQ;MACdG,KAAK;MACLC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,QAAQ;MACdY,UAAU,EAAE,CAAC,gBAAgB,CAAC;MAC9BQ,QAAQ,EAAEysJ;IACd,CAAC,CAAC;IAEF,IAAI/hH,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACg3T,WAAW,CAAC;IAChC,IAAItF,UAAU,KAAK,QAAQ,EAAE;MACzBsF,WAAW,CAAC53T,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACxC8xT,iBAAiB,CAAC/xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC9CyvC,OAAO,CAAC9uC,WAAW,CAAC+wT,aAAa,CAAC;IACtC,CAAC,MAAM;MACHjiR,OAAO,CAAC9uC,WAAW,CAACmxT,iBAAiB,CAAC;IAC1C;IAEA,MAAMgG,QAAQ,GAAG50T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9Cq0T,QAAQ,CAAC/3T,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACjC63T,QAAQ,CAACn3T,WAAW,CAACgxT,aAAa,CAAC;IACnC;IACA,IAAIU,UAAU,KAAK,KAAK,EAAE;MACtB,IAAI12F,qBAAqB,CAAC,UAAU,CAAC,EAAE;QACnC21F,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC1C,CAAC,MAAM;QACHsxT,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACvC;IACJ;;IAEA;IACA,IAAI83T,UAAU,GAAG70T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9C,IAAIu0T,UAAU,GAAG90T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;;IAE9C;IACAs0T,UAAU,CAACp3T,WAAW,CAAC+wM,gBAAgB,CAAC;IACxCqmH,UAAU,CAACp3T,WAAW,CAAC0wT,cAAc,CAAC;IACtC0G,UAAU,CAACp3T,WAAW,CAAC2wT,YAAY,CAAC;IACpCyG,UAAU,CAACp3T,WAAW,CAACuyN,eAAe,CAAC;IACvC6kG,UAAU,CAACp3T,WAAW,CAAC8oH,mBAAmB,CAAC;IAC3C,IAAI,CAACikM,SAAS,EAAEqK,UAAU,CAACp3T,WAAW,CAAC8wT,YAAY,CAAC;IACpDsG,UAAU,CAACp3T,WAAW,CAAC0hT,aAAa,CAAC;IAErC,IAAI4U,OAAO,GAAG/zT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C,IAAI6N,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC5CylT,OAAO,CAACt2T,WAAW,CAACk2T,YAAY,CAAC,CAAC,CAAC;IACvC;IAEA,IAAI4E,WAAW,GAAGv4T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/Cg4T,WAAW,CAAC17T,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IACzC,IAAIy7T,UAAU,GAAGx4T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9Ci4T,UAAU,CAAC13T,KAAK,CAACiS,KAAK,GAAG,KAAK;IAE9B,IAAI0lT,aAAa,GAAGz4T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDk4T,aAAa,CAAC33T,KAAK,CAACiS,KAAK,GAAG,KAAK;IAEjCylT,UAAU,CAAC/6T,WAAW,CAACoxT,oBAAoB,CAAC;IAE5C,IAAIzgT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC5CkqT,UAAU,CAAC/6T,WAAW,CAACqxT,yBAAyB,CAAC;MACjD,IAAItE,SAAS,EAAE;QACXsE,yBAAyB,CAACr6S,UAAU,CAACxT,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;QACnE6tT,yBAAyB,CAACjyT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvD;IACJ;IACA,IAAIqR,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAEmqT,aAAa,CAACh7T,WAAW,CAAC4nT,cAAc,CAAC;IACzFkT,WAAW,CAAC96T,WAAW,CAAC+6T,UAAU,CAAC;IACnCD,WAAW,CAAC96T,WAAW,CAACg7T,aAAa,CAAC;IAEtC3D,UAAU,CAACr3T,WAAW,CAAC86T,WAAW,CAAC;IACnCzD,UAAU,CAACr3T,WAAW,CAACs2G,cAAc,CAAC;IACtC+gN,UAAU,CAACr3T,WAAW,CAAC+tJ,gBAAgB,CAAC;IACxCspK,UAAU,CAACr3T,WAAW,CAACmhT,YAAY,CAAC;IACpCkW,UAAU,CAACr3T,WAAW,CAACohT,eAAe,CAAC;IACvC,IAAIzwS,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzCwmT,UAAU,CAACr3T,WAAW,CAAC6wT,uBAAuB,CAAC;IACnD;IACA,IAAIlgT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAEwmT,UAAU,CAACr3T,WAAW,CAACs2T,OAAO,CAAC;IAC/Ee,UAAU,CAACr3T,WAAW,CAACuxT,sBAAsB,CAAC;IAC9C8F,UAAU,CAACr3T,WAAW,CAAC4wT,YAAY,CAAC;IACpC;IACA;;IAEA,IAAIc,UAAU,KAAK,QAAQ,EAAE;MACzB,IAAIv8Q,WAAW,KAAK,CAAC,EAAEkiR,UAAU,CAACr3T,WAAW,CAACwxT,gBAAgB,CAAC;;MAE/D;MACA,IAAI8F,kBAAkB,GAAG/0T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACtDw0T,kBAAkB,CAACl4T,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;MACtD,IAAIi4T,kBAAkB,GAAGh1T,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;MACpDy0T,kBAAkB,CAAC73T,SAAS,GAAG;AAC3C,wBAAwB2jO,WAAW,qBAAqBtgG,SAAS,KAAKixL,gBAAgB,OAAO;MACjFsD,kBAAkB,CAACt3T,WAAW,CAACu3T,kBAAkB,CAAC;MAElD,IAAIC,oBAAoB,GAAGj1T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACxD00T,oBAAoB,CAACp4T,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;MACvDozT,iBAAiB,GAAGtsT,KAAK,CAACyB,aAAa,CAAC;QACpC3E,IAAI,EAAE,WAAW;QACjB6E,SAAS,EAAEgyH,SAAS,KAAK,GAAG,GAAG,IAAI,GAAG;MAC1C,CAAC,CAAC;MAEFy9L,oBAAoB,CAACx3T,WAAW,CAAC0yT,iBAAiB,CAAC;;MAEnD;;MAEA,IAAI+E,UAAU;MACd,QAAQjF,aAAa;QACjB,KAAK,GAAG;UACJiF,UAAU,GAAG,cAAc;UAC3B;QACJ,KAAK,GAAG;UACJA,UAAU,GAAG,QAAQ;UACrB;QACJ,KAAK,GAAG;UACJA,UAAU,GAAG,UAAU;UACvB;QACJ;UACIA,UAAU,GAAGjF,aAAa;UAC1B;MACR;MAEA,IAAIt4L,cAAc,KAAK,GAAG,IAAIvpH,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;QACtE,IAAI6mT,aAAa,GAAGn1T,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QAC/C40T,aAAa,CAACt4T,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;QAC5Co4T,aAAa,CAACh4T,SAAS,GAAG;AAC1C,sEAAsE+3T,UAAU;AAChF,UAAUhF,kBAAkB,KAAK,EAAE,GAAG,EAAE,GAAG,0BAA0BA,kBAAkB,EAAE,EAAE;QAC3E,IAAID,aAAa,KAAK,GAAG,EAAEkF,aAAa,CAAC13T,WAAW,CAACw3T,oBAAoB,CAAC;MAC9E;;MAEA;MACA,IAAIt9L,cAAc,KAAK,GAAG,IAAIvpH,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;QACnE,IAAI6mT,aAAa,GAAGn1T,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QAC/C40T,aAAa,CAACt4T,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;QAC5Co4T,aAAa,CAACh4T,SAAS,GAAG;AAC1C,sEAAsE+3T,UAAU,EAAE;QAClEC,aAAa,CAAC13T,WAAW,CAACw3T,oBAAoB,CAAC;MACnD;IACJ;IAEAH,UAAU,CAACr3T,WAAW,CAAC8uC,OAAO,CAAC;IAC/BuoR,UAAU,CAACr3T,WAAW,CAACm3T,QAAQ,CAAC;IAChCnkF,OAAO,CAAChzO,WAAW,CAACo3T,UAAU,CAAC;IAC/BpkF,OAAO,CAAChzO,WAAW,CAACq3T,UAAU,CAAC;IAE/B,IAAI3F,UAAU,KAAK,QAAQ,EAAE;MACzB2F,UAAU,CAACr3T,WAAW,CAACs3T,kBAAkB,CAAC;MAC1C,IAAIp9L,cAAc,KAAK,GAAG,EAAEm9L,UAAU,CAACr3T,WAAW,CAAC03T,aAAa,CAAC;IACrE;;IAEA;;IAEAjmT,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACgzO,OAAO,CAAC;IAErC,IAAI0+E,UAAU,KAAK,QAAQ,EAAE;MACzBl0F,uBAAuB,CAACp4K,UAAU,CAAC;IACvC,CAAC,MAAM;MACH;MACAo4K,uBAAuB,CAACm8F,kBAAkB,CAAC;IAC/C;;IAEA;IACA9D,uBAAuB,CAAC,CAAC;IACzB8B,eAAe,CAAC,CAAC;IACjB5C,mBAAmB,CAAC,CAAC;IACrB,IAAIpkT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzC+mT,sBAAsB,CAAC,CAAC;IAC5B;IAEAnmT,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;IAEtB,OAAO45M,OAAO;EAClB;EACA,SAASm9E,kBAAkBA,CAAA,EAAG;IAC1B,IAAIxlJ,YAAY,GAAGpoK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD6nK,YAAY,CAACvrK,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAE5C,OAAOqrK,YAAY;EACvB;EAEA,SAASslJ,iBAAiBA,CAAC70M,kBAAkB,EAAE;IAC3Cu+M,kBAAkB,GAAGv+M,kBAAkB;IACvCq1M,YAAY,GAAGluT,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5C2tT,YAAY,CAACrxT,SAAS,CAACE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAElD,IAAIyzI,UAAU,GAAGxwI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9CiwI,UAAU,CAAC3zI,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IACxCyzI,UAAU,CAACrzI,SAAS,GAChBgyT,UAAU,KAAK,KAAK,GACd,uBAAuB,GACvB,yBAAyB3sL,EAAE,CAACxC,YAAY,OAAO;IAEzD,IAAIs1L,WAAW,GAAGjB,uBAAuB,CAAC,CAAC;;IAE3C;IACAnG,YAAY,CAACzwT,WAAW,CAAC+yI,UAAU,CAAC;IACpC09K,YAAY,CAACzwT,WAAW,CAAC63T,WAAW,CAAC;IAErC,OAAOpH,YAAY;EACvB;EAEA,SAASyG,cAAcA,CAAA,EAAG;IACtBjK,eAAe,CAACztT,IAAI,CAACkiT,aAAa,CAACl/S,aAAa,CAAC,qBAAqB,CAAC,CAAC2B,KAAK,EAAE4kT,SAAS,CAAC;EAC7F;EACA,SAAS6F,aAAaA,CAACjwS,IAAI,EAAE;IACzBm1G,QAAQ,GAAGn1G,IAAI;IACf4wG,mBAAmB,CAAC,CAAC;EACzB;EAEA,SAASorM,qBAAqBA,CAAA,EAAG;IAC7B,IAAIv6L,YAAY,CAAC7hB,WAAW,CAAC,CAACwgB,eAAe,KAAK,GAAG,EAAE;MACnDu3L,OAAO,CAACl3T,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IACnC,CAAC,MAAM;MACHg3T,OAAO,CAACl3T,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MAClC,IAAI04T,YAAY,GAAGx1T,QAAQ,CAACiD,cAAc,CAAC,sBAAsB,CAAC;MAClE,IAAI,CAACuyT,YAAY,IAAI,CAAChL,SAAS,EAAE;QAC7B,IAAI,CAACh/L,UAAU,EAAE+pM,oBAAoB,CAAC,CAAC;MAC3C;IACJ;EACJ;EAEA,SAASA,oBAAoBA,CAAA,EAAG;IAC5B,IAAIv1T,QAAQ,CAACiD,cAAc,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC7DuyT,YAAY,GAAGzlT,KAAK,CAAC1P,KAAK,CAAC;MACvBG,EAAE,EAAE;IACR,CAAC,CAAC;IACF,IAAIiqJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBitI,kBAAkB,CAACmB,UAAU,CAACtc,iBAAiB,CAAC;QAChDwb,YAAY,GAAG,IAAI;QACnBp/H,KAAK,CAAC/S,IAAI,CAACw4T,YAAY,CAAC;MAC5B;IACJ,CAAC,CAAC;IACF,IAAI9qK,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAACw4T,YAAY,CAAC;MAC5B;IACJ,CAAC,CAAC;IACF,IAAIjpR,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAE1B,IAAI+qK,SAAS,GAAGz1T,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3Ck1T,SAAS,CAACt4T,SAAS,GACf,0FAA0F;IAC9Fq4T,YAAY,CAAC/3T,WAAW,CAACg4T,SAAS,CAAC;IACnCD,YAAY,CAAC/3T,WAAW,CAAC8uC,OAAO,CAAC;IACjCx8B,KAAK,CAAC9S,IAAI,CAACu4T,YAAY,CAAC;EAC5B;EAEA,SAASH,sBAAsBA,CAACK,YAAY,EAAE;IAC1C,IAAIC,0BAA0B,GAAG31T,QAAQ,CAACiD,cAAc,CAAC,qBAAqB,CAAC;IAC/E+4G,WAAW,GACP25M,0BAA0B,CAACr1T,OAAO,CAACq1T,0BAA0B,CAAClzT,aAAa,CAAC,CAACb,KAAK;IACtF,IAAIo6G,WAAW,KAAK,EAAE,EAAE;MACpBuK,mBAAmB,CAAC1pH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MAC1CiwH,mBAAmB,CAAC,CAAC;MACrB;IACJ,CAAC,MAAMzG,mBAAmB,CAAC1pH,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACpDyzT,mBAAmB,GAAG1yL,YAAY,CAAC7hB,WAAW,CAAC,CAACkY,gBAAgB;IAChEu8L,eAAe,GAAG5yL,YAAY,CAAC7hB,WAAW,CAAC,CAACoY,YAAY;IACxDs8L,kBAAkB,GAAG7yL,YAAY,CAAC7hB,WAAW,CAAC,CAACsY,eAAe;IAC9Dk8L,kBAAkB,GAAG3yL,YAAY,CAAC7hB,WAAW,CAAC,CAACwY,eAAe;IAE9D,IAAI19E,SAAS,GAAG+mF,YAAY,CAAC7hB,WAAW,CAAC,CAACllE,SAAS;IACnD,IAAIy5Q,mBAAmB,KAAK,GAAG,IAAIz5Q,SAAS,CAACx5C,MAAM,KAAK,CAAC,EAAE;MACvDkuJ,gBAAgB,CAAC3uJ,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC9C,CAAC,MAAM,IAAIyzT,mBAAmB,KAAK,GAAG,KAAKj/P,UAAU,KAAK,EAAE,IAAIA,UAAU,KAAK,GAAG,CAAC,EAAE;MACjFk6F,gBAAgB,CAAC3uJ,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC3C,CAAC,MAAMyuJ,gBAAgB,CAAC3uJ,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAEjD,IAAIs/H,KAAK,GAAGyB,YAAY,CAAC7hB,WAAW,CAAC,CAACogB,KAAK;IAC3C,IAAIq0L,eAAe,KAAK,GAAG,IAAIr0L,KAAK,CAAC9+H,MAAM,KAAK,CAAC,EAAE;MAC/CshT,YAAY,CAAC/hT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM,IAAI2zT,eAAe,KAAK,GAAG,KAAK3+B,MAAM,KAAK,EAAE,IAAIA,MAAM,KAAK,GAAG,CAAC,EAAE;MACrE8sB,YAAY,CAAC/hT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACvC,CAAC,MAAM6hT,YAAY,CAAC/hT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAE7C,IAAIo/H,QAAQ,GAAG2B,YAAY,CAAC7hB,WAAW,CAAC,CAACkgB,QAAQ;IACjD,IAAIw0L,kBAAkB,KAAK,GAAG,IAAIx0L,QAAQ,CAAC5+H,MAAM,KAAK,CAAC,EAAE;MACrDuhT,eAAe,CAAChiT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C,CAAC,MAAM,IAAI4zT,kBAAkB,KAAK,GAAG,KAAKn7D,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,GAAG,CAAC,EAAE;MAC9EspD,eAAe,CAAChiT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM8hT,eAAe,CAAChiT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAEhD,IAAIq/H,QAAQ,GAAG0B,YAAY,CAAC7hB,WAAW,CAAC,CAACmgB,QAAQ;IACjD,IAAIq0L,kBAAkB,KAAK,GAAG,IAAIr0L,QAAQ,CAAC7+H,MAAM,KAAK,CAAC,EAAE;MACrD0yN,eAAe,CAACnzN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C,CAAC,MAAM,IAAI0zT,kBAAkB,KAAK,GAAG,KAAKl0L,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,GAAG,CAAC,EAAE;MAC9E0zF,eAAe,CAACnzN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAMizN,eAAe,CAACnzN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;;IAEhD;IACA,IAAIsR,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,KAAKguH,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,GAAG,CAAC,EAAE;MACpF/V,mBAAmB,CAAC1pH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9C;IAEAiwH,mBAAmB,CAAC,CAAC;EACzB;EAEA,SAAS2lM,qBAAqBA,CAAC+C,YAAY,EAAE;IACzC,IAAIE,cAAc,GAAG51T,QAAQ,CAACiD,cAAc,CAAC,SAAS,CAAC;IACvD,IAAI4yT,YAAY,GAAG71T,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IAC5D,IAAI8uT,mBAAmB,GAAG/uT,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC;IAC1E,IAAI+rT,sBAAsB,GAAGhvT,QAAQ,CAACiD,cAAc,CAAC,0BAA0B,CAAC;IAChF,IAAIy1T,iBAAiB,GAAG14T,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC;IAC/D,IAAIu5H,eAAe,GAAGqB,YAAY,CAAC7hB,WAAW,CAAC,CAACwgB,eAAe;IAC/D,IAAIC,kBAAkB,GAAGoB,YAAY,CAAC7hB,WAAW,CAAC,CAACygB,kBAAkB;IAErE8yL,kBAAkB,GAAG1xL,YAAY,CAAC7hB,WAAW,CAAC,CAACkY,gBAAgB;IAC/Ds7L,cAAc,GAAG3xL,YAAY,CAAC7hB,WAAW,CAAC,CAACoY,YAAY;IACvDq7L,iBAAiB,GAAG5xL,YAAY,CAAC7hB,WAAW,CAAC,CAACsY,eAAe;IAC7Dq7L,iBAAiB,GAAG9xL,YAAY,CAAC7hB,WAAW,CAAC,CAACsP,eAAe;IAC7DokM,iBAAiB,GAAG7xL,YAAY,CAAC7hB,WAAW,CAAC,CAACwY,eAAe;IAC7Do7L,iBAAiB,GAAG/xL,YAAY,CAAC7hB,WAAW,CAAC,CAAC4X,eAAe;;IAE7D;IACA;;IAEA;IACA;IACA,IAAI4I,eAAe,KAAK,GAAG,IAAIC,kBAAkB,KAAK,GAAG,EAAE;MACvDm5L,cAAc,CAAC/4T,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC7C,CAAC,MAAM84T,cAAc,CAAC/4T,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC7C;IACA;IACA;IACA,IACIy/H,eAAe,KAAK,GAAG,IACvBk5L,YAAY,KAAK,gBAAgB,KAChClL,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,IAAI,CAAC,EAC1C;MACE;MACA,IAAIgL,YAAY,GAAGx1T,QAAQ,CAACiD,cAAc,CAAC,sBAAsB,CAAC;MAClE,IAAI,CAACuyT,YAAY,IAAI,CAAC6B,oBAAoB,EAAE;QACxC,IAAI,CAAC7rM,UAAU,EAAE+pM,oBAAoB,CAAC,CAAC;MAC3C;IACJ;IAEA,IAAI/4L,eAAe,KAAK,GAAG,EAAE;MACzBu3L,OAAO,CAACl3T,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IACnC,CAAC,MAAM;MACHg3T,OAAO,CAACl3T,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IACtC;IAEA,QAAQ0/H,eAAe;MACnB,KAAK,GAAG;QACJuyL,mBAAmB,CAAC5oT,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QAC5D+4T,YAAY,CAACh5T,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QACvC,IAAI0lI,EAAE,EAAE;UACJ;UACAusL,mBAAmB,CAACntT,KAAK,GAAG4gI,EAAE,GACxBA,EAAE,CAAC7J,YAAY,GACX35G,IAAI,CAAC0F,KAAK,CAAC1F,IAAI,CAACuC,KAAK,CAACqG,QAAQ,CAAC46G,EAAE,CAAC7J,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAC1D,CAAC,GACL,CAAC;QACX,CAAC,MAAM;UACHo2L,mBAAmB,CAACntT,KAAK,GAAG,EAAE;QAClC;QACA;MACJ;QACImtT,mBAAmB,CAAC5oT,aAAa,CAACtJ,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACzD84T,YAAY,CAACh5T,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACpCgyT,mBAAmB,CAACntT,KAAK,GAAG,GAAG;QAC/B,IAAI,CAAC4oT,SAAS,EAAE17K,kBAAkB,CAACc,SAAS,CAAC,CAAC;QAC9CT,YAAY,GAAG,KAAK;QACpBxb,iBAAiB,GAAG,EAAE;QACtB;IACR;IACA,QAAQ8I,kBAAkB;MACtB,KAAK,GAAG;QACJuyL,sBAAsB,CAAC7oT,aAAa,CAACtJ,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QAC/D,IAAI0lI,EAAE,EAAE;UACJ;UACAwsL,sBAAsB,CAACptT,KAAK,GAAG4gI,EAAE,CAAClR,UAAU;QAChD,CAAC,MAAM;UACH09L,sBAAsB,CAACptT,KAAK,GAAG,EAAE;QACrC;QAEA;MACJ;QACIotT,sBAAsB,CAAC7oT,aAAa,CAACtJ,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QAC5DiyT,sBAAsB,CAACptT,KAAK,GAAG,GAAG;QAClCyvH,UAAU,GAAG,EAAE;QACf;IACR;IACA,QAAQu+L,iBAAiB;MACrB,KAAK,GAAG;QACJvB,YAAY,CAACxxT,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QACvC,IAAI0lI,EAAE,EAAE;UACJ;UACA;UACAk2L,iBAAiB,CAAC92T,KAAK,GAAG4gI,EAAE,CAACpR,UAAU;QAC3C;QACA;MACJ;QACIi9L,YAAY,CAACxxT,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACpCsxT,YAAY,CAACzsT,KAAK,GAAG,EAAE;QACvB;QACAuvH,OAAO,GAAG,EAAE;QACZ;IACR;IAEA,IAAIr6E,SAAS,GAAG+mF,YAAY,CAAC7hB,WAAW,CAAC,CAACllE,SAAS;IACnD,IAAIy4Q,kBAAkB,KAAK,GAAG,IAAIz4Q,SAAS,CAACx5C,MAAM,KAAK,CAAC,EAAE;MACtDkuJ,gBAAgB,CAAC3uJ,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC9C,CAAC,MAAM,IACHyyT,kBAAkB,KAAK,GAAG,KACzBj+P,UAAU,KAAK,EAAE,IACdA,UAAU,KAAK,GAAG,IAClBxa,SAAS,CAACtrC,MAAM,CAACjJ,CAAC,IAAIA,CAAC,CAACu6H,OAAO,KAAKxrE,UAAU,CAAC,CAACh0D,MAAM,KAAK,CAAC,CAAC,EACnE;MACEkuJ,gBAAgB,CAAC3uJ,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC3C,CAAC,MAAMyuJ,gBAAgB,CAAC3uJ,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAEjD,IAAIs/H,KAAK,GAAGyB,YAAY,CAAC7hB,WAAW,CAAC,CAACogB,KAAK;IAC3C,IAAIozL,cAAc,KAAK,GAAG,IAAIpzL,KAAK,CAAC9+H,MAAM,KAAK,CAAC,EAAE;MAC9CshT,YAAY,CAAC/hT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM,IACH0yT,cAAc,KAAK,GAAG,KACrB19B,MAAM,KAAK,EAAE,IAAIA,MAAM,KAAK,GAAG,IAAI11J,KAAK,CAAC5wH,MAAM,CAACjJ,CAAC,IAAIA,CAAC,CAACm1H,QAAQ,KAAKo6J,MAAM,CAAC,CAACx0R,MAAM,KAAK,CAAC,CAAC,EAC5F;MACEshT,YAAY,CAAC/hT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACvC,CAAC,MAAM6hT,YAAY,CAAC/hT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAE7C,IAAIo/H,QAAQ,GAAG2B,YAAY,CAAC7hB,WAAW,CAAC,CAACkgB,QAAQ;IACjD,IAAIuzL,iBAAiB,KAAK,GAAG,IAAIvzL,QAAQ,CAAC5+H,MAAM,KAAK,CAAC,EAAE;MACpDuhT,eAAe,CAAChiT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C,CAAC,MAAM,IACH2yT,iBAAiB,KAAK,GAAG,KACxBl6D,SAAS,KAAK,EAAE,IACbA,SAAS,KAAK,GAAG,IACjBr5H,QAAQ,CAAC1wH,MAAM,CAACjJ,CAAC,IAAIA,CAAC,CAACg1H,WAAW,KAAKg+H,SAAS,CAAC,CAACj4P,MAAM,KAAK,CAAC,CAAC,EACrE;MACEuhT,eAAe,CAAChiT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM8hT,eAAe,CAAChiT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;;IAEhD;IACA,IAAI8yT,iBAAiB,KAAK,GAAG,EAAE;MAC3BvB,YAAY,CAACxxT,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC3C,CAAC,MAAM;MACHuxT,YAAY,CAACzsT,KAAK,GAAG,EAAE;MACvBysT,YAAY,CAACxxT,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IACxC;IACA;IACA,IAAIqR,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,KAAKguH,SAAS,KAAK,EAAE,IAAIA,SAAS,KAAK,GAAG,CAAC,EAAE;MACpF/V,mBAAmB,CAAC1pH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9C;;IAEA;IACA;IACA,IAAI4yT,iBAAiB,KAAK,GAAG,EAAE;MAC3B,QAAQR,UAAU;QACd,KAAK,QAAQ;UACT;UACA,IAAIpzK,mBAAmB,CAACz+I,MAAM,GAAG,CAAC,EAAE;YAChC,IAAIk4T,YAAY,EAAEzlT,KAAK,CAAC/S,IAAI,CAACw4T,YAAY,CAAC;YAC1CM,0BAA0B,CAAC,CAAC;YAC5B;UACJ;UACA;QACJ,KAAK,KAAK;UACN,IAAI/5K,mBAAmB,CAACz+I,MAAM,KAAK,CAAC,EAAE;YAClC;UAAA,CACH,MAAM,IAAIy+I,mBAAmB,CAACz+I,MAAM,GAAG,CAAC,EAAE;YACvCw4T,0BAA0B,CAAC,CAAC;UAChC;UACA;QACJ;UACI;MACR;IACJ,CAAC,CAAC;IAAA,KACG9oM,mBAAmB,CAAC,CAAC;EAC9B;EAEA,SAASooM,eAAeA,CAAA,EAAG;IACvB,IAAIW,UAAU;IACd;IACAxvM,mBAAmB,CAACpmH,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEu5G,WAAW,GAAGx5G,cAAc,CAACZ,KAAK;MAClC;MACA8wT,8BAA8B,CAAC,CAAC;MAChC;MACA2F,2BAA2B,CAAC,CAAC;;MAE7B;MACA,IAAIjI,WAAW,IAAIvyL,YAAY,CAAC7hB,WAAW,CAAC,CAACwgB,eAAe,KAAK,GAAG,EAAE;QAClEnwF,YAAY,CACR,iGAAiG,EACjG,IAAI,EACJ,IAAI,EACJ,KACJ,CAAC;MACL;IACJ,CAAC,CAAC;IAEFm/G,gBAAgB,CAACrrJ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE6uD,UAAU,GAAG9uD,cAAc,CAACZ,KAAK;MACjC;MACA;MACA,IAAI2uT,mBAAmB,KAAK,GAAG,IAAIhB,kBAAkB,KAAK,GAAG,EAAE;QAC3D,IAAIj+P,UAAU,KAAK,EAAE,EAAE;UACnBk6F,gBAAgB,CAAC3uJ,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAC3C,CAAC,MAAMyuJ,gBAAgB,CAAC3uJ,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACjDkwH,mBAAmB,CAAC,CAAC;MACzB;IACJ,CAAC,CAAC;IAEFgjG,eAAe,CAAC7vN,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD;MACA,IAAIA,KAAK,CAACC,MAAM,CAAC6E,aAAa,KAAK,CAAC,EAAE;QAClCutN,eAAe,CAACnzN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACtC03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAE3C,IAAI47T,SAAS,GAAG,EAAE;QAClB32T,QAAQ,CAAC5E,QAAQ,CAACmpH,mBAAmB,EAAEoyM,SAAS,EAAE,IAAI,CAAC;QACvD32T,QAAQ,CAAC5E,QAAQ,CAACwhT,YAAY,EAAE+Z,SAAS,EAAE,IAAI,CAAC;QAChD32T,QAAQ,CAAC5E,QAAQ,CAACyhT,eAAe,EAAE8Z,SAAS,EAAE,IAAI,CAAC;QACnD32T,QAAQ,CAAC5E,QAAQ,CAACouJ,gBAAgB,EAAEmtK,SAAS,EAAE,IAAI,CAAC;QAEpDpyM,mBAAmB,CAAC1pH,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAC1C6hT,YAAY,CAAC/hT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACtC+hT,eAAe,CAAChiT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACzC0uJ,gBAAgB,CAAC3uJ,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC1C61T,qBAAqB,CAAC,CAAC;QAEvB;MACJ,CAAC,MAAM;QACH3iG,eAAe,CAACnzN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC7C;MAEA,IAAI0F,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE65H,SAAS,GAAG95H,cAAc,CAACZ,KAAK;MAChC2pD,WAAW,GAAG/oD,cAAc,CAAC7B,IAAI;MACjC4sI,qBAAqB,GAAG/qI,cAAc,CAACf,UAAU,CAAC,CAAC,CAAC,CAACG,KAAK;MAC1D;MACA,IAAI4uT,kBAAkB,KAAK,GAAG,IAAId,iBAAiB,KAAK,GAAG,EAAE;QACzD,IAAIpzL,SAAS,KAAK,EAAE,EAAE;UAClB0zF,eAAe,CAACnzN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAC1C,CAAC,MAAMizN,eAAe,CAACnzN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAChDkwH,mBAAmB,CAAC,CAAC;MACzB;MACA;MACAylM,sBAAsB,CAAClnQ,WAAW,EAAEgiF,qBAAqB,CAAC;;MAE1D;MACA,IAAI,CAACjR,SAAS,EAAE;QACZ0zF,eAAe,CAACnzN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACtC03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC/C,CAAC,MAAM;QACHizN,eAAe,CAACnzN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC7C;IACJ,CAAC,CAAC;IAEF,IAAIsR,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzCggT,uBAAuB,CAACnuT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;QACxD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;QACrEotT,iBAAiB,GAAGrtT,cAAc,CAACZ,KAAK;QACxC,IAAIiuT,iBAAiB,KAAK,EAAE,EAAE;UAC1BvB,uBAAuB,CAACzxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACrD,CAAC,MAAMwxT,uBAAuB,CAACzxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACrDiwH,mBAAmB,CAAC,CAAC;MACzB,CAAC,CAAC;IACN;IAEA4xL,YAAY,CAACz+S,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC7C,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEqvR,MAAM,GAAGtvR,cAAc,CAACZ,KAAK;MAC7B;MACA,IAAI6uT,eAAe,KAAK,GAAG,IAAIjB,cAAc,KAAK,GAAG,EAAE;QACnD,IAAI19B,MAAM,KAAK,EAAE,EAAE;UACf8sB,YAAY,CAAC/hT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACvC,CAAC,MAAM6hT,YAAY,CAAC/hT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC7CkwH,mBAAmB,CAAC,CAAC;MACzB;MACA;IACJ,CAAC,CAAC;IAEFjZ,cAAc,CAAC5zG,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC/C,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEs1G,QAAQ,GAAGv1G,cAAc,CAACZ,KAAK;IACnC,CAAC,CAAC;IAEFi9S,eAAe,CAAC1+S,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE8yP,SAAS,GAAG/yP,cAAc,CAACZ,KAAK;MAChC;MACA,IAAI8uT,kBAAkB,KAAK,GAAG,IAAIjB,iBAAiB,KAAK,GAAG,EAAE;QACzD,IAAIl6D,SAAS,KAAK,EAAE,EAAE;UAClBspD,eAAe,CAAChiT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAC1C,CAAC,MAAM8hT,eAAe,CAAChiT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAChDkwH,mBAAmB,CAAC,CAAC;MACzB;IACJ,CAAC,CAAC;;IAEF;IACAwhF,gBAAgB,CAACruM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAIq4T,QAAQ,GAAGlF,2BAA2B,CAAC,CAAC;MAC5C,IAAImF,QAAQ,GAAGjF,gBAAgB,CAAC,CAAC;MAEjC,IAAIkF,eAAe,GAAG7nM,WAAW;MACjC,IAAI2a,WAAW,GAAGt4G,IAAI,CAACga,cAAc,CAAC,CAAC;MAEvC,IAAIsrR,QAAQ,CAACpnS,OAAO,IAAIqnS,QAAQ,EAAE;QAC9B7nT,CAAC,CAACC,OAAO,CAACimC,iBAAiB,GAAG,MAAM;MACxC,CAAC,MAAM;QACHlmC,CAAC,CAACC,OAAO,CAACimC,iBAAiB,GAAG,MAAM;MACxC;MAEA+5E,WAAW,GAAG1wH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChC,IAAIysH,WAAW,GAAG39F,IAAI,CAAC8Z,aAAa,CAAC,CAAC,IAAI6jF,WAAW,KAAK,EAAE,EAAE;QAC1DmgF,gBAAgB,CAAC3xM,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACvCsxH,WAAW,GAAG6nM,eAAe;MACjC,CAAC,MAAM1nH,gBAAgB,CAAC3xM,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAEjD,IAAIm5T,QAAQ,IAAIjtL,WAAW,GAAG3yG,SAAS,EAAE;QACrC2/R,QAAQ,CAAC3/R,SAAS,GAAG,KAAK;MAC9B;MACA,IAAI4/R,QAAQ,IAAIjtL,WAAW,GAAG1zG,OAAO,EAAE;QACnC0gS,QAAQ,CAAC1gS,OAAO,GAAG,KAAK;MAC5B;MAEA,IAAI0gS,QAAQ,CAACpnS,OAAO,EAAE;QAClBu/R,cAAc,CAACtxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACxCsxT,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC1C,CAAC,MAAM;QACH,IAAI,CAACk5T,QAAQ,CAAC3/R,SAAS,EAAE83R,cAAc,CAACtxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAC9D,IAAI,CAACi5T,QAAQ,CAAC1gS,OAAO,EAAE84R,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MAC9D;MAEA66G,sBAAsB,CAAC,CAAC,CAAC,CAAC;;MAE1B;MACAoV,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC;IAEFmhM,cAAc,CAAChuT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC/C,IAAIixB,OAAO,GAAG6pM,qBAAqB,CAAC,YAAY,CAAC;MACjDpiM,SAAS,GAAG14B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9B,IAAI,CAACgtB,OAAO,EAAE;QACV6lS,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC3CoxT,cAAc,CAACtxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACrC;MACJ,CAAC,MAAM;QACHoxT,cAAc,CAACtxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACxC,IAAI27N,qBAAqB,CAAC,UAAU,CAAC,EAAE;UACnC21F,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC1C;QACA;QACA;MACJ;MACA;MACAkwH,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC;IAEFohM,YAAY,CAACjuT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC7C,IAAIixB,OAAO,GAAG6pM,qBAAqB,CAAC,UAAU,CAAC;MAC/CnjM,OAAO,GAAG33B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC5B;MACA,IAAI,CAACgtB,OAAO,EAAE;QACV;QACAw/R,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACnC03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAC3C;MACJ,CAAC,MAAM;QACHqxT,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACtC,IAAI27N,qBAAqB,CAAC,YAAY,CAAC,EAAE;UACrC01F,cAAc,CAACtxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC5C;QACA;MACJ;MACAkwH,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC;IAEFqhM,YAAY,CAACluT,gBAAgB,CAAC,UAAU,EAAExC,KAAK,IAAI;MAC/C;MACAo4T,UAAU,GAAGp4T,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC/B,IAAIjE,KAAK,CAACgE,GAAG,KAAK,GAAG,IAAIhE,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC4kB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;QAC7D;QACA7oB,KAAK,CAACyH,cAAc,CAAC,CAAC;QACtB;MACJ;;MAEA;MACA,IAAIgJ,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;QAC5C,IAAI,CAAC3Q,KAAK,CAAC0oB,OAAO,GAAG,EAAE,IAAI1oB,KAAK,CAAC0oB,OAAO,GAAG,EAAE,KAAK1oB,KAAK,CAAC0oB,OAAO,KAAK,EAAE,EAAE;UACpE1oB,KAAK,CAACyH,cAAc,CAAC,CAAC;UACtB;QACJ;MACJ,CAAC,MAAM;QACH,IAAIzH,KAAK,CAAC0oB,OAAO,GAAG,EAAE,IAAI1oB,KAAK,CAAC0oB,OAAO,GAAG,EAAE,EAAE;UAC1C1oB,KAAK,CAACyH,cAAc,CAAC,CAAC;UACtB;QACJ;MACJ;IACJ,CAAC,CAAC;;IAEF;;IAEA4pT,sBAAsB,CAAC7uT,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACtD,IAAIA,KAAK,CAACC,MAAM,CAACgE,KAAK,CAACtE,MAAM,GAAG,CAAC,EAAE;QAC/BK,KAAK,CAACC,MAAM,CAACgE,KAAK,GAAGjE,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC6kB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;MACxD;IACJ,CAAC,CAAC;IAEF,IAAIrY,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzC;MACA+/S,YAAY,CAACluT,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;QAC5C,IAAIA,KAAK,CAACC,MAAM,CAACgE,KAAK,CAACtE,MAAM,GAAG,EAAE,EAAEK,KAAK,CAACC,MAAM,CAACgE,KAAK,GAAGm0T,UAAU;QACnE5kM,OAAO,GAAGxzH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChC,CAAC,CAAC;IACN;IAEA,IAAIwM,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC5C;MACA+/S,YAAY,CAACluT,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;QAC5C,IAAIkuC,SAAS,GAAGluC,KAAK,CAACC,MAAM,CAACgE,KAAK,CAACuf,KAAK,CAAC,GAAG,CAAC;QAC7C,IAAI0qB,SAAS,CAAC,CAAC,CAAC,CAACvuC,MAAM,GAAG,CAAC,EAAEK,KAAK,CAACC,MAAM,CAACgE,KAAK,GAAGm0T,UAAU;QAC5D,IAAIlqR,SAAS,CAAC,CAAC,CAAC,IAAIA,SAAS,CAAC,CAAC,CAAC,CAACvuC,MAAM,GAAG,CAAC,EAAEK,KAAK,CAACC,MAAM,CAACgE,KAAK,GAAGm0T,UAAU;QAE5E5kM,OAAO,GAAGr6G,UAAU,CAACnZ,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC,CAACqmC,OAAO,CAAC,CAAC,CAAC;MACvD,CAAC,CAAC;MAEF8mR,mBAAmB,CAAC5uT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;QACpDg2H,iBAAiB,GAAG/rG,QAAQ,CAACjqB,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;MAC3D,CAAC,CAAC;MACFotT,sBAAsB,CAAC7uT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;QACvD0zH,UAAU,GAAG1zH,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC,CAAC;MACrC,CAAC,CAAC;IACN;IAEAu9S,aAAa,CAACh/S,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C4zH,QAAQ,GAAG5zH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC7BorH,mBAAmB,CAAC,CAAC;IACzB,CAAC,CAAC;;IAEF;IACA6hM,oBAAoB,CAAC1uT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACrD8zH,YAAY,GAAG9zH,KAAK,CAACC,MAAM,CAACiI,OAAO,GAAG,GAAG,GAAG,GAAG;IACnD,CAAC,CAAC;IACFipT,yBAAyB,CAAC3uT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC1DotI,iBAAiB,GAAGptI,KAAK,CAACC,MAAM,CAACiI,OAAO,GAAG,GAAG,GAAG,GAAG;IACxD,CAAC,CAAC;IACF,IAAIspT,UAAU,KAAK,QAAQ,IAAIx3L,cAAc,KAAK,GAAG,IAAIs4L,aAAa,KAAK,GAAG,EAAE;MAC5EE,iBAAiB,CAAChwT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;QAClD65H,SAAS,GAAG75H,KAAK,CAACC,MAAM,CAACiI,OAAO,GAAG,GAAG,GAAG,GAAG;MAChD,CAAC,CAAC;IACN;EACJ;EAEA,SAASmnH,mBAAmBA,CAAA,EAAG;IAC3B,IAAIkkG,SAAS,GAAGiuF,aAAa,CAACl/S,aAAa,CAAC,UAAU,CAAC;IACvD,IAAI24T,YAAY,GAAGxK,YAAY,CAACnuT,aAAa,CAAC,OAAO,CAAC;IACtD,IAAI6+P,SAAS,GAAG9+P,QAAQ,CAACqG,gBAAgB,CAAC,oBAAoB,CAAC;IAE/D,IAAI6qN,SAAS,CAACtvN,KAAK,KAAK,EAAE,EAAE;MACxBu9S,aAAa,CAACtiT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACxC,CAAC,MAAM;MACHoiT,aAAa,CAACtiT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC3C;IAEA,IAAIi/I,mBAAmB,CAACz+I,MAAM,GAAG,CAAC,EAAE;MAChC+nT,cAAc,CAACxoT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACxC+yT,mBAAmB,GAAG,EAAE;IAC5B,CAAC,MAAM;MACHzK,cAAc,CAACxoT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC/C;IAEA,IAAI26G,MAAM,GAAGz3G,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC;IAChD,IAAIoxG,MAAM,CAACn6G,MAAM,GAAG,CAAC,EAAE;MACnBm3T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC/C,CAAC,MAAM,IAAIg/I,mBAAmB,CAACz+I,MAAM,GAAG,CAAC,IAAI6xT,UAAU,KAAK,QAAQ,EAAE;MAClEsF,WAAW,CAAC53T,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACxC8xT,iBAAiB,CAAC/xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAClD,CAAC,MAAM;MACH23T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC/C;IAEA,IAAIyuH,UAAU,EAAE;MACZipM,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3CyxT,aAAa,CAAC3xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC3C;EACJ;EAEA,SAASu2T,uBAAuBA,CAAA,EAAG;IAC/B,IAAIllT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;IAChD,IAAI6nT,cAAc,GAAG,KAAK;IAC1Bl4L,2BAA2B,CAAC1gI,OAAO,CAACiE,CAAC,IAAI;MACrCu6I,mBAAmB,CAACx+I,OAAO,CAACovT,GAAG,IAAI;QAC/B,IAAInrT,CAAC,KAAKmrT,GAAG,EAAE;UACXwJ,cAAc,GAAG,IAAI;QACzB;MACJ,CAAC,CAAC;IACN,CAAC,CAAC;IACF,QAAQA,cAAc;MAClB,KAAK,IAAI;QACL9H,YAAY,CAACxxT,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QACvC;MAEJ;QACIuxT,YAAY,CAACxxT,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACpCo0H,OAAO,GAAG,EAAE;QACZ;IACR;EACJ;EAEA,SAASwe,qBAAqBA,CAACp7G,IAAI,EAAE;IACjC46G,YAAY,GAAG,KAAK;IACpBxb,iBAAiB,GAAGp/F,IAAI;EAC5B;EAEA,SAASuhS,0BAA0BA,CAAA,EAAG;IAClC,IAAIM,KAAK,GAAGp2T,QAAQ,CAACqG,gBAAgB,CAAC,eAAe,CAAC;IACtD+vT,KAAK,CAAC74T,OAAO,CAAC+7G,IAAI,IAAI;MAClB,IAAIqzM,GAAG,GAAGrzM,IAAI,CAAC3yG,YAAY,CAAC,kBAAkB,CAAC;MAC/Co1I,mBAAmB,GAAGA,mBAAmB,CAACvwI,MAAM,CAACuI,IAAI,IAAIA,IAAI,KAAK44S,GAAG,CAAC;MACtErzM,IAAI,CAACnzG,aAAa,CAACrJ,MAAM,CAAC,CAAC;MAC3BgvG,OAAO,CAAC8iD,iCAAiC,CAAC+9J,GAAG,CAAC;IAClD,CAAC,CAAC;IACF;IACA+F,8BAA8B,CAAC,CAAC;IAChCrmR,YAAY,CACR,iGAAiG,EACjG,IAAI,EACJ,IAAI,EACJ,KACJ,CAAC;EACL;EAEA,SAASiiH,kBAAkBA,CAAA,EAAG;IAC1B,IAAIz+I,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACpBG,EAAE,EAAE,oBAAoB;MACxBa,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,IAAIkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACtBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB,IAAIs/H,YAAY,EAAE;UACdL,kBAAkB,CAACc,SAAS,CAAC,CAAC;UAC9BT,YAAY,GAAG,KAAK;QACxB;QACA99H,WAAW,CAACpU,IAAI,CAAC,kBAAkB,CAAC;QACpC,MAAM0sI,aAAa,CAACwB,sBAAsB,CAAC/c,MAAM,CAAC;QAClD/8G,WAAW,CAACI,OAAO,CAAC,SAAS,CAAC;QAC9ByW,UAAU,CAAC,YAAY;UACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrBusI,aAAa,CAACrpI,IAAI,CAAC,CAAC;QACxB,CAAC,EAAE,IAAI,CAAC;MACZ;IACJ,CAAC,CAAC;IACF,IAAIwqJ,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,OAAO;MACboB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;MACrB;IACJ,CAAC,CAAC;IACF08B,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B,IAAIj+G,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,uDAAuD;IAClF0S,KAAK,CAACpS,WAAW,CAACgvC,cAAc,CAAC;IACjC58B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACrB;EAEA,SAASwiT,qBAAqBA,CAAA,EAAG;IAC7B1oL,aAAa,CAACwB,sBAAsB,CAAC/c,MAAM,CAAC;IAC5C+gM,UAAU,GAAG,KAAK;IAClBiB,WAAW,GAAG,IAAI;IAClBhiM,MAAM,GAAG,CAAC;IACViiM,kBAAkB,GAAG,IAAI;IACzB;IACA,IAAIh/L,UAAU,KAAK,IAAI,EAAEA,UAAU,GAAG,CAAC;IACvC,IAAIsC,iBAAiB,KAAK,IAAI,EAAEA,iBAAiB,GAAG,CAAC;IACrDr+F,OAAO,GAAGA,OAAO,CAACzwB,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IACjCwxB,SAAS,GAAGA,SAAS,CAACxxB,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;EACzC;EAEA,SAASwxT,YAAYA,CAAA,EAAG;IACpB;IACAhH,cAAc,GAAG,qCAAqC;IACtD,KAAK,IAAI,CAAC7uT,EAAE,EAAEsF,IAAI,CAAC,IAAIgZ,MAAM,CAACyD,OAAO,CAAC6sS,SAAS,CAACx8Q,WAAW,CAAC,CAAC,EAAE;MAC3D,IAAI0jR,SAAS,GAAGxwT,IAAI,CAACqb,KAAK,CAAC,GAAG,CAAC;MAC/B,IAAI+nF,QAAQ,GAAG4C,OAAO,CAACuN,iBAAiB,CAAC;QACrC2+H,EAAE,EAAEs+E,SAAS,CAAC,CAAC,CAAC;QAChBr+E,EAAE,EAAEq+E,SAAS,CAAC,CAAC,CAAC;QAChB91T,EAAE,EAAEA;MACR,CAAC,CAAC;MACFsrG,OAAO,CAACyoI,4BAA4B,CAACrrI,QAAQ,CAAC;MAC9C,IAAI1oG,EAAE,KAAKqiD,UAAU,EAAEwsQ,cAAc,IAAI,MAAMvpT,IAAI,GAAG;IAC1D;EACJ;EAEA,SAAS4mH,cAAcA,CAAA,EAAG;IACtB;IACA;IACA;IACA4jM,QAAQ,GAAG,CAACliT,CAAC,CAACC,OAAO,CAAC4jC,eAAe;IACrC;IACA;IACA,IAAIq+Q,QAAQ,IAAK9F,SAAS,IAAIA,SAAS,KAAK,EAAG,EAAE+L,mBAAmB,CAAC,CAAC;;IAEtE;IACA;IACA;IACA;;IAEA;IACA,IAAI,CAAC/L,SAAS,IAAIA,SAAS,KAAK,EAAE,EAAE;MAChC,IAAIp8S,CAAC,CAACC,OAAO,CAAC4jC,eAAe,EAAE;QAC3B,IACI,CAAC7jC,CAAC,CAACC,OAAO,CAAC6jC,sBAAsB,IAChC9jC,CAAC,CAACC,OAAO,CAAC6jC,sBAAsB,IAAIg5E,aAAa,KAAK98G,CAAC,CAACC,OAAO,CAACmoC,QAAS,EAC5E;UACEg1E,UAAU,GAAG,KAAK,CAAC,CAAC;QACxB,CAAC,MAAM;UACHA,UAAU,GAAG,IAAI,CAAC,CAAC;QACvB;MACJ,CAAC,MAAM;QACHA,UAAU,GAAG,IAAI,CAAC,CAAC;MACvB;IACJ;IAEA,IAAIA,UAAU,EAAE+qM,mBAAmB,CAAC,CAAC;;IAErC;IACA,IAAI17L,aAAa,EAAE;MACfyxL,6BAA6B,CAACiB,iBAAiB,CAAC;IACpD;EACJ;EAEA,SAASgJ,mBAAmBA,CAAA,EAAG;IAC3B;IACA/nH,gBAAgB,CAACvuM,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IACpFktT,cAAc,CAACluT,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAClFmtT,YAAY,CAACnuT,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAChFk+S,aAAa,CAACl/S,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IACjFotT,YAAY,CAACpuT,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAChF;IACAslH,mBAAmB,CAACtmH,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IACrFuqJ,gBAAgB,CAACvrJ,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAClF+uN,eAAe,CAAC/vN,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IACjF,IAAIqtT,uBAAuB,EACvBA,uBAAuB,CAACruT,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAC7F29S,YAAY,CAAC3+S,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAC9E8yG,cAAc,CAAC9zG,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAChF49S,eAAe,CAAC5+S,aAAa,CAAC,mBAAmB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IACjF4tT,oBAAoB,CAACp6S,UAAU,CAACxT,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAC9D,IAAImN,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAEwgT,yBAAyB,CAACr6S,UAAU,CAACxT,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAEnH,IAAI8tT,mBAAmB,EACnBA,mBAAmB,CAAC9uT,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAC3F,IAAI+tT,sBAAsB,EACtBA,sBAAsB,CAAC/uT,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAC9F;IACAutT,aAAa,CAAC1xT,MAAM,CAAC,CAAC;IACtB23T,WAAW,CAAC33T,MAAM,CAAC,CAAC;IACpB;IACA,IAAI6xT,YAAY,EAAEA,YAAY,CAAC7xT,MAAM,CAAC,CAAC;IACvC,IAAI4xT,aAAa,EAAEA,aAAa,CAAC5xT,MAAM,CAAC,CAAC;IACzC;IACA;IACA;EACJ;EAEA,SAASutT,kBAAkBA,CAACx6L,WAAW,EAAEk6L,iBAAiB,EAAE;IACxDE,qBAAqB,GAAGF,iBAAiB;IACzCl6L,WAAW,CAACtyH,OAAO,CAAC0d,UAAU,IAAI;MAC9B60S,mBAAmB,CAAC1kT,IAAI,CAAC6P,UAAU,CAAC;IACxC,CAAC,CAAC;IACF80S,eAAe,GAAGD,mBAAmB,CAACxyT,MAAM,GAAG2sT,qBAAqB,CAAC3sT,MAAM;IAC3E+nT,cAAc,CAAC/3R,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC9oB,SAAS,GAAG,gBAAgBurT,eAAe,GAAG;IAC7F,IAAIA,eAAe,GAAG,CAAC,EAAE;MACrB1K,cAAc,CAACxoT,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAClD,CAAC,MAAMsoT,cAAc,CAACxoT,SAAS,CAACC,MAAM,CAAC,gBAAgB,CAAC;EAC5D;EAEA,SAASytT,uCAAuCA,CAACtwK,cAAc,EAAE;IAC7D61K,mBAAmB,GAAGA,mBAAmB,CAACtkT,MAAM,CAC5CyP,UAAU,IAAIA,UAAU,CAACs/F,WAAW,KAAK0/B,cAC7C,CAAC;EACL;EAEA,SAASu8K,iBAAiBA,CAAA,EAAG;IACzB,IAAI/kM,YAAY,KAAK,GAAG,IAAIvG,aAAa,KAAK98G,CAAC,CAACC,OAAO,CAACmoC,QAAQ,EAAE;MAC9D2oQ,aAAa,CAACl/S,aAAa,CAAC,qBAAqB,CAAC,CAAC2B,KAAK,GAAG,8BAA8B;MACzFu9S,aAAa,CAACl/S,aAAa,CAAC,qBAAqB,CAAC,CAACgB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MACjF4tT,oBAAoB,CAACp6S,UAAU,CAACxT,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAClE;EACJ;EACA,SAAS06Q,uBAAuBA,CAAA,EAAG;IAC/BxqJ,OAAO,GAAG,IAAI;IACdwG,cAAc,GAAG,IAAI;IACrBlG,YAAY,GAAG,IAAI;IACnBsZ,iBAAiB,GAAG,IAAI;IACxBvT,SAAS,GAAG,IAAI;IAChBgzL,SAAS,GAAG,IAAI;IAChBsF,mBAAmB,GAAG,EAAE;IACxB7F,qBAAqB,GAAG,EAAE;EAC9B;EAEA,SAASl1M,QAAQA,CAAC0hN,YAAY,EAAE;IAC5B,MAAMC,WAAW,GAAG,EAAE;IACtB,MAAMC,UAAU,GAAG,EAAE;IACrB,MAAMC,mBAAmB,GAAG,IAAItoQ,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MAC/Di4H,aAAa,CAACS,eAAe,CAAC,UAAUvM,YAAY,EAAE;QAClDzC,8BAA8B,CAACyC,YAAY,CAAC;QAC5CtvE,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;IACFmoQ,WAAW,CAACtrT,IAAI,CAACwrT,mBAAmB,CAAC;IACrCD,UAAU,CAACvrT,IAAI,CAACwrT,mBAAmB,CAAC;IAEpC,MAAMlN,qBAAqB,GAAG,IAAIp7P,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MACjEi4H,aAAa,CAACW,yBAAyB,CAAC,UAAUpiC,OAAO,EAAE;QACvDk6M,OAAO,GAAGl6M,OAAO;QACjB35C,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;IACFmoQ,WAAW,CAACtrT,IAAI,CAACs+S,qBAAqB,CAAC;IACvCiN,UAAU,CAACvrT,IAAI,CAACs+S,qBAAqB,CAAC;;IAEtC;IACA,IAAIt7S,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzC,MAAMuoT,qCAAqC,GAAG,IAAIvoQ,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;QACjFi4H,aAAa,CAACU,8BAA8B,CAAC,UAAUniC,OAAO,EAAE;UAC5D+1B,2BAA2B,GAAG,EAAE;UAChC/1B,OAAO,CAAC3qG,OAAO,CAACiE,CAAC,IAAI;YACjBy8H,2BAA2B,CAAC7yH,IAAI,CAAC5J,CAAC,CAACguH,UAAU,CAAC;UAClD,CAAC,CAAC;UACFjhE,OAAO,CAAC,SAAS,CAAC;QACtB,CAAC,CAAC;MACN,CAAC,CAAC;MACFmoQ,WAAW,CAACtrT,IAAI,CAACyrT,qCAAqC,CAAC;IAC3D;IAEA,MAAMC,sCAAsC,GAAG,IAAIxoQ,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;MAClFi4H,aAAa,CAACa,+BAA+B,CAACp8H,CAAC,CAACC,OAAO,CAACmoC,QAAQ,EAAE,UAAU0xD,OAAO,EAAE;QACjFyvB,cAAc,GAAGzvB,OAAO,CAAC,CAAC,CAAC,CAACs2B,cAAc,KAAK,EAAE,GAAG,GAAG,GAAGt2B,OAAO,CAAC,CAAC,CAAC,CAACs2B,cAAc;QACnFjT,kBAAkB,GAAGrjB,OAAO,CAAC,CAAC,CAAC,CAACu2B,SAAS;QACzClwE,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;IACFmoQ,WAAW,CAACtrT,IAAI,CAAC0rT,sCAAsC,CAAC;IACxDH,UAAU,CAACvrT,IAAI,CAAC0rT,sCAAsC,CAAC;;IAEvD;IACA,IAAI1oT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,IAAI6gT,UAAU,KAAK,QAAQ,EAAE;MACvE,MAAM4H,qBAAqB,GAAG,IAAIzoQ,OAAO,CAAC,UAAUC,OAAO,EAAE78C,MAAM,EAAE;QACjEi4H,aAAa,CAACc,0BAA0B,CAACrc,MAAM,EAAE9nE,GAAG,IAAI;UACpD2jQ,qBAAqB,GAAG3jQ,GAAG;UAC3BypQ,eAAe,GAAG9F,qBAAqB,CAAC3sT,MAAM;UAC9CixD,OAAO,CAAC,SAAS,CAAC;QACtB,CAAC,CAAC;MACN,CAAC,CAAC;MACFooQ,UAAU,CAACvrT,IAAI,CAAC2rT,qBAAqB,CAAC;IAC1C;IAEA,IAAI3oT,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;MACzCggD,OAAO,CAACmrF,GAAG,CAACi9K,WAAW,CAAC,CAAC5nM,IAAI,CAAC,YAAY;QACtC,IAAIqgM,UAAU,KAAK,KAAK,EAAE;UACtB,IAAIsH,YAAY,EAAE;YACd,MAAMjqL,YAAY,GAAGiqL,YAAY,CAAC3wT,IAAI,CAACqb,KAAK,CAAC,GAAG,CAAC;YACjD,MAAM+nF,QAAQ,GAAG4C,OAAO,CAACuN,iBAAiB,CAAC;cACvC2+H,EAAE,EAAExrG,YAAY,CAAC,CAAC,CAAC;cACnByrG,EAAE,EAAEzrG,YAAY,CAAC,CAAC,CAAC;cACnBhsI,EAAE,EAAEi2T,YAAY,CAACj2T;YACrB,CAAC,CAAC;YACFsrG,OAAO,CAACyoI,4BAA4B,CAACrrI,QAAQ,CAAC;YAC9CqkN,iBAAiB,GAAGzhN,OAAO,CAACC,kBAAkB,CAAC,CAAC;UACpD;UACA3tG,UAAU,CAAC8B,IAAI,CAAC,CAAC;UACjB;QACJ;QACA,IAAIivT,UAAU,KAAK,QAAQ,EAAE;UACzB;UACA,IAAImH,SAAS,GAAG9zL,EAAE,CAACxC,YAAY,CAAC7+G,KAAK,CAAC,GAAG,CAAC;UAC1C;UACA,IAAI+nF,QAAQ,GAAG4C,OAAO,CAACuN,iBAAiB,CAAC;YACrC2+H,EAAE,EAAEs+E,SAAS,CAAC,CAAC,CAAC;YAChBr+E,EAAE,EAAEq+E,SAAS,CAAC,CAAC,CAAC;YAChB91T,EAAE,EAAEqiD;UACR,CAAC,CAAC;UACFipD,OAAO,CAACyoI,4BAA4B,CAACrrI,QAAQ,CAAC;UAC9C,IAAIt2D,WAAW,KAAK,CAAC,EAAEyjR,YAAY,CAAC,CAAC,CAAC,CAAC;UACvCh4T,UAAU,CAAC6B,IAAI,CAAC,CAAC;UACjB;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,MAAM;MACHouD,OAAO,CAACmrF,GAAG,CAACk9K,UAAU,CAAC,CAAC7nM,IAAI,CAAC,YAAY;QACrC,IAAIqgM,UAAU,KAAK,KAAK,EAAE;UACtB,IAAIsH,YAAY,EAAE;YACd,MAAMjqL,YAAY,GAAGiqL,YAAY,CAAC3wT,IAAI,CAACqb,KAAK,CAAC,GAAG,CAAC;YACjD,MAAM+nF,QAAQ,GAAG4C,OAAO,CAACuN,iBAAiB,CAAC;cACvC2+H,EAAE,EAAExrG,YAAY,CAAC,CAAC,CAAC;cACnByrG,EAAE,EAAEzrG,YAAY,CAAC,CAAC,CAAC;cACnBhsI,EAAE,EAAEi2T,YAAY,CAACj2T;YACrB,CAAC,CAAC;YACFsrG,OAAO,CAACyoI,4BAA4B,CAACrrI,QAAQ,CAAC;YAC9CqkN,iBAAiB,GAAGzhN,OAAO,CAACC,kBAAkB,CAAC,CAAC;UACpD;UACA3tG,UAAU,CAAC8B,IAAI,CAAC,CAAC;UACjB;QACJ;QACA,IAAIivT,UAAU,KAAK,QAAQ,EAAE;UACzB;UACA,IAAImH,SAAS,GAAG9zL,EAAE,CAACxC,YAAY,CAAC7+G,KAAK,CAAC,GAAG,CAAC;UAC1C,IAAI+nF,QAAQ,GAAG4C,OAAO,CAACuN,iBAAiB,CAAC;YACrC2+H,EAAE,EAAEs+E,SAAS,CAAC,CAAC,CAAC;YAChBr+E,EAAE,EAAEq+E,SAAS,CAAC,CAAC,CAAC;YAChB91T,EAAE,EAAEqiD;UACR,CAAC,CAAC;UACFipD,OAAO,CAACyoI,4BAA4B,CAACrrI,QAAQ,CAAC;UAC9C,IAAIt2D,WAAW,KAAK,CAAC,EAAEyjR,YAAY,CAAC,CAAC,CAAC,CAAC;;UAEvCh4T,UAAU,CAAC6B,IAAI,CAACsmT,SAAS,CAAC;UAC1B;QACJ;MACJ,CAAC,CAAC;IACN;EACJ;EAEA,SAAStmT,IAAIA,CAAC82T,UAAU,EAAEC,cAAc,EAAEC,EAAE,EAAEC,gBAAgB,EAAE;IAC5D,IAAIA,gBAAgB,EAAE;MAClBt8L,aAAa,GAAG,IAAI;IACxB,CAAC,MAAMA,aAAa,GAAG,KAAK;IAC5BkhB,mBAAmB,CAACx+I,OAAO,CAACovT,GAAG,IAAI;MAC/B7gN,OAAO,CAAC8iD,iCAAiC,CAAC+9J,GAAG,CAAC;IAClD,CAAC,CAAC;IACF;IACA,IAAIyC,SAAS,IAAIx8Q,WAAW,KAAK,CAAC,EAAE;MAChC,KAAK,IAAI,CAACpyC,EAAE,EAAEsF,IAAI,CAAC,IAAIgZ,MAAM,CAACyD,OAAO,CAAC6sS,SAAS,CAACx8Q,WAAW,CAAC,CAAC,EAAE;QAC3Dk5D,OAAO,CAAC8iD,iCAAiC,CAACpuJ,EAAE,CAAC;MACjD;IACJ;IACA;IACA;IACA4uT,SAAS,GAAG8H,EAAE;IACd10L,EAAE,GAAG,IAAI;IACTrR,OAAO,GAAG,IAAI;IACdwG,cAAc,GAAG,IAAI;IACrBlG,YAAY,GAAG,IAAI;IACnBsZ,iBAAiB,GAAG,IAAI;IACxBvT,SAAS,GAAG,IAAI;IAChBgzL,SAAS,GAAG,IAAI;IAChBn5L,UAAU,GAAG,CAAC;IACd8d,YAAY,GAAG,KAAK;IACpBxb,iBAAiB,GAAG,CAAC;IACrBooB,mBAAmB,GAAG,EAAE;IACxB+zK,mBAAmB,GAAG,EAAE;IACxB7F,qBAAqB,GAAG,EAAE;IAC1B8F,eAAe,GAAG,CAAC;IACnBZ,UAAU,GAAG6H,UAAU;IACvB9F,aAAa,CAAC+F,cAAc,CAAC;IAC7BliN,QAAQ,CAACoiN,gBAAgB,CAAC;EAC9B;EAEA,OAAO;IACHnqM,mBAAmB;IACnB;IACA0gM,iBAAiB;IACjBE,kBAAkB;IAClB+F,YAAY;IACZ;IACAlB,sBAAsB;IACtB;IACA5E,WAAW;IACXtB,UAAU;IACVD,6BAA6B;IAC7BqG,qBAAqB;IACrB6D,iBAAiB;IACjB/zJ,cAAc;IACdkvJ,aAAa;IACbhiL,qBAAqB;IACrB;IACA08K,aAAa;IACb;IACA3/L,cAAc;IACd;IACAivJ,uBAAuB;IACvB;IACA0uC,kBAAkB;IAClBE,uCAAuC;IACvC;IACAnvL,8BAA8B;IAC9B;IACAl7H;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AC/hFJ,IAAI7B,UAAU,GAAI,YAAY;EAC5B;EACA,IAAI4lI,QAAQ,CAAC,CAAC;EACd,IAAIpZ,UAAU;EACd,IAAIhoE,UAAU;EACd,IAAI00E,WAAW;EACf,IAAI9F,YAAY;EAChB,IAAIn8F,OAAO;EACX,IAAImiG,YAAY;EAChB,IAAIC,QAAQ;EACZ,IAAInG,QAAQ;EACZ,IAAI+K,SAAS;EACb,IAAItgB,WAAW;EACf,IAAI6zM,iBAAiB;EACrB,IAAIxhM,WAAW;EACf,IAAIh4F,SAAS;EACb,IAAI0hF,QAAQ;EACZ,IAAIqhC,eAAe;EACnB,IAAIotK,SAAS;;EAEb;EACA;EACA,SAASqS,WAAWA,CAAC/rF,UAAU,EAAE/wF,mBAAmB,EAAE;IACpD,IAAIA,mBAAmB,IAAIA,mBAAmB,CAACz+I,MAAM,GAAG,CAAC,EAAE;MACzD+T,WAAW,CAACpU,IAAI,CAAC,CAAC;MAClB,IAAI67T,SAAS,GAAGhsF,UAAU,CAACjqL,UAAU;MACrC,IAAI6pQ,iBAAiB,GAAG,EAAE;MAC1B7hM,UAAU,GAAGiiH,UAAU,CAAC1+G,MAAM;MAC9B;MACA2tB,mBAAmB,CAACx+I,OAAO,CAACovT,GAAG,IAAI;QACjC7/E,UAAU,CAAC1+G,MAAM,GAAGvD,UAAU;QAC9B6hM,iBAAiB,CAACthT,IAAI,CACpB,IAAIkjD,OAAO,CAAC,UAAU78C,OAAO,EAAEC,MAAM,EAAE;UACrC,IAAIi7S,GAAG,KAAKmM,SAAS,EAAE;YACrBnvL,aAAa,CAACmB,kBAAkB,CAACgiG,UAAU,EAAE,UAAU5kI,OAAO,EAAE;cAC9DyhC,aAAa,CAACuB,qBAAqB,CACjC;gBACE9c,MAAM,EAAE0+G,UAAU,CAAC1+G,MAAM;gBACzBx7E,WAAW,EAAEk6L,UAAU,CAACl6L,WAAW;gBACnC68E,sBAAsB,EAAEq9G,UAAU,CAACr9G,sBAAsB;gBACzDpB,WAAW,EAAEy+G,UAAU,CAACz+G,WAAW;gBACnCh4F,SAAS,EAAEy2M,UAAU,CAACz2M,SAAS;gBAC/Bf,OAAO,EAAEw3M,UAAU,CAACx3M;cACtB,CAAC,EACD,UAAU4yE,OAAO,EAAE;gBACjBz2F,OAAO,CAAC,CAAC;cACX,CACF,CAAC;YACH,CAAC,CAAC;UACJ,CAAC,MAAM;YACLq7N,UAAU,CAACjqL,UAAU,GAAG8pQ,GAAG;YAC3B7/E,UAAU,CAAC1+G,MAAM,GAAG,CAAC;YACrBub,aAAa,CAACsB,2BAA2B,CAAC6hG,UAAU,EAAE,UAAU5kI,OAAO,EAAE;cACvE;cACAyhC,aAAa,CAACuB,qBAAqB,CACjC;gBACE9c,MAAM,EAAE0+G,UAAU,CAAC1+G,MAAM;gBACzBx7E,WAAW,EAAEk6L,UAAU,CAACl6L,WAAW;gBACnC68E,sBAAsB,EAAEq9G,UAAU,CAACr9G,sBAAsB;gBACzDpB,WAAW,EAAEy+G,UAAU,CAACz+G,WAAW;gBACnCh4F,SAAS,EAAEy2M,UAAU,CAACz2M,SAAS;gBAC/Bf,OAAO,EAAEw3M,UAAU,CAACx3M;cACtB,CAAC,EACD,UAAU4yE,OAAO,EAAE;gBACjBz2F,OAAO,CAAC,CAAC;cACX,CACF,CAAC;cACD;YACF,CAAC,CAAC;UACJ;QACF,CAAC,CACH,CAAC;MACH,CAAC,CAAC;MAEF68C,OAAO,CAACmrF,GAAG,CAACizK,iBAAiB,CAAC,CAAC59L,IAAI,CAAC,UAAUxoE,GAAG,EAAE;QACjDj1C,WAAW,CAACI,OAAO,CAAC,CAAC;QACrByW,UAAU,CAAC,YAAY;UACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrBusI,aAAa,CAACrpI,IAAI,CAAC,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC;MACV,CAAC,CAAC;IACJ,CAAC,MAAM;MACLypI,aAAa,CAACmB,kBAAkB,CAACgiG,UAAU,EAAE,UAAU5kI,OAAO,EAAE;QAC9DyhC,aAAa,CAACuB,qBAAqB,CACjC;UACE9c,MAAM,EAAE0+G,UAAU,CAAC1+G,MAAM;UACzBx7E,WAAW,EAAEk6L,UAAU,CAACl6L,WAAW;UACnC68E,sBAAsB,EAAEq9G,UAAU,CAACr9G,sBAAsB;UACzDpB,WAAW,EAAEy+G,UAAU,CAACz+G,WAAW;UACnCh4F,SAAS,EAAEy2M,UAAU,CAACz2M,SAAS;UAC/Bf,OAAO,EAAEw3M,UAAU,CAACx3M;QACtB,CAAC,EACD,UAAU4yE,OAAO,EAAE;UACjBz2F,OAAO,CAAC,CAAC;QACX,CACF,CAAC;MACH,CAAC,CAAC;IACJ;EACF;EACA,SAASsnT,YAAYA,CAACjsF,UAAU,EAAE;IAChCz7N,WAAW,CAACpU,IAAI,CAAC,CAAC;IAClB0sI,aAAa,CAACmB,kBAAkB,CAACgiG,UAAU,EAAE,UAAU5kI,OAAO,EAAE;MAC9D72F,WAAW,CAACI,OAAO,CAAC,CAAC;MACrByW,UAAU,CAAC,YAAY;QACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrBusI,aAAa,CAACrpI,IAAI,CAAC,CAAC;MACtB,CAAC,EAAE,IAAI,CAAC;IACV,CAAC,CAAC;EACJ;EACA,SAASqyT,UAAUA,CAACzuT,IAAI,EAAE+rH,WAAW,EAAE;IACrC,IAAIzhH,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE;MAC9CuhH,WAAW,CAACtyH,OAAO,CAAC0d,UAAU,IAAI;QAChC0uH,aAAa,CAAC0B,qBAAqB,CACjCvnI,IAAI,CAACgpO,UAAU,CAAC1+G,MAAM,EACtBnzG,UAAU,CAACs/F,WAAW,EACtBt/F,UAAU,CAACla,IAAI,EACfka,UAAU,CAACq+H,WACb,CAAC;MACH,CAAC,CAAC;IACJ;IACA,IAAIx1I,IAAI,CAACssT,WAAW,EAAE;MACpBzmL,aAAa,CAACkB,oBAAoB,CAAC/mI,IAAI,CAACq6H,WAAW,EAAE,UAAU66L,cAAc,EAAE;QAC7EH,WAAW,CAAC/0T,IAAI,CAACgpO,UAAU,EAAEhpO,IAAI,CAACi4I,mBAAmB,CAAC;MACxD,CAAC,CAAC;IACJ,CAAC,MAAM;MACLpS,aAAa,CAACkB,oBAAoB,CAAC/mI,IAAI,CAACq6H,WAAW,EAAE,UAAU66L,cAAc,EAAE;QAC7ED,YAAY,CAACj1T,IAAI,CAACgpO,UAAU,CAAC;MAC/B,CAAC,CAAC;IACJ;EACF;EAEA,SAAS3uO,oBAAoBA,CAACP,MAAM,EAAE;IACpC,IAAIiuG,YAAY,GAAGjuG,MAAM,CAACC,OAAO,CAACC,SAAS;IAE3C,QAAQ+tG,YAAY;MAClB,KAAK,gBAAgB;QAAE;UACrB38F,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;UACvB3oB,GAAG,CAACC,iBAAiB,CAAC,CAAC;UACvB68J,YAAY,CAAC,CAAC;UAEd5vJ,IAAI,CAACkwS,6BAA6B,CAAC,CAAC;UACpClwS,IAAI,CAACmwS,UAAU,CAAC,CAAC;UAEjBr9S,GAAG,CAACkoB,eAAe,CAAC,CAAC;UAErB;QACF;MACA,KAAK,kBAAkB;QAAE;UACvBloB,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrB;QACF;IACF;EACF;EAEA,SAAS40I,YAAYA,CAAA,EAAG;IACtB98J,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;IAEvB,IAAI,CAAC2uR,SAAS,EAAE;MACd16M,OAAO,CAACI,cAAc,CAAC,CAAC;IAC1B;IAEA,IAAIjlF,SAAS,GAAGjnB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0mB,SAAS,CAACpqB,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;IAEpC,IAAI0wT,QAAQ;IACZ,IAAIr/S,CAAC,CAACC,OAAO,CAAC+jC,iBAAiB,IAAIo0Q,SAAS,EAAE;MAC5CiH,QAAQ,GAAGpkL,OAAO,CAACqkL,iBAAiB,CAAC;QACnC7iM,UAAU;QACV0M,WAAW;QACXjiG,OAAO;QACPmiG,YAAY;QACZC,QAAQ;QACRnG,QAAQ;QACR+K,SAAS;QACTtgB,WAAW;QACX6zM,iBAAiB;QACjBx5R,SAAS;QACTg4F,WAAW;QACXtW;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MACL01M,QAAQ,GAAGrxS,IAAI,CAACsxS,iBAAiB,CAAC,CAAC;IACrC;IAEA,IAAIC,aAAa;IACjBv/S,CAAC,CAACC,OAAO,CAAC+jC,iBAAiB,IAAIo0Q,SAAS,GACnCmH,aAAa,GAAGtkL,OAAO,CAACukL,kBAAkB,CAAC,CAAC,GAC5CD,aAAa,GAAGvxS,IAAI,CAACwxS,kBAAkB,CAAC,CAAE;;IAE/C;IACA,IAAIqL,cAAc,GAAGj5T,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACjD04T,cAAc,CAACh4T,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC;IACnDg4T,cAAc,CAAC97T,SAAS,GAAG,sBAAsB;;IAEjD;IACA,IAAI+7T,aAAa,GAAGl5T,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAChD24T,aAAa,CAACj4T,YAAY,CAAC,IAAI,EAAE,eAAe,CAAC;IACjDi4T,aAAa,CAAC/7T,SAAS,GAAG,uBAAuB;IAGjD8pB,SAAS,CAACxpB,WAAW,CAACkwT,aAAa,CAAC;IACpC1mS,SAAS,CAACxpB,WAAW,CAACgwT,QAAQ,CAAC;IAE/Br/S,CAAC,CAACC,OAAO,CAAC+jC,iBAAiB,IAAIo0Q,SAAS,GACpCn9K,OAAO,CAACmtL,iBAAiB,CAAC,CAAC,GAC3Bp6S,IAAI,CAACo6S,iBAAiB,CAAC,CAAC,CAAC,CAAC;;IAE9BtnT,GAAG,CAACiB,YAAY,CAACX,YAAY,CAACyX,SAAS,EAAE/X,GAAG,CAACiB,YAAY,CAACsH,UAAU,CAAC,CAAC,CAAC,CAAC;;IAExE;IACArJ,CAAC,CAACC,OAAO,CAAC+jC,iBAAiB,IAAIo0Q,SAAS,GACnCgE,SAAS,GAAGnhL,OAAO,CAACo5B,cAAc,CAAC,CAAC,GACpC+nJ,SAAS,GAAGpuS,IAAI,CAACqmJ,cAAc,CAAC,CAAE;;IAErC;IACFr0J,CAAC,CAACC,OAAO,CAAC+jC,iBAAiB,IAAIo0Q,SAAS,GACrC2S,QAAQ,GAAG9vL,OAAO,CAACsoL,aAAa,CAAC,CAAC,GAClCwH,QAAQ,GAAG/8S,IAAI,CAACu1S,aAAa,CAAC,CAAE;IAEnC,IAAIvjT,CAAC,CAACC,OAAO,CAAC+jC,iBAAiB,IAAIo0Q,SAAS,EAAE;MAC5C,IAAIgE,SAAS,EAAEt7S,GAAG,CAACiB,YAAY,CAACX,YAAY,CAACypT,cAAc,EAAEhyS,SAAS,CAAC;MACvE,IAAIkyS,QAAQ,EAAEjqT,GAAG,CAACiB,YAAY,CAACX,YAAY,CAAC0pT,aAAa,EAAEjyS,SAAS,CAAC;MACrEoiH,OAAO,CAACrc,mBAAmB,CAAC,CAAC;MAC7B;IACF,CAAC,MAAM;MACL,IAAIw9L,SAAS,EAAEt7S,GAAG,CAACiB,YAAY,CAACX,YAAY,CAACypT,cAAc,EAAEhyS,SAAS,CAAC;MACvE,IAAIkyS,QAAQ,EAAEjqT,GAAG,CAACiB,YAAY,CAACX,YAAY,CAAC0pT,aAAa,EAAEjyS,SAAS,CAAC;MACrE7K,IAAI,CAAC4wG,mBAAmB,CAAC,CAAC;MAC1B,IAAI5+G,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,YAAY,EAAE8N,IAAI,CAACu2S,qBAAqB,CAAC,CAAC;IAC9E;IAEAvkT,CAAC,CAACC,OAAO,CAAC+jC,iBAAiB,IAAIo0Q,SAAS,GAAGn9K,OAAO,CAAC3c,cAAc,CAAC,CAAC,GAAGtwG,IAAI,CAACswG,cAAc,CAAC,CAAC;EAC7F;EAEA,SAASxsH,IAAIA,CAACk5T,SAAS,EAAE;IACvB5S,SAAS,GAAG4S,SAAS;IACrBpmN,+BAA+B,CAAC,kBAAkB,CAAC;IACnDlH,OAAO,CAAC+5D,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC;IAClCmG,YAAY,CAAC,CAAC;EAChB;EAEA,OAAO;IACL7tK,oBAAoB;IACpBo0T,UAAU;IACVryT;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACvPJ,IAAIkzJ,YAAY,GAAI,YAAW;EAC7B;EACA;EACA,IAAIrsI,IAAI;EACR;EACA,IAAIsyS,gBAAgB;EACpB,IAAIC,sBAAsB;EAC1B,IAAIC,wBAAwB;EAC5B,IAAIC,mBAAmB;EACvB,IAAIC,qBAAqB;EACzB,IAAIC,qBAAqB;EACzB;EACA;EACA,IAAIxiK,MAAM;EACV,IAAIyiK,UAAU;EACd,IAAIvxJ,YAAY;EAChB,IAAIwxJ,cAAc;EAClB,IAAI1vN,WAAW;EACf,IAAIshD,gBAAgB;EACpB,IAAIyU,aAAa;EACjB,IAAI45J,eAAe;EACnB,IAAIphN,eAAe;EAEnB,SAASq6C,gBAAgBA,CAAA,EAAG;IAC1B,IAAIgnK,YAAY,GAAG5iK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC3D,IAAI65T,YAAY,EAAE;IAElB5vN,WAAW,GAAGt4C,SAAS,CAACkhG,gBAAgB,CAAC,CAAC;IAE1C,IAAIxH,SAAS,GAAGznJ,KAAK,CAACxD,KAAK,CAAC;MAC1BG,EAAE,EAAE,kBAAkB;MACtB2B,KAAK,EAAE,MAAM;MACbpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEy3T;IACT,CAAC,CAAC;IACF7tK,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAChC4B,UAAU,EAAE,uBAAuB;MACnCE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACZ,CAAC,CAAC;IACF69J,aAAa,GAAGj+J,QAAQ,CAAC3B,KAAK,CAAC;MAC7B4B,UAAU,EAAE,oBAAoB;MAChCE,KAAK,EAAE,OAAO;MACdrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACZ,CAAC,CAAC;IACFy3T,eAAe,GAAGz5T,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IACF03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IAEF,IAAIwrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACo8T,eAAe,CAAC;IACpCttR,OAAO,CAAC9uC,WAAW,CAACg7G,eAAe,CAAC;IAEpCvO,WAAW,CAACzsG,WAAW,CAAC6tJ,SAAS,CAAC;IAClCphD,WAAW,CAACzsG,WAAW,CAAC+tJ,gBAAgB,CAAC;IACzCthD,WAAW,CAACzsG,WAAW,CAACwiK,aAAa,CAAC;IACtC/1D,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAChC2qH,MAAM,CAAC1nJ,YAAY,CAAC06F,WAAW,EAAEyvN,UAAU,CAAC;;IAE5C;IACA5yS,IAAI,GAAG/mB,QAAQ,CAACiD,cAAc,CAAC,kBAAkB,CAAC;IAClD8jB,IAAI,CAACnlB,KAAK,GAAG8uB,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACjC6uR,gBAAgB,GAAGtyS,IAAI,CAACnlB,KAAK;EAC/B;EACA,SAASm4T,UAAUA,CAAA,EAAG;IACpB,IAAIC,aAAa;IACjB,IAAI93D,eAAe;IACnB,IAAIC,aAAa;IACjB,IAAIE,UAAU;IACd,IAAI43D,WAAW;IACf,IAAI33D,YAAY;IAEhBv7O,IAAI,CAAC5mB,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACvC,IAAIu8T,UAAU,GAAGv8T,KAAK,CAACC,MAAM,CAACgE,KAAK;MACnCo4T,aAAa,GAAGX,gBAAgB;MAChCA,gBAAgB,GAAGa,UAAU;;MAE7B;MACAh4D,eAAe,GAAGq3D,wBAAwB;MAC1Cp3D,aAAa,GAAGm3D,sBAAsB;MACtCj3D,UAAU,GAAGm3D,mBAAmB;MAChCS,WAAW,GAAGP,qBAAqB;MACnCp3D,YAAY,GAAGm3D,qBAAqB;MACpC;MACAH,sBAAsB,GAAG,KAAK;MAC9BC,wBAAwB,GAAG,KAAK;MAChCC,mBAAmB,GAAG,GAAG;MACzBE,qBAAqB,GAAG,KAAK;MAC7BD,qBAAqB,GAAG,UAAU;MAElCU,gBAAgB,CAACC,8BAA8B,CAACC,6BAA6B,CAAC;MAC9EF,gBAAgB,CAACG,mCAAmC,CAAChB,sBAAsB,EAAEiB,0BAA0B,CAAC;IAC1G,CAAC,CAAC;IACF/uK,gBAAgB,CAACrrJ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE;MACAy/P,eAAe,GAAGq3D,wBAAwB;MAC1Cp3D,aAAa,GAAGm3D,sBAAsB;MACtC;MACAC,wBAAwB,GAAG/2T,cAAc,CAACrF,SAAS;MACnDm8T,sBAAsB,GAAG92T,cAAc,CAACZ,KAAK;MAC7C;MACAygQ,UAAU,GAAGm3D,mBAAmB;MAChCS,WAAW,GAAGP,qBAAqB;MACnCp3D,YAAY,GAAGm3D,qBAAqB;MACpCD,mBAAmB,GAAG,GAAG;MACzBE,qBAAqB,GAAG,KAAK;MAC7BD,qBAAqB,GAAG,UAAU;MAClC;MACAU,gBAAgB,CAACG,mCAAmC,CAAChB,sBAAsB,EAAEiB,0BAA0B,CAAC;IAC1G,CAAC,CAAC;IACFt6J,aAAa,CAAC9/J,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE;MACA4/P,UAAU,GAAGm3D,mBAAmB;MAChCS,WAAW,GAAGP,qBAAqB;MACnCp3D,YAAY,GAAGm3D,qBAAqB;MACpC;MACAD,mBAAmB,GAAGh3T,cAAc,CAACZ,KAAK;MAC1C83T,qBAAqB,GAAGl3T,cAAc,CAAChC,EAAE;MACzCi5T,qBAAqB,GAAGj3T,cAAc,CAACrF,SAAS;IAClD,CAAC,CAAC;IACF08T,eAAe,CAAC15T,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;;MAE5C;MACAk+D,YAAY,CAACjrK,SAAS,GAAG,EAAE;MAC3BiV,kBAAkB,CAAClS,IAAI,CAAC,CAAC;MACzBkS,kBAAkB,CAACJ,OAAO,CAAC/U,IAAI,CAACmrK,YAAY,EAAE,SAAS,CAAC;MAExD+xJ,gBAAgB,CAACK,6BAA6B,CAAC;QAC7C5tR,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtBwjR,UAAU,EAAEb,gBAAgB;QAC5BoB,gBAAgB,EAAEnB,sBAAsB;QACxCoB,eAAe,EAAEhB,qBAAqB;QACtCiB,WAAW,EAAEnB;MACf,CAAC,EAAEoB,2BAA2B,CAAC;IACjC,CAAC,CAAC;IACFniN,eAAe,CAACt4G,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAE5CmvN,gBAAgB,GAAGW,aAAa;MAChCV,sBAAsB,GAAGn3D,aAAa;MACtCo3D,wBAAwB,GAAGr3D,eAAe;MAC1Cs3D,mBAAmB,GAAGn3D,UAAU;MAChCq3D,qBAAqB,GAAGO,WAAW;MACnCR,qBAAqB,GAAGn3D,YAAY;IACtC,CAAC,CAAC;EACJ;EACD,SAAS+3D,6BAA6BA,CAACnyN,OAAO,EAAE;IAC7C,IAAInlG,IAAI,GAAGmlG,OAAO,CAACnhG,GAAG,CAACsX,CAAC,IAAI;MAC1B,OAAO;QACL7d,EAAE,EAAE6d,CAAC,CAAC6vF,EAAE;QACRtsG,KAAK,EAAEyc,CAAC,CAAC6vF,EAAE;QACXvtG,IAAI,EAAE0d,CAAC,CAACg4B;MACV,CAAC;IACH,CAAC,CAAC;IAEFr0C,QAAQ,CAAC5E,QAAQ,CAAC,uBAAuB,EAAE2F,IAAI,EAAEu2T,sBAAsB,CAAC;EAC1E;EACA,SAASiB,0BAA0BA,CAACryN,OAAO,EAAE;IAC3C,IAAInlG,IAAI,GAAGmlG,OAAO,CAACnhG,GAAG,CAACsX,CAAC,IAAI;MAC1B,OAAO;QACL7d,EAAE,EAAE6d,CAAC,CAAC4mJ,SAAS;QACfrjK,KAAK,EAAEyc,CAAC,CAACknJ,UAAU;QACnB5kK,IAAI,EAAE0d,CAAC,CAAC+mJ;MACV,CAAC;IACH,CAAC,CAAC;IAEF,IAAIpiK,UAAU,GAAGw2T,mBAAmB;IAEpC,IAAIF,sBAAsB,KAAK,KAAK,EAAE;MACpC,IAAIuB,YAAY,GAAG93T,IAAI,CAACyI,MAAM,CAACtI,CAAC,IAAIA,CAAC,CAAC1C,EAAE,KAAK,KAAK,CAAC;MACnD,IAAIq6T,YAAY,CAACv9T,MAAM,GAAG,CAAC,EAAE;QAC3B0F,UAAU,GAAG63T,YAAY,CAAC,CAAC,CAAC,CAACj5T,KAAK;MACpC;IACF;IAEAI,QAAQ,CAAC5E,QAAQ,CAAC,oBAAoB,EAAE2F,IAAI,EAAEC,UAAU,CAAC;EAC3D;EACA,SAAS83T,iBAAiBA,CAAA,EAAG;IAC3B,IAAIruN,UAAU,GAAGyqD,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAE1D,IAAI,CAACwsG,UAAU,EAAE;MACfA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAC5C48T,UAAU,CAACnqT,YAAY,CAACi9F,UAAU,EAAEmtN,cAAc,CAAC;IACrD;IAEA,IAAIljS,SAAS,GAAG2iS,gBAAgB,CAACl4S,KAAK,CAAC,GAAG,CAAC;IAC3C,IAAIi1L,YAAY,GAAG,GAAG1lL,IAAI,CAAC5B,WAAW,CAAC4H,SAAS,CAAC,CAAC,CAAC,CAAC,IAAIhG,IAAI,CAAC5B,WAAW,CAAC4H,SAAS,CAAC,CAAC,CAAC,CAAC,IAAIA,SAAS,CAAC,CAAC,CAAC,CAACnqB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAEpHkgG,UAAU,CAACtvG,SAAS,GAAG;AAC3B,8BAA8Bi5M,YAAY;AAC1C,kCAAkCmjH,wBAAwB;AAC1D,+BAA+BE,qBAAqB;AACpD,WAAW;EACT;EAEA,SAASmB,2BAA2BA,CAAC1yN,OAAO,EAAE;IAC5C4yN,iBAAiB,CAAC,CAAC;IAEnB1yJ,YAAY,CAACjrK,SAAS,GAAG,EAAE;IAE3B,IAAI+qG,OAAO,CAAC5qG,MAAM,GAAG,CAAC,EAAE;MACtBs8T,cAAc,CAACz8T,SAAS,GAAG,EAAE;MAC7BirK,YAAY,CAACjrK,SAAS,GAAG,4BAA4B;MACrD;IACF;IAEA,IAAI49T,SAAS,GAAG,CAAC,CAAC;IAClB,IAAIjkR,SAAS,GAAG,EAAE;IAClB,IAAIkkR,gBAAgB,GAAG,CAAC;IACxB;IACA9yN,OAAO,CAAC3qG,OAAO,CAAC8gB,CAAC,IAAI;MACnB,IAAIkzC,YAAY,GAAGlzC,CAAC,CAAC8oG,WAAW;MAChC,IAAI71D,UAAU,GAAGjzC,CAAC,CAACq9M,KAAK;MACxB,IAAIlvF,YAAY,GAAG,GAAGnuH,CAAC,CAAC45N,EAAE,KAAK55N,CAAC,CAAC25N,EAAE,EAAE;MACrC,IAAI1mL,UAAU,KAAKgoQ,sBAAsB,IAAIA,sBAAsB,KAAK,KAAK,EAAE,OAAO,CAAC;;MAEvF,IAAI,CAACyB,SAAS,CAACzpQ,UAAU,CAAC,EAAE;QAC1BypQ,SAAS,CAACzpQ,UAAU,CAAC,GAAG,EAAE;QAC1Bxa,SAAS,CAAC1rC,IAAI,CAAC,GAAGmmD,YAAY,MAAMD,UAAU,EAAE,CAAC;MACnD;MACA0pQ,gBAAgB,EAAG;MACnBD,SAAS,CAACzpQ,UAAU,CAAC,CAAClmD,IAAI,CAACohI,YAAY,CAAC;IAC1C,CAAC,CAAC;IACF;IACA11F,SAAS,GAAGA,SAAS,CAACz/B,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MACnC,OAAOvU,CAAC,GAAGuU,CAAC,GAAG,CAAC,GAAG,CAAC;IACtB,CAAC,CAAC;IACF;IACAm/B,SAAS,CAACv5C,OAAO,CAACm/H,GAAG,IAAI;MACvBA,GAAG,GAAGA,GAAG,CAACv7G,KAAK,CAAC,KAAK,CAAC;MACtB,IAAI07G,OAAO,GAAGH,GAAG,CAAC,CAAC,CAAC;MACpB,IAAIg/F,KAAK,GAAGh/F,GAAG,CAAC,CAAC,CAAC;MAClB,IAAIu+L,WAAW,GAAGF,SAAS,CAACr/F,KAAK,CAAC,CAACp+N,MAAM;MACzC,IAAI0S,MAAM,GAAG,GAAG6sH,OAAO,MAAMo+L,WAAW,EAAE;MAC1C,IAAIn6G,IAAI,GAAG;AACjB;AACA,YAAYi6G,SAAS,CAACr/F,KAAK,CAAC,CAAC30N,GAAG,CAACvF,CAAC,IAAI,OAAOA,CAAC,OAAO,CAAC,CAACunB,IAAI,CAAC,EAAE,CAAC;AAC/D;AACA,OAAO;MACDq/I,YAAY,CAACjrK,SAAS,IAAI,OAAO6S,MAAM,WAAW8wM,IAAI,MAAM;IAC9D,CAAC,CAAC;IAEF84G,cAAc,CAACz8T,SAAS,GAAG,qBAAqB69T,gBAAgB,OAAO;EACzE;EAED,SAAS96T,IAAIA,CAAA,EAAG;IACb,IAAI,CAACm5T,gBAAgB,EAAEA,gBAAgB,GAAG3oS,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IAC9D,IAAI,CAAC8uR,sBAAsB,EAAEA,sBAAsB,GAAG,KAAK;IAC3D,IAAI,CAACC,wBAAwB,EAAEA,wBAAwB,GAAG,KAAK;IAC/D,IAAI,CAACC,mBAAmB,EAAEA,mBAAmB,GAAG,GAAG;IACnD,IAAI,CAACC,qBAAqB,EAAEA,qBAAqB,GAAG,UAAU;IAC9D,IAAI,CAACC,qBAAqB,EAAEA,qBAAqB,GAAG,KAAK;IAEzDxiK,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,qBAAqB,CAAC;IACvD02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAClDmoK,YAAY,GAAGpoK,QAAQ,CAACC,aAAa,CAAC,qBAAqB,CAAC;IAC5D25T,cAAc,GAAG55T,QAAQ,CAACC,aAAa,CAAC,uBAAuB,CAAC;;IAEhE;IACA2xD,SAAS,CAACkgG,kBAAkB,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;IAEtEgB,gBAAgB,CAAC,CAAC;IAClBgoK,iBAAiB,CAAC,CAAC;IACnBf,UAAU,CAAC,CAAC;IAEZ3nT,kBAAkB,CAAClS,IAAI,CAAC,CAAC;IACzBkS,kBAAkB,CAACJ,OAAO,CAAC/U,IAAI,CAACmrK,YAAY,EAAE,SAAS,CAAC;IAExD+xJ,gBAAgB,CAACC,8BAA8B,CAAC,UAAStjR,SAAS,EAAE;MAClEqjR,gBAAgB,CAACG,mCAAmC,CAAChB,sBAAsB,EAAE,UAASrT,MAAM,EAAE;QAC5FoU,6BAA6B,CAACvjR,SAAS,CAAC;QACxCyjR,0BAA0B,CAACtU,MAAM,CAAC;QAIlCkU,gBAAgB,CAACK,6BAA6B,CAAC;UAC7C5tR,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBwjR,UAAU,EAAEb,gBAAgB;UAC5BoB,gBAAgB,EAAEnB,sBAAsB;UACxCoB,eAAe,EAAEhB,qBAAqB;UACtCiB,WAAW,EAAEnB;QACf,CAAC,EAAEoB,2BAA2B,CAAC;MACjC,CAAC,CAAC;IACJ,CAAC,CAAC;;IAEF;IACA;IACA;EACH;EAEA,OAAO;IACN16T;EACD,CAAC;AACF,CAAC,CAAE,CAAC;ACxTJ,IAAIi6T,gBAAgB,GAAI,YAAW;EACjC,IAAIe,oBAAoB,GAAG,EAAE;EAE9B,SAASd,8BAA8BA,CAACv4T,QAAQ,EAAE;IAC/C,IAAIq5T,oBAAoB,CAAC59T,MAAM,GAAG,CAAC,EAAE;MACnCuE,QAAQ,CAACq5T,oBAAoB,CAAC;MAC9B;IACF;IAEF9sT,CAAC,CAAC2+C,IAAI,CAAC;MACNhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,oBAAoB;MACnDxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACmjG,sBAAsB;QACzChqG,GAAG,CAACqa,OAAO,CAAC;UACNutC,EAAE,EAAE,KAAK;UACT73D,IAAI,EAAE;QACZ,CAAC,CAAC;QACF;QACA6kR,oBAAoB,GAAG50Q,GAAG;QAC1BzkD,QAAQ,CAACykD,GAAG,CAAC;MACd,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CACpC;IACD,CAAC,CAAC;EACH;EAEA,SAASurT,mCAAmCA,CAAChpQ,UAAU,EAAEzvD,QAAQ,EAAE;IAClEuM,CAAC,CAAC2+C,IAAI,CAAC;MACNhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACFC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,yBAAyB;MACpDxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;QAAEmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QAAE4a;MAAW,CAAC,CAAC;MAC5DtE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACpC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC2+G,2BAA2B;QAC9CxlH,GAAG,GAAGA,GAAG,CAAC96C,MAAM,CAAC6S,CAAC,IAAIA,CAAC,CAAC4mJ,SAAS,KAAK,KAAK,IAAI5mJ,CAAC,CAAC4mJ,SAAS,KAAK,KAAK,CAAC;QACzEpjK,QAAQ,CAACykD,GAAG,EAAE,IAAI,CAAC;MACpB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CACpC;IACD,CAAC,CAAC;EACH;EAEA,SAASyrT,6BAA6BA,CAACp1C,UAAU,EAAEvjR,QAAQ,EAAE;IAC5DuM,CAAC,CAAC2+C,IAAI,CAAC;MACNhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACFC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,6BAA6B;MACxDxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC26P,UAAU,CAAC;MAChCp4N,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACpC,IAAI9G,GAAG,GAAG97B,IAAI,CAACxT,KAAK,CAACm2C,QAAQ,CAACguQ,+BAA+B,CAAC;QAC9Dt5T,QAAQ,CAACykD,GAAG,EAAE,IAAI,CAAC;MACxB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnClN,QAAQ,CAACkN,KAAK,EAAE,IAAI,CAAC;MACtB;IACD,CAAC,CAAC;EACH;EAEA,OAAO;IACNqrT,8BAA8B,EAAEA,8BAA8B;IAC9DE,mCAAmC,EAAEA,mCAAmC;IACxEE,6BAA6B,EAAEA;EAChC,CAAC;AACF,CAAC,CAAE,CAAC;ACjFJ,MAAMzmK,sBAAsB,GAAI,YAAY;EAC1C,IAAIqnK,QAAQ,GAAG;IACbl5S,CAAC,EAAE,gBAAgB;IACnB/B,CAAC,EAAE,SAAS;IACZO,CAAC,EAAE;EACL,CAAC;EACD;EACA;EACA,IAAI26S,aAAa;EACjB,IAAIC,uBAAuB;EAC3B,IAAIziN,kBAAkB;EACtB,IAAI8yH,oBAAoB;EACxB,IAAIuxB,kBAAkB;EACtB,IAAIq+D,2BAA2B;EAC/B,IAAIC,UAAU,GAAG,CAAC,CAAC;EACnB,IAAIC,aAAa,GAAG,CAAC,CAAC;EACtB;EACA;EACA,IAAIvkK,MAAM;EACV,IAAIyiK,UAAU;EACd,IAAIzvN,WAAW;EACf,IAAIyzM,gBAAgB;EACpB,IAAInyJ,gBAAgB;EACpB,IAAIquK,eAAe;EACnB,IAAIphN,eAAe;;EAEnB;EACA,SAASq6C,gBAAgBA,CAAA,EAAG;IAC1BoE,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,4BAA4B,CAAC;IAC9D,IAAI,CAACi0J,MAAM,EAAE;IACb,IAAI4iK,YAAY,GAAG5iK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC3D,IAAI65T,YAAY,EAAE;IAElBH,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAElDiqG,WAAW,GAAGt4C,SAAS,CAACkhG,gBAAgB,CAAC,CAAC;IAE1C6qJ,gBAAgB,GAAG37S,QAAQ,CAAC3B,KAAK,CAAC;MAChC4B,UAAU,EAAE,sBAAsB;MAClCE,KAAK,EAAE,WAAW;MAClBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACZ,CAAC,CAAC;IACFopJ,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAChC4B,UAAU,EAAE,sBAAsB;MAClCE,KAAK,EAAE,WAAW;MAClBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACZ,CAAC,CAAC;IACFy3T,eAAe,GAAGz5T,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IACF03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IAEF,IAAIwrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACo8T,eAAe,CAAC;IACpCttR,OAAO,CAAC9uC,WAAW,CAACg7G,eAAe,CAAC;IAEpCvO,WAAW,CAACzsG,WAAW,CAACkgT,gBAAgB,CAAC;IACzCzzM,WAAW,CAACzsG,WAAW,CAAC+tJ,gBAAgB,CAAC;IACzCthD,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAChC2qH,MAAM,CAAC1nJ,YAAY,CAAC06F,WAAW,EAAEyvN,UAAU,CAAC;EAC9C;EACA,SAAS+B,wBAAwBA,CAAA,EAAG;IAClC;IACA,KAAK,IAAI/5T,GAAG,IAAI85T,aAAa,EAAE;MAC7B,IAAIA,aAAa,CAAC95T,GAAG,CAAC,CAACyqJ,QAAQ,KAAKh+I,CAAC,CAACC,OAAO,CAACmoC,QAAQ,EAAE;QACtD,OAAOilR,aAAa,CAAC95T,GAAG,CAAC;MAC3B;IACF;IAEA,IAAIoB,IAAI,GAAG+b,MAAM,CAAC8B,IAAI,CAAC66S,aAAa,CAAC,CAAC10T,GAAG,CAACvF,CAAC,IAAI;MAC7C,OAAO;QACLI,KAAK,EAAE65T,aAAa,CAACj6T,CAAC,CAAC,CAAC4qJ,QAAQ;QAChCzrJ,IAAI,EAAE86T,aAAa,CAACj6T,CAAC,CAAC,CAACsE;MACzB,CAAC;IACH,CAAC,CAAC;IACF;IACA/C,IAAI,CAACsU,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAMvU,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,GAAG,CAAC,GAAG,CAAC,CAAE,CAAC;IAE/CoC,IAAI,CAAC49D,OAAO,CAAC;MAAE/+D,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IAEzCqB,QAAQ,CAAC5E,QAAQ,CAAC,sBAAsB,EAAE2F,IAAI,EAAE81G,kBAAkB,CAAC;EACrE;EAEA,SAAS8iN,yBAAyBA,CAACC,aAAa,EAAE;IAChD,IAAIA,aAAa,CAACt+T,MAAM,GAAG,CAAC,EAAE;MAC5B,IAAIyF,IAAI,GAAG+b,MAAM,CAAC8B,IAAI,CAACg7S,aAAa,CAAC,CAAC70T,GAAG,CAAC8Y,CAAC,IAAI;QAC7C,OAAO;UACLje,KAAK,EAAEg6T,aAAa,CAAC/7S,CAAC,CAAC,CAACyxC,UAAU;UAClC3wD,IAAI,EAAEi7T,aAAa,CAAC/7S,CAAC,CAAC,CAAC06F;QACzB,CAAC;MACH,CAAC,CAAC;MACFx3G,IAAI,CAAC49D,OAAO,CAAC;QAAE/+D,KAAK,EAAE,GAAG;QAAEjB,IAAI,EAAE;MAAM,CAAC,CAAC;MAEzCqB,QAAQ,CAAC5E,QAAQ,CAAC,sBAAsB,EAAE2F,IAAI,EAAEm6P,kBAAkB,CAAC;IACrE;EACF;EAEA,SAAS68D,UAAUA,CAAA,EAAG;IACpB,IAAI8B,qBAAqB;IACzB,IAAIC,uBAAuB;IAC3B,IAAIC,qBAAqB;IACzB,IAAIC,8BAA8B;IAElCre,gBAAgB,CAACx9S,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD,IAAIi/K,sBAAsB,GAAGj/K,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAE7Eo5T,qBAAqB,GAAGhjN,kBAAkB;MAC1CijN,uBAAuB,GAAGnwF,oBAAoB;MAE9C9yH,kBAAkB,GAAG+jE,sBAAsB,CAACh7K,KAAK;MACjD+pO,oBAAoB,GAAG/uD,sBAAsB,CAACz/K,SAAS;IACzD,CAAC,CAAC;IACFquJ,gBAAgB,CAACrrJ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD,IAAIs+T,sBAAsB,GAAGt+T,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAE7Es5T,qBAAqB,GAAG7+D,kBAAkB;MAC1C8+D,8BAA8B,GAAGT,2BAA2B;MAE5Dr+D,kBAAkB,GAAG++D,sBAAsB,CAACr6T,KAAK;MACjD25T,2BAA2B,GAAGU,sBAAsB,CAAC9+T,SAAS;IAChE,CAAC,CAAC;IACF08T,eAAe,CAAC15T,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAC5CgyN,cAAc,CAACb,aAAa,EAAExiN,kBAAkB,EAAEqkJ,kBAAkB,CAAC;MACrEi/D,iBAAiB,CAAC,CAAC;IACrB,CAAC,CAAC;IACF1jN,eAAe,CAACt4G,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;;MAE5C;MACA;MACA;MACA;IACF,CAAC,CAAC;EACJ;EACA,SAAS4wN,iBAAiBA,CAAA,EAAG;IAC3B,IAAIruN,UAAU,GAAGyqD,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAE1D,IAAI,CAACwsG,UAAU,EAAE;MACfA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAC5C48T,UAAU,CAACl8T,WAAW,CAACgvG,UAAU,CAAC;IACpC;IAEAA,UAAU,CAACtvG,SAAS,GAAG;AAC3B,kCAAkCwuO,oBAAoB;AACtD,kCAAkC4vF,2BAA2B,aAAa;EACxE;EAEA,SAASY,iBAAiBA,CAAA,EAAG;IAC3BrB,iBAAiB,CAAC,CAAC;IAEnB,IAAIsB,cAAc,GAAGllK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC7D,IAAIo8T,eAAe,GAAGnlK,MAAM,CAACj3J,aAAa,CAAC,wBAAwB,CAAC;IACpE,IAAIq8T,eAAe,GAAGplK,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAC/Dm8T,cAAc,CAACj/T,SAAS,GAAG,EAAE;IAC7Bk/T,eAAe,CAACl/T,SAAS,GAAG,EAAE;IAC9Bm/T,eAAe,CAACn/T,SAAS,GAAG,EAAE;IAE9B,IAAIo/T,WAAW,GAAGz9S,MAAM,CAAC8B,IAAI,CAAC46S,UAAU,CAAC;IACzCe,WAAW,CAACh/T,OAAO,CAACkG,KAAK,IAAI;MAC3B,IAAI+4T,UAAU,GAAG19S,MAAM,CAAC8B,IAAI,CAAC46S,UAAU,CAAC/3T,KAAK,CAAC,CAAC;MAC/C+4T,UAAU,CAACnlT,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;QACxB,IAAImrR,KAAK,GAAG1/R,CAAC,CAAC+d,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI4hR,KAAK,GAAGprR,CAAC,CAACwJ,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B2hR,KAAK,GAAG,IAAI/rR,IAAI,CAAC+rR,KAAK,CAAC;QACvBC,KAAK,GAAG,IAAIhsR,IAAI,CAACgsR,KAAK,CAAC;QAEvB,IAAID,KAAK,GAAGC,KAAK,EAAE;UACjB,OAAO,CAAC,CAAC;QACX,CAAC,MAAM,IAAID,KAAK,GAAGC,KAAK,EAAE;UACxB,OAAO,CAAC;QACV,CAAC,MAAM;UACL,OAAO,CAAC;QACV;MACF,CAAC,CAAC;MACFy5B,UAAU,CAACj/T,OAAO,CAAC4+J,KAAK,IAAI;QAC1B,IAAIx7J,IAAI,GAAGw7J,KAAK,CAACh7I,KAAK,CAAC,KAAK,CAAC,CAAC4H,IAAI,CAAC,KAAK,CAAC;QACzC,IAAInsB,KAAK,GAAG4+T,UAAU,CAAC/3T,KAAK,CAAC,CAAC04J,KAAK,CAAC,CAACv/J,KAAK;QAC1C,IAAI6hB,CAAC,GAAGze,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QACnCke,CAAC,CAACxd,YAAY,CAAC,YAAY,EAAEk7J,KAAK,CAACh7I,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD1C,CAAC,CAACxd,YAAY,CAAC,UAAU,EAAEk7J,KAAK,CAACh7I,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD1C,CAAC,CAACthB,SAAS,GAAG,GAAGwD,IAAI,YAAY/D,KAAK,SAAS;QAC/C6hB,CAAC,CAAC5hB,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;QAC7B,IAAI0G,KAAK,KAAK,GAAG,EAAE;UACjB24T,cAAc,CAAC3+T,WAAW,CAACghB,CAAC,CAAC;UAC7BklE,QAAQ,CAACllE,CAAC,EAAE,GAAG,CAAC;QAClB,CAAC,MAAM,IAAIhb,KAAK,KAAK,GAAG,EAAE;UACxB44T,eAAe,CAAC5+T,WAAW,CAACghB,CAAC,CAAC;UAC9BklE,QAAQ,CAACllE,CAAC,EAAE,GAAG,CAAC;QAClB,CAAC,MAAM,IAAIhb,KAAK,KAAK,GAAG,EAAE;UACxB64T,eAAe,CAAC7+T,WAAW,CAACghB,CAAC,CAAC;UAC9BklE,QAAQ,CAACllE,CAAC,EAAE,GAAG,CAAC;QAClB;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEA,SAASklE,QAAQA,CAAC39E,OAAO,EAAEsU,MAAM,EAAE;IACjCtU,OAAO,CAAC7F,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzC,IAAIu3B,SAAS,GAAGv3B,KAAK,CAACC,MAAM,CAAC+I,YAAY,CAAC,YAAY,CAAC;MACvD,IAAIyuB,OAAO,GAAGz3B,KAAK,CAACC,MAAM,CAAC+I,YAAY,CAAC,UAAU,CAAC;MACnDqsG,+BAA+B,CAAC,oBAAoB,CAAC;MACrDh1G,YAAY,CAACH,OAAO,CAACE,YAAY,GAAG,WAAW;MAC/CmR,GAAG,CAACC,iBAAiB,CAAC,CAAC;MACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;MACvBnH,IAAI,CAACod,uBAAuB,CAAC,WAAW,CAAC;MACzC+pO,SAAS,CAACiK,cAAc,CAAC,MAAM;QAC7B/iR,YAAY,CAACyjO,WAAW,CAACttM,SAAS,EAAEE,OAAO,EAAE9a,MAAM,CAAC;MACtD,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EACA,SAASmiT,eAAeA,CAAA,EAAG;IACzB,IAAIC,UAAU,GAAG/C,UAAU,CAAC15T,aAAa,CAAC,OAAO,CAAC;IAClD,IAAI,CAACy8T,UAAU,EAAE;MACf,IAAIC,UAAU,GAAG;QACf1kT,QAAQ,EAAE,CAAC,gBAAgB,EAAE,SAAS,EAAE,UAAU;MACpD,CAAC;MAEDykT,UAAU,GAAG9kT,IAAI,CAACvX,KAAK,CAACs8T,UAAU,CAAC;MAEnChD,UAAU,CAACl8T,WAAW,CAACi/T,UAAU,CAAC;IACpC;EACF;EACA,SAASR,cAAcA,CAACn5T,IAAI,EAAE81G,kBAAkB,EAAEqkJ,kBAAkB,EAAE;IACpEs+D,UAAU,GAAG,CAAC,CAAC;IACfz4T,IAAI,CAACxF,OAAO,CAAC2F,CAAC,IAAI;MAChB,IAAIk4T,QAAQ,CAACl4T,CAAC,CAAC05T,eAAe,CAAC,EAAE;QAC/B,IACE/jN,kBAAkB,KACjBA,kBAAkB,KAAK31G,CAAC,CAAC25T,SAAS,IAAIhkN,kBAAkB,KAAK,GAAG,CAAC,EAClE;UACA,IACEqkJ,kBAAkB,KACjBA,kBAAkB,KAAKh6P,CAAC,CAAC24N,WAAW,IAAIqhC,kBAAkB,KAAK,GAAG,CAAC,EACpE;YACA,IAAI9wG,QAAQ,GAAGlpJ,CAAC,CAAC25T,SAAS;YAC1B,IAAIvrQ,UAAU,GAAGpuD,CAAC,CAAC24N,WAAW;YAC9B,IAAI/1N,IAAI,GAAG,GAAG5C,CAAC,CAACi3J,SAAS,EAAE,GAAG,IAAI,GAAG,GAAGj3J,CAAC,CAACg3J,UAAU,EAAE;YACtD,IAAI5/I,MAAM,GAAGpX,CAAC,CAAC05T,eAAe;YAC9B,IAAI1nS,SAAS,GAAGhyB,CAAC,CAAC09Q,SAAS,CAACz/P,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzC,IAAIiU,OAAO,GAAGlyB,CAAC,CAAC29Q,OAAO,CAAC1/P,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrC,IAAIiS,UAAU,GAAG,GAAG8B,SAAS,MAAME,OAAO,EAAE;YAE5C,IAAI,CAAComS,UAAU,CAAClhT,MAAM,CAAC,EAAE;cACvBkhT,UAAU,CAAClhT,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB;YACA,IAAI,CAACkhT,UAAU,CAAClhT,MAAM,CAAC,CAAC8Y,UAAU,CAAC,EAAE;cACnCooS,UAAU,CAAClhT,MAAM,CAAC,CAAC8Y,UAAU,CAAC,GAAG;gBAAEx2B,KAAK,EAAE;cAAE,CAAC;YAC/C;YACA4+T,UAAU,CAAClhT,MAAM,CAAC,CAAC8Y,UAAU,CAAC,CAACx2B,KAAK,EAAE;YAEtC,IAAI,CAAC6+T,aAAa,CAACrvK,QAAQ,CAAC,EAAE;cAC5BqvK,aAAa,CAACrvK,QAAQ,CAAC,GAAG;gBAAEA,QAAQ;gBAAEtmJ;cAAK,CAAC;YAC9C;UACF;QACF;MACF;IACF,CAAC,CAAC;EACJ;EAEA,SAAS5F,IAAIA,CAAA,EAAG;IACd,IAAI,CAACyrO,oBAAoB,EAAEA,oBAAoB,GAAG,KAAK;IACvD,IAAI,CAAC9yH,kBAAkB,EAAEA,kBAAkB,GAAG,GAAG;IACjD,IAAI,CAAC0iN,2BAA2B,EAAEA,2BAA2B,GAAG,KAAK;IACrE,IAAI,CAACr+D,kBAAkB,EAAEA,kBAAkB,GAAG,GAAG;IAEjDhmG,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,4BAA4B,CAAC;IAC9D02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAClD05T,UAAU,CAACx8T,SAAS,GAAG,EAAE;IAEzBy0D,SAAS,CAACkgG,kBAAkB,CAAC,4BAA4B,EAAE,kBAAkB,CAAC;;IAE9E;IACAgpK,iBAAiB,CAAC,CAAC;IACnBhoK,gBAAgB,CAAC,CAAC;IAClBinK,UAAU,CAAC,CAAC;IAEZ+C,0BAA0B,CAACC,4BAA4B,CAAC,UAAUz2Q,GAAG,EAAEv3C,KAAK,EAAE;MAC5EusT,uBAAuB,GAAGh1Q,GAAG;MAE7Bw2Q,0BAA0B,CAACE,kCAAkC,CAAC,UAAU90N,OAAO,EAAEn5F,KAAK,EAAE;QACtFssT,aAAa,GAAGnzN,OAAO;QACvBg0N,cAAc,CAACh0N,OAAO,EAAE2Q,kBAAkB,EAAEqkJ,kBAAkB,CAAC;QAC/Dw+D,wBAAwB,CAAC,CAAC;QAC1BC,yBAAyB,CAACL,uBAAuB,CAAC;QAClD;QACAmB,eAAe,CAAC,CAAC;QACjBN,iBAAiB,CAAC,CAAC;MACrB,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEA,OAAO;IACLj8T;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACrTJ,IAAI48T,0BAA0B,GAAI,YAAW;EAC5C,SAASE,kCAAkCA,CAACn7T,QAAQ,EAAE;IACrDuM,CAAC,CAAC2+C,IAAI,CAAC;MACNhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACFC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,0CAA0C;MACrExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC9G,GAAG,GAAG6G,QAAQ,CAAC8vQ,4CAA4C;QAC3Dp7T,QAAQ,CAACykD,GAAG,EAAE,IAAI,CAAC;MACpB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnClN,QAAQ,CAAC,IAAI,EAAEkN,KAAK,CAAC;MACtB;IACD,CAAC,CAAC;EACH;EAEA,SAASguT,4BAA4BA,CAACl7T,QAAQ,EAAE;IAC/CuM,CAAC,CAAC2+C,IAAI,CAAC;MACNhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACFC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,gCAAgC;MAC3DxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC9G,GAAG,GAAG6G,QAAQ,CAAC+vQ,kCAAkC;QACjDr7T,QAAQ,CAACykD,GAAG,EAAE,IAAI,CAAC;MACpB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnClN,QAAQ,CAAC,IAAI,EAAEkN,KAAK,CAAC;MACtB;IACD,CAAC,CAAC;EACH;EAEA,OAAO;IACNiuT,kCAAkC;IAClCD;EACD,CAAC;AACF,CAAC,CAAE,CAAC;AC/CJ,IAAItnK,qBAAqB,GAAI,YAAW;EACpC,IAAI0nK,mBAAmB;EACvB,IAAIC,UAAU,GAAG,CAAC,CAAC;EACnB,IAAIC,OAAO,GAAG,CAAC,CAAC;EAChB,IAAIxuT,cAAc;EAClB,IAAIyuT,qBAAqB;EAEzB,SAASC,QAAQA,CAAA,EAAG;IAChB,IAAIn2R,OAAO,GAAG,EAAE;IAEpB,KAAK,IAAIl/B,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAKo1T,qBAAqB,GAAG,CAAE,EAAEp1T,CAAC,EAAE,EAAG;MAChD,MAAM6e,IAAI,GAAG,IAAIhQ,IAAI,CAAC,CAAC;MACvBgQ,IAAI,CAAC5D,OAAO,CAAC4D,IAAI,CAAC7D,OAAO,CAAC,CAAC,GAAGhb,CAAC,CAAC;MAChCk/B,OAAO,CAACh8B,IAAI,CAAC,GAAI2b,IAAI,CAAC9D,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAK8D,IAAI,CAAC7D,OAAO,CAAC,CAAC,IAAI6D,IAAI,CAAC/D,WAAW,CAAC,CAAC,EAAE,CAAC;IACpF;IACA,OAAOokB,OAAO;EAClB;EAEA,SAASo2R,YAAYA,CAAClxP,KAAK,EAAEnqE,KAAK,EAAEY,IAAI,EAAE;IACtCupE,KAAK,CAACvpE,IAAI,CAAC68D,MAAM,CAACx0D,IAAI,CAACjJ,KAAK,CAAC;IAC7BmqE,KAAK,CAACvpE,IAAI,CAACwrE,QAAQ,CAAChxE,OAAO,CAAEM,OAAO,IAAK;MACrCA,OAAO,CAACkF,IAAI,CAACqI,IAAI,CAACrI,IAAI,CAAC;IAC3B,CAAC,CAAC;IACFupE,KAAK,CAACuD,MAAM,CAAC,CAAC;EAClB;EAEA,eAAeghE,OAAOA,CAAA,EAAG;IACrBysL,qBAAqB,GAAGzuT,cAAc,CAACwoJ,YAAY,CAACy7D,QAAQ;IAC5D,MAAM3lK,QAAQ,GAAG,CAAC,MAAMswQ,yBAAyB,CAACC,uBAAuB,CAACJ,qBAAqB,CAAC,EAAEK,sCAAsC;IACxIC,eAAe,CAAC,CAAC;IACjBzwQ,QAAQ,CAAC5vD,OAAO,CAAC6e,IAAI,IAAI;MACrB,MAAMiyG,WAAW,GAAGjyG,IAAI,CAAC+mJ,YAAY,CAAChiJ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACnD,MAAM08S,mBAAmB,GAAGzhT,IAAI,CAAC0hT,eAAe,CAAC38S,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC9D,IAAI/E,IAAI,CAAC2hT,kBAAkB,KAAK,EAAE,EAAE;QAChCX,UAAU,CAAChhT,IAAI,CAAC2hT,kBAAkB,CAAC,GAAG3hT,IAAI;QAC1C;MACJ;MACA;MACA;MACA,IAAI,CAACihT,OAAO,CAAChvM,WAAW,CAAC,IAAIgvM,OAAO,CAACQ,mBAAmB,CAAC,EAAE;QACvDG,gBAAgB,CAAC5hT,IAAI,EAAEyhT,mBAAmB,CAAC;QAC3C;MACJ;MACAR,OAAO,CAAChvM,WAAW,CAAC,CAAC4vM,QAAQ,IAAIr2S,QAAQ,CAACxL,IAAI,CAAC8hT,WAAW,CAAC;MAC3D,IAAI9hT,IAAI,CAAC+hT,WAAW,KAAK,EAAE,EAAE;QACzBd,OAAO,CAAChvM,WAAW,CAAC,CAACgD,UAAU,IAAIzpG,QAAQ,CAACxL,IAAI,CAAC+hT,WAAW,CAAC;MACjE;MACA;MACA,IAAI/hT,IAAI,CAACgiT,cAAc,KAAK,EAAE,IAAIf,OAAO,CAACQ,mBAAmB,CAAC,EAAE;QAC5DG,gBAAgB,CAAC5hT,IAAI,EAAEyhT,mBAAmB,CAAC;MAC/C;IACJ,CAAC,CAAC;IACN,IAAG/+S,MAAM,CAAC8B,IAAI,CAACw8S,UAAU,CAAC,CAAC9/T,MAAM,GAAG,CAAC,EAAE;MAC/BwhB,MAAM,CAAC8B,IAAI,CAACw8S,UAAU,CAAC,CAAC7/T,OAAO,CAAC8gU,MAAM,IAAI;QACtC,MAAMhwM,WAAW,GAAG+uM,UAAU,CAACiB,MAAM,CAAC,CAACl7J,YAAY,CAAChiJ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM08S,mBAAmB,GAAGT,UAAU,CAACiB,MAAM,CAAC,CAACP,eAAe,CAAC38S,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5E;QACA;QACA,IAAK,CAACk8S,OAAO,CAAChvM,WAAW,CAAC,IAAIgvM,OAAO,CAACQ,mBAAmB,CAAC,IAAKT,UAAU,CAACiB,MAAM,CAAC,CAACD,cAAc,KAAK,EAAE,EAAE;UACrGf,OAAO,CAACQ,mBAAmB,CAAC,CAAC9J,OAAO,IAAI/0S,IAAI,CAAC0F,KAAK,CAAC1F,IAAI,CAACuC,KAAK,CAAC67S,UAAU,CAACiB,MAAM,CAAC,CAACD,cAAc,GAAC,EAAE,CAAC,GAAG,CAAC,CAAC;UACxG;QACJ;QACAf,OAAO,CAAChvM,WAAW,CAAC,CAAC4vM,QAAQ,IAAIr2S,QAAQ,CAACw1S,UAAU,CAACiB,MAAM,CAAC,CAACH,WAAW,CAAC;QACzE,IAAId,UAAU,CAACiB,MAAM,CAAC,CAACF,WAAW,KAAK,EAAE,EAAE;UACvCd,OAAO,CAAChvM,WAAW,CAAC,CAACgD,UAAU,IAAIzpG,QAAQ,CAACw1S,UAAU,CAACiB,MAAM,CAAC,CAACF,WAAW,CAAC;QAC/E;QACA;QACA,IAAIf,UAAU,CAACiB,MAAM,CAAC,CAACD,cAAc,KAAK,EAAE,IAAIf,OAAO,CAACQ,mBAAmB,CAAC,EAAE;UAC1ER,OAAO,CAACQ,mBAAmB,CAAC,CAAC9J,OAAO,IAAI/0S,IAAI,CAAC0F,KAAK,CAAC1F,IAAI,CAACuC,KAAK,CAAC67S,UAAU,CAACiB,MAAM,CAAC,CAACD,cAAc,GAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC5G;MACJ,CAAC,CAAC;IACN;IACAE,SAAS,CAAC,CAAC;EACf;EACA;AACJ;AACA;AACA;AACA;EACI,SAASN,gBAAgBA,CAACO,YAAY,EAAEC,OAAO,EAAE;IAC7C,IAAID,YAAY,CAACH,cAAc,KAAK,EAAE,EAAE;IACpCf,OAAO,CAACmB,OAAO,CAAC,CAACzK,OAAO,IAAI/0S,IAAI,CAAC0F,KAAK,CAAC1F,IAAI,CAACuC,KAAK,CAACg9S,YAAY,CAACH,cAAc,GAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EAC9F;EAEA,SAASR,eAAeA,CAAA,EAAG;IACvB,IAAIx2R,OAAO,GAAGm2R,QAAQ,CAAC,CAAC;IACxBn2R,OAAO,CAAC7pC,OAAO,CAACwpB,IAAI,IAAI;MACpBs2S,OAAO,CAACt2S,IAAI,CAAC,GAAG;QAACk3S,QAAQ,EAAE,CAAC;QAAE5sM,UAAU,EAAE,CAAC;QAAE0iM,OAAO,EAAE;MAAC,CAAC;IAC5D,CAAC,CAAC;EACN;EAEA,SAAS0K,wBAAwBA,CAACC,sBAAsB,EAAE;IACtD,MAAMC,qBAAqB,GAAG9vT,cAAc,CAACwoJ,YAAY,CAACsnK,qBAAqB;IAC/E,IAAIC,MAAM;IACV;IACA,IAAIF,sBAAsB,GAAGC,qBAAqB,EAAE;MAChD;MACAC,MAAM,GAAG,CACL,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,CAC1B;IACL,CAAC,MAAM;MACH;MACAA,MAAM,GAAG,CACL,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,CAC3B;IACL;IACA,OAAOA,MAAM;EACjB;EAEA,SAASC,uBAAuBA,CAAA,EAAsB;IAAA,IAArBC,eAAe,GAAAv3T,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,CAAC;IAChD,MAAMw3T,kBAAkB,GAAG,EAAE,GAAGlwT,cAAc,CAACwoJ,YAAY,CAACynK,eAAe;IAC3E,IAAIE,eAAe,GAAG;MAAC78T,KAAK,EAAE,eAAe;MAAEY,IAAI,EAAC,EAAE;MAAEsrD,eAAe,EAAE,EAAE;MAAEy/B,KAAK,EAAE;IAAC,CAAC;IACtF,IAAImxO,iBAAiB,GAAG;MAAC98T,KAAK,EAAE,iBAAiB;MAAEY,IAAI,EAAC,EAAE;MAAEsrD,eAAe,EAAE,EAAE;MAAEy/B,KAAK,EAAE;IAAC,CAAC;IAC1F,IAAIoxO,cAAc,GAAG;MAAC/8T,KAAK,EAAE,wBAAwB;MAAEY,IAAI,EAAC,EAAE;MAAEsrD,eAAe,EAAE,EAAE;MAAEy/B,KAAK,EAAE;IAAC,CAAC;IAC9FhvE,MAAM,CAAC8B,IAAI,CAACy8S,OAAO,CAAC,CAAC9/T,OAAO,CAACwpB,IAAI,IAAI;MACjC,IAAIo4S,SAAS,GAAG9B,OAAO,CAACt2S,IAAI,CAAC,CAACk3S,QAAQ,GAAGZ,OAAO,CAACt2S,IAAI,CAAC,CAACsqG,UAAU,GAAGgsM,OAAO,CAACt2S,IAAI,CAAC,CAACgtS,OAAO;MACzF,IAAI2K,sBAAsB,GAAG1/S,IAAI,CAAC0F,KAAK,CAAEy6S,SAAS,GAACJ,kBAAkB,GAAI,GAAG,CAAC;MAC7E,IAAIK,QAAQ,GAAGX,wBAAwB,CAACC,sBAAsB,CAAC;MAC/DM,eAAe,CAAC3wQ,eAAe,CAACjjD,IAAI,CAACg0T,QAAQ,CAAC,CAAC,CAAC,CAAC;MACjDH,iBAAiB,CAAC5wQ,eAAe,CAACjjD,IAAI,CAACg0T,QAAQ,CAAC,CAAC,CAAC,CAAC;MACnDF,cAAc,CAAC7wQ,eAAe,CAACjjD,IAAI,CAACg0T,QAAQ,CAAC,CAAC,CAAC,CAAC;MAChDJ,eAAe,CAACj8T,IAAI,CAACqI,IAAI,CAAC4T,IAAI,CAAC0F,KAAK,CAAE24S,OAAO,CAACt2S,IAAI,CAAC,CAACk3S,QAAQ,GAACc,kBAAkB,GAAI,GAAG,CAAC,CAAC;MACxFE,iBAAiB,CAACl8T,IAAI,CAACqI,IAAI,CAAC4T,IAAI,CAAC0F,KAAK,CAAE24S,OAAO,CAACt2S,IAAI,CAAC,CAACsqG,UAAU,GAAC0tM,kBAAkB,GAAI,GAAG,CAAC,CAAC;MAC5FG,cAAc,CAACn8T,IAAI,CAACqI,IAAI,CAAC4T,IAAI,CAAC0F,KAAK,CAAE24S,OAAO,CAACt2S,IAAI,CAAC,CAACgtS,OAAO,GAACgL,kBAAkB,GAAI,GAAG,CAAC,CAAC;IAC1F,CAAC,CAAC;IACF,OAAO,CAACC,eAAe,EAAEC,iBAAiB,EAAEC,cAAc,CAAC;EAC/D;EAGA,SAASZ,SAASA,CAAA,EAAG;IACjB;IACA,IAAIh2S,MAAM,GAAG,GAAG;IAChB,IAAIg1S,qBAAqB,GAAG,EAAE,IAAIA,qBAAqB,GAAG,EAAE,EACxDh1S,MAAM,GAAG,GAAG;IAChB,IAAIg1S,qBAAqB,GAAG,EAAE,IAAIA,qBAAqB,GAAG,EAAE,EACxDh1S,MAAM,GAAG,GAAG;IAChB,IAAIg1S,qBAAqB,GAAG,EAAE,EAC1Bh1S,MAAM,GAAG,IAAI;IAEjB,MAAMqxS,UAAU,GAAG35T,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC;IAC7D,MAAMioE,MAAM,GAAGlrE,QAAQ,CAACO,aAAa,CAAC,QAAQ,CAAC;IAC/C2qE,MAAM,CAACn4D,KAAK,GAAG,GAAG;IAClBm4D,MAAM,CAAC5iD,MAAM,GAAGA,MAAM;IAEtB,IAAIqxS,UAAU,IAAI,IAAI,EAAE;IACxBA,UAAU,CAACl8T,WAAW,CAACytE,MAAM,CAAC;IAE9B,MAAM5qE,OAAO,GAAG;MACZ2tE,MAAM,EAAE;QACJK,KAAK,EAAE,CAAC;UACJ8J,OAAO,EAAE,IAAI;UACbkD,KAAK,EAAE;YACHuB,WAAW,EAAE;UACjB;QACJ,CAAC,CAAC;QACFzO,KAAK,EAAE,CAAC;UACJgK,OAAO,EAAC,IAAI;UACZkD,KAAK,EAAE;YACHuB,WAAW,EAAE,IAAI;YACjB1yD,GAAG,EAAE,CAAC;YACND,GAAG,EAAE,GAAG;YACRm1S,QAAQ,EAAE,EAAE;YACZ1mO,SAAS,EAAE,EAAE;YACb92F,QAAQ,EAAE,SAAAA,CAAUD,KAAK,EAAE;cACvB,OAAOA,KAAK,GAAG,GAAG;YACtB;UACJ,CAAC;UACD2wF,UAAU,EAAE;YACRrnF,OAAO,EAAE,IAAI;YACbsnF,WAAW,EAAE;UACjB;QACJ,CAAC;MACL,CAAC;MACD1Y,MAAM,EAAE;QACJ5uE,OAAO,EAAE;MACb;IACJ,CAAC;IAEDiyT,mBAAmB,GAAG,IAAIhnQ,KAAK,CAAC+U,MAAM,EAAE;MACpCnqE,IAAI,EAAE,eAAe;MACrBgC,IAAI,EAAE;QACF68D,MAAM,EAAE29P,QAAQ,CAAC,CAAC;QAClBhvP,QAAQ,EAAEswP,uBAAuB,CAAC;MACtC,CAAC;MACDv+T,OAAO,EAAEA;IACb,CAAC,CAAC;EACN;EAEA,SAASg/T,sBAAsBA,CAAA,EAAG;IAC9BzwT,cAAc,CAACwoJ,YAAY,GAAG;MAC1BsnK,qBAAqB,EAAE,EAAE;MACzB7rG,QAAQ,EAAE,EAAE;MACZgsG,eAAe,EAAE;IACrB,CAAC;IACDtnK,kBAAkB,CAAC+nK,sBAAsB,CAAC,CAAC,EAAE/0S,IAAI,CAACC,SAAS,CAAC5b,cAAc,CAACwoJ,YAAY,CAAC,EAAExoJ,cAAc,CAACmkJ,QAAQ,CAAC;EACtH;EACA,SAAS9yJ,IAAIA,CAAA,EAAG;IACZ2O,cAAc,GAAG+iD,SAAS,CAACqhG,iBAAiB,CAAC,GAAG,CAAC;IACjD,IAAIpkJ,cAAc,CAACwoJ,YAAY,KAAK,IAAI,EAAEioK,sBAAsB,CAAC,CAAC;IAClEzuL,OAAO,CAAC,CAAC;EACb;EAEA,OAAO;IACH3wI;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACjNJ;;AAEA,MAAMu9T,yBAAyB,GAAI,YAAW;EAC5C,SAASC,uBAAuBA,CAAA,EAAe;IAAA,IAAd5qG,QAAQ,GAAAvrN,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,CAAC;IAC3CxE,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBo8K,QAAQ,EAAEA;IACZ,CAAC;IACD,OAAO1kN,CAAC,CAAC2+C,IAAI,CAAC;MACZhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,oCAAoC;MAChExoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EAEA,OAAO;IACLwwQ;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACxBJ,IAAI7nK,iBAAiB,GAAI,YAAY;EACjC,IAAIsnK,mBAAmB;EACvB,IAAIC,UAAU,GAAG,CAAC,CAAC;EACnB,IAAIC,OAAO,GAAG,CAAC,CAAC;EAChB,IAAImC,aAAa;EACjB,IAAI3wT,cAAc;EAClB,IAAIikN,QAAQ;EACZ,IAAImzF,MAAM;EACV,IAAIwZ,WAAW;EACf,IAAIC,SAAS,GAAG,EAAE;EAClB,IAAIC,QAAQ,GAAG,EAAE;EAEjB,SAASC,eAAeA,CAACpoS,EAAE,EAAE;IACzB;IACAs7L,QAAQ,GAAGjkN,cAAc,CAACwoJ,YAAY,CAACy7D,QAAQ;IAC/C+sG,qBAAqB,CAACC,oBAAoB,CAAChtG,QAAQ,EAAExsK,GAAG,IAAI;MACxDk5Q,aAAa,GAAGl5Q,GAAG,CAACv/C,GAAG,CAACmiG,QAAQ,IAAI;QAChC,MAAMO,WAAW,GAAG;UAChBohB,UAAU,EAAE3hB,QAAQ,CAAC62N,YAAY;UACjC7tG,QAAQ,EAAEhpH,QAAQ,CAACgF,EAAE;UACrB8xN,SAAS,EAAE92N,QAAQ,CAAC60N,kBAAkB;UACtC50N,SAAS,EAAED,QAAQ,CAAC+2N,UAAU;UAC9B72N,QAAQ,EAAEF,QAAQ,CAACV,SAAS;UAC5B6lB,WAAW,EAAEnlB,QAAQ,CAACi6D,YAAY;UAClCnnD,WAAW,EAAE9S,QAAQ,CAACg3N,YAAY;UAClC5qS,OAAO,EAAE4zE,QAAQ,CAACi3N,QAAQ;UAC1B9pS,SAAS,EAAE6yE,QAAQ,CAACs5D,UAAU;UAC9B49J,UAAU,EAAEl3N,QAAQ,CAACy0H;QACzB,CAAC;QACD,OAAOl0H,WAAW;MACtB,CAAC,CAAC;MACF42N,mBAAmB,CAAC,CAAC;MACrB7oS,EAAE,CAAC,CAAC;IACR,CAAC,CAAC;EACN;EAEA,SAAS6oS,mBAAmBA,CAAA,EAAG;IAC3Bpa,MAAM,GAAG,CAAC,CAAC;IAEX,IAAIqa,YAAY,CAAC,CAAC,EAAE;MAEhBb,WAAW,GAAGE,QAAQ,CAAC54T,GAAG,CAACuZ,CAAC,IAAIA,CAAC,CAAC,CAACyI,IAAI,CAAC,GAAG,CAAC;MAE5C82S,qBAAqB,CAACU,iBAAiB,CAACd,WAAW,EAAEn5Q,GAAG,IAAI;QACxDk6Q,WAAW,GAAGl6Q,GAAG,CAACv/C,GAAG,CAAC05T,WAAW,IAAI;UACjC,MAAMC,cAAc,GAAG;YACnB71M,UAAU,EAAE41M,WAAW,CAACV,YAAY;YACpC7tG,QAAQ,EAAEuuG,WAAW,CAACvyN,EAAE;YACxB8xN,SAAS,EAAES,WAAW,CAAC1C,kBAAkB;YACzC50N,SAAS,EAAEs3N,WAAW,CAACR,UAAU;YACjC72N,QAAQ,EAAEq3N,WAAW,CAACj4N,SAAS;YAC/B6lB,WAAW,EAAEoyM,WAAW,CAACt9J,YAAY;YACrCnnD,WAAW,EAAEykN,WAAW,CAACP,YAAY;YACrC5qS,OAAO,EAAEmrS,WAAW,CAACN,QAAQ;YAC7B9pS,SAAS,EAAEoqS,WAAW,CAACj+J,UAAU;YACjC49J,UAAU,EAAEK,WAAW,CAAC9iG;UAC5B,CAAC;UACD+hG,SAAS,CAACt0T,IAAI,CAACs1T,cAAc,CAAC;UAC9B,OAAOA,cAAc;QACzB,CAAC,CAAC;QACFhB,SAAS,CAACniU,OAAO,CAACm0F,EAAE,IAAI;UACpB,IAAIA,EAAE,CAACsuO,SAAS,KAAK,EAAE,EAAE;YAAC;YACtB;YACA,IAAIn9Q,UAAU,GAAG6uC,EAAE,CAACwgI,QAAQ;YAC5B,IAAIpsN,IAAI,GAAG,GAAG4rF,EAAE,CAAC0X,QAAQ,KAAK1X,EAAE,CAACyX,SAAS,EAAE;YAC5C,IAAI,CAAC88M,MAAM,CAACv0N,EAAE,CAACsuO,SAAS,CAAC,EAAE;cACvB/Z,MAAM,CAACv0N,EAAE,CAACsuO,SAAS,CAAC,GAAG;gBAAE,CAACn9Q,UAAU,GAAG/8C;cAAK,CAAC;YACjD;YACAmgT,MAAM,CAACv0N,EAAE,CAACsuO,SAAS,CAAC,CAACn9Q,UAAU,CAAC,GAAG/8C,IAAI;UAC3C;QACJ,CAAC,CAAC;MACN,CAAC,CAAC;IACN;EACJ;EAEA,SAASw6T,YAAYA,CAAA,EAAG;IACpBd,aAAa,CAACjiU,OAAO,CAACm0F,EAAE,IAAI;MACxB,IAAIA,EAAE,CAACsuO,SAAS,KAAK,EAAE,IAAIL,QAAQ,CAACn5S,OAAO,CAACkrE,EAAE,CAACsuO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;QAC9DL,QAAQ,CAACv0T,IAAI,CAACsmF,EAAE,CAACsuO,SAAS,CAAC;MAC/B;IACJ,CAAC,CAAC;IACF,IAAIL,QAAQ,CAACriU,MAAM,GAAG,CAAC,EAAE;MACrB,OAAO,IAAI;IACf,CAAC,MAAM;MACH,OAAO,KAAK;IAChB;EACJ;EAEA,SAASqjU,sBAAsBA,CAAA,EAAG;IAC9B,MAAMzpK,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC;IAC3D,IAAI,CAACi0J,MAAM,EAAE;IACb,MAAMyiK,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IACxD;IACA,IAAIu/T,aAAa,CAACliU,MAAM,KAAK,CAAC,EAAE;MAC5Bq8T,UAAU,CAACx8T,SAAS,GAAG;AACnC,2DAA2D21N,QAAQ;AACnE;AACA,SAAS;MACG;IACJ;IAEA,MAAM7rH,YAAY,GAAG;MACjBjzF,KAAK,EAAE,IAAI;MACXI,cAAc,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;MAC3EhB,OAAO,EAAE;IACb,CAAC;IACD,MAAMwtT,aAAa,GAAG1tT,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAE/C;IACA,MAAMzwF,OAAO,GAAGoqT,aAAa,CAACv6T,gBAAgB,CAAC,aAAa,CAAC;IAC7DmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;;IAE9C04T,UAAU,CAACx8T,SAAS,GAAG,EAAE;IACzBw8T,UAAU,CAACl8T,WAAW,CAACmjU,aAAa,CAAC;;IAErC;IACA1tT,KAAK,CAACqD,iBAAiB,CAACqqT,aAAa,CAAC;IAEtC,MAAMpzN,SAAS,GAAGgyN,aAAa,CAACz4T,GAAG,CAACmiG,QAAQ,IAAI;MAC5C,MAAMpjG,IAAI,GAAG,GAAGojG,QAAQ,CAACE,QAAQ,KAAKF,QAAQ,CAACC,SAAS,EAAE;MAC1D;;MAEA,MAAM0hB,UAAU,GAAG3hB,QAAQ,CAAC2hB,UAAU;MACtC,MAAMwD,WAAW,GAAGnlB,QAAQ,CAACmlB,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACtD,MAAM66F,WAAW,GAAG,GAAG9S,QAAQ,CAAC8S,WAAW,EAAE;MAC7C,MAAM6kN,YAAY,GAAG33N,QAAQ,CAAC7yE,SAAS,CAAClV,KAAK,CAAC,GAAG,CAAC;MAClD,MAAMkV,SAAS,GAAGwqS,YAAY,CAACt0T,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACwc,IAAI,CAAC,GAAG,CAAC;MACrD,MAAM+3S,aAAa,GAAGpwS,IAAI,CAAC8E,mBAAmB,CAACa,SAAS,CAAC;MACzD,MAAM0qS,UAAU,GAAG73N,QAAQ,CAAC5zE,OAAO,CAACnU,KAAK,CAAC,GAAG,CAAC;MAC9C,MAAMmU,OAAO,GAAGyrS,UAAU,CAACx0T,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACwc,IAAI,CAAC,GAAG,CAAC;MACjD,MAAMi4S,WAAW,GAAGtwS,IAAI,CAAC8E,mBAAmB,CAACF,OAAO,CAAC;MAErD,MAAM2rS,UAAU,GAAG/3N,QAAQ,CAACk3N,UAAU,CAACj/S,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAEpD,OAAO;QACH7L,MAAM,EAAE,CAACxP,IAAI,EAAEuoH,WAAW,EAAErS,WAAW,EAAE8kN,aAAa,EAAEE,WAAW,EAAEC,UAAU,CAAC;QAChFzgU,EAAE,EAAE0oG,QAAQ,CAAC2hB,UAAU;QACvB11G,OAAO,EAAEA,CAAA,KAAM;UACXjG,GAAG,CAACC,iBAAiB,CAAC,CAAC;UACvBw6H,aAAa,CAACO,eAAe,CAACrf,UAAU,EAAE,UAAU3iB,OAAO,EAAE;YACzDsL,wBAAwB,CAAC,WAAW,CAAC;YACrCp3F,IAAI,CAAClc,IAAI,CAAC,QAAQ,EAAEgoG,OAAO,EAAE+9M,MAAM,CAAC;UACxC,CAAC,CAAC;QACN;MACJ,CAAC;IACL,CAAC,CAAC;IACF/yS,KAAK,CAAC9V,QAAQ,CAACwjU,aAAa,EAAEpzN,SAAS,CAAC;;IAExC;EACJ;;EAEA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;;EAEA;EACA;EACA;EACA;EACA;;EAEA,SAAS8xN,sBAAsBA,CAAA,EAAG;IAC9BzwT,cAAc,CAACwoJ,YAAY,GAAG;MAC1By7D,QAAQ,EAAE;IACd,CAAC;IACDt7D,kBAAkB,CAAC+nK,sBAAsB,CAAC,CAAC,EAAE/0S,IAAI,CAACC,SAAS,CAAC5b,cAAc,CAACwoJ,YAAY,CAAC,EAAExoJ,cAAc,CAACmkJ,QAAQ,CAAC;EACtH;EAEA,SAASkuK,aAAaA,CAAA,EAAG;IACrBpuG,QAAQ,GAAGjkN,cAAc,CAACwoJ,YAAY,CAACy7D,QAAQ;EAEnD;EAEA,SAAS5yN,IAAIA,CAAA,EAAG;IACZ2O,cAAc,GAAG+iD,SAAS,CAACqhG,iBAAiB,CAAC,GAAG,CAAC;IACjD,IAAIpkJ,cAAc,CAACwoJ,YAAY,KAAK,IAAI,EAAEioK,sBAAsB,CAAC,CAAC;IAClE4B,aAAa,CAAC,CAAC;IACf;IACAtB,eAAe,CAACe,sBAAsB,CAAC;EAE3C;EAEA,OAAO;IACHzgU;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AC3MJ,MAAM2/T,qBAAqB,GAAI,YAAW;EAExC,SAASC,oBAAoBA,CAAChtG,QAAQ,EAAEjxN,QAAQ,EAAE;IAClDuM,CAAC,CAAC2+C,IAAI,CAAC;MACNhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,iCAAiC;MACpJxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,iBAAiB,GAAGo8K,QAAQ,GAAG,IAAI;MAC1E9lK,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC;QACAvrD,QAAQ,CAACsrD,QAAQ,CAACg0Q,mCAAmC,CAAC;MACvD,CAAC;MACDpyT,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnC;MAAA;IAEF,CAAC,CAAC;EACF;EAEA,SAASwxT,iBAAiBA,CAACa,YAAY,EAAEv/T,QAAQ,EAAE;IACpDuM,CAAC,CAAC2+C,IAAI,CAAC;MACNhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,0CAA0C;MAC7JxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,qBAAqB,GAAG0qR,YAAY,GAAG,IAAI;MAClFp0Q,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC;QACAvrD,QAAQ,CAACsrD,QAAQ,CAACk0Q,4CAA4C,CAAC;MAChE,CAAC;MACDtyT,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnC;MAAA;IAEF,CAAC,CAAC;EACH;EAGE,OAAO;IACN+wT,oBAAoB;IACpBS;EACD,CAAC;AACH,CAAC,CAAE,CAAC;ACzCJ;AACA,MAAMzlM,iBAAiB,GAAI,YAAY;EACnC;EACA,IAAIwmM,QAAQ,EAAEzyT,cAAc,EAAE8lQ,eAAe;EAC7C,IAAInoI,YAAY;EAChB,IAAI0qB,MAAM;EACV,IAAIyiK,UAAU;EACd,IAAI4H,gBAAgB;EACpB,IAAIC,oBAAoB;EACxB;EACA,IAAIC,iBAAiB,EAAEC,uBAAuB,EAAEC,uBAAuB;EACvE;EACA,IAAIC,2BAA2B;EAE/B,SAASC,mBAAmBA,CAAA,EAAG;IAC3B,MAAMC,SAAS,GAAG;MACd34F,EAAE,EAAE,EAAE;MACN44F,EAAE,EAAE,EAAE;MACNC,GAAG,EAAE,EAAE;MACPC,OAAO,EAAE,EAAE;MACX7xT,IAAI,EAAE;IACV,CAAC;IACD,MAAM8xT,eAAe,GAAGnyT,KAAK,CAAC1P,KAAK,CAAC;MAChCG,EAAE,EAAE,2BAA2B;MAC/BwP,MAAM,EAAE;IACZ,CAAC,CAAC;IAEF,MAAMmyT,OAAO,GAAGt+T,KAAK,CAACxD,KAAK,CAAC;MACxBU,IAAI,EAAE,OAAO;MACboB,KAAK,EAAE,qBAAqB;MAC5BN,QAAQ,EAAEU,CAAC,IAAI;QACXu/T,SAAS,CAAC34F,EAAE,GAAG5mO,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACjC;IACJ,CAAC,CAAC;IACF,MAAMwgU,OAAO,GAAGv+T,KAAK,CAACxD,KAAK,CAAC;MACxBU,IAAI,EAAE,OAAO;MACboB,KAAK,EAAE,qBAAqB;MAC5BN,QAAQ,EAAEU,CAAC,IAAI;QACXu/T,SAAS,CAACC,EAAE,GAAGx/T,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACjC;IACJ,CAAC,CAAC;IACF,MAAMygU,QAAQ,GAAGx+T,KAAK,CAACxD,KAAK,CAAC;MACzBU,IAAI,EAAE,OAAO;MACboB,KAAK,EAAE,sBAAsB;MAC7BN,QAAQ,EAAEU,CAAC,IAAI;QACXu/T,SAAS,CAACE,GAAG,GAAGz/T,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MAClC;IACJ,CAAC,CAAC;IACF,MAAMkoM,YAAY,GAAGjmM,KAAK,CAACxD,KAAK,CAAC;MAC7BU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,gBAAgB;MACvBN,QAAQ,EAAEU,CAAC,IAAI;QACXu/T,SAAS,CAACG,OAAO,GAAG1/T,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACtC;IACJ,CAAC,CAAC;IACF,MAAMmoM,SAAS,GAAGlmM,KAAK,CAACxD,KAAK,CAAC;MAC1BU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,aAAa;MACpBN,QAAQ,EAAEU,CAAC,IAAI;QACXu/T,SAAS,CAAC1xT,IAAI,GAAG7N,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACnC;IACJ,CAAC,CAAC;IAEF,MAAM2qC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C,MAAMswD,KAAK,GAAGzwD,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACklU,eAAe,CAAC;MAC/B;IACJ,CAAC,CAAC;IACF,MAAMxzR,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACklU,eAAe,CAAC;QAC3BI,eAAe,CAAC,CAAC;MACrB;IACJ,CAAC,CAAC;IACF/1R,OAAO,CAAC9uC,WAAW,CAACozD,KAAK,CAAC;IAC1BtkB,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAE9BwzR,eAAe,CAACzkU,WAAW,CAAC0kU,OAAO,CAAC;IACpCD,eAAe,CAACzkU,WAAW,CAAC2kU,OAAO,CAAC;IACpCF,eAAe,CAACzkU,WAAW,CAAC4kU,QAAQ,CAAC;IACrCH,eAAe,CAACzkU,WAAW,CAACqsM,YAAY,CAAC;IACzCo4H,eAAe,CAACzkU,WAAW,CAACssM,SAAS,CAAC;IACtCm4H,eAAe,CAACzkU,WAAW,CAAC8uC,OAAO,CAAC;IAEpCx8B,KAAK,CAAC9S,IAAI,CAACilU,eAAe,CAAC;EAC/B;EACA,SAASK,uBAAuBA,CAAA,EAAG;IAC/B,MAAMC,iBAAiB,GAAGzyT,KAAK,CAAC1P,KAAK,CAAC;MAClCG,EAAE,EAAE;IACR,CAAC,CAAC;IACF,MAAMqQ,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CsQ,OAAO,CAACrM,SAAS,GACb,+GAA+G;IACnH,MAAMqsD,KAAK,GAAGzwD,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACwlU,iBAAiB,CAAC;MACjC;IACJ,CAAC,CAAC;IACFA,iBAAiB,CAAC/kU,WAAW,CAACoT,OAAO,CAAC;IACtC2xT,iBAAiB,CAAC/kU,WAAW,CAACozD,KAAK,CAAC;EACxC;EACA,SAASyxQ,eAAeA,CAAA,EAAG;IACvBG,eAAe,GAAG1yT,KAAK,CAAC1P,KAAK,CAAC;MAC1BG,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,MAAMkiU,eAAe,GAAGtiU,MAAM,CAACC,KAAK,CAAC;MACjCM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACylU,eAAe,CAAC;QAC3BF,uBAAuB,CAAC,CAAC;MAC7B;IACJ,CAAC,CAAC;IACF,MAAMI,aAAa,GAAGviU,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,aAAa;MACnBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACylU,eAAe,CAAC;QAC3BZ,mBAAmB,CAAC,CAAC;MACzB;IACJ,CAAC,CAAC;IAEFY,eAAe,CAAChlU,WAAW,CAACilU,eAAe,CAAC;IAC5CD,eAAe,CAAChlU,WAAW,CAACklU,aAAa,CAAC;IAE1C5yT,KAAK,CAAC9S,IAAI,CAACwlU,eAAe,CAAC;EAC/B;EAEA,SAASG,oBAAoBA,CAACtB,QAAQ,EAAE;IACpC,IAAIA,QAAQ,IAAIA,QAAQ,CAAChkU,MAAM,KAAK,CAAC,EAAE;MACnCikU,gBAAgB,GAAGvhU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAChDghU,gBAAgB,CAACpkU,SAAS,GAAG;AACzC,sGAAsGmkU,QAAQ,CAAChkU,MAAM;AACrH,aAAa;IACL;EACJ;EAEA,SAASulU,sBAAsBA,CAAA,EAAG;IAC9BD,oBAAoB,CAACtB,QAAQ,CAAC;IAE9B,MAAMpqK,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC;IAC3D,IAAI,CAACi0J,MAAM,EAAE;IAEb,MAAMyiK,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IACxD,IAAIqhU,QAAQ,CAAChkU,MAAM,KAAK,CAAC,EAAE;MACvBq8T,UAAU,CAACx8T,SAAS,GAAG,+DAA+D;MACtF;IACJ;IAEA,MAAM8pG,YAAY,GAAG;MACjBjzF,KAAK,EAAE,IAAI;MACXI,cAAc,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,WAAW,CAAC;MAC5DhB,OAAO,EAAE;IACb,CAAC;IACD,MAAM0vT,aAAa,GAAG5vT,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAE/C;IACA,MAAMzwF,OAAO,GAAGssT,aAAa,CAACz8T,gBAAgB,CAAC,aAAa,CAAC;IAC7DmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;;IAE9C04T,UAAU,CAACx8T,SAAS,GAAG,EAAE;IACzBw8T,UAAU,CAACl8T,WAAW,CAAC8jU,gBAAgB,CAAC;IACxC5H,UAAU,CAACl8T,WAAW,CAACqlU,aAAa,CAAC;;IAErC;IACA5vT,KAAK,CAACqD,iBAAiB,CAACusT,aAAa,CAAC;IAEtC,IAAIC,iBAAiB,GAAG/iU,QAAQ,CAAC0N,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACzEq1T,iBAAiB,CAAClmU,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAEpD,MAAMywG,SAAS,GAAG8zN,QAAQ,CAACv6T,GAAG,CAACmiG,QAAQ,IAAI;MACvC,MAAMpjG,IAAI,GAAG,GAAGojG,QAAQ,CAACE,QAAQ,KAAKF,QAAQ,CAACC,SAAS,EAAE;MAC1D,MAAM65N,SAAS,GAAG95N,QAAQ,CAAC+5N,cAAc;MACzC,MAAM7vS,UAAU,GAAG81E,QAAQ,CAACg6N,YAAY,CAAC/hT,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACtD,MAAM+hT,YAAY,GAAG,IAAInsT,IAAI,CAACqc,UAAU,CAAC;MACzC,MAAM+vS,QAAQ,GACVvB,2BAA2B,GAAGsB,YAAY,GACpCh6N,QAAQ,CAACg6N,YAAY,CAAC/hT,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAC7C,gCACEiS,UAAU,KAAK,EAAE,GAAG,qBAAqB,GAAGA,UAAU,SACvC;MAEjB,OAAO;QACH9d,MAAM,EAAE,CAACxP,IAAI,EAAEk9T,SAAS,EAAEG,QAAQ,CAAC;QACnC3iU,EAAE,EAAE0oG,QAAQ,CAAC1oG,EAAE;QACf2U,OAAO,EAAEA,CAAA,KAAM;UACXk0P,uBAAuB,CAACngK,QAAQ,CAAC1oG,EAAE,CAAC;QACxC;MACJ,CAAC;IACL,CAAC,CAAC;IAEF0S,KAAK,CAAC9V,QAAQ,CAAC0lU,aAAa,EAAEt1N,SAAS,CAAC;EAC5C;EAEA,SAAS64D,QAAQA,CAACxjH,UAAU,EAAE;IAC1B2+Q,oBAAoB,GAAG3+Q,UAAU;IACjC;IACA2pF,YAAY,GAAG,GAAGmoI,eAAe,CAACp1I,QAAQ,KAAKo1I,eAAe,CAACn1I,SAAS,EAAE;IAC1E,MAAM3vH,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACtB2P,MAAM,EAAEw8H,YAAY;MACpBhsI,EAAE,EAAE;IACR,CAAC,CAAC;IACF;IACA,MAAM4iU,YAAY,GAAGpjU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClD;IACA,MAAM+/G,QAAQ,GAAGq0J,eAAe,CAAC0uD,UAAU;IAC3C,MAAM7iN,QAAQ,GAAGm0J,eAAe,CAAC2uD,UAAU;IAC3C,MAAM5iN,IAAI,GAAGi0J,eAAe,CAAC4uD,QAAQ;IACrC,MAAM/1R,KAAK,GAAGmnO,eAAe,CAAC6uD,SAAS;IACvC,IAAInqI,GAAG,GAAGs7E,eAAe,CAAC8uD,WAAW;IACrCpqI,GAAG,GAAGA,GAAG,GAAGA,GAAG,CAAC5wK,IAAI,CAAC,CAAC,GAAG4wK,GAAG;IAC5B+pI,YAAY,CAACjmU,SAAS,GAAG;AACjC;AACA,4BAA4BmjH,QAAQ;AACpC,4BAA4BE,QAAQ;AACpC,sBAAsBE,IAAI,KAAKlzE,KAAK,IAAI6rJ,GAAG,MAAM;IACzCxpL,KAAK,CAACpS,WAAW,CAAC2lU,YAAY,CAAC;;IAE/B;IACA,MAAMM,gBAAgB,GAAG1jU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtD;IACA,MAAMojU,gBAAgB,GAAGhvD,eAAe,CAACivD,YAAY,CAACziT,KAAK,CAAC,GAAG,CAAC;IAChE,MAAM0iT,kBAAkB,GAAGlvD,eAAe,CAACmvD,cAAc,CAAC3iT,KAAK,CAAC,GAAG,CAAC;IACpE,MAAM4iT,YAAY,GAAGrzS,IAAI,CAACwY,iBAAiB,CAACy6R,gBAAgB,CAAC,CAAC,CAAC,CAACl7S,IAAI,CAAC,CAAC,CAAC;IACvE,MAAMu7S,YAAY,GAAGtzS,IAAI,CAACwY,iBAAiB,CAAC26R,kBAAkB,CAAC,CAAC,CAAC,CAACp7S,IAAI,CAAC,CAAC,CAAC;IACzE,MAAMw7S,UAAU,GAAGN,gBAAgB,CAACrmU,MAAM,GAAG,CAAC,GAAGqmU,gBAAgB,CAAC,CAAC,CAAC,GAAG,EAAE;IACzE,MAAMO,UAAU,GAAGL,kBAAkB,CAACvmU,MAAM,GAAG,CAAC,GAAGumU,kBAAkB,CAAC,CAAC,CAAC,GAAG,EAAE;IAC7E,MAAMM,MAAM,GAAG,GAAGJ,YAAY,IAAIE,UAAU,EAAE;IAC9C,MAAMG,MAAM,GAAG,GAAGJ,YAAY,IAAIE,UAAU,EAAE;IAC9CR,gBAAgB,CAACvmU,SAAS,GAAG;AACrC;AACA,sDAAsDgnU,MAAM,IAAIA,MAAM;AACtE,0DAA0DC,MAAM,IAAIA,MAAM,UAAU;IAC5Ev0T,KAAK,CAACpS,WAAW,CAACimU,gBAAgB,CAAC;;IAEnC;IACA,MAAMjc,UAAU,GAAGrnT,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC+M,CAAC,CAACC,OAAO,CAAC4jC,eAAe,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC;MACpFpwC,QAAQ,EAAEA,CAAA,KAAM;QACZ;QACAkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjBX,GAAG,CAACC,iBAAiB,CAAC,CAAC;QACvB6jG,+BAA+B,CAAC,eAAe,CAAC;QAChDtiF,IAAI,CAACod,uBAAuB,CAAC,WAAW,CAAC;QACzC1/B,CAAC,CAAC6kG,SAAS,GAAG,WAAW;QACzBj1G,YAAY,CAACH,OAAO,CAACE,YAAY,GAAG,WAAW;QAC/CqQ,CAAC,CAAC6kG,SAAS,GAAG,WAAW;QACzB2X,SAAS,CAAC1qH,IAAI,CAAC,IAAI,CAAC;MACxB;IACJ,CAAC,CAAC;;IAEF;IACA,MAAMmkU,cAAc,GAAGjkU,MAAM,CAACC,KAAK,CAAC;MAChCM,IAAI,EAAE,cAAc;MACpBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjBX,GAAG,CAACC,iBAAiB,CAAC,CAAC;QACvB6jG,+BAA+B,CAAC,oBAAoB,CAAC;QACrDtiF,IAAI,CAACod,uBAAuB,CAAC,WAAW,CAAC;QACzC9vC,YAAY,CAACH,OAAO,CAACE,YAAY,GAAG,WAAW;QAC/CwrI,aAAa,CAACogL,YAAY,CACtB8X,iBAAiB,EACjB5+Q,UAAU,EACV8+Q,uBAAuB,EACvBn1L,YACJ,CAAC;MACL;IACJ,CAAC,CAAC;IAEF,MAAMjgG,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACgqT,UAAU,CAAC;IAC/Bl7Q,OAAO,CAAC9uC,WAAW,CAAC4mU,cAAc,CAAC;IACnCx0T,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAE1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACrB;EAEA,SAASy0T,eAAeA,CAAC9sS,EAAE,EAAE;IACzBmyG,aAAa,CAAC0D,sBAAsB,CAAC/mF,GAAG,IAAI;MACxCg7Q,QAAQ,GAAGh7Q,GAAG,CAACv/C,GAAG,CAACmiG,QAAQ,IAAI;QAC3B,MAAMO,WAAW,GAAG;UAChBjpG,EAAE,EAAE0oG,QAAQ,CAAC1oG,EAAE;UACf2oG,SAAS,EAAED,QAAQ,CAAC8uI,EAAE;UACtB5uI,QAAQ,EAAEF,QAAQ,CAAC+uI,EAAE;UACrBirF,YAAY,EAAEh6N,QAAQ,CAACq7N,kBAAkB;UACzCtB,cAAc,EAAE/5N,QAAQ,CAAC+5N;QAC7B,CAAC;QACD,OAAOx5N,WAAW;MACtB,CAAC,CAAC;MACFjyE,EAAE,CAAC,CAAC;IACR,CAAC,CAAC;EACN;EAEA,SAAS6xO,uBAAuBA,CAACxmN,UAAU,EAAE;IACzCutG,UAAU,CAACi5G,uBAAuB,CAACxmN,UAAU,EAAEyD,GAAG,IAAI;MAClDquN,eAAe,GAAGruN,GAAG,CAAC,CAAC,CAAC;MACxB+/G,QAAQ,CAACxjH,UAAU,CAAC;IACxB,CAAC,CAAC;EACN;EAEA,SAASk4E,8BAA8BA,CAAA,EAAG;IACtC,OAAOymM,oBAAoB;EAC/B;EAEA,SAASlC,sBAAsBA,CAAA,EAAG;IAC9BzwT,cAAc,CAACwoJ,YAAY,GAAG;MAC1BoqK,iBAAiB,EAAE,EAAE;MACrBC,uBAAuB,EAAE,EAAE;MAC3BC,uBAAuB,EAAE;IAC7B,CAAC;IACDnqK,kBAAkB,CAAC+nK,sBAAsB,CACrC,CAAC,EACD/0S,IAAI,CAACC,SAAS,CAAC5b,cAAc,CAACwoJ,YAAY,CAAC,EAC3CxoJ,cAAc,CAACmkJ,QACnB,CAAC;EACL;EAEA,SAASwxK,eAAeA,CAAC1xG,QAAQ,EAAE;IAC/B,MAAMn1D,YAAY,GAAG,IAAI5mJ,IAAI,CAAC,CAAC;IAC/B4mJ,YAAY,CAACx6I,OAAO,CAACw6I,YAAY,CAACz6I,OAAO,CAAC,CAAC,GAAG4vM,QAAQ,CAAC;IACvD,OAAOn1D,YAAY;EACvB;EAEA,SAASujK,aAAaA,CAAA,EAAG;IACrBO,iBAAiB,GAAG5yT,cAAc,CAACwoJ,YAAY,CAACoqK,iBAAiB;IACjEC,uBAAuB,GAAG7yT,cAAc,CAACwoJ,YAAY,CAACqqK,uBAAuB;IAC7EC,uBAAuB,GACnB9yT,cAAc,CAACwoJ,YAAY,CAACsqK,uBAAuB,KAAK,GAAG,GAAG,KAAK,GAAG,IAAI;EAClF;EAEA,SAASzhU,IAAIA,CAAA,EAAG;IACZ2O,cAAc,GAAG+iD,SAAS,CAACqhG,iBAAiB,CAAC,GAAG,CAAC;IACjD,IAAIpkJ,cAAc,CAACwoJ,YAAY,KAAK,IAAI,EAAEioK,sBAAsB,CAAC,CAAC;IAClE4B,aAAa,CAAC,CAAC;IACfU,2BAA2B,GAAG4C,eAAe,CAAC9C,uBAAuB,CAAC;IACtE4C,eAAe,CAACzB,sBAAsB,CAAC;IAEvC3rK,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC;IACrD02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAClD2xD,SAAS,CAAC6gG,eAAe,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;IAChEmwK,oBAAoB,CAAC,CAAC;EAC1B;EAEA,OAAO;IACH1iU,IAAI;IACJ66H;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AChXJ;;AAEA,MAAM0pM,qBAAqB,GAAI,YAAW;EACxC,SAAS/G,uBAAuBA,CAAA,EAAe;IAAA,IAAd5qG,QAAQ,GAAAvrN,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,CAAC;IAC3CxE,IAAI,GAAG;MACL6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtBo8K,QAAQ,EAAEA;IACZ,CAAC;IACD,OAAO1kN,CAAC,CAAC2+C,IAAI,CAAC;MACZhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,oCAAoC;MAChExoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EAEA,OAAO;IACLwwQ;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACxBJ,MAAMvoK,oBAAoB,GAAI,YAAW;EAEvC,IAAI+B,MAAM;EACV,IAAIyiK,UAAU;EACd,IAAIE,eAAe;EACnB,IAAIphN,eAAe;EACnB,IAAIvO,WAAW;EACf;EACA,IAAIw6N,oCAAoC;EACxC,IAAIC,gBAAgB;EACpB;EACA,IAAIC,cAAc;EAClB,IAAIC,oBAAoB;EACxB,IAAIC,mBAAmB;EACvB,IAAIC,gBAAgB;EAGpB,SAASjyK,gBAAgBA,CAAA,EAAG;IAC1B,IAAIgnK,YAAY,GAAG5iK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC3D,IAAI65T,YAAY,EAAE;IAClB5vN,WAAW,GAAGt4C,SAAS,CAACkhG,gBAAgB,CAAC,CAAC;IAE1C+mK,eAAe,GAAGz5T,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IACF03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IACF2jU,oCAAoC,GAAG1iU,QAAQ,CAAC3B,KAAK,CAAC;MACpD4B,UAAU,EAAE,uBAAuB;MACnCE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,IAAIyrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhCwvC,OAAO,CAAC9uC,WAAW,CAACo8T,eAAe,CAAC;IACpCttR,OAAO,CAAC9uC,WAAW,CAACg7G,eAAe,CAAC;IACpCvO,WAAW,CAACzsG,WAAW,CAACinU,oCAAoC,CAAC;IAC7Dx6N,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAChC2qH,MAAM,CAAC1nJ,YAAY,CAAC06F,WAAW,EAAEyvN,UAAU,CAAC;EAG9C;EAEA,SAASvkL,gBAAgBA,CAAA,EAAG;IAC1B,IAAI6Y,eAAe,GAAGv9H,IAAI,CAAC0c,EAAE,CAACC,UAAU,CAAC,mCAAmC,CAAC;IAC7E,IAAI4gH,eAAe,KAAK3pJ,SAAS,EAAE;MACjC2pJ,eAAe,GAAG,GAAG;MACrBv9H,IAAI,CAAC0c,EAAE,CAACO,UAAU,CAAC,mCAAmC,EAAE,GAAG,CAAC;IAC9D;IACAo3R,gBAAgB,GAAG92K,eAAe;IAElC,IAAI+2K,sBAAsB,GAAI,YAAY;MACxC,IAAI/2K,eAAe,KAAK,GAAG,EAAE,OAAO,IAAI;MACxC,IAAIqmC,MAAM,GAAG,KAAK;MAClBswI,cAAc,CAACrnU,OAAO,CAACm/H,GAAG,IAAI;QAC5B,IAAIA,GAAG,CAACprE,UAAU,IAAIyzQ,gBAAgB,EAAE;UACtCzwI,MAAM,GAAG,IAAI;UACb;QACF;MACF,CAAC,CAAC;MACF,OAAOA,MAAM;IACf,CAAC,CAAE,CAAC;IAEJ,IAAI,CAAC0wI,sBAAsB,EAAE;MAC3B/2K,eAAe,GAAG,GAAG;MACrB82K,gBAAgB,GAAG,GAAG;MACtBr0S,IAAI,CAAC0c,EAAE,CAACO,UAAU,CAAC,mCAAmC,EAAE,GAAG,CAAC;IAC9D;IAEA,IAAI5qC,IAAI,GAAG6hU,cAAc,CAAC79T,GAAG,CAAC21H,GAAG,IAAI;MACnC,OAAO;QACL96H,KAAK,EAAE86H,GAAG,CAACprE,UAAU;QACrB3wD,IAAI,EAAE+7H,GAAG,CAACnrE;MACZ,CAAC;IACH,CAAC,CAAC;IAEFxuD,IAAI,CAACsU,IAAI,CAAC,UAASjU,CAAC,EAAEuU,CAAC,EAAE;MAAI;MAC3B,IAAGvU,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE;QAAC,OAAO,CAAC,CAAC;MAAE;MAChC,IAAGyC,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE;QAAC,OAAO,CAAC;MAAE;MAC7B,OAAO,CAAC;IACZ,CAAC,CAAC;IAEFoC,IAAI,CAAC49D,OAAO,CAAC;MAACngE,EAAE,EAAE,GAAG;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAK,CAAC,CAAC,EAAC;IACjDikU,cAAc,CAACjkQ,OAAO,CAAC;MAACrP,UAAU,EAAE,GAAG;MAAEC,YAAY,EAAE;IAAK,CAAC,CAAC,EAAC;;IAE/DvvD,QAAQ,CAAC5E,QAAQ,CAACsnU,oCAAoC,EAAE3hU,IAAI,EAAEkrJ,eAAe,CAAC;EAChF;EAEA,SAAS8rK,UAAUA,CAAA,EAAG;IACpBF,eAAe,CAAC15T,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAC5C,IAAI66N,gBAAgB,KAAKD,mBAAmB,IAAI,CAACA,mBAAmB,EAAE;MACtEC,gBAAgB,GAAGD,mBAAmB;MACtCp0S,IAAI,CAAC0c,EAAE,CAACO,UAAU,CAAC,mCAAmC,EAAEo3R,gBAAgB,CAAC;MACzEE,gBAAgB,CAAC,CAAC;IACpB,CAAC,CAAC;IACFxsN,eAAe,CAACt4G,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;IAC9C,CAAC,CAAC;IACFw6N,oCAAoC,CAACvkU,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACvEmnU,mBAAmB,GAAGnnU,KAAK,CAACC,MAAM,CAACD,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACb,KAAK;IACtE,CAAC,CAAC;EACJ;EAEA,SAASqjU,gBAAgBA,CAAA,EAAG;IAC1B7yT,kBAAkB,CAAClS,IAAI,CAAC,CAAC;IACzBykU,gBAAgB,CAACxnU,SAAS,GAAG,EAAE;IAC/BiV,kBAAkB,CAACJ,OAAO,CAAC/U,IAAI,CAAC0nU,gBAAgB,EAAE,SAAS,CAAC;IAC5Dv9D,iBAAiB,CAAC89D,0DAA0D,CAACH,gBAAgB,EAAEz+Q,GAAG,IAAI;MACpGl0C,kBAAkB,CAACJ,OAAO,CAAChV,IAAI,CAAC2nU,gBAAgB,CAAC;MACjDQ,gCAAgC,CAAC7+Q,GAAG,CAAC;IACvC,CAAC,CAAC;EACJ;EAEA,SAAS6+Q,gCAAgCA,CAAC7gD,eAAe,EAAE;IACzDw2C,iBAAiB,CAAC,CAAC;IACnB;IACA,IAAIx2C,eAAe,CAAChnR,MAAM,KAAK,CAAC,EAAE;MAChCqnU,gBAAgB,CAACxnU,SAAS,GAAG,2BAA2B;MACxD;IACF;IACAmnR,eAAe,CAAC/mR,OAAO,CAAC6nU,QAAQ,IAAI;MAClC,IAAIr+S,IAAI,GAAGq+S,QAAQ,CAACnU,WAAW,CAAC9vS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC7CwjT,gBAAgB,CAACxnU,SAAS,IAAI;AACpC,oCAAoCioU,QAAQ,CAACt/T,IAAI,YAAYs/T,QAAQ,CAACC,SAAS,MAAMt+S,IAAI;AACzF,OAAO;IACH,CAAC,CAAC;EACJ;EAEA,SAAS+zS,iBAAiBA,CAAA,EAAG;IAC3B,IAAIruN,UAAU,GAAGyqD,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAE1D,IAAI,CAACwsG,UAAU,EAAE;MACfA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAC5C48T,UAAU,CAACnqT,YAAY,CAACi9F,UAAU,EAAEk4N,gBAAgB,CAAC;IACvD;IACAl4N,UAAU,CAACtvG,SAAS,GAAG;AAC3B;AACA,gCAAgC0nU,oBAAoB,CAACE,gBAAgB,CAAC,CAACxzQ,YAAY;AACnF;AACA,KAAK;EACH;EAEA,SAAS+zQ,sBAAsBA,CAAA,EAAG;IAChCT,oBAAoB,GAAG,CAAC,CAAC;IACzBD,cAAc,CAACrnU,OAAO,CAACm/H,GAAG,IAAI;MAC5B5xF,GAAG,GAAG;QACJymB,YAAY,EAAEmrE,GAAG,CAACnrE;MACpB,CAAC;MACDszQ,oBAAoB,CAACnoM,GAAG,CAACprE,UAAU,CAAC,GAAGxmB,GAAG;IAC5C,CAAC,CAAC;EACJ;EAEA,SAAS+lG,OAAOA,CAAA,EAAG;IACjB;IACA;IACA;IACA;IACA;;IAGA,IAAI00L,YAAY,GAAG,IAAIj3Q,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;MAClD01P,iBAAiB,CAACo+D,wCAAwC,CAACl/Q,GAAG,IAAI;QAChEs+Q,cAAc,GAAGp6S,IAAI,CAACxT,KAAK,CAACsvC,GAAG,CAAC;QAChCiI,OAAO,CAAC,SAAS,CAAC;MACpB,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFD,OAAO,CAACmrF,GAAG,CAAC,CAAC8rL,YAAY,CAAC,CAAC,CAACz2M,IAAI,CAAC,MAAM;MACrCsmB,gBAAgB,CAAC,CAAC;MAClBkwL,sBAAsB,CAAC,CAAC;MACxBL,gBAAgB,CAAC,CAAC;IACpB,CAAC,CAAC;EACJ;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,SAAS/kU,IAAIA,CAAA,EAAG;IACd0xD,SAAS,CAACkgG,kBAAkB,CAAC,6BAA6B,EAAE,2BAA2B,CAAC;IAExFoF,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,6BAA6B,CAAC;IAC/D02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAClD0kU,gBAAgB,GAAG3kU,QAAQ,CAACiD,cAAc,CAAC,kBAAkB,CAAC;IAC9D4tI,OAAO,CAAC,CAAC;IACTiiB,gBAAgB,CAAC,CAAC;IAClBinK,UAAU,CAAC,CAAC;EACd;EACA,OAAO;IACL75T;EACF,CAAC;AAEH,CAAC,CAAE,CAAC;ACxNJ,IAAIqyJ,gBAAgB,GAAI,YAAY;EAChC,IAAIkzK,WAAW;EACf,IAAIC,cAAc;EAClB,IAAIj2C,KAAK,GAAG,EAAE;EACd,IAAIk2C,QAAQ,GAAG,EAAE;;EAEjB;EACA;EACA,IAAIC,eAAe;EACnB,IAAIn2H,gBAAgB;EACpB,IAAIo2H,gBAAgB;EACpB,IAAIC,gBAAgB,GAAG,EAAE;EACzB,IAAIx1L,OAAO;EACX,IAAI5hG,SAAS;EACb,IAAIq3R,qBAAqB;EACzB,IAAIC,cAAc;EAClB,IAAIC,cAAc;EAClB,IAAIC,YAAY;EAChB,IAAIC,WAAW;EACf,IAAIC,gBAAgB;EACpB,IAAIC,gBAAgB;EACpB,IAAIC,gBAAgB,GAAG,EAAE;;EAEzB;EACA;EACA,IAAIC,wBAAwB;EAC5B,IAAIC,wBAAwB,GAAG,EAAE;EACjC,IAAIC,mBAAmB;EACvB,IAAIC,SAAS;EACb,IAAIC,gBAAgB;EACpB,IAAIC,WAAW;EACf,IAAIC,QAAQ;EACZ,IAAIC,sBAAsB;EAE1B,SAASC,eAAeA,CAAA,EAAG;IACvB,IAAIC,SAAS,GAAGvB,WAAW,CAACxlU,aAAa,CAAC,kBAAkB,CAAC;IAC7D+mU,SAAS,CAAC7pU,SAAS,GAAG,EAAE;IACxB,IAAIsyR,KAAK,CAACnyR,MAAM,GAAG,CAAC,EAAE;IACtBmyR,KAAK,CAAClyR,OAAO,CAACsiB,CAAC,IAAI;MACf,IAAI6vQ,IAAI,GAAG1vR,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;MACtCmvR,IAAI,CAAC7iQ,IAAI,GAAGhN,CAAC,CAAConT,WAAW;MACzBv3C,IAAI,CAACvyR,SAAS,GAAG0iB,CAAC,CAACqnT,QAAQ;MAC3Bx3C,IAAI,CAACzuR,YAAY,CAAC,QAAQ,EAAE4e,CAAC,CAACsnT,UAAU,CAAC;MACzCH,SAAS,CAACvpU,WAAW,CAACiyR,IAAI,CAAC;MAC3B,IAAI7vQ,CAAC,CAACqnT,QAAQ,CAAC1gT,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;QACxCkpQ,IAAI,CAACvvR,gBAAgB,CAAC,OAAO,EAAEinU,0BAA0B,CAACC,aAAa,CAAC;MAC5E;IACJ,CAAC,CAAC;EACN;EAEA,SAASC,kBAAkBA,CAAA,EAAG;IAC1B,IAAIC,WAAW,GAAG7B,cAAc,CAACzlU,aAAa,CAAC,eAAe,CAAC;IAC/DsnU,WAAW,CAACpqU,SAAS,GAAG,EAAE;IAC1B,IAAIwoU,QAAQ,CAACroU,MAAM,GAAG,CAAC,EAAE;IACzBqoU,QAAQ,CAACpoU,OAAO,CAACihB,CAAC,IAAI;MAClB,IAAI3N,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;MACzCsQ,OAAO,CAAC1T,SAAS,GAAGqhB,CAAC,CAAC+7F,WAAW;MACjCgtN,WAAW,CAAC9pU,WAAW,CAACoT,OAAO,CAAC;IACpC,CAAC,CAAC;EACN;EAEA,SAAS22T,wBAAwBA,CAACt/N,OAAO,EAAE;IACvCA,OAAO,CAAC3qG,OAAO,CAAC8gB,CAAC,IAAI;MACjB,IAAIA,CAAC,CAACk8F,WAAW,KAAK,EAAE,EAAE;QACtBk1K,KAAK,CAACrkR,IAAI,CAACiT,CAAC,CAAC;MACjB,CAAC,MAAM;QACHsnT,QAAQ,CAACv6T,IAAI,CAACiT,CAAC,CAAC;MACpB;IACJ,CAAC,CAAC;EACN;EAEA,SAASm0I,oBAAoBA,CAAA,EAAG;IAC5Bm0K,gBAAgB,GAAG,KAAK;IACxBf,eAAe,GAAG71T,KAAK,CAAC1P,KAAK,CAAC;MAC1BG,EAAE,EAAE,qBAAqB;MACzBa,UAAU,EAAE,qBAAqB;MACjCkP,KAAK,EAAE;IACX,CAAC,CAAC;IAEFk/L,gBAAgB,GAAGztM,QAAQ,CAAC3B,KAAK,CAAC;MAC9B4B,UAAU,EAAE,mBAAmB;MAC/BE,KAAK,EAAE,oBAAoB;MAC3BrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEFilU,qBAAqB,GAAG3lU,MAAM,CAACC,KAAK,CAAC;MACjCM,IAAI,EAAE,uBAAuB;MAC7BG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClB,IAAI8kU,gBAAgB,EAChB52T,KAAK,CAAC9S,IAAI,CAACwpU,mBAAmB,CAAC,CAAC,KAEhC,MAAMgB,uBAAuB,CAAC,CAAC;QAEnCn3L,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACjC2xC,SAAS,CAAC7xC,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvC;IACJ,CAAC,CAAC;IACFgpU,qBAAqB,CAACjlU,KAAK,CAACiS,KAAK,GAAG,MAAM;IAC1C,IAAI6T,KAAK,GAAG8J,IAAI,CAAC8Z,aAAa,CAAC,IAAI,CAAC;IACpC,IAAIk9R,YAAY,GAAGtxQ,MAAM,CAAC3oC,KAAK,CAACiC,OAAO,CAAC9I,KAAK,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY,CAAC;IACrFugT,gBAAgB,GAAGqB,YAAY;IAC/B1B,cAAc,GAAGniU,KAAK,CAACxD,KAAK,CAAC;MACzBG,EAAE,EAAE,gBAAgB;MACpBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,iBAAiB;MACxBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE8lU,YAAY;MACnBjmU,UAAU,EAAE,CACR;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE8uB,IAAI,CAAC8Z,aAAa,CAAC;MAAE,CAAC;IAEnD,CAAC,CAAC;IACF47R,gBAAgB,GAAG11S,IAAI,CAACga,cAAc,CAAC,CAAC;IACxCu7R,cAAc,GAAGpiU,KAAK,CAACxD,KAAK,CAAC;MACzBG,EAAE,EAAE,gBAAgB;MACpBO,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,iBAAiB;MACxBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE8uB,IAAI,CAACga,cAAc,CAAC;IAC/B,CAAC,CAAC;IAEFw7R,YAAY,GAAGriU,KAAK,CAACxD,KAAK,CAAC;MACvBG,EAAE,EAAE,cAAc;MAClBO,IAAI,EAAE,UAAU;MAChBoB,KAAK,EAAE,SAAS;MAChBrB,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE;IAChB,CAAC,CAAC;IAEFivI,OAAO,GAAGlwI,MAAM,CAACC,KAAK,CAAC;MACnBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IACF2tC,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEF,IAAIwrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC;IAC5B/jG,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAC9Bk4R,WAAW,GAAG5mU,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACzCqmU,WAAW,CAAC/pU,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC6pU,WAAW,CAACpiU,SAAS,GAAG,sBAAsB;IAC9CqiU,QAAQ,GAAG7mU,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACtCsmU,QAAQ,CAAChqU,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IACtC8pU,QAAQ,CAACriU,SAAS,GAAGshU,gBAAgB,CAAC5kT,QAAQ,CAAC,CAAC,CAACtW,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;IACpEi7T,gBAAgB,GAAG7lU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChDslU,gBAAgB,CAAChpU,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAC9C8oU,gBAAgB,CAACpoU,WAAW,CAACmpU,WAAW,CAAC;IACzCf,gBAAgB,CAACpoU,WAAW,CAACopU,QAAQ,CAAC;IACtChB,gBAAgB,CAAC/kU,KAAK,CAACgwD,YAAY,GAAG,MAAM;IAE5C80Q,eAAe,CAACnoU,WAAW,CAACgyM,gBAAgB,CAAC;IAC7Cm2H,eAAe,CAACnoU,WAAW,CAACooU,gBAAgB,CAAC;IAC7CD,eAAe,CAACnoU,WAAW,CAACsoU,qBAAqB,CAAC;IAClDH,eAAe,CAACnoU,WAAW,CAACuoU,cAAc,CAAC;IAC3CJ,eAAe,CAACnoU,WAAW,CAACwoU,cAAc,CAAC;IAC3CL,eAAe,CAACnoU,WAAW,CAACyoU,YAAY,CAAC;IACzCN,eAAe,CAACnoU,WAAW,CAAC8uC,OAAO,CAAC;IACpC25R,YAAY,CAACrpU,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACnCuzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACjCg9T,UAAU,CAAC,CAAC;IACZjjH,wBAAwB,CAAC,CAAC;IAC1B+uH,gBAAgB,CAAC/kU,KAAK,CAACoK,OAAO,GAAG,MAAM;IACvC6E,KAAK,CAAC9S,IAAI,CAAC2oU,eAAe,CAAC;EAC/B;EAEA,SAAS7L,UAAUA,CAAA,EAAG;IAClBtqH,gBAAgB,CAACtvM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEqkU,sBAAsB,GAAGtkU,cAAc,CAAChC,EAAE;MAC1C8lU,gBAAgB,GAAG,EAAE;MACrBE,wBAAwB,GAAG,EAAE;MAC7BF,gBAAgB,CAACl7T,IAAI,CAAC5I,cAAc,CAAChC,EAAE,CAAC;MACxCmmU,gBAAgB,GAAG,KAAK;IAC5B,CAAC,CAAC;IACFr2L,OAAO,CAACnwI,gBAAgB,CAAC,OAAO,EAAE,YAAY;MAC1CmmU,gBAAgB,CAACl7T,IAAI,CAACgD,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC;MACvC,MAAM7Z,MAAM,GAAG,MAAM0zS,0BAA0B,CAACO,qBAAqB,CAACxB,WAAW,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,gBAAgB,CAAC;MACxI,MAAM;QAAEsB;MAAuB,CAAC,GAAGl0S,MAAM;MACzC,IAAIk0S,sBAAsB,CAAC,CAAC,CAAC,CAACC,MAAM,IAAI,IAAI,EAAE;QAC1C93T,KAAK,CAAC/S,IAAI,CAAC4oU,eAAe,CAAC;QAC3BU,gBAAgB,GAAG,EAAE;QACrBE,wBAAwB,GAAG,EAAE;QAC7BV,gBAAgB,GAAG,EAAE;QACrBl0Q,SAAS,CAACC,IAAI,CAAC,CAAC;MACpB;IACJ,CAAC,CAAC;IAEFnjB,SAAS,CAACvuC,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACtCmmU,gBAAgB,GAAG,EAAE;MACrBE,wBAAwB,GAAG,EAAE;MAC7BV,gBAAgB,GAAG,EAAE;MACrB/1T,KAAK,CAAC/S,IAAI,CAAC4oU,eAAe,CAAC;IAC/B,CAAC,CAAC;IACFM,YAAY,CAAC/lU,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5CwoU,WAAW,GAAGxoU,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChCkmU,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACF9B,cAAc,CAAC7lU,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC9C0oU,gBAAgB,GAAG1oU,KAAK,CAACC,MAAM,CAACgE,KAAK;MACrCkmU,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;IACF7B,cAAc,CAAC9lU,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC9CyoU,gBAAgB,GAAGzoU,KAAK,CAACC,MAAM,CAACgE,KAAK;MACrCkmU,+BAA+B,CAAC,CAAC;IACrC,CAAC,CAAC;EACN;EAEA,SAASA,+BAA+BA,CAAA,EAAG;IACvC,IAAI/gT,IAAI,GAAGi/S,cAAc,CAAC/lU,aAAa,CAAC,iBAAiB,CAAC;IAC1D,IAAIs0B,IAAI,GAAG0xS,cAAc,CAAChmU,aAAa,CAAC,iBAAiB,CAAC;IAC1D,IAAI4Q,OAAO,GAAGq1T,YAAY,CAACjmU,aAAa,CAAC,eAAe,CAAC;IAEzD,IAAI8mB,IAAI,CAACnlB,KAAK,KAAK,EAAE,EAAE;MACnBokU,cAAc,CAACnpU,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACzC,CAAC,MAAM;MACHipU,cAAc,CAACnpU,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC5C;IAEA,IAAIy3B,IAAI,CAAC3yB,KAAK,KAAK,EAAE,EAAE;MACnBqkU,cAAc,CAACppU,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACzC,CAAC,MAAM;MACHkpU,cAAc,CAACppU,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC5C;IAEA,IAAI+T,OAAO,CAACjP,KAAK,CAAC6mB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;MAC7By9S,YAAY,CAACrpU,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACvC,CAAC,MAAM;MACHmpU,YAAY,CAACrpU,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C;IACAirU,wBAAwB,CAAC,CAAC;EAC9B;EAEA,SAASA,wBAAwBA,CAAA,EAAG;IAChC,IAAIx1N,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAE;MACxBgzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACjC;IACJ,CAAC,MAAM;MACHuzI,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC;EACJ;EAEA,eAAeg6M,wBAAwBA,CAAA,EAAG;IACtC,MAAM;MACFkxH,qBAAqB,EAAEtyJ;IAC3B,CAAC,GAAG,MAAM0xJ,0BAA0B,CAACzxJ,iBAAiB,CAAC,CAAC;IACxD4wJ,wBAAwB,GAAG7wJ,QAAQ;IACnCoxJ,sBAAsB,GAAGpxJ,QAAQ,CAAC,CAAC,CAAC,CAACpG,UAAU;IAC/Cg3J,gBAAgB,CAACl7T,IAAI,CAACsqK,QAAQ,CAAC,CAAC,CAAC,CAACpG,UAAU,CAAC;IAC7C,IAAIvsK,IAAI,GAAG2yK,QAAQ,CAAC3uK,GAAG,CAAE2pK,QAAQ,KAAM;MACnClwK,EAAE,EAAEkwK,QAAQ,CAACpB,UAAU;MACvB1tK,KAAK,EAAE8uK,QAAQ,CAACpB,UAAU;MAC1B3uK,IAAI,EAAE+vK,QAAQ,CAACnB;IACnB,CAAC,CAAC,CAAC;IACHvtK,QAAQ,CAAC5E,QAAQ,CAAC,mBAAmB,EAAE2F,IAAI,CAAC;EAChD;EAEA,SAASklU,kBAAkBA,CAAA,EAAG;IAC1B,IAAIzB,wBAAwB,CAAClpU,MAAM,KAAK,CAAC,EAAE;MACvCopU,SAAS,CAAC7pU,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACnC;IACJ;IACA2pU,SAAS,CAAC7pU,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;EAC1C;EAEA,eAAe2qU,uBAAuBA,CAAA,EAAG;IACrC;IACAhB,mBAAmB,GAAG12T,KAAK,CAAC1P,KAAK,CAAC;MAC9BG,EAAE,EAAE,yBAAyB;MAC7Ba,UAAU,EAAE,qBAAqB;MACjCkP,KAAK,EAAE,IAAI;MACXP,MAAM,EAAE;IACZ,CAAC,CAAC;IACF,MAAMk4T,YAAY,GAAGloU,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChD2nU,YAAY,CAACrrU,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAC1CmrU,YAAY,CAAC1jU,SAAS,GAAG,iEAAiE;IAE1F,MAAM2jU,SAAS,GAAGnoU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/C4nU,SAAS,CAACtrU,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;;IAEzC;IACA,MAAMqrU,kBAAkB,GAAGpoU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACxD6nU,kBAAkB,CAACvrU,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEpD,MAAMsrU,QAAQ,GAAGroU,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC5C8nU,QAAQ,CAAC7jU,SAAS,GAAG,gCAAgC;IAErD8jU,YAAY,GAAGloU,MAAM,CAACC,KAAK,CAAC;MACxBG,EAAE,EAAE,WAAW;MACfG,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEFwnU,aAAa,GAAGvoU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgoU,aAAa,CAAC1rU,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAC7CyrU,cAAc,GAAGxoU,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAChDioU,cAAc,CAACvnU,YAAY,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC9DsnU,aAAa,CAAC9qU,WAAW,CAAC6qU,YAAY,CAAC;IACvCC,aAAa,CAAC9qU,WAAW,CAAC+qU,cAAc,CAAC;IACzCC,WAAW,GAAGroU,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,WAAW;MACvBQ,QAAQ,EAAEA,CAAA,KAAM;QACZ47S,SAAS,CAACv9S,IAAI,CAACoqG,YAAY,CAAC;MAChC;IACJ,CAAC,CAAC;IAEF,MAAMo+N,gBAAgB,GAAG1oU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtDgmU,wBAAwB,CAAChpU,OAAO,CAACw6T,MAAM,IAAI;MACvC,IAAI7uN,QAAQ,GAAGlpG,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;MAC1C2oG,QAAQ,CAACjoG,YAAY,CAAC,eAAe,EAAE82T,MAAM,CAACzoJ,UAAU,CAAC;MACzDpmE,QAAQ,CAAC1kG,SAAS,GAAGuzT,MAAM,CAACxoJ,YAAY;MACxCm5J,gBAAgB,CAACjrU,WAAW,CAACyrG,QAAQ,CAAC;MAEtC,IAAI6uN,MAAM,CAACzoJ,UAAU,IAAIw3J,sBAAsB,EAAE;QAC7C59N,QAAQ,CAACrsG,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAClCypU,wBAAwB,CAACp7T,IAAI,CAAC2sT,MAAM,CAACzoJ,UAAU,CAAC;MACpD;MAEApmE,QAAQ,CAAC/oG,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QACpC;QACA,MAAMmiQ,UAAU,GAAGniQ,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC;QAC1D,IAAI+5P,UAAU,EAAE;UACZniQ,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UACrC0pU,wBAAwB,GAAGA,wBAAwB,CAACh7T,MAAM,CAACm9T,GAAG,IAAIA,GAAG,KAAK5Q,MAAM,CAACzoJ,UAAU,CAAC;QAChG,CAAC,MAAM;UACH/sK,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UAClCypU,wBAAwB,CAACp7T,IAAI,CAAC2sT,MAAM,CAACzoJ,UAAU,CAAC;QACpD;QACA24J,kBAAkB,CAAC,CAAC;MACxB,CAAC,CAAC;IACN,CAAC,CAAC;IAEFG,kBAAkB,CAAC3qU,WAAW,CAAC4qU,QAAQ,CAAC;IAExC,IAAIO,SAAS,GAAG5oU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CqoU,SAAS,CAAC/rU,SAAS,CAACE,GAAG,CAAC,WAAW,CAAC;IACpC6rU,SAAS,CAACnrU,WAAW,CAACgrU,WAAW,CAAC;IAElCL,kBAAkB,CAAC3qU,WAAW,CAAC8qU,aAAa,CAAC;IAE7CH,kBAAkB,CAAC3qU,WAAW,CAACirU,gBAAgB,CAAC;IAEhDJ,YAAY,CAACnoU,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5C4qU,aAAa,CAAC1rU,SAAS,CAACmE,MAAM,CAAC,YAAY,CAAC;MAC5CwnU,cAAc,CAAC5mU,KAAK,GAAG,EAAE;MACzB4mU,cAAc,CAAC/5T,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;IACF+5T,cAAc,CAACroU,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC9C,IAAIA,KAAK,CAAC0oB,OAAO,KAAK,EAAE,EAAE;QACtBwiT,cAAc,CAAClrU,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC;MACtC;IACJ,CAAC,CAAC;IAEF4mU,cAAc,CAACroU,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC9C,IAAIA,KAAK,CAACC,MAAM,CAACgE,KAAK,KAAK,EAAE,EAAE;QAC3BinU,cAAc,CAAClrU,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC;MACtC;IACJ,CAAC,CAAC;;IAEF;IACA8kU,SAAS,GAAGtmU,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QACxBykU,gBAAgB,GAAG,EAAE;QACrBA,gBAAgB,GAAGE,wBAAwB;QAC3CV,gBAAgB,GAAG,EAAE;QACrBS,wBAAwB,CAAChpU,OAAO,CAACw6T,MAAM,IAAI;UACvCyO,wBAAwB,CAACjpU,OAAO,CAACurU,QAAQ,IAAI;YACzC,IAAI/Q,MAAM,CAACzoJ,UAAU,IAAIw5J,QAAQ,EAAE;cAC/BhD,gBAAgB,CAAC16T,IAAI,CAAC2sT,MAAM,CAACxoJ,YAAY,CAAC3kK,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChE;UACJ,CAAC,CAAC;QACN,CAAC,CAAC;QAEFmF,KAAK,CAAC/S,IAAI,CAACypU,mBAAmB,CAAC;QAC/Bn2L,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACpCgrU,+BAA+B,CAAC,CAAC;QACjCp5R,SAAS,CAAC7xC,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACtC6pU,gBAAgB,GAAG,IAAI;QACvBz5T,OAAO,CAACjQ,IAAI,CAAC,CAAC;QACd,IAAIqpU,gBAAgB,CAAChpU,MAAM,GAAG,CAAC,EAAE;UAC7BupU,QAAQ,CAACriU,SAAS,GAAGshU,gBAAgB,CAAC5kT,QAAQ,CAAC,CAAC,CAACtW,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;UACpEi7T,gBAAgB,CAAC/kU,KAAK,CAACoK,OAAO,GAAG,OAAO;UACxCukM,gBAAgB,CAAC3uM,KAAK,CAACoK,OAAO,GAAG,MAAM;QAC3C,CAAC,MACI;UACD26T,gBAAgB,CAAC/kU,KAAK,CAACoK,OAAO,GAAG,MAAM;UACvCukM,gBAAgB,CAAC3uM,KAAK,CAACoK,OAAO,GAAG,MAAM;UACvClL,QAAQ,CAACiD,cAAc,CAAC,mBAAmB,CAAC,CAACrB,KAAK,GAAG0kU,gBAAgB,CAAC,CAAC,CAAC;QAC5E;MAEJ;IACJ,CAAC,CAAC;IAEF,IAAIyC,eAAe,GAAG3oU,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAACypU,mBAAmB,CAAC;QAC/Bn2L,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACpCgrU,+BAA+B,CAAC,CAAC;QACjCp5R,SAAS,CAAC7xC,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACtCoQ,OAAO,CAACjQ,IAAI,CAAC,CAAC;QACdupU,wBAAwB,GAAG,EAAE;QAC7BG,gBAAgB,GAAG,IAAI;MAC3B;IACJ,CAAC,CAAC;IAEF,IAAIp6R,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACipU,SAAS,CAAC;IAC9Bn6R,OAAO,CAAC9uC,WAAW,CAACsrU,eAAe,CAAC;IACpCZ,SAAS,CAAC1qU,WAAW,CAAC2qU,kBAAkB,CAAC;IACzC3B,mBAAmB,CAAChpU,WAAW,CAACyqU,YAAY,CAAC;IAC7CzB,mBAAmB,CAAChpU,WAAW,CAAC0qU,SAAS,CAAC;IAC1C1B,mBAAmB,CAAChpU,WAAW,CAAC8uC,OAAO,CAAC;IACxCx8B,KAAK,CAAC9S,IAAI,CAACwpU,mBAAmB,CAAC;EACnC;EAEA,SAASoC,cAAcA,CAAC5/N,WAAW,EAAE;IACjCA,WAAW,GAAGA,WAAW,CAACpoG,WAAW,CAAC,CAAC;IACvC;IACA;IACAkgK,kBAAkB,GAAG,CAAC93D,WAAW,CAAC;IAClCs9N,wBAAwB,CAAChpU,OAAO,CAAC2rG,QAAQ,IAAI;MACzC,IAAIG,QAAQ,GAAGH,QAAQ,CAACqmE,YAAY,CAAC1uK,WAAW,CAAC,CAAC;MAClD,IAAI0oG,WAAW,GAAGF,QAAQ,CAAC7iF,OAAO,CAACyiF,WAAW,CAAC;MAC/C,IAAI2rG,YAAY,GAAG50M,QAAQ,CAACC,aAAa,CAAC,mBAAmBipG,QAAQ,CAAComE,UAAU,IAAI,CAAC;MAErF,IAAI/lE,WAAW,KAAK,CAAC,CAAC,EAAE;QACpBqrG,YAAY,CAAC/3M,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QACvCikK,kBAAkB,CAAC31J,IAAI,CAAC89F,QAAQ,CAAComE,UAAU,CAAC;MAChD,CAAC,MAAM;QACHslC,YAAY,CAAC/3M,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACpC,IAAI4Z,KAAK,GAAGoqJ,kBAAkB,CAACv6I,OAAO,CAAC0iF,QAAQ,CAAComE,UAAU,CAAC;QAC3D,IAAI34J,KAAK,GAAG,CAAC,CAAC,EAAEoqJ,kBAAkB,CAAC30I,MAAM,CAACzV,KAAK,EAAE,CAAC,CAAC;MACvD;IACJ,CAAC,CAAC;EACN;EAEA,SAASzW,IAAIA,CAAA,EAAG;IACZwlU,cAAc,GAAG1lU,QAAQ,CAACiD,cAAc,CAAC,yBAAyB,CAAC;IACnEwiU,WAAW,GAAGzlU,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC;;IAExD;IACA2uD,SAAS,CAACygG,sBAAsB,CAAC,yBAAyB,EAAE,qBAAqB,CAAC;IAElF,IAAIo9H,KAAK,CAACnyR,MAAM,GAAG,CAAC,IAAIqoU,QAAQ,CAACroU,MAAM,GAAG,CAAC,EAAE;MACzCmyR,KAAK,GAAG,EAAE;MACVk2C,QAAQ,GAAG,EAAE;IACjB;IACAyB,0BAA0B,CAAC4B,+BAA+B,CAAC,UAAU9gO,OAAO,EAAEn5F,KAAK,EAAE;MACjF,IAAIA,KAAK,EAAE;QACP,IAAIohS,YAAY,GAAGu1B,cAAc,CAACzlU,aAAa,CAAC,gBAAgB,CAAC;QACjE,IAAIgpU,SAAS,GAAGxD,WAAW,CAACxlU,aAAa,CAAC,gBAAgB,CAAC;QAC3DkwS,YAAY,CAACtzS,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;QACrCksU,SAAS,CAACpsU,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;QAClC;MACJ;MACAyqU,wBAAwB,CAACt/N,OAAO,CAAC;MACjCo/N,kBAAkB,CAAC,CAAC;MACpBP,eAAe,CAAC,CAAC;IACrB,CAAC,CAAC;EACN;EAEA,OAAO;IACH7mU,IAAI;IACJsyJ;EACJ,CAAC;AACL,CAAC,CAAC,CAAE;ACreJ,IAAI40K,0BAA0B,GAAI,YAAY;EAC1C,SAAS4B,+BAA+BA,CAACnnU,QAAQ,EAAE;IAC/CuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,uCAAuC;MACrExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG;QACP,IAAI;UACAA,GAAG,GAAG6G,QAAQ,CAAC+7Q,yCAAyC;UACxDrnU,QAAQ,CAACykD,GAAG,EAAE,IAAI,CAAC;QACvB,CAAC,CAAC,OAAO/jD,CAAC,EAAE;UACRV,QAAQ,CAAC,IAAI,EAAEkN,KAAK,CAAC;QACzB;MACJ,CAAC;MACDA,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAACkN,KAAK,EAAE,IAAI,CAAC;MACzB;IACJ,CAAC,CAAC;EACN;EAEA,SAASs4T,aAAaA,CAAA,EAAG;IACrB,IAAItkU,IAAI,GAAG;MAAE6pC,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;IAAM,CAAC;IACrCtoC,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,gBAAgB;MAC9CxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAID,QAAQ,IAAIA,QAAQ,CAACg8Q,kBAAkB,EAAE;UACzC36T,MAAM,CAAC7F,IAAI,CAACwkD,QAAQ,CAACg8Q,kBAAkB,EAAE,QAAQ,CAAC;QACtD;MACJ;IACJ,CAAC,CAAC;EACN;EAEA,eAAexzJ,iBAAiBA,CAAA,EAAG;IAC/B,IAAI;MACA,MAAMjiJ,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,mBAAmB;QACvBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAErB,CAAC,CAAC;QACFsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,eAAewsN,qBAAqBA,CAACxB,WAAW,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAE;IACpG,IAAI;MACA,MAAM5yS,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,oBAAoB;QACxBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtByvR,WAAW,EAAEA,WAAW;UACxBC,gBAAgB,EAAEA,gBAAgB;UAClCC,gBAAgB,EAAEA,gBAAgB;UAClCC,gBAAgB,EAAEA;QACtB,CAAC,CAAC;QACFt5Q,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,OAAO;IACH6tN,+BAA+B;IAC/B3B,aAAa;IACb1xJ,iBAAiB;IACjBgyJ;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AC5GJ,IAAI/wK,sBAAsB,GAAI,YAAY;EACtC;EACA,IAAIwyK,kBAAkB;EACtB,IAAIC,oBAAoB;EACxB,IAAIC,oBAAoB;EACxB,IAAIC,mBAAmB;EACvB,IAAIC,qBAAqB;EACzB;EACA;EACA,IAAItyK,MAAM;EACV,IAAIyiK,UAAU;EACd,IAAIzvN,WAAW;EACf,IAAIshD,gBAAgB;EACpB,IAAImyJ,gBAAgB;EACpB,IAAI8rB,iBAAiB;EACrB,IAAI5P,eAAe;EACnB,IAAIphN,eAAe;EAEnB,SAASq6C,gBAAgBA,CAAA,EAAG;IACxB,IAAIgnK,YAAY,GAAG5iK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC3D,IAAI65T,YAAY,EAAE;IAElB5vN,WAAW,GAAGt4C,SAAS,CAACkhG,gBAAgB,CAAC,CAAC;IAE1CtH,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAC9B4B,UAAU,EAAE,iCAAiC;MAC7CE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACd,CAAC,CAAC;IACFu7S,gBAAgB,GAAG37S,QAAQ,CAAC3B,KAAK,CAAC;MAC9B4B,UAAU,EAAE,gCAAgC;MAC5CE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACd,CAAC,CAAC;IACFqnU,iBAAiB,GAAGznU,QAAQ,CAAC3B,KAAK,CAAC;MAC/B4B,UAAU,EAAE,iCAAiC;MAC7CE,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACd,CAAC,CAAC;IACFy3T,eAAe,GAAGz5T,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IACF03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEF,IAAIwrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACo8T,eAAe,CAAC;IACpCttR,OAAO,CAAC9uC,WAAW,CAACg7G,eAAe,CAAC;IAEpCvO,WAAW,CAACzsG,WAAW,CAACkgT,gBAAgB,CAAC;IACzCzzM,WAAW,CAACzsG,WAAW,CAAC+tJ,gBAAgB,CAAC;IACzCthD,WAAW,CAACzsG,WAAW,CAACgsU,iBAAiB,CAAC;IAC1Cv/N,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAChC2qH,MAAM,CAAC1nJ,YAAY,CAAC06F,WAAW,EAAEyvN,UAAU,CAAC;EAChD;EACA,SAASI,UAAUA,CAAA,EAAG;IAClB,IAAI2P,wBAAwB;IAC5B,IAAIC,wBAAwB;IAC5B,IAAIC,yBAAyB;IAG7Bp+K,gBAAgB,CAACrrJ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEinU,wBAAwB,GAAGlnU,cAAc,CAACZ,KAAK;MAC/C;IACJ,CAAC,CAAC;IACF+7S,gBAAgB,CAACx9S,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEknU,wBAAwB,GAAGnnU,cAAc,CAACZ,KAAK;MAC/C;IACJ,CAAC,CAAC;IACF6nU,iBAAiB,CAACtpU,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAClD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEmnU,yBAAyB,GAAGpnU,cAAc,CAACZ,KAAK;MAChD;IACJ,CAAC,CAAC;IACFi4T,eAAe,CAAC15T,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC/CusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAE5CyH,gBAAgB,CAAC;QACb+3N,wBAAwB;QACxBC,wBAAwB;QACxBC;MACJ,CAAC,CAAC;;MAEF;MACAjQ,UAAU,CAACx8T,SAAS,GAAG,EAAE;MACzBiV,kBAAkB,CAAClS,IAAI,CAAC,CAAC;MACzBkS,kBAAkB,CAACJ,OAAO,CAAC/U,IAAI,CAAC08T,UAAU,EAAE,SAAS,CAAC;MAEtDkQ,0BAA0B,CAACC,uCAAuC,CAAC;QAC/Dl9R,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB81F,YAAY,EAAE88L,oBAAoB;QAClC/3Q,YAAY,EAAE83Q,oBAAoB;QAClCU,aAAa,EAAEP;MACnB,CAAC,EAAEQ,8BAA8B,CAAC;IACtC,CAAC,CAAC;IACFvxN,eAAe,CAACt4G,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC/CusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;IAChD,CAAC,CAAC;EACN;EAEA,SAASyH,gBAAgBA,CAAC5uG,IAAI,EAAE;IAC5B,IAAIA,IAAI,CAAC2mU,wBAAwB,EAAEL,oBAAoB,GAAGtmU,IAAI,CAAC2mU,wBAAwB;IACvF,IAAI3mU,IAAI,CAAC4mU,wBAAwB,EAAEL,oBAAoB,GAAGvmU,IAAI,CAAC4mU,wBAAwB;IACvF,IAAI5mU,IAAI,CAAC6mU,yBAAyB,EAAEJ,qBAAqB,GAAGzmU,IAAI,CAAC6mU,yBAAyB;EAC9F;EAEA,SAASK,yBAAyBA,CAAC/hO,OAAO,EAAE;IACxC,IAAInlG,IAAI,GAAGmlG,OAAO,CAACnhG,GAAG,CAACsX,CAAC,IAAI;MACxB,OAAO;QACH7d,EAAE,EAAE6d,CAAC,CAAC6vF,EAAE;QACRtsG,KAAK,EAAEyc,CAAC,CAACg4B,IAAI;QACb11C,IAAI,EAAE0d,CAAC,CAACg4B;MACZ,CAAC;IACL,CAAC,CAAC;IACFtzC,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IACnDqB,QAAQ,CAAC5E,QAAQ,CAAC,iCAAiC,EAAE2F,IAAI,EAAEqmU,kBAAkB,CAAC;EAClF;EACA,SAASc,yBAAyBA,CAAChiO,OAAO,EAAE;IACxC,IAAInlG,IAAI,GAAGmlG,OAAO,CAACnhG,GAAG,CAACsX,CAAC,IAAI;MACxB,OAAO;QACH7d,EAAE,EAAE6d,CAAC,CAAC6vF,EAAE;QACRtsG,KAAK,EAAEyc,CAAC,CAACkuF,QAAQ;QACjB5rG,IAAI,EAAE0d,CAAC,CAACkuF;MACZ,CAAC;IACL,CAAC,CAAC;IACFxpG,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IACnDqB,QAAQ,CAAC5E,QAAQ,CAAC,gCAAgC,EAAE2F,IAAI,EAAEumU,oBAAoB,CAAC;EACnF;EACA,SAASa,yBAAyBA,CAAA,EAAG;IACjC,MAAMC,QAAQ,GAAI,CACd;MAAE5pU,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,8BAA8B;MAAEjB,IAAI,EAAE;IAA+B,CAAC,EACtF;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,+BAA+B;MAAEjB,IAAI,EAAE;IAAgC,CAAC,EACxF;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,2BAA2B;MAAEjB,IAAI,EAAE;IAA4B,CAAC,EAChF;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,4BAA4B;MAAEjB,IAAI,EAAE;IAA6B,CAAC,EAClF;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,4BAA4B;MAAEjB,IAAI,EAAE;IAA6B,CAAC,EAClF;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,6BAA6B;MAAEjB,IAAI,EAAE;IAA8B,CAAC,CACtF;IACFqB,QAAQ,CAAC5E,QAAQ,CAAC,iCAAiC,EAAEgtU,QAAQ,EAAEZ,qBAAqB,CAAC;EACzF;EAEA,SAAS1O,iBAAiBA,CAAA,EAAG;IACzB,IAAIruN,UAAU,GAAGyqD,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAE1D,IAAI,CAACwsG,UAAU,EAAE;MACbA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAC5C48T,UAAU,CAACl8T,WAAW,CAACgvG,UAAU,CAAC;IACtC;IAEAA,UAAU,CAACtvG,SAAS,GAAG;AAC/B,kCAAmCmsU,oBAAoB,IAAI,GAAG,GAAI,KAAK,GAAGA,oBAAoB;AAC9F,kCAAmCD,oBAAoB,IAAI,GAAG,GAAI,KAAK,GAAGA,oBAAoB;AAC9F,oCAAoCG,qBAAqB;AACzD,WAAW;EACP;EAEA,IAAIviO,YAAY,GAAG;IACfjzF,KAAK,EAAE,IAAI;IACXI,cAAc,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,CAAC;IAClEhB,OAAO,EAAE;EACb,CAAC;EAED,SAAS42T,8BAA8BA,CAAC9hO,OAAO,EAAE;IAC7C4yN,iBAAiB,CAAC,CAAC;IACnB,IAAI5jK,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,2BAA2B,CAAC;IACjE,IAAI,CAACi0J,MAAM,EAAE;IAGb,IAAImzK,OAAO,GAAGn3T,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;IACvC;IACA,MAAMzwF,OAAO,GAAG6zT,OAAO,CAAChkU,gBAAgB,CAAC,aAAa,CAAC;IACvDmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;;IAE9C04T,UAAU,CAACl8T,WAAW,CAAC4sU,OAAO,CAAC;;IAE/B;IACAn3T,KAAK,CAACqD,iBAAiB,CAAC8zT,OAAO,CAAC;IAEhCC,WAAW,GAAGpiO,OAAO,CAACnhG,GAAG,CAACoN,EAAE,IAAI;MAC5B,IAAI+5F,EAAE,GAAG/5F,EAAE,CAACm+L,EAAE;MACd,IAAIxsM,IAAI,GAAGqO,EAAE,CAACrO,IAAI;MAClB,IAAI0rI,OAAO,GAAGr9H,EAAE,CAACq9H,OAAO;MACxB,IAAI6B,OAAO,GAAGl/H,EAAE,CAACk/H,OAAO;MACxB,IAAIk3L,eAAe,GAAGp2T,EAAE,CAACo2T,eAAe;MAExC,OAAO;QACH/pU,EAAE,EAAE0tG,EAAE;QACN54F,MAAM,EAAE,CAACxP,IAAI,EAAE0rI,OAAO,EAAE6B,OAAO,IAAI,EAAE,GAAG,OAAO,GAAG,GAAG,GAAGA,OAAO,EAAEk3L,eAAe,IAAI,EAAE,GAAG,EAAE,GAAGn0Q,MAAM,CAACm0Q,eAAe,CAAC,CAACzkT,MAAM,CAAC,UAAU,CAAC,CAAC;QACzIrkB,UAAU,EAAE,CACR;UAAEE,GAAG,EAAE,kBAAkB;UAAEC,KAAK,EAAEuS,EAAE,CAACm+L;QAAG,CAAC,EAAE;UAAE3wM,GAAG,EAAE,YAAY;UAAEC,KAAK,EAAEuS,EAAE,CAACm+L;QAAG,CAAC,EAAE;UAAE3wM,GAAG,EAAE,YAAY;UAAEC,KAAK,EAAEuS,EAAE,CAACmpI;QAAW,CAAC,CAC9H;QACDnoI,OAAO,EAAG5S,CAAC,IAAK;UACZ86I,wBAAwB,CAAC96I,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAACohD,UAAU,CAACjhD,KAAK,EAACW,CAAC,CAAC3E,MAAM,CAAC6D,UAAU,CAAC67I,UAAU,CAAC17I,KAAK,CAAC;QACvG;MACJ,CAAC;IACL,CAAC,CAAC;IAEFsR,KAAK,CAAC9V,QAAQ,CAACitU,OAAO,EAAEC,WAAW,CAAC;IACpCl4T,kBAAkB,CAACJ,OAAO,CAAChV,IAAI,CAAC28T,UAAU,EAAE,SAAS,CAAC;EAC1D;EAEA,SAASt8K,wBAAwBA,CAACx6F,UAAU,EAAEy6F,UAAU,EAAE;IACtDlvI,CAAC,CAACC,OAAO,CAACw0C,UAAU,GAAGA,UAAU;IACjCi4F,UAAU,CAACC,iBAAiB,CAACuC,UAAU,CAAC;EAC5C;EAEA,SAASp9I,IAAIA,CAAA,EAAG;IACZ,IAAI,CAACmpU,oBAAoB,EAAEA,oBAAoB,GAAG,GAAG;IACrD,IAAI,CAACC,oBAAoB,EAAEA,oBAAoB,GAAG,GAAG;IACrD,IAAI,CAACE,qBAAqB,EAAEA,qBAAqB,GAAG,8BAA8B;IAElFtyK,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,2BAA2B,CAAC;IAC7D02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;;IAElD;IACA2xD,SAAS,CAACkgG,kBAAkB,CAAC,2BAA2B,EAAE,0BAA0B,CAAC;IAErFgB,gBAAgB,CAAC,CAAC;IAClBgoK,iBAAiB,CAAC,CAAC;IACnBf,UAAU,CAAC,CAAC;IACZoQ,yBAAyB,CAAC,CAAC;IAC3BN,0BAA0B,CAACzP,8BAA8B,CAAC6P,yBAAyB,CAAC;IACpFJ,0BAA0B,CAACW,oBAAoB,CAACN,yBAAyB,CAAC;IAE1E93T,kBAAkB,CAAClS,IAAI,CAAC,CAAC;IACzBkS,kBAAkB,CAACJ,OAAO,CAAC/U,IAAI,CAAC08T,UAAU,EAAE,SAAS,CAAC;IAEtDkQ,0BAA0B,CAACC,uCAAuC,CAAC;MAC/Dl9R,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB81F,YAAY,EAAE88L,oBAAoB;MAClC/3Q,YAAY,EAAE83Q,oBAAoB;MAClCU,aAAa,EAAEP;IACnB,CAAC,EAAEQ,8BAA8B,CAAC;EACtC;EAEA,OAAO;IACH9pU;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AChQJ,IAAI2pU,0BAA0B,GAAI,YAAY;EAC1C,IAAI3O,oBAAoB,GAAG,EAAE;EAC7B,IAAI90B,aAAa,GAAG,EAAE;EAEtB,SAASg0B,8BAA8BA,CAACv4T,QAAQ,EAAE;IAC9C,IAAIq5T,oBAAoB,CAAC59T,MAAM,GAAG,CAAC,EAAE;MACjCuE,QAAQ,CAACq5T,oBAAoB,CAAC;MAC9B;IACJ;IACA9sT,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,oBAAoB;MAClDxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACmjG,sBAAsB;QACzC4qK,oBAAoB,GAAG50Q,GAAG;QAC1BzkD,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CACrC;IACJ,CAAC,CAAC;EACN;EAEA,SAASy7T,oBAAoBA,CAAC3oU,QAAQ,EAAE;IACpC,IAAIukS,aAAa,CAAC9oS,MAAM,GAAG,CAAC,EAAE;MAC1BuE,QAAQ,CAACukS,aAAa,CAAC;MACvB;IACJ;IAEAh4R,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,wBAAwB;MACtDxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACs9Q,0BAA0B;QAC7CrkC,aAAa,GAAG9/O,GAAG;QACnBzkD,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CACrC;IACJ,CAAC,CAAC;EACN;EAEA,SAAS+6T,uCAAuCA,CAAC1kD,UAAU,EAAEvjR,QAAQ,EAAE;IACnEuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,uCAAuC;MACrExoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC26P,UAAU,CAAC;MAChCp4N,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACu9Q,yCAAyC;QAC5D7oU,QAAQ,CAACykD,GAAG,EAAE,IAAI,CAAC;MACvB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACjClN,QAAQ,CAACkN,KAAK,EAAE,IAAI,CAAC;MACzB;IACJ,CAAC,CAAC;EACN;EAEA,OAAO;IACHqrT,8BAA8B,EAAEA,8BAA8B;IAC9DoQ,oBAAoB,EAAEA,oBAAoB;IAC1CV,uCAAuC,EAAEA;EAC7C,CAAC;AACL,CAAC,CAAE,CAAC;ACjFJ,IAAIj1K,eAAe,GAAI,YAAY;EACjC;EACA;EACA,IAAI/9G,SAAS;EACb,IAAI8xH,kBAAkB;EACtB,IAAI+hK,cAAc;EAClB;EACA;EACA,IAAIzzK,MAAM;EACV,IAAIyiK,UAAU;EACd,IAAIiR,QAAQ;EACZ,IAAIlO,UAAU;EACd,IAAIxyN,WAAW;EACf,IAAIshD,gBAAgB;EACpB,IAAIquK,eAAe;EACnB,IAAIphN,eAAe;EACnB;EACA;EACA,IAAInnD,UAAU;EACd,IAAIC,YAAY;;EAEhB;EACA,SAASs5Q,iBAAiBA,CAAA,EAAG;IAC3B,IAAI9nU,IAAI,GAAG+zC,SAAS,CAAC/vC,GAAG,CAACsX,CAAC,IAAI;MAC5B,OAAO;QACL7d,EAAE,EAAE6d,CAAC,CAAC6vF,EAAE;QACRtsG,KAAK,EAAEyc,CAAC,CAAC6vF,EAAE;QACXvtG,IAAI,EAAE0d,CAAC,CAACg4B;MACV,CAAC;IACH,CAAC,CAAC;;IAEF;IACA,IAAI,CAACib,UAAU,EAAEA,UAAU,GAAGvuD,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;IAC3C,IAAI,CAAC2vD,YAAY,EAAEA,YAAY,GAAGxuD,IAAI,CAAC,CAAC,CAAC,CAACpC,IAAI;IAE9CqB,QAAQ,CAAC5E,QAAQ,CAAC,oBAAoB,EAAE2F,IAAI,EAAEuuD,UAAU,CAAC;EAC3D;EACA,SAASwhG,gBAAgBA,CAAA,EAAG;IAC1B,IAAIgnK,YAAY,GAAG5iK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC3D,IAAI65T,YAAY,EAAE;IAElB5vN,WAAW,GAAGt4C,SAAS,CAACkhG,gBAAgB,CAAC,CAAC;IAE1CtH,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAChC4B,UAAU,EAAE,oBAAoB;MAChCE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACZ,CAAC,CAAC;IACFy3T,eAAe,GAAGz5T,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IACF03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IAEF,IAAIwrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACo8T,eAAe,CAAC;IACpCttR,OAAO,CAAC9uC,WAAW,CAACg7G,eAAe,CAAC;IAEpCvO,WAAW,CAACzsG,WAAW,CAAC+tJ,gBAAgB,CAAC;IACzCthD,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAChC2qH,MAAM,CAAC1nJ,YAAY,CAAC06F,WAAW,EAAEyvN,UAAU,CAAC;EAC9C;EACA,SAASmB,iBAAiBA,CAAA,EAAG;IAC3B,IAAIruN,UAAU,GAAGyqD,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAE1D,IAAI,CAACwsG,UAAU,EAAE;MACfA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAC5C48T,UAAU,CAACnqT,YAAY,CAACi9F,UAAU,EAAEm+N,QAAQ,CAAC;IAC/C;IAEAn+N,UAAU,CAACtvG,SAAS,GAAG;AAC3B,kCAAkCo0D,YAAY;AAC9C,WAAW;EACT;EAEA,SAASu5Q,0BAA0BA,CAAA,EAAG;IACpC,IAAI9hM,WAAW,GAAGt4G,IAAI,CAACga,cAAc,CAAC,CAAC;IACvCs+F,WAAW,GAAGt4G,IAAI,CAAC8E,mBAAmB,CAACwzG,WAAW,CAAC;IAEnD4hM,QAAQ,GAAG5qU,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACtCqqU,QAAQ,CAAC/tU,SAAS,CAACE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC;IAC/C6tU,QAAQ,CAACztU,SAAS,GAAG,oBAAoB6rI,WAAW,EAAE;IAEtD2wL,UAAU,CAACl8T,WAAW,CAACmtU,QAAQ,CAAC;EAClC;EACA,SAASG,sBAAsBA,CAAA,EAAG;IAChC,IAAIjsE,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI86D,cAAc,GAAG,CAAC;IAEtBhxJ,kBAAkB,CAACrrK,OAAO,CAAC,UAAU2rG,QAAQ,EAAE;MAC7C,IAAIG,QAAQ,GAAG,GAAGH,QAAQ,CAAC8hO,qBAAqB,CAAC7pT,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAC5D+nF,QAAQ,CAAC8hO,qBAAqB,CAAC7pT,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC5C;MACF,IAAI,CAAC29O,SAAS,CAACz1J,QAAQ,CAAC,EAAEy1J,SAAS,CAACz1J,QAAQ,CAAC,GAAG,CAAC;MACjDy1J,SAAS,CAACz1J,QAAQ,CAAC,EAAE;MACrBuwN,cAAc,EAAE;IAClB,CAAC,CAAC;IAEF,IAAIqR,eAAe,GAAG,CAAC,CAAC;IACxBnsT,MAAM,CAAC8B,IAAI,CAACk+O,SAAS,CAAC,CACnBznP,IAAI,CAAC,CAAC,CACN9Z,OAAO,CAAC,UAAUoE,GAAG,EAAE;MACtBspU,eAAe,CAACtpU,GAAG,CAAC,GAAGm9P,SAAS,CAACn9P,GAAG,CAAC;IACvC,CAAC,CAAC;;IAEJ;IACA,IAAIyW,OAAO,GAAGpY,QAAQ,CAACC,aAAa,CAAC,oBAAoB,CAAC;IAC1D,IAAI,CAACmY,OAAO,EAAE;IACdA,OAAO,CAACjb,SAAS,GAAG,EAAE;IAEtB,IAAI68J,aAAa,GAAGh6J,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDy5J,aAAa,CAACn9J,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAC7Ci9J,aAAa,CAAC78J,SAAS,GAAG,WAAWy8T,cAAc,EAAE;IAErD,IAAI94G,IAAI,GAAG9gN,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACvCugN,IAAI,CAACjkN,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAEnC,IAAIq9J,KAAK,GAAGt7I,MAAM,CAAC8B,IAAI,CAACqqT,eAAe,CAAC;IACxC7wK,KAAK,CAAC78J,OAAO,CAAC,UAAUuI,IAAI,EAAE;MAC5B,IAAIu3F,EAAE,GAAGr9F,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;MACrC88F,EAAE,CAAClgG,SAAS,GAAG2I,IAAI;MACnBg7M,IAAI,CAACrjN,WAAW,CAAC4/F,EAAE,CAAC;IACtB,CAAC,CAAC;IAEFjlF,OAAO,CAAC3a,WAAW,CAACu8J,aAAa,CAAC;IAClC5hJ,OAAO,CAAC3a,WAAW,CAACqjN,IAAI,CAAC;EAC3B;EACA,SAASoqH,kBAAkBA,CAAA,EAAG;IAC5B,IAAIpsE,SAAS,GAAG,CAAC,CAAC;IAClB,IAAIqsE,cAAc,GAAG,CAAC;IAEtBR,cAAc,CAACptU,OAAO,CAAC,UAAU2rG,QAAQ,EAAE;MACzC,IAAIG,QAAQ,GAAG,GAAGH,QAAQ,CAACkiO,kBAAkB,CAACjqT,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KACzD+nF,QAAQ,CAACkiO,kBAAkB,CAACjqT,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EACzC;MACF,IAAI,CAAC29O,SAAS,CAACz1J,QAAQ,CAAC,EAAEy1J,SAAS,CAACz1J,QAAQ,CAAC,GAAG,CAAC;MACjDy1J,SAAS,CAACz1J,QAAQ,CAAC,EAAE;MACrB8hO,cAAc,EAAE;IAClB,CAAC,CAAC;IAEF,IAAIF,eAAe,GAAG,CAAC,CAAC;IACxBnsT,MAAM,CAAC8B,IAAI,CAACk+O,SAAS,CAAC,CACnBznP,IAAI,CAAC,CAAC,CACN9Z,OAAO,CAAC,UAAUoE,GAAG,EAAE;MACtBspU,eAAe,CAACtpU,GAAG,CAAC,GAAGm9P,SAAS,CAACn9P,GAAG,CAAC;IACvC,CAAC,CAAC;;IAEJ;IACA,IAAIyW,OAAO,GAAGpY,QAAQ,CAACC,aAAa,CAAC,oBAAoB,CAAC;IAC1D,IAAI,CAACmY,OAAO,EAAE;IACdA,OAAO,CAACjb,SAAS,GAAG,EAAE;IAEtB,IAAIkuU,aAAa,GAAGrrU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD8qU,aAAa,CAACxuU,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;IAC7CsuU,aAAa,CAACluU,SAAS,GAAG,WAAWguU,cAAc,EAAE;IAErD,IAAIrqH,IAAI,GAAG9gN,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACvCugN,IAAI,CAACjkN,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAEnC,IAAIq9J,KAAK,GAAGt7I,MAAM,CAAC8B,IAAI,CAACqqT,eAAe,CAAC;IACxC7wK,KAAK,CAAC78J,OAAO,CAAC,UAAUuI,IAAI,EAAE;MAC5B,IAAIu3F,EAAE,GAAGr9F,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;MACrC88F,EAAE,CAAClgG,SAAS,GAAG2I,IAAI;MACnBg7M,IAAI,CAACrjN,WAAW,CAAC4/F,EAAE,CAAC;IACtB,CAAC,CAAC;IAEFjlF,OAAO,CAAC3a,WAAW,CAAC4tU,aAAa,CAAC;IAClCjzT,OAAO,CAAC3a,WAAW,CAACqjN,IAAI,CAAC;EAC3B;EACA,SAAS27G,eAAeA,CAAA,EAAG;IACzB,IAAIE,UAAU,GAAG;MACf1kT,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW;IACrC,CAAC;IAED,IAAIykT,UAAU,GAAG9kT,IAAI,CAACvX,KAAK,CAACs8T,UAAU,CAAC;IAEvChD,UAAU,CAACl8T,WAAW,CAACi/T,UAAU,CAAC;IAElCqO,sBAAsB,CAAC,CAAC;IACxBG,kBAAkB,CAAC,CAAC;IACpBpQ,iBAAiB,CAAC,CAAC;EACrB;EAEA,SAASf,UAAUA,CAAA,EAAG;IACpB,IAAI53D,aAAa;IACjB,IAAID,eAAe;IAEnB12G,gBAAgB,CAACrrJ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE0/P,aAAa,GAAG7wM,UAAU;MAC1B4wM,eAAe,GAAG3wM,YAAY;MAC9BD,UAAU,GAAG9uD,cAAc,CAACZ,KAAK;MACjC2vD,YAAY,GAAG/uD,cAAc,CAACrF,SAAS;IACzC,CAAC,CAAC;IACF08T,eAAe,CAAC15T,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAE5CohO,mBAAmB,CAACC,wCAAwC,CAC1Dj6Q,UAAU,EACV,UAAUmqQ,aAAa,EAAE;QACvB7yJ,kBAAkB,GAAG6yJ,aAAa;QAClC6P,mBAAmB,CAACE,qCAAqC,CACvDl6Q,UAAU,EACV,UAAUm6Q,UAAU,EAAE;UACpBd,cAAc,GAAGc,UAAU;UAC3BV,sBAAsB,CAAC,CAAC;UACxBG,kBAAkB,CAAC,CAAC;UACpBpQ,iBAAiB,CAAC,CAAC;QACrB,CACF,CAAC;MACH,CACF,CAAC;IACH,CAAC,CAAC;IACFriN,eAAe,CAACt4G,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAE5C54C,UAAU,GAAG6wM,aAAa;MAC1B5wM,YAAY,GAAG2wM,eAAe;IAChC,CAAC,CAAC;EACJ;EACA,SAAS4f,cAAcA,CAACjgR,QAAQ,EAAE;IAChCypU,mBAAmB,CAACI,mCAAmC,CAAC,UAAUxjO,OAAO,EAAE;MACzEpxD,SAAS,GAAGoxD,OAAO;MAEnBojO,mBAAmB,CAACC,wCAAwC,CAC1Dz0R,SAAS,CAAC,CAAC,CAAC,CAACo3D,EAAE,EACf,UAAUhG,OAAO,EAAE;QACjB0gE,kBAAkB,GAAG1gE,OAAO;QAE5BojO,mBAAmB,CAACE,qCAAqC,CACvD10R,SAAS,CAAC,CAAC,CAAC,CAACo3D,EAAE,EACf,UAAUhG,OAAO,EAAE;UACjByiO,cAAc,GAAGziO,OAAO;UAExBrmG,QAAQ,CAAC,CAAC;QACZ,CACF,CAAC;MACH,CACF,CAAC;IACH,CAAC,CAAC;EACJ;EAEA,SAAS3B,IAAIA,CAAA,EAAG;IACd;IACA0xD,SAAS,CAACkgG,kBAAkB,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;IAErEoF,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC;IACnD02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAClD05T,UAAU,CAACx8T,SAAS,GAAG,EAAE;IAEzB21J,gBAAgB,CAAC,CAAC;IAClBinK,UAAU,CAAC,CAAC;IAEZj4C,cAAc,CAAC,YAAY;MACzBgpD,0BAA0B,CAAC,CAAC;MAC5BD,iBAAiB,CAAC,CAAC;MACnBpO,eAAe,CAAC,CAAC;IACnB,CAAC,CAAC;EACJ;EAEA,OAAO;IACLv8T;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACnRJ,IAAIorU,mBAAmB,GAAI,YAAW;EAEpC,SAASI,mCAAmCA,CAAC7pU,QAAQ,EAAE;IACrDuM,CAAC,CAAC2+C,IAAI,CAAC;MACHhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,wCAAwC;MACpExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACtC9G,GAAG,GAAG6G,QAAQ,CAACw+Q,0CAA0C;QACzD9pU,QAAQ,CAACykD,GAAG,CAAC;MACjB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CACrC;IACJ,CAAC,CAAC;EACJ;EAEA,SAASw8T,wCAAwCA,CAACj6Q,UAAU,EAAEzvD,QAAQ,EAAE;IACtEuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,4CAA4C;MACxExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAG4a,UAAU,GAAG,IAAI;MAC9EtE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACy+Q,8CAA8C;QACjE/pU,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CACrC;IACF,CAAC,CAAC;EACJ;EAEA,SAASy8T,qCAAqCA,CAACl6Q,UAAU,EAAEzvD,QAAQ,EAAE;IACnEuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAC5Bh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GACzBj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GACtBl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,yCAAyC;MACrExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAG4a,UAAU,GAAG,IAAI;MAC9EtE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC0+Q,2CAA2C;QAC9DhqU,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CACrC;IACF,CAAC,CAAC;EACJ;EAEA,OAAO;IACL28T,mCAAmC;IACnCH,wCAAwC;IACxCC;EACF,CAAC;AACH,CAAC,CAAC,CAAE;ACnEJ,IAAIp3K,iBAAiB,GAAI,YAAY;EACnC;EACA;EACA,IAAI03K,eAAe,GAAG,CAAC,CAAC;EACxB,IAAIC,gBAAgB,GAAG,UAAU;EACjC,IAAIC,iBAAiB;EACrB,IAAIC,oBAAoB;EACxB;EACA;EACA,IAAI/0K,MAAM;EACV,IAAIyiK,UAAU;EACd,IAAIuS,SAAS;EACb,IAAIhiO,WAAW;EACf,IAAIiiO,aAAa;EACjB,IAAItS,eAAe;EACnB,IAAIphN,eAAe;EAEnB,SAAS2zN,qBAAqBA,CAAClkO,OAAO,EAAE;IACtC;IACA,IAAImkO,SAAS,GAAGj2Q,MAAM,CAAC8xC,OAAO,CAACokO,eAAe,CAAC,CAACxmT,MAAM,CAAC,YAAY,CAAC;IACpE,IAAIymT,OAAO,GAAGn2Q,MAAM,CAAC8xC,OAAO,CAACskO,aAAa,CAAC,CAAC1mT,MAAM,CAAC,YAAY,CAAC;IAChE,IAAI2mT,SAAS,GAAGvkO,OAAO,CAACwkO,eAAe,GACnCt2Q,MAAM,CAAC8xC,OAAO,CAACwkO,eAAe,CAAC,CAAC5mT,MAAM,CAAC,YAAY,CAAC,GACpD,IAAI;IACR,IAAI6mT,OAAO,GAAGzkO,OAAO,CAAC0kO,aAAa,GAAGx2Q,MAAM,CAAC8xC,OAAO,CAAC0kO,aAAa,CAAC,CAAC9mT,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI;IAC/F;IACA,IAAI+mT,YAAY,GAAGR,SAAS,CAAClrT,KAAK,CAAC,GAAG,CAAC,CAAC4H,IAAI,CAAC,GAAG,CAAC;IACjD,IAAI+jT,UAAU,GAAGP,OAAO,CAACprT,KAAK,CAAC,GAAG,CAAC,CAAC4H,IAAI,CAAC,GAAG,CAAC;IAC7C,IAAIgkT,YAAY,GAAGN,SAAS,GAAGA,SAAS,CAACtrT,KAAK,CAAC,GAAG,CAAC,CAAC4H,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;IACpE,IAAIikT,UAAU,GAAGL,OAAO,GAAGA,OAAO,CAACxrT,KAAK,CAAC,GAAG,CAAC,CAAC4H,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;IAE9D,IAAIhmB,IAAI,GAAG,CACT;MACEvC,EAAE,EAAE,UAAU;MACdoB,KAAK,EAAE,GAAGyqU,SAAS,MAAME,OAAO,EAAE;MAClC5rU,IAAI,EAAE,GAAGksU,YAAY,MAAMC,UAAU;IACvC,CAAC,CACF;IAED,IAAIL,SAAS,IAAIE,OAAO,EAAE;MACxB5pU,IAAI,CAACqI,IAAI,CAAC;QACR5K,EAAE,EAAE,UAAU;QACdoB,KAAK,EAAE,GAAG6qU,SAAS,MAAME,OAAO,EAAE;QAClChsU,IAAI,EAAE,GAAGosU,YAAY,MAAMC,UAAU;MACvC,CAAC,CAAC;IACJ;IAEA,IAAI,CAAChB,iBAAiB,EAAEA,iBAAiB,GAAGjpU,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;IACzD,IAAI,CAACqqU,oBAAoB,EAAEA,oBAAoB,GAAGlpU,IAAI,CAAC,CAAC,CAAC,CAACpC,IAAI;IAE9DqB,QAAQ,CAAC5E,QAAQ,CAAC,yBAAyB,EAAE2F,IAAI,EAAEipU,iBAAiB,CAAC;EACvE;EAEA,SAASiB,uBAAuBA,CAAC/kO,OAAO,EAAE;IACxCgkO,SAAS,CAAC/uU,SAAS,GAAG,EAAE;IAExB,IAAIwsG,OAAO;IAEX,IAAI,CAAC7qF,MAAM,CAAC8B,IAAI,CAACkrT,eAAe,CAAC,CAACxuU,MAAM,EAAE;MACxCqsG,OAAO,GAAG,CAAC,CAAC;MACZ,IAAIzB,OAAO,EAAE;QACXA,OAAO,CAAC3qG,OAAO,CAAC8gB,CAAC,IAAI;UACnB,IAAI0I,IAAI,GAAG1I,CAAC,CAAC6uT,QAAQ,CAAC/rT,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAACA,KAAK,CAAC,GAAG,CAAC;UAC9C4F,IAAI,GAAG,GAAG2J,IAAI,CAAC5B,WAAW,CAAC/H,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI2J,IAAI,CAAC5B,WAAW,CAAC/H,IAAI,CAAC,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,EAAE;UAC7E,IAAI9e,QAAQ,GAAGoW,CAAC,CAACpW,QAAQ;UACzB,IAAI8tB,KAAK;UAET,IAAI3nB,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;YAC3C,IAAI+P,CAAC,CAAC8uT,WAAW,KAAK,EAAE,IAAI9uT,CAAC,CAAC8uT,WAAW,KAAK,MAAM,EAAE;cACpDp3S,KAAK,GAAGjf,UAAU,CAACuH,CAAC,CAAC8uT,WAAW,CAAC,CAACllS,OAAO,CAAC,CAAC,CAAC;YAC9C,CAAC,MAAM,IAAI5pB,CAAC,CAAC0X,KAAK,KAAK,EAAE,IAAI1X,CAAC,CAAC0X,KAAK,KAAK,aAAa,EAAE;cACtDA,KAAK,GAAGjf,UAAU,CAACuH,CAAC,CAAC0X,KAAK,CAAC,CAACkS,OAAO,CAAC,CAAC,CAAC;YACxC,CAAC,MAAM;cACLlS,KAAK,GAAG,CAAC;YACX;UACF,CAAC,MAAM;YACL,IAAI1X,CAAC,CAAC8uT,WAAW,KAAK,EAAE,IAAI9uT,CAAC,CAAC8uT,WAAW,KAAK,GAAG,EAAE;cACjDp3S,KAAK,GAAGjf,UAAU,CAACuH,CAAC,CAAC8uT,WAAW,CAAC,CAACllS,OAAO,CAAC,CAAC,CAAC;YAC9C,CAAC,MAAM,IAAI5pB,CAAC,CAAC0X,KAAK,KAAK,EAAE,IAAI1X,CAAC,CAAC0X,KAAK,KAAK,aAAa,EAAE;cACtDA,KAAK,GAAGjf,UAAU,CAACuH,CAAC,CAAC0X,KAAK,CAAC,CAACkS,OAAO,CAAC,CAAC,CAAC;YACxC,CAAC,MAAM;cACLlS,KAAK,GAAG,CAAC;YACX;UACF;UAEA,IAAI,CAAC4zE,OAAO,CAACtrF,CAAC,CAACo+E,IAAI,CAAC,EAAE;YACpBkN,OAAO,CAACtrF,CAAC,CAACo+E,IAAI,CAAC,GAAG,CAAC,CAAC;UACtB;UACA,IAAI,CAACkN,OAAO,CAACtrF,CAAC,CAACo+E,IAAI,CAAC,CAAC11E,IAAI,CAAC,EAAE;YAC1B4iF,OAAO,CAACtrF,CAAC,CAACo+E,IAAI,CAAC,CAAC11E,IAAI,CAAC,GAAG,CAAC,CAAC;UAC5B;UACA,IAAI,CAAC4iF,OAAO,CAACtrF,CAAC,CAACo+E,IAAI,CAAC,CAAC11E,IAAI,CAAC,CAAC9e,QAAQ,CAAC,EAAE;YACpC0hG,OAAO,CAACtrF,CAAC,CAACo+E,IAAI,CAAC,CAAC11E,IAAI,CAAC,CAAC9e,QAAQ,CAAC,GAAG;cAChC8tB,KAAK,EAAEjf,UAAU,CAACif,KAAK,CAAC,CAACkS,OAAO,CAAC,CAAC,CAAC;cACnCniC,IAAI,EAAEmC;YACR,CAAC;UACH,CAAC,MAAM;YACL,IAAImlU,QAAQ,GAAGt2T,UAAU,CAAC6yF,OAAO,CAACtrF,CAAC,CAACo+E,IAAI,CAAC,CAAC11E,IAAI,CAAC,CAAC9e,QAAQ,CAAC,CAAC8tB,KAAK,CAAC,GAAGjf,UAAU,CAACif,KAAK,CAAC;YACpF4zE,OAAO,CAACtrF,CAAC,CAACo+E,IAAI,CAAC,CAAC11E,IAAI,CAAC,CAAC9e,QAAQ,CAAC,CAAC8tB,KAAK,GAAGjf,UAAU,CAACs2T,QAAQ,CAAC,CAACnlS,OAAO,CAAC,CAAC,CAAC;UACzE;QACF,CAAC,CAAC;MACJ;MACA;MACA6jS,eAAe,GAAGniO,OAAO;IAC3B,CAAC,MAAM;MACLA,OAAO,GAAGmiO,eAAe;IAC3B;IAEA,IAAI,CAACniO,OAAO,CAACoiO,gBAAgB,CAAC,EAAE;MAC9BG,SAAS,CAAC/uU,SAAS,GAAG,4BAA4B;MAClD29T,iBAAiB,CAAC,CAAC;MACnB;IACF,CAAC,MAAM;MACL,IAAIuS,iBAAiB,GAAGrtU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;MACpD8sU,iBAAiB,CAACxwU,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;MACpDswU,iBAAiB,CAAClwU,SAAS,GAAG,0DAA0D;MACxF+uU,SAAS,CAACzuU,WAAW,CAAC4vU,iBAAiB,CAAC;IAC1C;IAEA,IAAIC,SAAS,GAAGxuT,MAAM,CAAC8B,IAAI,CAAC+oF,OAAO,CAACoiO,gBAAgB,CAAC,CAAC;IACtD,IAAIuB,SAAS,EAAE;MACbA,SAAS,CAAC/vU,OAAO,CAACk/F,IAAI,IAAI;QACxB,IAAI02D,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAEvC,IAAIwlL,UAAU,GAAG,CAAC;QAElB,IAAIjvI,SAAS,GAAGh4B,MAAM,CAAC8B,IAAI,CAAC+oF,OAAO,CAACoiO,gBAAgB,CAAC,CAACtvO,IAAI,CAAC,CAAC;QAC5D3lD,SAAS,CAACv5C,OAAO,CAAC0K,QAAQ,IAAI;UAC5B,IAAI8tB,KAAK,GAAG4zE,OAAO,CAACoiO,gBAAgB,CAAC,CAACtvO,IAAI,CAAC,CAACx0F,QAAQ,CAAC,CAAC8tB,KAAK;UAC3DA,KAAK,GAAGjf,UAAU,CAACif,KAAK,CAAC;UACzBgwJ,UAAU,IAAIhwJ,KAAK;UAEnB,IAAIktR,YAAY,GAAGjjT,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;UAC9C0iT,YAAY,CAAC9lT,SAAS,GAAG,GAAG8K,QAAQ,MAAM8tB,KAAK,QAAQ;UAEvDo9H,GAAG,CAAC11J,WAAW,CAACwlT,YAAY,CAAC;QAC/B,CAAC,CAAC;QAEF,IAAIsqB,QAAQ,GAAGvtU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;QAC3CgtU,QAAQ,CAAC1wU,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QAClC,IAAIywU,OAAO,GAAG98S,IAAI,CAACkY,eAAe,CAAC6zD,IAAI,CAAC;QACxC8wO,QAAQ,CAACpwU,SAAS,GAAG,GAAGi5D,MAAM,CAACo3Q,OAAO,CAAC,CAAC1nT,MAAM,CAAC,cAAc,CAAC,MAAMigK,UAAU,QAAQ;QAEtF5yB,GAAG,CAAC3jJ,YAAY,CAAC+9T,QAAQ,EAAEp6K,GAAG,CAAC1+I,UAAU,CAAC;QAC1Cy3T,SAAS,CAACzuU,WAAW,CAAC01J,GAAG,CAAC;MAC5B,CAAC,CAAC;IACJ;IAEA2nK,iBAAiB,CAAC,CAAC;EACrB;EAEA,SAAShoK,gBAAgBA,CAAA,EAAG;IAC1B,IAAIgnK,YAAY,GAAG5iK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC3D,IAAI65T,YAAY,EAAE;IAElB5vN,WAAW,GAAGt4C,SAAS,CAACkhG,gBAAgB,CAAC,CAAC;IAE1Cq5K,aAAa,GAAGnqU,QAAQ,CAAC3B,KAAK,CAAC;MAC7B4B,UAAU,EAAE,yBAAyB;MACrCE,KAAK,EAAE,OAAO;MACdrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACZ,CAAC,CAAC;IACFy3T,eAAe,GAAGz5T,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IACF03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IAEF,IAAIwrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACo8T,eAAe,CAAC;IACpCttR,OAAO,CAAC9uC,WAAW,CAACg7G,eAAe,CAAC;IAEpCvO,WAAW,CAACzsG,WAAW,CAAC0uU,aAAa,CAAC;IACtCjiO,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAChC2qH,MAAM,CAAC1nJ,YAAY,CAAC06F,WAAW,EAAEyvN,UAAU,CAAC;EAC9C;EAEA,SAASmB,iBAAiBA,CAAA,EAAG;IAC3B,IAAIruN,UAAU,GAAGyqD,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAE1D,IAAI,CAACwsG,UAAU,EAAE;MACfA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAC5C48T,UAAU,CAACnqT,YAAY,CAACi9F,UAAU,EAAEy/N,SAAS,CAAC;IAChD;IAEAz/N,UAAU,CAACtvG,SAAS,GAAG;AAC3B,+BAA+B8uU,oBAAoB;AACnD,WAAW;EACT;EAEA,SAASlS,UAAUA,CAAA,EAAG;IACpB,IAAI0T,mBAAmB;IACvB,IAAIC,oBAAoB;IACxB,IAAIC,uBAAuB;IAE3BxB,aAAa,CAAChsU,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEgrU,mBAAmB,GAAG1B,gBAAgB;MACtC2B,oBAAoB,GAAG1B,iBAAiB;MACxC2B,uBAAuB,GAAG1B,oBAAoB;MAE9CF,gBAAgB,GAAGvpU,cAAc,CAAChC,EAAE;MACpCwrU,iBAAiB,GAAGxpU,cAAc,CAACZ,KAAK;MACxCqqU,oBAAoB,GAAGzpU,cAAc,CAACrF,SAAS;IACjD,CAAC,CAAC;IACF08T,eAAe,CAAC15T,gBAAgB,CAAC,OAAO,EAAE,MAAM;MAC9C+pG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAC5C+iO,uBAAuB,CAAC,CAAC;IAC3B,CAAC,CAAC;IACFx0N,eAAe,CAACt4G,gBAAgB,CAAC,OAAO,EAAE,MAAM;MAC9C+pG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAE5C6hO,gBAAgB,GAAG0B,mBAAmB;MACtCzB,iBAAiB,GAAG0B,oBAAoB;MACxCzB,oBAAoB,GAAG0B,uBAAuB;IAChD,CAAC,CAAC;EACJ;EAEA,SAASztU,IAAIA,CAAA,EAAG;IACdg3J,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC;IACzD02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAClDisU,SAAS,GAAGlsU,QAAQ,CAACiD,cAAc,CAAC,kBAAkB,CAAC;;IAEvD;IACA2uD,SAAS,CAACkgG,kBAAkB,CAAC,uBAAuB,EAAE,sBAAsB,CAAC;IAE7EgB,gBAAgB,CAAC,CAAC;IAClBinK,UAAU,CAAC,CAAC;IAEZ6T,qBAAqB,CAACC,YAAY,CAAC,UAAU9+T,KAAK,EAAE++T,SAAS,EAAE;MAC7D1B,qBAAqB,CAAC0B,SAAS,CAAC;MAChChT,iBAAiB,CAAC,CAAC;MAEnB8S,qBAAqB,CAACG,cAAc,CAAC,UAAUh/T,KAAK,EAAEmiJ,WAAW,EAAE;QACjE+7K,uBAAuB,CAAC/7K,WAAW,CAAC;MACtC,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEA,OAAO;IACLhxJ;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC9PJ,IAAI0tU,qBAAqB,GAAI,YAAY;EACvC,SAASC,YAAYA,CAAChsU,QAAQ,EAAE;IAC9BuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gBAAgB;MAClBxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC6gR,kBAAkB;QACrCnsU,QAAQ,CAAC,IAAI,EAAEykD,GAAG,CAAC;MACrB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnClN,QAAQ,CAACkN,KAAK,EAAE,IAAI,CAAC;MACvB;IACF,CAAC,CAAC;EACJ;EAEA,SAASg/T,cAAcA,CAAClsU,QAAQ,EAAE;IAChCuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,8BAA8B;MAChCxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC8gR,gCAAgC;QACnDpsU,QAAQ,CAAC,IAAI,EAAEykD,GAAG,CAAC;MACrB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnClN,QAAQ,CAACkN,KAAK,EAAE,IAAI,CAAC;MACvB;IACF,CAAC,CAAC;EACJ;EAEA,OAAO;IACL8+T,YAAY;IACZE;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACvDJ,IAAI/4K,sBAAsB,GAAI,YAAY;EAEtC,IAAIkC,MAAM;EACV,IAAIyiK,UAAU;EACd,IAAIuU,WAAW;EACf,IAAIC,QAAQ;EACZ,IAAIC,yBAAyB,GAAG,EAAE;EAElC,SAASt7K,gBAAgBA,CAAA,EAAG;IACxB,IAAIgnK,YAAY,GAAG5iK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC3D,IAAI65T,YAAY,EAAE;IAClB5vN,WAAW,GAAGt4C,SAAS,CAACkhG,gBAAgB,CAAC,CAAC;IAE1C+mK,eAAe,GAAGz5T,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IACF03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IACFstU,YAAY,GAAGrsU,QAAQ,CAAC3B,KAAK,CAAC;MAC1B4B,UAAU,EAAE,cAAc;MAC1BE,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,IAAIyrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhCwvC,OAAO,CAAC9uC,WAAW,CAACo8T,eAAe,CAAC;IACpCttR,OAAO,CAAC9uC,WAAW,CAACg7G,eAAe,CAAC;IACpCvO,WAAW,CAACzsG,WAAW,CAAC4wU,YAAY,CAAC;IACrCnkO,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAChC2qH,MAAM,CAAC1nJ,YAAY,CAAC06F,WAAW,EAAEyvN,UAAU,CAAC;EAChD;EAEA,SAASI,UAAUA,CAAA,EAAG;IAClBF,eAAe,CAAC15T,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC/CusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAC5C,IAAIgkO,WAAW,KAAKC,QAAQ,IAAI,CAACA,QAAQ,EACrC;MACJD,WAAW,GAAGC,QAAQ;MACtBz9S,IAAI,CAAC0c,EAAE,CAACO,UAAU,CAAC,2BAA2B,EAAEugS,WAAW,CAAC;MAC5DI,8BAA8B,CAACF,yBAAyB,CAAC;IAC7D,CAAC,CAAC;IACF31N,eAAe,CAACt4G,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC/CusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;IAChD,CAAC,CAAC;IACFmkO,YAAY,CAACluU,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC7CwwU,QAAQ,GAAGxwU,KAAK,CAACC,MAAM,CAACD,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACb,KAAK;IAC7D,CAAC,CAAC;EACN;EAEA,SAASivI,OAAOA,CAAA,EAAG;IACf,IAAI09L,SAAS,GAAG79S,IAAI,CAAC0c,EAAE,CAACC,UAAU,CAAC,2BAA2B,CAAC;IAC/D,IAAIkhS,SAAS,KAAKjqU,SAAS,EAAE;MACzBiqU,SAAS,GAAG,GAAG;MACf79S,IAAI,CAAC0c,EAAE,CAACO,UAAU,CAAC,2BAA2B,EAAE,GAAG,CAAC;IACxD;IACAugS,WAAW,GAAGK,SAAS;IAEvB,MAAMC,gBAAgB,GAAI,CACtB;MAAEhuU,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,CAAC;MAAEjB,IAAI,EAAE;IAAS,CAAC,EACnC;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,CAAC;MAAEjB,IAAI,EAAE;IAAO,CAAC,CACnC;IACF6tU,gBAAgB,CAAC7tQ,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IAC/DqB,QAAQ,CAAC5E,QAAQ,CAAC,cAAc,EAAEoxU,gBAAgB,EAAEN,WAAW,CAAC;EACpE;EAEA,IAAIjnO,YAAY,GAAG;IACfjzF,KAAK,EAAE,IAAI;IACXI,cAAc,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,wBAAwB,CAAC;IACnFhB,OAAO,EAAE;EACb,CAAC;EAED,SAASk7T,8BAA8BA,CAAChoR,GAAG,EAAE;IACzC,IAAImoR,OAAO,GAAGv7T,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAEvC;IACA,MAAMzwF,OAAO,GAAGi4T,OAAO,CAACpoU,gBAAgB,CAAC,aAAa,CAAC;IACvDmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAEhD04T,UAAU,CAACx8T,SAAS,GAAG,EAAE;IACzBw8T,UAAU,CAACl8T,WAAW,CAACgxU,OAAO,CAAC;;IAE/B;IACAv7T,KAAK,CAACqD,iBAAiB,CAACk4T,OAAO,CAAC;IAEhC,IAAIC,SAAS,GAAG,EAAE;IAClBpoR,GAAG,CAAC/oD,OAAO,CAAC8gB,CAAC,IAAI;MACb,IAAI,CAACqwT,SAAS,CAACrwT,CAAC,CAAC0mL,UAAU,CAAC,EAAE;QAC1B2pI,SAAS,CAACrwT,CAAC,CAAC0mL,UAAU,CAAC,GAAG1mL,CAAC;MAC/B,CAAC,MAAM;QACH,MAAMswT,OAAO,GAAGD,SAAS,CAACrwT,CAAC,CAAC0mL,UAAU,CAAC,CAACv4D,YAAY,CAAC/6B,QAAQ,CAACpzF,CAAC,CAACmuH,YAAY,CAAC;QAC7E,IAAI,CAACmiM,OAAO,EAAE;UACVD,SAAS,CAACrwT,CAAC,CAAC0mL,UAAU,CAAC,CAACv4D,YAAY,IAAI,KAAKnuH,CAAC,CAACmuH,YAAY,EAAE;QACjE;QACAkiM,SAAS,CAACrwT,CAAC,CAAC0mL,UAAU,CAAC,CAAC6pI,QAAQ,IAAI,KAAKvwT,CAAC,CAACuwT,QAAQ,EAAE;MACzD;IACJ,CAAC,CAAC;IAEFF,SAAS,CAACr3T,IAAI,CAAC,UAAUjU,CAAC,EAAEuU,CAAC,EAAE;MAC3B,IAAIk3T,EAAE,GAAGzrU,CAAC,CAACopI,YAAY,CAAC3rI,WAAW,CAAC,CAAC;MACrC,IAAIiuU,EAAE,GAAGn3T,CAAC,CAAC60H,YAAY,CAAC3rI,WAAW,CAAC,CAAC;MAErC,IAAIguU,EAAE,GAAGC,EAAE,EAAE,OAAO,CAAC,CAAC;MACtB,IAAID,EAAE,GAAGC,EAAE,EAAE,OAAO,CAAC;MACrB,OAAO,CAAC;IACZ,CAAC,CAAC;IAEFJ,SAAS,CAACr3T,IAAI,CAAC,UAAUjU,CAAC,EAAEuU,CAAC,EAAE;MAC3B,OAAO,IAAIZ,IAAI,CAACY,CAAC,CAACisL,YAAY,CAAC,GAAG,IAAI7sL,IAAI,CAAC3T,CAAC,CAACwgM,YAAY,CAAC;IAC9D,CAAC,CAAC;IAEF,IAAIhjL,IAAI,GAAG9B,MAAM,CAAC8B,IAAI,CAAC8tT,SAAS,CAAC;IACjC,MAAMK,WAAW,GAAG,EAAE;IACtB,IAAInyU,KAAK,GAAG,CAAC;IACb,IAAImG,IAAI,GAAG6d,IAAI,CACVpV,MAAM,CAACuW,CAAC,IAAI;MACT,IAAI+oB,GAAG,GAAG4jS,SAAS,CAAC3sT,CAAC,CAAC;MAEtB,IAAI3T,CAAC,CAACC,OAAO,CAACiuC,wBAAwB,CAACh/C,MAAM,KAAK,CAAC,EAAE;QACjD,IACIwtC,GAAG,CAACyvE,WAAW,KAAK,EAAE,IACtB,CAACnsG,CAAC,CAACC,OAAO,CAACiuC,wBAAwB,CAACm1D,QAAQ,CAAC3mE,GAAG,CAACyvE,WAAW,CAAC15G,WAAW,CAAC,CAAC,CAAC,EAC7E;UACE,OAAO,KAAK;QAChB;MACJ;MAEA,OAAO,IAAI;IACf,CAAC,CAAC,CACDkG,GAAG,CAACsX,CAAC,IAAI;MACN,IAAIysB,GAAG,GAAG4jS,SAAS,CAACrwT,CAAC,CAAC;MAEtB,IAAIvY,IAAI,GAAGglC,GAAG,CAAC0hG,YAAY,CAACrrH,KAAK,CAAC,GAAG,CAAC;MACtCrb,IAAI,GAAG,GAAGA,IAAI,CAAC,CAAC,CAAC,KAAKA,IAAI,CAAC,CAAC,CAAC,EAAE;MAC/B,IAAIihB,IAAI,GAAG2J,IAAI,CAACyW,kBAAkB,CAAC2D,GAAG,CAAC84J,YAAY,CAACziL,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAClE,IAAI6tT,QAAQ,GAAG3wT,CAAC,CAAC2wT,QAAQ,GAAG,IAAI,GAAG,KAAK;MACxC,IAAIC,SAAS,GACTnkS,GAAG,CAACokS,mBAAmB,CAACruU,WAAW,CAAC,CAAC,KAAKuN,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC1sC,WAAW,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK;MAC3F,IAAIsuU,aAAa,GAAGrkS,GAAG,CAAC8jS,QAAQ,CAACn9N,QAAQ,CAACrjG,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK;MAC1E,IAAI6hS,QAAQ;MAEZ,IAAI,CAACH,SAAS,IAAI,CAACE,aAAa,EAAE;QAC9BC,QAAQ,GAAG,IAAI;MACnB;MACA,IAAIlB,WAAW,IAAI,CAAC,IAAIkB,QAAQ,EAAE;QAC9BL,WAAW,CAAC3jU,IAAI,CAACxO,KAAK,CAAC;MAC3B,CAAC,MACI,IAAIsxU,WAAW,IAAI,CAAC,IAAI,CAACkB,QAAQ,EAAE;QACpCL,WAAW,CAAC3jU,IAAI,CAACxO,KAAK,CAAC;MAC3B;MACAA,KAAK,GAAGA,KAAK,GAAG,CAAC;MACjB,OAAO;QACH0Y,MAAM,EAAE,CAACxP,IAAI,EAAEihB,IAAI,EAAE+jB,GAAG,CAACukS,gBAAgB,CAAC;QAC1C5tU,UAAU,EAAE,CAAC;UAAEE,GAAG,EAAE,aAAa;UAAEC,KAAK,EAAEwtU;QAAS,CAAC,CAAC;QACrD5uU,EAAE,EAAEsqC,GAAG,CAACi6J,UAAU;QAClB5vL,OAAO,EAAE,MAAAA,CAAA,KAAY;UACjB,MAAM0tL,oBAAoB,CAACuG,wBAAwB,CAAC;YAChDx8J,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;YACtBquJ,UAAU,EAAEj6J,GAAG,CAACi6J,UAAU;YAC1Bz4I,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B;UACtB,CAAC,CAAC;UAEFikH,gBAAgB,CAACpnB,eAAe,CAAC,MAAM;YACnCp3B,+BAA+B,CAAC,2BAA2B,CAAC;YAC5DtiF,IAAI,CAACod,uBAAuB,CAAC,kBAAkB,CAAC;YAChD9vC,YAAY,CAACH,OAAO,CAACE,YAAY,GAAG,kBAAkB;YACtDuxU,cAAc,CAACpvU,IAAI,CAAC4qC,GAAG,CAACi6J,UAAU,CAAC;UACvC,CAAC,CAAC;QACN;MACJ,CAAC;IACL,CAAC,CAAC;IACN,KAAK,IAAI78L,CAAC,GAAG6mU,WAAW,CAACzxU,MAAM,GAAG,CAAC,EAAE4K,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAC5CnF,IAAI,CAACqpB,MAAM,CAAC2iT,WAAW,CAAC7mU,CAAC,CAAC,EAAE,CAAC,CAAC;IAElCgL,KAAK,CAAC9V,QAAQ,CAACqxU,OAAO,EAAE1rU,IAAI,CAAC;EACjC;EAEA,SAAS7C,IAAIA,CAAA,EAAG;IACZg3J,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,wBAAwB,CAAC;IAC1D,IAAI,CAACi0J,MAAM,EAAE;IACbyiK,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAClD2xD,SAAS,CAACkgG,kBAAkB,CACxB,wBAAwB,EACxB,2BACJ,CAAC;IACDo8K,WAAW,GAAG,GAAG;IACjBp7K,gBAAgB,CAAC,CAAC;IAClBinK,UAAU,CAAC,CAAC;IACZlpL,OAAO,CAAC,CAAC;IACT0+L,0BAA0B,CAACC,4BAA4B,CAAClpR,GAAG,IAAI;MAC3D8nR,yBAAyB,GAAG9nR,GAAG;MAC/BgoR,8BAA8B,CAACF,yBAAyB,CAAC;IAC7D,CAAC,CAAC;EAEN;EAEA,OAAO;IACHluU;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACnNJ,IAAIqvU,0BAA0B,GAAI,YAAY;EAC5C;EACA,SAASC,4BAA4BA,CAAC3tU,QAAQ,EAAE;IAC9CuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAC9BxoD,IAAI,EACF,YAAY,GACZqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GACf,oBAAoB,GACpBtoC,CAAC,CAACC,OAAO,CAACsuC,4BAA4B,GACtC,IAAI;MACNqQ,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACsiR,8BAA8B;QACjD5tU,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnClN,QAAQ,CAACkN,KAAK,EAAE,IAAI,CAAC;MACvB;IACF,CAAC,CAAC;EACJ;EAEA,OAAO;IACLygU;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACnCJ,IAAIl5K,oBAAoB,GAAI,YAAW;EACtC,IAAIluJ,QAAQ;EACZ,IAAIsnU,MAAM,GAAGrrR,UAAU,CAAC,IAAI,CAAC;EAC7B,IAAIsrR,IAAI,GAAG,CAAC,CAAC;EACb,IAAIC,QAAQ,GAAG,EAAE;EACjB,IAAIC,cAAc,GAAG,CAAC,CAAC;EACvB,IAAIC,UAAU;EACd,IAAIC,iBAAiB;EACrB,IAAI7hO,EAAE;EACN,IAAIy1L,WAAW;EACf,IAAIqsC,qBAAqB;EACzB,IAAI5+K,SAAS,GAAG7jI,OAAO;EACvB,IAAI0iT,mBAAmB;EACvB,IAAIC,mBAAmB,GAAGlwU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;EACvD,IAAI4vU,kBAAkB,GAAGnwU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;EACtD,IAAI6vU,sBAAsB,GAAGpwU,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;EAC1D,IAAIvC,YAAY;EAGhB,SAASqyU,UAAUA,CAAC3hL,GAAG,EAAE4hL,KAAK,EAAE;IAC/B,IAAI5hL,GAAG,EAAE;MACR,MAAM,OAAO;IACd;IACA;IACA,IAAI4hL,KAAK,KAAKhsU,SAAS,EAAE;MACxB,IAAIgsU,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,CAACC,YAAY,EAAEriO,EAAE,GAAGoiO,KAAK,CAAC,CAAC,CAAC,CAACC,YAAY;MACjE;MAAA,KACKriO,EAAE,GAAGwhO,MAAM;IACjB,CAAC,MAAM;MACN;MACAxhO,EAAE,GAAGwhO,MAAM;IACZ;EACD;EAEA,SAASc,OAAOA,CAAA,EAAI;IACnBhmI,SAAS,CAACH,gBAAgB,CAAC;MAAE7pM,EAAE,EAAE0tG;IAAG,CAAC,EAAE,UAASwgD,GAAG,EAAE+hL,UAAU,EAAE;MACjE,IAAI/hL,GAAG,EAAE;QACRtgJ,CAAC,CAAC,2CAA2C,CAAC,CAACnR,IAAI,CAAC,CAAC;QACrD,IAAI4E,QAAQ,EAAEA,QAAQ,CAAC,OAAO,CAAC;QAC/B,MAAM,OAAO;MACd,CAAC,MAAM;QACN8tU,IAAI,GAAGc,UAAU;QACjBC,mBAAmB,CAAC,CAAC;MACrB;IACD,CAAC,CAAC;EACH;EAEA,SAASC,sBAAsBA,CAAC5tU,IAAI,EAAE;IACrCA,IAAI,CAACxF,OAAO,CAAC2F,CAAC,IAAI;MACjB,IAAI,CAAC2sU,cAAc,CAAC3sU,CAAC,CAACgrG,EAAE,CAAC,EAAE;QAC1B2hO,cAAc,CAAC3sU,CAAC,CAACgrG,EAAE,CAAC,GAAGhrG,CAAC;MACzB;IACD,CAAC,CAAC;EACH;EAEA,SAAS0tU,cAAcA,CAAA,EAAI;IAC1BpmI,SAAS,CAACI,2BAA2B,CAAC;MAAEpqM,EAAE,EAAE0tG;IAAG,CAAC,EAAE,UAASwgD,GAAG,EAAE3rJ,IAAI,EAAC;MACrE,IAAI2rJ,GAAG,EAAE;QACRtgJ,CAAC,CAAC,2CAA2C,CAAC,CAACnR,IAAI,CAAC,CAAC;QACrD,IAAI4E,QAAQ,EAAEA,QAAQ,CAAC,OAAO,CAAC;QAC/B,MAAM,OAAO;MACd,CAAC,MAAM;QACN+tU,QAAQ,GAAG7sU,IAAI;QACf4tU,sBAAsB,CAAC5tU,IAAI,CAAC;QAC5B;QACA6sU,QAAQ,CAACv4T,IAAI,CAAC,CAACjU,CAAC,EAACuU,CAAC,KAAMvU,CAAC,CAACytU,kBAAkB,GAAGl5T,CAAC,CAACk5T,kBAAkB,GAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9E;QACAC,cAAc,CAAClB,QAAQ,CAAC;QACxB;QACA,MAAMmB,eAAe,GAAGnB,QAAQ,CAAC59Q,IAAI,CAACg/Q,MAAM,IAAIA,MAAM,CAACC,OAAO,KAAK,EAAE,CAAC;QACtE,IAAIrB,QAAQ,CAACtyU,MAAM,IAAI,CAAC,EAAG;UAC1B8yU,sBAAsB,CAACjzU,SAAS,GAAG,8BAA8B;UACjEi0J,SAAS,GAAG,KAAK;UACjB4+K,qBAAqB,CAAC7yU,SAAS,GAAG,UAAU;UAC5C6yU,qBAAqB,CAAC/uU,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC;UAC7DgvU,mBAAmB,CAACnvU,KAAK,CAACoK,OAAO,GAAG,MAAM;UAC1CilU,kBAAkB,CAAChzU,SAAS,GAAG,4BAA4B;QAC5D,CAAC,MAAM,IAAI4zU,eAAe,EAAC;UAC1B3/K,SAAS,GAAG,IAAI;UAChB8/K,gBAAgB,CAACtB,QAAQ,CAAC;UAC1BI,qBAAqB,CAAC7yU,SAAS,GAAG,WAAW;UAC7C6yU,qBAAqB,CAAC/uU,YAAY,CAAC,mBAAmB,EAAE,KAAK,CAAC;UAC9D0iS,WAAW,CAAC7iS,KAAK,CAACoK,OAAO,GAAG,MAAM;UACtBklU,sBAAsB,CAACjzU,SAAS,GAAG,0BAA0B,GAAG4zU,eAAe,CAACI,mBAAmB,GAAG,MAAM,GAAGJ,eAAe,CAACK,MAAM,CAACxmU,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACrK,CAAC,MAAM;UACNwlU,sBAAsB,CAACjzU,SAAS,GAAG,8BAA8B;UACjEi0J,SAAS,GAAG,KAAK;UACjB4+K,qBAAqB,CAAC7yU,SAAS,GAAG,UAAU;UAC5C6yU,qBAAqB,CAAC/uU,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC;QAC9D;MACD;IACD,CAAC,CAAC;EACF;EAEA,SAASyvU,mBAAmBA,CAAA,EAAG;IAC9B,IAAI3tU,IAAI,GAAG4sU,IAAI,CAAC5oU,GAAG,CAACqb,CAAC,IAAI;MACxB,IAAI5hB,EAAE,GAAG4hB,CAAC,CAACyuT,kBAAkB;MAC7B,IAAIjvU,KAAK,GAAGwgB,CAAC,CAACivT,eAAe;MAC7B,IAAI1wU,IAAI,GAAGyhB,CAAC,CAACzhB,IAAI;MACjB,OAAM;QACLH,EAAE;QACFoB,KAAK;QACLjB;MACD,CAAC;IACF,CAAC,CAAC;IACFqB,QAAQ,CAAC5E,QAAQ,CAAC,cAAc,EAAE2F,IAAI,CAAC;IACvCuuU,WAAW,GAAG3B,IAAI,CAAC,CAAC,CAAC,CAACkB,kBAAkB;IACxCU,sBAAsB,GAAG5B,IAAI,CAAC,CAAC,CAAC,CAAC0B,eAAe;IAChD1tC,WAAW,CAACxjS,gBAAgB,CAAC,QAAQ,EAAE,MAAM;MAC5C,IAAIqC,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE6uU,WAAW,GAAG9uU,cAAc,CAAChC,EAAE;MAC/B+wU,sBAAsB,GAAG/uU,cAAc,CAACZ,KAAK;IAC9C,CAAC,CAAC;EACH;EAEA,SAAS4vU,YAAYA,CAAC/yT,CAAC,EAAE;IACxBrW,QAAQ,GAAGqW,CAAC;IACZgzT,WAAW,CAAC,CAAC;EACd;EACA;EACA,SAAS56L,WAAWA,CAAA,EAAG;IACtB,IAAI1pH,SAAS,CAAC6c,WAAW,EAAE;MAC1B7c,SAAS,CAAC6c,WAAW,CAACC,kBAAkB,CAACunS,YAAY,EAAEC,WAAW,CAAC,CAAC;IACrE,CAAC,MAAM;MACN;MACAA,WAAW,CAAC,CAAC;IACd;EACD;EACA;EACA,SAASpoK,OAAOA,CAAA,EAAI;IACnB,IAAIjkJ,QAAQ,GAAGgxC,MAAM,CAAC,IAAIr/C,IAAI,CAAC,CAAC,CAAC;MACjC26T,MAAM,GAAGtsT,QAAQ,CAACU,MAAM,CAAC,YAAY,CAAC;MACtCuQ,SAAS,GAAGjR,QAAQ,CAACU,MAAM,CAAC,OAAO,CAAC;MACpC6rT,SAAS,GAAGvsT,QAAQ,CAACU,MAAM,CAAC,GAAG,CAAC;IAChC,IAAIu3S,OAAO,GAAG;MACduU,WAAW,EAAE1jO,EAAE,GAAG,EAAE;MACpB2jO,WAAW,EAAEP,WAAW,GAAG,EAAE;MAC7BQ,WAAW,EAAE,GAAG;MAChBC,YAAY,EAAE,GAAG;MACjBL,MAAM,EAAEA,MAAM;MACdM,SAAS,EAAE37S,SAAS,GAAG,EAAE;MACzB47S,SAAS,EAAEN,SAAS,GAAG;IACvB,CAAC;IAED,IAAIvpU,QAAQ,EAAE;MACZ,IAAIuhC,QAAQ,GAAGvhC,QAAQ,CAACshC,MAAM,CAACC,QAAQ;MACvC,IAAIE,SAAS,GAAGzhC,QAAQ,CAACshC,MAAM,CAACG,SAAS;MAExCwzR,OAAO,CAACyU,WAAW,GAAGnoS,QAAQ;MAC/B0zR,OAAO,CAAC0U,YAAY,GAAGloS,SAAS;IACjC;IAED2gK,SAAS,CAACM,gBAAgB,CAACuyH,OAAO,EAAEn1N,OAAO,IAAI;MAC9C6nO,iBAAiB,GAAG7nO,OAAO,CAACgqO,kBAAkB;MAC9CC,cAAc,CAAC,CAAC;MAChBhC,kBAAkB,CAAChzU,SAAS,GAAG,EAAE;IAClC,CAAC,CAAC;IACFwmS,WAAW,CAAC7iS,KAAK,CAACoK,OAAO,GAAG,MAAM;IAClC+kU,mBAAmB,CAACnvU,KAAK,CAACoK,OAAO,GAAG,OAAO;IACrCklU,sBAAsB,CAACjzU,SAAS,GAAG,0BAA0B,GAAGo0U,sBAAsB,GAAG,MAAM,GAAGl7S,SAAS,CAACzrB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG+mU,SAAS;EACjJ;EACA;EACA,SAASroK,QAAQA,CAAA,EAAI;IACpB8mK,sBAAsB,CAACjzU,SAAS,GAAG,8BAA8B;IACjE+zU,gBAAgB,CAACtB,QAAQ,CAAC;IAC1B,IAAIxqT,QAAQ,GAAGgxC,MAAM,CAAC,IAAIr/C,IAAI,CAAC,CAAC,CAAC;MACjCq7T,OAAO,GAAGhtT,QAAQ,CAACU,MAAM,CAAC,YAAY,CAAC;MACvCusT,OAAO,GAAGjtT,QAAQ,CAACU,MAAM,CAAC,OAAO,CAAC;MAClCwsT,WAAW,GAAGltT,QAAQ,CAACU,MAAM,CAAC,GAAG,CAAC;IAClC,IAAIu3S,OAAO,GAAG;MACbuU,WAAW,EAAE1jO,EAAE;MACf2jO,WAAW,EAAE/B,UAAU;MACvByC,WAAW,EAAExC,iBAAiB;MAC9ByC,YAAY,EAAE,GAAG;MACjBC,aAAa,EAAE,GAAG;MAClBL,OAAO,EAAEA,OAAO,GAAG,EAAE;MACrBC,OAAO,EAAEA,OAAO,GAAG,EAAE;MACrBC,WAAW,EAAEA,WAAW,GAAG,EAAE;MAC7BI,IAAI,EAAE7C,cAAc,CAACE,iBAAiB,CAAC,CAAC2C,IAAI,KAAK,IAAI,GAAG,EAAE,GAAE7C,cAAc,CAACE,iBAAiB,CAAC,CAAC2C;IAE9F,CAAC;IAED,IAAItqU,QAAQ,EAAE;MACb,IAAIuhC,QAAQ,GAAGvhC,QAAQ,CAACshC,MAAM,CAACC,QAAQ;MACvC,IAAIE,SAAS,GAAGzhC,QAAQ,CAACshC,MAAM,CAACG,SAAS;MAExCwzR,OAAO,CAACmV,YAAY,GAAG7oS,QAAQ;MAChC0zR,OAAO,CAACoV,aAAa,GAAG5oS,SAAS;IAClC;IAED2gK,SAAS,CAACQ,iBAAiB,CAACqyH,OAAO,EAAEh/S,CAAC,IAAI;MACzC8zT,cAAc,CAAC,CAAC;MAChBxuC,WAAW,CAAC7iS,KAAK,CAACoK,OAAO,GAAG,MAAM;IACnC,CAAC,CAAC;EACH;EAEA,SAASynU,SAASA,CAACC,UAAU,EAAE;IAC9B,IAAI17K,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,0BAA0B,CAAC;IAChE,IAAI02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IACtD;IACA,IAAI4P,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACvBgB,UAAU,EAAE,oBAAoB;MAChC2O,MAAM,EAAE;IACT,CAAC,CAAC;IACF;IACA;;IAEA4iU,UAAU,GAAGhrT,QAAQ,CAACgrT,UAAU,CAAC;IACjC,IAAItiM,OAAO,GAAGlwI,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,SAAAA,CAAA,EAAW;QACpBguU,cAAc,CAAC+C,UAAU,CAAC,CAACF,IAAI,GAAG1yU,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAACrB,KAAK;QAC5E;QACA,IAAIiuU,cAAc,CAAC+C,UAAU,CAAC,CAACF,IAAI,KAAK,IAAI,IAAI7C,cAAc,CAAC+C,UAAU,CAAC,CAACF,IAAI,KAAK,EAAE,EAAE;UACvF,IAAI5+T,GAAG,GAAG9T,QAAQ,CAACiD,cAAc,CAAC2vU,UAAU,CAAC;UAC7C9+T,GAAG,CAACjX,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;QAClC,CAAC,MAAM;UACN,IAAI+W,GAAG,GAAG9T,QAAQ,CAACiD,cAAc,CAAC2vU,UAAU,CAAC;UAC7C9+T,GAAG,CAACjX,SAAS,CAACC,MAAM,CAAC,cAAc,CAAC;QACrC;QACAoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;QACd+S,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB;QACA9C,cAAc,CAACC,gBAAgB,CAAC6C,KAAK,CAAC;MACvC;IACD,CAAC,CAAC;IAEF,IAAIgjU,QAAQ,GAAGzyU,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBN,IAAI,EAAE,OAAO;MACboB,QAAQ,EAAE,SAAAA,CAAA,EAAW;QACpB7B,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAACrB,KAAK,GAAG,EAAE;MAChD;IACD,CAAC,CAAC;IAEF,IAAIkxU,SAAS,GAAGjvU,KAAK,CAACxD,KAAK,CAAC;MAC3BG,EAAE,EAAE,WAAW;MACf2B,KAAK,EAAE,MAAM;MACbpB,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEiuU,cAAc,CAAC+C,UAAU,CAAC,CAACF,IAAI;MACtCtwU,QAAQ,EAAEwwU,UAAU,KAAK7C,iBAAiB,IAAI3+K,SAAS,GAAG,KAAK,GAAG;IACnE,CAAC,CAAC;IACFvhJ,KAAK,CAACpS,WAAW,CAACq1U,SAAS,CAAC;IAC5B,IAAI/C,iBAAiB,KAAK6C,UAAU,IAAIxhL,SAAS,EAAE;MAClD7kH,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACvCgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAChCwvC,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC;MAC5B/jG,OAAO,CAAC9uC,WAAW,CAACo1U,QAAQ,CAAC;MAC7BhjU,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC3B;IAEAx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EAClB;EAEAmgU,qBAAqB,GAAG5vU,MAAM,CAACC,KAAK,CAAC;IACpCG,EAAE,EAAE,oBAAoB;IACxBa,UAAU,EAAE,oBAAoB;IAChCV,IAAI,EAAE,EAAE;IACRG,KAAK,EAAE,WAAW;IAClBC,IAAI,EAAE,WAAW;IACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;MACrB,IAAIuvJ,SAAS,EAAE;QACdkY,QAAQ,CAAC,CAAC;QACV0mK,qBAAqB,CAAC7yU,SAAS,GAAG,UAAU;QAC5C6yU,qBAAqB,CAAC/uU,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC;QAC7D6uU,UAAU,GAAG,EAAE;QACf1+K,SAAS,GAAG,CAACA,SAAS;MACvB,CAAC,MAAM;QACNiY,OAAO,CAAC,CAAC;QACT2mK,qBAAqB,CAAC7yU,SAAS,GAAG,WAAW;QAC7C6yU,qBAAqB,CAAC/uU,YAAY,CAAC,mBAAmB,EAAE,KAAK,CAAC;QAC9DmwJ,SAAS,GAAG,CAACA,SAAS;MACvB;IACD;EACD,CAAC,CAAC;EAEF,SAAS0/K,cAAcA,CAAClB,QAAQ,EAAE;IAEjC,IAAItvU,OAAO,GAAG;MACb8T,cAAc,EAAC,CACd,KAAK,EACL,SAAS,EACT,UAAU,CACV;MACDhB,OAAO,EAAE,2BAA2B;MACpCvR,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACrB8wU,SAAS,CAACh1U,KAAK,CAACC,MAAM,CAAC4C,EAAE,CAAC;MAC3B;IACD,CAAC;IAEDyvU,mBAAmB,GAAG/8T,KAAK,CAAC7S,KAAK,CAACC,OAAO,CAAC;IAC1C,IAAI42J,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,0BAA0B,CAAC;IAChE,IAAI02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAKtD05T,UAAU,CAACl8T,WAAW,CAACwyU,mBAAmB,CAAC;IAC3CtW,UAAU,CAACl8T,WAAW,CAAC0yU,kBAAkB,CAAC;IAC1C,IAAIptU,IAAI,GAAG6sU,QAAQ,CAAC7oU,GAAG,CAACgX,CAAC,IAAI;MAC5B,OAAO;QACNzI,MAAM,EAAE,CACPyI,CAAC,CAACozT,mBAAmB,EACrBpzT,CAAC,CAACqzT,MAAM,EACRrzT,CAAC,CAACkzT,OAAO,CACT;QACDzwU,EAAE,EAAEud,CAAC,CAACmwF;MACP,CAAC;IACF,CAAC,CAAC;IACFh7F,KAAK,CAAC9V,QAAQ,CAAC,2BAA2B,EAAE2F,IAAI,CAAC;;IAEjD;IACA,IAAIwd,CAAC;IACL,KAAKA,CAAC,IAAIsvT,cAAc,EAAE;MACzB,IAAIA,cAAc,CAACtvT,CAAC,CAAC,CAACmyT,IAAI,KAAK,IAAI,IAAI7C,cAAc,CAACtvT,CAAC,CAAC,CAACmyT,IAAI,KAAK,EAAE,EAAE;QACrE,IAAI5+T,GAAG,GAAG9T,QAAQ,CAACiD,cAAc,CAACsd,CAAC,CAAC;QACpCzM,GAAG,CAACjX,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;MAClC;IACD;EACD;;EAEA;EACA,SAASo1U,cAAcA,CAAA,EAAG;IACzB3nI,SAAS,CAACI,2BAA2B,CAAC;MAAEpqM,EAAE,EAAE0tG;IAAG,CAAC,EAAE,UAASwgD,GAAG,EAAE3rJ,IAAI,EAAC;MACpE,IAAI2rJ,GAAG,EAAE;QACRtgJ,CAAC,CAAC,2CAA2C,CAAC,CAACnR,IAAI,CAAC,CAAC;QACrD,IAAI4E,QAAQ,EAAEA,QAAQ,CAAC,OAAO,CAAC;QAC/B,MAAM,OAAO;MACd,CAAC,MAAM;QACN+tU,QAAQ,GAAG7sU,IAAI;QACf6sU,QAAQ,CAACv4T,IAAI,CAAC,CAACjU,CAAC,EAACuU,CAAC,KAAMvU,CAAC,CAACytU,kBAAkB,GAAGl5T,CAAC,CAACk5T,kBAAkB,GAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9EK,gBAAgB,CAACtB,QAAQ,CAAC;QAC1Be,sBAAsB,CAAC5tU,IAAI,CAAC;QAC5B,IAAIyqG,SAAS,GAAGoiO,QAAQ,CAAC7oU,GAAG,CAACgX,CAAC,IAAI;UACjC,OAAO;YACNzI,MAAM,EAAE,CACPyI,CAAC,CAACozT,mBAAmB,EACrBpzT,CAAC,CAACqzT,MAAM,EACRrzT,CAAC,CAACkzT,OAAO,CACT;YACDzwU,EAAE,EAAEud,CAAC,CAACmwF;UACP,CAAC;QACF,CAAC,CAAC;QACFh7F,KAAK,CAAC9V,QAAQ,CAAC,2BAA2B,EAAEowG,SAAS,CAAC;QACtD;QACA,IAAIjtF,CAAC;QACL,KAAKA,CAAC,IAAIsvT,cAAc,EAAE;UACzB,IAAIA,cAAc,CAACtvT,CAAC,CAAC,CAACmyT,IAAI,KAAK,IAAI,IAAI7C,cAAc,CAACtvT,CAAC,CAAC,CAACmyT,IAAI,KAAK,EAAE,EAAE;YACrE,IAAI5+T,GAAG,GAAG9T,QAAQ,CAACiD,cAAc,CAACsd,CAAC,CAAC;YACpCzM,GAAG,CAACjX,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;UAClC;QACD;MACD;IACD,CAAC,CAAC;EACH;EAEA,SAASm0U,gBAAgBA,CAACtB,QAAQ,EAAE;IACnC,MAAMmB,eAAe,GAAGnB,QAAQ,CAAC59Q,IAAI,CAACg/Q,MAAM,IAAIA,MAAM,CAACC,OAAO,KAAK,EAAE,CAAC;IACtE,IAAI,CAACF,eAAe,EAAE;IACtBhB,iBAAiB,GAAGgB,eAAe,CAAC7iO,EAAE;IACtC4hO,UAAU,GAAGiB,eAAe,CAACgC,UAAU;EACxC;EAEA,IAAIC,eAAe,GAAI,SAAAA,CAAA,EAAW;IACjC,IAAI97K,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,0BAA0B,CAAC;IAChE,IAAI02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IACtDiwU,mBAAmB,CAACjvU,YAAY,CAAC,IAAI,EAAE,qBAAqB,CAAC;IAC7DkvU,kBAAkB,CAAClvU,YAAY,CAAC,IAAI,EAAE,oBAAoB,CAAC;IAC3DmvU,sBAAsB,CAACnvU,YAAY,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACnE0iS,WAAW,GAAG3hS,QAAQ,CAAC3B,KAAK,CAAC;MACxB4B,UAAU,EAAE,cAAc;MAC/BE,KAAK,EAAE,KAAK;MACZrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACV,CAAC,CAAC;IACFu3T,UAAU,CAACl8T,WAAW,CAAC2yU,sBAAsB,CAAC;IAC9CzW,UAAU,CAACl8T,WAAW,CAACyyU,mBAAmB,CAAC;IAC3CA,mBAAmB,CAACzyU,WAAW,CAACkmS,WAAW,CAAC;IAC5CusC,mBAAmB,CAACzyU,WAAW,CAACuyU,qBAAqB,CAAC;EAIvD,CAAE;EAEF,SAASyB,WAAWA,CAAA,EAAE;IACrBpB,UAAU,CAAC,CAAC;IACZ2C,eAAe,CAAC,CAAC;IACjBpC,cAAc,CAAC,CAAC;IAChBJ,OAAO,CAAC,CAAC;EACV;EAEA,SAAStwU,IAAIA,CAAA,EAAG;IACflC,YAAY,GAAGgC,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC;IACtD4zI,WAAW,CAAC,CAAC;EACd;EAEE,OAAO;IACN32I;EACD,CAAC;AACF,CAAC,CAAE,CAAC;ACrZN,IAAI+yU,kBAAkB,GAAI,YAAY;EACpC;EACA,SAASzC,OAAOA,CAAA,EAAG;IACjB,IAAIhwU,EAAE,GAAG6jD,UAAU,CAAC,IAAI,CAAC;IACzBj2C,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZ;MACA;MACAoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gBAAgB;MAClBxoD,IAAI,EAAE,SAAS,GAAGvC,EAAE,GAAG,IAAI;MAC3BwsD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClC+lR,oBAAoB,CAAC5sR,GAAG,CAAC;MAC3B,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnC;MAAA;IAEJ,CAAC,CAAC;EACJ;EAEA,SAASokU,qBAAqBA,CAACC,KAAK,EAAEC,KAAK,EAAEC,KAAK,EAAEC,MAAM,EAAE7B,MAAM,EAAEr7S,SAAS,EAAE+zB,IAAI,EAAE;IACnF,IAAIopR,WAAW,GAAG;MAChB5B,WAAW,EAAEwB,KAAK;MAClBvB,WAAW,EAAEwB,KAAK;MAClBvB,WAAW,EAAEwB,KAAK;MAClBvB,YAAY,EAAEwB,MAAM;MACpB7B,MAAM,EAAEA,MAAM;MACdM,SAAS,EAAE37S,SAAS;MACpB47S,SAAS,EAAE7nR;IACb,CAAC;IAEDi/G,OAAO,CAACmqK,WAAW,CAAC;EACtB;EAEA,SAASnqK,OAAOA,CAACmqK,WAAW,EAAE;IAC5BplU,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,gBAAgB;MAClB;MACAxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC+oT,WAAW,CAAC;MACjCxmR,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClCsmR,kBAAkB,CAACntR,GAAG,CAAC;MACzB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnC;MAAA;IAEJ,CAAC,CAAC;EACJ;EAEA,SAAS2kU,sBAAsBA,CAC7BN,KAAK,EACLC,KAAK,EACLM,KAAK,EACLC,MAAM,EACNC,OAAO,EACPzB,OAAO,EACP98S,OAAO,EACP80B,IAAI,EACJ0pR,IAAI,EACJ;IACA,IAAIC,YAAY,GAAG;MACjBnC,WAAW,EAAEwB,KAAK;MAClBvB,WAAW,EAAEwB,KAAK;MAClBd,WAAW,EAAEoB,KAAK;MAClBnB,YAAY,EAAEoB,MAAM;MACpBnB,aAAa,EAAEoB,OAAO;MACtBzB,OAAO,EAAEA,OAAO;MAChBC,OAAO,EAAE/8S,OAAO;MAChBg9S,WAAW,EAAEloR,IAAI;MACjBsoR,IAAI,EAAEoB;IACR,CAAC;IAEDxqK,QAAQ,CAACyqK,YAAY,CAAC;EACxB;EAEA,SAASzqK,QAAQA,CAACyqK,YAAY,EAAE;IAC9B3lU,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iBAAiB;MACnB;MACAxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACspT,YAAY,CAAC;MAClC/mR,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClC6mR,mBAAmB,CAAC1tR,GAAG,CAAC;MAC1B,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnChE,OAAO,CAACu6B,GAAG,CAAC8nB,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,CAAC;MACjC;IACF,CAAC,CAAC;EACJ;EAEA,SAASklU,aAAaA,CAACzzU,EAAE,EAAEqoD,IAAI,EAAE;IAC/Bz6C,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZ;MACA;MACAoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iBAAiB;MACnBxoD,IAAI,EAAE,SAAS,GAAGvC,EAAE,GAAG,aAAa,GAAGqoD,IAAI,GAAG,IAAI;MAClDmE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClC9C,WAAW,CAAC/D,GAAG,CAAC;MAClB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnChE,OAAO,CAACu6B,GAAG,CAAC8nB,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,CAAC;MACjC;IACF,CAAC,CAAC;EACJ;EAEA,OAAO;IACLyhU,OAAO;IACP2C,qBAAqB;IACrB9pK,OAAO;IACPqqK,sBAAsB;IACtBpqK,QAAQ;IACR2qK;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC7JJ,MAAMljL,mBAAmB,GAAI,YAAW;EACtC,IAAImG,MAAM;EACV,IAAIyiK,UAAU;EACd,IAAIE,eAAe;EACnB,IAAIphN,eAAe;EACnB,IAAIvO,WAAW;EACf;EACA,IAAIgqO,6BAA6B;EACjC,IAAIC,gBAAgB;EACpB;EACA,IAAIC,uBAAuB;EAC3B,IAAIC,gCAAgC;EACpC,IAAIvP,mBAAmB;EACvB,IAAIC,gBAAgB;EAEpB,SAASjyK,gBAAgBA,CAAA,EAAG;IAC1B,IAAIgnK,YAAY,GAAG5iK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC3D,IAAI65T,YAAY,EAAE;IAClB5vN,WAAW,GAAGt4C,SAAS,CAACkhG,gBAAgB,CAAC,CAAC;IAE1C+mK,eAAe,GAAGz5T,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IACF03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IACFmzU,6BAA6B,GAAGlyU,QAAQ,CAAC3B,KAAK,CAAC;MAC7C4B,UAAU,EAAE,+BAA+B;MAC3CE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,IAAIyrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhCwvC,OAAO,CAAC9uC,WAAW,CAACo8T,eAAe,CAAC;IACpCttR,OAAO,CAAC9uC,WAAW,CAACg7G,eAAe,CAAC;IACpCvO,WAAW,CAACzsG,WAAW,CAACy2U,6BAA6B,CAAC;IACtDhqO,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAChC2qH,MAAM,CAAC1nJ,YAAY,CAAC06F,WAAW,EAAEyvN,UAAU,CAAC;EAC9C;EAEA,SAASvkL,gBAAgBA,CAAA,EAAG;IAC1B,IAAI6Y,eAAe,GAAGv9H,IAAI,CAAC0c,EAAE,CAACC,UAAU,CAAC,mCAAmC,CAAC;IAC7E,IAAI4gH,eAAe,KAAK3pJ,SAAS,EAAE;MACjC2pJ,eAAe,GAAG,GAAG;MACrBv9H,IAAI,CAAC0c,EAAE,CAACO,UAAU,CAAC,mCAAmC,EAAE,GAAG,CAAC;IAC9D;IACAo3R,gBAAgB,GAAG92K,eAAe;IAElC,IAAI+2K,sBAAsB,GAAI,YAAW;MACvC,IAAI/2K,eAAe,KAAK,GAAG,EAAE,OAAO,IAAI;MACxC,IAAIqmC,MAAM,GAAG,KAAK;MAClB8/I,uBAAuB,CAAC72U,OAAO,CAACm/H,GAAG,IAAI;QACrC,IAAIA,GAAG,CAAColI,MAAM,IAAIijE,gBAAgB,EAAE;UAClCzwI,MAAM,GAAG,IAAI;UACb;QACF;MACF,CAAC,CAAC;MACF,OAAOA,MAAM;IACf,CAAC,CAAE,CAAC;IAEJ,IAAI,CAAC0wI,sBAAsB,EAAE;MAC3B/2K,eAAe,GAAG,GAAG;MACrB82K,gBAAgB,GAAG,GAAG;MACtBr0S,IAAI,CAAC0c,EAAE,CAACO,UAAU,CAAC,mCAAmC,EAAE,GAAG,CAAC;IAC9D;IAEA,IAAI5qC,IAAI,GAAGqxU,uBAAuB,CAACrtU,GAAG,CAAC21H,GAAG,IAAI;MAC5C,OAAO;QACL96H,KAAK,EAAE86H,GAAG,CAAColI,MAAM;QACjBnhQ,IAAI,EAAE+7H,GAAG,CAACnrE;MACZ,CAAC;IACH,CAAC,CAAC;IAEFxuD,IAAI,CAACsU,IAAI,CAAC,UAASjU,CAAC,EAAEuU,CAAC,EAAE;MACvB;MACA,IAAIvU,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE;QACnB,OAAO,CAAC,CAAC;MACX;MACA,IAAIyC,CAAC,CAACzC,IAAI,GAAGgX,CAAC,CAAChX,IAAI,EAAE;QACnB,OAAO,CAAC;MACV;MACA,OAAO,CAAC;IACV,CAAC,CAAC;IAEFoC,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,GAAG;MAAEoB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC,CAAC,CAAC;IACpDyzU,uBAAuB,CAACzzQ,OAAO,CAAC;MAAEmhM,MAAM,EAAE,GAAG;MAAEvwM,YAAY,EAAE;IAAM,CAAC,CAAC,CAAC,CAAC;;IAEvEvvD,QAAQ,CAAC5E,QAAQ,CAAC82U,6BAA6B,EAAEnxU,IAAI,EAAEkrJ,eAAe,CAAC;EACzE;EAEA,SAAS8rK,UAAUA,CAAA,EAAG;IACpBF,eAAe,CAAC15T,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAC5C,IAAI66N,gBAAgB,KAAKD,mBAAmB,IAAI,CAACA,mBAAmB,EAClE;MACFC,gBAAgB,GAAGD,mBAAmB;MACtCp0S,IAAI,CAAC0c,EAAE,CAACO,UAAU,CAAC,mCAAmC,EAAEo3R,gBAAgB,CAAC;MACzEE,gBAAgB,CAAC,CAAC;IACpB,CAAC,CAAC;IACFxsN,eAAe,CAACt4G,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;IAC9C,CAAC,CAAC;IACFgqO,6BAA6B,CAAC/zU,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChEmnU,mBAAmB,GAAGnnU,KAAK,CAACC,MAAM,CAACD,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC,CAACb,KAAK;IACtE,CAAC,CAAC;EACJ;EAEA,SAASqjU,gBAAgBA,CAAA,EAAG;IAC1B7yT,kBAAkB,CAAClS,IAAI,CAAC,CAAC;IACzBi0U,gBAAgB,CAACh3U,SAAS,GAAG,EAAE;IAC/BiV,kBAAkB,CAACJ,OAAO,CAAC/U,IAAI,CAACk3U,gBAAgB,EAAE,SAAS,CAAC;IAC5DvtE,iBAAiB,CAAC0tE,qCAAqC,CAACvP,gBAAgB,EAAEz+Q,GAAG,IAAI;MAC/El0C,kBAAkB,CAACJ,OAAO,CAAChV,IAAI,CAACm3U,gBAAgB,CAAC;MACjDI,wCAAwC,CAACjuR,GAAG,CAAC;IAC/C,CAAC,CAAC;EACJ;EAEA,SAASiuR,wCAAwCA,CAACjwD,eAAe,EAAE;IACjEw2C,iBAAiB,CAAC,CAAC;IACnB;IACA,IAAIx2C,eAAe,CAAChnR,MAAM,KAAK,CAAC,EAAE;MAChC62U,gBAAgB,CAACh3U,SAAS,GAAG,2BAA2B;MACxD;IACF;IACAmnR,eAAe,CAAC/mR,OAAO,CAAC6nU,QAAQ,IAAI;MAClC,IAAIr+S,IAAI,GAAGq+S,QAAQ,CAACoP,WAAW,CAACrzT,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC7C,IAAIlZ,QAAQ,GACVosU,gCAAgC,CAACjP,QAAQ,CAACqP,QAAQ,CAAC,CAACljR,YAAY;MAClE4iR,gBAAgB,CAACh3U,SAAS,IAAI;AACpC,sCAAsC8K,QAAQ,YAAYm9T,QAAQ,CAACpsP,KAAK,MAAMjyD,IAAI;AAClF,SAAS;IACL,CAAC,CAAC;EACJ;EAEA,SAAS+zS,iBAAiBA,CAAA,EAAG;IAC3B,IAAIruN,UAAU,GAAGyqD,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAE1D,IAAI,CAACwsG,UAAU,EAAE;MACfA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAC5C48T,UAAU,CAACnqT,YAAY,CAACi9F,UAAU,EAAE0nO,gBAAgB,CAAC;IACvD;IACA1nO,UAAU,CAACtvG,SAAS,GAAG;AAC3B;AACA,kCAAkCk3U,gCAAgC,CAACtP,gBAAgB,CAAC,CAACxzQ,YAAY;AACjG;AACA,OAAO;EACL;EAEA,SAAS+zQ,sBAAsBA,CAAA,EAAG;IAChC+O,gCAAgC,GAAG,CAAC,CAAC;IACrCD,uBAAuB,CAAC72U,OAAO,CAACm/H,GAAG,IAAI;MACrC5xF,GAAG,GAAG;QACJymB,YAAY,EAAEmrE,GAAG,CAACnrE;MACpB,CAAC;MACD8iR,gCAAgC,CAAC33M,GAAG,CAAColI,MAAM,CAAC,GAAGh3N,GAAG;IACpD,CAAC,CAAC;EACJ;EAEA,SAAS+lG,OAAOA,CAAA,EAAG;IACjB,IAAI00L,YAAY,GAAG,IAAIj3Q,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;MAClDk1P,iBAAiB,CAAC8tE,wCAAwC,CAACpuR,GAAG,IAAI;QAChE8tR,uBAAuB,GAAG9tR,GAAG;QAC7BiI,OAAO,CAAC,SAAS,CAAC;MACpB,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFD,OAAO,CAACmrF,GAAG,CAAC,CAAC8rL,YAAY,CAAC,CAAC,CAACz2M,IAAI,CAAC,MAAM;MACrCsmB,gBAAgB,CAAC,CAAC;MAClBkwL,sBAAsB,CAAC,CAAC;MACxBL,gBAAgB,CAAC,CAAC;IACpB,CAAC,CAAC;EACJ;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,SAAS/kU,IAAIA,CAAA,EAAG;IACd0xD,SAAS,CAACkgG,kBAAkB,CAC1B,6BAA6B,EAC7B,2BACF,CAAC;IAEDoF,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,6BAA6B,CAAC;IAC/D02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAClDk0U,gBAAgB,GAAGn0U,QAAQ,CAACiD,cAAc,CAAC,0BAA0B,CAAC;IAEtE4tI,OAAO,CAAC,CAAC;IACTiiB,gBAAgB,CAAC,CAAC;IAClBinK,UAAU,CAAC,CAAC;EACd;EACA,OAAO;IACL75T;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC7NJ;AACA,MAAMi2J,oBAAoB,GAAI,YAAY;EACtC;EACA,IAAIw+K,eAAe,EAAE9lU,cAAc;EACnC,IAAIqoJ,MAAM,EAAEyiK,UAAU,EAAEib,SAAS;EACjC,IAAI1qO,WAAW;EACf,IAAI40J,SAAS,GAAG,EAAE;IACd+1E,KAAK,GAAG,EAAE;EACd,IAAIrpU,MAAM,GAAG;IACTspU,YAAY,EAAE,OAAO;IACrBC,WAAW,EAAErkT,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACjCwqS,SAAS,EAAEtkT,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IAC/B0+D,QAAQ,EAAE,KAAK;IACfovE,IAAI,EAAE;EACV,CAAC;EAED,eAAep4K,IAAIA,CAAA,EAAG;IAClBg3J,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;IAClD02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAClD20U,SAAS,GAAG19K,MAAM,CAACj3J,aAAa,CAAC,wBAAwB,CAAC;IAC1D4O,cAAc,GAAG+iD,SAAS,CAACqhG,iBAAiB,CAAC,IAAI,CAAC;IAClD,IAAIpkJ,cAAc,CAACwoJ,YAAY,KAAK,IAAI,EAAEioK,sBAAsB,CAAC,CAAC;;IAElE;IACA1tQ,SAAS,CAACkgG,kBAAkB,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;IACrE,IAAI/uJ,IAAI,GAAG,MAAM8tI,OAAO,CAAC,CAAC;IAC1B8jM,eAAe,GAAG5xU,IAAI;IAEtB+7P,SAAS,GAAGhgP,MAAM,CAACxJ,MAAM,CACrBq/T,eAAe,CAACvqP,MAAM,CAClB,CACI+kC,GAAG,EAAA6F,IAAA,KAEF;MAAA,IADD;QAAEnyE,UAAU;QAAEk1L,gBAAgB;QAAED,iBAAiB;QAAEm9F,kBAAkB;QAAE,GAAGh4F;MAAG,CAAC,GAAAjoH,IAAA;MAE9E,IAAI,CAAC7F,GAAG,CAACtsE,UAAU,CAAC,EAAE;QAClBssE,GAAG,CAACtsE,UAAU,CAAC,GAAG;UACdA,UAAU;UACVk+E,gBAAgB,EAAE,GAAGg3G,gBAAgB,KAAKD,iBAAiB,IAAIm9F,kBAAkB;QACrF,CAAC;MACL;MAEA,OAAO9lN,GAAG;IACd,CAAC,EACD,CAAC,CACL,CACJ,CAAC;IAED2vI,SAAS,CAACznP,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MACrB,MAAM2uJ,KAAK,GAAGljK,CAAC,CAAC29H,gBAAgB,CAACv5F,WAAW,CAAC,CAAC;MAC9C,MAAM++H,KAAK,GAAG5uJ,CAAC,CAACopH,gBAAgB,CAACv5F,WAAW,CAAC,CAAC;MAC9C,OAAO8+H,KAAK,GAAGC,KAAK,GAAG,CAAC,CAAC,GAAGD,KAAK,GAAGC,KAAK,GAAG,CAAC,GAAG,CAAC;IACrD,CAAC,CAAC;IAEFsuK,KAAK,GAAG,CAAC,GAAG,IAAIniG,GAAG,CAACiiG,eAAe,CAAC5tU,GAAG,CAACvF,CAAC,IAAIA,CAAC,CAAC0zU,uBAAuB,CAAC,CAAC,CAAC;IACzEC,iBAAiB,CAACtmU,cAAc,CAACwoJ,YAAY,CAAC1uC,OAAO,CAAC;IACtDpR,WAAW,CAAC/rG,MAAM,CAAC;IACnBsnJ,gBAAgB,CAAC,CAAC;EACtB;EAEA,SAASqiL,iBAAiBA,CAACC,aAAa,EAAE;IACtC,IAAIxuT,KAAK,GAAG8J,IAAI,CAAC8Z,aAAa,CAAC,IAAI,CAAC;IACpC,IAAI6qS,QAAQ,GAAG,CAAC,CAAC;IACjB,QAAQD,aAAa,CAAC5tS,WAAW,CAAC,CAAC;MAC/B,KAAK,OAAO;QACR6tS,QAAQ,GAAG;UACP3+T,IAAI,EAAE0/C,MAAM,CAACxvC,KAAK,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY,CAAC;UACtDqjN,EAAE,EAAE/yK,MAAM,CAACxvC,KAAK,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY;QACvD,CAAC;QACD;MACJ,KAAK,aAAa;QACduvT,QAAQ,GAAG;UACP3+T,IAAI,EAAE0/C,MAAM,CAACxvC,KAAK,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY,CAAC;UACtDqjN,EAAE,EAAE/yK,MAAM,CAAC3oC,KAAK,CAACiC,OAAO,CAAC9I,KAAK,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY;QACzE,CAAC;QACD;MACJ,KAAK,cAAc;QACfuvT,QAAQ,GAAG;UACP3+T,IAAI,EAAE0/C,MAAM,CAACxvC,KAAK,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY,CAAC;UACtDqjN,EAAE,EAAE/yK,MAAM,CAAC3oC,KAAK,CAACiC,OAAO,CAAC9I,KAAK,EAAE,EAAE,CAAC,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY;QAC1E,CAAC;QACD;MACJ,KAAK,cAAc;QACfuvT,QAAQ,GAAG;UACP3+T,IAAI,EAAE0/C,MAAM,CAAC3oC,KAAK,CAACiC,OAAO,CAAC9I,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY,CAAC;UACzEqjN,EAAE,EAAE/yK,MAAM,CAACxvC,KAAK,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY;QACvD,CAAC;QACD;MACJ,KAAK,eAAe;QAChBuvT,QAAQ,GAAG;UACP3+T,IAAI,EAAE0/C,MAAM,CAAC3oC,KAAK,CAACiC,OAAO,CAAC9I,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY,CAAC;UAC1EqjN,EAAE,EAAE/yK,MAAM,CAACxvC,KAAK,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY;QACvD,CAAC;QACD;MACJ;QACIuvT,QAAQ,GAAG;UACP3+T,IAAI,EAAElL,MAAM,CAACupU,WAAW;UACxB5rG,EAAE,EAAE39N,MAAM,CAACwpU;QACf,CAAC;QACD;IACR;IACAxpU,MAAM,GAAG;MACLspU,YAAY,EAAEM,aAAa,CAACv0U,WAAW,CAAC,CAAC;MACzCk0U,WAAW,EAAEM,QAAQ,CAAC3+T,IAAI;MAC1Bs+T,SAAS,EAAEK,QAAQ,CAAClsG,EAAE;MACtBjgI,QAAQ,EAAE19F,MAAM,CAAC09F,QAAQ;MACzBovE,IAAI,EAAE9sK,MAAM,CAAC8sK;IACjB,CAAC;EACL;EAEA,SAASgnJ,sBAAsBA,CAAA,EAAG;IAC9BzwT,cAAc,CAACwoJ,YAAY,GAAG;MAC1B1uC,OAAO,EAAEn9G,MAAM,CAACspU;IACpB,CAAC;IACDt9K,kBAAkB,CAAC+nK,sBAAsB,CACrC,EAAE,EACF/0S,IAAI,CAACC,SAAS,CAAC5b,cAAc,CAACwoJ,YAAY,CAAC,EAC3CxoJ,cAAc,CAACmkJ,QACnB,CAAC;EACL;EAEA,SAASsiL,0BAA0BA,CAACvyU,IAAI,EAAE;IACtC,IAAI,CAACm0J,MAAM,EAAE;IACb09K,SAAS,CAACz3U,SAAS,GAAG,EAAE;IACxB,IAAI4F,IAAI,CAACzF,MAAM,KAAK,CAAC,EAAE;MACnBs3U,SAAS,CAACz3U,SAAS,GAAG,gEAAgE;IAC1F,CAAC,MAAM;MACHo4U,iBAAiB,CAACX,SAAS,EAAE7xU,IAAI,CAAC;IACtC;EACJ;EAEA,SAAS+vJ,gBAAgBA,CAAA,EAAG;IACxB,IAAIgnK,YAAY,GAAG5iK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC3D,IAAI65T,YAAY,EAAE;IAClB5vN,WAAW,GAAGt4C,SAAS,CAACkhG,gBAAgB,CAAC,CAAC;IAC1C,MAAM0iL,eAAe,GAAGv4U,IAAI,IAAI;MAC5B,IAAIA,IAAI,EAAE;QACN2hJ,aAAa,CAAC/hJ,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QACxC+hJ,WAAW,CAAChiJ,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MAC1C,CAAC,MAAM;QACH,IAAI8hJ,aAAa,CAAC/hJ,SAAS,CAAC8N,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QACxDi0I,aAAa,CAAC/hJ,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACrC8hJ,WAAW,CAAChiJ,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACvC;IACJ,CAAC;IAED,IAAI04U,oBAAoB,GAAGjqU,MAAM,CAACspU,YAAY;IAC9C,IAAIY,kBAAkB,GAAGlqU,MAAM,CAACupU,WAAW;IAC3C,IAAIY,gBAAgB,GAAGnqU,MAAM,CAACwpU,SAAS;IACvC,IAAIY,sBAAsB,GAAGpqU,MAAM,CAAC09F,QAAQ;IAC5C,IAAI2sO,kBAAkB,GAAGrqU,MAAM,CAAC8sK,IAAI;IAEpC,IAAIw9J,eAAe,GAAG9zU,QAAQ,CAAC3B,KAAK,CAAC;MACjCG,EAAE,EAAE,wBAAwB;MAC5B2B,KAAK,EAAE,gBAAgB;MACvBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,IAAI89I,aAAa,GAAG/6I,KAAK,CAACxD,KAAK,CAAC;MAC5BG,EAAE,EAAE,wBAAwB;MAC5B2B,KAAK,EAAE,MAAM;MACbpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE8zU;IACX,CAAC,CAAC;IAEF,IAAI72L,WAAW,GAAGh7I,KAAK,CAACxD,KAAK,CAAC;MAC1BG,EAAE,EAAE,sBAAsB;MAC1B2B,KAAK,EAAE,IAAI;MACXpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE+zU;IACX,CAAC,CAAC;IAEF,IAAII,iBAAiB,GAAG/zU,QAAQ,CAAC3B,KAAK,CAAC;MACnC4B,UAAU,EAAE,yBAAyB;MACrCE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACd,CAAC,CAAC;IAEF,IAAI4zU,aAAa,GAAGh0U,QAAQ,CAAC3B,KAAK,CAAC;MAC/B4B,UAAU,EAAE,qBAAqB;MACjCE,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACd,CAAC,CAAC;IAEF,IAAIy3T,eAAe,GAAGz5T,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEF,IAAI03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEF,IAAIwrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACo8T,eAAe,CAAC;IACpCttR,OAAO,CAAC9uC,WAAW,CAACg7G,eAAe,CAAC;IAEpCvO,WAAW,CAACzsG,WAAW,CAACq4U,eAAe,CAAC;IACxC5rO,WAAW,CAACzsG,WAAW,CAACmhJ,aAAa,CAAC;IACtC10C,WAAW,CAACzsG,WAAW,CAACohJ,WAAW,CAAC;IACpC30C,WAAW,CAACzsG,WAAW,CAACs4U,iBAAiB,CAAC;IAC1C7rO,WAAW,CAACzsG,WAAW,CAACu4U,aAAa,CAAC;IACtC9rO,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAChC2qH,MAAM,CAAC1nJ,YAAY,CAAC06F,WAAW,EAAEyvN,UAAU,CAAC;IAE5C,MAAMsc,wBAAwB,GAAG,CAC7B;MACIz1U,EAAE,EAAE,CAAC;MACLoB,KAAK,EAAE,QAAQ;MACfjB,IAAI,EAAE;IACV,CAAC,EACD;MACIH,EAAE,EAAE,CAAC;MACLoB,KAAK,EAAE,OAAO;MACdjB,IAAI,EAAE;IACV,CAAC,EACD;MACIH,EAAE,EAAE,CAAC;MACLoB,KAAK,EAAE,aAAa;MACpBjB,IAAI,EAAE;IACV,CAAC,EACD;MACIH,EAAE,EAAE,CAAC;MACLoB,KAAK,EAAE,cAAc;MACrBjB,IAAI,EAAE;IACV,CAAC,EACD;MACIH,EAAE,EAAE,CAAC;MACLoB,KAAK,EAAE,cAAc;MACrBjB,IAAI,EAAE;IACV,CAAC,EACD;MACIH,EAAE,EAAE,CAAC;MACLoB,KAAK,EAAE,eAAe;MACtBjB,IAAI,EAAE;IACV,CAAC,CACJ;IACDqB,QAAQ,CAAC5E,QAAQ,CAAC04U,eAAe,EAAEG,wBAAwB,EAAER,oBAAoB,CAAC;IAClFD,eAAe,CAACC,oBAAoB,CAACjuS,WAAW,CAAC,CAAC,KAAK,QAAQ,CAAC;IAEhE,MAAM44Q,oBAAoB,GAAGthD,SAAS,CAAC/3P,GAAG,CAACvF,CAAC,IAAI;MAC5C,OAAO;QACHhB,EAAE,EAAEgB,CAAC,CAACqhD,UAAU;QAChBjhD,KAAK,EAAEJ,CAAC,CAACqhD,UAAU;QACnBliD,IAAI,EAAEa,CAAC,CAACu/H;MACZ,CAAC;IACL,CAAC,CAAC;IACFq/K,oBAAoB,CAACz/O,OAAO,CAAC;MAAEngE,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,KAAK;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC,CAAC,CAAC;IACpEqB,QAAQ,CAAC5E,QAAQ,CAAC24U,iBAAiB,EAAE31B,oBAAoB,EAAEw1B,sBAAsB,CAAC;IAElF,MAAMM,gBAAgB,GAAGrB,KAAK,CAAC9tU,GAAG,CAAC,CAACgX,CAAC,EAAE7V,CAAC,KAAK;MACzC,OAAO;QACH1H,EAAE,EAAE0H,CAAC;QACLtG,KAAK,EAAEmc,CAAC;QACRpd,IAAI,EAAEod;MACV,CAAC;IACL,CAAC,CAAC;IACFm4T,gBAAgB,CAAC7+T,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KACvBvU,CAAC,CAACxB,KAAK,CAAC4lC,WAAW,CAAC,CAAC,GAAG7vB,CAAC,CAAC/V,KAAK,CAAC4lC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CACzD,CAAC;IACD0uS,gBAAgB,CAACv1Q,OAAO,CAAC;MAAEngE,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,KAAK;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC,CAAC,CAAC;IAChEqB,QAAQ,CAAC5E,QAAQ,CAAC44U,aAAa,EAAEE,gBAAgB,EAAEL,kBAAkB,CAAC;;IAEtE;IACAC,eAAe,CAAC31U,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC5CkzU,oBAAoB,GAAGlzU,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACrC4zU,eAAe,CAACC,oBAAoB,CAACjuS,WAAW,CAAC,CAAC,KAAK,QAAQ,CAAC;MAChE2tS,iBAAiB,CAACM,oBAAoB,CAACjuS,WAAW,CAAC,CAAC,CAAC;MACrDkuS,kBAAkB,GAAGlqU,MAAM,CAACupU,WAAW;MACvCY,gBAAgB,GAAGnqU,MAAM,CAACwpU,SAAS;IACvC,CAAC,CAAC;IAEFp2L,aAAa,CAACz+I,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC1CmzU,kBAAkB,GAAGnzU,CAAC,CAAC3E,MAAM,CAACgE,KAAK;IACvC,CAAC,CAAC;IAEFi9I,WAAW,CAAC1+I,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MACxCozU,gBAAgB,GAAGpzU,CAAC,CAAC3E,MAAM,CAACgE,KAAK;IACrC,CAAC,CAAC;IAEFm0U,iBAAiB,CAAC51U,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC9CqzU,sBAAsB,GAAGrzU,CAAC,CAAC3E,MAAM,CAACgE,KAAK;IAC3C,CAAC,CAAC;IAEFo0U,aAAa,CAAC71U,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC1CszU,kBAAkB,GAAGtzU,CAAC,CAAC3E,MAAM,CAACgE,KAAK;IACvC,CAAC,CAAC;IAEFi4T,eAAe,CAAC15T,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MAC3CiJ,MAAM,GAAG;QACLspU,YAAY,EAAEW,oBAAoB;QAClCV,WAAW,EAAEW,kBAAkB;QAC/BV,SAAS,EAAEW,gBAAgB;QAC3BzsO,QAAQ,EAAE0sO,sBAAsB;QAChCt9J,IAAI,EAAEu9J;MACV,CAAC;MACD3rO,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAC5CqN,WAAW,CAAC/rG,MAAM,CAAC;IACvB,CAAC,CAAC;IAEFitG,eAAe,CAACt4G,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MAC3C2nG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;IAChD,CAAC,CAAC;EACN;EAEA,MAAMqN,WAAW,GAAG/rG,MAAM,IAAI;IAC1B,IAAI00I,QAAQ,GAAGnpI,IAAI,CAACC,KAAK,CAACxL,MAAM,CAACupU,WAAW,CAAC;IAC7C,IAAIlnT,MAAM,GAAG9W,IAAI,CAACC,KAAK,CAACxL,MAAM,CAACwpU,SAAS,CAAC;IACzC,IAAIjtB,YAAY,GAAG4sB,eAAe,CAACnpU,MAAM,CAACiT,CAAC,IAAI;MAC3C,IAAIkqG,OAAO,GAAG5xG,IAAI,CAACC,KAAK,CAACyH,CAAC,CAAC03T,mBAAmB,CAAC;MAC/C,OAAOxtN,OAAO,IAAIu3B,QAAQ,IAAIv3B,OAAO,IAAI96F,MAAM,CAAC,CAAC;IACrD,CAAC,CAAC;IACFk6R,YAAY,GACRv8S,MAAM,CAAC09F,QAAQ,CAAC1hE,WAAW,CAAC,CAAC,KAAK,KAAK,GACjCugR,YAAY,GACZA,YAAY,CAACv8S,MAAM,CAACtI,CAAC,IAAI;MACvB,OAAOA,CAAC,CAAC2/C,UAAU,KAAKr3C,MAAM,CAAC09F,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC;IACV6+M,YAAY,GACRv8S,MAAM,CAAC8sK,IAAI,CAAC9wI,WAAW,CAAC,CAAC,KAAK,KAAK,GAC7BugR,YAAY,GACZA,YAAY,CAACv8S,MAAM,CAACtI,CAAC,IAAI;MACvB,OAAOA,CAAC,CAACgyU,uBAAuB,KAAK1pU,MAAM,CAAC8sK,IAAI,CAAC,CAAC;IACtD,CAAC,CAAC;IACVg9J,0BAA0B,CAACvtB,YAAY,CAAC;IACxC+S,iBAAiB,CAAC,CAAC;EACvB,CAAC;EAED,SAASya,iBAAiBA,CAACzlU,MAAM,EAAE/M,IAAI,EAAE;IACrC,MAAMqzU,qBAAqB,GAAGA,CAACtmU,MAAM,EAAEooO,KAAK,KAAK;MAC7C,MAAMm+F,qBAAqB,GAAGA,CAACntO,QAAQ,EAAEotO,YAAY,EAAE/gT,IAAI,EAAEozF,OAAO,KAAK;QACrE,IAAI4tN,QAAQ,GAAGv2U,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAE5Cg2U,QAAQ,CAACt1U,YAAY,CACjB,OAAO,EACP,wEACJ,CAAC;QAEDs1U,QAAQ,CAACp5U,SAAS,GAAG;AACrC,0DAA0Do4B,IAAI;AAC9D,4FAA4FozF,OAAO,GAAGA,OAAO,CAACxnG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAChI,KACK;QACWo1T,QAAQ,CAACp2U,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;UACpC;QAAA,CACH,CAAC;QACF,OAAOg0U,QAAQ;MACnB,CAAC;MAED,IAAIr+F,KAAK,CAAC56O,MAAM,GAAG,CAAC,EAAE;QAClB,IAAIk5U,qBAAqB,GAAGx2U,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACzDi2U,qBAAqB,CAACv1U,YAAY,CAAC,OAAO,EAAE,mCAAmC,CAAC;QAEhF,IAAIw1U,YAAY,GAAGz2U,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAChDk2U,YAAY,CAACx1U,YAAY,CAAC,OAAO,EAAE,kCAAkC,CAAC;QACtEw1U,YAAY,CAACt5U,SAAS,GAAG;AACzC,OAAO+6O,KAAK,CAAC,CAAC,CAAC,CAACo+F,YAAY;AAC5B,KAAK;QAEW,IAAII,gBAAgB,GAAG12U,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACpDm2U,gBAAgB,CAACz1U,YAAY,CACzB,OAAO,EACP,wEACJ,CAAC;QACDy1U,gBAAgB,CAACv5U,SAAS,GAAG,UAAU;QAEvCq5U,qBAAqB,CAAC/4U,WAAW,CAACg5U,YAAY,CAAC;QAC/CD,qBAAqB,CAAC/4U,WAAW,CAACi5U,gBAAgB,CAAC;QACnD5mU,MAAM,CAACrS,WAAW,CAAC+4U,qBAAqB,CAAC;QAEzC,KAAKxF,MAAM,IAAI94F,KAAK,EAAE;UAClB,IAAI;YACAr1L,UAAU;YACVi1L,iBAAiB;YACjBC,gBAAgB;YAChBk9F,kBAAkB;YAClB0B,kBAAkB;YAClBC,cAAc;YACd1B,uBAAuB;YACvBiB,mBAAmB;YACnBG,YAAY;YACZ,GAAGvxF;UACP,CAAC,GAAG7M,KAAK,CAAC84F,MAAM,CAAC;UACjB,IAAI6F,gBAAgB,GAAG72U,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;UACpDs2U,gBAAgB,CAAC51U,YAAY,CACzB,OAAO,EACP,yCACJ,CAAC;UACD41U,gBAAgB,CAAC15U,SAAS,GAAG,GAAG46O,gBAAgB,KAAKD,iBAAiB,IAAIm9F,kBAAkB,EAAE;UAC9FnlU,MAAM,CAACrS,WAAW,CAACo5U,gBAAgB,CAAC;UACpC/mU,MAAM,CAACrS,WAAW,CACd44U,qBAAqB,CACjB;YACIntO,QAAQ,EAAE;cACNrmD,UAAU;cACVi1L,iBAAiB;cACjBC,gBAAgB;cAChBk9F;YACJ;UACJ,CAAC,EACDqB,YAAY,EACZpB,uBAAuB,EACvBiB,mBACJ,CACJ,CAAC;QACL;QACA,OAAOrmU,MAAM;MACjB;IACJ,CAAC;IACD,IAAI/M,IAAI,CAACzF,MAAM,GAAG,CAAC,EAAE84U,qBAAqB,CAACtmU,MAAM,EAAE/M,IAAI,CAAC;IACxD,OAAO+M,MAAM;EACjB;EAEA,SAASgrT,iBAAiBA,CAAA,EAAG;IACzB,IAAIruN,UAAU,GAAGyqD,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAE1D,IAAI,CAACwsG,UAAU,EAAE;MACbA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAC5C48T,UAAU,CAACnqT,YAAY,CAACi9F,UAAU,EAAEmoO,SAAS,CAAC;IAClD;IAEA,MAAME,YAAY,GAAGtpU,MAAM,CAACspU,YAAY,CAACttS,WAAW,CAAC,CAAC;IACtD,MAAMutS,WAAW,GAAG3+Q,MAAM,CAAC5qD,MAAM,CAACupU,WAAW,EAAE,YAAY,CAAC,CAACjvT,MAAM,CAAC,UAAU,CAAC;IAC/E,MAAMkvT,SAAS,GAAG5+Q,MAAM,CAAC5qD,MAAM,CAACwpU,SAAS,EAAE,YAAY,CAAC,CAAClvT,MAAM,CAAC,UAAU,CAAC;IAC3E,MAAMgxT,gBAAgB,GAAGtrU,MAAM,CAAC09F,QAAQ,CAAC1hE,WAAW,CAAC,CAAC;IACtD,MAAM8wI,IAAI,GAAG9sK,MAAM,CAAC8sK,IAAI,CAAC9wI,WAAW,CAAC,CAAC;IAEtC,MAAMuvS,mBAAmB,GAAGA,CAAA,KAAM;MAC9B,OAAOj4E,SAAS,CAAC9sM,IAAI,CAACxwD,CAAC,IAAI;QACvB,OAAOA,CAAC,CAACqhD,UAAU,KAAKr3C,MAAM,CAAC09F,QAAQ;MAC3C,CAAC,CAAC;IACN,CAAC;;IAED;IACAuD,UAAU,CAACtvG,SAAS,GAAG;AAC/B,gCAAgC23U,YAAY,KAAK,QAAQ,GAAG,GAAGC,WAAW,MAAMC,SAAS,EAAE,GAAGF,YAAY;AAC1G,gCACgCgC,gBAAgB,KAAK,KAAK,GAAG,KAAK,GAAGC,mBAAmB,CAAC,CAAC,CAACh2M,gBAAgB;AAC3G,4BAC4Bu3C,IAAI;AAChC,SAAS;EACL;EAEA,eAAeznC,OAAOA,CAAA,EAAG;IACrB,IAAI;MACA,IAAI;QACAmmM,iCAAiC,EAAEtjT;MACvC,CAAC,GAAG,MAAMujT,wBAAwB,CAACC,2BAA2B,CAAC9oU,CAAC,CAACC,OAAO,CAACmoC,QAAQ,CAAC;MAClF,OAAO9iB,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZhE,OAAO,CAACgE,KAAK,CAACA,KAAK,CAAC;IACxB;EACJ;EAEA,OAAO;IACH7O;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACtdJ,IAAI+2U,wBAAwB,GAAI,YAAY;EAExC,eAAeC,2BAA2BA,CAAC9qL,QAAQ,EAAE;IACjD,IAAI;MACA,MAAM14H,MAAM,GAAG,MAAMtlB,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACCC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;QACnCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UACjBmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UACtBigS,kBAAkB,EAAEvqL;QACxB,CAAC,CAAC;QACFp/F,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACd,CAAC,CAAC;MACF,OAAOx5B,MAAM;IACjB,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACZ,MAAM,IAAIod,KAAK,CAACpd,KAAK,CAACosG,YAAY,CAAC;IACvC;EACJ;EAEA,OAAO;IACH+7N;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AC/BJ;AACA,MAAMlhL,kBAAkB,GAAI,YAAY;EACtC;EACA,IAAImhL,aAAa,EAAEtoU,cAAc;EACjC,IAAIqoJ,MAAM,EAAEyiK,UAAU,EAAEib,SAAS;EACjC,IAAI1qO,WAAW;EACf,IAAI40J,SAAS,GAAG,EAAE;IAChB+1E,KAAK,GAAG,EAAE;EACZ,IAAIrpU,MAAM,GAAG;IACXspU,YAAY,EAAE,OAAO;IACrBC,WAAW,EAAErkT,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACjCwqS,SAAS,EAAEtkT,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IAC/B0+D,QAAQ,EAAE,KAAK;IACfovE,IAAI,EAAE;EACR,CAAC;EAED,eAAep4K,IAAIA,CAAA,EAAG;IACpBg3J,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC;IAChD02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAClD20U,SAAS,GAAG19K,MAAM,CAACj3J,aAAa,CAAC,sBAAsB,CAAC;IACxD4O,cAAc,GAAG+iD,SAAS,CAACqhG,iBAAiB,CAAC,GAAG,CAAC;IACjD,IAAIpkJ,cAAc,CAACwoJ,YAAY,KAAK,IAAI,EAAEioK,sBAAsB,CAAC,CAAC;;IAElE;IACA1tQ,SAAS,CAACkgG,kBAAkB,CAAC,cAAc,EAAE,mBAAmB,CAAC;IACjE,IAAI/uJ,IAAI,GAAG,MAAM8tI,OAAO,CAAC,CAAC;IAC1BsmM,aAAa,GAAGp0U,IAAI;IAEpB+7P,SAAS,GAAGhgP,MAAM,CAACxJ,MAAM,CACvB6hU,aAAa,CAAC/sP,MAAM,CAClB,CACE+kC,GAAG,EAAA6F,IAAA,KAEA;MAAA,IADH;QAAEnyE,UAAU;QAAEk1L,gBAAgB;QAAED,iBAAiB;QAAEm9F,kBAAkB;QAAE,GAAGh4F;MAAG,CAAC,GAAAjoH,IAAA;MAE9E,IAAI,CAAC7F,GAAG,CAACtsE,UAAU,CAAC,EAAE;QACpBssE,GAAG,CAACtsE,UAAU,CAAC,GAAG;UAChBA,UAAU;UACVk+E,gBAAgB,EAAE,GAAGg3G,gBAAgB,KAAKD,iBAAiB,IAAIm9F,kBAAkB;QACnF,CAAC;MACH;MAEA,OAAO9lN,GAAG;IACZ,CAAC,EACD,CAAC,CACH,CACF,CAAC;IAED2vI,SAAS,CAACznP,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MACvB,MAAM2uJ,KAAK,GAAGljK,CAAC,CAAC29H,gBAAgB,CAACv5F,WAAW,CAAC,CAAC;MAC9C,MAAM++H,KAAK,GAAG5uJ,CAAC,CAACopH,gBAAgB,CAACv5F,WAAW,CAAC,CAAC;MAC9C,OAAO8+H,KAAK,GAAGC,KAAK,GAAG,CAAC,CAAC,GAAGD,KAAK,GAAGC,KAAK,GAAG,CAAC,GAAG,CAAC;IACnD,CAAC,CAAC;IAEFsuK,KAAK,GAAG,CAAC,GAAG,IAAIniG,GAAG,CAACykG,aAAa,CAACpwU,GAAG,CAACvF,CAAC,IAAIA,CAAC,CAAC0zU,uBAAuB,CAAC,CAAC,CAAC;IACvEC,iBAAiB,CAACtmU,cAAc,CAACwoJ,YAAY,CAAC1uC,OAAO,CAAC;IACtDpR,WAAW,CAAC/rG,MAAM,CAAC;IACnBsnJ,gBAAgB,CAAC,CAAC;EACpB;EAEA,SAASqiL,iBAAiBA,CAACC,aAAa,EAAE;IACxC,IAAIxuT,KAAK,GAAG8J,IAAI,CAAC8Z,aAAa,CAAC,IAAI,CAAC;IACpC,IAAI6qS,QAAQ,GAAG,CAAC,CAAC;IACjB,QAAQD,aAAa,CAAC5tS,WAAW,CAAC,CAAC;MACjC,KAAK,OAAO;QACV6tS,QAAQ,GAAG;UACT3+T,IAAI,EAAE0/C,MAAM,CAACxvC,KAAK,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY,CAAC;UACtDqjN,EAAE,EAAE/yK,MAAM,CAACxvC,KAAK,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY;QACrD,CAAC;QACD;MACF,KAAK,aAAa;QAChBuvT,QAAQ,GAAG;UACT3+T,IAAI,EAAE0/C,MAAM,CAACxvC,KAAK,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY,CAAC;UACtDqjN,EAAE,EAAE/yK,MAAM,CAAC3oC,KAAK,CAACiC,OAAO,CAAC9I,KAAK,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY;QACvE,CAAC;QACD;MACF,KAAK,cAAc;QACjBuvT,QAAQ,GAAG;UACT3+T,IAAI,EAAE0/C,MAAM,CAACxvC,KAAK,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY,CAAC;UACtDqjN,EAAE,EAAE/yK,MAAM,CAAC3oC,KAAK,CAACiC,OAAO,CAAC9I,KAAK,EAAE,EAAE,CAAC,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY;QACxE,CAAC;QACD;MACF,KAAK,cAAc;QACjBuvT,QAAQ,GAAG;UACT3+T,IAAI,EAAE0/C,MAAM,CAAC3oC,KAAK,CAACiC,OAAO,CAAC9I,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY,CAAC;UACzEqjN,EAAE,EAAE/yK,MAAM,CAACxvC,KAAK,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY;QACrD,CAAC;QACD;MACF,KAAK,eAAe;QAClBuvT,QAAQ,GAAG;UACT3+T,IAAI,EAAE0/C,MAAM,CAAC3oC,KAAK,CAACiC,OAAO,CAAC9I,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY,CAAC;UAC1EqjN,EAAE,EAAE/yK,MAAM,CAACxvC,KAAK,EAAE,YAAY,CAAC,CAACd,MAAM,CAAC,YAAY;QACrD,CAAC;QACD;MACF;QACEuvT,QAAQ,GAAG;UACT3+T,IAAI,EAAElL,MAAM,CAACupU,WAAW;UACxB5rG,EAAE,EAAE39N,MAAM,CAACwpU;QACb,CAAC;QACD;IACJ;IACAxpU,MAAM,GAAG;MACPspU,YAAY,EAAEM,aAAa,CAACv0U,WAAW,CAAC,CAAC;MACzCk0U,WAAW,EAAEM,QAAQ,CAAC3+T,IAAI;MAC1Bs+T,SAAS,EAAEK,QAAQ,CAAClsG,EAAE;MACtBjgI,QAAQ,EAAE19F,MAAM,CAAC09F,QAAQ;MACzBovE,IAAI,EAAE9sK,MAAM,CAAC8sK;IACf,CAAC;EACH;EAEA,SAASgnJ,sBAAsBA,CAAA,EAAG;IAChCzwT,cAAc,CAACwoJ,YAAY,GAAG;MAC5B1uC,OAAO,EAAEn9G,MAAM,CAACspU;IAClB,CAAC;IACDt9K,kBAAkB,CAAC+nK,sBAAsB,CACvC,CAAC,EACD/0S,IAAI,CAACC,SAAS,CAAC5b,cAAc,CAACwoJ,YAAY,CAAC,EAC3CxoJ,cAAc,CAACmkJ,QACjB,CAAC;EACH;EAEA,SAASsiL,0BAA0BA,CAACvyU,IAAI,EAAE;IACxC,IAAI,CAACm0J,MAAM,EAAE;IACb09K,SAAS,CAACz3U,SAAS,GAAG,EAAE;IACxB,IAAI4F,IAAI,CAACzF,MAAM,KAAK,CAAC,EAAE;MACrBs3U,SAAS,CAACz3U,SAAS,GAAG,gEAAgE;IACxF,CAAC,MAAM;MACLo4U,iBAAiB,CAACX,SAAS,EAAE7xU,IAAI,CAAC;IACpC;EACF;EAEA,SAAS+vJ,gBAAgBA,CAAA,EAAG;IAC1B,IAAIgnK,YAAY,GAAG5iK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC3D,IAAI65T,YAAY,EAAE;IAClB5vN,WAAW,GAAGt4C,SAAS,CAACkhG,gBAAgB,CAAC,CAAC;IAC1C,MAAM0iL,eAAe,GAAGv4U,IAAI,IAAI;MAC9B,IAAIA,IAAI,EAAE;QACR2hJ,aAAa,CAAC/hJ,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;QACxC+hJ,WAAW,CAAChiJ,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;MACxC,CAAC,MAAM;QACL,IAAI8hJ,aAAa,CAAC/hJ,SAAS,CAAC8N,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QACxDi0I,aAAa,CAAC/hJ,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;QACrC8hJ,WAAW,CAAChiJ,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACrC;IACF,CAAC;IAED,IAAI04U,oBAAoB,GAAGjqU,MAAM,CAACspU,YAAY;IAC9C,IAAIY,kBAAkB,GAAGlqU,MAAM,CAACupU,WAAW;IAC3C,IAAIY,gBAAgB,GAAGnqU,MAAM,CAACwpU,SAAS;IACvC,IAAIY,sBAAsB,GAAGpqU,MAAM,CAAC09F,QAAQ;IAC5C,IAAI2sO,kBAAkB,GAAGrqU,MAAM,CAAC8sK,IAAI;IAEpC,IAAIw9J,eAAe,GAAG9zU,QAAQ,CAAC3B,KAAK,CAAC;MACnCG,EAAE,EAAE,wBAAwB;MAC5B2B,KAAK,EAAE,gBAAgB;MACvBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,IAAI89I,aAAa,GAAG/6I,KAAK,CAACxD,KAAK,CAAC;MAC9BG,EAAE,EAAE,wBAAwB;MAC5B2B,KAAK,EAAE,MAAM;MACbpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE8zU;IACT,CAAC,CAAC;IAEF,IAAI72L,WAAW,GAAGh7I,KAAK,CAACxD,KAAK,CAAC;MAC5BG,EAAE,EAAE,sBAAsB;MAC1B2B,KAAK,EAAE,IAAI;MACXpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE+zU;IACT,CAAC,CAAC;IAEF,IAAII,iBAAiB,GAAG/zU,QAAQ,CAAC3B,KAAK,CAAC;MACrC4B,UAAU,EAAE,yBAAyB;MACrCE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF,IAAI4zU,aAAa,GAAGh0U,QAAQ,CAAC3B,KAAK,CAAC;MACjC4B,UAAU,EAAE,qBAAqB;MACjCE,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF,IAAIy3T,eAAe,GAAGz5T,MAAM,CAACC,KAAK,CAAC;MACjCM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IAEF,IAAI03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MACjCM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IAEF,IAAIwrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACo8T,eAAe,CAAC;IACpCttR,OAAO,CAAC9uC,WAAW,CAACg7G,eAAe,CAAC;IAEpCvO,WAAW,CAACzsG,WAAW,CAACq4U,eAAe,CAAC;IACxC5rO,WAAW,CAACzsG,WAAW,CAACmhJ,aAAa,CAAC;IACtC10C,WAAW,CAACzsG,WAAW,CAACohJ,WAAW,CAAC;IACpC30C,WAAW,CAACzsG,WAAW,CAACs4U,iBAAiB,CAAC;IAC1C7rO,WAAW,CAACzsG,WAAW,CAACu4U,aAAa,CAAC;IACtC9rO,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAChC2qH,MAAM,CAAC1nJ,YAAY,CAAC06F,WAAW,EAAEyvN,UAAU,CAAC;IAE5C,MAAMsc,wBAAwB,GAAG,CAC/B;MACEz1U,EAAE,EAAE,CAAC;MACLoB,KAAK,EAAE,QAAQ;MACfjB,IAAI,EAAE;IACR,CAAC,EACD;MACEH,EAAE,EAAE,CAAC;MACLoB,KAAK,EAAE,OAAO;MACdjB,IAAI,EAAE;IACR,CAAC,EACD;MACEH,EAAE,EAAE,CAAC;MACLoB,KAAK,EAAE,aAAa;MACpBjB,IAAI,EAAE;IACR,CAAC,EACD;MACEH,EAAE,EAAE,CAAC;MACLoB,KAAK,EAAE,cAAc;MACrBjB,IAAI,EAAE;IACR,CAAC,EACD;MACEH,EAAE,EAAE,CAAC;MACLoB,KAAK,EAAE,cAAc;MACrBjB,IAAI,EAAE;IACR,CAAC,EACD;MACEH,EAAE,EAAE,CAAC;MACLoB,KAAK,EAAE,eAAe;MACtBjB,IAAI,EAAE;IACR,CAAC,CACF;IACDqB,QAAQ,CAAC5E,QAAQ,CAAC04U,eAAe,EAAEG,wBAAwB,EAAER,oBAAoB,CAAC;IAClFD,eAAe,CAACC,oBAAoB,CAACjuS,WAAW,CAAC,CAAC,KAAK,QAAQ,CAAC;IAEhE,MAAM44Q,oBAAoB,GAAGthD,SAAS,CAAC/3P,GAAG,CAACvF,CAAC,IAAI;MAC9C,OAAO;QACLhB,EAAE,EAAEgB,CAAC,CAACqhD,UAAU;QAChBjhD,KAAK,EAAEJ,CAAC,CAACqhD,UAAU;QACnBliD,IAAI,EAAEa,CAAC,CAACu/H;MACV,CAAC;IACH,CAAC,CAAC;IACFq/K,oBAAoB,CAACz/O,OAAO,CAAC;MAAEngE,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,KAAK;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC,CAAC,CAAC;IACpEqB,QAAQ,CAAC5E,QAAQ,CAAC24U,iBAAiB,EAAE31B,oBAAoB,EAAEw1B,sBAAsB,CAAC;IAElF,MAAMM,gBAAgB,GAAGrB,KAAK,CAAC9tU,GAAG,CAAC,CAACgX,CAAC,EAAE7V,CAAC,KAAK;MAC3C,OAAO;QACL1H,EAAE,EAAE0H,CAAC;QACLtG,KAAK,EAAEmc,CAAC;QACRpd,IAAI,EAAEod;MACR,CAAC;IACH,CAAC,CAAC;IACFm4T,gBAAgB,CAAC7+T,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KACzBvU,CAAC,CAACxB,KAAK,CAAC4lC,WAAW,CAAC,CAAC,GAAG7vB,CAAC,CAAC/V,KAAK,CAAC4lC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CACvD,CAAC;IACD0uS,gBAAgB,CAACv1Q,OAAO,CAAC;MAAEngE,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,KAAK;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC,CAAC,CAAC;IAChEqB,QAAQ,CAAC5E,QAAQ,CAAC44U,aAAa,EAAEE,gBAAgB,EAAEL,kBAAkB,CAAC;;IAEtE;IACAC,eAAe,CAAC31U,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC9CkzU,oBAAoB,GAAGlzU,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACrC4zU,eAAe,CAACC,oBAAoB,CAACjuS,WAAW,CAAC,CAAC,KAAK,QAAQ,CAAC;MAChE2tS,iBAAiB,CAACM,oBAAoB,CAACjuS,WAAW,CAAC,CAAC,CAAC;MACrDkuS,kBAAkB,GAAGlqU,MAAM,CAACupU,WAAW;MACvCY,gBAAgB,GAAGnqU,MAAM,CAACwpU,SAAS;IACrC,CAAC,CAAC;IAEFp2L,aAAa,CAACz+I,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC5CmzU,kBAAkB,GAAGnzU,CAAC,CAAC3E,MAAM,CAACgE,KAAK;IACrC,CAAC,CAAC;IAEFi9I,WAAW,CAAC1+I,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC1CozU,gBAAgB,GAAGpzU,CAAC,CAAC3E,MAAM,CAACgE,KAAK;IACnC,CAAC,CAAC;IAEFm0U,iBAAiB,CAAC51U,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAChDqzU,sBAAsB,GAAGrzU,CAAC,CAAC3E,MAAM,CAACgE,KAAK;IACzC,CAAC,CAAC;IAEFo0U,aAAa,CAAC71U,gBAAgB,CAAC,QAAQ,EAAEoC,CAAC,IAAI;MAC5CszU,kBAAkB,GAAGtzU,CAAC,CAAC3E,MAAM,CAACgE,KAAK;IACrC,CAAC,CAAC;IAEFi4T,eAAe,CAAC15T,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MAC7CiJ,MAAM,GAAG;QACPspU,YAAY,EAAEW,oBAAoB;QAClCV,WAAW,EAAEW,kBAAkB;QAC/BV,SAAS,EAAEW,gBAAgB;QAC3BzsO,QAAQ,EAAE0sO,sBAAsB;QAChCt9J,IAAI,EAAEu9J;MACR,CAAC;MACD3rO,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAC5CqN,WAAW,CAAC/rG,MAAM,CAAC;IACrB,CAAC,CAAC;IAEFitG,eAAe,CAACt4G,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MAC7C2nG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;IAC9C,CAAC,CAAC;EACJ;EAEA,MAAMqN,WAAW,GAAG/rG,MAAM,IAAI;IAC5B,IAAI00I,QAAQ,GAAGnpI,IAAI,CAACC,KAAK,CAACxL,MAAM,CAACupU,WAAW,CAAC;IAC7C,IAAIlnT,MAAM,GAAG9W,IAAI,CAACC,KAAK,CAACxL,MAAM,CAACwpU,SAAS,CAAC;IACzC,IAAIjtB,YAAY,GAAGovB,aAAa,CAAC3rU,MAAM,CAACiT,CAAC,IAAI;MAC3C,IAAIkqG,OAAO,GAAG5xG,IAAI,CAACC,KAAK,CAACyH,CAAC,CAAC03T,mBAAmB,CAAC;MAC/C,OAAOxtN,OAAO,IAAIu3B,QAAQ,IAAIv3B,OAAO,IAAI96F,MAAM,CAAC,CAAC;IACnD,CAAC,CAAC;IACFk6R,YAAY,GACVv8S,MAAM,CAAC09F,QAAQ,CAAC1hE,WAAW,CAAC,CAAC,KAAK,KAAK,GACnCugR,YAAY,GACZA,YAAY,CAACv8S,MAAM,CAACtI,CAAC,IAAI;MACvB,OAAOA,CAAC,CAAC2/C,UAAU,KAAKr3C,MAAM,CAAC09F,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC;IACR6+M,YAAY,GACVv8S,MAAM,CAAC8sK,IAAI,CAAC9wI,WAAW,CAAC,CAAC,KAAK,KAAK,GAC/BugR,YAAY,GACZA,YAAY,CAACv8S,MAAM,CAACtI,CAAC,IAAI;MACvB,OAAOA,CAAC,CAACgyU,uBAAuB,KAAK1pU,MAAM,CAAC8sK,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC;IACRg9J,0BAA0B,CAACvtB,YAAY,CAAC;IACxC+S,iBAAiB,CAAC,CAAC;EACrB,CAAC;EAED,SAASya,iBAAiBA,CAACzlU,MAAM,EAAE/M,IAAI,EAAE;IACvC,MAAMqzU,qBAAqB,GAAGA,CAACtmU,MAAM,EAAEooO,KAAK,KAAK;MAC/C,MAAMm+F,qBAAqB,GAAGA,CAACntO,QAAQ,EAAEqlF,MAAM,EAAEwG,MAAM,EAAEx/J,IAAI,EAAEozF,OAAO,KAAK;QACzE,IAAI4tN,QAAQ,GAAGv2U,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAE5Cg2U,QAAQ,CAACt1U,YAAY,CACnB,OAAO,EACP,wEACF,CAAC;QAEDs1U,QAAQ,CAACp5U,SAAS,GAAG;AAC7B,0DAA0Do4B,IAAI;AAC9D,4FACYozF,OAAO,GAAGA,OAAO,CAACxnG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAChD,KACK;QACGo1T,QAAQ,CAACp2U,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;UACtCpD,IAAI,CAACqjO,WAAW,CAACt5H,QAAQ,EAAEqlF,MAAM,EAAEwG,MAAM,CAAC;QAC5C,CAAC,CAAC;QACF,OAAOwhJ,QAAQ;MACjB,CAAC;MAED,IAAIr+F,KAAK,CAAC56O,MAAM,GAAG,CAAC,EAAE;QACpB,IAAIguP,cAAc,GAAG,EAAE;QAEvB,IAAIkrF,qBAAqB,GAAGx2U,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACzDi2U,qBAAqB,CAACv1U,YAAY,CAAC,OAAO,EAAE,mCAAmC,CAAC;QAEhF,IAAIw1U,YAAY,GAAGz2U,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAChDk2U,YAAY,CAACx1U,YAAY,CAAC,OAAO,EAAE,kCAAkC,CAAC;QACtEw1U,YAAY,CAACt5U,SAAS,GAAG;AACjC,aAAa+6O,KAAK,CAAC,CAAC,CAAC,CAAC7hI,QAAQ,KAAK,GAAG,GAAG,QAAQ,GAAG,UAAU;AAC9D,KAAK;QAEG,IAAIqgO,gBAAgB,GAAG12U,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACpDm2U,gBAAgB,CAACz1U,YAAY,CAC3B,OAAO,EACP,wEACF,CAAC;QACDy1U,gBAAgB,CAACv5U,SAAS,GAAG,UAAU;QAEvCq5U,qBAAqB,CAAC/4U,WAAW,CAACg5U,YAAY,CAAC;QAC/CD,qBAAqB,CAAC/4U,WAAW,CAACi5U,gBAAgB,CAAC;QACnD5mU,MAAM,CAACrS,WAAW,CAAC+4U,qBAAqB,CAAC;QAEzC,KAAKxF,MAAM,IAAI94F,KAAK,EAAE;UACpB,IAAI;YACFr1L,UAAU;YACVi1L,iBAAiB;YACjBC,gBAAgB;YAChBk9F,kBAAkB;YAClB;YACAmC,kBAAkB;YAClB;YACA7oJ,MAAM;YACN8oJ,kBAAkB;YAClB;YACAhhO,QAAQ;YACR;YACAsgO,kBAAkB;YAClBC,cAAc;YACd1B,uBAAuB;YACvBiB,mBAAmB;YACnB,GAAGpxF;UACL,CAAC,GAAG7M,KAAK,CAAC84F,MAAM,CAAC;UACjB,IAAI1lF,cAAc,KAAK/8D,MAAM,EAAE;YAC7B,IAAIsoJ,gBAAgB,GAAG72U,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;YACpDs2U,gBAAgB,CAAC51U,YAAY,CAC3B,OAAO,EACP,yCACF,CAAC;YACD41U,gBAAgB,CAAC15U,SAAS,GAAG,GAAG46O,gBAAgB,KAAKD,iBAAiB,IAAIm9F,kBAAkB,IAC1F5+N,QAAQ,KAAK,GAAG,GAAG,UAAU,GAAGghO,kBAAkB,GAAG,EAAE,WAC9CD,kBAAkB,GAAGA,kBAAkB,CAACj2T,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE;YACvErR,MAAM,CAACrS,WAAW,CAACo5U,gBAAgB,CAAC;YACpCvrF,cAAc,GAAG/8D,MAAM;UACzB;UACAz+K,MAAM,CAACrS,WAAW,CAChB44U,qBAAqB,CACnB;YACEntO,QAAQ,EAAE;cACRrmD,UAAU;cACVi1L,iBAAiB;cACjBC,gBAAgB;cAChBk9F;YACF;UACF,CAAC,EACD1mJ,MAAM,EACNqoJ,cAAc,EACd1B,uBAAuB,EACvBiB,mBACF,CACF,CAAC;QACH;QACA,OAAOrmU,MAAM;MACf;IACF,CAAC;IAED,IAAIwnU,WAAW,GAAGv0U,IAAI,CAACyI,MAAM,CAACtI,CAAC,IAAIA,CAAC,CAACmzG,QAAQ,KAAK,GAAG,CAAC;IACtD,IAAIkhO,aAAa,GAAGx0U,IAAI,CAACyI,MAAM,CAACtI,CAAC,IAAIA,CAAC,CAACmzG,QAAQ,KAAK,GAAG,CAAC;IAExD,IAAIihO,WAAW,CAACh6U,MAAM,GAAG,CAAC,EAAE84U,qBAAqB,CAACtmU,MAAM,EAAEwnU,WAAW,CAAC;IACtE,IAAIC,aAAa,CAACj6U,MAAM,GAAG,CAAC,EAAE84U,qBAAqB,CAACtmU,MAAM,EAAEynU,aAAa,CAAC;IAE1E,OAAOznU,MAAM;EACf;EAEA,SAASgrT,iBAAiBA,CAAA,EAAG;IAC3B,IAAIruN,UAAU,GAAGyqD,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAE1D,IAAI,CAACwsG,UAAU,EAAE;MACfA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAC5C48T,UAAU,CAACnqT,YAAY,CAACi9F,UAAU,EAAEmoO,SAAS,CAAC;IAChD;IAEA,MAAME,YAAY,GAAGtpU,MAAM,CAACspU,YAAY,CAACttS,WAAW,CAAC,CAAC;IACtD,MAAMutS,WAAW,GAAG3+Q,MAAM,CAAC5qD,MAAM,CAACupU,WAAW,EAAE,YAAY,CAAC,CAACjvT,MAAM,CAAC,UAAU,CAAC;IAC/E,MAAMkvT,SAAS,GAAG5+Q,MAAM,CAAC5qD,MAAM,CAACwpU,SAAS,EAAE,YAAY,CAAC,CAAClvT,MAAM,CAAC,UAAU,CAAC;IAC3E,MAAMgxT,gBAAgB,GAAGtrU,MAAM,CAAC09F,QAAQ,CAAC1hE,WAAW,CAAC,CAAC;IACtD,MAAM8wI,IAAI,GAAG9sK,MAAM,CAAC8sK,IAAI,CAAC9wI,WAAW,CAAC,CAAC;IAEtC,MAAMuvS,mBAAmB,GAAGA,CAAA,KAAM;MAChC,OAAOj4E,SAAS,CAAC9sM,IAAI,CAACxwD,CAAC,IAAI;QACzB,OAAOA,CAAC,CAACqhD,UAAU,KAAKr3C,MAAM,CAAC09F,QAAQ;MACzC,CAAC,CAAC;IACJ,CAAC;;IAED;IACAuD,UAAU,CAACtvG,SAAS,GAAG;AAC3B,gCACQ23U,YAAY,KAAK,QAAQ,GAAG,GAAGC,WAAW,MAAMC,SAAS,EAAE,GAAGF,YAAY;AAClF,gCAEQgC,gBAAgB,KAAK,KAAK,GAAG,KAAK,GAAGC,mBAAmB,CAAC,CAAC,CAACh2M,gBAAgB;AACnF,4BAC4Bu3C,IAAI;AAChC,SAAS;EACP;EAEA,eAAeznC,OAAOA,CAAA,EAAG;IACvB,IAAI;MACF,IAAI;QACF2mM,+BAA+B,EAAE9jT;MACnC,CAAC,GAAG,MAAMmiK,kBAAkB,CAAC4hJ,yBAAyB,CAACrpU,CAAC,CAACC,OAAO,CAACmoC,QAAQ,CAAC;MAC1E,OAAO9iB,MAAM;IACf,CAAC,CAAC,OAAO3kB,KAAK,EAAE;MACdhE,OAAO,CAACgE,KAAK,CAACA,KAAK,CAAC;IACtB;EACF;EAEA,OAAO;IACL7O;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC9eJ,MAAMw0J,4BAA4B,GAAI,YAAY;EAC9C,IAAIlpJ,MAAM,GAAG;IACTosJ,WAAW,EAAE,GAAG;IAChB3vJ,QAAQ,EAAE,GAAG;IACbxE,KAAK,EAAE,GAAG;IACVsjB,IAAI,EAAE;EACV,CAAC;EACD;EACA;EACA;EACA;EACA,IAAImwI,MAAM;EACV,IAAIyiK,UAAU;EACd,IAAIzvN,WAAW;EACf,IAAIwtO,eAAe;EACnB,IAAIt0H,eAAe;EACnB,IAAI53D,gBAAgB;EACpB,IAAIyU,aAAa;EACjB,IAAI45J,eAAe;EACnB,IAAIphN,eAAe;EAEnB,SAASk/N,oBAAoBA,CAACrxR,GAAG,EAAE;IAC/B,IAAIw4M,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI84E,aAAa,GAAG,CAAC;IACrB,IAAIhe,cAAc,GAAG,CAAC;IAEtBtzQ,GAAG,CAAC/oD,OAAO,CAAC,UAAU2rG,QAAQ,EAAE;MAC5B,IAAIG,QAAQ,GAAGH,QAAQ,CAACixD,SAAS,CAAC1xI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAGygF,QAAQ,CAACgxD,UAAU;MACrE,IAAI,CAAC4kG,SAAS,CAACz1J,QAAQ,CAAC,EAAEy1J,SAAS,CAACz1J,QAAQ,CAAC,GAAG,CAAC;MACjDy1J,SAAS,CAACz1J,QAAQ,CAAC,EAAE;MACrBuuO,aAAa,EAAE;IACnB,CAAC,CAAC;IAEF,IAAI3M,eAAe,GAAG,CAAC,CAAC;IACxBnsT,MAAM,CAAC8B,IAAI,CAACk+O,SAAS,CAAC,CACjBznP,IAAI,CAAC,CAAC,CACN9Z,OAAO,CAAC,UAAUoE,GAAG,EAAE;MACpBspU,eAAe,CAACtpU,GAAG,CAAC,GAAGm9P,SAAS,CAACn9P,GAAG,CAAC;IACzC,CAAC,CAAC;IAEN,IAAIm/M,IAAI,GAAG9gN,QAAQ,CAACiD,cAAc,CAAC,SAAS,CAAC;IAC7C,IAAI,CAAC69M,IAAI,EAAE;IACXA,IAAI,CAAC3jN,SAAS,GAAG,EAAE;IAEnB,IAAIi9J,KAAK,GAAGt7I,MAAM,CAAC8B,IAAI,CAACqqT,eAAe,CAAC;IACxC7wK,KAAK,CAAC78J,OAAO,CAAC,UAAUuI,IAAI,EAAE;MAC1B,IAAIu3F,EAAE,GAAGr9F,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;MACrC88F,EAAE,CAAC74F,SAAS,GAAGsB,IAAI,GAAG,KAAK,GAAGg5P,SAAS,CAACh5P,IAAI,CAAC;MAC7C;MACAg7M,IAAI,CAACrjN,WAAW,CAAC4/F,EAAE,CAAC;MACpB;MACA;MACA;MACA;MACA;MACA;MACA;;MAEA;MACA;MACAu8N,cAAc,EAAE;IACpB,CAAC,CAAC;IAEF,IAAI5/J,aAAa,GAAGh6J,QAAQ,CAACiD,cAAc,CAAC,oBAAoB,CAAC;IACjE,IAAI40U,YAAY,GAAG73U,QAAQ,CAACiD,cAAc,CAAC,YAAY,CAAC;IACxD+2J,aAAa,CAACx1J,SAAS,GAAGo1T,cAAc;IACxCie,YAAY,CAACrzU,SAAS,GAAGozU,aAAa;EAC1C;EAEA,SAAS9kL,gBAAgBA,CAAA,EAAG;IACxB,IAAIgnK,YAAY,GAAG5iK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC3D,IAAI65T,YAAY,EAAE;IAElB5vN,WAAW,GAAGt4C,SAAS,CAACkhG,gBAAgB,CAAC,CAAC;IAE1C,IAAIxH,SAAS,GAAGznJ,KAAK,CAACxD,KAAK,CAAC;MACxBG,EAAE,EAAE,iBAAiB;MACrB2B,KAAK,EAAE,MAAM;MACbpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE81U;IACX,CAAC,CAAC;IAEFt0H,eAAe,GAAGphN,QAAQ,CAAC3B,KAAK,CAAC;MAC7B4B,UAAU,EAAE,qBAAqB;MACjCE,KAAK,EAAE,cAAc;MACrBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACd,CAAC,CAAC;IACFopJ,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAC9B4B,UAAU,EAAE,sBAAsB;MAClCE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACd,CAAC,CAAC;IACF69J,aAAa,GAAGj+J,QAAQ,CAAC3B,KAAK,CAAC;MAC3B4B,UAAU,EAAE,mBAAmB;MAC/BE,KAAK,EAAE,OAAO;MACdrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACd,CAAC,CAAC;IACFy3T,eAAe,GAAGz5T,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IACF03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEF,IAAIwrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACo8T,eAAe,CAAC;IACpCttR,OAAO,CAAC9uC,WAAW,CAACg7G,eAAe,CAAC;IAEpCvO,WAAW,CAACzsG,WAAW,CAAC6tJ,SAAS,CAAC;IAClCphD,WAAW,CAACzsG,WAAW,CAAC2lN,eAAe,CAAC;IACxCl5G,WAAW,CAACzsG,WAAW,CAAC+tJ,gBAAgB,CAAC;IACzCthD,WAAW,CAACzsG,WAAW,CAACwiK,aAAa,CAAC;IACtC/1D,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAChC2qH,MAAM,CAAC1nJ,YAAY,CAAC06F,WAAW,EAAEyvN,UAAU,CAAC;;IAE5C;IACA5yS,IAAI,GAAG/mB,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC;IACjD8jB,IAAI,CAACnlB,KAAK,GAAG8uB,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACjCktS,eAAe,GAAG3wT,IAAI,CAACnlB,KAAK;IAC5B4J,MAAM,CAACub,IAAI,GAAGA,IAAI,CAACnlB,KAAK;EAC5B;EAEA,SAASk2U,0BAA0BA,CAACxxR,GAAG,EAAE;IACrC,IAAIyxR,OAAO,GAAGzxR,GAAG,CAACv/C,GAAG,CAAC,UAAUhE,IAAI,EAAE;MAClC,OAAO;QACHvC,EAAE,EAAEuC,IAAI,CAACuvM,EAAE;QACX1wM,KAAK,EAAEmB,IAAI,CAACuvM,EAAE;QACd3xM,IAAI,EAAEoC,IAAI,CAACokH;MACf,CAAC;IACL,CAAC,CAAC;IAEF,IAAI6wN,cAAc,GAAG;MACjBx3U,EAAE,EAAE,GAAG;MACPoB,KAAK,EAAE,GAAG;MACVjB,IAAI,EAAE;IACV,CAAC;IACDo3U,OAAO,CAACp3Q,OAAO,CAACq3Q,cAAc,CAAC;IAE/B,IAAI,CAAC5pU,CAAC,CAACC,OAAO,CAAC4pU,2BAA2B,EACtC7pU,CAAC,CAACC,OAAO,CAAC4pU,2BAA2B,GAAGF,OAAO,CAAC,CAAC,CAAC,CAACn2U,KAAK;IAC5D,IAAI,CAACwM,CAAC,CAACC,OAAO,CAAC6pU,6BAA6B,EACxC9pU,CAAC,CAACC,OAAO,CAAC6pU,6BAA6B,GAAGH,OAAO,CAAC,CAAC,CAAC,CAACp3U,IAAI;IAE7DqB,QAAQ,CAAC5E,QAAQ,CAAC,qBAAqB,EAAE26U,OAAO,EAAE3pU,CAAC,CAACC,OAAO,CAAC4pU,2BAA2B,CAAC;EAC5F;EACA,SAASE,uBAAuBA,CAAC7xR,GAAG,EAAE;IAClC,IAAIyxR,OAAO,GAAGzxR,GAAG,CAACv/C,GAAG,CAAC,UAAUhE,IAAI,EAAE;MAClC,OAAO;QACHnB,KAAK,EAAEmB,IAAI,CAACmrG,EAAE;QACdvtG,IAAI,EAAEoC,IAAI,CAACszC;MACf,CAAC;IACL,CAAC,CAAC;IAEF,IAAI43G,eAAe,GAAG;MAClBztJ,EAAE,EAAE,GAAG;MACPoB,KAAK,EAAE,GAAG;MACVjB,IAAI,EAAE;IACV,CAAC;IACDo3U,OAAO,CAACp3Q,OAAO,CAACstF,eAAe,CAAC;IAEhC,IAAI,CAAC7/I,CAAC,CAACC,OAAO,CAAC+pU,uBAAuB,EAAEhqU,CAAC,CAACC,OAAO,CAAC+pU,uBAAuB,GAAGL,OAAO,CAAC,CAAC,CAAC,CAACn2U,KAAK;IAC5F,IAAI,CAACwM,CAAC,CAACC,OAAO,CAACgqU,yBAAyB,EAAEjqU,CAAC,CAACC,OAAO,CAACgqU,yBAAyB,GAAGN,OAAO,CAAC,CAAC,CAAC,CAACp3U,IAAI;IAE/FqB,QAAQ,CAAC5E,QAAQ,CAAC,sBAAsB,EAAE26U,OAAO,EAAE3pU,CAAC,CAACC,OAAO,CAAC+pU,uBAAuB,CAAC;EACzF;EACA,SAASE,oBAAoBA,CAAChyR,GAAG,EAAE;IAC/B,IAAIyxR,OAAO,GAAGzxR,GAAG,CAACv/C,GAAG,CAAC,UAAUhE,IAAI,EAAE;MAClC,OAAO;QACHnB,KAAK,EAAEmB,IAAI,CAACwiK,UAAU;QACtB5kK,IAAI,EAAEoC,IAAI,CAACqiK;MACf,CAAC;IACL,CAAC,CAAC;IAEF10I,IAAI,CAAC2Y,YAAY,CAAC0uS,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC;IAC9CrnT,IAAI,CAAC2Y,YAAY,CAAC0uS,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC;IACrDrnT,IAAI,CAAC2Y,YAAY,CAAC0uS,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC;IAE9C,IAAIQ,YAAY,GAAG;MACf/3U,EAAE,EAAE,GAAG;MACPoB,KAAK,EAAE,GAAG;MACVjB,IAAI,EAAE;IACV,CAAC;IACDo3U,OAAO,CAACp3Q,OAAO,CAAC43Q,YAAY,CAAC;IAE7B,IAAI,CAACnqU,CAAC,CAACC,OAAO,CAACmqU,qBAAqB,EAAEpqU,CAAC,CAACC,OAAO,CAACmqU,qBAAqB,GAAGT,OAAO,CAAC,CAAC,CAAC,CAACn2U,KAAK;IACxF,IAAI,CAACwM,CAAC,CAACC,OAAO,CAACoqU,uBAAuB,EAAErqU,CAAC,CAACC,OAAO,CAACoqU,uBAAuB,GAAGV,OAAO,CAAC,CAAC,CAAC,CAACp3U,IAAI;IAC3F,IAAIo3U,OAAO,CAAC/lR,IAAI,CAACzxC,CAAC,IAAIA,CAAC,CAAC3e,KAAK,IAAIwM,CAAC,CAACC,OAAO,CAACmqU,qBAAqB,CAAC,IAAIl0U,SAAS,EAAE8J,CAAC,CAACC,OAAO,CAACmqU,qBAAqB,GAAG,GAAG;IACrHx2U,QAAQ,CAAC5E,QAAQ,CAAC,mBAAmB,EAAE26U,OAAO,EAAE3pU,CAAC,CAACC,OAAO,CAACmqU,qBAAqB,CAAC;EACpF;EACA,SAASze,UAAUA,CAAA,EAAG;IAClB;IACA,IAAI2e,SAAS,GAAG;MACZ9gL,WAAW,EAAE,IAAI;MACjB3vJ,QAAQ,EAAE,IAAI;MACdxE,KAAK,EAAE,IAAI;MACXsjB,IAAI,EAAE;IACV,CAAC;IACD;IACA,IAAI4xT,0BAA0B;IAC9B,IAAIC,8BAA8B;IAClC,IAAIC,gCAAgC;IACpC,IAAIC,0BAA0B;IAC9B,IAAIC,4BAA4B;IAChC,IAAIC,wBAAwB;IAC5B,IAAIC,0BAA0B;IAE9BlyT,IAAI,CAAC5mB,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACrC,IAAIu7U,SAAS,GAAGv7U,KAAK,CAACC,MAAM,CAACgE,KAAK;MAClCu3U,YAAY,GAAGzB,eAAe;MAC9BA,eAAe,GAAGwB,SAAS;MAC3B1tU,MAAM,CAACub,IAAI,GAAG2wT,eAAe;;MAE7B;MACAkB,8BAA8B,GAAGxqU,CAAC,CAACC,OAAO,CAAC4pU,2BAA2B;MACtEY,gCAAgC,GAAGzqU,CAAC,CAACC,OAAO,CAAC6pU,6BAA6B;MAC1EY,0BAA0B,GAAG1qU,CAAC,CAACC,OAAO,CAAC+pU,uBAAuB;MAC9DW,4BAA4B,GAAG3qU,CAAC,CAACC,OAAO,CAACgqU,yBAAyB;MAClEW,wBAAwB,GAAG5qU,CAAC,CAACC,OAAO,CAACmqU,qBAAqB;MAC1DS,0BAA0B,GAAG7qU,CAAC,CAACC,OAAO,CAACoqU,uBAAuB;;MAE9D;MACAW,2BAA2B,GAAG,GAAG;MACjCC,6BAA6B,GAAG,KAAK;MACrCC,uBAAuB,GAAG,GAAG;MAC7BC,yBAAyB,GAAG,KAAK;MACjCC,qBAAqB,GAAG,GAAG;MAC3B;MACAC,uBAAuB,GAAG,UAAU;;MAEpC;MACA;IACJ,CAAC,CAAC;IAEFr2H,eAAe,CAACjjN,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEi2U,SAAS,CAAC9gL,WAAW,GAAGpsJ,MAAM,CAACosJ,WAAW;MAC1CpsJ,MAAM,CAACosJ,WAAW,GACdp1J,cAAc,CAACZ,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG8uB,IAAI,CAAC6a,cAAc,CAAC/oC,cAAc,CAACZ,KAAK,CAAC;MAClF;MACAg3U,8BAA8B,GAAGxqU,CAAC,CAACC,OAAO,CAAC4pU,2BAA2B;MACtEY,gCAAgC,GAAGzqU,CAAC,CAACC,OAAO,CAAC6pU,6BAA6B;MAC1E9pU,CAAC,CAACC,OAAO,CAAC4pU,2BAA2B,GAAGz1U,cAAc,CAACZ,KAAK;MAC5DwM,CAAC,CAACC,OAAO,CAAC6pU,6BAA6B,GAAG11U,cAAc,CAAC7B,IAAI;IACjE,CAAC,CAAC;IACF6qJ,gBAAgB,CAACrrJ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEi2U,SAAS,CAACzwU,QAAQ,GAAGuD,MAAM,CAACvD,QAAQ;MACpCuD,MAAM,CAACvD,QAAQ,GACXzF,cAAc,CAACZ,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG8uB,IAAI,CAAC6a,cAAc,CAAC/oC,cAAc,CAACZ,KAAK,CAAC;MAClF83U,gCAAgC,CAACpB,oBAAoB,CAAC91U,cAAc,CAACZ,KAAK,EAAE,UAAUqkT,MAAM,EAAE;QAC1FqyB,oBAAoB,CAACryB,MAAM,CAAC;MAChC,CAAC,CAAC;MACF;MACA;MACA6yB,0BAA0B,GAAG1qU,CAAC,CAACC,OAAO,CAAC+pU,uBAAuB;MAC9DW,4BAA4B,GAAG3qU,CAAC,CAACC,OAAO,CAACgqU,yBAAyB;MAClEjqU,CAAC,CAACC,OAAO,CAAC+pU,uBAAuB,GAAG51U,cAAc,CAACZ,KAAK;MACxDwM,CAAC,CAACC,OAAO,CAACgqU,yBAAyB,GAAG71U,cAAc,CAAC7B,IAAI;IAC7D,CAAC,CAAC;IACFs/J,aAAa,CAAC9/J,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC9C,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEi2U,SAAS,CAACj1U,KAAK,GAAG+H,MAAM,CAAC/H,KAAK;MAC9B+H,MAAM,CAAC/H,KAAK,GAAGjB,cAAc,CAACZ,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG8uB,IAAI,CAAC6a,cAAc,CAAC/oC,cAAc,CAACZ,KAAK,CAAC;MAC7F;MACAo3U,wBAAwB,GAAG5qU,CAAC,CAACC,OAAO,CAACmqU,qBAAqB;MAC1DS,0BAA0B,GAAG7qU,CAAC,CAACC,OAAO,CAACoqU,uBAAuB;MAC9DrqU,CAAC,CAACC,OAAO,CAACmqU,qBAAqB,GAAGh2U,cAAc,CAACZ,KAAK;MACtDwM,CAAC,CAACC,OAAO,CAACoqU,uBAAuB,GAAGj2U,cAAc,CAAC7B,IAAI;IAC3D,CAAC,CAAC;IACFk5T,eAAe,CAAC15T,gBAAgB,CAAC,OAAO,EAAE,MAAM;MAC5C+pG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAC5CwvO,gCAAgC,CAAC/B,oBAAoB,CACjDnsU,MAAM,CAACosJ,WAAW,EAClBpsJ,MAAM,CAACvD,QAAQ,EACfuD,MAAM,CAAC/H,KAAK,EACZ+H,MAAM,CAACub,IAAI;MAAE;MACb,UAAU+5L,IAAI,EAAE;QACZ62H,oBAAoB,CAAC72H,IAAI,CAAC;QAC1Bg6G,iBAAiB,CAAC,CAAC;MACvB,CACJ,CAAC;IACL,CAAC,CAAC;IACFriN,eAAe,CAACt4G,gBAAgB,CAAC,OAAO,EAAE,MAAM;MAC5C+pG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAC5C;MACA1+F,MAAM,CAACub,IAAI,GAAG2xT,SAAS,CAAC3xT,IAAI;MAC5Bvb,MAAM,CAACosJ,WAAW,GAAG8gL,SAAS,CAAC9gL,WAAW;MAC1CpsJ,MAAM,CAACvD,QAAQ,GAAGywU,SAAS,CAACzwU,QAAQ;MACpCuD,MAAM,CAAC/H,KAAK,GAAGi1U,SAAS,CAACj1U,KAAK;MAC9B;MACAi0U,eAAe,GAAGyB,YAAY;MAC9B/qU,CAAC,CAACC,OAAO,CAACsrU,uBAAuB,GAAGhB,0BAA0B;MAC9DvqU,CAAC,CAACC,OAAO,CAAC4pU,2BAA2B,GAAGW,8BAA8B;MACtExqU,CAAC,CAACC,OAAO,CAAC6pU,6BAA6B,GAAGW,gCAAgC;MAC1EzqU,CAAC,CAACC,OAAO,CAAC+pU,uBAAuB,GAAGU,0BAA0B;MAC9D1qU,CAAC,CAACC,OAAO,CAACgqU,yBAAyB,GAAGU,4BAA4B;MAClE3qU,CAAC,CAACC,OAAO,CAACmqU,qBAAqB,GAAGQ,wBAAwB;MAC1D5qU,CAAC,CAACC,OAAO,CAACoqU,uBAAuB,GAAGQ,0BAA0B;IAClE,CAAC,CAAC;EACN;EACA,SAASne,iBAAiBA,CAAA,EAAG;IACzB,IAAIruN,UAAU,GAAGyqD,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAC1D,IAAI25U,aAAa,GAAG1iL,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAE7D,IAAI,CAACwsG,UAAU,EAAE;MACbA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAC5C48T,UAAU,CAACnqT,YAAY,CAACi9F,UAAU,EAAEmtO,aAAa,CAAC;IACtD;IAEA,IAAIljT,SAAS,GAAGghT,eAAe,CAACv2T,KAAK,CAAC,GAAG,CAAC;IAC1C,IAAIi1L,YAAY,GAAG,GAAG1lL,IAAI,CAAC5B,WAAW,CAAC4H,SAAS,CAAC,CAAC,CAAC,CAAC,IAAIhG,IAAI,CAAC5B,WAAW,CACpE4H,SAAS,CAAC,CAAC,CACf,CAAC,IAAIA,SAAS,CAAC,CAAC,CAAC,CAACnqB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAE/B6B,CAAC,CAACC,OAAO,CAACsrU,uBAAuB,GAAGjC,eAAe;IACnDlsU,MAAM,CAACub,IAAI,GAAG2wT,eAAe;IAE7BjrO,UAAU,CAACtvG,SAAS,GAAG;AAC/B,8BAA8Bi5M,YAAY;AAC1C,qCAAqChoM,CAAC,CAACC,OAAO,CAAC6pU,6BAA6B;AAC5E,sCAAsC9pU,CAAC,CAACC,OAAO,CAACgqU,yBAAyB;AACzE,mCAAmCjqU,CAAC,CAACC,OAAO,CAACoqU,uBAAuB;AACpE,eAAe;EACX;EAEA,SAASv4U,IAAIA,CAAA,EAAG;IACZg3J,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,iBAAiB,CAAC;IACnD02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAClD;IACA2xD,SAAS,CAACkgG,kBAAkB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IAEjE,IAAI1jJ,CAAC,CAACC,OAAO,CAAC4pU,2BAA2B,EACrCzsU,MAAM,CAACosJ,WAAW,GAAGxpJ,CAAC,CAACC,OAAO,CAAC4pU,2BAA2B;IAC9D,IAAI7pU,CAAC,CAACC,OAAO,CAAC+pU,uBAAuB,EAAE5sU,MAAM,CAACvD,QAAQ,GAAGmG,CAAC,CAACC,OAAO,CAAC+pU,uBAAuB;IAC1F,IAAIhqU,CAAC,CAACC,OAAO,CAACmqU,qBAAqB,EAAEhtU,MAAM,CAAC/H,KAAK,GAAG2K,CAAC,CAACC,OAAO,CAACmqU,qBAAqB;IAEnF1lL,gBAAgB,CAAC,CAAC;IAClBinK,UAAU,CAAC,CAAC;IAEZ2f,gCAAgC,CAAC5B,0BAA0B,CAAC,UAAUt5U,QAAQ,EAAE;MAC5Ek7U,gCAAgC,CAACvB,uBAAuB,CAAC,UAAUrhS,SAAS,EAAE;QAC1E4iS,gCAAgC,CAACpB,oBAAoB,CAAC9sU,MAAM,CAACvD,QAAQ,EAAE,UAAUg+S,MAAM,EAAE;UACrFyzB,gCAAgC,CAAC/B,oBAAoB,CACjDnsU,MAAM,CAACosJ,WAAW,EAClBpsJ,MAAM,CAACvD,QAAQ,EACfuD,MAAM,CAAC/H,KAAK,EACZ+H,MAAM,CAACub,IAAI,EACX,UAAU+5L,IAAI,EAAE;YACZg3H,0BAA0B,CAACt5U,QAAQ,CAAC;YACpC25U,uBAAuB,CAACrhS,SAAS,CAAC;YAClCwhS,oBAAoB,CAACryB,MAAM,CAAC;YAC5B0xB,oBAAoB,CAAC72H,IAAI,CAAC;YAC1Bg6G,iBAAiB,CAAC,CAAC;UACvB,CACJ,CAAC;QACL,CAAC,CAAC;MACN,CAAC,CAAC;IACN,CAAC,CAAC;EACN;EAEA,OAAO;IACHtvT,MAAM,EAAEA,MAAM;IACdssU,0BAA0B,EAAEA,0BAA0B;IACtDK,uBAAuB,EAAEA,uBAAuB;IAChDG,oBAAoB,EAAEA,oBAAoB;IAC1CX,oBAAoB,EAAEA,oBAAoB;IAC1Cz3U,IAAI,EAAEA;EACV,CAAC;AACL,CAAC,CAAE,CAAC;;AAEJ;AACA;AACA;AClYA,IAAIw5U,gCAAgC,GAAI,YAAW;EAClD,SAASG,YAAYA,CAAC1rU,GAAG,EAAE69H,eAAe,EAAE4rB,WAAW,EAAEtmG,UAAU,EAAE7tD,KAAK,EAAE63J,SAAS,EAAE;IACtF,IAAIw+K,SAAS,GAAGppT,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACpC,IAAIznC,IAAI,GAAG,CAAC,CAAC;IACbA,IAAI,CAAC6pC,KAAK,GAAGx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;IAC5B,IAAItoC,CAAC,CAACC,OAAO,CAAC4pU,2BAA2B,IAAI3zU,SAAS,EAAE;MACvDvB,IAAI,CAAC60J,WAAW,GAAGxpJ,CAAC,CAACC,OAAO,CAAC4pU,2BAA2B;IACzD,CAAC,MAAM;MACNl1U,IAAI,CAAC60J,WAAW,GAAGA,WAAW,GAAGA,WAAW,GAAG,GAAG;IACnD;IACA,IAAIxpJ,CAAC,CAACC,OAAO,CAAC0rU,wBAAwB,IAAIz1U,SAAS,EAAE;MACpDvB,IAAI,CAACuuD,UAAU,GAAGljD,CAAC,CAACC,OAAO,CAAC0rU,wBAAwB;IACrD,CAAC,MAAM;MACNh3U,IAAI,CAACuuD,UAAU,GAAGA,UAAU,GAAGA,UAAU,GAAG,GAAG;IAChD;IACA,IAAIljD,CAAC,CAACC,OAAO,CAACmqU,qBAAqB,IAAIl0U,SAAS,EAAE;MACjDvB,IAAI,CAACU,KAAK,GAAG2K,CAAC,CAACC,OAAO,CAACmqU,qBAAqB;IAC7C,CAAC,MAAM;MACNz1U,IAAI,CAACU,KAAK,GAAGA,KAAK,GAAGA,KAAK,GAAG,GAAG;IACjC;IAEC,IAAI63J,SAAS,IAAI,IAAI,EAAE;MACvBv4J,IAAI,CAACu4J,SAAS,GAAGA,SAAS;IAC3B,CAAC,MACI;MACJv4J,IAAI,CAACu4J,SAAS,GAAGw+K,SAAS;IAC3B;;IAGA;;IAED;AACD;AACA;AACA;AACA;AACA;AACA;;IAGE1rU,CAAC,CAAC2+C,IAAI,CAAC;MACNhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,GAAG,GAAGp9C,GAAG,GAAG,GAAG;MAClIpL,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC1nB,IAAI,CAAC;MAC1BiqD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAEylF;IACV,CAAC,CAAC;EACH;EACA;EACA,SAAS8rM,0BAA0BA,CAACj2U,QAAQ,EAAE;IAC7Cg4U,YAAY,CACX,mDAAmD,EACnD,UAAS1sR,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;MAC/B,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC6sR,uDAAuD;MAC1En4U,QAAQ,CAACykD,GAAG,CAAC;IACd,CAAC,EACD,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IACD,CAAC;EACF;EACA;EACA,SAAS6xR,uBAAuBA,CAACt2U,QAAQ,EAAE;IAC1Cg4U,YAAY,CACX,gDAAgD,EAChD,UAAS1sR,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;MAC/B,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC8sR,oDAAoD;MACvEp4U,QAAQ,CAACykD,GAAG,CAAC;IACd,CAAC,EACD,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IACD,CAAC;EACF;EACA;EACA,SAASgyR,oBAAoBA,CAAChnR,UAAU,EAAEzvD,QAAQ,EAAE;IACnDg4U,YAAY,CACX,6CAA6C,EAC7C,UAAS1sR,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;MAC/B,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC+sR,iDAAiD;MACpEr4U,QAAQ,CAACykD,GAAG,CAAC;IACd,CAAC,EACD,IAAI,EACJgL,UAAU,EACV,IAAI,EACJ,IACD,CAAC;EACF;EACA;EACA,SAASqmR,oBAAoBA,CAAC//K,WAAW,EAAEtmG,UAAU,EAAE7tD,KAAK,EAAE63J,SAAS,EAAEz5J,QAAQ,EAAE;IAClF;IACAg4U,YAAY,CACX,+BAA+B,EAC/B,UAAS1sR,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;MAC/B,IAAI9G,GAAG,GAAG6G,QAAQ,CAACgtR,mCAAmC;MACtDt4U,QAAQ,CAACykD,GAAG,CAAC;IACd,CAAC,EACDsxG,WAAW,EACXtmG,UAAU,EACV7tD,KAAK,EACL63J,SACD,CAAC;EACF;EAEA,OAAO;IACNw8K,0BAA0B,EAAEA,0BAA0B;IACtDK,uBAAuB,EAAEA,uBAAuB;IAChDG,oBAAoB,EAAEA,oBAAoB;IAC1CX,oBAAoB,EAAEA;EACvB,CAAC;AACF,CAAC,CAAE,CAAC;ACjHJ,IAAIpmL,QAAQ,GAAI,YAAY;EAC1B;EACA;EACA,IAAIz6G,SAAS,GAAG,EAAE;EAClB,IAAIsjS,KAAK;EACT,IAAIC,WAAW;EACf;EACA;EACA,IAAInvL,WAAW;EACf,IAAIgM,MAAM;EACV,IAAIyiK,UAAU;EACd,IAAIzvN,WAAW;EACf,IAAIiiO,aAAa;EACjB,IAAI3gL,gBAAgB;EACpB,IAAIquK,eAAe;EACnB,IAAIphN,eAAe;EACnB;EACA;EACA,IAAIstE,UAAU;EACd,IAAIu0J,YAAY;EAChB,IAAIC,aAAa;EACjB,IAAIC,WAAW;EAEf,SAASC,gBAAgBA,CAACvyO,OAAO,EAAE;IACjCmyO,WAAW,GAAG,CAAC,CAAC;IAChBnyO,OAAO,CAAC3qG,OAAO,CAAC8gB,CAAC,IAAI;MACnB,IAAIpW,QAAQ,GAAGoW,CAAC,CAACpW,QAAQ;MACzB,IAAI8e,IAAI,GAAG1I,CAAC,CAACq8T,YAAY,CAACv5T,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACvC4F,IAAI,GAAG2J,IAAI,CAACkY,eAAe,CAAC7hB,IAAI,CAAC;MACjC,IAAIgP,KAAK,GAAG1X,CAAC,CAACs8T,QAAQ;MACtB,IAAIxlT,KAAK,GAAG9W,CAAC,CAACggN,UAAU;MACxB,IAAIhpM,GAAG,GAAGhX,CAAC,CAACigN,QAAQ;MACpB,IAAIs8G,QAAQ,GAAG,GAAGzlT,KAAK,MAAME,GAAG,EAAE;MAClC,IAAIwlT,QAAQ,GAAGx8T,CAAC,CAACw8T,QAAQ,CAACpyT,IAAI,CAAC,CAAC;MAEhC,IAAIquB,SAAS,CAACtwB,OAAO,CAACve,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;QACtC6uC,SAAS,CAAC1rC,IAAI,CAACnD,QAAQ,CAAC;MAC1B;MAEA,IAAI,CAACoyU,WAAW,CAACpyU,QAAQ,CAAC,EAAE;QAC1BoyU,WAAW,CAACpyU,QAAQ,CAAC,GAAG,CAAC,CAAC;MAC5B;MACA,IAAI,CAACoyU,WAAW,CAACpyU,QAAQ,CAAC,CAAC8e,IAAI,CAAC,EAAE;QAChCszT,WAAW,CAACpyU,QAAQ,CAAC,CAAC8e,IAAI,CAAC,GAAG,CAAC,CAAC;MAClC;MACA,IAAI,CAACszT,WAAW,CAACpyU,QAAQ,CAAC,CAAC8e,IAAI,CAAC,CAAC6zT,QAAQ,CAAC,EAAE;QAC1CP,WAAW,CAACpyU,QAAQ,CAAC,CAAC8e,IAAI,CAAC,CAAC6zT,QAAQ,CAAC,GAAG;UACtCC,QAAQ,EAAE,EAAE;UACZtmT,IAAI,EAAEzd,UAAU,CAACif,KAAK;QACxB,CAAC;MACH;MACA,IAAI8kT,QAAQ,KAAK,EAAE,EAAE;QACnBR,WAAW,CAACpyU,QAAQ,CAAC,CAAC8e,IAAI,CAAC,CAAC6zT,QAAQ,CAAC,CAACC,QAAQ,CAACzvU,IAAI,CAACyvU,QAAQ,CAAC;MAC/D;IACF,CAAC,CAAC;IACF,IAAI3yO,OAAO,CAAC5qG,MAAM,KAAK,CAAC,EAAE;MACxB+8U,WAAW,GAAG,CAAC,CAAC;IAClB;EACF;EAEA,SAASS,gBAAgBA,CAACC,QAAQ,EAAE;IAClC,IAAIhzB,YAAY,GAAG,EAAE;IACrB,IAAIizB,UAAU,GAAG,CAAC,CAAC;IACnBj1J,UAAU,GAAG,CAAC,CAAC,CAAC;;IAEhB,IAAIg1J,QAAQ,KAAK,KAAK,EAAE;MACtBj8T,MAAM,CAAC8B,IAAI,CAACy5T,WAAW,CAAC,CAAC98U,OAAO,CAACoE,GAAG,IAAI;QACtComT,YAAY,CAAC38S,IAAI,CAAC;UAChBrI,IAAI,EAAEs3U,WAAW,CAAC14U,GAAG,CAAC;UACtBmE,IAAI,EAAEnE;QACR,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,MAAM;MACLomT,YAAY,CAAC38S,IAAI,CAAC;QAAErI,IAAI,EAAEs3U,WAAW,CAACU,QAAQ,CAAC;QAAEj1U,IAAI,EAAEi1U;MAAS,CAAC,CAAC;IACpE;IAEA,IAAIhzB,YAAY,CAACzqT,MAAM,KAAK,CAAC,IAAIyqT,YAAY,CAAC,CAAC,CAAC,CAAChlT,IAAI,KAAKuB,SAAS,EAAE;MACnEyjT,YAAY,CAACxqT,OAAO,CAAC2F,CAAC,IAAI;QACxB,IAAI+3U,aAAa,GAAG/3U,CAAC,CAACH,IAAI;QAC1B,IAAIwuD,YAAY,GAAGruD,CAAC,CAAC4C,IAAI;QACzBgZ,MAAM,CAAC8B,IAAI,CAACq6T,aAAa,CAAC,CAAC19U,OAAO,CAACwpB,IAAI,IAAI;UACzC,IAAIm0T,kBAAkB,GAAGD,aAAa,CAACl0T,IAAI,CAAC;UAC5C,IAAI,CAACi0T,UAAU,CAACj0T,IAAI,CAAC,EAAE;YACrBi0T,UAAU,CAACj0T,IAAI,CAAC,GAAG,CAAC,CAAC;UACvB;UACA,IAAIo0T,QAAQ,GAAGr8T,MAAM,CAAC8B,IAAI,CAAC1d,CAAC,CAACH,IAAI,CAACgkB,IAAI,CAAC,CAAC;UACxCo0T,QAAQ,CAAC59U,OAAO,CAACoE,GAAG,IAAI;YACtBokL,UAAU,GAAGA,UAAU,GAAG7iL,CAAC,CAACH,IAAI,CAACgkB,IAAI,CAAC,CAACplB,GAAG,CAAC,CAAC4yB,IAAI;UAClD,CAAC,CAAC;UAEFzV,MAAM,CAAC8B,IAAI,CAACs6T,kBAAkB,CAAC,CAC5B7jU,IAAI,CAAC,CAAC,CACN9Z,OAAO,CAACI,KAAK,IAAI;YAChB,IAAI,CAACq9U,UAAU,CAACj0T,IAAI,CAAC,CAACppB,KAAK,CAAC,EAAE;cAC5Bq9U,UAAU,CAACj0T,IAAI,CAAC,CAACppB,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B;YAEAq9U,UAAU,CAACj0T,IAAI,CAAC,CAACppB,KAAK,CAAC,CAAC4zD,YAAY,CAAC,GAAG2pR,kBAAkB,CAACv9U,KAAK,CAAC;UACnE,CAAC,CAAC;QACN,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IAEAy9U,YAAY,CAACj+U,SAAS,GAAG,EAAE;IAC3B,IAAIk+U,MAAM,GAAGr7U,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C86U,MAAM,CAACx+U,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;IAClCs+U,MAAM,CAACl+U,SAAS,GAAG,iCAAiC4oL,UAAU,CAAC99I,OAAO,CAAC,CAAC,CAAC,MAAM;IAC/E,IAAIqzS,MAAM,GAAGt7U,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C+6U,MAAM,CAACn+U,SAAS,GAAG,2BAA2Bm9U,YAAY,MAAM;IAChEgB,MAAM,CAACz+U,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAE9B,IAAI0wB,KAAK,GAAG3O,MAAM,CAAC8B,IAAI,CAACo6T,UAAU,CAAC;IACnCvtT,KAAK,CAACpW,IAAI,CAAC,CAAC;IACZoW,KAAK,CAAClwB,OAAO,CAACwpB,IAAI,IAAI;MACpB,IAAI3B,QAAQ,GAAGgxC,MAAM,CAACrvC,IAAI,CAAC,CAACjB,MAAM,CAAC,cAAc,CAAC;MAClD,IAAIqtI,GAAG,GAAGnzJ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACvC4yJ,GAAG,CAACt2J,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;MAChCo2J,GAAG,CAACh2J,SAAS,GAAG,MAAMioB,QAAQ,MAAM;;MAEpC;MACA,IAAIm2T,KAAK,GAAGz8T,MAAM,CAAC8B,IAAI,CAACo6T,UAAU,CAACj0T,IAAI,CAAC,CAAC;MACzCw0T,KAAK,CAAClkU,IAAI,CAAC,CAAC,CAAC9Z,OAAO,CAACi+U,SAAS,IAAI;QAChC,IAAID,KAAK,GAAGC,SAAS,CAACr6T,KAAK,CAAC,KAAK,CAAC;QAClC,IAAIgU,KAAK,GAAGomT,KAAK,CAAC,CAAC,CAAC,CAACp6T,KAAK,CAAC,GAAG,CAAC;QAC/B,IAAIkU,GAAG,GAAGkmT,KAAK,CAAC,CAAC,CAAC,CAACp6T,KAAK,CAAC,GAAG,CAAC;QAC7B,IAAIkV,SAAS,GAAG+/B,MAAM,CAAC,CAAC,CAACjiC,IAAI,CAACvM,QAAQ,CAACuN,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAACf,MAAM,CAACxM,QAAQ,CAACuN,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpF,IAAIG,OAAO,GAAG8gC,MAAM,CAAC,CAAC,CAACjiC,IAAI,CAACvM,QAAQ,CAACyN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAACjB,MAAM,CAACxM,QAAQ,CAACyN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE9E,IAAIyhB,SAAS,GAAGh4B,MAAM,CAAC8B,IAAI,CAACo6T,UAAU,CAACj0T,IAAI,CAAC,CAACy0T,SAAS,CAAC,CAAC,CAACnkU,IAAI,CAAC,CAAC;QAE/Dy/B,SAAS,CAACv5C,OAAO,CAAC0K,QAAQ,IAAI;UAC5B,IAAI4yU,QAAQ,GAAGG,UAAU,CAACj0T,IAAI,CAAC,CAACy0T,SAAS,CAAC,CAACvzU,QAAQ,CAAC,CAAC4yU,QAAQ;UAC7DA,QAAQ,GAAGA,QAAQ,CAACv9U,MAAM,GAAG,CAAC,GAAGu9U,QAAQ,CAAC9xT,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;UAEzDoqI,GAAG,CAACh2J,SAAS,IAAI;AAC3B,iBAAiBk5B,SAAS,CAACvQ,MAAM,CAAC,OAAO,CAAC,OAAOwP,OAAO,CAACxP,MAAM,CAAC,OAAO,CAAC,MAAM7d,QAAQ,GAC1E4yU,QAAQ,KAAK,EAAE,GAAG,MAAMA,QAAQ,EAAE,GAAG,EAAE;AACnD,WACW;QACH,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFO,YAAY,CAAC39U,WAAW,CAAC01J,GAAG,CAAC;IAC/B,CAAC,CAAC;IAEFioL,YAAY,CAAC5rU,YAAY,CAAC6rU,MAAM,EAAED,YAAY,CAAC3jU,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7D2jU,YAAY,CAAC5rU,YAAY,CAAC8rU,MAAM,EAAEF,YAAY,CAAC3jU,UAAU,CAAC,CAAC,CAAC,CAAC;;IAE7D;EACF;EAEA,SAASq7I,gBAAgBA,CAAA,EAAG;IAC1B,IAAIgnK,YAAY,GAAG5iK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC3D,IAAI65T,YAAY,EAAE;IAElB5vN,WAAW,GAAGt4C,SAAS,CAACkhG,gBAAgB,CAAC,CAAC;IAE1Cq5K,aAAa,GAAGnqU,QAAQ,CAAC3B,KAAK,CAAC;MAC7B4B,UAAU,EAAE,+BAA+B;MAC3CE,KAAK,EAAE,OAAO;MACdrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACZ,CAAC,CAAC;IACFopJ,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAChC4B,UAAU,EAAE,mCAAmC;MAC/CE,KAAK,EAAE,WAAW;MAClBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACZ,CAAC,CAAC;IACFy3T,eAAe,GAAGz5T,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IACF03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACR,CAAC,CAAC;IAEF,IAAIwrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACo8T,eAAe,CAAC;IACpCttR,OAAO,CAAC9uC,WAAW,CAACg7G,eAAe,CAAC;IAEpCvO,WAAW,CAACzsG,WAAW,CAAC0uU,aAAa,CAAC;IACtCjiO,WAAW,CAACzsG,WAAW,CAAC+tJ,gBAAgB,CAAC;IACzCthD,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAChC2qH,MAAM,CAAC1nJ,YAAY,CAAC06F,WAAW,EAAEyvN,UAAU,CAAC;EAC9C;EACA,SAASI,UAAUA,CAAA,EAAG;IACpB,IAAI0hB,eAAe;IACnB,IAAIC,gBAAgB;IACpB,IAAIC,cAAc;IAClB,IAAIC,+BAA+B;IAEnCzP,aAAa,CAAChsU,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE,IAAIskB,IAAI,GAAGvkB,cAAc,CAACZ,KAAK,CAACuf,KAAK,CAAC,KAAK,CAAC;MAC5Cs6T,eAAe,GAAGnB,YAAY;MAC9BoB,gBAAgB,GAAGnB,aAAa;MAChCoB,cAAc,GAAGnB,WAAW;MAC5BF,YAAY,GAAG38U,KAAK,CAACC,MAAM,CAACgE,KAAK;MACjC24U,aAAa,GAAGxzT,IAAI,CAAC,CAAC,CAAC;MACvByzT,WAAW,GAAGzzT,IAAI,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFykI,gBAAgB,CAACrrJ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEm5U,+BAA+B,GAAGxtU,CAAC,CAACC,OAAO,CAACwtU,4BAA4B;MACxEztU,CAAC,CAACC,OAAO,CAACwtU,4BAA4B,GAAGr5U,cAAc,CAACZ,KAAK;IAC/D,CAAC,CAAC;IACFi4T,eAAe,CAAC15T,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAC5C4xO,YAAY,CAACC,+BAA+B,CAC1C;QACEnvS,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtBxhB,SAAS,EAAExE,IAAI,CAACkY,eAAe,CAAC2xS,aAAa,CAAC;QAC9CnlT,OAAO,EAAE1E,IAAI,CAACkY,eAAe,CAAC4xS,WAAW;MAC3C,CAAC,EACD,UAAUtyO,OAAO,EAAE;QACjBuyO,gBAAgB,CAACvyO,OAAO,CAAC;QACzBgkD,wBAAwB,CAAC,CAAC;QAC1B4uK,iBAAiB,CAAC,CAAC;QACnBggB,gBAAgB,CAAC1sU,CAAC,CAACC,OAAO,CAACwtU,4BAA4B,CAAC;MAC1D,CACF,CAAC;IACH,CAAC,CAAC;IACFpjO,eAAe,CAACt4G,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjDusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAE5C97F,CAAC,CAACC,OAAO,CAACwtU,4BAA4B,GAAGD,+BAA+B;MACxEtB,YAAY,GAAGmB,eAAe;MAC9BlB,aAAa,GAAGmB,gBAAgB;MAChClB,WAAW,GAAGmB,cAAc;IAC9B,CAAC,CAAC;EACJ;EACA,SAASzvL,wBAAwBA,CAAA,EAAG;IAClC,IAAInpJ,IAAI,GAAG+zC,SAAS,CAAC/vC,GAAG,CAACkB,QAAQ,IAAI;MACnC,OAAO;QACLrG,KAAK,EAAEqG,QAAQ;QACftH,IAAI,EAAEsH;MACR,CAAC;IACH,CAAC,CAAC;IAEFlF,IAAI,CAAC49D,OAAO,CAAC;MAAE/+D,KAAK,EAAE,KAAK;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IAC3CoC,IAAI,CAACsU,IAAI,CAAC,CAAC;IAEX,IAAIjJ,CAAC,CAACC,OAAO,CAACwtU,4BAA4B,EAAE;MAC1C94U,IAAI,GAAGA,IAAI,CAACyI,MAAM,CAACtI,CAAC,IAAIA,CAAC,CAACtB,KAAK,KAAKwM,CAAC,CAACC,OAAO,CAACwtU,4BAA4B,CAAC;MAC3E94U,IAAI,CAAC49D,OAAO,CAAC;QACX/+D,KAAK,EAAEwM,CAAC,CAACC,OAAO,CAACwtU,4BAA4B;QAC7Cl7U,IAAI,EAAEyN,CAAC,CAACC,OAAO,CAACwtU;MAClB,CAAC,CAAC;IACJ,CAAC,MAAM;MACLztU,CAAC,CAACC,OAAO,CAACwtU,4BAA4B,GAAG94U,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;IACxD;IAEAI,QAAQ,CAAC5E,QAAQ,CACf,mCAAmC,EACnC2F,IAAI,EACJqL,CAAC,CAACC,OAAO,CAACwtU,4BACZ,CAAC;EACH;EACA,SAASzP,qBAAqBA,CAAClkO,OAAO,EAAE;IACtCkyO,KAAK,GAAGlyO,OAAO;IAEf,IAAIiyB,YAAY;IAEhB,IAAIp3H,IAAI,GAAGmlG,OAAO,CAACnhG,GAAG,CAACsX,CAAC,IAAI;MAC1B,IAAIA,CAAC,CAAC29T,WAAW,EAAE;QACjB7hN,YAAY,GAAG97G,CAAC,CAAC1d,IAAI;QACrB25U,YAAY,GAAGj8T,CAAC,CAAC1d,IAAI;QACrB45U,aAAa,GAAGl8T,CAAC,CAAC8W,KAAK;QACvBqlT,WAAW,GAAGn8T,CAAC,CAACgX,GAAG;MACrB;MAEA,OAAO;QACLzzB,KAAK,EAAEyc,CAAC,CAAC1d,IAAI;QACbA,IAAI,EAAE0d,CAAC,CAAC1d;MACV,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAACw5H,YAAY,EAAE;MACjBmgN,YAAY,GAAGv3U,IAAI,CAAC,CAAC,CAAC,CAACpC,IAAI;MAC3B45U,aAAa,GAAGryO,OAAO,CAAC,CAAC,CAAC,CAAC/yE,KAAK;MAChCqlT,WAAW,GAAGtyO,OAAO,CAAC,CAAC,CAAC,CAAC7yE,GAAG;IAC9B;IAEArzB,QAAQ,CAAC5E,QAAQ,CAAC,+BAA+B,EAAE2F,IAAI,EAAEo3H,YAAY,CAAC;EACxE;EACA,SAAS2gM,iBAAiBA,CAAA,EAAG;IAC3B,IAAIruN,UAAU,GAAGyqD,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAE1D,IAAI,CAACwsG,UAAU,EAAE;MACfA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAC5C48T,UAAU,CAACnqT,YAAY,CAACi9F,UAAU,EAAE2uO,YAAY,CAAC;IACnD;IAEA,IAAI1kT,SAAS,GAAG4jT,YAAY,CAACn5T,KAAK,CAAC,GAAG,CAAC;IACvC,IAAIgU,KAAK,GAAGuB,SAAS,CAAC,CAAC,CAAC,CAACjO,IAAI,CAAC,CAAC,CAACtH,KAAK,CAAC,GAAG,CAAC;IAC1C,IAAIkU,GAAG,GAAGqB,SAAS,CAAC,CAAC,CAAC,CAACjO,IAAI,CAAC,CAAC,CAACtH,KAAK,CAAC,GAAG,CAAC;IACxCgU,KAAK,GAAG,GAAGzE,IAAI,CAAC5B,WAAW,CAACqG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAIzE,IAAI,CAAC5B,WAAW,CAACqG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,CAAC5oB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAC7F8oB,GAAG,GAAG,GAAG3E,IAAI,CAAC5B,WAAW,CAACuG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI3E,IAAI,CAAC5B,WAAW,CAACuG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAIA,GAAG,CAAC,CAAC,CAAC,CAAC9oB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IACrF,IAAI6pM,YAAY,GAAG,GAAGjhL,KAAK,MAAME,GAAG,EAAE;IAEtCo3E,UAAU,CAACtvG,SAAS,GAAG;AAC3B,+BAA+Bi5M,YAAY;AAC3C,kCAAkChoM,CAAC,CAACC,OAAO,CAACwtU,4BAA4B;AACxE,WAAW;EACT;EAEA,SAAS37U,IAAIA,CAAA,EAAG;IACdg3J,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,oBAAoB,CAAC;IACtD02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAClDm7U,YAAY,GAAGp7U,QAAQ,CAACiD,cAAc,CAAC,qBAAqB,CAAC;IAE7D,IAAI,CAACmL,CAAC,CAACC,OAAO,CAACwtU,4BAA4B,EAAEztU,CAAC,CAACC,OAAO,CAACwtU,4BAA4B,GAAG,KAAK;IAE3FjqR,SAAS,CAACkgG,kBAAkB,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;IAEvEgB,gBAAgB,CAAC,CAAC;IAClBinK,UAAU,CAAC,CAAC;IAEZ+hB,YAAY,CAACG,wBAAwB,CAAC,UAAU/zO,OAAO,EAAE;MACvDkkO,qBAAqB,CAAClkO,OAAO,CAAC;MAE9B4zO,YAAY,CAACC,+BAA+B,CAC1C;QACEnvS,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtBxhB,SAAS,EAAExE,IAAI,CAACkY,eAAe,CAAC2xS,aAAa,CAAC;QAC9CnlT,OAAO,EAAE1E,IAAI,CAACkY,eAAe,CAAC4xS,WAAW;MAC3C,CAAC,EACD,UAAUtyO,OAAO,EAAE;QACjBuyO,gBAAgB,CAACvyO,OAAO,CAAC;QACzBgkD,wBAAwB,CAAC,CAAC;QAC1B4uK,iBAAiB,CAAC,CAAC;QACnBggB,gBAAgB,CAAC1sU,CAAC,CAACC,OAAO,CAACwtU,4BAA4B,CAAC;MAC1D,CACF,CAAC;IACH,CAAC,CAAC;EACJ;EAEA,OAAO;IACL37U;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC/VJ,IAAI47U,YAAY,GAAI,YAAY;EAC9B,SAASG,wBAAwBA,CAACp6U,QAAQ,EAAE;IAC1CuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wBAAwB;MAC1BxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC+uR,0BAA0B;QAC7C,IAAIn5U,IAAI,GAAGujD,GAAG,CAACv/C,GAAG,CAACsX,CAAC,IAAI;UACtB,IAAI8W,KAAK,GAAG9W,CAAC,CAAC89T,UAAU,CAACh7T,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UACtC,IAAIkU,GAAG,GAAGhX,CAAC,CAAC+9T,QAAQ,CAACj7T,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAClC,IAAIxgB,IAAI,GAAG,GAAGw0B,KAAK,MAAME,GAAG,EAAE;UAC9B,OAAO;YACLF,KAAK;YACLE,GAAG;YACH10B,IAAI;YACJq7U,WAAW,EAAE39T,CAAC,CAACg+T,YAAY,KAAK,GAAG,GAAG,IAAI,GAAG;UAC/C,CAAC;QACH,CAAC,CAAC;QACFx6U,QAAQ,CAACkB,IAAI,CAAC;MAChB,CAAC;MACDgM,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnC;MAAA;IAEJ,CAAC,CAAC;EACJ;EAEA,SAASgtU,+BAA+BA,CAAC32D,UAAU,EAAEvjR,QAAQ,EAAE;IAC7D;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+BAA+B;MACjCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC26P,UAAU,CAAC;MAChCp4N,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAACmvR,iCAAiC;QACpDz6U,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnC;MAAA;IAEJ,CAAC,CAAC;EACJ;EAEA,OAAO;IACLktU,wBAAwB;IACxBF;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACnEJ,MAAMtlL,eAAe,GAAI,YAAY;EACjC,IAAI8lL,oBAAoB;EACxB,IAAI16K,oBAAoB;EACxB,IAAIH,iBAAiB;EACrB;EACA,IAAI86K,mBAAmB;EACvB,IAAIC,sBAAsB;EAC1B,IAAIC,wBAAwB;EAC5B,IAAIC,wBAAwB;EAC5B,IAAIC,yBAAyB;EAC7B,IAAIC,2BAA2B;EAC/B;EACA;EACA,IAAI3lL,MAAM;EACV,IAAIyiK,UAAU;EACd,IAAImjB,qBAAqB;EACzB,IAAI5yO,WAAW;EACf,IAAI2vN,eAAe;EACnB,IAAIphN,eAAe;EACnB,IAAIskO,kBAAkB;EACtB,IAAIvxL,gBAAgB;EACpB,IAAIyU,aAAa;EAEjB,SAAS+8K,0BAA0BA,CAAA,EAAG;IAClC,IAAIj6U,IAAI,GAAG,CACP;MAAEnB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAM,CAAC,EAC3B;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAQ,CAAC,EAC7B;MAAEiB,KAAK,EAAE,GAAG;MAAEjB,IAAI,EAAE;IAAW,CAAC,CACnC;IAEDqB,QAAQ,CAAC5E,QAAQ,CAAC2/U,kBAAkB,EAAEh6U,IAAI,EAAEy5U,mBAAmB,CAAC;EACpE;EACA,SAAStwL,wBAAwBA,CAAC+wL,OAAO,EAAE;IACvCA,OAAO,GAAGA,OAAO,GAAGA,OAAO,GAAGp7K,oBAAoB;IAElD,MAAMhkC,YAAY,GAAGo/M,OAAO,CAACl2U,GAAG,CAAChE,IAAI,IAAI;MACrC,OAAO;QACHnB,KAAK,EAAEmB,IAAI,CAACmrG,EAAE;QACdvtG,IAAI,EAAEoC,IAAI,CAACszC;MACf,CAAC;IACL,CAAC,CAAC;IAEF,MAAM43G,eAAe,GAAG;MACpBztJ,EAAE,EAAE,GAAG;MACPoB,KAAK,EAAE,GAAG;MACVjB,IAAI,EAAE;IACV,CAAC;IACDk9H,YAAY,CAACl9D,OAAO,CAACstF,eAAe,CAAC;IAErCjsJ,QAAQ,CAAC5E,QAAQ,CAACouJ,gBAAgB,EAAE3tB,YAAY,EAAE++M,yBAAyB,CAAC;EAChF;EACA,SAASn7E,qBAAqBA,CAAC2tD,SAAS,EAAE;IACtCA,SAAS,GAAGA,SAAS,GAAGA,SAAS,GAAG1tJ,iBAAiB;IAErD,MAAM7jC,YAAY,GAAGuxL,SAAS,CAACroT,GAAG,CAAC,UAAUhE,IAAI,EAAE;MAC/C,OAAO;QACH;QACAnB,KAAK,EAAEmB,IAAI,CAACkiK,SAAS;QACrBtkK,IAAI,EAAEoC,IAAI,CAACqiK;MACf,CAAC;IACL,CAAC,CAAC;;IAEF;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;;IAEApjK,QAAQ,CAAC5E,QAAQ,CAAC6iK,aAAa,EAAEpiC,YAAY,EAAE8+M,wBAAwB,CAAC;EAC5E;EAEA,SAASrmB,SAASA,CAACjtN,QAAQ,EAAE;IACzB,MAAM,CAACrhD,IAAI,EAAEopC,KAAK,CAAC,GAAGiY,QAAQ,CAACloF,KAAK,CAAC,IAAI,CAAC;IAC1C,OAAO;MAAEiwE,KAAK;MAAEppC;IAAK,CAAC;EAC1B;EAEA,SAAS8qG,gBAAgBA,CAAA,EAAG;IACxB,IAAIgnK,YAAY,GAAG5iK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC3D,IAAI65T,YAAY,EAAE;IAElB5vN,WAAW,GAAGt4C,SAAS,CAACkhG,gBAAgB,CAAC,CAAC;IAE1CiqL,kBAAkB,GAAG/6U,QAAQ,CAAC3B,KAAK,CAAC;MAChC4B,UAAU,EAAE,6BAA6B;MACzCE,KAAK,EAAE,aAAa;MACpBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACd,CAAC,CAAC;IACFopJ,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAC9B4B,UAAU,EAAE,2BAA2B;MACvCE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAE;IACd,CAAC,CAAC;IACF;IACA;IACA;IACA;IACA;IACA;IACAy3T,eAAe,GAAGz5T,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IACF03G,eAAe,GAAGr4G,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;IAEF,IAAIwrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACo8T,eAAe,CAAC;IACpCttR,OAAO,CAAC9uC,WAAW,CAACg7G,eAAe,CAAC;IAEpCvO,WAAW,CAACzsG,WAAW,CAACs/U,kBAAkB,CAAC;IAC3C7yO,WAAW,CAACzsG,WAAW,CAAC+tJ,gBAAgB,CAAC;IACzC;IACAthD,WAAW,CAACzsG,WAAW,CAAC8uC,OAAO,CAAC;IAChC2qH,MAAM,CAAC1nJ,YAAY,CAAC06F,WAAW,EAAEyvN,UAAU,CAAC;IAE5CqjB,0BAA0B,CAAC,CAAC;EAChC;EACA,SAASjjB,UAAUA,CAAA,EAAG;IAClB,IAAImjB,sBAAsB;IAC1B,IAAIC,yBAAyB;IAC7B,IAAIC,2BAA2B;IAC/B,IAAIC,2BAA2B;IAC/B,IAAIC,4BAA4B;IAChC,IAAIC,8BAA8B;IAElCR,kBAAkB,CAAC58U,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD,MAAM6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACvE;MACAy6U,sBAAsB,GAAGV,mBAAmB;MAC5C;MACAA,mBAAmB,GAAGh6U,cAAc,CAACZ,KAAK;IAC9C,CAAC,CAAC;IACF4pJ,gBAAgB,CAACrrJ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,MAAM6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACvE;MACA66U,4BAA4B,GAAGV,yBAAyB;MACxDW,8BAA8B,GAAGV,2BAA2B;MAC5D;MACAD,yBAAyB,GAAGp6U,cAAc,CAACZ,KAAK;MAChDi7U,2BAA2B,GAAGr6U,cAAc,CAACrF,SAAS;IAC1D,CAAC,CAAC;IACF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA08T,eAAe,CAAC15T,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC/CusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAE5CszO,kBAAkB,GAAGjB,oBAAoB,CAAC/wU,MAAM,CAAC2sG,EAAE,IAAI;QACnD,OACI,CAACA,EAAE,CAAC89H,UAAU,KAAKumG,mBAAmB,IAAIA,mBAAmB,KAAK,GAAG,MACpErkO,EAAE,CAAC7mD,UAAU,CAACmgD,QAAQ,CAACmrO,yBAAyB,CAAC,IAAIA,yBAAyB,KAAK,GAAG,CAAC;MAEhG,CAAC,CAAC;MACFa,yBAAyB,CAACD,kBAAkB,CAAC;MAC7C1iB,iBAAiB,CAAC,CAAC;IACvB,CAAC,CAAC;IACFriN,eAAe,CAACt4G,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC/CusG,WAAW,CAACrtG,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;MACvCoQ,OAAO,CAAClQ,IAAI,CAAC,CAAC;MACd+P,cAAc,CAACC,gBAAgB,CAACk9F,WAAW,CAAC;MAE5CsyO,mBAAmB,GAAGU,sBAAsB;MAC5CT,sBAAsB,GAAGU,yBAAyB;MAClDT,wBAAwB,GAAGU,2BAA2B;MACtDT,wBAAwB,GAAGU,2BAA2B;IAC1D,CAAC,CAAC;EACN;EACA,SAASviB,iBAAiBA,CAAA,EAAG;IACzB,IAAIruN,UAAU,GAAGyqD,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAE1D,IAAI,CAACwsG,UAAU,EAAE;MACbA,UAAU,GAAGzsG,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1CksG,UAAU,CAAC5vG,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAC5C48T,UAAU,CAACnqT,YAAY,CAACi9F,UAAU,EAAEqwO,qBAAqB,CAAC;IAC9D;IAEA,MAAMY,UAAU,GACZlB,mBAAmB,KAAK,GAAG,GAAG,KAAK,GAAGA,mBAAmB,KAAK,GAAG,GAAG,OAAO,GAAG,UAAU;IAE5F/vO,UAAU,CAACtvG,SAAS,GAAG;AAC/B,qCAAqCugV,UAAU;AAC/C,kCAAkCb,2BAA2B;AAC7D,mCAAmCH,wBAAwB;AAC3D,WAAW;EACP;EAEA,SAASe,yBAAyBA,CAAC16U,IAAI,EAAE;IACrC,MAAMkkG,YAAY,GAAG;MACjBjzF,KAAK,EAAE,IAAI;MACXI,cAAc,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,WAAW,CAAC;MAC5DhB,OAAO,EAAE;IACb,CAAC;IAED,MAAMo6F,SAAS,GAAG,EAAE;IAEpBzqG,IAAI,CAACsU,IAAI,CAAC,CAACjU,CAAC,EAAEuU,CAAC,KAAK;MAChB,MAAMgmU,KAAK,GAAGrnB,SAAS,CAAClzT,CAAC,CAACysO,UAAU,CAAC;MACrC,MAAM+tG,KAAK,GAAGtnB,SAAS,CAAC3+S,CAAC,CAACk4N,UAAU,CAAC;MAErC,IAAI8tG,KAAK,CAAC31R,IAAI,KAAK41R,KAAK,CAAC51R,IAAI,EAAE;QAC3B,OAAO21R,KAAK,CAAC31R,IAAI,CAACg+E,aAAa,CAAC43M,KAAK,CAAC51R,IAAI,CAAC;MAC/C;MACA,IAAI21R,KAAK,CAACvsP,KAAK,KAAKwsP,KAAK,CAACxsP,KAAK,EAAE;QAC7B,OAAOusP,KAAK,CAACvsP,KAAK,CAAC40C,aAAa,CAAC43M,KAAK,CAACxsP,KAAK,CAAC;MACjD;MACA,MAAM29J,KAAK,GAAG,IAAIh4O,IAAI,CAAC3T,CAAC,CAACy1O,aAAa,CAAC,CAACzvN,OAAO,CAAC,CAAC;MACjD,MAAM6gM,KAAK,GAAG,IAAIlzM,IAAI,CAACY,CAAC,CAACkhO,aAAa,CAAC,CAACzvN,OAAO,CAAC,CAAC;MACjD,OAAO2lO,KAAK,GAAG9kC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;IACjC,CAAC,CAAC;IACFlnN,IAAI,CAACxF,OAAO,CAAC2F,CAAC,IAAI;MACd;MACA;MACA;MACA;MACA,MAAMnC,IAAI,GAAGmC,CAAC,CAACmzG,QAAQ,KAAK,GAAG,GAAG,QAAQ,GAAG,UAAU;MACvD,MAAMnhF,SAAS,GAAGhyB,CAAC,CAAC21O,aAAa,CAAC13N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC/C,MAAMiU,OAAO,GAAGlyB,CAAC,CAAC61O,WAAW,CAAC53N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC3C,MAAMs3N,cAAc,GAAGv1O,CAAC,CAACu1O,cAAc,CAACt3N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACrD,MAAMu3N,YAAY,GAAGx1O,CAAC,CAACw1O,YAAY,CAACv3N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACjD,MAAMg4N,UAAU,GAAGj2O,CAAC,CAACi2O,UAAU,GAAGj2O,CAAC,CAACi2O,UAAU,CAACh4N,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;MACpE,MAAMm3F,cAAc,GAAGp1G,CAAC,CAACo1G,cAAc,GAAGp1G,CAAC,CAACo1G,cAAc,GAAG,EAAE;MAC/D,MAAM+nD,UAAU,GAAGn9J,CAAC,CAACouD,UAAU;MAE/B,MAAM+kD,QAAQ,GAAGnzG,CAAC,CAACmzG,QAAQ,KAAK,GAAG,GAAG,GAAGt1G,IAAI,IAAIu3G,cAAc,EAAE,GAAGv3G,IAAI;MAExE,MAAM8uO,UAAU,GAAG3sO,CAAC,CAAC2sO,UAAU;MAC/B,MAAM;QAAEz+I,KAAK;QAAEppC;MAAK,CAAC,GAAGsuQ,SAAS,CAACzmF,UAAU,CAAC;MAE7CriI,SAAS,CAACpiG,IAAI,CAAC;QACXkK,MAAM,EAAE,CAACu6N,UAAU,EAAE36M,SAAS,EAAEmhF,QAAQ,CAAC;QACzClhG,OAAO,EAAE,MAAAA,CAAA,KAAY;UACjB,IAAI/G,CAAC,CAACC,OAAO,CAACC,eAAe,KAAK,SAAS,EAAE;YACzC,MAAMuvU,KAAK,GAAG,MAAM1sI,QAAQ,CAAC8/C,wBAAwB,CAAC/tP,CAAC,CAAC2/C,UAAU,CAAC;YACnE,IAAIg7R,KAAK,CAACvgV,MAAM,EAAE;cACd8Q,CAAC,CAACC,OAAO,CAACisC,YAAY,GAAGujS,KAAK,CAAC,CAAC,CAAC,CAACr9U,EAAE;cACpCrB,IAAI,CAAC06O,mBAAmB,CAAC;gBACrBr5O,EAAE,EAAE4N,CAAC,CAACC,OAAO,CAACisC,YAAY;gBAC1BuI,UAAU,EAAE3/C,CAAC,CAAC2/C,UAAU;gBACxBsmD,SAAS,EAAE/X,KAAK;gBAChBgY,QAAQ,EAAEphD;cACd,CAAC,CAAC;YACN,CAAC,MAAM;cACH7oD,IAAI,CAAC06O,mBAAmB,CAAC;gBACrBr5O,EAAE,EAAE0C,CAAC,CAAC2/C,UAAU;gBAChBsmD,SAAS,EAAE/X,KAAK;gBAChBgY,QAAQ,EAAEphD;cACd,CAAC,CAAC;YACN;UACJ,CAAC,MAAM;YACH7oD,IAAI,CAAC06O,mBAAmB,CAAC;cACrBr5O,EAAE,EAAE0C,CAAC,CAAC2/C,UAAU;cAChBsmD,SAAS,EAAE/X,KAAK;cAChBgY,QAAQ,EAAEphD;YACd,CAAC,CAAC;UACN;UAEA7oD,IAAI,CAAC26O,SAAS,CAAC52O,CAAC,CAAC4uP,MAAM,CAAC;UACxB3yP,IAAI,CAAC66O,WAAW,CAAC92O,CAAC,CAACmzG,QAAQ,CAACx1G,WAAW,CAAC,CAAC,CAAC;UAC1C1B,IAAI,CAAC+6O,aAAa,CAACh3O,CAAC,CAAC+yO,UAAU,CAAC;UAChC92O,IAAI,CAACi7O,iBAAiB,CAACl3O,CAAC,CAACo1G,cAAc,CAAC;UACxCn5G,IAAI,CAACm7O,mBAAmB,CAACp3O,CAAC,CAAC46U,YAAY,CAAC;UAExCnlG,SAAS,CAACmW,kBAAkB,CAAC;YACzB55N,SAAS,EAAE,IAAIne,IAAI,CAACme,SAAS,CAAC;YAC9BE,OAAO,EAAE,IAAIre,IAAI,CAACqe,OAAO,CAAC;YAC1BqjN,cAAc,EAAE,IAAI1hO,IAAI,CAAC0hO,cAAc,CAAC;YACxCC,YAAY,EAAE,IAAI3hO,IAAI,CAAC2hO,YAAY,CAAC;YACpCS,UAAU,EAAE,IAAIpiO,IAAI,CAACoiO,UAAU;UACnC,CAAC,CAAC;UAEF/qO,CAAC,CAAC6kG,SAAS,GAAG,MAAM;UACpBO,wBAAwB,CAAC,MAAM,CAAC;UAChCtkG,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;UACvB;UACA;UACA;UACAnH,IAAI,CAACod,uBAAuB,CAAC,MAAM,CAAC;UACpC3uC,IAAI,CAACi6O,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7B;MACJ,CAAC,CAAC;MACF;IACJ,CAAC,CAAC;IAEF,MAAM2kG,QAAQ,GAAG7qU,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAE1C;IACA,MAAMzwF,OAAO,GAAGunU,QAAQ,CAAC13U,gBAAgB,CAAC,aAAa,CAAC;IACxDmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAEhD;IACAiS,KAAK,CAACqD,iBAAiB,CAACwnU,QAAQ,CAAC;IAEjC7qU,KAAK,CAAC9V,QAAQ,CAAC2gV,QAAQ,EAAEvwO,SAAS,CAAC;IACnCsvO,qBAAqB,CAAC3/U,SAAS,GAAG,EAAE;IACpC2/U,qBAAqB,CAACr/U,WAAW,CAACsgV,QAAQ,CAAC;EAC/C;EAEA,SAAS79U,IAAIA,CAAA,EAAG;IACZ;IACA;IACA;IACA;IACA;IACA;IACAs8U,mBAAmB,GAAG,GAAG;IACzBC,sBAAsB,GAAG,GAAG;IAC5BC,wBAAwB,GAAG,UAAU;IACrCC,wBAAwB,GAAG,KAAK;IAChCC,yBAAyB,GAAG,GAAG;IAC/BC,2BAA2B,GAAG,KAAK;IAEnC3lL,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC;IACzD02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAClD68U,qBAAqB,GAAG98U,QAAQ,CAACC,aAAa,CAAC,oBAAoB,CAAC;;IAEpE;IACA2xD,SAAS,CAACkgG,kBAAkB,CAAC,uBAAuB,EAAE,4BAA4B,CAAC;IAEnFgB,gBAAgB,CAAC,CAAC;IAClBgoK,iBAAiB,CAAC,CAAC;IACnBf,UAAU,CAAC,CAAC;IAEZikB,oBAAoB,CAACC,wBAAwB,CAAC;MAAErxS,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;IAAM,CAAC,EAAE,MAAM4P,GAAG,IAAI;MACnFi2R,oBAAoB,GAAGj2R,GAAG;MAC1Bm3R,yBAAyB,CAAClB,oBAAoB,CAAC;MAC/C16K,oBAAoB,GAAG,MAAMm8K,oBAAoB,CAACrpN,uBAAuB,CAAC,CAAC;MAC3E;MACA;MACA;MACAu3B,wBAAwB,CAAC2V,oBAAoB,CAAC;MAC9C;IACJ,CAAC,CAAC;EACN;EAEA,OAAO;IACH3hK;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACzWJ,MAAM89U,oBAAoB,GAAI,YAAY;EACxC,SAASC,wBAAwBA,CAAChjO,YAAY,EAAEp5G,QAAQ,EAAE;IACxD;IACA;IACA;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAC9BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;MAClCjuD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG6G,QAAQ,CAAC+wR,8BAA8B;QACjDr8U,QAAQ,CAACykD,GAAG,CAAC;MACf,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE,CAAC;IACxC,CAAC,CAAC;EACJ;EACA,eAAe4lH,uBAAuBA,CAAA,EAAG;IACvC,IAAI;MACF,MAAM5xH,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kDAAkD;QACpDxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UAAEmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAAM,CAAC,CAAC;QAChDsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACk3U,oDAAoD;IAClE,CAAC,CAAC,OAAOlrU,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EACA,eAAegjO,qBAAqBA,CAAC7sR,UAAU,EAAE;IAC/C,IAAI;MACF,MAAMvuD,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,+CAA+C;QACjDxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UAAEmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;UAAE4a,UAAU,EAAEA;QAAW,CAAC,CAAC;QACxEtE,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,OAAOnqD,IAAI,CAACm3U,iDAAiD;IAC/D,CAAC,CAAC,OAAOnrU,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAACosG,YAAY,CAAC;IACjC;EACF;EAEA,OAAO;IACL8iO,wBAAwB;IACxBtpN,uBAAuB;IACvBwpN;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC5EJ,IAAIltL,SAAS,GAAI,YAAW;EAC3B;EACA,IAAIiG,MAAM;EACV,IAAIknL,aAAa;EACjB,IAAIC,aAAa;EACjB,IAAIC,YAAY;EAChB;EACA,IAAIC,iBAAiB;EACrB,IAAIC,gBAAgB;EACpB,IAAIC,cAAc;EAElB,SAASC,oBAAoBA,CAAA,EAAG;IAC/B,IAAIC,SAAS,GAAG3+U,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3Co+U,SAAS,CAAC79U,KAAK,CAAC8wF,KAAK,GAAG,KAAK;IAC7B+sP,SAAS,CAACxhV,SAAS,GAAGiR,CAAC,CAACC,OAAO,CAACuwU,cAAc;IAC9CC,WAAW,CAACphV,WAAW,CAACkhV,SAAS,CAAC;IAClCvwU,CAAC,CAACC,OAAO,CAACuwU,cAAc,GAAG,EAAE;EAC9B;EACA,SAASE,UAAUA,CAACnhV,KAAK,EAAE;IAC1B,IAAIswC,GAAG,GAAGtwC,KAAK,CAACC,MAAM;IACtB,QAAQqwC,GAAG,CAACpwC,OAAO,CAACkhV,WAAW;MAC9B,KAAK,IAAI;QACRC,aAAa,CAACC,YAAY,CAAC,CAAC;QAC5BhxS,GAAG,CAAC9wC,SAAS,GAAG,WAAW;QAC3B8wC,GAAG,CAAChtC,YAAY,CAAC,mBAAmB,EAAE,KAAK,CAAC;QAC5C;MACD,KAAK,KAAK;QACT+9U,aAAa,CAACE,aAAa,CAAC,CAAC;QAC7BjxS,GAAG,CAAC9wC,SAAS,GAAG,UAAU;QAC1B8wC,GAAG,CAAChtC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC;QAC3C;MACD;QACC;IACF;EACD;EACA,SAASk+U,oBAAoBA,CAACp8U,IAAI,EAAE;IACnC,IAAIq8U,UAAU,GAAG,EAAE;IACnB,IAAIC,eAAe,GAAGt8U,IAAI,CAACs8U,eAAe;IAC1C,IAAIC,gBAAgB,GAAGv8U,IAAI,CAACu8U,gBAAgB;IAC5C,IAAIC,cAAc,GAAGx8U,IAAI,CAACw8U,cAAc;IACxC,IAAIf,gBAAgB,GAAGz7U,IAAI,CAACA,IAAI,CAACszB,SAAS;IAC1C,IAAIooT,cAAc,GAAG17U,IAAI,CAACA,IAAI,CAACy1J,QAAQ;IACvC,IAAI6mL,eAAe,EAAE;MACpB,IAAIG,aAAa,GAAGH,eAAe,CAAC3iN,GAAG;MAEvC,IAAI8iN,aAAa,KAAKjB,iBAAiB,EAAE;QACxC,IAAIe,gBAAgB,EAAEA,gBAAgB,CAAC5iN,GAAG,GAAG8iN,aAAa;QAC1D,IAAID,cAAc,EAAEA,cAAc,CAAC7iN,GAAG,GAAG8iN,aAAa;MACvD;IACD;;IAEA;;IAEA,IAAIH,eAAe,EAAED,UAAU,CAACh0U,IAAI,CAAC,iBAAiB,CAAC;IACvD,IAAIk0U,gBAAgB,EAAE;MACrB,IAAIb,cAAc,IAAIa,gBAAgB,CAACG,OAAO,GAAGhB,cAAc,EAAE;QAChErwU,CAAC,CAACC,OAAO,CAACuwU,cAAc,GAAG,aAAa;QACxCF,oBAAoB,CAAC,CAAC;QACtB;MACD,CAAC,MAAM;QACNU,UAAU,CAACh0U,IAAI,CAAC,kBAAkB,CAAC;MACpC;IACD;IACA,IAAIm0U,cAAc,EAAE;MACnB,IAAIA,cAAc,CAACE,OAAO,GAAGjB,gBAAgB,EAAE;QAC9CpwU,CAAC,CAACC,OAAO,CAACuwU,cAAc,GAAG,aAAa;QACxCF,oBAAoB,CAAC,CAAC;QACtB;MACD,CAAC,MAAM;QACNU,UAAU,CAACh0U,IAAI,CAAC,gBAAgB,CAAC;MAClC;IACD;IAEA,QAAQg0U,UAAU,CAAC9hV,MAAM;MACxB,KAAK,CAAC;QAAE;UACP0hV,aAAa,CAACU,oBAAoB,CAAC38U,IAAI,CAACq8U,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM;YAC7DJ,aAAa,CAACW,gBAAgB,CAACC,oBAAoB,CAAC;UACrD,CAAC,CAAC;UACF;QACD;MACA,KAAK,CAAC;QAAE;UACPZ,aAAa,CAACU,oBAAoB,CAAC38U,IAAI,CAACq8U,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM;YAC7DJ,aAAa,CAACU,oBAAoB,CAAC38U,IAAI,CAACq8U,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM;cAC7DJ,aAAa,CAACW,gBAAgB,CAACC,oBAAoB,CAAC;YACrD,CAAC,CAAC;UACH,CAAC,CAAC;UACF;QACD;MACA,KAAK,CAAC;QAAE;UACPZ,aAAa,CAACU,oBAAoB,CAAC38U,IAAI,CAACq8U,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM;YAC7DJ,aAAa,CAACU,oBAAoB,CAAC38U,IAAI,CAACq8U,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM;cAC7DJ,aAAa,CAACU,oBAAoB,CAAC38U,IAAI,CAACq8U,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM;gBAC7DJ,aAAa,CAACW,gBAAgB,CAACC,oBAAoB,CAAC;cACrD,CAAC,CAAC;YACH,CAAC,CAAC;UACH,CAAC,CAAC;UACF;QACD;IACD;EACD;EACA,SAASC,yBAAyBA,CAACtlO,WAAW,EAAE;IAC/C,IAAI0zC,eAAe;IACnB;IACA,IAAIn3G,SAAS,GAAG1oC,CAAC,CAACC,OAAO,CAACyoC,SAAS,CACjC/vC,GAAG,CAAC,CAACkB,QAAQ,EAAE0O,KAAK,KAAK;MACzB,IAAI1O,QAAQ,KAAKsyG,WAAW,EAAE;QAC7B0zC,eAAe,GAAG;UACjBztJ,EAAE,EAAE4N,CAAC,CAACC,OAAO,CAAC0oC,WAAW,CAACpgC,KAAK,CAAC;UAChC/U,KAAK,EAAEqG,QAAQ;UACftH,IAAI,EAAEsH;QACP,CAAC;MACF;MACA,OAAO;QACNzH,EAAE,EAAE4N,CAAC,CAACC,OAAO,CAAC0oC,WAAW,CAACpgC,KAAK,CAAC;QAChC/U,KAAK,EAAEqG,QAAQ;QACftH,IAAI,EAAEsH;MACP,CAAC;IACF,CAAC,CAAC,CACDuD,MAAM,CAACkxH,GAAG,IAAI;MACd,OAAOA,GAAG,CAAC96H,KAAK,KAAK24G,WAAW;IACjC,CAAC,CAAC;IAEHzjE,SAAS,CAAC6pB,OAAO,CAACstF,eAAe,CAAC;IAElCjsJ,QAAQ,CAAC5E,QAAQ,CAAC,oBAAoB,EAAE05C,SAAS,CAAC;EACnD;EACA,SAASgpS,cAAcA,CAAC/8U,IAAI,EAAE;IAC7B8wS,QAAQ,GAAG,KAAK;IAChB0qC,iBAAiB,GAAGx7U,IAAI,CAACuuD,UAAU;IACnCktR,gBAAgB,GAAGz7U,IAAI,CAACszB,SAAS;IACjCooT,cAAc,GAAG17U,IAAI,CAACy1J,QAAQ;IAC9B,IAAI6mL,eAAe;IACnB,IAAIC,gBAAgB;IACpB,IAAIC,cAAc;IAElB,IAAIvpU,KAAK,GAAGjT,IAAI,CAACiT,KAAK;IACpB,IAAIs7C,UAAU,GAAGvuD,IAAI,CAACuuD,UAAU;IAEhC,IAAIljD,CAAC,CAACC,OAAO,CAAC6hC,oBAAoB,KAAK,IAAI,EAAE;MAC3C2jQ,QAAQ,GAAG,IAAI;IACjB,CAAC,MAAM;MACLA,QAAQ,GAAG,KAAK;IAClB;IAEAyqC,YAAY,GAAGvuU,KAAK,CAAC1P,KAAK,CAAC;MAAEgB,UAAU,EAAE,CAAC,0BAA0B;IAAC,CAAC,CAAC;;IAEzE;IACA,IAAI0+U,iBAAiB,GAAG/9U,QAAQ,CAAC3B,KAAK,CAAC;MACtC4B,UAAU,EAAE,oBAAoB;MAChCE,KAAK,EAAE,WAAW;MAClBrB,KAAK,EAAE;IACR,CAAC,CAAC;IACF,IAAIqtT,cAAc,GAAGtqT,KAAK,CAACxD,KAAK,CAAC;MAChCG,EAAE,EAAE,oBAAoB;MACxB2B,KAAK,EAAE,YAAY;MACnBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAEyxS,QAAQ;MAClBjyS,KAAK,EAAEmB,IAAI,CAACszB;IACb,CAAC,CAAC;IACF,IAAI+3R,YAAY,GAAGvqT,KAAK,CAACxD,KAAK,CAAC;MAC9BG,EAAE,EAAE,kBAAkB;MACtB2B,KAAK,EAAE,UAAU;MACjBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBsB,QAAQ,EAAEyxS,QAAQ;MAClBjyS,KAAK,EAAEmB,IAAI,CAACy1J;IACb,CAAC,CAAC;IACF,IAAIwnL,YAAY,GAAG5/U,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAE,WAAW;MACfC,IAAI,EAAE,WAAW;MACpBc,QAAQ,EAAE,SAAAA,CAAA,EAAW;QACpBkO,KAAK,CAAC/S,IAAI,CAACshV,YAAY,CAAC;QACxBa,oBAAoB,CAAC;UAAEE,eAAe;UAAEC,gBAAgB;UAAEC,cAAc;UAAEx8U;QAAK,CAAC,CAAC;MAClF;IACD,CAAC,CAAC;IACF,IAAI85Q,WAAW,GAAGz8Q,MAAM,CAACC,KAAK,CAAC;MAC9BM,IAAI,EAAE,cAAc;MACpBG,KAAK,EAAE,WAAW;MACfC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,eAAe;MAC9BQ,QAAQ,EAAE,SAAAA,CAAA,EAAW;QACpBo+U,0BAA0B,CAACl9U,IAAI,CAAC;MACjC;IACC,CAAC,CAAC;IAEJ,IAAI47N,QAAQ,GAAG3+N,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Co+N,QAAQ,CAAC9hO,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAClC4hO,QAAQ,CAAClhO,WAAW,CAAC0wT,cAAc,CAAC;IAClCxvF,QAAQ,CAAClhO,WAAW,CAAC2wT,YAAY,CAAC;IAElC,IAAI7hR,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACuiV,YAAY,CAAC;IAC/BzzS,OAAO,CAAC9uC,WAAW,CAACo/Q,WAAW,CAAC;IAGlCyhE,YAAY,CAAC7gV,WAAW,CAACsiV,iBAAiB,CAAC;IAC3CzB,YAAY,CAAC7gV,WAAW,CAACkhO,QAAQ,CAAC;IAClC2/G,YAAY,CAAC7gV,WAAW,CAAC8uC,OAAO,CAAC;IAEjCx8B,KAAK,CAAC9S,IAAI,CAACqhV,YAAY,CAAC;IACxBuB,yBAAyB,CAAC98U,IAAI,CAACw3G,WAAW,CAAC;;IAE3C;IACA,SAAS0lO,0BAA0BA,CAACl9U,IAAI,EAAE;MACzCgN,KAAK,CAAC/S,IAAI,CAACshV,YAAY,CAAC;MACxB,IAAI4B,yBAAyB,GAAGnwU,KAAK,CAAC1P,KAAK,CAAC;QAC3C2P,MAAM,EAAE;MACT,CAAC,CAAC;MAEF,IAAIu8B,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;MAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;QACzBM,IAAI,EAAE,KAAK;QACXG,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAW;UACpBm9U,aAAa,CAACU,oBAAoB,CACjC;YACChjN,GAAG,EAAEprE,UAAU;YACf6uR,OAAO,EAAEp9U,IAAI,CAACszB,SAAS;YACvBopT,OAAO,EAAE18U,IAAI,CAACszB,SAAS;YACvB+pT,WAAW,EAAE,CAAC;YACdC,kBAAkB,EAAE;UACrB,CAAC,EACD,MAAM;YACLrB,aAAa,CAACW,gBAAgB,CAACC,oBAAoB,CAAC;UACrD,CACD,CAAC;UACD7vU,KAAK,CAAC/S,IAAI,CAACkjV,yBAAyB,CAAC;QACtC;MACD,CAAC,CAAC;MACF,IAAIx1L,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;QACxBM,IAAI,EAAE,IAAI;QACVG,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAW;UACpBkO,KAAK,CAAC/S,IAAI,CAACkjV,yBAAyB,CAAC;UACrCnwU,KAAK,CAAC9S,IAAI,CAACqhV,YAAY,CAAC;QACzB;MACD,CAAC,CAAC;MAEF/xS,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;MAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;MAC1Bw1L,yBAAyB,CAACziV,WAAW,CAAC8uC,OAAO,CAAC;MAE9Cx8B,KAAK,CAAC9S,IAAI,CAACijV,yBAAyB,CAAC;IACtC;IAEAH,iBAAiB,CAAC5/U,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACrD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE48U,eAAe,GAAG;QACjB3iN,GAAG,EAAEl6H,cAAc,CAAChC,EAAE;QACtB2/U,OAAO,EAAEp9U,IAAI,CAACszB,SAAS;QACvBopT,OAAO,EAAE18U,IAAI,CAACszB,SAAS;QACvB+pT,WAAW,EAAE,CAAC;QACdC,kBAAkB,EAAE;MACrB,CAAC;IACF,CAAC,CAAC;IACFlyB,cAAc,CAAChuT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAClD2hV,gBAAgB,GAAG;QAClB5iN,GAAG,EAAE35H,IAAI,CAACuuD,UAAU;QACpB6uR,OAAO,EAAEp9U,IAAI,CAACszB,SAAS;QACvBopT,OAAO,EAAE,GAAG9hV,KAAK,CAACC,MAAM,CAACgE,KAAK,KAAK;QACnCw+U,WAAW,EAAE,CAAC;QACdC,kBAAkB,EAAE;MACrB,CAAC;IACF,CAAC,CAAC;IACFjyB,YAAY,CAACjuT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAChD4hV,cAAc,GAAG;QAChB7iN,GAAG,EAAE35H,IAAI,CAACuuD,UAAU;QACpB6uR,OAAO,EAAEp9U,IAAI,CAACszB,SAAS;QACvBopT,OAAO,EAAE,GAAG9hV,KAAK,CAACC,MAAM,CAACgE,KAAK,KAAK;QACnCw+U,WAAW,EAAE,CAAC;QACdC,kBAAkB,EAAE;MACrB,CAAC;IACF,CAAC,CAAC;EACH;EACA,SAAST,oBAAoBA,CAAC13O,OAAO,EAAE;IACtC,IAAIo4O,gBAAgB;IAClBlC,aAAa,CAACjhV,SAAS,GAAG,EAAE;IAC5B0hV,WAAW,CAAC1hV,SAAS,GAAG,EAAE;IAC5B,IAAIiR,CAAC,CAACC,OAAO,CAACuwU,cAAc,EAAEF,oBAAoB,CAAC,CAAC;IACpDx2O,OAAO,CAAC3qG,OAAO,CAAC,CAAC8gB,CAAC,EAAE1H,KAAK,KAAK;MAC7B,IAAIg3J,OAAO,GAAGtvJ,CAAC,CAACkiU,QAAQ;MACxB,IAAIjvR,UAAU,GAAGjzC,CAAC,CAACw9M,WAAW;MAC9B,IAAIpkG,YAAY,GAAGp5G,CAAC,CAACmiU,aAAa;MAClC,IAAInqT,SAAS,GAAGhY,CAAC,CAACmkJ,UAAU,KAAK,UAAU,GAAG,UAAU,GAAGnkJ,CAAC,CAACmkJ,UAAU;MACvE,IAAIhK,QAAQ,GAAGn6I,CAAC,CAACkkJ,SAAS,KAAK,UAAU,GAAG,UAAU,GAAGlkJ,CAAC,CAACkkJ,SAAS;MACpE,IAAIl0C,WAAW,GAAGhwG,CAAC,CAAC8kJ,YAAY,CAAChiJ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC9C,IAAIo5F,WAAW,GAAGl8F,CAAC,CAAC8oG,WAAW;MAE/B,IAAIs5N,UAAU,GAAGzgV,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC9CkgV,UAAU,CAAC5jV,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;MACvC0jV,UAAU,CAACx/U,YAAY,CAAC,aAAa,EAAE0V,KAAK,CAAC;MAC7C8pU,UAAU,CAACtjV,SAAS,GAAG;AAC1B,mCAAmCo9G,WAAW;AAC9C,iCAAiC7pF,IAAI,CAAC8E,mBAAmB,CAACa,SAAS,CAAC;AACpE,gCAAgC3F,IAAI,CAAC8E,mBAAmB,CAACgjI,QAAQ,CAAC;AAClE,OAAO;MAEJ4lL,aAAa,CAAC3gV,WAAW,CAACgjV,UAAU,CAAC;MAErCA,UAAU,CAACtgV,gBAAgB,CAAC,OAAO,EAAE,YAAW;QAC/C2/U,cAAc,CAAC;UACdnyK,OAAO;UACPr8G,UAAU;UACVmmE,YAAY;UACZld,WAAW;UACX8T,WAAW;UACXh4F,SAAS;UACTmiI,QAAQ;UACRxiJ,KAAK,EAAEW;QACR,CAAC,CAAC;MACH,CAAC,CAAC;MAEF2pU,gBAAgB,GAAG9nL,QAAQ;IAC5B,CAAC,CAAC;IAEF,IAAI8nL,gBAAgB,KAAK,EAAE,EAAE;MAC5BjC,aAAa,CAAClhV,SAAS,GAAG,UAAU;MACpCkhV,aAAa,CAACp9U,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC;IACtD,CAAC,MAAM;MACNo9U,aAAa,CAAClhV,SAAS,GAAG,WAAW;MACrCkhV,aAAa,CAACp9U,YAAY,CAAC,mBAAmB,EAAE,KAAK,CAAC;IACvD;EACD;EAEA,SAASf,IAAIA,CAAA,EAAG;IACbg3J,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,qBAAqB,CAAC;IACvD47U,WAAW,GAAG3nL,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IACrDm+U,aAAa,GAAGlnL,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IACxDo+U,aAAa,GAAGnnL,MAAM,CAACj3J,aAAa,CAAC,gBAAgB,CAAC;IAEtDo+U,aAAa,CAACl+U,gBAAgB,CAAC,OAAO,EAAE2+U,UAAU,CAAC;IAEnDE,aAAa,CAACW,gBAAgB,CAACC,oBAAoB,CAAC;EACrD;EAEA,OAAO;IACNA,oBAAoB;IACpBlB,oBAAoB;IACpBx+U;EACD,CAAC;AACF,CAAC,CAAE,CAAC;AC1VJ,IAAI8+U,aAAa,GAAI,YAAW;EAC/B,SAASC,YAAYA,CAAA,EAAG;IACvB,IAAI3tR,UAAU,GAAG,EAAE;IACnB,IAAIA,UAAU,GAAG5iD,QAAQ,CAACmoI,WAAW,CAAC,WAAW,CAAC;IAClD,IAAIvlF,UAAU,IAAI,IAAI,IAAIA,UAAU,IAAI,EAAE,EAAEA,UAAU,GAAG,CAAC;IAE1DljD,CAAC,CAAC2+C,IAAI,CAAC;MACNhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,gBAAgB;MAC9HxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,mBAAmB,GAAG4a,UAAU,GAAG,0BAA0B,GAAGljD,CAAC,CAACC,OAAO,CAAC2vC,iBAAiB,GAAG,IAAI;MAC9IgP,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MACX3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QAC9C,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QACjC,IAAI7G,GAAG,CAAC9/B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;UAC3BpY,CAAC,CAACC,OAAO,CAACuwU,cAAc,GAAG,4CAA4C;QACzE;QACA,IAAIt4R,GAAG,CAAC9/B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;UAC3BpY,CAAC,CAACC,OAAO,CAACuwU,cAAc,GAAG,2CAA2C;QACxE;QACA,IAAIt4R,GAAG,CAAC9/B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;UAC3BpY,CAAC,CAACC,OAAO,CAACuwU,cAAc,GAAG,2DAA2D;QACxF;QACA,IAAIt4R,GAAG,CAAC9/B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;UAC3BpY,CAAC,CAACC,OAAO,CAACuwU,cAAc,GAAG,6BAA6B;QAC1D;QACD,IAAIt4R,GAAG,CAAC9/B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;UAC3BhY,MAAM,CAAC6qJ,gBAAgB,GAAG,IAAI;UAC9BjrJ,CAAC,CAACC,OAAO,CAACuwU,cAAc,GAAG,cAAc;QAC3C,CAAC,MAAM;UACNpwU,MAAM,CAAC6qJ,gBAAgB,GAAG,KAAK,CAAC,CAAC;QAClC;MACD,CAAC;MACD5/I,QAAQ,EAAE,SAAAA,CAASinU,KAAK,EAAEpmU,MAAM,EAAE;QACjCqlU,gBAAgB,CAAC1uL,SAAS,CAAC2uL,oBAAoB,CAAC;MACjD;IACD,CAAC,CAAC;EACH;EAEA,SAASV,aAAaA,CAAA,EAAG;IACxB9wU,CAAC,CAAC2+C,IAAI,CAAC;MACNhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,iBAAiB;MACpIxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;MACnC,CAAC;MACD1zC,QAAQ,EAAE,SAAAA,CAASinU,KAAK,EAAEpmU,MAAM,EAAE;QACjCqlU,gBAAgB,CAAC1uL,SAAS,CAAC2uL,oBAAoB,CAAC;MACjD;IACD,CAAC,CAAC;EACH;EAEA,SAASD,gBAAgBA,CAAC99U,QAAQ,EAAE;IACnC,IAAIqB,CAAC,GAAG,IAAI6T,IAAI,CAAC,CAAC;IAClB,IAAI4pU,aAAa,GAAG,CAACz9U,CAAC,CAAC8f,WAAW,CAAC,CAAC,EAAE9f,CAAC,CAAC+f,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE/f,CAAC,CAACggB,OAAO,CAAC,CAAC,CAAC,CAAC6F,IAAI,CAAC,GAAG,CAAC;IAE9E3a,CAAC,CAAC2+C,IAAI,CAAC;MACNhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,wBAAwB;MAC3IxoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,oBAAoB,GAAGiqS,aAAa,GAAG,IAAI;MAClF3zR,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC9G,GAAG,GAAG6G,QAAQ,CAACyzR,0BAA0B;QACzC/+U,QAAQ,CAACykD,GAAG,CAAC;MACd,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAASq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnClN,QAAQ,CAAC,IAAI,CAAC;MACf;MACA;MACA;MACA;IACD,CAAC,CAAC;EACH;EAEA,SAAS69U,oBAAoBA,CAAC38U,IAAI,EAAElB,QAAQ,EAAE;IAC7CuM,CAAC,CAAC2+C,IAAI,CAAC;MACNhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAAG,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,wBAAwB;MAC3IxoD,IAAI,EACH,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAC9B,oBAAoB,GAAGhmB,IAAI,CAAC6Z,YAAY,CAAC,CAAC,GAC1C,oBAAoB,GAAGxnC,IAAI,CAACo9U,OAAO,GACnC,gBAAgB,GAAGp9U,IAAI,CAAC08U,OAAO,GAC/B,kBAAkB,GAAG18U,IAAI,CAACq9U,WAAW,GACrC,2BAA2B,GAAGr9U,IAAI,CAACo9U,OAAO,GAC1C,gBAAgB,GAAGp9U,IAAI,CAAC25H,GAAG,GAAG,IAAI;MACnC1vE,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAS4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC,IAAI9G,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;QAClC,IAAI7G,GAAG,CAAC9/B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;UAC3BpY,CAAC,CAACC,OAAO,CAACuwU,cAAc,GAAG,cAAc;UAC1CpwU,MAAM,CAAC6qJ,gBAAgB,GAAG,IAAI;QAC/B,CAAC,MAAM;UACN7qJ,MAAM,CAAC6qJ,gBAAgB,GAAG,KAAK;QAC5B;QACAx3J,QAAQ,CAAC,CAAC;MACf,CAAC;MACD4X,QAAQ,EAAE,SAAAA,CAASinU,KAAK,EAAEpmU,MAAM,EAAE;QACjC;MAAA;IAEF,CAAC,CAAC;IAEFlM,CAAC,CAACC,OAAO,CAACsqC,cAAc,GAAG,EAAE;IAC7BvqC,CAAC,CAACC,OAAO,CAACuqC,aAAa,GAAG,EAAE;EAC7B;EAEA,OAAO;IACNqmS,YAAY;IACZC,aAAa;IACbS,gBAAgB;IAChBD;EACD,CAAC;AACF,CAAC,CAAE,CAAC;ACrHJ,IAAI9rL,sBAAsB,GAAI,YAAW;EACvC,IAAIsD,MAAM;EACV,IAAIskK,UAAU;EACd,IAAIJ,QAAQ,GAAG;IACb,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,SAAS;IACd,GAAG,EAAE;EACP,CAAC;EAED,SAASylB,YAAYA,CAACtyG,SAAS,EAAEx/L,IAAI,EAAE;IACrC,IAAIud,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;IAC7B,IAAIrY,SAAS,GAAGq5M,SAAS,CAAC,CAAC,CAAC,CAACptN,KAAK,CAAC,GAAG,CAAC;IACvC,IAAIiU,OAAO,GAAGm5M,SAAS,CAAC,CAAC,CAAC,CAACptN,KAAK,CAAC,GAAG,CAAC;IACrC+T,SAAS,GAAG,GAAGA,SAAS,CAAC,CAAC,CAAC,IAAIxE,IAAI,CAAC5B,WAAW,CAACoG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAIxE,IAAI,CAAC5B,WAAW,CAACoG,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;IACjGE,OAAO,GAAG,GAAGA,OAAO,CAAC,CAAC,CAAC,IAAI1E,IAAI,CAAC5B,WAAW,CAACsG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI1E,IAAI,CAAC5B,WAAW,CAACsG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;IAEzFt2B,eAAe,CAAC4nG,cAAc,CAACxxE,SAAS,EAAEE,OAAO,CAAC;IAClD;EACF;EAEA,SAAS0rT,4BAA4BA,CAAC/9U,IAAI,EAAE;IAC1C,IAAIq5T,cAAc,GAAGllK,MAAM,CAACj3J,aAAa,CAAC,kBAAkB,CAAC;IAC7D,IAAIq8T,eAAe,GAAGplK,MAAM,CAACj3J,aAAa,CAAC,mBAAmB,CAAC;IAC/D,IAAIo8T,eAAe,GAAGnlK,MAAM,CAACj3J,aAAa,CAAC,wBAAwB,CAAC;IACpEm8T,cAAc,CAACj/T,SAAS,GAAG,EAAE;IAC7Bm/T,eAAe,CAACn/T,SAAS,GAAG,EAAE;IAC9Bk/T,eAAe,CAACl/T,SAAS,GAAG,EAAE;IAE9B,IAAIo/T,WAAW,GAAGz9S,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAAC;IACnCw5T,WAAW,CAACh/T,OAAO,CAACkG,KAAK,IAAI;MAC3B,IAAI+4T,UAAU,GAAG19S,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAACU,KAAK,CAAC,CAAC;MACzC+4T,UAAU,CAACnlT,IAAI,CAAC,CAACjU,CAAC,EAACuU,CAAC,KAAK;QACvB,IAAImrR,KAAK,GAAG1/R,CAAC,CAAC+d,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI4hR,KAAK,GAAGprR,CAAC,CAACwJ,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B2hR,KAAK,GAAG,IAAI/rR,IAAI,CAAC+rR,KAAK,CAAC;QACvBC,KAAK,GAAG,IAAIhsR,IAAI,CAACgsR,KAAK,CAAC;QAEvB,IAAID,KAAK,GAAGC,KAAK,EAAE;UACjB,OAAO,CAAC,CAAC;QACX,CAAC,MAAM,IAAID,KAAK,GAAGC,KAAK,EAAE;UACxB,OAAO,CAAC;QACV,CAAC,MAAM;UACL,OAAO,CAAC;QACV;MACF,CAAC,CAAC;MACFy5B,UAAU,CAACj/T,OAAO,CAAC4+J,KAAK,IAAI;QAC1B,IAAIx7J,IAAI,GAAGw7J,KAAK,CAACh7I,KAAK,CAAC,KAAK,CAAC,CAAC4H,IAAI,CAAC,KAAK,CAAC;QACzC,IAAInsB,KAAK,GAAGmG,IAAI,CAACU,KAAK,CAAC,CAAC04J,KAAK,CAAC,CAACv/J,KAAK;QACpC,IAAI6hB,CAAC,GAAGze,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;QACnCke,CAAC,CAACthB,SAAS,GAAG,GAAGwD,IAAI,YAAY/D,KAAK,SAAS;QAC/C6hB,CAAC,CAACxd,YAAY,CAAC,YAAY,EAAEk7J,KAAK,CAACh7I,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD1C,CAAC,CAACxd,YAAY,CAAC,UAAU,EAAEk7J,KAAK,CAACh7I,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD1C,CAAC,CAAC5hB,SAAS,CAACE,GAAG,CAAC,YAAY,CAAC;QAC7B,IAAI0G,KAAK,KAAK,GAAG,EAAE;UACjB24T,cAAc,CAAC3+T,WAAW,CAACghB,CAAC,CAAC;UAC7BA,CAAC,CAACte,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;YACnC,IAAIu3B,SAAS,GAAGv3B,KAAK,CAACC,MAAM,CAAC+I,YAAY,CAAC,YAAY,CAAC;YACvD,IAAIyuB,OAAO,GAAGz3B,KAAK,CAACC,MAAM,CAAC+I,YAAY,CAAC,UAAU,CAAC;YACnD,IAAI2T,MAAM,GAAG,GAAG;YAChB04F,+BAA+B,CAAC,kBAAkB,CAAC;YACnDh1G,YAAY,CAACH,OAAO,CAACE,YAAY,GAAG,WAAW;YAC/C2yB,IAAI,CAACod,uBAAuB,CAAC,WAAW,CAAC;YACzC5+B,GAAG,CAACC,iBAAiB,CAAC,CAAC;YACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;YACvBggP,SAAS,CAACiK,cAAc,CAAC,MAAM;cAC7BhjR,eAAe,CAAC0jO,WAAW,CAACttM,SAAS,EAAEE,OAAO,EAAE9a,MAAM,CAAC;YACzD,CAAC,CAAC;UACJ,CAAC,CAAC;QACJ,CAAC,MAAM,IAAI7W,KAAK,KAAK,GAAG,EAAE;UACxB64T,eAAe,CAAC7+T,WAAW,CAACghB,CAAC,CAAC;UAC9BA,CAAC,CAACte,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;YACjC,IAAIu3B,SAAS,GAAGv3B,KAAK,CAACC,MAAM,CAAC+I,YAAY,CAAC,YAAY,CAAC;YACvD,IAAIyuB,OAAO,GAAGz3B,KAAK,CAACC,MAAM,CAAC+I,YAAY,CAAC,UAAU,CAAC;YACnD,IAAI2T,MAAM,GAAG,GAAG;YAChB04F,+BAA+B,CAAC,kBAAkB,CAAC;YACnDh1G,YAAY,CAACH,OAAO,CAACE,YAAY,GAAG,WAAW;YAC/C2yB,IAAI,CAACod,uBAAuB,CAAC,WAAW,CAAC;YACzC5+B,GAAG,CAACC,iBAAiB,CAAC,CAAC;YACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;YACvBggP,SAAS,CAACiK,cAAc,CAAC,MAAM;cAC7BhjR,eAAe,CAAC0jO,WAAW,CAACttM,SAAS,EAAEE,OAAO,EAAE9a,MAAM,CAAC;YACzD,CAAC,CAAC;UACN,CAAC,CAAC;QACJ,CAAC,MAAM,IAAI7W,KAAK,KAAK,GAAG,EAAE;UACxB44T,eAAe,CAAC5+T,WAAW,CAACghB,CAAC,CAAC;UAC9BA,CAAC,CAACte,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;YACjC,IAAIu3B,SAAS,GAAGv3B,KAAK,CAACC,MAAM,CAAC+I,YAAY,CAAC,YAAY,CAAC;YACvD,IAAIyuB,OAAO,GAAGz3B,KAAK,CAACC,MAAM,CAAC+I,YAAY,CAAC,UAAU,CAAC;YACnD,IAAI2T,MAAM,GAAG,GAAG;YAChB04F,+BAA+B,CAAC,kBAAkB,CAAC;YACnDh1G,YAAY,CAACH,OAAO,CAACE,YAAY,GAAG,WAAW;YAC/C2yB,IAAI,CAACod,uBAAuB,CAAC,WAAW,CAAC;YACzC5+B,GAAG,CAACC,iBAAiB,CAAC,CAAC;YACvBD,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;YACvBggP,SAAS,CAACiK,cAAc,CAAC,MAAM;cAC7BhjR,eAAe,CAAC0jO,WAAW,CAACttM,SAAS,EAAEE,OAAO,EAAE9a,MAAM,CAAC;YACzD,CAAC,CAAC;UACN,CAAC,CAAC;QACJ;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAGA,SAASmiT,eAAeA,CAAA,EAAG;IACzB,IAAIC,UAAU,GAAG/C,UAAU,CAAC15T,aAAa,CAAC,OAAO,CAAC;IAClD,IAAI,CAACy8T,UAAU,EAAE;MACf,IAAIC,UAAU,GAAG;QACf1kT,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,gBAAgB;MACpD,CAAC;MAEDykT,UAAU,GAAG9kT,IAAI,CAACvX,KAAK,CAACs8T,UAAU,CAAC;MAEnChD,UAAU,CAACl8T,WAAW,CAACi/T,UAAU,CAAC;IACpC;EACF;EAEA,SAASqkB,yBAAyBA,CAAC74O,OAAO,EAAE;IAC1CszN,UAAU,GAAG,CAAC,CAAC;IACftzN,OAAO,CAAC3qG,OAAO,CAAC8gB,CAAC,IAAI;MACnB,IAAI+8S,QAAQ,CAAC/8S,CAAC,CAACu+S,eAAe,CAAC,EAAE;QAC/B,IAAI1nS,SAAS,GAAG7W,CAAC,CAACuiQ,SAAS,CAACz/P,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzC,IAAIiU,OAAO,GAAG/W,CAAC,CAACwiQ,OAAO,CAAC1/P,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrC,IAAIiS,UAAU,GAAG,GAAG8B,SAAS,MAAME,OAAO,EAAE;QAE5C,IAAI,CAAComS,UAAU,CAACn9S,CAAC,CAACu+S,eAAe,CAAC,EAAE;UAClCpB,UAAU,CAACn9S,CAAC,CAACu+S,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC;QACA,IAAI,CAACpB,UAAU,CAACn9S,CAAC,CAACu+S,eAAe,CAAC,CAACxpS,UAAU,CAAC,EAAE;UAC9CooS,UAAU,CAACn9S,CAAC,CAACu+S,eAAe,CAAC,CAACxpS,UAAU,CAAC,GAAG;YAACx2B,KAAK,EAAE;UAAC,CAAC;QACxD;QACA4+T,UAAU,CAACn9S,CAAC,CAACu+S,eAAe,CAAC,CAACxpS,UAAU,CAAC,CAACx2B,KAAK,EAAE;MACnD;IACF,CAAC,CAAC;EACJ;EAEA,SAASsD,IAAIA,CAAA,EAAG;IACdg3J,MAAM,GAAGl3J,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC;IACzD02T,UAAU,GAAGziK,MAAM,CAACj3J,aAAa,CAAC,eAAe,CAAC;IAClD05T,UAAU,CAACx8T,SAAS,GAAG,EAAE;IAEzB6jV,0BAA0B,CAACC,uBAAuB,CAAC,UAASvyL,GAAG,EAAEpoG,GAAG,EAAE;MACpE,IAAIooG,GAAG,EAAE;QACPtgJ,CAAC,CAAC,wCAAwC,CAAC,CAACnR,IAAI,CAAC,CAAC;QAClD;MACF;MACA8jV,yBAAyB,CAACz6R,GAAG,CAAC;MAC9Bm2Q,eAAe,CAAC,CAAC;MACjBqkB,4BAA4B,CAACtlB,UAAU,CAAC;IAC1C,CAAC,CAAC;EACJ;EAEA,OAAO;IACLt7T;EACF,CAAC;AACH,CAAC,CAAC,CAAE;AC3JJ,IAAI8gV,0BAA0B,GAAI,YAAW;EAC3C,SAASC,uBAAuBA,CAACp/U,QAAQ,EAAE;IACzC;IACAuM,CAAC,CAAC2+C,IAAI,CAAC;MACLhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EAAEC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GAAG,KAAK,GAAGh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GAAG,GAAG,GAAGj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAC5E,GAAG,GAAGl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GAAG,+BAA+B;MACnExoD,IAAI,EAAE,YAAY,GAAGqL,CAAC,CAACC,OAAO,CAACqoC,KAAK,GAAG,IAAI;MAC3CsW,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE,MAAM;MAChB3G,OAAO,EAAE,SAAAA,CAAU4G,QAAQ,EAAE7yC,MAAM,EAAE8yC,GAAG,EAAE;QACxC9G,GAAG,GAAG6G,QAAQ,CAAC+zR,iCAAiC;QAChDr/U,QAAQ,CAAC,IAAI,EAAEykD,GAAG,CAAC;MACrB,CAAC;MACDv3C,KAAK,EAAE,SAAAA,CAAUq+C,GAAG,EAAE9yC,MAAM,EAAEvL,KAAK,EAAE;QACnClN,QAAQ,CAACkN,KAAK,EAAE,IAAI,CAAC;MACvB;IACF,CAAC,CAAC;EACJ;EAEA,OAAO;IACLkyU;EACF,CAAC;AACH,CAAC,CAAC,CAAE;ACvBJ,IAAIE,QAAQ,GAAI,YAAY;EAC1B,IAAIr0G,UAAU,GAAG;IACflgM,KAAK,EAAE,IAAI;IAEXw0S,cAAc,EAAE,IAAI;IAAE;IACtBz9I,gBAAgB,EAAE,IAAI;IAAE;IACxBC,YAAY,EAAE,IAAI;IAAE;IACpBC,YAAY,EAAE,IAAI;IAAE;IACpBw9I,YAAY,EAAE,IAAI;IAAE;IACpBC,YAAY,EAAE,IAAI;IAAE;IACpBx9I,aAAa,EAAE,IAAI;IAAE;IACrBy9I,gBAAgB,EAAE,IAAI;IAAE;IACxB1xB,iBAAiB,EAAE,IAAI;IAAE;IACzBr8D,OAAO,EAAE,IAAI;IAAE;IACfp3O,IAAI,EAAE,IAAI;IAAE;IACZolU,UAAU,EAAE,IAAI;IAAE;IAClBC,kBAAkB,EAAE,IAAI;IAAE;;IAE1B34K,gBAAgB,EAAE,IAAI;IAAE;IACxB44K,cAAc,EAAE,IAAI;IAAE;IACtBC,aAAa,EAAE,IAAI;IAAE;IACrBC,gCAAgC,EAAE,IAAI;IAAE;IACxCC,wBAAwB,EAAE,IAAI;IAE9Bt8I,gBAAgB,EAAE,IAAI;IAAE;IACxBF,oBAAoB,EAAE,IAAI;IAAE;IAC5By8I,2BAA2B,EAAE,IAAI;IAAE;;IAEnCC,wBAAwB,EAAE,IAAI;IAAE;IAChCC,2BAA2B,EAAE,IAAI;IAAE;IACnCC,4BAA4B,EAAE,IAAI;IAAE;IACpCC,4BAA4B,EAAE,IAAI;IAAE;IACpCC,wBAAwB,EAAE,IAAI;IAAE;IAChCC,yBAAyB,EAAE,IAAI;IAAE;IACjCC,2BAA2B,EAAE,IAAI;IAAE;IACnCC,yBAAyB,EAAE,IAAI;IAAE;IACjCC,qCAAqC,EAAE,IAAI;IAAE;IAC7CC,0CAA0C,EAAE,IAAI;IAAE;;IAElDC,gBAAgB,EAAE,IAAI;IAAE;IACxBj9I,UAAU,EAAE,QAAQ,CAAE;EACxB,CAAC;EACD,IAAIk9I,aAAa;EACjB,IAAIC,oBAAoB;EACxB,IAAIC,uBAAuB;EAE3B,SAASC,eAAeA,CAAA,EAAG;IACzB,IAAIC,QAAQ,GAAGhkU,MAAM,CAAC8B,IAAI,CAACksN,UAAU,CAAC;IACtCg2G,QAAQ,CAACvlV,OAAO,CAACoE,GAAG,IAAI;MACtBmrO,UAAU,CAACnrO,GAAG,CAAC,GAAG,IAAI;IACxB,CAAC,CAAC;EACJ;EAEA,SAASohV,aAAaA,CAAA,EAAG;IACvB,OAAOj2G,UAAU,CAAC21G,gBAAgB;EACpC;EAEA,SAASO,yBAAyBA,CAACC,cAAc,EAAE;IACjD;IACAL,uBAAuB,GAAG,EAAE;IAE5BK,cAAc,CAAC1lV,OAAO,CAAC2lV,GAAG,IAAI;MAC5B,IAAI/iG,OAAO,GAAG+iG,GAAG,CAAC/hU,KAAK,CAAC,GAAG,CAAC;MAC5B,IAAI0hC,UAAU,GAAGs9L,OAAO,CAAC,CAAC,CAAC;MAC3B,IAAIwhG,aAAa,GAAGxhG,OAAO,CAAC,CAAC,CAAC;MAE9ByiG,uBAAuB,CAACx3U,IAAI,CAAC;QAC3B5K,EAAE,EAAEqiD,UAAU;QACdsgS,UAAU,EAAExB;MACd,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;;EAEA;EACA;EACA;EACA,SAASyB,mBAAmBA,CAACr+I,UAAU,EAAE;IACvC+nC,UAAU,CAAC21G,gBAAgB,GAAG19I,UAAU;EAC1C;EACA;EACA,SAASs+I,8BAA8BA,CAAA,EAAG;IACxC,IAAI9nO,WAAW,GAAG,EAAE;IACpB,IAAI0nO,cAAc,GAAG,EAAE;IACvB,IAAI30K,WAAW,GAAG,EAAE;IACpB,IAAIozK,cAAc,GAAG,EAAE;IACvB,IAAI4B,sBAAsB,GAAG,EAAE;IAE/B,IAAIX,oBAAoB,GAAGY,iBAAiB,CAACC,uBAAuB,CAAC,CAAC;IAEtE,IAAIzgV,IAAI,GAAG0gV,mBAAmB,CAAC5yM,OAAO,CAAC,CAAC;IAExC,IAAI6yM,cAAc,GAAG5kU,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAAC;IACtC2gV,cAAc,CAACnmV,OAAO,CAAC,CAACoE,GAAG,EAAEgV,KAAK,KAAK;MACrC,IAAIstP,YAAY,GAAGlhQ,IAAI,CAACpB,GAAG,CAAC;MAC5B,IAAIgiV,qBAAqB;MAEzB,IAAIhB,oBAAoB,EAAE;QACxBgB,qBAAqB,GAAGhB,oBAAoB,CAAC3wR,IAAI,CAACzvD,CAAC,IAAIA,CAAC,CAAC/B,EAAE,KAAKmB,GAAG,CAAC;QACpEgiV,qBAAqB,GAAGA,qBAAqB,GAAGA,qBAAqB,CAACR,UAAU,GAAG,CAAC;MACtF,CAAC,MAAM;QACLQ,qBAAqB,GAAG,CAAC;MAC3B;MAEApoO,WAAW,CAACnwG,IAAI,CAACzJ,GAAG,CAAC;MACrBshV,cAAc,CAAC73U,IAAI,CAAC64P,YAAY,CAAC09E,aAAa,CAAC;MAC/CrzK,WAAW,CAACljK,IAAI,CAAC64P,YAAY,CAAC3yM,UAAU,CAAC;MACzCowR,cAAc,CAACt2U,IAAI,CAAC64P,YAAY,CAACy9E,cAAc,CAAC;MAChD4B,sBAAsB,CAACl4U,IAAI,CAACu4U,qBAAqB,CAAC;IACpD,CAAC,CAAC;IAEF72G,UAAU,CAAChkE,gBAAgB,GAAGvtD,WAAW,CAACxyF,IAAI,CAAC,GAAG,CAAC;IACnD+jN,UAAU,CAAC60G,aAAa,GAAGsB,cAAc,CAACl6T,IAAI,CAAC,GAAG,CAAC;IACnD+jN,UAAU,CAAC80G,gCAAgC,GAAGtzK,WAAW,CAACvlJ,IAAI,CAAC,GAAG,CAAC;IACnE+jN,UAAU,CAAC40G,cAAc,GAAGA,cAAc,CAAC34T,IAAI,CAAC,GAAG,CAAC;IACpD+jN,UAAU,CAAC+0G,wBAAwB,GAAGyB,sBAAsB,CAACv6T,IAAI,CAAC,GAAG,CAAC;EACxE;EACA,SAAS66T,8BAA8BA,CAAA,EAAG;IACxC,IAAIxrU,OAAO,GAAGpY,QAAQ,CAACC,aAAa,CAAC,8CAA8C,CAAC;IACpF,IAAI4jV,YAAY,GAAG,EAAE,CAACt3U,KAAK,CAACC,IAAI,CAAC4L,OAAO,CAAC/R,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAE1E,IAAIy9U,WAAW,GAAG,EAAE;IACpB,IAAI1hJ,gBAAgB,GAAG,EAAE;IACzB,IAAI2hJ,QAAQ,GAAG,EAAE;IAEjBF,YAAY,CAACtmV,OAAO,CAAC,CAACuW,GAAG,EAAE6C,KAAK,KAAK;MACnC,IAAIqtU,oBAAoB,GAAGlwU,GAAG,CAAC7T,aAAa,CAAC,uBAAuB,CAAC;MACrE,IAAIgkV,mBAAmB,GAAGnwU,GAAG,CAAC7T,aAAa,CAAC,yBAAyB,CAAC;MACtE,IAAIusO,cAAc,GAAG14N,GAAG,CAAC7T,aAAa,CAAC,WAAW,CAAC;MACnD,IAAIikV,WAAW,GAAG13G,cAAc,CAACvsO,aAAa,CAAC,OAAO,CAAC;MACvD,IAAIkkV,iCAAiC,GACnCH,oBAAoB,CAAC1jV,OAAO,CAAC0jV,oBAAoB,CAACvhV,aAAa,CAAC;MAElE,IAAIqD,IAAI,GAAGq+U,iCAAiC,CAACtmV,OAAO,CAACumV,UAAU;MAC/D,IAAIC,WAAW,GAAGJ,mBAAmB,CAACriV,KAAK;MAC3C,IAAI0iF,MAAM,GAAG4/P,WAAW,CAACr+U,OAAO,GAAG,GAAG,GAAG,GAAG;MAE5Ci+U,WAAW,CAAC14U,IAAI,CAACtF,IAAI,CAAC;MACtBs8L,gBAAgB,CAACh3L,IAAI,CAACi5U,WAAW,CAAC;MAClCN,QAAQ,CAAC34U,IAAI,CAACk5E,MAAM,CAAC;IACvB,CAAC,CAAC;IAEFwoJ,UAAU,CAACvnC,gBAAgB,GAAGu+I,WAAW,CAAC/6T,IAAI,CAAC,GAAG,CAAC;IACnD+jN,UAAU,CAACg1G,2BAA2B,GAAG1/I,gBAAgB,CAACr5K,IAAI,CAAC,GAAG,CAAC;IACnE+jN,UAAU,CAACznC,oBAAoB,GAAG0+I,QAAQ,CAACh7T,IAAI,CAAC,GAAG,CAAC;EACtD;EACA,SAASu7T,2BAA2BA,CAAA,EAAG;IACrC,IAAIlsU,OAAO,GAAGpY,QAAQ,CAACC,aAAa,CAAC,2CAA2C,CAAC;IACjF,IAAIskV,UAAU,GAAG,EAAE,CAACh4U,KAAK,CAACC,IAAI,CAAC4L,OAAO,CAAC/R,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAEtE,IAAI+zJ,KAAK,GAAG,EAAE;IACd,IAAIoqL,SAAS,GAAG,EAAE;IAClB,IAAIC,UAAU,GAAG,EAAE;IACnB,IAAIC,UAAU,GAAG,EAAE;IACnB,IAAIC,MAAM,GAAG,EAAE;IACf,IAAIC,MAAM,GAAG,EAAE;IACf,IAAIC,IAAI,GAAG,EAAE;IACb,IAAIC,MAAM,GAAG,EAAE;IACf,IAAIC,gBAAgB,GAAG,EAAE;IACzB,IAAIC,uBAAuB,GAAG,EAAE;IAEhCT,UAAU,CAAChnV,OAAO,CAAC,CAACw6T,MAAM,EAAEphT,KAAK,KAAK;MACpC,IAAIgpG,SAAS,GAAGo4M,MAAM,CAAC93T,aAAa,CAAC,OAAO,CAAC;MAC7C,IAAIglV,YAAY,GAAGltB,MAAM,CAAC93T,aAAa,CAAC,UAAU,CAAC;MACnD,IAAIogH,aAAa,GAAG03M,MAAM,CAAC93T,aAAa,CAAC,WAAW,CAAC;MACrD,IAAIsgH,aAAa,GAAGw3M,MAAM,CAAC93T,aAAa,CAAC,WAAW,CAAC;MACrD,IAAIwgH,SAAS,GAAGs3M,MAAM,CAAC93T,aAAa,CAAC,OAAO,CAAC;MAC7C,IAAI0gH,UAAU,GAAGo3M,MAAM,CAAC93T,aAAa,CAAC,QAAQ,CAAC;MAC/C,IAAI2gH,QAAQ,GAAGm3M,MAAM,CAAC93T,aAAa,CAAC,MAAM,CAAC;MAC3C,IAAI6gH,UAAU,GAAGi3M,MAAM,CAAC93T,aAAa,CAAC,QAAQ,CAAC;MAC/C,IAAIk0I,YAAY,GAAG4jL,MAAM,CAAC93T,aAAa,CAAC,yBAAyB,CAAC;MAElE,IAAI6F,IAAI,GAAG4qB,IAAI,CAACub,uBAAuB,CAAC0zE,SAAS,CAAC/9G,KAAK,CAAC;MACxD,IAAIsjV,OAAO,GAAGx0T,IAAI,CAACub,uBAAuB,CAACg5S,YAAY,CAACrjV,KAAK,CAAC;MAC9D,IAAI0+G,QAAQ,GAAG5vF,IAAI,CAACub,uBAAuB,CAACo0E,aAAa,CAACz+G,KAAK,CAAC;MAChE,IAAI4+G,QAAQ,GAAG9vF,IAAI,CAACub,uBAAuB,CAACs0E,aAAa,CAAC3+G,KAAK,CAAC;MAChE,IAAI8+G,IAAI,GAAGhwF,IAAI,CAACub,uBAAuB,CAACw0E,SAAS,CAAC7+G,KAAK,CAAC;MACxD,IAAI4rC,KAAK,GAAGmzE,UAAU,CAAC/+G,KAAK;MAC5B,IAAIy3L,GAAG,GAAGz4E,QAAQ,CAACh/G,KAAK;MACxB,IAAI4b,KAAK,GAAGsjG,UAAU,CAACl/G,KAAK;MAC5B,IAAIb,IAAI,GAAGozI,YAAY,CAACvyI,KAAK;MAE7Bw4J,KAAK,CAAChvJ,IAAI,CAACtF,IAAI,CAAC;MAChB0+U,SAAS,CAACp5U,IAAI,CAAC85U,OAAO,CAAC;MACvBT,UAAU,CAACr5U,IAAI,CAACk1G,QAAQ,CAAC;MACzBokO,UAAU,CAACt5U,IAAI,CAACo1G,QAAQ,CAAC;MACzBmkO,MAAM,CAACv5U,IAAI,CAACs1G,IAAI,CAAC;MACjBkkO,MAAM,CAACx5U,IAAI,CAACoiC,KAAK,CAAC;MAClBq3S,IAAI,CAACz5U,IAAI,CAACiuL,GAAG,CAAC;MACdyrJ,MAAM,CAAC15U,IAAI,CAACoS,KAAK,CAAC;MAClBunU,gBAAgB,CAAC35U,IAAI,CAACrK,IAAI,CAAC;IAC7B,CAAC,CAAC;IAEF+rO,UAAU,CAACi1G,wBAAwB,GAAG3nL,KAAK,CAACrxI,IAAI,CAAC,GAAG,CAAC;IACrD+jN,UAAU,CAACk1G,2BAA2B,GAAGwC,SAAS,CAACz7T,IAAI,CAAC,GAAG,CAAC;IAC5D+jN,UAAU,CAACm1G,4BAA4B,GAAGwC,UAAU,CAAC17T,IAAI,CAAC,GAAG,CAAC;IAC9D+jN,UAAU,CAACo1G,4BAA4B,GAAGwC,UAAU,CAAC37T,IAAI,CAAC,GAAG,CAAC;IAC9D+jN,UAAU,CAACq1G,wBAAwB,GAAGwC,MAAM,CAAC57T,IAAI,CAAC,GAAG,CAAC;IACtD+jN,UAAU,CAACs1G,yBAAyB,GAAGwC,MAAM,CAAC77T,IAAI,CAAC,GAAG,CAAC;IACvD+jN,UAAU,CAACu1G,2BAA2B,GAAGwC,IAAI,CAAC97T,IAAI,CAAC,GAAG,CAAC;IACvD+jN,UAAU,CAACw1G,yBAAyB,GAAGwC,MAAM,CAAC/7T,IAAI,CAAC,GAAG,CAAC;IACvD+jN,UAAU,CAACy1G,qCAAqC,GAAGwC,gBAAgB,CAACh8T,IAAI,CAAC,GAAG,CAAC;EAC/E;EACA,SAASo8T,4BAA4BA,CAAC10G,OAAO,EAAE;IAC7C,IAAIr4N,OAAO,GAAGpY,QAAQ,CAACC,aAAa,CAAC,4CAA4C,CAAC;IAClF,IAAImlV,KAAK,GAAGhtU,OAAO,CAACnY,aAAa,CAAC,QAAQ,CAAC;IAC3C,IAAIolV,KAAK,GAAGjtU,OAAO,CAACnY,aAAa,CAAC,QAAQ,CAAC;IAC3C,IAAI+zO,KAAK,GAAG57N,OAAO,CAACnY,aAAa,CAAC,QAAQ,CAAC;IAC3C,IAAIqlV,KAAK,GAAGltU,OAAO,CAACnY,aAAa,CAAC,QAAQ,CAAC;IAC3C,IAAI6+F,QAAQ,GAAG1mF,OAAO,CAACnY,aAAa,CAAC,mBAAmB,CAAC;IACzD,IAAIgI,QAAQ,GAAGmQ,OAAO,CAACnY,aAAa,CAAC,mBAAmB,CAAC;IACzD,IAAIuzP,OAAO,GAAGp7O,OAAO,CAACnY,aAAa,CAAC,UAAU,CAAC;IAC/C,IAAIiO,MAAM,GAAGkK,OAAO,CAACnY,aAAa,CAAC,SAAS,CAAC;IAE7C6sO,UAAU,CAAClpC,YAAY,GAAGwhJ,KAAK,CAACxjV,KAAK;IACrCkrO,UAAU,CAACjpC,YAAY,GAAGwhJ,KAAK,CAACzjV,KAAK;IACrCkrO,UAAU,CAACu0G,YAAY,GAAGrtG,KAAK,CAACpyO,KAAK;IACrCkrO,UAAU,CAACw0G,YAAY,GAAGgE,KAAK,CAAC1jV,KAAK;IACrCkrO,UAAU,CAAChpC,aAAa,GAAGhlG,QAAQ,CAACl9F,KAAK;IACzCkrO,UAAU,CAACy0G,gBAAgB,GAAGt5U,QAAQ,CAACrG,KAAK;IAC5CkrO,UAAU,CAAC0mB,OAAO,GAAG9iO,IAAI,CAACub,uBAAuB,CAACunN,OAAO,CAAC5xP,KAAK,CAAC;IAChEkrO,UAAU,CAAC1wN,IAAI,GAAGsU,IAAI,CAACub,uBAAuB,CAAC/9B,MAAM,CAACtM,KAAK,CAAC;IAC5DkrO,UAAU,CAAC00G,UAAU,GAAG,EAAE;IAC1B10G,UAAU,CAAC20G,kBAAkB,GAAG,EAAE;IAElC,IAAIrzU,CAAC,CAACC,OAAO,CAAC+kD,kCAAkC,EAAE;MAChD,IAAIouR,UAAU,GAAGppU,OAAO,CAACnY,aAAa,CAAC,aAAa,CAAC;MACrD6sO,UAAU,CAAC00G,UAAU,GAAG9wT,IAAI,CAACub,uBAAuB,CAACu1S,UAAU,CAAC5/U,KAAK,CAAC;IACxE;IACA,IAAIwM,CAAC,CAACC,OAAO,CAAC8kD,+CAA+C,EAAE;MAC7D,IAAIoyR,OAAO,GAAGntU,OAAO,CAACnY,aAAa,CAAC,UAAU,CAAC;MAC/C6sO,UAAU,CAAC20G,kBAAkB,GAAG/wT,IAAI,CAACub,uBAAuB,CAACs5S,OAAO,CAAC3jV,KAAK,CAAC;IAC7E;IAEA,IAAI6uO,OAAO,EAAE;MACX3D,UAAU,CAACs0G,cAAc,GAAG3wG,OAAO,CAAC2wG,cAAc,KAAK,EAAE,GAAG,IAAI,GAAG3wG,OAAO,CAAC2wG,cAAc;MACzFt0G,UAAU,CAACnpC,gBAAgB,GACzB8sC,OAAO,CAAC9sC,gBAAgB,KAAK,EAAE,GAAG,IAAI,GAAG8sC,OAAO,CAAC9sC,gBAAgB;IACrE;EACF;EAEA,SAAS6hJ,0BAA0BA,CAAA,EAAG;IACpCnC,8BAA8B,CAAC,CAAC;IAChCO,8BAA8B,CAAC,CAAC;IAChCU,2BAA2B,CAAC,CAAC;IAC7Ba,4BAA4B,CAAC,CAAC;IAC9Br4G,UAAU,CAAClgM,KAAK,GAAGx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;IAClCo2L,UAAU,CAACtnC,UAAU,GAAGk9I,aAAa,GAAG,MAAM,GAAG,QAAQ;EAC3D;EAEA,SAAS+C,YAAYA,CAAChpG,KAAK,EAAE;IAC3BimG,aAAa,GAAGjmG,KAAK;IACrB;IACA+oG,0BAA0B,CAAC,CAAC;IAC5B;IACA15O,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;IAC9B;IACAosD,oBAAoB,CAACqC,oBAAoB,CAAC4nC,UAAU,EAAE,UAAUm2G,cAAc,EAAE;MAC9ED,yBAAyB,CAACC,cAAc,CAAC;MACzC;MACA1/I,gBAAgB,CAACrjM,IAAI,CAAC,CAAC;MACvBwlV,gBAAgB,CAAC,CAAC;MAClBC,kBAAkB,CAAC,CAAC;MACpB9C,eAAe,CAAC,CAAC;IACnB,CAAC,CAAC;EACJ;EACA,SAASvlH,cAAcA,CAAA,EAAG;IACxB,IAAIsoH,0BAA0B,GAAG71U,KAAK,CAAC1P,KAAK,CAAC,CAAC,CAAC,CAAC;IAEhD,IAAIwQ,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACzCsQ,OAAO,CAAC1T,SAAS,GAAG,gDAAgD;IAEpE,IAAIovC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,KAAK;MACXI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAM;QACdghM,oBAAoB,CAACoC,gBAAgB,CAAC6nC,UAAU,CAAC21G,gBAAgB,CAAC;QAClEI,eAAe,CAAC,CAAC;QACjB9yU,KAAK,CAAC/S,IAAI,CAAC4oV,0BAA0B,CAAC;QACtCriJ,gBAAgB,CAACrjM,IAAI,CAAC,CAAC;MACzB;IACF,CAAC,CAAC;IACF,IAAIwqJ,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAM;QACdghV,eAAe,CAAC,CAAC;QACjB9yU,KAAK,CAAC/S,IAAI,CAAC4oV,0BAA0B,CAAC;MACxC;IACF,CAAC,CAAC;IAEFr5S,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAE1Bk7L,0BAA0B,CAACnoV,WAAW,CAACoT,OAAO,CAAC;IAC/C+0U,0BAA0B,CAACnoV,WAAW,CAAC8uC,OAAO,CAAC;IAE/Cx8B,KAAK,CAAC9S,IAAI,CAAC2oV,0BAA0B,CAAC;EACxC;EACA,SAASC,cAAcA,CAAA,EAAG;IACxB;IACA/5O,OAAO,CAAC2qC,oBAAoB,CAAC,CAAC;IAC9B;IACA8sM,iBAAiB,CAAC9oG,SAAS,CAAC,CAAC;IAC7B;IACAl3C,gBAAgB,CAACrjM,IAAI,CAAC,CAAC;EACzB;;EAEA;EACA;EACA;EACA,SAASwlV,gBAAgBA,CAAA,EAAG;IAC1B/C,oBAAoB,GAAGY,iBAAiB,CAACC,uBAAuB,CAAC,CAAC;IAElE,IAAIsC,YAAY,GAAGC,gBAAgB,CAACl1M,OAAO,CAAC,CAAC;IAC7C,IAAIm1M,UAAU,GAAGC,gBAAgB,CAACp1M,OAAO,CAAC,CAAC;IAC3C,IAAIq1M,iBAAiB,GAAGC,oBAAoB,CAACt1M,OAAO,CAAC,CAAC;IACtD,IAAIm/K,UAAU,GAAGo2B,cAAc,CAACv1M,OAAO,CAAC,CAAC;IACzC,IAAI4qH,UAAU,GAAG4qF,iBAAiB,CAACx1M,OAAO,CAAC,CAAC;IAC5C,IAAIy1M,YAAY,GAAGC,gBAAgB,CAAC11M,OAAO,CAAC,CAAC;IAE7C,IAAI21M,WAAW,GAAGC,qBAAqB,CAACX,YAAY,CAAC;IACrD,IAAIY,WAAW,GAAGC,oBAAoB,CAACX,UAAU,CAAC;IAClD,IAAIY,WAAW,GAAGC,yBAAyB,CAACX,iBAAiB,CAAC;IAC9D,IAAIY,WAAW,GAAGC,mBAAmB,CAAC/2B,UAAU,CAAC;IACjD,IAAIg3B,WAAW,GAAGC,mBAAmB,CAACxrF,UAAU,CAAC;IACjD,IAAIyrF,aAAa,GAAGC,qBAAqB,CAACb,YAAY,CAAC;IAEvD,IAAIc,wBAAwB,GAAG,CAC7B,GAAGZ,WAAW,EACd,GAAGE,WAAW,EACd,GAAGE,WAAW,EACd,GAAGE,WAAW,EACd,GAAGE,WAAW,EACd,GAAGE,aAAa,CACjB;IAED54R,OAAO,CAACmrF,GAAG,CAAC2tM,wBAAwB,CAAC,CAACt4N,IAAI,CAAC,MAAM;MAC/Cy0N,iBAAiB,CAAC9oG,SAAS,CAAC,CAAC;IAC/B,CAAC,CAAC;EACJ;EACA,SAASgsG,qBAAqBA,CAAC1jV,IAAI,EAAE;IACnC,IAAIssH,YAAY,GAAG,EAAE;IAErB,IAAIq0N,cAAc,GAAG5kU,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAAC;IACtC2gV,cAAc,CAACnmV,OAAO,CAACoE,GAAG,IAAI;MAC5B,IAAIw1H,QAAQ,GAAG;QACbvqF,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB2wS,kBAAkB,EAAE,EAAE;QACtBC,uBAAuB,EAAE,EAAE;QAC3BC,mBAAmB,EAAE,EAAE;QACvBC,sBAAsB,EAAE,EAAE;QAC1BC,YAAY,EAAE,EAAE;QAChBC,kBAAkB,EAAE,EAAE;QACtBC,UAAU,EAAE;MACd,CAAC;MAED,IAAIhG,aAAa;MAEjB,IAAIgB,oBAAoB,EAAEhB,aAAa,GAAGgB,oBAAoB,CAAC3wR,IAAI,CAACzvD,CAAC,IAAIA,CAAC,CAAC/B,EAAE,KAAKmB,GAAG,CAAC;MACtF,IAAI,CAACggV,aAAa,EAAEA,aAAa,GAAGiB,uBAAuB,CAAC5wR,IAAI,CAACzvD,CAAC,IAAIA,CAAC,CAAC/B,EAAE,KAAKmB,GAAG,CAAC;MACnFw1H,QAAQ,CAACkwN,kBAAkB,GAAG1F,aAAa,CAACwB,UAAU;MAEtD,IAAIyE,MAAM,GAAG9oU,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAACpB,GAAG,CAAC,CAAC;MACnCimV,MAAM,CAACrqV,OAAO,CAACsqV,KAAK,IAAI;QACtB,IAAIC,MAAM,GAAG/kV,IAAI,CAACpB,GAAG,CAAC,CAACkmV,KAAK,CAAC;QAC7B,IAAI,CAACC,MAAM,CAACC,OAAO,EAAE;QAErB,IAAItrG,KAAK,GAAGorG,KAAK,CAACp2O,QAAQ,CAAC,KAAK,CAAC;QAEjC,IAAI81F,oBAAoB,GAAGk1C,KAAK,GAAG,EAAE,GAAGorG,KAAK;QAC7C,IAAIG,cAAc,GAAGF,MAAM,CAACE,cAAc,GAAGF,MAAM,CAACE,cAAc,GAAG,EAAE;QACvE,IAAIC,iBAAiB,GAAGH,MAAM,CAACG,iBAAiB,GAC5Cv3T,IAAI,CAACub,uBAAuB,CAAC67S,MAAM,CAACG,iBAAiB,CAAC,GACtD,EAAE;QACN,IAAIt/N,OAAO,GAAGm/N,MAAM,CAACn/N,OAAO,GAAGm/N,MAAM,CAACn/N,OAAO,GAAG,EAAE;QAClD,IAAIu/N,aAAa,GAAGJ,MAAM,CAACI,aAAa,GAAGJ,MAAM,CAACI,aAAa,GAAG,EAAE;QACpE,IAAIz6L,KAAK,GAAGq6L,MAAM,CAACr6L,KAAK,GAAG/8H,IAAI,CAACub,uBAAuB,CAAC67S,MAAM,CAACr6L,KAAK,CAAC,GAAG,EAAE;QAE1Et2B,QAAQ,CAACmwN,uBAAuB,CAACl8U,IAAI,CAACm8L,oBAAoB,CAAC;QAC3DpwE,QAAQ,CAACowN,mBAAmB,CAACn8U,IAAI,CAAC48U,cAAc,CAAC;QACjD7wN,QAAQ,CAACqwN,sBAAsB,CAACp8U,IAAI,CAAC68U,iBAAiB,CAAC;QACvD9wN,QAAQ,CAACswN,YAAY,CAACr8U,IAAI,CAACu9G,OAAO,CAAC;QACnCwO,QAAQ,CAACuwN,kBAAkB,CAACt8U,IAAI,CAAC88U,aAAa,CAAC;QAC/C/wN,QAAQ,CAACwwN,UAAU,CAACv8U,IAAI,CAACqiJ,KAAK,CAAC;MACjC,CAAC,CAAC;MAEF,IAAI06L,WAAW,GAAG,IAAI75R,OAAO,CAAC,CAAC78C,OAAO,EAAEC,MAAM,KAAK;QACjDmxL,oBAAoB,CAAC4E,4BAA4B,CAACtwE,QAAQ,EAAE,MAAM;UAChE1lH,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF49G,YAAY,CAACjkH,IAAI,CAAC+8U,WAAW,CAAC;IAChC,CAAC,CAAC;IAEF,OAAO94N,YAAY;EACrB;EACA,SAASs3N,oBAAoBA,CAAC5jV,IAAI,EAAE;IAClC,IAAIssH,YAAY,GAAG,EAAE;IAErB,IAAIq0N,cAAc,GAAG5kU,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAAC;IACtC2gV,cAAc,CAACnmV,OAAO,CAACoE,GAAG,IAAI;MAC5B,IAAIw1H,QAAQ,GAAG;QACbvqF,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB2wS,kBAAkB,EAAE,EAAE;QACtBe,uBAAuB,EAAE,EAAE;QAC3BC,mBAAmB,EAAE,EAAE;QACvBC,gBAAgB,EAAE,EAAE;QACpBC,YAAY,EAAE,EAAE;QAChBC,uBAAuB,EAAE,EAAE;QAC3BC,mBAAmB,EAAE,EAAE;QACvBC,cAAc,EAAE,EAAE;QAClBC,oBAAoB,EAAE,EAAE;QACxBC,mBAAmB,EAAE;MACvB,CAAC;MAED,IAAIjH,aAAa;MAEjB,IAAIgB,oBAAoB,EAAEhB,aAAa,GAAGgB,oBAAoB,CAAC3wR,IAAI,CAACzvD,CAAC,IAAIA,CAAC,CAAC/B,EAAE,KAAKmB,GAAG,CAAC;MACtF,IAAI,CAACggV,aAAa,EAAEA,aAAa,GAAGiB,uBAAuB,CAAC5wR,IAAI,CAACzvD,CAAC,IAAIA,CAAC,CAAC/B,EAAE,KAAKmB,GAAG,CAAC;MACnFw1H,QAAQ,CAACkwN,kBAAkB,GAAG1F,aAAa,CAACwB,UAAU;MAEtD,IAAIyE,MAAM,GAAG9oU,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAACpB,GAAG,CAAC,CAAC;MACnCimV,MAAM,CAACrqV,OAAO,CAACsqV,KAAK,IAAI;QACtB,IAAIgB,KAAK,GAAG9lV,IAAI,CAACpB,GAAG,CAAC,CAACkmV,KAAK,CAAC;QAC5B,IAAI,CAACgB,KAAK,CAACd,OAAO,EAAE;QAEpB,IAAItrG,KAAK,GAAGorG,KAAK,CAACp2O,QAAQ,CAAC,KAAK,CAAC;QAEjC,IAAIq2F,kBAAkB,GAAG20C,KAAK,GAAG,EAAE,GAAGorG,KAAK;QAC3C,IAAIiB,cAAc,GAAGD,KAAK,CAACC,cAAc,GAAGD,KAAK,CAACC,cAAc,GAAG,EAAE;QACrE,IAAIC,WAAW,GAAGF,KAAK,CAACE,WAAW,GAAGF,KAAK,CAACE,WAAW,GAAG,EAAE;QAC5D,IAAIC,aAAa,GAAGH,KAAK,CAACG,aAAa,GACnCt4T,IAAI,CAACub,uBAAuB,CAAC48S,KAAK,CAACG,aAAa,CAAC,GACjD,EAAE;QACN,IAAIC,gBAAgB,GAAGJ,KAAK,CAACI,gBAAgB,GAAGJ,KAAK,CAACI,gBAAgB,GAAG,EAAE;QAC3E,IAAIC,YAAY,GAAGL,KAAK,CAACK,YAAY,GAAGL,KAAK,CAACK,YAAY,GAAG,EAAE;QAC/D,IAAIC,aAAa,GAAGN,KAAK,CAACM,aAAa,GAAGN,KAAK,CAACM,aAAa,GAAG,EAAE;QAClE,IAAIC,YAAY,GAAGP,KAAK,CAACO,YAAY,GAAGP,KAAK,CAACO,YAAY,GAAG,EAAE;QAC/D,IAAIC,eAAe,GAAGR,KAAK,CAACQ,eAAe,GACvC34T,IAAI,CAACub,uBAAuB,CAAC48S,KAAK,CAACQ,eAAe,CAAC,GACnD,EAAE;QAENlyN,QAAQ,CAACixN,uBAAuB,CAACh9U,IAAI,CAAC08L,kBAAkB,CAAC;QACzD3wE,QAAQ,CAACkxN,mBAAmB,CAACj9U,IAAI,CAAC09U,cAAc,CAAC;QACjD3xN,QAAQ,CAACmxN,gBAAgB,CAACl9U,IAAI,CAAC29U,WAAW,CAAC;QAC3C5xN,QAAQ,CAACoxN,YAAY,CAACn9U,IAAI,CAAC49U,aAAa,CAAC;QACzC7xN,QAAQ,CAACqxN,uBAAuB,CAACp9U,IAAI,CAAC69U,gBAAgB,CAAC;QACvD9xN,QAAQ,CAACsxN,mBAAmB,CAACr9U,IAAI,CAAC89U,YAAY,CAAC;QAC/C/xN,QAAQ,CAACwxN,oBAAoB,CAACv9U,IAAI,CAAC+9U,aAAa,CAAC;QACjDhyN,QAAQ,CAACyxN,mBAAmB,CAACx9U,IAAI,CAACg+U,YAAY,CAAC;QAC/CjyN,QAAQ,CAACuxN,cAAc,CAACt9U,IAAI,CAACi+U,eAAe,CAAC;MAC/C,CAAC,CAAC;MAEF,IAAIlB,WAAW,GAAG,IAAI75R,OAAO,CAAC,CAAC78C,OAAO,EAAEC,MAAM,KAAK;QACjDmxL,oBAAoB,CAAC8E,4BAA4B,CAACxwE,QAAQ,EAAE,MAAM;UAChE1lH,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF49G,YAAY,CAACjkH,IAAI,CAAC+8U,WAAW,CAAC;IAChC,CAAC,CAAC;IAEF,OAAO94N,YAAY;EACrB;EACA,SAASw3N,yBAAyBA,CAAC9jV,IAAI,EAAE;IACvC,IAAIssH,YAAY,GAAG,EAAE;IAErB,IAAIq0N,cAAc,GAAG5kU,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAAC;IACtC2gV,cAAc,CAACnmV,OAAO,CAACoE,GAAG,IAAI;MAC5B,IAAIw1H,QAAQ,GAAG;QACbvqF,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB2wS,kBAAkB,EAAE,EAAE;QACtBiC,6BAA6B,EAAE,EAAE;QACjCC,aAAa,EAAE,EAAE;QACjBC,iCAAiC,EAAE,EAAE;QACrC7B,UAAU,EAAE,EAAE;QACd8B,cAAc,EAAE,EAAE;QAClBC,aAAa,EAAE,EAAE;QACjBC,eAAe,EAAE;MACnB,CAAC;MAED,IAAIhI,aAAa;MAEjB,IAAIgB,oBAAoB,EAAEhB,aAAa,GAAGgB,oBAAoB,CAAC3wR,IAAI,CAACzvD,CAAC,IAAIA,CAAC,CAAC/B,EAAE,KAAKmB,GAAG,CAAC;MACtF,IAAI,CAACggV,aAAa,EAAEA,aAAa,GAAGiB,uBAAuB,CAAC5wR,IAAI,CAACzvD,CAAC,IAAIA,CAAC,CAAC/B,EAAE,KAAKmB,GAAG,CAAC;MACnFw1H,QAAQ,CAACkwN,kBAAkB,GAAG1F,aAAa,CAACwB,UAAU;MAEtD,IAAIyE,MAAM,GAAG9oU,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAACpB,GAAG,CAAC,CAAC;MACnCimV,MAAM,CAACrqV,OAAO,CAACsqV,KAAK,IAAI;QACtB,IAAIgB,KAAK,GAAG9lV,IAAI,CAACpB,GAAG,CAAC,CAACkmV,KAAK,CAAC;QAC5B,IAAI,CAACgB,KAAK,CAACd,OAAO,EAAE;QAEpB,IAAItrG,KAAK,GAAGorG,KAAK,CAACp2O,QAAQ,CAAC,KAAK,CAAC;QAEjC,IAAIw2F,wBAAwB,GAAGw0C,KAAK,GAAG,EAAE,GAAGorG,KAAK;QACjD,IAAI+B,QAAQ,GAAGf,KAAK,CAACe,QAAQ,GAAGf,KAAK,CAACe,QAAQ,GAAG,EAAE;QACnD,IAAIC,gBAAgB,GAAGhB,KAAK,CAACgB,gBAAgB,GAAGhB,KAAK,CAACgB,gBAAgB,GAAG,EAAE;QAC3E,IAAIC,iBAAiB,GAAGjB,KAAK,CAACiB,iBAAiB,GAC3Cp5T,IAAI,CAACub,uBAAuB,CAAC48S,KAAK,CAACiB,iBAAiB,CAAC,GACrD,EAAE;QACN,IAAIzzT,SAAS,GAAGwyT,KAAK,CAACxyT,SAAS,GAAGwyT,KAAK,CAACxyT,SAAS,GAAG,EAAE;QACtD,IAAImiI,QAAQ,GAAGqwL,KAAK,CAACrwL,QAAQ,GAAGqwL,KAAK,CAACrwL,QAAQ,GAAG,EAAE;QACnD,IAAIuxL,UAAU,GAAGlB,KAAK,CAACkB,UAAU,GAAGlB,KAAK,CAACkB,UAAU,GAAG,EAAE;QAEzD5yN,QAAQ,CAACmyN,6BAA6B,CAACl+U,IAAI,CAAC68L,wBAAwB,CAAC;QACrE9wE,QAAQ,CAACoyN,aAAa,CAACn+U,IAAI,CAACw+U,QAAQ,CAAC;QACrCzyN,QAAQ,CAACqyN,iCAAiC,CAACp+U,IAAI,CAACy+U,gBAAgB,CAAC;QACjE1yN,QAAQ,CAACwwN,UAAU,CAACv8U,IAAI,CAAC0+U,iBAAiB,CAAC;QAC3C3yN,QAAQ,CAACsyN,cAAc,CAACr+U,IAAI,CAACirB,SAAS,CAAC;QACvC8gG,QAAQ,CAACuyN,aAAa,CAACt+U,IAAI,CAACotJ,QAAQ,CAAC;QACrCrhC,QAAQ,CAACwyN,eAAe,CAACv+U,IAAI,CAAC2+U,UAAU,CAAC;MAC3C,CAAC,CAAC;MAEF,IAAI5B,WAAW,GAAG,IAAI75R,OAAO,CAAC,CAAC78C,OAAO,EAAEC,MAAM,KAAK;QACjDmxL,oBAAoB,CAACsF,iCAAiC,CAAChxE,QAAQ,EAAE,MAAM;UACrE1lH,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF49G,YAAY,CAACjkH,IAAI,CAAC+8U,WAAW,CAAC;IAChC,CAAC,CAAC;IAEF,OAAO94N,YAAY;EACrB;EACA,SAAS03N,mBAAmBA,CAAChkV,IAAI,EAAE;IACjC,IAAIssH,YAAY,GAAG,EAAE;IAErB,IAAIq0N,cAAc,GAAG5kU,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAAC;IACtC2gV,cAAc,CAACnmV,OAAO,CAACoE,GAAG,IAAI;MAC5B,IAAIw1H,QAAQ,GAAG;QACbvqF,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB2wS,kBAAkB,EAAE,EAAE;QACtB2C,uBAAuB,EAAE,EAAE;QAC3BC,eAAe,EAAE,EAAE;QACnBC,iBAAiB,EAAE,EAAE;QACrBC,SAAS,EAAE;MACb,CAAC;MAED,IAAIxI,aAAa;MAEjB,IAAIgB,oBAAoB,EAAEhB,aAAa,GAAGgB,oBAAoB,CAAC3wR,IAAI,CAACzvD,CAAC,IAAIA,CAAC,CAAC/B,EAAE,KAAKmB,GAAG,CAAC;MACtF,IAAI,CAACggV,aAAa,EAAEA,aAAa,GAAGiB,uBAAuB,CAAC5wR,IAAI,CAACzvD,CAAC,IAAIA,CAAC,CAAC/B,EAAE,KAAKmB,GAAG,CAAC;MACnFw1H,QAAQ,CAACkwN,kBAAkB,GAAG1F,aAAa,CAACwB,UAAU;MAEtD,IAAIyE,MAAM,GAAG9oU,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAACpB,GAAG,CAAC,CAAC;MACnCimV,MAAM,CAACrqV,OAAO,CAACsqV,KAAK,IAAI;QACtB,IAAIuC,KAAK,GAAGrnV,IAAI,CAACpB,GAAG,CAAC,CAACkmV,KAAK,CAAC;QAC5B,IAAI,CAACuC,KAAK,CAACrC,OAAO,EAAE;QAEpB,IAAItrG,KAAK,GAAGorG,KAAK,CAACp2O,QAAQ,CAAC,KAAK,CAAC;QAEjC,IAAIk3F,kBAAkB,GAAG8zC,KAAK,GAAG,EAAE,GAAGorG,KAAK;QAC3C,IAAIwC,UAAU,GAAGD,KAAK,CAACC,UAAU,GAAGD,KAAK,CAACC,UAAU,GAAG,EAAE;QACzD,IAAIC,YAAY,GAAGF,KAAK,CAACE,YAAY,GAAGF,KAAK,CAACE,YAAY,GAAG,EAAE;QAC/D,IAAI78L,KAAK,GAAG28L,KAAK,CAAC38L,KAAK,GAAG/8H,IAAI,CAACub,uBAAuB,CAACm+S,KAAK,CAAC38L,KAAK,CAAC,GAAG,EAAE;QAExEt2B,QAAQ,CAAC6yN,uBAAuB,CAAC5+U,IAAI,CAACu9L,kBAAkB,CAAC;QACzDxxE,QAAQ,CAAC8yN,eAAe,CAAC7+U,IAAI,CAACi/U,UAAU,CAAC;QACzClzN,QAAQ,CAAC+yN,iBAAiB,CAAC9+U,IAAI,CAACk/U,YAAY,CAAC;QAC7CnzN,QAAQ,CAACgzN,SAAS,CAAC/+U,IAAI,CAACqiJ,KAAK,CAAC;MAChC,CAAC,CAAC;MAEF,IAAI06L,WAAW,GAAG,IAAI75R,OAAO,CAAC,CAAC78C,OAAO,EAAEC,MAAM,KAAK;QACjDmxL,oBAAoB,CAACgG,2BAA2B,CAAC1xE,QAAQ,EAAE,MAAM;UAC/D1lH,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF49G,YAAY,CAACjkH,IAAI,CAAC+8U,WAAW,CAAC;IAChC,CAAC,CAAC;IAEF,OAAO94N,YAAY;EACrB;EACA,SAAS43N,mBAAmBA,CAAClkV,IAAI,EAAE;IACjC,IAAIssH,YAAY,GAAG,EAAE;IAErB,IAAIq0N,cAAc,GAAG5kU,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAAC;IACtC2gV,cAAc,CAACnmV,OAAO,CAACoE,GAAG,IAAI;MAC5B,IAAIw1H,QAAQ,GAAG;QACbvqF,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB2wS,kBAAkB,EAAE,EAAE;QACtBkD,qBAAqB,EAAE,EAAE;QACzBC,eAAe,EAAE,EAAE;QACnBC,eAAe,EAAE,EAAE;QACnBC,wBAAwB,EAAE,EAAE;QAC5BC,aAAa,EAAE,EAAE;QACjBC,aAAa,EAAE,EAAE;QACjBC,iBAAiB,EAAE,EAAE;QACrBlD,UAAU,EAAE;MACd,CAAC;MAED,IAAIhG,aAAa;MAEjB,IAAIgB,oBAAoB,EAAEhB,aAAa,GAAGgB,oBAAoB,CAAC3wR,IAAI,CAACzvD,CAAC,IAAIA,CAAC,CAAC/B,EAAE,KAAKmB,GAAG,CAAC;MACtF,IAAI,CAACggV,aAAa,EAAEA,aAAa,GAAGiB,uBAAuB,CAAC5wR,IAAI,CAACzvD,CAAC,IAAIA,CAAC,CAAC/B,EAAE,KAAKmB,GAAG,CAAC;MACnFw1H,QAAQ,CAACkwN,kBAAkB,GAAG1F,aAAa,CAACwB,UAAU;MAEtD,IAAIyE,MAAM,GAAG9oU,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAACpB,GAAG,CAAC,CAAC;MACnCimV,MAAM,CAACrqV,OAAO,CAACsqV,KAAK,IAAI;QACtB,IAAIuC,KAAK,GAAGrnV,IAAI,CAACpB,GAAG,CAAC,CAACkmV,KAAK,CAAC;QAC5B,IAAI,CAACuC,KAAK,CAACrC,OAAO,EAAE;QAEpB,IAAItrG,KAAK,GAAGorG,KAAK,CAACp2O,QAAQ,CAAC,KAAK,CAAC;QAEjC,IAAIq5O,kBAAkB,GAAGruG,KAAK,GAAG,EAAE,GAAGorG,KAAK;QAC3C,IAAIkD,YAAY,GAAGX,KAAK,CAACW,YAAY,GAAGX,KAAK,CAACW,YAAY,GAAG,EAAE;QAC/D,IAAIC,YAAY,GAAGZ,KAAK,CAACY,YAAY,GAAGZ,KAAK,CAACY,YAAY,GAAG,EAAE;QAC/D,IAAIC,mBAAmB,GAAGb,KAAK,CAACa,mBAAmB,GAAGb,KAAK,CAACa,mBAAmB,GAAG,EAAE;QACpF,IAAIC,QAAQ,GAAGd,KAAK,CAACc,QAAQ,GAAGx6T,IAAI,CAACub,uBAAuB,CAACm+S,KAAK,CAACc,QAAQ,CAAC,GAAG,EAAE;QACjF,IAAIC,QAAQ,GAAGf,KAAK,CAACe,QAAQ,GAAGz6T,IAAI,CAACub,uBAAuB,CAACm+S,KAAK,CAACe,QAAQ,CAAC,GAAG,EAAE;QACjF,IAAIC,YAAY,GAAGhB,KAAK,CAACgB,YAAY,GACjC16T,IAAI,CAACub,uBAAuB,CAACm+S,KAAK,CAACgB,YAAY,CAAC,GAChD,EAAE;QACN,IAAI39L,KAAK,GAAG28L,KAAK,CAAC38L,KAAK,GAAG/8H,IAAI,CAACub,uBAAuB,CAACm+S,KAAK,CAAC38L,KAAK,CAAC,GAAG,EAAE;QAExEt2B,QAAQ,CAACozN,qBAAqB,CAACn/U,IAAI,CAAC0/U,kBAAkB,CAAC;QACvD3zN,QAAQ,CAACqzN,eAAe,CAACp/U,IAAI,CAAC2/U,YAAY,CAAC;QAC3C5zN,QAAQ,CAACszN,eAAe,CAACr/U,IAAI,CAAC4/U,YAAY,CAAC;QAC3C7zN,QAAQ,CAACuzN,wBAAwB,CAACt/U,IAAI,CAAC6/U,mBAAmB,CAAC;QAC3D9zN,QAAQ,CAACwzN,aAAa,CAACv/U,IAAI,CAAC8/U,QAAQ,CAAC;QACrC/zN,QAAQ,CAACyzN,aAAa,CAACx/U,IAAI,CAAC+/U,QAAQ,CAAC;QACrCh0N,QAAQ,CAAC0zN,iBAAiB,CAACz/U,IAAI,CAACggV,YAAY,CAAC;QAC7Cj0N,QAAQ,CAACwwN,UAAU,CAACv8U,IAAI,CAACqiJ,KAAK,CAAC;MACjC,CAAC,CAAC;MAEF,IAAI06L,WAAW,GAAG,IAAI75R,OAAO,CAAC,CAAC78C,OAAO,EAAEC,MAAM,KAAK;QACjDmxL,oBAAoB,CAAC2F,6BAA6B,CAACrxE,QAAQ,EAAE,MAAM;UACjE1lH,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF49G,YAAY,CAACjkH,IAAI,CAAC+8U,WAAW,CAAC;IAChC,CAAC,CAAC;IAEF,OAAO94N,YAAY;EACrB;EACA,SAAS83N,qBAAqBA,CAACpkV,IAAI,EAAE;IACnC,IAAIssH,YAAY,GAAG,EAAE;IAErB,IAAIq0N,cAAc,GAAG5kU,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAAC;IACtC2gV,cAAc,CAACnmV,OAAO,CAACoE,GAAG,IAAI;MAC5B,IAAIw1H,QAAQ,GAAG;QACbvqF,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB2wS,kBAAkB,EAAE,EAAE;QACtBgE,uBAAuB,EAAE,EAAE;QAC3BC,mBAAmB,EAAE,EAAE;QACvB7B,cAAc,EAAE,EAAE;QAClB8B,YAAY,EAAE,EAAE;QAChBC,gBAAgB,EAAE;MACpB,CAAC;MAED,IAAI7J,aAAa;MAEjB,IAAIgB,oBAAoB,EAAEhB,aAAa,GAAGgB,oBAAoB,CAAC3wR,IAAI,CAACzvD,CAAC,IAAIA,CAAC,CAAC/B,EAAE,KAAKmB,GAAG,CAAC;MACtF,IAAI,CAACggV,aAAa,EAAEA,aAAa,GAAGiB,uBAAuB,CAAC5wR,IAAI,CAACzvD,CAAC,IAAIA,CAAC,CAAC/B,EAAE,KAAKmB,GAAG,CAAC;MACnFw1H,QAAQ,CAACkwN,kBAAkB,GAAG1F,aAAa,CAACwB,UAAU;MAEtD,IAAIyE,MAAM,GAAG9oU,MAAM,CAAC8B,IAAI,CAAC7d,IAAI,CAACpB,GAAG,CAAC,CAAC;MACnCimV,MAAM,CAACrqV,OAAO,CAACsqV,KAAK,IAAI;QACtB,IAAIuC,KAAK,GAAGrnV,IAAI,CAACpB,GAAG,CAAC,CAACkmV,KAAK,CAAC;QAC5B,IAAI,CAACuC,KAAK,CAACrC,OAAO,EAAE;QAEpB,IAAItrG,KAAK,GAAGorG,KAAK,CAACp2O,QAAQ,CAAC,KAAK,CAAC;QAEjC,IAAIu3F,oBAAoB,GAAGyzC,KAAK,GAAG,EAAE,GAAGorG,KAAK;QAC7C,IAAI4D,cAAc,GAAGrB,KAAK,CAACqB,cAAc,GAAGrB,KAAK,CAACqB,cAAc,GAAG,EAAE;QACrE,IAAIp1T,SAAS,GAAG+zT,KAAK,CAAC/zT,SAAS,GAAG+zT,KAAK,CAAC/zT,SAAS,GAAG,EAAE;QACtD,IAAIf,OAAO,GAAG80T,KAAK,CAAC90T,OAAO,GAAG80T,KAAK,CAAC90T,OAAO,GAAG,EAAE;QAChD,IAAIo2T,WAAW,GAAGtB,KAAK,CAACsB,WAAW,GAAGtB,KAAK,CAACsB,WAAW,GAAG,EAAE;QAE5Dv0N,QAAQ,CAACk0N,uBAAuB,CAACjgV,IAAI,CAAC49L,oBAAoB,CAAC;QAC3D7xE,QAAQ,CAACm0N,mBAAmB,CAAClgV,IAAI,CAACqgV,cAAc,CAAC;QACjDt0N,QAAQ,CAACsyN,cAAc,CAACr+U,IAAI,CAACirB,SAAS,CAAC;QACvC8gG,QAAQ,CAACo0N,YAAY,CAACngV,IAAI,CAACkqB,OAAO,CAAC;QACnC6hG,QAAQ,CAACq0N,gBAAgB,CAACpgV,IAAI,CAACsgV,WAAW,CAAC;MAC7C,CAAC,CAAC;MAEF,IAAIvD,WAAW,GAAG,IAAI75R,OAAO,CAAC,CAAC78C,OAAO,EAAEC,MAAM,KAAK;QACjDmxL,oBAAoB,CAACqG,6BAA6B,CAAC/xE,QAAQ,EAAE,MAAM;UACjE1lH,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF49G,YAAY,CAACjkH,IAAI,CAAC+8U,WAAW,CAAC;IAChC,CAAC,CAAC;IAEF,OAAO94N,YAAY;EACrB;EAEA,SAASs2N,kBAAkBA,CAAA,EAAG;IAC5B,IAAIgG,eAAe,GAAG5F,gBAAgB,CAAC6F,aAAa,CAAC,CAAC;IACtD,IAAIC,aAAa,GAAG5F,gBAAgB,CAAC2F,aAAa,CAAC,CAAC;IACpD,IAAIE,mBAAmB,GAAG3F,oBAAoB,CAACyF,aAAa,CAAC,CAAC;IAC9D,IAAIG,aAAa,GAAG3F,cAAc,CAACwF,aAAa,CAAC,CAAC;IAClD,IAAII,aAAa,GAAG3F,iBAAiB,CAACuF,aAAa,CAAC,CAAC;IACrD,IAAIK,eAAe,GAAG1F,gBAAgB,CAACqF,aAAa,CAAC,CAAC;IAEtD,IAAID,eAAe,EAAE;MACnB,IAAIO,MAAM,GAAGptU,MAAM,CAAC8B,IAAI,CAAC+qU,eAAe,CAAC;MACzCO,MAAM,CAAC3uV,OAAO,CAAC4uV,KAAK,IAAI;QACtB,IAAIvrU,IAAI,GAAG9B,MAAM,CAAC8B,IAAI,CAAC+qU,eAAe,CAACQ,KAAK,CAAC,CAAC;QAC9CvrU,IAAI,CAACrjB,OAAO,CAACoE,GAAG,IAAI;UAClBkhM,oBAAoB,CAACyE,wBAAwB,CAAC3lM,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IACA,IAAIkqV,aAAa,EAAE;MACjB,IAAIO,OAAO,GAAGttU,MAAM,CAAC8B,IAAI,CAACirU,aAAa,CAAC;MACxCO,OAAO,CAAC7uV,OAAO,CAAC8uV,MAAM,IAAI;QACxB,IAAIzrU,IAAI,GAAG9B,MAAM,CAAC8B,IAAI,CAACirU,aAAa,CAACQ,MAAM,CAAC,CAAC;QAC7CzrU,IAAI,CAACrjB,OAAO,CAACoE,GAAG,IAAI;UAClBkhM,oBAAoB,CAACgF,wBAAwB,CAAClmM,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IACA,IAAImqV,mBAAmB,EAAE;MACvB,IAAIQ,OAAO,GAAGxtU,MAAM,CAAC8B,IAAI,CAACkrU,mBAAmB,CAAC;MAC9CQ,OAAO,CAAC/uV,OAAO,CAACgvV,MAAM,IAAI;QACxB,IAAI3rU,IAAI,GAAG9B,MAAM,CAAC8B,IAAI,CAACkrU,mBAAmB,CAACS,MAAM,CAAC,CAAC;QACnD3rU,IAAI,CAACrjB,OAAO,CAACoE,GAAG,IAAI;UAClBkhM,oBAAoB,CAACmF,6BAA6B,CAACrmM,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IACA,IAAIoqV,aAAa,EAAE;MACjB,IAAIS,OAAO,GAAG1tU,MAAM,CAAC8B,IAAI,CAACmrU,aAAa,CAAC;MACxCS,OAAO,CAACjvV,OAAO,CAACkvV,MAAM,IAAI;QACxB,IAAI7rU,IAAI,GAAG9B,MAAM,CAAC8B,IAAI,CAACmrU,aAAa,CAACU,MAAM,CAAC,CAAC;QAC7C7rU,IAAI,CAACrjB,OAAO,CAACoE,GAAG,IAAI;UAClBkhM,oBAAoB,CAAC6F,uBAAuB,CAAC/mM,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IACA,IAAIqqV,aAAa,EAAE;MACjB,IAAIU,OAAO,GAAG5tU,MAAM,CAAC8B,IAAI,CAACorU,aAAa,CAAC;MACxCU,OAAO,CAACnvV,OAAO,CAACovV,MAAM,IAAI;QACxB,IAAI/rU,IAAI,GAAG9B,MAAM,CAAC8B,IAAI,CAACorU,aAAa,CAACW,MAAM,CAAC,CAAC;QAC7C/rU,IAAI,CAACrjB,OAAO,CAACoE,GAAG,IAAI;UAClBkhM,oBAAoB,CAACwF,yBAAyB,CAAC1mM,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IACA,IAAIsqV,eAAe,EAAE;MACnB,IAAIW,MAAM,GAAG9tU,MAAM,CAAC8B,IAAI,CAACqrU,eAAe,CAAC;MACzCW,MAAM,CAACrvV,OAAO,CAAC4uV,KAAK,IAAI;QACtB,IAAIvrU,IAAI,GAAG9B,MAAM,CAAC8B,IAAI,CAACqrU,eAAe,CAACE,KAAK,CAAC,CAAC;QAC9CvrU,IAAI,CAACrjB,OAAO,CAACoE,GAAG,IAAI;UAClBkhM,oBAAoB,CAACkG,wBAAwB,CAACpnM,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EACF;EAEA,OAAO;IACL6a,IAAI,EAAEipU,YAAY;IAClBxyU,MAAM,EAAEqqN,cAAc;IACtBjvE,MAAM,EAAEw3L,cAAc;IACtBzC,mBAAmB;IACnBsC,gBAAgB;IAChB3C;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC/vBJ,IAAItkV,WAAW,GAAI,YAAW;EAC5B;EACA,SAASN,oBAAoBA,CAACP,MAAM,EAAE;IACpC,IAAIiuG,YAAY,GAAGjuG,MAAM,CAACC,OAAO,CAACC,SAAS;IAE3C,QAAO+tG,YAAY;MACjB,KAAK,gBAAgB;QAAE;UACrB,IAAI1B,iBAAiB,GAAG2B,OAAO,CAACC,kBAAkB,CAAC,CAAC;UACpDw3O,iBAAiB,CAACsJ,YAAY,CAAC1iP,iBAAiB,CAAC;UACjDj7F,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrB;QACF;MACA,KAAK,kBAAkB;QAAE;UACvBloB,GAAG,CAACkoB,eAAe,CAAC,CAAC;UACrB;QACF;IACF;EACF;EAEA,SAAS29E,QAAQA,CAAA,EAAG;IAClB7lG,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvB28F,OAAO,CAAC+5D,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC;IAClC/5D,OAAO,CAACI,cAAc,CAAC,CAAC;IAExB,IAAI4gP,eAAe,GAAGC,YAAY,CAAC1sV,KAAK,CAAC,CAAC;IAE1C6O,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACqvV,eAAe,CAAC;IAE7C59U,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;EACxB;EAEA,SAAS32B,IAAIA,CAAA,EAAG;IACd8yG,+BAA+B,CAAC,sBAAsB,CAAC;IACvD+B,QAAQ,CAAC,CAAC;EACZ;EAEA,OAAO;IACL52G,oBAAoB;IACpB+B;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACxCJ;AACA,MAAM8sV,mBAAmB,GAAI,YAAY;EACvC,SAASC,eAAeA,CAACzsN,SAAS,EAAE;IAClC,MAAMzpG,SAAS,GAAG,CAAC,GAAG/2B,QAAQ,CAACqG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAE5D0wB,SAAS,CAACx5B,OAAO,CAACu5B,QAAQ,IAAI;MAC5B,IAAI1oB,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC1sC,WAAW,CAAC,CAAC,KAAK2/H,SAAS,CAAC3/H,WAAW,CAAC,CAAC,EAAE;QAC9D,IACGi2B,QAAQ,CAACj6B,SAAS,CAAC8N,QAAQ,CAAC,SAAS,CAAC,IAAIyD,CAAC,CAACC,OAAO,CAACglD,yBAAyB,IAC7Ev8B,QAAQ,CAACj6B,SAAS,CAAC8N,QAAQ,CAAC,QAAQ,CAAC,IAAIyD,CAAC,CAACC,OAAO,CAACklD,wBAAyB,IAC5Ez8B,QAAQ,CAACj6B,SAAS,CAAC8N,QAAQ,CAAC,YAAY,CAAC,IAAIyD,CAAC,CAACC,OAAO,CAAColD,4BAA6B,IACpF38B,QAAQ,CAACj6B,SAAS,CAAC8N,QAAQ,CAAC,SAAS,CAAC,IAAIyD,CAAC,CAACC,OAAO,CAACslD,uBAAwB,EAC7E;UACA,MAAMu5R,eAAe,GAAGp2T,QAAQ,CAACl1B,KAAK;UAEtCk1B,QAAQ,CAAC32B,gBAAgB,CAAC,SAAS,EAAExC,KAAK,IAAI;YAC5C,MAAMwvV,WAAW,GAAGxvV,KAAK,CAACC,MAAM,CAACgE,KAAK;;YAEtC;YACA,IAAI,CAACurV,WAAW,CAAChlS,UAAU,CAAC+kS,eAAe,CAAC,EAAE;cAC5Cp2T,QAAQ,CAAC9O,IAAI,CAAC,CAAC;cACf;cACA,MAAMolU,YAAY,GAAGr9U,KAAK,CAAC1P,KAAK,CAAC;gBAC/BG,EAAE,EAAE,2BAA2B;gBAC/B8P,aAAa,EAAEA,CAAA,KAAM;kBACnB,MAAM+8U,UAAU,GACdH,eAAe,GAAGC,WAAW,CAAC1mU,MAAM,CAACymU,eAAe,CAAC5vV,MAAM,GAAG,CAAC,CAAC;kBAClEw5B,QAAQ,CAACl1B,KAAK,GAAGyrV,UAAU;gBAC7B;cACF,CAAC,CAAC;cACF,MAAMx8U,OAAO,GAAG7Q,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;cAC7CsQ,OAAO,CAAC1T,SAAS,GAAG,sDAAsD;cAE1E,MAAMswD,QAAQ,GAAGrtD,MAAM,CAACC,KAAK,CAAC;gBAC5BM,IAAI,EAAE,IAAI;gBACVG,KAAK,EAAE,WAAW;gBAClBC,IAAI,EAAE,WAAW;gBACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;kBACpBkO,KAAK,CAAC/S,IAAI,CAACowV,YAAY,CAAC;kBACxB,MAAMC,UAAU,GACdH,eAAe,GAAGC,WAAW,CAAC1mU,MAAM,CAACymU,eAAe,CAAC5vV,MAAM,GAAG,CAAC,CAAC;kBAClEw5B,QAAQ,CAACl1B,KAAK,GAAGyrV,UAAU;gBAC7B;cACF,CAAC,CAAC;cAEFD,YAAY,CAAC3vV,WAAW,CAACoT,OAAO,CAAC;cACjCu8U,YAAY,CAAC3vV,WAAW,CAACgwD,QAAQ,CAAC;cAElC19C,KAAK,CAAC9S,IAAI,CAACmwV,YAAY,CAAC;YAC1B;UACF,CAAC,CAAC;QACJ;MACF;IACF,CAAC,CAAC;EACJ;EAEA,SAASE,WAAWA,CAACC,yBAAyB,EAAE;IAC9C;IACA,IAAIC,oBAAoB,GAAGxtV,QAAQ,CAACC,aAAa,CAAC,4CAA4C,CAAC;IAC/F,IAAIiyH,MAAM,GAAG,EAAE,CAAC3lH,KAAK,CAACC,IAAI,CAACghV,oBAAoB,CAACnnV,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC1E,IAAI0wB,SAAS,GAAG,EAAE,CAACxqB,KAAK,CAACC,IAAI,CAACghV,oBAAoB,CAACnnV,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAChF,IAAI2rP,SAAS,GAAG,EAAE,CAACzlP,KAAK,CAACC,IAAI,CAACghV,oBAAoB,CAACnnV,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9E,IAAIoU,YAAY,GAAG,EAAE,CAACwG,MAAM,CAACixG,MAAM,EAAEn7F,SAAS,EAAEi7N,SAAS,CAAC;IAC1D,IAAI5jP,CAAC,CAACC,OAAO,CAACmuC,sBAAsB,KAAK,KAAK,EAAE;MAC9C;MACA/hC,YAAY,CAACld,OAAO,CAACyI,OAAO,IAAI;QAC9BA,OAAO,CAACgP,QAAQ,GAAG,IAAI;MACzB,CAAC,CAAC;IACJ,CAAC,MAAM;MACL;MACAyF,YAAY,CAACld,OAAO,CAACyI,OAAO,IAAI;QAC9BA,OAAO,CAACgP,QAAQ,GAAG,KAAK;MAC1B,CAAC,CAAC;MACFi4U,eAAe,CAACM,yBAAyB,CAAC;IAC5C;EACF;EAEA,OAAO;IACLN,eAAe;IACfK;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACjFJ,IAAIhe,cAAc,GAAI,YAAY;EAChC,SAASv6N,QAAQA,CAACi7M,UAAU,EAAEjrH,UAAU,EAAE;IACxC71L,GAAG,CAACC,iBAAiB,CAAC,CAAC;IAEvB,IAAI29U,eAAe,GAAGC,YAAY,CAAC1sV,KAAK,CAAC2vT,UAAU,CAAC;IAEpD9gT,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACqvV,eAAe,CAAC;IAE7CE,mBAAmB,CAACM,WAAW,CAACt9B,UAAU,CAACy9B,YAAY,CAAC,CAAC,CAAC,CAACF,yBAAyB,CAAC;IAErFr+U,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;EACxB;EAEA,SAAS32B,IAAIA,CAAC6kM,UAAU,EAAE;IACxBlC,oBAAoB,CAACiC,mCAAmC,CAACC,UAAU,EAAE78F,OAAO,IAAI;MAC9Ei5O,QAAQ,CAACiC,mBAAmB,CAACr+I,UAAU,CAAC;MACxChwF,QAAQ,CAAC7M,OAAO,EAAE68F,UAAU,CAAC;IAC/B,CAAC,CAAC;EACJ;EAEA,OAAO;IACL7kM;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACvBJ,IAAI6sV,YAAY,GAAI,YAAY;EAC9B;EACA;EACA,IAAIA,YAAY;EAChB;EACA,IAAIW,gBAAgB;EACpB,IAAIC,cAAc;EAClB,IAAIC,eAAe;EACnB,IAAIC,aAAa;EACjB;EACA,IAAIC,OAAO;EACX,IAAIC,OAAO;EACX;EACA,IAAIC,cAAc;EAClB,IAAI19M,OAAO;EACX,IAAI0b,SAAS;EACb,IAAIt9G,SAAS;EACb;EACA;EACA,IAAIz2B,QAAQ,GAAG,CACb,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,CAClB;EACD,IAAIg2U,kBAAkB;EACtB,IAAIR,YAAY;EAChB,IAAIS,mBAAmB;EACvB,IAAIC,gBAAgB;EACpB;EACA;EACA,IAAIzL,aAAa;EACjB,IAAI0L,oBAAoB;EAExB,SAASC,mBAAmBA,CAACC,UAAU,EAAE;IACvC,IAAIA,UAAU,EAAE;MACdh+M,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACjCuzI,OAAO,CAACt7H,QAAQ,GAAG,IAAI;IACzB,CAAC,MAAM;MACLs7H,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACpCwzI,OAAO,CAACt7H,QAAQ,GAAG,KAAK;IAC1B;EACF;EACA,SAASu5U,gBAAgBA,CAACvxV,IAAI,EAAE;IAC9B,IAAIA,IAAI,EAAE;MACRgxV,cAAc,CAACnxV,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IACxC,CAAC,MAAM;MACLixV,cAAc,CAACnxV,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC3C;EACF;EACA,SAAS0xV,aAAaA,CAAA,EAAG;IACvB,IAAIJ,oBAAoB,KAAK,CAAC,EAAE;MAC9B;MACAN,OAAO,CAACjxV,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;IACrC,CAAC,MAAM;MACLgxV,OAAO,CAACjxV,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAClC;IACA,IAAIqxV,oBAAoB,KAAK,CAAC,EAAE;MAC9B;MACAL,OAAO,CAAClxV,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;IACrC,CAAC,MAAM;MACLixV,OAAO,CAAClxV,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAClC;EACF;EACA,SAAS0xV,WAAWA,CAAClsV,CAAC,EAAE;IACtB,IAAIA,CAAC,CAAC3E,MAAM,KAAKkwV,OAAO,EAAEM,oBAAoB,EAAE;IAChD,IAAI7rV,CAAC,CAAC3E,MAAM,KAAKmwV,OAAO,EAAEK,oBAAoB,EAAE;IAEhD,IAAIM,uBAAuB,GAAG3B,YAAY,CAAC9sV,aAAa,CAAC,0BAA0B,CAAC;IACpF,IAAI0uV,qBAAqB,GAAG,mBAAmBP,oBAAoB,IAAI;IACvE,IAAI71U,aAAa,GAAGw0U,YAAY,CAAC9sV,aAAa,CAAC0uV,qBAAqB,CAAC;IAErED,uBAAuB,CAAC7xV,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;IACnDyb,aAAa,CAAC1b,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEtC,IAAI6xV,eAAe,GAAG32U,QAAQ,CAACm2U,oBAAoB,GAAG,CAAC,CAAC;IACxDN,OAAO,CAAC3wV,SAAS,GAAGyxV,eAAe,GAAGA,eAAe,GAAG,EAAE;IAE1D1/U,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;IAEtB23T,aAAa,CAAC,CAAC;EACjB;EAEA,SAASK,QAAQA,CAAA,EAAG;IAClBT,oBAAoB,GAAG,CAAC;IAExB,IAAI1xV,GAAG,GAAGsD,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvC7D,GAAG,CAACG,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAEtC+wV,OAAO,GAAG1tV,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAEsX,QAAQ,CAACm2U,oBAAoB,GAAG,CAAC,CAAC;MACxCttV,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;MAClCQ,QAAQ,EAAE4sV;IACZ,CAAC,CAAC;IACFV,OAAO,GAAG3tV,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,SAAS;MACrBQ,QAAQ,EAAE4sV;IACZ,CAAC,CAAC;IAEF/xV,GAAG,CAACe,WAAW,CAACswV,OAAO,CAAC;IACxBrxV,GAAG,CAACe,WAAW,CAACqwV,OAAO,CAAC;IAExB,OAAOpxV,GAAG;EACZ;EACA,SAASoyV,eAAeA,CAAA,EAAG;IACzB,IAAIviT,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,EAAE,0BAA0B,CAAC;IAE5DuzI,OAAO,GAAGlwI,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE+hV,aAAa,GAAG,MAAM,GAAG,QAAQ;MACvC5hV,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpByuI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACjCokV,QAAQ,CAAC3kU,IAAI,CAACkmU,aAAa,CAAC;MAC9B;IACF,CAAC,CAAC;IACF12L,SAAS,GAAG5rJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEs/U,QAAQ,CAACluU;IACrB,CAAC,CAAC;IACFy7B,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEs/U,QAAQ,CAAC9yL;IACrB,CAAC,CAAC;IAEF,IAAIjgJ,CAAC,CAACC,OAAO,CAACmuC,sBAAsB,IAAIpuC,CAAC,CAACC,OAAO,CAACouC,sBAAsB,EAAE;MACxElQ,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC;IAC9B;IACA,IAAI,CAACoyM,aAAa,IAAIt0U,CAAC,CAACC,OAAO,CAACmuC,sBAAsB,IAAIpuC,CAAC,CAACC,OAAO,CAACquC,sBAAsB,EAAE;MAC1FnQ,OAAO,CAAC9uC,WAAW,CAACuuJ,SAAS,CAAC;IAChC;IACAz/G,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAE9B,OAAOnC,OAAO;EAChB;EACA,SAASwiT,aAAaA,CAAA,EAAG;IACvB,IAAI1sV,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACxC8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IAE5C2wV,gBAAgB,GAAGnK,iBAAiB,CAACljV,KAAK,CAAC;MAAE2uV,UAAU,EAAE;IAAI,CAAC,EAAEf,kBAAkB,CAAC;IACnFN,cAAc,GAAGsB,gBAAgB,CAAC5uV,KAAK,CAAC;MAAE2uV,UAAU,EAAE;IAAI,CAAC,EAAEvB,YAAY,CAAC;IAC1EG,eAAe,GAAGsB,iBAAiB,CAAC7uV,KAAK,CAAC;MAAE2uV,UAAU,EAAE;IAAI,CAAC,EAAEd,mBAAmB,CAAC;IACnFL,aAAa,GAAGsB,eAAe,CAAC9uV,KAAK,CAAC;MAAE2uV,UAAU,EAAE;IAAI,CAAC,EAAEb,gBAAgB,CAAC;IAE5E9rV,IAAI,CAAC5E,WAAW,CAACiwV,gBAAgB,CAAC;IAClCrrV,IAAI,CAAC5E,WAAW,CAACkwV,cAAc,CAAC;IAChCtrV,IAAI,CAAC5E,WAAW,CAACmwV,eAAe,CAAC;IACjCvrV,IAAI,CAAC5E,WAAW,CAACowV,aAAa,CAAC;IAE/B,OAAOxrV,IAAI;EACb;EAEA,SAASkuI,SAASA,CAACxtI,IAAI,EAAE;IACvB,IAAI,CAACA,IAAI,EAAE;MACT2/U,aAAa,GAAG,IAAI;MACpB1yB,UAAU,GAAG1rT,SAAS;MACtB2pV,kBAAkB,GAAG3pV,SAAS;MAC9BmpV,YAAY,GAAGnpV,SAAS;MACxB4pV,mBAAmB,GAAG5pV,SAAS;MAC/B6pV,gBAAgB,GAAG7pV,SAAS;IAC9B,CAAC,MAAM;MACLo+U,aAAa,GAAG,KAAK;MACrB1yB,UAAU,GAAGjtT,IAAI;MACjBkrV,kBAAkB,GAAGj+B,UAAU,CAACi+B,kBAAkB;MAClDR,YAAY,GAAGz9B,UAAU,CAACy9B,YAAY;MACtCS,mBAAmB,GAAGl+B,UAAU,CAACk+B,mBAAmB;MACpDC,gBAAgB,GAAGn+B,UAAU,CAACm+B,gBAAgB;IAChD;IAEApB,YAAY,GAAG/sV,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5CwsV,YAAY,CAAClwV,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAE1C,IAAIqyV,OAAO,GAAGP,QAAQ,CAAC,CAAC;IACxBb,cAAc,GAAGc,eAAe,CAAC,CAAC;IAClC,IAAIO,YAAY,GAAGN,aAAa,CAAC,CAAC;IAElChC,YAAY,CAACtvV,WAAW,CAAC2xV,OAAO,CAAC;IACjCrC,YAAY,CAACtvV,WAAW,CAAC4xV,YAAY,CAAC;IACtCtC,YAAY,CAACtvV,WAAW,CAACuwV,cAAc,CAAC;IAExC,IAAIsB,uBAAuB,GAAGC,wBAAwB,CAAC,CAAC;IACxDlB,mBAAmB,CAACiB,uBAAuB,CAAC;IAE5C,OAAOvC,YAAY;EACrB;EAEA,SAASwC,wBAAwBA,CAAA,EAAG;IAClC;IACA,IAAIC,wBAAwB,GAAG,EAAE,CAACjjV,KAAK,CAACC,IAAI,CAC1CxM,QAAQ,CAACqG,gBAAgB,CAAC,oCAAoC,CAChE,CAAC;IACD;IACA,IAAIopV,WAAW,GAAGzvV,QAAQ,CAAC0N,sBAAsB,CAAC,sBAAsB,CAAC;IAEzE,IAAI+hV,WAAW,CAACnyV,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;IAEzC,IAAIkyV,wBAAwB,CAAClyV,MAAM,KAAK,CAAC,IAAI2wV,kBAAkB,EAAE;MAC/D,OAAO,KAAK,CAAC,CAAC;IAChB,CAAC,MAAM;MACL,OAAO,IAAI,CAAC,CAAC;IACf;EACF;EACA,SAASyB,gCAAgCA,CAAA,EAAG;IAC1C,IAAIC,sBAAsB,GAAGV,gBAAgB,CAACjiO,mBAAmB,CAAC,CAAC;IACnE,IAAI4iO,sBAAsB,GAAGT,eAAe,CAACniO,mBAAmB,CAAC,CAAC;IAClE,IAAI6iO,wBAAwB,GAAGN,wBAAwB,CAAC,CAAC;IAEzD,IAAII,sBAAsB,IAAIC,sBAAsB,IAAIC,wBAAwB,EAAE;MAChFxB,mBAAmB,CAAC,IAAI,CAAC;IAC3B,CAAC,MAAM;MACLA,mBAAmB,CAAC,KAAK,CAAC;IAC5B;EACF;EAEA,OAAO;IACLhuV,KAAK,EAAEkwI,SAAS;IAChBu/M,UAAU,EAAEzB,mBAAmB;IAC/BkB,wBAAwB;IACxBG,gCAAgC;IAChCnB;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACxOJ,MAAMhrJ,gBAAgB,GAAI,YAAY;EAClC;EACA,IAAI1vF,aAAa;EACjB;EACA,IAAIk8O,yBAAyB,GAAG;IAAEjmJ,YAAY,EAAE;EAA0C,CAAC;EAC3F;EACA,IAAI5/F,WAAW;EACf,IAAIwE,SAAS;EACb,IAAI6F,cAAc;EAClB,IAAIy7O,aAAa;EACjB,IAAIxkM,gBAAgB;EACpB,IAAImyJ,gBAAgB;EACpB,IAAIsyC,YAAY;EAChB,IAAIrxM,aAAa;EACjB,IAAIC,WAAW;EACf,IAAIM,gBAAgB;EACpB,IAAIkvL,YAAY;EAChB,IAAIjuB,oBAAoB;EACxB,IAAI7zQ,OAAO;EACX,IAAI2jT,iBAAiB;EACrB,IAAItvL,eAAe;EACnB,IAAI0+I,eAAe;EACnB,IAAIpvG,eAAe;EACnB,IAAIt0D,eAAe;EACnB,IAAIu0M,eAAe;EACnB,IAAIC,aAAa;EACjB;EACA,IAAIhrE,UAAU,GAAG;IACbvjN,KAAK,EAAE,IAAI;IACXwuR,SAAS,EAAE,IAAI;IACfC,IAAI,EAAE,IAAI;IACVC,QAAQ,EAAE,IAAI;IACdtoV,QAAQ,EAAE,IAAI;IACdspD,YAAY,EAAE,IAAI;IAClB23C,QAAQ,EAAE,IAAI;IACdsjC,YAAY,EAAE,IAAI;IAClB1tC,QAAQ,EAAE,IAAI;IACd0xP,YAAY,EAAE,IAAI;IAClBtwM,QAAQ,EAAE,IAAI;IACdryH,MAAM,EAAE,IAAI;IACZ5wB,IAAI,EAAE;EACV,CAAC;EACD;EACA,IAAIwzV,yBAAyB;EAC7B,IAAIC,aAAa;EACjB,IAAIC,eAAe;EACnB,IAAIC,gBAAgB,GAAG;IACnBpwV,EAAE,EAAE,EAAE;IACNsF,IAAI,EAAE;EACV,CAAC;EACD,IAAIm1G,YAAY,GAAG;IACfruE,KAAK,EAAE,EAAE;IACT0kB,UAAU,EAAE,GAAG;IACfoyI,UAAU,EAAE,IAAI;IAChBmB,YAAY,EAAE,EAAE;IAChBf,aAAa,EAAE,GAAG;IAClB5jD,QAAQ,EAAE,EAAE;IACZryH,MAAM,EAAE,EAAE;IACVgjU,YAAY,EAAEziV,CAAC,CAACC,OAAO,CAACsuC;EAC5B,CAAC;EACD,IAAIm0S,WAAW;EACf,IAAIC,gBAAgB,GAAG,EAAE;EACzB,IAAIC,eAAe;EACnB,IAAIC,mBAAmB;EACvB,IAAIC,qBAAqB;EACzB;EACA;EACA,SAASC,4BAA4BA,CAAA,EAAG;IACpC,IAAIC,eAAe,GAAGpxV,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IAC/D,IAAI,CAACmxV,eAAe,EAAE;MAClBA,eAAe,GAAGpxV,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC/C6wV,eAAe,CAACv0V,SAAS,CAACE,GAAG,CAAC,gBAAgB,CAAC;MAC/CmS,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC2zV,eAAe,CAAC;MAC7ChsE,UAAU,CAACirE,SAAS,GAAGjiV,CAAC,CAACC,OAAO,CAACioC,KAAK,GAAG,IAAI,GAAGloC,CAAC,CAACC,OAAO,CAACgoC,IAAI;MAC9Do4D,eAAe,CAAC,CAAC;MACjB2iP,eAAe,CAAC3zV,WAAW,CAAC8uC,OAAO,CAAC;IACxC;IAEA,IAAI64O,UAAU,CAAC7zN,YAAY,KAAK,IAAI,IAAI6zN,UAAU,CAAC7zN,YAAY,KAAK,KAAK,IAAI6zN,UAAU,CAAC7zN,YAAY,KAAK,eAAe,EAAE;MACtHhlB,OAAO,CAAC9uC,WAAW,CAACmjK,eAAe,CAAC;MACpCr0H,OAAO,CAACn9B,WAAW,CAACwxJ,eAAe,CAAC;IACxC,CAAC,MACI;MACDr0H,OAAO,CAAC9uC,WAAW,CAACmjK,eAAe,CAAC;MACpC5gK,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,CAAC9F,SAAS,GAAG,YAAY,GAAGioR,UAAU,CAAC7zN,YAAY;IAC7F;IAEA,IAAI6zN,UAAU,CAAC54I,YAAY,KAAK,IAAI,IAAI44I,UAAU,CAAC54I,YAAY,KAAK,KAAK,IAAI44I,UAAU,CAAC54I,YAAY,KAAK,eAAe,EAAE;MACtHjgG,OAAO,CAAC9uC,WAAW,CAAC6hT,eAAe,CAAC;MACpC/yQ,OAAO,CAACn9B,WAAW,CAACkwS,eAAe,CAAC;IACxC,CAAC,MAAM;MACH/yQ,OAAO,CAAC9uC,WAAW,CAAC6hT,eAAe,CAAC;MACpCt/S,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,CAAC9F,SAAS,GAAG,YAAY,GAAGioR,UAAU,CAAC54I,YAAY;IAC7F;IAEA,IAAI44I,UAAU,CAACmrE,QAAQ,KAAK,IAAI,IAAInrE,UAAU,CAACmrE,QAAQ,KAAK,KAAK,IAAInrE,UAAU,CAACmrE,QAAQ,KAAK,eAAe,EAAE;MAC1GhkT,OAAO,CAAC9uC,WAAW,CAACyyM,eAAe,CAAC;MACpC3jK,OAAO,CAACn9B,WAAW,CAAC8gM,eAAe,CAAC;IACxC,CAAC,MACI;MACD3jK,OAAO,CAAC9uC,WAAW,CAACyyM,eAAe,CAAC;MACpClwM,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,CAAC9F,SAAS,GAAG,YAAY,GAAGioR,UAAU,CAACmrE,QAAQ;IACzF;IACA,IAAInrE,UAAU,CAACorE,YAAY,KAAK,IAAI,IAAIprE,UAAU,CAACorE,YAAY,KAAK,KAAK,IAAIprE,UAAU,CAACorE,YAAY,KAAK,gBAAgB,EAAE;MACvHjkT,OAAO,CAAC9uC,WAAW,CAACm+I,eAAe,CAAC;MACpCrvG,OAAO,CAACn9B,WAAW,CAACwsI,eAAe,CAAC;IACxC,CAAC,MACI;MACDrvG,OAAO,CAAC9uC,WAAW,CAACm+I,eAAe,CAAC;MACpC57I,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,CAAC9F,SAAS,GAAG,0BAA0B,GAAGioR,UAAU,CAACorE,YAAY;IAC3G;IAEA,IAAIprE,UAAU,CAACnoR,IAAI,KAAK,IAAI,IAAImoR,UAAU,CAACnoR,IAAI,KAAK,KAAK,EAAE;MACvDsvC,OAAO,CAAC9uC,WAAW,CAAC4zV,WAAW,CAAC;MAChC9kT,OAAO,CAACn9B,WAAW,CAACiiV,WAAW,CAAC;IACpC,CAAC,MACI;MACD9kT,OAAO,CAAC9uC,WAAW,CAAC4zV,WAAW,CAAC;MAChCrxV,QAAQ,CAACiD,cAAc,CAAC,SAAS,CAAC,CAAC9F,SAAS,GAAG,QAAQ,GAAGioR,UAAU,CAACnoR,IAAI;IAC7E;IAEA+C,QAAQ,CAACiD,cAAc,CAAC,eAAe,CAAC,CAAC9F,SAAS,GAAG,cAAc,GAAGioR,UAAU,CAACirE,SAAS;IAC1FrwV,QAAQ,CAACiD,cAAc,CAAC,aAAa,CAAC,CAAC9F,SAAS,GAAG,aAAa,GAAGuzB,IAAI,CAACmY,iBAAiB,CAACu8O,UAAU,CAACllI,QAAQ,CAAC;IAC9GlgJ,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAAC9F,SAAS,GAAG,WAAW,GAAGuzB,IAAI,CAACmY,iBAAiB,CAACu8O,UAAU,CAACv3P,MAAM,CAAC;EAE5G;EAEA,SAAS4gF,eAAeA,CAAA,EAAG;IACvBC,SAAS,GAAGtuG,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,QAAQ;MACdF,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,cAAc;MAC1BQ,QAAQ,EAAEA,CAAA,KAAM;QAAE+0G,eAAe,CAAC,KAAK,CAAC;MAAC;IAC7C,CAAC,CAAC;IAEF06O,aAAa,GAAGlxV,MAAM,CAACC,KAAK,CAAC;MACzBG,EAAE,EAAE,eAAe;MACnBG,IAAI,EAAE,cAAc,GAAGykR,UAAU,CAACirE,SAAS;MAC3CvvV,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE+0G,eAAe,CAAC,eAAe,CAAC;MAAC;IACvD,CAAC,CAAC;IAEFstD,WAAW,GAAG9jK,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,YAAY,GAAGykR,UAAU,CAAC7zN,YAAY;MAC5CzwD,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE+0G,eAAe,CAAC,aAAa,CAAC;MAAC;IACrD,CAAC,CAAC;IACFgzL,gBAAgB,GAAGxpS,MAAM,CAACC,KAAK,CAAC;MAC5BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,aAAa,CAAC;MAAC;IACjD,CAAC,CAAC;IAEFq1M,WAAW,GAAG/jT,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,YAAY,GAAGykR,UAAU,CAAC54I,YAAY;MAC5C1rI,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE+0G,eAAe,CAAC,aAAa,CAAC;MAAC;IACrD,CAAC,CAAC;IACFwtM,gBAAgB,GAAGhkT,MAAM,CAACC,KAAK,CAAC;MAC5BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,aAAa,CAAC;MAAC;IACjD,CAAC,CAAC;IAEFynG,WAAW,GAAGn2M,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,YAAY,GAAGykR,UAAU,CAACmrE,QAAQ;MACxCzvV,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE+0G,eAAe,CAAC,aAAa,CAAC;MAAC;IACrD,CAAC,CAAC;IACF4/F,gBAAgB,GAAGp2M,MAAM,CAACC,KAAK,CAAC;MAC5BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,aAAa,CAAC;MAAC;IACjD,CAAC,CAAC;IAEFwvC,WAAW,GAAGl+I,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,0BAA0B,GAAGykR,UAAU,CAACorE,YAAY;MAC1D1vV,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE+0G,eAAe,CAAC,aAAa,CAAC;MAAC;IACrD,CAAC,CAAC;IACF2nC,gBAAgB,GAAGn+I,MAAM,CAACC,KAAK,CAAC;MAC5BI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,aAAa,CAAC;MAAC;IACjD,CAAC,CAAC;IAEF43J,OAAO,GAAGtmQ,MAAM,CAACC,KAAK,CAAC;MACnBG,EAAE,EAAE,SAAS;MACbG,IAAI,EAAE,QAAQ,GAAGykR,UAAU,CAACnoR,IAAI;MAChC6D,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE+0G,eAAe,CAAC,SAAS,CAAC;MAAC;IACjD,CAAC,CAAC;IACF26O,YAAY,GAAGnxV,MAAM,CAACC,KAAK,CAAC;MACxBI,IAAI,EAAE,QAAQ;MACdK,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,gBAAgB;MAC5BQ,QAAQ,EAAEA,CAAA,KAAM;QAAEitG,WAAW,CAAC,SAAS,CAAC;MAAC;IAC7C,CAAC,CAAC;IAEF0iP,WAAW,GAAGpxV,MAAM,CAACC,KAAK,CAAC;MACvBG,EAAE,EAAE,aAAa;MACjBG,IAAI,EAAE,aAAa,GAAG+vB,IAAI,CAACmY,iBAAiB,CAACu8O,UAAU,CAACllI,QAAQ,CAAC;MACjEp/I,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE+0G,eAAe,CAAC,aAAa,CAAC;MAAC;IACrD,CAAC,CAAC;IAEF66O,SAAS,GAAGrxV,MAAM,CAACC,KAAK,CAAC;MACrBG,EAAE,EAAE,WAAW;MACfG,IAAI,EAAE,WAAW,GAAG+vB,IAAI,CAACmY,iBAAiB,CAACu8O,UAAU,CAACv3P,MAAM,CAAC;MAC7D/sB,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,MAAM;MACZM,UAAU,EAAE,oBAAoB;MAChCQ,QAAQ,EAAEA,CAAA,KAAM;QAAE+0G,eAAe,CAAC,WAAW,CAAC;MAAC;IACnD,CAAC,CAAC;IAEFrqE,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACvCgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IACtCwvC,OAAO,CAAC9uC,WAAW,CAACixG,SAAS,CAAC;IAE9BwhP,iBAAiB,GAAGlwV,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD2vV,iBAAiB,CAACrzV,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACzDmzV,iBAAiB,CAACzyV,WAAW,CAAC6zV,aAAa,CAAC;IAC5C/kT,OAAO,CAAC9uC,WAAW,CAACyyV,iBAAiB,CAAC;IAEtCtvL,eAAe,GAAG5gK,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/CqgK,eAAe,CAAC/jK,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvD6jK,eAAe,CAACnjK,WAAW,CAACymK,WAAW,CAAC;IACxCtD,eAAe,CAACnjK,WAAW,CAACmsS,gBAAgB,CAAC;IAC7Cr9P,OAAO,CAAC9uC,WAAW,CAACmjK,eAAe,CAAC;IAEpC0+I,eAAe,GAAGt/S,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/C++S,eAAe,CAACziT,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvDuiT,eAAe,CAAC7hT,WAAW,CAAC0mT,WAAW,CAAC;IACxC7E,eAAe,CAAC7hT,WAAW,CAAC2mT,gBAAgB,CAAC;IAC7C73Q,OAAO,CAAC9uC,WAAW,CAAC6hT,eAAe,CAAC;IAEpCpvG,eAAe,GAAGlwM,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/C2vM,eAAe,CAACrzM,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvDmzM,eAAe,CAACzyM,WAAW,CAAC84M,WAAW,CAAC;IACxCrG,eAAe,CAACzyM,WAAW,CAAC+4M,gBAAgB,CAAC;IAC7CjqK,OAAO,CAAC9uC,WAAW,CAACyyM,eAAe,CAAC;IAEpCt0D,eAAe,GAAG57I,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/Cq7I,eAAe,CAAC/+I,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvD6+I,eAAe,CAACn+I,WAAW,CAAC6gJ,WAAW,CAAC;IACxC1C,eAAe,CAACn+I,WAAW,CAAC8gJ,gBAAgB,CAAC;IAC7ChyG,OAAO,CAAC9uC,WAAW,CAACm+I,eAAe,CAAC;IAEpCy1M,WAAW,GAAGrxV,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C8wV,WAAW,CAACx0V,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACnDs0V,WAAW,CAAC5zV,WAAW,CAACipQ,OAAO,CAAC;IAChC2qF,WAAW,CAAC5zV,WAAW,CAAC8zV,YAAY,CAAC;IACrChlT,OAAO,CAAC9uC,WAAW,CAAC4zV,WAAW,CAAC;IAEhClB,eAAe,GAAGnwV,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC/C4vV,eAAe,CAACtzV,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACvDozV,eAAe,CAAC1yV,WAAW,CAAC+zV,WAAW,CAAC;IACxCjlT,OAAO,CAAC9uC,WAAW,CAAC0yV,eAAe,CAAC;IAEpCC,aAAa,GAAGpwV,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C6vV,aAAa,CAACvzV,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACrDqzV,aAAa,CAAC3yV,WAAW,CAACg0V,SAAS,CAAC;IACpCllT,OAAO,CAAC9uC,WAAW,CAAC2yV,aAAa,CAAC;EACtC;EAEA,SAASthP,WAAWA,CAACA,WAAW,EAAE;IAC9B,IAAIA,WAAW,IAAI,aAAa,EAAE;MAC9Bs2K,UAAU,CAAC7zN,YAAY,GAAG,KAAK;MAC/B0pD,YAAY,CAAC3pD,UAAU,GAAG,GAAG;MAC7B8zN,UAAU,CAACn9Q,QAAQ,GAAG,GAAG;IAC7B;IACA,IAAI6mG,WAAW,IAAI,aAAa,EAAE;MAC9Bs2K,UAAU,CAAC54I,YAAY,GAAG,KAAK;MAC/BvxB,YAAY,CAACp4D,UAAU,GAAG,GAAG;MAC7BuiO,UAAU,CAACl8K,QAAQ,GAAG,GAAG;IAC7B;IACA,IAAI4F,WAAW,IAAI,aAAa,EAAE;MAC9BmM,YAAY,CAACyoF,UAAU,GAAG,GAAG;MAC7B0hF,UAAU,CAACkrE,IAAI,GAAG,GAAG;MACrBlrE,UAAU,CAACmrE,QAAQ,GAAG,KAAK;IAC/B;IACA,IAAIzhP,WAAW,IAAI,aAAa,EAAE;MAC9BmM,YAAY,CAAC6oF,aAAa,GAAG,GAAG;MAChCshF,UAAU,CAACtmL,QAAQ,GAAG,GAAG;MACzBsmL,UAAU,CAACorE,YAAY,GAAG,KAAK;IACnC;IAEA,IAAI1hP,WAAW,IAAI,SAAS,EAAE;MAC1Bs2K,UAAU,CAACnoR,IAAI,GAAG,KAAK;IAC3B;IAEAk0V,4BAA4B,CAAC,CAAC;IAC9BtuJ,oBAAoB,CAAC0B,oBAAoB,CAACtpF,YAAY,EAAEy2O,qBAAqB,CAAC;EAClF;EAEA,SAASC,cAAcA,CAAC5uV,IAAI,EAAE;IAC1BqiR,UAAU,CAACvjN,KAAK,GAAG9+D,IAAI,CAAC6uV,OAAO,GAAG7uV,IAAI,CAAC6uV,OAAO,GAAGxsE,UAAU,CAACvjN,KAAK;IACjEujN,UAAU,CAACirE,SAAS,GAAGttV,IAAI,CAACstV,SAAS,GAAGttV,IAAI,CAACstV,SAAS,GAAGjrE,UAAU,CAACirE,SAAS;IAC7EjrE,UAAU,CAACkrE,IAAI,GAAGvtV,IAAI,CAAC8uV,MAAM,GAAG9uV,IAAI,CAAC8uV,MAAM,GAAGzsE,UAAU,CAACkrE,IAAI;IAC7DlrE,UAAU,CAACmrE,QAAQ,GAAGxtV,IAAI,CAACwtV,QAAQ,GAAGxtV,IAAI,CAACwtV,QAAQ,GAAGnrE,UAAU,CAACmrE,QAAQ;IACzEnrE,UAAU,CAACn9Q,QAAQ,GAAGlF,IAAI,CAACuuD,UAAU,GAAGvuD,IAAI,CAACuuD,UAAU,GAAG8zN,UAAU,CAACn9Q,QAAQ;IAC7Em9Q,UAAU,CAAC7zN,YAAY,GAAGxuD,IAAI,CAACwuD,YAAY,GAAGxuD,IAAI,CAACwuD,YAAY,GAAGxuD,IAAI,CAACwuD,YAAY,IAAI,EAAE,GAAG,IAAI,GAAG6zN,UAAU,CAAC7zN,YAAY;IAC1H6zN,UAAU,CAACl8K,QAAQ,GAAGnmG,IAAI,CAAC8/C,UAAU,GAAG9/C,IAAI,CAAC8/C,UAAU,GAAGuiO,UAAU,CAACl8K,QAAQ;IAC7Ek8K,UAAU,CAAC54I,YAAY,GAAGzpI,IAAI,CAACypI,YAAY,GAAGzpI,IAAI,CAACypI,YAAY,GAAG44I,UAAU,CAAC54I,YAAY;IACzF44I,UAAU,CAACtmL,QAAQ,GAAG/7F,IAAI,CAACunJ,UAAU,GAAGvnJ,IAAI,CAACunJ,UAAU,GAAG86H,UAAU,CAACtmL,QAAQ;IAC7EsmL,UAAU,CAACorE,YAAY,GAAGztV,IAAI,CAACytV,YAAY,GAAGztV,IAAI,CAACytV,YAAY,GAAGprE,UAAU,CAACorE,YAAY;IACzFprE,UAAU,CAACllI,QAAQ,GAAGn9I,IAAI,CAACm9I,QAAQ,GAAGn9I,IAAI,CAACm9I,QAAQ,GAAGklI,UAAU,CAACllI,QAAQ;IACzEklI,UAAU,CAACv3P,MAAM,GAAG9qB,IAAI,CAAC8qB,MAAM,GAAG9qB,IAAI,CAAC8qB,MAAM,GAAGu3P,UAAU,CAACv3P,MAAM;IACjEu3P,UAAU,CAACnoR,IAAI,GAAG8F,IAAI,CAAC9F,IAAI,GAAG8F,IAAI,CAAC9F,IAAI,GAAGmoR,UAAU,CAACnoR,IAAI;EAC7D;EACA,SAAS60V,uBAAuBA,CAAA,EAAG;IAC/BjvJ,oBAAoB,CAAC4B,sBAAsB,CAACo7I,yBAAyB,CAAC;IACtE;IACAl9B,uBAAuB,CAAC,CAAC;IACzB9/G,oBAAoB,CAACG,qBAAqB,CAAC+uJ,0BAA0B,CAAC;IACtElvJ,oBAAoB,CAAC+B,qCAAqC,CACtDx2L,CAAC,CAACC,OAAO,CAACmoC,QAAQ,EAClBw7S,gCACJ,CAAC;EACL;EACA,SAASC,gBAAgBA,CAAA,EAAG;IACxB,IAAI7sE,UAAU,CAACllI,QAAQ,EAAE,OAAOklI,UAAU,CAACllI,QAAQ;IAEnD,IAAIA,QAAQ,GAAGsd,eAAe,CAACpvJ,CAAC,CAACC,OAAO,CAAC0nC,+BAA+B,CAAC;IACzEqvO,UAAU,CAACllI,QAAQ,GAAGA,QAAQ;IAC9B,OAAOA,QAAQ;EACnB;EACA,SAASgyM,cAAcA,CAAA,EAAG;IACtB,IAAI9sE,UAAU,CAACv3P,MAAM,EAAE,OAAOu3P,UAAU,CAACv3P,MAAM;IAE/C,IAAIjH,KAAK,GAAG8J,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IAChC46O,UAAU,CAACv3P,MAAM,GAAGjH,KAAK;IACzB,OAAOA,KAAK;EAChB;EACA,SAASksI,gBAAgBA,CAACjjD,MAAM,EAAE;IAC9B3F,WAAW,GAAGn6F,KAAK,CAAC1P,KAAK,CAAC;MACtBgB,UAAU,EAAE,CAAC,6BAA6B;IAC9C,CAAC,CAAC;IAEF2uV,aAAa,GAAGhuV,QAAQ,CAAC3B,KAAK,CAAC;MAC3B4B,UAAU,EAAE,kBAAkB;MAC9BE,KAAK,EAAE,YAAY;MACnBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF0qJ,gBAAgB,GAAGxpJ,QAAQ,CAAC3B,KAAK,CAAC;MAC9B4B,UAAU,EAAE,kBAAkB;MAC9BE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF68S,gBAAgB,GAAG37S,QAAQ,CAAC3B,KAAK,CAAC;MAC9B4B,UAAU,EAAE,kBAAkB;MAC9BE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFmvV,YAAY,GAAGjuV,QAAQ,CAAC3B,KAAK,CAAC;MAC1B4B,UAAU,EAAE,kBAAkB;MAC9BE,KAAK,EAAE,UAAU;MACjBrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFq+I,gBAAgB,GAAGn9I,QAAQ,CAAC3B,KAAK,CAAC;MAC9B4B,UAAU,EAAE,kBAAkB;MAC9BE,KAAK,EAAE,sBAAsB;MAC7BrB,KAAK,EAAE;IACX,CAAC,CAAC;IACFutU,YAAY,GAAGrsU,QAAQ,CAAC3B,KAAK,CAAC;MAC1B4B,UAAU,EAAE,cAAc;MAC1BE,KAAK,EAAE,MAAM;MACbrB,KAAK,EAAE;IACX,CAAC,CAAC;IACF89I,aAAa,GAAG/6I,KAAK,CAACxD,KAAK,CAAC;MACxB8B,KAAK,EAAE,WAAW;MAClBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEqwV,gBAAgB,CAAC;IAC5B,CAAC,CAAC;IACFpzM,WAAW,GAAGh7I,KAAK,CAACxD,KAAK,CAAC;MACtB8B,KAAK,EAAE,SAAS;MAChBpB,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEswV,cAAc,CAAC;IAC1B,CAAC,CAAC;IACF39O,cAAc,GAAGn0G,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,OAAO;MACbG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE;IACV,CAAC,CAAC;;IAEF;IACA,IAAI8uG,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,eAAe,EAC5C3F,WAAW,CAACzsG,WAAW,CAACuyV,aAAa,CAAC;IAC1C,IAAIngP,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,aAAa,EAC1C3F,WAAW,CAACzsG,WAAW,CAAC+tJ,gBAAgB,CAAC;IAC7C,IAAI37C,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,aAAa,EAC1C3F,WAAW,CAACzsG,WAAW,CAACkgT,gBAAgB,CAAC;IAC7C,IAAI9tM,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,aAAa,EAC1C3F,WAAW,CAACzsG,WAAW,CAACwyV,YAAY,CAAC;IACzC,IAAIpgP,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,aAAa,EAC1C3F,WAAW,CAACzsG,WAAW,CAAC0hJ,gBAAgB,CAAC;IAC7C,IAAItvC,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,SAAS,EACtC3F,WAAW,CAACzsG,WAAW,CAAC4wU,YAAY,CAAC;IACzC,IAAIx+N,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,aAAa,EAC1C3F,WAAW,CAACzsG,WAAW,CAACmhJ,aAAa,CAAC;IAC1C,IAAI/uC,MAAM,IAAI,KAAK,IAAIA,MAAM,IAAI,WAAW,EACxC3F,WAAW,CAACzsG,WAAW,CAACohJ,WAAW,CAAC;IAExC30C,WAAW,CAACzsG,WAAW,CAAC82G,cAAc,CAAC;;IAEvC;IACAu9O,uBAAuB,CAAC,CAAC;EAC7B;EACA,SAASl7O,eAAeA,CAAC/G,MAAM,EAAE;IAC7B;IACAijD,gBAAgB,CAACjjD,MAAM,CAAC;IACxB9/F,KAAK,CAAC9S,IAAI,CAACitG,WAAW,CAAC;IACvB;IACAioP,wBAAwB,CAAC,CAAC;EAC9B;EACA,SAASC,cAAcA,CAAA,EAAG;IACtB,MAAMC,wBAAwB,GAAGryV,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9D8xV,wBAAwB,CAACx1V,SAAS,CAACE,GAAG,CAAC,0BAA0B,CAAC;IAElE,SAASiuK,eAAeA,CAAA,EAAG;MACvB,OAAQ1gE,YAAY,GAAG;QACnBgoP,UAAU,EAAEr3O,YAAY,CAAC3pD,UAAU;QACnCihS,UAAU,EAAEt3O,YAAY,CAACp4D,UAAU,GAAGo4D,YAAY,CAACp4D,UAAU,GAAG,GAAG;QACnE2vS,UAAU,EAAEptE,UAAU,CAACllI,QAAQ;QAC/BuyM,QAAQ,EAAErtE,UAAU,CAACv3P;MACzB,CAAC;IACL;IACA;IACA,SAASs9I,sBAAsBA,CAACC,WAAW,EAAE;MACzC,OAAOhrK,MAAM,CAACC,KAAK,CAAC;QAChBM,IAAI,EAAE,SAAS;QACfF,IAAI,EAAE,KAAK;QACXK,KAAK,EAAE,WAAW;QAClBC,IAAI,EAAE,WAAW;QACjBM,UAAU,EAAE,WAAW;QACvBQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;UAClB;UACAupK,WAAW,CAAC7tK,OAAO,CAAC,UAAU8tK,UAAU,EAAE;YACtCA,UAAU,CAAC/gE,YAAY,GAAG0gE,eAAe,CAAC,CAAC;UAC/C,CAAC,CAAC;UAEFrY,eAAe,CAAC2Y,gBAAgB,CAACF,WAAW,CAAC;QACjD;MACJ,CAAC,CAAC;IACN;IAEAG,UAAU,GAAGJ,sBAAsB,CAAC,CAAC;MAAExqK,IAAI,EAAE;IAAyB,CAAC,CAAC,CAAC;IAEzEuO,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAAC40V,wBAAwB,CAAC;IACtDA,wBAAwB,CAAC50V,WAAW,CAAC8tK,UAAU,CAAC;IAEhDzY,gBAAgB,CAAC,KAAK,CAAC;EAC3B;EACA,SAASq/L,wBAAwBA,CAAA,EAAG;IAChC,IAAIO,UAAU;IACd,IAAIC,YAAY;IAChB,IAAIC,SAAS;IACb,IAAIC,WAAW;IACf,IAAIC,aAAa;IACjB,IAAIC,eAAe;IACnB,IAAIC,aAAa;IACjB,IAAIC,eAAe;IACnB,IAAIC,aAAa;IACjB,IAAIC,eAAe;IACnB,IAAIC,SAAS;IACb,IAAIC,WAAW;IACf,IAAIC,OAAO;IAEXtD,aAAa,CAAC7vV,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC9C,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEkuV,eAAe,GAAGnuV,cAAc,CAACZ,KAAK;MACtC;MACAq5G,YAAY,CAAC4pF,YAAY,GAAG8rJ,eAAe;MAC3C11O,YAAY,CAAC3pD,UAAU,GAAG,GAAG;MAC7B2pD,YAAY,CAACp4D,UAAU,GAAG,GAAG;MAC7Bo4D,YAAY,CAACyoF,UAAU,GAAG,GAAG;MAC7BzoF,YAAY,CAAC6oF,aAAa,GAAG,GAAG;MAChC7oF,YAAY,CAAC41O,YAAY,GAAGziV,CAAC,CAACC,OAAO,CAACsuC,4BAA4B;MAClE;MACA+1S,UAAU,GAAG/B,eAAe;MAC5BgC,YAAY,GAAGnwV,cAAc,CAACrF,SAAS;MACvC;MACAuzV,aAAa,CAACnzV,OAAO,CAAC2F,CAAC,IAAI;QACvB,IAAIA,CAAC,CAAC2+D,KAAK,CAACqwJ,QAAQ,KAAKy+H,eAAe,EAAE;UACtCF,yBAAyB,GAAGvtV,CAAC,CAACqwV,KAAK;UACnCC,aAAa,CAACtwV,CAAC,CAACqwV,KAAK,CAAC;QAC1B;MACJ,CAAC,CAAC;IACN,CAAC,CAAC;IACFtD,YAAY,CAAC9vV,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC7C,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEmuV,gBAAgB,CAACpwV,EAAE,GAAGgC,cAAc,CAACZ,KAAK;MAC1CgvV,gBAAgB,CAAC9qV,IAAI,GAAGtD,cAAc,CAACrF,SAAS;MAChD89G,YAAY,CAACyoF,UAAU,GAAGktJ,gBAAgB,CAACpwV,EAAE;;MAE7C;MACAoyV,SAAS,GAAGhC,gBAAgB,CAACpwV,EAAE;MAC/BqyV,WAAW,GAAGjC,gBAAgB,CAAC9qV,IAAI;IACvC,CAAC,CAAC;IACF0lJ,gBAAgB,CAACrrJ,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEw4G,YAAY,CAAC3pD,UAAU,GAAG9uD,cAAc,CAACZ,KAAK;MAC9C;MACAkxV,aAAa,GAAGtwV,cAAc,CAACZ,KAAK;MACpCmxV,eAAe,GAAGvwV,cAAc,CAACrF,SAAS;IAC9C,CAAC,CAAC;IACFwgT,gBAAgB,CAACx9S,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEw4G,YAAY,CAACp4D,UAAU,GAAGrgD,cAAc,CAACZ,KAAK;MAC9C;MACAoxV,aAAa,GAAGxwV,cAAc,CAACZ,KAAK;MACpCqxV,eAAe,GAAGzwV,cAAc,CAACrF,SAAS;IAC9C,CAAC,CAAC;IACFgiJ,gBAAgB,CAACh/I,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACjD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrEw4G,YAAY,CAAC6oF,aAAa,GAAGthM,cAAc,CAACZ,KAAK;MACjD;MACAsxV,aAAa,GAAG1wV,cAAc,CAACZ,KAAK;MACpCuxV,eAAe,GAAG3wV,cAAc,CAACrF,SAAS;IAC9C,CAAC,CAAC;IACFkxU,YAAY,CAACluU,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC7C,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE;MACA6wV,OAAO,GAAG9wV,cAAc,CAACrF,SAAS;IACtC,CAAC,CAAC;IACF0hJ,WAAW,CAAC1+I,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC5C,IAAIwtH,YAAY,GAAGxtH,KAAK,CAACC,MAAM,CAACgE,KAAK;MACrC,IAAIupH,YAAY,KAAK,EAAE,EAAE;QACrB0zB,WAAW,CAAChiJ,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAClCw3G,cAAc,CAAC13G,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC5C,CAAC,MAAM;QACH8hJ,WAAW,CAAChiJ,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACrCy3G,cAAc,CAAC13G,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC/C;MACAm+G,YAAY,CAACptF,MAAM,GAAGs9F,YAAY;MAClCi6J,UAAU,CAACv3P,MAAM,GAAGs9F,YAAY;MAChCsoO,SAAS,GAAGtoO,YAAY;MACxB;MACAioO,SAAS,GAAGjoO,YAAY;IAC5B,CAAC,CAAC;IACFyzB,aAAa,CAACz+I,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC9C,IAAIwtH,YAAY,GAAGxtH,KAAK,CAACC,MAAM,CAACgE,KAAK;MACrC,IAAIupH,YAAY,KAAK,EAAE,EAAE;QACrByzB,aAAa,CAAC/hJ,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACpCw3G,cAAc,CAAC13G,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC5C,CAAC,MAAM;QACH6hJ,aAAa,CAAC/hJ,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACvCy3G,cAAc,CAAC13G,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC/C;MACAm+G,YAAY,CAACilC,QAAQ,GAAG/0B,YAAY;MACpC;MACAkoO,WAAW,GAAGloO,YAAY;IAC9B,CAAC,CAAC;IAEF5W,cAAc,CAACp0G,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC9CoS,KAAK,CAAC/S,IAAI,CAACktG,WAAW,CAAC;MACvBynP,cAAc,CAAC;QACXC,OAAO,EAAEc,UAAU;QACnBrC,SAAS,EAAEsC,YAAY;QACvBd,MAAM,EAAEe,SAAS;QACjBrC,QAAQ,EAAEsC,WAAW;QACrBvhS,UAAU,EAAEwhS,aAAa;QACzBvhS,YAAY,EAAEwhS,eAAe;QAC7BlwS,UAAU,EAAEmwS,aAAa;QACzBxmN,YAAY,EAAEymN,eAAe;QAC7B3oM,UAAU,EAAE4oM,aAAa;QACzB1C,YAAY,EAAE2C,eAAe;QAC7BtlU,MAAM,EAAEulU,SAAS;QACjBlzM,QAAQ,EAAEmzM,WAAW;QACrBp2V,IAAI,EAAEq2V;MACV,CAAC,CAAC;MACFnC,4BAA4B,CAAC,CAAC;MAC9BtuJ,oBAAoB,CAAC0B,oBAAoB,CAACtpF,YAAY,EAAEy2O,qBAAqB,CAAC;IAClF,CAAC,CAAC;EACN;EACA;EACA;EACA,SAASgC,cAAcA,CAACC,MAAM,EAAE;IAC5B,IAAI5wV,IAAI,GAAG4wV,MAAM,CAAC5sV,GAAG,CAAC3D,CAAC,IAAI;MACvB,IAAIxB,KAAK,GAAGwB,CAAC,CAAC8uN,QAAQ;MACtB,IAAIvxN,IAAI,GAAG,GAAGyC,CAAC,CAACgmG,QAAQ,KAAKhmG,CAAC,CAAC+lG,SAAS,EAAE;MAE1C,OAAO;QACHvnG,KAAK;QACLjB;MACJ,CAAC;IACL,CAAC,CAAC;IAEF,IAAIykR,UAAU,CAACvjN,KAAK,EAAE;MAClB7/D,QAAQ,CAAC5E,QAAQ,CAAC4yV,aAAa,EAAEjtV,IAAI,EAAEqiR,UAAU,CAACvjN,KAAK,CAAC;IAC5D,CAAC,MAAM;MACH7/D,QAAQ,CAAC5E,QAAQ,CAAC4yV,aAAa,EAAEjtV,IAAI,CAAC;MACtCqiR,UAAU,CAACvjN,KAAK,GAAG9+D,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;MAChCwjR,UAAU,CAACirE,SAAS,GAAGttV,IAAI,CAAC,CAAC,CAAC,CAACpC,IAAI;IACvC;EACJ;EACA,SAAS6yV,aAAaA,CAACD,KAAK,EAAE;IAC1B,IAAIxwV,IAAI,GAAGwwV,KAAK,CAACxsV,GAAG,CAAC4Q,CAAC,IAAI;MACtB,IAAI/V,KAAK,GAAG+V,CAAC,CAACu6M,QAAQ;MACtB,IAAIvxN,IAAI,GAAG,GAAGgX,CAAC,CAACyxF,QAAQ,KAAKzxF,CAAC,CAACwxF,SAAS,EAAE;MAE1C,OAAO;QACHvnG,KAAK;QACLjB;MACJ,CAAC;IACL,CAAC,CAAC;IAEF,IAAIizV,aAAa,GAAG;MAChBhyV,KAAK,EAAE,GAAG;MACVjB,IAAI,EAAE;IACV,CAAC;IACDoC,IAAI,CAAC49D,OAAO,CAACizR,aAAa,CAAC;IAE3B,IAAIC,aAAa,GAAGN,KAAK,CAAC/nV,MAAM,CAACmM,CAAC,IAAIA,CAAC,CAACu6M,QAAQ,KAAKkzD,UAAU,CAACkrE,IAAI,CAAC;IAErE,IAAIuD,aAAa,CAACv2V,MAAM,GAAG,CAAC,EAAE;MAC1B0E,QAAQ,CAAC5E,QAAQ,CAAC6yV,YAAY,EAAEltV,IAAI,EAAEqiR,UAAU,CAACkrE,IAAI,CAAC;IAC1D,CAAC,MAAM;MACHtuV,QAAQ,CAAC5E,QAAQ,CAAC6yV,YAAY,EAAEltV,IAAI,CAAC;MACrCqiR,UAAU,CAACmrE,QAAQ,GAAG,eAAe;IACzC;EACJ;EACA,SAASyB,gCAAgCA,CAAC1rS,GAAG,EAAE;IAC3C,SAAS+0E,WAAWA,CAAC/0E,GAAG,EAAE;MACtB,IAAIlb,MAAM;QACN0oT,YAAY,GAAG,EAAE;MACrB1oT,MAAM,GAAG1a,IAAI,CAACua,QAAQ,CAClB,wCAAwC,GAAGqb,GAAG,CAACytS,2CACnD,CAAC;MAED,IAAIC,mBAAmB,GAAG,EAAE,CAACznV,KAAK,CAACC,IAAI,CAAC4+B,MAAM,CAAC9d,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;MACtF0mU,mBAAmB,CAACz2V,OAAO,CAAC02V,cAAc,IAAI;QAC1C,IAAIC,SAAS,GAAG,EAAE,CAAC3nV,KAAK,CAACC,IAAI,CAACynV,cAAc,CAAC3mU,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAI6mU,SAAS,GAAG,EAAE,CAAC5nV,KAAK,CAACC,IAAI,CAACynV,cAAc,CAAC3mU,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAIu0C,KAAK,GAAG;UACRqwJ,QAAQ,EAAE,EAAE,CAAC3lN,KAAK,CAACC,IAAI,CAAC0nV,SAAS,CAAC5mU,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F,WAAW;UAClF2hF,SAAS,EAAE,EAAE,CAAC58F,KAAK,CAACC,IAAI,CAAC0nV,SAAS,CAAC5mU,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F,WAAW;UACpF4hF,QAAQ,EAAE,EAAE,CAAC78F,KAAK,CAACC,IAAI,CAAC0nV,SAAS,CAAC5mU,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F,WAAW;UAClFuuC,QAAQ,EAAE,EAAE,CAACxpD,KAAK,CAACC,IAAI,CAAC0nV,SAAS,CAAC5mU,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F;QAC3E,CAAC;QACD,IAAI+rU,KAAK,GAAG,EAAE;QACd,IAAIY,SAAS,KAAK7vV,SAAS,EAAE;UACzB6vV,SAAS,CAAC52V,OAAO,CAAC62V,QAAQ,IAAI;YAC1B,IAAI9D,IAAI,GAAG;cACPp+H,QAAQ,EAAE,EAAE,CAAC3lN,KAAK,CAACC,IAAI,CAAC4nV,QAAQ,CAAC9mU,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F,WAAW;cACjF2hF,SAAS,EAAE,EAAE,CAAC58F,KAAK,CAACC,IAAI,CAAC4nV,QAAQ,CAAC9mU,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F,WAAW;cACnF4hF,QAAQ,EAAE,EAAE,CAAC78F,KAAK,CAACC,IAAI,CAAC4nV,QAAQ,CAAC9mU,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F,WAAW;cACjFuuC,QAAQ,EAAE,EAAE,CAACxpD,KAAK,CAACC,IAAI,CAAC4nV,QAAQ,CAAC9mU,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC9F;YAC1E,CAAC;YACD+rU,KAAK,CAACnoV,IAAI,CAACklV,IAAI,CAAC;UACpB,CAAC,CAAC;QACN;QACA,IAAI+D,YAAY;QAChB,IAAId,KAAK,CAACj2V,MAAM,GAAG,CAAC,EAAE;UAClB+2V,YAAY,GAAG;YACXxyR,KAAK,EAAEA,KAAK;YACZ0xR,KAAK,EAAEA;UACX,CAAC;QACL,CAAC,MAAM;UACHc,YAAY,GAAG;YACXxyR,KAAK,EAAEA,KAAK;YACZ0xR,KAAK,EAAE;UACX,CAAC;QACL;QACAO,YAAY,CAAC1oV,IAAI,CAACipV,YAAY,CAAC;MACnC,CAAC,CAAC;MACF,OAAOP,YAAY;IACvB;IAEApD,aAAa,GAAGr1N,WAAW,CAAC/0E,GAAG,CAAC;IAChC,IAAIguS,YAAY;IAChB,IAAIX,MAAM,GAAG,EAAE;IACf;IACAjD,aAAa,GAAGA,aAAa,CAACllV,MAAM,CAACtI,CAAC,IAAI;MACtC,IAAIA,CAAC,CAAC2+D,KAAK,CAACqwJ,QAAQ,KAAK9jN,CAAC,CAACC,OAAO,CAACmoC,QAAQ,EAAE89S,YAAY,GAAGpxV,CAAC;MAC7D,OAAOA,CAAC,CAAC2+D,KAAK,CAACqwJ,QAAQ,KAAK9jN,CAAC,CAACC,OAAO,CAACmoC,QAAQ;IAClD,CAAC,CAAC;IACFk6S,aAAa,CAAC/vR,OAAO,CAAC2zR,YAAY,CAAC;IACnC;IACA5D,aAAa,CAACnzV,OAAO,CAAC2F,CAAC,IAAI;MACvB,IAAIA,CAAC,KAAKoB,SAAS,EAAE;QACjBqvV,MAAM,CAACvoV,IAAI,CAAClI,CAAC,CAAC2+D,KAAK,CAAC;MACxB;IACJ,CAAC,CAAC;IACF;IACA6xR,cAAc,CAACC,MAAM,CAAC;IACtB,IAAI,CAAClD,yBAAyB,EAAE;MAC5B+C,aAAa,CAAC9C,aAAa,CAAC,CAAC,CAAC,CAAC6C,KAAK,CAAC;IACzC,CAAC,MAAM;MACHC,aAAa,CAAC/C,yBAAyB,CAAC;IAC5C;EACJ;EACA,SAAS5Q,yBAAyBA,CAACv5R,GAAG,EAAE;IACpC,IAAIvjD,IAAI,GAAGujD,GAAG,CAACv/C,GAAG,CAACsX,CAAC,IAAI;MACpB,IAAIzc,KAAK,GAAGyc,CAAC,CAAC6vF,EAAE;MAChB,IAAIvtG,IAAI,GAAG0d,CAAC,CAACg4B,IAAI;MAEjB,OAAO;QACHz0C,KAAK;QACLjB;MACJ,CAAC;IACL,CAAC,CAAC;IAEF,IAAIizV,aAAa,GAAG;MAChBhyV,KAAK,EAAE,GAAG;MACVjB,IAAI,EAAE;IACV,CAAC;IACDoC,IAAI,CAAC49D,OAAO,CAACizR,aAAa,CAAC;IAE3B,IAAIxuE,UAAU,CAACn9Q,QAAQ,EAAE;MACrBjG,QAAQ,CAAC5E,QAAQ,CAACouJ,gBAAgB,EAAEzoJ,IAAI,EAAEqiR,UAAU,CAACn9Q,QAAQ,CAAC;IAClE,CAAC,MAAM;MACHjG,QAAQ,CAAC5E,QAAQ,CAACouJ,gBAAgB,EAAEzoJ,IAAI,CAAC;MACzCqiR,UAAU,CAAC7zN,YAAY,GAAG,eAAe;IAC7C;IAEA,MAAMi9Q,gBAAgB,GAAI,CACtB;MAAEhuU,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,EAC1C;MAAEH,EAAE,EAAE,CAAC;MAAEoB,KAAK,EAAE,MAAM;MAAEjB,IAAI,EAAE;IAAO,CAAC,CACxC;IACF6tU,gBAAgB,CAAC7tQ,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,KAAK;MAAEjB,IAAI,EAAE;IAAM,CAAC,CAAC;IACjEqB,QAAQ,CAAC5E,QAAQ,CAACixU,YAAY,EAAEG,gBAAgB,EAAEppD,UAAU,CAACnoR,IAAI,CAAC;EACtE;EAEA,SAASs3V,yBAAyBA,CAAA,EAAG;IACjCryC,oBAAoB,GAAG9B,oBAAoB,CAACr5S,GAAG,CAACgD,EAAE,IAAI;MAClD,OAAO;QACHpJ,IAAI,EAAE,GAAGoJ,EAAE,CAACkuO,EAAE,KAAKluO,EAAE,CAACiuO,EAAE,EAAE;QAC1Bp2O,KAAK,EAAEmI,EAAE,CAACvJ;MACd,CAAC;IACL,CAAC,CAAC;IACF0hT,oBAAoB,CAACvhP,OAAO,CAAC;MAAEhgE,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,CAAC;IAEzD,IAAIwjR,UAAU,CAACl8K,QAAQ,EAAE;MACrBlnG,QAAQ,CAAC5E,QAAQ,CAACugT,gBAAgB,EAAEuE,oBAAoB,EAAE98B,UAAU,CAACl8K,QAAQ,CAAC;IAClF,CAAC,MAAM;MACHlnG,QAAQ,CAAC5E,QAAQ,CAACugT,gBAAgB,EAAEuE,oBAAoB,CAAC;MACzD98B,UAAU,CAAC54I,YAAY,GAAG,eAAe;IAC7C;EACJ;EAEA,SAASm2K,uBAAuBA,CAAA,EAAG;IAC/B,OAAO,IAAIr0P,OAAO,CAAC,CAACC,OAAO,EAAE78C,MAAM,KAAK;MACpCi4H,aAAa,CAACyC,uBAAuB,CAAC9lF,GAAG,IAAI;QACzC85P,oBAAoB,GAAG95P,GAAG;QAC1BiuS,yBAAyB,CAAC,CAAC;QAC3BhmS,OAAO,CAAC,SAAS,CAAC;MACtB,CAAC,CAAC;IACN,CAAC,CAAC;EACN;EAEA,SAASwjS,0BAA0BA,CAACzrS,GAAG,EAAE;IACrC,IAAIvjD,IAAI,GAAGujD,GAAG,CAACv/C,GAAG,CAACsX,CAAC,IAAI;MACpB,IAAIzc,KAAK,GAAGyc,CAAC,CAACylL,aAAa;MAC3B,IAAInjM,IAAI,GAAG0d,CAAC,CAACgxT,gBAAgB;MAE7B,OAAO;QACHztU,KAAK;QACLjB;MACJ,CAAC;IACL,CAAC,CAAC;IAEF,IAAIizV,aAAa,GAAG;MAChBhyV,KAAK,EAAE,GAAG;MACVjB,IAAI,EAAE;IACV,CAAC;IACDoC,IAAI,CAAC49D,OAAO,CAACizR,aAAa,CAAC;IAE3B,IAAIxuE,UAAU,CAACtmL,QAAQ,EAAE;MACrB98F,QAAQ,CAAC5E,QAAQ,CAAC+hJ,gBAAgB,EAAEp8I,IAAI,EAAEqiR,UAAU,CAACtmL,QAAQ,CAAC;IAClE,CAAC,MAAM;MACH98F,QAAQ,CAAC5E,QAAQ,CAAC+hJ,gBAAgB,EAAEp8I,IAAI,CAAC;MACzCqiR,UAAU,CAACorE,YAAY,GAAG,gBAAgB;IAC9C;EACJ;EACA;EACA,eAAegE,sBAAsBA,CAACzvJ,UAAU,EAAEliJ,UAAU,EAAE;IAC1D;IACA;IACA;IACA,MAAM4xS,kBAAkB,GAAG1kV,KAAK,CAAC1P,KAAK,CAAC;MACnC2P,MAAM,EAAE,cAAc;MACtBxP,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,MAAMk0V,0BAA0B,GAAGt0V,MAAM,CAACC,KAAK,CAAC;MAC5CM,IAAI,EAAE,2BAA2B;MACjCI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAM;QACZ8yV,oBAAoB,CAAC9xS,UAAU,CAAC;MACpC;IACJ,CAAC,CAAC;IACF6xS,0BAA0B,CAAC5zV,KAAK,CAACiS,KAAK,GAAG,MAAM;;IAE/C;IACA;IACA,MAAM6hV,SAAS,GAAG/wV,KAAK,CAACxD,KAAK,CAAC;MAC1B8B,KAAK,EAAE,qBAAqB;MAC5BgC,YAAY,EAAE,OAAO;MACrB3D,EAAE,EAAE,WAAW;MACfqB,QAAQ,EAAElE,KAAK,IAAI;QACf;QACA,MAAMk3V,UAAU,GAAG70V,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC;QACvD,IAAI4xV,UAAU,CAACjzV,KAAK,KAAK,EAAE,EAAE;UACzBwsD,OAAO,CAACvxD,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACrC,CAAC,MAAM;UACHqxD,OAAO,CAACvxD,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QACxC;;QAEA;QACAizV,yBAAyB,CAACpmJ,WAAW,GAAGhsM,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9D;IACJ,CAAC,CAAC;IAEF,MAAMkzV,SAAS,GAAGjxV,KAAK,CAACxD,KAAK,CAAC;MAC1B8B,KAAK,EAAE,qBAAqB;MAC5BgC,YAAY,EAAE,OAAO;MACrBtC,QAAQ,EAAElE,KAAK,IAAI;QACf;QACAoyV,yBAAyB,CAACnmJ,WAAW,GAAGjsM,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9D;IACJ,CAAC,CAAC;IAEF,MAAMmzV,UAAU,GAAGlxV,KAAK,CAACxD,KAAK,CAAC;MAC3B8B,KAAK,EAAE,sBAAsB;MAC7BgC,YAAY,EAAE,OAAO;MACrBtC,QAAQ,EAAElE,KAAK,IAAI;QACf;QACAoyV,yBAAyB,CAAClmJ,YAAY,GAAGlsM,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC/D;IACJ,CAAC,CAAC;IAEF,MAAMkoM,YAAY,GAAGjmM,KAAK,CAACxD,KAAK,CAAC;MAC7B8B,KAAK,EAAE,gBAAgB;MACvBgC,YAAY,EAAE,OAAO;MACrBvC,KAAK,EAAE,yCAAyC;MAChDC,QAAQ,EAAElE,KAAK,IAAI;QACf;QACAoyV,yBAAyB,CAACjmJ,YAAY,GAAGnsM,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC/D;IACJ,CAAC,CAAC;IAEF,MAAMmoM,SAAS,GAAGlmM,KAAK,CAACxD,KAAK,CAAC;MAC1B8B,KAAK,EAAE,aAAa;MACpBgC,YAAY,EAAE,OAAO;MACrBpD,IAAI,EAAE,UAAU;MAChBM,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAElE,KAAK,IAAI;QACf;QACAoyV,yBAAyB,CAAChmJ,SAAS,GAAGpsM,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC5D;IACJ,CAAC,CAAC;;IAEF;IACA;IACA,MAAMwsD,OAAO,GAAGhuD,MAAM,CAACC,KAAK,CAAC;MACzBG,EAAE,EAAE,sBAAsB;MAC1BG,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZghM,oBAAoB,CAACwG,8BAA8B,CAC/CtE,UAAU,EACViwJ,8BACJ,CAAC;QACDjlV,KAAK,CAAC/S,IAAI,CAACy3V,kBAAkB,CAAC;MAClC;IACJ,CAAC,CAAC;IAEF,MAAM/lT,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MAC3BG,EAAE,EAAE,2BAA2B;MAC/BG,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACy3V,kBAAkB,CAAC;MAClC;IACJ,CAAC,CAAC;IAEF,MAAM/gU,MAAM,GAAG,MAAMmvK,oBAAoB,CAACoH,mBAAmB,CAACpnJ,UAAU,CAAC;IACzE,MAAM;MAAEoyS;IAA0B,CAAC,GAAGvhU,MAAM;IAC5Cs9T,eAAe,GAAGiE,yBAAyB;;IAE3C;IACA;IACAR,kBAAkB,CAACh3V,WAAW,CAACi3V,0BAA0B,CAAC;IAC1D,IAAI1D,eAAe,CAAC1zV,MAAM,IAAI,CAAC,EAAEo3V,0BAA0B,CAAC73V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrF03V,kBAAkB,CAACh3V,WAAW,CAACm3V,SAAS,CAAC;IACzCH,kBAAkB,CAACh3V,WAAW,CAACq3V,SAAS,CAAC;IACzCL,kBAAkB,CAACh3V,WAAW,CAACs3V,UAAU,CAAC;IAC1CN,kBAAkB,CAACh3V,WAAW,CAACqsM,YAAY,CAAC;IAC5C2qJ,kBAAkB,CAACh3V,WAAW,CAACssM,SAAS,CAAC;IAEzC,MAAMmrJ,QAAQ,GAAGl1V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9C,MAAMq0T,QAAQ,GAAG50T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9Cq0T,QAAQ,CAAC/3T,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACjC63T,QAAQ,CAACn3T,WAAW,CAAC2wD,OAAO,CAAC;IAC7BA,OAAO,CAACvxD,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACjC63T,QAAQ,CAACn3T,WAAW,CAACixC,SAAS,CAAC;IAC/BwmT,QAAQ,CAACz3V,WAAW,CAACm3T,QAAQ,CAAC;IAC9B6/B,kBAAkB,CAACh3V,WAAW,CAACy3V,QAAQ,CAAC;IAExCnlV,KAAK,CAAC9S,IAAI,CAACw3V,kBAAkB,CAAC;EAClC;EAEA,eAAeE,oBAAoBA,CAAC9xS,UAAU,EAAE;IAC5C,MAAMsyS,SAAS,GAAGn1V,QAAQ,CAACiD,cAAc,CAAC,eAAe,CAAC;IAC1D,MAAMmyV,YAAY,GAAGp1V,QAAQ,CAACiD,cAAc,CAAC,sBAAsB,CAAC;IACpEkyV,SAAS,CAACr0V,KAAK,CAACoK,OAAO,GAAG,MAAM;IAEhC,MAAMmqV,WAAW,GAAGtlV,KAAK,CAAC1P,KAAK,CAAC;MAC5BG,EAAE,EAAE,iBAAiB;MACrB8P,aAAa,EAAEA,CAAA,KAAM;QACjBpD,OAAO,CAACjQ,IAAI,CAAC,CAAC;QACdk4V,SAAS,CAACr0V,KAAK,CAACgR,cAAc,CAAC,SAAS,CAAC;MAC7C;IACJ,CAAC,CAAC;IACF,MAAMwjV,mBAAmB,GAAGt1V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAEzD0wV,mBAAmB,GAAG7wV,MAAM,CAACC,KAAK,CAAC;MAC/BG,EAAE,EAAE,iBAAiB;MACrBG,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACq4V,WAAW,CAAC;QACvBtE,gBAAgB,GAAGA,gBAAgB,CAACvlV,MAAM,CAAC4S,CAAC,IAAIA,CAAC,CAAC;QAClD0yU,WAAW,GAAGC,gBAAgB,CAAC7vU,QAAQ,CAAC,CAAC,CAACqnC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;QAC9DvoD,QAAQ,CAACiD,cAAc,CAAC,WAAW,CAAC,CAACrB,KAAK,GAAGkvV,WAAW;QACxDf,yBAAyB,CAACpmJ,WAAW,GAAGmnJ,WAAW;QACnD,IAAIA,WAAW,IAAI,EAAE,EACjBsE,YAAY,CAACv4V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC,CAAC,KAEvCq4V,YAAY,CAACv4V,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;QAC7CoQ,OAAO,CAACjQ,IAAI,CAAC,CAAC;QACdk4V,SAAS,CAACr0V,KAAK,CAACgR,cAAc,CAAC,SAAS,CAAC;QACzCi/U,gBAAgB,GAAG,EAAE;MACzB;IACJ,CAAC,CAAC;IAEFG,qBAAqB,GAAG9wV,MAAM,CAACC,KAAK,CAAC;MACjCG,EAAE,EAAE,mBAAmB;MACvBG,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAM;QACZkO,KAAK,CAAC/S,IAAI,CAACq4V,WAAW,CAAC;MAC3B;IACJ,CAAC,CAAC;IACFrE,eAAe,CAACzzV,OAAO,CAAC8uB,GAAG,IAAI;MAC3B,MAAMvmB,IAAI,GAAGuvP,kBAAkB,CAACkgG,SAAS,CAAClpU,GAAG,CAAC;MAC9C,MAAMg/B,OAAO,GAAGgqM,kBAAkB,CAACmgG,YAAY,CAACnpU,GAAG,EAAE,IAAI,CAAC;MAC1D,MAAMopU,YAAY,GAAGpgG,kBAAkB,CAACqgG,iBAAiB,CAACrpU,GAAG,CAAC;MAE9D,MAAMspU,gBAAgB,GAAG31V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MACtDo1V,gBAAgB,CAACx4V,SAAS,GAAG,eAAe2I,IAAI,SAAS;MACzD6vV,gBAAgB,CAAC94V,SAAS,CAACE,GAAG,CAAC,qBAAqB,CAAC;MAErD44V,gBAAgB,CAACx1V,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QAC5C,MAAMmiQ,UAAU,GAAGniQ,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC;QAC1D,IAAI+5P,UAAU,EAAE;UACZniQ,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UACrCi0V,gBAAgB,GAAGA,gBAAgB,CAACvlV,MAAM,CAACjJ,CAAC,IAAIA,CAAC,KAAK8pB,GAAG,CAAC2qJ,KAAK,CAAC;QACpE,CAAC,MAAM;UACHz0K,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UAClCg0V,gBAAgB,CAAC3lV,IAAI,CAACihB,GAAG,CAAC2qJ,KAAK,CAAC;QACpC;QACAixJ,kBAAkB,CAAC,CAAC;MACxB,CAAC,CAAC;MAEFqtB,mBAAmB,CAAC73V,WAAW,CAACk4V,gBAAgB,CAAC;IACrD,CAAC,CAAC;IAEFN,WAAW,CAAC53V,WAAW,CAAC63V,mBAAmB,CAAC;IAE5C,MAAMJ,QAAQ,GAAGl1V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9C,MAAMq0T,QAAQ,GAAG50T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9Cq0T,QAAQ,CAAC/3T,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACjC63T,QAAQ,CAACn3T,WAAW,CAACwzV,mBAAmB,CAAC;IACzCA,mBAAmB,CAACp0V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC7C63T,QAAQ,CAACn3T,WAAW,CAACyzV,qBAAqB,CAAC;IAC3CgE,QAAQ,CAACz3V,WAAW,CAACm3T,QAAQ,CAAC;IAC9BygC,WAAW,CAAC53V,WAAW,CAACy3V,QAAQ,CAAC;IAEjCnlV,KAAK,CAAC9S,IAAI,CAACo4V,WAAW,CAAC;EAE3B;EAEA,SAASptB,kBAAkBA,CAAA,EAAG;IAC1B,IAAI8oB,gBAAgB,CAACzzV,MAAM,KAAK,CAAC,EAAE;MAC/B2zV,mBAAmB,CAACp0V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC7C;IACJ;IACAk0V,mBAAmB,CAACp0V,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;EACpD;;EAEA;EACA,SAASk4V,8BAA8BA,CAAC1uS,GAAG,EAAE;IACzCrwB,OAAO,GAAGrO,QAAQ,CAACxZ,CAAC,CAACC,OAAO,CAAC6kD,aAAa,CAAC;IAC3CooM,UAAU,GAAGrlO,OAAO,GAAG,IAAI;IAC3BhB,QAAQ,GAAGwwB,WAAW,CAAC,YAAY;MAC/B,MAAMmwS,mBAAmB,CAACtvS,GAAG,CAAC;IAClC,CAAC,EAAEg1M,UAAU,CAAC;EAClB;EAEA,eAAes6F,mBAAmBA,CAACtvS,GAAG,EAAE;IACpC,MAAMu8I,oBAAoB,CAAC0G,qBAAqB,CAACjjJ,GAAG,EAAEuvS,YAAY,CAAC;EACvE;;EAEA;EACA,SAASA,YAAYA,CAACvvS,GAAG,EAAEygF,gBAAgB,EAAE;IACzC,IAAIzgF,GAAG,CAAC9/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;MACzB;IAAA,CACH,MAAM;MACHq8K,oBAAoB,CAAC4G,0BAA0B,CAAC1iE,gBAAgB,EAAEgpN,yBAAyB,CAAC;MAC5FhnN,aAAa,CAAC9zG,QAAQ,CAAC;MACvB8lO,aAAa,GAAG,KAAK;;MAErB;MACAg1F,yBAAyB,GAAG;QAAEjmJ,YAAY,EAAE;MAA0C,CAAC;IAC3F;EACJ;;EAEA;EACA;EACA,SAAS5wF,kBAAkBA,CAAA,EAAG;IAC1Bi4O,4BAA4B,CAAC,CAAC;IAE9B,IAAI,CAAC/iV,CAAC,CAACC,OAAO,CAAC4uC,6BAA6B,EAAE;MAC1C,IAAIgqD,YAAY,GAAG;QACf7zF,OAAO,EAAE,uBAAuB;QAChCiB,OAAO,EAAE,mBAAmB;QAC5BD,cAAc,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB;MAC7F,CAAC;IACL,CAAC,MAAM;MACH,IAAI6yF,YAAY,GAAG;QACf7zF,OAAO,EAAE,uBAAuB;QAChCiB,OAAO,EAAE,mBAAmB;QAC5BD,cAAc,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,CAAC;QAC1FM,OAAO,EAAE;MACb,CAAC;IACL;IAEAm/F,aAAa,GAAG3gG,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;;IAEzC;IACA,MAAMzwF,OAAO,GAAGq9F,aAAa,CAACxtG,gBAAgB,CAAC,aAAa,CAAC;IAC7DmQ,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9CuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChDuV,OAAO,CAAC,CAAC,CAAC,CAACvV,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAGhDiO,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACo2G,aAAa,CAAC;;IAE3C;IACA3gG,KAAK,CAACqD,iBAAiB,CAACs9F,aAAa,CAAC;EAC1C;EACA,SAAS69O,qBAAqBA,CAACprS,GAAG,EAAE;IAChC,IAAIooR,SAAS,GAAG,CAAC,CAAC;IAClBpoR,GAAG,CAAC/oD,OAAO,CAAC8gB,CAAC,IAAI;MACb,IAAI,CAACqwT,SAAS,CAACrwT,CAAC,CAAC0mL,UAAU,CAAC,EAAE;QAC1B2pI,SAAS,CAACrwT,CAAC,CAAC0mL,UAAU,CAAC,GAAG1mL,CAAC;MAC/B,CAAC,MAAM;QACH,MAAMswT,OAAO,GAAGD,SAAS,CAACrwT,CAAC,CAAC0mL,UAAU,CAAC,CAACv4D,YAAY,CAAC/6B,QAAQ,CAACpzF,CAAC,CAACmuH,YAAY,CAAC;QAC7E,IAAI,CAACmiM,OAAO,EAAE;UACVD,SAAS,CAACrwT,CAAC,CAAC0mL,UAAU,CAAC,CAACv4D,YAAY,IAAI,KAAKnuH,CAAC,CAACmuH,YAAY,EAAE;QACjE;QACAkiM,SAAS,CAACrwT,CAAC,CAAC0mL,UAAU,CAAC,CAAC6pI,QAAQ,IAAI,KAAKvwT,CAAC,CAACuwT,QAAQ,EAAE;MACzD;IACJ,CAAC,CAAC;IAEF,IAAIhuT,IAAI,GAAG9B,MAAM,CAAC8B,IAAI,CAAC8tT,SAAS,CAAC;IACjC,MAAMK,WAAW,GAAG,EAAE;IACtB,IAAInyU,KAAK,GAAG,CAAC;IACb,IAAImG,IAAI,GAAG6d,IAAI,CACVpV,MAAM,CAACuW,CAAC,IAAI;MACT,IAAI+oB,GAAG,GAAG4jS,SAAS,CAAC3sT,CAAC,CAAC;MAEtB,IAAI3T,CAAC,CAACC,OAAO,CAACiuC,wBAAwB,CAACh/C,MAAM,KAAK,CAAC,EAAE;QACjD,IACIwtC,GAAG,CAACyvE,WAAW,KAAK,EAAE,IACtB,CAACnsG,CAAC,CAACC,OAAO,CAACiuC,wBAAwB,CAACm1D,QAAQ,CAAC3mE,GAAG,CAACyvE,WAAW,CAAC15G,WAAW,CAAC,CAAC,CAAC,EAC7E;UACE,OAAO,KAAK;QAChB;MACJ;MAEA,OAAO,IAAI;IACf,CAAC,CAAC,CACDkG,GAAG,CAACpF,GAAG,IAAI;MACR,IAAImpC,GAAG,GAAG4jS,SAAS,CAAC/sU,GAAG,CAAC;MAExB,IAAIqU,KAAK,GAAG80B,GAAG,CAACi6J,UAAU;MAC1B,IAAI98L,QAAQ,GAAG6iC,GAAG,CAACymB,YAAY;MAC/B,IAAIivE,SAAS,GAAG11F,GAAG,CAACgrT,cAAc;MAClC,IAAI/uU,IAAI,GAAG+jB,GAAG,CAAC84J,YAAY,CAACziL,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACzC,IAAIoT,IAAI,GAAG7D,IAAI,CAAC8E,mBAAmB,CAACsV,GAAG,CAAC+4J,YAAY,CAAC;MACrD,IAAI/kG,QAAQ,GAAGh0D,GAAG,CAACukS,gBAAgB;MACnC,IAAI0mB,iBAAiB,GAAGjrT,GAAG,CAAC0hG,YAAY,CAAC5hI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;MAC7D,IAAIokU,QAAQ,GAAGlkS,GAAG,CAACkkS,QAAQ,GAAG,IAAI,GAAG,KAAK;MAC1C,IAAIC,SAAS,GACTnkS,GAAG,CAACokS,mBAAmB,CAACruU,WAAW,CAAC,CAAC,KAAKuN,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC1sC,WAAW,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK;MAC3F,IAAIsuU,aAAa,GAAGrkS,GAAG,CAAC8jS,QAAQ,CAACn9N,QAAQ,CAACrjG,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK;MAC1E,IAAI6hS,QAAQ;MAEZ,IAAI,CAACH,SAAS,IAAI,CAACE,aAAa,EAAE;QAC9BC,QAAQ,GAAG,IAAI;MACnB;MAEA,IAAIhqD,UAAU,CAACnoR,IAAI,IAAI,MAAM,IAAImyU,QAAQ,EAAE;QACvCL,WAAW,CAAC3jU,IAAI,CAACxO,KAAK,CAAC;MAC3B,CAAC,MACI,IAAIwoR,UAAU,CAACnoR,IAAI,IAAI,QAAQ,IAAI,CAACmyU,QAAQ,EAAE;QAC/CL,WAAW,CAAC3jU,IAAI,CAACxO,KAAK,CAAC;MAC3B;MACAA,KAAK,GAAGA,KAAK,GAAG,CAAC;MACjB,IAAIo5V,gBAAgB,GAAGh2V,QAAQ,CAACO,aAAa,CAAC,QAAQ,CAAC;MACvDy1V,gBAAgB,CAACn5V,SAAS,CAACE,GAAG,CAAC,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;MACzEi5V,gBAAgB,CAACxuU,WAAW,GAAG,OAAO;MACtCwuU,gBAAgB,CAACl1V,KAAK,CAAC25B,MAAM,GAAG,MAAM;MAEtC,IAAI,CAACrsB,CAAC,CAACC,OAAO,CAAC4uC,6BAA6B,EAAE;QAC1C,OAAO;UACHz8C,EAAE,EAAEwV,KAAK;UACTV,MAAM,EAAE,CAACrN,QAAQ,EAAEu4H,SAAS,EAAEz5G,IAAI,EAAEwN,IAAI,EAAEuqE,QAAQ,EAAEi3P,iBAAiB,CAAC;UACtEt0V,UAAU,EAAE,CAAC;YAAEE,GAAG,EAAE,aAAa;YAAEC,KAAK,EAAEwtU;UAAS,CAAC,CAAC;UACrDj6T,OAAO,EAAE,MAAMxX,KAAK,IAAI;YACpB,MAAMklM,oBAAoB,CAACuG,wBAAwB,CAAC;cAChDx8J,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;cACtBquJ,UAAU,EAAE/uL,KAAK;cACjBs2C,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B;YACtB,CAAC,CAAC;YACFr+B,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;YACvBy3S,cAAc,CAACpvU,IAAI,CAACvC,KAAK,CAACC,MAAM,CAAC4C,EAAE,CAAC;UACxC;QACJ,CAAC;MACL,CAAC,MAAM;QACH,OAAO;UACHA,EAAE,EAAEwV,KAAK;UACTV,MAAM,EAAE,CAACrN,QAAQ,EAAEu4H,SAAS,EAAEz5G,IAAI,EAAEwN,IAAI,EAAEuqE,QAAQ,EAAEi3P,iBAAiB,CAAC;UACtEt0V,UAAU,EAAE,CAAC;YAAEE,GAAG,EAAE,aAAa;YAAEC,KAAK,EAAEwtU;UAAS,CAAC,CAAC;UACrD16T,OAAO,EAAEshV,gBAAgB,CAACn8Q,SAAS;UACnCpkE,eAAe,EAAElT,CAAC,IAAI;YAClBA,CAAC,CAAC8I,eAAe,CAAC,CAAC;YACnB,IAAIw9S,WAAW,GAAGtmT,CAAC,CAAC3E,MAAM,CAACkqB,UAAU,CAACjrB,SAAS,CAAC8N,QAAQ,CAAC,YAAY,CAAC;YACtE,IAAI,CAACk+S,WAAW,EAAE;YAElB2rC,sBAAsB,CAAC1pT,GAAG,CAACi6J,UAAU,EAAEj6J,GAAG,CAAC+X,UAAU,CAAC;UAC1D,CAAC;UACD1tC,OAAO,EAAE,MAAMxX,KAAK,IAAI;YACpB,MAAMklM,oBAAoB,CAACuG,wBAAwB,CAAC;cAChDx8J,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;cACtBquJ,UAAU,EAAE/uL,KAAK;cACjBs2C,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACk/B;YACtB,CAAC,CAAC;YACFr+B,GAAG,CAAC2oB,iBAAiB,CAAC,CAAC;YACvBy3S,cAAc,CAACpvU,IAAI,CAACvC,KAAK,CAACC,MAAM,CAAC4C,EAAE,CAAC;UACxC;QACJ,CAAC;MACL;IACJ,CAAC,CAAC;IAEN,KAAK,IAAI0H,CAAC,GAAG6mU,WAAW,CAACzxU,MAAM,GAAG,CAAC,EAAE4K,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAC5CnF,IAAI,CAACqpB,MAAM,CAAC2iT,WAAW,CAAC7mU,CAAC,CAAC,EAAE,CAAC,CAAC;IAElCnF,IAAI,CAACsU,IAAI,CAAC,UAAUjU,CAAC,EAAEuU,CAAC,EAAE;MACtB,IAAIs+U,OAAO,GAAGvlU,IAAI,CAACkY,eAAe,CAACxlC,CAAC,CAACkS,MAAM,CAAC,CAAC,CAAC,CAAC;MAC/C,IAAI4gV,OAAO,GAAGxlU,IAAI,CAACkY,eAAe,CAACjxB,CAAC,CAACrC,MAAM,CAAC,CAAC,CAAC,CAAC;MAC/C2gV,OAAO,GAAG,IAAIl/U,IAAI,CAACk/U,OAAO,CAAC;MAC3BC,OAAO,GAAG,IAAIn/U,IAAI,CAACm/U,OAAO,CAAC;MAC3B,IAAIC,UAAU,GAAGF,OAAO,CAAC7sU,OAAO,CAAC,CAAC;MAClC,IAAIgtU,UAAU,GAAGF,OAAO,CAAC9sU,OAAO,CAAC,CAAC;MAElC,IAAIitU,OAAO,GAAGjzV,CAAC,CAACkS,MAAM,CAAC,CAAC,CAAC;MACzB,IAAIghV,OAAO,GAAG3+U,CAAC,CAACrC,MAAM,CAAC,CAAC,CAAC;MACzB+gV,OAAO,GAAG3lU,IAAI,CAACgF,iBAAiB,CAAC2gU,OAAO,CAAC;MACzCC,OAAO,GAAG5lU,IAAI,CAACgF,iBAAiB,CAAC4gU,OAAO,CAAC;MACzCD,OAAO,GAAGv/U,UAAU,CAAC,GAAG8Q,QAAQ,CAACyuU,OAAO,CAACl1U,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIyG,QAAQ,CAACyuU,OAAO,CAACl1U,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;MAC7Fm1U,OAAO,GAAGx/U,UAAU,CAAC,GAAG8Q,QAAQ,CAAC0uU,OAAO,CAACn1U,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIyG,QAAQ,CAAC0uU,OAAO,CAACn1U,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;MAE7F,IAAIg1U,UAAU,KAAKC,UAAU,EAAE;QAC3B,OAAOC,OAAO,GAAGC,OAAO;MAC5B;MAEA,OAAOH,UAAU,GAAGC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC;IAC3C,CAAC,CAAC;IAEFljV,KAAK,CAAC9V,QAAQ,CAACy2G,aAAa,EAAE9wG,IAAI,CAAC;EACvC;EAEA,SAAS7C,IAAIA,CAAA,EAAG;IACZ8yG,+BAA+B,CAAC,2BAA2B,CAAC;IAC5D9jG,GAAG,CAACC,iBAAiB,CAAC,CAAC;IAEvB8rG,YAAY,CAAC4pF,YAAY,GAAGz2L,CAAC,CAACC,OAAO,CAACmoC,QAAQ;IAC9CykE,YAAY,CAACruE,KAAK,GAAGx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;IACpCukE,YAAY,CAAC41O,YAAY,GAAGziV,CAAC,CAACC,OAAO,CAACsuC,4BAA4B;IAClEs+D,YAAY,CAACptF,MAAM,GAAGqkU,cAAc,CAAC,CAAC;IACtCj3O,YAAY,CAACilC,QAAQ,GAAG+xM,gBAAgB,CAAC,CAAC;IAE1CG,cAAc,CAAC,CAAC;;IAEhB;IACAtmP,OAAO,CAACkzJ,mBAAmB,CAAC,CAAC;IAE7Bn8D,oBAAoB,CAAC0B,oBAAoB,CAACtpF,YAAY,EAAE,UAAU/S,OAAO,EAAE;MACvEgR,kBAAkB,CAAC,CAAC;MACpBw4O,qBAAqB,CAACxpP,OAAO,CAAC;IAClC,CAAC,CAAC;EACN;EAEA,OAAO;IACHhoG;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;ACjuCJ,MAAM+yM,qBAAqB,GAAG,CAAC,MAAM;EAEnC;EACA,IAAIzE,gBAAgB;EACpB,IAAI2/G,cAAc;EAClB,IAAIC,YAAY;;EAEhB;EACF,IAAIqG,WAAW;EACf,IAAI7F,iBAAiB;EACrB,IAAIH,aAAa;EACjB,IAAI8nC,aAAa;EACjB,IAAI/nC,aAAa;;EAEjB;EACA,IAAI3rQ,UAAU;EACd;EACA,IAAI85J,mBAAmB;EACvB,IAAItuF,WAAW;EACf,IAAIh4F,SAAS;EACb,IAAIf,OAAO;EACX,IAAIynL,aAAa;EACjB,IAAIC,WAAW;EACf,IAAIF,eAAe;;EAEnB;EACA,IAAI5xF,aAAa;EACjB,IAAI5+D,MAAM;EACV,IAAIgwE,SAAS;EACb,IAAIy1E,eAAe;EAEnB,IAAIykJ,YAAY;EAEhB,IAAIC,kBAAkB;EAEpB,eAAev2V,IAAIA,CAACw2V,qBAAqB,EAAEC,eAAe,EAAEjmJ,yBAAyB,EAAEC,+BAA+B,EAAEimJ,mBAAmB,EAAEC,mBAAmB,EAA2B;IAAA,IAAzBC,WAAW,GAAAvvV,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,SAAS;IAEvLivV,YAAY,GAAG,KAAK;IAEpBtnV,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBnP,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC9I,OAAO,CAACgF,CAAC,IAAIA,CAAC,CAACzF,MAAM,CAAC,CAAC,CAAC;IAEtE+lD,UAAU,GAAG8zS,eAAe,CAACn2V,EAAE;IAC/Bi2V,kBAAkB,GAAGG,mBAAmB;IAExC,IAAIF,qBAAqB,IAAI53U,MAAM,CAAC8B,IAAI,CAAC81U,qBAAqB,CAAC,CAACp5V,MAAM,KAAK,CAAC,EAAE;MAC9E;MACA;MACAq/M,mBAAmB,GAAG+5I,qBAAqB,CAAC,CAAC,CAAC,CAAC/5I,mBAAmB;MAClEtuF,WAAW,GAAGqoO,qBAAqB,CAAC,CAAC,CAAC,CAACroO,WAAW,CAAC,CAAG;MACtDh4F,SAAS,GAAGqgU,qBAAqB,CAAC,CAAC,CAAC,CAACrgU,SAAS,CAAC,CAAE;MACjDf,OAAO,GAAGohU,qBAAqB,CAAC,CAAC,CAAC,CAACphU,OAAO,CAAC,CAAC;MAC5CwnL,eAAe,GAAG45I,qBAAqB,CAAC,CAAC,CAAC,CAAC55I,eAAe,CAAC,CAAC;MAC5DC,aAAa,GAAG25I,qBAAqB,CAAC,CAAC,CAAC,CAAC35I,aAAa,CAAC,CAAC;MACxDC,WAAW,GAAG05I,qBAAqB,CAAC,CAAC,CAAC,CAAC15I,WAAW,CAAC,CAAC;MACpD1wJ,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM,CAAC,CAAE;IAE3B,CAAC,MAAM;MACN;MACA;MACAovK,mBAAmB,GAAG,GAAG;MACzBtuF,WAAW,GAAGwoO,mBAAmB;MACjC;MACAxgU,SAAS,GAAG,EAAE;MACdf,OAAO,GAAG,EAAE;MACZwnL,eAAe,GAAG,EAAE;MACpBC,aAAa,GAAG,EAAE;MAClBC,WAAW,GAAG,EAAE;MAChB1wJ,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzBwkK,eAAe,GAAGpB,+BAA+B,CAAC,CAAE;IAErD;IAEA,IAAImmJ,WAAW,KAAK,SAAS,IAAK,CAAC1oV,CAAC,CAACC,OAAO,CAACwyC,SAAS,EAAE;MACvD21S,YAAY,GAAG,IAAI;IACpB;IAEA,IAAIM,WAAW,KAAK,UAAU,IAAK,CAAC1oV,CAAC,CAACC,OAAO,CAACuyC,SAAS,EAAE;MACxD41S,YAAY,GAAG,IAAI;IACpB;IAEA,IAAKlqS,MAAM,KAAKsqS,mBAAmB,EAAG;MACrCJ,YAAY,GAAG,IAAI;IACpB;IAEDhoJ,gBAAgB,GAAG3qM,KAAK,CAACxD,KAAK,CAAC;MAChCU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,cAAc;MACrBrB,KAAK,EAAE,WAAW;MACfc,KAAK,EAAE8uB,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACtD;MACA/e,QAAQ,EAAE;MACb;IACC,CAAC,CAAC;IAEF+rT,cAAc,GAAGtqT,KAAK,CAACxD,KAAK,CAAC;MACzB8B,KAAK,EAAE,YAAY;MACnBpB,IAAI,EAAE,MAAM;MACZa,KAAK,EAAEy0B,SAAS;MAChBj0B,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEJpoC,YAAY,GAAGvqT,KAAK,CAACxD,KAAK,CAAC;MACvB8B,KAAK,EAAE,UAAU;MACjBpB,IAAI,EAAE,MAAM;MACZa,KAAK,EAAE0zB,OAAO;MACdlzB,QAAQ,EAAEo0V;MACV;MACD;IACD,CAAC,CAAC;IAEFO,oBAAoB,GAAGlzV,KAAK,CAACxD,KAAK,CAAC;MACjC8B,KAAK,EAAE,uBAAuB;MAC9BpB,IAAI,EAAE,QAAQ;MACdD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEk7M,eAAe,KAAK,GAAG,IAAIA,eAAe,KAAK,MAAM,GAAG,EAAE,GAAGA,eAAe;MACnF16M,QAAQ,EAAEo0V,YAAY;MACtB/0V,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC;IACzC,CAAC,CAAC;IAEJo1V,kBAAkB,GAAGnzV,KAAK,CAACxD,KAAK,CAAC;MAC/B8B,KAAK,EAAE,4BAA4B;MACnCP,KAAK,EAAEm7M,aAAa;MACpBh8M,IAAI,EAAE,UAAU;MAChBM,UAAU,EAAE,UAAU;MACtBe,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEFS,gBAAgB,GAAGpzV,KAAK,CAACxD,KAAK,CAAC;MAC7B8B,KAAK,EAAE,0BAA0B;MACjCP,KAAK,EAAEo7M,WAAW;MAClBj8M,IAAI,EAAE,UAAU;MAChBM,UAAU,EAAE,UAAU;MACtBe,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEF/hC,WAAW,GAAGr0T,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,MAAM;MACZY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBmrH,mBAAmB,CAAC,CAAC;QACrB,IAAIza,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClE,IAAKksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAG;UAC5B45V,cAAc,CAAC,MAAM,CAAC;QACxB;MACF;IACF,CAAC,CAAC;IACFtoC,iBAAiB,GAAGxuT,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,YAAY;MAClBG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACXY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBmrH,mBAAmB,CAAC,CAAC;QACrB,IAAIza,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClE,IAAKksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,EAAG;UAC5B45V,cAAc,CAAC,YAAY,CAAC;QAC9B;MACF;IACF,CAAC,CAAC;IACFX,aAAa,GAAGn2V,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACb;MACEoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACrBs1V,cAAc,CAAC,CAAC;MACjB;IACF,CAAC,CAAC;IACF3oC,aAAa,GAAGpuT,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,QAAQ;MACf;MACCoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB;QACAysJ,kBAAkB,CAACquD,mBAAmB,CAAC;MACzC;IACF,CAAC,CAAC;IACF8xG,aAAa,GAAGruT,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,UAAU;MAChBN,IAAI,EAAE,OAAO;MACbY,UAAU,EAAE,CAAC,gBAAgB,CAAC;MAC9BQ,QAAQ,EAAE,MAAAA,CAAA,KAAa;QACrBpC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;IAEFnpE,WAAW,CAAC,CAAC;IAEb,IAAIiyN,UAAU,GAAG/9O,iBAAiB,CAACs9O,eAAe,CAAC;IAEjD,IAAI1vU,SAAS,GAAGjnB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0mB,SAAS,CAACpqB,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACvC,IAAI60I,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC,MAAM8T,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAAClX,SAAS,GAAG,8BAA8B;IAClDkX,OAAO,CAACxX,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAE1CkqB,SAAS,CAACxpB,WAAW,CAAC25V,UAAU,CAAC;IAClC;IACAnwU,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAC7B3qH,SAAS,CAACxpB,WAAW,CAAC4W,OAAO,CAAC;IAC9B4S,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAE7B,MAAMylN,eAAe,GAAGr3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD82V,eAAe,CAACx6V,SAAS,CAACE,GAAG,CAAC,2CAA2C,CAAC;IAC1Es6V,eAAe,CAAC55V,WAAW,CAAC+wM,gBAAgB,CAAC;IAC7C6oJ,eAAe,CAAC55V,WAAW,CAAC0wT,cAAc,CAAC;IAC3CkpC,eAAe,CAAC55V,WAAW,CAAC2wT,YAAY,CAAC;IACzCipC,eAAe,CAAC55V,WAAW,CAACs5V,oBAAoB,CAAC;IAEjD9vU,SAAS,CAACxpB,WAAW,CAAC45V,eAAe,CAAC;IAEpCpwU,SAAS,CAACxpB,WAAW,CAACu5V,kBAAkB,CAAC;IACzC/vU,SAAS,CAACxpB,WAAW,CAACw5V,gBAAgB,CAAC;IAEvC,IAAIK,eAAe,GAAGt3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnD+2V,eAAe,CAACz6V,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAEhD,IAAIw6V,aAAa,GAAGv3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDg3V,aAAa,CAAC16V,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAE5Cw6V,aAAa,CAACp6V,SAAS,GAAG,yGAAyG;IACnIm6V,eAAe,CAAC75V,WAAW,CAAC85V,aAAa,CAAC;IAE1C,IAAIhrT,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAC/B4/M,mBAAmB,IAAI,GAAG,GAAIpwK,OAAO,CAAC9uC,WAAW,CAACg3T,WAAW,CAAC,GAAIloR,OAAO,CAAC9uC,WAAW,CAAC84V,aAAa,CAAC;IACpG55I,mBAAmB,IAAI,GAAG,GAAIpwK,OAAO,CAAC9uC,WAAW,CAACmxT,iBAAiB,CAAC,GAAGriR,OAAO,CAAC9uC,WAAW,CAAC+wT,aAAa,CAAC;IAG1G,IAAIoG,QAAQ,GAAG50T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Cq0T,QAAQ,CAAC/3T,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACjC63T,QAAQ,CAACn3T,WAAW,CAACgxT,aAAa,CAAC;IAEnC,IAAI+oC,MAAM,GAAGx3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1Ci3V,MAAM,CAAC36V,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC7By6V,MAAM,CAAC/5V,WAAW,CAAC8uC,OAAO,CAAC;IAC3BirT,MAAM,CAAC/5V,WAAW,CAACm3T,QAAQ,CAAC;IAE7B,IAAItoQ,MAAM,KAAKmqS,kBAAkB,EAAEe,MAAM,CAAC/5V,WAAW,CAAC65V,eAAe,CAAC;IAEtErwU,SAAS,CAACxpB,WAAW,CAAC+5V,MAAM,CAAC;IAE/BtoV,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACwpB,SAAS,CAAC;IAEvC/X,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;;IAEtB;IACAm2F,mBAAmB,CAAC,CAAC;EACvB;EAEA,SAASA,mBAAmBA,CAAA,EAAG;IAE7B,IAAIyqO,iBAAiB,GAAGV,oBAAoB,CAAC92V,aAAa,CAAC,OAAO,CAAC;IAEnE,IAAIw3V,iBAAiB,CAAC71V,KAAK,KAAK,EAAE,IAAI61V,iBAAiB,CAAC71V,KAAK,KAAK,CAAC,IAAI61V,iBAAiB,CAAC71V,KAAK,IAAI,CAAC,EAAE;MACnGm1V,oBAAoB,CAACl6V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC7C,CAAC,MAAM;MACLg6V,oBAAoB,CAACl6V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAChD;IAEA,IAAI46V,aAAa,GAAGV,kBAAkB,CAAC/2V,aAAa,CAAC,UAAU,CAAC;IAEhE,IAAIy3V,aAAa,CAAC91V,KAAK,KAAK,EAAE,EAAE;MAC9Bo1V,kBAAkB,CAACn6V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC3C,CAAC,MAAM;MACLi6V,kBAAkB,CAACn6V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC9C;IAEA,IAAI66V,WAAW,GAAGV,gBAAgB,CAACh3V,aAAa,CAAC,UAAU,CAAC;IAE5D,IAAI03V,WAAW,CAAC/1V,KAAK,KAAK,EAAE,EAAE;MAC5Bq1V,gBAAgB,CAACp6V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACzC,CAAC,MAAM;MACLk6V,gBAAgB,CAACp6V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC5C;IAEA86V,qBAAqB,CAAC,CAAC;IACvBC,mBAAmB,CAAC,CAAC;IACrBC,iBAAiB,CAAC,CAAC;IACnB5uM,YAAY,CAAC,CAAC;EAChB;EAEA,SAAS0uM,qBAAqBA,CAAA,EAAG;IAE/B,IAAI9d,SAAS,GAAG,IAAI/iU,IAAI,CAAC,CAAC;IAC1B,IAAIghV,aAAa,GAAG,IAAIhhV,IAAI,CAACs3G,WAAW,CAAC;IAEzC,IAAI2pO,YAAY,GAAGvqU,KAAK,CAACiF,QAAQ,CAACqlU,aAAa,EAAEje,SAAS,CAAC;IAE3D,IAAI,CAACke,YAAY,EAAE;MACjBxpJ,gBAAgB,CAAC3xM,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACzC,CAAC,MAAM;MACLyxM,gBAAgB,CAAC3xM,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC5C;EAEF;EAEA,SAASosJ,YAAYA,CAAA,EAAG;IACtB,IAAI32C,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAKksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,IAAKk5V,YAAY,EAAE;MAC1C/hC,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3Cw5V,aAAa,CAAC15V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,MAAM;MACL03T,WAAW,CAAC53T,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACxC8xT,iBAAiB,CAAC/xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC9Cy5V,aAAa,CAAC15V,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC5C;IAEA,IAAKwvD,MAAM,KAAKmqS,kBAAkB,IAAK,CAACroV,CAAC,CAACC,OAAO,CAACsyC,SAAS,EAAE;MAC3D6tQ,aAAa,CAAC3xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,MAAM;MACLyxT,aAAa,CAAC3xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC5C;EAEJ;EAEF,SAASg7V,iBAAiBA,CAAA,EAAG;IAE3B,IAAIl/H,QAAQ,GAAGw1F,YAAY,CAACnuT,aAAa,CAAC,OAAO,CAAC;IAClD,IAAIgvB,UAAU,GAAGyB,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACrCytT,kBAAkB,GAAGvnU,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpE,IAAI82U,kBAAkB,KAAKhpU,UAAU,IAAIipU,oBAAoB,CAACt/H,QAAQ,CAACh3N,KAAK,CAAC,EAC7E;MACEwsT,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACnC;IACF,CAAC,MAAM;MACLqxT,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACxC;IAEA,IAAIq7V,mBAAmB,GAAG1/H,qBAAqB,CAAC,UAAU,CAAC;IAE3D,IAAI0/H,mBAAmB,EAAE;MACvB/pC,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAExC,CAAC,MAAM;MACLsxT,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACnC;IACF;IAEA,IAAIq7V,cAAc,GAAG1nU,IAAI,CAACkb,YAAY,CAACgtL,QAAQ,CAACh3N,KAAK,CAAC;IAEtD,IAAIw2V,cAAc,EAAE;MAClBhqC,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAExC,CAAC,MAAM;MACLsxT,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACnC;IACF;EACF;EAEA,SAAS86V,mBAAmBA,CAAA,EAAG;IAE7B,IAAIl/H,UAAU,GAAGw1F,cAAc,CAACluT,aAAa,CAAC,OAAO,CAAC;IACtD,IAAIgvB,UAAU,GAAGyB,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACrCytT,kBAAkB,GAAGvnU,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpE,IAAI82U,kBAAkB,KAAKhpU,UAAU,IAAIipU,oBAAoB,CAACv/H,UAAU,CAAC/2N,KAAK,CAAC,EAC/E;MACEusT,cAAc,CAACtxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACrC;IACF,CAAC,MAAM;MACLoxT,cAAc,CAACtxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C;IAEA,IAAIu7V,gBAAgB,GAAG3nU,IAAI,CAACkb,YAAY,CAAC+sL,UAAU,CAAC/2N,KAAK,CAAC;IAC1D,IAAIy2V,gBAAgB,EAAE;MACpBlqC,cAAc,CAACtxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACLqxT,cAAc,CAACtxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACrC;IACF;EAEF;EAEA,SAASm7V,oBAAoBA,CAACI,WAAW,EAAE;IACzC,IAAIC,OAAO,GAAG,IAAIxhV,IAAI,CAAC,CAAC;IACxB,IAAIyhV,OAAO,GAAGD,OAAO,CAACh1U,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,IAAIg1U,OAAO,CAACh1U,QAAQ,CAAC,CAAC,EAAE,GAAGg1U,OAAO,CAACh1U,QAAQ,CAAC,CAAC;IACvF,IAAIk1U,SAAS,GACXF,OAAO,CAAC/pU,UAAU,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI+pU,OAAO,CAAC/pU,UAAU,CAAC,CAAC,EAAE,GAAG+pU,OAAO,CAAC/pU,UAAU,CAAC,CAAC;IACjF,OACEzX,IAAI,CAACC,KAAK,CAAC,cAAcshV,WAAW,EAAE,CAAC,GACvCvhV,IAAI,CAACC,KAAK,CAAC,cAAcwhV,OAAO,IAAIC,SAAS,EAAE,CAAC;EAEpD;EAGA,SAAShgI,qBAAqBA,CAAC7sL,YAAY,EAAE;IAC3C,IAAI+sL,UAAU,GAAGw1F,cAAc,CAACluT,aAAa,CAAC,OAAO,CAAC;IACtD,IAAI24N,QAAQ,GAAGw1F,YAAY,CAACnuT,aAAa,CAAC,OAAO,CAAC;IAClD,IAAIqrJ,SAAS,GAAGkjD,gBAAgB,CAACvuM,aAAa,CAAC,OAAO,CAAC;IACvD,IAAIo2B,SAAS,GAAGsiM,UAAU,CAAC/2N,KAAK;IAChC,IAAI0zB,OAAO,GAAGsjM,QAAQ,CAACh3N,KAAK;IAC5B,IAAImxB,WAAW,GAAGrC,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACtC,IAAIw+F,WAAW,GAAGt4G,IAAI,CAACga,cAAc,CAAC,CAAC;IAEvC,IAAIkB,YAAY,KAAK,YAAY,EAAE;MACjC,IAAI0/G,SAAS,CAAC1pJ,KAAK,KAAKmxB,WAAW,EAAE;QACnC,IAAIsD,SAAS,GAAG2yG,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC;MAC7C;MAEA,IAAI3yG,SAAS,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC;MACpC,IAAIA,SAAS,KAAK,EAAE,IAAIf,OAAO,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC;IACvD,CAAC,MAAM;MACL;MACA,IAAIg2H,SAAS,CAAC1pJ,KAAK,KAAKmxB,WAAW,EAAE;QACnC,IAAIuC,OAAO,GAAG0zG,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC;MAC3C;MAEA,IAAI1zG,OAAO,KAAK,EAAE,IAAIA,OAAO,KAAK,OAAO,EAAE,OAAO,KAAK,CAAC,CAAC;IAC3D;IAEA,OAAOe,SAAS,IAAIf,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;EAC9C;EAEE,SAAS6vG,WAAWA,CAAA,EAAG;IAErBgpL,cAAc,CAAChuT,gBAAgB,CAAC,UAAU,EAAExC,KAAK,IAAI;MACnD04B,SAAS,GAAG14B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9Bi2V,mBAAmB,CAAC,CAAC;MACrBC,iBAAiB,CAAC,CAAC;MACnB5uM,YAAY,CAAC,CAAC;IAChB,CAAC,CAAC;IAEFklK,YAAY,CAACjuT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC7C23B,OAAO,GAAG33B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC5Bi2V,mBAAmB,CAAC,CAAC;MACtBC,iBAAiB,CAAC,CAAC;MAClB5uM,YAAY,CAAC,CAAC;IAClB,CAAC,CAAC;IAEFslD,gBAAgB,CAACruM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD0wH,WAAW,GAAG1wH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChCg2V,qBAAqB,CAAC,CAAC;MACvBC,mBAAmB,CAAC,CAAC;MACrBC,iBAAiB,CAAC,CAAC;MACnB5uM,YAAY,CAAC,CAAC;IAEhB,CAAC,CAAC;IACFslD,gBAAgB,CAACruM,gBAAgB,CAAC,SAAS,EAAExC,KAAK,IAAI;MACpDA,KAAK,CAACyH,cAAc,CAAC,CAAC;MACtBzH,KAAK,CAAC0N,eAAe,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF0rV,oBAAoB,CAAC52V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACtDm/M,eAAe,GAAGn/M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACpCorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF+pO,oBAAoB,CAAC52V,gBAAgB,CAAC,UAAU,EAAExC,KAAK,IAAI;MACzDm/M,eAAe,GAAGn/M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACpC,IAAIjE,KAAK,CAACgE,GAAG,KAAK,GAAG,IAAIhE,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC4kB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;QAC/D;QACA7oB,KAAK,CAACyH,cAAc,CAAC,CAAC;QACtB;MACF;MACE,IAAIzH,KAAK,CAAC0oB,OAAO,GAAG,EAAE,IAAI1oB,KAAK,CAAC0oB,OAAO,GAAG,EAAE,EAAE;QAC5C1oB,KAAK,CAACyH,cAAc,CAAC,CAAC;QACtB;MACJ;IACF,CAAC,CAAC;IAEF4xV,kBAAkB,CAAC72V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACpDo/M,aAAa,GAAGp/M,KAAK,CAACC,MAAM,CAACgE,KAAK;MAClCorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFiqO,gBAAgB,CAAC92V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAClDq/M,WAAW,GAAGr/M,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChCorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF4hM,iBAAiB,CAACzuT,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACtD;MACGixT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3C03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,CAAC;IAEA03T,WAAW,CAACt0T,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAChD;MACGixT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3C03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,CAAC;EAGF;;EAEC;EACC,SAASs8G,iBAAiBA,CAACnQ,QAAQ,EAAE;IAEnC,MAAM6nC,WAAW,GAAI/wI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClD,IAAIqxI,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC2oG,QAAQ,CAACoQ,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAE/C,MAAMuF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEtCsF,IAAI,CAAC5E,WAAW,CAACyrG,QAAQ,CAACoQ,IAAI,CAAC;IAE7By3B,WAAW,CAACtzI,WAAW,CAAC4E,IAAI,CAAC;IAC7B0uI,WAAW,CAACtzI,WAAW,CAACm0I,MAAM,CAAC;IAC/B;;IAEA,OAAOb,WAAW;EACpB;EAEA,SAASomN,cAAcA,CAAA,EAAG;IACxB,IAAIp0V,IAAI,GAAG;MACT8/C,UAAU;MACV85J,mBAAmB;MACnBtuF,WAAW,EAAE39F,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5DkV,SAAS;MACTf,OAAO;MACPwnL,eAAe;MACfC,aAAa;MACbC,WAAW;MACX1wJ;IACF,CAAC;IAEDikH,OAAO,CAACssC,8BAA8B,CAAC95M,IAAI,EAAE,UAASmlG,OAAO,EAAE;MAC7D,IAAIA,OAAO,CAACuJ,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC3B;MACJ,CAAC,MAAM;QAEL7gG,cAAc,CAAC3T,IAAI,CAAC,CAAC;QACrBirB,UAAU,CAAC,YAAW;UACpBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC;MAEV;IACF,CAAC,CAAC;EACJ;EAEA,SAAS4oJ,cAAcA,CAACwB,QAAQ,EAAE;IAChC,IAAI31V,IAAI,GAAG;MACT8/C,UAAU;MACVwrE,WAAW,EAAE39F,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5DkV,SAAS;MACTf,OAAO;MACPwnL,eAAe;MACfC,aAAa;MACbC,WAAW;MACX1wJ,MAAM;MACNylJ;IACF,CAAC;IAEDxhC,OAAO,CAAC2sC,8BAA8B,CAACn6M,IAAI,EAAE,UAASmlG,OAAO,EAAE;MAC7D,IAAIA,OAAO,CAACuJ,QAAQ,CAAC,OAAO,CAAC,EAAE;QACzB;MACN,CAAC,MAAM;QAEL7gG,cAAc,CAAC3T,IAAI,CAAC,CAAC;QACrB,IAAIy7V,QAAQ,IAAI,YAAY,EAAE;UAC5BxwU,UAAU,CAAC,YAAW;YACpBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;YACrBkQ,OAAO,CAACjQ,IAAI,CAAC,CAAC;YACdwC,GAAG,CAAC6zM,sBAAsB,CAACzwJ,UAAU,EAAE,UAAU,CAAC;UACpD,CAAC,EAAE,IAAI,CAAC;QACV,CAAC,MAAM;UAAG;UACR36B,UAAU,CAAC,YAAW;YACpBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;YACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;UACtB,CAAC,EAAE,IAAI,CAAC;QACV;MACF;IACJ,CAAC,CAAC;EACJ;EACE;EACA,SAAShgD,kBAAkBA,CAACquD,mBAAmB,EAAE;IAC/C,IAAIzqC,WAAW,GAAGniK,KAAK,CAAC1P,KAAK,CAAC;MAC5BG,EAAE,EAAE,oBAAoB;MACxBa,UAAU,EAAE;IACd,CAAC,CAAC;IACF,IAAIkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAiB;QACjBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;QACtB,IAAIx+I,MAAM,GAAG,MAAM68I,OAAO,CAACwtC,kCAAkC,CAACpB,mBAAmB,CAAC;QAClF,IAAIjpL,MAAM,CAACilU,wCAAwC,KAAK,GAAG,EAAC;UACvDl5V,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACzB;MACX;IACF,CAAC,CAAC;IACF,IAAI5jD,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,OAAO;MACboB,QAAQ,EAAE,SAAAA,CAAA,EAAW;QACnBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;MACzB;IACF,CAAC,CAAC;IACF3lI,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B,IAAIj+G,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,8CAA8C;IACzE+0K,WAAW,CAACz0K,WAAW,CAACgvC,cAAc,CAAC;IACvCylI,WAAW,CAACz0K,WAAW,CAAC8uC,OAAO,CAAC;IAChCx8B,KAAK,CAAC9S,IAAI,CAACi1K,WAAW,CAAC;EACzB;EAGC,OAAO;IACRhyK;EAEF,CAAC;AACH,CAAC,EAAE,CAAC;ACxnBJ,MAAMizM,6BAA6B,GAAG,CAAC,MAAM;EAC3C;EACA,IAAI3E,gBAAgB,CAAC,CAAE;EACvB,IAAI2/G,cAAc,CAAC,CAAC;EACpB,IAAIC,YAAY,CAAC,CAAC;EAClB,IAAI35I,gBAAgB,CAAC,CAAE;EACvB,IAAImkL,kBAAkB,CAAC,CAAC;EACxB,IAAIC,cAAc,CAAC,CAAC;EACpB;EACA;EACA;;EAGA;EACA,IAAIpkC,WAAW;EACf,IAAI7F,iBAAiB;EACrB,IAAIH,aAAa;EACjB,IAAI8nC,aAAa;EACjB,IAAI/nC,aAAa;EACjB;EACA;EACA;;EAGA;EACA,IAAI3rQ,UAAU;EACd,IAAIgoE,UAAU;EACd,IAAIwD,WAAW;EACf,IAAIh4F,SAAS;EACb,IAAIf,OAAO;EACX,IAAIltB,QAAQ;EACZ,IAAIyzM,aAAa,CAAC,CAAC;EACnB,IAAItxF,SAAS,CAAC,CAAC;;EAEf;EACA,IAAIW,aAAa;EACjB,IAAI5+D,MAAM;EACV,IAAIgwE,SAAS;EACb,IAAIy1E,eAAe;EAEnB,IAAIykJ,YAAY,GAAG,KAAK;EAExB,IAAIC,kBAAkB;EAEtB,eAAev2V,IAAIA,CACjBq+T,YAAY,EACZo4B,eAAe,EACfjmJ,yBAAyB,EACzBI,2BAA2B,EAC3BH,+BAA+B,EAC/BimJ,mBAAmB,EACnBC,mBAAmB,EAEnB;IAAA,IADAC,WAAW,GAAAvvV,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,SAAS;IAEvB2H,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBnP,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC9I,OAAO,CAACgF,CAAC,IAAIA,CAAC,CAACzF,MAAM,CAAC,CAAC,CAAC;IAEtE+lD,UAAU,GAAG8zS,eAAe,CAACn2V,EAAE;IAC/Bi2V,kBAAkB,GAAGG,mBAAmB;IAExC,IAAIr4B,YAAY,IAAIz/S,MAAM,CAAC8B,IAAI,CAAC29S,YAAY,CAAC,CAACjhU,MAAM,KAAK,CAAC,EAAE;MAC1DgvD,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzBs9E,UAAU,GAAG0zM,YAAY,CAAC,CAAC,CAAC,CAAC1zM,UAAU;MACvCwD,WAAW,GAAGkwM,YAAY,CAAC,CAAC,CAAC,CAAClwM,WAAW,CAAC,CAAC;MAC3Ch4F,SAAS,GAAGkoS,YAAY,CAAC,CAAC,CAAC,CAACloS,SAAS,CAAC,CAAC;MACvCf,OAAO,GAAGipS,YAAY,CAAC,CAAC,CAAC,CAACjpS,OAAO,CAAC,CAAC;MACnCltB,QAAQ,GAAGm2T,YAAY,CAAC,CAAC,CAAC,CAACn2T,QAAQ;MACnCmiH,SAAS,GAAGg0M,YAAY,CAAC,CAAC,CAAC,CAACh0M,SAAS;MACrCsxF,aAAa,GAAG0iH,YAAY,CAAC,CAAC,CAAC,CAAC1iH,aAAa,CAAC,CAAC;IAEjD,CAAC,MAAM;MACL3wF,aAAa,GAAG98G,CAAC,CAACC,OAAO,CAACmoC,QAAQ;MAClC8V,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzB+uF,SAAS,GAAGo0E,yBAAyB;MACrC7lF,UAAU,GAAG,GAAG;MAChBwD,WAAW,GAAGwoO,mBAAmB;MACjC;MACA9kJ,eAAe,GAAGpB,+BAA+B;MACjDt6K,SAAS,GAAG,EAAE;MACdf,OAAO,GAAG,EAAE;MACZltB,QAAQ,GAAG,EAAE;MACbmiH,SAAS,GAAG,EAAE;MACdsxF,aAAa,GAAG,EAAE;IACpB;IAEA,IAAIi7I,WAAW,KAAK,SAAS,IAAI,CAAC1oV,CAAC,CAACC,OAAO,CAACwyC,SAAS,EAAE;MACrD21S,YAAY,GAAG,IAAI;IACrB;IAEA,IAAIM,WAAW,KAAK,UAAU,IAAI,CAAC1oV,CAAC,CAACC,OAAO,CAACuyC,SAAS,EAAE;MACtD41S,YAAY,GAAG,IAAI;IACrB;IAEA,IAAIlqS,MAAM,KAAKsqS,mBAAmB,EAAE;MAClCJ,YAAY,GAAG,IAAI;IACrB;IAEAhoJ,gBAAgB,GAAG3qM,KAAK,CAACxD,KAAK,CAAC;MAC7BU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,cAAc;MACrBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE8uB,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACtD;MACA/e,QAAQ,EAAE;MACV;IACF,CAAC,CAAC;IAEF+rT,cAAc,GAAGtqT,KAAK,CAACxD,KAAK,CAAC;MAC3B8B,KAAK,EAAE,YAAY;MACnBpB,IAAI,EAAE,MAAM;MACZa,KAAK,EAAEy0B,SAAS;MAChBj0B,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEFpoC,YAAY,GAAGvqT,KAAK,CAACxD,KAAK,CAAC;MACzB8B,KAAK,EAAE,UAAU;MACjBpB,IAAI,EAAE,MAAM;MACZa,KAAK,EAAE0zB,OAAO;MACdlzB,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEF/hL,gBAAgB,GAAGzyK,QAAQ,CAAC3B,KAAK,CAAC;MAChC8B,KAAK,EAAE,UAAU;MACjBF,UAAU,EAAE,kBAAkB;MAC9BL,KAAK,EAAEwG,QAAQ;MACfhG,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEFqC,cAAc,GAAGh1V,KAAK,CAACxD,KAAK,CAAC;MAC3B8B,KAAK,EAAE,YAAY;MACnBpB,IAAI,EAAE,QAAQ;MACdD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE2oH,SAAS,KAAK,GAAG,IAAIA,SAAS,KAAK,MAAM,GAAG,EAAE,GAAGA,SAAS;MACjEnoH,QAAQ,EAAEo0V,YAAY;MACtB/0V,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC;IACzC,CAAC,CAAC;IAGFg3V,kBAAkB,GAAG/0V,KAAK,CAACxD,KAAK,CAAC;MAC/B8B,KAAK,EAAE,sDAAsD;MAC7DP,KAAK,EAAEi6M,aAAa;MACpB96M,IAAI,EAAE,UAAU;MAChBM,UAAU,EAAE,UAAU;MACtBe,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEF/hC,WAAW,GAAGr0T,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,MAAM;MACZY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBq1V,cAAc,CAAC,MAAM,CAAC;MACxB;IACF,CAAC,CAAC;IACFtoC,iBAAiB,GAAGxuT,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,YAAY;MAClBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACXY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBq1V,cAAc,CAAC,YAAY,CAAC;MAC9B;IACF,CAAC,CAAC;IACFX,aAAa,GAAGn2V,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACX;MACAoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBs1V,cAAc,CAAC,CAAC;MAClB;IACF,CAAC,CAAC;IACF3oC,aAAa,GAAGpuT,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,QAAQ;MACd;MACAoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBysJ,kBAAkB,CAACzjC,UAAU,CAAC;MAChC;IACF,CAAC,CAAC;IACF4jM,aAAa,GAAGruT,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBN,IAAI,EAAE,OAAO;MACbY,UAAU,EAAE,CAAC,gBAAgB,CAAC;MAC9BQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBpC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;IAEFnpE,WAAW,CAAC,CAAC;IAEb,IAAIiyN,UAAU,GAAG/9O,iBAAiB,CAACs9O,eAAe,CAAC;IAEnD,IAAI1vU,SAAS,GAAGjnB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0mB,SAAS,CAACpqB,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACtC,IAAI60I,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC,MAAM8T,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C;IACA8T,OAAO,CAAClX,SAAS,GAAG,4CAA4C;IAChEkX,OAAO,CAACxX,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAE1CkqB,SAAS,CAACxpB,WAAW,CAAC25V,UAAU,CAAC;IACjC;IACAnwU,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAC7B3qH,SAAS,CAACxpB,WAAW,CAAC4W,OAAO,CAAC;IAC9B4S,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAE7B,MAAMylN,eAAe,GAAGr3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD82V,eAAe,CAACx6V,SAAS,CAACE,GAAG,CAAC,2CAA2C,CAAC;IAC1Es6V,eAAe,CAAC55V,WAAW,CAAC+wM,gBAAgB,CAAC;IAC7C6oJ,eAAe,CAAC55V,WAAW,CAAC0wT,cAAc,CAAC;IAC3CkpC,eAAe,CAAC55V,WAAW,CAAC2wT,YAAY,CAAC;IAEzC,MAAM0qC,eAAe,GAAG94V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDu4V,eAAe,CAACj8V,SAAS,CAACE,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;IAC5E+7V,eAAe,CAACr7V,WAAW,CAACg3K,gBAAgB,CAAC;IAC7CqkL,eAAe,CAACr7V,WAAW,CAACo7V,cAAc,CAAC;IAE3C,MAAME,eAAe,GAAG/4V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDw4V,eAAe,CAACl8V,SAAS,CAACE,GAAG,CAAC,2CAA2C,CAAC;IAE1EkqB,SAAS,CAACxpB,WAAW,CAAC45V,eAAe,CAAC;IACtCpwU,SAAS,CAACxpB,WAAW,CAACq7V,eAAe,CAAC;IACtC7xU,SAAS,CAACxpB,WAAW,CAACs7V,eAAe,CAAC;IAEtC9xU,SAAS,CAACxpB,WAAW,CAACm7V,kBAAkB,CAAC;IAEzC,IAAItB,eAAe,GAAGt3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnD+2V,eAAe,CAACz6V,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAEhD,IAAIw6V,aAAa,GAAGv3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDg3V,aAAa,CAAC16V,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAE5Cw6V,aAAa,CAACp6V,SAAS,GAAG,yGAAyG;IACnIm6V,eAAe,CAAC75V,WAAW,CAAC85V,aAAa,CAAC;IAE1C,IAAIhrT,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC8tH,UAAU,IAAI,GAAG,GAAGt+E,OAAO,CAAC9uC,WAAW,CAACg3T,WAAW,CAAC,GAAGloR,OAAO,CAAC9uC,WAAW,CAAC84V,aAAa,CAAC;IACzF1rO,UAAU,IAAI,GAAG,GAAGt+E,OAAO,CAAC9uC,WAAW,CAACmxT,iBAAiB,CAAC,GAAGriR,OAAO,CAAC9uC,WAAW,CAAC+wT,aAAa,CAAC;IAE/F,IAAIoG,QAAQ,GAAG50T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Cq0T,QAAQ,CAAC/3T,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACjC63T,QAAQ,CAACn3T,WAAW,CAACgxT,aAAa,CAAC;IAEnC,IAAI+oC,MAAM,GAAGx3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1Ci3V,MAAM,CAAC36V,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC9By6V,MAAM,CAAC/5V,WAAW,CAAC8uC,OAAO,CAAC;IAC3BirT,MAAM,CAAC/5V,WAAW,CAACm3T,QAAQ,CAAC;IAE5B,IAAItoQ,MAAM,KAAKmqS,kBAAkB,EAAEe,MAAM,CAAC/5V,WAAW,CAAC65V,eAAe,CAAC;IAEtErwU,SAAS,CAACxpB,WAAW,CAAC+5V,MAAM,CAAC;IAE7BwB,uBAAuB,CAAC,CAAC;IACzBC,wBAAwB,CAAC,CAAC;IAC1BC,0BAA0B,CAAC,CAAC;IAC5B;;IAEAhqV,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACwpB,SAAS,CAAC;IAEvC/X,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;;IAEtB;IACAm2F,mBAAmB,CAAC,CAAC;EACvB;EAEA,eAAeisO,wBAAwBA,CAAA,EAAG;IACxC,MAAM;MAAEE,qBAAqB,EAAE3jL;IAAU,CAAC,GAAG,MAAMjF,OAAO,CAAC+E,iBAAiB,CAACzyH,UAAU,CAAC;IACxF;IACA,IAAI9/C,IAAI,GAAGyyK,SAAS,CAACzuK,GAAG,CAACqB,QAAQ,KAAK;MACpC5H,EAAE,EAAG4H,QAAQ,CAACgxV,gBAAgB,IAAIhxV,QAAQ,CAACgxV,gBAAgB,GAAG,CAAC,GAAIhxV,QAAQ,CAACgxV,gBAAgB,GAAG,GAAG;MAClGx3V,KAAK,EAAEwG,QAAQ,CAAC2mC,IAAI;MACpBpuC,IAAI,EAAEyH,QAAQ,CAACgwG;IACjB,CAAC,CAAC,CAAC;IAEH,MAAMzhG,KAAK,GAAG5T,IAAI,CAACwmC,SAAS,CAAChpB,CAAC,IAAIA,CAAC,CAAC/f,EAAE,IAAI4H,QAAQ,CAAC;IACnD,IAAIuO,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB;IAAA;IAGF5T,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,kBAAkB,EAAE2F,IAAI,EAAEqF,QAAQ,CAAC;EACvD;EAEA,eAAe8wV,0BAA0BA,CAAA,EAAG;IAC1C,MAAM;MAAEG,mBAAmB,EAAEC;IAAW,CAAC,GAAG,MAAM/oL,OAAO,CAACyoC,kBAAkB,CAAC,CAAC;IAC9E;IACA,IAAIj2M,IAAI,GAAGu2V,UAAU,CAACvyV,GAAG,CAACwyV,SAAS,KAAK;MACtC/4V,EAAE,EAAE+4V,SAAS,CAACxqT,IAAI;MAClBntC,KAAK,EAAE23V,SAAS,CAACxqT,IAAI;MACrBpuC,IAAI,EAAE44V,SAAS,CAACnhP;IAClB,CAAC,CAAC,CAAC;IAEH,MAAMzhG,KAAK,GAAG5T,IAAI,CAACwmC,SAAS,CAAChpB,CAAC,IAAIA,CAAC,CAAC/f,EAAE,IAAI4H,QAAQ,CAAC;IACnD,IAAIuO,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB;IAAA;IAGF5T,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;EAE/D;;EAEA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;;EAEA;EACA;EACA;;EAEA,SAASq4V,uBAAuBA,CAAA,EAAG;IACjC,MAAMQ,iBAAiB,GAAG,CACxB;MAAE74V,IAAI,EAAE,QAAQ;MAAEiB,KAAK,EAAE;IAAS,CAAC,EACnC;MAAEjB,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,EAC3B;MAAEjB,IAAI,EAAE,IAAI;MAAEiB,KAAK,EAAE;IAAI,CAAC,CAC3B;EAEH;EAEA,SAASorH,mBAAmBA,CAAA,EAAG;IAI7B,IAAI,CAAC5kH,QAAQ,IAAIA,QAAQ,KAAK,EAAE,EAAE;MAChCqsK,gBAAgB,CAAC53K,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACvC87V,cAAc,CAACh8V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAC1C,CAAC,MAAM;MACL03K,gBAAgB,CAAC53K,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC1C+7V,cAAc,CAACh8V,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC3C+7V,cAAc,CAACh8V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACxC;IACF;IAEA,IAAI28V,iBAAiB,GAAGZ,cAAc,CAAC54V,aAAa,CAAC,OAAO,CAAC;IAC7D,IAAIw5V,iBAAiB,CAAC73V,KAAK,KAAK,EAAE,IAAI63V,iBAAiB,CAAC73V,KAAK,KAAK,CAAC,IAAI63V,iBAAiB,CAAC73V,KAAK,IAAI,CAAC,EAAE;MACnGi3V,cAAc,CAACh8V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACvC,CAAC,MAAM;MACL87V,cAAc,CAACh8V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C;IAGA,IAAI48V,gBAAgB,GAAGd,kBAAkB,CAAC34V,aAAa,CAAC,UAAU,CAAC;IAEnE,IAAIy5V,gBAAgB,CAAC93V,KAAK,KAAK,EAAE,EAAE;MACjCg3V,kBAAkB,CAAC/7V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC3C,CAAC,MAAM;MACL67V,kBAAkB,CAAC/7V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC9C;IAEA86V,qBAAqB,CAAC,CAAC;IACvBC,mBAAmB,CAAC,CAAC;IACrBC,iBAAiB,CAAC,CAAC;IACnB5uM,YAAY,CAAC,CAAC;EAChB;EAEA,SAAS0uM,qBAAqBA,CAAA,EAAG;IAC/B,IAAI9d,SAAS,GAAG,IAAI/iU,IAAI,CAAC,CAAC;IAC1B,IAAIghV,aAAa,GAAG,IAAIhhV,IAAI,CAACs3G,WAAW,CAAC;IAEzC,IAAI2pO,YAAY,GAAGvqU,KAAK,CAACiF,QAAQ,CAACqlU,aAAa,EAAEje,SAAS,CAAC;IAE3D,IAAI,CAACke,YAAY,EAAE;MACjBxpJ,gBAAgB,CAAC3xM,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACzC,CAAC,MAAM;MACLyxM,gBAAgB,CAAC3xM,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC5C;EACF;EAEA,SAASosJ,YAAYA,CAAA,EAAG;IACtB,IAAI32C,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,IAAIk5V,YAAY,EAAE;MAC1C/hC,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3Cw5V,aAAa,CAAC15V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,MAAM;MACL03T,WAAW,CAAC53T,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACxC8xT,iBAAiB,CAAC/xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC9Cy5V,aAAa,CAAC15V,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC5C;IAEA,IAAIwvD,MAAM,KAAKmqS,kBAAkB,IAAI,CAACroV,CAAC,CAACC,OAAO,CAACsyC,SAAS,EAAE;MACzD6tQ,aAAa,CAAC3xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,MAAM;MACLyxT,aAAa,CAAC3xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC5C;EACF;EAEA,SAASg7V,iBAAiBA,CAAA,EAAG;IAC3B,IAAIl/H,QAAQ,GAAGw1F,YAAY,CAACnuT,aAAa,CAAC,OAAO,CAAC;IAClD,IAAIgvB,UAAU,GAAGyB,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACrCytT,kBAAkB,GAAGvnU,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpE,IAAI82U,kBAAkB,KAAKhpU,UAAU,IAAIipU,oBAAoB,CAACt/H,QAAQ,CAACh3N,KAAK,CAAC,EAAE;MAC7EwsT,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACnC;IACF,CAAC,MAAM;MACLqxT,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACxC;IAEA,IAAIq7V,mBAAmB,GAAG1/H,qBAAqB,CAAC,UAAU,CAAC;IAE3D,IAAI0/H,mBAAmB,EAAE;MACvB/pC,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACxC,CAAC,MAAM;MACLsxT,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACnC;IACF;IAEA,IAAIq7V,cAAc,GAAG1nU,IAAI,CAACkb,YAAY,CAACgtL,QAAQ,CAACh3N,KAAK,CAAC;IAEtD,IAAIw2V,cAAc,EAAE;MAClBhqC,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACxC,CAAC,MAAM;MACLsxT,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACnC;IACF;EACF;EAEA,SAAS86V,mBAAmBA,CAAA,EAAG;IAC7B,IAAIl/H,UAAU,GAAGw1F,cAAc,CAACluT,aAAa,CAAC,OAAO,CAAC;IACtD,IAAIgvB,UAAU,GAAGyB,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACrCytT,kBAAkB,GAAGvnU,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpE,IAAI82U,kBAAkB,KAAKhpU,UAAU,IAAIipU,oBAAoB,CAACv/H,UAAU,CAAC/2N,KAAK,CAAC,EAAE;MAC/EusT,cAAc,CAACtxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACrC;IACF,CAAC,MAAM;MACLoxT,cAAc,CAACtxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C;IAEA,IAAIu7V,gBAAgB,GAAG3nU,IAAI,CAACkb,YAAY,CAAC+sL,UAAU,CAAC/2N,KAAK,CAAC;IAC1D,IAAIy2V,gBAAgB,EAAE;MACpBlqC,cAAc,CAACtxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACLqxT,cAAc,CAACtxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACrC;IACF;EACF;EAEA,SAASm7V,oBAAoBA,CAACI,WAAW,EAAE;IACzC,IAAIC,OAAO,GAAG,IAAIxhV,IAAI,CAAC,CAAC;IACxB,IAAIyhV,OAAO,GAAGD,OAAO,CAACh1U,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,IAAIg1U,OAAO,CAACh1U,QAAQ,CAAC,CAAC,EAAE,GAAGg1U,OAAO,CAACh1U,QAAQ,CAAC,CAAC;IACvF,IAAIk1U,SAAS,GAAGF,OAAO,CAAC/pU,UAAU,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI+pU,OAAO,CAAC/pU,UAAU,CAAC,CAAC,EAAE,GAAG+pU,OAAO,CAAC/pU,UAAU,CAAC,CAAC;IAC/F,OACEzX,IAAI,CAACC,KAAK,CAAC,cAAcshV,WAAW,EAAE,CAAC,GAAGvhV,IAAI,CAACC,KAAK,CAAC,cAAcwhV,OAAO,IAAIC,SAAS,EAAE,CAAC;EAE9F;EAEA,SAAShgI,qBAAqBA,CAAC7sL,YAAY,EAAE;IAC3C,IAAI+sL,UAAU,GAAGw1F,cAAc,CAACluT,aAAa,CAAC,OAAO,CAAC;IACtD,IAAI24N,QAAQ,GAAGw1F,YAAY,CAACnuT,aAAa,CAAC,OAAO,CAAC;IAClD,IAAIqrJ,SAAS,GAAGkjD,gBAAgB,CAACvuM,aAAa,CAAC,OAAO,CAAC;IACvD,IAAIo2B,SAAS,GAAGsiM,UAAU,CAAC/2N,KAAK;IAChC,IAAI0zB,OAAO,GAAGsjM,QAAQ,CAACh3N,KAAK;IAC5B,IAAImxB,WAAW,GAAGrC,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACtC,IAAIw+F,WAAW,GAAGt4G,IAAI,CAACga,cAAc,CAAC,CAAC;IAEvC,IAAIkB,YAAY,KAAK,YAAY,EAAE;MACjC,IAAI0/G,SAAS,CAAC1pJ,KAAK,KAAKmxB,WAAW,EAAE;QACnC,IAAIsD,SAAS,GAAG2yG,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC;MAC7C;MAEA,IAAI3yG,SAAS,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC;MACpC,IAAIA,SAAS,KAAK,EAAE,IAAIf,OAAO,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC;IACvD,CAAC,MAAM;MACL;MACA,IAAIg2H,SAAS,CAAC1pJ,KAAK,KAAKmxB,WAAW,EAAE;QACnC,IAAIuC,OAAO,GAAG0zG,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC;MAC3C;MAEA,IAAI1zG,OAAO,KAAK,EAAE,IAAIA,OAAO,KAAK,OAAO,EAAE,OAAO,KAAK,CAAC,CAAC;IAC3D;IAEA,OAAOe,SAAS,IAAIf,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;EAC9C;EAEA,SAAS6vG,WAAWA,CAAA,EAAG;IAErBsvC,gBAAgB,CAACt0K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCwG,QAAQ,GAAG,EAAE;QACbmiH,SAAS,GAAG,EAAE;QACd,IAAIkvO,iBAAiB,GAAGZ,cAAc,CAAC54V,aAAa,CAAC,OAAO,CAAC;QAC7Dw5V,iBAAiB,CAAC73V,KAAK,GAAG,EAAE;MAE9B,CAAC,MAAM;QACLwG,QAAQ,GAAG5F,cAAc,CAACZ,KAAK;QAC/B2oH,SAAS,GAAG/nH,cAAc,CAAChC,EAAE;QAC7B,IAAIi5V,iBAAiB,GAAGZ,cAAc,CAAC54V,aAAa,CAAC,OAAO,CAAC;QAC7Dw5V,iBAAiB,CAAC73V,KAAK,GAAIY,cAAc,CAAChC,EAAE,IAAIgC,cAAc,CAAChC,EAAE,GAAG,CAAC,GAAIgC,cAAc,CAAChC,EAAE,GAAG,EAAE;MACjG;MACAwsH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAGF6rO,cAAc,CAAC14V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAChD4sH,SAAS,GAAG5sH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9BorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAGF6rO,cAAc,CAAC14V,gBAAgB,CAAC,UAAU,EAAExC,KAAK,IAAI;MACnD4sH,SAAS,GAAG5sH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9B,IAAIjE,KAAK,CAACgE,GAAG,KAAK,GAAG,IAAIhE,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC4kB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;QAC/D;QACA7oB,KAAK,CAACyH,cAAc,CAAC,CAAC;QACtB;MACF;MACE,IAAIzH,KAAK,CAAC0oB,OAAO,GAAG,EAAE,IAAI1oB,KAAK,CAAC0oB,OAAO,GAAG,EAAE,EAAE;QAC5C1oB,KAAK,CAACyH,cAAc,CAAC,CAAC;QACtB;MACJ;IACF,CAAC,CAAC;IAEF+oT,cAAc,CAAChuT,gBAAgB,CAAC,UAAU,EAAExC,KAAK,IAAI;MACnD04B,SAAS,GAAG14B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9Bi2V,mBAAmB,CAAC,CAAC;MACrBC,iBAAiB,CAAC,CAAC;MACnB5uM,YAAY,CAAC,CAAC;IAChB,CAAC,CAAC;IAEFklK,YAAY,CAACjuT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC/C23B,OAAO,GAAG33B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC5Bi2V,mBAAmB,CAAC,CAAC;MACrBC,iBAAiB,CAAC,CAAC;MACnB5uM,YAAY,CAAC,CAAC;IAChB,CAAC,CAAC;IAEFslD,gBAAgB,CAACruM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD0wH,WAAW,GAAG1wH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChCg2V,qBAAqB,CAAC,CAAC;MACvBC,mBAAmB,CAAC,CAAC;MACrBC,iBAAiB,CAAC,CAAC;MACnB5uM,YAAY,CAAC,CAAC;IAChB,CAAC,CAAC;IACFslD,gBAAgB,CAACruM,gBAAgB,CAAC,SAAS,EAAExC,KAAK,IAAI;MACpDA,KAAK,CAACyH,cAAc,CAAC,CAAC;MACtBzH,KAAK,CAAC0N,eAAe,CAAC,CAAC;IACzB,CAAC,CAAC;IAEFutV,kBAAkB,CAACz4V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACpDk+M,aAAa,GAAGl+M,KAAK,CAACC,MAAM,CAACgE,KAAK;MAClCorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF4hM,iBAAiB,CAACzuT,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACnD;MACAixT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3C03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACvC,CAAC,CAAC;IAEF03T,WAAW,CAACt0T,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C;MACAixT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3C03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACvC,CAAC,CAAC;EACJ;;EAEA;EACA,SAASs8G,iBAAiBA,CAACnQ,QAAQ,EAAE;IACnC,MAAM6nC,WAAW,GAAG/wI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD,IAAIqxI,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC2oG,QAAQ,CAACoQ,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAE7C,MAAMuF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEtCsF,IAAI,CAAC5E,WAAW,CAACyrG,QAAQ,CAACoQ,IAAI,CAAC;IAE/By3B,WAAW,CAACtzI,WAAW,CAAC4E,IAAI,CAAC;IAC7B0uI,WAAW,CAACtzI,WAAW,CAACm0I,MAAM,CAAC;IAC/B;;IAEA,OAAOb,WAAW;EACpB;EAEA,SAASomN,cAAcA,CAAA,EAAG;IACxB,IAAIp0V,IAAI,GAAG;MACT8/C,UAAU;MACVgoE,UAAU;MACVwD,WAAW,EAAE39F,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5DkV,SAAS;MACTf,OAAO;MACPltB,QAAQ;MACRmiH,SAAS;MACTsxF,aAAa;MACbvvJ;IACF,CAAC;IACD;IACAikH,OAAO,CAAC8sC,qCAAqC,CAACt6M,IAAI,EAAE,UAAUmlG,OAAO,EAAE;MACrEt3F,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrBirB,UAAU,CAAC,YAAY;QACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB,CAAC,EAAE,IAAI,CAAC;IACV,CAAC,CAAC;EACJ;EAEA,SAAS4oJ,cAAcA,CAACwB,QAAQ,EAAE;IAChC,IAAI31V,IAAI,GAAG;MACT8/C,UAAU;MACVgoE,UAAU;MACVwD,WAAW,EAAE39F,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5DkV,SAAS;MACTf,OAAO;MACPltB,QAAQ;MACRmiH,SAAS;MACTsxF,aAAa;MACbvvJ,MAAM;MACNgwE,SAAS;MACTy1E,eAAe;MACf7mF;IACF,CAAC;IACD;IACAqlD,OAAO,CAACgtC,qCAAqC,CAACx6M,IAAI,EAAE,UAAUmlG,OAAO,EAAE;MACrEt3F,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrB,IAAIy7V,QAAQ,IAAI,YAAY,EAAE;QAC5BxwU,UAAU,CAAC,YAAY;UACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrBkQ,OAAO,CAACjQ,IAAI,CAAC,CAAC;UACdwC,GAAG,CAAC6zM,sBAAsB,CAACzwJ,UAAU,EAAE,UAAU,CAAC;QACpD,CAAC,EAAE,IAAI,CAAC;MACV,CAAC,MAAM;QACL;QACA36B,UAAU,CAAC,YAAY;UACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC;MACV;IACF,CAAC,CAAC;EACJ;;EAEA;EACA,SAAShgD,kBAAkBA,CAACzjC,UAAU,EAAE;IACtC,IAAIqnD,WAAW,GAAGniK,KAAK,CAAC1P,KAAK,CAAC;MAC5BG,EAAE,EAAE,oBAAoB;MACxBa,UAAU,EAAE;IACd,CAAC,CAAC;IACF,IAAIkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QAC1BkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;QACvB,IAAIx+I,MAAM,GAAG,MAAM68I,OAAO,CAACspC,uBAAuB,CAAChvF,UAAU,CAAC;QAC9D,IAAIn3F,MAAM,CAACimU,wBAAwB,KAAK,GAAG,EAAE;UAC3Cl6V,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACtB;MACF;IACF,CAAC,CAAC;IACF,IAAI5jD,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,OAAO;MACboB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;MACzB;IACF,CAAC,CAAC;IACF3lI,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B,IAAIj+G,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,8CAA8C;IACzE+0K,WAAW,CAACz0K,WAAW,CAACgvC,cAAc,CAAC;IACvCylI,WAAW,CAACz0K,WAAW,CAAC8uC,OAAO,CAAC;IAChCx8B,KAAK,CAAC9S,IAAI,CAACi1K,WAAW,CAAC;EACzB;EAEA,OAAO;IACLhyK;EACF,CAAC;AACH,CAAC,EAAE,CAAC;ACtsBJ,MAAMmzM,oCAAoC,GAAG,CAAC,MAAM;EAClD;EACA,IAAIumJ,iBAAiB,CAAC,CAAC;EACvB,IAAIC,uBAAuB,CAAC,CAAC;EAC7B;EACA;EACA;EACA;;EAEA,IAAIC,wBAAwB,CAAC,CAAC;EAC9B,IAAIC,mBAAmB,CAAC,CAAC;EACzB,IAAIC,uBAAuB,CAAC,CAAC;EAC7B,IAAIC,iBAAiB,CAAC,CAAC;EACvB;EACA,IAAIC,gCAAgC,CAAC,CAAC;EACtC;EACA,IAAIC,0BAA0B,CAAC,CAAC;EAChC;;EAEA;EACA,IAAIt3S,UAAU;EACd,IAAIi3J,UAAU;EACd,IAAIG,YAAY,CAAC,CAAC;EAClB,IAAImgJ,mBAAmB,CAAC,CAAC;EACzB,IAAIlgJ,iBAAiB,CAAC,CAAC;EACvB,IAAIC,qBAAqB,CAAC,CAAC;EAC3B,IAAIgC,4BAA4B,CAAC,CAAC;EAClC,IAAIE,gCAAgC,CAAC,CAAC;EACtC,IAAIE,WAAW,CAAC,CAAC;EACjB,IAAI89I,qBAAqB;EACzB,IAAI18I,2BAA2B,CAAC,CAAC;EACjC;EACA,IAAIrtE,OAAO;EACX,IAAIgqN,aAAa;EACjB,IAAI5rT,SAAS;EACb,IAAIysM,SAAS;EACb,IAAInvF,SAAS;;EAEb;EACA;EACA,IAAI1/F,MAAM;EACV,IAAIgwE,SAAS;EACb,IAAIi+N,eAAe;EACnB,IAAIC,aAAa;EAEjB,IAAIhE,YAAY,GAAG,KAAK;EACxB,MAAMiE,UAAU,GAAG,IAAI;EAEvB,IAAIC,wBAAwB,CAAC,CAAC;;EAE9B,eAAex6V,IAAIA,CACjBy6V,YAAY,EACZhE,eAAe,EACfiE,iBAAiB,EACjBhE,mBAAmB,EAEnB;IAAA,IADAE,WAAW,GAAAvvV,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,SAAS;IAEvB2H,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBnP,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC9I,OAAO,CAACgF,CAAC,IAAIA,CAAC,CAACzF,MAAM,CAAC,CAAC,CAAC;IAEtE,IAAI+9V,UAAU,GAAG,IAAI9jV,IAAI,CAAC,CAAC;IAC3B,IAAI+jV,iBAAiB,GAAG,IAAI/jV,IAAI,CAAC8jV,UAAU,CAAC73U,WAAW,CAAC,CAAC,EAAE63U,UAAU,CAAC53U,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAEpF4/B,UAAU,GAAG8zS,eAAe,CAACn2V,EAAE;IAC/Bi2V,kBAAkB,GAAGG,mBAAmB;IAExC,IAAI+D,YAAY,IAAI77U,MAAM,CAAC8B,IAAI,CAAC+5U,YAAY,CAAC,CAACr9V,MAAM,KAAK,CAAC,EAAE;MAC1DgvD,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzBusK,UAAU,GAAG6gJ,YAAY,CAAC7gJ,UAAU;MACpCG,YAAY,GAAG8gJ,YAAY,CAACJ,YAAY,CAAC1gJ,YAAY,CAAC;MACtDmgJ,mBAAmB,GAAG,IAAIrjV,IAAI,CAAC4jV,YAAY,CAAC1gJ,YAAY,CAAC;MACzDC,iBAAiB,GAAGygJ,YAAY,CAACzgJ,iBAAiB;MAClDC,qBAAqB,GAAGwgJ,YAAY,CAACxgJ,qBAAqB;MAC1DgC,4BAA4B,GAAGw+I,YAAY,CAACx+I,4BAA4B;MACxEE,gCAAgC,GAAGs+I,YAAY,CAACt+I,gCAAgC;MAChFE,WAAW,GAAGo+I,YAAY,CAACp+I,WAAW;MACtCoB,2BAA2B,GAAGg9I,YAAY,CAACh9I,2BAA2B;MACtE08I,qBAAqB,GAAI18I,2BAA2B,KAAK,GAAG,IAAIA,2BAA2B,KAAK,MAAM,IAAIA,2BAA2B,KAAK,EAAE,GAAI,GAAG,GAAG,GAAG;IAC3J,CAAC,MAAM;MACLrxJ,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzB+uF,SAAS,GAAGs+N,iBAAiB;MAC7B9gJ,UAAU,GAAG,GAAG;MAChBG,YAAY,GAAG,CAAC,GAAG,IAAI4gJ,UAAU,CAAC53U,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE1W,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGsuV,UAAU,CAAC73U,WAAW,CAAC,CAAC;MAC7Fo3U,mBAAmB,GAAG,IAAIrjV,IAAI,CAAC8jV,UAAU,CAAC73U,WAAW,CAAC,CAAC,EAAE63U,UAAU,CAAC53U,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;MAClFi3L,iBAAiB,GAAG,EAAE;MACtBC,qBAAqB,GAAG,EAAE;MAC1BgC,4BAA4B,GAAG,EAAE;MACjCE,gCAAgC,GAAG,EAAE;MACrCE,WAAW,GAAG,EAAE;MAChB89I,qBAAqB,GAAI,EAAE;MAC3B18I,2BAA2B,GAAI,EAAE;IACnC;IAEA,IAAIm5I,WAAW,KAAK,SAAS,IAAI,CAAC1oV,CAAC,CAACC,OAAO,CAACwyC,SAAS,EAAE;MACrD21S,YAAY,GAAG,IAAI;IACrB;IAEA,IAAIM,WAAW,KAAK,gBAAgB,IAAI,CAAC1oV,CAAC,CAACC,OAAO,CAACuyC,SAAS,EAAE;MAC5D41S,YAAY,GAAG,IAAI;IACrB;IAEA,IAAIlqS,MAAM,KAAKsqS,mBAAmB,EAAE;MAClCJ,YAAY,GAAG,IAAI;IACrB;IAEA,IAAIY,UAAU,GAAG/9O,iBAAiB,CAACs9O,eAAe,CAAC;IAEnD,IAAI1vU,SAAS,GAAGjnB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0mB,SAAS,CAACpqB,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACtC,IAAI60I,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC,MAAM8T,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAAClX,SAAS,GAAG,4DAA4D;IAChFkX,OAAO,CAACxX,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAE1CkqB,SAAS,CAACxpB,WAAW,CAAC25V,UAAU,CAAC;IACjC;IACAnwU,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAC7B3qH,SAAS,CAACxpB,WAAW,CAAC4W,OAAO,CAAC;IAC9B4S,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;;IAE7B;IACAgoN,iBAAiB,GAAG53V,QAAQ,CAAC3B,KAAK,CAAC;MACjC8B,KAAK,EAAE,OAAO;MACd;MACAF,UAAU,EAAE,mBAAmB;MAC/BL,KAAK,EAAEq4M,YAAY;MACnB73M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEFqD,uBAAuB,GAAG73V,QAAQ,CAAC3B,KAAK,CAAC;MACvC8B,KAAK,EAAE,kBAAkB;MACzBF,UAAU,EAAE,yBAAyB;MACrCL,KAAK,EAAEs4M,iBAAiB;MACxB93M,QAAQ,EAAEo0V;MACV;IACF,CAAC,CAAC;IAEFsD,wBAAwB,GAAGj2V,KAAK,CAACxD,KAAK,CAAC;MACrCU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,uBAAuB;MAC9BrB,KAAK,EAAE,WAAW;MAClB;MACAc,KAAK,EAAE8uB,IAAI,CAACkY,eAAe,CAACuxK,qBAAqB,CAACh5L,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAChE/e,QAAQ,EAAEo0V;MACV;IACF,CAAC,CAAC;;IAEF;IACAuD,mBAAmB,GAAGl2V,KAAK,CAACxD,KAAK,CAAC;MAChCU,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAEu6M,4BAA4B;MACnC/5M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IACF;;IAEA;IACAwD,uBAAuB,GAAGn2V,KAAK,CAACxD,KAAK,CAAC;MACpCU,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAEy6M,gCAAgC;MACvCj6M,QAAQ,EAAEo0V;IACZ,CAAC,CAAC;IACF;;IAEA;IACAyD,iBAAiB,GAAGj4V,QAAQ,CAAC3B,KAAK,CAAC;MACjC4B,UAAU,EAAE,mBAAmB;MAC/BL,KAAK,EAAE26M,WAAW;MAClBn6M,QAAQ,EAAEo0V;IACZ,CAAC,CAAC;IACF;;IAEC;IACA0D,gCAAgC,GAAGl4V,QAAQ,CAAC3B,KAAK,CAAC;MACjD4B,UAAU,EAAE,kCAAkC;MAC9CL,KAAK,EAAEy4V,qBAAqB;MAC5Bj4V,QAAQ,EAAEo0V;IACZ,CAAC,CAAC;IAEF2D,0BAA0B,GAAGt2V,KAAK,CAACxD,KAAK,CAAC;MACvC8B,KAAK,EAAE,0BAA0B;MACjCpB,IAAI,EAAE,QAAQ;MACdD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE+7M,2BAA2B,KAAK,GAAG,IAAIA,2BAA2B,KAAK,MAAM,GAAG,EAAE,GAAGA,2BAA2B;MACvHv7M,QAAQ,EAAEo0V,YAAY;MACtB/0V,UAAU,EAAE,CAAC;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC;IACzC,CAAC,CAAC;IAGF0uI,OAAO,GAAGlwI,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,MAAM;MACZY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBq1V,cAAc,CAAC,MAAM,CAAC;MACxB;IACF,CAAC,CAAC;IACFoD,aAAa,GAAGl6V,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,YAAY;MAClBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACXY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBq1V,cAAc,CAAC,YAAY,CAAC;MAC9B;IACF,CAAC,CAAC;IACF/7G,SAAS,GAAG/6O,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACX;MACAoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBs1V,cAAc,CAAC,CAAC;MAClB;IACF,CAAC,CAAC;IACFnrM,SAAS,GAAG5rJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,QAAQ;MACd;MACAoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBysJ,kBAAkB,CAACwrD,UAAU,CAAC;MAChC;IACF,CAAC,CAAC;IACFprK,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBN,IAAI,EAAE,OAAO;MACbY,UAAU,EAAE,CAAC,gBAAgB,CAAC;MAC9BQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBpC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;IAEFnpE,WAAW,CAAC,CAAC;IAEb,MAAM2zN,eAAe,GAAG94V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDu4V,eAAe,CAACj8V,SAAS,CAACE,GAAG,CAAC,yCAAyC,CAAC;IAExE+7V,eAAe,CAACr7V,WAAW,CAACm8V,iBAAiB,CAAC;IAC9Cd,eAAe,CAACr7V,WAAW,CAACo8V,uBAAuB,CAAC;IACpD;;IAEA;;IAEA,MAAMmB,2BAA2B,GAAGh7V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjEy6V,2BAA2B,CAACn+V,SAAS,CAACE,GAAG,CAAC,0BAA0B,CAAC;IACrEi+V,2BAA2B,CAACv9V,WAAW,CAACq8V,wBAAwB,CAAC;IAEjEhB,eAAe,CAACr7V,WAAW,CAACu9V,2BAA2B,CAAC;IAExD/zU,SAAS,CAACxpB,WAAW,CAACq7V,eAAe,CAAC;IAEtC,MAAMmC,mBAAmB,GAAGj7V,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACvD06V,mBAAmB,CAAC99V,SAAS,GAAG,qFAAqF;IAErH,MAAM+9V,uBAAuB,GAAGl7V,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3D26V,uBAAuB,CAAC/9V,SAAS,GAAG,6FAA6F;IAEjI,MAAMg+V,sBAAsB,GAAGn7V,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC1D46V,sBAAsB,CAACh+V,SAAS,GAAG,qPAAqP;IAExR,MAAMi+V,qCAAqC,GAAGp7V,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACzE66V,qCAAqC,CAACj+V,SAAS,GAAG,0HAA0H;IAE5K8pB,SAAS,CAACxpB,WAAW,CAACw9V,mBAAmB,CAAC;IAC1Ch0U,SAAS,CAACxpB,WAAW,CAACs8V,mBAAmB,CAAC;IAC1C9yU,SAAS,CAACxpB,WAAW,CAACy9V,uBAAuB,CAAC;IAC9Cj0U,SAAS,CAACxpB,WAAW,CAACu8V,uBAAuB,CAAC;IAE9C/yU,SAAS,CAACxpB,WAAW,CAAC09V,sBAAsB,CAAC;IAC7Cl0U,SAAS,CAACxpB,WAAW,CAACw8V,iBAAiB,CAAC;;IAEzC;IACA;IACD;IACC;IACA;IACD;IACA;IACC;IACA;IACD;;IAIE,IAAI3C,eAAe,GAAGt3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnD+2V,eAAe,CAACz6V,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAEhD,IAAIw6V,aAAa,GAAGv3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDg3V,aAAa,CAAC16V,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAC5Cw6V,aAAa,CAACp6V,SAAS,GAAG,yGAAyG;IACnIm6V,eAAe,CAAC75V,WAAW,CAAC85V,aAAa,CAAC;IAE1C,IAAIhrT,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC+8M,UAAU,IAAI,GAAG,GAAGvtK,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC,GAAG/jG,OAAO,CAAC9uC,WAAW,CAAC09O,SAAS,CAAC;IACjFrhC,UAAU,IAAI,GAAG,GAAGvtK,OAAO,CAAC9uC,WAAW,CAAC68V,aAAa,CAAC,GAAG/tT,OAAO,CAAC9uC,WAAW,CAACuuJ,SAAS,CAAC;IAEvF,IAAI4oK,QAAQ,GAAG50T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Cq0T,QAAQ,CAAC/3T,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACjC63T,QAAQ,CAACn3T,WAAW,CAACixC,SAAS,CAAC;IAE/B,IAAI8oT,MAAM,GAAGx3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1Ci3V,MAAM,CAAC36V,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC9By6V,MAAM,CAAC/5V,WAAW,CAAC8uC,OAAO,CAAC;IAC3BirT,MAAM,CAAC/5V,WAAW,CAACm3T,QAAQ,CAAC;IAC5B,IAAItoQ,MAAM,KAAKmqS,kBAAkB,EAAEe,MAAM,CAAC/5V,WAAW,CAAC65V,eAAe,CAAC;IACtErwU,SAAS,CAACxpB,WAAW,CAAC+5V,MAAM,CAAC;IAE7B,IAAI5lN,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACzC,IAAI86V,OAAO,GAAGr7V,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC1C,IAAI+6V,OAAO,GAAGt7V,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC1C0mB,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAC7B3qH,SAAS,CAACxpB,WAAW,CAAC49V,OAAO,CAAC;IAC9Bp0U,SAAS,CAACxpB,WAAW,CAAC69V,OAAO,CAAC;;IAE9B;IACA;IACA;;IAEA;;IAEApsV,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACwpB,SAAS,CAAC;IAEvC/X,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;IAEtBmiU,uBAAuB,CAAC,CAAC;IACzBhiJ,+BAA+B,CAAC,CAAC;IAEjChqF,mBAAmB,CAAC,CAAC;EACvB;EAEA,SAAS+tO,YAAYA,CAAC31U,QAAQ,EAAE;IAC9B,IAAIm2U,QAAQ,GAAG,IAAIxkV,IAAI,CAACqO,QAAQ,CAAC;IACjC,IAAIo2U,aAAa,GACf,CAACD,QAAQ,CAACt4U,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAGovS,QAAQ,CAACv4U,WAAW,CAAC,CAAC;IACtF,OAAOw4U,aAAa;EACtB;EAEA,SAASC,yBAAyBA,CAAA,EAAG;IACnC,IAAIC,SAAS,GAAGzhJ,YAAY,CAAC94L,KAAK,CAAC,GAAG,CAAC;IACvC,IAAIw6U,SAAS,GAAGD,SAAS,CAAC,CAAC,CAAC;IAE5B,IAAIE,WAAW,GAAGnuU,KAAK,CAAC0B,cAAc,CAACirU,mBAAmB,CAAC;IAC3D,IAAIyB,QAAQ,GAAGzB,mBAAmB,CAACp3U,WAAW,CAAC,CAAC;IAEhDu3U,eAAe,GAAGsB,QAAQ,GAAG,GAAG,GAAGF,SAAS,GAAG,KAAK;IACpDnB,aAAa,GAAGqB,QAAQ,GAAG,GAAG,GAAGF,SAAS,GAAG,GAAG,GAAGC,WAAW;EAChE;EAEA,SAASE,6BAA6BA,CAAA,EAAG;IACvC;IACA,IAAIC,sBAAsB,GAAGhsV,KAAK,CAAC1P,KAAK,CAAC;MACvC2P,MAAM,EAAE,4BAA4B;MACpCO,KAAK,EAAE,IAAI;MACX/P,EAAE,EAAE;IACN,CAAC,CAAC;IAEF,IAAI6xK,KAAK,GAAGjyK,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBkO,KAAK,CAAC/S,IAAI,CAAC++V,sBAAsB,CAAC;QAClC;MACF;IACF,CAAC,CAAC;IAEF,IAAIxvT,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C,IAAIksC,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GACtB,6OAA6O;IAC/OovC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC40K,KAAK,CAAC;IAC1B;IACA0pL,sBAAsB,CAACt+V,WAAW,CAACgvC,cAAc,CAAC;IAClDsvT,sBAAsB,CAACt+V,WAAW,CAAC8uC,OAAO,CAAC;IAC3Cr/B,OAAO,CAACjQ,IAAI,CAAC,CAAC;IACd8S,KAAK,CAAC9S,IAAI,CAAC8+V,sBAAsB,CAAC;EACpC;EAEA,eAAe/kJ,+BAA+BA,CAAA,EAAG;IAC/CykJ,yBAAyB,CAAC,CAAC;IAE3B,MAAM;MAAEnkJ,iCAAiC,EAAEC;IAAiB,CAAC,GAC3D,MAAMhnC,OAAO,CAACinC,gCAAgC,CAC5C30J,UAAU,EACV03S,eAAe,EACfC,aAAa,EACbC,UACF,CAAC;IACH;IACA,IAAI13V,IAAI,GAAGw0M,gBAAgB,CAACxwM,GAAG,CAAC0wM,eAAe,KAAK;MAClDj3M,EAAE,EAAEi3M,eAAe,CAAC1F,eAAe;MACnCnwM,KAAK,EAAE61M,eAAe,CAAC1F,eAAe;MACtCpxM,IAAI,EAAE82M,eAAe,CAAC1F;IACxB,CAAC,CAAC,CAAC;IAEH,IAAIhvM,IAAI,CAACzF,MAAM,IAAI,CAAC,EAAE;MACpBw+V,6BAA6B,CAAC,CAAC;IACjC;;IAEA;IACA,IAAI5hJ,iBAAiB,IAAI,EAAE,IAAIn3M,IAAI,CAACzF,MAAM,IAAI,CAAC,EAAE;MAC/C48M,iBAAiB,GAAGn3M,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;IACnC;IAEA,IAAI,CAACs4M,iBAAiB,IAAIA,iBAAiB,KAAK,EAAE,EAAE;MAClD2/I,uBAAuB,CAACh9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAChD,CAAC,MAAM;MACL88V,uBAAuB,CAACh9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACnD;IAEAiG,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,yBAAyB,EAAE2F,IAAI,EAAEm3M,iBAAiB,CAAC;EACvE;;EAEA;EACA,SAAS8+I,uBAAuBA,CAAA,EAAG;IACjC,MAAMQ,iBAAiB,GAAG,CACxB;MAAE74V,IAAI,EAAE,QAAQ;MAAEiB,KAAK,EAAE;IAAS,CAAC,EACnC;MAAEjB,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,EAC3B;MAAEjB,IAAI,EAAE,IAAI;MAAEiB,KAAK,EAAE;IAAI,CAAC,CAC3B;IAED,IAAIo6V,MAAM,GAAG,IAAIjlV,IAAI,CAAC,CAAC;IACvB,IAAIklV,UAAU,GAAG,EAAE;IAEnB,KAAK,IAAI/zV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;MAC3B,IAAIg0V,QAAQ,GAAG,IAAInlV,IAAI,CAACilV,MAAM,CAACh5U,WAAW,CAAC,CAAC,GAAG,CAAC,EAAEg5U,MAAM,CAAC/4U,QAAQ,CAAC,CAAC,GAAG/a,CAAC,EAAE,CAAC,CAAC;MAC3E+zV,UAAU,CAAC7wV,IAAI,CAAC;QACd+wV,WAAW,EACT,CAACD,QAAQ,CAACj5U,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GACrD,GAAG,GACH+vS,QAAQ,CAACl5U,WAAW,CAAC,CAAC,CAAC9B,QAAQ,CAAC,CAAC;QACnCk7U,QAAQ,EAAEF,QAAQ,CAACrsD,YAAY,CAAC;MAClC,CAAC,CAAC;IACJ;IAEA,IAAI9sS,IAAI,GAAGk5V,UAAU,CAACl1V,GAAG,CAACw0V,QAAQ,KAAK;MACrC/6V,EAAE,EAAE+6V,QAAQ,CAACa,QAAQ;MACrBx6V,KAAK,EAAE25V,QAAQ,CAACY,WAAW;MAC3Bx7V,IAAI,EAAE46V,QAAQ,CAACY;IACjB,CAAC,CAAC,CAAC;IACHp5V,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,mBAAmB,EAAE2F,IAAI,EAAEk3M,YAAY,CAAC;IAE1Dj4M,QAAQ,CAAC5E,QAAQ,CAAC68V,iBAAiB,EAAET,iBAAiB,EAAEj9I,WAAW,CAAC;IACpEv6M,QAAQ,CAAC5E,QAAQ,CAAC88V,gCAAgC,EAAEV,iBAAiB,EAAEa,qBAAqB,CAAC;EAC/F;EAEA,SAASrtO,mBAAmBA,CAAA,EAAG;IAC7B,IAAI,CAACitF,YAAY,IAAIA,YAAY,KAAK,EAAE,EAAE;MACxC2/I,iBAAiB,CAAC/8V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACL68V,iBAAiB,CAAC/8V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C;IAEA,IAAI,CAACo9M,iBAAiB,IAAIA,iBAAiB,KAAK,EAAE,EAAE;MAClD2/I,uBAAuB,CAACh9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAChD,CAAC,MAAM;MACL88V,uBAAuB,CAACh9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACnD;IAEA,IAAI,CAACq9M,qBAAqB,IAAIA,qBAAqB,KAAK,EAAE,EAAE;MAC1D2/I,wBAAwB,CAACj9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACjD,CAAC,MAAM;MACL+8V,wBAAwB,CAACj9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACpD;IAEA,IAAIu/V,kBAAkB,GAAGtC,mBAAmB,CAAC95V,aAAa,CAAC,UAAU,CAAC;IACtE,IAAIo8V,kBAAkB,CAACz6V,KAAK,KAAK,EAAE,EAAE;MACnCm4V,mBAAmB,CAACl9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC5C,CAAC,MAAM;MACLg9V,mBAAmB,CAACl9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC/C;;IAEA;IACA,IAAIw/V,sBAAsB,GAAGtC,uBAAuB,CAAC/5V,aAAa,CAAC,UAAU,CAAC;IAC9E,IAAIq8V,sBAAsB,CAAC16V,KAAK,KAAK,EAAE,EAAE;MACvCo4V,uBAAuB,CAACn9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAChD,CAAC,MAAM;MACLi9V,uBAAuB,CAACn9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACnD;;IAEA;IACA;IACA;IACA;IACA;IACA;;IAEA,IAAI,CAACy/M,WAAW,IAAIA,WAAW,KAAK,EAAE,EAAE;MACtC09I,iBAAiB,CAACp9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACLk9V,iBAAiB,CAACp9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C;IAGA,IAAI,CAACu9V,qBAAqB,IAAIA,qBAAqB,KAAK,EAAE,EAAE;MAC1DH,gCAAgC,CAACr9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACzD,CAAC,MAAM;MACLm9V,gCAAgC,CAACr9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAI5D;IAEA,IAAIy/V,6BAA6B,GAAGpC,0BAA0B,CAACl6V,aAAa,CAAC,OAAO,CAAC;IAErF,IAAI,CAACs8V,6BAA6B,CAAC36V,KAAK,KAAK,EAAE,IAAI26V,6BAA6B,CAAC36V,KAAK,KAAK,CAAC,IAAI26V,6BAA6B,CAAC36V,KAAK,IAAI,CAAC,KAAK26V,6BAA6B,CAACz7V,KAAK,CAAC07V,UAAU,KAAK,SAAS,EAAE;MACzMrC,0BAA0B,CAACt9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACnD,CAAC,MAAM;MACLo9V,0BAA0B,CAACt9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACtD;IAEA,IAAIu9V,qBAAqB,KAAK,GAAG,KAAKkC,6BAA6B,CAAC36V,KAAK,KAAK,EAAE,IAAI26V,6BAA6B,CAAC36V,KAAK,KAAK,CAAC,IAAI26V,6BAA6B,CAAC36V,KAAK,IAAI,CAAC,CAAC,EAAE;MAC1Ku4V,0BAA0B,CAACt9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACnD;IACAmsJ,YAAY,CAAC,CAAC;EAChB;EAEA,SAASuzM,iCAAiCA,CAAA,EAAG;IAC3C,IAAI3iB,SAAS,GAAG,IAAI/iU,IAAI,CAAC,CAAC;IAC1B,IAAI2lV,kBAAkB,GAAG,IAAI3lV,IAAI,CAACojM,qBAAqB,CAAC;IAExD,IAAI69I,YAAY,GAAGvqU,KAAK,CAACiF,QAAQ,CAACgqU,kBAAkB,EAAE5iB,SAAS,CAAC;IAEhE,IAAIke,YAAY,EAAE;MAChB8B,wBAAwB,CAACj9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACjD,CAAC,MAAM;MACL+8V,wBAAwB,CAACj9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACpD;EACF;EAEA,SAASosJ,YAAYA,CAAA,EAAG;IACtB,IAAI32C,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,IAAIk5V,YAAY,EAAE;MAC1ClmN,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACjCu9V,aAAa,CAACz9V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvCo+O,SAAS,CAACt+O,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC,CAAC,MAAM;MACLuzI,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACpCw9V,aAAa,CAACz9V,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC1Cq+O,SAAS,CAACt+O,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC;IAEA,IAAIwvD,MAAM,KAAKmqS,kBAAkB,IAAI,CAACroV,CAAC,CAACC,OAAO,CAACsyC,SAAS,EAAE;MACzDqrG,SAAS,CAACnvJ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC,CAAC,MAAM;MACLivJ,SAAS,CAACnvJ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC;EACF;EAEA,SAASqoI,WAAWA,CAAA,EAAG;IACrBy0N,iBAAiB,CAACz5V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE,IAAIi5V,SAAS,GAAGl5V,cAAc,CAACZ,KAAK,CAACuf,KAAK,CAAC,GAAG,CAAC;MAC/C,IAAIw7U,eAAe,GAAG,IAAI5lV,IAAI,CAAC2kV,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;MACjEtB,mBAAmB,GAAGuC,eAAe;MAErC,IAAIn6V,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCq4M,YAAY,GAAG,EAAE;MACnB,CAAC,MAAM;QACLA,YAAY,GAAGz3M,cAAc,CAACZ,KAAK;MACrC;MAEAs4M,iBAAiB,GAAG,EAAE;MACtBlD,+BAA+B,CAAC,CAAC;MACjChqF,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF6sO,uBAAuB,CAAC15V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC1D,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCs4M,iBAAiB,GAAG,EAAE;MACxB,CAAC,MAAM;QACLA,iBAAiB,GAAG13M,cAAc,CAACZ,KAAK;MAC1C;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF8sO,wBAAwB,CAAC35V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC3Dw8M,qBAAqB,GAAGx8M,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC1C66V,iCAAiC,CAAC,CAAC;MACnCvzM,YAAY,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF6wM,mBAAmB,CAAC55V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACrDw+M,4BAA4B,GAAGx+M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACjDorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;;IAEF;IACAgtO,uBAAuB,CAAC75V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzD0+M,gCAAgC,GAAG1+M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACrDorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFitO,iBAAiB,CAAC95V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpC26M,WAAW,GAAG,EAAE;MAClB,CAAC,MAAM;QACLA,WAAW,GAAG/5M,cAAc,CAACZ,KAAK;MACpC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFktO,gCAAgC,CAAC/5V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnE,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCy4V,qBAAqB,GAAG,EAAE;QAC1BF,0BAA0B,CAACr5V,KAAK,CAAC07V,UAAU,GAAG,QAAQ;MACxD,CAAC,MAAM;QACLnC,qBAAqB,GAAG73V,cAAc,CAACZ,KAAK;QAC5C,IAAIy4V,qBAAqB,KAAK,GAAG,EAAE;UACjCF,0BAA0B,CAACr5V,KAAK,CAAC07V,UAAU,GAAG,SAAS;QACzD,CAAC,MAAM;UACLrC,0BAA0B,CAACr5V,KAAK,CAAC07V,UAAU,GAAG,QAAQ;UACtD7+I,2BAA2B,GAAG,EAAE;QAClC;MACF;MACA3wF,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAGFmtO,0BAA0B,CAACh6V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5DggN,2BAA2B,GAAGhgN,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChDorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;;IAGF;IACC;IACC;IACE;IACH;IACC;IACF;IACC;IACD;IACA;IACA;IACF;;IAEEstO,aAAa,CAACn6V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC/C;MACA28V,aAAa,CAACz9V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvCuzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACnC,CAAC,CAAC;IAEFuzI,OAAO,CAACnwI,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzC;MACA28V,aAAa,CAACz9V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvCuzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACnC,CAAC,CAAC;EACJ;EACA;EACA,eAAe6/V,6BAA6BA,CAAA,EAAG;IAC7C,MAAM31P,YAAY,GAAG;MACnBjzF,KAAK,EAAE,KAAK;MACZZ,OAAO,EAAE,wBAAwB;MACjCgB,cAAc,EAAE,CACd,OAAO,EACP,4BAA4B,EAC5B,yCAAyC,EACzC,2BAA2B,CAC5B;MACDM,OAAO,EAAE;IACX,CAAC;;IAED;IACA,MAAM84F,SAAS,GAAG,CAChB;MAAEl4F,MAAM,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB;IAAE,CAAC,EACxF;MACEA,MAAM,EAAE,CACN,SAAS,EACT,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB;IAE1B,CAAC,CACF;IAED,MAAMgqG,MAAM,GAAGpsG,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;IACxC/zF,KAAK,CAAC9V,QAAQ,CAACkiH,MAAM,EAAE9R,SAAS,CAAC;IAEjC,OAAO8R,MAAM;EACf;;EAEA;EACA,SAASjG,iBAAiBA,CAACnQ,QAAQ,EAAE;IACnC,MAAM6nC,WAAW,GAAG/wI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD,IAAIqxI,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC2oG,QAAQ,CAACoQ,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAE7C,MAAMuF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEtCsF,IAAI,CAAC5E,WAAW,CAACyrG,QAAQ,CAACoQ,IAAI,CAAC;IAE/By3B,WAAW,CAACtzI,WAAW,CAAC4E,IAAI,CAAC;IAC7B0uI,WAAW,CAACtzI,WAAW,CAACm0I,MAAM,CAAC;IAC/B;;IAEA,OAAOb,WAAW;EACpB;EAEA,SAASomN,cAAcA,CAAA,EAAG;IACxB;IACA;IACA,IAAIp0V,IAAI,GAAG;MACT8/C,UAAU;MACVi3J,UAAU;MACVG,YAAY,EACVmgJ,mBAAmB,CAACp3U,WAAW,CAAC,CAAC,GACjC,GAAG,GACH,CAACo3U,mBAAmB,CAACn3U,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAChE,GAAG,GACH,IAAI;MACN+tJ,iBAAiB;MACjB;MACAC,qBAAqB,EAAEzpL,IAAI,CAACkY,eAAe,CAACuxK,qBAAqB,CAACh5L,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAChFg7L,4BAA4B;MAC5BE,gCAAgC;MAChCE,WAAW;MACXoB,2BAA2B;MAC3BrxJ;IACF,CAAC;IACD;IACAikH,OAAO,CAACmtC,0BAA0B,CAAC36M,IAAI,EAAE,UAAUmlG,OAAO,EAAE;MAC1Dt3F,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrBirB,UAAU,CAAC,YAAY;QACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB,CAAC,EAAE,IAAI,CAAC;IACV,CAAC,CAAC;IAEF,SAASuuJ,aAAaA,CAACC,OAAO,EAAE;MAC9B,IAAIA,OAAO,YAAY/lV,IAAI,IAAI,CAACyK,KAAK,CAACs7U,OAAO,CAACr7U,OAAO,CAAC,CAAC,CAAC,EAAE;QACxD,OACEq7U,OAAO,CAAC95U,WAAW,CAAC,CAAC,GAAG,GAAG,GAAG85U,OAAO,CAAC75U,QAAQ,CAAC,CAAC,CAAC/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG;MAE5F,CAAC,MAAM;QACL,OAAOz7B,IAAI,CAACkY,eAAe,CAACk0T,OAAO,CAAC37U,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACpD;IACF;EACF;EAEA,SAAS+1U,cAAcA,CAACwB,QAAQ,EAAE;IAChC,IAAI31V,IAAI,GAAG;MACT8/C,UAAU;MACVi3J,UAAU;MACVG,YAAY,EACVmgJ,mBAAmB,CAACp3U,WAAW,CAAC,CAAC,GACjC,GAAG,GACH,CAACo3U,mBAAmB,CAACn3U,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAChE,GAAG,GACH,IAAI;MACN;MACA+tJ,iBAAiB;MACjBC,qBAAqB,EAAEzpL,IAAI,CAACkY,eAAe,CAACuxK,qBAAqB,CAACh5L,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAChFg7L,4BAA4B;MAC5BE,gCAAgC;MAChCE,WAAW;MACXoB,2BAA2B;MAC3BrxJ,MAAM;MACNgwE;IACF,CAAC;IACD;IACAi0C,OAAO,CAACstC,0BAA0B,CAAC96M,IAAI,EAAE,UAAUmlG,OAAO,EAAE;MAC1Dt3F,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrB,IAAIy7V,QAAQ,IAAI,YAAY,EAAE;QAC5BxwU,UAAU,CAAC,YAAY;UACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrBkQ,OAAO,CAACjQ,IAAI,CAAC,CAAC;UACdwC,GAAG,CAACg0M,wBAAwB,CAAC5wJ,UAAU,EAAE,gBAAgB,CAAC;QAC5D,CAAC,EAAE,IAAI,CAAC;MACV,CAAC,MAAM;QACL;QACA36B,UAAU,CAAC,YAAY;UACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC;MACV;IACF,CAAC,CAAC;EACJ;EACA;EACA,SAAShgD,kBAAkBA,CAACwrD,UAAU,EAAE;IACtC,IAAI5nC,WAAW,GAAGniK,KAAK,CAAC1P,KAAK,CAAC;MAC5BG,EAAE,EAAE,oBAAoB;MACxBa,UAAU,EAAE;IACd,CAAC,CAAC;IACF,IAAIkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QAC1BkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;QACvB,IAAIx+I,MAAM,GAAG,MAAM68I,OAAO,CAACyqC,6BAA6B,CAAClB,UAAU,CAAC;QACpE,IAAIpmL,MAAM,CAACqpU,8BAA8B,KAAK,GAAG,EAAE;UACjDt9V,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACtB;MACF;IACF,CAAC,CAAC;IACF,IAAI5jD,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,OAAO;MACboB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;MACzB;IACF,CAAC,CAAC;IACF3lI,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B,IAAIj+G,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,8CAA8C;IACzE+0K,WAAW,CAACz0K,WAAW,CAACgvC,cAAc,CAAC;IACvCylI,WAAW,CAACz0K,WAAW,CAAC8uC,OAAO,CAAC;IAChCx8B,KAAK,CAAC9S,IAAI,CAACi1K,WAAW,CAAC;EACzB;EAEA,OAAO;IACLhyK;EACF,CAAC;AACH,CAAC,EAAE,CAAC;ACj1BJ,MAAMqyM,wBAAwB,GAAG,CAAC,MAAM;EAEtC;EACA,IAAI/D,gBAAgB;EACpB,IAAI2/G,cAAc;EAClB,IAAIC,YAAY;EAChB,IAAI4uC,gBAAgB;EACpB,IAAIthL,gBAAgB;EACpB,IAAIuhL,qBAAqB;EACzB,IAAIC,wBAAwB,CAAC,CAAE;EAC/B,IAAI95I,eAAe,CAAC,CAAW;EAC/B,IAAI+5I,mBAAmB,CAAC,CAAM;EAC9B,IAAIC,4BAA4B;EAChC,IAAIC,iBAAiB;EACrB,IAAIC,2BAA2B;EAC/B,IAAIC,qBAAqB;;EAEzB;EACF,IAAIC,eAAe;EACnB,IAAI/oC,WAAW;EACf,IAAI7F,iBAAiB;EACrB,IAAIH,aAAa;EACjB,IAAI8nC,aAAa;EACjB,IAAI/nC,aAAa;;EAEjB;EACA,IAAI3rQ,UAAU;EACd,IAAIgoE,UAAU;EACd,IAAIwD,WAAW;EACf,IAAIh4F,SAAS;EACb,IAAIf,OAAO;EACX,IAAI6jL,QAAQ;EACZ,IAAIzoC,QAAQ;EACZ,IAAI0oC,WAAW;EACf,IAAIC,gBAAgB;EACpB,IAAIC,OAAO;EACX,IAAIC,WAAW;EACf,IAAIC,mBAAmB;EACvB,IAAI/rD,KAAK;EACT,IAAI35F,WAAW;EACf,IAAI2lJ,SAAS;;EAEb;EACA,IAAIvuF,aAAa;EACjB,IAAI5+D,MAAM;EACV,IAAIgwE,SAAS;EACb,IAAIy1E,eAAe;;EAEnB;EACI;EACA,IAAIziC,UAAU;EACd,IAAIC,YAAY,GAAG,EAAE;EACrB,IAAIC,gBAAgB,GAAG,EAAE;EACzB,IAAIC,gBAAgB,GAAG,EAAE;EACzB,IAAIC,YAAY,GAAG,EAAE;EACrB,IAAIC,aAAa,GAAG,EAAE;EACtB,IAAIC,eAAe,GAAG,EAAE;;EAExB;EACA,IAAIC,aAAa;EACjB,IAAIxvD,aAAa;EACjB,IAAIE,aAAa;EACjB,IAAIE,SAAS;EACb,IAAIE,UAAU;EACd,IAAImoC,YAAY;EAEhB,IAAI20M,YAAY;EAChB,IAAIC,cAAc;EAEtB,IAAIlH,YAAY,GAAG,KAAK;EAExB,IAAIC,kBAAkB;EAEpB,eAAev2V,IAAIA,CAACq+T,YAAY,EAAEo4B,eAAe,EAAEjmJ,yBAAyB,EAAEC,+BAA+B,EAAEimJ,mBAAmB,EAAEC,mBAAmB,EAA2B;IAAA,IAAzBC,WAAW,GAAAvvV,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,SAAS;IAE9K2H,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBnP,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC9I,OAAO,CAACgF,CAAC,IAAIA,CAAC,CAACzF,MAAM,CAAC,CAAC,CAAC;IAEtE+lD,UAAU,GAAG8zS,eAAe,CAACn2V,EAAE;IAC/Bi2V,kBAAkB,GAAGG,mBAAmB;IAExC,IAAIr4B,YAAY,IAAIz/S,MAAM,CAAC8B,IAAI,CAAC29S,YAAY,CAAC,CAACjhU,MAAM,KAAK,CAAC,EAAE;MAE1DgvD,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzBs9E,UAAU,GAAG0zM,YAAY,CAAC,CAAC,CAAC,CAAC1zM,UAAU;MACvCwD,WAAW,GAAGkwM,YAAY,CAAC,CAAC,CAAC,CAAClwM,WAAW;MACzCh4F,SAAS,GAAGkoS,YAAY,CAAC,CAAC,CAAC,CAACloS,SAAS;MACrCf,OAAO,GAAGipS,YAAY,CAAC,CAAC,CAAC,CAACjpS,OAAO;MACjC6jL,QAAQ,GAAGolH,YAAY,CAAC,CAAC,CAAC,CAACplH,QAAQ;MACnCzoC,QAAQ,GAAG6tJ,YAAY,CAAC,CAAC,CAAC,CAAC7tJ,QAAQ;MACnC0oC,WAAW,GAAGmlH,YAAY,CAAC,CAAC,CAAC,CAACnlH,WAAW;MACzCC,gBAAgB,GAAGklH,YAAY,CAAC,CAAC,CAAC,CAACllH,gBAAgB,CAAC,CAAI;MACxDC,OAAO,GAAGilH,YAAY,CAAC,CAAC,CAAC,CAACjlH,OAAO,CAAC,CAAmB;MACrDC,WAAW,GAAGglH,YAAY,CAAC,CAAC,CAAC,CAAChlH,WAAW,CAAC,CAAY;MACtDC,mBAAmB,GAAG+kH,YAAY,CAAC,CAAC,CAAC,CAAC/kH,mBAAmB;MACzD/rD,KAAK,GAAG8wK,YAAY,CAAC,CAAC,CAAC,CAAC9wK,KAAK;MAC7B35F,WAAW,GAAGyqQ,YAAY,CAAC,CAAC,CAAC,CAACzqQ,WAAW;MACzC2lJ,SAAS,GAAG8kH,YAAY,CAAC,CAAC,CAAC,CAAC9kH,SAAS;IAEtC,CAAC,MAAM;MAENvuF,aAAa,GAAG98G,CAAC,CAACC,OAAO,CAACmoC,QAAQ;MAClC8V,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzB+uF,SAAS,GAAGo0E,yBAAyB;MACrCqB,eAAe,GAAGpB,+BAA+B;MACjD9lF,UAAU,GAAG,GAAG;MAChBwD,WAAW,GAAGwoO,mBAAmB;MACjC;MACAxgU,SAAS,GAAG,EAAE;MACdf,OAAO,GAAG,EAAE;MACZ6jL,QAAQ,GAAG,EAAE;MACbzoC,QAAQ,GAAG,EAAE;MACb0oC,WAAW,GAAG,EAAE;MAChBC,gBAAgB,GAAG,EAAE,CAAC,CAAG;MACzBC,OAAO,GAAG,EAAE,CAAC,CAAW;MACxBC,WAAW,GAAG,EAAE,CAAC,CAAQ;MACzBC,mBAAmB,GAAG,EAAE;MACxB/rD,KAAK,GAAG,EAAE;MACV35F,WAAW,GAAG,EAAE;MAChB2lJ,SAAS,GAAG,EAAE;IAEf;IAEA,IAAIq9I,WAAW,KAAK,SAAS,IAAK,CAAC1oV,CAAC,CAACC,OAAO,CAACwyC,SAAS,EAAE;MACvD21S,YAAY,GAAG,IAAI;IACpB;IAEA,IAAIM,WAAW,KAAK,UAAU,IAAK,CAAC1oV,CAAC,CAACC,OAAO,CAACuyC,SAAS,EAAE;MACxD41S,YAAY,GAAG,IAAI;IACpB;IAEA,IAAKlqS,MAAM,KAAKsqS,mBAAmB,EAAG;MACrCJ,YAAY,GAAG,IAAI;IACpB;IAEDhoJ,gBAAgB,GAAG3qM,KAAK,CAACxD,KAAK,CAAC;MAChCU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,cAAc;MACrBrB,KAAK,EAAE,WAAW;MACfc,KAAK,EAAE8uB,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACtD;MACA/e,QAAQ,EAAE;MACb;IACC,CAAC,CAAC;IAEF+rT,cAAc,GAAGtqT,KAAK,CAACxD,KAAK,CAAC;MACzB8B,KAAK,EAAE,YAAY;MACnBpB,IAAI,EAAE,MAAM;MACZa,KAAK,EAAEy0B,SAAS;MAChBj0B,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEJpoC,YAAY,GAAGvqT,KAAK,CAACxD,KAAK,CAAC;MACvB8B,KAAK,EAAE,UAAU;MACjBpB,IAAI,EAAE,MAAM;MACZa,KAAK,EAAE0zB,OAAO;MACdlzB,QAAQ,EAAEo0V;MACV;MACD;IACD,CAAC,CAAC;IAEJwG,gBAAgB,GAAGh7V,QAAQ,CAAC3B,KAAK,CAAC;MAC9B8B,KAAK,EAAE,WAAW;MAClBF,UAAU,EAAE,kBAAkB;MAC9BL,KAAK,EAAEu3M,QAAQ;MACf/2M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEJ96K,gBAAgB,GAAG15K,QAAQ,CAAC3B,KAAK,CAAC;MAC9BG,EAAE,EAAE,kBAAkB;MACtB2B,KAAK,EAAE,UAAU;MACjBF,UAAU,EAAE,kBAAkB;MAC9BL,KAAK,EAAE8uK,QAAQ;MACftuK,QAAQ,EAAEo0V;IACd,CAAC,CAAC;IAEFyG,qBAAqB,GAAGj7V,QAAQ,CAAC3B,KAAK,CAAC;MACrC8B,KAAK,EAAE,gBAAgB;MACvBF,UAAU,EAAE,uBAAuB;MACnCL,KAAK,EAAEw3M,WAAW;MAClBh3M,QAAQ,EAAEo0V;IACZ,CAAC,CAAC;IAEF4G,4BAA4B,GAAGp7V,QAAQ,CAAC3B,KAAK,CAAC;MAC5C8B,KAAK,EAAE,uBAAuB;MAC9BF,UAAU,EAAE,8BAA8B;MAC1CL,KAAK,EAAEkyD,WAAW;MAClB1xD,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEF6G,iBAAiB,GAAGr7V,QAAQ,CAAC3B,KAAK,CAAC;MACjC8B,KAAK,EAAE,WAAW;MAClBF,UAAU,EAAE,mBAAmB;MAC/BL,KAAK,EAAE63M,SAAS;MAChBr3M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;;IAEF;IACA0G,wBAAwB,GAAGl7V,QAAQ,CAAC3B,KAAK,CAAC;MACxC8B,KAAK,EAAE,sBAAsB;MAC7BF,UAAU,EAAE,0BAA0B;MACtCL,KAAK,EAAEy3M,gBAAgB;MACvBj3M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;;IAEF;IACApzI,eAAe,GAAGphN,QAAQ,CAAC3B,KAAK,CAAC;MAC/B8B,KAAK,EAAE,SAAS;MAChBF,UAAU,EAAE,iBAAiB;MAC7BL,KAAK,EAAE03M,OAAO;MACdl3M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;;IAEF;IACA2G,mBAAmB,GAAGn7V,QAAQ,CAAC3B,KAAK,CAAC;MACnC8B,KAAK,EAAE,gBAAgB;MACvBF,UAAU,EAAE,qBAAqB;MACjCL,KAAK,EAAE23M,WAAW;MAClBn3M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEF8G,2BAA2B,GAAGt7V,QAAQ,CAAC3B,KAAK,CAAC;MAC3C8B,KAAK,EAAE,wBAAwB;MAC/BF,UAAU,EAAE,6BAA6B;MACzCL,KAAK,EAAE43M,mBAAmB;MAC1Bp3M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEF+G,qBAAqB,GAAG15V,KAAK,CAACxD,KAAK,CAAC;MAClC8B,KAAK,EAAE,mBAAmB;MAC1BP,KAAK,EAAE6rJ,KAAK;MACZ1sJ,IAAI,EAAE,UAAU;MAChBM,UAAU,EAAE,UAAU;MACtBe,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEF/hC,WAAW,GAAGr0T,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,MAAM;MACZY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBq1V,cAAc,CAAC,MAAM,CAAC;MACxB;IACF,CAAC,CAAC;IACFtoC,iBAAiB,GAAGxuT,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,YAAY;MAClBG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACXY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClBq1V,cAAc,CAAC,YAAY,CAAC;MAChC;IACF,CAAC,CAAC;IACFX,aAAa,GAAGn2V,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACb;MACEoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACrBs1V,cAAc,CAAC,CAAC;MACjB;IACF,CAAC,CAAC;IACF3oC,aAAa,GAAGpuT,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,QAAQ;MACf;MACCoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBysJ,kBAAkB,CAACzjC,UAAU,CAAC;MAChC;IACF,CAAC,CAAC;IACF4jM,aAAa,GAAGruT,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,UAAU;MAChBN,IAAI,EAAE,OAAO;MACbY,UAAU,EAAE,CAAC,gBAAgB,CAAC;MAC9BQ,QAAQ,EAAE,MAAAA,CAAA,KAAa;QACrB6uK,QAAQ,GAAG,EAAE;QACbjxK,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;IAEFkvJ,eAAe,GAAGp9V,MAAM,CAACC,KAAK,CAAC;MAC7BM,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACXY,UAAU,EAAE,CAAC,cAAc,CAAC;MAC5BQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB;QACEouK,kBAAkB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC;QACvD;MACC;IACF,CAAC,CAAC;IAEF9qC,WAAW,CAAC,CAAC;IAEb,IAAIiyN,UAAU,GAAG/9O,iBAAiB,CAACs9O,eAAe,CAAC;IAEjD,IAAI1vU,SAAS,GAAGjnB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0mB,SAAS,CAACpqB,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACvC,IAAI60I,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC,MAAM8T,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAAClX,SAAS,GAAG,gCAAgC;IACpDkX,OAAO,CAACxX,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAE1CkqB,SAAS,CAACxpB,WAAW,CAAC25V,UAAU,CAAC;IAClC;IACAnwU,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAC7B3qH,SAAS,CAACxpB,WAAW,CAAC4W,OAAO,CAAC;IAC9B4S,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAE7B,MAAMylN,eAAe,GAAGr3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD82V,eAAe,CAACx6V,SAAS,CAACE,GAAG,CAAC,2CAA2C,CAAC;IAC1Es6V,eAAe,CAAC55V,WAAW,CAAC+wM,gBAAgB,CAAC;IAC7C6oJ,eAAe,CAAC55V,WAAW,CAAC0wT,cAAc,CAAC;IAC3CkpC,eAAe,CAAC55V,WAAW,CAAC2wT,YAAY,CAAC;IAEzC,MAAM0qC,eAAe,GAAG94V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDu4V,eAAe,CAACj8V,SAAS,CAACE,GAAG,CAAC,2CAA2C,CAAC;IAC1E+7V,eAAe,CAACr7V,WAAW,CAACu/V,gBAAgB,CAAC;IAC7ClE,eAAe,CAACr7V,WAAW,CAACi+K,gBAAgB,CAAC;IAC7C,IAAIttK,CAAC,CAACC,OAAO,CAAC2yC,kBAAkB,EAAE83S,eAAe,CAACr7V,WAAW,CAAC+/V,eAAe,CAAC;IAI9E,MAAMzE,eAAe,GAAG/4V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDw4V,eAAe,CAACl8V,SAAS,CAACE,GAAG,CAAC,2CAA2C,CAAC;IAC1E;IACA;IACA;IACAg8V,eAAe,CAACt7V,WAAW,CAACw/V,qBAAqB,CAAC;IAClDlE,eAAe,CAACt7V,WAAW,CAAC2/V,4BAA4B,CAAC;IACzDrE,eAAe,CAACt7V,WAAW,CAAC4/V,iBAAiB,CAAC;IAC9CtE,eAAe,CAACt7V,WAAW,CAAC6/V,2BAA2B,CAAC;IAExDr2U,SAAS,CAACxpB,WAAW,CAAC45V,eAAe,CAAC;IACtCpwU,SAAS,CAACxpB,WAAW,CAACq7V,eAAe,CAAC;IACtC7xU,SAAS,CAACxpB,WAAW,CAACs7V,eAAe,CAAC;IAEpC9xU,SAAS,CAACxpB,WAAW,CAAC8/V,qBAAqB,CAAC;IAE5C,IAAIjG,eAAe,GAAGt3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnD+2V,eAAe,CAACz6V,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAEhD,IAAIw6V,aAAa,GAAGv3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDg3V,aAAa,CAAC16V,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAE5Cw6V,aAAa,CAACp6V,SAAS,GAAG,yGAAyG;IACnIm6V,eAAe,CAAC75V,WAAW,CAAC85V,aAAa,CAAC;IAE1C,IAAIhrT,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAC/B8tH,UAAU,IAAI,GAAG,GAAIt+E,OAAO,CAAC9uC,WAAW,CAACg3T,WAAW,CAAC,GAAIloR,OAAO,CAAC9uC,WAAW,CAAC84V,aAAa,CAAC;IAC3F1rO,UAAU,IAAI,GAAG,GAAIt+E,OAAO,CAAC9uC,WAAW,CAACmxT,iBAAiB,CAAC,GAAGriR,OAAO,CAAC9uC,WAAW,CAAC+wT,aAAa,CAAC;IAGjG,IAAIoG,QAAQ,GAAG50T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Cq0T,QAAQ,CAAC/3T,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACjC63T,QAAQ,CAACn3T,WAAW,CAACgxT,aAAa,CAAC;IAEnC,IAAI+oC,MAAM,GAAGx3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1Ci3V,MAAM,CAAC36V,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC7By6V,MAAM,CAAC/5V,WAAW,CAAC8uC,OAAO,CAAC;IAC3BirT,MAAM,CAAC/5V,WAAW,CAACm3T,QAAQ,CAAC;IAE7B,IAAItoQ,MAAM,KAAKmqS,kBAAkB,EAAEe,MAAM,CAAC/5V,WAAW,CAAC65V,eAAe,CAAC;IAEtErwU,SAAS,CAACxpB,WAAW,CAAC+5V,MAAM,CAAC;IAE7BwB,uBAAuB,CAAC,CAAC;IACzB2E,iCAAiC,CAAChH,eAAe,CAACn2V,EAAE,CAAC;IACrDo9V,2BAA2B,CAAC,CAAC;IAC7Bv3I,uBAAuB,CAAC,CAAC;IAG3Bn3M,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACwpB,SAAS,CAAC;IAEvC/X,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;;IAEtB;IACAm2F,mBAAmB,CAAC,CAAC;EACvB;EAED,eAAe2wO,iCAAiCA,CAACE,iBAAiB,EAAE;IAEnE,MAAM;MACLxtL,wBAAwB,EAAEytL;IAC3B,CAAC,GAAG,MAAMvtL,OAAO,CAACC,uBAAuB,CAAC,CAAC;IAC1C;;IAEA,IAAIztK,IAAI,GAAG+6V,SAAS,CAAC/2V,GAAG,CAAEg3V,OAAO,KAAM;MACtCv9V,EAAE,EAAEu9V,OAAO,CAACzuL,UAAU;MACtB1tK,KAAK,EAAEm8V,OAAO,CAACzuL,UAAU;MACzB3uK,IAAI,EAAGo9V,OAAO,CAACz9O,QAAQ,IAAI,EAAE,GAAIy9O,OAAO,CAACxuL,YAAY,GAAGwuL,OAAO,CAACxuL,YAAY,GAAG,MAAM,GAAGwuL,OAAO,CAACz9O;IACjG,CAAC,CAAC,CAAC;IAEA,MAAM3pG,KAAK,GAAG5T,IAAI,CAACwmC,SAAS,CAAEhpB,CAAC,IAAKA,CAAC,CAAC/f,EAAE,IAAIkwK,QAAQ,CAAC;IACrD,IAAI/5J,KAAK,KAAK,CAAC,CAAC,EAAE;MACjB;MACO+5J,QAAQ,GAAG,EAAE;IACrB;IAEM1jD,mBAAmB,CAAC,CAAC;IAE9B,IAAIgxO,YAAY,GAAGj7V,IAAI,CAACyI,MAAM,CAAE+U,CAAC,IAAKA,CAAC,CAAC/f,EAAE,IAAI,CAAC,CAAC;IAEhDw9V,YAAY,CAACr9R,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IACrEqB,QAAQ,CAAC5E,QAAQ,CAAC,kBAAkB,EAAE4gW,YAAY,EAAEttL,QAAQ,CAAC;EAC9D;EAEC,eAAektL,2BAA2BA,CAAA,EAAG;IAE1C,MAAM;MACJK,qBAAqB,EAAEC;IACzB,CAAC,GAAG,MAAM3tL,OAAO,CAACqoC,oBAAoB,CAAC,CAAC;IACxC;IACA,IAAI71M,IAAI,GAAGm7V,YAAY,CAACn3V,GAAG,CAAEqyM,WAAW,KAAM;MAC5C54M,EAAE,EAAE44M,WAAW,CAAC7hF,WAAW;MAC3B31H,KAAK,EAAEw3M,WAAW,CAAC7hF,WAAW;MAC9B52H,IAAI,EAAEy4M,WAAW,CAAC+kJ;IACpB,CAAC,CAAC,CAAC;IAEH,MAAMxnV,KAAK,GAAG5T,IAAI,CAACwmC,SAAS,CAAEhpB,CAAC,IAAKA,CAAC,CAAC/f,EAAE,IAAI44M,WAAW,CAAC;IACxD,IAAIziM,KAAK,KAAK,CAAC,CAAC,EAAE;MACjB;IAAA;IAGD5T,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,uBAAuB,EAAE2F,IAAI,EAAEq2M,WAAW,CAAC;EAC/D;EAEA,eAAeiN,uBAAuBA,CAAA,EAAG;IAEvC,MAAM;MACJ+3I,iBAAiB,EAAE5/V;IACrB,CAAC,GAAG,MAAM+xK,OAAO,CAACsoC,gBAAgB,CAAC,CAAC;IACpC;IACA,IAAI91M,IAAI,GAAGvE,QAAQ,CAACuI,GAAG,CAAEuyM,OAAO,KAAM;MACpC94M,EAAE,EAAE84M,OAAO,CAAC+kJ,WAAW;MACvBz8V,KAAK,EAAE03M,OAAO,CAAC+kJ,WAAW;MAC1B19V,IAAI,EAAE24M,OAAO,CAACglJ;IAChB,CAAC,CAAC,CAAC;IAEH,MAAM3nV,KAAK,GAAG5T,IAAI,CAACwmC,SAAS,CAAEhpB,CAAC,IAAKA,CAAC,CAAC/f,EAAE,IAAI84M,OAAO,CAAC;IACpD,IAAI3iM,KAAK,KAAK,CAAC,CAAC,EAAE;MACjB;IAAA;IAGD5T,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,iBAAiB,EAAE2F,IAAI,EAAEu2M,OAAO,CAAC;EACrD;EAEF,SAAS0/I,uBAAuBA,CAAA,EAAG;IACjC,MAAMuF,oBAAoB,GAAG,CAC3B;MAAE59V,IAAI,EAAE,QAAQ;MAAEiB,KAAK,EAAE;IAAS,CAAC,EACnC;MAAEjB,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,EAC3B;MAAEjB,IAAI,EAAE,GAAG;MAAEiB,KAAK,EAAE;IAAI,CAAC,EACzB;MAAEjB,IAAI,EAAE,GAAG;MAAEiB,KAAK,EAAE;IAAI,CAAC,EACzB;MAAEjB,IAAI,EAAE,GAAG;MAAEiB,KAAK,EAAE;IAAI,CAAC,CAC1B;IACD,MAAM43V,iBAAiB,GAAG,CACxB;MAAE74V,IAAI,EAAE,QAAQ;MAAEiB,KAAK,EAAE;IAAS,CAAC,EACnC;MAAEjB,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,EAC3B;MAAEjB,IAAI,EAAE,IAAI;MAAEiB,KAAK,EAAE;IAAI,CAAC,CAE3B;IAEDI,QAAQ,CAAC5E,QAAQ,CAAC4/V,gBAAgB,EAAEuB,oBAAoB,EAAEplJ,QAAQ,CAAC;IACpE;IACA;IACAn3M,QAAQ,CAAC5E,QAAQ,CAACggW,4BAA4B,EAAE5D,iBAAiB,EAAE1lS,WAAW,CAAC;IAC/E9xD,QAAQ,CAAC5E,QAAQ,CAACigW,iBAAiB,EAAE7D,iBAAiB,EAAE//I,SAAS,CAAC;IACjEz3M,QAAQ,CAAC5E,QAAQ,CAACkgW,2BAA2B,EAAE9D,iBAAiB,EAAEhgJ,mBAAmB,CAAC;EACxF;EAEA,SAASxsF,mBAAmBA,CAAA,EAAG;IAE7B,IAAI,CAACmsF,QAAQ,IAAIA,QAAQ,KAAK,EAAE,EAAE;MAChC6jJ,gBAAgB,CAACngW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACvC;IACF,CAAC,MAAM;MACLigW,gBAAgB,CAACngW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC3C;IACD;IAEA,IAAI,CAAC4zK,QAAQ,IAAIA,QAAQ,KAAK,EAAE,EAAE;MAChCgL,gBAAgB,CAAC7+K,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACzC,CAAC,MAAM;MACL2+K,gBAAgB,CAAC7+K,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC5C;IAEA,IAAI,CAACs8M,WAAW,IAAIA,WAAW,KAAK,EAAE,EAAE;MACtC6jJ,qBAAqB,CAACpgW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9C,CAAC,MAAM;MACLkgW,qBAAqB,CAACpgW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACjD;IAEA,IAAI,CAACg3D,WAAW,IAAIA,WAAW,KAAK,EAAE,EAAE;MACtCspS,4BAA4B,CAACvgW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACrD,CAAC,MAAM;MACLqgW,4BAA4B,CAACvgW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACxD;IAEA,IAAI,CAAC28M,SAAS,IAAIA,SAAS,KAAK,EAAE,EAAE;MAClC4jJ,iBAAiB,CAACxgW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACLsgW,iBAAiB,CAACxgW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C;;IAEA;IACA,IAAI,CAACu8M,gBAAgB,IAAIA,gBAAgB,KAAK,EAAE,EAAE;MAChD6jJ,wBAAwB,CAACrgW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACjD,CAAC,MAAM;MACLmgW,wBAAwB,CAACrgW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACpD;;IAEA;IACA,IAAI,CAACw8M,OAAO,IAAIA,OAAO,KAAK,EAAE,EAAE;MAC9B8J,eAAe,CAACvmN,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACxC,CAAC,MAAM;MACLqmN,eAAe,CAACvmN,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC3C;;IAEA;IACA,IAAI,CAACy8M,WAAW,IAAIA,WAAW,KAAK,EAAE,EAAE;MACtC4jJ,mBAAmB,CAACtgW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC5C,CAAC,MAAM;MACLogW,mBAAmB,CAACtgW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC/C;IAEA,IAAI,CAAC08M,mBAAmB,IAAIA,mBAAmB,KAAK,EAAE,EAAE;MACtD8jJ,2BAA2B,CAACzgW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACpD,CAAC,MAAM;MACLugW,2BAA2B,CAACzgW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACvD;IAEA,IAAIo0N,SAAS,GAAGqsI,qBAAqB,CAACt9V,aAAa,CAAC,UAAU,CAAC;IAE/D,IAAIixN,SAAS,CAACtvN,KAAK,KAAK,EAAE,EAAE;MAC1B27V,qBAAqB,CAAC1gW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9C,CAAC,MAAM;MACLwgW,qBAAqB,CAAC1gW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACjD;IAEA86V,qBAAqB,CAAC,CAAC;IACvBC,mBAAmB,CAAC,CAAC;IACrBC,iBAAiB,CAAC,CAAC;IACnB5uM,YAAY,CAAC,CAAC;EAChB;EAEA,SAAS0uM,qBAAqBA,CAAA,EAAG;IAE/B,IAAI9d,SAAS,GAAG,IAAI/iU,IAAI,CAAC,CAAC;IAC1B,IAAIghV,aAAa,GAAG,IAAIhhV,IAAI,CAACs3G,WAAW,CAAC;IAEzC,IAAI2pO,YAAY,GAAGvqU,KAAK,CAACiF,QAAQ,CAACqlU,aAAa,EAAEje,SAAS,CAAC;IAE3D,IAAI,CAACke,YAAY,EAAE;MACjBxpJ,gBAAgB,CAAC3xM,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACzC,CAAC,MAAM;MACLyxM,gBAAgB,CAAC3xM,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC5C;EAEF;EAEA,SAASosJ,YAAYA,CAAA,EAAG;IACtB,IAAI32C,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAKksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,IAAKk5V,YAAY,EAAE;MAC1C/hC,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3Cw5V,aAAa,CAAC15V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,MAAM;MACL03T,WAAW,CAAC53T,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACxC8xT,iBAAiB,CAAC/xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC9Cy5V,aAAa,CAAC15V,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC5C;IAEA,IAAKwvD,MAAM,KAAKmqS,kBAAkB,IAAK,CAACroV,CAAC,CAACC,OAAO,CAACsyC,SAAS,EAAE;MAC3D6tQ,aAAa,CAAC3xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,MAAM;MACLyxT,aAAa,CAAC3xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC5C;EAEJ;EAEF,SAASg7V,iBAAiBA,CAAA,EAAG;IAE3B,IAAIl/H,QAAQ,GAAGw1F,YAAY,CAACnuT,aAAa,CAAC,OAAO,CAAC;IAClD,IAAIgvB,UAAU,GAAGyB,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACrCytT,kBAAkB,GAAGvnU,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpE,IAAI82U,kBAAkB,KAAKhpU,UAAU,IAAIipU,oBAAoB,CAACt/H,QAAQ,CAACh3N,KAAK,CAAC,EAC7E;MACEwsT,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACnC;IACF,CAAC,MAAM;MACLqxT,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACxC;IAEA,IAAIq7V,mBAAmB,GAAG1/H,qBAAqB,CAAC,UAAU,CAAC;IAE3D,IAAI0/H,mBAAmB,EAAE;MACvB/pC,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAExC,CAAC,MAAM;MACLsxT,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACnC;IACF;IAEA,IAAIq7V,cAAc,GAAG1nU,IAAI,CAACkb,YAAY,CAACgtL,QAAQ,CAACh3N,KAAK,CAAC;IAEtD,IAAIw2V,cAAc,EAAE;MAClBhqC,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAExC,CAAC,MAAM;MACLsxT,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACnC;IACF;EACF;EAEA,SAAS86V,mBAAmBA,CAAA,EAAG;IAE7B,IAAIl/H,UAAU,GAAGw1F,cAAc,CAACluT,aAAa,CAAC,OAAO,CAAC;IACtD,IAAIgvB,UAAU,GAAGyB,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACrCytT,kBAAkB,GAAGvnU,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpE,IAAI82U,kBAAkB,KAAKhpU,UAAU,IAAIipU,oBAAoB,CAACv/H,UAAU,CAAC/2N,KAAK,CAAC,EAC/E;MACEusT,cAAc,CAACtxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACrC;IACF,CAAC,MAAM;MACLoxT,cAAc,CAACtxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C;IAEA,IAAIu7V,gBAAgB,GAAG3nU,IAAI,CAACkb,YAAY,CAAC+sL,UAAU,CAAC/2N,KAAK,CAAC;IAC1D,IAAIy2V,gBAAgB,EAAE;MACpBlqC,cAAc,CAACtxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACLqxT,cAAc,CAACtxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACrC;IACF;EAEF;EAEA,SAASm7V,oBAAoBA,CAACI,WAAW,EAAE;IACzC,IAAIC,OAAO,GAAG,IAAIxhV,IAAI,CAAC,CAAC;IACxB,IAAIyhV,OAAO,GAAGD,OAAO,CAACh1U,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,IAAIg1U,OAAO,CAACh1U,QAAQ,CAAC,CAAC,EAAE,GAAGg1U,OAAO,CAACh1U,QAAQ,CAAC,CAAC;IACvF,IAAIk1U,SAAS,GACXF,OAAO,CAAC/pU,UAAU,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI+pU,OAAO,CAAC/pU,UAAU,CAAC,CAAC,EAAE,GAAG+pU,OAAO,CAAC/pU,UAAU,CAAC,CAAC;IACjF,OACEzX,IAAI,CAACC,KAAK,CAAC,cAAcshV,WAAW,EAAE,CAAC,GACvCvhV,IAAI,CAACC,KAAK,CAAC,cAAcwhV,OAAO,IAAIC,SAAS,EAAE,CAAC;EAEpD;EAGA,SAAShgI,qBAAqBA,CAAC7sL,YAAY,EAAE;IAC3C,IAAI+sL,UAAU,GAAGw1F,cAAc,CAACluT,aAAa,CAAC,OAAO,CAAC;IACtD,IAAI24N,QAAQ,GAAGw1F,YAAY,CAACnuT,aAAa,CAAC,OAAO,CAAC;IAClD,IAAIqrJ,SAAS,GAAGkjD,gBAAgB,CAACvuM,aAAa,CAAC,OAAO,CAAC;IACvD,IAAIo2B,SAAS,GAAGsiM,UAAU,CAAC/2N,KAAK;IAChC,IAAI0zB,OAAO,GAAGsjM,QAAQ,CAACh3N,KAAK;IAC5B,IAAImxB,WAAW,GAAGrC,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACtC,IAAIw+F,WAAW,GAAGt4G,IAAI,CAACga,cAAc,CAAC,CAAC;IAEvC,IAAIkB,YAAY,KAAK,YAAY,EAAE;MACjC,IAAI0/G,SAAS,CAAC1pJ,KAAK,KAAKmxB,WAAW,EAAE;QACnC,IAAIsD,SAAS,GAAG2yG,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC;MAC7C;MAEA,IAAI3yG,SAAS,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC;MACpC,IAAIA,SAAS,KAAK,EAAE,IAAIf,OAAO,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC;IACvD,CAAC,MAAM;MACL;MACA,IAAIg2H,SAAS,CAAC1pJ,KAAK,KAAKmxB,WAAW,EAAE;QACnC,IAAIuC,OAAO,GAAG0zG,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC;MAC3C;MAEA,IAAI1zG,OAAO,KAAK,EAAE,IAAIA,OAAO,KAAK,OAAO,EAAE,OAAO,KAAK,CAAC,CAAC;IAC3D;IAEA,OAAOe,SAAS,IAAIf,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;EAC9C;EAEE,SAAS6vG,WAAWA,CAAA,EAAG;IAErB63N,gBAAgB,CAAC78V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QAClCu3M,QAAQ,GAAG,EAAE;MACjB,CAAC,MAAM;QACLA,QAAQ,GAAG32M,cAAc,CAACZ,KAAK;MACjC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF0uD,gBAAgB,CAACv7K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpC8uK,QAAQ,GAAG,EAAE;MACf,CAAC,MAAM;QACLA,QAAQ,GAAGluK,cAAc,CAACZ,KAAK;MACjC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFiwO,qBAAqB,CAAC98V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACxD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCw3M,WAAW,GAAG,EAAE;MAClB,CAAC,MAAM;QACLA,WAAW,GAAG52M,cAAc,CAACZ,KAAK;MACpC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFowO,4BAA4B,CAACj9V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC/D,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCkyD,WAAW,GAAG,EAAE;MAClB,CAAC,MAAM;QACLA,WAAW,GAAGtxD,cAAc,CAACZ,KAAK;MACpC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFqwO,iBAAiB,CAACl9V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpC63M,SAAS,GAAG,EAAE;MAChB,CAAC,MAAM;QACLA,SAAS,GAAGj3M,cAAc,CAACZ,KAAK;MAClC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;;IAEF;IACAkwO,wBAAwB,CAAC/8V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC3D,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCy3M,gBAAgB,GAAG,EAAE;MACvB,CAAC,MAAM;QACLA,gBAAgB,GAAG72M,cAAc,CAACZ,KAAK;MACzC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;;IAEF;IACAo2F,eAAe,CAACjjN,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAClD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpC03M,OAAO,GAAG,EAAE;MACd,CAAC,MAAM;QACLA,OAAO,GAAG92M,cAAc,CAACZ,KAAK;MAChC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;;IAEF;IACAmwO,mBAAmB,CAACh9V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACtD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpC23M,WAAW,GAAG,EAAE;MAClB,CAAC,MAAM;QACLA,WAAW,GAAG/2M,cAAc,CAACZ,KAAK;MACpC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFswO,2BAA2B,CAACn9V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC9D,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpC43M,mBAAmB,GAAG,EAAE;MAC1B,CAAC,MAAM;QACLA,mBAAmB,GAAGh3M,cAAc,CAACZ,KAAK;MAC5C;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFmhM,cAAc,CAAChuT,gBAAgB,CAAC,UAAU,EAAExC,KAAK,IAAI;MACnD04B,SAAS,GAAG14B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9Bi2V,mBAAmB,CAAC,CAAC;MACrBC,iBAAiB,CAAC,CAAC;MACnB5uM,YAAY,CAAC,CAAC;IAChB,CAAC,CAAC;IAEFklK,YAAY,CAACjuT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC7C23B,OAAO,GAAG33B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC5Bi2V,mBAAmB,CAAC,CAAC;MACtBC,iBAAiB,CAAC,CAAC;MAClB5uM,YAAY,CAAC,CAAC;IAClB,CAAC,CAAC;IAEFslD,gBAAgB,CAACruM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD0wH,WAAW,GAAG1wH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChCg2V,qBAAqB,CAAC,CAAC;MACvBC,mBAAmB,CAAC,CAAC;MACrBC,iBAAiB,CAAC,CAAC;MACnB5uM,YAAY,CAAC,CAAC;IAEhB,CAAC,CAAC;IACFslD,gBAAgB,CAACruM,gBAAgB,CAAC,SAAS,EAAExC,KAAK,IAAI;MACpDA,KAAK,CAACyH,cAAc,CAAC,CAAC;MACtBzH,KAAK,CAAC0N,eAAe,CAAC,CAAC;IACzB,CAAC,CAAC;IAEFkyV,qBAAqB,CAACp9V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACvD8vJ,KAAK,GAAG9vJ,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC1BorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF4hM,iBAAiB,CAACzuT,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACtD;MACGixT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3C03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,CAAC;IAEA03T,WAAW,CAACt0T,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAChD;MACGixT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3C03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,CAAC;EAEF;;EAEC;EACC,SAASs8G,iBAAiBA,CAACnQ,QAAQ,EAAE;IAEnC,MAAM6nC,WAAW,GAAI/wI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClD,IAAIqxI,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC2oG,QAAQ,CAACoQ,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAE/C,MAAMuF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEtCsF,IAAI,CAAC5E,WAAW,CAACyrG,QAAQ,CAACoQ,IAAI,CAAC;IAE7By3B,WAAW,CAACtzI,WAAW,CAAC4E,IAAI,CAAC;IAC7B0uI,WAAW,CAACtzI,WAAW,CAACm0I,MAAM,CAAC;IAC/B;;IAEA,OAAOb,WAAW;EACpB;EAEA,SAASomN,cAAcA,CAAA,EAAG;IACxB,IAAIp0V,IAAI,GAAG;MACT8/C,UAAU;MACVgoE,UAAU;MACVwD,WAAW,EAAE39F,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5DkV,SAAS;MACTf,OAAO;MACP6jL,QAAQ;MACRzoC,QAAQ;MACR0oC,WAAW;MACXC,gBAAgB;MAAG;MACnBC,OAAO;MAAY;MACnBC,WAAW;MAAQ;MACnBC,mBAAmB;MACnB/rD,KAAK;MACLnhG,MAAM;MACNwH,WAAW;MACX2lJ;IACF,CAAC;IAEDlpC,OAAO,CAAC2oC,mCAAmC,CAACn2M,IAAI,EAAE,UAASmlG,OAAO,EAAE;MAClEt3F,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACnBirB,UAAU,CAAC,YAAW;QACpBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB,CAAC,EAAE,IAAI,CAAC;IAEZ,CAAC,CAAC;EAEJ;EAEA,SAAS4oJ,cAAcA,CAACwB,QAAQ,EAAE;IAChC,IAAI31V,IAAI,GAAG;MACT8/C,UAAU;MACVgoE,UAAU;MACVwD,WAAW,EAAE39F,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5DkV,SAAS;MACTf,OAAO;MACP6jL,QAAQ;MACRzoC,QAAQ;MACR0oC,WAAW;MACXC,gBAAgB;MAAK;MACrBC,OAAO;MAAc;MACrBC,WAAW;MAAU;MACrBC,mBAAmB;MACnB/rD,KAAK;MACLviC,aAAa;MACb5+D,MAAM;MACNgwE,SAAS;MACTy1E,eAAe;MACfj+I,WAAW;MACX2lJ;IACF,CAAC;IAEDlpC,OAAO,CAACopC,mCAAmC,CAAC52M,IAAI,EAAE,UAASmlG,OAAO,EAAE;MAClEt3F,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrB,IAAIy7V,QAAQ,IAAI,YAAY,EAAE;QAC5BxwU,UAAU,CAAC,YAAW;UACpBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrBkQ,OAAO,CAACjQ,IAAI,CAAC,CAAC;UACdwC,GAAG,CAAC6zM,sBAAsB,CAACzwJ,UAAU,EAAE,UAAU,CAAC;QACpD,CAAC,EAAE,IAAI,CAAC;MACV,CAAC,MAAM;QAAG;QACR36B,UAAU,CAAC,YAAW;UACpBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC;MACV;IACF,CAAC,CAAC;EAEJ;EAEA,SAAShgD,kBAAkBA,CAACzjC,UAAU,EAAE;IACtC,IAAIqnD,WAAW,GAAGniK,KAAK,CAAC1P,KAAK,CAAC;MAC5BG,EAAE,EAAE,oBAAoB;MACxBa,UAAU,EAAE;IACd,CAAC,CAAC;IACF,IAAIkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAiB;QACjBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;QACtB,IAAIx+I,MAAM,GAAG,MAAM68I,OAAO,CAACspC,uBAAuB,CAAChvF,UAAU,CAAC;QAC9D,IAAIn3F,MAAM,CAACimU,wBAAwB,KAAK,GAAG,EAAC;UACvCl6V,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACzB;MACX;IACF,CAAC,CAAC;IACF,IAAI5jD,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,OAAO;MACboB,QAAQ,EAAE,SAAAA,CAAA,EAAW;QACnBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;MACzB;IACF,CAAC,CAAC;IACF3lI,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B,IAAIj+G,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,8CAA8C;IACzE+0K,WAAW,CAACz0K,WAAW,CAACgvC,cAAc,CAAC;IACvCylI,WAAW,CAACz0K,WAAW,CAAC8uC,OAAO,CAAC;IAChCx8B,KAAK,CAAC9S,IAAI,CAACi1K,WAAW,CAAC;EACzB;;EAGA;EACA,eAAejC,kBAAkBA,CAACW,YAAY,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,YAAY,EAAE;IACpF,IAAID,YAAY,IAAI,gBAAgB,EAAE;MAClChB,UAAU,GAAG,gBAAgB;MAC7BC,mBAAmB,GAAGgB,YAAY;IACtC,CAAC,MAEGjB,UAAU,GAAG,UAAU;IAE3B,IAAIkB,eAAe;IACnB,IAAIJ,YAAY,IAAI9xJ,MAAM,CAAC8B,IAAI,CAACgwJ,YAAY,CAAC,CAACtzK,MAAM,KAAK,CAAC,EAAE;MACxDgyK,UAAU,GAAGsB,YAAY,CAAC,CAAC,CAAC,CAACtB,UAAU;MACvCC,YAAY,GAAGqB,YAAY,CAAC,CAAC,CAAC,CAACrB,YAAY;MAC3CC,gBAAgB,GAAGoB,YAAY,CAAC,CAAC,CAAC,CAACtwD,QAAQ;MAC3CmvD,gBAAgB,GAAGmB,YAAY,CAAC,CAAC,CAAC,CAACpwD,QAAQ;MAC3CkvD,YAAY,GAAGkB,YAAY,CAAC,CAAC,CAAC,CAAClwD,IAAI;MACnCivD,aAAa,GAAGiB,YAAY,CAAC,CAAC,CAAC,CAACpjI,KAAK;MACrCoiI,eAAe,GAAGgB,YAAY,CAAC,CAAC,CAAC,CAAC3uB,OAAO;MACzC+uB,eAAe,GAAG,oBAAoB;MACtChB,YAAY,GAAG,QAAQ;IAC3B,CAAC,MAAM;MACHV,UAAU,GAAG,EAAE;MACfC,YAAY,GAAG,EAAE;MACjBC,gBAAgB,GAAG,EAAE;MACrBC,gBAAgB,GAAG,EAAE;MACrBC,YAAY,GAAG,EAAE;MACjBC,aAAa,GAAG,EAAE;MAClBC,eAAe,GAAG,EAAE;MACpBoB,eAAe,GAAG,cAAc;MAChChB,YAAY,GAAG,KAAK;IACxB;IAEA,IAAIiB,iBAAiB,GAAGlhK,KAAK,CAAC1P,KAAK,CAAC;MAChC2P,MAAM,EAAEghK,eAAe;MACvBzgK,KAAK,EAAE,IAAI;MACX/P,EAAE,EAAE;IACR,CAAC,CAAC;IAEFqvK,aAAa,GAAGhsK,KAAK,CAACxD,KAAK,CAAC;MACxBG,EAAE,EAAE,eAAe;MACnB2B,KAAK,EAAE,UAAU;MACjBP,KAAK,EAAG2tK,YAAY,GAAIA,YAAY,GAAG;IAC3C,CAAC,CAAC;IAEFlvD,aAAa,GAAGx8G,KAAK,CAACxD,KAAK,CAAC;MACxB8B,KAAK,EAAE,SAAS;MAChBP,KAAK,EAAG4tK,gBAAgB,GAAIA,gBAAgB,GAAG;IACnD,CAAC,CAAC;IAEFjvD,aAAa,GAAG18G,KAAK,CAACxD,KAAK,CAAC;MACxB8B,KAAK,EAAE,WAAW;MAClBP,KAAK,EAAG6tK,gBAAgB,GAAIA,gBAAgB,GAAG;IACnD,CAAC,CAAC;IAEFhvD,SAAS,GAAG58G,KAAK,CAACxD,KAAK,CAAC;MACpB8B,KAAK,EAAE,MAAM;MACbP,KAAK,EAAG8tK,YAAY,GAAIA,YAAY,GAAG;IAC3C,CAAC,CAAC;IAEF/uD,UAAU,GAAG98G,KAAK,CAACxD,KAAK,CAAC;MACrB8B,KAAK,EAAE,OAAO;MACdP,KAAK,EAAG+tK,aAAa,GAAIA,aAAa,GAAG;IAC7C,CAAC,CAAC;IAEF7mB,YAAY,GAAGjlJ,KAAK,CAACxD,KAAK,CAAC;MACvB8B,KAAK,EAAE,UAAU;MACjBP,KAAK,EAAGguK,eAAe,GAAIA,eAAe,GAAG;IACjD,CAAC,CAAC;IAEF6tL,YAAY,GAAGr9V,MAAM,CAACC,KAAK,CAAC;MACxBG,EAAE,EAAE,oBAAoB;MACxBG,IAAI,EAAE,MAAM;MACZI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAC47V,YAAY,CAAC5gW,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAChDumK,wBAAwB,CAACL,QAAQ,CAAC;QACpC;MACJ;IACJ,CAAC,CAAC;IAEF6sL,cAAc,GAAGt9V,MAAM,CAACC,KAAK,CAAC;MAC1BG,EAAE,EAAE,sBAAsB;MAC1BG,IAAI,EAAE,QAAQ;MACdI,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMkO,KAAK,CAAC/S,IAAI,CAACi0K,iBAAiB;IAChD,CAAC,CAAC;IAEF,IAAI1kI,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACggW,YAAY,CAAC;IACjClxT,OAAO,CAAC9uC,WAAW,CAACigW,cAAc,CAAC;IACnCzsL,iBAAiB,CAACxzK,WAAW,CAACoyK,aAAa,CAAC;IAC5CoB,iBAAiB,CAACxzK,WAAW,CAAC4iH,aAAa,CAAC;IAC5C4wD,iBAAiB,CAACxzK,WAAW,CAAC8iH,aAAa,CAAC;IAC5C0wD,iBAAiB,CAACxzK,WAAW,CAACgjH,SAAS,CAAC;IACxCwwD,iBAAiB,CAACxzK,WAAW,CAACkjH,UAAU,CAAC;IACzCswD,iBAAiB,CAACxzK,WAAW,CAACqrJ,YAAY,CAAC;IAC3CmoB,iBAAiB,CAACxzK,WAAW,CAAC8uC,OAAO,CAAC;IAEtCy8G,kBAAkB,CAAC,CAAC;IACpBj5I,KAAK,CAAC9S,IAAI,CAACg0K,iBAAiB,CAAC;IAC7ButL,wBAAwB,CAAC,CAAC;EAC9B;EAEA,SAASx1M,kBAAkBA,CAAA,EAAG;IAC5B6mB,aAAa,CAAC1vK,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C4xK,YAAY,GAAG5xK,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC6mB,IAAI,CAAC,CAAC;MACxC+1U,wBAAwB,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEFn+O,aAAa,CAAClgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C6xK,gBAAgB,GAAG7xK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACzC,CAAC,CAAC;IAEF2+G,aAAa,CAACpgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C8xK,gBAAgB,GAAG9xK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACzC,CAAC,CAAC;IAEF6+G,SAAS,CAACtgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzC+xK,YAAY,GAAG/xK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACrC,CAAC,CAAC;IAEF++G,UAAU,CAACxgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1CgyK,aAAa,GAAGhyK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACtC,CAAC,CAAC;IAEFknJ,YAAY,CAAC3oJ,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5CiyK,eAAe,GAAGjyK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACxC,CAAC,CAAC;EACN;EAEA,SAAS48V,wBAAwBA,CAAA,EAAG;IAChC,IAAIrtL,YAAY,GAAGtB,aAAa,CAAC5vK,aAAa,CAAC,gBAAgB,CAAC;IAChE,IAAIkxK,YAAY,CAACvvK,KAAK,CAAC6mB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;MAClConJ,aAAa,CAAChzK,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACpC0gW,YAAY,CAAC5gW,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACtC;IACJ,CAAC,MAAM;MACH8yK,aAAa,CAAChzK,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACvC2gW,YAAY,CAAC5gW,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC7C;;IAED;IACA;IACA;IACC;IACD;EACH;;EAEI;EACA,eAAeo0K,wBAAwBA,CAACL,QAAQ,EAAE;IAEhD,IAAIA,QAAQ,IAAI,QAAQ,EAAE;MAEtB,MAAMn9I,MAAM,GAAG,MAAM68I,OAAO,CAACa,mBAAmB,CAAC7B,YAAY,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,aAAa,EAAEC,eAAe,CAAC;MAChJ,MAAM;QAAEyB;MAAqB,CAAC,GAAG39I,MAAM;MACvCg9I,QAAQ,GAAGW,oBAAoB,CAAC/B,UAAU;MAE1C,IAAIoB,QAAQ,IAAI,GAAG,EAAE;QACjBrkI,YAAY,CAAC,CAAC;MAClB,CAAC,MAAM;QAEHsxT,iCAAiC,CAAC96S,UAAU,CAAC;QAC9C;QACC;QACD;;QAEE;QACD;QACE;QACA;QACA;QACF;;QAEI9yC,KAAK,CAAC/S,IAAI,CAACi0K,iBAAiB,CAAC;QAC/BrgK,cAAc,CAAC3T,IAAI,CAAC,CAAC;QAEvBirB,UAAU,CAAC,YAAY;UACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;;UAGtB;UACA;UACA;UACA;QACH,CAAC,EAAE,IAAI,CAAC;MACZ;IAEJ,CAAC,MAAM;MAAG;MACN+S,KAAK,CAAC/S,IAAI,CAACi0K,iBAAiB,CAAC;MAC7B,MAAMv9I,MAAM,GAAG,MAAM68I,OAAO,CAACwB,mBAAmB,CAACzC,UAAU,EAAEC,YAAY,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,aAAa,EAAEC,eAAe,CAAC;MAC5J,MAAM;QAAEoC,oBAAoB,EAAE;UAAEV;QAAW;MAAE,CAAC,GAAG59I,MAAM;MACvD9iB,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrBirB,UAAU,CAAC,YAAY;QACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACvB;MACF,CAAC,EAAE,IAAI,CAAC;IACZ;EACF;EAEA,SAASqvC,YAAYA,CAAA,EAAG;IACtB,IAAIx8B,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACpBG,EAAE,EAAE,cAAc;MAClBa,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,IAAIgxK,KAAK,GAAGjyK,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB3C,OAAO,CAACjQ,IAAI,CAAC,CAAC;MAClB;IACJ,CAAC,CAAC;IACF,IAAIsvC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC40K,KAAK,CAAC;IAE1B,IAAI5lI,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,+BAA+B;IAC1D0S,KAAK,CAACpS,WAAW,CAACgvC,cAAc,CAAC;IACjC58B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACrB;EAEG,OAAO;IACR3P;EAEF,CAAC;AACH,CAAC,EAAE,CAAC;ACvsCJ,MAAMuyM,sBAAsB,GAAG,CAAC,MAAM;EAEpC;EACA,IAAImnJ,iBAAiB;EACrB,IAAIC,uBAAuB;EAC3B,IAAIC,wBAAwB;EAC5B,IAAIvhJ,mBAAmB;EACvB,IAAIkmJ,sBAAsB;EAC1B,IAAIC,qBAAqB;EACzB,IAAIC,+BAA+B;EACnC,IAAIC,uBAAuB;EAC3B,IAAIC,2BAA2B;EAC/B,IAAIC,qCAAqC;EACzC,IAAIC,kCAAkC;EACtC,IAAIC,iCAAiC;;EAErC;EACA,IAAIn8S,UAAU;EACd,IAAIi3J,UAAU;EACd,IAAIG,YAAY,CAAC,CAAS;EAC1B,IAAImgJ,mBAAmB,CAAC,CAAE;EAC1B,IAAIlgJ,iBAAiB,CAAC,CAAI;EAC1B,IAAIC,qBAAqB,CAAC,CAAE;EAC5B,IAAIC,gBAAgB,CAAC,CAAG;EACxB,IAAIC,mBAAmB,CAAC,CAAE;EAC1B,IAAIC,oBAAoB,CAAC,CAAE;EAC3B,IAAIC,6BAA6B,CAAC,CAAG;EACrC,IAAIC,oBAAoB,CAAC,CAAE;EAC3B,IAAIC,0BAA0B,CAAC,CAAC;EAChC,IAAIC,kCAAkC,CAAC,CAAC;EACxC,IAAIC,+BAA+B,CAAC,CAAC;EACrC,IAAIC,4BAA4B,CAAC,CAAE;;EAEnC;EACA,IAAItqE,OAAO;EACX,IAAIgqN,aAAa;EACjB,IAAI5rT,SAAS;EACb,IAAIysM,SAAS;EACb,IAAInvF,SAAS;;EAEb;EACF;EACA,IAAI1/F,MAAM;EACV,IAAIgwE,SAAS;EACb,IAAIi+N,eAAe;EACnB,IAAIC,aAAa;EAEjB,IAAIhE,YAAY,GAAG,KAAK;EACxB,MAAMiE,UAAU,GAAG,GAAG,CAAC,CAAC;;EAExB,IAAIC,wBAAwB,CAAC,CAAC;;EAE1B,eAAex6V,IAAIA,CAACy6V,YAAY,EAAEhE,eAAe,EAAEiE,iBAAiB,EAAEhE,mBAAmB,EAA2B;IAAA,IAAzBE,WAAW,GAAAvvV,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,SAAS;IAE5G2H,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBnP,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC9I,OAAO,CAACgF,CAAC,IAAIA,CAAC,CAACzF,MAAM,CAAC,CAAC,CAAC;IAEtE,IAAI+9V,UAAU,GAAG,IAAI9jV,IAAI,CAAC,CAAC;IAC3B,IAAI+jV,iBAAiB,GAAG,IAAI/jV,IAAI,CAAC8jV,UAAU,CAAC73U,WAAW,CAAC,CAAC,EAAE63U,UAAU,CAAC53U,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAEpF4/B,UAAU,GAAG8zS,eAAe,CAACn2V,EAAE;IAC/Bi2V,kBAAkB,GAAGG,mBAAmB;IAExC,IAAI+D,YAAY,IAAI77U,MAAM,CAAC8B,IAAI,CAAC+5U,YAAY,CAAC,CAACr9V,MAAM,KAAK,CAAC,EAAE;MAE1DgvD,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzBusK,UAAU,GAAG6gJ,YAAY,CAAC7gJ,UAAU;MACpCG,YAAY,GAAG8gJ,YAAY,CAACJ,YAAY,CAAC1gJ,YAAY,CAAC;MACtDmgJ,mBAAmB,GAAG,IAAIrjV,IAAI,CAAC4jV,YAAY,CAAC1gJ,YAAY,CAAC;MACzDC,iBAAiB,GAAGygJ,YAAY,CAACzgJ,iBAAiB;MAClDC,qBAAqB,GAAGwgJ,YAAY,CAACxgJ,qBAAqB;MAC1DC,gBAAgB,GAAGugJ,YAAY,CAACvgJ,gBAAgB;MAChDC,mBAAmB,GAAGsgJ,YAAY,CAACtgJ,mBAAmB,CAAC,CAAE;MACzDC,oBAAoB,GAAGqgJ,YAAY,CAACrgJ,oBAAoB;MACxDC,6BAA6B,GAAGogJ,YAAY,CAACpgJ,6BAA6B;MAC1EC,oBAAoB,GAAGmgJ,YAAY,CAACngJ,oBAAoB,CAAC,CAAC;MAC1DC,0BAA0B,GAAGkgJ,YAAY,CAAClgJ,0BAA0B,CAAC,CAAI;MACzEC,kCAAkC,GAAGigJ,YAAY,CAACjgJ,kCAAkC,CAAC,CAAC;MACtFC,+BAA+B,GAAGggJ,YAAY,CAAChgJ,+BAA+B,CAAC,CAAC;MAChFC,4BAA4B,GAAG+/I,YAAY,CAAC//I,4BAA4B,CAAC,CAAC;IAE5E,CAAC,MAAM;MACLtuJ,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzB+uF,SAAS,GAAGs+N,iBAAiB;MAC7B9gJ,UAAU,GAAG,GAAG;MAChBG,YAAY,GAAG,CAAC,GAAG,IAAI4gJ,UAAU,CAAC53U,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE1W,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGsuV,UAAU,CAAC73U,WAAW,CAAC,CAAC;MAC7Fo3U,mBAAmB,GAAG,IAAIrjV,IAAI,CAAC8jV,UAAU,CAAC73U,WAAW,CAAC,CAAC,EAAE63U,UAAU,CAAC53U,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;MAClFi3L,iBAAiB,GAAG,EAAE;MACtBC,qBAAqB,GAAG,EAAE;MAC1BC,gBAAgB,GAAG,EAAE;MACrBC,mBAAmB,GAAG,EAAE,CAAC,CAAC;MAC1BC,oBAAoB,GAAG,EAAE;MACzBC,6BAA6B,GAAG,EAAE;MAClCC,oBAAoB,GAAG,EAAE,CAAC,CAAE;MAC5BC,0BAA0B,GAAG,EAAE,CAAC,CAAC;MACjCC,kCAAkC,GAAG,EAAE,CAAC,CAAC;MACzCC,+BAA+B,GAAG,EAAE,CAAC,CAAC;MACtCC,4BAA4B,GAAG,EAAE,CAAC,CAAE;IACtC;IAEA,IAAIk8I,WAAW,KAAK,SAAS,IAAK,CAAC1oV,CAAC,CAACC,OAAO,CAACwyC,SAAS,EAAE;MACtD21S,YAAY,GAAG,IAAI;IACpB;IAEA,IAAIM,WAAW,KAAK,gBAAgB,IAAK,CAAC1oV,CAAC,CAACC,OAAO,CAACuyC,SAAS,EAAE;MAC9D41S,YAAY,GAAG,IAAI;IACpB;IAEA,IAAKlqS,MAAM,KAAKsqS,mBAAmB,EAAG;MACrCJ,YAAY,GAAG,IAAI;IACpB;IAGF,IAAIY,UAAU,GAAG/9O,iBAAiB,CAACs9O,eAAe,CAAC;IAEnD,IAAI1vU,SAAS,GAAGjnB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0mB,SAAS,CAACpqB,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACvC,IAAI60I,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAE5C,MAAM8T,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAAClX,SAAS,GAAG,iDAAiD;IACrEkX,OAAO,CAACxX,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAE1CkqB,SAAS,CAACxpB,WAAW,CAAC25V,UAAU,CAAC;IAClC;IACAnwU,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAC7B3qH,SAAS,CAACxpB,WAAW,CAAC4W,OAAO,CAAC;IAC9B4S,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;;IAE7B;IACAgoN,iBAAiB,GAAG53V,QAAQ,CAAC3B,KAAK,CAAC;MACjC8B,KAAK,EAAE,OAAO;MACd;MACAF,UAAU,EAAE,mBAAmB;MAC/BL,KAAK,EAAEq4M,YAAY;MACnB73M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEFqD,uBAAuB,GAAG73V,QAAQ,CAAC3B,KAAK,CAAC;MACvC8B,KAAK,EAAE,kBAAkB;MACzBF,UAAU,EAAE,yBAAyB;MACrCL,KAAK,EAAEs4M,iBAAiB;MACxB93M,QAAQ,EAAEo0V;MACV;IACF,CAAC,CAAC;IAEFsD,wBAAwB,GAAGj2V,KAAK,CAACxD,KAAK,CAAC;MACxCU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,uBAAuB;MAC9BrB,KAAK,EAAE,WAAW;MACfc,KAAK,EAAE8uB,IAAI,CAACkY,eAAe,CAACuxK,qBAAqB,CAACh5L,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAChE/e,QAAQ,EAAEo0V;MACb;IACC,CAAC,CAAC;;IAEF;IACAj+I,mBAAmB,GAAG10M,KAAK,CAACxD,KAAK,CAAC;MAChC8B,KAAK,EAAE,iBAAiB;MACxBpB,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAEw4M,gBAAgB;MACvBh4M,QAAQ,EAAEo0V,YAAY;MACtBzyV,SAAS,EAAE,GAAG;MACdY,cAAc,EAAE;IAClB,CAAC,CAAC;IACH;;IAED;IACA85V,sBAAsB,GAAG56V,KAAK,CAACxD,KAAK,CAAC;MACjC8B,KAAK,EAAE,oBAAoB;MAC3BpB,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAEy4M,mBAAmB;MAC1Bj4M,QAAQ,EAAEo0V;IACZ,CAAC,CAAC;IACJ;;IAEQ;IACNkI,qBAAqB,GAAG76V,KAAK,CAACxD,KAAK,CAAC;MAChC8B,KAAK,EAAE,8BAA8B;MACrCpB,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAE04M,oBAAoB;MAC3Bl4M,QAAQ,EAAEo0V;IACZ,CAAC,CAAC;IACJ;;IAEE;IACFmI,+BAA+B,GAAG96V,KAAK,CAACxD,KAAK,CAAC;MAC1C8B,KAAK,EAAE,yCAAyC;MAChDpB,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAE24M,6BAA6B;MACpCn4M,QAAQ,EAAEo0V;IACZ,CAAC,CAAC;IACJ;;IAEE;IACFoI,uBAAuB,GAAG/6V,KAAK,CAACxD,KAAK,CAAC;MAClC8B,KAAK,EAAE,2BAA2B;MAClCpB,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAE44M,oBAAoB;MAC3Bp4M,QAAQ,EAAEo0V;IACZ,CAAC,CAAC;IACH;IACCoI,uBAAuB,CAACz+V,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACrDi4M,oBAAoB,GAAGj4M,CAAC,CAAC3E,MAAM,CAACgE,KAAK;MACtC;IACD,CAAC,CAAC;;IAEF;IACFi9V,2BAA2B,GAAGh7V,KAAK,CAACxD,KAAK,CAAC;MACtCG,EAAE,EAAE,6BAA6B;MACjC2B,KAAK,EAAE,0BAA0B;MACjCpB,IAAI,EAAE,QAAQ;MACdD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE64M,0BAA0B;MACjCr4M,QAAQ,EAAEo0V,YAAY;MACtB/0V,UAAU,EAAE,CACV;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,EAC1B;QAAED,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAM,CAAC,EAC5B;QACED,GAAG,EAAE,YAAY;QACjBC,KAAK,EAAE;MACT,CAAC;IAEL,CAAC,CAAC;;IAEF;IACFk9V,qCAAqC,GAAGj7V,KAAK,CAACxD,KAAK,CAAC;MAChDG,EAAE,EAAE,uCAAuC;MAC3C2B,KAAK,EAAE,sCAAsC;MAC7CpB,IAAI,EAAE,QAAQ;MACdD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE84M,kCAAkC;MACzCt4M,QAAQ,EAAEo0V,YAAY;MACtB/0V,UAAU,EAAE,CACV;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,EAC1B;QAAED,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAM,CAAC,EAC5B;QACED,GAAG,EAAE,YAAY;QACjBC,KAAK,EAAE;MACT,CAAC;IAEL,CAAC,CAAC;;IAEF;IACFm9V,kCAAkC,GAAGl7V,KAAK,CAACxD,KAAK,CAAC;MAC7CG,EAAE,EAAE,oCAAoC;MACxC2B,KAAK,EAAE,mCAAmC;MAC1CpB,IAAI,EAAE,QAAQ;MACdD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE+4M,+BAA+B;MACtCv4M,QAAQ,EAAEo0V,YAAY;MACtB/0V,UAAU,EAAE,CACV;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,EAC1B;QAAED,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAM,CAAC,EAC5B;QACED,GAAG,EAAE,YAAY;QACjBC,KAAK,EAAE;MACT,CAAC;IAEL,CAAC,CAAC;;IAEF;IACFo9V,iCAAiC,GAAGn7V,KAAK,CAACxD,KAAK,CAAC;MAC5CG,EAAE,EAAE,mCAAmC;MACvC2B,KAAK,EAAE,kCAAkC;MACzCpB,IAAI,EAAE,QAAQ;MACdD,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAEg5M,4BAA4B;MACnCx4M,QAAQ,EAAEo0V,YAAY;MACtB/0V,UAAU,EAAE,CACV;QAAEE,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAI,CAAC,EAC1B;QAAED,GAAG,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAM,CAAC,EAC5B;QACED,GAAG,EAAE,YAAY;QACjBC,KAAK,EAAE;MACT,CAAC;IAEL,CAAC,CAAC;IAEF0uI,OAAO,GAAGlwI,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,MAAM;MACZY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBq1V,cAAc,CAAC,MAAM,CAAC;MACxB;IACF,CAAC,CAAC;IACFoD,aAAa,GAAGl6V,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,YAAY;MAClBG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACXY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QAClBq1V,cAAc,CAAC,YAAY,CAAC;MAChC;IACF,CAAC,CAAC;IACF/7G,SAAS,GAAG/6O,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACb;MACEoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACnBs1V,cAAc,CAAC,CAAC;MACnB;IACF,CAAC,CAAC;IACFnrM,SAAS,GAAG5rJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,QAAQ;MACf;MACCoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBysJ,kBAAkB,CAACwrD,UAAU,CAAC;MAChC;IACF,CAAC,CAAC;IACFprK,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,UAAU;MAChBN,IAAI,EAAE,OAAO;MACbY,UAAU,EAAE,CAAC,gBAAgB,CAAC;MAC9BQ,QAAQ,EAAE,MAAAA,CAAA,KAAa;QACrBpC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;IAEFnpE,WAAW,CAAC,CAAC;IAEb,MAAM2zN,eAAe,GAAG94V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDu4V,eAAe,CAACj8V,SAAS,CAACE,GAAG,CAAC,yCAAyC,CAAC;IAExE+7V,eAAe,CAACr7V,WAAW,CAACm8V,iBAAiB,CAAC;IAC9Cd,eAAe,CAACr7V,WAAW,CAACo8V,uBAAuB,CAAC;IACpDf,eAAe,CAACr7V,WAAW,CAACq8V,wBAAwB,CAAC;IAErD7yU,SAAS,CAACxpB,WAAW,CAACq7V,eAAe,CAAC;IAEvC7xU,SAAS,CAACxpB,WAAW,CAAC86M,mBAAmB,CAAC;IAC1CtxL,SAAS,CAACxpB,WAAW,CAACihW,qBAAqB,CAAC;IAC5Cz3U,SAAS,CAACxpB,WAAW,CAACkhW,+BAA+B,CAAC;;IAEvD;IACJ;IACK;IACA;;IAEA;IACD;IACC;IACA;;IAEA;;IAEC,IAAIrH,eAAe,GAAGt3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnD+2V,eAAe,CAACz6V,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAEhD,IAAIw6V,aAAa,GAAGv3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDg3V,aAAa,CAAC16V,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAC5Cw6V,aAAa,CAACp6V,SAAS,GAAG,yGAAyG;IACnIm6V,eAAe,CAAC75V,WAAW,CAAC85V,aAAa,CAAC;IAE1C,IAAIhrT,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAC/B+8M,UAAU,IAAI,GAAG,GAAIvtK,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC,GAAI/jG,OAAO,CAAC9uC,WAAW,CAAC09O,SAAS,CAAC;IACnFrhC,UAAU,IAAI,GAAG,GAAIvtK,OAAO,CAAC9uC,WAAW,CAAC68V,aAAa,CAAC,GAAG/tT,OAAO,CAAC9uC,WAAW,CAACuuJ,SAAS,CAAC;IAEzF,IAAI4oK,QAAQ,GAAG50T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Cq0T,QAAQ,CAAC/3T,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACjC63T,QAAQ,CAACn3T,WAAW,CAACixC,SAAS,CAAC;IAEhC,IAAI8oT,MAAM,GAAGx3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1Ci3V,MAAM,CAAC36V,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC7By6V,MAAM,CAAC/5V,WAAW,CAAC8uC,OAAO,CAAC;IAC3BirT,MAAM,CAAC/5V,WAAW,CAACm3T,QAAQ,CAAC;IAC5B,IAAItoQ,MAAM,KAAKmqS,kBAAkB,EAAEe,MAAM,CAAC/5V,WAAW,CAAC65V,eAAe,CAAC;IACvErwU,SAAS,CAACxpB,WAAW,CAAC+5V,MAAM,CAAC;IAE3B,IAAI5lN,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACzC,IAAI86V,OAAO,GAAGr7V,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC1C,IAAI+6V,OAAO,GAAGt7V,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC1C0mB,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAC7B3qH,SAAS,CAACxpB,WAAW,CAAC49V,OAAO,CAAC;IAC9Bp0U,SAAS,CAACxpB,WAAW,CAAC69V,OAAO,CAAC;;IAE/B;IACD;IACD;;IAECpsV,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACwpB,SAAS,CAAC;IAEvC/X,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;IAEtBmgL,+BAA+B,CAAC,CAAC;IACjCgiJ,uBAAuB,CAAC,CAAC;IAEzBhsO,mBAAmB,CAAC,CAAC;EAEtB;EAEA,SAAS+tO,YAAYA,CAAC31U,QAAQ,EAAE;IAEhC,IAAIm2U,QAAQ,GAAG,IAAIxkV,IAAI,CAACqO,QAAQ,CAAC;IACjC,IAAIo2U,aAAa,GAAG,CAACD,QAAQ,CAACt4U,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAGovS,QAAQ,CAACv4U,WAAW,CAAC,CAAC;IACxG,OAAOw4U,aAAa;EAEpB;EAEA,eAAexkJ,+BAA+BA,CAAA,EAAG;IAE7CykJ,yBAAyB,CAAC,CAAC;IAEzB,MAAM;MACJnkJ,iCAAiC,EAAEC;IACrC,CAAC,GAAG,MAAMhnC,OAAO,CAACinC,gCAAgC,CAAC30J,UAAU,EAAE03S,eAAe,EAAEC,aAAa,EAAEC,UAAU,CAAC;IAC5G;IACA,IAAI13V,IAAI,GAAGw0M,gBAAgB,CAACxwM,GAAG,CAAE0wM,eAAe,KAAM;MACpDj3M,EAAE,EAAEi3M,eAAe,CAAC1F,eAAe;MACnCnwM,KAAK,EAAE61M,eAAe,CAAC1F,eAAe;MACtCpxM,IAAI,EAAE82M,eAAe,CAAC1F;IACxB,CAAC,CAAC,CAAC;IAGH,IAAIhvM,IAAI,CAACzF,MAAM,IAAI,CAAC,EAAE;MAClBw+V,6BAA6B,CAAC,CAAC;IACnC;;IAEA;IACA,IAAI5hJ,iBAAiB,IAAI,EAAE,IAAIn3M,IAAI,CAACzF,MAAM,IAAI,CAAC,EAAE;MAC/C48M,iBAAiB,GAAGn3M,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;IACnC;IAEA,IAAI,CAACs4M,iBAAiB,IAAIA,iBAAiB,KAAK,EAAE,EAAE;MAClD2/I,uBAAuB,CAACh9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAChD,CAAC,MAAM;MACL88V,uBAAuB,CAACh9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACnD;IAEAiG,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,yBAAyB,EAAE2F,IAAI,EAAEm3M,iBAAiB,CAAC;EAEzE;EAEA,SAASuhJ,yBAAyBA,CAAA,EAAG;IAEnC,IAAIC,SAAS,GAAGzhJ,YAAY,CAAC94L,KAAK,CAAC,GAAG,CAAC;IACvC,IAAIw6U,SAAS,GAAGD,SAAS,CAAC,CAAC,CAAC;IAE5B,IAAIE,WAAW,GAAGnuU,KAAK,CAAC0B,cAAc,CAACirU,mBAAmB,CAAC;IAC3D,IAAIyB,QAAQ,GAAGzB,mBAAmB,CAACp3U,WAAW,CAAC,CAAC;IAEhDu3U,eAAe,GAAGsB,QAAQ,GAAG,GAAG,GAAGF,SAAS,GAAG,KAAK;IACpDnB,aAAa,GAAGqB,QAAQ,GAAG,GAAG,GAAGF,SAAS,GAAG,GAAG,GAAGC,WAAW;EAEhE;EAEA,SAASE,6BAA6BA,CAAA,EAAG;IAEvC;IACH,IAAIC,sBAAsB,GAAGhsV,KAAK,CAAC1P,KAAK,CAAC;MACxC2P,MAAM,EAAE,4BAA4B;MACpCO,KAAK,EAAE,IAAI;MACX/P,EAAE,EAAE;IACL,CAAC,CAAC;IAEF,IAAI6xK,KAAK,GAAGjyK,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBkO,KAAK,CAAC/S,IAAI,CAAC++V,sBAAsB,CAAC;QACnC;MAED;IACC,CAAC,CAAC;IAEF,IAAIxvT,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C,IAAIksC,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,6OAA6O;IACxQovC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC40K,KAAK,CAAC;IAC1B;IACA0pL,sBAAsB,CAACt+V,WAAW,CAACgvC,cAAc,CAAC;IAClDsvT,sBAAsB,CAACt+V,WAAW,CAAC8uC,OAAO,CAAC;IAC3Cr/B,OAAO,CAACjQ,IAAI,CAAC,CAAC;IACd8S,KAAK,CAAC9S,IAAI,CAAC8+V,sBAAsB,CAAC;EAEnC;;EAEA;EACA,SAAS/C,uBAAuBA,CAAA,EAAG;IAEjC,IAAIgD,MAAM,GAAG,IAAIjlV,IAAI,CAAC,CAAC;IACvB,IAAIklV,UAAU,GAAG,EAAE;IAEnB,KAAK,IAAI/zV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;MAC7B,IAAIg0V,QAAQ,GAAG,IAAInlV,IAAI,CAACilV,MAAM,CAACh5U,WAAW,CAAC,CAAC,GAAG,CAAC,EAAEg5U,MAAM,CAAC/4U,QAAQ,CAAC,CAAC,GAAG/a,CAAC,EAAE,CAAC,CAAC;MAC3E+zV,UAAU,CAAC7wV,IAAI,CAAC;QACd+wV,WAAW,EAAE,CAACD,QAAQ,CAACj5U,QAAQ,CAAC,CAAC,GAAE,CAAC,EAAE/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAC,GAAG,CAAC,GAAG,GAAG,GAAI+vS,QAAQ,CAACl5U,WAAW,CAAC,CAAC,CAAC9B,QAAQ,CAAC,CAAE;QAC5Gk7U,QAAQ,EAAEF,QAAQ,CAACrsD,YAAY,CAAC;MAClC,CAAC,CAAC;IACJ;IAEA,IAAI9sS,IAAI,GAAGk5V,UAAU,CAACl1V,GAAG,CAAEw0V,QAAQ,KAAM;MACvC/6V,EAAE,EAAE+6V,QAAQ,CAACa,QAAQ;MACrBx6V,KAAK,EAAE25V,QAAQ,CAACY,WAAW;MAC3Bx7V,IAAI,EAAE46V,QAAQ,CAACY;IACjB,CAAC,CAAC,CAAC;IACHp5V,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,mBAAmB,EAAE2F,IAAI,EAAEk3M,YAAY,CAAC;EAC1D;EAEA,SAASjtF,mBAAmBA,CAAA,EAAG;IAE7B,IAAI,CAACitF,YAAY,IAAIA,YAAY,KAAK,EAAE,EAAE;MACxC2/I,iBAAiB,CAAC/8V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACL68V,iBAAiB,CAAC/8V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C;IAEA,IAAI,CAACo9M,iBAAiB,IAAIA,iBAAiB,KAAK,EAAE,EAAE;MAClD2/I,uBAAuB,CAACh9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAChD,CAAC,MAAM;MACL88V,uBAAuB,CAACh9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACnD;IAEA,IAAI,CAACq9M,qBAAqB,IAAIA,qBAAqB,KAAK,EAAE,EAAE;MAC1D2/I,wBAAwB,CAACj9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACjD,CAAC,MAAM;MACL+8V,wBAAwB,CAACj9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACpD;IAEA,IAAImiW,kBAAkB,GAAG1mJ,mBAAmB,CAACt4M,aAAa,CAAC,UAAU,CAAC;IACtE,IAAIg/V,kBAAkB,CAACr9V,KAAK,KAAK,EAAE,EAAE;MACnC22M,mBAAmB,CAAC17M,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC5C,CAAC,MAAM;MACLw7M,mBAAmB,CAAC17M,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC/C;IACA;IACA,IAAIoiW,qBAAqB,GAAGT,sBAAsB,CAACx+V,aAAa,CAAC,UAAU,CAAC,CAAC,CAAE;IAC/E,IAAIi/V,qBAAqB,CAACt9V,KAAK,KAAK,EAAE,EAAE;MACtC68V,sBAAsB,CAAC5hW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC/C,CAAC,MAAM;MACL0hW,sBAAsB,CAAC5hW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAClD;IAEA,IAAIqiW,oBAAoB,GAAGT,qBAAqB,CAACz+V,aAAa,CAAC,UAAU,CAAC;IAC1E,IAAIk/V,oBAAoB,CAACv9V,KAAK,KAAK,EAAE,EAAE;MACrC88V,qBAAqB,CAAC7hW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9C,CAAC,MAAM;MACL2hW,qBAAqB,CAAC7hW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACjD;IAEA,IAAIsiW,8BAA8B,GAAGT,+BAA+B,CAAC1+V,aAAa,CAAC,UAAU,CAAC;IAC9F,IAAIm/V,8BAA8B,CAACx9V,KAAK,KAAK,EAAE,EAAE;MAC/C+8V,+BAA+B,CAAC9hW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACxD,CAAC,MAAM;MACL4hW,+BAA+B,CAAC9hW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC3D;IACA;IACA,IAAIuiW,sBAAsB,GAAGT,uBAAuB,CAAC3+V,aAAa,CAAC,UAAU,CAAC;IAC9E,IAAIo/V,sBAAsB,CAACz9V,KAAK,KAAK,EAAE,EAAE;MACvCg9V,uBAAuB,CAAC/hW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAChD,CAAC,MAAM;MACL6hW,uBAAuB,CAAC/hW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACnD;IACA;IACA,IAAIwiW,0BAA0B,GAAGT,2BAA2B,CAAC5+V,aAAa,CAAC,8BAA8B,CAAC;IAC1G,IAAIq/V,0BAA0B,CAAC19V,KAAK,KAAK,EAAE,EAAG;MAC5Ci9V,2BAA2B,CAAChiW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACpD,CAAC,MAAM;MACL8hW,2BAA2B,CAAChiW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACvD;IACA;IACA,IAAIyiW,oCAAoC,GAAGT,qCAAqC,CAAC7+V,aAAa,CAAC,wCAAwC,CAAC;IACxI,IAAIs/V,oCAAoC,CAAC39V,KAAK,KAAK,EAAE,EAAG;MACtDk9V,qCAAqC,CAACjiW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9D,CAAC,MAAM;MACL+hW,qCAAqC,CAACjiW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACjE;IACA;IACA,IAAI0iW,iCAAiC,GAAGT,kCAAkC,CAAC9+V,aAAa,CAAC,qCAAqC,CAAC;IAC/H,IAAIu/V,iCAAiC,CAAC59V,KAAK,KAAK,EAAE,EAAG;MACnDm9V,kCAAkC,CAACliW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC3D,CAAC,MAAM;MACLgiW,kCAAkC,CAACliW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC9D;IACA;IACA,IAAI2iW,gCAAgC,GAAGT,iCAAiC,CAAC/+V,aAAa,CAAC,oCAAoC,CAAC;IAC5H,IAAIw/V,gCAAgC,CAAC79V,KAAK,KAAK,EAAE,EAAG;MAClDo9V,iCAAiC,CAACniW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1D,CAAC,MAAM;MACLiiW,iCAAiC,CAACniW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7D;IAEAosJ,YAAY,CAAC,CAAC;EAChB;EAEA,SAASuzM,iCAAiCA,CAAA,EAAG;IAC3C,IAAI3iB,SAAS,GAAG,IAAI/iU,IAAI,CAAC,CAAC;IAC1B,IAAI2lV,kBAAkB,GAAG,IAAI3lV,IAAI,CAACojM,qBAAqB,CAAC;IAExD,IAAI69I,YAAY,GAAGvqU,KAAK,CAACiF,QAAQ,CAACgqU,kBAAkB,EAAE5iB,SAAS,CAAC;IAEhE,IAAIke,YAAY,EAAE;MAChB8B,wBAAwB,CAACj9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACjD,CAAC,MAAM;MACL+8V,wBAAwB,CAACj9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACpD;EAEF;EAEA,SAASosJ,YAAYA,CAAA,EAAG;IACtB,IAAI32C,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAKksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,IAAKk5V,YAAY,EAAE;MAC1ClmN,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACjCu9V,aAAa,CAACz9V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvCo+O,SAAS,CAACt+O,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC,CAAC,MAAM;MACLuzI,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACpCw9V,aAAa,CAACz9V,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC1Cq+O,SAAS,CAACt+O,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC;IAEA,IAAKwvD,MAAM,KAAKmqS,kBAAkB,IAAK,CAACroV,CAAC,CAACC,OAAO,CAACsyC,SAAS,EAAE;MAC3DqrG,SAAS,CAACnvJ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC,CAAC,MAAM;MACLivJ,SAAS,CAACnvJ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC;EAEJ;EAEA,SAASqoI,WAAWA,CAAA,EAAG;IAErBy0N,iBAAiB,CAACz5V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE,IAAIi5V,SAAS,GAAGl5V,cAAc,CAACZ,KAAK,CAACuf,KAAK,CAAC,GAAG,CAAC;MAC/C,IAAIw7U,eAAe,GAAG,IAAI5lV,IAAI,CAAC2kV,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,GAAE,CAAC,EAAE,CAAC,CAAC;MAChEtB,mBAAmB,GAAGuC,eAAe;MAErC,IAAIn6V,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCq4M,YAAY,GAAG,EAAE;MACnB,CAAC,MAAM;QACLA,YAAY,GAAGz3M,cAAc,CAACZ,KAAK;MACrC;MAEAs4M,iBAAiB,GAAG,EAAE;MACtBlD,+BAA+B,CAAC,CAAC;MACjChqF,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF6sO,uBAAuB,CAAC15V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC1D,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCs4M,iBAAiB,GAAG,EAAE;MACxB,CAAC,MAAM;QACLA,iBAAiB,GAAG13M,cAAc,CAACZ,KAAK;MAC1C;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF8sO,wBAAwB,CAAC35V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC3Dw8M,qBAAqB,GAAGx8M,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC3C66V,iCAAiC,CAAC,CAAC;MAClCvzM,YAAY,CAAC,CAAC;IAEhB,CAAC,CAAC;IACF;IACA;IACA;IACA;;IAGFqvD,mBAAmB,CAACp4M,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACrDy8M,gBAAgB,GAAGz8M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACrCorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;;IAEF;IACAyxO,sBAAsB,CAACt+V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACxD08M,mBAAmB,GAAG18M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACxCorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF0xO,qBAAqB,CAACv+V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACvD28M,oBAAoB,GAAG38M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACzCorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF2xO,+BAA+B,CAACx+V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACjE48M,6BAA6B,GAAG58M,KAAK,CAACC,MAAM,CAACgE,KAAK;MAClDorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IACF;IACA4xO,uBAAuB,CAACz+V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzD68M,oBAAoB,GAAG78M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACzCorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IACF;IACA6xO,2BAA2B,CAAC1+V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7D88M,0BAA0B,GAAG98M,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC/CorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IACF;IACA8xO,qCAAqC,CAAC3+V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACvE+8M,kCAAkC,GAAG/8M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACvDorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IACF;IACA+xO,kCAAkC,CAAC5+V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACpEg9M,+BAA+B,GAAGh9M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACpDorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IACF;IACAgyO,iCAAiC,CAAC7+V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACnEi9M,4BAA4B,GAAGj9M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACjDorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFstO,aAAa,CAACn6V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAClD;MACG28V,aAAa,CAACz9V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvCuzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC,CAAC,CAAC;IAEAuzI,OAAO,CAACnwI,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5C;MACG28V,aAAa,CAACz9V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvCuzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC,CAAC,CAAC;EAIF;EACM;EACA,eAAe6/V,6BAA6BA,CAAA,EAAG;IAC3C,MAAM31P,YAAY,GAAG;MACrBjzF,KAAK,EAAE,KAAK;MACZZ,OAAO,EAAE,wBAAwB;MACjCgB,cAAc,EAAE,CAAC,OAAO,EAAC,4BAA4B,EAAE,yCAAyC,EAAE,2BAA2B,CAAC;MAC9HM,OAAO,EAAE;IAET,CAAC;;IAEA;IACH,MAAM84F,SAAS,GAAG,CAAC;MAAEl4F,MAAM,EAAG,CAAC,SAAS,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB;IAAC,CAAC,EACtG;MAAEA,MAAM,EAAG,CAAC,SAAS,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,sBAAsB;IAAC,CAAC,CAAE;IAG7G,MAAMgqG,MAAM,GAAGpsG,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;IACxC/zF,KAAK,CAAC9V,QAAQ,CAACkiH,MAAM,EAAE9R,SAAS,CAAC;IAE9B,OAAO8R,MAAM;EACd;;EAGD;EACG,SAASjG,iBAAiBA,CAACnQ,QAAQ,EAAE;IAEnC,MAAM6nC,WAAW,GAAI/wI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClD,IAAIqxI,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC2oG,QAAQ,CAACoQ,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAEzC,MAAMuF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEtCsF,IAAI,CAAC5E,WAAW,CAACyrG,QAAQ,CAACoQ,IAAI,CAAC;IAEnCy3B,WAAW,CAACtzI,WAAW,CAAC4E,IAAI,CAAC;IAC7B0uI,WAAW,CAACtzI,WAAW,CAACm0I,MAAM,CAAC;IAC/B;;IAEA,OAAOb,WAAW;EACpB;EAEA,SAASomN,cAAcA,CAAA,EAAG;IAExB;IACA;IACA,IAAIp0V,IAAI,GAAG;MACT8/C,UAAU;MACVi3J,UAAU;MACVG,YAAY,EAAEmgJ,mBAAmB,CAACp3U,WAAW,CAAC,CAAC,GAAG,GAAG,GAAG,CAACo3U,mBAAmB,CAACn3U,QAAQ,CAAC,CAAC,GAAE,CAAC,EAAE/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI;MACrI;MACC+tJ,iBAAiB;MAClBC,qBAAqB,EAAEzpL,IAAI,CAACkY,eAAe,CAACuxK,qBAAqB,CAACh5L,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC/Ei5L,gBAAgB;MAChBC,mBAAmB;MAAG;MACtBC,oBAAoB;MACpBC,6BAA6B;MAC7BC,oBAAoB;MAAI;MACxBC,0BAA0B;MAAE;MAC5BC,kCAAkC;MAAE;MACpCC,+BAA+B;MAAE;MACjCC,4BAA4B;MAAE;MAC9BtuJ;IACF,CAAC;IAEDikH,OAAO,CAACypC,yBAAyB,CAACj3M,IAAI,EAAE,UAASmlG,OAAO,EAAE;MACxDt3F,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACnBirB,UAAU,CAAC,YAAW;QACpBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB,CAAC,EAAE,IAAI,CAAC;IAEZ,CAAC,CAAC;IAEF,SAASuuJ,aAAaA,CAACC,OAAO,EAAE;MAC9B,IAAIA,OAAO,YAAY/lV,IAAI,IAAI,CAACyK,KAAK,CAACs7U,OAAO,CAACr7U,OAAO,CAAC,CAAC,CAAC,EAAE;QACpD,OAAOq7U,OAAO,CAAC95U,WAAW,CAAC,CAAC,GAAG,GAAG,GAAI85U,OAAO,CAAC75U,QAAQ,CAAC,CAAC,CAAE/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG;MACvG,CAAC,MAAM;QACD,OAAOz7B,IAAI,CAACkY,eAAe,CAACk0T,OAAO,CAAC37U,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACxD;IACF;EACF;EAEA,SAAS+1U,cAAcA,CAACwB,QAAQ,EAAE;IAEhC,IAAI31V,IAAI,GAAG;MACT8/C,UAAU;MACVi3J,UAAU;MACVG,YAAY,EAAEmgJ,mBAAmB,CAACp3U,WAAW,CAAC,CAAC,GAAG,GAAG,GAAG,CAACo3U,mBAAmB,CAACn3U,QAAQ,CAAC,CAAC,GAAE,CAAC,EAAE/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI;MACpI+tJ,iBAAiB;MAClB;MACAC,qBAAqB,EAAEzpL,IAAI,CAACkY,eAAe,CAACuxK,qBAAqB,CAACh5L,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC/Ei5L,gBAAgB;MAChBC,mBAAmB;MAAG;MACtBC,oBAAoB;MACpBC,6BAA6B;MAC7BC,oBAAoB;MAAG;MACvBC,0BAA0B;MAAE;MAC5BC,kCAAkC;MAAE;MACpCC,+BAA+B;MAAE;MACjCC,4BAA4B;MAAE;MAC9BtuJ,MAAM;MACNgwE;IACF,CAAC;IAEDi0C,OAAO,CAACuqC,yBAAyB,CAAC/3M,IAAI,EAAE,UAASmlG,OAAO,EAAE;MACxDt3F,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrB,IAAIy7V,QAAQ,IAAI,YAAY,EAAE;QAC5BxwU,UAAU,CAAC,YAAW;UACpBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrBkQ,OAAO,CAACjQ,IAAI,CAAC,CAAC;UACdwC,GAAG,CAACg0M,wBAAwB,CAAC5wJ,UAAU,EAAE,gBAAgB,CAAC;QAC5D,CAAC,EAAE,IAAI,CAAC;MACV,CAAC,MAAM;QAAG;QACR36B,UAAU,CAAC,YAAW;UACpBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC;MACV;IACF,CAAC,CAAC;EAEJ;EAEA,SAAShgD,kBAAkBA,CAACwrD,UAAU,EAAE;IACtC,IAAI5nC,WAAW,GAAGniK,KAAK,CAAC1P,KAAK,CAAC;MAC5BG,EAAE,EAAE,oBAAoB;MACxBa,UAAU,EAAE;IACd,CAAC,CAAC;IACF,IAAIkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAiB;QACjBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;QACtB,IAAIx+I,MAAM,GAAG,MAAM68I,OAAO,CAACyqC,6BAA6B,CAAClB,UAAU,CAAC;QACpE,IAAIpmL,MAAM,CAACqpU,8BAA8B,KAAK,GAAG,EAAC;UAC7Ct9V,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACzB;MACX;IACF,CAAC,CAAC;IACF,IAAI5jD,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,OAAO;MACboB,QAAQ,EAAE,SAAAA,CAAA,EAAW;QACnBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;MACzB;IACF,CAAC,CAAC;IACF3lI,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B,IAAIj+G,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,8CAA8C;IACzE+0K,WAAW,CAACz0K,WAAW,CAACgvC,cAAc,CAAC;IACvCylI,WAAW,CAACz0K,WAAW,CAAC8uC,OAAO,CAAC;IAChCx8B,KAAK,CAAC9S,IAAI,CAACi1K,WAAW,CAAC;EACzB;EAIN,OAAO;IACHhyK;EAEF,CAAC;AACH,CAAC,EAAE,CAAC;ACp5BR,MAAMyyM,kBAAkB,GAAG,CAAC,MAAM;EAChC;EACA,IAAInE,gBAAgB,CAAC,CAAC;EACtB;EACA,IAAIwuJ,gBAAgB,CAAC,CAAC;EACtB,IAAIC,qBAAqB,CAAC,CAAC;EAC3B;EACA,IAAIyC,cAAc;;EAGlB;EACA,IAAIjrC,WAAW;EACf,IAAI7F,iBAAiB;EACrB,IAAIH,aAAa;EACjB,IAAI8nC,aAAa;EACjB,IAAI/nC,aAAa;;EAEjB;EACA,IAAI3rQ,UAAU,CAAC,CAAE;EACjB,IAAIgoE,UAAU;EACd,IAAIwD,WAAW,CAAC,CAAC;EACjB,IAAI8qF,QAAQ,CAAC,CAAC;EACd,IAAIgC,aAAa,CAAC,CAAE;EACpB,IAAIC,SAAS,CAAC,CAAC;;EAEf;EACA,IAAIlwF,aAAa,CAAC,CAAC;EACnB,IAAI5+D,MAAM,CAAC,CAAC;EACZ,IAAIgwE,SAAS;EACb,IAAIy1E,eAAe,CAAC,CAAC;;EAErB,IAAIykJ,YAAY,GAAG,KAAK;EAExB,IAAIC,kBAAkB;EAEtB,eAAev2V,IAAIA,CACjBq+T,YAAY,EACZo4B,eAAe,EACfjmJ,yBAAyB,EACzBI,2BAA2B,EAC3BH,+BAA+B,EAC/BimJ,mBAAmB,EACnBC,mBAAmB,EAEnB;IAAA,IADAC,WAAW,GAAAvvV,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,SAAS;IAEvB2H,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBnP,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC9I,OAAO,CAACgF,CAAC,IAAIA,CAAC,CAACzF,MAAM,CAAC,CAAC,CAAC;IAEtE+lD,UAAU,GAAG8zS,eAAe,CAACn2V,EAAE;IAC/Bi2V,kBAAkB,GAAGG,mBAAmB;IAExC,IAAIr4B,YAAY,IAAIz/S,MAAM,CAAC8B,IAAI,CAAC29S,YAAY,CAAC,CAACjhU,MAAM,KAAK,CAAC,EAAE;MAC1DgvD,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzBs9E,UAAU,GAAG0zM,YAAY,CAAC,CAAC,CAAC,CAAC1zM,UAAU;MACvCwD,WAAW,GAAGkwM,YAAY,CAAC,CAAC,CAAC,CAAClwM,WAAW,CAAC,CAAC;MAC3C8qF,QAAQ,GAAGolH,YAAY,CAAC,CAAC,CAAC,CAACplH,QAAQ,CAAC,CAAC;MACrCgC,aAAa,GAAGojH,YAAY,CAAC,CAAC,CAAC,CAACpjH,aAAa,CAAC,CAAC;MAC/CC,SAAS,GAAGmjH,YAAY,CAAC,CAAC,CAAC,CAACnjH,SAAS,CAAC,CAAC;IAEzC,CAAC,MAAM;MACLlwF,aAAa,GAAG98G,CAAC,CAACC,OAAO,CAACmoC,QAAQ;MAClC8V,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzB+uF,SAAS,GAAGo0E,yBAAyB;MACrC7lF,UAAU,GAAG,GAAG;MAChBwD,WAAW,GAAGwoO,mBAAmB;MACjC9kJ,eAAe,GAAGpB,+BAA+B;MACjDwI,QAAQ,GAAG,EAAE;MACbgC,aAAa,GAAG,EAAE;MAClBC,SAAS,GAAG,EAAE;IAEhB;IAEA,IAAI07I,WAAW,KAAK,SAAS,IAAI,CAAC1oV,CAAC,CAACC,OAAO,CAACwyC,SAAS,EAAE;MACrD21S,YAAY,GAAG,IAAI;IACrB;IAEA,IAAIM,WAAW,KAAK,UAAU,IAAI,CAAC1oV,CAAC,CAACC,OAAO,CAACuyC,SAAS,EAAE;MACtD41S,YAAY,GAAG,IAAI;IACrB;IAEA,IAAIlqS,MAAM,KAAKsqS,mBAAmB,EAAE;MAClCJ,YAAY,GAAG,IAAI;IACrB;IAEAhoJ,gBAAgB,GAAG3qM,KAAK,CAACxD,KAAK,CAAC;MAC7BU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,cAAc;MACrBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE8uB,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACtD;MACA/e,QAAQ,EAAE;MACV;IACF,CAAC,CAAC;IAGF46V,gBAAgB,GAAGh7V,QAAQ,CAAC3B,KAAK,CAAC;MAChC8B,KAAK,EAAE,WAAW;MAClBF,UAAU,EAAE,kBAAkB;MAC9BL,KAAK,EAAEu3M,QAAQ;MACf/2M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEFyG,qBAAqB,GAAGj7V,QAAQ,CAAC3B,KAAK,CAAC;MACrC8B,KAAK,EAAE,cAAc;MACrBF,UAAU,EAAE,uBAAuB;MACnCL,KAAK,EAAEu5M,aAAa;MACpB/4M,QAAQ,EAAEo0V;IACZ,CAAC,CAAC;IAEFkJ,cAAc,GAAG77V,KAAK,CAACxD,KAAK,CAAC;MAC3B8B,KAAK,EAAE,WAAW;MAClBP,KAAK,EAAEw5M,SAAS;MAChBr6M,IAAI,EAAE,UAAU;MAChBM,UAAU,EAAE,UAAU;MACtBe,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEF/hC,WAAW,GAAGr0T,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,MAAM;MACZY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBq1V,cAAc,CAAC,MAAM,CAAC;MACxB;IACF,CAAC,CAAC;IACFtoC,iBAAiB,GAAGxuT,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,YAAY;MAClBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACXY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBq1V,cAAc,CAAC,YAAY,CAAC;MAC9B;IACF,CAAC,CAAC;IACFX,aAAa,GAAGn2V,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACX;MACAoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBs1V,cAAc,CAAC,CAAC;MAClB;IACF,CAAC,CAAC;IACF3oC,aAAa,GAAGpuT,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,QAAQ;MACd;MACAoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBysJ,kBAAkB,CAACzjC,UAAU,CAAC;MAChC;IACF,CAAC,CAAC;IACF4jM,aAAa,GAAGruT,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBN,IAAI,EAAE,OAAO;MACbY,UAAU,EAAE,CAAC,gBAAgB,CAAC;MAC9BQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBpC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;IAEFnpE,WAAW,CAAC,CAAC;IAEb,IAAIiyN,UAAU,GAAG/9O,iBAAiB,CAACs9O,eAAe,CAAC;IAEnD,IAAI1vU,SAAS,GAAGjnB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0mB,SAAS,CAACpqB,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACtC,IAAI60I,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC,MAAM8T,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C;IACA8T,OAAO,CAAClX,SAAS,GAAG,iCAAiC;IACrDkX,OAAO,CAACxX,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAE1CkqB,SAAS,CAACxpB,WAAW,CAAC25V,UAAU,CAAC;IACjC;IACAnwU,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAC7B3qH,SAAS,CAACxpB,WAAW,CAAC4W,OAAO,CAAC;IAC9B4S,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAE7B,MAAMylN,eAAe,GAAGr3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD82V,eAAe,CAACx6V,SAAS,CAACE,GAAG,CAAC,2CAA2C,CAAC;IAC1Es6V,eAAe,CAAC55V,WAAW,CAAC+wM,gBAAgB,CAAC;IAC7C6oJ,eAAe,CAAC55V,WAAW,CAACw/V,qBAAqB,CAAC;IAClD5F,eAAe,CAAC55V,WAAW,CAACu/V,gBAAgB,CAAC;;IAE/C;IACC;;IAIA;IACD;;IAGE/1U,SAAS,CAACxpB,WAAW,CAAC45V,eAAe,CAAC;IACxC;IACC;;IAECpwU,SAAS,CAACxpB,WAAW,CAACiiW,cAAc,CAAC;IAErC,IAAIpI,eAAe,GAAGt3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnD+2V,eAAe,CAACz6V,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAEhD,IAAIw6V,aAAa,GAAGv3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDg3V,aAAa,CAAC16V,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAE5Cw6V,aAAa,CAACp6V,SAAS,GAAG,yGAAyG;IACnIm6V,eAAe,CAAC75V,WAAW,CAAC85V,aAAa,CAAC;IAE1C,IAAIhrT,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC8tH,UAAU,IAAI,GAAG,GAAGt+E,OAAO,CAAC9uC,WAAW,CAACg3T,WAAW,CAAC,GAAGloR,OAAO,CAAC9uC,WAAW,CAAC84V,aAAa,CAAC;IACzF1rO,UAAU,IAAI,GAAG,GAAGt+E,OAAO,CAAC9uC,WAAW,CAACmxT,iBAAiB,CAAC,GAAGriR,OAAO,CAAC9uC,WAAW,CAAC+wT,aAAa,CAAC;IAE/F,IAAIoG,QAAQ,GAAG50T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Cq0T,QAAQ,CAAC/3T,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACjC63T,QAAQ,CAACn3T,WAAW,CAACgxT,aAAa,CAAC;IAEnC,IAAI+oC,MAAM,GAAGx3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1Ci3V,MAAM,CAAC36V,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC9By6V,MAAM,CAAC/5V,WAAW,CAAC8uC,OAAO,CAAC;IAC3BirT,MAAM,CAAC/5V,WAAW,CAACm3T,QAAQ,CAAC;IAE5B,IAAItoQ,MAAM,KAAKmqS,kBAAkB,EAAEe,MAAM,CAAC/5V,WAAW,CAAC65V,eAAe,CAAC;IAEtErwU,SAAS,CAACxpB,WAAW,CAAC+5V,MAAM,CAAC;IAE7BwB,uBAAuB,CAAC,CAAC;IACzB2G,6BAA6B,CAAC,CAAC;IAE/BzwV,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACwpB,SAAS,CAAC;IAEvC/X,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;;IAEtB;IACAm2F,mBAAmB,CAAC,CAAC;EACvB;EACA;EACA;EACA;EACA,eAAe2yO,6BAA6BA,CAAA,EAAG;IAC7C,MAAM;MAAEC,uBAAuB,EAAEC;IAAe,CAAC,GAAG,MAAMtvL,OAAO,CAACuoC,sBAAsB,CAAC,OAAO,CAAC;IACjG;IACA,IAAI/1M,IAAI,GAAG88V,cAAc,CAAC94V,GAAG,CAACo0M,aAAa,KAAK;MAC9C36M,EAAE,EAAE26M,aAAa,CAACpsK,IAAI;MACtBntC,KAAK,EAAEu5M,aAAa,CAACpsK,IAAI;MACzBpuC,IAAI,EAAEw6M,aAAa,CAAC/iG;IACtB,CAAC,CAAC,CAAC;IAEH,MAAMzhG,KAAK,GAAG5T,IAAI,CAACwmC,SAAS,CAAChpB,CAAC,IAAIA,CAAC,CAAC/f,EAAE,IAAI26M,aAAa,CAAC;IACxD,IAAIxkM,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB;IAAA;IAGF5T,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,uBAAuB,EAAE2F,IAAI,EAAEo4M,aAAa,CAAC;EACjE;;EAIA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;;EAEA;EACA;EACA;;EAEA,SAAS69I,uBAAuBA,CAAA,EAAG;IACjC,MAAMuF,oBAAoB,GAAG,CAC3B;MAAE59V,IAAI,EAAE,QAAQ;MAAEiB,KAAK,EAAE;IAAS,CAAC,EACnC;MAAEjB,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,EAC3B;MAAEjB,IAAI,EAAE,GAAG;MAAEiB,KAAK,EAAE;IAAI,CAAC,EACzB;MAAEjB,IAAI,EAAE,GAAG;MAAEiB,KAAK,EAAE;IAAI,CAAC,EACzB;MAAEjB,IAAI,EAAE,GAAG;MAAEiB,KAAK,EAAE;IAAI,CAAC,CAC1B;IACD,MAAM43V,iBAAiB,GAAG,CACxB;MAAE74V,IAAI,EAAE,QAAQ;MAAEiB,KAAK,EAAE;IAAS,CAAC,EACnC;MAAEjB,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,EAC3B;MAAEjB,IAAI,EAAE,IAAI;MAAEiB,KAAK,EAAE;IAAI,CAAC,CAC3B;IAEDI,QAAQ,CAAC5E,QAAQ,CAAC4/V,gBAAgB,EAAEuB,oBAAoB,EAAEplJ,QAAQ,CAAC;IACnE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EACF;EAEA,SAASnsF,mBAAmBA,CAAA,EAAG;IAC7B,IAAI,CAACmsF,QAAQ,IAAIA,QAAQ,KAAK,EAAE,EAAE;MAChC6jJ,gBAAgB,CAACngW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACvC;IACF,CAAC,MAAM;MACLigW,gBAAgB,CAACngW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC1C;IACF;IAEA,IAAI,CAACq+M,aAAa,IAAIA,aAAa,KAAK,EAAE,EAAE;MAC1C8hJ,qBAAqB,CAACpgW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9C,CAAC,MAAM;MACLkgW,qBAAqB,CAACpgW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACjD;IAGA,IAAIo0N,SAAS,GAAGwuI,cAAc,CAACz/V,aAAa,CAAC,UAAU,CAAC;IAExD,IAAIixN,SAAS,CAACtvN,KAAK,KAAK,EAAE,EAAE;MAC1B89V,cAAc,CAAC7iW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACvC,CAAC,MAAM;MACL2iW,cAAc,CAAC7iW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C;IAEA86V,qBAAqB,CAAC,CAAC;IAEvB1uM,YAAY,CAAC,CAAC;EAChB;EAEA,SAAS0uM,qBAAqBA,CAAA,EAAG;IAC/B,IAAI9d,SAAS,GAAG,IAAI/iU,IAAI,CAAC,CAAC;IAC1B,IAAIghV,aAAa,GAAG,IAAIhhV,IAAI,CAACs3G,WAAW,CAAC;IAEzC,IAAI2pO,YAAY,GAAGvqU,KAAK,CAACiF,QAAQ,CAACqlU,aAAa,EAAEje,SAAS,CAAC;IAE3D,IAAI,CAACke,YAAY,EAAE;MACjBxpJ,gBAAgB,CAAC3xM,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACzC,CAAC,MAAM;MACLyxM,gBAAgB,CAAC3xM,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC5C;EACF;EAEA,SAASosJ,YAAYA,CAAA,EAAG;IACtB,IAAI32C,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,IAAIk5V,YAAY,EAAE;MAC1C/hC,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3Cw5V,aAAa,CAAC15V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,MAAM;MACL03T,WAAW,CAAC53T,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACxC8xT,iBAAiB,CAAC/xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC9Cy5V,aAAa,CAAC15V,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC5C;IAEA,IAAIwvD,MAAM,KAAKmqS,kBAAkB,IAAI,CAACroV,CAAC,CAACC,OAAO,CAACsyC,SAAS,EAAE;MACzD6tQ,aAAa,CAAC3xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,MAAM;MACLyxT,aAAa,CAAC3xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC5C;EACF;EAEA,SAASqoI,WAAWA,CAAA,EAAG;IACrB63N,gBAAgB,CAAC78V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCu3M,QAAQ,GAAG,EAAE;MACf,CAAC,MAAM;QACLA,QAAQ,GAAG32M,cAAc,CAACZ,KAAK;MACjC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFiwO,qBAAqB,CAAC98V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACxD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCu5M,aAAa,GAAG,EAAE;MACpB,CAAC,MAAM;QACLA,aAAa,GAAG34M,cAAc,CAACZ,KAAK;MACtC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFwhF,gBAAgB,CAACruM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD0wH,WAAW,GAAG1wH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChCg2V,qBAAqB,CAAC,CAAC;MACvB1uM,YAAY,CAAC,CAAC;IAChB,CAAC,CAAC;IACFslD,gBAAgB,CAACruM,gBAAgB,CAAC,SAAS,EAAExC,KAAK,IAAI;MACpDA,KAAK,CAACyH,cAAc,CAAC,CAAC;MACtBzH,KAAK,CAAC0N,eAAe,CAAC,CAAC;IACzB,CAAC,CAAC;IAEFq0V,cAAc,CAACv/V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAChDy9M,SAAS,GAAGz9M,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9BorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF4hM,iBAAiB,CAACzuT,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACnD;MACAixT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3C03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACvC,CAAC,CAAC;IAEF03T,WAAW,CAACt0T,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C;MACAixT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3C03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACvC,CAAC,CAAC;EACJ;;EAEA;EACA,SAASs8G,iBAAiBA,CAACnQ,QAAQ,EAAE;IACnC,MAAM6nC,WAAW,GAAG/wI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD,IAAIqxI,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC2oG,QAAQ,CAACoQ,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAE7C,MAAMuF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEtCsF,IAAI,CAAC5E,WAAW,CAACyrG,QAAQ,CAACoQ,IAAI,CAAC;IAE/By3B,WAAW,CAACtzI,WAAW,CAAC4E,IAAI,CAAC;IAC7B0uI,WAAW,CAACtzI,WAAW,CAACm0I,MAAM,CAAC;IAC/B;;IAEA,OAAOb,WAAW;EACpB;EAEA,SAASomN,cAAcA,CAAA,EAAG;IACxB,IAAIp0V,IAAI,GAAG;MACT8/C,UAAU;MACVgoE,UAAU;MACVwD,WAAW,EAAE39F,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5Dg4L,QAAQ;MACRgC,aAAa;MACbC,SAAS;MACT9uJ;IACF,CAAC;IAEDikH,OAAO,CAAC2qC,yBAAyB,CAACn4M,IAAI,EAAE,UAAUmlG,OAAO,EAAE;MACzDt3F,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrBirB,UAAU,CAAC,YAAY;QACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB,CAAC,EAAE,IAAI,CAAC;IACV,CAAC,CAAC;EACJ;EAEA,SAAS4oJ,cAAcA,CAACwB,QAAQ,EAAE;IAChC,IAAI31V,IAAI,GAAG;MACT8/C,UAAU;MACVgoE,UAAU;MACVwD,WAAW,EAAE39F,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5Dg4L,QAAQ;MACRgC,aAAa;MACbC,SAAS;MACT9uJ,MAAM;MACNgwE,SAAS;MACTy1E,eAAe;MACf7mF;IACF,CAAC;IAEDqlD,OAAO,CAAC+qC,yBAAyB,CAACv4M,IAAI,EAAE,UAAUmlG,OAAO,EAAE;MACzDt3F,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrB,IAAIy7V,QAAQ,IAAI,YAAY,EAAE;QAC5BxwU,UAAU,CAAC,YAAY;UACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrBkQ,OAAO,CAACjQ,IAAI,CAAC,CAAC;UACdwC,GAAG,CAAC6zM,sBAAsB,CAACzwJ,UAAU,EAAE,UAAU,CAAC;QACpD,CAAC,EAAE,IAAI,CAAC;MACV,CAAC,MAAM;QACL;QACA36B,UAAU,CAAC,YAAY;UACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC;MACV;IACF,CAAC,CAAC;EACJ;;EAEA;EACA,SAAShgD,kBAAkBA,CAACzjC,UAAU,EAAE;IACtC,IAAIqnD,WAAW,GAAGniK,KAAK,CAAC1P,KAAK,CAAC;MAC5BG,EAAE,EAAE,oBAAoB;MACxBa,UAAU,EAAE;IACd,CAAC,CAAC;IACF,IAAIkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QAC1BkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;QACvB,IAAIx+I,MAAM,GAAG,MAAM68I,OAAO,CAACspC,uBAAuB,CAAChvF,UAAU,CAAC;QAC9D,IAAIn3F,MAAM,CAACimU,wBAAwB,KAAK,GAAG,EAAE;UAC3Cl6V,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACtB;MACF;IACF,CAAC,CAAC;IACF,IAAI5jD,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,OAAO;MACboB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;MACzB;IACF,CAAC,CAAC;IACF3lI,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B,IAAIj+G,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,8CAA8C;IACzE+0K,WAAW,CAACz0K,WAAW,CAACgvC,cAAc,CAAC;IACvCylI,WAAW,CAACz0K,WAAW,CAAC8uC,OAAO,CAAC;IAChCx8B,KAAK,CAAC9S,IAAI,CAACi1K,WAAW,CAAC;EACzB;EAEA,OAAO;IACLhyK;EACF,CAAC;AACH,CAAC,EAAE,CAAC;ACriBJ,MAAM2yM,4BAA4B,GAAG,CAAC,MAAM;EAC1C;EACA,IAAIrE,gBAAgB;EACpB,IAAI2/G,cAAc;EAClB,IAAIC,YAAY;EAChB,IAAI4uC,gBAAgB;EACpB,IAAIvoL,gBAAgB;EACpB,IAAIqrL,qBAAqB;EACzB,IAAI7C,qBAAqB;EACzB,IAAI8C,4BAA4B;EAChC,IAAIC,gCAAgC;EACpC,IAAIC,iCAAiC;EACrC,IAAIP,cAAc;EAClB,IAAI9G,kBAAkB;;EAEtB;EACA,IAAI4E,eAAe;EACnB,IAAI/oC,WAAW;EACf,IAAI7F,iBAAiB;EACrB,IAAIH,aAAa;EACjB,IAAI8nC,aAAa;EACjB,IAAI/nC,aAAa;;EAEjB;EACA,IAAI3rQ,UAAU;EACd,IAAIgoE,UAAU;EACd,IAAIwD,WAAW;EACf,IAAIh4F,SAAS;EACb,IAAIf,OAAO;EACX,IAAI6jL,QAAQ;EACZ,IAAI/wM,QAAQ;EACZ,IAAIsoK,QAAQ;EACZ,IAAIyqC,aAAa;EACjB,IAAIO,oBAAoB;EACxB,IAAIC,wBAAwB;EAC5B,IAAIC,yBAAyB;EAC7B,IAAIR,SAAS;EACb,IAAIS,aAAa;EACjB,IAAIqkJ,oBAAoB;;EAExB;EACA,IAAIh1O,aAAa;EACjB,IAAI5+D,MAAM;EACV,IAAIgwE,SAAS;EACb,IAAIy1E,eAAe;EAEnB,IAAIykJ,YAAY,GAAG,KAAK;EAExB,IAAIC,kBAAkB;EAEtB,eAAev2V,IAAIA,CACjBq+T,YAAY,EACZo4B,eAAe,EACfjmJ,yBAAyB,EACzBI,2BAA2B,EAC3BH,+BAA+B,EAC/BimJ,mBAAmB,EACnBC,mBAAmB,EAEnB;IAAA,IADAC,WAAW,GAAAvvV,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,SAAS;IAEvB2H,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBnP,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC9I,OAAO,CAACgF,CAAC,IAAIA,CAAC,CAACzF,MAAM,CAAC,CAAC,CAAC;IAEtE+lD,UAAU,GAAG8zS,eAAe,CAACn2V,EAAE;IAC/Bi2V,kBAAkB,GAAGG,mBAAmB;IAExC,IAAIr4B,YAAY,IAAIz/S,MAAM,CAAC8B,IAAI,CAAC29S,YAAY,CAAC,CAACjhU,MAAM,KAAK,CAAC,EAAE;MAC1DgvD,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzBs9E,UAAU,GAAG0zM,YAAY,CAAC,CAAC,CAAC,CAAC1zM,UAAU;MACvCwD,WAAW,GAAGkwM,YAAY,CAAC,CAAC,CAAC,CAAClwM,WAAW,CAAC,CAAC;MAC3Ch4F,SAAS,GAAGkoS,YAAY,CAAC,CAAC,CAAC,CAACloS,SAAS,CAAC,CAAC;MACvCf,OAAO,GAAGipS,YAAY,CAAC,CAAC,CAAC,CAACjpS,OAAO,CAAC,CAAC;MACnC6jL,QAAQ,GAAGolH,YAAY,CAAC,CAAC,CAAC,CAACplH,QAAQ,CAAC,CAAC;MACrC/wM,QAAQ,GAAGm2T,YAAY,CAAC,CAAC,CAAC,CAACn2T,QAAQ;MACnCsoK,QAAQ,GAAG6tJ,YAAY,CAAC,CAAC,CAAC,CAACjvJ,UAAU;MACrC6rC,aAAa,GAAGojH,YAAY,CAAC,CAAC,CAAC,CAACpjH,aAAa,CAAC,CAAC;MAC/CS,yBAAyB,GAAG2iH,YAAY,CAAC,CAAC,CAAC,CAAC3iH,yBAAyB,CAAC,CAAC;MACvER,SAAS,GAAGmjH,YAAY,CAAC,CAAC,CAAC,CAACnjH,SAAS,CAAC,CAAC;MACvCS,aAAa,GAAG0iH,YAAY,CAAC,CAAC,CAAC,CAAC1iH,aAAa,CAAC,CAAC;MAC/CH,oBAAoB,GAAG6iH,YAAY,CAAC,CAAC,CAAC,CAAC7iH,oBAAoB,CAAC,CAAC;MAC7DC,wBAAwB,GAAG4iH,YAAY,CAAC,CAAC,CAAC,CAAC5iH,wBAAwB,CAAC,CAAC;IACvE,CAAC,MAAM;MACLzwF,aAAa,GAAG98G,CAAC,CAACC,OAAO,CAACmoC,QAAQ;MAClC8V,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzB+uF,SAAS,GAAGo0E,yBAAyB;MACrC7lF,UAAU,GAAG,GAAG;MAChBwD,WAAW,GAAGwoO,mBAAmB;MACjC;MACA9kJ,eAAe,GAAGpB,+BAA+B;MACjDt6K,SAAS,GAAG,EAAE;MACdf,OAAO,GAAG,EAAE;MACZ6jL,QAAQ,GAAG,EAAE;MACb/wM,QAAQ,GAAG,EAAE;MACbsoK,QAAQ,GAAG,EAAE;MACbyqC,aAAa,GAAG,EAAE;MAClBS,yBAAyB,GAAG,EAAE;MAC9BR,SAAS,GAAG,EAAE;MACdS,aAAa,GAAG,EAAE;MAClBH,oBAAoB,GAAG,EAAE;MACzBC,wBAAwB,GAAG,EAAE;IAC/B;IAEA,IAAIm7I,WAAW,KAAK,SAAS,IAAI,CAAC1oV,CAAC,CAACC,OAAO,CAACwyC,SAAS,EAAE;MACrD21S,YAAY,GAAG,IAAI;IACrB;IAEA,IAAIM,WAAW,KAAK,UAAU,IAAI,CAAC1oV,CAAC,CAACC,OAAO,CAACuyC,SAAS,EAAE;MACtD41S,YAAY,GAAG,IAAI;IACrB;IAEA,IAAIlqS,MAAM,KAAKsqS,mBAAmB,EAAE;MAClCJ,YAAY,GAAG,IAAI;IACrB;IAEAhoJ,gBAAgB,GAAG3qM,KAAK,CAACxD,KAAK,CAAC;MAC7BU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,cAAc;MACrBrB,KAAK,EAAE,WAAW;MAClBc,KAAK,EAAE8uB,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACtD;MACA/e,QAAQ,EAAE;MACV;IACF,CAAC,CAAC;IAEF+rT,cAAc,GAAGtqT,KAAK,CAACxD,KAAK,CAAC;MAC3B8B,KAAK,EAAE,YAAY;MACnBpB,IAAI,EAAE,MAAM;MACZa,KAAK,EAAEy0B,SAAS;MAChBj0B,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEFpoC,YAAY,GAAGvqT,KAAK,CAACxD,KAAK,CAAC;MACzB8B,KAAK,EAAE,UAAU;MACjBpB,IAAI,EAAE,MAAM;MACZa,KAAK,EAAE0zB,OAAO;MACdlzB,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEFwG,gBAAgB,GAAGh7V,QAAQ,CAAC3B,KAAK,CAAC;MAChC8B,KAAK,EAAE,WAAW;MAClBF,UAAU,EAAE,kBAAkB;MAC9BL,KAAK,EAAEu3M,QAAQ;MACf/2M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEF/hL,gBAAgB,GAAGzyK,QAAQ,CAAC3B,KAAK,CAAC;MAChCG,EAAE,EAAE,kBAAkB;MACtB2B,KAAK,EAAE,UAAU;MACjBF,UAAU,EAAE,kBAAkB;MAC9BL,KAAK,EAAEwG,QAAQ;MACfhG,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEFsJ,qBAAqB,GAAG99V,QAAQ,CAAC3B,KAAK,CAAC;MACrCG,EAAE,EAAE,uBAAuB;MAC3B2B,KAAK,EAAE,gBAAgB;MACvBF,UAAU,EAAE,uBAAuB;MACnCL,KAAK,EAAE8uK,QAAQ;MACftuK,QAAQ,EAAEo0V;IACd,CAAC,CAAC;IAEAyG,qBAAqB,GAAGj7V,QAAQ,CAAC3B,KAAK,CAAC;MACrC8B,KAAK,EAAE,gBAAgB;MACvBF,UAAU,EAAE,uBAAuB;MACnCL,KAAK,EAAEu5M,aAAa;MACpB/4M,QAAQ,EAAEo0V;IACZ,CAAC,CAAC;IAEFuJ,4BAA4B,GAAG/9V,QAAQ,CAAC3B,KAAK,CAAC;MAC5C8B,KAAK,EAAE,mCAAmC;MAC1CF,UAAU,EAAE,8BAA8B;MAC1CL,KAAK,EAAE85M,oBAAoB;MAC3Bt5M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEFwJ,gCAAgC,GAAGh+V,QAAQ,CAAC3B,KAAK,CAAC;MAChD8B,KAAK,EAAE,yCAAyC;MAChDF,UAAU,EAAE,kCAAkC;MAC9CL,KAAK,EAAE+5M,wBAAwB;MAC/Bv5M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEFyJ,iCAAiC,GAAGj+V,QAAQ,CAAC3B,KAAK,CAAC;MACjD8B,KAAK,EAAE,0CAA0C;MACjDF,UAAU,EAAE,mCAAmC;MAC/CL,KAAK,EAAEg6M,yBAAyB;MAChCx5M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEFkJ,cAAc,GAAG77V,KAAK,CAACxD,KAAK,CAAC;MAC3B8B,KAAK,EAAE,WAAW;MAClBP,KAAK,EAAEw5M,SAAS;MAChBr6M,IAAI,EAAE,UAAU;MAChBM,UAAU,EAAE,UAAU;MACtBe,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEFoC,kBAAkB,GAAG/0V,KAAK,CAACxD,KAAK,CAAC;MAC/B8B,KAAK,EAAE,eAAe;MACtBP,KAAK,EAAEi6M,aAAa;MACpB96M,IAAI,EAAE,UAAU;MAChBM,UAAU,EAAE,UAAU;MACtBe,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEF/hC,WAAW,GAAGr0T,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,MAAM;MACZY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBq1V,cAAc,CAAC,MAAM,CAAC;MACxB;IACF,CAAC,CAAC;IACFtoC,iBAAiB,GAAGxuT,MAAM,CAACC,KAAK,CAAC;MAC/BM,IAAI,EAAE,YAAY;MAClBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACXY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBq1V,cAAc,CAAC,YAAY,CAAC;MAC9B;IACF,CAAC,CAAC;IACFX,aAAa,GAAGn2V,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACX;MACAoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBs1V,cAAc,CAAC,CAAC;MAClB;IACF,CAAC,CAAC;IACF3oC,aAAa,GAAGpuT,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,QAAQ;MACd;MACAoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBysJ,kBAAkB,CAACzjC,UAAU,CAAC;MAChC;IACF,CAAC,CAAC;IACF4jM,aAAa,GAAGruT,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBN,IAAI,EAAE,OAAO;MACbY,UAAU,EAAE,CAAC,gBAAgB,CAAC;MAC9BQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBpC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;IAEFkvJ,eAAe,GAAGp9V,MAAM,CAACC,KAAK,CAAC;MAC7BG,EAAE,EAAE,iBAAiB;MACrBG,IAAI,EAAE,eAAe;MACrBG,KAAK,EAAG,WAAW;MACnBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACXY,UAAU,EAAE,CAAC,cAAc,CAAC;MAC5BQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB;QACEouK,kBAAkB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC;QACvD;MACC;IACF,CAAC,CAAC;IAGF9qC,WAAW,CAAC,CAAC;IAEb,IAAIiyN,UAAU,GAAG/9O,iBAAiB,CAACs9O,eAAe,CAAC;IAEnD,IAAI1vU,SAAS,GAAGjnB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0mB,SAAS,CAACpqB,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACtC,IAAI60I,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC,MAAM8T,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAAClX,SAAS,GAAG,GAAG2zM,2BAA2B,eAAe;IACjEz8L,OAAO,CAACxX,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAE1CkqB,SAAS,CAACxpB,WAAW,CAAC25V,UAAU,CAAC;IACjC;IACAnwU,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAC7B3qH,SAAS,CAACxpB,WAAW,CAAC4W,OAAO,CAAC;IAC9B4S,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAE7B,MAAMylN,eAAe,GAAGr3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD82V,eAAe,CAACx6V,SAAS,CAACE,GAAG,CAAC,2CAA2C,CAAC;IAC1Es6V,eAAe,CAAC55V,WAAW,CAAC+wM,gBAAgB,CAAC;IAC7C6oJ,eAAe,CAAC55V,WAAW,CAAC0wT,cAAc,CAAC;IAC3CkpC,eAAe,CAAC55V,WAAW,CAAC2wT,YAAY,CAAC;IAEzC,MAAM0qC,eAAe,GAAG94V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDu4V,eAAe,CAACj8V,SAAS,CAACE,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;;IAE3E,MAAMojW,WAAW,GAAGngW,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD4/V,WAAW,CAACtjW,SAAS,CAACE,GAAG,CAAC,wBAAwB,CAAC;IACnDojW,WAAW,CAAChjW,SAAS,GAAG,8CAA8C;IAEvE27V,eAAe,CAACr7V,WAAW,CAAC0iW,WAAW,CAAC;IACxCrH,eAAe,CAACr7V,WAAW,CAACg3K,gBAAgB,CAAC;IAC7CqkL,eAAe,CAACr7V,WAAW,CAACqiW,qBAAqB,CAAC;IAClD,IAAI1xV,CAAC,CAACC,OAAO,CAAC2yC,kBAAkB,EAAE83S,eAAe,CAACr7V,WAAW,CAAC+/V,eAAe,CAAC;IAE9E,MAAMzE,eAAe,GAAG/4V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDw4V,eAAe,CAACl8V,SAAS,CAACE,GAAG,CAAC,2CAA2C,CAAC;IAE1Eg8V,eAAe,CAACt7V,WAAW,CAACu/V,gBAAgB,CAAC;IAC7CjE,eAAe,CAACt7V,WAAW,CAACw/V,qBAAqB,CAAC;IAClDlE,eAAe,CAACt7V,WAAW,CAACsiW,4BAA4B,CAAC;IAEzD,MAAMK,eAAe,GAAGpgW,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrD6/V,eAAe,CAACvjW,SAAS,CAACE,GAAG,CAAC,2CAA2C,CAAC;IAE1EqjW,eAAe,CAAC3iW,WAAW,CAACuiW,gCAAgC,CAAC;IAC7DI,eAAe,CAAC3iW,WAAW,CAACwiW,iCAAiC,CAAC;IAE9Dh5U,SAAS,CAACxpB,WAAW,CAAC45V,eAAe,CAAC;IACtCpwU,SAAS,CAACxpB,WAAW,CAACq7V,eAAe,CAAC;IACtC7xU,SAAS,CAACxpB,WAAW,CAACs7V,eAAe,CAAC;IACtC9xU,SAAS,CAACxpB,WAAW,CAAC2iW,eAAe,CAAC;IAEtCn5U,SAAS,CAACxpB,WAAW,CAACiiW,cAAc,CAAC;IACrCz4U,SAAS,CAACxpB,WAAW,CAACm7V,kBAAkB,CAAC;IAEzC,IAAItB,eAAe,GAAGt3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnD+2V,eAAe,CAACz6V,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAEhD,IAAIw6V,aAAa,GAAGv3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDg3V,aAAa,CAAC16V,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAE5Cw6V,aAAa,CAACp6V,SAAS,GAAG,yGAAyG;IACnIm6V,eAAe,CAAC75V,WAAW,CAAC85V,aAAa,CAAC;IAE1C,IAAIhrT,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC8tH,UAAU,IAAI,GAAG,GAAGt+E,OAAO,CAAC9uC,WAAW,CAACg3T,WAAW,CAAC,GAAGloR,OAAO,CAAC9uC,WAAW,CAAC84V,aAAa,CAAC;IACzF1rO,UAAU,IAAI,GAAG,GAAGt+E,OAAO,CAAC9uC,WAAW,CAACmxT,iBAAiB,CAAC,GAAGriR,OAAO,CAAC9uC,WAAW,CAAC+wT,aAAa,CAAC;IAE/F,IAAIoG,QAAQ,GAAG50T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Cq0T,QAAQ,CAAC/3T,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACjC63T,QAAQ,CAACn3T,WAAW,CAACgxT,aAAa,CAAC;IAEnC,IAAI+oC,MAAM,GAAGx3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1Ci3V,MAAM,CAAC36V,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC9By6V,MAAM,CAAC/5V,WAAW,CAAC8uC,OAAO,CAAC;IAC3BirT,MAAM,CAAC/5V,WAAW,CAACm3T,QAAQ,CAAC;IAE5B,IAAItoQ,MAAM,KAAKmqS,kBAAkB,EAAEe,MAAM,CAAC/5V,WAAW,CAAC65V,eAAe,CAAC;IAEtErwU,SAAS,CAACxpB,WAAW,CAAC+5V,MAAM,CAAC;IAE7BwB,uBAAuB,CAAC,CAAC;IACzB2G,6BAA6B,CAAC,CAAC;IAC/B1G,wBAAwB,CAAC,CAAC;IAC1BC,0BAA0B,CAAC,CAAC;IAC5BmH,6BAA6B,CAACx9S,UAAU,CAAC;IAEzC3zC,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACwpB,SAAS,CAAC;IAEvC/X,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;;IAEtB;IACAm2F,mBAAmB,CAAC,CAAC;EACvB;EACA;EACA;EACA;EACA,eAAe2yO,6BAA6BA,CAAA,EAAG;IAC7C,MAAM;MAAEC,uBAAuB,EAAEC;IAAe,CAAC,GAAG,MAAMtvL,OAAO,CAACuoC,sBAAsB,CAAC,OAAO,CAAC;IACjG;IACA,IAAI/1M,IAAI,GAAG88V,cAAc,CAAC94V,GAAG,CAACo0M,aAAa,KAAK;MAC9C36M,EAAE,EAAE26M,aAAa,CAACpsK,IAAI;MACtBntC,KAAK,EAAEu5M,aAAa,CAACpsK,IAAI;MACzBpuC,IAAI,EAAEw6M,aAAa,CAAC/iG;IACtB,CAAC,CAAC,CAAC;IAEH,MAAMzhG,KAAK,GAAG5T,IAAI,CAACwmC,SAAS,CAAChpB,CAAC,IAAIA,CAAC,CAAC/f,EAAE,IAAI26M,aAAa,CAAC;IACxD,IAAIxkM,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB;IAAA;IAGF5T,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,uBAAuB,EAAE2F,IAAI,EAAEo4M,aAAa,CAAC;EACjE;EAEA,eAAe89I,wBAAwBA,CAAA,EAAG;IACxC,MAAM;MAAEE,qBAAqB,EAAE3jL;IAAU,CAAC,GAAG,MAAMjF,OAAO,CAAC+E,iBAAiB,CAACzyH,UAAU,CAAC;IACxF;;IAEAq9S,oBAAoB,GAAG1qL,SAAS;IAEhC,IAAIzyK,IAAI,GAAGyyK,SAAS,CAACzuK,GAAG,CAACqB,QAAQ,KAAK;MACpC5H,EAAE,EAAE4H,QAAQ,CAACknK,UAAU;MACvB1tK,KAAK,EAAEwG,QAAQ,CAAC2mC,IAAI;MACpBpuC,IAAI,EAAEyH,QAAQ,CAACgwG;IACjB,CAAC,CAAC,CAAC;IAEH,MAAMzhG,KAAK,GAAG5T,IAAI,CAACwmC,SAAS,CAAChpB,CAAC,IAAIA,CAAC,CAAC/f,EAAE,IAAI4H,QAAQ,CAAC;IACnD,IAAIuO,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB;MACA;IAAA,CACD,MAAM;MACN;IAAA;IAGD5T,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,kBAAkB,EAAE2F,IAAI,EAAEqF,QAAQ,CAAC;EACvD;EAGA,eAAei4V,6BAA6BA,CAACxC,iBAAiB,EAAE;IAEhE,MAAM;MACLxtL,wBAAwB,EAAEytL;IAC3B,CAAC,GAAG,MAAMvtL,OAAO,CAACC,uBAAuB,CAAC,CAAC;IAC1C;;IAEC,IAAI8vL,iBAAiB,GAAGxC,SAAS,CAACtyV,MAAM,CAACuI,IAAI,IAAI,CAACmsV,oBAAoB,CAACj9T,IAAI,CAACs9T,SAAS,IAAIA,SAAS,CAACjxL,UAAU,KAAKv7J,IAAI,CAACu7J,UAAU,CAAC,CAAC;IAEpI,IAAIvsK,IAAI,GAAGu9V,iBAAiB,CAACv5V,GAAG,CAAEg3V,OAAO,KAAM;MAC9Cv9V,EAAE,EAAEu9V,OAAO,CAACzuL,UAAU;MACtB1tK,KAAK,EAAEm8V,OAAO,CAACzuL,UAAU;MACzB3uK,IAAI,EAAGo9V,OAAO,CAACz9O,QAAQ,IAAI,EAAE,GAAIy9O,OAAO,CAACxuL,YAAY,GAAGwuL,OAAO,CAACxuL,YAAY,GAAG,MAAM,GAAGwuL,OAAO,CAACz9O;IACjG,CAAC,CAAC,CAAC;IAEE,IAAIkgP,gBAAgB,GAAGxgW,QAAQ,CAACiD,cAAc,CAAC,kBAAkB,CAAC;IACpE,MAAM0T,KAAK,GAAG5T,IAAI,CAACwmC,SAAS,CAAEhpB,CAAC,IAAKA,CAAC,CAAC/f,EAAE,IAAIkwK,QAAQ,CAAC;IACrD,IAAI/5J,KAAK,KAAK,CAAC,CAAC,EAAE;MACjB;MACO+5J,QAAQ,GAAG,EAAE;MACd;MACA;IACP,CAAC,MAAM;;MAEA;MACC;IAAA;IAGF1jD,mBAAmB,CAAC,CAAC;IAE9B,IAAIgxO,YAAY,GAAGj7V,IAAI,CAACyI,MAAM,CAAE+U,CAAC,IAAKA,CAAC,CAAC/f,EAAE,IAAI,CAAC,CAAC;IAEhDw9V,YAAY,CAACr9R,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IACrEqB,QAAQ,CAAC5E,QAAQ,CAAC,uBAAuB,EAAE4gW,YAAY,EAAEttL,QAAQ,CAAC;EACnE;EAEA,eAAewoL,0BAA0BA,CAAA,EAAG;IAC1C,MAAM;MAAEG,mBAAmB,EAAEC;IAAW,CAAC,GAAG,MAAM/oL,OAAO,CAACyoC,kBAAkB,CAAC,CAAC;IAC9E;IACA,IAAIj2M,IAAI,GAAGu2V,UAAU,CAACvyV,GAAG,CAACwyV,SAAS,KAAK;MACtC/4V,EAAE,EAAE+4V,SAAS,CAACxqT,IAAI;MAClBntC,KAAK,EAAE23V,SAAS,CAACxqT,IAAI;MACrBpuC,IAAI,EAAE44V,SAAS,CAACnhP;IAClB,CAAC,CAAC,CAAC;IAEH,MAAMzhG,KAAK,GAAG5T,IAAI,CAACwmC,SAAS,CAAChpB,CAAC,IAAIA,CAAC,CAAC/f,EAAE,IAAI4H,QAAQ,CAAC;IACnD,IAAIuO,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB;IAAA;IAGF5T,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,8BAA8B,EAAE2F,IAAI,EAAE24M,oBAAoB,CAAC;IAC7E15M,QAAQ,CAAC5E,QAAQ,CAAC,kCAAkC,EAAE2F,IAAI,EAAE44M,wBAAwB,CAAC;IACrF35M,QAAQ,CAAC5E,QAAQ,CAAC,mCAAmC,EAAE2F,IAAI,EAAE64M,yBAAyB,CAAC;EACzF;;EAEA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;;EAEA;EACA;EACA;;EAEA,SAASo9I,uBAAuBA,CAAA,EAAG;IACjC,MAAMuF,oBAAoB,GAAG,CAC3B;MAAE59V,IAAI,EAAE,QAAQ;MAAEiB,KAAK,EAAE;IAAS,CAAC,EACnC;MAAEjB,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,EAC3B;MAAEjB,IAAI,EAAE,GAAG;MAAEiB,KAAK,EAAE;IAAI,CAAC,EACzB;MAAEjB,IAAI,EAAE,GAAG;MAAEiB,KAAK,EAAE;IAAI,CAAC,EACzB;MAAEjB,IAAI,EAAE,GAAG;MAAEiB,KAAK,EAAE;IAAI,CAAC,CAC1B;IACD,MAAM43V,iBAAiB,GAAG,CACxB;MAAE74V,IAAI,EAAE,QAAQ;MAAEiB,KAAK,EAAE;IAAS,CAAC,EACnC;MAAEjB,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,EAC3B;MAAEjB,IAAI,EAAE,IAAI;MAAEiB,KAAK,EAAE;IAAI,CAAC,CAC3B;IAEDI,QAAQ,CAAC5E,QAAQ,CAAC4/V,gBAAgB,EAAEuB,oBAAoB,EAAEplJ,QAAQ,CAAC;IACnE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EACF;EAEA,SAASnsF,mBAAmBA,CAAA,EAAG;IAC7B,IAAI,CAACmsF,QAAQ,IAAIA,QAAQ,KAAK,EAAE,EAAE;MAChC6jJ,gBAAgB,CAACngW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACvC;IACF,CAAC,MAAM;MACLigW,gBAAgB,CAACngW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC1C;IACF;IAEA,MAAM2jW,YAAY,GAAGzgW,QAAQ,CAAC0N,sBAAsB,CAAC,2CAA2C,CAAC;IAEjG,IAAI,CAACtF,QAAQ,IAAIA,QAAQ,KAAK,EAAE,IAAIA,QAAQ,KAAK,GAAG,EAAE;MAChD,IAAI,CAACsoK,QAAQ,IAAIA,QAAQ,KAAK,EAAE,EAAE;QAChC+D,gBAAgB,CAAC53K,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACvC+iW,qBAAqB,CAACjjW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QAE5C0jW,YAAY,CAAC,CAAC,CAAC,CAAC5jW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;QACtC,IAAI2jW,qBAAqB,GAAG1gW,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC;QAC9E;QACE,IAAIu9V,gBAAgB,GAAGxgW,QAAQ,CAACiD,cAAc,CAAC,kBAAkB,CAAC;QACpE;MACA,CAAC,MAAM;QACLwxK,gBAAgB,CAAC53K,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC1CgjW,qBAAqB,CAACjjW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QAC/C2jW,YAAY,CAAC,CAAC,CAAC,CAAC5jW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;QACzC,IAAI4jW,qBAAqB,GAAG1gW,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC;QAC/E;QACG,IAAIu9V,gBAAgB,GAAGxgW,QAAQ,CAACiD,cAAc,CAAC,kBAAkB,CAAC;QACpE;MACA;IAEN,CAAC,MAAM;MACLwxK,gBAAgB,CAAC53K,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC1CgjW,qBAAqB,CAACjjW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MAC/C2jW,YAAY,CAAC,CAAC,CAAC,CAAC5jW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACzC,IAAI4jW,qBAAqB,GAAG1gW,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC;MAC9E;MACE,IAAIu9V,gBAAgB,GAAGxgW,QAAQ,CAACiD,cAAc,CAAC,kBAAkB,CAAC;MACnE;IACD;;IAED;IACD;IACA;IACA;IACC;;IAEC,IAAI,CAACk4M,aAAa,IAAIA,aAAa,KAAK,EAAE,EAAE;MAC1C8hJ,qBAAqB,CAACpgW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC9C,CAAC,MAAM;MACLkgW,qBAAqB,CAACpgW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACjD;IAEA,IAAI,CAAC4+M,oBAAoB,IAAIA,oBAAoB,KAAK,EAAE,EAAE;MACxDqkJ,4BAA4B,CAACljW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACrD,CAAC,MAAM;MACLgjW,4BAA4B,CAACljW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACxD;IAEA,IAAI,CAAC6+M,wBAAwB,IAAIA,wBAAwB,KAAK,EAAE,EAAE;MAChEqkJ,gCAAgC,CAACnjW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACzD,CAAC,MAAM;MACLijW,gCAAgC,CAACnjW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC5D;IAEA,IAAI,CAAC8+M,yBAAyB,IAAIA,yBAAyB,KAAK,EAAE,EAAE;MAClEqkJ,iCAAiC,CAACpjW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1D,CAAC,MAAM;MACLkjW,iCAAiC,CAACpjW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7D;IAEA,IAAIo0N,SAAS,GAAGwuI,cAAc,CAACz/V,aAAa,CAAC,UAAU,CAAC;IAExD,IAAIixN,SAAS,CAACtvN,KAAK,KAAK,EAAE,EAAE;MAC1B89V,cAAc,CAAC7iW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACvC,CAAC,MAAM;MACL2iW,cAAc,CAAC7iW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C;;IAEA;;IAEA;IACA;IACD;IACD;IACC;;IAEC86V,qBAAqB,CAAC,CAAC;IACvBC,mBAAmB,CAAC,CAAC;IACrBC,iBAAiB,CAAC,CAAC;IACnB5uM,YAAY,CAAC,CAAC;EAChB;EAEA,SAAS0uM,qBAAqBA,CAAA,EAAG;IAC/B,IAAI9d,SAAS,GAAG,IAAI/iU,IAAI,CAAC,CAAC;IAC1B,IAAIghV,aAAa,GAAG,IAAIhhV,IAAI,CAACs3G,WAAW,CAAC;IAEzC,IAAI2pO,YAAY,GAAGvqU,KAAK,CAACiF,QAAQ,CAACqlU,aAAa,EAAEje,SAAS,CAAC;IAE3D,IAAI,CAACke,YAAY,EAAE;MACjBxpJ,gBAAgB,CAAC3xM,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACzC,CAAC,MAAM;MACLyxM,gBAAgB,CAAC3xM,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC5C;EACF;EAEA,SAASosJ,YAAYA,CAAA,EAAG;IACtB,IAAI32C,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,IAAIk5V,YAAY,EAAE;MAC1C/hC,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACrC6xT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3Cw5V,aAAa,CAAC15V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,MAAM;MACL03T,WAAW,CAAC53T,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACxC8xT,iBAAiB,CAAC/xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC9Cy5V,aAAa,CAAC15V,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC5C;IAEA,IAAIwvD,MAAM,KAAKmqS,kBAAkB,IAAI,CAACroV,CAAC,CAACC,OAAO,CAACsyC,SAAS,EAAE;MACzD6tQ,aAAa,CAAC3xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACzC,CAAC,MAAM;MACLyxT,aAAa,CAAC3xT,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC5C;EACF;EAEA,SAASg7V,iBAAiBA,CAAA,EAAG;IAC3B,IAAIl/H,QAAQ,GAAGw1F,YAAY,CAACnuT,aAAa,CAAC,OAAO,CAAC;IAClD,IAAIgvB,UAAU,GAAGyB,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACrCytT,kBAAkB,GAAGvnU,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpE,IAAI82U,kBAAkB,KAAKhpU,UAAU,IAAIipU,oBAAoB,CAACt/H,QAAQ,CAACh3N,KAAK,CAAC,EAAE;MAC7EwsT,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACnC;IACF,CAAC,MAAM;MACLqxT,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACxC;IAEA,IAAIq7V,mBAAmB,GAAG1/H,qBAAqB,CAAC,UAAU,CAAC;IAE3D,IAAI0/H,mBAAmB,EAAE;MACvB/pC,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACxC,CAAC,MAAM;MACLsxT,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACnC;IACF;IAEA,IAAIq7V,cAAc,GAAG1nU,IAAI,CAACkb,YAAY,CAACgtL,QAAQ,CAACh3N,KAAK,CAAC;IAEtD,IAAIw2V,cAAc,EAAE;MAClBhqC,YAAY,CAACvxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACxC,CAAC,MAAM;MACLsxT,YAAY,CAACvxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACnC;IACF;EACF;EAEA,SAAS86V,mBAAmBA,CAAA,EAAG;IAC7B,IAAIl/H,UAAU,GAAGw1F,cAAc,CAACluT,aAAa,CAAC,OAAO,CAAC;IACtD,IAAIgvB,UAAU,GAAGyB,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACrCytT,kBAAkB,GAAGvnU,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpE,IAAI82U,kBAAkB,KAAKhpU,UAAU,IAAIipU,oBAAoB,CAACv/H,UAAU,CAAC/2N,KAAK,CAAC,EAAE;MAC/EusT,cAAc,CAACtxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACrC;IACF,CAAC,MAAM;MACLoxT,cAAc,CAACtxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C;IAEA,IAAIu7V,gBAAgB,GAAG3nU,IAAI,CAACkb,YAAY,CAAC+sL,UAAU,CAAC/2N,KAAK,CAAC;IAC1D,IAAIy2V,gBAAgB,EAAE;MACpBlqC,cAAc,CAACtxT,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACLqxT,cAAc,CAACtxT,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACrC;IACF;EACF;EAEA,SAASm7V,oBAAoBA,CAACI,WAAW,EAAE;IACzC,IAAIC,OAAO,GAAG,IAAIxhV,IAAI,CAAC,CAAC;IACxB,IAAIyhV,OAAO,GAAGD,OAAO,CAACh1U,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,IAAIg1U,OAAO,CAACh1U,QAAQ,CAAC,CAAC,EAAE,GAAGg1U,OAAO,CAACh1U,QAAQ,CAAC,CAAC;IACvF,IAAIk1U,SAAS,GAAGF,OAAO,CAAC/pU,UAAU,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI+pU,OAAO,CAAC/pU,UAAU,CAAC,CAAC,EAAE,GAAG+pU,OAAO,CAAC/pU,UAAU,CAAC,CAAC;IAC/F,OACEzX,IAAI,CAACC,KAAK,CAAC,cAAcshV,WAAW,EAAE,CAAC,GAAGvhV,IAAI,CAACC,KAAK,CAAC,cAAcwhV,OAAO,IAAIC,SAAS,EAAE,CAAC;EAE9F;EAEA,SAAShgI,qBAAqBA,CAAC7sL,YAAY,EAAE;IAC3C,IAAI+sL,UAAU,GAAGw1F,cAAc,CAACluT,aAAa,CAAC,OAAO,CAAC;IACtD,IAAI24N,QAAQ,GAAGw1F,YAAY,CAACnuT,aAAa,CAAC,OAAO,CAAC;IAClD,IAAIqrJ,SAAS,GAAGkjD,gBAAgB,CAACvuM,aAAa,CAAC,OAAO,CAAC;IACvD,IAAIo2B,SAAS,GAAGsiM,UAAU,CAAC/2N,KAAK;IAChC,IAAI0zB,OAAO,GAAGsjM,QAAQ,CAACh3N,KAAK;IAC5B,IAAImxB,WAAW,GAAGrC,IAAI,CAAC8Z,aAAa,CAAC,CAAC;IACtC,IAAIw+F,WAAW,GAAGt4G,IAAI,CAACga,cAAc,CAAC,CAAC;IAEvC,IAAIkB,YAAY,KAAK,YAAY,EAAE;MACjC,IAAI0/G,SAAS,CAAC1pJ,KAAK,KAAKmxB,WAAW,EAAE;QACnC,IAAIsD,SAAS,GAAG2yG,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC;MAC7C;MAEA,IAAI3yG,SAAS,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC;MACpC,IAAIA,SAAS,KAAK,EAAE,IAAIf,OAAO,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC;IACvD,CAAC,MAAM;MACL;MACA,IAAIg2H,SAAS,CAAC1pJ,KAAK,KAAKmxB,WAAW,EAAE;QACnC,IAAIuC,OAAO,GAAG0zG,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC;MAC3C;MAEA,IAAI1zG,OAAO,KAAK,EAAE,IAAIA,OAAO,KAAK,OAAO,EAAE,OAAO,KAAK,CAAC,CAAC;IAC3D;IAEA,OAAOe,SAAS,IAAIf,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;EAC9C;EAEA,SAAS6vG,WAAWA,CAAA,EAAG;IACrB63N,gBAAgB,CAAC78V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCu3M,QAAQ,GAAG,EAAE;MACf,CAAC,MAAM;QACLA,QAAQ,GAAG32M,cAAc,CAACZ,KAAK;MACjC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFynD,gBAAgB,CAACt0K,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE,IAAIk+V,qBAAqB,GAAG3gW,QAAQ,CAACiD,cAAc,CAAC,uBAAuB,CAAC;MAE5E,IAAIT,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCwG,QAAQ,GAAG,EAAE;QACf;QACC;QACA;MACD,CAAC,MAAM;QACLA,QAAQ,GAAG5F,cAAc,CAACZ,KAAK;QACjC;QACC;QACC;QACA8uK,QAAQ,GAAG,EAAE;QACb2vL,6BAA6B,CAAC,CAAC;MACjC;MACArzO,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF8yO,qBAAqB,CAAC3/V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACxD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE,IAAI+9V,gBAAgB,GAAGxgW,QAAQ,CAACiD,cAAc,CAAC,kBAAkB,CAAC;MAElE,IAAIT,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpC8uK,QAAQ,GAAG,EAAE;QACd;QACA;MACD,CAAC,MAAM;QACLA,QAAQ,GAAGluK,cAAc,CAACZ,KAAK;QACjC;QACE;QACAwG,QAAQ,GAAG,EAAE;QACb6wV,wBAAwB,CAAC,CAAC;MAC5B;MACAjsO,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFiwO,qBAAqB,CAAC98V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACxD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCu5M,aAAa,GAAG,EAAE;MACpB,CAAC,MAAM;QACLA,aAAa,GAAG34M,cAAc,CAACZ,KAAK;MACtC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF+yO,4BAA4B,CAAC5/V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC/D,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpC85M,oBAAoB,GAAG,EAAE;MAC3B,CAAC,MAAM;QACLA,oBAAoB,GAAGl5M,cAAc,CAACZ,KAAK;MAC7C;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFgzO,gCAAgC,CAAC7/V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnE,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpC+5M,wBAAwB,GAAG,EAAE;MAC/B,CAAC,MAAM;QACLA,wBAAwB,GAAGn5M,cAAc,CAACZ,KAAK;MACjD;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFizO,iCAAiC,CAAC9/V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpE,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCg6M,yBAAyB,GAAG,EAAE;MAChC,CAAC,MAAM;QACLA,yBAAyB,GAAGp5M,cAAc,CAACZ,KAAK;MAClD;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFmhM,cAAc,CAAChuT,gBAAgB,CAAC,UAAU,EAAExC,KAAK,IAAI;MACnD04B,SAAS,GAAG14B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9Bi2V,mBAAmB,CAAC,CAAC;MACrBC,iBAAiB,CAAC,CAAC;MACnB5uM,YAAY,CAAC,CAAC;IAChB,CAAC,CAAC;IAEFklK,YAAY,CAACjuT,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC/C23B,OAAO,GAAG33B,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC5Bi2V,mBAAmB,CAAC,CAAC;MACrBC,iBAAiB,CAAC,CAAC;MACnB5uM,YAAY,CAAC,CAAC;IAChB,CAAC,CAAC;IAEFslD,gBAAgB,CAACruM,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACnD0wH,WAAW,GAAG1wH,KAAK,CAACC,MAAM,CAACgE,KAAK;MAChCg2V,qBAAqB,CAAC,CAAC;MACvBC,mBAAmB,CAAC,CAAC;MACrBC,iBAAiB,CAAC,CAAC;MACnB5uM,YAAY,CAAC,CAAC;IAChB,CAAC,CAAC;IACFslD,gBAAgB,CAACruM,gBAAgB,CAAC,SAAS,EAAExC,KAAK,IAAI;MACpDA,KAAK,CAACyH,cAAc,CAAC,CAAC;MACtBzH,KAAK,CAAC0N,eAAe,CAAC,CAAC;IACzB,CAAC,CAAC;IAEFq0V,cAAc,CAACv/V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAChDy9M,SAAS,GAAGz9M,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC9BorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF4rO,kBAAkB,CAACz4V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACpDk+M,aAAa,GAAGl+M,KAAK,CAACC,MAAM,CAACgE,KAAK;MAClCorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF4hM,iBAAiB,CAACzuT,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACnD;MACAixT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3C03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACvC,CAAC,CAAC;IAEF03T,WAAW,CAACt0T,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C;MACAixT,iBAAiB,CAAC/xT,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MAC3C03T,WAAW,CAAC53T,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACvC,CAAC,CAAC;EACJ;;EAEA;EACA,SAASs8G,iBAAiBA,CAACnQ,QAAQ,EAAE;IACnC,MAAM6nC,WAAW,GAAG/wI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD,IAAIqxI,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC2oG,QAAQ,CAACoQ,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAE7C,MAAMuF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEtCsF,IAAI,CAAC5E,WAAW,CAACyrG,QAAQ,CAACoQ,IAAI,CAAC;IAE/By3B,WAAW,CAACtzI,WAAW,CAAC4E,IAAI,CAAC;IAC7B0uI,WAAW,CAACtzI,WAAW,CAACm0I,MAAM,CAAC;IAC/B;;IAEA,OAAOb,WAAW;EACpB;EAEA,SAASomN,cAAcA,CAAA,EAAG;IACxB,IAAIp0V,IAAI,GAAG;MACT8/C,UAAU;MACVgoE,UAAU;MACVwD,WAAW,EAAE39F,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5DkV,SAAS;MACTf,OAAO;MACP6jL,QAAQ;MACR/wM,QAAQ;MACRsoK,QAAQ;MACRyqC,aAAa;MACbO,oBAAoB;MACpBC,wBAAwB;MACxBC,yBAAyB;MACzBR,SAAS;MACTS,aAAa;MACbvvJ;IACF,CAAC;IACD;IACAikH,OAAO,CAACkrC,mCAAmC,CAAC14M,IAAI,EAAE,UAAUmlG,OAAO,EAAE;MACnEt3F,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrBirB,UAAU,CAAC,YAAY;QACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB,CAAC,EAAE,IAAI,CAAC;IACV,CAAC,CAAC;EACJ;EAEA,SAAS4oJ,cAAcA,CAACwB,QAAQ,EAAE;IAChC,IAAI31V,IAAI,GAAG;MACT8/C,UAAU;MACVgoE,UAAU;MACVwD,WAAW,EAAE39F,IAAI,CAACkY,eAAe,CAACylF,WAAW,CAACltG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5DkV,SAAS;MACTf,OAAO;MACP6jL,QAAQ;MACR/wM,QAAQ;MACRsoK,QAAQ;MACRyqC,aAAa;MACbO,oBAAoB;MACpBC,wBAAwB;MACxBC,yBAAyB;MACzBR,SAAS;MACTS,aAAa;MACbvvJ,MAAM;MACNgwE,SAAS;MACTy1E,eAAe;MACf7mF;IACF,CAAC;IACD;IACAqlD,OAAO,CAACwrC,mCAAmC,CAACh5M,IAAI,EAAE,UAAUmlG,OAAO,EAAE;MACnEt3F,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrB,IAAIy7V,QAAQ,IAAI,YAAY,EAAE;QAC5BxwU,UAAU,CAAC,YAAY;UACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrBkQ,OAAO,CAACjQ,IAAI,CAAC,CAAC;UACdwC,GAAG,CAAC6zM,sBAAsB,CAACzwJ,UAAU,EAAE,UAAU,CAAC;QACpD,CAAC,EAAE,IAAI,CAAC;MACV,CAAC,MAAM;QACL;QACA36B,UAAU,CAAC,YAAY;UACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC;MACV;IACF,CAAC,CAAC;EACJ;;EAEA;EACA,SAAShgD,kBAAkBA,CAACzjC,UAAU,EAAE;IACtC,IAAIqnD,WAAW,GAAGniK,KAAK,CAAC1P,KAAK,CAAC;MAC5BG,EAAE,EAAE,oBAAoB;MACxBa,UAAU,EAAE;IACd,CAAC,CAAC;IACF,IAAIkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QAC1BkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;QACvB,IAAIx+I,MAAM,GAAG,MAAM68I,OAAO,CAACspC,uBAAuB,CAAChvF,UAAU,CAAC;QAC9D,IAAIn3F,MAAM,CAACimU,wBAAwB,KAAK,GAAG,EAAE;UAC3Cl6V,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACtB;MACF;IACF,CAAC,CAAC;IACF,IAAI5jD,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,OAAO;MACboB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;MACzB;IACF,CAAC,CAAC;IACF3lI,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B,IAAIj+G,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,8CAA8C;IACzE+0K,WAAW,CAACz0K,WAAW,CAACgvC,cAAc,CAAC;IACvCylI,WAAW,CAACz0K,WAAW,CAAC8uC,OAAO,CAAC;IAChCx8B,KAAK,CAAC9S,IAAI,CAACi1K,WAAW,CAAC;EACzB;;EAEF;EACA,eAAejC,kBAAkBA,CAACW,YAAY,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,YAAY,EAAE;IACpF,IAAID,YAAY,IAAI,gBAAgB,EAAE;MAClChB,UAAU,GAAG,gBAAgB;MAC7BC,mBAAmB,GAAGgB,YAAY;IACtC,CAAC,MAEGjB,UAAU,GAAG,UAAU;IAE3B,IAAIkB,eAAe;IACnB,IAAIJ,YAAY,IAAI9xJ,MAAM,CAAC8B,IAAI,CAACgwJ,YAAY,CAAC,CAACtzK,MAAM,KAAK,CAAC,EAAE;MACxDgyK,UAAU,GAAGsB,YAAY,CAAC,CAAC,CAAC,CAACtB,UAAU;MACvCC,YAAY,GAAGqB,YAAY,CAAC,CAAC,CAAC,CAACrB,YAAY;MAC3CC,gBAAgB,GAAGoB,YAAY,CAAC,CAAC,CAAC,CAACtwD,QAAQ;MAC3CmvD,gBAAgB,GAAGmB,YAAY,CAAC,CAAC,CAAC,CAACpwD,QAAQ;MAC3CkvD,YAAY,GAAGkB,YAAY,CAAC,CAAC,CAAC,CAAClwD,IAAI;MACnCivD,aAAa,GAAGiB,YAAY,CAAC,CAAC,CAAC,CAACpjI,KAAK;MACrCoiI,eAAe,GAAGgB,YAAY,CAAC,CAAC,CAAC,CAAC3uB,OAAO;MACzC+uB,eAAe,GAAG,oBAAoB;MACtChB,YAAY,GAAG,QAAQ;IAC3B,CAAC,MAAM;MACHV,UAAU,GAAG,EAAE;MACfC,YAAY,GAAG,EAAE;MACjBC,gBAAgB,GAAG,EAAE;MACrBC,gBAAgB,GAAG,EAAE;MACrBC,YAAY,GAAG,EAAE;MACjBC,aAAa,GAAG,EAAE;MAClBC,eAAe,GAAG,EAAE;MACpBoB,eAAe,GAAG,cAAc;MAChChB,YAAY,GAAG,KAAK;IACxB;IAEA,IAAIiB,iBAAiB,GAAGlhK,KAAK,CAAC1P,KAAK,CAAC;MAChC2P,MAAM,EAAEghK,eAAe;MACvBzgK,KAAK,EAAE,IAAI;MACX/P,EAAE,EAAE;IACR,CAAC,CAAC;IAEFqvK,aAAa,GAAGhsK,KAAK,CAACxD,KAAK,CAAC;MACxBG,EAAE,EAAE,eAAe;MACnB2B,KAAK,EAAE,UAAU;MACjBP,KAAK,EAAG2tK,YAAY,GAAIA,YAAY,GAAG;IAC3C,CAAC,CAAC;IAEFlvD,aAAa,GAAGx8G,KAAK,CAACxD,KAAK,CAAC;MACxB8B,KAAK,EAAE,SAAS;MAChBP,KAAK,EAAG4tK,gBAAgB,GAAIA,gBAAgB,GAAG;IACnD,CAAC,CAAC;IAEFjvD,aAAa,GAAG18G,KAAK,CAACxD,KAAK,CAAC;MACxB8B,KAAK,EAAE,WAAW;MAClBP,KAAK,EAAG6tK,gBAAgB,GAAIA,gBAAgB,GAAG;IACnD,CAAC,CAAC;IAEFhvD,SAAS,GAAG58G,KAAK,CAACxD,KAAK,CAAC;MACpB8B,KAAK,EAAE,MAAM;MACbP,KAAK,EAAG8tK,YAAY,GAAIA,YAAY,GAAG;IAC3C,CAAC,CAAC;IAEF/uD,UAAU,GAAG98G,KAAK,CAACxD,KAAK,CAAC;MACrB8B,KAAK,EAAE,OAAO;MACdP,KAAK,EAAG+tK,aAAa,GAAIA,aAAa,GAAG;IAC7C,CAAC,CAAC;IAEF7mB,YAAY,GAAGjlJ,KAAK,CAACxD,KAAK,CAAC;MACvB8B,KAAK,EAAE,UAAU;MACjBP,KAAK,EAAGguK,eAAe,GAAIA,eAAe,GAAG;IACjD,CAAC,CAAC;IAEF6tL,YAAY,GAAGr9V,MAAM,CAACC,KAAK,CAAC;MACxBG,EAAE,EAAE,oBAAoB;MACxBG,IAAI,EAAE,MAAM;MACZI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAC47V,YAAY,CAAC5gW,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAChDumK,wBAAwB,CAACL,QAAQ,CAAC;QACpC;MACJ;IACJ,CAAC,CAAC;IAEF6sL,cAAc,GAAGt9V,MAAM,CAACC,KAAK,CAAC;MAC1BG,EAAE,EAAE,sBAAsB;MAC1BG,IAAI,EAAE,QAAQ;MACdI,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBe,QAAQ,EAAEA,CAAA,KAAMkO,KAAK,CAAC/S,IAAI,CAACi0K,iBAAiB;IAChD,CAAC,CAAC;IAEF,IAAI1kI,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACggW,YAAY,CAAC;IACjClxT,OAAO,CAAC9uC,WAAW,CAACigW,cAAc,CAAC;IACnCzsL,iBAAiB,CAACxzK,WAAW,CAACoyK,aAAa,CAAC;IAC5CoB,iBAAiB,CAACxzK,WAAW,CAAC4iH,aAAa,CAAC;IAC5C4wD,iBAAiB,CAACxzK,WAAW,CAAC8iH,aAAa,CAAC;IAC5C0wD,iBAAiB,CAACxzK,WAAW,CAACgjH,SAAS,CAAC;IACxCwwD,iBAAiB,CAACxzK,WAAW,CAACkjH,UAAU,CAAC;IACzCswD,iBAAiB,CAACxzK,WAAW,CAACqrJ,YAAY,CAAC;IAC3CmoB,iBAAiB,CAACxzK,WAAW,CAAC8uC,OAAO,CAAC;IAEtCy8G,kBAAkB,CAAC,CAAC;IACpBj5I,KAAK,CAAC9S,IAAI,CAACg0K,iBAAiB,CAAC;IAC7ButL,wBAAwB,CAAC,CAAC;EAC5B;EAEA,SAASx1M,kBAAkBA,CAAA,EAAG;IAC9B6mB,aAAa,CAAC1vK,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C4xK,YAAY,GAAG5xK,KAAK,CAACC,MAAM,CAACgE,KAAK,CAAC6mB,IAAI,CAAC,CAAC;MACxC+1U,wBAAwB,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEFn+O,aAAa,CAAClgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C6xK,gBAAgB,GAAG7xK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACzC,CAAC,CAAC;IAEF2+G,aAAa,CAACpgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC7C8xK,gBAAgB,GAAG9xK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACzC,CAAC,CAAC;IAEF6+G,SAAS,CAACtgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzC+xK,YAAY,GAAG/xK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACrC,CAAC,CAAC;IAEF++G,UAAU,CAACxgH,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC1CgyK,aAAa,GAAGhyK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACtC,CAAC,CAAC;IAEFknJ,YAAY,CAAC3oJ,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC5CiyK,eAAe,GAAGjyK,KAAK,CAACC,MAAM,CAACgE,KAAK;IACxC,CAAC,CAAC;EACF;EAEA,SAAS48V,wBAAwBA,CAAA,EAAG;IACpC,IAAIrtL,YAAY,GAAGtB,aAAa,CAAC5vK,aAAa,CAAC,gBAAgB,CAAC;IAChE,IAAIkxK,YAAY,CAACvvK,KAAK,CAAC6mB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;MAClConJ,aAAa,CAAChzK,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;MACpC0gW,YAAY,CAAC5gW,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACtC;IACJ,CAAC,MAAM;MACH8yK,aAAa,CAAChzK,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;MACvC2gW,YAAY,CAAC5gW,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IAC7C;;IAEA;IACA;IACA;IACA;IACA;EACA;;EAEA;EACA,eAAeo0K,wBAAwBA,CAACL,QAAQ,EAAE;IAEhD,IAAIA,QAAQ,IAAI,QAAQ,EAAE;MAEtB,MAAMn9I,MAAM,GAAG,MAAM68I,OAAO,CAACa,mBAAmB,CAAC7B,YAAY,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,aAAa,EAAEC,eAAe,CAAC;MAChJ,MAAM;QAAEyB;MAAqB,CAAC,GAAG39I,MAAM;MACvCg9I,QAAQ,GAAGW,oBAAoB,CAAC/B,UAAU;MAE1C,IAAIoB,QAAQ,IAAI,GAAG,EAAE;QACjBrkI,YAAY,CAAC,CAAC;MAClB,CAAC,MAAM;QAELg0T,6BAA6B,CAACx9S,UAAU,CAAC;QACxC;QACC;QACD;;QAEE;QACD;QACE;QACA;QACA;QACF;;QAEEz6C,QAAQ,GAAG,EAAE;QACb6wV,wBAAwB,CAAC,CAAC;QAC1BjsO,mBAAmB,CAAC,CAAC;QAEnBj9G,KAAK,CAAC/S,IAAI,CAACi0K,iBAAiB,CAAC;QAC/BrgK,cAAc,CAAC3T,IAAI,CAAC,CAAC;QAEvBirB,UAAU,CAAC,YAAY;UACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;;UAGtB;UACA;UACA;UACA;QACH,CAAC,EAAE,IAAI,CAAC;MACZ;IAEJ,CAAC,MAAM;MAAG;MACN+S,KAAK,CAAC/S,IAAI,CAACi0K,iBAAiB,CAAC;MAC7B,MAAMv9I,MAAM,GAAG,MAAM68I,OAAO,CAACwB,mBAAmB,CAACzC,UAAU,EAAEC,YAAY,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,aAAa,EAAEC,eAAe,CAAC;MAC5J,MAAM;QAAEoC,oBAAoB,EAAE;UAAEV;QAAW;MAAE,CAAC,GAAG59I,MAAM;MACvD9iB,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrBirB,UAAU,CAAC,YAAY;QACnBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACvB;MACF,CAAC,EAAE,IAAI,CAAC;IACZ;EACF;EAEA,SAASqvC,YAAYA,CAAA,EAAG;IACtB,IAAIx8B,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACpBG,EAAE,EAAE,cAAc;MAClBa,UAAU,EAAE;IAChB,CAAC,CAAC;IACF,IAAIgxK,KAAK,GAAGjyK,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QAClBkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;QACjB3C,OAAO,CAACjQ,IAAI,CAAC,CAAC;MAClB;IACJ,CAAC,CAAC;IACF,IAAIsvC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC40K,KAAK,CAAC;IAE1B,IAAI5lI,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,+BAA+B;IAC1D0S,KAAK,CAACpS,WAAW,CAACgvC,cAAc,CAAC;IACjC58B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAC1Bx8B,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACnB;EAEE,OAAO;IACL3P;EACF,CAAC;AACH,CAAC,EAAE,CAAC;AC1uCJ,MAAM6yM,mCAAmC,GAAG,CAAC,MAAM;EACjD;EACA,IAAI6mJ,iBAAiB;EACrB,IAAIC,uBAAuB;EAC3B,IAAIC,wBAAwB;EAC5B,IAAIC,mBAAmB;EACvB,IAAI0E,sBAAsB;EAC1B,IAAImC,uBAAuB;EAC3B,IAAI5G,uBAAuB;EAC3B,IAAI6G,yBAAyB;EAC7B,IAAI5G,iBAAiB;;EAErB;EACA,IAAIp3S,UAAU;EACd,IAAIi3J,UAAU;EACd,IAAIG,YAAY,CAAC,CAAC;EAClB,IAAImgJ,mBAAmB,CAAC,CAAC;EACzB,IAAIlgJ,iBAAiB,CAAC,CAAC;EACvB,IAAIC,qBAAqB,CAAC,CAAC;EAC3B,IAAIgC,4BAA4B,CAAC,CAAC;EAClC,IAAI9B,mBAAmB,CAAC,CAAC;EACzB,IAAI+B,gCAAgC,CAAC,CAAC;EACtC,IAAIC,gCAAgC,CAAC,CAAC;EACtC,IAAIC,sBAAsB,CAAC,CAAC;EAC5B,IAAIC,WAAW,CAAC,CAAC;;EAEjB;EACA,IAAIjsE,OAAO;EACX,IAAIgqN,aAAa;EACjB,IAAI5rT,SAAS;EACb,IAAIysM,SAAS;EACb,IAAInvF,SAAS;;EAEb;EACA;EACA,IAAI1/F,MAAM;EACV,IAAIgwE,SAAS;EACb,IAAIi+N,eAAe;EACnB,IAAIC,aAAa;EAEjB,IAAIhE,YAAY,GAAG,KAAK;EACxB,MAAMiE,UAAU,GAAG,GAAG,CAAC,CAAC;;EAExB,IAAIC,wBAAwB,CAAC,CAAC;;EAE9B,eAAex6V,IAAIA,CACjBy6V,YAAY,EACZhE,eAAe,EACfiE,iBAAiB,EACjBhE,mBAAmB,EAEnB;IAAA,IADAE,WAAW,GAAAvvV,SAAA,CAAAjK,MAAA,QAAAiK,SAAA,QAAAjD,SAAA,GAAAiD,SAAA,MAAG,SAAS;IAEvB2H,GAAG,CAACC,iBAAiB,CAAC,CAAC;IACvBnP,QAAQ,CAACqG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC9I,OAAO,CAACgF,CAAC,IAAIA,CAAC,CAACzF,MAAM,CAAC,CAAC,CAAC;IAEtE,IAAI+9V,UAAU,GAAG,IAAI9jV,IAAI,CAAC,CAAC;IAC3B,IAAI+jV,iBAAiB,GAAG,IAAI/jV,IAAI,CAAC8jV,UAAU,CAAC73U,WAAW,CAAC,CAAC,EAAE63U,UAAU,CAAC53U,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAEpF4/B,UAAU,GAAG8zS,eAAe,CAACn2V,EAAE;IAC/Bi2V,kBAAkB,GAAGG,mBAAmB;IAExC,IAAI+D,YAAY,IAAI77U,MAAM,CAAC8B,IAAI,CAAC+5U,YAAY,CAAC,CAACr9V,MAAM,KAAK,CAAC,EAAE;MAC1DgvD,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzBusK,UAAU,GAAG6gJ,YAAY,CAAC7gJ,UAAU;MACpCG,YAAY,GAAG8gJ,YAAY,CAACJ,YAAY,CAAC1gJ,YAAY,CAAC;MACtDmgJ,mBAAmB,GAAG,IAAIrjV,IAAI,CAAC4jV,YAAY,CAAC1gJ,YAAY,CAAC;MACzDC,iBAAiB,GAAGygJ,YAAY,CAACzgJ,iBAAiB;MAClDC,qBAAqB,GAAGwgJ,YAAY,CAACxgJ,qBAAqB;MAC1DgC,4BAA4B,GAAGw+I,YAAY,CAACx+I,4BAA4B;MACxEC,gCAAgC,GAAGu+I,YAAY,CAACv+I,gCAAgC;MAChFC,gCAAgC,GAAGs+I,YAAY,CAACt+I,gCAAgC;MAChFC,sBAAsB,GAAGq+I,YAAY,CAACr+I,sBAAsB;MAC5DC,WAAW,GAAGo+I,YAAY,CAACp+I,WAAW;IACxC,CAAC,MAAM;MACLjwJ,MAAM,GAAGl+C,CAAC,CAACC,OAAO,CAACk/B,MAAM;MACzB+uF,SAAS,GAAGs+N,iBAAiB;MAC7B9gJ,UAAU,GAAG,GAAG;MAChBG,YAAY,GAAG,CAAC,GAAG,IAAI4gJ,UAAU,CAAC53U,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE1W,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGsuV,UAAU,CAAC73U,WAAW,CAAC,CAAC;MAC7Fo3U,mBAAmB,GAAG,IAAIrjV,IAAI,CAAC8jV,UAAU,CAAC73U,WAAW,CAAC,CAAC,EAAE63U,UAAU,CAAC53U,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;MAClFi3L,iBAAiB,GAAG,EAAE;MACtBC,qBAAqB,GAAG,EAAE;MAC1BgC,4BAA4B,GAAG,EAAE;MACjCC,gCAAgC,GAAG,EAAE;MACrCC,gCAAgC,GAAG,EAAE;MACrCC,sBAAsB,GAAG,EAAE;MAC3BC,WAAW,GAAG,EAAE;IAClB;IAEA,IAAIu6I,WAAW,KAAK,SAAS,IAAI,CAAC1oV,CAAC,CAACC,OAAO,CAACwyC,SAAS,EAAE;MACrD21S,YAAY,GAAG,IAAI;IACrB;IAEA,IAAIM,WAAW,KAAK,gBAAgB,IAAI,CAAC1oV,CAAC,CAACC,OAAO,CAACuyC,SAAS,EAAE;MAC5D41S,YAAY,GAAG,IAAI;IACrB;IAEA,IAAIlqS,MAAM,KAAKsqS,mBAAmB,EAAE;MAClCJ,YAAY,GAAG,IAAI;IACrB;IAEA,IAAIY,UAAU,GAAG/9O,iBAAiB,CAACs9O,eAAe,CAAC;IAEnD,IAAI1vU,SAAS,GAAGjnB,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7C0mB,SAAS,CAACpqB,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACtC,IAAI60I,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC,MAAM8T,OAAO,GAAGrU,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC5C8T,OAAO,CAAClX,SAAS,GAAG,yDAAyD;IAC7EkX,OAAO,CAACxX,SAAS,CAACE,GAAG,CAAC,mBAAmB,CAAC;IAE1CkqB,SAAS,CAACxpB,WAAW,CAAC25V,UAAU,CAAC;IACjC;IACAnwU,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAC7B3qH,SAAS,CAACxpB,WAAW,CAAC4W,OAAO,CAAC;IAC9B4S,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;;IAE7B;IACAgoN,iBAAiB,GAAG53V,QAAQ,CAAC3B,KAAK,CAAC;MACjC8B,KAAK,EAAE,OAAO;MACd;MACAF,UAAU,EAAE,mBAAmB;MAC/BL,KAAK,EAAEq4M,YAAY;MACnB73M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IAEFqD,uBAAuB,GAAG73V,QAAQ,CAAC3B,KAAK,CAAC;MACvC8B,KAAK,EAAE,kBAAkB;MACzBF,UAAU,EAAE,yBAAyB;MACrCL,KAAK,EAAEs4M,iBAAiB;MACxB93M,QAAQ,EAAEo0V;MACV;IACF,CAAC,CAAC;IAEFsD,wBAAwB,GAAGj2V,KAAK,CAACxD,KAAK,CAAC;MACrCU,IAAI,EAAE,MAAM;MACZoB,KAAK,EAAE,uBAAuB;MAC9BrB,KAAK,EAAE,WAAW;MAClB;MACAc,KAAK,EAAE8uB,IAAI,CAACkY,eAAe,CAACuxK,qBAAqB,CAACh5L,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAChE/e,QAAQ,EAAEo0V;MACV;IACF,CAAC,CAAC;;IAEF;IACAuD,mBAAmB,GAAGl2V,KAAK,CAACxD,KAAK,CAAC;MAChC;MACAU,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAEu6M,4BAA4B;MACnC/5M,QAAQ,EAAEo0V;MACV;MACA;IACF,CAAC,CAAC;IACF;;IAEA;IACAoK,uBAAuB,GAAG/8V,KAAK,CAACxD,KAAK,CAAC;MACpC;MACAU,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAEw6M,gCAAgC;MACvCh6M,QAAQ,EAAEo0V;IACZ,CAAC,CAAC;IACF;;IAEA;IACAwD,uBAAuB,GAAGn2V,KAAK,CAACxD,KAAK,CAAC;MACpC;MACAU,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAEy6M,gCAAgC;MACvCj6M,QAAQ,EAAEo0V;IACZ,CAAC,CAAC;IACF;;IAEAqK,yBAAyB,GAAGh9V,KAAK,CAACxD,KAAK,CAAC;MACtC;MACAU,IAAI,EAAE,UAAU;MAChBD,KAAK,EAAE,WAAW;MAClBO,UAAU,EAAE,UAAU;MACtBO,KAAK,EAAE06M,sBAAsB;MAC7Bl6M,QAAQ,EAAEo0V;IACZ,CAAC,CAAC;;IAEF;IACAyD,iBAAiB,GAAGj4V,QAAQ,CAAC3B,KAAK,CAAC;MACjC;MACA4B,UAAU,EAAE,mBAAmB;MAC/BL,KAAK,EAAE26M,WAAW;MAClBn6M,QAAQ,EAAEo0V;IACZ,CAAC,CAAC;IACF;;IAEAlmN,OAAO,GAAGlwI,MAAM,CAACC,KAAK,CAAC;MACrBM,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,MAAM;MACZY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBq1V,cAAc,CAAC,MAAM,CAAC;MACxB;IACF,CAAC,CAAC;IACFoD,aAAa,GAAGl6V,MAAM,CAACC,KAAK,CAAC;MAC3BM,IAAI,EAAE,YAAY;MAClBG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACXY,UAAU,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;MACxCQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBq1V,cAAc,CAAC,YAAY,CAAC;MAC9B;IACF,CAAC,CAAC;IACF/7G,SAAS,GAAG/6O,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,KAAK;MACX;MACAoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBs1V,cAAc,CAAC,CAAC;MAClB;IACF,CAAC,CAAC;IACFnrM,SAAS,GAAG5rJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,QAAQ;MACd;MACAoB,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBysJ,kBAAkB,CAACwrD,UAAU,CAAC;MAChC;IACF,CAAC,CAAC;IACFprK,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBN,IAAI,EAAE,OAAO;MACbY,UAAU,EAAE,CAAC,gBAAgB,CAAC;MAC9BQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBpC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;IAEFnpE,WAAW,CAAC,CAAC;IAEb,MAAM2zN,eAAe,GAAG94V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACrDu4V,eAAe,CAACj8V,SAAS,CAACE,GAAG,CAAC,yCAAyC,CAAC;IAExE+7V,eAAe,CAACr7V,WAAW,CAACm8V,iBAAiB,CAAC;IAC9Cd,eAAe,CAACr7V,WAAW,CAACo8V,uBAAuB,CAAC;IACpD;;IAEA;;IAEA,MAAMmB,2BAA2B,GAAGh7V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjEy6V,2BAA2B,CAACn+V,SAAS,CAACE,GAAG,CAAC,0BAA0B,CAAC;IACrEi+V,2BAA2B,CAACv9V,WAAW,CAACq8V,wBAAwB,CAAC;IAEjEhB,eAAe,CAACr7V,WAAW,CAACu9V,2BAA2B,CAAC;IAExD/zU,SAAS,CAACxpB,WAAW,CAACq7V,eAAe,CAAC;IAEtC,MAAMmC,mBAAmB,GAAGj7V,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IACvD06V,mBAAmB,CAAC99V,SAAS,GAAG,+IAA+I;IAE/K,MAAM2jW,uBAAuB,GAAG9gW,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3DugW,uBAAuB,CAAC3jW,SAAS,GAAG,kJAAkJ;IAEtL,MAAM+9V,uBAAuB,GAAGl7V,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC3D26V,uBAAuB,CAAC/9V,SAAS,GAAG,0LAA0L;IAE9N,MAAM4jW,yBAAyB,GAAG/gW,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC7DwgW,yBAAyB,CAAC5jW,SAAS,GAAG,sFAAsF;IAE5H,MAAMg+V,sBAAsB,GAAGn7V,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC1D46V,sBAAsB,CAACh+V,SAAS,GAAG,qPAAqP;IAExR8pB,SAAS,CAACxpB,WAAW,CAACw9V,mBAAmB,CAAC;IAC1Ch0U,SAAS,CAACxpB,WAAW,CAACs8V,mBAAmB,CAAC;IAC1C9yU,SAAS,CAACxpB,WAAW,CAACqjW,uBAAuB,CAAC;IAC9C75U,SAAS,CAACxpB,WAAW,CAACmjW,uBAAuB,CAAC;IAC9C35U,SAAS,CAACxpB,WAAW,CAACy9V,uBAAuB,CAAC;IAC9Cj0U,SAAS,CAACxpB,WAAW,CAACu8V,uBAAuB,CAAC;IAC9C/yU,SAAS,CAACxpB,WAAW,CAACsjW,yBAAyB,CAAC;IAChD95U,SAAS,CAACxpB,WAAW,CAACojW,yBAAyB,CAAC;IAChD55U,SAAS,CAACxpB,WAAW,CAAC09V,sBAAsB,CAAC;IAC7Cl0U,SAAS,CAACxpB,WAAW,CAACw8V,iBAAiB,CAAC;IAExC,IAAI3C,eAAe,GAAGt3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnD+2V,eAAe,CAACz6V,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;IAEhD,IAAIw6V,aAAa,GAAGv3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDg3V,aAAa,CAAC16V,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAC5Cw6V,aAAa,CAACp6V,SAAS,GAAG,yGAAyG;IACnIm6V,eAAe,CAAC75V,WAAW,CAAC85V,aAAa,CAAC;IAE1C,IAAIhrT,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC+8M,UAAU,IAAI,GAAG,GAAGvtK,OAAO,CAAC9uC,WAAW,CAAC6yI,OAAO,CAAC,GAAG/jG,OAAO,CAAC9uC,WAAW,CAAC09O,SAAS,CAAC;IACjFrhC,UAAU,IAAI,GAAG,GAAGvtK,OAAO,CAAC9uC,WAAW,CAAC68V,aAAa,CAAC,GAAG/tT,OAAO,CAAC9uC,WAAW,CAACuuJ,SAAS,CAAC;IAEvF,IAAI4oK,QAAQ,GAAG50T,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC5Cq0T,QAAQ,CAAC/3T,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACjC63T,QAAQ,CAACn3T,WAAW,CAACixC,SAAS,CAAC;IAE/B,IAAI8oT,MAAM,GAAGx3V,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1Ci3V,MAAM,CAAC36V,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;IAC9By6V,MAAM,CAAC/5V,WAAW,CAAC8uC,OAAO,CAAC;IAC3BirT,MAAM,CAAC/5V,WAAW,CAACm3T,QAAQ,CAAC;IAC5B,IAAItoQ,MAAM,KAAKmqS,kBAAkB,EAAEe,MAAM,CAAC/5V,WAAW,CAAC65V,eAAe,CAAC;IACtErwU,SAAS,CAACxpB,WAAW,CAAC+5V,MAAM,CAAC;IAE7B,IAAI5lN,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IACzC,IAAI86V,OAAO,GAAGr7V,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC1C,IAAI+6V,OAAO,GAAGt7V,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC1C0mB,SAAS,CAACxpB,WAAW,CAACm0I,MAAM,CAAC;IAC7B3qH,SAAS,CAACxpB,WAAW,CAAC49V,OAAO,CAAC;IAC9Bp0U,SAAS,CAACxpB,WAAW,CAAC69V,OAAO,CAAC;;IAE9B;IACA;IACA;;IAEA;;IAEApsV,GAAG,CAACiB,YAAY,CAAC1S,WAAW,CAACwpB,SAAS,CAAC;IAEvC/X,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;IAEtBmiU,uBAAuB,CAAC,CAAC;IACzBhiJ,+BAA+B,CAAC,CAAC;IAEjChqF,mBAAmB,CAAC,CAAC;EACvB;EAEA,SAAS+tO,YAAYA,CAAC31U,QAAQ,EAAE;IAC9B,IAAIm2U,QAAQ,GAAG,IAAIxkV,IAAI,CAACqO,QAAQ,CAAC;IACjC,IAAIo2U,aAAa,GACf,CAACD,QAAQ,CAACt4U,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAGovS,QAAQ,CAACv4U,WAAW,CAAC,CAAC;IACtF,OAAOw4U,aAAa;EACtB;EAEA,SAASC,yBAAyBA,CAAA,EAAG;IACnC,IAAIC,SAAS,GAAGzhJ,YAAY,CAAC94L,KAAK,CAAC,GAAG,CAAC;IACvC,IAAIw6U,SAAS,GAAGD,SAAS,CAAC,CAAC,CAAC;IAE5B,IAAIE,WAAW,GAAGnuU,KAAK,CAAC0B,cAAc,CAACirU,mBAAmB,CAAC;IAC3D,IAAIyB,QAAQ,GAAGzB,mBAAmB,CAACp3U,WAAW,CAAC,CAAC;IAEhDu3U,eAAe,GAAGsB,QAAQ,GAAG,GAAG,GAAGF,SAAS,GAAG,KAAK;IACpDnB,aAAa,GAAGqB,QAAQ,GAAG,GAAG,GAAGF,SAAS,GAAG,GAAG,GAAGC,WAAW;EAChE;EAEA,SAASE,6BAA6BA,CAAA,EAAG;IACvC;IACA,IAAIC,sBAAsB,GAAGhsV,KAAK,CAAC1P,KAAK,CAAC;MACvC2P,MAAM,EAAE,4BAA4B;MACpCO,KAAK,EAAE,IAAI;MACX/P,EAAE,EAAE;IACN,CAAC,CAAC;IAEF,IAAI6xK,KAAK,GAAGjyK,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBkO,KAAK,CAAC/S,IAAI,CAAC++V,sBAAsB,CAAC;QAClC;MACF;IACF,CAAC,CAAC;IAEF,IAAIxvT,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3C,IAAIksC,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GACtB,6OAA6O;IAC/OovC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAAC40K,KAAK,CAAC;IAC1B;IACA0pL,sBAAsB,CAACt+V,WAAW,CAACgvC,cAAc,CAAC;IAClDsvT,sBAAsB,CAACt+V,WAAW,CAAC8uC,OAAO,CAAC;IAC3Cr/B,OAAO,CAACjQ,IAAI,CAAC,CAAC;IACd8S,KAAK,CAAC9S,IAAI,CAAC8+V,sBAAsB,CAAC;EACpC;EAEA,eAAe/kJ,+BAA+BA,CAAA,EAAG;IAC/CykJ,yBAAyB,CAAC,CAAC;IAE3B,MAAM;MAAEnkJ,iCAAiC,EAAEC;IAAiB,CAAC,GAC3D,MAAMhnC,OAAO,CAACinC,gCAAgC,CAC5C30J,UAAU,EACV03S,eAAe,EACfC,aAAa,EACbC,UACF,CAAC;IACH;IACA,IAAI13V,IAAI,GAAGw0M,gBAAgB,CAACxwM,GAAG,CAAC0wM,eAAe,KAAK;MAClDj3M,EAAE,EAAEi3M,eAAe,CAAC1F,eAAe;MACnCnwM,KAAK,EAAE61M,eAAe,CAAC1F,eAAe;MACtCpxM,IAAI,EAAE82M,eAAe,CAAC1F;IACxB,CAAC,CAAC,CAAC;IAEH,IAAIhvM,IAAI,CAACzF,MAAM,IAAI,CAAC,EAAE;MACpBw+V,6BAA6B,CAAC,CAAC;IACjC;;IAEA;IACA,IAAI5hJ,iBAAiB,IAAI,EAAE,IAAIn3M,IAAI,CAACzF,MAAM,IAAI,CAAC,EAAE;MAC/C48M,iBAAiB,GAAGn3M,IAAI,CAAC,CAAC,CAAC,CAACnB,KAAK;IACnC;IAEA,IAAI,CAACs4M,iBAAiB,IAAIA,iBAAiB,KAAK,EAAE,EAAE;MAClD2/I,uBAAuB,CAACh9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAChD,CAAC,MAAM;MACL88V,uBAAuB,CAACh9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACnD;IAEAiG,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,yBAAyB,EAAE2F,IAAI,EAAEm3M,iBAAiB,CAAC;EACvE;;EAEA;EACA,SAAS8+I,uBAAuBA,CAAA,EAAG;IACjC,MAAMQ,iBAAiB,GAAG,CACxB;MAAE74V,IAAI,EAAE,QAAQ;MAAEiB,KAAK,EAAE;IAAS,CAAC,EACnC;MAAEjB,IAAI,EAAE,KAAK;MAAEiB,KAAK,EAAE;IAAI,CAAC,EAC3B;MAAEjB,IAAI,EAAE,IAAI;MAAEiB,KAAK,EAAE;IAAI,CAAC,CAC3B;IAED,IAAIo6V,MAAM,GAAG,IAAIjlV,IAAI,CAAC,CAAC;IACvB,IAAIklV,UAAU,GAAG,EAAE;IAEnB,KAAK,IAAI/zV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;MAC3B,IAAIg0V,QAAQ,GAAG,IAAInlV,IAAI,CAACilV,MAAM,CAACh5U,WAAW,CAAC,CAAC,GAAG,CAAC,EAAEg5U,MAAM,CAAC/4U,QAAQ,CAAC,CAAC,GAAG/a,CAAC,EAAE,CAAC,CAAC;MAC3E+zV,UAAU,CAAC7wV,IAAI,CAAC;QACd+wV,WAAW,EACT,CAACD,QAAQ,CAACj5U,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GACrD,GAAG,GACH+vS,QAAQ,CAACl5U,WAAW,CAAC,CAAC,CAAC9B,QAAQ,CAAC,CAAC;QACnCk7U,QAAQ,EAAEF,QAAQ,CAACrsD,YAAY,CAAC;MAClC,CAAC,CAAC;IACJ;IAEA,IAAI9sS,IAAI,GAAGk5V,UAAU,CAACl1V,GAAG,CAACw0V,QAAQ,KAAK;MACrC/6V,EAAE,EAAE+6V,QAAQ,CAACa,QAAQ;MACrBx6V,KAAK,EAAE25V,QAAQ,CAACY,WAAW;MAC3Bx7V,IAAI,EAAE46V,QAAQ,CAACY;IACjB,CAAC,CAAC,CAAC;IACHp5V,IAAI,CAAC49D,OAAO,CAAC;MAAEngE,EAAE,EAAE,IAAI;MAAEoB,KAAK,EAAE,QAAQ;MAAEjB,IAAI,EAAE;IAAS,CAAC,CAAC,CAAC,CAAC;IAC7DqB,QAAQ,CAAC5E,QAAQ,CAAC,mBAAmB,EAAE2F,IAAI,EAAEk3M,YAAY,CAAC;IAE1Dj4M,QAAQ,CAAC5E,QAAQ,CAAC68V,iBAAiB,EAAET,iBAAiB,EAAEj9I,WAAW,CAAC;EACtE;EAEA,SAASvvF,mBAAmBA,CAAA,EAAG;IAC7B,IAAI,CAACitF,YAAY,IAAIA,YAAY,KAAK,EAAE,EAAE;MACxC2/I,iBAAiB,CAAC/8V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACL68V,iBAAiB,CAAC/8V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C;IAEA,IAAI,CAACo9M,iBAAiB,IAAIA,iBAAiB,KAAK,EAAE,EAAE;MAClD2/I,uBAAuB,CAACh9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAChD,CAAC,MAAM;MACL88V,uBAAuB,CAACh9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACnD;IAEA,IAAI,CAACq9M,qBAAqB,IAAIA,qBAAqB,KAAK,EAAE,EAAE;MAC1D2/I,wBAAwB,CAACj9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACjD,CAAC,MAAM;MACL+8V,wBAAwB,CAACj9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACpD;IAEA,IAAIu/V,kBAAkB,GAAGtC,mBAAmB,CAAC95V,aAAa,CAAC,UAAU,CAAC;IACtE,IAAIo8V,kBAAkB,CAACz6V,KAAK,KAAK,EAAE,EAAE;MACnCm4V,mBAAmB,CAACl9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC5C,CAAC,MAAM;MACLg9V,mBAAmB,CAACl9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC/C;IAEA,IAAIkkW,sBAAsB,GAAGJ,uBAAuB,CAAC3gW,aAAa,CAAC,UAAU,CAAC;IAC9E,IAAI+gW,sBAAsB,CAACp/V,KAAK,KAAK,EAAE,EAAE;MACvCg/V,uBAAuB,CAAC/jW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAChD,CAAC,MAAM;MACL6jW,uBAAuB,CAAC/jW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACnD;;IAEA;IACA,IAAIw/V,sBAAsB,GAAGtC,uBAAuB,CAAC/5V,aAAa,CAAC,UAAU,CAAC;IAC9E,IAAIq8V,sBAAsB,CAAC16V,KAAK,KAAK,EAAE,EAAE;MACvCo4V,uBAAuB,CAACn9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAChD,CAAC,MAAM;MACLi9V,uBAAuB,CAACn9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACnD;IAEA,IAAImkW,wBAAwB,GAAGJ,yBAAyB,CAAC5gW,aAAa,CAAC,UAAU,CAAC;IAClF,IAAIghW,wBAAwB,CAACr/V,KAAK,KAAK,EAAE,EAAE;MACzCi/V,yBAAyB,CAAChkW,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAClD,CAAC,MAAM;MACL8jW,yBAAyB,CAAChkW,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACrD;;IAEA;IACA;IACA;IACA;IACA;IACA;;IAEA,IAAI,CAACy/M,WAAW,IAAIA,WAAW,KAAK,EAAE,EAAE;MACtC09I,iBAAiB,CAACp9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IAC1C,CAAC,MAAM;MACLk9V,iBAAiB,CAACp9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IAC7C;IAEAosJ,YAAY,CAAC,CAAC;EAChB;EAEA,SAASuzM,iCAAiCA,CAAA,EAAG;IAC3C,IAAI3iB,SAAS,GAAG,IAAI/iU,IAAI,CAAC,CAAC;IAC1B,IAAI2lV,kBAAkB,GAAG,IAAI3lV,IAAI,CAACojM,qBAAqB,CAAC;IAExD,IAAI69I,YAAY,GAAGvqU,KAAK,CAACiF,QAAQ,CAACgqU,kBAAkB,EAAE5iB,SAAS,CAAC;IAEhE,IAAIke,YAAY,EAAE;MAChB8B,wBAAwB,CAACj9V,SAAS,CAACE,GAAG,CAAC,OAAO,CAAC;IACjD,CAAC,MAAM;MACL+8V,wBAAwB,CAACj9V,SAAS,CAACC,MAAM,CAAC,OAAO,CAAC;IACpD;EACF;EAEA,SAASosJ,YAAYA,CAAA,EAAG;IACtB,IAAI32C,SAAS,GAAG,EAAE,CAAChmG,KAAK,CAACC,IAAI,CAACxM,QAAQ,CAACqG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAIksG,SAAS,CAACj1G,MAAM,KAAK,CAAC,IAAIk5V,YAAY,EAAE;MAC1ClmN,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACjCu9V,aAAa,CAACz9V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvCo+O,SAAS,CAACt+O,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC,CAAC,MAAM;MACLuzI,OAAO,CAACzzI,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MACpCw9V,aAAa,CAACz9V,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;MAC1Cq+O,SAAS,CAACt+O,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC;IAEA,IAAIwvD,MAAM,KAAKmqS,kBAAkB,IAAI,CAACroV,CAAC,CAACC,OAAO,CAACsyC,SAAS,EAAE;MACzDqrG,SAAS,CAACnvJ,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACrC,CAAC,MAAM;MACLivJ,SAAS,CAACnvJ,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;IACxC;EACF;EAEA,SAASqoI,WAAWA,CAAA,EAAG;IACrBy0N,iBAAiB,CAACz5V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MACrE,IAAIi5V,SAAS,GAAGl5V,cAAc,CAACZ,KAAK,CAACuf,KAAK,CAAC,GAAG,CAAC;MAC/C,IAAIw7U,eAAe,GAAG,IAAI5lV,IAAI,CAAC2kV,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;MACjEtB,mBAAmB,GAAGuC,eAAe;MAErC,IAAIn6V,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCq4M,YAAY,GAAG,EAAE;MACnB,CAAC,MAAM;QACLA,YAAY,GAAGz3M,cAAc,CAACZ,KAAK;MACrC;MAEAs4M,iBAAiB,GAAG,EAAE;MACtBlD,+BAA+B,CAAC,CAAC;MACjChqF,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF6sO,uBAAuB,CAAC15V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC1D,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpCs4M,iBAAiB,GAAG,EAAE;MACxB,CAAC,MAAM;QACLA,iBAAiB,GAAG13M,cAAc,CAACZ,KAAK;MAC1C;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF8sO,wBAAwB,CAAC35V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MAC3Dw8M,qBAAqB,GAAGx8M,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC1C66V,iCAAiC,CAAC,CAAC;MACnCvzM,YAAY,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF6wM,mBAAmB,CAAC55V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACrDw+M,4BAA4B,GAAGx+M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACjDorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF4zO,uBAAuB,CAACzgW,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzDy+M,gCAAgC,GAAGz+M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACrDorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;;IAEF;IACAgtO,uBAAuB,CAAC75V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzD0+M,gCAAgC,GAAG1+M,KAAK,CAACC,MAAM,CAACgE,KAAK;MACrDorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF6zO,yBAAyB,CAAC1gW,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC3D2+M,sBAAsB,GAAG3+M,KAAK,CAACC,MAAM,CAACgE,KAAK;MAC3CorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFitO,iBAAiB,CAAC95V,gBAAgB,CAAC,QAAQ,EAAExC,KAAK,IAAI;MACpD,IAAI6E,cAAc,GAAG7E,KAAK,CAACC,MAAM,CAAC0C,OAAO,CAAC3C,KAAK,CAACC,MAAM,CAAC6E,aAAa,CAAC;MAErE,IAAID,cAAc,CAACZ,KAAK,IAAI,QAAQ,EAAE;QACpC26M,WAAW,GAAG,EAAE;MAClB,CAAC,MAAM;QACLA,WAAW,GAAG/5M,cAAc,CAACZ,KAAK;MACpC;MACAorH,mBAAmB,CAAC,CAAC;IACvB,CAAC,CAAC;IAEFstO,aAAa,CAACn6V,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MAC/C;MACA28V,aAAa,CAACz9V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvCuzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACnC,CAAC,CAAC;IAEFuzI,OAAO,CAACnwI,gBAAgB,CAAC,OAAO,EAAExC,KAAK,IAAI;MACzC;MACA28V,aAAa,CAACz9V,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;MACvCuzI,OAAO,CAACzzI,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IACnC,CAAC,CAAC;EACJ;EACA;EACA,eAAe6/V,6BAA6BA,CAAA,EAAG;IAC7C,MAAM31P,YAAY,GAAG;MACnBjzF,KAAK,EAAE,KAAK;MACZZ,OAAO,EAAE,wBAAwB;MACjCgB,cAAc,EAAE,CACd,OAAO,EACP,4BAA4B,EAC5B,yCAAyC,EACzC,2BAA2B,CAC5B;MACDM,OAAO,EAAE;IACX,CAAC;;IAED;IACA,MAAM84F,SAAS,GAAG,CAChB;MAAEl4F,MAAM,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB;IAAE,CAAC,EACxF;MACEA,MAAM,EAAE,CACN,SAAS,EACT,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB;IAE1B,CAAC,CACF;IAED,MAAMgqG,MAAM,GAAGpsG,KAAK,CAAC7S,KAAK,CAAC4mG,YAAY,CAAC;IACxC/zF,KAAK,CAAC9V,QAAQ,CAACkiH,MAAM,EAAE9R,SAAS,CAAC;IAEjC,OAAO8R,MAAM;EACf;;EAEA;EACA,SAASjG,iBAAiBA,CAACnQ,QAAQ,EAAE;IACnC,MAAM6nC,WAAW,GAAG/wI,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD,IAAIqxI,MAAM,GAAG5xI,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAEzC2oG,QAAQ,CAACoQ,IAAI,CAACz8G,SAAS,CAACC,MAAM,CAAC,aAAa,CAAC;IAE7C,MAAMuF,IAAI,GAAGrC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C8B,IAAI,CAACxF,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAEtCsF,IAAI,CAAC5E,WAAW,CAACyrG,QAAQ,CAACoQ,IAAI,CAAC;IAE/By3B,WAAW,CAACtzI,WAAW,CAAC4E,IAAI,CAAC;IAC7B0uI,WAAW,CAACtzI,WAAW,CAACm0I,MAAM,CAAC;IAC/B;;IAEA,OAAOb,WAAW;EACpB;EAEA,SAASomN,cAAcA,CAAA,EAAG;IACxB;IACA;IACA,IAAIp0V,IAAI,GAAG;MACT8/C,UAAU;MACVi3J,UAAU;MACVG,YAAY,EACVmgJ,mBAAmB,CAACp3U,WAAW,CAAC,CAAC,GACjC,GAAG,GACH,CAACo3U,mBAAmB,CAACn3U,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAChE,GAAG,GACH,IAAI;MACN+tJ,iBAAiB;MACjB;MACAC,qBAAqB,EAAEzpL,IAAI,CAACkY,eAAe,CAACuxK,qBAAqB,CAACh5L,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAChFg7L,4BAA4B;MAC5BC,gCAAgC;MAChCC,gCAAgC;MAChCC,sBAAsB;MACtBC,WAAW;MACXjwJ;IACF,CAAC;IACD;IACAikH,OAAO,CAAC2rC,yBAAyB,CAACn5M,IAAI,EAAE,UAAUmlG,OAAO,EAAE;MACzDt3F,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrBirB,UAAU,CAAC,YAAY;QACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;QACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;MACtB,CAAC,EAAE,IAAI,CAAC;IACV,CAAC,CAAC;IAEF,SAASuuJ,aAAaA,CAACC,OAAO,EAAE;MAC9B,IAAIA,OAAO,YAAY/lV,IAAI,IAAI,CAACyK,KAAK,CAACs7U,OAAO,CAACr7U,OAAO,CAAC,CAAC,CAAC,EAAE;QACxD,OACEq7U,OAAO,CAAC95U,WAAW,CAAC,CAAC,GAAG,GAAG,GAAG85U,OAAO,CAAC75U,QAAQ,CAAC,CAAC,CAAC/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG;MAE5F,CAAC,MAAM;QACL,OAAOz7B,IAAI,CAACkY,eAAe,CAACk0T,OAAO,CAAC37U,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACpD;IACF;EACF;EAEA,SAAS+1U,cAAcA,CAACwB,QAAQ,EAAE;IAChC,IAAI31V,IAAI,GAAG;MACT8/C,UAAU;MACVi3J,UAAU;MACVG,YAAY,EACVmgJ,mBAAmB,CAACp3U,WAAW,CAAC,CAAC,GACjC,GAAG,GACH,CAACo3U,mBAAmB,CAACn3U,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE/B,QAAQ,CAAC,CAAC,CAACirC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAChE,GAAG,GACH,IAAI;MACN;MACA+tJ,iBAAiB;MACjBC,qBAAqB,EAAEzpL,IAAI,CAACkY,eAAe,CAACuxK,qBAAqB,CAACh5L,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAChFg7L,4BAA4B;MAC5BC,gCAAgC;MAChCC,gCAAgC;MAChCC,sBAAsB;MACtBC,WAAW;MACXjwJ,MAAM;MACNgwE;IACF,CAAC;IACD;IACAi0C,OAAO,CAACksC,yBAAyB,CAAC15M,IAAI,EAAE,UAAUmlG,OAAO,EAAE;MACzDt3F,cAAc,CAAC3T,IAAI,CAAC,CAAC;MACrB,IAAIy7V,QAAQ,IAAI,YAAY,EAAE;QAC5BxwU,UAAU,CAAC,YAAY;UACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrBkQ,OAAO,CAACjQ,IAAI,CAAC,CAAC;UACdwC,GAAG,CAACg0M,wBAAwB,CAAC5wJ,UAAU,EAAE,gBAAgB,CAAC;QAC5D,CAAC,EAAE,IAAI,CAAC;MACV,CAAC,MAAM;QACL;QACA36B,UAAU,CAAC,YAAY;UACrBtX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACrByC,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC;MACV;IACF,CAAC,CAAC;EACJ;EACA;EACA,SAAShgD,kBAAkBA,CAACwrD,UAAU,EAAE;IACtC,IAAI5nC,WAAW,GAAGniK,KAAK,CAAC1P,KAAK,CAAC;MAC5BG,EAAE,EAAE,oBAAoB;MACxBa,UAAU,EAAE;IACd,CAAC,CAAC;IACF,IAAIkrC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC3CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MACxBM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QAC1BkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;QACvB,IAAIx+I,MAAM,GAAG,MAAM68I,OAAO,CAACyqC,6BAA6B,CAAClB,UAAU,CAAC;QACpE,IAAIpmL,MAAM,CAACqpU,8BAA8B,KAAK,GAAG,EAAE;UACjDt9V,GAAG,CAAC6uM,cAAc,CAAC,CAAC;QACtB;MACF;IACF,CAAC,CAAC;IACF,IAAI5jD,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACvBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,OAAO;MACboB,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBkO,KAAK,CAAC/S,IAAI,CAACk1K,WAAW,CAAC;MACzB;IACF,CAAC,CAAC;IACF3lI,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAC1B,IAAIj+G,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAChDksC,cAAc,CAACtvC,SAAS,GAAG,8CAA8C;IACzE+0K,WAAW,CAACz0K,WAAW,CAACgvC,cAAc,CAAC;IACvCylI,WAAW,CAACz0K,WAAW,CAAC8uC,OAAO,CAAC;IAChCx8B,KAAK,CAAC9S,IAAI,CAACi1K,WAAW,CAAC;EACzB;EAEA,OAAO;IACLhyK;EACF,CAAC;AACH,CAAC,EAAE,CAAC;ACzyBJ,MAAMw7O,GAAG,GAAI,YAAY;EACvB,IAAIqW,OAAO;EACX,IAAIxjE,MAAM;EACV,IAAI1xE,MAAM;EACV,IAAIC,MAAM;EACV,IAAIC,OAAO;EACX,IAAI82L,QAAQ;EACZ,IAAIqtD,eAAe;EAEnB,MAAMjpV,QAAQ,GAAG,CACf;IACE+gE,KAAK,EAAE,SAAS;IAChBx4E,EAAE,EAAE,CAAC;IACLwZ,MAAM,EAAEA,CAAA,KAAMm7O,WAAW,CAACh4I,SAAS,CAAC;EACtC,CAAC,EACD;IACEnkC,KAAK,EAAE,UAAU;IACjBx4E,EAAE,EAAE,CAAC;IACLwZ,MAAM,EAAEA,CAAA,KAAMo7O,YAAY,CAACj4I,SAAS,CAAC;EACvC,CAAC,EACD;IACEnkC,KAAK,EAAE,UAAU;IACjBx4E,EAAE,EAAE,CAAC;IACLwZ,MAAM,EAAEA,CAAA,KAAMq1K,gBAAgB,CAAClyE,SAAS,CAAC;EAC3C,CAAC,EACD;IACEnkC,KAAK,EAAE,sBAAsB;IAC7Bx4E,EAAE,EAAE,CAAC;IACLwZ,MAAM,EAAEA,CAAA,KAAMmnV,uBAAuB,CAAChkP,SAAS,CAAC;EAClD,CAAC,EACD;IACEnkC,KAAK,EAAE,gBAAgB;IACvBx4E,EAAE,EAAE,CAAC;IACLwZ,MAAM,EAAEA,CAAA,KAAMonV,kBAAkB,CAACjkP,SAAS,CAAC;EAC7C,CAAC,EACD;IACEnkC,KAAK,EAAE,UAAU;IACjBx4E,EAAE,EAAE,CAAC;IACLwZ,MAAM,EAAEA,CAAA,KAAMq7O,kBAAkB,CAACgsG,gBAAgB,CAAC;EACpD,CAAC,EACD;IACEroR,KAAK,EAAE,cAAc;IACrBx4E,EAAE,EAAE,CAAC;IACLwZ,MAAM,EAAEA,CAAA,KAAMsnV,gBAAgB,CAACnkP,SAAS,CAAC;EAC3C,CAAC,CACF;;EAED;EACA;EACA,eAAe2kK,cAAcA,CAAA,EAAG;IAC9B/vB,OAAO,GAAG,CAAC,CAAC;IAEZA,OAAO,CAAC1iE,gBAAgB,GAAG,MAAMkyK,oBAAoB,CAACC,sBAAsB,CAAC;MAC3E50T,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB+qT,gBAAgB,EAAElzK;IACpB,CAAC,CAAC;EACJ;EACA,eAAeotD,UAAUA,CAACmW,MAAM,EAAE;IAChCvjE,MAAM,GAAGujE,MAAM;IAEfovG,eAAe,GAAG,MAAM/nV,cAAc,CAACuoV,aAAa,CAACnzK,MAAM,CAAC;IAE5D,MAAMxwE,OAAO,GAAG/9G,QAAQ,CAACiD,cAAc,CAAC,SAAS,CAAC;IAElD,MAAMwmP,UAAU,GAAG93O,QAAQ,CAACK,OAAO,CAACpJ,GAAG,CAAC,gBAAgB,CAAC;IACzDm1G,OAAO,CAAC5gH,SAAS,GAAG,EAAE;IACtB4gH,OAAO,CAACtgH,WAAW,CAACgsP,UAAU,CAAC;IAE/B,MAAMvrI,YAAY,GAAG,MAAMf,SAAS,CAAC,CAAC;IAEtCY,OAAO,CAAC5gH,SAAS,GAAG,EAAE;IACtB4gH,OAAO,CAACtgH,WAAW,CAACygH,YAAY,CAAC;IAEjChvG,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;EACxB;EACA,SAASsnF,mBAAmBA,CAACC,eAAe,EAAE;IAC5C,MAAMC,aAAa,GAAGvB,MAAM,CAAC78G,aAAa,CAAC,SAAS,CAAC;IAErD,IAAIo+G,aAAa,EAAE;MACjBA,aAAa,CAACxhH,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC1C;IAEAshH,eAAe,CAACvhH,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;EACzC;EACA,SAASuhH,mBAAmBA,CAACC,SAAS,EAAE;IACtC,MAAMtgH,aAAa,GAAG8+G,OAAO,CAAC98G,aAAa,CAAC,SAAS,CAAC;IACtD,MAAMsY,aAAa,GAAGwkG,OAAO,CAAC98G,aAAa,CAAC,qBAAqBs+G,SAAS,IAAI,CAAC;IAE/E,IAAItgH,aAAa,EAAE;MACjBA,aAAa,CAACpB,SAAS,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC1C;IAEAyb,aAAa,CAAC1b,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;EACvC;EACA,SAAS4kW,iBAAiBA,CAAC9xV,KAAK,EAAEgB,OAAO,EAAEhP,QAAQ,EAAE;IACnDgO,KAAK,CAAChT,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAEnC,MAAM6kW,aAAa,GAAG5hW,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACnDqhW,aAAa,CAAC/kW,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;IAE5C,MAAM0vC,cAAc,GAAGzsC,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAClDksC,cAAc,CAACtvC,SAAS,GAAG,GAAG0T,OAAO,EAAE;IAEvC,MAAM45I,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,QAAQ;MACfC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpBgO,KAAK,CAACT,WAAW,CAACwyV,aAAa,CAAC;QAChC/xV,KAAK,CAAChT,SAAS,CAACC,MAAM,CAAC,cAAc,CAAC;QACtC+S,KAAK,CAAC/O,KAAK,CAACuP,QAAQ,GAAG,MAAM;QAC7BxO,QAAQ,CAAC,CAAC;QACVkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;MACnB;IACF,CAAC,CAAC;IACF,MAAM66I,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEA,CAAA,KAAM;QACdgO,KAAK,CAACT,WAAW,CAACwyV,aAAa,CAAC;QAChC/xV,KAAK,CAAChT,SAAS,CAACC,MAAM,CAAC,cAAc,CAAC;QACtC+S,KAAK,CAAC/O,KAAK,CAACuP,QAAQ,GAAG,MAAM;MAC/B;IACF,CAAC,CAAC;IACF,MAAMwxV,eAAe,GAAGzhW,MAAM,CAACC,KAAK,CAAC;MACnCU,IAAI,EAAE,MAAM;MACZD,KAAK,EAAE,WAAW;MAClBL,IAAI,EAAE,OAAO;MACbY,UAAU,EAAE,iBAAiB;MAC7BQ,QAAQ,EAAE,SAAAA,CAAA,EAAY;QACpBgO,KAAK,CAACT,WAAW,CAACwyV,aAAa,CAAC;QAChC/xV,KAAK,CAAChT,SAAS,CAACC,MAAM,CAAC,cAAc,CAAC;QACtC+S,KAAK,CAAC/O,KAAK,CAACuP,QAAQ,GAAG,MAAM;QAC7BN,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;MACnB;IACF,CAAC,CAAC;;IAEF;IACA+xV,aAAa,CAACnkW,WAAW,CAACokW,eAAe,CAAC;IAC1CD,aAAa,CAACnkW,WAAW,CAACgvC,cAAc,CAAC;IACzCm1T,aAAa,CAACnkW,WAAW,CAACgtJ,MAAM,CAAC;IACjCm3M,aAAa,CAACnkW,WAAW,CAACitJ,KAAK,CAAC;IAEhC76I,KAAK,CAACpS,WAAW,CAACmkW,aAAa,CAAC;EAClC;;EAEA;EACA;EACA,SAASpjP,eAAeA,CAAA,EAAG;IACzB,MAAM9hH,GAAG,GAAGsD,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACzC7D,GAAG,CAACG,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAEjCkb,QAAQ,CAAC1a,OAAO,CAAC,OAAO6a,OAAO,EAAEzB,KAAK,KAAK;MACzC,MAAM4nG,SAAS,GAAGnmG,OAAO,CAAC5X,EAAE;MAE5B,MAAM2X,OAAO,GAAGnY,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC7C4X,OAAO,CAACtb,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MACzCob,OAAO,CAAChb,SAAS,GAAG,GAAGib,OAAO,CAAC4gE,KAAK,EAAE;MAEtC,IAAI5gE,OAAO,CAAC4gE,KAAK,KAAK,SAAS,EAAE;QAC/B,MAAM8oR,eAAe,GAAG9hW,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACrDuhW,eAAe,CAACjlW,SAAS,CAACE,GAAG,CAAC,iBAAiB,CAAC;QAChD+kW,eAAe,CAACthW,EAAE,GAAG,cAAc;QACnCshW,eAAe,CAAC3kW,SAAS,GAAG,GAAGyD,KAAK,CAACmO,KAAK,EAAE;QAC5CoJ,OAAO,CAAC1a,WAAW,CAACqkW,eAAe,CAAC;QACpCA,eAAe,CAAChhW,KAAK,CAACoK,OAAO,GAAG,MAAM;;QAEtC;QACAiO,cAAc,CAACK,aAAa,CAC1B,4DAA4D,EAC5DsoV,eACF,CAAC;QAED,IAAInoV,sBAAsB,GAAGR,cAAc,CAAC4oV,4BAA4B,CAAC,CAAC;;QAE1E;QACA,IAAI,CAACpoV,sBAAsB,EAC3B;UACEmoV,eAAe,CAAChhW,KAAK,CAACoK,OAAO,GAAG,MAAM;QACxC,CAAC,MAAM;UACL42V,eAAe,CAAChhW,KAAK,CAACoK,OAAO,GAAG,MAAM;QACxC;MACF;;MAEA;MACA,IAAIkN,OAAO,CAAC4gE,KAAK,KAAK,UAAU,EAAE;QAChC,MAAMgpR,gBAAgB,GAAGhiW,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACtDyhW,gBAAgB,CAACnlW,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;QAClDilW,gBAAgB,CAACxhW,EAAE,GAAG,eAAe;QACrCwhW,gBAAgB,CAAC7kW,SAAS,GAAG,GAAGyD,KAAK,CAACmO,KAAK,EAAE;QAC7CoJ,OAAO,CAAC1a,WAAW,CAACukW,gBAAgB,CAAC;QACrCA,gBAAgB,CAAClhW,KAAK,CAACoK,OAAO,GAAG,MAAM;;QAEvC;QACAiO,cAAc,CAACK,aAAa,CAC1B,4DAA4D,EAC5DwoV,gBACF,CAAC;;QAED;QACA,IAAId,eAAe,CAACe,kBAAkB,CAAC3kW,MAAM,KAAK,CAAC,IAAI4jW,eAAe,CAACgB,cAAc,CAAC5kW,MAAM,KAAK,CAAC,EAClG;UACE0kW,gBAAgB,CAAClhW,KAAK,CAACoK,OAAO,GAAG,MAAM;QAC1C,CAAC,MAAM;UACJ82V,gBAAgB,CAAClhW,KAAK,CAACoK,OAAO,GAAG,MAAM;QAC1C;QAEA,IAAIg2V,eAAe,CAACznV,QAAQ,KAAK,KAAK,EAAE;UACtCuoV,gBAAgB,CAAClhW,KAAK,CAACoK,OAAO,GAAG,MAAM;QAC1C,CAAC,MAAM;UACJ82V,gBAAgB,CAAClhW,KAAK,CAACoK,OAAO,GAAG,MAAM;QAC1C;MACA;;MAEA;MACA,IAAIkN,OAAO,CAAC4gE,KAAK,KAAK,UAAU,EAAE;QAChC,MAAMmpR,gBAAgB,GAAGniW,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QACtD4hW,gBAAgB,CAACtlW,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;QAClDolW,gBAAgB,CAAC3hW,EAAE,GAAG,eAAe;QACrC2hW,gBAAgB,CAAChlW,SAAS,GAAG,GAAGyD,KAAK,CAACmO,KAAK,EAAE;QAC7CoJ,OAAO,CAAC1a,WAAW,CAAC0kW,gBAAgB,CAAC;QACrCA,gBAAgB,CAACrhW,KAAK,CAACoK,OAAO,GAAG,MAAM;;QAEvC;QACAiO,cAAc,CAACK,aAAa,CAC1B,4DAA4D,EAC5D2oV,gBACF,CAAC;QAED,IAAIC,sBAAsB,GAAGjpV,cAAc,CAACkpV,oBAAoB,CAAC,CAAC;QAElE,IAAI,CAACD,sBAAsB,CAACE,eAAe,IAAI,CAACF,sBAAsB,CAACG,eAAe,IAAI,CAACH,sBAAsB,CAACI,gBAAgB,EAClI;UACEL,gBAAgB,CAACrhW,KAAK,CAACoK,OAAO,GAAG,MAAM;QACzC,CAAC,MAAM;UACLi3V,gBAAgB,CAACrhW,KAAK,CAACoK,OAAO,GAAG,MAAM;QACzC;MACF;MAEA,IAAIyL,KAAK,KAAK,CAAC,EAAE;QACfwB,OAAO,CAACtb,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACjC;MAEAob,OAAO,CAAChY,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QACrC47G,mBAAmB,CAAChmG,OAAO,CAAC;QAC5BmmG,mBAAmB,CAACC,SAAS,CAAC;QAC9BrvG,GAAG,CAAC2nB,gBAAgB,CAAC,CAAC;MACxB,CAAC,CAAC;MAEFn6B,GAAG,CAACe,WAAW,CAAC0a,OAAO,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAOzb,GAAG;EACZ;EACA,eAAe+hH,SAASA,CAAA,EAAG;IACzB,MAAMruG,IAAI,GAAGpQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC1C6P,IAAI,CAACvT,SAAS,CAACE,GAAG,CAAC,eAAe,CAAC;;IAEnC;IACAwiP,QAAQ,CAAC2V,mBAAmB,CAAC,CAAC;IAE9B,MAAM4sB,cAAc,CAAC,CAAC;IAEtBzyF,gBAAgB,CAACnvL,IAAI,CAAC;MAAEquL,MAAM;MAAEslH,QAAQ;MAAE9wS,IAAI,EAAEgvP,OAAO,CAAC1iE;IAAiB,CAAC,CAAC;;IAE3E;IACA,MAAM8lE,WAAW,CAACj1P,IAAI,CAAC;MAAEquL,MAAM;MAAEslH;IAAS,CAAC,CAAC;IAC5C,MAAMz+C,YAAY,CAACl1P,IAAI,CAAC;MAAEquL,MAAM;MAAEslH;IAAS,CAAC,CAAC;IAC7C,MAAMutD,kBAAkB,CAAClhW,IAAI,CAAC;MAAEquL,MAAM;MAAEslH;IAAS,CAAC,CAAC;IACnD,MAAMstD,uBAAuB,CAACjhW,IAAI,CAAC;MAAEquL,MAAM;MAAEslH;IAAS,CAAC,CAAC;IACxD,MAAMx+C,kBAAkB,CAACn1P,IAAI,CAACquL,MAAM,CAAC;IACrC,MAAM+yK,gBAAgB,CAACphW,IAAI,CAAC;MAAEquL,MAAM;MAAEslH;IAAS,CAAC,CAAC;IAEjD57R,QAAQ,CAAC1a,OAAO,CAAC,CAAC6a,OAAO,EAAEzB,KAAK,KAAK;MACnC,MAAM4nG,SAAS,GAAGnmG,OAAO,CAAC5X,EAAE;MAC5B,MAAMqZ,aAAa,GAAGzB,OAAO,CAAC4B,MAAM,CAAC,CAAC;MACtCH,aAAa,CAAC5Y,YAAY,CAAC,iBAAiB,EAAEs9G,SAAS,CAAC;MACxD1kG,aAAa,CAAChd,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MAE/C,IAAI4Z,KAAK,KAAK,CAAC,EAAE;QACfkD,aAAa,CAAChd,SAAS,CAACE,GAAG,CAAC,QAAQ,CAAC;MACvC;MAEAqT,IAAI,CAAC3S,WAAW,CAACoc,aAAa,CAAC;IACjC,CAAC,CAAC;IAEF,OAAOzJ,IAAI;EACb;EAEA,eAAe+sG,SAASA,CAAA,EAAG;IACzBN,MAAM,GAAG78G,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtCs8G,MAAM,CAAChgH,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAE/B,MAAMud,MAAM,GAAGnb,IAAI,CAACq6O,aAAa,CAAC,CAAC;IACnC,MAAMipH,cAAc,GAAGnoV,MAAM,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK;IACpD,MAAMooV,YAAY,GAAGvjW,IAAI,CAACs6O,mBAAmB,CAAC,CAAC;IAC/C,MAAMkpH,mBAAmB,GAAGv0V,CAAC,CAACC,OAAO,CAACywC,UAAU;IAChD,IAAI,CAAC4jT,YAAY,IAAID,cAAc,IAAI,CAACE,mBAAmB,EAAE;MAC3D9uD,QAAQ,GAAG,IAAI;MACfh3L,MAAM,CAAChgH,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;IAClC,CAAC,MAAM;MACL82S,QAAQ,GAAG,KAAK;IAClB;IAEA/2L,MAAM,GAAG0B,eAAe,CAAC,CAAC;IAC1B3B,MAAM,CAACp/G,WAAW,CAACq/G,MAAM,CAAC;IAE1BC,OAAO,GAAG,MAAM0B,SAAS,CAAC,CAAC;IAC3B5B,MAAM,CAACp/G,WAAW,CAACs/G,OAAO,CAAC;IAE3B,OAAOF,MAAM;EACf;EAEA,OAAO;IACL8+H,UAAU;IACVx+H,SAAS;IACTwkP;EACF,CAAC;AACH,CAAC,CAAE,CAAC;AC/TJ,MAAMppH,UAAU,GAAI,YAAY;EAC9B;EACA,IAAIqqH,WAAW;EACf,IAAIC,cAAc;EAClB,IAAIC,eAAe;EACnB,IAAIC,YAAY;EAChB,IAAIC,uBAAuB;;EAE3B;EACA;EACA,IAAIC,kBAAkB;EAEtB,SAASC,qBAAqBA,CAAA,EAAG;IAC/B,OAAOD,kBAAkB;EAC3B;EACA,SAASE,4BAA4BA,CAACthW,QAAQ,EAAE;IAC9C,MAAMwqC,YAAY,GAAGt8B,KAAK,CAAC1P,KAAK,CAAC;MAC/BgB,UAAU,EAAE;IACd,CAAC,CAAC;IAEF,MAAM2O,MAAM,GAAGhQ,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC3CyP,MAAM,CAAC7S,SAAS,GACd,6NAA6N;IAE/N,MAAMovC,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEhC,MAAM0tJ,MAAM,GAAGrqJ,MAAM,CAACC,KAAK,CAAC;MAC1BM,IAAI,EAAE,KAAK;MACXG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAE,MAAMU,CAAC,IAAI;QACnB;QACA;QACAV,QAAQ,CAAC,KAAK,CAAC;QACfkO,KAAK,CAAC/S,IAAI,CAACqvC,YAAY,CAAC;MAC1B;IACF,CAAC,CAAC;IAEF,MAAMq+G,KAAK,GAAGtqJ,MAAM,CAACC,KAAK,CAAC;MACzBM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBc,QAAQ,EAAEU,CAAC,IAAI;QACbV,QAAQ,CAAC,IAAI,CAAC;QACdkO,KAAK,CAAC/S,IAAI,CAACqvC,YAAY,CAAC;MAC1B;IACF,CAAC,CAAC;IAEFE,OAAO,CAAC9uC,WAAW,CAACgtJ,MAAM,CAAC;IAC3Bl+G,OAAO,CAAC9uC,WAAW,CAACitJ,KAAK,CAAC;IAE1Br+G,YAAY,CAAC5uC,WAAW,CAACuS,MAAM,CAAC;IAChCq8B,YAAY,CAAC5uC,WAAW,CAAC8uC,OAAO,CAAC;IAEjCx8B,KAAK,CAAC9S,IAAI,CAACovC,YAAY,CAAC;EAC1B;EACA,eAAe+2T,yBAAyBA,CAAC7kP,SAAS,EAAE8kP,YAAY,EAAE;IAChE;IACA,MAAM90K,MAAM,GAAGpvL,IAAI,CAACm6O,gBAAgB,CAAC,CAAC;IACtC,MAAMnoC,QAAQ,CAAC+/C,2BAA2B,CAAC;MACzCtkN,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB63I,MAAM,EAAE3mK,QAAQ,CAAC2mK,MAAM,CAAC;MACxBhwE,SAAS,EAAE32F,QAAQ,CAAC22F,SAAS,CAAC;MAC9B+kP,UAAU,EAAED,YAAY,GAAG,GAAG,GAAG;IACnC,CAAC,CAAC;IAEFJ,kBAAkB,CAAC1kP,SAAS,CAAC,GAAG8kP,YAAY;IAC5C/4G,eAAe,CAACi5G,mBAAmB,CAAChlP,SAAS,EAAE8kP,YAAY,CAAC;EAC9D;;EAEA;EACA;EACA,SAASG,uBAAuBA,CAACC,qBAAqB,EAAE;IACtD,OAAOT,uBAAuB,CAACS,qBAAqB,CAAC;EACvD;EACA,SAASC,mBAAmBA,CAACljW,EAAE,EAAE;IAC/B,OAAOuiW,YAAY,CAACviW,EAAE,CAAC;EACzB;EACA,SAASmjW,qBAAqBA,CAAC5gW,IAAI,EAAE;IACnC,IAAI,CAACA,IAAI,EAAE;IACX;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA6/V,WAAW,GAAG,CAAC,CAAC;IAChBC,cAAc,GAAG,CAAC,CAAC;IACnBC,eAAe,GAAG,CAAC,CAAC;IACpBC,YAAY,GAAG,CAAC,CAAC;IACjBa,UAAU,GAAG,CAAC,CAAC;IACfZ,uBAAuB,GAAG,CAAC,CAAC;IAC5BC,kBAAkB,GAAG,CAAC,CAAC;IAEvBlgW,IAAI,CAACxF,OAAO,CAACy3H,IAAA,IAA0E;MAAA,IAAzE;QAAEzW,SAAS;QAAEslP,YAAY;QAAEryG,UAAU;QAAEsyG,aAAa;QAAE,GAAG1vH;MAAU,CAAC,GAAAp/G,IAAA;MAChF;MACA,IAAI,CAAC4tO,WAAW,CAACrkP,SAAS,CAAC,EAAE;QAC3B,MAAM8kP,YAAY,GAAGjvH,SAAS,CAACkvH,UAAU,KAAK,EAAE,GAAG,GAAG,GAAGlvH,SAAS,CAACkvH,UAAU;QAC7EV,WAAW,CAACrkP,SAAS,CAAC,GAAG;UACvBzwB,KAAK,EAAEsmJ,SAAS,CAAC2vH,YAAY;UAC7B/qR,KAAK,EAAEo7J,SAAS,CAACgmE,WAAW;UAC5BkpD,UAAU,EAAED,YAAY,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK;UAC/CW,YAAY,EAAE5vH,SAAS,CAACmE;QAC1B,CAAC;QAED,IAAI,CAAC0qH,kBAAkB,CAAC1kP,SAAS,CAAC,IAAI61H,SAAS,CAACmE,UAAU,EAAE;UAC1D,IAAInE,SAAS,CAACmE,UAAU,KAAK,GAAG,EAAE;YAChC0qH,kBAAkB,CAAC1kP,SAAS,CAAC,GAAG8kP,YAAY,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK;UACrE;QACF;MACF;MACA;MACA,IAAIQ,YAAY,IAAI,CAAChB,cAAc,CAACgB,YAAY,CAAC,EAAE;QACjDhB,cAAc,CAACgB,YAAY,CAAC,GAAG;UAC7BtlP,SAAS;UACTzwB,KAAK,EAAEsmJ,SAAS,CAAC6vH,eAAe;UAChCjrR,KAAK,EAAEo7J,SAAS,CAAC8vH;QACnB,CAAC;MACH;MACA;MACA,IAAI,CAACpB,eAAe,CAACgB,aAAa,CAAC,EAAE;QACnChB,eAAe,CAACgB,aAAa,CAAC,GAAG;UAC/BtjW,EAAE,EAAEsjW,aAAa;UACjBvlP,SAAS;UACTslP,YAAY;UACZ/1Q,KAAK,EAAEsmJ,SAAS,CAAC+vH,gBAAgB;UACjCC,OAAO,EAAEhwH,SAAS,CAACiwH,eAAe;UAClCC,cAAc,EAAElwH,SAAS,CAACmwH,+BAA+B;UACzDC,aAAa,EAAEpwH,SAAS,CAACqwH,qBAAqB;UAC9C17K,SAAS,EAAE,CAAC;QACd,CAAC;MACH;MACA;MACA,IAAIqrD,SAAS,CAACiwH,eAAe,KAAK,MAAM,EAAE;QACxC,IAAI,CAACvB,eAAe,CAACgB,aAAa,CAAC,CAAC/6K,SAAS,CAACqrD,SAAS,CAACswH,SAAS,CAAC,EAAE;UAClE5B,eAAe,CAACgB,aAAa,CAAC,CAAC/6K,SAAS,CAACqrD,SAAS,CAACswH,SAAS,CAAC,GAAG,CAAC,CAAC;QACpE;QACA,IACE,CAAC5B,eAAe,CAACgB,aAAa,CAAC,CAAC/6K,SAAS,CAACqrD,SAAS,CAACswH,SAAS,CAAC,CAACtwH,SAAS,CAACuwH,aAAa,CAAC,EACvF;UACA7B,eAAe,CAACgB,aAAa,CAAC,CAAC/6K,SAAS,CAACqrD,SAAS,CAACswH,SAAS,CAAC,CAACtwH,SAAS,CAACuwH,aAAa,CAAC,GAAG;YACvFC,QAAQ,EAAExwH,SAAS,CAACwwH,QAAQ;YAC5BC,UAAU,EAAEzwH,SAAS,CAACywH,UAAU;YAChCC,WAAW,EAAE1wH,SAAS,CAAC2wH,mBAAmB;YAC1CC,aAAa,EAAE5wH,SAAS,CAAC6wH,qBAAqB;YAC9CzkW,EAAE,EAAEgxP,UAAU;YACdjlB,MAAM,EAAE6H,SAAS,CAAC8wH,cAAc;YAChCC,cAAc,EAAE/wH,SAAS,CAACgxH,sBAAsB;YAChDzqV,GAAG,EAAEy5N,SAAS,CAACixH,WAAW;YAC1B1kW,IAAI,EAAEyzO,SAAS,CAAC/mD,YAAY;YAC5Bi4K,OAAO,EAAElxH,SAAS,CAACkxH;UACrB,CAAC;QACH;MACF,CAAC,MAAM;QACL,IAAI,CAACxC,eAAe,CAACgB,aAAa,CAAC,CAAC/6K,SAAS,CAACqrD,SAAS,CAACuwH,aAAa,CAAC,EAAE;UACtE7B,eAAe,CAACgB,aAAa,CAAC,CAAC/6K,SAAS,CAACqrD,SAAS,CAACuwH,aAAa,CAAC,GAAG;YAClEC,QAAQ,EAAExwH,SAAS,CAACwwH,QAAQ;YAC5BC,UAAU,EAAEzwH,SAAS,CAACywH,UAAU;YAChCC,WAAW,EAAE1wH,SAAS,CAAC2wH,mBAAmB;YAC1CC,aAAa,EAAE5wH,SAAS,CAAC6wH,qBAAqB;YAC9CM,qBAAqB,EAAEnxH,SAAS,CAACoxH,6BAA6B;YAC9D/B,qBAAqB,EAAErvH,SAAS,CAACqxH,6BAA6B;YAC9DjlW,EAAE,EAAEgxP,UAAU;YACd1jK,KAAK,EAAEsmJ,SAAS,CAACuwH,aAAa;YAC9Bp4H,MAAM,EAAE6H,SAAS,CAAC8wH,cAAc;YAChCC,cAAc,EAAE/wH,SAAS,CAACgxH,sBAAsB;YAChDzkW,IAAI,EAAEyzO,SAAS,CAAC/mD,YAAY;YAC5B1yK,GAAG,EAAEy5N,SAAS,CAACixH,WAAW;YAC1BC,OAAO,EAAElxH,SAAS,CAACkxH;UACrB,CAAC;QACH;QACA,IAAI,CAACvC,YAAY,CAACvxG,UAAU,CAAC,EAAE;UAC7BuxG,YAAY,CAACvxG,UAAU,CAAC,GAAG;YACzBozG,QAAQ,EAAExwH,SAAS,CAACwwH,QAAQ;YAC5BC,UAAU,EAAEzwH,SAAS,CAACywH,UAAU;YAChCC,WAAW,EAAE1wH,SAAS,CAAC2wH,mBAAmB;YAC1CC,aAAa,EAAE5wH,SAAS,CAAC6wH,qBAAqB;YAC9CM,qBAAqB,EAAEnxH,SAAS,CAACoxH,6BAA6B;YAC9D/B,qBAAqB,EAAErvH,SAAS,CAACqxH,6BAA6B;YAC9DjlW,EAAE,EAAEgxP,UAAU;YACd1jK,KAAK,EAAEsmJ,SAAS,CAACuwH,aAAa;YAC9Bp4H,MAAM,EAAE6H,SAAS,CAAC8wH,cAAc;YAChCC,cAAc,EAAE/wH,SAAS,CAACgxH,sBAAsB;YAChDzkW,IAAI,EAAEyzO,SAAS,CAAC/mD,YAAY;YAC5B1yK,GAAG,EAAEy5N,SAAS,CAACixH,WAAW;YAC1BC,OAAO,EAAElxH,SAAS,CAACkxH;UACrB,CAAC;QACH;QAEA,IAAIlxH,SAAS,CAACqxH,6BAA6B,KAAK,EAAE,EAAE;QAEpD,IAAI,CAACzC,uBAAuB,CAAC5uH,SAAS,CAACqxH,6BAA6B,CAAC,EAAE;UACrEzC,uBAAuB,CAAC5uH,SAAS,CAACqxH,6BAA6B,CAAC,GAAG,EAAE;QACvE;QAEAzC,uBAAuB,CAAC5uH,SAAS,CAACqxH,6BAA6B,CAAC,CAACr6V,IAAI,CAAC;UACpEw5V,QAAQ,EAAExwH,SAAS,CAACwwH,QAAQ;UAC5BpzG,UAAU,EAAEA,UAAU;UACtBqzG,UAAU,EAAEzwH,SAAS,CAACywH,UAAU;UAChCpB,qBAAqB,EAAErvH,SAAS,CAACqxH,6BAA6B;UAC9DF,qBAAqB,EAAEnxH,SAAS,CAACoxH;QACnC,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IAEF,OAAO;MAAE5C,WAAW;MAAEC,cAAc;MAAEC;IAAgB,CAAC;EACzD;;EAEA;EACA;EACA,eAAetqH,iBAAiBA,CAACjqD,MAAM,EAAE;IACvC,IAAI;MACF,MAAMxrL,IAAI,GAAG,CACX,MAAM2+O,cAAc,CAACgkH,qBAAqB,CAAC;QACzC94T,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB2hM,cAAc,EAAE9pD;MAClB,CAAC,CAAC,EACFo3K,2BAA2B;MAC7B,OAAOhC,qBAAqB,CAAC5gW,IAAI,CAAC;IACpC,CAAC,CAAC,OAAOgM,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB;EACF;EACA,eAAe62V,4BAA4BA,CAAC/iT,UAAU,EAAEm2L,kBAAkB,EAAEC,gBAAgB,EAAE;IAC5F,IAAI;MACF,MAAMl2O,IAAI,GAAG,CACX,MAAM2+O,cAAc,CAAC6nB,wBAAwB,CAAC;QAC5C38N,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtBmM,UAAU;QACVm2L,kBAAkB;QAClBC;MACF,CAAC,CAAC,EACF4sH,8BAA8B;MAChC,OAAO9iW,IAAI;IACb,CAAC,CAAC,OAAOgM,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB;EACF;EACA,eAAe+2V,uBAAuBA,CAACjjT,UAAU,EAAE;IACjD,IAAI;MACF,MAAM9/C,IAAI,GAAG,CACX,MAAM2+O,cAAc,CAACqkH,mBAAmB,CAAC;QACvCn5T,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtBmM;MACF,CAAC,CAAC,EACFmjT,yBAAyB;MAC3B,OAAOjjW,IAAI;IACb,CAAC,CAAC,OAAOgM,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB;EACF;EACA,eAAek3V,yBAAyBA,CAAA,EAAG;IACzC,IAAI;MACF,MAAMljW,IAAI,GAAG,CACX,MAAM2+O,cAAc,CAACukH,yBAAyB,CAAC;QAC7Cr5T,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;MACnB,CAAC,CAAC,EACF64M,+BAA+B;MACjC,OAAOxsP,IAAI;IACb,CAAC,CAAC,OAAOgM,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB;EACF;EACA,eAAemsP,cAAcA,CAACzuD,YAAY,EAAEsB,SAAS,EAAEC,UAAU,EAAE;IACjE,IAAI;MACF,MAAMznJ,OAAO,GAAG,CACd,MAAMm7L,cAAc,CAACwkH,uBAAuB,CAAC;QAC3Ct5T,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB4V,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACmoC,QAAQ;QAC1Bi2J,YAAY;QACZsB,SAAS;QACTC,UAAU,EAAEA,UAAU;QACtBC,GAAG,EAAE,IAAI;QAAE;QACXk4C,aAAa,EAAE;MACjB,CAAC,CAAC,EACFggH,6BAA6B;MAE/B,MAAM/jU,GAAG,GAAGmkB,OAAO,CAACmjI,OAAO;MAC3B,MAAMC,SAAS,GAAG,IAAI19H,UAAU,CAAC7pB,GAAG,CAAC;MACrC,MAAMwnJ,IAAI,GAAG,IAAIj9J,IAAI,CAAC,CAACg9J,SAAS,CAAC,EAAE;QAAE5oL,IAAI,EAAE;MAAkB,CAAC,CAAC;MAC/D,IAAIqN,CAAC,CAACC,OAAO,CAACsoC,OAAO,KAAK,UAAU,IAAIvoC,CAAC,CAACC,OAAO,CAACsoC,OAAO,KAAK,SAAS,EAAE;QACvEnoC,MAAM,CAAC2e,SAAS,CAAC08J,gBAAgB,CAACD,IAAI,EAAE,YAAY,CAAC;MACvD,CAAC,MAAM;QACL,MAAME,OAAO,GAAGt9J,GAAG,CAACC,eAAe,CAACm9J,IAAI,CAAC;QACzCp7K,MAAM,CAAC7F,IAAI,CAACmhL,OAAO,CAAC;MACtB;MAEAC,OAAO,CAACC,sBAAsB,CAAC,CAAC;MAChC,OAAO,SAAS;IAClB,CAAC,CAAC,OAAOj7K,KAAK,EAAE;MACd,OAAOA,KAAK,CAAC6yO,UAAU;IACzB;EACF;EACA,SAAST,6BAA6BA,CACpC10C,YAAY,EACZsB,SAAS,EACTC,UAAU,EACVgzC,iBAAiB,EACjBC,eAAe,EACfC,gBAAgB,EAChBklH,QAAQ,EACRjgH,aAAa,EACbhP,OAAO,EACPkvH,MAAM,EACN;IACA3kH,cAAc,CAAC4kH,sCAAsC;IACnD;IACA;MACE15T,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB4V,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACmoC,QAAQ;MAC1Bi2J,YAAY;MACZsB,SAAS;MACTC,UAAU,EAAEA,UAAU;MACtBk4C,MAAM,EAAE,KAAK;MACbj4C,GAAG,EAAE,IAAI;MACT15I,OAAO,EAAE,KAAK;MACdysL,iBAAiB;MACjBC,eAAe;MACfC,gBAAgB;MAChBklH,QAAQ;MACRjgH,aAAa;MACbhP;IACF,CAAC,EACD,MAAM;MACJ,MAAM/0M,GAAG,GAAGmkB,OAAO,CAACmjI,OAAO;MAC3B,MAAMC,SAAS,GAAG,IAAI19H,UAAU,CAAC7pB,GAAG,CAAC;MACrC,MAAMwnJ,IAAI,GAAG,IAAIj9J,IAAI,CAAC,CAACg9J,SAAS,CAAC,EAAE;QAAE5oL,IAAI,EAAE;MAAkB,CAAC,CAAC;MAC/D,IAAIqN,CAAC,CAACC,OAAO,CAACsoC,OAAO,KAAK,UAAU,IAAIvoC,CAAC,CAACC,OAAO,CAACsoC,OAAO,KAAK,SAAS,EAAE;QACvEnoC,MAAM,CAAC2e,SAAS,CAAC08J,gBAAgB,CAACD,IAAI,EAAE,YAAY,CAAC;MACvD,CAAC,MAAM;QACL,MAAME,OAAO,GAAGt9J,GAAG,CAACC,eAAe,CAACm9J,IAAI,CAAC;QACzCp7K,MAAM,CAAC7F,IAAI,CAACmhL,OAAO,CAAC;MACtB;MAEAC,OAAO,CAACC,sBAAsB,CAAC,CAAC;MAChC,OAAO,SAAS;IAClB,CACF,CAAC;EACH;EACA,eAAeu3D,yBAAyBA,CACtC90C,YAAY,EACZsB,SAAS,EACTC,UAAU,EACVgzC,iBAAiB,EACjBC,eAAe,EACfC,gBAAgB,EAChBklH,QAAQ,EACRjgH,aAAa,EACbhP,OAAO,EACP;IACA,IAAI;MACF,MAAMovH,cAAc,GAAG,MAAM7kH,cAAc,CAACH,yBAAyB,CAAC;QACpE30M,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB4V,MAAM,EAAEl+C,CAAC,CAACC,OAAO,CAACmoC,QAAQ;QAC1Bi2J,YAAY;QACZsB,SAAS;QACTC,UAAU,EAAEA,UAAU;QACtBk4C,MAAM,EAAE,IAAI;QACZj4C,GAAG,EAAE,IAAI;QACT15I,OAAO,EAAE,KAAK;QACdysL,iBAAiB;QACjBC,eAAe;QACfC,gBAAgB;QAChBklH,QAAQ;QACRjgH,aAAa;QACbhP;MACF,CAAC,CAAC;MAEF,OAAOovH,cAAc;IACvB,CAAC,CAAC,OAAOx3V,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC6yO,UAAU,CAAC;IAC/B;EACF;EACA,eAAe4kH,oCAAoCA,CAAC78K,SAAS,EAAE8iB,YAAY,EAAE;IAC3E,IAAIjhE,MAAM,GAAG,EAAE;IACf,IAAI9rG,GAAG,GAAGiqJ,SAAS,CAACj+C,UAAU;IAC9B,KAAK,IAAIxjI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGw3B,GAAG,EAAEx3B,CAAC,EAAE,EAAE;MAC5BsjI,MAAM,IAAIzoH,MAAM,CAAC4oH,YAAY,CAACg+C,SAAS,CAACzhL,CAAC,CAAC,CAAC;IAC7C;IACA,IAAI0jI,QAAQ,GAAGp9H,MAAM,CAACoe,IAAI,CAAC4+G,MAAM,CAAC;IAClC,IAAI;MACF,MAAMr+E,QAAQ,GAAG,CACf,MAAMu0L,cAAc,CAAC8kH,oCAAoC,CAAC;QACxD55T,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtBmuM,MAAM,EAAEj5G,QAAQ;QAChB2iD,MAAM,EAAEke;MACV,CAAC,CAAC,EACFg6J,0CAA0C;IAC9C,CAAC,CAAC,OAAO13V,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC6yO,UAAU,CAAC;IAC/B;EACF;EACA,eAAe8kH,8BAA8BA,CAACruH,cAAc,EAAEsuH,uBAAuB,EAAE;IACrF,IAAI;MACF,MAAMC,UAAU,GAAG,CACjB,MAAMllH,cAAc,CAACglH,8BAA8B,CAAC;QAClD95T,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB2hM,cAAc;QACdsuH;MACF,CAAC,CAAC,EACFE,oCAAoC;MAEtC,OAAOD,UAAU;MACjB;IACF,CAAC,CAAC,OAAO73V,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC6yO,UAAU,CAAC;IAC/B;EACF;EACA,eAAeklH,cAAcA,CAACv4K,MAAM,EAAEu1K,aAAa,EAAEiD,YAAY,EAAE;IACjE,IAAI;MACF,MAAMxgT,OAAO,GAAG,CACd,MAAMm7L,cAAc,CAACslH,8BAA8B,CAAC;QAClDp6T,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;QACtB2hM,cAAc,EAAE9pD,MAAM;QACtBo4K,uBAAuB,EAAE7C,aAAa;QACtCiD;MACF,CAAC,CAAC,EACFE,oCAAoC;MACtC,OAAO1gT,OAAO;IAChB,CAAC,CAAC,OAAOx3C,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC6yO,UAAU,CAAC;IAC/B;EACF;EAEA,OAAO;IACLpJ,iBAAiB;IACjBgrH,uBAAuB;IACvBE,mBAAmB;IACnBkC,4BAA4B;IAC5BE,uBAAuB;IACvBG,yBAAyB;IACzB/qG,cAAc;IACd/Z,6BAA6B;IAC7BulH,8BAA8B;IAC9B;IACAI,cAAc;IACdvlH,yBAAyB;IACzB;IACA4hH,4BAA4B;IAC5BC,yBAAyB;IACzBF;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACjdJ,MAAMxhH,cAAc,GAAI,YAAY;EAClC,SAASgkH,qBAAqBA,CAACzqP,YAAY,EAAE;IAC3C;IACA,OAAO7sG,CAAC,CAAC2+C,IAAI,CAAC;MACZhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,yBAAyB;MAC3BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;MAClCjuD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EACA,SAASg5S,uBAAuBA,CAACjrP,YAAY,EAAE;IAC7C;IACA,OAAO7sG,CAAC,CAAC2+C,IAAI,CAAC;MACZhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;MAC7BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;MAClCjuD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EAEA,eAAeg6S,iBAAiBA,CAACjsP,YAAY,EAAE;IAC7C;IACA,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;MACxBhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,qBAAqB;MACvBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;MAClCjuD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF,OAAOnqD,IAAI,CAACokW,uBAAuB;EACrC;EAEA,eAAe5lH,yBAAyBA,CAACtmI,YAAY,EAAE;IACrD;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6BAA6B;QAC/BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,OAAOnqD,IAAI,CAACqkW,+BAA+B;IAC7C,CAAC,CAAC,OAAOr4V,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;MAClB,OAAOA,KAAK,CAACpO,IAAI;IACnB;EACF;EAEA,eAAeghP,6BAA6BA,CAAC1mI,YAAY,EAAE;IACzD;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,iCAAiC;QACnCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,OAAOnqD,IAAI,CAACskW,mCAAmC;IACjD,CAAC,CAAC,OAAOt4V,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB;EACF;EAEA,eAAew4O,+BAA+BA,CAAA,EAAG;IAC/C,IAAI;MACF,MAAMxkP,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,mCAAmC;QACrCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAAC;UAAEmiB,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC;QAAM,CAAC,CAAC;QAChDsW,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,OAAOnqD,IAAI,CAACukW,qCAAqC;IACnD,CAAC,CAAC,OAAOv4V,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB;EACF;EAEA,eAAe82O,mBAAmBA,CAAC5qI,YAAY,EAAE;IAC/C;IACA;IACA;IACA,IAAI;MACF,MAAMl4G,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;QACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,OAAOnqD,IAAI,CAACwkW,yBAAyB;IACvC,CAAC,CAAC,OAAOx4V,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB;EACF;EAEA,SAASu3V,sCAAsCA,CAACrrP,YAAY,EAAEp5G,QAAQ,EAAE;IACtE,IAAIqM,MAAM,GAAG,GAAGE,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,MAAMh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,IAAIj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,IAAIl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,kCAAkC;IAC9I,IAAIygF,eAAe,GAAG,SAAAA,CAAU7b,IAAI,EAAE;MACpC,IAAI7pE,GAAG,GAAG97B,IAAI,CAACC,SAAS,CAAC0iC,QAAQ,CAAC;MAClCtrD,QAAQ,CAAC,CAAC;IACZ,CAAC;IAED,IAAI0Y,IAAI,GAAGva,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;IACzCga,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAEiN,MAAM,CAAC;IACnCqM,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IACnCsZ,IAAI,CAACtZ,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrCsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;IACpCsZ,IAAI,CAACtZ,YAAY,CAAC,SAAS,EAAE+qI,eAAe,CAAC,CAAC,CAAC;IAC/C,IAAI/E,UAAU,GAAGjnI,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAChD0mI,UAAU,CAAChmI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IACxCgmI,UAAU,CAAChmI,YAAY,CAAC,OAAO,EAAEmN,CAAC,CAACC,OAAO,CAACqoC,KAAK,CAAC;IACjDuwF,UAAU,CAACzmI,EAAE,GAAG,OAAO;IACvB,IAAIy9M,WAAW,GAAGj+M,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACjD09M,WAAW,CAACh9M,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1Cg9M,WAAW,CAACh9M,YAAY,CAAC,OAAO,EAAEg6G,YAAY,CAAC3uD,MAAM,CAAC;IACtD2xJ,WAAW,CAACz9M,EAAE,GAAG,QAAQ;IACzB,IAAIgnW,iBAAiB,GAAGxnW,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACvDinW,iBAAiB,CAACvmW,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC;IACtDumW,iBAAiB,CAACvmW,YAAY,CAAC,OAAO,EAAEg6G,YAAY,CAACwxF,YAAY,CAAC;IAClE+6J,iBAAiB,CAAChnW,EAAE,GAAG,cAAc;IACrC,IAAIinW,cAAc,GAAGznW,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACpDknW,cAAc,CAACxmW,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC;IAChDwmW,cAAc,CAACxmW,YAAY,CAAC,OAAO,EAAEg6G,YAAY,CAAC8yF,SAAS,CAAC;IAC5D05J,cAAc,CAACjnW,EAAE,GAAG,WAAW;IAC/B,IAAIknW,eAAe,GAAG1nW,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACrDmnW,eAAe,CAACzmW,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC;IAClDymW,eAAe,CAACzmW,YAAY,CAAC,OAAO,EAAEg6G,YAAY,CAAC+yF,UAAU,CAAC;IAC9D,IAAI25J,WAAW,GAAG3nW,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACjDonW,WAAW,CAAC1mW,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1C0mW,WAAW,CAAC1mW,YAAY,CAAC,OAAO,EAAEg6G,YAAY,CAACirI,MAAM,CAAC;IACtD,IAAI0hH,QAAQ,GAAG5nW,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC9CqnW,QAAQ,CAAC3mW,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;IACpC2mW,QAAQ,CAAC3mW,YAAY,CAAC,OAAO,EAAEg6G,YAAY,CAACgzF,GAAG,CAAC;IAChD25J,QAAQ,CAACpnW,EAAE,GAAG,KAAK;IACnB,IAAIqnW,YAAY,GAAG7nW,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAClDsnW,YAAY,CAAC5mW,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;IAC5C4mW,YAAY,CAAC5mW,YAAY,CAAC,OAAO,EAAEg6G,YAAY,CAAC1mD,OAAO,CAAC;IACxDszS,YAAY,CAACrnW,EAAE,GAAG,SAAS;IAC3B,IAAIsnW,kBAAkB,GAAG9nW,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IACxDunW,kBAAkB,CAAC7mW,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC;IACxD6mW,kBAAkB,CAAC7mW,YAAY,CAAC,OAAO,EAAEg6G,YAAY,CAACkrI,aAAa,CAAC;IACpE2hH,kBAAkB,CAACtnW,EAAE,GAAG,eAAe;IACvC,IAAIunW,YAAY,GAAG/nW,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAClDwnW,YAAY,CAAC9mW,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;IAC5C8mW,YAAY,CAAC9mW,YAAY,CAAC,OAAO,EAAEg6G,YAAY,CAACk8H,OAAO,CAAC;IACxD4wH,YAAY,CAACvnW,EAAE,GAAG,SAAS;IAC3B,IAAIwnW,sBAAsB,GAAGhoW,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC5DynW,sBAAsB,CAAC/mW,YAAY,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAChE+mW,sBAAsB,CAAC/mW,YAAY,CAAC,OAAO,EAAEg6G,YAAY,CAAC+lI,iBAAiB,CAAC;IAC5EgnH,sBAAsB,CAACxnW,EAAE,GAAG,mBAAmB;IAC/C,IAAIynW,oBAAoB,GAAGjoW,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC1D0nW,oBAAoB,CAAChnW,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAC5DgnW,oBAAoB,CAAChnW,YAAY,CAAC,OAAO,EAAEg6G,YAAY,CAACgmI,eAAe,CAAC;IACxEgnH,oBAAoB,CAACznW,EAAE,GAAG,iBAAiB;IAC3C,IAAI0nW,qBAAqB,GAAGloW,QAAQ,CAACO,aAAa,CAAC,OAAO,CAAC;IAC3D2nW,qBAAqB,CAACjnW,YAAY,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAC9DinW,qBAAqB,CAACjnW,YAAY,CAAC,OAAO,EAAEg6G,YAAY,CAACimI,gBAAgB,CAAC;IAC1EgnH,qBAAqB,CAAC1nW,EAAE,GAAG,kBAAkB;IAE7C+Z,IAAI,CAAC9c,WAAW,CAACwpI,UAAU,CAAC;IAC5B1sH,IAAI,CAAC9c,WAAW,CAACwgN,WAAW,CAAC;IAC7B1jM,IAAI,CAAC9c,WAAW,CAAC+pW,iBAAiB,CAAC;IACnCjtV,IAAI,CAAC9c,WAAW,CAACgqW,cAAc,CAAC;IAChCltV,IAAI,CAAC9c,WAAW,CAACiqW,eAAe,CAAC;IACjCntV,IAAI,CAAC9c,WAAW,CAACkqW,WAAW,CAAC;IAC7BptV,IAAI,CAAC9c,WAAW,CAACmqW,QAAQ,CAAC;IAC1BrtV,IAAI,CAAC9c,WAAW,CAACoqW,YAAY,CAAC;IAC9BttV,IAAI,CAAC9c,WAAW,CAACqqW,kBAAkB,CAAC;IACpCvtV,IAAI,CAAC9c,WAAW,CAACsqW,YAAY,CAAC;IAC9BxtV,IAAI,CAAC9c,WAAW,CAACuqW,sBAAsB,CAAC;IACxCztV,IAAI,CAAC9c,WAAW,CAACwqW,oBAAoB,CAAC;IACtC1tV,IAAI,CAAC9c,WAAW,CAACyqW,qBAAqB,CAAC;IAEvC3tV,IAAI,CAACzZ,KAAK,CAACsH,QAAQ,GAAG,UAAU;IAChCmS,IAAI,CAACzZ,KAAK,CAAC+nF,OAAO,GAAG,GAAG;IACxB7oF,QAAQ,CAACoQ,IAAI,CAAC3S,WAAW,CAAC8c,IAAI,CAAC;IAE/BA,IAAI,CAAC4sH,MAAM,CAAC,CAAC;EACf;EACA,SAASoiI,wBAAwBA,CAACtuJ,YAAY,EAAE;IAC9C;IACA,OAAO7sG,CAAC,CAAC2+C,IAAI,CAAC;MACZhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAC9BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;MAClCjuD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EACA,SAAS64S,mBAAmBA,CAAC9qP,YAAY,EAAE;IACzC;IACA,OAAO7sG,CAAC,CAAC2+C,IAAI,CAAC;MACZhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,uBAAuB;MACzBxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;MAClCjuD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EAEA,SAASi7S,+BAA+BA,CAACltP,YAAY,EAAEp5G,QAAQ,EAAE;IAC/D;IACA,OAAOuM,CAAC,CAAC2+C,IAAI,CAAC;MACZhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;MAC7BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;MAClCjuD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EAEA,eAAek7S,8BAA8BA,CAACC,YAAY,EAAE;IAC1D,MAAMptP,YAAY,GAAG;MACnBruE,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB4xT,OAAO,EAAE,CAACD,YAAY;IACxB,CAAC;IAED,IAAI;MACF,MAAMtlW,IAAI,GAAG,MAAMqL,CAAC,CAAC2+C,IAAI,CAAC;QACxBhsD,IAAI,EAAE,MAAM;QACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,2BAA2B;QAC7BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;QAClCjuD,WAAW,EAAE,iCAAiC;QAC9CE,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,OAAOnqD,IAAI,CAACwlW,6BAA6B;IAC3C,CAAC,CAAC,OAAOx5V,KAAK,EAAE;MACdhE,OAAO,CAACu6B,GAAG,CAACv2B,KAAK,CAAC;IACpB;EACF;EAEA,SAAS23V,8BAA8BA,CAACzrP,YAAY,EAAE;IACpD;IACA,OAAO7sG,CAAC,CAAC2+C,IAAI,CAAC;MACZhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kCAAkC;MACpCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;MAClCjuD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EAEA,SAAS85S,8BAA8BA,CAAC/rP,YAAY,EAAE;IACpD;IACA,OAAO7sG,CAAC,CAAC2+C,IAAI,CAAC;MACZhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kCAAkC;MACpCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;MAClCjuD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;;EAEA;EACA,SAAS+4S,yBAAyBA,CAAChrP,YAAY,EAAE;IAC/C,OAAO7sG,CAAC,CAAC2+C,IAAI,CAAC;MACZhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,6BAA6B;MAC/BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;MAClCjuD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EAEA,SAASs5S,oCAAoCA,CAACvrP,YAAY,EAAE;IAC1D;IACA,OAAO7sG,CAAC,CAAC2+C,IAAI,CAAC;MACZhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,wCAAwC;MAC1CxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;MAClCjuD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EAEA,SAASs7S,wBAAwBA,CAACvtP,YAAY,EAAE;IAC9C;IACA,OAAO7sG,CAAC,CAAC2+C,IAAI,CAAC;MACZhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,4BAA4B;MAC9BxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;MAClCjuD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EAEA,SAASu7S,8BAA8BA,CAACxtP,YAAY,EAAE;IACpD;IACA;IACA,OAAO7sG,CAAC,CAAC2+C,IAAI,CAAC;MACZhsD,IAAI,EAAE,MAAM;MACZoN,GAAG,EACDC,CAAC,CAACg9C,SAAS,CAAChhB,QAAQ,GACpB,KAAK,GACLh8B,CAAC,CAACg9C,SAAS,CAACC,OAAO,GACnB,GAAG,GACHj9C,CAAC,CAACg9C,SAAS,CAACE,IAAI,GAChB,GAAG,GACHl9C,CAAC,CAACg9C,SAAS,CAACG,WAAW,GACvB,kCAAkC;MACpCxoD,IAAI,EAAEynB,IAAI,CAACC,SAAS,CAACwwF,YAAY,CAAC;MAClCjuD,WAAW,EAAE,iCAAiC;MAC9CE,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EAEA,OAAO;IACLw4S,qBAAqB;IACrBQ,uBAAuB;IACvB38F,wBAAwB;IACxBw8F,mBAAmB;IACnBoC,+BAA+B;IAC/BC,8BAA8B;IAC9B1B,8BAA8B;IAC9BM,8BAA8B;IAC9Bz/G,+BAA+B;IAC/B0+G,yBAAyB;IACzBpgH,mBAAmB;IACnB2gH,oCAAoC;IACpCgC,wBAAwB;IACxBC,8BAA8B;IAC9BnC,sCAAsC;IACtC3kH,6BAA6B;IAC7BJ,yBAAyB;IACzB2lH;EACF,CAAC;AACH,CAAC,CAAE,CAAC;ACjdJ,MAAMr2M,YAAY,GAAG,CAAC,MAAM;EAC1B,IAAI63M,qBAAqB,GAAG,EAAE;EAC9B,SAASvrH,YAAYA,CAAC9mI,QAAQ,EAAE;IAC9B,OAAOA,QAAQ,KAAK,UAAU,IAAIA,QAAQ,KAAK,GAAG,GAC9CkhI,eAAe,CAACC,sBAAsB,GACtCD,eAAe,CAACE,oBAAoB;EAC1C;EACA,eAAe4F,eAAeA,CAAC/F,SAAS,EAAE/oD,MAAM,EAAE;IAChD,MAAM6uD,OAAO,GAAG,MAAMvnD,kBAAkB,CAACi2E,qBAAqB,CAAC;MAC7Dl/N,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;MACtB4gM,SAAS;MACTmG,WAAW,EAAElvD,MAAM,GAAGA,MAAM,GAAG,CAAC;MAChCw9E,OAAO,EAAE;IACX,CAAC,CAAC;IAEF48F,gBAAgB,GAAGvrH,OAAO;IAE1B,OAAOA,OAAO;EAChB;;EAEA;EACA,SAASE,iBAAiBA,CAACF,OAAO,EAAE;IAClC,MAAM4uB,YAAY,GAAGhsQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAClDyrQ,YAAY,CAACnvQ,SAAS,CAACE,GAAG,CAAC,cAAc,CAAC;IAE1CqgP,OAAO,CAAC7/O,OAAO,CAACutC,GAAG,IAAI;MACrB;MACA;MACA;MACA;MACA,MAAMmhO,OAAO,GAAGjsQ,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC7C0rQ,OAAO,CAACpvQ,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;MACzCkvQ,OAAO,CAAChrQ,YAAY,CAAC,kBAAkB,EAAE6pC,GAAG,CAACyyM,kBAAkB,CAAC;MAChE0uB,OAAO,CAAC9uQ,SAAS,GAAG,OAAO2tC,GAAG,CAACsqJ,YAAY,YAAYtqJ,GAAG,CAACyvE,WAAW,MAAM;MAC5EyxJ,YAAY,CAACvuQ,WAAW,CAACwuQ,OAAO,CAAC;IACnC,CAAC,CAAC;IAEF,OAAOD,YAAY;EACrB;;EAEA;EACA,SAASpgB,qBAAqBA,CAACg9G,YAAY,EAAE;IAC3CF,qBAAqB,GAAG,EAAE;IAE1B,MAAMG,gBAAgB,GAAG7oW,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACtDsoW,gBAAgB,CAAChsW,SAAS,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAElD,KAAK,IAAImL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0gW,YAAY,CAACtrW,MAAM,EAAE4K,CAAC,EAAE,EAAE;MAC5C;MACA,IAAIA,CAAC,KAAK,CAAC,EAAE;QACX,MAAM4gW,UAAU,GAAG9oW,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAChDuoW,UAAU,CAACjsW,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;QAC9C+rW,UAAU,CAAC3rW,SAAS,GAAG,OAAOyrW,YAAY,CAAC1gW,CAAC,CAAC,CAAC6gW,MAAM,OAAO;QAC3DF,gBAAgB,CAACprW,WAAW,CAACqrW,UAAU,CAAC;MAC1C,CAAC,MAAM,IAAIF,YAAY,CAAC1gW,CAAC,CAAC,CAAC6gW,MAAM,KAAKH,YAAY,CAAC1gW,CAAC,GAAG,CAAC,CAAC,CAAC6gW,MAAM,EAAE;QAChE,MAAMD,UAAU,GAAG9oW,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;QAChDuoW,UAAU,CAACjsW,SAAS,CAACE,GAAG,CAAC,oBAAoB,CAAC;QAC9C+rW,UAAU,CAAC3rW,SAAS,GAAG,OAAOyrW,YAAY,CAAC1gW,CAAC,CAAC,CAAC6gW,MAAM,OAAO;QAC3DF,gBAAgB,CAACprW,WAAW,CAACqrW,UAAU,CAAC;MAC1C;MACA,MAAME,QAAQ,GAAGhpW,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC9CyoW,QAAQ,CAACnsW,SAAS,CAACE,GAAG,CAAC,sBAAsB,CAAC;MAC9CisW,QAAQ,CAAC/nW,YAAY,CAAC,oBAAoB,EAAE2nW,YAAY,CAAC1gW,CAAC,CAAC,CAAC+3H,YAAY,CAAC;MACzE+oO,QAAQ,CAAC/nW,YAAY,CAAC,kBAAkB,EAAE2nW,YAAY,CAAC1gW,CAAC,CAAC,CAAC8jP,UAAU,CAAC;MACrEg9G,QAAQ,CAAC/nW,YAAY,CAAC,oBAAoB,EAAE2nW,YAAY,CAAC1gW,CAAC,CAAC,CAAC+gW,YAAY,CAAC;MACzED,QAAQ,CAAC/nW,YAAY,CAAC,kBAAkB,EAAE2nW,YAAY,CAAC1gW,CAAC,CAAC,CAACqyG,WAAW,CAAC;MACtEyuP,QAAQ,CAAC7rW,SAAS,GAAG,kBAAkByrW,YAAY,CAAC1gW,CAAC,CAAC,CAACqyG,WAAW,EAAE;MACpEsuP,gBAAgB,CAACprW,WAAW,CAACurW,QAAQ,CAAC;MAEtCA,QAAQ,CAAC7oW,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QACtC;QACA,MAAMw1I,YAAY,GAAGx1I,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAACoiI,YAAY;QAClD,MAAMipO,UAAU,GAAG3mW,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAACmuP,UAAU;QAC9C,MAAMm9G,YAAY,GAAG5mW,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAAC8uP,YAAY;QAClD,MAAMpyI,WAAW,GAAGh4G,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAAC08G,WAAW;QAEhD,IAAI,CAACh4G,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC5CpI,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UAClC2rW,qBAAqB,CAACt9V,IAAI,CAAC;YACzB60H,YAAY,EAAE8X,YAAY;YAC1Bi0G,UAAU,EAAEk9G,UAAU;YACtBp8G,YAAY,EAAEq8G,YAAY;YAC1B5uP,WAAW,EAAEA;UACf,CAAC,CAAC;QACJ,CAAC,MAAM;UACLh4G,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UACrC4rW,qBAAqB,GAAGA,qBAAqB,CAACl9V,MAAM,CAACyxO,EAAE,IAAIA,EAAE,CAACh9G,YAAY,KAAK8X,YAAY,CAAC;QAC9F;MACF,CAAC,CAAC;IACJ;IACA;;IAEA,IAAIv0H,IAAI,GAAGklV,qBAAqB;IAChC,OAAOG,gBAAgB;EACzB;EAEA,SAASn9G,wBAAwBA,CAAA,EAAG;IAClC,OAAOg9G,qBAAqB;EAC9B;EAEA,SAAS78G,qBAAqBA,CAACzO,OAAO,EAAEv7O,QAAQ,EAAE;IAChD,IAAI20O,iBAAiB,GAAG,EAAE;IAE1B,MAAMyU,QAAQ,GAAGl7O,KAAK,CAAC1P,KAAK,CAAC;MAC3BgB,UAAU,EAAE,CAAC,mBAAmB;IAClC,CAAC,CAAC;IAEF,MAAM23E,KAAK,GAAGh5E,QAAQ,CAACO,aAAa,CAAC,IAAI,CAAC;IAC1Cy4E,KAAK,CAAC77E,SAAS,GAAG,+BAA+B;IACjD8tP,QAAQ,CAACxtP,WAAW,CAACu7E,KAAK,CAAC;IAE3B,IAAIokK,OAAO,IAAIA,OAAO,CAAC9/O,MAAM,GAAG,CAAC,EAAE;MACjC,MAAMwjN,IAAI,GAAGw8B,iBAAiB,CAACF,OAAO,CAAC;MACvC6N,QAAQ,CAACxtP,WAAW,CAACqjN,IAAI,CAAC;IAC5B;IAEA,MAAMnvB,OAAO,GAAGvxL,MAAM,CAACC,KAAK,CAAC;MAC3BG,EAAE,EAAE,qBAAqB;MACzBG,IAAI,EAAE,UAAU;MAChBI,IAAI,EAAE,WAAW;MACjBD,KAAK,EAAE,WAAW;MAClB;MACAO,UAAU,EAAE,iBAAiB;MAC7BQ,QAAQ,EAAEA,CAAA,KAAOA,QAAQ,GAAGA,QAAQ,CAAC20O,iBAAiB,CAAC,GAAG;IAC5D,CAAC,CAAC;IACFyU,QAAQ,CAACxtP,WAAW,CAACk0L,OAAO,CAAC;IAE7Bs5D,QAAQ,CAAC9qP,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;MACtC,IAAIA,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QACnD,MAAMqyO,UAAU,GAAGz6O,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAAC2zL,UAAU;QAE9C,IAAI,CAACjvL,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC5CpI,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;UAClCy5O,iBAAiB,CAACprO,IAAI,CAAC4xO,UAAU,CAAC;QACpC,CAAC,MAAM;UACLz6O,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;UACrC05O,iBAAiB,GAAGA,iBAAiB,CAAChrO,MAAM,CAACyxO,EAAE,IAAIA,EAAE,KAAKD,UAAU,CAAC;QACvE;MACF;IACF,CAAC,CAAC;IACFvqO,aAAa,CAACT,OAAO,CAAChV,IAAI,CAAC,uBAAuB,CAAC;IACnD+S,KAAK,CAAC9S,IAAI,CAACguP,QAAQ,CAAC;EACtB;EAEA,eAAe3B,gBAAgBA,CAAA,EAAG;IAChC;IACA72O,aAAa,CAACT,OAAO,CAAC/U,IAAI,CAAC,yBAAyB,CAAC;IACrD,MAAMq6O,SAAS,GAAG6F,YAAY,CAACh+O,IAAI,CAACo6O,kBAAkB,CAAC,CAAC,CAAC;IACzD,IAAI/C,iBAAiB,GAAG,EAAE;IAC1B,MAAMjoD,MAAM,GAAGpvL,IAAI,CAACm6O,gBAAgB,CAAC,CAAC;IAEtC,MAAMzpO,KAAK,GAAGE,KAAK,CAAC1P,KAAK,CAAC;MACxB2P,MAAM,EAAE,+BAA+B;MACvCxP,EAAE,EAAE;IACN,CAAC,CAAC;IAEF,MAAM48O,OAAO,GAAG,MAAMC,eAAe,CAAC/F,SAAS,EAAE/oD,MAAM,CAAC;IACxD,IAAI6uD,OAAO,IAAIA,OAAO,CAAC9/O,MAAM,GAAG,CAAC,EAAE;MACjC,MAAMwjN,IAAI,GAAGw8B,iBAAiB,CAACF,OAAO,CAAC;MACvCvtO,KAAK,CAACpS,WAAW,CAACqjN,IAAI,CAAC;MAEvBA,IAAI,CAAC3gN,gBAAgB,CAAC,OAAO,EAAEoC,CAAC,IAAI;QAClC,IAAIA,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,kBAAkB,CAAC,EAAE;UACnD,MAAMqyO,UAAU,GAAGz6O,CAAC,CAAC3E,MAAM,CAACC,OAAO,CAAC2zL,UAAU;UAE9C,IAAI,CAACjvL,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAAC8N,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC5CpI,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;YAClCy5O,iBAAiB,CAACprO,IAAI,CAAC4xO,UAAU,CAAC;UACpC,CAAC,MAAM;YACLz6O,CAAC,CAAC3E,MAAM,CAACf,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC;YACrC05O,iBAAiB,GAAGA,iBAAiB,CAAChrO,MAAM,CAACyxO,EAAE,IAAIA,EAAE,KAAKD,UAAU,CAAC;UACvE;UAEAxG,iBAAiB,CAACl5O,MAAM,GAAG,CAAC,GAAGq0L,OAAO,CAAC90L,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC,GAAG60L,OAAO,CAAC90L,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACzG;MACF,CAAC,CAAC;IACJ;IAEA,MAAM40L,OAAO,GAAGvxL,MAAM,CAACC,KAAK,CAAC;MAC3BG,EAAE,EAAE,oBAAoB;MACxBG,IAAI,EAAE,MAAM;MACZG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBM,UAAU,EAAE,UAAU;MACtBQ,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB;QACA4Q,aAAa,CAACT,OAAO,CAAC/U,IAAI,CAAC00L,OAAO,CAAC;QACnCjjJ,SAAS,CAAC7xC,SAAS,CAACE,GAAG,CAAC,UAAU,CAAC;QACnC,MAAMmvP,WAAW,GAAG,EAAE;QACtB,MAAM39D,MAAM,GAAGpvL,IAAI,CAACm6O,gBAAgB,CAAC,CAAC;QACtC,IAAI9C,iBAAiB,IAAIA,iBAAiB,CAACl5O,MAAM,GAAG,CAAC,EAAE;UACrD,IAAI;YACF,KAAK4K,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsuO,iBAAiB,CAACl5O,MAAM,EAAE4K,CAAC,EAAE,EAAE;cAC7C,IAAIykP,YAAY,GAAGnW,iBAAiB,CAACtuO,CAAC,CAAC;cACvC8jP,UAAU,GAAG,MAAMn2D,kBAAkB,CAAC2nD,4BAA4B,CAAC;gBACjE5wM,KAAK,EAAEx+B,CAAC,CAACC,OAAO,CAACqoC,KAAK;gBACtB86I,UAAU,EAAEm7D,YAAY;gBACxBlP,WAAW,EAAElvD,MAAM;gBACnBniC,QAAQ,EAAEjtJ,IAAI,CAACk6O,mBAAmB,CAAC,CAAC,CAAC74O;cACvC,CAAC,CAAC;cACF0rP,WAAW,CAAC9gP,IAAI,CAAC4gP,UAAU,CAAC;YAC9B;YAEA,MAAM7C,cAAc,GAAG,MAAMhqP,IAAI,CAAC+pP,iBAAiB,CAAC,CAAC;YACrD,MAAMkgH,WAAW,GAAGppW,QAAQ,CAACiD,cAAc,CAAC,cAAc,CAAC;YAC3DmmW,WAAW,CAACjsW,SAAS,GAAG,EAAE;YAC1BisW,WAAW,CAAC3rW,WAAW,CAAC0rP,cAAc,CAAC;UACzC,CAAC,CAAC,OAAOp6O,KAAK,EAAE;YACdhE,OAAO,CAACgE,KAAK,CAAC,2BAA2B,CAAC;UAC5C;UACA0D,aAAa,CAACT,OAAO,CAAChV,IAAI,CAAC20L,OAAO,CAAC;UACnC5hL,KAAK,CAAC/S,IAAI,CAAC6S,KAAK,CAAC;UACjBe,cAAc,CAAC3T,IAAI,CAAC,iBAAiB,CAAC;UACtCirB,UAAU,CAAC,MAAM;YACftX,cAAc,CAAC5T,IAAI,CAAC,CAAC;UACvB,CAAC,EAAE,IAAI,CAAC;QACV;QACA;QACA,MAAM,IAAIsxD,OAAO,CAACjwC,CAAC,IAAI6J,UAAU,CAAC7J,CAAC,EAAE,IAAI,CAAC,CAAC;QAE3C,MAAMivO,sCAAsC,CAACpB,WAAW,CAAC;QACzD;MACF;IACF,CAAC,CAAC;IAEF,MAAMx9M,SAAS,GAAGtuC,MAAM,CAACC,KAAK,CAAC;MAC7BG,EAAE,EAAE,sBAAsB;MAC1BG,IAAI,EAAE,QAAQ;MACdG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,UAAU;MAChBc,QAAQ,EAAEA,CAAA,KAAMkO,KAAK,CAAC/S,IAAI,CAAC6S,KAAK;IAClC,CAAC,CAAC;IAEF,MAAM08B,OAAO,GAAGvsC,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAC7CgsC,OAAO,CAAC1vC,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAChCwvC,OAAO,CAAC9uC,WAAW,CAACk0L,OAAO,CAAC;IAC5BplJ,OAAO,CAAC9uC,WAAW,CAACixC,SAAS,CAAC;IAE9B7+B,KAAK,CAACpS,WAAW,CAAC8uC,OAAO,CAAC;IAE1B95B,aAAa,CAACT,OAAO,CAAChV,IAAI,CAAC,yBAAyB,CAAC;IACrDgD,QAAQ,CAACiD,cAAc,CAAC,yBAAyB,CAAC,CAACuB,SAAS,GAAG,iBAAiB;IAChFuL,KAAK,CAAC9S,IAAI,CAAC4S,KAAK,CAAC;EACnB;EAEA,eAAey9O,sCAAsCA,CAACpB,WAAW,EAAE;IACjE,IAAIA,WAAW,CAAC5uP,MAAM,IAAI,CAAC,EAAE,OAAO,KAAK;IAEzC,IAAI8tQ,cAAc,GAAGlf,WAAW,CAAChrO,QAAQ,CAAC,CAAC;IAC3C,MAAMmqP,uBAAuB,GAAGD,cAAc,CAAC7iN,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;IACnE;;IAEA,eAAe+iN,kCAAkCA,CAACC,iBAAiB,EAAE;MACnE,IAAIC,eAAe,GAAG,MAAM31E,kBAAkB,CAACy1E,kCAAkC,CAAC;QAChFpf,WAAW,EAAEqf,iBAAiB,CAACrqP,QAAQ,CAAC;MAC1C,CAAC,CAAC;MAEF,OAAOsqP,eAAe;IACxB;IAEA,IAAIA,eAAe,GAAG,MAAMF,kCAAkC,CAACD,uBAAuB,CAAC;IAEvF,MAAMI,aAAa,GAAG,EAAE;IACxB,IAAID,eAAe,CAACluQ,MAAM,GAAG,CAAC,EAAE;MAC9B,KAAK,IAAI4K,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsjQ,eAAe,CAACluQ,MAAM,EAAE4K,CAAC,EAAE,EAAE;QAC/CujQ,aAAa,CAACrgQ,IAAI,CAACogQ,eAAe,CAACtjQ,CAAC,CAAC,CAACpC,IAAI,CAAC;MAC7C;MACA,IAAI4lQ,gBAAgB,GAAGD,aAAa,CAAC1iP,IAAI,CAAC,IAAI,CAAC;MAC/C4iP,4BAA4B,CAACD,gBAAgB,CAAC;IAChD;EACF;EAEA,SAASC,4BAA4BA,CAACF,aAAa,EAAE;IACnD,IAAIpoB,UAAU,GAAGtzO,KAAK,CAAC1P,KAAK,CAAC;MAC3BG,EAAE,EAAE,gBAAgB;MACpBa,UAAU,EAAE;IACd,CAAC,CAAC;IACF,IAAIiiP,YAAY,GAAGtjP,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IAChD+iP,YAAY,CAACzmP,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IACrC,IAAIolP,UAAU,GAAG/hP,MAAM,CAACC,KAAK,CAAC;MAC5BM,IAAI,EAAE,IAAI;MACVG,KAAK,EAAE,WAAW;MAClBC,IAAI,EAAE,WAAW;MACjBN,IAAI,EAAE,WAAW;MACjBoB,QAAQ,EAAE,eAAAA,CAAA,EAAkB;QAC1BkO,KAAK,CAAC/S,IAAI,CAACqmP,UAAU,CAAC;MACxB;IACF,CAAC,CAAC;IAEFC,YAAY,CAAC7lP,WAAW,CAAC0kP,UAAU,CAAC;IACpC,IAAIoB,YAAY,GAAGvjP,QAAQ,CAACO,aAAa,CAAC,GAAG,CAAC;IAC9CgjP,YAAY,CAACpmP,SAAS,GACpB,gGAAgG,GAAGsuQ,aAAa;IAClHpoB,UAAU,CAAC5lP,WAAW,CAAC8lP,YAAY,CAAC;IACpCF,UAAU,CAAC5lP,WAAW,CAAC6lP,YAAY,CAAC;IACpCvzO,KAAK,CAAC9S,IAAI,CAAComP,UAAU,CAAC;EACxB;EAEA,OAAO;IACLlG,YAAY;IACZE,eAAe;IACfC,iBAAiB;IACjBsO,qBAAqB;IACrBC,qBAAqB;IACrBH,wBAAwB;IACxBpC,gBAAgB;IAChBgE;EACF,CAAC;AACH,CAAC,EAAE,CAAC;ACpTJ,MAAMn0O,cAAc,GAAI,YAAY;EAClC,IAAIo1K,MAAM;EACV,IAAI86K,kBAAkB,GAAG,CAAC;EAExB,IAAIhwV,yBAAyB,GAAG;IAC9B;IACAiwV,kBAAkB,EAAE,EAAE;IACtBC,mBAAmB,EAAE,CAAC,CAAC;IACvBC,0BAA0B,EAAE;MAC1B,EAAE,EAAE;QACFC,SAAS,EAAE,KAAK;QAChBh+K,WAAW,EAAE,KAAK;QAClBi+K,cAAc,EAAE,KAAK;QACrBC,UAAU,EAAE,KAAK;QACjBC,gBAAgB,EAAE,KAAK;QACvBC,oBAAoB,EAAE,KAAK;QAC3BC,gBAAgB,EAAE;MACpB,CAAC;MACD,EAAE,EAAE;QACFL,SAAS,EAAE,KAAK;QAChBh+K,WAAW,EAAE,KAAK;QAClBi+K,cAAc,EAAE,KAAK;QACrBC,UAAU,EAAE,KAAK;QACjBC,gBAAgB,EAAE,KAAK;QACvBC,oBAAoB,EAAE,KAAK;QAC3BC,gBAAgB,EAAE;MACpB,CAAC;MACD,EAAE,EAAE;QACFL,SAAS,EAAE,KAAK;QAChBh+K,WAAW,EAAE,KAAK;QAClBi+K,cAAc,EAAE,KAAK;QACrBC,UAAU,EAAE,KAAK;QACjBC,gBAAgB,EAAE,KAAK;QACvBC,oBAAoB,EAAE,KAAK;QAC3BC,gBAAgB,EAAE;MACpB,CAAC;MACD,EAAE,EAAE;QACFL,SAAS,EAAE,KAAK;QAChBh+K,WAAW,EAAE,KAAK;QAClBi+K,cAAc,EAAE,KAAK;QACrBC,UAAU,EAAE,KAAK;QACjBC,gBAAgB,EAAE,KAAK;QACvBC,oBAAoB,EAAE,KAAK;QAC3BC,gBAAgB,EAAE;MACpB,CAAC;MACD,EAAE,EAAE;QACFL,SAAS,EAAE,KAAK;QAChBh+K,WAAW,EAAE,KAAK;QAClBi+K,cAAc,EAAE,KAAK;QACrBC,UAAU,EAAE,KAAK;QACjBC,gBAAgB,EAAE,KAAK;QACvBC,oBAAoB,EAAE,KAAK;QAC3BC,gBAAgB,EAAE;MACpB,CAAC;MACD,EAAE,EAAE;QACFL,SAAS,EAAE,KAAK;QAChBh+K,WAAW,EAAE,KAAK;QAClBi+K,cAAc,EAAE,KAAK;QACrBC,UAAU,EAAE,KAAK;QACjBC,gBAAgB,EAAE,KAAK;QACvBC,oBAAoB,EAAE,KAAK;QAC3BC,gBAAgB,EAAE;MACpB,CAAC;MACD,EAAE,EAAE;QACFL,SAAS,EAAE,KAAK;QAChBh+K,WAAW,EAAE,KAAK;QAClBi+K,cAAc,EAAE,KAAK;QACrBC,UAAU,EAAE,KAAK;QACjBC,gBAAgB,EAAE,KAAK;QACvBC,oBAAoB,EAAE,KAAK;QAC3BC,gBAAgB,EAAE;MACpB;IACF,CAAC;IACDC,qBAAqB,EAAE,IAAI;IAC3B;IACAC,wBAAwB,EAAE,KAAK;IAC/BvwV,QAAQ,EAAE;EACZ,CAAC;EAED,IAAIwwV,kBAAkB,GAAG;IACvBxwV,QAAQ,EAAE,IAAI;IACdg3N,OAAO,EAAE,EAAE;IACXwxH,kBAAkB,EAAE,EAAE;IACtBC,cAAc,EAAE,EAAE;IAClBgI,mBAAmB,EAAE,KAAK;IAC1B5wJ,OAAO,EAAE,EAAE;IACX6wJ,iBAAiB,EAAE,EAAE;IACrBC,qBAAqB,EAAE,EAAE;IACzBC,gBAAgB,EAAE,EAAE;IACpB3wV,sBAAsB,EAAE,IAAI;IAC5BC,sBAAsB,EAAE;EAC1B,CAAC;EAED,IAAI2wV,kBAAkB,GAAG;IACvBhI,eAAe,EAAE,IAAI;IACrBC,eAAe,EAAE,IAAI;IACrBC,gBAAgB,EAAE;EACpB,CAAC;EAED,MAAM+H,8BAA8B,GAAG;IACrCC,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IACrEC,sBAAsB,EAAE,CACtB,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,CACN;IACDC,+BAA+B,EAAE,CAC/B,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,CACN;IACDC,2BAA2B,EAAE,CAC3B,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,CACN;IACDC,4BAA4B,EAAE;MAC5BC,yBAAyB,EAAE,CACzB,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,CACN;MACDC,qBAAqB,EAAE,CACrB,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,CACN;MACDC,oBAAoB,EAAE,CACpB,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK;IAET;EACF,CAAC;EAED,SAASjxH,SAASA,CAACC,SAAS,EAAE;IAC5BxrD,MAAM,GAAGwrD,SAAS;EACpB;;EAEA;EACA,SAASvgO,aAAaA,CAAC3I,OAAO,EAAEm6V,WAAW,EAAE;IAC3CA,WAAW,CAACnuW,SAAS,CAACE,GAAG,CAAC,SAAS,CAAC;IAEpC,MAAMkuW,WAAW,GAAGjrW,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;IACjD0qW,WAAW,CAACpuW,SAAS,CAACE,GAAG,CAAC,aAAa,CAAC;IACxCkuW,WAAW,CAAC9tW,SAAS,GAAG0T,OAAO;IAE/Bm6V,WAAW,CAAC7qW,gBAAgB,CAAC,WAAW,EAAExC,KAAK,IAAI;MACjD,MAAM4iB,CAAC,GAAG5iB,KAAK,CAAC6lG,OAAO;MACvB,MAAMtjF,CAAC,GAAGviB,KAAK,CAACqmC,OAAO;MAEvBinU,WAAW,CAACnqW,KAAK,CAAC6nB,IAAI,GAAG,GAAGpI,CAAC,IAAI;MACjC0qV,WAAW,CAACnqW,KAAK,CAACunB,GAAG,GAAG,GAAGnI,CAAC,IAAI;IAClC,CAAC,CAAC;IAEF8qV,WAAW,CAACvtW,WAAW,CAACwtW,WAAW,CAAC;EACtC;;EAEA;EACA,SAAS3xV,8BAA8BA,CAAA,EAAG;IACxC,OAAOD,yBAAyB;EAClC;EAEA,eAAe6xV,uBAAuBA,CAAC38K,MAAM,EAAE;IAC7C;IACAl1K,yBAAyB,GAAG;MAC1B;MACAiwV,kBAAkB,EAAE,EAAE;MACtBC,mBAAmB,EAAE,CAAC,CAAC;MACvBC,0BAA0B,EAAE;QAC1B,EAAE,EAAE;UACFC,SAAS,EAAE,KAAK;UAChBh+K,WAAW,EAAE,KAAK;UAClBi+K,cAAc,EAAE,KAAK;UACrBC,UAAU,EAAE,KAAK;UACjBC,gBAAgB,EAAE,KAAK;UACvBC,oBAAoB,EAAE,KAAK;UAC3BC,gBAAgB,EAAE;QACpB,CAAC;QACD,EAAE,EAAE;UACFL,SAAS,EAAE,KAAK;UAChBh+K,WAAW,EAAE,KAAK;UAClBi+K,cAAc,EAAE,KAAK;UACrBC,UAAU,EAAE,KAAK;UACjBC,gBAAgB,EAAE,KAAK;UACvBC,oBAAoB,EAAE,KAAK;UAC3BC,gBAAgB,EAAE;QACpB,CAAC;QACD,EAAE,EAAE;UACFL,SAAS,EAAE,KAAK;UAChBh+K,WAAW,EAAE,KAAK;UAClBi+K,cAAc,EAAE,KAAK;UACrBC,UAAU,EAAE,KAAK;UACjBC,gBAAgB,EAAE,KAAK;UACvBC,oBAAoB,EAAE,KAAK;UAC3BC,gBAAgB,EAAE;QACpB,CAAC;QACD,EAAE,EAAE;UACFL,SAAS,EAAE,KAAK;UAChBh+K,WAAW,EAAE,KAAK;UAClBi+K,cAAc,EAAE,KAAK;UACrBC,UAAU,EAAE,KAAK;UACjBC,gBAAgB,EAAE,KAAK;UACvBC,oBAAoB,EAAE,KAAK;UAC3BC,gBAAgB,EAAE;QACpB,CAAC;QACD,EAAE,EAAE;UACFL,SAAS,EAAE,KAAK;UAChBh+K,WAAW,EAAE,KAAK;UAClBi+K,cAAc,EAAE,KAAK;UACrBC,UAAU,EAAE,KAAK;UACjBC,gBAAgB,EAAE,KAAK;UACvBC,oBAAoB,EAAE,KAAK;UAC3BC,gBAAgB,EAAE;QACpB,CAAC;QACD,EAAE,EAAE;UACFL,SAAS,EAAE,KAAK;UAChBh+K,WAAW,EAAE,KAAK;UAClBi+K,cAAc,EAAE,KAAK;UACrBC,UAAU,EAAE,KAAK;UACjBC,gBAAgB,EAAE,KAAK;UACvBC,oBAAoB,EAAE,KAAK;UAC3BC,gBAAgB,EAAE;QACpB,CAAC;QACD,EAAE,EAAE;UACFL,SAAS,EAAE,KAAK;UAChBh+K,WAAW,EAAE,KAAK;UAClBi+K,cAAc,EAAE,KAAK;UACrBC,UAAU,EAAE,KAAK;UACjBC,gBAAgB,EAAE,KAAK;UACvBC,oBAAoB,EAAE,KAAK;UAC3BC,gBAAgB,EAAE;QACpB;MACF,CAAC;MACDC,qBAAqB,EAAE,IAAI;MAC3B;MACAC,wBAAwB,EAAE,KAAK;MAC/BvwV,QAAQ,EAAE;IACZ,CAAC;IACD;IACA0xV,uBAAuB,GAAG,MAAMC,kBAAkB,CAACC,2BAA2B,CAAC98K,MAAM,CAAC;;IAEtF;IACA;IACA;;IAEA;IACA;IACAl1K,yBAAyB,CAACiwV,kBAAkB,GAAG6B,uBAAuB,CAAC7B,kBAAkB;IACzF,IAAIS,qBAAqB,GAAG1wV,yBAAyB,CAACiwV,kBAAkB,CAACrmU,IAAI,CAC3E6H,GAAG,IAAIA,GAAG,CAACw4T,UAAU,KAAK,GAC5B,CAAC;;IAED;IACA,IAAIjqV,yBAAyB,CAACiwV,kBAAkB,CAAChsW,MAAM,KAAK,CAAC,EAAE;MAC7DysW,qBAAqB,GAAG,IAAI;IAC9B;;IAEA;IACA,IAAI,CAACA,qBAAqB,EAAE;MAC1B1wV,yBAAyB,CAAC0wV,qBAAqB,GAAG,KAAK;IACzD;;IAEA;IACA;IACA1wV,yBAAyB,CAACkwV,mBAAmB,CAAC+B,uBAAuB,GAAGC,gBAAgB,CAACJ,uBAAuB,CAACK,iBAAiB,CAAC;IACnInyV,yBAAyB,CAACkwV,mBAAmB,CAACkC,iBAAiB,GAAGF,gBAAgB,CAACJ,uBAAuB,CAAC1/K,WAAW,CAAC;IACvHpyK,yBAAyB,CAACkwV,mBAAmB,CAACmC,0BAA0B,GAAGH,gBAAgB,CAACJ,uBAAuB,CAACtB,oBAAoB,CAAC;IACzIxwV,yBAAyB,CAACkwV,mBAAmB,CAACoC,sBAAsB,GAAGJ,gBAAgB,CAACJ,uBAAuB,CAACS,kBAAkB,CAAC;;IAEnI;IACAC,0BAA0B,CAACxyV,yBAAyB,CAAC;IAErD,OAAOA,yBAAyB;EAClC;EAEA,SAASwyV,0BAA0BA,CAACxyV,yBAAyB,EAAE;IAC7D,IAAIA,yBAAyB,CAAC0wV,qBAAqB,KAAK,IAAI,IAAI1wV,yBAAyB,CAAC2wV,wBAAwB,KAAK,KAAK,EAAE;MAC1H3wV,yBAAyB,CAACI,QAAQ,GAAG,IAAI;IAC7C,CAAC,MAAM;MACHJ,yBAAyB,CAACI,QAAQ,GAAG,KAAK;IAC9C;IAEA,OAAOJ,yBAAyB;EAClC;;EAEA;EACA,SAASyyV,4BAA4BA,CAAA,EAAG;IACvC;IACA;IACC,MAAMC,WAAW,GAAG/rW,QAAQ,CAACiD,cAAc,CAAC,UAAU,CAAC;IACvD,MAAM+oW,iBAAiB,GAAGhsW,QAAQ,CAACiD,cAAc,CAAC,gBAAgB,CAAC;IACnE,MAAMsW,WAAW,GAAGvZ,QAAQ,CAACiD,cAAc,CAAC,oBAAoB,CAAC;;IAEjE;IACA;;IAEA;IACAgpW,kBAAkB,CAAC5yV,yBAAyB,CAAC;;IAE7C;IACA6yV,0CAA0C,CAAC7yV,yBAAyB,CAAC;IACrE8yV,uBAAuB,CAAC9yV,yBAAyB,CAAC;;IAElD;IACAwyV,0BAA0B,CAACxyV,yBAAyB,CAAC;;IAErD;IACA;IACA,IAAI,CAACA,yBAAyB,CAAC0wV,qBAAqB,EAAE;MACpD,IAAIgC,WAAW,EAAE;QACfA,WAAW,CAACjrW,KAAK,CAACoK,OAAO,GAAG,MAAM;MACpC;MACA,IAAI8gW,iBAAiB,EAAE;QACrBA,iBAAiB,CAAClrW,KAAK,CAACoK,OAAO,GAAG,MAAM;MAC1C;IACF,CAAC,MAAM;MACL,IAAI6gW,WAAW,EAAE;QACfA,WAAW,CAACjrW,KAAK,CAACoK,OAAO,GAAG,MAAM;MACpC;MACA,IAAI8gW,iBAAiB,EAAE;QACrBA,iBAAiB,CAAClrW,KAAK,CAACoK,OAAO,GAAG,MAAM;MAC1C;IACF;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA,IAAImO,yBAAyB,CAACI,QAAQ,KAAK,KAAK,EAAE;MAChD,IAAIF,WAAW,EAAE;QACfA,WAAW,CAACzY,KAAK,CAACoK,OAAO,GAAG,MAAM;MACpC;IACF,CAAC,MAAM;MACL,IAAIqO,WAAW,EAAE;QACfA,WAAW,CAACzY,KAAK,CAACoK,OAAO,GAAG,MAAM;MACpC;IACF;IAEA,OAAOmO,yBAAyB;EAClC;;EAEA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;;EAEE,SAAS+yV,6BAA6BA,CAAA,EAAG;IACvC,OAAO/C,kBAAkB;EAC3B;EAEF,eAAegD,0BAA0BA,CAAC99K,MAAM,EAAE;IAChD,MAAM+9K,KAAK,GAAG,MAAMpB,uBAAuB,CAAC38K,MAAM,CAAC;;IAEnD;;IAEA;IACAp1K,cAAc,CAAC2yV,4BAA4B,CAAC,CAAC;IAC7C;EACF;;EAEA;EACA,SAASG,kBAAkBA,CAAC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","file":"bundle.js","sourcesContent":["var ACTION_NAV = (function () {\r\n var nav;\r\n // Private\r\n function setColumns(count) {\r\n switch (count) {\r\n case 1: {\r\n nav.classList.remove('twoCol');\r\n nav.classList.remove('threeCol');\r\n break;\r\n }\r\n case 2: {\r\n nav.classList.add('twoCol');\r\n nav.classList.remove('oneCol');\r\n nav.classList.remove('threeCol');\r\n break;\r\n }\r\n case 3: {\r\n nav.classList.add('threeCol');\r\n nav.classList.remove('oneCol');\r\n nav.classList.remove('twoCol');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Public\r\n function hide() {\r\n nav.classList.remove('visible');\r\n }\r\n function show() {\r\n nav.classList.add('visible');\r\n }\r\n function clear() {\r\n nav.innerHTML = '';\r\n }\r\n function populate(elements) {\r\n clear();\r\n setColumns(elements.length);\r\n\r\n elements.forEach(ele => {\r\n nav.appendChild(ele);\r\n });\r\n\r\n show();\r\n }\r\n\r\n // Action Nav Brains\r\n async function handleNavEvents(event) {\r\n var target = event.target;\r\n\r\n if (!target.dataset.actionNav) return;\r\n\r\n var activeModule = actioncenter.dataset.activeModule;\r\n var activeSection = actioncenter.dataset.activeSection;\r\n\r\n switch (activeModule) {\r\n case 'home': {\r\n break;\r\n }\r\n case 'casenotes': {\r\n if (activeSection === 'caseNotes-new') {\r\n newNote.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'caseNotesSSA-new') {\r\n newNoteSSA.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'caseNotes-review') {\r\n reviewNote.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'dayservices': {\r\n if (activeSection === 'dayServices') {\r\n dayServices.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'outcomes': {\r\n if (activeSection === 'outcomes-review') {\r\n outcomesReview.handleActionNavEvent(target);\r\n } else {\r\n outcomes.handleActionNavEvent(target);\r\n }\r\n \r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'incidenttracking': {\r\n if (activeSection === 'incidentTracking-new') {\r\n newIncident.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'roster': {\r\n if (activeSection === 'roster-absent') {\r\n rosterAbsent.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n else if (activeSection === 'roster-GroupIndividuals') {\r\n rosterGroupIndividuals.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n } else {\r\n roster.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'schedule': {\r\n break;\r\n }\r\n case 'timeEntry': {\r\n if (activeSection === 'timeEntry-new') {\r\n timeEntryCard.handleActionNavEvent(target, true);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'timeEntry-edit') {\r\n timeEntryCard.handleActionNavEvent(target, false);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'timeEntry-review') {\r\n timeEntryReview.handleActionNavEvent(target);\r\n }\r\n if (activeSection === 'timeEntry-approval') {\r\n timeApproval.handleActionNavEvent(target);\r\n }\r\n break;\r\n }\r\n case 'workshop': {\r\n if (activeSection === 'workshop') {\r\n workshop.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'authorizations': {\r\n if (activeSection === 'assessmentHistory') {\r\n await assessmentHistory.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'authorizations') {\r\n await authorizations.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'plan': {\r\n await plan.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'covid': {\r\n covidChecklist.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'transportation': {\r\n if (activeSection === 'routeDocumentation') {\r\n TRANS_routeDocumentation.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'editRoute') {\r\n TRANS_manageEditRoute.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'addroute') {\r\n TRANS_addRoute.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'forms': {\r\n forms.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'OOD': {\r\n OOD.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'resetPassword': {\r\n resetPassword.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'ConsumerFinances': {\r\n ConsumerFinances.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n } \r\n case 'CFEditAccount': {\r\n CFEditAccount.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'Employment': {\r\n Employment.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'FSS': {\r\n FSS.handleActionNavEvent(target); \r\n clear();\r\n hide();\r\n break;\r\n }\r\n }\r\n\r\n var miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn && activeSection !== 'caseNotes-new') {\r\n miniRosterBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function init() {\r\n nav = document.querySelector('.action__nav');\r\n\r\n nav.addEventListener('click', handleNavEvents);\r\n }\r\n\r\n return {\r\n clear,\r\n hide,\r\n show,\r\n populate,\r\n init,\r\n };\r\n})();\r\n","var button = (function() {\r\n /**\r\n * See {@link https://git.primarysolutions.net/anywhere/anywhere-4/-/wikis/Anywhere/Elements/Buttons GitLab Wiki}\r\n * for button examples\r\n * @function build\r\n * @param {object} options \r\n * @param {string} [options.id] - sets button elemnet id\r\n * @param {(string|string[])} [options.classNames] - Single string or array of strings that set the class names for the button element.\r\n * @param {object[]} [options.attributes] - sets key value pair of data attributes to the button.\r\n * @param {string} options.attributes.key - data attribute name\r\n * @param {string} options.attributes.value - data attribute value\r\n * @param {string} [options.text] - Text to display in the button. Can be left blank when creating an 'icon' button.\r\n * @param {string} options.style - secondary - button main color is blue \r\n * - primary - button main color is white\r\n * - danger - button is red with white text\r\n * @param {string} options.type - contained - button is filled in with its style color\r\n * - outlined - button is not filled in and is outlined with is style color\r\n * - text - no fill no outline. Text is style color\r\n * @param {string} [options.icon] - icon svg from global\\icons.js\r\n * @param {string} [options.iconPos=left] - icon position of text (left, right, top bottom).\r\n * @param {boolean} [options.toggle] - true - button is a toggable button when clicked it will now become highlighted once clicked again.\r\n * @param {string} [options.toggleText] - If it is a toggle button you can specify text here to change the button text to once it is toggled.\r\n * @param {string} [options.tabindex] - Customize the tab order of elements. set to -1 to remove button from tab order. Useful for buttons that are hidden off screen.\r\n * @param {function} options.callback - action to perform when clicked\r\n * @returns {HTMLButtonElement} Returns the button element with the given options.\r\n */\r\n function build(options) {\r\n var button = document.createElement('button');\r\n if (options.id) button.id = options.id;\r\n // Button Icons\r\n if (options.icon) {\r\n button.classList.add('btn-icon');\r\n if (options.iconPos) {\r\n var iconPos = `icon-${options.iconPos}`;\r\n button.classList.add(iconPos);\r\n }\r\n if (options.text) {\r\n button.innerHTML = `\r\n ${icons[options.icon]}\r\n ${options.text.toLowerCase()}\r\n `;\r\n } else {\r\n button.innerHTML = icons[options.icon];\r\n }\r\n } else {\r\n button.classList.add('btn');\r\n if (options.text) {\r\n button.innerHTML = options.text.toLowerCase();\r\n }\r\n }\r\n // Button Coloring\r\n if (options.style) {\r\n if (options.style === 'primary') {\r\n button.classList.add('btn--primary');\r\n }\r\n if (options.style === 'secondary') {\r\n button.classList.add('btn--secondary');\r\n }\r\n if (options.style === 'danger') {\r\n button.classList.add('btn--danger');\r\n }\r\n } else {\r\n button.classList.add('btn--primary');\r\n }\r\n \r\n // Button Styling\r\n if (options.type) {\r\n if (options.type === 'text') {\r\n button.classList.add('btn--text');\r\n }\r\n if (options.type === 'contained') {\r\n button.classList.add('btn--contained');\r\n }\r\n if (options.type === 'outlined') {\r\n button.classList.add('btn--outlined');\r\n }\r\n } else {\r\n button.classList.add('btn--contained');\r\n }\r\n \r\n // toggle button?\r\n if (options.toggle) {\r\n button.classList.add('btn--toggle');\r\n button.setAttribute('data-toggled', false);\r\n // Toggle Event\r\n button.addEventListener('click', event => {\r\n if (options.icon) {\r\n var btnText = button.querySelector('span');\r\n } else {\r\n var btnText = button;\r\n }\r\n \r\n if (event.target.dataset.toggled === 'true') {\r\n button.setAttribute('data-toggled', false);\r\n btnText.innerHTML = options.text;\r\n } else {\r\n button.setAttribute('data-toggled', true);\r\n if (options.toggleText) {\r\n btnText.innerHTML = options.toggleText;\r\n }\r\n }\r\n });\r\n }\r\n // Button additional class names\r\n if (options.classNames) {\r\n if (Array.isArray(options.classNames)) {\r\n options.classNames.forEach(c => {\r\n button.classList.add(c);\r\n });\r\n } else {\r\n button.classList.add(options.classNames)\r\n }\r\n }\r\n // Button additional attributes\r\n if (options.attributes) {\r\n options.attributes.forEach(att => {\r\n button.setAttribute(att.key, att.value);\r\n });\r\n }\r\n // Button Callback\r\n if (options.callback) {\r\n button.addEventListener('click', options.callback);\r\n }\r\n // Button TabIndex\r\n if (options.tabindex) {\r\n button.tabIndex = options.tabindex;\r\n };\r\n\r\n return button;\r\n }\r\n\r\n return {\r\n build\r\n }\r\n})();","var dropdown = (function () {\r\n /**\r\n * Anywhere dropdown element\r\n * @typedef {HTMLDivElement} DropdownElement\r\n * @param {object} options options to define the dropdown\r\n * @param {string} [options.dropdownId] - element id for the dropdown\r\n * @param {string} [options.className] - CSS class name to give the dropdown\r\n * @param {string} options.label - Text to label the dropdown\r\n * @param {string} options.style - primary - blue background for the dropdown. White text and outline.\r\n * - secondary - will be used the most. black outline white backbround\r\n * @param {boolean} options.readonly - true - dropdown can't be clicked and 'dropped down'\r\n * @param {function} options.callback - callback to be called on change\r\n * @returns {HTMLDivElement} Returns a dropdown element with the given options.\r\n */\r\n // asdfasdf\r\n function build(options) {\r\n var dropdownId = options.dropdownId;\r\n var className = options.className;\r\n var label = options.label;\r\n var style = options.style;\r\n var readonly = options.readonly;\r\n\r\n var wrap = document.createElement('div');\r\n wrap.classList.add('dropdown');\r\n\r\n // Dropdown Coloring\r\n if (style === 'primary') {\r\n wrap.classList.add('dropdown--primary');\r\n }\r\n if (style === 'secondary') {\r\n wrap.classList.add('dropdown--secondary');\r\n }\r\n\r\n // build select\r\n var select = document.createElement('select');\r\n select.classList.add('dropdown__select');\r\n if (dropdownId) select.id = dropdownId;\r\n if (className) select.classList.add(className);\r\n if (readonly) select.setAttribute('disabled', 'true');\r\n\r\n if (options.callback) {\r\n wrap.addEventListener('change', e => {\r\n const selectedOption = e.target.options[e.target.selectedIndex];\r\n options.callback(e, selectedOption);\r\n });\r\n }\r\n\r\n // build notch\r\n var notch = document.createElement('div');\r\n notch.classList.add('notched-outline');\r\n if (label && label !== '') {\r\n notch.innerHTML = `\r\n
\r\n
\r\n \r\n
\r\n
\r\n `;\r\n } else {\r\n notch.innerHTML = `\r\n
\r\n
\r\n `;\r\n }\r\n\r\n wrap.appendChild(select);\r\n wrap.appendChild(notch);\r\n\r\n wrap.innerHTML += `\r\n \r\n \r\n \r\n \r\n `;\r\n\r\n return wrap;\r\n }\r\n\r\n /**\r\n *\r\n * @param {object} options options to define the dropdown\r\n * @param {string} [options.dropdownId] - element id for the dropdown\r\n * @param {string} [options.className] - CSS class name to give the dropdown\r\n * @param {boolean} options.readonly - true - dropdown can't be clicked and 'dropped down'\r\n * @returns\r\n */\r\n function inlineBuild(options) {\r\n const dropdownId = options.dropdownId;\r\n const className = options.className;\r\n const readonly = options.readonly;\r\n\r\n const span = document.createElement('span');\r\n span.classList.add('inlineDropdown');\r\n\r\n const select = document.createElement('select');\r\n\r\n select.classList.add('inlineDropdown__select');\r\n select.id = dropdownId;\r\n if (className) select.classList.add(className);\r\n if (readonly) select.setAttribute('disabled', 'true');\r\n\r\n const hiddenDropdown = document.createElement('select');\r\n hiddenDropdown.id = `${dropdownId}__width_tmp_select`;\r\n const hidOpt = document.createElement('option');\r\n hidOpt.id = `${dropdownId}__width_tmp_option`;\r\n hiddenDropdown.appendChild(hidOpt);\r\n\r\n span.appendChild(select);\r\n span.appendChild(hiddenDropdown);\r\n span.innerHTML += `\r\n \r\n \r\n \r\n `;\r\n return span;\r\n }\r\n /**\r\n * Populates the given dropdown\r\n * @param {DropdownElement} dropdown - Dropdown element from dropdown.build\r\n * @param {Object[]} data - Data array to populate the dropdown\r\n * @param {string} [data.id] - Dropdown data element id\r\n * @param {string} data.text - Dropdown data element text that is displayed\r\n * @param {string} data.value - Dropdown data element value\r\n * @param {Object[]} [data.attributes] - Dropdown data element data attributes\r\n * @param {string} data.attributes.key - data attribute key\r\n * @param {string} data.attributes.value - data attribute value\r\n * @param {string} defaultVal - default to set the dropdown to. Use the 'Value' data option.\r\n */\r\n\r\n function populate(dropdown, data, defaultVal) {\r\n if (typeof dropdown === 'string') {\r\n var dropdown = document.getElementById(dropdown);\r\n } else {\r\n var dropdown = dropdown.querySelector('select');\r\n }\r\n\r\n if (!dropdown) return;\r\n\r\n dropdown.innerHTML = '';\r\n\r\n data.forEach(d => {\r\n // value and text are required\r\n // data = {id=\"\", value=\"\", text=\"\", attributes=[{key, value}]}\r\n var option = document.createElement('option');\r\n if (d.id) option.id = d.id;\r\n option.value = d.value;\r\n option.innerHTML = d.text;\r\n // set custom attributes\r\n if (d.attributes && d.attributes.length > 0) {\r\n d.attributes.forEach(a => {\r\n option.setAttribute(a.key, a.value);\r\n });\r\n }\r\n // append to dropdown\r\n dropdown.appendChild(option);\r\n });\r\n if (defaultVal && defaultVal !== '') dropdown.value = defaultVal;\r\n }\r\n\r\n function populateStyle(dropdown, data, defaultVal) {\r\n if (typeof dropdown === 'string') {\r\n var dropdown = document.getElementById(dropdown);\r\n } else {\r\n var dropdown = dropdown.querySelector('select');\r\n }\r\n\r\n if (!dropdown) return;\r\n\r\n dropdown.innerHTML = '';\r\n\r\n data.forEach(d => {\r\n // value and text are required\r\n // data = {id=\"\", value=\"\", text=\"\", attributes=[{key, value}]}\r\n var option = document.createElement('option');\r\n if (d.id) option.id = d.id;\r\n option.value = d.value;\r\n option.innerHTML = d.text; \r\n if (d.style == 'italic') \r\n option.classList.add('italicStyle');\r\n // set custom attributes\r\n if (d.attributes && d.attributes.length > 0) {\r\n d.attributes.forEach(a => {\r\n option.setAttribute(a.key, a.value);\r\n });\r\n }\r\n // append to dropdown\r\n dropdown.appendChild(option);\r\n });\r\n if (defaultVal && defaultVal !== '') dropdown.value = defaultVal;\r\n }\r\n\r\n /**\r\n * Populates the given dropdown using option grouping\r\n * @param {Object} opt - Options\r\n * @param {DropdownElement} opt.dropdown - Dropdown element from dropdown.build\r\n * @param {Object[]} opt.data - Data array to populate the dropdown\r\n * @param {string} opt.data.groupLabel - Label for the option grouping\r\n * @param {string} [opt.data.groupId] - Label for the option grouping\r\n * @param {Object[]} opt.data.dropdownValues - Dropdown Options\r\n * @param {string} [opt.data.dropdownValues.id] - Dropdown data element id\r\n * @param {string} opt.data.dropdownValues.text - Dropdown data element text that is displayed\r\n * @param {string} opt.data.dropdownValues.value - Dropdown data element value\r\n * @param {Object[]} [opt.nonGroupedData] - Dropdown Data that doesn't get grouped\r\n * @param {string} [opt.nonGroupedData.id] - Dropdown data element id\r\n * @param {string} opt.nonGroupedData.text - Dropdown data element text that is displayed\r\n * @param {string} opt.nonGroupedData.value - Dropdown data element value\r\n * @param {Object[]} [opt.data.dropdownValues.attributes] - Dropdown data element data attributes\r\n * @param {string} opt.data.dropdownValues.attributes.key - data attribute key\r\n * @param {string} opt.data.dropdownValues.attributes.value - data attribute value\r\n * @param {string} opt.defaultVal - default to set the dropdown to. Use the 'Value' data option.\r\n */\r\n\r\n function groupingPopulate(opt) {\r\n let dropdown = opt.dropdown;\r\n const data = opt.data;\r\n const nonGroupedData = opt.nonGroupedData;\r\n const defaultVal = opt.defaultVal;\r\n\r\n if (typeof dropdown === 'string') {\r\n dropdown = document.getElementById(dropdown);\r\n } else {\r\n dropdown = dropdown.querySelector('select');\r\n }\r\n\r\n if (!dropdown) return;\r\n\r\n dropdown.innerHTML = '';\r\n\r\n if (nonGroupedData) {\r\n nonGroupedData.forEach(d => {\r\n // value and text are required\r\n // data = {id=\"\", value=\"\", text=\"\", attributes=[{key, value}]}\r\n const option = document.createElement('option');\r\n if (d.id) option.id = d.id;\r\n option.value = d.value;\r\n option.innerHTML = d.text;\r\n // set custom attributes\r\n if (d.attributes && d.attributes.length > 0) {\r\n d.attributes.forEach(a => {\r\n option.setAttribute(a.key, a.value);\r\n });\r\n }\r\n // append to dropdown\r\n dropdown.appendChild(option);\r\n });\r\n }\r\n\r\n data.forEach(d => {\r\n const group = document.createElement('optgroup');\r\n group.label = d.groupLabel;\r\n if (d.groupId) group.id = d.groupId;\r\n dropdown.appendChild(group);\r\n\r\n d.dropdownValues.forEach(d => {\r\n // value and text are required\r\n // dropdownValues = {id=\"\", value=\"\", text=\"\", attributes=[{key, value}]}\r\n const option = document.createElement('option');\r\n if (d.id) option.id = d.id;\r\n option.value = d.value;\r\n option.innerHTML = d.text;\r\n // set custom attributes\r\n if (d.attributes && d.attributes.length > 0) {\r\n d.attributes.forEach(a => {\r\n option.setAttribute(a.key, a.value);\r\n });\r\n }\r\n group.appendChild(option);\r\n });\r\n });\r\n if (defaultVal && defaultVal !== '') dropdown.value = defaultVal;\r\n }\r\n\r\n return {\r\n build,\r\n inlineBuild,\r\n populate,\r\n groupingPopulate,\r\n populateStyle\r\n };\r\n})();\r\n","","// const FORM = (() => {\r\n// // make a form component that takes care of everything\r\n// // create event listener on form no for handeling data\r\n// })();\r\n","const input = (function () {\r\n function build(opts) {\r\n // opts = {\r\n // id = \"\",\r\n // label = \"\",\r\n // type = \"\",\r\n // style = \"\",\r\n // value = \"\",\r\n // accept = \"\",\r\n // readonly = bool,\r\n // classNames = \"\" || [],\r\n // callback = () => {},\r\n // callbackType = \"\", ex: change, input, click\r\n // onBlurCallback = () => {},\r\n // attributes = [{key, value}]\r\n // charLimit = int > 0,\r\n // forceCharLimit = bool\r\n // initialLength = int >= 0,\r\n // tabindex = int,\r\n // stt = bool,\r\n // }\r\n // comment\r\n var id = opts.id;\r\n var label = opts.label;\r\n var type = opts.type;\r\n var value = opts.value;\r\n var charLimit = opts.charLimit;\r\n var tab = opts.tabindex;\r\n\r\n var wrap = document.createElement('div');\r\n wrap.classList.add('input-field');\r\n // Button Coloring\r\n if (opts.style === 'primary') {\r\n wrap.classList.add('input-field--primary');\r\n }\r\n if (opts.style === 'secondary') {\r\n wrap.classList.add('input-field--secondary');\r\n }\r\n\r\n // build input\r\n if (type === 'textarea') {\r\n var input = document.createElement('textarea');\r\n wrap.classList.add('textarea');\r\n } else {\r\n var input = document.createElement('input');\r\n if (type) input.type = type;\r\n }\r\n\r\n input.classList.add('input-field__input');\r\n if (value && value !== '') input.value = value;\r\n if (id) input.id = id;\r\n\r\n if (type === 'file') {\r\n input.setAttribute('accept', opts.accept);\r\n }\r\n\r\n if (type === 'date') {\r\n input.setAttribute('max', '9999-12-31');\r\n }\r\n\r\n if (type === 'password') {\r\n input.setAttribute('autocomplete', 'new-password');\r\n }\r\n if (opts.attributes && opts.attributes.length > 0) {\r\n opts.attributes.forEach(a => {\r\n input.setAttribute(a.key, a.value);\r\n });\r\n }\r\n if (opts.readonly) {\r\n input.setAttribute('readonly', true);\r\n input.style.pointerEvents = 'none';\r\n }\r\n\r\n if (opts.classNames) {\r\n if (Array.isArray(opts.classNames)) {\r\n opts.classNames.forEach(c => {\r\n input.classList.add(c);\r\n });\r\n } else {\r\n input.classList.add(opts.classNames);\r\n }\r\n }\r\n\r\n // input event callback\r\n if (opts.callback) {\r\n if (opts.callbackType) {\r\n input.addEventListener(opts.callbackType, e => {\r\n opts.callback(e);\r\n });\r\n } else {\r\n input.addEventListener('change', e => {\r\n opts.callback(e);\r\n });\r\n }\r\n }\r\n if (opts.onBlurCallback) {\r\n input.addEventListener('blur', e => {\r\n opts.onBlurCallback(e);\r\n });\r\n }\r\n\r\n //Character Count. Updates on keyup. If the input value is changed programitically\r\n // you will need to dispatchEvent(new Event('keyup')) on the input field to update the count\r\n let characterCount = null;\r\n if (\r\n charLimit &&\r\n charLimit > 0 &&\r\n (type === 'textarea' || type === 'text' || type === undefined)\r\n ) {\r\n let initialLength = 0;\r\n\r\n if (opts.initialLength && opts.initialLength > 0) {\r\n initialLength = opts.initialLength;\r\n } else {\r\n initialLength = value ? value.length : 0;\r\n }\r\n\r\n characterCount = document.createElement('h5');\r\n characterCount.classList.add('inputCharCount');\r\n characterCount.innerText = `(${initialLength}/${charLimit})`;\r\n\r\n const checkOverLimit = length => {\r\n if (length > charLimit) {\r\n characterCount.classList.add('overLimit');\r\n } else {\r\n characterCount.classList.remove('overLimit');\r\n }\r\n };\r\n\r\n checkOverLimit(initialLength);\r\n\r\n // if (opts.forceCharLimit) {\r\n // input.setAttribute('maxlength', `${charLimit}`);\r\n // }\r\n\r\n const handleEvents = e => {\r\n const length = e.target.value.length;\r\n\r\n if (opts.forceCharLimit) {\r\n if (length > charLimit) {\r\n const subString = e.target.value.substring(0, charLimit);\r\n e.target.value = subString;\r\n characterCount.innerText = `(${subString.length}/${charLimit})`;\r\n }\r\n }\r\n\r\n if (!opts.forceCharLimit || length <= charLimit) {\r\n characterCount.innerText = `(${length}/${charLimit})`;\r\n checkOverLimit(length);\r\n return;\r\n }\r\n };\r\n // input.addEventListener('keyup', handleEvents);\r\n input.addEventListener('input', handleEvents);\r\n input.addEventListener('paste', handleEvents);\r\n }\r\n\r\n if (opts.tabindex) {\r\n input.tabIndex = tab;\r\n }\r\n\r\n // Add Speech to Text. Only add to text fields.\r\n let sttBtn = null;\r\n let azureSTTConnection = false;\r\n if (opts.stt && (type === 'textarea' || type === undefined)) {\r\n sttBtn = button.build({\r\n text: '',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'sttInputIcon',\r\n icon: 'microphone',\r\n });\r\n azureSTTConnection = SPEECH.init();\r\n if (azureSTTConnection) SPEECH.addSTTContinuousRecEvent(sttBtn, wrap); // Change wrap to input and change SPEECH file\r\n }\r\n\r\n if (type === 'password') {\r\n eyeBtn = button.build({\r\n text: '',\r\n id: 'toggle' + input.id,\r\n style: 'outlined',\r\n type: 'text',\r\n classNames: 'eyeInputIcon',\r\n icon: 'passwordShow',\r\n attributes: [{ key: 'data-visible-password', value: 'false' }],\r\n callback: () => {\r\n event.preventDefault();\r\n togglePasswordVisibility(input.id);\r\n },\r\n });\r\n }\r\n\r\n // build notch\r\n var notch = document.createElement('div');\r\n notch.classList.add('notched-outline');\r\n notch.innerHTML = `\r\n
\r\n
\r\n ${label ? `` : ``}\r\n
\r\n
\r\n `;\r\n\r\n wrap.appendChild(input);\r\n wrap.appendChild(notch);\r\n if (characterCount) wrap.appendChild(characterCount);\r\n if (sttBtn && azureSTTConnection) wrap.appendChild(sttBtn);\r\n if (type === 'password') wrap.appendChild(eyeBtn);\r\n return wrap;\r\n }\r\n\r\n function buildCheckbox(opts) {\r\n // opts = {\r\n // className = \"\" || [],\r\n // text = \"\",\r\n // id = \"\",\r\n // isChecked = boolean,\r\n // attributes = [{key, value}]\r\n // callback = () => {}\r\n // }\r\n var checkbox = document.createElement('label');\r\n checkbox.classList.add('checkbox', 'checkbox-mtd');\r\n\r\n var input = document.createElement('input');\r\n input.type = 'checkbox';\r\n if (opts.id) input.id = opts.id;\r\n if (opts.isChecked) input.setAttribute('checked', true);\r\n if (opts.isDisabled) input.setAttribute('disabled', true);\r\n\r\n if (opts.className) {\r\n if (Array.isArray(opts.className)) {\r\n opts.className.forEach(c => {\r\n checkbox.classList.add(c);\r\n });\r\n } else {\r\n checkbox.classList.add(opts.className);\r\n }\r\n }\r\n\r\n if (opts.attributes && opts.attributes.length > 0) {\r\n opts.attributes.forEach(a => {\r\n input.setAttribute(a.key, a.value);\r\n });\r\n }\r\n\r\n if (opts.callback) {\r\n input.addEventListener('change', e => {\r\n opts.callback(e);\r\n });\r\n }\r\n\r\n var text = document.createElement('span');\r\n if (opts.text) text.innerHTML = opts.text;\r\n\r\n checkbox.appendChild(input);\r\n checkbox.appendChild(text);\r\n\r\n return checkbox;\r\n }\r\n function buildNativeCheckbox(opts) {\r\n // opts = {\r\n // className = \"\" || [],\r\n // text = \"\",\r\n // id = \"\",\r\n // isChecked = boolean,\r\n // isDisabled = boolean,\r\n // attributes = [{key, value}]\r\n // callback = () => {}\r\n // }\r\n\r\n var wrap = document.createElement('div');\r\n wrap.classList.add('input-field');\r\n wrap.classList.add('checkbox');\r\n\r\n var input = document.createElement('input');\r\n input.classList.add('input-field__input');\r\n input.type = 'checkbox';\r\n\r\n if (opts.id) input.id = opts.id;\r\n if (opts.isChecked) input.setAttribute('checked', true);\r\n if (opts.isDisabled) input.setAttribute('disabled', true);\r\n\r\n if (opts.className) {\r\n if (Array.isArray(opts.className)) {\r\n opts.className.forEach(c => {\r\n wrap.classList.add(c);\r\n });\r\n } else {\r\n wrap.classList.add(opts.className);\r\n }\r\n }\r\n\r\n if (opts.attributes && opts.attributes.length > 0) {\r\n opts.attributes.forEach(a => {\r\n input.setAttribute(a.key, a.value);\r\n });\r\n }\r\n\r\n if (opts.callback) {\r\n input.addEventListener('change', e => {\r\n opts.callback(e);\r\n });\r\n }\r\n\r\n wrap.appendChild(input);\r\n\r\n return wrap;\r\n }\r\n function buildRadio(opts) {\r\n // opts = {\r\n // className = \"\" || [],\r\n // text = \"\",\r\n // id = \"\",\r\n // name = \"\",\r\n // isChecked = boolean,\r\n // isDisabled = boolean,\r\n // attributes = [{key, value}]\r\n // callback = () => {}\r\n // }\r\n var radio = document.createElement('label');\r\n radio.classList.add('radio');\r\n\r\n var input = document.createElement('input');\r\n input.type = 'radio';\r\n if (opts.isChecked) input.checked = true;\r\n if (opts.isDisabled) input.setAttribute('disabled', true);\r\n if (opts.id) input.id = opts.id;\r\n\r\n if (opts.name) input.setAttribute('name', opts.name);\r\n\r\n if (opts.className) {\r\n if (Array.isArray(opts.className)) {\r\n opts.className.forEach(c => {\r\n radio.classList.add(c);\r\n });\r\n } else {\r\n radio.classList.add(opts.className);\r\n }\r\n }\r\n\r\n if (opts.attributes && opts.attributes.length > 0) {\r\n opts.attributes.forEach(a => {\r\n input.setAttribute(a.key, a.value);\r\n });\r\n }\r\n\r\n if (opts.callback) {\r\n input.addEventListener('change', e => {\r\n opts.callback(e);\r\n });\r\n }\r\n\r\n var text = document.createElement('span');\r\n if (opts.text) text.innerHTML = opts.text;\r\n\r\n radio.appendChild(input);\r\n radio.appendChild(text);\r\n\r\n return radio;\r\n }\r\n\r\n function disableInputField(element) {\r\n let inputEle;\r\n\r\n switch (element.nodeName) {\r\n case 'INPUT':\r\n case 'TEXTAREA':\r\n case 'SELECT': {\r\n inputEle = element;\r\n element.parentElement.classList.add('disabled');\r\n break;\r\n }\r\n default: {\r\n element.classList.add('disabled');\r\n\r\n inputEle = element.querySelector('input');\r\n if (!inputEle) inputEle = element.querySelector('textarea');\r\n if (!inputEle) inputEle = element.querySelector('select');\r\n }\r\n }\r\n\r\n if (inputEle.type !== 'radio') {\r\n inputEle.setAttribute('tabindex', '-1');\r\n return;\r\n }\r\n\r\n const radios = [...element.querySelectorAll('input')];\r\n radios.forEach(radio => {\r\n radio.setAttribute('tabindex', '-1');\r\n });\r\n }\r\n function enableInputField(element) {\r\n let inputEle;\r\n\r\n switch (element.nodeName) {\r\n case 'INPUT':\r\n case 'TEXTAREA':\r\n case 'SELECT': {\r\n inputEle = element;\r\n element.parentElement.classList.remove('disabled');\r\n break;\r\n }\r\n default: {\r\n element.classList.remove('disabled');\r\n\r\n inputEle = element.querySelector('input');\r\n if (!inputEle) inputEle = element.querySelector('textarea');\r\n if (!inputEle) inputEle = element.querySelector('select');\r\n }\r\n }\r\n\r\n if (inputEle.type !== 'radio') {\r\n inputEle.removeAttribute('tabindex', '-1');\r\n return;\r\n }\r\n\r\n const radios = [...element.querySelectorAll('input')];\r\n radios.forEach(radio => {\r\n radio.removeAttribute('tabindex', '-1');\r\n });\r\n }\r\n\r\n function togglePasswordVisibility(id) {\r\n var passwordInput = '';\r\n var passwordToggleBtn = '';\r\n\r\n passwordInput = document.getElementById(id);\r\n passwordToggleBtn = document.getElementById('toggle' + id);\r\n\r\n var isVisible = passwordToggleBtn.getAttribute('data-visible-password');\r\n\r\n if (isVisible === 'false') {\r\n passwordToggleBtn.innerHTML = icons.passwordHide;\r\n passwordToggleBtn.setAttribute('data-visible-password', 'true');\r\n passwordInput.type = 'text';\r\n } else {\r\n passwordToggleBtn.innerHTML = icons.passwordShow;\r\n passwordToggleBtn.setAttribute('data-visible-password', 'false');\r\n passwordInput.type = 'password';\r\n }\r\n }\r\n\r\n return {\r\n build,\r\n buildCheckbox,\r\n buildNativeCheckbox,\r\n buildRadio,\r\n disableInputField,\r\n enableInputField,\r\n };\r\n})();\r\n","const GOOGLE_MAP = (function() {\r\n \r\n let map = null;\r\n let bounds = null;\r\n let markerCluster = null;\r\n\r\n function createElement(insertLocation) {\r\n let mapElement = document.createElement(\"div\");\r\n mapElement.setAttribute(\"id\", \"map\");\r\n mapElement.classList.add(\"googleMap\");\r\n insertLocation.appendChild(mapElement);\r\n }\r\n\r\n function clearMap() {\r\n // document.getElementById(\"map\").innerHTML = \"\";\r\n let mapElement = document.getElementById(\"map\");\r\n if (mapElement) mapElement.remove();\r\n map = null;\r\n }\r\n\r\n\r\n function initMap(zoom = 10, center, markers) {\r\n map = new google.maps.Map(document.getElementById(\"map\"), {\r\n zoom: zoom,\r\n center: center,\r\n maxZoom: 18,\r\n fullscreenControl: false,\r\n // mapTypeControl: false,\r\n });\r\n\r\n if (markers.latLngObj.length > 0) {\r\n markerArray = markers.latLngObj.map((location, i) => {\r\n return new google.maps.Marker({\r\n position: location\r\n })\r\n })\r\n\r\n markerArray.forEach((marker, i) => {\r\n let infoWindow = new google.maps.InfoWindow({\r\n content: markers.markerLabels[i]\r\n })\r\n marker.addListener('click', function() {\r\n infoWindow.open(marker.get('map'), marker)\r\n })\r\n })\r\n \r\n markerCluster = new MarkerClusterer(map, markerArray,\r\n {\r\n imagePath: '/webroot/dist/assets/icons/google_maps/m',\r\n });\r\n }\r\n map.fitBounds(bounds)\r\n map.panToBounds(bounds)\r\n }\r\n\r\n //Calculates the center of the map for two given points\r\n function calcCenter(pos1, pos2) {\r\n return google.maps.geometry.spherical.interpolate(pos1, pos2, 0.5);\r\n }\r\n \r\n function createBoundry(array) {\r\n bounds = new google.maps.LatLngBounds();\r\n array.forEach(pos => {\r\n bounds.extend(pos)\r\n })\r\n }\r\n\r\n function createLatLngObj(pos) {\r\n return new google.maps.LatLng(pos);\r\n }\r\n\r\n function createMarkerArray(array, markerLabels) {\r\n latLngObj = array.map(el => {\r\n return createLatLngObj(el);\r\n });\r\n\r\n return {\r\n latLngObj,\r\n markerLabels\r\n };\r\n }\r\n\r\n function createMarkerLabel(text) {\r\n let displayText = \"\"\r\n text.forEach(el => {\r\n displayText += el + \"
\"\r\n })\r\n return new google.maps.MarkerLabel({text: displayText})\r\n }\r\n\r\n return {\r\n initMap,\r\n clearMap,\r\n createElement,\r\n createMarkerArray,\r\n createMarkerLabel,\r\n createBoundry,\r\n calcCenter\r\n };\r\n})();\r\n","const multiDropdown = (function() {\r\n let activeDropdownOptions = {};\r\n let optionAddedFunction = {};\r\n let optionRemovedFunction = {};\r\n\r\n /**\r\n * Anywhere multi select dropdown element\r\n * @typedef {HTMLDivElement} MultiSelectDropdownElement\r\n * @param {object} options options to define the dropdown\r\n * @param {string} options.dropdownId - element id for the dropdown\r\n * @param {string} [options.className] - CSS class name to give the dropdown\r\n * @param {string} options.label - Text to label the dropdown\r\n * @param {string} [options.optionAddedCallback] - Called when a option is selected for the dropdown\r\n * @param {string} [options.optionRemovedCallback] - Called when an option is removed from the dropdown\r\n * @param {string} options.style - primary - blue background for the dropdown. White text and outline.\r\n * - secondary - will be used the most. black outline white backbround\r\n * @param {boolean} options.readonly - true - dropdown can't be clicked and 'dropped down'\r\n * @returns {HTMLDivElement} Returns a dropdown element with the given options.\r\n */\r\n function build(opts) {\r\n const dropdownId = opts.dropdownId;\r\n const label = opts.label; \r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('multi', 'dropdown');\r\n wrap.id = dropdownId\r\n\r\n // Dropdown Coloring\r\n if (opts.style === 'primary') {\r\n wrap.classList.add('dropdown--primary');\r\n }\r\n if (opts.style === 'secondary') {\r\n wrap.classList.add('dropdown--secondary');\r\n }\r\n activeDropdownOptions[dropdownId] = []\r\n optionAddedFunction[dropdownId] = opts.optionAddedCallback\r\n optionRemovedFunction[dropdownId] = opts.optionRemovedCallback\r\n\r\n // build select\r\n const select = document.createElement('select');\r\n select.classList.add('dropdown__select');\r\n select.multiple = true;\r\n select.name = dropdownId;\r\n \r\n if (opts.className) select.classList.add(opts.className);\r\n if (opts.readonly) select.setAttribute('disabled', 'true');\r\n\r\n // build notch\r\n const notch = document.createElement('div');\r\n notch.classList.add('notched-outline');\r\n notch.innerHTML = `\r\n
\r\n
\r\n \r\n
\r\n
\r\n `;\r\n\r\n const menu = document.createElement('div');\r\n menu.classList.add('multiMenu', 'hidden');\r\n menu.tabIndex = '-1';\r\n\r\n wrap.appendChild(select);\r\n wrap.appendChild(menu);\r\n wrap.appendChild(notch);\r\n\r\n wrap.innerHTML += `\r\n \r\n \r\n \r\n \r\n `;\r\n\r\n wrap.addEventListener('click', () => {\r\n \tif (wrap.querySelector('.multiMenu').classList.contains('hidden')) {\r\n \twrap.querySelector('.multiMenu').classList.replace('hidden', 'visible')\r\n } else {\r\n \twrap.querySelector('.multiMenu').classList.replace('visible', 'hidden')\r\n }\r\n })\r\n menu.addEventListener('blur', () => {\r\n \tif (wrap.querySelector('.multiMenu').classList.contains('hidden')) {\r\n \twrap.querySelector('.multiMenu').classList.replace('hidden', 'visible')\r\n } else {\r\n \twrap.querySelector('.multiMenu').classList.replace('visible', 'hidden')\r\n }\r\n })\r\n\r\n return wrap;\r\n\r\n }\r\n\r\n function populate(dd, data) {\r\n //data.value\r\n //data.text\r\n let multiDropdown;\r\n let dropdown\r\n if (typeof dd === 'string') {\r\n let wrap = document.getElementById(dd);\r\n dd = wrap;\r\n dropdown = wrap.querySelector('.dropdown__select')\r\n multiDropdown = wrap.querySelector('.multiMenu')\r\n } else {\r\n dropdown = dd.querySelector('select');\r\n multiDropdown = dd.querySelector('.multiMenu')\r\n }\r\n\r\n if (!dropdown) return;\r\n\r\n dropdown.innerHTML = '';\r\n multiDropdown.innerHTML = '';\r\n \r\n if (data.length === 0) {\r\n const noOptions = document.createElement('div');\r\n noOptions.innerHTML = `

There are no dropdown options.

`\r\n multiDropdown.appendChild(noOptions)\r\n console.warn(`\r\n No data was passed into dropdown.populate for dropdown \r\n element: ${dd.id}. This could be due the user's filter selection,\r\n or a database call that did not return any data.`)\r\n }\r\n\r\n data.forEach(d => {\r\n const option = document.createElement('option');\r\n const multiOption = document.createElement('div');\r\n if (d.id) {\r\n option.id = d.id;\r\n multiOption.id = d.id\r\n }\r\n option.value = d.value;\r\n option.innerHTML = d.text;\r\n multiOption.setAttribute('data-value', d.value);\r\n multiOption.innerText = d.text;\r\n dropdown.appendChild(option);\r\n \r\n multiOption.classList.add('item')\r\n multiOption.addEventListener('click', event => {\r\n multiOption.style.display = 'none';\r\n const option = multiOption.getAttribute('data-value')\r\n buildChip({value: option, text: multiOption.innerText}, dd, multiOption)\r\n const dropdownId = dd.id\r\n activeDropdownOptions[dropdownId].push({value: option, text: multiOption.innerText})\r\n const callback = optionAddedFunction[dropdownId]\r\n if (callback) {\r\n callback()\r\n }\r\n event.stopPropagation()\r\n })\r\n multiDropdown.appendChild(multiOption);\r\n })\r\n }\r\n\r\n function buildChip(option, dropdown, multiOption) {\r\n const text = option.text;\r\n const value = option.value\r\n const chip = document.createElement('a');\r\n chip.classList.add('multiChip');\r\n chip.setAttribute('data-value', value);\r\n // chip.innerText = text;\r\n chip.innerHTML = `
${text}
${icons.close}`;\r\n\r\n chip.addEventListener('click', event => {\r\n multiOption.style.display = 'block';\r\n const dropdownId = dropdown.id\r\n const callback = optionRemovedFunction[dropdownId]\r\n activeDropdownOptions[dropdownId] = activeDropdownOptions[dropdownId].filter(opt => opt.value !== value);\r\n chip.remove();\r\n if (callback) callback();\r\n event.stopPropagation();\r\n })\r\n dropdown.prepend(chip)\r\n }\r\n\r\n // Pass dropdown ID string, or element created with multiDropdown.build\r\n function getActiveOptions(dd) {\r\n let dropdown\r\n if (typeof dd === 'string') {\r\n dropdown = dd.getElementById(dropdown);\r\n } else {\r\n dropdown = dd;\r\n }\r\n return [...activeDropdownOptions[dropdown.id]]\r\n }\r\n return {\r\n build,\r\n populate,\r\n getActiveOptions\r\n }\r\n})();","const NAVIGATION = (() => {\r\n function init() {\r\n NAV_MOBILE.init();\r\n MODULE_MENU.init();\r\n UTIL_MENU.init();\r\n }\r\n\r\n return { init };\r\n})();\r\n\r\nconst NAV_MOBILE = (function () {\r\n let mobileNav;\r\n\r\n function handleNavClick(event) {\r\n const moduleMenu = document.querySelector('.module-menu');\r\n const utilMenu = document.querySelector('.util-menu');\r\n const isNavItem = event.target.classList.contains('nav__item');\r\n if (!isNavItem) return;\r\n\r\n const currentlyOpen = document.querySelector('.menu.menu-visible');\r\n const targetMenu = event.target.dataset.menu === 'module' ? moduleMenu : utilMenu;\r\n\r\n if (currentlyOpen) {\r\n if (targetMenu === currentlyOpen) {\r\n const subMenu = [].slice.call(document.querySelectorAll('.submenu.menu-visible'));\r\n if (subMenu && subMenu.length) {\r\n subMenu[0].classList.remove('menu-visible');\r\n }\r\n\r\n currentlyOpen.classList.remove('menu-visible');\r\n } else {\r\n currentlyOpen.classList.remove('menu-visible');\r\n targetMenu.classList.add('menu-visible');\r\n }\r\n } else {\r\n targetMenu.classList.add('menu-visible');\r\n }\r\n }\r\n\r\n function init() {\r\n mobileNav = document.querySelector('.nav__mobile');\r\n if (mobileNav) mobileNav.addEventListener('click', handleNavClick);\r\n }\r\n\r\n return { init };\r\n})();\r\n\r\nconst MODULE_MENU = (function () {\r\n const gridContainer = document.querySelector('.grid-container');\r\n const actionNav = document.querySelector('.action__nav');\r\n const utilMenu = document.querySelector('.util-menu');\r\n let moduleMenu;\r\n\r\n const elementsWithClass = document.querySelectorAll('.route-link');\r\n\r\n // Add an event listener to each element\r\n elementsWithClass.forEach(element => {\r\n element.addEventListener('click', event => {\r\n event.preventDefault();\r\n });\r\n });\r\n \r\n async function handleMenuClick(event) {\r\n const target = event.target;\r\n\r\n if (target.classList.contains('menu__button')) {\r\n /* eMAR:\r\n currently eMAR just opens a link to https://login.simplemar.com/\r\n Don't want to do any other module related switching with the emar button,\r\n so after opening the url, we will just leave the module menu open and not do anything else.\r\n */\r\n if (target.dataset.loadModule === 'emar') {\r\n simpleMar.simpleMarLogin();\r\n return;\r\n }\r\n\r\n moduleMenu.classList.remove('menu-visible');\r\n bodyScrollLock.enableBodyScroll(moduleMenu);\r\n loadApp(target.dataset.loadModule);\r\n\r\n // Get a reference to the overlay element\r\n const overlay = document.querySelector('.overlay');\r\n\r\n if (overlay.classList.contains('visible')) {\r\n overlay.classList.remove('visible');\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (target.classList.contains('menu__toggle')) {\r\n const currToggleState = target.dataset.toggle === 'open' ? 'open' : 'closed';\r\n\r\n if (currToggleState === 'open') {\r\n target.dataset.toggle = 'closed';\r\n moduleMenu.classList.add('toggleClosed');\r\n gridContainer.classList.add('toggleClosed');\r\n actionNav.classList.add('toggleClosed');\r\n utilMenu.classList.add('toggleClosed');\r\n target.innerHTML = icons.keyArrowRight;\r\n addAttr();\r\n \r\n } else {\r\n target.dataset.toggle = 'open';\r\n moduleMenu.classList.remove('toggleClosed');\r\n gridContainer.classList.remove('toggleClosed');\r\n actionNav.classList.remove('toggleClosed');\r\n utilMenu.classList.remove('toggleClosed');\r\n target.innerHTML = icons.keyArrowLeft;\r\n removeAttr();\r\n }\r\n }\r\n }\r\n\r\n function init() { \r\n moduleMenu = document.querySelector('.module-menu');\r\n if (moduleMenu) moduleMenu.addEventListener('click', handleMenuClick);\r\n }\r\n\r\n function removeAttr() {\r\n document.getElementById('singlebutton').removeAttribute(\"title\");\r\n document.getElementById('rostersettingsbutton').removeAttribute(\"title\");\r\n document.getElementById('dayservicesettingsbutton').removeAttribute(\"title\");\r\n document.getElementById('goalssettingsbutton').removeAttribute(\"title\");\r\n document.getElementById('casenotesbutton').removeAttribute(\"title\");\r\n document.getElementById('singleentrybutton').removeAttribute(\"title\");\r\n document.getElementById('workshopbutton').removeAttribute(\"title\");\r\n document.getElementById('incidenttrackingbutton').removeAttribute(\"title\");\r\n document.getElementById('scheduleButton').removeAttribute(\"title\");\r\n document.getElementById('authorizationsButton').removeAttribute(\"title\");\r\n document.getElementById('planButton').removeAttribute(\"title\");\r\n document.getElementById('covidButton').removeAttribute(\"title\");\r\n document.getElementById('transportationButton').removeAttribute(\"title\");\r\n document.getElementById('emarButton').removeAttribute(\"title\");\r\n document.getElementById('PDFFormsButton').removeAttribute(\"title\");\r\n document.getElementById('EmploymentButton').removeAttribute(\"title\");\r\n document.getElementById('OODButton').removeAttribute(\"title\");\r\n document.getElementById('CFButton').removeAttribute(\"title\");\r\n document.getElementById('AdminButton').removeAttribute(\"title\");\r\n document.getElementById('resetButton').removeAttribute(\"title\");\r\n document.getElementById('accountButton').removeAttribute(\"title\");\r\n document.getElementById('editaccountButton').removeAttribute(\"title\");\r\n document.getElementById('fSSButton').removeAttribute(\"title\");\r\n }\r\n\r\n function addAttr() {\r\n document.getElementById('singlebutton').setAttribute(\"title\", \"Dashboard\");\r\n document.getElementById('rostersettingsbutton').setAttribute(\"title\", \"Roster\");\r\n document.getElementById('dayservicesettingsbutton').setAttribute(\"title\", \"Day Services\");\r\n document.getElementById('goalssettingsbutton').setAttribute(\"title\", \"Outcomes\");\r\n document.getElementById('casenotesbutton').setAttribute(\"title\", \"Case Notes\");\r\n document.getElementById('singleentrybutton').setAttribute(\"title\", \"Time Entry\");\r\n document.getElementById('workshopbutton').setAttribute(\"title\", \"Workshop\");\r\n document.getElementById('incidenttrackingbutton').setAttribute(\"title\", \"Incident Tracking\");\r\n document.getElementById('scheduleButton').setAttribute(\"title\", \"Scheduling\");\r\n document.getElementById('authorizationsButton').setAttribute(\"title\", \"Authorizations\");\r\n document.getElementById('planButton').setAttribute(\"title\", \"Plan\");\r\n document.getElementById('covidButton').setAttribute(\"title\", \"COVID Checklist\");\r\n document.getElementById('transportationButton').setAttribute(\"title\", \"Transportation\");\r\n document.getElementById('emarButton').setAttribute(\"title\", \"eMAR\");\r\n document.getElementById('PDFFormsButton').setAttribute(\"title\", \"Forms\");\r\n document.getElementById('EmploymentButton').setAttribute(\"title\", \"Employment\");\r\n document.getElementById('OODButton').setAttribute(\"title\", \"OOD\");\r\n document.getElementById('CFButton').setAttribute(\"title\", \"Money Management\");\r\n document.getElementById('AdminButton').setAttribute(\"title\", \"Administration\");\r\n document.getElementById('resetButton').setAttribute(\"title\", \"Reset Passwords\");\r\n document.getElementById('accountButton').setAttribute(\"title\", \"Account Register\");\r\n document.getElementById('editaccountButton').setAttribute(\"title\", \"Edit Account\");\r\n document.getElementById('fSSButton').setAttribute(\"title\", \"FSS\");\r\n }\r\n\r\n return { init };\r\n})();\r\n\r\nconst UTIL_MENU = (function () {\r\n function init() {\r\n const utilMenu = document.querySelector('.util-menu');\r\n const utilMenuBtn = document.querySelector('.desktopUtilMenuBtn');\r\n const modalOverlay = document.querySelector('.overlay');\r\n\r\n utilMenuBtn.addEventListener('click', () => {\r\n if (utilMenu.classList.contains('menu-visible')) {\r\n var subMenu = document.getElementsByClassName('submenu menu-visible');\r\n utilMenu.classList.remove('menu-visible');\r\n utilMenuBtn.classList.remove('menu-visible');\r\n modalOverlay.classList.remove('modal');\r\n if (subMenu && subMenu.length) subMenu[0].classList.remove('menu-visible');\r\n bodyScrollLock.enableBodyScroll(utilMenu);\r\n } else {\r\n // Add event listener to overlay close the menu when clicking outside of it\r\n modalOverlay.addEventListener('click', function (event) {\r\n var subMenu = document.getElementsByClassName('submenu menu-visible');\r\n utilMenu.classList.remove('menu-visible');\r\n utilMenuBtn.classList.remove('menu-visible');\r\n modalOverlay.classList.remove('modal');\r\n if (subMenu && subMenu.length) subMenu[0].classList.remove('menu-visible');\r\n bodyScrollLock.enableBodyScroll(utilMenu);\r\n });\r\n utilMenu.classList.add('menu-visible');\r\n utilMenuBtn.classList.add('menu-visible');\r\n modalOverlay.classList.add('modal');\r\n bodyScrollLock.disableBodyScroll(utilMenu);\r\n }\r\n });\r\n\r\n if (utilMenu) {\r\n const mainMenu = document.querySelector('.util-menu__main');\r\n const defaultsMenu = document.querySelector('.util-menu__defaults');\r\n const informationMenu = document.querySelector('.util-menu__info');\r\n const settings = document.querySelector('.util-menu__settings');\r\n const widgetSettingsMenu = document.querySelector('.util-menu__widgetSettings');\r\n const helpMenu = document.querySelector('.util-menu__help');\r\n\r\n utilMenu.addEventListener('click', function (event) {\r\n if (event.target.dataset.action === 'back') {\r\n document.querySelector('.submenu.menu-visible').classList.remove('menu-visible');\r\n return;\r\n }\r\n if (event.target.dataset.action === 'trainingVideos') { \r\n const url =\r\n $.session.applicationName === 'Advisor'\r\n ? 'https://primarysolutions.net/technology/advisor-support/'\r\n : 'https://primarysolutions.net/technology/gatekeeper-support/';\r\n\r\n const win = window.open(url, '_blank');\r\n win.focus();\r\n }\r\n\r\n let targetMenu;\r\n\r\n switch (event.target.dataset.menu) {\r\n case 'defaults':\r\n targetMenu = defaultsMenu;\r\n defaults.init();\r\n break;\r\n case 'help':\r\n targetMenu = helpMenu;\r\n help.buildPage();\r\n break;\r\n case 'settings': {\r\n //Currently settings window goes straight ot widget settings\r\n targetMenu = widgetSettingsMenu;\r\n widgetSettings.init();\r\n break;\r\n }\r\n case 'information': {\r\n targetMenu = informationMenu;\r\n information.init();\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n try {\r\n targetMenu.classList.add('menu-visible');\r\n } catch (error) {}\r\n });\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n\r\nconst MINI_MODULE_MENU = (function () {\r\n var actioncenter;\r\n var menuClone;\r\n\r\n function show() {\r\n DOM.clearActionCenter();\r\n actioncenter.appendChild(menuClone);\r\n }\r\n function hide() {\r\n actioncenter = document.getElementById('actioncenter');\r\n actioncenter.removeChild(menuClone);\r\n }\r\n\r\n function build() {\r\n actioncenter = document.getElementById('actioncenter');\r\n var moduleMenu = document.querySelector('.module-menu');\r\n\r\n if (!menuClone) {\r\n menuClone = moduleMenu.cloneNode(true);\r\n menuClone.classList.add('menuAsCard');\r\n // build header\r\n var menuHeader = document.createElement('h2');\r\n menuHeader.classList.add('menu__header');\r\n menuHeader.innerHTML = 'Please select one of these modules from the left.';\r\n\r\n var menuInner = menuClone.querySelector('.menu__inner');\r\n\r\n menuClone.insertBefore(menuHeader, menuInner);\r\n\r\n menuClone.addEventListener('click', e => {\r\n const appName = e.target.dataset.loadModule;\r\n loadApp(appName);\r\n });\r\n }\r\n\r\n show();\r\n }\r\n\r\n return {\r\n show,\r\n hide,\r\n build,\r\n };\r\n})();\r\n","var overlay = (function() {\r\n var overlay;\r\n\r\n function hide() {\r\n overlay.classList.remove('visible');\r\n }\r\n function show() {\r\n overlay.classList.add('visible');\r\n }\r\n function init() {\r\n multiTabs.newTabOpen();\r\n overlay = document.querySelector('.overlay');\r\n overlay.addEventListener('click', event => {\r\n // Special code for IE\r\n if (isIE) return;\r\n //---- end ie code ----------\r\n \r\n // if you don't want the click on overlay to hide popup remove class visible from your popup\r\n var popup = document.querySelector('.visible[data-popup=\"true\"]');\r\n\r\n if (!popup) return;\r\n \r\n if (popup.classList.contains('popup--static')) {\r\n popup.classList.remove('visible'); \r\n } else {\r\n // if popup is not static, remove it from DOM\r\n var parent = popup.parentElement;\r\n parent.removeChild(popup);\r\n }\r\n // hide overlay\r\n hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n });\r\n }\r\n\r\n return {\r\n hide,\r\n show,\r\n init\r\n }\r\n})();","// WORK IN PROGRESS\r\n/**\r\n * Popups\r\n * - POPUP.build() creates the popup element.\r\n * - POPUP.show() shows the popup.\r\n * - POPUP.hide() hides the popup.\r\n */\r\nconst POPUP = (function () {\r\n /**\r\n * Anywhere Popup Element\r\n * @typedef {HTMLDivElement} PopupElement\r\n * @param {Object} opts - Options to define the popup.\r\n * @param {Object[]} [opts.attributes] - Can define popup element data attributes.\r\n * @param {string} opts.attributes.key - Data attribute key.\r\n * @param {string} opts.attributes.value - Data attribute value.\r\n * @param {(string|string[])} [opts.classNames] - Single string or array of strings that set the class names for the popup element.\r\n * @param {string} [opts.header] - Heading at the top of the popup.\r\n * @param {string} [opts.id] - Sets popup elemnet id.\r\n * @param {boolean} [opts.hideX] - True = hide the x close button to close the popup.\r\n * @param {function} [opts.closeCallback] - Action to perform when x close button is clicked.\r\n * @param {function} [opts.onChangeCallback] - Action to perform when an input is changed\r\n * - X close button removes the popup so only include actions you want performed after the popup\r\n * is closed to this callback\r\n * @returns {PopupElement} Returns the popup element with the given options.\r\n */\r\n function build(opts) {\r\n const popup = document.createElement('div');\r\n popup.classList.add('popup');\r\n popup.setAttribute('data-popup', 'true');\r\n\r\n // add heading\r\n if (opts.header) {\r\n popup.innerHTML = `

${opts.header}

`;\r\n }\r\n // set id\r\n if (opts.id) {\r\n popup.setAttribute('id', opts.id);\r\n }\r\n\r\n // set attributes\r\n if (opts.attributes && opts.attributes.length > 0) {\r\n opts.attributes.forEach(a => {\r\n popup.setAttribute(a.key, a.value);\r\n });\r\n }\r\n // set class\r\n if (opts.classNames) {\r\n if (Array.isArray(opts.classNames)) {\r\n opts.classNames.forEach(c => {\r\n popup.classList.add(c);\r\n });\r\n } else {\r\n popup.classList.add(opts.classNames);\r\n }\r\n }\r\n\r\n // onchange event\r\n if (opts.onChangeCallback) {\r\n popup.addEventListener('change', e => opts.onChangeCallback(e));\r\n }\r\n\r\n // add 'x' for alternative popup closing abilities\r\n const closePopBtn = button.build({\r\n type: 'text',\r\n style: 'secondary',\r\n icon: 'close',\r\n classNames: 'closePopupBtn',\r\n callback: function (e) {\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n document.body.style.overflow = 'visible';\r\n if (opts.closeCallback) opts.closeCallback(e);\r\n },\r\n });\r\n\r\n if (!opts.hideX) popup.appendChild(closePopBtn);\r\n \r\n // Check if modal is enabled\r\n if (opts.modal) {\r\n // Create a background div for closing the popup\r\n const background = document.createElement('div');\r\n background.classList.add('popup__background');\r\n background.addEventListener('click', () => {\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n DOM.ACTIONCENTER.removeChild(background);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n document.body.style.overflow = 'visible';\r\n if (opts.closeCallback) opts.closeCallback();\r\n });\r\n \r\n // Append the background div and popup to ACTIONCENTER\r\n DOM.ACTIONCENTER.appendChild(background);\r\n DOM.ACTIONCENTER.appendChild(popup);\r\n }\r\n \r\n return popup;\r\n }\r\n /**\r\n * Used to show a popup created with POPUP.build()\r\n * @param {PopupElement} popup - Popup from POPUP.build()\r\n * @param {HTMLDivElement} [appendTo] - Can specify a specific element where you would like the popup do be appended to.\r\n * - If undefined, popup appends to the action center.\r\n */\r\n function show(popup, appendTo) {\r\n // disable scrolling\r\n bodyScrollLock.disableBodyScroll(popup);\r\n // show overlay\r\n overlay.show();\r\n // show popup\r\n if (appendTo) {\r\n appendTo.appendChild(popup);\r\n } else {\r\n DOM.ACTIONCENTER.appendChild(popup);\r\n }\r\n }\r\n /**\r\n * Used to hide a popup created with POPUP.build()\r\n * @param {PopupElement} popup - Popup from POPUP.build()\r\n * @param {HTMLDivElement} [removeFrom] - If you used appendTo in above show function add it here as well\r\n * - If undefined, popup appends to the action center.\r\n */\r\n function hide(popup, removeFrom) {\r\n // enable scrolling\r\n bodyScrollLock.enableBodyScroll(popup);\r\n document.body.style.overflow = 'auto';\r\n // hide overlay\r\n overlay.hide();\r\n // hide popup\r\n if (removeFrom) {\r\n removeFrom.removeChild(popup);\r\n } else {\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n }\r\n }\r\n\r\n return {\r\n build,\r\n show,\r\n hide,\r\n };\r\n})();\r\n\r\nconst successfulSave = (function () {\r\n /**\r\n * Build save checkmark with message\r\n * @param {string} message\r\n * @param {boolean} noPopup - True = return w/o popup classname\r\n */\r\n function build(message, noPopup) {\r\n const sspopup = document.createElement('div');\r\n sspopup.classList.add('successfulSavePopup');\r\n if (!noPopup) sspopup.classList.add('popup');\r\n sspopup.innerHTML = `\r\n ${icons['checkmark']}\r\n ${message ? `

${message}

` : ''}\r\n `;\r\n\r\n return sspopup;\r\n }\r\n /**\r\n * Returns popup as dom node\r\n * @param {string} message\r\n */\r\n function get(message, asPopup) {\r\n return build(message, asPopup);\r\n }\r\n /**\r\n * Displays successful save popup to actioncenter\r\n * @param {string} message\r\n */\r\n function show(message = 'SAVED') {\r\n const sspopup = build(message, false);\r\n overlay.show();\r\n DOM.ACTIONCENTER.appendChild(sspopup);\r\n }\r\n\r\n /**\r\n * Hides successful save popup\r\n */\r\n function hide(removeOverlay = true) {\r\n const successfulSavePopup = document.querySelector('.successfulSavePopup');\r\n if (removeOverlay) overlay.hide();\r\n DOM.ACTIONCENTER.removeChild(successfulSavePopup);\r\n }\r\n\r\n return {\r\n get,\r\n show,\r\n hide,\r\n };\r\n})();\r\nconst failSave = (function () {\r\n /**\r\n * Build save checkmark with message\r\n * @param {string} message\r\n * @param {boolean} noPopup - True = return w/o popup classname\r\n */\r\n function build(message, noPopup) {\r\n if (!message) message = 'SAVED';\r\n const sspopup = document.createElement('div');\r\n sspopup.classList.add('failSavePopup');\r\n if (!noPopup) sspopup.classList.add('popup');\r\n sspopup.innerHTML = `\r\n ${icons['close']}\r\n

${message}

\r\n `;\r\n\r\n return sspopup;\r\n }\r\n /**\r\n * Returns popup as dom node\r\n * @param {string} message\r\n */\r\n function get(message, asPopup) {\r\n return build(message, asPopup);\r\n }\r\n /**\r\n * Displays successful save popup to actioncenter\r\n * @param {string} message\r\n */\r\n function show(message) {\r\n const sspopup = build(message, false);\r\n overlay.show();\r\n DOM.ACTIONCENTER.appendChild(sspopup);\r\n }\r\n\r\n /**\r\n * Hides successful save popup\r\n */\r\n function hide(removeOverlay = true) {\r\n const failSavePopup = document.querySelector('.failSavePopup');\r\n if (removeOverlay) overlay.hide();\r\n DOM.ACTIONCENTER.removeChild(failSavePopup);\r\n }\r\n\r\n return {\r\n get,\r\n show,\r\n hide,\r\n };\r\n})();\r\n/** Shows a 'saving in progress' popup, that doesn't go away until fulfill is called\r\n * - Call pendingSave.show() to show data is curently being saved\r\n * - Call pendingSave.fulfill() once the data has been saved successfully.\r\n * @todo Should also add a 'reject' function to handle errors saving to the DB\r\n */\r\nconst pendingSave = (function () {\r\n /**\r\n * Shows the saving in progress popup with the given message.\r\n * @param {string} [message='SAVING'] - Message to display when saving is still in progress\r\n */\r\n function show(message = 'SAVING') {\r\n // build\r\n // PROGRESS.SPINNER.init()\r\n var popup = document.createElement('div');\r\n popup.classList.add('pendingSavePopup', 'popup');\r\n\r\n //SPINNER\r\n spinnerWrap = document.createElement('div');\r\n spinnerWrap.classList.add('spinner');\r\n spinnerMessage = document.createElement('h2');\r\n spinnerMessage.classList.add('spinner__message');\r\n var spinnerBar = document.createElement('div');\r\n spinnerBar.classList.add('spinner__bar');\r\n spinnerMessage.innerHTML = `

${message}

`;\r\n spinnerWrap.appendChild(spinnerBar);\r\n spinnerWrap.appendChild(spinnerMessage);\r\n\r\n popup.appendChild(spinnerWrap);\r\n // show\r\n overlay.show();\r\n // PROGRESS.SPINNER.show()\r\n DOM.ACTIONCENTER.appendChild(popup);\r\n }\r\n /**\r\n * Call this when your data has been saved.\r\n * @param {string} message - Successful saved message to display\r\n */\r\n function fulfill(message) {\r\n var popup = document.querySelector('.pendingSavePopup');\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n // PROGRESS.SPINNER.hide()\r\n successfulSave.show(message);\r\n }\r\n function reject(message) {\r\n var popup = document.querySelector('.pendingSavePopup');\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n // PROGRESS.SPINNER.hide()\r\n failSave.show(message);\r\n }\r\n\r\n function hide(removeOverlay = true) {\r\n var popup = document.querySelector('.pendingSavePopup');\r\n if (removeOverlay) overlay.hide();\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n }\r\n\r\n return {\r\n show,\r\n fulfill,\r\n reject,\r\n hide,\r\n };\r\n})();\r\n","var PROGRESS = (function () {\r\n var actioncenter;\r\n\r\n function _show(progressBar) {\r\n DOM.clearActionCenter();\r\n actioncenter.appendChild(progressBar);\r\n progressBar.style.removeProperty('display');\r\n }\r\n function _hide(progressBar, spinnerMessage) {\r\n var parent = progressBar.parentElement;\r\n parent.removeChild(progressBar);\r\n parent.removeChild(spinnerMessage);\r\n }\r\n\r\n var SPINNER = (function () {\r\n var spinnerWrap;\r\n var spinnerMessage;\r\n let spinnerBar;\r\n\r\n function show(message) {\r\n if (message) {\r\n spinnerMessage.innerHTML = message;\r\n spinnerMessage.classList.add('visible');\r\n }\r\n _show(spinnerWrap);\r\n }\r\n function hide() {\r\n _hide(spinnerBar, spinnerMessage);\r\n }\r\n function build() {\r\n spinnerWrap = document.createElement('div');\r\n spinnerWrap.classList.add('spinner');\r\n spinnerMessage = document.createElement('h2');\r\n spinnerMessage.classList.add('spinner__message');\r\n spinnerBar = document.createElement('div');\r\n spinnerBar.classList.add('spinner__bar');\r\n spinnerWrap.appendChild(spinnerMessage);\r\n spinnerWrap.appendChild(spinnerBar);\r\n }\r\n function get(message) {\r\n const newSpinner = spinnerWrap.cloneNode(true);\r\n if (message) {\r\n const spinnerMessageElement = newSpinner.querySelector('.spinner__message')\r\n spinnerMessageElement.innerHTML = message\r\n spinnerMessageElement.classList.add('visible');\r\n }\r\n return newSpinner;\r\n }\r\n\r\n function init() {\r\n speed = 0;\r\n build();\r\n }\r\n\r\n return {\r\n init,\r\n show,\r\n hide,\r\n get,\r\n };\r\n })();\r\n\r\n function init() {\r\n actioncenter = document.getElementById('actioncenter');\r\n SPINNER.init();\r\n }\r\n\r\n return {\r\n SPINNER,\r\n init,\r\n };\r\n})();\r\n\r\n//PROGRESS__ANYWHERE USE:\r\n//1) PROGRESS__ANYWHERE.init()\r\n//2) PROGRESS__ANYWHERE.SPINNER.show(ELEMENT YOU WANT THE PROGRESS BAR TO BE ADDED TO, MESSAGE);\r\n//3) PROGRESS__ANYWHERE.SPINNER.hide(ELEMENT YOU ADDED PROGRESS BAR TO)\r\n\r\n/**\r\n * Placing a progress bar anywhere. Example is in\r\n * Unread Progress and Location Note Widget.\r\n * 1) SPINNER.init\r\n * 2) SPINNER.show\r\n * 3) SPINNER.hide\r\n */\r\n\r\nconst PROGRESS__ANYWHERE = (function () {\r\n let insertElement;\r\n\r\n function _show(progressBar, insertElement) {\r\n insertElement.appendChild(progressBar);\r\n }\r\n function _hide(progressBar, spinnerMessage, containingElement) {\r\n if (containingElement) {\r\n progressBar = containingElement.querySelector('.spinner__bar', '.small');\r\n spinnerMessage = containingElement.querySelector('.spinner__message', '.small');\r\n }\r\n var parent = progressBar.parentElement;\r\n parent.removeChild(progressBar);\r\n parent.removeChild(spinnerMessage);\r\n }\r\n\r\n /**\r\n * Main spinner functions\r\n */\r\n const SPINNER = (function () {\r\n let smallSpinnerWrap;\r\n let spinnerMessage;\r\n let smallSpinnerBar;\r\n /**\r\n * Shows the spinner until hide function is called.\r\n * @param {HTMLElement} element the html element where you would like the spinner to be placed\r\n * @param {string} message what you want the spinner to say\r\n */\r\n function show(element, message) {\r\n insertElement = element;\r\n if (message) {\r\n spinnerMessage.innerHTML = message;\r\n spinnerMessage.classList.add('visible');\r\n }\r\n _show(smallSpinnerWrap, insertElement);\r\n }\r\n /**\r\n * Hides the spinner from spinner.show\r\n * @param {HTMLElement} parentElement html element that contains the spinner. Use the same element that was passed in SPINNER.show\r\n */\r\n function hide(parentElement) {\r\n _hide(smallSpinnerBar, spinnerMessage, parentElement);\r\n }\r\n function build() {\r\n smallSpinnerWrap = document.createElement('div');\r\n smallSpinnerWrap.classList.add('spinner__small');\r\n spinnerMessage = document.createElement('h2');\r\n spinnerMessage.classList.add('spinner__message', 'small');\r\n smallSpinnerBar = document.createElement('div');\r\n smallSpinnerBar.classList.add('spinner__bar', 'small');\r\n smallSpinnerWrap.appendChild(spinnerMessage);\r\n smallSpinnerWrap.appendChild(smallSpinnerBar);\r\n }\r\n /**\r\n * Call this before spinner.show. Creates all necessary spinner elements.\r\n */\r\n function init() {\r\n speed = 0;\r\n build();\r\n }\r\n\r\n return {\r\n init,\r\n show,\r\n hide,\r\n };\r\n })();\r\n\r\n function init() {\r\n SPINNER.init();\r\n }\r\n\r\n return {\r\n SPINNER,\r\n init,\r\n };\r\n})();\r\n\r\n/*\r\nPROGRESS__BTN USE: \r\nLike Progress anywhere but to use with buttons that are awaiting a response\r\n1) PROGRESS__ANYWHERE.SPINNER.show(BTN, MESSAGE, true/false);\r\n2) PROGRESS__ANYWHERE.SPINNER.hide(BTN)\r\n*/\r\n\r\n/**\r\n * Placing a progress bar anywhere. Example is in\r\n * Unread Progress and Location Note Widget.\r\n * 1) SPINNER.show\r\n * 2) SPINNER.hide\r\n */\r\nconst PROGRESS__BTN = (function () {\r\n let insertElement;\r\n\r\n function _show(progressBar, insertElement) {\r\n insertElement.appendChild(progressBar);\r\n }\r\n function _hide(progressBar, spinnerMessage, containingElement) {\r\n if (containingElement) {\r\n progressBar = containingElement.querySelector('.spinner__bar', '.small_btn');\r\n spinnerMessage = containingElement.querySelector('.spinner__message', '.small_btn');\r\n }\r\n var parent = progressBar.parentElement;\r\n parent.removeChild(progressBar);\r\n parent.removeChild(spinnerMessage);\r\n }\r\n\r\n const SPINNER = (function () {\r\n let btnSpinnerWrap;\r\n let spinnerMessage;\r\n let smallSpinnerBar;\r\n const buttonTextCache = new Map();\r\n\r\n /**\r\n * Shows the spinner until hide function is called.\r\n * @param {HTMLElement|string} btnElement the btn element where you would like the spinner to be placed\r\n * @param {string} message what you want the spinner to say\r\n * @param {boolean} cache cache the message and corresponding element for hiding progress.\r\n */\r\n function show(btnElement, message, cache = true) {\r\n //Move INIT to show\r\n speed = 0;\r\n build();\r\n //\r\n if (typeof(btnElement) === 'string') btnElement = document.getElementById(btnElement)\r\n insertElement = btnElement;\r\n if (cache) buttonTextCache.set(btnElement, btnElement.innerText);\r\n if (message) {\r\n spinnerMessage.innerHTML = message;\r\n spinnerMessage.classList.add('visible');\r\n }\r\n btnElement.classList.add('disabled')\r\n btnElement.style.width = btnElement.clientWidth + 'px';\r\n btnElement.innerHTML = '';\r\n _show(btnSpinnerWrap, insertElement);\r\n }\r\n /**\r\n * Hides the spinner from spinner.show\r\n * @param {HTMLElement|string} btnElement html element, OR id of button in string form that contains the spinner. Use the same element that was passed in SPINNER.show\r\n */\r\n function hide(btnElement) {\r\n if (typeof(btnElement) === 'string') btnElement = document.getElementById(btnElement)\r\n btnElement.classList.remove('disabled')\r\n btnElement.style.removeProperty('width');\r\n _hide(smallSpinnerBar, spinnerMessage, btnElement);\r\n btnElement.innerText = buttonTextCache.get(btnElement);\r\n buttonTextCache.delete(btnElement);\r\n }\r\n function build() {\r\n btnSpinnerWrap = document.createElement('div');\r\n btnSpinnerWrap.classList.add('spinner__btn');\r\n spinnerMessage = document.createElement('h2');\r\n spinnerMessage.classList.add('spinner__message', 'small_btn');\r\n smallSpinnerBar = document.createElement('div');\r\n smallSpinnerBar.classList.add('spinner__bar', 'small_btn', 'faster');\r\n btnSpinnerWrap.appendChild(spinnerMessage);\r\n btnSpinnerWrap.appendChild(smallSpinnerBar);\r\n }\r\n return {\r\n show,\r\n hide,\r\n };\r\n })();\r\n\r\n return {\r\n SPINNER,\r\n };\r\n})();","var table = (function () {\r\n var opts;\r\n\r\n function build(options) {\r\n // options = {\r\n // plain=true?false\r\n // tableId=''\r\n // headline=''\r\n // columnHeadings=[]\r\n // callback=function\r\n //* NEW SORTABLE OPTIONS\r\n // sortable=true?false\r\n // onSortCallback=function\r\n //* END ICON OPTIONS\r\n // endIcon=true?false\r\n //* SECOND END ICON OPTIONS\r\n // secondendIcon=true?false\r\n //* COPY OPTIONS\r\n // allowCopy=true?false\r\n // }\r\n opts = options;\r\n // Create Base Elements\r\n var table = document.createElement('div');\r\n var tableBody = document.createElement('div');\r\n // Set Attributes\r\n if (opts.tableId) table.id = options.tableId;\r\n tableBody.classList.add('table__body');\r\n\r\n // Set Sortable\r\n if (options.sortable) {\r\n new Sortable(tableBody, {\r\n handle: '.dragHandle',\r\n draggable: '>.table__row',\r\n onSort: function (evt) {\r\n options.onSortCallback({\r\n oldIndex: evt.oldIndex,\r\n newIndex: evt.newIndex,\r\n row: evt.item,\r\n });\r\n },\r\n });\r\n\r\n table.classList.add('sortableTable');\r\n }\r\n\r\n // plain table?\r\n if (opts.plain) {\r\n table.classList.add('table', 'table__plain');\r\n } else {\r\n table.classList.add('table');\r\n }\r\n\r\n // Add Headline\r\n if (opts.headline) {\r\n var headline = document.createElement('div');\r\n headline.classList.add('table__headline');\r\n headline.innerHTML = `

${opts.headline}

`;\r\n table.appendChild(headline);\r\n }\r\n\r\n // Build Header Row\r\n var headerRow = document.createElement('div');\r\n headerRow.classList.add('table__row', 'header');\r\n\r\n // add emtpy cell for drag handle\r\n if (options.sortable) {\r\n var td = document.createElement('div');\r\n td.classList.add('dragHandle');\r\n headerRow.appendChild(td);\r\n }\r\n\r\n // populate column row\r\n options.columnHeadings.forEach(heading => {\r\n var td = document.createElement('div');\r\n td.innerHTML = heading;\r\n headerRow.appendChild(td);\r\n });\r\n\r\n // add empty cell for startIcon\r\n if (options.startIcon) {\r\n var td = document.createElement('div');\r\n td.classList.add('startIcon');\r\n td.innerHTML = options.startIconHeader;\r\n td.addEventListener('click', options.startIconHeaderCallback);\r\n headerRow.insertBefore(td, headerRow.firstChild);\r\n }\r\n \r\n // add empty cell for endIcon\r\n if (options.endIcon) {\r\n var td = document.createElement('div');\r\n td.classList.add('endIcon');\r\n if (options.endIconHeading == undefined) {\r\n options.endIconHeading = '';\r\n }\r\n td.innerHTML = options.endIconHeading;\r\n headerRow.appendChild(td);\r\n }\r\n\r\n // add empty cell for secondendIcon\r\n if (options.secondendIcon) {\r\n var td = document.createElement('div');\r\n td.classList.add('secondendIcon');\r\n if (options.secondendIconHeading == undefined) {\r\n options.secondendIconHeading = '';\r\n }\r\n td.innerHTML = options.secondendIconHeading;\r\n headerRow.appendChild(td);\r\n }\r\n\r\n // add empty cell for copyIcon\r\n if (options.allowCopy) {\r\n var td = document.createElement('div');\r\n td.classList.add('copyIcon');\r\n headerRow.appendChild(td);\r\n }\r\n\r\n // append row to table\r\n table.appendChild(headerRow);\r\n\r\n // Putting it all together\r\n table.appendChild(tableBody);\r\n\r\n if (opts.callback) {\r\n table.addEventListener('click', opts.callback);\r\n }\r\n\r\n return table;\r\n }\r\n\r\n function populate(table, data, isSortable, disabled) {\r\n // table can be element or tableID\r\n // data = [{ id=\"\", values=[], attributes=[{}], onClick}] = oneRow\r\n // isSortable = sortable=true?false\r\n \r\n if (typeof table === 'string') {\r\n var table = document.getElementById(table);\r\n }\r\n \r\n const tableBody = table.querySelector('.table__body');\r\n tableBody.innerHTML = '';\r\n \r\n data.forEach(d => {\r\n // build row\r\n const row = document.createElement('div');\r\n row.classList.add('table__row');\r\n if (d.overlap !== null) {\r\n if (d.overlap === true) {\r\n row.classList.add('yellowbackground'); //\r\n }\r\n }\r\n // set id & attributes\r\n if (d.id) row.id = d.id;\r\n if (d.attributes) {\r\n d.attributes.forEach(a => {\r\n row.setAttribute(a.key, a.value);\r\n });\r\n }\r\n\r\n // Add error class to row if there is an error\r\n if (d.hasError) {\r\n row.classList.add('errorRow');\r\n }\r\n\r\n // set onclick\r\n if (d.onClick && !disabled) {\r\n row.addEventListener('click', async e => {\r\n if (e.target === row) {\r\n e.target.classList.add('noPointerEvents');\r\n await d.onClick(e);\r\n e.target.classList.remove('noPointerEvents');\r\n }\r\n });\r\n row.classList.add('customLink');\r\n }\r\n if (!disabled) {\r\n row.classList.add('disabledRow');\r\n }\r\n \r\n // add drag handle\r\n if (isSortable) {\r\n var cell = document.createElement('div');\r\n cell.classList.add('dragHandle');\r\n cell.innerHTML = icons.drag;\r\n \r\n row.appendChild(cell);\r\n }\r\n \r\n // populate row cells\r\n d.values.forEach(v => {\r\n const cell = document.createElement('div');\r\n cell.innerHTML = v;\r\n row.appendChild(cell);\r\n });\r\n\r\n if (d.startIcon) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('startIcon');\r\n cell.innerHTML = d.startIcon;\r\n cell.addEventListener('click', d.startIconCallback);\r\n row.insertBefore(cell, row.firstChild);\r\n }\r\n \r\n if (d.endIcon) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('endIcon');\r\n cell.innerHTML = d.endIcon;\r\n cell.addEventListener('click', d.endIconCallback);\r\n row.appendChild(cell);\r\n }\r\n \r\n if (d.secondendIcon) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('secondendIcon');\r\n cell.innerHTML = d.secondendIcon;\r\n cell.addEventListener('click', d.secondendIconCallback);\r\n row.appendChild(cell);\r\n }\r\n \r\n if (disabled !== true) {\r\n if (d.onCopyClick) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('copyIcon');\r\n cell.innerHTML = icons.copy;\r\n cell.addEventListener('click', d.onCopyClick);\r\n row.appendChild(cell);\r\n }\r\n }\r\n \r\n tableBody.appendChild(row);\r\n });\r\n }\r\n\r\n function addRows(table, rowData, isSortable) {\r\n // table can be element or tableID\r\n // data = [{ id=\"\", values=[], attributes=[{}], onClick, hasError }] = oneRow\r\n // isSortable = true/false\r\n \r\n if (typeof table === 'string') {\r\n var table = document.getElementById(table);\r\n }\r\n \r\n const tableBody = table.querySelector('.table__body');\r\n \r\n rowData.forEach(d => {\r\n // build row\r\n const row = document.createElement('div');\r\n row.classList.add('table__row');\r\n \r\n if (d.id) row.id = d.id;\r\n if (d.attributes) {\r\n d.attributes.forEach(a => {\r\n row.setAttribute(a.key, a.value);\r\n });\r\n }\r\n \r\n // Add errorRow class if hasError is true\r\n if (d.hasError) {\r\n row.classList.add('errorRow');\r\n }\r\n \r\n if (d.onClick) {\r\n row.addEventListener('click', e => {\r\n if (e.target === row) {\r\n d.onClick(e);\r\n }\r\n });\r\n row.classList.add('customLink');\r\n }\r\n \r\n if (isSortable) {\r\n var cell = document.createElement('div');\r\n cell.classList.add('dragHandle');\r\n cell.innerHTML = icons.drag;\r\n row.appendChild(cell);\r\n }\r\n \r\n // populate row cells\r\n d.values.forEach(v => {\r\n const cell = document.createElement('div');\r\n cell.innerHTML = v;\r\n row.appendChild(cell);\r\n });\r\n if (d.endIcon) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('endIcon');\r\n cell.innerHTML = d.endIcon;\r\n cell.addEventListener('click', d.endIconCallback);\r\n row.appendChild(cell);\r\n }\r\n \r\n if (d.onCopyClick) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('copyIcon');\r\n cell.innerHTML = icons.copy;\r\n cell.addEventListener('click', d.onCopyClick);\r\n row.appendChild(cell);\r\n }\r\n \r\n tableBody.appendChild(row);\r\n });\r\n }\r\n \r\n\r\n function updateRows(table, rowData, isSortable) {\r\n // table can be element or tableID\r\n // data = [{ id=\"\", values=[], attributes=[{}], onClick, hasError }] = oneRow\r\n // isSortable = true/false\r\n if (typeof table === 'string') {\r\n var table = document.getElementById(table);\r\n }\r\n \r\n const tableBody = table.querySelector('.table__body');\r\n \r\n rowData.forEach(d => {\r\n // get & clear row\r\n const rowId = `#${d.id}`;\r\n const oldRow = tableBody.querySelector(rowId);\r\n oldRow.innerHTML = '';\r\n const newRow = oldRow.cloneNode(true);\r\n tableBody.replaceChild(newRow, oldRow);\r\n \r\n // Remove errorRow class if it exists and hasError is false\r\n if (!d.hasError) {\r\n newRow.classList.remove('errorRow');\r\n }\r\n \r\n // Add errorRow class if hasError is true and the class is not already on the row\r\n if (d.hasError && !newRow.classList.contains('errorRow')) {\r\n newRow.classList.add('errorRow');\r\n }\r\n \r\n if (d.onClick) {\r\n newRow.addEventListener('click', e => {\r\n if (e.target === newRow) {\r\n d.onClick(e);\r\n }\r\n });\r\n newRow.classList.add('customLink');\r\n }\r\n \r\n if (isSortable) {\r\n var cell = document.createElement('div');\r\n cell.classList.add('dragHandle');\r\n cell.innerHTML = icons.drag;\r\n newRow.appendChild(cell);\r\n }\r\n \r\n // populate row cells\r\n d.values.forEach(v => {\r\n const cell = document.createElement('div');\r\n cell.innerHTML = v;\r\n newRow.appendChild(cell);\r\n });\r\n \r\n if (d.endIcon) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('endIcon');\r\n cell.innerHTML = d.endIcon;\r\n cell.addEventListener('click', d.endIconCallback);\r\n newRow.appendChild(cell);\r\n }\r\n \r\n if (d.onCopyClick) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('copyIcon');\r\n cell.innerHTML = icons.copy;\r\n cell.addEventListener('click', d.onCopyClick);\r\n newRow.appendChild(cell);\r\n }\r\n });\r\n }\r\n \r\n\r\n function deleteRow(rowId) {\r\n const row = document.getElementById(rowId);\r\n row.remove();\r\n }\r\n\r\n function clear(table) {\r\n if (typeof table === 'string') {\r\n var table = document.getElementById(table);\r\n }\r\n\r\n const tableBody = table.querySelector('.table__body');\r\n if (tableBody) tableBody.innerHTML = '';\r\n }\r\n\r\n function getRowCount(table) {\r\n if (typeof table === 'string') {\r\n var table = document.getElementById(table);\r\n }\r\n\r\n const tableBody = table.querySelector('.table__body');\r\n\r\n const tableRows = [...tableBody.querySelectorAll('.table__row')];\r\n\r\n return tableRows.length;\r\n }\r\n\r\n // Add the ability to click a header on the the table to sort the table\r\n function sortTableByHeader(table) {\r\n // Query the headers\r\n const headers = table.querySelectorAll('.header div');\r\n\r\n // Track sort directions\r\n const directions = Array.from(headers).map(function (header) {\r\n return '';\r\n });\r\n\r\n // Loop over the headers\r\n [].forEach.call(headers, function (header, index) {\r\n header.addEventListener('click', function () {\r\n // This function will sort the column\r\n sortColumn(index);\r\n });\r\n });\r\n\r\n // Transform the content of given cell in given column\r\n const transform = function (index, content) {\r\n // Get the data type of column\r\n const type = headers[index].getAttribute('data-type');\r\n switch (type) {\r\n case 'number':\r\n return parseFloat(content.replace('', 0).replace(',', '')); \r\n case 'amount':\r\n return parseFloat(content.replace('$', '')); \r\n case 'date':\r\n return Date.parse(content.replace(' ', '')); \r\n case 'string':\r\n default:\r\n return content.replace(' ', ''); \r\n }\r\n };\r\n\r\n const sortColumn = function (index) {\r\n //Loop over the headers, removing the sort order class\r\n [].forEach.call(headers, function (header) {\r\n header.classList.remove('headersortup');\r\n header.classList.remove('headersortdown');\r\n });\r\n\r\n // Get the current direction\r\n const direction = directions[index] || 'asc';\r\n\r\n // A factor based on the direction\r\n const multiplier = direction === 'asc' ? 1 : -1;\r\n\r\n // Query all rows\r\n const tableBody = table.querySelector('.table__body');\r\n const rows = [...tableBody.querySelectorAll('.table__row')];\r\n\r\n // Clone the rows\r\n const newRows = Array.from(rows);\r\n\r\n // Sort rows by the content of cells\r\n newRows.sort(function (rowA, rowB) {\r\n // Get the content of cells\r\n const cellA = rowA.childNodes[index].innerText;\r\n const cellB = rowB.childNodes[index].innerText;\r\n\r\n // Transform the content of cells\r\n var a = transform(index, cellA);\r\n var b = transform(index, cellB);\r\n\r\n // Make string comparison case insensitive\r\n const type = headers[index].getAttribute('data-type');\r\n if (type === 'string') {\r\n a = a.toLowerCase();\r\n b = b.toLowerCase();\r\n }\r\n\r\n // And compare them\r\n switch (true) {\r\n case a > b:\r\n return 1 * multiplier;\r\n case a < b:\r\n return -1 * multiplier;\r\n case a === b:\r\n return 0;\r\n }\r\n });\r\n\r\n // Reverse the direction\r\n directions[index] = direction === 'asc' ? 'desc' : 'asc';\r\n\r\n // Assign the appropriate sort direction class\r\n if (direction === 'asc') {\r\n headers[index].classList.remove('headersortup');\r\n headers[index].classList.add('headersortdown');\r\n } else if (direction === 'desc') {\r\n headers[index].classList.remove('headersortdown');\r\n headers[index].classList.add('headersortup');\r\n }\r\n\r\n // Remove old rows\r\n [].forEach.call(rows, function (row) {\r\n tableBody.removeChild(row);\r\n });\r\n\r\n // Append new row\r\n newRows.forEach(function (newRow) {\r\n tableBody.appendChild(newRow);\r\n });\r\n };\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n addRows,\r\n updateRows,\r\n deleteRow,\r\n clear,\r\n getRowCount,\r\n sortTableByHeader,\r\n };\r\n})();\r\n","var tabs = (function () {\r\n function build(options) {\r\n var active = options.active ? options.active : 0;\r\n // options = {sections=[], active=num, tabNavCallback}\r\n var tabWrap = document.createElement('div');\r\n var tabNav = document.createElement('div');\r\n var tabBody = document.createElement('div');\r\n tabWrap.classList.add('tabs');\r\n tabNav.classList.add('tabs__nav');\r\n tabBody.classList.add('tabs__body');\r\n\r\n options.sections.forEach((sec, index) => {\r\n // build nav item\r\n var navItem = document.createElement('div');\r\n navItem.classList.add('tabs__nav--item');\r\n navItem.setAttribute('section', sec.toLowerCase());\r\n navItem.innerHTML = sec;\r\n // build tab section\r\n var section = document.createElement('div');\r\n var secClass = `${sec.toLowerCase().replace(/ /g, '')}-section`;\r\n section.classList.add('tabs__body--section', secClass);\r\n section.id = sec.toLowerCase();\r\n if (index === active) {\r\n navItem.classList.add('active');\r\n section.classList.add('active');\r\n }\r\n // append them\r\n tabNav.appendChild(navItem);\r\n tabBody.appendChild(section);\r\n });\r\n\r\n tabWrap.appendChild(tabNav);\r\n tabWrap.appendChild(tabBody);\r\n\r\n tabNav.addEventListener('click', event => {\r\n if (!event.target.classList.contains('tabs__nav--item')) return;\r\n if (event.target.classList.contains('active')) return;\r\n\r\n var activeTab = tabNav.querySelector('.active');\r\n var activeSection = tabBody.querySelector('.active');\r\n var targetSection = `.${event.target.innerText.toLowerCase().replace(/ /g, '')}-section`;\r\n targetSection = tabBody.querySelector(targetSection);\r\n\r\n activeTab.classList.remove('active');\r\n event.target.classList.add('active');\r\n activeSection.classList.remove('active');\r\n targetSection.classList.add('active');\r\n\r\n if (options.tabNavCallback)\r\n options.tabNavCallback({\r\n activeSection: event.target.innerText,\r\n });\r\n });\r\n\r\n return tabWrap;\r\n }\r\n\r\n return {\r\n build,\r\n };\r\n})();\r\n\r\nconst TABS = (function () {\r\n const buildTabs = () => {\r\n const tabs = document.createElement('div');\r\n tabs.classList.add('tabs');\r\n return tabs;\r\n };\r\n const buildTabsNav = () => {\r\n const tabsNav = document.createElement('div');\r\n tabsNav.classList.add('tabsNav');\r\n return tabsNav;\r\n };\r\n const buildTabsBody = () => {\r\n const tabsBody = document.createElement('div');\r\n tabsBody.classList.add('tabsBody');\r\n return tabsBody;\r\n };\r\n const buildNavItem = (navText, isActive, index) => {\r\n let ISPValidationCheck = planValidation.returnIspValidation();\r\n let assessmentValidationCheck = planValidation.returnAssessmentValidationData();\r\n\r\n const navItem = document.createElement('div');\r\n navItem.classList.add('tabsNav__item');\r\n navItem.id = `tabNav${index}`;\r\n navItem.innerHTML = `

${navText}

`;\r\n\r\n // create alert div\r\n const navAlertDiv = document.createElement('div');\r\n navAlertDiv.classList.add('tocAlertDiv');\r\n navAlertDiv.id = `navAlert${navText}`;\r\n navAlertDiv.innerHTML = `${icons.error}`;\r\n navItem.appendChild(navAlertDiv);\r\n\r\n planValidation.createTooltip(\r\n 'There is data missing on this tab that is required by DODD',\r\n navAlertDiv,\r\n );\r\n\r\n navAlertDiv.style.display = 'none';\r\n\r\n if (isActive) navItem.classList.add('active');\r\n\r\n // Display Assessment Nav Validation if their are validation errors\r\n if (navText === 'Assessment' && assessmentValidationCheck.complete === false) {\r\n navAlertDiv.style.display = 'flex';\r\n }\r\n\r\n // DIsplay ISP Nav Validation if their are validation errors in the ISP or ISP contact section\r\n if (navText === 'ISP' && (ISPValidationCheck.complete === false || ISPValidationCheck.contactSectionComplete === false || ISPValidationCheck.summaryRisksValidation === false)) {\r\n navAlertDiv.style.display = 'flex';\r\n }\r\n\r\n return navItem;\r\n };\r\n const buildTabSection = (sectionMarkup, isActive, index) => {\r\n const tabSection = document.createElement('div');\r\n tabSection.classList.add('tabsBody__sec');\r\n tabSection.id = `tab${index}`;\r\n tabSection.appendChild(sectionMarkup);\r\n if (isActive) tabSection.classList.add('active');\r\n\r\n return tabSection;\r\n };\r\n\r\n // PUBLIC\r\n //============================================\r\n const build = (options, tabsData) => {\r\n // options = {\r\n // navOnClick: function()\r\n // }\r\n // tabsData = [\r\n // {\r\n // heading: 'Tab 1',\r\n // markup: 'tab 1 markup',\r\n // },\r\n // ];\r\n const active = options.active ? options.active : 0;\r\n\r\n const tabs = buildTabs();\r\n const tabsNav = buildTabsNav();\r\n const tabsBody = buildTabsBody();\r\n\r\n tabsData.forEach((td, index) => {\r\n const isActive = index === active;\r\n const navItem = buildNavItem(td.heading, isActive, index);\r\n const tabSection = buildTabSection(td.markup, isActive, index);\r\n\r\n tabsNav.appendChild(navItem);\r\n tabsBody.appendChild(tabSection);\r\n });\r\n\r\n tabsNav.addEventListener('click', e => {\r\n if (!e.target.classList.contains('tabsNav__item') || tabsNav.classList.contains('disabled')) {\r\n return;\r\n }\r\n\r\n const targetTab = e.target;\r\n const targetTabIndex = targetTab.id.replace('tabNav', '');\r\n const targetSectionId = `#tab${targetTabIndex}`;\r\n const targetSection = document.querySelector(targetSectionId);\r\n const activeTab = tabsNav.querySelector('.active');\r\n const activeSection = tabsBody.querySelector('.tabsBody > .active');\r\n\r\n activeTab.classList.remove('active');\r\n activeSection.classList.remove('active');\r\n\r\n targetTab.classList.add('active');\r\n targetSection.classList.add('active');\r\n\r\n options.navOnClick(targetTabIndex);\r\n });\r\n\r\n tabsNav.classList.add('disabled');\r\n\r\n tabs.appendChild(tabsNav);\r\n tabs.appendChild(tabsBody);\r\n\r\n return tabs;\r\n };\r\n const toggleNavStatus = (tabs, status) => {\r\n const tabsNav = tabs.querySelector('.tabsNav');\r\n\r\n if (status === 'enable') {\r\n tabsNav.classList.remove('disabled');\r\n } else {\r\n tabsNav.classList.add('disabled');\r\n }\r\n };\r\n\r\n return {\r\n build,\r\n toggleNavStatus,\r\n };\r\n})();\r\n","var form = (function() {\r\n function build(options) {\r\n // options = {\r\n // formElements = [\r\n // {\r\n // tag: input || textarea || select || button,\r\n // opts: options needed for above build func\r\n // }\r\n // ]\r\n // }\r\n\r\n // setting options\r\n var formInputs = options.formElements;\r\n // build form\r\n var form = document.createElement('div');\r\n\r\n formInputs.forEach(fi => {\r\n var tag = fi.tag;\r\n switch(tag) {\r\n case 'input': {\r\n var INPUT = input.build(fi.opts);\r\n form.appendChild(INPUT);\r\n break;\r\n }\r\n case 'select': {\r\n var SELECT = dropdown.build(fi.opts);\r\n form.appendChild(SELECT);\r\n break;\r\n }\r\n }\r\n });\r\n\r\n return form;\r\n\r\n }\r\n\r\n return {\r\n build\r\n }\r\n})();\r\n\r\nvar tmpReports = (function() {\r\n function init() {\r\n DOM.clearActionCenter();\r\n\r\n var formElements = [\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: 'Provider Name',\r\n type: 'text',\r\n style: 'secondary',\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: 'Address',\r\n type: 'text',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: 'Fiscal Telephone',\r\n type: 'tel',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: 'Fiscal Email',\r\n type: 'email',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: 'Fiscal Fax',\r\n type: 'tel',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: 'Authorization #',\r\n type: 'num',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: 'Provider Invoice #',\r\n type: 'num',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `Individual's Name`,\r\n type: 'text',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `Direct Service Staff Name(s)`,\r\n type: 'text',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `Person Completing Report`,\r\n type: 'text',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `VR Counselor/Contractor`,\r\n type: 'text',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `Invoice Date`,\r\n type: 'date',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'select',\r\n opts: {\r\n label: `Invoice Status`,\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `Service Start Date`,\r\n type: 'date',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `Service End Date`,\r\n type: 'date',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `Service Description`,\r\n type: 'textarea',\r\n style: 'secondary'\r\n }\r\n },\r\n ];\r\n\r\n var reportForm = form.build({\r\n formElements,\r\n formStyle: 'secondary'\r\n });\r\n\r\n DOM.ACTIONCENTER.appendChild(reportForm);\r\n }\r\n return {\r\n init\r\n }\r\n})();","const icons = {\r\n // paperclip\r\n attachment: `\r\n \r\n \r\n `,\r\n // location symbol with !\r\n absent: `\r\n \r\n \r\n `,\r\n // plus sign *Adding/inserting records\r\n add: `\r\n \r\n \r\n `,\r\n arrowBack: `\r\n \r\n \r\n `,\r\n arrowNext: `\r\n \r\n \r\n `,\r\n // notification bell\r\n bell: `\r\n \r\n \r\n `,\r\n // calendar *USAGE: Scheduling Module\r\n calendar: `\r\n \r\n \r\n `,\r\n camera: `\r\n \r\n \r\n \r\n `,\r\n car: `\r\n \r\n \r\n `,\r\n // checkmark *USAGE: Done, Apply\r\n checkmark: `\r\n \r\n \r\n `,\r\n //Circle with horizontal line through center USAGE: clearing input fields\r\n clear: `\r\n \r\n \r\n `,\r\n close: `\r\n \r\n \r\n `,\r\n copy: `\r\n \r\n \r\n `,\r\n edit: `\r\n \r\n \r\n `,\r\n // trashcan\r\n delete: `\r\n \r\n \r\n `,\r\n // person with +\r\n deSelectAll: `\r\n \r\n \r\n `,\r\n //Half Square with arrow pointing down into it. USAGE: Downloads\r\n download: `\r\n \r\n \r\n `,\r\n drag: `\r\n \r\n \r\n `,\r\n edit: `\r\n \r\n \r\n `,\r\n eraser: `\r\n \r\n `,\r\n //Filled in circle with !\r\n error: `\r\n \r\n `,\r\n ellipsis: `\r\n \r\n \r\n `,\r\n filter: `\r\n \r\n \r\n `,\r\n // circle with '?'\r\n help: `\r\n \r\n \r\n `,\r\n info: `\r\n \r\n \r\n `,\r\n keyArrowRight: `\r\n \r\n `,\r\n keyArrowLeft: `\r\n \r\n `,\r\n keyArrowUp: `\r\n \r\n `,\r\n keyArrowDown: `\r\n \r\n `,\r\n // quote box\r\n message: `\r\n \r\n \r\n `,\r\n multiSelect: `\r\n \r\n \r\n `,\r\n // circle with slash\r\n no: `\r\n \r\n \r\n `,\r\n note: `\r\n \r\n \r\n `,\r\n openNew: `\r\n \r\n \r\n `,\r\n // icon for new outcome button\r\n outcomeNew: `\r\n \r\n \r\n `,\r\n passwordShow: `\r\n \r\n \r\n `,\r\n passwordHide: `\r\n \r\n \r\n `,\r\n people: `\r\n \r\n \r\n `,\r\n //Floppy Disk *USAGE: Saving or Updating Records\r\n save: `\r\n \r\n \r\n `,\r\n // search icon\r\n search: `\r\n \r\n \r\n `,\r\n // stamp icon/aproval\r\n stamp: `\r\n \r\n `,\r\n //Filled in triangle with ! in center\r\n warning: `\r\n \r\n `,\r\n refresh: `\r\n \r\n \r\n \r\n `,\r\n selectAll: `\r\n \r\n \r\n `,\r\n // Eyeball\r\n show: `\r\n \r\n \r\n `,\r\n //Paper airplane (send email type of icon) USAGE: Data updates that notify users\r\n send: `\r\n \r\n \r\n \r\n \r\n `,\r\n // Thumbs up\r\n thumbUp: `\r\n \r\n \r\n `,\r\n // Thumbs down\r\n thumbDown: `\r\n \r\n \r\n `,\r\n // Thumbs Up and Down next to each other\r\n thumbUpDown: `\r\n \r\n \r\n `,\r\n // Mic - Speech to text\r\n microphone: `\r\n \r\n \r\n `,\r\n // Mic that has its mic filled in - Speech to text\r\n microphoneFilled: `\r\n \r\n \r\n `,\r\n // Medicine bottle - eMAR module icon\r\n medicineBottle: `\r\n \r\n \r\n \r\n `,\r\n // Group of people - used in responsible party\r\n peopleGroup: `\r\n \r\n \r\n `,\r\n // PDF Icon - used in Forms Module\r\n PDFForm: `\r\n \r\n \r\n `,\r\n attachmentSmall: ` \r\n \r\n \r\n `,\r\n phone: `\r\n \r\n `,\r\n Empty: ` \r\n \r\n `,\r\n Email: ` \r\n \r\n \r\n `,\r\n Delete: `\r\n \r\n \r\n `,\r\n Gear: `\r\n \r\n \r\n `,\r\n PDFFormWhite: `\r\n \r\n \r\n `,\r\n workflow: `\r\n \r\n \r\n `,\r\n};\r\n","!function(t,e){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var n=e();for(var r in n)(\"object\"==typeof exports?exports:t)[r]=n[r]}}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p=\"\",e(0)}([function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}n(84);var o=n(41),i=r(o),a=function(){i[\"default\"].addPickerToOtherInputs(),i[\"default\"].supportsDateInput()||i[\"default\"].addPickerToDateInputs()};a(),document.addEventListener(\"DOMContentLoaded\",function(){a()}),document.querySelector(\"body\").addEventListener(\"mousedown\",function(){a()})},function(t,e,n){t.exports=!n(11)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(9),o=n(32),i=n(25),a=Object.defineProperty;e.f=n(1)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(u){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(59),o=n(16);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(4),o=n(14);t.exports=n(1)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(23)(\"wks\"),o=n(15),i=n(2).Symbol,a=\"function\"==typeof i,u=t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)(\"Symbol.\"+t))};u.store=r},function(t,e){var n=t.exports={version:\"2.4.0\"};\"number\"==typeof __e&&(__e=n)},function(t,e,n){var r=n(12);t.exports=function(t){if(!r(t))throw TypeError(t+\" is not an object!\");return t}},function(t,e,n){var r=n(2),o=n(8),i=n(56),a=n(6),u=\"prototype\",s=function(t,e,n){var c,l,f,d=t&s.F,p=t&s.G,h=t&s.S,y=t&s.P,m=t&s.B,v=t&s.W,b=p?o:o[e]||(o[e]={}),g=b[u],x=p?r:h?r[e]:(r[e]||{})[u];p&&(n=e);for(c in n)l=!d&&x&&void 0!==x[c],l&&c in b||(f=l?x[c]:n[c],b[c]=p&&\"function\"!=typeof x[c]?n[c]:m&&l?i(f,r):v&&x[c]==f?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[u]=t[u],e}(f):y&&\"function\"==typeof f?i(Function.call,f):f,y&&((b.virtual||(b.virtual={}))[c]=f,t&s.R&&g&&!g[c]&&a(g,c,f)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},function(t,e){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,e,n){var r=n(38),o=n(17);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+r).toString(36))}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,e){t.exports={}},function(t,e){t.exports=!0},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var r=n(4).f,o=n(3),i=n(7)(\"toStringTag\");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e,n){var r=n(23)(\"keys\"),o=n(15);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e,n){var r=n(2),o=\"__core-js_shared__\",i=r[o]||(r[o]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(12);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if(\"function\"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e,n){var r=n(2),o=n(8),i=n(19),a=n(27),u=n(4).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});\"_\"==t.charAt(0)||t in e||u(e,t,{value:a.f(t)})}},function(t,e,n){e.f=n(7)},function(t,e){\"use strict\";e.__esModule=!0,e[\"default\"]=function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}e.__esModule=!0;var o=n(45),i=r(o);e[\"default\"]=function(){function t(t,e){for(var n=0;n\";for(e.style.display=\"none\",n(58).appendChild(e),e.src=\"javascript:\",t=e.contentWindow.document,t.open(),t.write(o+\"script\"+a+\"document.F=Object\"+o+\"/script\"+a),t.close(),c=t.F;r--;)delete c[s][i[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(u[s]=r(t),n=new u,u[s]=null,n[a]=t):n=c(),void 0===e?n:o(n,e)}},function(t,e,n){var r=n(4),o=n(9),i=n(13);t.exports=n(1)?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),u=a.length,s=0;u>s;)r.f(t,n=a[s++],e[n]);return t}},function(t,e,n){var r=n(38),o=n(17).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(3),o=n(5),i=n(55)(!1),a=n(22)(\"IE_PROTO\");t.exports=function(t,e){var n,u=o(t),s=0,c=[];for(n in u)n!=a&&r(u,n)&&c.push(n);for(;e.length>s;)r(u,n=e[s++])&&(~i(c,n)||c.push(n));return c}},function(t,e,n){t.exports=n(6)},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}function o(t,e){for(t=String(t),e=e||2;t.length0?\"-\":\"+\")+o(100*Math.floor(Math.abs(w)/60)+Math.abs(w)%60,4),S:[\"th\",\"st\",\"nd\",\"rd\"][h%10>3?0:(h%100-h%10!=10)*h%10],W:S,N:O};return s.replace(t,function(t){return t in D?D[t]:t.slice(1,t.length-1)})}}();l.masks={\"default\":\"ddd mmm dd yyyy HH:MM:ss\",shortDate:\"m/d/yy\",mediumDate:\"mmm d, yyyy\",longDate:\"mmmm d, yyyy\",fullDate:\"dddd, mmmm d, yyyy\",shortTime:\"h:MM TT\",mediumTime:\"h:MM:ss TT\",longTime:\"h:MM:ss TT Z\",isoDate:\"yyyy-mm-dd\",isoTime:\"HH:MM:ss\",isoDateTime:\"yyyy-mm-dd'T'HH:MM:sso\",isoUtcDateTime:\"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\",expiresHeaderFormat:\"ddd, dd mmm yyyy HH:MM:ss Z\"},l.i18n={dayNames:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],monthNames:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\",\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]},e[\"default\"]=l},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(44),i=r(o),a=n(28),u=r(a),s=n(29),c=r(s),l=n(43),f=r(l),d=n(42),p=r(d),h=n(40),y=r(h),m=function(){function t(e){var n=this;(0,u[\"default\"])(this,t),this.element=e,this.element.setAttribute(\"data-has-picker\",\"\"),this.locale=this.element.getAttribute(\"lang\")||document.body.getAttribute(\"lang\")||\"en\",this.format=this.element.getAttribute(\"date-format\")||document.body.getAttribute(\"date-format\")||this.element.getAttribute(\"data-date-format\")||document.body.getAttribute(\"data-date-format\")||\"yyyy-mm-dd\",this.localeText=this.getLocaleText(),(0,i[\"default\"])(this.element,{valueAsDate:{get:function(){if(!n.element.value)return null;var t=n.format||\"yyyy-mm-dd\",e=n.element.value.match(/(\\d+)/g),r=0,o={};return t.replace(/(yyyy|dd|mm)/g,function(t){o[t]=r++}),new Date(e[o.yyyy],e[o.mm]-1,e[o.dd])},set:function(t){n.element.value=(0,y[\"default\"])(t,n.format)}},valueAsNumber:{get:function(){return n.element.value?n.element.valueAsDate.valueOf():NaN},set:function(t){n.element.valueAsDate=new Date(t)}}});var r=function(t){var e=n.element;e.locale=n.localeText,f[\"default\"].attachTo(e)};this.element.addEventListener(\"focus\",r),this.element.addEventListener(\"mouseup\",r),this.element.addEventListener(\"keydown\",function(t){var e=new Date;switch(t.keyCode){case 9:case 27:f[\"default\"].hide();break;case 38:n.element.valueAsDate&&(e.setDate(n.element.valueAsDate.getDate()+1),n.element.valueAsDate=e,f[\"default\"].pingInput());break;case 40:n.element.valueAsDate&&(e.setDate(n.element.valueAsDate.getDate()-1),n.element.valueAsDate=e,f[\"default\"].pingInput())}f[\"default\"].sync()}),this.element.addEventListener(\"keyup\",function(t){f[\"default\"].sync()})}return(0,c[\"default\"])(t,[{key:\"getLocaleText\",value:function(){var t=this.locale.toLowerCase();for(var e in p[\"default\"]){var n=e.split(\"_\");if(n.map(function(t){return t.toLowerCase()}),~n.indexOf(t)||~n.indexOf(t.substr(0,2)))return p[\"default\"][e]}}}],[{key:\"supportsDateInput\",value:function(){var t=document.createElement(\"input\");t.setAttribute(\"type\",\"date\");var e=\"not-a-date\";return t.setAttribute(\"value\",e),!(t.value===e)}},{key:\"addPickerToDateInputs\",value:function(){var e=document.querySelectorAll('input[type=\"date\"]:not([data-has-picker])'),n=e.length;if(!n)return!1;for(var r=0;r\"],n=0,r=this.locale.days.length;n'+this.locale.days[n]+\"\");this.daysHead.innerHTML=e.join(\"\"),t.createRangeSelect(this.month,0,11,this.locale.months)}},{key:\"refreshDaysMatrix\",value:function(){this.refreshLocale();for(var e=this.date.getFullYear(),n=this.date.getMonth(),r=new Date(e,n,1).getDay(),o=new Date(this.date.getFullYear(),n+1,0).getDate(),i=t.absoluteDate(this.input.valueAsDate)||!1,a=i&&e===i.getFullYear()&&n===i.getMonth(),u=[],s=0;s\":\"\")+\"\\n \\n \"),s+1<=r)u.push(\"\");else{var c=s+1-r,l=a&&i.getDate()===c;u.push(\"\\n \"+c+\"\\n \")}this.days.innerHTML=u.join(\"\")}},{key:\"pingInput\",value:function(){var t=void 0,e=void 0;try{t=new Event(\"input\"),e=new Event(\"change\")}catch(n){t=document.createEvent(\"KeyboardEvent\"),t.initEvent(\"input\",!0,!1),e=document.createEvent(\"KeyboardEvent\"),e.initEvent(\"change\",!0,!1)}this.input.dispatchEvent(t),this.input.dispatchEvent(e)}}],[{key:\"createRangeSelect\",value:function(t,e,n,r){t.innerHTML=\"\";for(var o=e;o<=n;++o){var i=document.createElement(\"option\");t.appendChild(i);var a=r?r[o-e]:o;i.text=a,i.value=o}return t}},{key:\"absoluteDate\",value:function(t){return t&&new Date(t.getTime()+60*t.getTimezoneOffset()*1e3)}}]),t}();window.thePicker=new s,e[\"default\"]=window.thePicker},function(t,e,n){t.exports={\"default\":n(49),__esModule:!0}},function(t,e,n){t.exports={\"default\":n(50),__esModule:!0}},function(t,e,n){t.exports={\"default\":n(51),__esModule:!0}},function(t,e,n){t.exports={\"default\":n(52),__esModule:!0}},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}e.__esModule=!0;var o=n(47),i=r(o),a=n(46),u=r(a),s=\"function\"==typeof u[\"default\"]&&\"symbol\"==typeof i[\"default\"]?function(t){return typeof t}:function(t){return t&&\"function\"==typeof u[\"default\"]&&t.constructor===u[\"default\"]?\"symbol\":typeof t};e[\"default\"]=\"function\"==typeof u[\"default\"]&&\"symbol\"===s(i[\"default\"])?function(t){return\"undefined\"==typeof t?\"undefined\":s(t)}:function(t){return t&&\"function\"==typeof u[\"default\"]&&t.constructor===u[\"default\"]?\"symbol\":\"undefined\"==typeof t?\"undefined\":s(t)}},function(t,e,n){n(73);var r=n(8).Object;t.exports=function(t,e){return r.defineProperties(t,e)}},function(t,e,n){n(74);var r=n(8).Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},function(t,e,n){n(77),n(75),n(78),n(79),t.exports=n(8).Symbol},function(t,e,n){n(76),n(80),t.exports=n(27).f(\"iterator\")},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e){t.exports=function(){}},function(t,e,n){var r=n(5),o=n(70),i=n(69);t.exports=function(t){return function(e,n,a){var u,s=r(e),c=o(s.length),l=i(a,c);if(t&&n!=n){for(;c>l;)if(u=s[l++],u!=u)return!0}else for(;c>l;l++)if((t||l in s)&&s[l]===n)return t||l||0;return!t&&-1}}},function(t,e,n){var r=n(53);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){var r=n(13),o=n(37),i=n(20);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,u=n(t),s=i.f,c=0;u.length>c;)s.call(t,a=u[c++])&&e.push(a);return e}},function(t,e,n){t.exports=n(2).document&&document.documentElement},function(t,e,n){var r=n(30);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==r(t)?t.split(\"\"):Object(t)}},function(t,e,n){var r=n(30);t.exports=Array.isArray||function(t){return\"Array\"==r(t)}},function(t,e,n){\"use strict\";var r=n(34),o=n(14),i=n(21),a={};n(6)(a,n(7)(\"iterator\"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+\" Iterator\")}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){var r=n(13),o=n(5);t.exports=function(t,e){for(var n,i=o(t),a=r(i),u=a.length,s=0;u>s;)if(i[n=a[s++]]===e)return n}},function(t,e,n){var r=n(15)(\"meta\"),o=n(12),i=n(3),a=n(4).f,u=0,s=Object.isExtensible||function(){return!0},c=!n(11)(function(){return s(Object.preventExtensions({}))}),l=function(t){a(t,r,{value:{i:\"O\"+ ++u,w:{}}})},f=function(t,e){if(!o(t))return\"symbol\"==typeof t?t:(\"string\"==typeof t?\"S\":\"P\")+t;if(!i(t,r)){if(!s(t))return\"F\";if(!e)return\"E\";l(t)}return t[r].i},d=function(t,e){if(!i(t,r)){if(!s(t))return!0;if(!e)return!1;l(t)}return t[r].w},p=function(t){return c&&h.NEED&&s(t)&&!i(t,r)&&l(t),t},h=t.exports={KEY:r,NEED:!1,fastKey:f,getWeak:d,onFreeze:p}},function(t,e,n){var r=n(20),o=n(14),i=n(5),a=n(25),u=n(3),s=n(32),c=Object.getOwnPropertyDescriptor;e.f=n(1)?c:function(t,e){if(t=i(t),e=a(e,!0),s)try{return c(t,e)}catch(n){}if(u(t,e))return o(!r.f.call(t,e),t[e])}},function(t,e,n){var r=n(5),o=n(36).f,i={}.toString,a=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u=function(t){try{return o(t)}catch(e){return a.slice()}};t.exports.f=function(t){return a&&\"[object Window]\"==i.call(t)?u(t):o(r(t))}},function(t,e,n){var r=n(3),o=n(71),i=n(22)(\"IE_PROTO\"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e,n){var r=n(24),o=n(16);t.exports=function(t){return function(e,n){var i,a,u=String(o(e)),s=r(n),c=u.length;return s<0||s>=c?t?\"\":void 0:(i=u.charCodeAt(s),i<55296||i>56319||s+1===c||(a=u.charCodeAt(s+1))<56320||a>57343?t?u.charAt(s):i:t?u.slice(s,s+2):(i-55296<<10)+(a-56320)+65536)}}},function(t,e,n){var r=n(24),o=Math.max,i=Math.min;t.exports=function(t,e){return t=r(t),t<0?o(t+e,0):i(t,e)}},function(t,e,n){var r=n(24),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(16);t.exports=function(t){return Object(r(t))}},function(t,e,n){\"use strict\";var r=n(54),o=n(62),i=n(18),a=n(5);t.exports=n(33)(Array,\"Array\",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):\"keys\"==e?o(0,n):\"values\"==e?o(0,t[n]):o(0,[n,t[n]])},\"values\"),i.Arguments=i.Array,r(\"keys\"),r(\"values\"),r(\"entries\")},function(t,e,n){var r=n(10);r(r.S+r.F*!n(1),\"Object\",{defineProperties:n(35)})},function(t,e,n){var r=n(10);r(r.S+r.F*!n(1),\"Object\",{defineProperty:n(4).f})},function(t,e){},function(t,e,n){\"use strict\";var r=n(68)(!0);n(33)(String,\"String\",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){\"use strict\";var r=n(2),o=n(3),i=n(1),a=n(10),u=n(39),s=n(64).KEY,c=n(11),l=n(23),f=n(21),d=n(15),p=n(7),h=n(27),y=n(26),m=n(63),v=n(57),b=n(60),g=n(9),x=n(5),M=n(25),w=n(14),S=n(34),O=n(66),D=n(65),T=n(4),_=n(13),A=D.f,k=T.f,E=O.f,j=r.Symbol,C=r.JSON,N=C&&C.stringify,L=\"prototype\",P=p(\"_hidden\"),F=p(\"toPrimitive\"),J={}.propertyIsEnumerable,H=l(\"symbol-registry\"),I=l(\"symbols\"),Y=l(\"op-symbols\"),R=Object[L],z=\"function\"==typeof j,U=r.QObject,B=!U||!U[L]||!U[L].findChild,W=i&&c(function(){return 7!=S(k({},\"a\",{get:function(){return k(this,\"a\",{value:7}).a}})).a})?function(t,e,n){var r=A(R,e);r&&delete R[e],k(t,e,n),r&&t!==R&&k(R,e,r)}:k,Z=function(t){var e=I[t]=S(j[L]);return e._k=t,e},G=z&&\"symbol\"==typeof j.iterator?function(t){return\"symbol\"==typeof t}:function(t){return t instanceof j},K=function(t,e,n){return t===R&&K(Y,e,n),g(t),e=M(e,!0),g(n),o(I,e)?(n.enumerable?(o(t,P)&&t[P][e]&&(t[P][e]=!1),n=S(n,{enumerable:w(0,!1)})):(o(t,P)||k(t,P,w(1,{})),t[P][e]=!0),W(t,e,n)):k(t,e,n)},V=function(t,e){g(t);for(var n,r=v(e=x(e)),o=0,i=r.length;i>o;)K(t,n=r[o++],e[n]);return t},q=function(t,e){return void 0===e?S(t):V(S(t),e)},Q=function(t){var e=J.call(this,t=M(t,!0));return!(this===R&&o(I,t)&&!o(Y,t))&&(!(e||!o(this,t)||!o(I,t)||o(this,P)&&this[P][t])||e)},X=function(t,e){if(t=x(t),e=M(e,!0),t!==R||!o(I,e)||o(Y,e)){var n=A(t,e);return!n||!o(I,e)||o(t,P)&&t[P][e]||(n.enumerable=!0),n}},$=function(t){for(var e,n=E(x(t)),r=[],i=0;n.length>i;)o(I,e=n[i++])||e==P||e==s||r.push(e);return r},tt=function(t){for(var e,n=t===R,r=E(n?Y:x(t)),i=[],a=0;r.length>a;)!o(I,e=r[a++])||n&&!o(R,e)||i.push(I[e]);return i};z||(j=function(){if(this instanceof j)throw TypeError(\"Symbol is not a constructor!\");var t=d(arguments.length>0?arguments[0]:void 0),e=function(n){this===R&&e.call(Y,n),o(this,P)&&o(this[P],t)&&(this[P][t]=!1),W(this,t,w(1,n))};return i&&B&&W(R,t,{configurable:!0,set:e}),Z(t)},u(j[L],\"toString\",function(){return this._k}),D.f=X,T.f=K,n(36).f=O.f=$,n(20).f=Q,n(37).f=tt,i&&!n(19)&&u(R,\"propertyIsEnumerable\",Q,!0),h.f=function(t){return Z(p(t))}),a(a.G+a.W+a.F*!z,{Symbol:j});for(var et=\"hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables\".split(\",\"),nt=0;et.length>nt;)p(et[nt++]);for(var et=_(p.store),nt=0;et.length>nt;)y(et[nt++]);a(a.S+a.F*!z,\"Symbol\",{\"for\":function(t){return o(H,t+=\"\")?H[t]:H[t]=j(t)},keyFor:function(t){if(G(t))return m(H,t);throw TypeError(t+\" is not a symbol!\")},useSetter:function(){B=!0},useSimple:function(){B=!1}}),a(a.S+a.F*!z,\"Object\",{create:q,defineProperty:K,defineProperties:V,getOwnPropertyDescriptor:X,getOwnPropertyNames:$,getOwnPropertySymbols:tt}),C&&a(a.S+a.F*(!z||c(function(){var t=j();return\"[null]\"!=N([t])||\"{}\"!=N({a:t})||\"{}\"!=N(Object(t))})),\"JSON\",{stringify:function(t){if(void 0!==t&&!G(t)){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);return e=r[1],\"function\"==typeof e&&(n=e),!n&&b(e)||(e=function(t,e){if(n&&(e=n.call(this,t,e)),!G(e))return e}),r[1]=e,N.apply(C,r)}}}),j[L][F]||n(6)(j[L],F,j[L].valueOf),f(j,\"Symbol\"),f(Math,\"Math\",!0),f(r.JSON,\"JSON\",!0)},function(t,e,n){n(26)(\"asyncIterator\")},function(t,e,n){n(26)(\"observable\")},function(t,e,n){n(72);for(var r=n(2),o=n(6),i=n(18),a=n(7)(\"toStringTag\"),u=[\"NodeList\",\"DOMTokenList\",\"MediaList\",\"StyleSheetList\",\"CSSRuleList\"],s=0;s<5;s++){var c=u[s],l=r[c],f=l&&l.prototype;f&&!f[a]&&o(f,a,c),i[c]=i.Array}},function(t,e,n){e=t.exports=n(82)(),e.push([t.id,\"date-input-polyfill{background:#fff;color:#000;text-shadow:none;border:0;padding:0;height:auto;width:auto;line-height:normal;font-family:sans-serif;font-size:14px;position:absolute!important;text-align:center;box-shadow:0 3px 10px 1px rgba(0,0,0,.22);cursor:default;z-index:1;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden;display:block}date-input-polyfill[data-open=false]{visibility:hidden;z-index:-100!important;top:0}date-input-polyfill[data-open=true]{visibility:visible}date-input-polyfill select,date-input-polyfill table,date-input-polyfill td,date-input-polyfill th{background:#fff;color:#000;text-shadow:none;border:0;padding:0;height:auto;width:auto;line-height:normal;font-family:sans-serif;font-size:14px;box-shadow:none;font-family:Lato,Helvetica,Arial,sans-serif}date-input-polyfill button,date-input-polyfill select{border:0;border-radius:0;border-bottom:1px solid #dadfe1;height:24px;vertical-align:top;-webkit-appearance:none;-moz-appearance:none}date-input-polyfill .monthSelect-wrapper{width:55%;display:inline-block}date-input-polyfill .yearSelect-wrapper{width:25%;display:inline-block}date-input-polyfill select{width:100%}date-input-polyfill select:first-of-type{border-right:1px solid #dadfe1;border-radius:5px 0 0 0;-moz-border-radius:5px 0 0 0;-webkit-border-radius:5px 0 0 0}date-input-polyfill button{width:20%;background:#dadfe1;border-radius:0 5px 0 0;-moz-border-radius:0 5px 0 0;-webkit-border-radius:0 5px 0 0}date-input-polyfill button:hover{background:#eee}date-input-polyfill table{border-collapse:separate!important;border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;overflow:hidden;max-width:280px;width:280px}date-input-polyfill td,date-input-polyfill th{width:32px;padding:4px;text-align:center;box-sizing:content-box}date-input-polyfill td[data-day]{cursor:pointer}date-input-polyfill td[data-day]:hover{background:#dadfe1}date-input-polyfill [data-selected]{font-weight:700;background:#d8eaf6}\",\"\"]);\r\n},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e=0&&g.splice(e,1)}function u(t){var e=document.createElement(\"style\");return e.type=\"text/css\",i(t,e),e}function s(t){var e=document.createElement(\"link\");return e.rel=\"stylesheet\",i(t,e),e}function c(t,e){var n,r,o;if(e.singleton){var i=b++;n=v||(v=u(e)),r=l.bind(null,n,i,!1),o=l.bind(null,n,i,!0)}else t.sourceMap&&\"function\"==typeof URL&&\"function\"==typeof URL.createObjectURL&&\"function\"==typeof URL.revokeObjectURL&&\"function\"==typeof Blob&&\"function\"==typeof btoa?(n=s(e),r=d.bind(null,n),o=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=u(e),r=f.bind(null,n),o=function(){a(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else o()}}function l(t,e,n,r){var o=n?\"\":r.css;if(t.styleSheet)t.styleSheet.cssText=x(e,o);else{var i=document.createTextNode(o),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function f(t,e){var n=e.css,r=e.media;if(r&&t.setAttribute(\"media\",r),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function d(t,e){var n=e.css,r=e.sourceMap;r&&(n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\");var o=new Blob([n],{type:\"text/css\"}),i=t.href;t.href=URL.createObjectURL(o),i&&URL.revokeObjectURL(i)}var p={},h=function(t){var e;return function(){return\"undefined\"==typeof e&&(e=t.apply(this,arguments)),e}},y=h(function(){return/msie [6-9]\\b/.test(window.navigator.userAgent.toLowerCase())}),m=h(function(){return document.head||document.getElementsByTagName(\"head\")[0]}),v=null,b=0,g=[];t.exports=function(t,e){e=e||{},\"undefined\"==typeof e.singleton&&(e.singleton=y()),\"undefined\"==typeof e.insertAt&&(e.insertAt=\"bottom\");var n=o(t);return r(n,e),function(t){for(var i=[],a=0;a 1) return num;\r\n return `0${num}`;\r\n }\r\n\r\n // PUBLIC\r\n //------------------------------------\r\n // GET\r\n function getTodaysDateObj() {\r\n const todaysDate = new Date();\r\n todaysDate.setHours(0, 0, 0, 0);\r\n return todaysDate;\r\n }\r\n function getTodaysDateISOString() {\r\n const todaysDate = new Date();\r\n todaysDate.setHours(0, 0, 0, 0);\r\n const dd = todaysDate.getDate();\r\n const mm = todaysDate.getMonth() + 1;\r\n const yyyy = todaysDate.getFullYear();\r\n return `${yyyy}-${mm}-${dd}`;\r\n }\r\n function getDaysInMonth(dirtyDate) {\r\n var date = cloneDate(dirtyDate);\r\n var year = date.getFullYear();\r\n var monthIndex = date.getMonth();\r\n var lastDayOfMonth = new Date(0);\r\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\r\n lastDayOfMonth.setHours(0, 0, 0, 0);\r\n return lastDayOfMonth.getDate();\r\n }\r\n // ADD\r\n function addHours(date, amount) {\r\n const newDateValue = +toDate(date) + amount * MILLISECONDS_IN_HOUR; // Add hours converted to milliseconds\r\n return new Date(newDateValue);\r\n }\r\n function addDays(dirtyDate, dirtyAmount) {\r\n var date = cloneDate(dirtyDate);\r\n var amount = toInteger(dirtyAmount);\r\n date.setDate(date.getDate() + amount);\r\n return date;\r\n }\r\n function addWeeks(date, amount) {\r\n const days = amount * 7;\r\n return addDays(date, days);\r\n }\r\n function addMonths(dirtyDate, dirtyAmount) {\r\n var date = cloneDate(dirtyDate);\r\n var amount = toInteger(dirtyAmount);\r\n var desiredMonth = date.getMonth() + amount;\r\n var dateWithDesiredMonth = new Date(0);\r\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1);\r\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\r\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\r\n // Set the last day of the new month\r\n // if the original date was the last day of the longer month\r\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()));\r\n return date;\r\n }\r\n function addYears(dirtyDate, dirtyAmount) {\r\n var amount = toInteger(dirtyAmount);\r\n return addMonths(dirtyDate, amount * 12);\r\n }\r\n // SUB\r\n function subHours(date, amount) {\r\n return addHours(date, -amount);\r\n }\r\n function subDays(dirtyDate, dirtyAmount) {\r\n var amount = toInteger(dirtyAmount);\r\n return addDays(dirtyDate, -amount);\r\n }\r\n function subWeeks(date, amount) {\r\n return addWeeks(date, -amount);\r\n }\r\n function subMonths(date, amount) {\r\n return addMonths(date, -amount);\r\n }\r\n function subYears(dirtyDate, dirtyAmount) {\r\n var amount = toInteger(dirtyAmount);\r\n return addYears(dirtyDate, -amount);\r\n }\r\n // END/START\r\n function endOfWeek(dirtyDate, dirtyOptions) {\r\n if (arguments.length < 1) {\r\n throw new TypeError(`1 argument required, but only ${arguments.length} present`);\r\n }\r\n\r\n let options = dirtyOptions || {};\r\n\r\n const weekStartsOn =\r\n options.weekStartsOn === null || options.weekStartsOn === undefined ? 0 : UTIL.toInteger(options.weekStartsOn);\r\n\r\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\r\n throw new RangeError(`weekStartsOn must be between 0 and 6 inclusively`);\r\n }\r\n\r\n const date = cloneDate(dirtyDate);\r\n const day = date.getDay();\r\n const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\r\n\r\n date.setDate(date.getDate() + diff);\r\n date.setHours(23, 59, 59, 999);\r\n return date;\r\n }\r\n function startDayOfWeek(dirtyDate, dirtyOptions) {\r\n if (arguments.length < 1) {\r\n throw new TypeError(`1 argument required, but only ${arguments.length} present`);\r\n }\r\n\r\n let options = dirtyOptions || {};\r\n\r\n const weekStartsOn =\r\n options.weekStartsOn === null || options.weekStartsOn === undefined ? 0 : util.toInteger(options.weekStartsOn);\r\n\r\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\r\n throw new RangeError(`weekStartsOn must be between 0 and 6 inclusively`);\r\n }\r\n\r\n const date = cloneDate(dirtyDate);\r\n const day = date.getDay();\r\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\r\n date.setDate(date.getDate() - diff);\r\n date.setHours(0, 0, 0, 0);\r\n return date;\r\n }\r\n function startOfDay(dirtyDate) {\r\n const date = toDate(dirtyDate);\r\n date.setHours(0, 0, 0, 0);\r\n return date;\r\n }\r\n function endOfMonth(date) {\r\n const _date = toDate(date);\r\n const month = _date.getMonth();\r\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\r\n _date.setHours(23, 59, 59, 999);\r\n return _date;\r\n }\r\n function startOfMonth(date) {\r\n const _date = toDate(date);\r\n _date.setDate(1);\r\n _date.setHours(0, 0, 0, 0);\r\n return _date;\r\n }\r\n function startOfWeek(dirtyDate) {\r\n const weekStartsOn = 0;\r\n\r\n const date = toDate(dirtyDate);\r\n const day = date.getDay();\r\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\r\n\r\n date.setDate(date.getDate() - diff);\r\n date.setHours(0, 0, 0, 0);\r\n return date;\r\n }\r\n // DIFFERENCE\r\n function differenceInDays(dirtyDateLeft, dirtyDateRight) {\r\n const startOfDayLeft = startOfDay(dirtyDateLeft);\r\n const startOfDayRight = startOfDay(dirtyDateRight);\r\n\r\n const timestampLeftTime = startOfDayLeft.getTime();\r\n const timestampRightTime = startOfDayRight.getTime();\r\n\r\n const timestampLeft = timestampLeftTime - startOfDayLeft;\r\n const timestampRight = timestampRightTime - startOfDayRight;\r\n\r\n return Math.round((timestampLeftTime - timestampRightTime) / MILLISECONDS_IN_DAY);\r\n }\r\n function differenceInWeeks(dirtyDateLeft, dirtyDateRight) {\r\n const startOfWeekLeft = startOfWeek(dirtyDateLeft, {});\r\n const startOfWeekRight = startOfWeek(dirtyDateRight, {});\r\n\r\n const timestampLeftTime = startOfWeekLeft.getTime();\r\n const timestampRightTime = startOfWeekRight.getTime();\r\n\r\n const timestampLeft = timestampLeftTime - startOfWeekLeft;\r\n const timestampRight = timestampRightTime - startOfWeekRight;\r\n\r\n return Math.round((timestampLeftTime - timestampRightTime) / MILLISECONDS_IN_WEEK);\r\n }\r\n function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\r\n const dateLeft = toDate(dirtyDateLeft);\r\n const dateRight = toDate(dirtyDateRight);\r\n\r\n const yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\r\n const monthDiff = dateLeft.getMonth() - dateRight.getMonth();\r\n\r\n return yearDiff * 12 + monthDiff;\r\n }\r\n function differenceInYears(dirtyDateLeft, dirtyDateRight) {\r\n const dateLeft = toDate(dirtyDateLeft);\r\n const dateRight = toDate(dirtyDateRight);\r\n\r\n return dateLeft.getFullYear() - dateRight.getFullYear();\r\n }\r\n // COMPARE\r\n function isAfter(dirtyDate, dirtyDateToCompare) {\r\n if (arguments.length < 2) {\r\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\r\n }\r\n\r\n var date = cloneDate(dirtyDate);\r\n var dateToCompare = cloneDate(dirtyDateToCompare);\r\n return date.getTime() > dateToCompare.getTime();\r\n }\r\n function isBefore(dirtyDate, dirtyDateToCompare) {\r\n if (arguments.length < 2) {\r\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\r\n }\r\n\r\n var date = cloneDate(dirtyDate);\r\n var dateToCompare = cloneDate(dirtyDateToCompare);\r\n return date.getTime() < dateToCompare.getTime();\r\n }\r\n function isEqual(dirtyLeftDate, dirtyRightDate) {\r\n if (arguments.length < 2) {\r\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\r\n }\r\n\r\n var dateLeft = cloneDate(dirtyLeftDate);\r\n var dateRight = cloneDate(dirtyRightDate);\r\n return dateLeft.getTime() === dateRight.getTime();\r\n }\r\n function isDateInCurrentWeek(dirtyDate) {\r\n const date = cloneDate(dirtyDate);\r\n date.setHours(0, 0, 0, 0);\r\n const currentDate = new Date();\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n const curentWeekStart = startDayOfWeek(currentDate);\r\n const curentWeekEnd = endOfWeek(currentDate);\r\n\r\n if (isAfter(date, curentWeekStart) && isBefore(date, curentWeekEnd)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n function isDateInFuture(dirtyDate) {\r\n const date = cloneDate(dirtyDate);\r\n date.setHours(0, 0, 0, 0);\r\n const currentDate = new Date();\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n if (isAfter(date, currentDate)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n // FORMAT\r\n function checkFormat(dateString) {\r\n // Regex pattern for ISO date format (YYYY-MM-DD)\r\n const isoFormatPattern = /^\\d{4}-\\d{2}-\\d{2}$/;\r\n // Adjusted Regex pattern for Standard format (M/D/YYYY or MM/DD/YYYY)\r\n const standardFormatPattern = /^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/;\r\n\r\n if (isoFormatPattern.test(dateString)) {\r\n return 'iso';\r\n } else if (standardFormatPattern.test(dateString)) {\r\n return 'standard';\r\n } else {\r\n return '';\r\n }\r\n }\r\n function formatISO(dirtyDate, dirtyOptions) {\r\n if (arguments.length < 1) {\r\n throw new TypeError(`1 argument required, but only ${arguments.length} present`);\r\n }\r\n\r\n const originalDate = cloneDate(dirtyDate);\r\n\r\n if (!isValid(originalDate)) {\r\n throw new RangeError('Invalid time value');\r\n }\r\n\r\n const options = dirtyOptions || {};\r\n const format = options.format == null ? 'extended' : String(options.format);\r\n const representation = options.representation == null ? 'complete' : String(options.representation);\r\n\r\n if (format !== 'extended' && format !== 'basic') {\r\n throw new RangeError(\"format must be 'extended' or 'basic'\");\r\n }\r\n\r\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\r\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\r\n }\r\n\r\n let result = '';\r\n let tzOffset = '';\r\n\r\n const dateDelimiter = format === 'extended' ? '-' : '';\r\n const timeDelimiter = format === 'extended' ? ':' : '';\r\n\r\n // Representation is either 'date' or 'complete'\r\n if (representation !== 'time') {\r\n const day = UTIL.leadingZero(originalDate.getDate(), 2);\r\n const month = UTIL.leadingZero(originalDate.getMonth() + 1, 2);\r\n const year = UTIL.leadingZero(originalDate.getFullYear(), 4);\r\n\r\n // yyyyMMdd or yyyy-MM-dd.\r\n result = `${year}${dateDelimiter}${month}${dateDelimiter}${day}`;\r\n }\r\n\r\n // Representation is either 'time' or 'complete'\r\n if (representation !== 'date') {\r\n // Add the timezone.\r\n const offset = originalDate.getTimezoneOffset();\r\n\r\n if (offset !== 0) {\r\n const absoluteOffset = Math.abs(offset);\r\n const hourOffset = UTIL.leadingZero(Math.floor(absoluteOffset / 60), 2);\r\n const minuteOffset = UTIL.leadingZero(absoluteOffset % 60, 2);\r\n // If less than 0, the sign is +, because it is ahead of time.\r\n const sign = offset < 0 ? '+' : '-';\r\n\r\n tzOffset = `${sign}${hourOffset}:${minuteOffset}`;\r\n } else {\r\n tzOffset = 'Z';\r\n }\r\n\r\n const hour = UTIL.leadingZero(originalDate.getHours(), 2);\r\n const minute = UTIL.leadingZero(originalDate.getMinutes(), 2);\r\n const second = UTIL.leadingZero(originalDate.getSeconds(), 2);\r\n\r\n // If there's also date, separate it with time with 'T'\r\n const separator = result === '' ? '' : 'T';\r\n\r\n // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\r\n const time = [hour, minute, second].join(timeDelimiter);\r\n\r\n // HHmmss or HH:mm:ss.\r\n result = `${result}${separator}${time}${tzOffset}`;\r\n }\r\n\r\n return result;\r\n }\r\n function formateToISO(dirtyDate) {\r\n if (!dirtyDate) return;\r\n\r\n let splitBy;\r\n\r\n if (dirtyDate.indexOf('/') !== -1) {\r\n splitBy = '/';\r\n } else if (dirtyDate.indexOf('-') !== -1) {\r\n splitBy = '-';\r\n } else {\r\n return 'Invalid Date String';\r\n }\r\n\r\n const date = dirtyDate.split(splitBy);\r\n\r\n if (date[0].length === 4) {\r\n return dirtyDate;\r\n }\r\n\r\n const YYYY = date[2];\r\n const MM = leadingZero(date[0]);\r\n const DD = leadingZero(date[1]);\r\n\r\n return `${YYYY}-${MM}-${DD}`;\r\n }\r\n function formateToStandard(dirtyDate, joinBy, opts) {\r\n var shorten = opts ? opts.shortenYear : false;\r\n var date = dirtyDate.split('-');\r\n var MM = leadingZero(date[1]);\r\n var DD = leadingZero(date[2]);\r\n var YYYY = shorten ? date[0].substring(0, 2) : date[0];\r\n\r\n if (joinBy) {\r\n return `${MM}${joinBy}${DD}${joinBy}${YYYY}`;\r\n }\r\n\r\n return `${MM}/${DD}/${YYYY}`;\r\n }\r\n // INTERVALS\r\n function eachDayOfInterval(interval, options) {\r\n const startDate = toDate(interval.start);\r\n const endDate = toDate(interval.end);\r\n\r\n const endTime = endDate.getTime();\r\n\r\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\r\n if (!(startDate.getTime() <= endTime)) {\r\n throw new RangeError('Invalid interval');\r\n }\r\n\r\n const dates = [];\r\n\r\n const currentDate = startDate;\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n const step = options?.step ?? 1;\r\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\r\n\r\n while (currentDate.getTime() <= endTime) {\r\n dates.push(toDate(currentDate));\r\n currentDate.setDate(currentDate.getDate() + step);\r\n currentDate.setHours(0, 0, 0, 0);\r\n }\r\n\r\n return dates;\r\n }\r\n\r\n // TIME\r\n //----------------------------------------------------------------\r\n /**\r\n * Converts a 24hr time to 12hr standard time.\r\n *\r\n * @function\r\n * @param {string} time Time you would like to convert\r\n * @returns {string} Converted time\r\n */\r\n function convertFromMilitary(time) {\r\n if (!time || time === '') return '';\r\n\r\n time = time.split(':');\r\n var hh = parseInt(time[0]);\r\n var mm = parseInt(time[1]);\r\n var amPm = hh <= 11 ? 'AM' : 'PM';\r\n\r\n if (hh === 0) hh = 12;\r\n if (amPm === 'PM' && hh !== 12) hh -= 12;\r\n\r\n return `${hh}:${leadingZero(mm)} ${amPm}`;\r\n }\r\n /**\r\n * Converts a 12hr time to 24hr military time.\r\n *\r\n * @function\r\n * @param {string} time Time you would like to convert\r\n * @returns {string} Converted time\r\n */\r\n function convertToMilitary(time) {\r\n // time format must be hh:mm am/pm\r\n if (!time || time === '') return '';\r\n\r\n time = time.split(' ');\r\n timeString = time[0].split(':');\r\n\r\n var amPM = time[1].toLowerCase();\r\n var hh = parseInt(timeString[0]);\r\n var mm = parseInt(timeString[1]);\r\n\r\n if (amPM === 'pm' && hh !== 12) hh += 12;\r\n if (amPM === 'am' && hh === 12) hh = 0;\r\n\r\n return `${leadingZero(hh)}:${leadingZero(mm)}:00`;\r\n }\r\n /**\r\n * Formats the time as HH:MM:SS from a given number of seconds.\r\n *\r\n * @param {number} totalSeconds - The total number of seconds to format.\r\n * @return {string} - The formatted time string.\r\n */\r\n function formatSecondsToFullTime(totalSeconds) {\r\n if (!totalSeconds) return '00:00:00';\r\n var hours = Math.floor(totalSeconds / 3600);\r\n var minutes = Math.floor((totalSeconds - hours * 3600) / 60);\r\n var seconds = totalSeconds % 60;\r\n\r\n return [_UTIL.padNumberWithZero(hours), _UTIL.padNumberWithZero(minutes), _UTIL.padNumberWithZero(seconds)].join(\r\n ':',\r\n );\r\n }\r\n /**\r\n * Calculates the time difference between two military time values.\r\n *\r\n * @param {string} startTime - The start time in military format (e.g., \"14:00\").\r\n * @param {string} endTime - The end time in military format (e.g., \"16:30\").\r\n * @param {boolean} [format=true] - If true, returns the time difference formatted as a string with hours and minutes.\r\n * If false, returns only the total minutes as a formatted string.\r\n * @returns {string} The time difference as a formatted string. If `format` is true, the difference is returned\r\n * in terms of hours and minutes (e.g., \"2 hrs 30 mins\"). If `format` is false, the difference\r\n * is returned as total minutes (e.g., \"150 mins\").\r\n *\r\n * @example\r\n * // Returns \"2 hrs 30 mins\"\r\n * getMilitaryTimeDifference(\"14:00\", \"16:30\", true);\r\n *\r\n * @example\r\n * // Returns \"150 mins\"\r\n * getMilitaryTimeDifference(\"14:00\", \"16:30\", false);\r\n */\r\n function getMilitaryTimeDifference(startTime, endTime, format = true) {\r\n const startDate = new Date(`1970-01-01T${startTime}`);\r\n const endDate = new Date(`1970-01-01T${endTime}`);\r\n\r\n const timeDifference = endDate - startDate;\r\n\r\n // Calculate total time in minutes\r\n const totalMinutes = Math.floor(timeDifference / 60000);\r\n\r\n if (format) {\r\n const hours = Math.floor(totalMinutes / 60);\r\n const minutes = totalMinutes % 60;\r\n\r\n const formattedTime = [];\r\n if (hours > 0) {\r\n formattedTime.push(`${hours} ${hours === 1 ? 'hr' : 'hrs'}`);\r\n }\r\n if (minutes > 0) {\r\n formattedTime.push(`${minutes} ${minutes === 1 ? 'min' : 'mins'}`);\r\n }\r\n\r\n return formattedTime.join(' ');\r\n } else {\r\n // Return total minutes in formatted string\r\n return `${totalMinutes} ${totalMinutes === 1 ? 'min' : 'mins'}`;\r\n }\r\n }\r\n /**\r\n *\r\n * @param {*} date\r\n * @returns\r\n */\r\n function removeTimestamp(date) {\r\n const splitDate = date.split(' ');\r\n return `${splitDate[0]}`;\r\n }\r\n\r\n return {\r\n getTodaysDateObj,\r\n getTodaysDateISOString,\r\n getDaysInMonth,\r\n addHours,\r\n addDays,\r\n addWeeks,\r\n addMonths,\r\n addYears,\r\n subHours,\r\n subDays,\r\n subWeeks,\r\n subMonths,\r\n subYears,\r\n endOfWeek,\r\n startDayOfWeek,\r\n endOfMonth,\r\n startOfMonth,\r\n isAfter,\r\n isBefore,\r\n isEqual,\r\n isDateInCurrentWeek,\r\n isDateInFuture,\r\n checkFormat,\r\n formatISO,\r\n formateToISO,\r\n formateToStandard,\r\n eachDayOfInterval,\r\n differenceInDays,\r\n differenceInWeeks,\r\n differenceInMonths,\r\n differenceInYears,\r\n // TIME\r\n convertFromMilitary,\r\n convertToMilitary,\r\n formatSecondsToFullTime,\r\n getMilitaryTimeDifference,\r\n removeTimestamp,\r\n };\r\n})();\r\n","// Layout API\r\n// Handles DOM Manipulation\r\nconst DOM = (function () {\r\n var BODY = document.body;\r\n var GRID_CONTAINER = document.querySelector('.grid-container');\r\n var ACTIONCENTER = document.getElementById('actioncenter');\r\n\r\n function autosizeTextarea(textarea) {\r\n // autosizeTextarea() takes a callback incase you need to call\r\n // a function after the textarea has been resized.\r\n // ---------------------------------------------------------------\r\n // if (textarea) {\r\n // textarea.style.height = textarea.scrollHeight + 'px';\r\n // textarea.addEventListener('input', () => {\r\n // textarea.style.height = 'auto';\r\n // textarea.style.height = textarea.scrollHeight + 'px';\r\n // });\r\n // return;\r\n // }\r\n\r\n var textareas = [].slice.call(document.querySelectorAll('textarea.autosize'));\r\n textareas.forEach(area => {\r\n area.style.height = area.scrollHeight + 'px';\r\n area.addEventListener('input', () => {\r\n area.style.height = 'auto';\r\n area.style.height = area.scrollHeight + 'px';\r\n });\r\n });\r\n }\r\n\r\n function clearActionCenter() {\r\n var actioncenter = document.getElementById('actioncenter');\r\n actioncenter.innerHTML = '';\r\n }\r\n\r\n function toggleHeaderOpacity() {\r\n var header = document.querySelector('.site-header');\r\n header.classList.toggle('fadeOut');\r\n }\r\n\r\n\r\n function removeHeaderOpacity() {\r\n var header = document.querySelector('.site-header');\r\n header.classList.remove('fadeOut');\r\n }\r\n\r\n function toggleNavLayout() {\r\n if (isMobile) {\r\n // only for mobile navigation\r\n var actionBtn = document.querySelector('.floatingActionBtn');\r\n var nav = document.querySelector('.nav__mobile');\r\n if (actionBtn && !actionBtn.classList.contains('hidden')) {\r\n nav.classList.add('actionBtnActive');\r\n } else {\r\n nav.classList.remove('actionBtnActive');\r\n }\r\n }\r\n }\r\n\r\n function requestAnimFrame(cb) {\r\n return (\r\n window.requestAnimationFrame(cb) ||\r\n window.webkitRequestAnimationFrame(cb) ||\r\n window.mozRequestAnimationFrame(cb) ||\r\n window.msRequestAnimationFrame(cb) ||\r\n function (cb) {\r\n setTimeout(cb, 0);\r\n }\r\n );\r\n }\r\n\r\n function scrollToTopOfPage() {\r\n document.body.scrollTop = 0; // Safari\r\n document.documentElement.scrollTop = 0; // Chrome & IE\r\n }\r\n\r\n return {\r\n // dome elements\r\n BODY,\r\n GRID_CONTAINER,\r\n ACTIONCENTER,\r\n // functions\r\n autosizeTextarea,\r\n clearActionCenter,\r\n toggleHeaderOpacity,\r\n toggleNavLayout,\r\n requestAnimFrame,\r\n scrollToTopOfPage,\r\n removeHeaderOpacity, \r\n };\r\n})();\r\n","/**\r\n * Copyright 2019 Google LLC. All Rights Reserved.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * @name MarkerClusterer for Google Maps v3\r\n * @author Luke Mahe\r\n * @fileoverview\r\n * The library creates and manages per-zoom-level clusters for large amounts of\r\n * markers.\r\n */\r\n\r\n/**\r\n * A Marker Clusterer that clusters markers.\r\n *\r\n * @param {google.maps.Map} map The Google map to attach to.\r\n * @param {Array.=} opt_markers Optional markers to add to\r\n * the cluster.\r\n * @param {Object=} opt_options support the following options:\r\n * 'gridSize': (number) The grid size of a cluster in pixels.\r\n * 'maxZoom': (number) The maximum zoom level that a marker can be part of a\r\n * cluster.\r\n * 'zoomOnClick': (boolean) Whether the default behaviour of clicking on a\r\n * cluster is to zoom into it.\r\n * 'imagePath': (string) The base URL where the images representing\r\n * clusters will be found. The full URL will be:\r\n * {imagePath}[1-5].{imageExtension}\r\n * Default: '../images/m'.\r\n * 'imageExtension': (string) The suffix for images URL representing\r\n * clusters will be found. See _imagePath_ for details.\r\n * Default: 'png'.\r\n * 'averageCenter': (boolean) Whether the center of each cluster should be\r\n * the average of all markers in the cluster.\r\n * 'minimumClusterSize': (number) The minimum number of markers to be in a\r\n * cluster before the markers are hidden and a count\r\n * is shown.\r\n * 'zIndex': (number) the z-index of a cluster.\r\n * Default: google.maps.Marker.MAX_ZINDEX + 1\r\n * 'styles': (object) An object that has style properties:\r\n * 'url': (string) The image url.\r\n * 'height': (number) The image height.\r\n * 'width': (number) The image width.\r\n * 'anchor': (Array) The anchor position of the label text.\r\n * 'textColor': (string) The text color.\r\n * 'textSize': (number) The text size.\r\n * 'backgroundPosition': (string) The position of the backgound x, y.\r\n * @constructor\r\n * @extends google.maps.OverlayView\r\n */\r\n\r\nclass MarkerClusterer {\r\n constructor(map, opt_markers, opt_options) {\r\n this.extend(MarkerClusterer, google.maps.OverlayView);\r\n this.map_ = map;\r\n \r\n /**\r\n * The marker cluster image path.\r\n *\r\n * @type {string}\r\n * @private\r\n */\r\n this.MARKER_CLUSTER_IMAGE_PATH_ = \"../images/m\";\r\n \r\n /**\r\n * The marker cluster image path.\r\n *\r\n * @type {string}\r\n * @private\r\n */\r\n this.MARKER_CLUSTER_IMAGE_EXTENSION_ = \"png\";\r\n /**\r\n * @type {Array.}\r\n * @private\r\n */\r\n this.markers_ = [];\r\n \r\n /**\r\n * @type {Array.}\r\n */\r\n this.clusters_ = [];\r\n \r\n this.sizes = [53, 56, 66, 78, 90];\r\n \r\n /**\r\n * @private\r\n */\r\n this.styles_ = [];\r\n \r\n /**\r\n * @type {boolean}\r\n * @private\r\n */\r\n this.ready_ = false;\r\n \r\n var options = opt_options || {};\r\n \r\n /**\r\n * @type {number}\r\n */\r\n this.zIndex_ = options[\"zIndex\"] || google.maps.Marker.MAX_ZINDEX + 1;\r\n \r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.gridSize_ = options[\"gridSize\"] || 60;\r\n \r\n /**\r\n * @private\r\n */\r\n this.minClusterSize_ = options[\"minimumClusterSize\"] || 2;\r\n \r\n /**\r\n * @type {?number}\r\n * @private\r\n */\r\n this.maxZoom_ = options[\"maxZoom\"] || null;\r\n \r\n this.styles_ = options[\"styles\"] || [];\r\n \r\n /**\r\n * @type {string}\r\n * @private\r\n */\r\n this.imagePath_ = options[\"imagePath\"] || this.MARKER_CLUSTER_IMAGE_PATH_;\r\n \r\n /**\r\n * @type {string}\r\n * @private\r\n */\r\n this.imageExtension_ =\r\n options[\"imageExtension\"] || this.MARKER_CLUSTER_IMAGE_EXTENSION_;\r\n \r\n /**\r\n * @type {boolean}\r\n * @private\r\n */\r\n this.zoomOnClick_ = true;\r\n \r\n if (options[\"zoomOnClick\"] != undefined) {\r\n this.zoomOnClick_ = options[\"zoomOnClick\"];\r\n }\r\n \r\n /**\r\n * @type {boolean}\r\n * @private\r\n */\r\n this.averageCenter_ = false;\r\n \r\n if (options[\"averageCenter\"] != undefined) {\r\n this.averageCenter_ = options[\"averageCenter\"];\r\n }\r\n \r\n this.setupStyles_();\r\n \r\n this.setMap(map);\r\n \r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.prevZoom_ = this.map_.getZoom();\r\n \r\n // Add the map event listeners\r\n var that = this;\r\n google.maps.event.addListener(this.map_, \"zoom_changed\", function() {\r\n // Determines map type and prevent illegal zoom levels\r\n var zoom = that.map_.getZoom();\r\n var minZoom = that.map_.minZoom || 0;\r\n var maxZoom = Math.min(\r\n that.map_.maxZoom || 100,\r\n that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom\r\n );\r\n zoom = Math.min(Math.max(zoom, minZoom), maxZoom);\r\n \r\n if (that.prevZoom_ != zoom) {\r\n that.prevZoom_ = zoom;\r\n that.resetViewport();\r\n }\r\n });\r\n \r\n google.maps.event.addListener(this.map_, \"idle\", function() {\r\n that.redraw();\r\n });\r\n \r\n // Finally, add the markers\r\n if (\r\n opt_markers &&\r\n (opt_markers.length || Object.keys(opt_markers).length)\r\n ) {\r\n this.addMarkers(opt_markers, false);\r\n }\r\n }\r\n \r\n /**\r\n * Extends a objects prototype by anothers.\r\n *\r\n * @param {Object} obj1 The object to be extended.\r\n * @param {Object} obj2 The object to extend with.\r\n * @return {Object} The new extended object.\r\n * @ignore\r\n */\r\n extend(obj1, obj2) {\r\n return function(object) {\r\n for (var property in object.prototype) {\r\n this.prototype[property] = object.prototype[property];\r\n }\r\n return this;\r\n }.apply(obj1, [obj2]);\r\n }\r\n \r\n /**\r\n * Implementaion of the interface method.\r\n * @ignore\r\n */\r\n onAdd() {\r\n this.setReady_(true);\r\n }\r\n \r\n /**\r\n * Implementaion of the interface method.\r\n * @ignore\r\n */\r\n draw() {}\r\n \r\n /**\r\n * Sets up the styles object.\r\n *\r\n * @private\r\n */\r\n setupStyles_() {\r\n if (this.styles_.length) {\r\n return;\r\n }\r\n \r\n for (var i = 0, size; (size = this.sizes[i]); i++) {\r\n this.styles_.push({\r\n url: this.imagePath_ + (i + 1) + \".\" + this.imageExtension_,\r\n height: size,\r\n width: size\r\n });\r\n }\r\n }\r\n \r\n /**\r\n * Fit the map to the bounds of the markers in the clusterer.\r\n */\r\n fitMapToMarkers() {\r\n var markers = this.getMarkers();\r\n var bounds = new google.maps.LatLngBounds();\r\n for (var i = 0, marker; (marker = markers[i]); i++) {\r\n bounds.extend(marker.getPosition());\r\n }\r\n \r\n this.map_.fitBounds(bounds);\r\n }\r\n \r\n /**\r\n * @param {number} zIndex\r\n */\r\n setZIndex(zIndex) {\r\n this.zIndex_ = zIndex;\r\n }\r\n \r\n /**\r\n * @return {number}\r\n */\r\n getZIndex() {\r\n return this.zIndex_;\r\n }\r\n \r\n /**\r\n * Sets the styles.\r\n *\r\n * @param {Object} styles The style to set.\r\n */\r\n setStyles(styles) {\r\n this.styles_ = styles;\r\n }\r\n \r\n /**\r\n * Gets the styles.\r\n *\r\n * @return {Object} The styles object.\r\n */\r\n getStyles() {\r\n return this.styles_;\r\n }\r\n \r\n /**\r\n * Whether zoom on click is set.\r\n *\r\n * @return {boolean} True if zoomOnClick_ is set.\r\n */\r\n isZoomOnClick() {\r\n return this.zoomOnClick_;\r\n }\r\n \r\n /**\r\n * Whether average center is set.\r\n *\r\n * @return {boolean} True if averageCenter_ is set.\r\n */\r\n isAverageCenter() {\r\n return this.averageCenter_;\r\n }\r\n \r\n /**\r\n * Returns the array of markers in the clusterer.\r\n *\r\n * @return {Array.} The markers.\r\n */\r\n getMarkers() {\r\n return this.markers_;\r\n }\r\n \r\n /**\r\n * Returns the number of markers in the clusterer\r\n *\r\n * @return {Number} The number of markers.\r\n */\r\n getTotalMarkers() {\r\n return this.markers_.length;\r\n }\r\n \r\n /**\r\n * Sets the max zoom for the clusterer.\r\n *\r\n * @param {number} maxZoom The max zoom level.\r\n */\r\n setMaxZoom(maxZoom) {\r\n this.maxZoom_ = maxZoom;\r\n }\r\n \r\n /**\r\n * Gets the max zoom for the clusterer.\r\n *\r\n * @return {number} The max zoom level.\r\n */\r\n getMaxZoom() {\r\n return this.maxZoom_;\r\n }\r\n \r\n /**\r\n * The function for calculating the cluster icon image.\r\n *\r\n * @param {Array.} markers The markers in the clusterer.\r\n * @param {number} numStyles The number of styles available.\r\n * @return {Object} A object properties: 'text' (string) and 'index' (number).\r\n * @private\r\n */\r\n calculator_(markers, numStyles) {\r\n var index = 0;\r\n var count = markers.length;\r\n var dv = count;\r\n while (dv !== 0) {\r\n dv = parseInt(dv / 10, 10);\r\n index++;\r\n }\r\n \r\n index = Math.min(index, numStyles);\r\n return {\r\n text: count,\r\n index: index\r\n };\r\n }\r\n \r\n /**\r\n * Set the calculator function.\r\n *\r\n * @param {function(Array, number)} calculator The function to set as the\r\n * calculator. The function should return a object properties:\r\n * 'text' (string) and 'index' (number).\r\n *\r\n */\r\n setCalculator(calculator) {\r\n this.calculator_ = calculator;\r\n }\r\n \r\n /**\r\n * Get the calculator function.\r\n *\r\n * @return {function(Array, number)} the calculator function.\r\n */\r\n getCalculator() {\r\n return this.calculator_;\r\n }\r\n \r\n /**\r\n * Add an array of markers to the clusterer.\r\n *\r\n * @param {Array.} markers The markers to add.\r\n * @param {boolean=} opt_nodraw Whether to redraw the clusters.\r\n */\r\n addMarkers(markers, opt_nodraw) {\r\n if (markers.length) {\r\n for (let i = 0, marker; (marker = markers[i]); i++) {\r\n this.pushMarkerTo_(marker);\r\n }\r\n } else if (Object.keys(markers).length) {\r\n for (let marker in markers) {\r\n this.pushMarkerTo_(markers[marker]);\r\n }\r\n }\r\n if (!opt_nodraw) {\r\n this.redraw();\r\n }\r\n }\r\n \r\n /**\r\n * Pushes a marker to the clusterer.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @private\r\n */\r\n pushMarkerTo_(marker) {\r\n marker.isAdded = false;\r\n if (marker[\"draggable\"]) {\r\n // If the marker is draggable add a listener so we update the clusters on\r\n // the drag end.\r\n var that = this;\r\n google.maps.event.addListener(marker, \"dragend\", function() {\r\n marker.isAdded = false;\r\n that.repaint();\r\n });\r\n }\r\n this.markers_.push(marker);\r\n }\r\n \r\n /**\r\n * Adds a marker to the clusterer and redraws if needed.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @param {boolean=} opt_nodraw Whether to redraw the clusters.\r\n */\r\n addMarker(marker, opt_nodraw) {\r\n this.pushMarkerTo_(marker);\r\n if (!opt_nodraw) {\r\n this.redraw();\r\n }\r\n }\r\n \r\n /**\r\n * Removes a marker and returns true if removed, false if not\r\n *\r\n * @param {google.maps.Marker} marker The marker to remove\r\n * @return {boolean} Whether the marker was removed or not\r\n * @private\r\n */\r\n removeMarker_(marker) {\r\n var index = -1;\r\n if (this.markers_.indexOf) {\r\n index = this.markers_.indexOf(marker);\r\n } else {\r\n for (var i = 0, m; (m = this.markers_[i]); i++) {\r\n if (m == marker) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n \r\n if (index == -1) {\r\n // Marker is not in our list of markers.\r\n return false;\r\n }\r\n \r\n marker.setMap(null);\r\n \r\n this.markers_.splice(index, 1);\r\n \r\n return true;\r\n }\r\n \r\n /**\r\n * Remove a marker from the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to remove.\r\n * @param {boolean=} opt_nodraw Optional boolean to force no redraw.\r\n * @return {boolean} True if the marker was removed.\r\n */\r\n removeMarker(marker, opt_nodraw) {\r\n var removed = this.removeMarker_(marker);\r\n \r\n if (!opt_nodraw && removed) {\r\n this.resetViewport();\r\n this.redraw();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n \r\n /**\r\n * Removes an array of markers from the cluster.\r\n *\r\n * @param {Array.} markers The markers to remove.\r\n * @param {boolean=} opt_nodraw Optional boolean to force no redraw.\r\n */\r\n removeMarkers(markers, opt_nodraw) {\r\n // create a local copy of markers if required\r\n // (removeMarker_ modifies the getMarkers() array in place)\r\n var markersCopy = markers === this.getMarkers() ? markers.slice() : markers;\r\n var removed = false;\r\n \r\n for (var i = 0, marker; (marker = markersCopy[i]); i++) {\r\n var r = this.removeMarker_(marker);\r\n removed = removed || r;\r\n }\r\n \r\n if (!opt_nodraw && removed) {\r\n this.resetViewport();\r\n this.redraw();\r\n return true;\r\n }\r\n }\r\n \r\n /**\r\n * Sets the clusterer's ready state.\r\n *\r\n * @param {boolean} ready The state.\r\n * @private\r\n */\r\n setReady_(ready) {\r\n if (!this.ready_) {\r\n this.ready_ = ready;\r\n this.createClusters_();\r\n }\r\n }\r\n \r\n /**\r\n * Returns the number of clusters in the clusterer.\r\n *\r\n * @return {number} The number of clusters.\r\n */\r\n getTotalClusters() {\r\n return this.clusters_.length;\r\n }\r\n \r\n /**\r\n * Returns the google map that the clusterer is associated with.\r\n *\r\n * @return {google.maps.Map} The map.\r\n */\r\n getMap() {\r\n return this.map_;\r\n }\r\n \r\n /**\r\n * Sets the google map that the clusterer is associated with.\r\n *\r\n * @param {google.maps.Map} map The map.\r\n */\r\n setMap(map) {\r\n this.map_ = map;\r\n }\r\n \r\n /**\r\n * Returns the size of the grid.\r\n *\r\n * @return {number} The grid size.\r\n */\r\n getGridSize() {\r\n return this.gridSize_;\r\n }\r\n \r\n /**\r\n * Sets the size of the grid.\r\n *\r\n * @param {number} size The grid size.\r\n */\r\n setGridSize(size) {\r\n this.gridSize_ = size;\r\n }\r\n \r\n /**\r\n * Returns the min cluster size.\r\n *\r\n * @return {number} The grid size.\r\n */\r\n getMinClusterSize() {\r\n return this.minClusterSize_;\r\n }\r\n \r\n /**\r\n * Sets the min cluster size.\r\n *\r\n * @param {number} size The grid size.\r\n */\r\n setMinClusterSize(size) {\r\n this.minClusterSize_ = size;\r\n }\r\n \r\n /**\r\n * Extends a bounds object by the grid size.\r\n *\r\n * @param {google.maps.LatLngBounds} bounds The bounds to extend.\r\n * @return {google.maps.LatLngBounds} The extended bounds.\r\n */\r\n getExtendedBounds(bounds) {\r\n var projection = this.getProjection();\r\n \r\n // Turn the bounds into latlng.\r\n var tr = new google.maps.LatLng(\r\n bounds.getNorthEast().lat(),\r\n bounds.getNorthEast().lng()\r\n );\r\n var bl = new google.maps.LatLng(\r\n bounds.getSouthWest().lat(),\r\n bounds.getSouthWest().lng()\r\n );\r\n \r\n // Convert the points to pixels and the extend out by the grid size.\r\n var trPix = projection.fromLatLngToDivPixel(tr);\r\n trPix.x += this.gridSize_;\r\n trPix.y -= this.gridSize_;\r\n \r\n var blPix = projection.fromLatLngToDivPixel(bl);\r\n blPix.x -= this.gridSize_;\r\n blPix.y += this.gridSize_;\r\n \r\n // Convert the pixel points back to LatLng\r\n var ne = projection.fromDivPixelToLatLng(trPix);\r\n var sw = projection.fromDivPixelToLatLng(blPix);\r\n \r\n // Extend the bounds to contain the new bounds.\r\n bounds.extend(ne);\r\n bounds.extend(sw);\r\n \r\n return bounds;\r\n }\r\n \r\n /**\r\n * Determins if a marker is contained in a bounds.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @param {google.maps.LatLngBounds} bounds The bounds to check against.\r\n * @return {boolean} True if the marker is in the bounds.\r\n * @private\r\n */\r\n isMarkerInBounds_(marker, bounds) {\r\n return bounds.contains(marker.getPosition());\r\n }\r\n \r\n /**\r\n * Clears all clusters and markers from the clusterer.\r\n */\r\n clearMarkers() {\r\n this.resetViewport(true);\r\n \r\n // Set the markers a empty array.\r\n this.markers_ = [];\r\n }\r\n \r\n /**\r\n * Clears all existing clusters and recreates them.\r\n * @param {boolean} opt_hide To also hide the marker.\r\n */\r\n resetViewport(opt_hide) {\r\n // Remove all the clusters\r\n for (let i = 0, cluster; (cluster = this.clusters_[i]); i++) {\r\n cluster.remove();\r\n }\r\n \r\n // Reset the markers to not be added and to be invisible.\r\n for (let i = 0, marker; (marker = this.markers_[i]); i++) {\r\n marker.isAdded = false;\r\n if (opt_hide) {\r\n marker.setMap(null);\r\n }\r\n }\r\n \r\n this.clusters_ = [];\r\n }\r\n \r\n /**\r\n *\r\n */\r\n repaint() {\r\n var oldClusters = this.clusters_.slice();\r\n this.clusters_.length = 0;\r\n this.resetViewport();\r\n this.redraw();\r\n \r\n // Remove the old clusters.\r\n // Do it in a timeout so the other clusters have been drawn first.\r\n setTimeout(function() {\r\n for (var i = 0, cluster; (cluster = oldClusters[i]); i++) {\r\n cluster.remove();\r\n }\r\n }, 0);\r\n }\r\n \r\n /**\r\n * Redraws the clusters.\r\n */\r\n redraw() {\r\n this.createClusters_();\r\n }\r\n \r\n /**\r\n * Calculates the distance between two latlng locations in km.\r\n * @see http://www.movable-type.co.uk/scripts/latlong.html\r\n *\r\n * @param {google.maps.LatLng} p1 The first lat lng point.\r\n * @param {google.maps.LatLng} p2 The second lat lng point.\r\n * @return {number} The distance between the two points in km.\r\n * @private\r\n */\r\n distanceBetweenPoints_(p1, p2) {\r\n if (!p1 || !p2) {\r\n return 0;\r\n }\r\n \r\n var R = 6371; // Radius of the Earth in km\r\n var dLat = ((p2.lat() - p1.lat()) * Math.PI) / 180;\r\n var dLon = ((p2.lng() - p1.lng()) * Math.PI) / 180;\r\n var a =\r\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n Math.cos((p1.lat() * Math.PI) / 180) *\r\n Math.cos((p2.lat() * Math.PI) / 180) *\r\n Math.sin(dLon / 2) *\r\n Math.sin(dLon / 2);\r\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n var d = R * c;\r\n return d;\r\n }\r\n \r\n /**\r\n * Add a marker to a cluster, or creates a new cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @private\r\n */\r\n addToClosestCluster_(marker) {\r\n var distance = 40000; // Some large number\r\n var clusterToAddTo = null;\r\n for (var i = 0, cluster; (cluster = this.clusters_[i]); i++) {\r\n var center = cluster.getCenter();\r\n if (center) {\r\n var d = this.distanceBetweenPoints_(center, marker.getPosition());\r\n if (d < distance) {\r\n distance = d;\r\n clusterToAddTo = cluster;\r\n }\r\n }\r\n }\r\n \r\n if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {\r\n clusterToAddTo.addMarker(marker);\r\n } else {\r\n var newCluster = new Cluster(this);\r\n newCluster.addMarker(marker);\r\n this.clusters_.push(newCluster);\r\n }\r\n }\r\n \r\n /**\r\n * Creates the clusters.\r\n *\r\n * @private\r\n */\r\n createClusters_() {\r\n if (!this.ready_) {\r\n return;\r\n }\r\n \r\n // Get our current map view bounds.\r\n // Create a new bounds object so we don't affect the map.\r\n var mapBounds = new google.maps.LatLngBounds(\r\n this.map_.getBounds().getSouthWest(),\r\n this.map_.getBounds().getNorthEast()\r\n );\r\n var bounds = this.getExtendedBounds(mapBounds);\r\n \r\n for (var i = 0, marker; (marker = this.markers_[i]); i++) {\r\n if (!marker.isAdded && this.isMarkerInBounds_(marker, bounds)) {\r\n this.addToClosestCluster_(marker);\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * A cluster that contains markers.\r\n *\r\n * @param {MarkerClusterer} markerClusterer The markerclusterer that this\r\n * cluster is associated with.\r\n * @constructor\r\n * @ignore\r\n */\r\n class Cluster {\r\n constructor(markerClusterer) {\r\n this.markerClusterer_ = markerClusterer;\r\n this.map_ = markerClusterer.getMap();\r\n this.gridSize_ = markerClusterer.getGridSize();\r\n this.minClusterSize_ = markerClusterer.getMinClusterSize();\r\n this.averageCenter_ = markerClusterer.isAverageCenter();\r\n this.center_ = null;\r\n this.markers_ = [];\r\n this.bounds_ = null;\r\n this.clusterIcon_ = new ClusterIcon(\r\n this,\r\n markerClusterer.getStyles(),\r\n markerClusterer.getGridSize()\r\n );\r\n }\r\n \r\n /**\r\n * Determins if a marker is already added to the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @return {boolean} True if the marker is already added.\r\n */\r\n isMarkerAlreadyAdded(marker) {\r\n if (this.markers_.indexOf) {\r\n return this.markers_.indexOf(marker) != -1;\r\n } else {\r\n for (var i = 0, m; (m = this.markers_[i]); i++) {\r\n if (m == marker) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n \r\n /**\r\n * Add a marker the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @return {boolean} True if the marker was added.\r\n */\r\n addMarker(marker) {\r\n if (this.isMarkerAlreadyAdded(marker)) {\r\n return false;\r\n }\r\n \r\n if (!this.center_) {\r\n this.center_ = marker.getPosition();\r\n this.calculateBounds_();\r\n } else {\r\n if (this.averageCenter_) {\r\n var l = this.markers_.length + 1;\r\n var lat =\r\n (this.center_.lat() * (l - 1) + marker.getPosition().lat()) / l;\r\n var lng =\r\n (this.center_.lng() * (l - 1) + marker.getPosition().lng()) / l;\r\n this.center_ = new google.maps.LatLng(lat, lng);\r\n this.calculateBounds_();\r\n }\r\n }\r\n \r\n marker.isAdded = true;\r\n this.markers_.push(marker);\r\n \r\n var len = this.markers_.length;\r\n if (len < this.minClusterSize_ && marker.getMap() != this.map_) {\r\n // Min cluster size not reached so show the marker.\r\n marker.setMap(this.map_);\r\n }\r\n \r\n if (len == this.minClusterSize_) {\r\n // Hide the markers that were showing.\r\n for (var i = 0; i < len; i++) {\r\n this.markers_[i].setMap(null);\r\n }\r\n }\r\n \r\n if (len >= this.minClusterSize_) {\r\n marker.setMap(null);\r\n }\r\n \r\n this.updateIcon();\r\n return true;\r\n }\r\n \r\n /**\r\n * Returns the marker clusterer that the cluster is associated with.\r\n *\r\n * @return {MarkerClusterer} The associated marker clusterer.\r\n */\r\n getMarkerClusterer() {\r\n return this.markerClusterer_;\r\n }\r\n \r\n /**\r\n * Returns the bounds of the cluster.\r\n *\r\n * @return {google.maps.LatLngBounds} the cluster bounds.\r\n */\r\n getBounds() {\r\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\r\n var markers = this.getMarkers();\r\n for (var i = 0, marker; (marker = markers[i]); i++) {\r\n bounds.extend(marker.getPosition());\r\n }\r\n return bounds;\r\n }\r\n \r\n /**\r\n * Removes the cluster\r\n */\r\n remove() {\r\n this.clusterIcon_.remove();\r\n this.markers_.length = 0;\r\n delete this.markers_;\r\n }\r\n \r\n /**\r\n * Returns the number of markers in the cluster.\r\n *\r\n * @return {number} The number of markers in the cluster.\r\n */\r\n getSize() {\r\n return this.markers_.length;\r\n }\r\n \r\n /**\r\n * Returns a list of the markers in the cluster.\r\n *\r\n * @return {Array.} The markers in the cluster.\r\n */\r\n getMarkers() {\r\n return this.markers_;\r\n }\r\n \r\n /**\r\n * Returns the center of the cluster.\r\n *\r\n * @return {google.maps.LatLng} The cluster center.\r\n */\r\n getCenter() {\r\n return this.center_;\r\n }\r\n \r\n /**\r\n * Calculated the extended bounds of the cluster with the grid.\r\n *\r\n * @private\r\n */\r\n calculateBounds_() {\r\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\r\n this.bounds_ = this.markerClusterer_.getExtendedBounds(bounds);\r\n }\r\n \r\n /**\r\n * Determines if a marker lies in the clusters bounds.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @return {boolean} True if the marker lies in the bounds.\r\n */\r\n isMarkerInClusterBounds(marker) {\r\n return this.bounds_.contains(marker.getPosition());\r\n }\r\n \r\n /**\r\n * Returns the map that the cluster is associated with.\r\n *\r\n * @return {google.maps.Map} The map.\r\n */\r\n getMap() {\r\n return this.map_;\r\n }\r\n \r\n /**\r\n * Updates the cluster icon\r\n */\r\n updateIcon() {\r\n var zoom = this.map_.getZoom();\r\n var mz = this.markerClusterer_.getMaxZoom();\r\n \r\n if (mz && zoom > mz) {\r\n // The zoom is greater than our max zoom so show all the markers in cluster.\r\n for (var i = 0, marker; (marker = this.markers_[i]); i++) {\r\n marker.setMap(this.map_);\r\n }\r\n return;\r\n }\r\n \r\n if (this.markers_.length < this.minClusterSize_) {\r\n // Min cluster size not yet reached.\r\n this.clusterIcon_.hide();\r\n return;\r\n }\r\n \r\n var numStyles = this.markerClusterer_.getStyles().length;\r\n var sums = this.markerClusterer_.getCalculator()(this.markers_, numStyles);\r\n this.clusterIcon_.setCenter(this.center_);\r\n this.clusterIcon_.setSums(sums);\r\n this.clusterIcon_.show();\r\n }\r\n }\r\n \r\n /**\r\n * A cluster icon\r\n *\r\n * @param {Cluster} cluster The cluster to be associated with.\r\n * @param {Object} styles An object that has style properties:\r\n * 'url': (string) The image url.\r\n * 'height': (number) The image height.\r\n * 'width': (number) The image width.\r\n * 'anchor': (Array) The anchor position of the label text.\r\n * 'textColor': (string) The text color.\r\n * 'textSize': (number) The text size.\r\n * 'backgroundPosition: (string) The background postition x, y.\r\n * @param {number=} opt_padding Optional padding to apply to the cluster icon.\r\n * @constructor\r\n * @extends google.maps.OverlayView\r\n * @ignore\r\n */\r\n class ClusterIcon {\r\n constructor(cluster, styles, opt_padding) {\r\n cluster.getMarkerClusterer().extend(ClusterIcon, google.maps.OverlayView);\r\n \r\n this.styles_ = styles;\r\n this.padding_ = opt_padding || 0;\r\n this.cluster_ = cluster;\r\n this.center_ = null;\r\n this.map_ = cluster.getMap();\r\n this.div_ = null;\r\n this.sums_ = null;\r\n this.visible_ = false;\r\n \r\n this.setMap(this.map_);\r\n }\r\n \r\n /**\r\n * Triggers the clusterclick event and zoom's if the option is set.\r\n */\r\n triggerClusterClick() {\r\n var clusterBounds = this.cluster_.getBounds();\r\n var markerClusterer = this.cluster_.getMarkerClusterer();\r\n \r\n // Trigger the clusterclick event.\r\n google.maps.event.trigger(\r\n markerClusterer.map_,\r\n \"clusterclick\",\r\n this.cluster_\r\n );\r\n \r\n if (markerClusterer.isZoomOnClick()) {\r\n // Zoom into the cluster.\r\n this.map_.fitBounds(clusterBounds);\r\n this.map_.setCenter(clusterBounds.getCenter());\r\n }\r\n }\r\n \r\n /**\r\n * Adding the cluster icon to the dom.\r\n * @ignore\r\n */\r\n onAdd() {\r\n this.div_ = document.createElement(\"DIV\");\r\n if (this.visible_) {\r\n var pos = this.getPosFromLatLng_(this.center_);\r\n this.div_.style.cssText = this.createCss(pos);\r\n this.div_.innerHTML = this.sums_.text;\r\n }\r\n \r\n var panes = this.getPanes();\r\n panes.overlayMouseTarget.appendChild(this.div_);\r\n \r\n var that = this;\r\n google.maps.event.addDomListener(this.div_, \"click\", function() {\r\n that.triggerClusterClick();\r\n });\r\n }\r\n \r\n /**\r\n * Returns the position to place the div dending on the latlng.\r\n *\r\n * @param {google.maps.LatLng} latlng The position in latlng.\r\n * @return {google.maps.Point} The position in pixels.\r\n * @private\r\n */\r\n getPosFromLatLng_(latlng) {\r\n var pos = this.getProjection().fromLatLngToDivPixel(latlng);\r\n pos.x -= parseInt(this.width_ / 2, 10);\r\n pos.y -= parseInt(this.height_ / 2, 10);\r\n return pos;\r\n }\r\n \r\n /**\r\n * Draw the icon.\r\n * @ignore\r\n */\r\n draw() {\r\n if (this.visible_) {\r\n var pos = this.getPosFromLatLng_(this.center_);\r\n this.div_.style.top = pos.y + \"px\";\r\n this.div_.style.left = pos.x + \"px\";\r\n }\r\n }\r\n \r\n /**\r\n * Hide the icon.\r\n */\r\n hide() {\r\n if (this.div_) {\r\n this.div_.style.display = \"none\";\r\n }\r\n this.visible_ = false;\r\n }\r\n \r\n /**\r\n * Position and show the icon.\r\n */\r\n show() {\r\n if (this.div_) {\r\n var pos = this.getPosFromLatLng_(this.center_);\r\n this.div_.style.cssText = this.createCss(pos);\r\n this.div_.style.display = \"\";\r\n }\r\n this.visible_ = true;\r\n }\r\n \r\n /**\r\n * Remove the icon from the map\r\n */\r\n remove() {\r\n this.setMap(null);\r\n }\r\n \r\n /**\r\n * Implementation of the onRemove interface.\r\n * @ignore\r\n */\r\n onRemove() {\r\n if (this.div_ && this.div_.parentNode) {\r\n this.hide();\r\n this.div_.parentNode.removeChild(this.div_);\r\n this.div_ = null;\r\n }\r\n }\r\n \r\n /**\r\n * Set the sums of the icon.\r\n *\r\n * @param {Object} sums The sums containing:\r\n * 'text': (string) The text to display in the icon.\r\n * 'index': (number) The style index of the icon.\r\n */\r\n setSums(sums) {\r\n this.sums_ = sums;\r\n this.text_ = sums.text;\r\n this.index_ = sums.index;\r\n if (this.div_) {\r\n this.div_.innerHTML = sums.text;\r\n }\r\n \r\n this.useStyle();\r\n }\r\n \r\n /**\r\n * Sets the icon to the the styles.\r\n */\r\n useStyle() {\r\n var index = Math.max(0, this.sums_.index - 1);\r\n index = Math.min(this.styles_.length - 1, index);\r\n var style = this.styles_[index];\r\n this.url_ = style[\"url\"];\r\n this.height_ = style[\"height\"];\r\n this.width_ = style[\"width\"];\r\n this.textColor_ = style[\"textColor\"];\r\n this.anchor_ = style[\"anchor\"];\r\n this.textSize_ = style[\"textSize\"];\r\n this.backgroundPosition_ = style[\"backgroundPosition\"];\r\n }\r\n \r\n /**\r\n * Sets the center of the icon.\r\n *\r\n * @param {google.maps.LatLng} center The latlng to set as the center.\r\n */\r\n setCenter(center) {\r\n this.center_ = center;\r\n }\r\n \r\n /**\r\n * Create the css text based on the position of the icon.\r\n *\r\n * @param {google.maps.Point} pos The position.\r\n * @return {string} The css style text.\r\n */\r\n createCss(pos) {\r\n var style = [];\r\n style.push(\"z-index:\" + this.cluster_.markerClusterer_.getZIndex() + \";\");\r\n style.push(\"background-image:url(\" + this.url_ + \");\");\r\n var backgroundPosition = this.backgroundPosition_\r\n ? this.backgroundPosition_\r\n : \"0 0\";\r\n style.push(\"background-position:\" + backgroundPosition + \";\");\r\n \r\n if (typeof this.anchor_ === \"object\") {\r\n if (\r\n typeof this.anchor_[0] === \"number\" &&\r\n this.anchor_[0] > 0 &&\r\n this.anchor_[0] < this.height_\r\n ) {\r\n style.push(\r\n \"height:\" +\r\n (this.height_ - this.anchor_[0]) +\r\n \"px; padding-top:\" +\r\n this.anchor_[0] +\r\n \"px;\"\r\n );\r\n } else {\r\n style.push(\r\n \"height:\" + this.height_ + \"px; line-height:\" + this.height_ + \"px;\"\r\n );\r\n }\r\n if (\r\n typeof this.anchor_[1] === \"number\" &&\r\n this.anchor_[1] > 0 &&\r\n this.anchor_[1] < this.width_\r\n ) {\r\n style.push(\r\n \"width:\" +\r\n (this.width_ - this.anchor_[1]) +\r\n \"px; padding-left:\" +\r\n this.anchor_[1] +\r\n \"px;\"\r\n );\r\n } else {\r\n style.push(\"width:\" + this.width_ + \"px; text-align:center;\");\r\n }\r\n } else {\r\n style.push(\r\n \"height:\" +\r\n this.height_ +\r\n \"px; line-height:\" +\r\n this.height_ +\r\n \"px; width:\" +\r\n this.width_ +\r\n \"px; text-align:center;\"\r\n );\r\n }\r\n \r\n var txtColor = this.textColor_ ? this.textColor_ : \"black\";\r\n var txtSize = this.textSize_ ? this.textSize_ : 11;\r\n \r\n style.push(\r\n \"cursor:pointer; top:\" +\r\n pos.y +\r\n \"px; left:\" +\r\n pos.x +\r\n \"px; color:\" +\r\n txtColor +\r\n \"; position:absolute; font-size:\" +\r\n txtSize +\r\n \"px; font-family:Arial,sans-serif; font-weight:bold\"\r\n );\r\n return style.join(\"\");\r\n }\r\n }\r\n \r\n// export default MarkerClusterer;","(function (global, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(['exports'], factory);\r\n } else if (typeof exports !== \"undefined\") {\r\n factory(exports);\r\n } else {\r\n var mod = {\r\n exports: {}\r\n };\r\n factory(mod.exports);\r\n global.bodyScrollLock = mod.exports;\r\n }\r\n})(this, function (exports) {\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n\r\n function _toConsumableArray(arr) {\r\n if (Array.isArray(arr)) {\r\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\r\n arr2[i] = arr[i];\r\n }\r\n\r\n return arr2;\r\n } else {\r\n return Array.from(arr);\r\n }\r\n }\r\n\r\n // Older browsers don't support event options, feature detect it.\r\n\r\n // Adopted and modified solution from Bohdan Didukh (2017)\r\n // https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\r\n\r\n var hasPassiveEvents = false;\r\n if (typeof window !== 'undefined') {\r\n var passiveTestOptions = {\r\n get passive() {\r\n hasPassiveEvents = true;\r\n return undefined;\r\n }\r\n };\r\n window.addEventListener('testPassive', null, passiveTestOptions);\r\n window.removeEventListener('testPassive', null, passiveTestOptions);\r\n }\r\n\r\n var isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && /iP(ad|hone|od)/.test(window.navigator.platform);\r\n\r\n\r\n var locks = [];\r\n var documentListenerAdded = false;\r\n var initialClientY = -1;\r\n var previousBodyOverflowSetting = void 0;\r\n var previousBodyPaddingRight = void 0;\r\n\r\n // returns true if `el` should be allowed to receive touchmove events\r\n var allowTouchMove = function allowTouchMove(el) {\r\n return locks.some(function (lock) {\r\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n };\r\n\r\n var preventDefault = function preventDefault(rawEvent) {\r\n var e = rawEvent || window.event;\r\n\r\n // For the case whereby consumers adds a touchmove event listener to document.\r\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\r\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\r\n // the touchmove event on document will break.\r\n if (allowTouchMove(e.target)) {\r\n return true;\r\n }\r\n\r\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom)\r\n if (e.touches.length > 1) return true;\r\n\r\n if (e.preventDefault) e.preventDefault();\r\n\r\n return false;\r\n };\r\n\r\n var setOverflowHidden = function setOverflowHidden(options) {\r\n // Setting overflow on body/documentElement synchronously in Desktop Safari slows down\r\n // the responsiveness for some reason. Setting within a setTimeout fixes this.\r\n setTimeout(function () {\r\n // If previousBodyPaddingRight is already set, don't set it again.\r\n if (previousBodyPaddingRight === undefined) {\r\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\r\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\r\n\r\n if (_reserveScrollBarGap && scrollBarGap > 0) {\r\n previousBodyPaddingRight = document.body.style.paddingRight;\r\n document.body.style.paddingRight = scrollBarGap + 'px';\r\n }\r\n }\r\n\r\n // If previousBodyOverflowSetting is already set, don't set it again.\r\n if (previousBodyOverflowSetting === undefined) {\r\n previousBodyOverflowSetting = document.body.style.overflow;\r\n document.body.style.overflow = 'hidden';\r\n }\r\n });\r\n };\r\n\r\n var restoreOverflowSetting = function restoreOverflowSetting() {\r\n // Setting overflow on body/documentElement synchronously in Desktop Safari slows down\r\n // the responsiveness for some reason. Setting within a setTimeout fixes this.\r\n setTimeout(function () {\r\n if (previousBodyPaddingRight !== undefined) {\r\n document.body.style.paddingRight = previousBodyPaddingRight;\r\n\r\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\r\n // can be set again.\r\n previousBodyPaddingRight = undefined;\r\n }\r\n\r\n if (previousBodyOverflowSetting !== undefined) {\r\n document.body.style.overflow = previousBodyOverflowSetting;\r\n\r\n // Restore previousBodyOverflowSetting to undefined\r\n // so setOverflowHidden knows it can be set again.\r\n previousBodyOverflowSetting = undefined;\r\n }\r\n });\r\n };\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\r\n var isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\r\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\r\n };\r\n\r\n var handleScroll = function handleScroll(event, targetElement) {\r\n var clientY = event.targetTouches[0].clientY - initialClientY;\r\n\r\n if (allowTouchMove(event.target)) {\r\n return false;\r\n }\r\n\r\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\r\n // element is at the top of its scroll\r\n return preventDefault(event);\r\n }\r\n\r\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\r\n // element is at the top of its scroll\r\n return preventDefault(event);\r\n }\r\n\r\n event.stopPropagation();\r\n return true;\r\n };\r\n\r\n var disableBodyScroll = exports.disableBodyScroll = function disableBodyScroll(targetElement, options) {\r\n if (isIosDevice) {\r\n // targetElement must be provided, and disableBodyScroll must not have been\r\n // called on this targetElement before.\r\n if (!targetElement) {\r\n // eslint-disable-next-line no-console\r\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\r\n return;\r\n }\r\n\r\n if (targetElement && !locks.some(function (lock) {\r\n return lock.targetElement === targetElement;\r\n })) {\r\n var lock = {\r\n targetElement: targetElement,\r\n options: options || {}\r\n };\r\n\r\n locks = [].concat(_toConsumableArray(locks), [lock]);\r\n\r\n targetElement.ontouchstart = function (event) {\r\n if (event.targetTouches.length === 1) {\r\n // detect single touch\r\n initialClientY = event.targetTouches[0].clientY;\r\n }\r\n };\r\n targetElement.ontouchmove = function (event) {\r\n if (event.targetTouches.length === 1) {\r\n // detect single touch\r\n handleScroll(event, targetElement);\r\n }\r\n };\r\n\r\n if (!documentListenerAdded) {\r\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\r\n documentListenerAdded = true;\r\n }\r\n }\r\n } else {\r\n setOverflowHidden(options);\r\n var _lock = {\r\n targetElement: targetElement,\r\n options: options || {}\r\n };\r\n\r\n locks = [].concat(_toConsumableArray(locks), [_lock]);\r\n }\r\n };\r\n\r\n var clearAllBodyScrollLocks = exports.clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\r\n if (isIosDevice) {\r\n // Clear all locks ontouchstart/ontouchmove handlers, and the references\r\n locks.forEach(function (lock) {\r\n lock.targetElement.ontouchstart = null;\r\n lock.targetElement.ontouchmove = null;\r\n });\r\n\r\n if (documentListenerAdded) {\r\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\r\n documentListenerAdded = false;\r\n }\r\n\r\n locks = [];\r\n\r\n // Reset initial clientY\r\n initialClientY = -1;\r\n } else {\r\n restoreOverflowSetting();\r\n locks = [];\r\n }\r\n };\r\n\r\n var enableBodyScroll = exports.enableBodyScroll = function enableBodyScroll(targetElement) {\r\n if (isIosDevice) {\r\n if (!targetElement) {\r\n // eslint-disable-next-line no-console\r\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\r\n return;\r\n }\r\n\r\n targetElement.ontouchstart = null;\r\n targetElement.ontouchmove = null;\r\n\r\n locks = locks.filter(function (lock) {\r\n return lock.targetElement !== targetElement;\r\n });\r\n\r\n if (documentListenerAdded && locks.length === 0) {\r\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\r\n\r\n documentListenerAdded = false;\r\n }\r\n } else {\r\n locks = locks.filter(function (lock) {\r\n return lock.targetElement !== targetElement;\r\n });\r\n if (!locks.length) {\r\n restoreOverflowSetting();\r\n }\r\n }\r\n };\r\n});\r\n","const SPEECH = (function () {\r\n let speechConfig;\r\n let audioConfig;\r\n\r\n // function addSTTSingleShotEvent(btnElement, textField) {\r\n // function eventFunction() {\r\n // const recognizer = new SpeechSDK.SpeechRecognizer(\r\n // speechConfig,\r\n // audioConfig,\r\n // );\r\n // recognizer.recognizeOnceAsync(result => {\r\n // btnElement.classList.remove('disabled');\r\n // switch (result.reason) {\r\n // case SpeechSDK.ResultReason.RecognizedSpeech:\r\n // textField.firstElementChild.value += `${result.text} `;\r\n // break;\r\n // case SpeechSDK.ResultReason.NoMatch:\r\n // console.log('NOMATCH: Speech could not be recognized.');\r\n // break;\r\n // case SpeechSDK.ResultReason.Canceled:\r\n // const cancellation = CancellationDetails.fromResult(result);\r\n // console.log(`CANCELED: Reason=${cancellation.reason}`);\r\n\r\n // if (cancellation.reason == CancellationReason.Error) {\r\n // console.log(`CANCELED: ErrorCode=${cancellation.ErrorCode}`);\r\n // console.log(\r\n // `CANCELED: ErrorDetails=${cancellation.errorDetails}`,\r\n // );\r\n // console.log('CANCELED: Did you update the subscription info?');\r\n // }\r\n // break;\r\n // }\r\n // recognizer.close();\r\n // recognizer = undefined;\r\n // });\r\n // }\r\n // btnElement.addEventListener('click', event => {\r\n // btnElement.classList.add('disabled');\r\n // eventFunction();\r\n // });\r\n // }\r\n\r\n function addSTTContinuousRecEvent(btnElement, textField) {\r\n let listening = false;\r\n\r\n const continuousListening = (function () {\r\n const recognizer = new SpeechSDK.SpeechRecognizer(speechConfig, audioConfig);\r\n\r\n recognizer.recognizing = (s, e) => {};\r\n\r\n recognizer.recognized = (s, e) => {\r\n if (e.result.reason == SpeechSDK.ResultReason.RecognizedSpeech) {\r\n textField.firstElementChild.value += `${e.result.text} `;\r\n textField.firstChild.dispatchEvent(new Event('keyup', { bubbles: true }));\r\n // input event for autosize\r\n textField.firstChild.dispatchEvent(new Event('input', { bubbles: true }));\r\n } else if (e.result.reason == SpeechSDK.ResultReason.NoMatch) {\r\n console.log('NOMATCH: Speech could not be recognized.');\r\n }\r\n };\r\n\r\n recognizer.canceled = (s, e) => {\r\n console.log(`CANCELED: Reason=${e.reason}`);\r\n\r\n if (e.reason == CancellationReason.Error) {\r\n console.log(`\"CANCELED: ErrorCode=${e.errorCode}`);\r\n console.log(`\"CANCELED: ErrorDetails=${e.errorDetails}`);\r\n console.log('CANCELED: Did you update the subscription info?');\r\n }\r\n };\r\n\r\n function start(callback, errorCB) {\r\n recognizer.startContinuousRecognitionAsync(callback, errorCB);\r\n }\r\n function stop(callback, errorCB) {\r\n recognizer.stopContinuousRecognitionAsync(callback, errorCB);\r\n }\r\n function close() {\r\n recognizer.close();\r\n }\r\n return {\r\n start,\r\n stop,\r\n close,\r\n };\r\n })();\r\n\r\n btnElement.addEventListener('click', () => {\r\n listening = !listening;\r\n if (listening) {\r\n continuousListening.start(\r\n () => {\r\n btnElement.classList.add('stt_listening');\r\n btnElement.innerHTML = icons.microphoneFilled;\r\n },\r\n error => console.log(error),\r\n );\r\n } else {\r\n continuousListening.stop(\r\n () => {\r\n btnElement.classList.remove('stt_listening');\r\n btnElement.innerHTML = icons.microphone;\r\n },\r\n error => console.log(error),\r\n );\r\n }\r\n });\r\n\r\n //--------------\r\n // Mutation Observer for leaving section to disconnect STT API Call\r\n const observNode = document.getElementById('actioncenter');\r\n const config = { attributes: true };\r\n let observer;\r\n const callback = function (mutationList, observer) {\r\n for (let mutation of mutationList) {\r\n if (mutation.type === 'attributes') {\r\n if (mutation.attributeName === 'data-active-section') {\r\n observer.disconnect();\r\n continuousListening.close();\r\n }\r\n }\r\n }\r\n };\r\n observer = new MutationObserver(callback);\r\n observer.observe(observNode, config);\r\n //-------------------\r\n }\r\n\r\n function init() {\r\n try {\r\n speechConfig = SpeechSDK.SpeechConfig.fromSubscription($.session.azureSTTApi, 'eastus');\r\n speechConfig.speechRecognitionLanguage = 'en-US';\r\n speechConfig.enableDictation();\r\n speechConfig.setServiceProperty('punctuation', 'explicit', SpeechSDK.ServicePropertyChannel.UriQueryParameter);\r\n audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();\r\n return true;\r\n } catch (error) {\r\n switch (error.message) {\r\n case 'throwIfNullOrWhitespace:subscriptionKey':\r\n alert(\r\n 'Error initalizing Speech to Text. No API Key found, or API Key has been entered incorrectly. Please contact system administrator to add Azure Speech API Key.',\r\n );\r\n break;\r\n default:\r\n alert(\r\n 'Error initalizing Speech to Text. Please contact system administrator to make sure you have a valid Speech to Text connection.',\r\n );\r\n break;\r\n }\r\n console.error(error);\r\n return false;\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n //addSTTSingleShotEvent,\r\n addSTTContinuousRecEvent,\r\n };\r\n})();\r\n","const UTIL = (function () {\r\n function abbreviateDateYear(dateString) {\r\n // shortens year\r\n var dateArr = dateString.split('/');\r\n var month = dateArr[0];\r\n var day = dateArr[1];\r\n var year = dateArr[2].split('');\r\n year = `${year[2]}${year[3]}`;\r\n\r\n return `${leadingZero(month)}/${leadingZero(day)}/${year}`;\r\n }\r\n\r\n function camelize(str) {\r\n if (!str) return;\r\n return str.replace(/\\W+(.)/g, (match, chr) => {\r\n return chr.toUpperCase();\r\n });\r\n }\r\n\r\n function capitalize(str) {\r\n if (typeof str !== 'string') return '';\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n }\r\n\r\n function convertFromMilitary(time) {\r\n if (!time || time === '') return '';\r\n\r\n time = time.split(':');\r\n var hh = parseInt(time[0]);\r\n var mm = parseInt(time[1]);\r\n var amPm = hh <= 11 ? 'AM' : 'PM';\r\n\r\n if (hh === 0) hh = 12;\r\n if (amPm === 'PM' && hh !== 12) hh -= 12;\r\n\r\n return `${hh}:${leadingZero(mm)} ${amPm}`;\r\n }\r\n\r\n /**\r\n * Converts a 12hr time to 24hr military time.\r\n * @param {string} time - Time you would like to convert. Must be in this format: 'HH:MM am|pm'\r\n * @returns {string} Converted time\r\n */\r\n function convertToMilitary(time) {\r\n // time format must be hh:mm am/pm\r\n if (!time || time === '') return '';\r\n\r\n time = time.split(' ');\r\n timeString = time[0].split(':');\r\n\r\n var amPM = time[1].toLowerCase();\r\n var hh = parseInt(timeString[0]);\r\n var mm = parseInt(timeString[1]);\r\n\r\n if (amPM === 'pm' && hh !== 12) hh += 12;\r\n if (amPM === 'am' && hh === 12) hh = 0;\r\n\r\n return `${leadingZero(hh)}:${leadingZero(mm)}:00`;\r\n }\r\n\r\n /**\r\n * Calculates the total number of hours between the start and end\r\n * @param {string} dirtyStart Start Time (24hr military time)\r\n * @param {string} dirtyEnd End Time (24hr military time)\r\n * @returns {string} Total number of hours\r\n */\r\n function calculateTotalHours(dirtyStart, dirtyEnd, format) {\r\n // must be military time\r\n if (dirtyStart === '' || dirtyEnd === '' || !dirtyStart || !dirtyEnd) {\r\n return;\r\n }\r\n\r\n var startTime = dirtyStart.split(':');\r\n var endTime = dirtyEnd.split(':');\r\n\r\n var tempDate = new Date();\r\n var year = tempDate.getFullYear();\r\n var month = tempDate.getMonth();\r\n var day = tempDate.getDate();\r\n\r\n var startDate = new Date(year, month, day, startTime[0], startTime[1]);\r\n var endDate;\r\n if (dirtyEnd === '00:00') {\r\n endDate = new Date(year, month, day + 1, endTime[0], endTime[1]);\r\n } else {\r\n endDate = new Date(year, month, day, endTime[0], endTime[1]);\r\n }\r\n\r\n var timeDiff = endDate - startDate;\r\n var hoursDiff = Math.floor((timeDiff % 86400000) / 3600000);\r\n var minutesDiff = Math.floor(((timeDiff % 86400000) % 3600000) / 60000);\r\n\r\n if (format === 'hh:mm') {\r\n return `${hoursDiff}:${minutesDiff}`;\r\n }\r\n\r\n return (parseInt(hoursDiff, 10) + parseFloat((minutesDiff / 60).toFixed(2))).toFixed(2);\r\n }\r\n /**\r\n * Splits the given array into a new array of the array broken into multiple chunks.\r\n * @example\r\n * // returns [[a,b,c],[d,e,f],[g,h,i]]\r\n * UTIL.chunkArray([a,b,c,d,e,f,g,h,i], 3)\r\n * @param {array} arr Array you would like to split into smaller arrays\r\n * @param {number} chunkSize Number value you would like the size of the array chunks to be split into\r\n * @returns {array[]} Returns an array of the split up array.\r\n */\r\n function chunkArray(arr, chunkSize) {\r\n var R = [];\r\n for (var i = 0, len = arr.length; i < len; i += chunkSize) R.push(arr.slice(i, i + chunkSize));\r\n return R;\r\n }\r\n\r\n function detectBrowser() {\r\n var ua = window.navigator.userAgent;\r\n\r\n var msie = ua.indexOf('MSIE ');\r\n if (msie > 0) {\r\n // IE 10 or older => return version number\r\n var ver = parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n return true;\r\n }\r\n\r\n var trident = ua.indexOf('Trident/');\r\n if (trident > 0) {\r\n // IE 11 => return version number\r\n var rv = ua.indexOf('rv:');\r\n var versionNumber = parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\r\n return true;\r\n }\r\n\r\n var edge = ua.indexOf('Edge/');\r\n if (edge > 0) {\r\n // Edge (IE 12+) => return version number\r\n var versionNumber = parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\r\n return true;\r\n }\r\n\r\n // other browser\r\n return false;\r\n }\r\n\r\n /**\r\n * Converts the given date to ISO format\r\n * @example\r\n * // returns 2020-01-01\r\n * UTIL.formatDateToIso('01/01/2020')\r\n * @param {string} dirtyDate Date you would like to be converted to ISO format. Acceptable formats are:\r\n * - MM/DD/YYYY\r\n * - MM-DD-YYYY\r\n * @returns {string} Returns the string of the date in ISO Format\r\n */\r\n function formatDateToIso(dirtyDate) {\r\n if (!dirtyDate) return;\r\n\r\n let splitBy;\r\n\r\n if (dirtyDate.indexOf('/') !== -1) {\r\n splitBy = '/';\r\n } else if (dirtyDate.indexOf('-') !== -1) {\r\n splitBy = '-';\r\n } else {\r\n return 'Invalid Date String';\r\n }\r\n\r\n const date = dirtyDate.split(splitBy);\r\n\r\n if (date[0].length === 4) {\r\n return dirtyDate;\r\n }\r\n\r\n const YYYY = date[2];\r\n const MM = leadingZero(date[0]);\r\n const DD = leadingZero(date[1]);\r\n\r\n return `${YYYY}-${MM}-${DD}`;\r\n }\r\n /**\r\n * Converts the given ISO date to a more readable format\r\n * @example\r\n * // returns 01-01-2020\r\n * UTIL.formatDateFromIso('2020-01-01', '-')\r\n * @example\r\n * // returns 01/01/2020\r\n * UTIL.formatDateFromIso('2020-01-01')\r\n * @param {string} dirtyDate - Date you would like to be converted from ISO format\r\n * - Must be YYYY-MM-DD\r\n * @param {string} [joinBy='/'] - Character you would like to seperate the MM DD and YYYY\r\n * @returns {string} Returns the cleaned date\r\n */\r\n function formatDateFromIso(dirtyDate, joinBy, opts) {\r\n var shorten = opts ? opts.shortenYear : false;\r\n var date = dirtyDate.split('-');\r\n var MM = leadingZero(date[1]);\r\n var DD = leadingZero(date[2]);\r\n var YYYY = shorten ? date[0].substring(0, 2) : date[0];\r\n\r\n if (joinBy) {\r\n return `${MM}${joinBy}${DD}${joinBy}${YYYY}`;\r\n }\r\n\r\n return `${MM}/${DD}/${YYYY}`;\r\n }\r\n\r\n /**\r\n * Converts a date object created from Date() into ISO format (YYYY-MM-DD).\r\n * @deprecated Use getFormattedDateFromDate() instead. It allows you to specify how you would like the\r\n * date to be outputted.\r\n * @param {object} dirtyDateObj - date object created from Date()\r\n * @returns {string} Returns the ISO format of the given date object\r\n */\r\n function formatDateFromDateObj(dirtyDateObj) {\r\n var dateObj = new Date(dirtyDateObj);\r\n var year = dateObj.getFullYear();\r\n var month = dateObj.getMonth();\r\n var day = dateObj.getDate();\r\n month = month + 1;\r\n\r\n return `${year}-${leadingZero(month)}-${leadingZero(day)}`;\r\n }\r\n\r\n /**\r\n * Converts a time with Hour Min and Seconds to 12hr time\r\n * @example\r\n * // returns 2:30 PM\r\n * UTIL.formatTimeString('14:30:29')\r\n * @param {string} timeString - Time you would like converted to AM PM time.\r\n * - HH:MM:SS\r\n * @returns {string} Returns the time into an Am Pm time, and strips the seconds.\r\n */\r\n function formatTimeString(timeString) {\r\n if (timeString === '') return timeString;\r\n // removes seconds and strips leading zeros then converts to standard\r\n var time = timeString.split(':');\r\n var hh = time[0].split('')[0] === '0' ? time[0].split('')[1] : time[0];\r\n var mm = time[1];\r\n\r\n return UTIL.convertFromMilitary(`${hh}:${mm}`);\r\n }\r\n\r\n /**\r\n * Converts a phone number string into a more readable format of the phone number\r\n * @example\r\n * returns 614-222-3322\r\n * UTIL.formatPhoneNumber('6142223322')\r\n * @param {string} phoneNumberString - Phone Number\r\n * @returns {string} Returs a more readable format of the phone number\r\n */\r\n function formatPhoneNumber(phoneNumberString) {\r\n var cleaned = ('' + phoneNumberString).replace(/\\D/g, '');\r\n var match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\r\n if (match) {\r\n return `${match[1]}-${match[2]}-${match[3]}`;\r\n }\r\n return phoneNumberString;\r\n }\r\n\r\n function findAndSlice(array, value, property) {\r\n function itemFind(item) {\r\n // Check for array of objects\r\n if (typeof array[0] === 'object' && property) {\r\n return item[property] === value;\r\n } else {\r\n return item === value;\r\n }\r\n }\r\n array.splice(array.findIndex(itemFind), 1);\r\n }\r\n\r\n /**\r\n * Gets lat and long from browsers Location API\r\n * @param {function} callback Action to perform once location is found\r\n * @returns {object} Returs the position latitude and longitude\r\n */\r\n function getGeoLocation(callback) {\r\n function handleSuccess(position) {\r\n var pos = {\r\n lat: position.coords.latitude,\r\n long: position.coords.longitude,\r\n };\r\n\r\n $.session.geoLocationPosition = pos;\r\n\r\n if (callback) callback(pos);\r\n }\r\n function handleFirstRunError(error) {\r\n navigator.geolocation.getCurrentPosition(handleSuccess, handleSecondRunError, {\r\n enableHighAccuracy: false,\r\n });\r\n }\r\n function handleSecondRunError(error) {\r\n alert('Location blocked by device or browser.');\r\n }\r\n\r\n if (location.protocol === 'https:' || location.hostname === 'localhost') {\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(handleSuccess, handleFirstRunError, {\r\n enableHighAccuracy: true,\r\n });\r\n } else {\r\n alert('Your browser does not support geolocation.');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Converts a date object from Date() into a date string for either display or to use in DB calls.\r\n * @param {object} date - Date object from Date()\r\n * @param {object} [options] - Options for formating the Date\r\n * @param {string} [options.separator='/'] - Seperation character for between month day and year\r\n * @param {string} [options.format] - Choose how you would like the date output to be formated:\r\n * - pass 'iso' for an ISO format (YYYY-MM-DD)\r\n * - pass 'nonIso' to have a display formated output (MM/DD/YYYY or options.separator)\r\n * @returns {string} Returns a string date with the given formating options\r\n */\r\n function getFormattedDateFromDate(date, options) {\r\n var separator = options && options.separator ? options.separator : '/';\r\n var year = date.getFullYear();\r\n\r\n var month = (1 + date.getMonth()).toString();\r\n month = month.length > 1 ? month : '0' + month;\r\n\r\n var day = date.getDate().toString();\r\n day = day.length > 1 ? day : '0' + day;\r\n\r\n var date = `${month}${separator}${day}${separator}${year}`;\r\n\r\n if (options) {\r\n if (!options.format || options.format === 'nonIso') {\r\n return date;\r\n }\r\n\r\n if (options.format === 'iso') {\r\n return formatDateToIso(date);\r\n }\r\n } else {\r\n return date;\r\n }\r\n }\r\n\r\n /** @deprecated Use getTodaysDate()\t */\r\n function getDBDateNow() {\r\n var d = new Date();\r\n return [d.getFullYear(), d.getMonth() + 1, d.getDate()].join('-');\r\n }\r\n\r\n /**\r\n * Gets todays date\r\n * @param {boolean} [returnObj] - If True, function will return a Date() object rather than an ISO formated date\r\n * @returns {string|object} Returns either a date object or ISO formated string\r\n */\r\n function getTodaysDate(returnObj) {\r\n // returns iso format date\r\n var today = new Date();\r\n if (returnObj) return today;\r\n var dd = leadingZero(today.getDate());\r\n var mm = leadingZero(today.getMonth() + 1);\r\n var yyyy = today.getFullYear();\r\n return `${yyyy}-${mm}-${dd}`;\r\n }\r\n\r\n /**\r\n * Gets the current time 24hr military time (HH:MM).\r\n * @returns {string} Returns a time string in 24hr military time.\r\n */\r\n function getCurrentTime() {\r\n var today = new Date();\r\n var hours = today.getHours();\r\n var minutes = today.getMinutes();\r\n hours = hours < 10 ? '0' + hours : hours;\r\n minutes = minutes < 10 ? '0' + minutes : minutes;\r\n var now = `${hours}:${minutes}`;\r\n return now;\r\n }\r\n\r\n function getRange(start, stop) {\r\n if (stop === undefined) {\r\n stop = start || 1;\r\n start = 0;\r\n }\r\n let arr = [];\r\n for (let i = start; i < stop; i++) {\r\n arr.push(i);\r\n }\r\n return arr;\r\n }\r\n\r\n function isObject(obj) {\r\n var type = typeof obj;\r\n return type === 'function' || (type === 'object' && !!obj);\r\n }\r\n /**\r\n * Creates a deep copy of the passed object\r\n * @param {object} src Object to copy\r\n * @returns {object} Returns the coppied object\r\n */\r\n function iterationCopy(src) {\r\n // copys an object\r\n let target = {};\r\n for (let prop in src) {\r\n if (src.hasOwnProperty(prop)) {\r\n // if the value is a nested object, recursively copy all it's properties\r\n if (isObject(src[prop])) {\r\n target[prop] = iterationCopy(src[prop]);\r\n } else {\r\n target[prop] = src[prop];\r\n }\r\n }\r\n }\r\n return target;\r\n }\r\n\r\n /**\r\n * Adds a leading 0 to the passed number.\r\n * - ONLY adds a 0 if the number is 1 character long.\r\n * - Primarly used to make numbers saveable to the DB.\r\n * @example\r\n * // returns '03'\r\n * UTIL.leadingZero(3)\r\n * // returns '11'\r\n * UTIL.leadingZero(11)\r\n * @param {number} number Number to add leading 0 to\r\n * @returns {string} Returns a string version of the number with\r\n * the number plus a 0 before it (if number is more than 1 character)\r\n */\r\n function leadingZero(number) {\r\n var num = String(number);\r\n if (num.length > 1) return num;\r\n return `0${num}`;\r\n }\r\n /**\r\n * Converts an XML string into an XMLDocument that can be accessed more easly using standard JS DOM selectors.\r\n * @param {string} xmlString An XML string\r\n * @returns {XMLDocument} Returns XMLDocument\r\n */\r\n function parseXml(xmlString) {\r\n var parser, xmlDoc, hasError;\r\n parser = new DOMParser();\r\n xmlString = xmlString.replace(/@/g, '');\r\n //xmlDoc = parser.parseFromString(xmlString, 'text/xml');\r\n try {\r\n xmlDoc = parser.parseFromString(xmlString, 'text/xml');\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n // Parse Error Check\r\n hasError = xmlDoc.documentElement.nodeName === 'parsererror' ? true : false;\r\n if (hasError) {\r\n console.error('error while parsing');\r\n } else {\r\n return xmlDoc;\r\n }\r\n }\r\n\r\n function removeDecimals(num) {\r\n if (typeof num === 'number') {\r\n return Math.floor(num);\r\n } else {\r\n return Math.floor(parseInt(num));\r\n }\r\n }\r\n\r\n function removeQuotes(string) {\r\n return string.replace(/\\\\['\\\\]|'/g, function (s) {\r\n return s === \"'\" ? '' : s;\r\n });\r\n }\r\n\r\n function toInteger(dirtyNumber) {\r\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\r\n return NaN;\r\n }\r\n\r\n var number = Number(dirtyNumber);\r\n\r\n if (isNaN(number)) {\r\n return number;\r\n }\r\n\r\n return number < 0 ? Math.ceil(number) : Math.floor(number);\r\n }\r\n\r\n function removeNonIntegerCharactersFromString(inputString) {\r\n // Use a regular expression to remove non-integer characters from string\r\n return inputString.replace(/[^\\d]/g, '');\r\n }\r\n\r\n function validateTime(time) {\r\n const splitTime = time.split('.'); //Edge Chromium adds milliseconds to end of time when using time picker\r\n return /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/.test(splitTime[0]);\r\n }\r\n\r\n function validateDateFromInput(dateString) {\r\n const dateArray = dateString.split('-');\r\n let inputDate = new Date(dateArray[0], dateArray[1] - 1, dateArray[2], 0);\r\n inputDate = formatDateFromDateObj(inputDate);\r\n\r\n return dateString == inputDate ? true : false;\r\n }\r\n\r\n /**\r\n * Removes and replaces certain characters that can't be saved into the DB.\r\n * @param {string} note Text that needs to be converted to a format that will save in the DB.\r\n * @returns {string} Returns the note that can now be saved into the DB.\r\n */\r\n function removeUnsavableNoteText(note) {\r\n if (note === null || note === undefined) return;\r\n if (note === '') return '';\r\n\r\n //if (note.indexOf(\"\\\"\") != -1) {\r\n // note = note.replace(/\\\"/g, \"\");\r\n //}\r\n if (note.indexOf('\\\\') != -1) {\r\n note = note.replace(/\\\\/g, '');\r\n }\r\n\r\n if (note.indexOf('\"') != -1) {\r\n //note = note.replace(/\\\"/g, \"\");\r\n note = note.replace(/\\\"/g, '\"');\r\n }\r\n if (note.indexOf(\"'\") != -1) {\r\n note = note.replace(/'/g, \"''\");\r\n }\r\n\r\n if (note.indexOf('\\n') != -1) {\r\n //note = note.replace(/\\n/g, \"\\\\\\\\x0a\");\r\n // note = note.replace(/\\n/g, \"\\\\r\\\\n\");\r\n }\r\n\r\n note = note.replace(' ', '');\r\n note = note.replace('\\t', '');\r\n note = note.replace(/\\t/g, '');\r\n note = note;\r\n return note;\r\n }\r\n\r\n function romanize(num) {\r\n if (!+num) return false;\r\n var digits = String(+num).split(''),\r\n key = [\r\n '',\r\n 'C',\r\n 'CC',\r\n 'CCC',\r\n 'CD',\r\n 'D',\r\n 'DC',\r\n 'DCC',\r\n 'DCCC',\r\n 'CM',\r\n '',\r\n 'X',\r\n 'XX',\r\n 'XXX',\r\n 'XL',\r\n 'L',\r\n 'LX',\r\n 'LXX',\r\n 'LXXX',\r\n 'XC',\r\n '',\r\n 'I',\r\n 'II',\r\n 'III',\r\n 'IV',\r\n 'V',\r\n 'VI',\r\n 'VII',\r\n 'VIII',\r\n 'IX',\r\n ],\r\n roman = '',\r\n i = 3;\r\n while (i--) roman = (key[+digits.pop() + i * 10] || '') + roman;\r\n return Array(+digits.join('') + 1).join('M') + roman;\r\n }\r\n /**\r\n * Builds and appends a warning popup\r\n * @param {object} opts Options For the Popup\r\n * @param {string} opts.message What do you want the warning to say\r\n * @param {boolean} [opts.hideX=false] True: X button is hidden\r\n * @param {object} opts.accept Accept options\r\n * @param {string} opts.accept.text Accept option button text\r\n * @param {function} opts.accept.callback Accept option button callback\r\n * @param {object} [opts.reject] Reject options (optional)\r\n * @param {string} [opts.reject.text] Reject option button text\r\n * @param {function} [opts.reject.callback] Reject option button callback\r\n */\r\n function warningPopup(opts) {\r\n const { message, hideX = false, accept, reject } = opts;\r\n const popup = POPUP.build({\r\n id: 'warningPopup',\r\n hideX: hideX,\r\n classNames: 'warning',\r\n });\r\n const acceptBtn = button.build({\r\n text: accept.text,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n if (accept.callback) accept.callback();\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(acceptBtn);\r\n\r\n if (reject) {\r\n const rejectBtn = button.build({\r\n text: reject.text,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n if (reject.callback) reject.callback();\r\n },\r\n });\r\n btnWrap.appendChild(rejectBtn);\r\n }\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = message;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function deromanize(str) {\r\n var str = str.toUpperCase(),\r\n validator = /^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/,\r\n token = /[MDLV]|C[MD]?|X[CL]?|I[XV]?/g,\r\n key = {\r\n M: 1000,\r\n CM: 900,\r\n D: 500,\r\n CD: 400,\r\n C: 100,\r\n XC: 90,\r\n L: 50,\r\n XL: 40,\r\n X: 10,\r\n IX: 9,\r\n V: 5,\r\n IV: 4,\r\n I: 1,\r\n },\r\n num = 0,\r\n m;\r\n if (!(str && validator.test(str))) return false;\r\n while ((m = token.exec(str))) num += key[m[0]];\r\n return num;\r\n }\r\n /**\r\n * LS Stored as object like:\r\n * - anywstata_userid = {storage_key1:storage_value,storage_key2:value}\r\n * @function LS\r\n */\r\n const LS = (function () {\r\n /**\r\n * Returns the value of local storage for key that is passed.\r\n * @param {string} key - Local Storage Key.\r\n * @param {string} [user=$.session.UserId] - User for the key. Defaults to session user.\r\n * @returns {string} Value for key that is passed. Returns nothing if key does not exist.\r\n */\r\n function getStorage(key, user = $.session.UserId) {\r\n //\r\n const state = JSON.parse(localStorage.getItem(`anywstate_${user}`));\r\n if (state) {\r\n return state[key];\r\n } else return;\r\n }\r\n /**\r\n * Set LocalStorage key/value pair for user.\r\n * @param {string} key - Descriptive name of key. Use this same key in getStorage to get the LS value.\r\n * @param {string} value - Value you would like to set\r\n * @param {string} [user=$.session.UserId] - User for the key. Defaults to session user.\r\n */\r\n function setStorage(key, value, user = $.session.UserId) {\r\n let state = JSON.parse(localStorage.getItem(`anywstate_${user}`));\r\n if (!state) state = {};\r\n state[key] = value;\r\n return localStorage.setItem(`anywstate_${user}`, JSON.stringify(state));\r\n }\r\n return {\r\n getStorage: getStorage,\r\n setStorage: setStorage,\r\n };\r\n })();\r\n\r\n /**\r\n * Checks if the dates passed are valid and do not overlap each other\r\n * @param {string} start ISO formated date\r\n * @param {string} end ISO formated date\r\n * @returns {boolean} True = valid date range | False = date range invalid or error parsing date\r\n */\r\n function checkValidDateRange(start, end) {\r\n const startDate = Date.parse(start);\r\n const endDate = Date.parse(end);\r\n if (isNaN(startDate)) {\r\n console.error('Start date is not formatted correctly');\r\n return false;\r\n }\r\n if (isNaN(endDate)) {\r\n console.error('End date is not formatted correctly');\r\n return false;\r\n }\r\n return endDate.getTime() >= startDate.getTime();\r\n }\r\n\r\n /**\r\n * Highlights the module in the hamburger menu or side menu, signifying the module is active.\r\n * @param {string} appName Proper module name\r\n */\r\n function toggleMenuItemHighlight(appName) {\r\n var current = document.querySelector('.menu__button.active');\r\n var target;\r\n\r\n DOM.removeHeaderOpacity();\r\n function toggleHighlight() {\r\n if (target === current) return;\r\n if (current) current.classList.remove('active');\r\n var btn = target.querySelector('.menu__button');\r\n btn.classList.add('active');\r\n }\r\n\r\n switch (appName) {\r\n case 'home': {\r\n target = document.getElementById('singlebuttondiv');\r\n break;\r\n }\r\n case 'casenotes': {\r\n target = document.getElementById('casenotessettingsdiv');\r\n break;\r\n }\r\n case 'dayservices': {\r\n target = document.getElementById('dayservicesettingsdiv');\r\n break;\r\n }\r\n case 'outcomes': {\r\n target = document.getElementById('goalssettingsdiv');\r\n break;\r\n }\r\n case 'incidenttracking': {\r\n target = document.getElementById('incidenttrackingsettingsdiv');\r\n break;\r\n }\r\n case 'roster': {\r\n target = document.getElementById('rostersettingsdiv');\r\n break;\r\n }\r\n case 'schedule': {\r\n target = document.getElementById('schedulersettingsdiv');\r\n break;\r\n }\r\n case 'timeEntry': {\r\n target = document.getElementById('singleentrysettingsdiv');\r\n break;\r\n }\r\n case 'workshop': {\r\n target = document.getElementById('workshopsettingsdiv');\r\n break;\r\n }\r\n case 'reportForms': {\r\n break;\r\n }\r\n case 'authorizations': {\r\n target = document.getElementById('authorizationsdiv');\r\n break;\r\n }\r\n case 'plan': {\r\n target = document.getElementById('plansettingsdiv');\r\n break;\r\n }\r\n case 'workflow': {\r\n target = document.getElementById('workflowsettingsdiv');\r\n break;\r\n }\r\n case 'covid': {\r\n target = document.getElementById('covidchecklistsettingsdiv');\r\n break;\r\n }\r\n case 'transportation': {\r\n target = document.getElementById('transportationsettingsdiv');\r\n break;\r\n }\r\n case 'forms': {\r\n target = document.getElementById('PDFFormssettingsdiv');\r\n break;\r\n }\r\n case 'employment': {\r\n target = document.getElementById('Employmentsettingsdiv');\r\n break;\r\n }\r\n case 'OOD': {\r\n target = document.getElementById('OODsettingsdiv');\r\n break;\r\n }\r\n case 'resetPassword': {\r\n target = document.getElementById('resetPw');\r\n break;\r\n }\r\n case 'ConsumerFinances': {\r\n target = document.getElementById('cfAccountDiv');\r\n break;\r\n }\r\n case 'CFEditAccount': {\r\n target = document.getElementById('cfEditAccountDiv');\r\n break;\r\n }\r\n case 'waitingList': {\r\n target = document.getElementById('waitingListdiv');\r\n break;\r\n }\r\n case 'fSS': {\r\n target = document.getElementById('fSSdiv');\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n\r\n toggleHighlight();\r\n }\r\n\r\n return {\r\n abbreviateDateYear,\r\n camelize,\r\n capitalize,\r\n convertFromMilitary,\r\n convertToMilitary,\r\n calculateTotalHours,\r\n chunkArray,\r\n checkValidDateRange,\r\n detectBrowser,\r\n formatDateToIso,\r\n formatDateFromIso,\r\n formatDateFromDateObj,\r\n formatTimeString,\r\n formatPhoneNumber,\r\n findAndSlice,\r\n getGeoLocation,\r\n getFormattedDateFromDate,\r\n getDBDateNow,\r\n getTodaysDate,\r\n getCurrentTime,\r\n getRange,\r\n iterationCopy,\r\n leadingZero,\r\n parseXml,\r\n removeDecimals,\r\n removeQuotes,\r\n toInteger,\r\n removeNonIntegerCharactersFromString,\r\n validateTime,\r\n validateDateFromInput,\r\n warningPopup,\r\n removeUnsavableNoteText,\r\n romanize,\r\n deromanize,\r\n LS,\r\n toggleMenuItemHighlight,\r\n };\r\n})();\r\n","const mfa = (function() {\r\n let mfaPopup, submitBtn, codeInput, messageArea;\r\n\r\n function buildPopup() {\r\n const mainElement = document.getElementsByTagName(\"main\")[0];\r\n mfaPopup = POPUP.build({\r\n header: \"Please enter your verification code below\",\r\n id: \"mfaPopup\",\r\n hideX: true\r\n });\r\n codeInput = input.build({\r\n id: \"codeInput\",\r\n label: \"Code\"\r\n });\r\n submitBtn = button.build({\r\n id: \"submitBtn\",\r\n text: \"Submit\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: () => submitCode()\r\n });\r\n const cancelBtn = button.build({\r\n id: \"cancleBtn\",\r\n text: \"Cancel\",\r\n callback: () => {\r\n mainElement.removeChild(mfaPopup);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(mfaPopup);\r\n document.body.style.overflow = \"visible\";\r\n }\r\n });\r\n messageArea = document.createElement('div')\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n\r\n mfaPopup.appendChild(codeInput);\r\n btnWrap.appendChild(submitBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n mfaPopup.appendChild(btnWrap);\r\n mfaPopup.appendChild(messageArea)\r\n // disable scrolling\r\n bodyScrollLock.disableBodyScroll(mfaPopup);\r\n // show overlay\r\n const overlayElement = document.querySelector(\".overlay\");\r\n overlayElement.style.zIndex = \"2\";\r\n mfaPopup.style.zIndex = \"3\";\r\n mfaPopup.style.top = \"40%\";\r\n overlay.show();\r\n eventListeners()\r\n mainElement.appendChild(mfaPopup);\r\n setTimeout(() => {codeInput.firstChild.focus();}, 500)\r\n }\r\n\r\n function submitCode() {\r\n messageArea.innerHTML = ''\r\n submitBtn.classList.add('disabled')\r\n const pleaseWait = document.createElement('p')\r\n pleaseWait.style.textAlign = 'center'\r\n pleaseWait.innerText = 'Please Wait'\r\n messageArea.appendChild(pleaseWait)\r\n const code = codeInput\r\n .querySelector(\".input-field__input\")\r\n .value.trim();\r\n authenticatedLogin(code);\r\n }\r\n\r\n function eventListeners() {\r\n codeInput.addEventListener('keyup', event => {\r\n if (event.key === 'Enter') {\r\n submitCode()\r\n }\r\n })\r\n }\r\n\r\n function mfaReject(errorReason) {\r\n\r\n let clearUNPW = false; \r\n let errorMessage;\r\n switch (errorReason) {\r\n case \"Too many failed attempts\":\r\n clearUNPW = true;\r\n errorMessage = \"Too many failed attempts. Your account has been disabled. Please contact a system administrator.\"\r\n break;\r\n case \"Expired key\":\r\n clearUNPW = true;\r\n errorMessage = \"The verification code entered has expired. Please go back to the login screen and enter your credentials to generate a new code.\"\r\n break;\r\n default:\r\n errorMessage = \"Invalid Code. Please try again.\";\r\n submitBtn.classList.remove('disabled');\r\n break;\r\n }\r\n\r\n messageArea.innerHTML = ''\r\n const errorBox = document.createElement(\"div\");\r\n errorBox.classList.add(\"error\");\r\n errorBox.style.display = \"block\";\r\n errorBox.setAttribute(\"id\", \"mfaErrorBox\");\r\n errorBox.innerHTML = `

${errorMessage}

`;\r\n messageArea.appendChild(errorBox);\r\n\r\n if (clearUNPW) {\r\n const unInput = document.getElementById('username');\r\n const pwInput = document.getElementById('password1');\r\n unInput.value = '';\r\n pwInput.value = '';\r\n }\r\n codeInput.firstChild.focus()\r\n codeInput.firstChild.select()\r\n }\r\n\r\n function init() {\r\n overlay.init();\r\n buildPopup();\r\n }\r\n return {\r\n init,\r\n mfaReject\r\n };\r\n})();\r\n","$.session = {};\r\n$.session.firstRunShit = true;\r\n$.session.ViewMyInformation = false;\r\n$.session.UpdateMyInformation = false;\r\n//$.session.firstRunShitLocationAbsentWidget = true;\r\n$.session.DayServiceView = false;\r\n$.session.DayServiceInsert = false;\r\n$.session.DayServiceUpdate = false;\r\n$.session.DayServiceDelete = false;\r\n$.session.DayServiceNonBillable = false;\r\n$.session.DayServiceOverRide = false;\r\n$.session.DayServiceCaseLoad = false;\r\n$.session.DenyStaffClockUpdate = false;\r\n$.session.DenyClockUpdate = false;\r\n$.session.DemographicsView = false;\r\n$.session.DemographicsUpdate = false;\r\n$.session.DemographicsBasicDataView = false;\r\n$.session.DemographicsRelationshipsView = false;\r\n$.session.DemographicsPictureUpdate = false;\r\n$.session.DemographicsPictureDelete = false;\r\n$.session.DemographicsNotesView = false;\r\n$.session.DemographicsViewAttachments = false;\r\n$.session.viewLocationSchedulesKey = false;\r\n$.session.DemographicsViewDOB = false;\r\n$.session.DemographicsViewMedicaid = false;\r\n$.session.DemographicsViewMedicare = false;\r\n$.session.DemographicsViewResident = false;\r\n$.session.DemographicsViewSSN = false;\r\n$.session.DemographicsViewLocalId = false;\r\n$.session.DemographicsViewConsumerNumber = false;\r\n$.session.DemographicsUpdateRelationship = false;\r\n$.session.GoalsView = false;\r\n$.session.GoalsUpdate = false;\r\n$.session.InsertOutcomes = false;\r\n$.session.UpdateOutcomes = false;\r\n$.session.OutcomesReview = false;\r\n$.session.InsertServices = false;\r\n$.session.UpdateServices = false;\r\n$.session.UpdatePlan = false;\r\n$.session.ServiceActivityCaseLoad = false;\r\n$.session.CaseNotesView = false;\r\n$.session.CaseNotesTablePermissionView = false;\r\n$.session.CaseNotesViewEntered = false;\r\n$.session.CaseNotesUpdate = false;\r\n$.session.CaseNotesUpdateEntered = false;\r\n$.session.CaseNotesCaseloadRestriction = false;\r\n$.session.CaseNotesSSANotes = false;\r\n$.session.SingleEntryView = false;\r\n$.session.SingleEntryUpdate = false;\r\n$.session.anywhereMainPermission = false;\r\n$.session.WorkshopView = false;\r\n$.session.WorkshopUpdate = false;\r\n$.session.WorkshopCaseLoad = false;\r\n$.session.isCurrentlySingleEntry = false;\r\n$.session.groupNoteId = '';\r\n$.session.caseNoteEditSecond = false;\r\n$.session.caseNoteLocationCodePreference = '';\r\n$.session.caseNoteLocationNamePreference = '';\r\n$.session.caseNoteNeedCodePreference = '';\r\n$.session.caseNoteNeedNamePreference = '';\r\n$.session.caseNoteServiceCodePreference = '';\r\n$.session.caseNoteServiceNeedPreference = '';\r\n$.session.caseNoteBillingCodeCodePreference = '';\r\n$.session.caseNoteBillingCodeNamePreference = '';\r\n$.session.caseNoteBillingCodeServiceFundingPreference = '';\r\n$.session.caseNoteDisplayGroupNoteDivPreference = false;\r\n$.session.caseNoteDisplayGroupNoteCheckedPreference = false;\r\n$.session.locationRequiredCheck = false;\r\n$.session.serviceRequiredCheck = false;\r\n$.session.needRequiredCheck = false;\r\n$.session.contactRequiredCheck = false;\r\n$.session.vendorRequiredCheck = false;\r\n$.session.caseNoteListResponse = '';\r\n$.session.vendorFlag = false;\r\n$.session.groupConsumerCount = 0;\r\n$.session.consumersForGroupCounter = 0;\r\n$.session.timeOverlapConsumers = [];\r\n$.session.overlapNoteIds = [];\r\n$.session.consumerIdArray = [];\r\n$.session.caseNoteConsumerId = '';\r\n$.session.caseNoteTimeCheck = 'pass';\r\n$.session.groupNamesExist = false;\r\n$.session.existingGroupNoteIdForUpdate = '';\r\n$.session.startTimeForGroupNoteUpdateCompare = '';\r\n$.session.endTimeForGroupNoteUpdateCompare = '';\r\n$.session.serviceDateForGroupNoteUpdateCompare = '';\r\n$.session.serviceOrBillingCodeForGroupNoteUpdateCompare = '';\r\n$.session.caseNotePreferencesSet = false;\r\n$.session.consumerEditId = '';\r\n$.session.updateAllGroupDropDowns = false;\r\n$.session.isSingleEdit = false;\r\n$.session.changeFromSingleToGroupNote = false;\r\n$.session.editingConsumerId = '';\r\n$.session.dontLoadAppAfterDelete = false;\r\n$.session.consumerGroupCount = 0;\r\n$.session.groupSaveCounter = 0;\r\n$.session.editOnLoad = false;\r\n$.session.groupOverlapCheckCounter = 1;\r\n$.session.overlapScreenLock = false; //\r\n$.session.UpdateCaseNotesDocTime = false;\r\n$.session.batchedNoteEdit = false;\r\n$.session.groupNoteAttemptWithDocTime = false;\r\n$.session.sendToDODD = false;\r\n$.session.sendToPortal = false;\r\n\r\n$.session.dobString = '';\r\n//remove section when ready for testing. Forcing all features on.\r\n//$.session.CaseNotesView = true;\r\n//$.session.CaseNotesTablePermissionView = true;\r\n//$.session.CaseNotesUpdate = true;\r\n//$.session.CaseNotesCaseloadRestriction = true;\r\n$.session.defaultIncidentTrackingDaysBack = '7';\r\n$.session.editNoteMileageOnLoadFlag = false;\r\n$.session.SEViewAdminWidget = false;\r\n$.session.ciBShow = false;\r\n$.session.singleEntry15minDoc = 'N';\r\n$.session.Roster = false;\r\n$.session.Name = '';\r\n$.session.LName = '';\r\n$.session.isAdmin = false;\r\n$.session.PeopleId = '';\r\n$.session.StaffLocId = '';\r\n$.session.UserId = '';\r\n$.session.Token = '';\r\n$.session.Error = '';\r\n$.session.ver = '';\r\n$.session.browser = '';\r\n$.session.browserVer = '';\r\n$.session.OS = '';\r\n$.session.locations = [];\r\n$.session.locationids = [];\r\n$.session.lastMenuSelection = new Date(); //keeps menu's from double popping for people that are jackrabbits on the touchscreen.\r\n\r\n//DEFAULT SESSION VALUES --- Getting set in sessionsajax\r\n$.session.defaultDayServiceLocation;\r\n$.session.dsCertified; //True = Day Service Certified False = Not DS Certified\r\n$.session.defaultDayServiceLocationFlag = true;\r\n$.session.defaultRosterLocation;\r\n$.session.defaultRosterLocationFlag = false;\r\n$.session.defaultStaffLocation = 0;\r\n$.session.defaultDayServiceLocationName;\r\n$.session.defaultWorkshopLocation;\r\n$.session.defaultWorkshopLocationValue;\r\n$.session.defaultRosterLocationName;\r\n$.session.defaultRosterGroupValue;\r\n$.session.defaultDSTimeClockValue;\r\n$.session.defaultDSTimeClockName;\r\n$.session.defaultMoneyManagementLocation;\r\n$.session.defaultMoneyManagementLocationValue;\r\n\r\n//////////\r\n$.session.areInSalesForce = true;\r\n$.session.RosterDeleteAbsent = false;\r\n$.session.defaultStaffLocationName = 0;\r\n$.session.selectedLocation = ['0', 'defaultlocation'];\r\n// $.session.height = 0;\r\n// $.session.width = 0;\r\n$.session.strongPassword = 'Y'; //variable that tells whether or not a strong password is required.Default is Y to keep expired password rules the same.\r\n$.session.errorMessage = '';\r\n$.session.selectedGroupId = 0;\r\n$.session.deletedGroupId = 0; //Added to handle the delete group issue when deleting from the page where you are in the group to be deleted\r\n$.session.changePasswordLinkSelected = '';\r\n$.session.advancedPasswordLength = '';\r\n$.session.dsLocationHistoryFlag = false;\r\n$.session.dsLocationHistoryValue = 0;\r\n$.session.initialTimeOut = '';\r\n$.session.initialTimeIn = '';\r\n$.session.singleLoadedConsumerId = '';\r\n$.session.passwordSpecialCharacters = '';\r\n$.session.daysBackGoalsEdit = '';\r\n$.session.singleLoadedConsumerName = '';\r\n$.session.serviceStartDate = '';\r\n$.session.serviceEndDate = '';\r\n$.session.defaultCaseNoteReviewDays = '';\r\n$.session.defaultProgressNoteReviewDays = '';\r\n$.session.defaultProgressNoteChecklistReviewDays = '';\r\n$.session.countCheck = 0;\r\n$.session.applicationName = '';\r\n$.session.viewableGoalTypeIds = [];\r\n$.session.outcomesPermission = '';\r\n$.session.dayServicesPermission = '';\r\n$.session.caseNotesPermission = '';\r\n$.session.singleEntryPermission = '';\r\n$.session.workshopPermission = '';\r\n$.session.workshopPermission = '';\r\n$.session.intellivuePermission = '';\r\n$.session.passwordResetPermission = '';\r\n// $.session.formsPermission = '';\r\n// $.session.OODPermission = '';\r\n$.session.anywhereResetPasswordPermission = '';\r\n$.session.anywhereConsumerFinancesPermission = '';\r\n$.session.anywhereFSSPermission = '';\r\n$.session.anywhereEmploymentPermission = '';\r\n$.session.selectedConsumerIdForGoalsDateBack = '';\r\n$.session.caseNoteEdit = false;\r\n$.session.consumerIdToEdit = '';\r\n$.session.planPeopleId = '';\r\n$.session.showDynamic = true;\r\n$.session.singleEntryUseServiceLocations = false;\r\n$.session.editCaseNoteId = '';\r\n$.session.updateEmail = false;\r\n//$.session.groupCaseNoteId = '';\r\n$.session.tempServiceFunding = 'N';\r\n$.session.usePersonalPrefernces = 'N';\r\n$.session.defaultSeviceId = '';\r\n$.session.defaultSeviceName = '';\r\n//Added to save session filters\r\n$.session.useSessionFilterVariables = false;\r\n$.session.filterServiceStart = '';\r\n$.session.filterServiceEnd = '';\r\n$.session.filterDateEnteredStart = '';\r\n$.session.filterDateEnteredEnd = '';\r\n$.session.filterBillerId = '';\r\n$.session.filterBillerName = '';\r\n$.session.groupAddOnNames = [];\r\n$.session.intellivueSessionID = '';\r\n$.session.singleEntryApproveEnabled = '';\r\n$.session.anAdmin = false;\r\n$.session.ViewAdminSingleEntry = false;\r\n$.session.communityIntegrityRequired = 'n/a';\r\n$.session.singleEntryAddConsumersOnBillable = 'N';\r\n$.session.workshopBatchId = '';\r\n$.session.infiniteLoopFlag == false;\r\n//$.session.singleEntryReportCurrentlyProcessing = false;\r\n$.session.viewLocationSchedulesKey = false;\r\n$.session.incidentTrackingPermission = '';\r\n$.session.singleEntryLocationRequired = '';\r\n$.session.SingleEntryEditTimeEntry = false; // MAT changed\r\n$.session.singleEntryGottenById = false;\r\n$.session.singleEntrycrossMidnight = false;\r\n$.session.SingleEntryCaseLoad = false;\r\n//Incident Tracking\r\n$.session.incidentTrackingView = false;\r\n$.session.incidentTrackingViewPerm = [];\r\n$.session.incidentTrackingReviewedBy = false;\r\n$.session.incidentTrackingUpdate = false;\r\n$.session.incidentTrackingInsert = false;\r\n$.session.incidentTrackingDelete = false;\r\n$.session.incidentTrackingViewCaseLoad = false;\r\n$.session.defaultIncidentTrackingReviewDays = '';\r\n$.session.incidentTrackingPopulateIncidentDate = '';\r\n$.session.incidentTrackingPopulateIncidentTime = '';\r\n$.session.incidentTrackingPopulateReportedDate = '';\r\n$.session.incidentTrackingPopulateReportedTime = '';\r\n$.session.incidentTrackingEmailIncident = '';\r\n$.session.incidentTrackingCaseLoad = false;\r\n/////////\r\n$.session.infalHasConnectionString = false;\r\n$.session.isPSI = false;\r\n$.session.anywhereMinutestotimeout = '';\r\n$.session.useAbsentFeature = 'Y';\r\n$.session.useProgressNotes = 'Y';\r\n$.session.singleEntryEditLocationHack = '';\r\n$.session.HideProgressNotes = false;\r\n$.session.RosterCaseLoad = false;\r\nvar firstLoad = true;\r\n$.session.portraitPath = '';\r\n$.session.isASupervisor = false;\r\n$.session.seAdminRemoveMap = false;\r\n$.session.removeGoalsWidget = false;\r\n$.session.createTimeEntries = false;\r\n//Login\r\n$.session.changeEmailSent = false;\r\n// Single Entry Geo Location Position\r\n$.session.geoLocationPosition = '';\r\n// Single Entry Signautre, Note and ____ Instances\r\n$.session.evvDataCache = {};\r\n$.session.singleEntryShowConsumerSignature = 'N';\r\n$.session.singleEntryShowConsumerNote = 'N';\r\n//Scheduling\r\n$.session.schedulingUpdate = false;\r\n$.session.schedulingView = false;\r\n$.session.schedulingStartDayOfWeek = 0;\r\n$.session.schedAllowCallOffRequests = 'N';\r\n$.session.schedRequestOpenShifts = 'N';\r\n$.session.hideAllScheduleButton = false;\r\n// Authorizations\r\n$.session.authorizationsView = false;\r\n$.session.authorizationsVendorInfoView = false;\r\n$.session.authorizationsCaseLoad = false;\r\n//Plan\r\n$.session.planUpdate = false;\r\n$.session.planDelete = false;\r\n$.session.planView = false;\r\n$.session.planInsertNewTeamMember = false;\r\n$.session.planAssignCaseload = false;\r\n$.session.downloadPlans = false;\r\n$.session.planSignatureUpdateDOB = false;\r\n$.session.planSignatureUpdateBuildingNumber = false;\r\n$.session.planClearSignature = false;\r\n$.session.PlanCaseLoad = false;\r\n// Waiting List\r\n$.session.waitingListInsert = false;\r\n$.session.waitingListView = false;\r\n$.session.waitingListUpdate = false;\r\n$.session.waitingListDelete = false;\r\n$.session.WaitingListAssessmentCaseLoad = false;\r\n// Transportation\r\n$.session.transportationUpdate = false;\r\n$.session.transportationView = false;\r\n$.session.transportationManageRoute = false;\r\n$.session.transportationAddRoute = false;\r\n$.session.transportationCaseLoad = false;\r\n// eMAR\r\n$.session.emarView = false;\r\n$.session.emarCaseLoad = false;\r\n// Speech To Text\r\n$.session.sttEnabled = false;\r\n// Forms\r\n$.session.formsDelete = false;\r\n$.session.formsInsert = false;\r\n$.session.formsUpdate = false;\r\n$.session.formsView = false;\r\n$.session.formsCaseload = false;\r\n$.session.formsFormtype = false;\r\n\r\n// OOD\r\n$.session.OODDelete = false;\r\n$.session.OODInsert = false;\r\n$.session.OODUpdate = false;\r\n$.session.OODView = false;\r\n$.session.OODCaseLoad = false;\r\n$.session.OODInsertEmployers = false;\r\n\r\n// Consumer Finance\r\n$.session.CFDelete = false;\r\n$.session.CFInsert = false;\r\n$.session.CFUpdate = false;\r\n$.session.CFView = false;\r\n$.session.CFADDPayee = false; //\r\n$.session.CFEditAccountEntries = false;\r\n$.session.CFInsertAccounts = false;\r\n$.session.CFUpdateEditAccounts = false;\r\n$.session.CFViewEditAccounts = false;\r\n\r\n$.session.CFViewChecking = false;\r\n$.session.CFViewCraditCard = false;\r\n$.session.CFViewFoodStamp = false;\r\n$.session.CFViewPettyCash = false;\r\n$.session.CFViewShaving = false;\r\n\r\n$.session.CFViewChristmasClub = false;\r\n$.session.CFViewSystem20183A = false;\r\n$.session.CFViewSystem20183 = false;\r\n$.session.CFViewOhioEBT = false;\r\n$.session.CFViewViewFoodStampDebitCardEBT = false;\r\n$.session.ConsumerFinanceCaseLoad = false;\r\n\r\n// Reset Password\r\n$.session.ResetPasswordView = false;\r\n$.session.ResetPasswordUpdate = false;\r\n\r\n// Employment\r\n$.session.EmploymentView = false;\r\n$.session.EmploymentUpdate = false;\r\n$.session.EmploymentDelete = false;\r\n$.session.InsertEmployers = false;\r\n$.session.UpdateEmployers = false;\r\n$.session.EmploymentCaseLoad = false;\r\n$.session.consumerId = '';\r\n\r\n// FSS\r\n$.session.FSSView = false;\r\n$.session.FSSUpdate = false;\r\n$.session.FSSDelete = false;\r\n$.session.InsertFSS = false;\r\n$.session.FSSCaseLoad = false;\r\n\r\n//Waiting List\r\n$.session.sendWaitingListEmail = false;\r\n// $.session.sttCaseNotesEnabled = false; Will be a system setting, setting true for now for dev\r\n\r\n//Needs updated for every release.\r\n$.session.version = '2024.3.1';\r\n//State Abbreviation\r\n$.session.stateAbbreviation = '';\r\n// temp holder for the device GUID when logging in\r\n$.session.deviceGUID = '';\r\n//API Keys\r\n$.session.azureSTTApi = '';\r\n$.session.isActiveUsers = true; // to get active and inactive user both\r\n$.session.isActiveFamilies = true; // to get active and inactive families both\r\n$.session.activeModule = '';\r\n$.session.billableTransportation = 'N';\r\n$.session.requireTimeEntryTransportationTimes = 'N';\r\n$.session.ohioEVVChangeDate = '';\r\n$.session.anyRequireEndTime = '';\r\n$(window).resize(function () {\r\n //resizeActionCenter();\r\n});\r\n\r\nfunction setDefaultLoc(type, value) {\r\n //alert(\"setDefaultLoc \" + type + \" \" + value + \" \" + $.session.defaultStaffLocation);\r\n\r\n if (type == 1) {\r\n $.session.defaultStaffLocation = value;\r\n //alert(\"setDefaultLoc \" + type + \" \" + value + \" \" + $.session.StaffLocId);\r\n createCookie('defaultStaffLocation', value, 7);\r\n }\r\n\r\n if (type == 2) {\r\n //createCookie('defaultRosterLocation', value, 7);\r\n saveDefaultLocationValueAjax('2', value);\r\n if (value == 0) {\r\n createCookie('defaultRosterLocationFlag', true, 7);\r\n } else {\r\n createCookie('defaultRosterLocationFlag', false, 7);\r\n }\r\n }\r\n\r\n if (type == 3) {\r\n if ($.session.defaultDayServiceLocationFlag == 'true' || $.session.defaultDayServiceLocationFlag == null) {\r\n //createCookie('defaultDayServiceLocationNameValue', value, 7);\r\n saveDefaultLocationValueAjax('3', value);\r\n }\r\n if ($.session.dsLocationHistoryFlag == true) {\r\n $.session.defaultDayServiceLocation = value;\r\n }\r\n }\r\n}\r\n\r\nfunction createCookie(name, value, days) {\r\n if (days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\r\n var expires = '; expires=' + date.toGMTString();\r\n } else var expires = '';\r\n var test = escape(value);\r\n document.cookie = escape(name) + '=' + escape(value) + expires + '; path=/';\r\n}\r\n\r\nfunction readCookie(name) {\r\n var nameEQ = escape(name) + '=';\r\n var ca = document.cookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) == ' ') c = c.substring(1, c.length);\r\n if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length, c.length));\r\n }\r\n return null;\r\n}\r\n\r\nfunction eraseCookie(name) {\r\n createCookie(name, '', -1);\r\n}\r\n\r\nfunction setSessionVariables() {\r\n var cookieInnards = $.session.permissionString;\r\n\r\n var tmpWindows = {};\r\n\r\n cookieInnards.forEach(cookie => {\r\n tmpWindow = cookie.window_name;\r\n tmpPerm = cookie.permission;\r\n tmpSpec = cookie.special_data;\r\n tmpWindows[tmpWindow] = tmpWindow;\r\n\r\n if (tmpWindow == 'IsAnAdmin') {\r\n if (tmpPerm == 'Y') $.session.isAdmin = true;\r\n }\r\n\r\n if (tmpWindow == 'SEShowServiceLocations') {\r\n if (tmpPerm == 'Y') {\r\n //Require a consumer to be picked\r\n $.session.singleEntryUseServiceLocations = true;\r\n }\r\n }\r\n\r\n if (tmpWindow == 'SEAddConsumerOnBillable') {\r\n if (tmpPerm == 'P') {\r\n //Require a consumer to be picked\r\n $.session.singleEntryAddConsumersOnBillable = 'P';\r\n } else if (tmpPerm == 'Y') {\r\n //Do not require a consumer to be picked, but give a warning\r\n $.session.singleEntryAddConsumersOnBillable = 'Y';\r\n } else {\r\n //Do not require a consumerto be picked, and give no warning\r\n $.session.singleEntryAddConsumersOnBillable = 'N';\r\n }\r\n }\r\n\r\n if (tmpWindow == 'SEDocumentTime') {\r\n if (tmpPerm == 'Y') {\r\n //Enable 15 minutes intervals\r\n $.session.singleEntry15minDoc = 'Y';\r\n } else {\r\n //Do not enable/disable 15 minute document intervals\r\n $.session.singleEntry15minDoc = 'N';\r\n }\r\n }\r\n\r\n if (tmpWindow == 'Anywhere Day Services' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.DayServiceView = true;\r\n $.session.Roster = true;\r\n $('#dayservicesettingsbutton').removeClass('disabledModule');\r\n }\r\n\r\n if (tmpPerm == 'Override location requirement') {\r\n $.session.DayServiceOverRide = true;\r\n }\r\n\r\n if (tmpPerm == 'Update') {\r\n $.session.DayServiceUpdate = true;\r\n }\r\n\r\n if (tmpPerm == 'Delete') {\r\n $.session.DayServiceDelete = true;\r\n }\r\n\r\n if (tmpPerm == 'Insert') {\r\n $.session.DayServiceInsert = true;\r\n }\r\n\r\n if (tmpPerm == 'Deny TimeClock Change') {\r\n $.session.DenyClockUpdate = true;\r\n }\r\n if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.DayServiceCaseLoad = true;\r\n }\r\n }\r\n\r\n //Goals Permissions\r\n if (tmpWindow == 'Anywhere Service Activity' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.GoalsView = true;\r\n $('#goalssettingsbutton').removeClass('disabledModule');\r\n }\r\n if (tmpPerm == 'Update') {\r\n $.session.GoalsUpdate = true;\r\n }\r\n if (tmpPerm == 'Insert Outcomes') {\r\n $.session.InsertOutcomes = true;\r\n }\r\n if (tmpPerm == 'Update Outcomes') {\r\n $.session.UpdateOutcomes = true;\r\n }\r\n if (tmpPerm == 'Insert Services') {\r\n $.session.InsertServices = true;\r\n }\r\n if (tmpPerm == 'Update Services') {\r\n $.session.UpdateServices = true;\r\n }\r\n if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.ServiceActivityCaseLoad = true;\r\n }\r\n if (tmpPerm == 'Update Plan') {\r\n $.session.UpdatePlan = true;\r\n }\r\n if (tmpPerm == 'Review') {\r\n $.session.OutcomesReview = true;\r\n }\r\n }\r\n\r\n //Single Entry Permissions\r\n if (tmpWindow == 'Anywhere Single Entry' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.SingleEntryView = true;\r\n $('#singleentrybutton').removeClass('disabledModule');\r\n }\r\n if (tmpPerm == 'Update') {\r\n $.session.SingleEntryUpdate = true;\r\n }\r\n if (tmpPerm == 'Edit Time Entry') {\r\n $.session.SingleEntryEditTimeEntry = true;\r\n }\r\n if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.SingleEntryCaseLoad = true;\r\n }\r\n }\r\n\r\n //Workshop Module\r\n if (tmpWindow == 'Anywhere Workshop' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.WorkshopView = true;\r\n $('#workshopbutton').removeClass('disabledModule');\r\n }\r\n if (tmpPerm == 'Update') {\r\n $.session.WorkshopUpdate = true;\r\n }\r\n if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.WorkshopCaseLoad = true;\r\n }\r\n }\r\n\r\n if (tmpWindow == 'Anywhere Case Notes' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $('#casenotessettingsdiv').removeClass('disabledModule');\r\n $.session.CaseNotesView = true;\r\n }\r\n if (tmpPerm == 'View Entered' || $.session.isPSI == true) {\r\n $.session.CaseNotesViewEntered = true;\r\n }\r\n if (tmpPerm == 'Update Entered' || $.session.isPSI == true) {\r\n $.session.CaseNotesUpdateEntered = true;\r\n }\r\n if (tmpPerm == 'Update') {\r\n $.session.CaseNotesUpdate = true;\r\n }\r\n if ($.session.isPSI == false && tmpPerm == 'Caseload Only') {\r\n $.session.CaseNotesCaseloadRestriction = true;\r\n }\r\n if (tmpPerm == 'SSA Notes') {\r\n $.session.CaseNotesSSANotes = true;\r\n }\r\n }\r\n\r\n //Absent and progress notes/\r\n if (tmpWindow == 'Anywhere Roster' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Delete Absent') {\r\n $.session.RosterDeleteAbsent = true;\r\n }\r\n if (tmpPerm == 'Hide Progress Notes') {\r\n $.session.HideProgressNotes = true;\r\n }\r\n if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.RosterCaseLoad = true;\r\n }\r\n }\r\n //Demographics\r\n if (tmpWindow == 'Anywhere Demographics' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.DemographicsView = true;\r\n }\r\n if (tmpPerm == 'Update') {\r\n $.session.DemographicsUpdate = true;\r\n }\r\n\r\n if (tmpPerm == 'View Relationships' || $.session.isPSI == true) {\r\n $.session.DemographicsRelationshipsView = true;\r\n }\r\n\r\n if (tmpPerm == 'View General' || $.session.isPSI == true) {\r\n $.session.DemographicsBasicDataView = true;\r\n }\r\n\r\n if (tmpPerm == 'Update Picture') {\r\n $.session.DemographicsPictureUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete Picture') {\r\n $.session.DemographicsPictureDelete = true;\r\n }\r\n\r\n if (tmpPerm == 'View Notes' || $.session.isPSI == true) {\r\n $.session.DemographicsNotesView = true;\r\n }\r\n\r\n if (tmpPerm == 'View Attachments' || $.session.isPSI == true) {\r\n $.session.DemographicsViewAttachments = true;\r\n }\r\n\r\n if (tmpPerm == 'View Location Schedule' || $.session.isPSI == true) {\r\n $.session.viewLocationSchedulesKey = true;\r\n }\r\n if (tmpPerm == 'View DOB' || $.session.isPSI == true) {\r\n $.session.DemographicsViewDOB = true;\r\n }\r\n if (tmpPerm == 'View Medicaid Number' || $.session.isPSI == true) {\r\n $.session.DemographicsViewMedicaid = true;\r\n }\r\n if (tmpPerm == 'View Medicare Number' || $.session.isPSI == true) {\r\n $.session.DemographicsViewMedicare = true;\r\n }\r\n if (tmpPerm == 'View Resident Number' || $.session.isPSI == true) {\r\n $.session.DemographicsViewResident = true;\r\n }\r\n if (tmpPerm == 'View SSN' || $.session.isPSI == true) {\r\n $.session.DemographicsViewSSN = true;\r\n }\r\n if (tmpPerm == 'View Consumer Number' || $.session.isPSI == true) {\r\n $.session.DemographicsViewConsumerNumber = true;\r\n }\r\n if (tmpPerm == 'View Local ID' || $.session.isPSI == true) {\r\n $.session.DemographicsViewLocalId = true;\r\n }\r\n if (tmpPerm == 'Update Relationships') {\r\n $.session.DemographicsUpdateRelationship = true;\r\n }\r\n }\r\n\r\n //Incident Tracking Permissons\r\n if (tmpWindow == 'Anywhere Incident Tracking' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View Case Load' || $.session.isPSI == true) {\r\n $.session.incidentTrackingViewCaseLoad = true;\r\n } else if (tmpPerm == 'Delete') {\r\n $.session.incidentTrackingDelete = true;\r\n } else if (tmpPerm == 'Insert') {\r\n $.session.incidentTrackingInsert = true;\r\n } else if (tmpPerm == 'Update') {\r\n $.session.incidentTrackingUpdate = true;\r\n } else if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.incidentTrackingView = true;\r\n } else if (tmpPerm == 'Reviewed By User') {\r\n $.session.incidentTrackingReviewedBy = true;\r\n } else if (tmpPerm == 'Email Incident') {\r\n $.session.incidentTrackingEmailIncident = true;\r\n } else if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.incidentTrackingCaseLoad = true;\r\n } else {\r\n $.session.incidentTrackingViewPerm.push(tmpPerm.replace('View ', '').toLowerCase());\r\n }\r\n }\r\n\r\n //Anywhere Plan\r\n if (tmpWindow == 'Anywhere Plan' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.planUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete Plan' || $.session.isPSI == true) {\r\n $.session.planDelete = true;\r\n }\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.planView = true;\r\n }\r\n if (tmpPerm == 'Send to DODD' || $.session.isPSI == true) {\r\n $.session.sendToDODD = true;\r\n }\r\n if (tmpPerm == 'Send to Portal' || $.session.isPSI == true) {\r\n $.session.sendToPortal = true;\r\n }\r\n if (tmpPerm == 'Insert New Team Member' || $.session.isPSI == true) {\r\n $.session.planInsertNewTeamMember = true;\r\n }\r\n if (tmpPerm == 'Assign Case Load' && $.session.isPSI == false) {\r\n $.session.planAssignCaseload = true;\r\n }\r\n if (tmpPerm == 'Update DOB' || $.session.isPSI == true) {\r\n $.session.planSignatureUpdateDOB = true;\r\n }\r\n if (tmpPerm == 'Update Building Number' || $.session.isPSI == true) {\r\n $.session.planSignatureUpdateBuildingNumber = true;\r\n }\r\n if (tmpPerm == 'Clear Signatures' || $.session.isPSI == true) {\r\n $.session.planClearSignature = true;\r\n }\r\n if (tmpPerm == 'Download Plans' || $.session.isPSI == true) {\r\n $.session.downloadPlans = true;\r\n }\r\n if (tmpPerm == 'Update Email' || $.session.isPSI == true) {\r\n $.session.updateEmail = true;\r\n }\r\n if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.PlanCaseLoad = true;\r\n }\r\n }\r\n if (tmpWindow == 'Anywhere Authorizations' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.authorizationsView = true;\r\n }\r\n if (tmpPerm == 'View Vendor Info' || $.session.isPSI == true) {\r\n $.session.authorizationsVendorInfoView = true;\r\n }\r\n if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.authorizationsCaseLoad = true;\r\n }\r\n }\r\n //Waiting List\r\n if (tmpWindow == 'Anywhere Waiting List Assessment' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Insert' || $.session.isPSI == true) {\r\n $.session.waitingListInsert = true;\r\n }\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.waitingListView = true;\r\n }\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.waitingListUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete' || $.session.isPSI == true) {\r\n $.session.waitingListDelete = true;\r\n }\r\n if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.WaitingListAssessmentCaseLoad = true;\r\n }\r\n }\r\n //AeMAR\r\n if (tmpWindow == 'Anywhere eMAR' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.emarView = true;\r\n }\r\n if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.emarCaseLoad = true;\r\n }\r\n }\r\n //Anywhere Transportation\r\n if (tmpWindow == 'Anywhere Transportation' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Update') {\r\n $.session.transportationUpdate = true;\r\n }\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.transportationView = true;\r\n }\r\n if (tmpPerm == 'Manage Routes' || $.session.isPSI == true) {\r\n $.session.transportationManageRoute = true;\r\n }\r\n if (tmpPerm == 'Add Routes' || $.session.isPSI == true) {\r\n $.session.transportationAddRoute = true;\r\n }\r\n if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.transportationCaseLoad = true;\r\n }\r\n }\r\n\r\n if (tmpWindow == 'Anywhere Scheduling' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Update') {\r\n $.session.schedulingUpdate = true;\r\n }\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.schedulingView = true;\r\n }\r\n }\r\n\r\n // Anywhere Forms\r\n if (tmpWindow == 'Anywhere Forms' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.formsUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete' || $.session.isPSI == true) {\r\n $.session.formsDelete = true;\r\n }\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.formsView = true;\r\n }\r\n if (tmpPerm == 'Insert' || $.session.isPSI == true) {\r\n $.session.formsInsert = true;\r\n }\r\n if (tmpPerm == 'Case Load') {\r\n $.session.formsCaseload = true;\r\n }\r\n if ($.session.isPSI == true) {\r\n $.session.formsCaseload = false;\r\n }\r\n }\r\n\r\n if (tmpPerm.length > 9) {\r\n if (tmpPerm.substring(0, 9) == 'Form Type') {\r\n $.session.formsFormtype = true;\r\n if (tmpWindow == 'IsAnAdmin') {\r\n if (tmpPerm == 'Y') $.session.isAdmin = true;\r\n }\r\n }\r\n }\r\n\r\n // OOD\r\n if (tmpWindow == 'Anywhere OOD' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.OODUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete' || $.session.isPSI == true) {\r\n $.session.OODDelete = true;\r\n }\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.OODView = true;\r\n }\r\n if (tmpPerm == 'Insert' || $.session.isPSI == true) {\r\n $.session.OODInsert = true;\r\n }\r\n if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.OODCaseLoad = true;\r\n }\r\n if (tmpPerm == 'Insert Employers' || $.session.isPSI == true) {\r\n $.session.OODInsertEmployers = true;\r\n }\r\n }\r\n\r\n // Consumer Finance\r\n if (tmpWindow == 'Anywhere Consumer Finances' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.CFUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete' || $.session.isPSI == true) {\r\n $.session.CFDelete = true;\r\n }\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $('#cfAccountDiv').removeClass('disabledModule');\r\n $('#consumerfinancessettingsdiv').removeClass('disabledModule');\r\n $.session.CFView = true;\r\n }\r\n if (tmpPerm == 'Insert' || $.session.isPSI == true) {\r\n $.session.CFInsert = true;\r\n }\r\n if (tmpPerm == 'Add Payee' || $.session.isPSI == true) {\r\n $.session.CFADDPayee = true;\r\n }\r\n if (tmpPerm == 'Edit Account Entries' || $.session.isPSI == true) {\r\n $.session.CFEditAccountEntries = true;\r\n }\r\n if (tmpPerm == 'Insert Accounts' || $.session.isPSI == true) {\r\n $.session.CFInsertAccounts = true;\r\n }\r\n if (tmpPerm == 'Update Edit Accounts' || $.session.isPSI == true) {\r\n $.session.CFUpdateEditAccounts = true;\r\n }\r\n if (tmpPerm == 'View Edit Accounts' || $.session.isPSI == true) {\r\n $('#cfEditAccountDiv').removeClass('disabledModule');\r\n $('#consumerfinancessettingsdiv').removeClass('disabledModule');\r\n $.session.CFViewEditAccounts = true;\r\n }\r\n\r\n if (tmpPerm == 'View Checking' || $.session.isPSI == true) {\r\n $.session.CFViewChecking = true;\r\n }\r\n\r\n if (tmpPerm == 'View Credit Card' || $.session.isPSI == true) {\r\n $.session.CFViewCraditCard = true;\r\n }\r\n\r\n if (tmpPerm == 'View Food Stamps' || $.session.isPSI == true) {\r\n $.session.CFViewFoodStamp = true;\r\n }\r\n\r\n if (tmpPerm == 'View Petty Cash' || $.session.isPSI == true) {\r\n $.session.CFViewPettyCash = true;\r\n }\r\n\r\n if (tmpPerm == 'View Savings' || $.session.isPSI == true) {\r\n $.session.CFViewShaving = true;\r\n }\r\n if (tmpPerm == 'View Christmas Club' || $.session.isPSI == true) {\r\n $.session.CFViewChristmasClub = true;\r\n }\r\n if (tmpPerm == 'View System 2018.3A' || $.session.isPSI == true) {\r\n $.session.CFViewSystem20183A = true;\r\n }\r\n if (tmpPerm == 'View System 2018.3' || $.session.isPSI == true) {\r\n $.session.CFViewSystem20183 = true;\r\n }\r\n if (tmpPerm == 'View Ohio EBT' || $.session.isPSI == true) {\r\n $.session.CFViewOhioEBT = true;\r\n }\r\n if (tmpPerm == 'View Food Stamp Debit Card EBT' || $.session.isPSI == true) {\r\n $.session.CFViewViewFoodStampDebitCardEBT = true;\r\n }\r\n if (\r\n $.session.isPSI == false &&\r\n (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')\r\n ) {\r\n $.session.ConsumerFinanceCaseLoad = true;\r\n }\r\n\r\n // if ($.session.UserId === 'ash') {\r\n // $.session.CFUpdate = true;\r\n // $.session.CFDelete = true;\r\n // $.session.CFView = true;\r\n // $.session.CFInsert = true;\r\n // $.session.CFADDPayee = true;\r\n // $.session.CFEditAccountEntries = true;\r\n // $.session.CFInsertAccounts = true;\r\n // $.session.CFUpdateEditAccounts = true;\r\n // $.session.CFViewEditAccounts = true;\r\n // $.session.CFViewChecking = true;\r\n // $.session.CFViewCraditCard = true;\r\n // $.session.CFViewFoodStamp = true;\r\n // $.session.CFViewPettyCash = true;\r\n // $.session.CFViewShaving = true;\r\n // $.session.CFViewChristmasClub = true;\r\n // $.session.CFViewSystem20183A = true;\r\n // $.session.CFViewSystem20183 = true;\r\n // $.session.CFViewOhioEBT = true;\r\n // $.session.CFViewViewFoodStampDebitCardEBT = true;\r\n // $.session.ConsumerFinanceCaseLoad = true;\r\n // }\r\n }\r\n\r\n //Reset Password\r\n if (tmpWindow == 'Anywhere Reset Passwords') {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $('#Adminsettingdiv').removeClass('disabledModule');\r\n $.session.ResetPasswordView = true;\r\n }\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.ResetPasswordUpdate = true;\r\n }\r\n }\r\n\r\n //Employment\r\n if (tmpWindow == 'Anywhere Employment' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $('#Employmentsettingsdiv').removeClass('disabledModule');\r\n $.session.EmploymentView = true;\r\n }\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.EmploymentUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete' || $.session.isPSI == true) {\r\n $.session.EmploymentDelete = true;\r\n }\r\n if (tmpPerm == 'Insert Employers' || $.session.isPSI == true) {\r\n $.session.InsertEmployers = true;\r\n }\r\n if (tmpPerm == 'Update Employers' || $.session.isPSI == true) {\r\n $.session.UpdateEmployers = true;\r\n }\r\n if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.EmploymentCaseLoad = true;\r\n }\r\n }\r\n\r\n //FSS\r\n if (tmpWindow == 'Anywhere FSS' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $('#fSSdiv').removeClass('disabledModule');\r\n $.session.FSSView = true;\r\n }\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.FSSUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete' || $.session.isPSI == true) {\r\n $.session.FSSDelete = true;\r\n }\r\n if (tmpPerm == 'Insert' || $.session.isPSI == true) {\r\n $.session.InsertFSS = true;\r\n }\r\n if ($.session.isPSI == false && tmpPerm == 'Case load') {\r\n $.session.FSSCaseLoad = true;\r\n }\r\n }\r\n\r\n if (tmpWindow == 'Anywhere User Home' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Deny Staff TimeClock Change') {\r\n $.session.DenyStaffClockUpdate = true;\r\n }\r\n if (tmpPerm == 'View My Information' || $.session.isPSI == true) {\r\n $.session.ViewMyInformation = true;\r\n }\r\n if (tmpPerm == 'Update My Information') {\r\n $.session.UpdateMyInformation = true;\r\n }\r\n }\r\n\r\n if (tmpWindow == 'admin' || $.session.isPSI == true) {\r\n $.session.DayServiceView = true;\r\n $.session.DayServiceInsert = true;\r\n $.session.DayServiceUpdate = true;\r\n $.session.DayServiceDelete = true;\r\n $.session.DayServiceNonBillable = true;\r\n $.session.DayServiceOverRide = true;\r\n $.session.Roster = true;\r\n $.session.DenyClockUpdate = false;\r\n $.session.DenyClockUpdate = false;\r\n }\r\n\r\n if (tmpWindow == 'Name') {\r\n $.session.Name = tmpPerm;\r\n $.session.UserId = tmpSpec;\r\n }\r\n\r\n if (tmpWindow == 'LName') {\r\n $.session.LName = tmpPerm;\r\n $.session.PeopleId = tmpSpec;\r\n }\r\n\r\n if (tmpWindow == 'Token') {\r\n $.session.Token = tmpSpec;\r\n }\r\n\r\n if (tmpWindow == 'ProductName') {\r\n $.session.ProductName = tmpPerm.toUpperCase();\r\n }\r\n\r\n if (tmpWindow == 'stafflocation') {\r\n $.session.locations.push(tmpPerm);\r\n $.session.locationids.push(tmpSpec);\r\n }\r\n\r\n if (tmpWindow == 'Default Staff Location') {\r\n $.session.defaultStaffLocation = tmpPerm;\r\n }\r\n\r\n if (tmpWindow == 'Default Roster Location') {\r\n //not sure what this was intended for. Was breaking roster location save\r\n // $.session.defaultRosterLocation = tmpPerm;\r\n }\r\n\r\n if (tmpWindow == 'Default Day Service Location') {\r\n $.session.defaultDayServiceLocation = tmpPerm;\r\n }\r\n });\r\n\r\n if ($.session.UserId === 'ash' || $.session.UserId === 'mike') {\r\n $.session.ViewMyInformation = true;\r\n $.session.UpdateMyInformation = true;\r\n $.session.authorizationsView = true;\r\n $.session.planView = true;\r\n //console.table(tmpWindows);\r\n }\r\n // TODO-ASH: move this somewhere else eventually\r\n if (!$.session.ViewMyInformation) {\r\n const informationMenuBtn = document.querySelector(`[data-menu='information']`);\r\n informationMenuBtn.style.display = 'none';\r\n }\r\n}\r\n\r\nfunction setSessionJQUERY(callback) {\r\n var cookieInnards = readCookie('psi');\r\n\r\n //sets token from cookie. This is needed for ajax call getUserPermissions(). Other session variables set in setSessionVariables()\r\n $('permissions', cookieInnards).each(function () {\r\n tmpWindow = $('window_name', this).text();\r\n tmpPerm = $('permission', this).text();\r\n tmpSpec = $('special_data', this).text();\r\n\r\n if (tmpWindow == 'Token') {\r\n $.session.Token = tmpSpec;\r\n }\r\n });\r\n getUserPermissions(callback);\r\n\r\n setInterval(function () {\r\n tokenCheck();\r\n }, 60000);\r\n}\r\n\r\n\r\nfunction setSession(callback) {\r\n var cookieInnards = readCookie('psi');\r\n\r\n //sets token from cookie. This is needed for ajax call getUserPermissions(). Other session variables set in setSessionVariables()\r\n $('permissions', cookieInnards).each(function () {\r\n tmpWindow = $('window_name', this).text();\r\n tmpPerm = $('permission', this).text();\r\n tmpSpec = $('special_data', this).text();\r\n\r\n if (tmpWindow == 'Token') {\r\n $.session.Token = tmpSpec;\r\n }\r\n });\r\n getUserPermissions(callback);\r\n\r\n setInterval(function () {\r\n tokenCheck();\r\n }, 60000);\r\n}\r\n\r\nfunction checkforErrors(xmlReturn) {\r\n //check for Errors\r\n var retVal = 0;\r\n //alert(\"checkForErrors\" + xmlReturn);\r\n var ErrorText = $('Error', xmlReturn).text();\r\n //alert('Error text: ' + ErrorText);\r\n //session didn't exist\r\n if (ErrorText == 'Error:606') {\r\n //setCookieOnFail(\"Please log in again.\");\r\n errorMessage = 'Please log in again.';\r\n retVal = -1;\r\n }\r\n //session expired\r\n if (ErrorText == 'Error:607') {\r\n //setCookieOnFail(\"Session has timed out, please log in again.\");\r\n errorMessage = 'Session has timed out, please log in again.';\r\n retVal = -1;\r\n }\r\n //session didn't exist\r\n if (ErrorText == 'Error:608') {\r\n //setCookieOnFail(\"This user name does not exist in demographics.\");\r\n errorMessage = 'This user name does not exist in demographics.';\r\n retVal = -1;\r\n }\r\n if (ErrorText == 'Error:609') {\r\n //setCookieOnFail(\"Password has expired\");\r\n errorMessage = 'Password has expired.';\r\n retVal = -1;\r\n }\r\n if (ErrorText == 'Error:610') {\r\n //setCookieOnFail(\"Previous Password is invalid\");\r\n errorMessage = 'Previous Password is invalid.';\r\n retVal = -1;\r\n }\r\n return retVal;\r\n}\r\n\r\nfunction setCookieOnFail(xmlReturn) {\r\n createCookie('psi', xmlReturn, 1);\r\n $.session.Token = '';\r\n if (xmlReturn.indexOf('Password has expired') > -1) {\r\n // do nothing\r\n } else {\r\n document.location.href = 'login.html';\r\n }\r\n}\r\n\r\nfunction checkForErrors() {\r\n var errorXml = readCookie('psi');\r\n $('#errortext').text($('Error', errorXml).text());\r\n\r\n if ($('#errortext').text().length > 0) {\r\n $('#error').css('display', 'block'); //show error\r\n\r\n if ($('#errortext').text().indexOf('expired') !== -1) {\r\n // if error is not expired password\r\n $('#login').css('display', 'none');\r\n $('#change').css('display', 'block');\r\n $('#changePassword').css('display', 'none');\r\n }\r\n } else {\r\n $('#error').css('display', 'none'); //hide error\r\n\r\n $('#login').css('display', 'block');\r\n $('#change').css('display', 'none');\r\n $('#changePassword').css('display', 'none');\r\n }\r\n}\r\n\r\nfunction customPasswordChangeClick() {\r\n // Called off of link to change password. Used to set sesson variable for checking against later.\r\n $.session.changePasswordLinkSelected = 'Y';\r\n customPasswordChange();\r\n $('#loginInfal').css('opacity', '-1');\r\n}\r\n\r\nfunction setUpPasswordResetMessages(res) {\r\n var error = '';\r\n var success = '';\r\n $('results', res).each(function () {\r\n error = $('Error', this).text();\r\n success = $('Success', this).text();\r\n });\r\n if (error.indexOf('808') != -1) {\r\n $('#confirmResetMessage').html(\r\n 'A temporary password has been sent to your email address on file. If you do not receive an email please contact your System Administrator.',\r\n );\r\n $('#confirmResetMessage').css('color', '#f13c6e');\r\n $('#resetButton').text('Change Password');\r\n $.session.changeEmailSent = true;\r\n } else if (error.indexOf('888') != -1) {\r\n $('#confirmResetMessage').html('Forgot password functionality is not offered by your company.');\r\n $('#confirmResetMessage').css('color', '#f13c6e');\r\n } else {\r\n //var reset = true;\r\n //customPasswordChange(reset);\r\n $('#confirmResetMessage').html(\r\n 'A temporary password has been sent to your email address on file. If you do not receive an email please contact your System Administrator.',\r\n );\r\n $('#confirmResetMessage').css('color', '#f13c6e');\r\n $('#resetButton').text('Change Password');\r\n r = document.getElementById('resetButton');\r\n r.addEventListener('click', () => customPasswordChange(reset), false);\r\n $.session.changeEmailSent = true;\r\n }\r\n}\r\n\r\nfunction toResetPage() {\r\n customPasswordChange(reset);\r\n}\r\n\r\nfunction resetPasswordClick() {\r\n // hide other forms\r\n $('#login').css('display', 'none');\r\n $('#change').css('display', 'none');\r\n\r\n // hide password help options\r\n $('#changePassword').css('display', 'none');\r\n $('#resetPassword').css('display', 'none');\r\n $('#loginInfal').css('opacity', '-1');\r\n\r\n // hide error and custom login text\r\n $('#error').css('display', 'none');\r\n $('#customLoginText').css('display', 'none');\r\n\r\n // display reset form and back to login button\r\n $('#reset').css('display', 'block');\r\n $('#backToLogin').css('display', 'flex');\r\n}\r\n\r\nfunction backToLoginPage() {\r\n $('#customLoginText').css('display', 'block');\r\n location.reload();\r\n}\r\n\r\n//Custom password change code\r\nfunction customPasswordChange(reset) {\r\n // hide other forms\r\n $('#login').css('display', 'none');\r\n $('#reset').css('display', 'none');\r\n\r\n // hide password help options\r\n $('#resetPassword').css('display', 'none');\r\n $('#changePassword').css('display', 'none');\r\n\r\n // hide error and custom login text\r\n $('#error').css('display', 'none');\r\n $('#customLoginText').css('display', 'none');\r\n\r\n // display change form and back to login button\r\n $('#change').css('display', 'block');\r\n $('#backToLogin').css('display', 'flex');\r\n\r\n if ($.session.changePasswordLinkSelected === '') {\r\n $('#confirmMessage').text('Your password has expired. Please enter and confirm a new password.');\r\n } else if (reset) {\r\n $('#confirmMessage').text('Your message has been sent. Please reset password.');\r\n } else {\r\n $('#confirmMessage').text('Please enter and confirm a new password.');\r\n }\r\n}\r\n\r\nvar BrowserDetect = {\r\n init: function () {\r\n this.browser = this.searchString(this.dataBrowser) || 'An unknown browser';\r\n this.version =\r\n this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || 'an unknown version';\r\n this.OS = this.searchString(this.dataOS) || 'an unknown OS';\r\n },\r\n searchString: function (data) {\r\n for (var i = 0; i < data.length; i++) {\r\n var dataString = data[i].string;\r\n var dataProp = data[i].prop;\r\n this.versionSearchString = data[i].versionSearch || data[i].identity;\r\n if (dataString) {\r\n if (dataString.indexOf(data[i].subString) != -1) return data[i].identity;\r\n } else if (dataProp) return data[i].identity;\r\n }\r\n },\r\n searchVersion: function (dataString) {\r\n var index = dataString.indexOf(this.versionSearchString);\r\n if (index == -1) return;\r\n return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));\r\n },\r\n dataBrowser: [\r\n {\r\n string: navigator.userAgent,\r\n subString: 'Chrome',\r\n identity: 'Chrome',\r\n },\r\n {\r\n string: navigator.userAgent,\r\n subString: 'OmniWeb',\r\n versionSearch: 'OmniWeb/',\r\n identity: 'OmniWeb',\r\n },\r\n {\r\n string: navigator.vendor,\r\n subString: 'Apple',\r\n identity: 'Safari',\r\n versionSearch: 'Version',\r\n },\r\n {\r\n prop: window.opera,\r\n identity: 'Opera',\r\n versionSearch: 'Version',\r\n },\r\n {\r\n string: navigator.vendor,\r\n subString: 'iCab',\r\n identity: 'iCab',\r\n },\r\n {\r\n string: navigator.vendor,\r\n subString: 'KDE',\r\n identity: 'Konqueror',\r\n },\r\n {\r\n string: navigator.userAgent,\r\n subString: 'Firefox',\r\n identity: 'Firefox',\r\n },\r\n {\r\n string: navigator.vendor,\r\n subString: 'Camino',\r\n identity: 'Camino',\r\n },\r\n {\r\n // for newer Netscapes (6+)\r\n string: navigator.userAgent,\r\n subString: 'Netscape',\r\n identity: 'Netscape',\r\n },\r\n {\r\n string: navigator.userAgent,\r\n subString: 'MSIE',\r\n identity: 'Explorer',\r\n versionSearch: 'MSIE',\r\n },\r\n {\r\n string: navigator.userAgent,\r\n subString: 'Gecko',\r\n identity: 'Mozilla',\r\n versionSearch: 'rv',\r\n },\r\n {\r\n // for older Netscapes (4-)\r\n string: navigator.userAgent,\r\n subString: 'Mozilla',\r\n identity: 'Netscape',\r\n versionSearch: 'Mozilla',\r\n },\r\n ],\r\n dataOS: [\r\n {\r\n string: navigator.platform,\r\n subString: 'Win',\r\n identity: 'Windows',\r\n },\r\n {\r\n string: navigator.platform,\r\n subString: 'Mac',\r\n identity: 'Mac',\r\n },\r\n {\r\n string: navigator.userAgent,\r\n subString: 'iPhone',\r\n identity: 'iPhone/iPod',\r\n },\r\n {\r\n string: navigator.platform,\r\n subString: 'Linux',\r\n identity: 'Linux',\r\n },\r\n ],\r\n};\r\n\r\n//if browser hasn't been filled in for this session fill it in.\r\nif ($.session.browser == '') {\r\n BrowserDetect.init();\r\n $.session.browser = BrowserDetect.browser;\r\n $.session.OS = BrowserDetect.OS;\r\n $.session.browserVer = BrowserDetect.version;\r\n}\r\n\r\nfunction convertMilitaryTimeToAMPM(inputTime) {\r\n var hour = '';\r\n var minute = '';\r\n var amPM = '';\r\n var convertedTime = '';\r\n if (inputTime.length < 5 && inputTime != '') {\r\n inputTime = '0' + inputTime;\r\n }\r\n // Parse the input time into hours and minutes:\r\n for (var i = 0; i < inputTime.length; i++) {\r\n if (isNaN(inputTime.charAt(i)) == false && inputTime.charAt(i) != ' ') {\r\n if (i < 2) {\r\n hour = hour + inputTime.charAt(i);\r\n }\r\n\r\n if (i == 3 || i == 4) {\r\n minute = minute + inputTime.charAt(i);\r\n }\r\n }\r\n }\r\n\r\n // Default to AM:\r\n amPM = 'AM';\r\n\r\n // If the hour = \"00\":\r\n if (hour == '00') {\r\n hour = '12';\r\n } else {\r\n // If the hour = \"12\":\r\n if (hour == '12') {\r\n // Set to PM:\r\n amPM = 'PM';\r\n }\r\n }\r\n\r\n // If the time is greater than Noon:\r\n if (hour > '12') {\r\n var x = +hour;\r\n x = x - 12;\r\n hour = String(x);\r\n\r\n // Set to PM:\r\n amPM = 'PM';\r\n }\r\n\r\n if (hour.length == 1) hour = '0' + hour;\r\n\r\n if (minute.length == 1) minute = '0' + minute;\r\n\r\n // Create the converted time:\r\n convertedTime = hour + ':' + minute + ' ' + amPM;\r\n\r\n return convertedTime;\r\n}\r\n\r\nfunction overClicky() {\r\n var now = new Date();\r\n var outStr = now.getHours() + now.getMinutes() + now.getSeconds();\r\n var last = $.session.lastMenuSelection;\r\n var lastStr = last.getHours() + last.getMinutes() + last.getSeconds();\r\n var compared = outStr - lastStr;\r\n\r\n compared = Math.abs(compared);\r\n\r\n if (compared < 2) return true;\r\n return false;\r\n}\r\n\r\nif (typeof String.prototype.startsWith != 'function') {\r\n // see below for better implementation!\r\n String.prototype.startsWith = function (str) {\r\n return this.indexOf(str) == 0;\r\n };\r\n}\r\n\r\nfunction IsPasswordStrong(password) {\r\n let preSpecialCharCheckString = $.session.passwordSpecialCharacters;\r\n // Remove the escapes, and re-add escapes after the string has been re-joined with commas.\r\n preSpecialCharCheckString = preSpecialCharCheckString.replaceAll(`\\\\\\\\`, `\\\\`);\r\n preSpecialCharCheckString = preSpecialCharCheckString.replaceAll(`\\\\\"`, `\"`);\r\n const specCharNoCommas = preSpecialCharCheckString.split('');\r\n let withCommas = specCharNoCommas.join((separator = ','));\r\n // Add in escapes\r\n withCommas = withCommas.replaceAll(`\\\\`, `\\\\\\\\`);\r\n withCommas = withCommas.replaceAll(`/`, `\\\\/`);\r\n withCommas = withCommas.replaceAll(`-`, `\\\\-`);\r\n withCommas = withCommas.replaceAll(`]`, `\\\\]`);\r\n withCommas = withCommas.replaceAll(`[`, `\\\\[`);\r\n const specChar = new RegExp(`[${withCommas}]`, 'g');\r\n\r\n if (password.length < $.session.advancedPasswordLength) return 0;\r\n if (!password.match(/[a-z]/) || !password.match(/[A-Z]/)) return 0;\r\n if (!password.match(specChar)) return 0;\r\n if (/\\d/.test(password) === false) return 0;\r\n\r\n return 1;\r\n}\r\n\r\nfunction checkChangePasswordLoginValues() {\r\n var user = document.getElementById('username2');\r\n var pass = document.getElementById('password2');\r\n var pass1 = document.getElementById('newpassword1');\r\n var pass2 = document.getElementById('newpassword2');\r\n\r\n if (user.value === '' || pass.value === '') {\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n } else if (pass1 === '' || pass2.value === '') {\r\n document.getElementById('changebutton').classList.add('disabled');\r\n } else {\r\n document.getElementById('changebutton').classList.remove('disabled');\r\n }\r\n}\r\n\r\nfunction checkPass() {\r\n var user = document.getElementById('username2');\r\n var pass = document.getElementById('password2');\r\n var pass1 = document.getElementById('newpassword1');\r\n var pass2 = document.getElementById('newpassword2');\r\n var message = document.getElementById('confirmMessage');\r\n strongPassword = $.session.strongPassword;\r\n // PW Can't contain more than one backslash in a row\r\n if (pass1.value.match(/\\\\{2,}/g)) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n $('#errortext').text(`Your password can't contain more than one \\\\ in a row.`);\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n } else {\r\n $('#error').css('opacity', '0');\r\n $('#error').css('display', 'none');\r\n $('#errortext').text(``);\r\n document.getElementById('changebutton').classList.remove('disabled');\r\n }\r\n\r\n //Extra condition for whether or not a strong password is required\r\n if (strongPassword === 'N') {\r\n if (pass1.value === '' || pass2.value === '' || user.value === '' || pass.value === '') {\r\n message.innerHTML = 'Please enter and confirm a new password.';\r\n message.classList.add('password-error');\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n }\r\n\r\n //passwords match?\r\n if (pass1.value !== pass2.value) {\r\n message.innerHTML = 'Passwords Do Not Match!';\r\n message.classList.add('password-error');\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n } else {\r\n message.innerHTML = '';\r\n message.classList.remove('password-error');\r\n document.getElementById('changebutton').classList.remove('disabled');\r\n return 1;\r\n }\r\n } else {\r\n //if both are null\r\n if (pass1.value.length === 0 && pass2.value.length === 0 && $.session.changePasswordLinkSelected === '') {\r\n message.innerHTML = 'Your password has expired, please enter and confirm a new password.';\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n }\r\n\r\n //is password strong?\r\n if (IsPasswordStrong(pass1.value) !== 1) {\r\n // specialCharDisplay. Remove the escape from backslash and quote.\r\n let specialCharDisplay = $.session.passwordSpecialCharacters.replaceAll(`\\\\\\\\`, `\\\\`);\r\n specialCharDisplay = specialCharDisplay.replaceAll(`\\\\\"`, `\"`);\r\n message.innerHTML = `\r\n Passwords must meet all of the following requirements: Be at least ${$.session.advancedPasswordLength} characters long, \r\n have a special character (${specialCharDisplay}), have a number, and include upper and lower case letters.\r\n `;\r\n message.classList.add('password-error');\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n }\r\n\r\n //passwords match?\r\n if (pass1.value === '' || pass2.value === '' || user.value === '' || pass.value === '') {\r\n message.innerHTML = 'Please enter and confirm a new password.';\r\n message.classList.add('password-error');\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n }\r\n //passwords match?\r\n if (pass1.value !== pass2.value) {\r\n message.innerHTML = 'Passwords Do Not Match!';\r\n message.classList.add('password-error');\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n } else {\r\n message.innerHTML = '';\r\n message.classList.remove('password-error');\r\n document.getElementById('changebutton').classList.remove('disabled');\r\n return 1;\r\n }\r\n }\r\n}\r\n\r\nDate.prototype.monthNames = [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December',\r\n];\r\n\r\nDate.prototype.getMonthName = function () {\r\n return this.monthNames[this.getMonth()];\r\n};\r\nDate.prototype.getShortMonthName = function () {\r\n return this.getMonthName().substr(0, 3);\r\n};\r\n\r\n// function loadSettings() {\r\n// \tvar settingsBox = $(\"#settingsbox\");\r\n// \tvar helpBox = $(\"#helpbox\");\r\n\r\n// \tif (settingsBox[0].style.display === 'none') {\r\n// \t\thelpBox.css(\"display\", \"none\");\r\n// \t\tsettingsBox.css(\"display\", \"block\");\r\n// \t} else {\r\n// \t\tsettingsBox.css(\"display\", \"none\");\r\n// \t}\r\n\r\n// $(\"#consumerclockinhelp\").remove();\r\n// $(\".consumerclockinhelptriangle\").remove();\r\n// $(\"#goalshelp\").remove();\r\n// $(\".hrtriangleright\").remove();\r\n// firstLoad = false;\r\n// }\r\n\r\n// function loadHelp() {\r\n// $(\"#settingsbox\").css(\"display\", \"none\");\r\n// $(\"#helpbox\").css(\"display\", \"block\");\r\n// $(\"#consumerclockinhelp\").remove();\r\n// $(\".consumerclockinhelptriangle\").remove();\r\n// $(\"#goalshelp\").remove();\r\n// $(\".hrtriangleright\").remove();\r\n// }\r\n\r\nfunction setDefaultValue(type, value, event, name) {\r\n event.stopPropagation();\r\n var mySrc = $(event.srcElement);\r\n mySrc.parents('locationpopupbox').hide();\r\n var typeName = '';\r\n var switchCase = 0;\r\n switch (type) {\r\n case 1:\r\n typeName = 'Default Staff Location';\r\n $('#0').text(event.srcElement.text);\r\n break;\r\n case 2:\r\n typeName = 'Default Roster Location';\r\n $('#1').text(event.srcElement.text);\r\n createCookie('defaultRosterGroupName', 'Everyone', 7);\r\n createCookie('defaultRosterGroupValue', 'ALL', 7);\r\n saveDefaultLocationNameAjax('6', 'Everyone');\r\n saveDefaultLocationValueAjax('6', 'ALL');\r\n $('#rostergroup6').text('Everyone');\r\n if (value != 0 && name != null) {\r\n getConsumerGroups(value, name);\r\n $.session.defaultRosterLocation = value;\r\n createCookie('defaultRosterLocationName', name, 7);\r\n saveDefaultLocationNameAjax('2', name);\r\n } else {\r\n createCookie('defaultRosterLocationName', 'Remember Last Location', 7);\r\n saveDefaultLocationNameAjax('2', 'Remember Last Location');\r\n }\r\n break;\r\n case 3:\r\n typeName = 'Default Day Service Location';\r\n $('#2').text(event.srcElement.text);\r\n if (value != 0 && name != null) {\r\n createCookie('defaultDayServiceLocationName', name, 7);\r\n createCookie('defaultDayServiceLocationNameValue', value, 7);\r\n createCookie('defaultDayServiceLocationFlag', false, 7);\r\n saveDefaultLocationNameAjax('3', name);\r\n saveDefaultLocationValueAjax('3', value);\r\n $.session.defaultDayServiceLocationFlag = 'false';\r\n $.session.dsLocationHistoryFlag = false;\r\n } else {\r\n var test = $(this).text();\r\n saveDefaultLocationNameAjax('3', 'Remember Last Location');\r\n if (name == null) {\r\n createCookie('defaultDayServiceLocationFlag', true, 7);\r\n $.session.defaultDayServiceLocationFlag = 'true';\r\n }\r\n }\r\n break;\r\n case 4:\r\n typeName = 'Default Time Clock Location';\r\n $('#timeclock4').text(event.srcElement.text);\r\n if (value != 0 && name != null) {\r\n createCookie('defaultTimeClockLocationName', name, 7);\r\n createCookie('defaultTimeClockLocationValue', value, 7);\r\n saveDefaultLocationNameAjax('4', name);\r\n saveDefaultLocationValueAjax('4', value);\r\n } else {\r\n }\r\n //New way to save to the database\r\n switchCase = '4';\r\n saveDefaultLocationValueAjax(switchCase, value);\r\n break;\r\n case 5:\r\n typeName = 'Default Workshop Location';\r\n $('#workshop5').text(event.srcElement.text);\r\n if (value != 0 && name != null) {\r\n createCookie('defaultWorkshopLocationName', name, 7);\r\n createCookie('defaultWorkshopLocationValue', value, 7);\r\n saveDefaultLocationNameAjax('5', name);\r\n saveDefaultLocationValueAjax('5', value);\r\n } else {\r\n createCookie('defaultWorkshopLocationName', 'Remember Last Location', 7);\r\n saveDefaultLocationNameAjax('5', 'Remember Last Location');\r\n }\r\n break;\r\n case 6:\r\n typeName = 'Default Roster Group';\r\n $('#rostergroup6').text(event.srcElement.text);\r\n if (value != 0 && name != null) {\r\n createCookie('defaultRosterGroupName', name, 7);\r\n createCookie('defaultRosterGroupValue', value, 7);\r\n saveDefaultLocationNameAjax('6', name);\r\n saveDefaultLocationValueAjax('6', value);\r\n } else {\r\n createCookie('defaultRosterGroupName', 'Everyone', 7);\r\n saveDefaultLocationNameAjax('6', 'Everyone');\r\n }\r\n break;\r\n case 7:\r\n typeName = 'Default MoneyManagement Location';\r\n $('#moneyManagement7').text(event.srcElement.text);\r\n if (value != 0 && name != null) {\r\n createCookie('defaultMoneyManagementLocationName', name, 7);\r\n createCookie('defaultMoneyManagementLocationValue', value, 7);\r\n saveDefaultLocationNameAjax('7', name);\r\n saveDefaultLocationValueAjax('7', value);\r\n } else {\r\n createCookie('defaultMoneyManagementLocationName', 'Remember Last Location', 7);\r\n saveDefaultLocationNameAjax('7', 'Remember Last Location');\r\n }\r\n break;\r\n }\r\n\r\n setDefaultLoc(type, value);\r\n}\r\n\r\nfunction tabletFocus(event) {\r\n var inputId;\r\n if ($.session.browser == 'Explorer' || $.session.browser == 'Mozilla') {\r\n inputId = event.srcElement.id;\r\n } else {\r\n inputId = event.target.id;\r\n }\r\n $('#' + inputId).focus();\r\n}\r\n\r\n// function browserSpecificEnabled() {\r\n// //this code is to add css classes for browser specific css\r\n// //not sure why ie11 says its mozilla and not msie??\r\n// if ($.browser.mozilla && $.browser.version == 11) {\r\n// $(\"html\").addClass(\"ie11\");\r\n// }\r\n// if ($.browser.msie && $.browser.version == 10) {\r\n// $(\"html\").addClass(\"ie10\");\r\n// }\r\n// }\r\n\r\nfunction customTextVersionWork(res) {\r\n var customText = '';\r\n $('results', res).each(function () {\r\n customText = $('customtext', this).text();\r\n $.session.ver = $('anywhereversion', this).text();\r\n });\r\n $(ver).text($.session.ver);\r\n if (customText != '') {\r\n $('#customLoginText').text(customText);\r\n } else {\r\n $('#customLoginText').text(\r\n 'Primary Solutions, in conjunction with amazing people like you, has built a new product from the ground up that ' +\r\n \"focuses on ease of use so that you can focus on what's really important.\",\r\n );\r\n }\r\n}\r\n\r\nfunction checkVersions() {\r\n if ($.session.ver != $.session.version) {\r\n updateVersionAjax($.session.version);\r\n }\r\n}\r\n\r\nfunction getFormattedTime1(fullDate) {\r\n hours = fullDate.getHours();\r\n if (hours.toString().length == 1) {\r\n hours = '0' + hours;\r\n }\r\n min = fullDate.getMinutes();\r\n if (min.toString().length == 1) {\r\n min = '0' + min;\r\n }\r\n time = hours + ':' + min;\r\n time = convertMilitaryTimeToAMPM(time);\r\n time = time.replace('AM', '').replace('PM', '').replace(' ', '');\r\n return time;\r\n}\r\n\r\nfunction getAMPM(fullDate) {\r\n var ampm = '';\r\n hours = fullDate.getHours();\r\n if (hours.toString().length == 1) {\r\n hours = '0' + hours;\r\n }\r\n time = hours + ':' + fullDate.getMinutes();\r\n time = convertMilitaryTimeToAMPM(time);\r\n if (time.indexOf('AM') != -1) {\r\n ampm = 'AM';\r\n } else {\r\n ampm = 'PM';\r\n }\r\n return ampm;\r\n}\r\n\r\n//This is the function that was allowing access to the site. Going to probably need changed now.\r\nfunction allowAccess(res) {\r\n var testInt = 0;\r\n $('result', res).each(function () {\r\n testInt = $('id', this).text();\r\n });\r\n if (testInt > 0) {\r\n eraseCookie('id');\r\n createCookie('id', testInt, 1);\r\n document.location.href = 'infalAnywhere.html';\r\n } else {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n $('#errortext').text('Login unsuccessful');\r\n }\r\n}\r\n\r\nfunction checkModulePermissions() {\r\n if ($.session.DayServiceView == false) {\r\n $('#dayservicesettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.GoalsView == false) {\r\n $('#goalssettingsdiv').addClass('disabledModule');\r\n }\r\n\r\n if ($.session.CaseNotesView == false || $.session.CaseNotesTablePermissionView == false) {\r\n $('#casenotessettingsdiv').addClass('disabledModule');\r\n }\r\n\r\n if ($.session.SingleEntryView == false) {\r\n $('#singleentrysettingsdiv').addClass('disabledModule');\r\n }\r\n\r\n if ($.session.WorkshopView == false) {\r\n $('#workshopsettingsdiv').addClass('disabledModule');\r\n }\r\n\r\n if ($.session.incidentTrackingView == false) {\r\n $('#incidenttrackingsettingsdiv').addClass('disabledModule');\r\n }\r\n\r\n if ($.session.schedulingView == false) {\r\n $('#schedulersettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.authorizationsView == false) {\r\n $('#authorizationsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.planView == false) {\r\n $('#plansettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.transportationView == false) {\r\n $('#transportationsettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.emarView == false) {\r\n $('#emarsettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.formsView == false) {\r\n $('#PDFFormssettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.OODView == false) {\r\n $('#OODsettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.ResetPasswordView == false) {\r\n $('#Adminsettingdiv').addClass('disabledModule');\r\n }\r\n if ($.session.EmploymentView == false) {\r\n $('#Employmentsettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.FSSView == false) {\r\n $('#fSSdiv').addClass('disabledModule');\r\n }\r\n if ($.session.CFView == false) {\r\n $('#cfAccountDiv').addClass('disabledModule');\r\n }\r\n if ($.session.CFViewEditAccounts == false) {\r\n $('#cfEditAccountDiv').addClass('disabledModule');\r\n }\r\n\r\n if ($.session.CFView == false && $.session.CFViewEditAccounts == false) {\r\n $('#consumerfinancessettingsdiv').addClass('disabledModule');\r\n }\r\n\r\n $('#adminsingleentrysettingsdiv').hide();\r\n if ($.session.ViewAdminSingleEntry === true) {\r\n if ($.session.SEViewAdminWidget === true) {\r\n $('#adminsingleentrysettingsdiv').show();\r\n }\r\n }\r\n}\r\n\r\nfunction disableModules() {\r\n if ($.session.applicationName == 'Gatekeeper') {\r\n $('#singleentrysettingsdiv').css('display', 'none');\r\n $('#adminsingleentrysettingsdiv').css('display', 'none');\r\n $('#transportationsettingsdiv').css('display', 'none');\r\n $('#OODsettingsdiv').css('display', 'none');\r\n\r\n $('#customlinks').css('display', 'none');\r\n }\r\n\r\n if ($.session.applicationName == 'Advisor') {\r\n $('#authorizationsdiv').css('display', 'none');\r\n $('#waitingListdiv').css('display', 'none');\r\n $('#fSSdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.dayServicesPermission == 'Anywhere_DayServices') {\r\n // leave module on\r\n } else {\r\n $('#dayservicesettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.outcomesPermission == 'Anywhere_Outcomes') {\r\n // leave module on\r\n } else {\r\n $('#goalssettingsdiv').css('display', 'none');\r\n //MAT - commented this out because it is in wrong spot.\r\n //$(\"#singlebuttondiv\").css(\"display\", \"none\");\r\n }\r\n\r\n if ($.session.workshopPermission == 'Anywhere_Workshop') {\r\n // leave module on\r\n } else {\r\n $('#workshopsettingsdiv').hide();\r\n }\r\n\r\n if ($.session.intellivuePermission == 'Intellivue') {\r\n // leave module on\r\n } else {\r\n $('#intellivuesettingsdiv').hide();\r\n }\r\n\r\n if ($.session.caseNotesPermission == 'Anywhere_CaseNotes') {\r\n // leave module on\r\n } else {\r\n $('#casenotessettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.singleEntryPermission == 'Anywhere_SingleEntry') {\r\n // leave module on\r\n } else {\r\n $('#singleentrysettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.singleEntryApproveEnabled == 'Y') {\r\n //Leave module on\r\n } else {\r\n //$(\"#adminsingleentrysettingsdiv\").css(\"display\", \"none\");\r\n }\r\n\r\n if ($.session.incidentTrackingPermission == 'Anywhere_Incident_Tracking') {\r\n //Leave module on\r\n } else {\r\n $('#incidenttrackingsettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.anywhereSchedulingPermission == 'Anywhere_Scheduling') {\r\n //Leave module on\r\n } else {\r\n $('#schedulersettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.covidPermission == 'COVID_19') {\r\n //Leave module on\r\n } else {\r\n $('#covidchecklistsettingsdiv').css('display', 'none');\r\n }\r\n if ($.session.transportationPermission == 'Anywhere_Transportation') {\r\n //Leave module on\r\n } else {\r\n $('#transportationsettingsdiv').css('display', 'none');\r\n }\r\n if ($.session.emarPermission == 'Anywhere_eMAR') {\r\n //Leave module on\r\n } else {\r\n $('#emarsettingsdiv').css('display', 'none');\r\n }\r\n if ($.session.formsPermission == 'Anywhere_Forms') {\r\n //Leave module on\r\n } else {\r\n $('#PDFFormssettingsdiv').css('display', 'none');\r\n }\r\n if ($.session.OODPermission == 'Anywhere_OOD') {\r\n //Leave module on\r\n } else {\r\n $('#OODsettingsdiv').css('display', 'none');\r\n }\r\n //if (($.session.passwordResetPermission = 'Anywhere')) {\r\n // //\r\n // //Leave module on\r\n //} else {\r\n // $('#Adminsettingdiv').css('display', 'none');\r\n //}\r\n // TODO: ASH\r\n // if ($.session.anywhereAuthorizationsPermission == 'Anywhere_Authorizations') {\r\n // //Leave module on\r\n // } else {\r\n // $('#authorizationsdiv').css('display', 'none');\r\n // }\r\n if ($.session.anywherePlanPermission == 'Anywhere_Plan') {\r\n //Leave module on\r\n } else {\r\n $('#plansettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.anywhereResetPasswordPermission == 'Anywhere_Administration') {\r\n //Leave module on\r\n } else {\r\n $('#Adminsettingdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.anywhereConsumerFinancesPermission == 'Anywhere_Consumer_Finances') {\r\n //Leave module on\r\n } else {\r\n $('#consumerfinancessettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.anywhereEmploymentPermission == 'Anywhere_Employment') {\r\n //Leave module on\r\n } else {\r\n $('#Employmentsettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.anywhereFSSPermission == 'Anywhere_FSS') {\r\n //Leave module on\r\n } else {\r\n $('#fSSdiv').css('display', 'none');\r\n }\r\n}\r\n\r\nfunction setUpAdminPermissions() {\r\n $.session.DayServiceView = true;\r\n $.session.DayServiceInsert = true;\r\n $.session.DayServiceUpdate = true;\r\n $.session.DayServiceDelete = true;\r\n $.session.DayServiceNonBillable = true;\r\n $.session.DayServiceOverRide = true;\r\n $.session.DenyStaffClockUpdate = false;\r\n $.session.DenyClockUpdate = false;\r\n $.session.DemographicsView = true;\r\n $.session.DemographicsBasicDataView = true;\r\n $.session.DemographicsRelationshipsView = true;\r\n $.session.DemographicsPictureUpdate = true;\r\n $.session.DemographicsNotesView = true;\r\n $.session.GoalsView = true;\r\n $.session.GoalsUpdate = true;\r\n $.session.CaseNotesView = true;\r\n $.session.CaseNotesTablePermissionView = true;\r\n $.session.CaseNotesUpdate = true;\r\n $.session.CaseNotesCaseloadRestriction = false;\r\n $.session.SingleEntryView = true;\r\n $.session.SingleEntryUpdate = true;\r\n $.session.caseNoteEditSecond = true;\r\n $.session.caseNoteDisplayGroupNoteDivPreference = true;\r\n $.session.caseNoteDisplayGroupNoteCheckedPreference = true;\r\n $.session.updateAllGroupDropDowns = true;\r\n $.session.changeFromSingleToGroupNote = true;\r\n $.session.UpdateCaseNotesDocTime = true;\r\n $.session.anAdmin = true;\r\n $.session.ViewAdminSingleEntry = true;\r\n $.session.CaseNotesViewEntered = false;\r\n $.session.CaseNotesSSANotes = false;\r\n $.session.schedulingUpdate = true;\r\n $.session.schedulingView = true;\r\n $.session.schedulingStartDayOfWeek = 0;\r\n $.session.schedAllowCallOffRequests = 'N';\r\n $.session.schedRequestOpenShifts = 'N';\r\n}\r\n","function generateURL(endPoint) {\r\n return `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/${endPoint}/`;\r\n}\r\n\r\nasync function md5Hash(password) {\r\n const encoder = new TextEncoder();\r\n const data = encoder.encode(password);\r\n\r\n const hashBuffer = await crypto.subtle.digest('MD5', data);\r\n const hashArray = Array.from(new Uint8Array(hashBuffer));\r\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\r\n\r\n return hashHex;\r\n}\r\n\r\nfunction logIn() {\r\n const loginBtn = document.getElementById('loginBtn');\r\n loginBtn.classList.add('disabled');\r\n //need to check if code exists on device, pass either it or empty string\r\n const userId = $('#username').val().trim();\r\n const localDeviceId = UTIL.LS.getStorage('device', userId);\r\n const insertData = {\r\n userId: userId,\r\n hash: $().crypt({\r\n method: 'md5',\r\n source: $('#password1').val().trim()\r\n }),\r\n deviceId: localDeviceId ? localDeviceId : ''\r\n };\r\n var success = false;\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getLogIn/',\r\n data: JSON.stringify(insertData),\r\n contentType: 'application/json; charset=utf-8',\r\n beforeSend: function () {\r\n // show gif here, eg:\r\n $('body').css('cursor', 'wait');\r\n },\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n loginBtn.classList.remove('disabled');\r\n const res = JSON.stringify(response);\r\n if (res.indexOf(null) != -1) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tPlease enter a valid username. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n const resXML = response.getLogInResult && UTIL.parseXml(response.getLogInResult);\r\n if (resXML) {\r\n const windowName = resXML.getElementsByTagName('window_name')[0];\r\n if (windowName && windowName.innerHTML === 'Failed attempts') {\r\n const count = resXML.getElementsByTagName('special_data')[0].innerHTML;\r\n // $('#error').css('opacity', '1');\r\n // $('#error').css('display', 'block');\r\n // $('#errortext').text('Invalid username/password combination');\r\n\r\n const overlay = document.querySelector('.overlay');\r\n const loginWarningPopup = POPUP.build({\r\n id: 'loginPopup',\r\n hideX: true\r\n });\r\n const okButton = button.build({\r\n text: 'ok',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n overlay.classList.remove('visible');\r\n document.body.removeChild(loginWarningPopup);\r\n document.getElementById('password1').value = '';\r\n document.getElementById('password1').focus();\r\n }\r\n });\r\n const message = document.createElement('p');\r\n switch (count) {\r\n case '1':\r\n {\r\n message.innerHTML = `Invalid user name or password.`;\r\n break;\r\n }\r\n case '2':\r\n {\r\n message.innerHTML = `This is your second failed login attempt. If you have one more failed attempt your account will become inactive. Please use the Forgot Password link below to reset your password.`;\r\n break;\r\n }\r\n case '3':\r\n {\r\n message.innerHTML = `Your account is inactive due to the number of failed login attempts. Please contact your System Administrator to enable your account.`;\r\n break;\r\n }\r\n default:\r\n {\r\n message.innerHTML = `Your account is inactive due to the number of failed login attempts. Please contact your System Administrator to enable your account.`;\r\n }\r\n }\r\n loginWarningPopup.appendChild(message);\r\n loginWarningPopup.appendChild(okButton);\r\n overlay.classList.add('visible');\r\n document.body.appendChild(loginWarningPopup);\r\n okButton.focus();\r\n } else if (windowName && windowName.innerHTML === 'Not active') {\r\n const overlay = document.querySelector('.overlay');\r\n const loginWarningPopup = POPUP.build({\r\n id: 'loginPopup',\r\n hideX: true\r\n });\r\n const okButton = button.build({\r\n text: 'ok',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n overlay.classList.remove('visible');\r\n document.body.removeChild(loginWarningPopup);\r\n //document.getElementById(\"username\").value = '';\r\n document.getElementById('password1').value = '';\r\n document.getElementById('username').focus();\r\n }\r\n });\r\n const message = document.createElement('p');\r\n message.innerHTML = `Your account is inactive. Please contact your System Administrator to enable your account.`;\r\n loginWarningPopup.appendChild(message);\r\n loginWarningPopup.appendChild(okButton);\r\n overlay.classList.add('visible');\r\n document.body.appendChild(loginWarningPopup);\r\n okButton.focus();\r\n } else if (windowName && windowName.innerHTML === 'Invalid username') {\r\n const overlay = document.querySelector('.overlay');\r\n const loginWarningPopup = POPUP.build({\r\n id: 'loginPopup',\r\n hideX: true\r\n });\r\n const username = document.getElementById('username').value;\r\n const okButton = button.build({\r\n text: 'ok',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n overlay.classList.remove('visible');\r\n document.body.removeChild(loginWarningPopup);\r\n //document.getElementById(\"username\").value = '';\r\n document.getElementById('password1').value = '';\r\n document.getElementById('username').focus();\r\n }\r\n });\r\n const message = document.createElement('p');\r\n message.innerHTML = `Invalid user name or password.`;\r\n loginWarningPopup.appendChild(message);\r\n loginWarningPopup.appendChild(okButton);\r\n overlay.classList.add('visible');\r\n document.body.appendChild(loginWarningPopup);\r\n okButton.focus();\r\n } else {\r\n if (windowName && windowName.innerHTML === '2FA') {\r\n //Call below method from the popup. insertData must userName and genKey\r\n const deviceId = resXML.getElementsByTagName('special_data')[0].innerHTML;\r\n //const deviceId = JSON.parse(response.getLogInResult)[0]['@deviceGUID'];\r\n if (localDeviceId !== deviceId) {\r\n // UTIL.LS.setStorage('device', deviceId, userId);\r\n $.session.deviceGUID = deviceId;\r\n mfa.init();\r\n } else {\r\n eraseCookie('psiuser');\r\n var overlay = document.createElement('div');\r\n if ($('#username').val().toUpperCase() == 'PSI') {\r\n $.session.isPSI = true;\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n createCookie('psiuser', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n } else {\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n }\r\n }\r\n //authenticatedLogin();\r\n } else if (windowName && windowName.innerHTML === 'Invalid username') {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n $('#errortext').text('Invalid username/password combination');\r\n } else if (res.indexOf('Invalid password') != -1) {\r\n //never will be hit, needs removed\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n $('#errortext').text('Invalid password attempt 1');\r\n } else if (windowName && windowName.innerHTML === 'No demographics record') {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n $('#errortext').text('There is no Name in Demographics defined for your user. Please contact your system administrator to login to Anywhere.');\r\n } else if (windowName && windowName.innerHTML === 'No recipient') {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n Two-Factor authentication is enabled for your organization.\r\n There was no valid email address or cell phone number found for your account.\r\n Please contact your system administrator to login to Anywhere. \r\n `;\r\n $('#errortext').text(message);\r\n } else if (windowName && windowName.innerHTML === 'Expired password') {\r\n customPasswordChange();\r\n } else {\r\n //errorMessage = \"\";\r\n //alert('success: ' + res);\r\n eraseCookie('psiuser');\r\n var overlay = document.createElement('div');\r\n if ($('permissions', res).is('*') && $('#username').val().toUpperCase() == 'PSI') {\r\n $.session.isPSI = true;\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n createCookie('psiuser', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n } else if ($('permissions', res).is('*') && checkforErrors(res) == 0) {\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n } else if (res.indexOf('609') > -1) {\r\n //$(\"#error\").css(\"display\", \"block\");\r\n //checkForErrors();\r\n customPasswordChange();\r\n } else {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n if ($('#error').hasClass('hippaRestriction')) {\r\n $('#errortext').text('Password cannot match a recently used password');\r\n } else if ($('#error').hasClass('userInputError')) {\r\n $('#errortext').text('Invalid username or password');\r\n } else if (res.indexOf('608') > -1) {\r\n $('#errortext').text('This user name does not exist in demographics.');\r\n } else {\r\n $('#errortext').text('Login unsuccessful');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n complete: function () {\r\n // hide gif here, eg:\r\n $('body').css('cursor', 'auto');\r\n }\r\n });\r\n //postError(\"100\", \"This is a tricky error\", \"DEBUG\");\r\n}\r\n\r\n//Shared functionality of log in for use with change password, because of the ids for username and password on the forms\r\nfunction logInChangePassword() {\r\n var success = false;\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLogIn/',\r\n data:\r\n '{\"userId\":\"' +\r\n $('#username2').val() +\r\n '\", \"hash\":\"' +\r\n $().crypt({\r\n method: 'md5',\r\n source: $('#newpassword2').val(),\r\n }) +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n beforeSend: function () {\r\n // show gif here, eg:\r\n $('body').css('cursor', 'wait');\r\n },\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n //errorMessage = \"\";\r\n //alert('success: ' + res);\r\n eraseCookie('psiuser');\r\n var overlay = document.createElement('div');\r\n if ($('permissions', res).is('*') && $('#username2').val().toUpperCase() == 'PSI') {\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n success = true;\r\n createCookie('psiuser', res, 1);\r\n document.location.href = 'anywhere.html';\r\n } else if ($('permissions', res).is('*') && checkforErrors(res) == 0) {\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n } else {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n if ($('#error').hasClass('hippaRestriction')) {\r\n $('#errortext').text('Password cannot match a recently used password');\r\n } else if ($('#error').hasClass('userInputError')) {\r\n $('#errortext').text('Invalid username or password');\r\n } else {\r\n $('#errortext').text('Login unsuccessful');\r\n }\r\n }\r\n },\r\n error: function (xhr, status, error) {},\r\n complete: function () {\r\n // hide gif here, eg:\r\n $('body').css('cursor', 'auto');\r\n },\r\n });\r\n //postError(\"100\", \"This is a tricky error\", \"DEBUG\");\r\n}\r\n\r\nfunction patchIt() {\r\n logIn();\r\n}\r\n\r\n//Added to get value as to whether or not a strong password is required and the length of password required\r\nfunction strongPasswordValue() {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getStrongPassword/',\r\n data: '{}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n //Had to do this way because both fields are in database under same column name in system settings\r\n var passwordInfo = $('results', res);\r\n $.session.strongPassword = passwordInfo[0].innerText;\r\n $.session.passwordSpecialCharacters = passwordInfo[1].innerText;\r\n $.session.advancedPasswordLength = passwordInfo[2].innerText;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n-----\\n' + error + '\\n-----\\n' + xhr.responseText);\r\n },\r\n });\r\n}\r\n\r\nasync function setESignaturesMessage() {\r\n // Function to handle sending the code\r\n async function sendCode(newCode) {\r\n sendBtn.textContent = 'Sending code...';\r\n sendBtn.style.backgroundColor = '#cccccc'; \r\n \r\n try {\r\n // Retrieve user's current position\r\n const position = await new Promise((resolve, reject) => {\r\n navigator.geolocation.getCurrentPosition(resolve, reject);\r\n });\r\n \r\n const { latitude, longitude } = position.coords;\r\n\r\n //sends the code to the signers email with latitude and longitude\r\n const generatedCodeSuccessfully = await _UTIL.fetchData('generateAuthenticationCode', { tempUserId, latitude, longitude });\r\n\r\n // Update the html on the login page\r\n if (generatedCodeSuccessfully.generateAuthenticationCodeResult === 'success') {\r\n updateHTMLAfterCodeSent();\r\n\r\n if (newCode) {\r\n const newCodeMessageDiv = document.getElementById('eSignErrorMessage');\r\n newCodeMessageDiv.innerText = 'A new code has been sent to your email';\r\n }\r\n } else {\r\n popupMessageText.textContent = 'Incorrect Code: Please try again.';\r\n }\r\n } catch (error) {\r\n // Handle errors when accessing geolocation\r\n console.error('Error accessing geolocation:', error.message);\r\n }\r\n}\r\n\r\n\r\n const params = new URLSearchParams(window.location.search);\r\n\r\n // Get the value of the \"TempUser\" parameter\r\n const tempUserId = params.get('tempUser');\r\n\r\n const loginMessageData = await _UTIL.fetchData('getSignerLoginMessageData', { tempUserId });\r\n let redactedName = loginMessageData.getSignerLoginMessageDataResult.maskedFirstName + ' ' + loginMessageData.getSignerLoginMessageDataResult.maskedLastName;\r\n let signerEmail = loginMessageData.getSignerLoginMessageDataResult.tempUserEmail;\r\n\r\n let messageDiv = document.getElementById('redactedNamesMessage');\r\n\r\n let popupMessageText = document.createElement('p')\r\n popupMessageText.textContent = \r\n `The document shared with you contains information about ${redactedName}. To confirm your identity\r\n we'll send a code to ${signerEmail}.`;\r\n\r\n const sendBtn = button.build({\r\n id: 'sendCodeBtn',\r\n text: 'Send Code',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['btn-login'],\r\n callback: () => {\r\n sendCode();\r\n },\r\n });\r\n\r\n let locationNoticeText = document.createElement('div');\r\n locationNoticeText.innerHTML = `\r\n
\r\n

IMPORTANT - The Anywhere site must be allowed to access your location in order to send the security code. If you need help allowing location access in your browser, please click on one of the below links and search 'location access':


\r\n

\r\n Microsoft Edge - \r\n https://support.microsoft.com/en-us/microsoft-edge\r\n


\r\n

\r\n Google Chrome -\r\n https://support.google.com/chrome\r\n


\r\n

\r\n Apple Safari -
\r\n http://support.apple.com/safari\r\n

\r\n
\r\n `;\r\n\r\n messageDiv.appendChild(popupMessageText);\r\n messageDiv.appendChild(sendBtn);\r\n messageDiv.appendChild(locationNoticeText);\r\n\r\n // Function to update HTML after sending the code\r\n function updateHTMLAfterCodeSent() {\r\n // Update the inner HTML\r\n messageDiv.innerHTML =\r\n `

\r\n The document shared with you contains information about ${redactedName}. To open the document, enter the code we just emailed to ${signerEmail}.\r\n

\r\n

\r\n

\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
`;\r\n\r\n // Get the verifyCodeBtnWrap div\r\n const verifyCodeBtnWrap = document.querySelector('.verifyCodeBtnWrap');\r\n\r\n // Create and append the buttons\r\n\r\n const sendCodeAgainBtn = button.build({\r\n id: 'sendCodeBtn',\r\n text: 'Send Code Again',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: [],\r\n callback: () => {\r\n sendCode(true);\r\n },\r\n });\r\n verifyCodeBtnWrap.appendChild(sendCodeAgainBtn);\r\n\r\n const verifyBtn = button.build({\r\n id: 'verifyCodeBtn',\r\n text: 'Verify',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['btn-login'],\r\n callback: () => {\r\n checkVerificationCode(tempUserId);\r\n },\r\n });\r\n\r\n verifyCodeBtnWrap.appendChild(verifyBtn);\r\n }\r\n\r\n}\r\n\r\nasync function checkVerificationCode(tempUserId) {\r\n const passwordInput = document.getElementById('verificationCode').value;\r\n\r\n // Hash the value using MD5\r\n const hashedPassword = $().crypt({\r\n method: 'md5',\r\n source: passwordInput\r\n });\r\n const codeVerification = await _UTIL.fetchData('verifyESignLogin', { tempUserId, hashedPassword });\r\n \r\n if (codeVerification.verifyESignLoginResult === 'Success') {\r\n document.querySelector('main').innerHTML = '';\r\n // open the E-Signature form \r\n esignatures.init(tempUserId); \r\n } else {\r\n // Display the error or reason for failure\r\n const errorMessageDiv = document.getElementById('eSignErrorMessage');\r\n errorMessageDiv.innerText = codeVerification.verifyESignLoginResult;\r\n }\r\n}\r\n\r\nfunction getCustomLoginTextAndVersion(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCustomTextAndAnywhereVersion/',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCustomTextAndAnywhereVersionResult.replace(/\\r/g, '').replace(/\\n/g, '
');\r\n //var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n $('#customLoginText').text(\r\n 'Primary Solutions, in conjunction with amazing people like you, has built a new product from the ground up that ' +\r\n \"focuses on ease of use so that you can focus on what's really important.\",\r\n );\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n-----\\n' + error + '\\n-----\\n' + xhr.responseText);\r\n },\r\n });\r\n}\r\n\r\nfunction changeIt() {\r\n const changeBtn = document.getElementById('changebutton');\r\n changeBtn.classList.add('disabled');\r\n if (checkPass() == 0) return;\r\n //changeBtn.classList.add('disabled');\r\n let newPW = $('#newpassword1').val();\r\n newPW = newPW.replaceAll(`\\\\`, `\\\\\\\\`);\r\n newPW = newPW.replaceAll(`\"`, `\\\\\"`);\r\n newPW = newPW.replaceAll(`'`, `''`);\r\n var success = false;\r\n let passwordChangeError = false;\r\n let inactiveUser = false;\r\n let passwordReuseError = false;\r\n // blur focus to prevent messages from getting removed too quickly\r\n document.activeElement.blur();\r\n //alert('patchIt');\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/changeLogIn/',\r\n data: '{\"userId\":\"' + $('#username2').val() + '\", \"hash\":\"' + $().crypt({\r\n method: 'md5',\r\n source: $('#password2').val()\r\n }) + '\", \"newPassword\":\"' + newPW + '\", \"changingToHashPassword\":\"' + $().crypt({\r\n method: 'md5',\r\n source: $('#newpassword1').val()\r\n }) + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n if (res.indexOf(null) != -1) {\r\n passwordChangeError = true;\r\n return;\r\n }\r\n //alert('success: ' + res);\r\n if (res.indexOf('Not active') != -1) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tYour account is inactive. Please contact your System Administrator to enable your account. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n inactiveUser = true;\r\n return;\r\n }\r\n if (res.indexOf('Error:611') > -1) {\r\n passwordReuseError = true;\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tYour new password does not meet your organizations password reuse rules. Please use a different password.\r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n } else if (res.indexOf('Error:610') > -1) {\r\n passwordChangeError = true;\r\n $('#error').addClass('userInputError');\r\n $('#error').removeClass('hippaRestriction');\r\n } else {\r\n $('#error').removeClass('hippaRestriction');\r\n $('#error').removeClass('userInputError');\r\n }\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n complete: function () {\r\n changeBtn.classList.remove('disabled');\r\n if (inactiveUser || passwordReuseError) {\r\n return;\r\n }\r\n if (passwordChangeError) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tInvalid user name or password. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n overlay.init();\r\n $('#password1').val($('#newpassword1').val());\r\n const mainElement = document.getElementsByTagName('main')[0];\r\n const passwordChangeConfPOPUP = POPUP.build({\r\n hideX: true\r\n });\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n mainElement.removeChild(passwordChangeConfPOPUP);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(passwordChangeConfPOPUP);\r\n document.body.style.overflow = 'visible';\r\n backToLoginPage();\r\n }\r\n });\r\n okBtn.style.width = '100%';\r\n const message = document.createElement('p');\r\n message.innerText = 'Password has been changed. You may now log in with your new password.';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n passwordChangeConfPOPUP.appendChild(message);\r\n passwordChangeConfPOPUP.appendChild(okBtn);\r\n // disable scrolling\r\n bodyScrollLock.disableBodyScroll(passwordChangeConfPOPUP);\r\n // show overlay\r\n const overlayElement = document.querySelector('.overlay');\r\n overlayElement.style.zIndex = '2';\r\n passwordChangeConfPOPUP.style.zIndex = '3';\r\n passwordChangeConfPOPUP.style.top = '40%';\r\n overlay.show();\r\n mainElement.appendChild(passwordChangeConfPOPUP);\r\n // focus on ok button\r\n okBtn.focus();\r\n }\r\n });\r\n}\r\n\r\nfunction resetIt() {\r\n if ($.session.changeEmailSent) {\r\n return;\r\n }\r\n $('#resetButton').prop('disabled', true);\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/setupPasswordResetEmail/',\r\n data: '{\"userName\":\"' + $('#username3').val() + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n if (res.indexOf(null) != -1) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tPlease enter a valid username. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n if (res.indexOf('Inactive user') != -1) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tYour account is inactive. Please contact your System Administrator to enable your account. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n if (res.indexOf('No recipient') != -1) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tThere was no valid email address found for your account.\r\n\t\t\t\tPlease contact your system administrator to login to Anywhere. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n setUpPasswordResetMessages(res);\r\n $('#resetButton').prop('disabled', false);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n-----\\n' + error + '\\n-----\\n' + xhr.responseText);\r\n }\r\n });\r\n}\r\n\r\nfunction tokenCheck() {\r\n var success = false;\r\n //alert('checking token');\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/tokenCheck/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n //alert('success: ' + res);\r\n if (res.indexOf('607') > -1 || res.indexOf('606') > -1) {\r\n document.location.href = 'login.html';\r\n } else {\r\n success = true;\r\n }\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n}\r\n\r\nfunction postError(errNum, errMsg, errLvl) {\r\n var d = new Date();\r\n var curr_month = d.getMonth() + 1; //Months are zero based\r\n var strDate = d.getDate() + '-' + curr_month + '-' + d.getFullYear() + ' ' + d.getHours() + ':' + d.getMinutes();\r\n var dataString =\r\n 't=' +\r\n strDate +\r\n '&l=' +\r\n 'client' +\r\n '&u=' +\r\n $.session.Name +\r\n ' ' +\r\n $.session.LName +\r\n '&en=' +\r\n errNum +\r\n '&em=' +\r\n errMsg +\r\n '&s=' +\r\n errLvl;\r\n //$.ajax({\r\n // type: \"POST\",\r\n // url: http://anyerr.primarysolutions.net/Default.aspx, //$.webServer.anyerr,\r\n // data: dataString,\r\n // success: function() {\r\n // }\r\n //});\r\n}\r\n\r\nfunction saveDefaultLocationValueAjax(switchCase, locationId) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveDefaultLocationValue/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"switchCase\":\"' + switchCase + '\", \"locationId\":\"' + locationId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n}\r\n\r\nfunction saveDefaultLocationNameAjax(switchCase, locationName) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveDefaultLocationName/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\", \"switchCase\":\"' + switchCase + '\", \"locationName\":\"' + locationName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n}\r\n\r\nfunction updateVersionAjax() {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateVersion/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"version\":\"' + $.session.version + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n}\r\n\r\n//Infal login. Will look differently and possibly be moved. Putting here for functionality tests.\r\nfunction checkLogin() {\r\n $.ajax({\r\n type: 'POST',\r\n //url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n // \"/\" + $.webServer.serviceName + \"/getURL/\",\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/ValidateLogin/',\r\n data: '{\"id\":\"' + $('#userIDInfal').val() + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n allowAccess(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n}\r\n\r\n//Going to call on login to see if a connection for Infal exists in the webconfig\r\nfunction checkInfalConnectionAjax(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/CheckInfalConnection/',\r\n data: '{}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n if (response.CheckInfalConnectionResult == 'Connection') {\r\n $.session.infalHasConnectionString = true;\r\n }\r\n if ($.session.infalOnly) {\r\n dashboard.load();\r\n }\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n}\r\n\r\n//Gets user permissions pertaining to what modules they can see.\r\nfunction getUserPermissions(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getUserPermissions/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n\r\n $.session.permissionString = response.getUserPermissionsResult;\r\n\r\n const caseNotesPerm = $.session.permissionString.find(obj => obj.window_name === 'EnableCaseNotes');\r\n const supervisorPerm = $.session.permissionString.find(obj => obj.window_name === 'Supervisor');\r\n const docTimePerm = $.session.permissionString.find(obj => obj.window_name === 'UpdateDocTime');\r\n const caseNoteDocTimePerm = $.session.permissionString.find(obj => obj.window_name === 'Anywhere Case Notes');\r\n const adminSEPerm = $.session.permissionString.find(obj => obj.window_name === 'SESupervisorApprove');\r\n\r\n $.session.CaseNotesTablePermissionView = caseNotesPerm && caseNotesPerm.permission === 'Y' ? true : false;\r\n $.session.ViewAdminSingleEntry = supervisorPerm && supervisorPerm.permission === 'Y' ? true : false;\r\n $.session.UpdateCaseNotesDocTime =\r\n docTimePerm &&\r\n caseNoteDocTimePerm &&\r\n docTimePerm.permission === 'Update Doc Time' &&\r\n caseNoteDocTimePerm.permission === 'Update Doc Time'\r\n ? true\r\n : false;\r\n $.session.SEViewAdminWidget = adminSEPerm && adminSEPerm.permission === 'Y' ? true : false;\r\n\r\n setSessionVariables();\r\n\r\n //check to see which modules should be disabled\r\n checkModulePermissions();\r\n\r\n if (callback) callback();\r\n\r\n $('#userName').text($.session.Name);\r\n $('#firstName').text($.session.Name);\r\n $('#lastName').text($.session.LName);\r\n },\r\n });\r\n}\r\n\r\nfunction featureLogging(appName) {\r\n if (appName != 'roster') {\r\n var featureDescription = 'Anywhere ' + appName;\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/featureLogging/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"featureDescription\":\"' + featureDescription + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n}\r\n\r\nfunction getDefaultAnywhereSettings() {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDefaultAnywhereSettingsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n res = response.getDefaultAnywhereSettingsJSONResult;\r\n res = res[0];\r\n\r\n $.session.anAdmin = res.admistrator;\r\n $.session.defaultCaseNoteReviewDays = res.setting_value === '' ? '7' : res.setting_value;\r\n $.session.defaultProgressNoteReviewDays = res.notes_days_back === '' ? '99' : res.notes_days_back;\r\n $.session.defaultIncidentTrackingDaysBack =\r\n res.incidentTracking_days_back === '' ? '7' : res.incidentTracking_days_back;\r\n $.session.defaultProgressNoteChecklistReviewDays = res.checklist_days_back === '' ? '7' : res.checklist_days_back;\r\n $.session.anywhereMinutestotimeout = res.minutesToTimeout === '' ? '15' : res.minutesToTimeout;\r\n $.session.removeGoalsWidget = res.removeGoalsWidget === 'Y' ? true : false;\r\n $.session.seAdminRemoveMap = res.removeSEAdminMap === 'Y' ? true : false;\r\n $.session.isASupervisor = res.isASupervisor === '' ? false : true;\r\n $.session.sttEnabled = res.sttEnabled === 'Y' ? true : false;\r\n $.session.watchingConnection = '';\r\n $.session.azureSTTApi = res.azureSttApi;\r\n $.session.reportSeconds = res.reportSeconds;\r\n $.session.incidentTrackingPopulateIncidentDate = res.incidentTrackingPopulateIncidentDate;\r\n $.session.incidentTrackingPopulateIncidentTime = res.incidentTrackingPopulateIncidentTime;\r\n $.session.incidentTrackingPopulateReportedDate = res.incidentTrackingPopulateReportedDate;\r\n $.session.incidentTrackingPopulateReportedTime = res.incidentTrackingPopulateReportedTime;\r\n\r\n $.session.incidentTrackingShowCauseAndContributingFactors =\r\n res.incidentTrackingShowCauseAndContributingFactors === 'Y' ? true : false;\r\n $.session.incidentTrackingShowPreventionPlan = res.incidentTrackingShowPreventionPlan === 'Y' ? true : false;\r\n\r\n $.session.updateIncidentSummaryText = res.appendITSummary === 'Y' ? true : false;\r\n $.session.updateIncidentActionText = res.appendITImmediateAction === 'Y' ? true : false;\r\n $.session.updateIncidentPreventionText = res.appendITPreventionPlan === 'Y' ? true : false;\r\n $.session.updateIncidentCauseText = res.appendITCause === 'Y' ? true : false;\r\n $.session.planFormCarryover = res.planFormCarryover === 'Y' ? true : false;\r\n //Waiting List\r\n $.session.sendWaitingListEmail = true;// res.sendWaitingListEmail === 'Y' ? true : false;\r\n //Hide stuff\r\n $.session.useAbsentFeature = res.useAbsentFeature;\r\n $.session.billableTransportation = res.billableTransportation;\r\n $.session.requireTimeEntryTransportationTimes = res.requireTimeEntryTransportationTimes;\r\n $.session.ohioEVVChangeDate = res.ohioEVVChangeDate; \r\n $.session.anyRequireEndTime = res.anyRequireEndTime;\r\n $.session.useProgressNotes = res.useProgressNotes;\r\n $.session.applicationName = res.application;\r\n $.session.portraitPath = res.portraitPath;\r\n $.session.anywhereMainPermission = res.anywhereMainPermission;\r\n $.session.outcomesPermission = res.outcomesPermission;\r\n $.session.dayServicesPermission = res.dayServicesPermission;\r\n $.session.caseNotesPermission = res.caseNotesPermission;\r\n $.session.incidentTrackingPermission = res.incidentTrackingPermission;\r\n $.session.singleEntryPermission = res.singleEntryPermission;\r\n $.session.workshopPermission = res.workshopPermission;\r\n $.session.intellivuePermission = res.intellivuePermission;\r\n $.session.schedulingPermission = res.schedulingPermission;\r\n $.session.anywhereSchedulingPermission = res.anywhereSchedulingPermission;\r\n $.session.covidPermission = res.covidPermission;\r\n $.session.webPermission = res.webPermission; //Should be set equal to Web when true\r\n $.session.transportationPermission = res.transportationPermission;\r\n $.session.emarPermission = res.emarPermission;\r\n $.session.formsPermission = res.formsPermission;\r\n $.session.OODPermission = res.OODPermission;\r\n // TODO: ASH\r\n //$.session.anywhereAuthorizationsPermission = res.anywhereAuthorizationsPermission;\r\n $.session.anywherePlanPermission = res.anywherePlanPermission;\r\n $.session.singleEntryApproveEnabled = res.singleEntryApproveEnabled;\r\n $.session.singleEntryLocationRequired = res.singleEntryLocationRequired;\r\n $.session.singleEntryShowConsumerSignature = res.seShowConsumerSignature;\r\n $.session.singleEntryShowConsumerNote = res.seShowConsumerNote;\r\n $.session.singleEntryShowTransportation = res.seShowTransportation;\r\n $.session.schedAllowCallOffRequests = res.allowCallOffRequests;\r\n $.session.schedRequestOpenShifts = res.requestOpenShifts;\r\n $.session.oneSpan = res.oneSpan;\r\n\r\n $.session.anywhereResetPasswordPermission = res.anywhereResetPasswordPermission;\r\n $.session.anywhereConsumerFinancesPermission = res.anywhereConsumerFinancesPermission;\r\n $.session.anywhereEmploymentPermission = res.anywhereEmploymentPermission;\r\n $.session.anywhereFSSPermission = res.anywhereFSSPermission; \r\n //Default Work\r\n //.session.\r\n $.session.defaultRosterLocation = res.defaultrosterlocation;\r\n $.session.defaultRosterLocationName = res.defaultrosterlocationname;\r\n $.session.defaultRosterGroupValue = res.defaultrostergroup;\r\n $.session.defaultDayServiceLocation =\r\n res.defaultdayservicelocation === 'notDSCertified' ? '' : res.defaultdayservicelocation;\r\n $.session.defaultDayServiceLocationName = res.defaultdayservicelocationname;\r\n $.session.dsCertified = res.defaulttimeclocklocation === 'notDSCertified' ? false : true;\r\n $.session.defaultDSTimeClockValue = res.defaulttimeclocklocation;\r\n $.session.defaultDSTimeClockName = res.defaulttimeclocklocationName;\r\n $.session.defaultWorkshopLocationValue = res.defaultworkshoplocation;\r\n $.session.defaultWorkshopLocation = res.defaultworkshoplocationname;\r\n $.session.defaultMoneyManagementLocationValue = res.defaultMoneyManagementLocation;\r\n $.session.defaultMoneyManagementLocation = res.defaultMoneyManagementLocationName; \r\n //$.session.defaultDSTimeClockName = res.defaulttimeclocklocationname;\r\n //database state - Indiana or Ohio\r\n $.session.stateAbbreviation = res.stateAbbreviation;\r\n //Set session peopleId for use in ADV Plan\r\n $.session.planPeopleId = res.planPeopleId;\r\n $.session.RequireViewPlan = res.RequireViewPlan === 'Y' ? true : false;\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n $.session.caseNotesWarningStartTime = res.warningStartTime;\r\n $.session.caseNotesWarningEndTime = res.warningEndTime;\r\n }\r\n\r\n /////////\r\n defaultRosterLocationValue = res.defaultrosterlocation;\r\n defaultRosterLocationName = res.defaultrosterlocationname;\r\n defaultDayServiceLocationValue = res.defaultdayservicelocation;\r\n defaultDayServiceLocationName = res.defaultdayservicelocationname;\r\n defaultTimeClockLocationValue = res.defaulttimeclocklocation;\r\n defaultTimeClockLocationName = res.defaulttimeclocklocationname;\r\n defaultWorkshopLocationValue = res.defaultworkshoplocation;\r\n defaultWorkshopLocationName = res.defaultworkshoplocationname;\r\n defaultRosterGroupValue = res.defaultrostergroup;\r\n defaultRosterGroupName = res.defaultrostergroupname;\r\n $.session.defaultWorkshopLocation = defaultWorkshopLocationName;\r\n\r\n //setDefaultCookies(\r\n //\tdefaultRosterLocationValue,\r\n //\tdefaultRosterLocationName,\r\n //\tdefaultDayServiceLocationValue,\r\n //\tdefaultDayServiceLocationName,\r\n //\tdefaultTimeClockLocationValue,\r\n //\tdefaultTimeClockLocationName,\r\n //\tdefaultWorkshopLocationValue,\r\n //\tdefaultWorkshopLocationName,\r\n //\tdefaultRosterGroupValue,\r\n //\tdefaultRosterGroupName\r\n //);\r\n\r\n $('#casenotesdaysback').val($.session.defaultCaseNoteReviewDays);\r\n $('#progressnotesdaysback').val($.session.defaultProgressNoteReviewDays);\r\n $('#progressnoteschecklistdaysback').val($.session.defaultProgressNoteChecklistReviewDays);\r\n $('#incidenttrackingdaysback').val($.session.defaultIncidentTrackingDaysBack);\r\n\r\n disableModules();\r\n loadApp('home');\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n}\r\n\r\n//function setDefaultCookies(\r\n//\tdefaultRosterLocationValue,\r\n//\tdefaultRosterLocationName,\r\n//\tdefaultDayServiceLocationValue,\r\n//\tdefaultDayServiceLocationName,\r\n//\tdefaultTimeClockLocationValue,\r\n//\tdefaultTimeClockLocationName,\r\n//\tdefaultWorkshopLocationValue,\r\n//\tdefaultWorkshopLocationName,\r\n//\tdefaultRosterGroupValue,\r\n//\tdefaultRosterGroupName\r\n//) {\r\n//\tcreateCookie('defaultDayServiceLocation', defaultDayServiceLocationValue, 7);\r\n//\tcreateCookie('defaultDayServiceLocationName', defaultDayServiceLocationName, 7);\r\n//\tcreateCookie('defaultDayServiceLocationNameValue', defaultDayServiceLocationValue, 7);\r\n\r\n//\tif (defaultDayServiceLocationName == 'Remember Last Location') {\r\n//\t\tcreateCookie('defaultDayServiceLocationFlag', true, 7);\r\n//\t} else {\r\n//\t\tcreateCookie('defaultDayServiceLocationFlag', false, 7);\r\n//\t}\r\n\r\n//\tcreateCookie('defaultRosterLocation', defaultRosterLocationValue, 7);\r\n//\tcreateCookie('defaultRosterLocationName', defaultRosterLocationName, 7);\r\n\r\n//\tif (defaultRosterLocationName == 'Remember Last Location') {\r\n//\t\tcreateCookie('defaultRosterLocationFlag', true, 7);\r\n//\t} else {\r\n//\t\tcreateCookie('defaultRosterLocationFlag', false, 7);\r\n//\t}\r\n\r\n//\tif (defaultWorkshopLocationName == 'Remember Last Location') {\r\n//\t\tcreateCookie('defaultWorkshopLocationFlag', true, 7);\r\n//\t} else {\r\n//\t\tcreateCookie('defaultWorkshopLocationFlag', false, 7);\r\n//\t}\r\n\r\n//\tcreateCookie('defaultTimeClockLocationName', defaultTimeClockLocationName, 7);\r\n//\tcreateCookie('defaultTimeClockLocationValue', defaultTimeClockLocationValue, 7);\r\n//\tcreateCookie('defaultWorkshopLocationName', defaultWorkshopLocationName, 7);\r\n//\tcreateCookie('defaultWorkshopLocationValue', defaultWorkshopLocationValue, 7);\r\n//\tcreateCookie('defaultRosterGroupName', defaultRosterGroupName, 7);\r\n//\tcreateCookie('defaultRosterGroupValue', defaultRosterGroupValue, 7);\r\n//}\r\n\r\nfunction authenticatedLogin(key) {\r\n //insertData must userName and genKey\r\n const insertData = {\r\n userName: $('#username').val().trim(),\r\n genKey: key,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/authenticatedLogin/',\r\n data: JSON.stringify(insertData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n if (\r\n response.authenticatedLoginResult === 'Invalid key' ||\r\n response.authenticatedLoginResult === 'Too many failed attempts' ||\r\n response.authenticatedLoginResult === 'Expired key'\r\n ) {\r\n mfa.mfaReject(response.authenticatedLoginResult);\r\n return;\r\n }\r\n var res = JSON.stringify(response);\r\n eraseCookie('psiuser');\r\n if ($('permissions', res).is('*') && $('#username').val().toUpperCase() == 'PSI') {\r\n $.session.isPSI = true;\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n createCookie('psiuser', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n } else if ($('permissions', res).is('*') && checkforErrors(res) == 0) {\r\n UTIL.LS.setStorage('device', $.session.deviceGUID, $('#username').val());\r\n $.session.deviceGUID = '';\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n } else if (res.indexOf('609') > -1) {\r\n customPasswordChange();\r\n } else {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n if ($('#error').hasClass('hippaRestriction')) {\r\n $('#errortext').text('Password cannot match a recently used password');\r\n } else if ($('#error').hasClass('userInputError')) {\r\n $('#errortext').text('Invalid username or password');\r\n } else if (res.indexOf('608') > -1) {\r\n $('#errortext').text('This user name does not exist in demographics.');\r\n } else {\r\n $('#errortext').text('Login unsuccessful');\r\n }\r\n }\r\n },\r\n error: function (xhr, status, error) {},\r\n complete: function () {\r\n // hide gif here, eg:\r\n $('body').css('cursor', 'auto');\r\n },\r\n });\r\n}\r\n","/*!\r\n * Chart.js v2.9.3\r\n * https://www.chartjs.org\r\n * (c) 2019 Chart.js Contributors\r\n * Released under the MIT License\r\n */\r\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(function(){try{return require(\"moment\")}catch(t){}}()):\"function\"==typeof define&&define.amd?define([\"require\"],(function(t){return e(function(){try{return t(\"moment\")}catch(t){}}())})):(t=t||self).Chart=e(t.moment)}(this,(function(t){\"use strict\";t=t&&t.hasOwnProperty(\"default\")?t.default:t;var e={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},n=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t){var n={};for(var i in e)e.hasOwnProperty(i)&&(n[e[i]]=i);var a=t.exports={rgb:{channels:3,labels:\"rgb\"},hsl:{channels:3,labels:\"hsl\"},hsv:{channels:3,labels:\"hsv\"},hwb:{channels:3,labels:\"hwb\"},cmyk:{channels:4,labels:\"cmyk\"},xyz:{channels:3,labels:\"xyz\"},lab:{channels:3,labels:\"lab\"},lch:{channels:3,labels:\"lch\"},hex:{channels:1,labels:[\"hex\"]},keyword:{channels:1,labels:[\"keyword\"]},ansi16:{channels:1,labels:[\"ansi16\"]},ansi256:{channels:1,labels:[\"ansi256\"]},hcg:{channels:3,labels:[\"h\",\"c\",\"g\"]},apple:{channels:3,labels:[\"r16\",\"g16\",\"b16\"]},gray:{channels:1,labels:[\"gray\"]}};for(var r in a)if(a.hasOwnProperty(r)){if(!(\"channels\"in a[r]))throw new Error(\"missing channels property: \"+r);if(!(\"labels\"in a[r]))throw new Error(\"missing channel labels property: \"+r);if(a[r].labels.length!==a[r].channels)throw new Error(\"channel and label counts mismatch: \"+r);var o=a[r].channels,s=a[r].labels;delete a[r].channels,delete a[r].labels,Object.defineProperty(a[r],\"channels\",{value:o}),Object.defineProperty(a[r],\"labels\",{value:s})}a.rgb.hsl=function(t){var e,n,i=t[0]/255,a=t[1]/255,r=t[2]/255,o=Math.min(i,a,r),s=Math.max(i,a,r),l=s-o;return s===o?e=0:i===s?e=(a-r)/l:a===s?e=2+(r-i)/l:r===s&&(e=4+(i-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+s)/2,[e,100*(s===o?0:n<=.5?l/(s+o):l/(2-s-o)),100*n]},a.rgb.hsv=function(t){var e,n,i,a,r,o=t[0]/255,s=t[1]/255,l=t[2]/255,u=Math.max(o,s,l),d=u-Math.min(o,s,l),h=function(t){return(u-t)/6/d+.5};return 0===d?a=r=0:(r=d/u,e=h(o),n=h(s),i=h(l),o===u?a=i-n:s===u?a=1/3+e-i:l===u&&(a=2/3+n-e),a<0?a+=1:a>1&&(a-=1)),[360*a,100*r,100*u]},a.rgb.hwb=function(t){var e=t[0],n=t[1],i=t[2];return[a.rgb.hsl(t)[0],100*(1/255*Math.min(e,Math.min(n,i))),100*(i=1-1/255*Math.max(e,Math.max(n,i)))]},a.rgb.cmyk=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-i,1-a)))/(1-e)||0),100*((1-i-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]},a.rgb.keyword=function(t){var i=n[t];if(i)return i;var a,r,o,s=1/0;for(var l in e)if(e.hasOwnProperty(l)){var u=e[l],d=(r=t,o=u,Math.pow(r[0]-o[0],2)+Math.pow(r[1]-o[1],2)+Math.pow(r[2]-o[2],2));d.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]},a.rgb.lab=function(t){var e=a.rgb.xyz(t),n=e[0],i=e[1],r=e[2];return i/=100,r/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},a.hsl.rgb=function(t){var e,n,i,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[r=255*l,r,r];e=2*l-(n=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(i=o+1/3*-(u-1))<0&&i++,i>1&&i--,r=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*r;return a},a.hsl.hsv=function(t){var e=t[0],n=t[1]/100,i=t[2]/100,a=n,r=Math.max(i,.01);return n*=(i*=2)<=1?i:2-i,a*=r<=1?r:2-r,[e,100*(0===i?2*a/(r+a):2*n/(i+n)),100*((i+n)/2)]},a.hsv.rgb=function(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*i*(1-n),s=255*i*(1-n*r),l=255*i*(1-n*(1-r));switch(i*=255,a){case 0:return[i,l,o];case 1:return[s,i,o];case 2:return[o,i,l];case 3:return[o,s,i];case 4:return[l,o,i];case 5:return[i,o,s]}},a.hsv.hsl=function(t){var e,n,i,a=t[0],r=t[1]/100,o=t[2]/100,s=Math.max(o,.01);return i=(2-r)*o,n=r*s,[a,100*(n=(n/=(e=(2-r)*s)<=1?e:2-e)||0),100*(i/=2)]},a.hwb.rgb=function(t){var e,n,i,a,r,o,s,l=t[0]/360,u=t[1]/100,d=t[2]/100,h=u+d;switch(h>1&&(u/=h,d/=h),i=6*l-(e=Math.floor(6*l)),0!=(1&e)&&(i=1-i),a=u+i*((n=1-d)-u),e){default:case 6:case 0:r=n,o=a,s=u;break;case 1:r=a,o=n,s=u;break;case 2:r=u,o=n,s=a;break;case 3:r=u,o=a,s=n;break;case 4:r=a,o=u,s=n;break;case 5:r=n,o=u,s=a}return[255*r,255*o,255*s]},a.cmyk.rgb=function(t){var e=t[0]/100,n=t[1]/100,i=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a))]},a.xyz.rgb=function(t){var e,n,i,a=t[0]/100,r=t[1]/100,o=t[2]/100;return n=-.9689*a+1.8758*r+.0415*o,i=.0557*a+-.204*r+1.057*o,e=(e=3.2406*a+-1.5372*r+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:12.92*i,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(i=Math.min(Math.max(0,i),1))]},a.xyz.lab=function(t){var e=t[0],n=t[1],i=t[2];return n/=100,i/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]},a.lab.xyz=function(t){var e,n,i,a=t[0];e=t[1]/500+(n=(a+16)/116),i=n-t[2]/200;var r=Math.pow(n,3),o=Math.pow(e,3),s=Math.pow(i,3);return n=r>.008856?r:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,i=s>.008856?s:(i-16/116)/7.787,[e*=95.047,n*=100,i*=108.883]},a.lab.lch=function(t){var e,n=t[0],i=t[1],a=t[2];return(e=360*Math.atan2(a,i)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(i*i+a*a),e]},a.lch.lab=function(t){var e,n=t[0],i=t[1];return e=t[2]/360*2*Math.PI,[n,i*Math.cos(e),i*Math.sin(e)]},a.rgb.ansi16=function(t){var e=t[0],n=t[1],i=t[2],r=1 in arguments?arguments[1]:a.rgb.hsv(t)[2];if(0===(r=Math.round(r/50)))return 30;var o=30+(Math.round(i/255)<<2|Math.round(n/255)<<1|Math.round(e/255));return 2===r&&(o+=60),o},a.hsv.ansi16=function(t){return a.rgb.ansi16(a.hsv.rgb(t),t[2])},a.rgb.ansi256=function(t){var e=t[0],n=t[1],i=t[2];return e===n&&n===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(i/255*5)},a.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},a.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var n;return t-=16,[Math.floor(t/36)/5*255,Math.floor((n=t%36)/6)/5*255,n%6/5*255]},a.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return\"000000\".substring(e.length)+e},a.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var n=e[0];3===e[0].length&&(n=n.split(\"\").map((function(t){return t+t})).join(\"\"));var i=parseInt(n,16);return[i>>16&255,i>>8&255,255&i]},a.rgb.hcg=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255,r=Math.max(Math.max(n,i),a),o=Math.min(Math.min(n,i),a),s=r-o;return e=s<=0?0:r===n?(i-a)/s%6:r===i?2+(a-n)/s:4+(n-i)/s+4,e/=6,[360*(e%=1),100*s,100*(s<1?o/(1-s):0)]},a.hsl.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=1,a=0;return(i=n<.5?2*e*n:2*e*(1-n))<1&&(a=(n-.5*i)/(1-i)),[t[0],100*i,100*a]},a.hsv.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=e*n,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.hcg.rgb=function(t){var e=t[0]/360,n=t[1]/100,i=t[2]/100;if(0===n)return[255*i,255*i,255*i];var a,r=[0,0,0],o=e%1*6,s=o%1,l=1-s;switch(Math.floor(o)){case 0:r[0]=1,r[1]=s,r[2]=0;break;case 1:r[0]=l,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=s;break;case 3:r[0]=0,r[1]=l,r[2]=1;break;case 4:r[0]=s,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=l}return a=(1-n)*i,[255*(n*r[0]+a),255*(n*r[1]+a),255*(n*r[2]+a)]},a.hcg.hsv=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e),i=0;return n>0&&(i=e/n),[t[0],100*i,100*n]},a.hcg.hsl=function(t){var e=t[1]/100,n=t[2]/100*(1-e)+.5*e,i=0;return n>0&&n<.5?i=e/(2*n):n>=.5&&n<1&&(i=e/(2*(1-n))),[t[0],100*i,100*n]},a.hcg.hwb=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},a.hwb.hcg=function(t){var e=t[1]/100,n=1-t[2]/100,i=n-e,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},a.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},a.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},a.gray.hsl=a.gray.hsv=function(t){return[0,0,t[0]]},a.gray.hwb=function(t){return[0,100,t[0]]},a.gray.cmyk=function(t){return[0,0,0,t[0]]},a.gray.lab=function(t){return[t[0],0,0]},a.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return\"000000\".substring(n.length)+n},a.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}}));n.rgb,n.hsl,n.hsv,n.hwb,n.cmyk,n.xyz,n.lab,n.lch,n.hex,n.keyword,n.ansi16,n.ansi256,n.hcg,n.apple,n.gray;function i(t){var e=function(){for(var t={},e=Object.keys(n),i=e.length,a=0;a1&&(e=Array.prototype.slice.call(arguments));var n=t(e);if(\"object\"==typeof n)for(var i=n.length,a=0;a1&&(e=Array.prototype.slice.call(arguments)),t(e))};return\"conversion\"in t&&(e.conversion=t.conversion),e}(i)}))}));var s=o,l={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},u={getRgba:d,getHsla:h,getRgb:function(t){var e=d(t);return e&&e.slice(0,3)},getHsl:function(t){var e=h(t);return e&&e.slice(0,3)},getHwb:c,getAlpha:function(t){var e=d(t);if(e)return e[3];if(e=h(t))return e[3];if(e=c(t))return e[3]},hexString:function(t,e){e=void 0!==e&&3===t.length?e:t[3];return\"#\"+v(t[0])+v(t[1])+v(t[2])+(e>=0&&e<1?v(Math.round(255*e)):\"\")},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return f(t,e);return\"rgb(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\")\"},rgbaString:f,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return g(t,e);var n=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return\"rgb(\"+n+\"%, \"+i+\"%, \"+a+\"%)\"},percentaString:g,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return p(t,e);return\"hsl(\"+t[0]+\", \"+t[1]+\"%, \"+t[2]+\"%)\"},hslaString:p,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return\"hwb(\"+t[0]+\", \"+t[1]+\"%, \"+t[2]+\"%\"+(void 0!==e&&1!==e?\", \"+e:\"\")+\")\"},keyword:function(t){return b[t.slice(0,3)]}};function d(t){if(t){var e=[0,0,0],n=1,i=t.match(/^#([a-fA-F0-9]{3,4})$/i),a=\"\";if(i){a=(i=i[1])[3];for(var r=0;rn?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?\"AAA\":e>=4.5?\"AA\":\"\"},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues(\"rgb\",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues(\"hsl\",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues(\"hsl\",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues(\"hsl\",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues(\"hsl\",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues(\"hwb\",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues(\"hwb\",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues(\"rgb\",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues(\"alpha\",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues(\"alpha\",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues(\"hsl\",e),this},mix:function(t,e){var n=t,i=void 0===e?.5:e,a=2*i-1,r=this.alpha()-n.alpha(),o=((a*r==-1?a:(a+r)/(1+a*r))+1)/2,s=1-o;return this.rgb(o*this.red()+s*n.red(),o*this.green()+s*n.green(),o*this.blue()+s*n.blue()).alpha(this.alpha()*i+n.alpha()*(1-i))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new y,i=this.values,a=n.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],\"[object Array]\"===(e={}.toString.call(t))?a[r]=t.slice(0):\"[object Number]\"===e?a[r]=t:console.error(\"unexpected color value:\",t));return n}},y.prototype.spaces={rgb:[\"red\",\"green\",\"blue\"],hsl:[\"hue\",\"saturation\",\"lightness\"],hsv:[\"hue\",\"saturation\",\"value\"],hwb:[\"hue\",\"whiteness\",\"blackness\"],cmyk:[\"cyan\",\"magenta\",\"yellow\",\"black\"]},y.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},y.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i=0;a--)e.call(n,t[a],a);else for(a=0;a=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-S.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*S.easeInBounce(2*t):.5*S.easeOutBounce(2*t-1)+.5}},C={effects:S};M.easingEffects=S;var P=Math.PI,A=P/180,D=2*P,T=P/2,I=P/4,F=2*P/3,L={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,r){if(r){var o=Math.min(r,a/2,i/2),s=e+o,l=n+o,u=e+i-o,d=n+a-o;t.moveTo(e,l),se.left-1e-6&&t.xe.top-1e-6&&t.y0&&this.requestAnimationFrame()},advance:function(){for(var t,e,n,i,a=this.animations,r=0;r=n?(V.callback(t.onAnimationComplete,[t],e),e.animating=!1,a.splice(r,1)):++r}},J=V.options.resolve,Q=[\"push\",\"pop\",\"shift\",\"splice\",\"unshift\"];function tt(t,e){var n=t._chartjs;if(n){var i=n.listeners,a=i.indexOf(e);-1!==a&&i.splice(a,1),i.length>0||(Q.forEach((function(e){delete t[e]})),delete t._chartjs)}}var et=function(t,e){this.initialize(t,e)};V.extend(et.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:[\"backgroundColor\",\"borderCapStyle\",\"borderColor\",\"borderDash\",\"borderDashOffset\",\"borderJoinStyle\",\"borderWidth\"],_dataElementOptions:[\"backgroundColor\",\"borderColor\",\"borderWidth\",\"pointStyle\"],initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements(),n._type=n.getMeta().type},updateIndex:function(t){this.index=t},linkScales:function(){var t=this.getMeta(),e=this.chart,n=e.scales,i=this.getDataset(),a=e.options.scales;null!==t.xAxisID&&t.xAxisID in n&&!i.xAxisID||(t.xAxisID=i.xAxisID||a.xAxes[0].id),null!==t.yAxisID&&t.yAxisID in n&&!i.yAxisID||(t.yAxisID=i.yAxisID||a.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&tt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),i=this.getDataset().data||[],a=n.data;for(t=0,e=i.length;tn&&this.insertElements(n,i-n)},insertElements:function(t,e){for(var n=0;na?(r=a/e.innerRadius,t.arc(o,s,e.innerRadius-a,i+r,n-r,!0)):t.arc(o,s,a,i+Math.PI/2,n-Math.PI/2),t.closePath(),t.clip()}function rt(t,e,n){var i=\"inner\"===e.borderAlign;i?(t.lineWidth=2*e.borderWidth,t.lineJoin=\"round\"):(t.lineWidth=e.borderWidth,t.lineJoin=\"bevel\"),n.fullCircles&&function(t,e,n,i){var a,r=n.endAngle;for(i&&(n.endAngle=n.startAngle+it,at(t,n),n.endAngle=r,n.endAngle===n.startAngle&&n.fullCircles&&(n.endAngle+=it,n.fullCircles--)),t.beginPath(),t.arc(n.x,n.y,n.innerRadius,n.startAngle+it,n.startAngle,!0),a=0;as;)a-=it;for(;a=o&&a<=s,u=r>=n.innerRadius&&r<=n.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t,e=this._chart.ctx,n=this._view,i=\"inner\"===n.borderAlign?.33:0,a={x:n.x,y:n.y,innerRadius:n.innerRadius,outerRadius:Math.max(n.outerRadius-i,0),pixelMargin:i,startAngle:n.startAngle,endAngle:n.endAngle,fullCircles:Math.floor(n.circumference/it)};if(e.save(),e.fillStyle=n.backgroundColor,e.strokeStyle=n.borderColor,a.fullCircles){for(a.endAngle=a.startAngle+it,e.beginPath(),e.arc(a.x,a.y,a.outerRadius,a.startAngle,a.endAngle),e.arc(a.x,a.y,a.innerRadius,a.endAngle,a.startAngle,!0),e.closePath(),t=0;tt.x&&(e=vt(e,\"left\",\"right\")):t.basen?n:i,r:l.right||a<0?0:a>e?e:a,b:l.bottom||r<0?0:r>n?n:r,l:l.left||o<0?0:o>e?e:o}}function xt(t,e,n){var i=null===e,a=null===n,r=!(!t||i&&a)&&mt(t);return r&&(i||e>=r.left&&e<=r.right)&&(a||n>=r.top&&n<=r.bottom)}z._set(\"global\",{elements:{rectangle:{backgroundColor:gt,borderColor:gt,borderSkipped:\"bottom\",borderWidth:0}}});var yt=X.extend({_type:\"rectangle\",draw:function(){var t=this._chart.ctx,e=this._view,n=function(t){var e=mt(t),n=e.right-e.left,i=e.bottom-e.top,a=bt(t,n/2,i/2);return{outer:{x:e.left,y:e.top,w:n,h:i},inner:{x:e.left+a.l,y:e.top+a.t,w:n-a.l-a.r,h:i-a.t-a.b}}}(e),i=n.outer,a=n.inner;t.fillStyle=e.backgroundColor,t.fillRect(i.x,i.y,i.w,i.h),i.w===a.w&&i.h===a.h||(t.save(),t.beginPath(),t.rect(i.x,i.y,i.w,i.h),t.clip(),t.fillStyle=e.borderColor,t.rect(a.x,a.y,a.w,a.h),t.fill(\"evenodd\"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return xt(this._view,t,e)},inLabelRange:function(t,e){var n=this._view;return pt(n)?xt(n,t,null):xt(n,null,e)},inXRange:function(t){return xt(this._view,t,null)},inYRange:function(t){return xt(this._view,null,t)},getCenterPoint:function(){var t,e,n=this._view;return pt(n)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return pt(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),_t={},kt=ot,wt=ut,Mt=ft,St=yt;_t.Arc=kt,_t.Line=wt,_t.Point=Mt,_t.Rectangle=St;var Ct=V._deprecated,Pt=V.valueOrDefault;function At(t,e,n){var i,a,r=n.barThickness,o=e.stackCount,s=e.pixels[t],l=V.isNullOrUndef(r)?function(t,e){var n,i,a,r,o=t._length;for(a=1,r=e.length;a0?Math.min(o,Math.abs(i-n)):o,n=i;return o}(e.scale,e.pixels):-1;return V.isNullOrUndef(r)?(i=l*n.categoryPercentage,a=n.barPercentage):(i=r*o,a=1),{chunk:i/o,ratio:a,start:s-i/2}}z._set(\"bar\",{hover:{mode:\"label\"},scales:{xAxes:[{type:\"category\",offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:\"linear\"}]}}),z._set(\"global\",{datasets:{bar:{categoryPercentage:.8,barPercentage:.9}}});var Dt=nt.extend({dataElementType:_t.Rectangle,_dataElementOptions:[\"backgroundColor\",\"borderColor\",\"borderSkipped\",\"borderWidth\",\"barPercentage\",\"barThickness\",\"categoryPercentage\",\"maxBarThickness\",\"minBarLength\"],initialize:function(){var t,e,n=this;nt.prototype.initialize.apply(n,arguments),(t=n.getMeta()).stack=n.getDataset().stack,t.bar=!0,e=n._getIndexScale().options,Ct(\"bar chart\",e.barPercentage,\"scales.[x/y]Axes.barPercentage\",\"dataset.barPercentage\"),Ct(\"bar chart\",e.barThickness,\"scales.[x/y]Axes.barThickness\",\"dataset.barThickness\"),Ct(\"bar chart\",e.categoryPercentage,\"scales.[x/y]Axes.categoryPercentage\",\"dataset.categoryPercentage\"),Ct(\"bar chart\",n._getValueScale().options.minBarLength,\"scales.[x/y]Axes.minBarLength\",\"dataset.minBarLength\"),Ct(\"bar chart\",e.maxBarThickness,\"scales.[x/y]Axes.maxBarThickness\",\"dataset.maxBarThickness\")},update:function(t){var e,n,i=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=i.length;e=0&&p.min>=0?p.min:p.max,y=void 0===p.start?p.end:p.max>=0&&p.min>=0?p.max-p.min:p.min-p.max,_=g.length;if(v||void 0===v&&void 0!==b)for(i=0;i<_&&(a=g[i]).index!==t;++i)a.stack===b&&(r=void 0===(u=h._parseValue(f[a.index].data[e])).start?u.end:u.min>=0&&u.max>=0?u.max:u.min,(p.min<0&&r<0||p.max>=0&&r>0)&&(x+=r));return o=h.getPixelForValue(x),l=(s=h.getPixelForValue(x+y))-o,void 0!==m&&Math.abs(l)=0&&!c||y<0&&c?o-m:o+m),{size:l,base:o,head:s,center:s+l/2}},calculateBarIndexPixels:function(t,e,n,i){var a=\"flex\"===i.barThickness?function(t,e,n){var i,a=e.pixels,r=a[t],o=t>0?a[t-1]:null,s=t=Ot?-Rt:b<-Ot?Rt:0)+m,y=Math.cos(b),_=Math.sin(b),k=Math.cos(x),w=Math.sin(x),M=b<=0&&x>=0||x>=Rt,S=b<=zt&&x>=zt||x>=Rt+zt,C=b<=-zt&&x>=-zt||x>=Ot+zt,P=b===-Ot||x>=Ot?-1:Math.min(y,y*p,k,k*p),A=C?-1:Math.min(_,_*p,w,w*p),D=M?1:Math.max(y,y*p,k,k*p),T=S?1:Math.max(_,_*p,w,w*p);u=(D-P)/2,d=(T-A)/2,h=-(D+P)/2,c=-(T+A)/2}for(i=0,a=g.length;i0&&!isNaN(t)?Rt*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,n,i,a,r,o,s,l,u=0,d=this.chart;if(!t)for(e=0,n=d.data.datasets.length;e(u=s>u?s:u)?l:u);return u},setHoverStyle:function(t){var e=t._model,n=t._options,i=V.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Lt(n.hoverBackgroundColor,i(n.backgroundColor)),e.borderColor=Lt(n.hoverBorderColor,i(n.borderColor)),e.borderWidth=Lt(n.hoverBorderWidth,n.borderWidth)},_getRingWeightOffset:function(t){for(var e=0,n=0;n0&&Vt(l[t-1]._model,s)&&(n.controlPointPreviousX=u(n.controlPointPreviousX,s.left,s.right),n.controlPointPreviousY=u(n.controlPointPreviousY,s.top,s.bottom)),t0&&(r=t.getDatasetMeta(r[0]._datasetIndex).data),r},\"x-axis\":function(t,e){return ie(t,e,{intersect:!1})},point:function(t,e){return te(t,Jt(e,t))},nearest:function(t,e,n){var i=Jt(e,t);n.axis=n.axis||\"xy\";var a=ne(n.axis);return ee(t,i,n.intersect,a)},x:function(t,e,n){var i=Jt(e,t),a=[],r=!1;return Qt(t,(function(t){t.inXRange(i.x)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)})),n.intersect&&!r&&(a=[]),a},y:function(t,e,n){var i=Jt(e,t),a=[],r=!1;return Qt(t,(function(t){t.inYRange(i.y)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)})),n.intersect&&!r&&(a=[]),a}}},re=V.extend;function oe(t,e){return V.where(t,(function(t){return t.pos===e}))}function se(t,e){return t.sort((function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i.index-a.index:i.weight-a.weight}))}function le(t,e,n,i){return Math.max(t[n],e[n])+Math.max(t[i],e[i])}function ue(t,e,n){var i,a,r=n.box,o=t.maxPadding;if(n.size&&(t[n.pos]-=n.size),n.size=n.horizontal?r.height:r.width,t[n.pos]+=n.size,r.getPadding){var s=r.getPadding();o.top=Math.max(o.top,s.top),o.left=Math.max(o.left,s.left),o.bottom=Math.max(o.bottom,s.bottom),o.right=Math.max(o.right,s.right)}if(i=e.outerWidth-le(o,t,\"left\",\"right\"),a=e.outerHeight-le(o,t,\"top\",\"bottom\"),i!==t.w||a!==t.h)return t.w=i,t.h=a,n.horizontal?i!==t.w:a!==t.h}function de(t,e){var n=e.maxPadding;function i(t){var i={left:0,top:0,right:0,bottom:0};return t.forEach((function(t){i[t]=Math.max(e[t],n[t])})),i}return i(t?[\"left\",\"right\"]:[\"top\",\"bottom\"])}function he(t,e,n){var i,a,r,o,s,l,u=[];for(i=0,a=t.length;idiv{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}\"}))&&fe.default||fe,me=\"$chartjs\",ve=\"chartjs-size-monitor\",be=\"chartjs-render-monitor\",xe=\"chartjs-render-animation\",ye=[\"animationstart\",\"webkitAnimationStart\"],_e={touchstart:\"mousedown\",touchmove:\"mousemove\",touchend:\"mouseup\",pointerenter:\"mouseenter\",pointerdown:\"mousedown\",pointermove:\"mousemove\",pointerup:\"mouseup\",pointerleave:\"mouseout\",pointerout:\"mouseout\"};function ke(t,e){var n=V.getStyle(t,e),i=n&&n.match(/^(\\d+)(\\.\\d+)?px$/);return i?Number(i[1]):void 0}var we=!!function(){var t=!1;try{var e=Object.defineProperty({},\"passive\",{get:function(){t=!0}});window.addEventListener(\"e\",null,e)}catch(t){}return t}()&&{passive:!0};function Me(t,e,n){t.addEventListener(e,n,we)}function Se(t,e,n){t.removeEventListener(e,n,we)}function Ce(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}function Pe(t){var e=document.createElement(\"div\");return e.className=t||\"\",e}function Ae(t,e,n){var i,a,r,o,s=t[me]||(t[me]={}),l=s.resizer=function(t){var e=Pe(ve),n=Pe(ve+\"-expand\"),i=Pe(ve+\"-shrink\");n.appendChild(Pe()),i.appendChild(Pe()),e.appendChild(n),e.appendChild(i),e._reset=function(){n.scrollLeft=1e6,n.scrollTop=1e6,i.scrollLeft=1e6,i.scrollTop=1e6};var a=function(){e._reset(),t()};return Me(n,\"scroll\",a.bind(n,\"expand\")),Me(i,\"scroll\",a.bind(i,\"shrink\")),e}((i=function(){if(s.resizer){var i=n.options.maintainAspectRatio&&t.parentNode,a=i?i.clientWidth:0;e(Ce(\"resize\",n)),i&&i.clientWidth0){var r=t[0];r.label?n=r.label:r.xLabel?n=r.xLabel:a>0&&r.index-1?t.split(\"\\n\"):t}function We(t){var e=z.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,rtl:t.rtl,textDirection:t.textDirection,bodyFontColor:t.bodyFontColor,_bodyFontFamily:Re(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:Re(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:Re(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:Re(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:Re(t.titleFontStyle,e.defaultFontStyle),titleFontSize:Re(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:Re(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:Re(t.footerFontStyle,e.defaultFontStyle),footerFontSize:Re(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function Ve(t,e){return\"center\"===e?t.x+t.width/2:\"right\"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function He(t){return Be([],Ee(t))}var je=X.extend({initialize:function(){this._model=We(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options,n=e.callbacks,i=n.beforeTitle.apply(t,arguments),a=n.title.apply(t,arguments),r=n.afterTitle.apply(t,arguments),o=[];return o=Be(o,Ee(i)),o=Be(o,Ee(a)),o=Be(o,Ee(r))},getBeforeBody:function(){return He(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,i=n._options.callbacks,a=[];return V.each(t,(function(t){var r={before:[],lines:[],after:[]};Be(r.before,Ee(i.beforeLabel.call(n,t,e))),Be(r.lines,i.label.call(n,t,e)),Be(r.after,Ee(i.afterLabel.call(n,t,e))),a.push(r)})),a},getAfterBody:function(){return He(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this,e=t._options.callbacks,n=e.beforeFooter.apply(t,arguments),i=e.footer.apply(t,arguments),a=e.afterFooter.apply(t,arguments),r=[];return r=Be(r,Ee(n)),r=Be(r,Ee(i)),r=Be(r,Ee(a))},update:function(t){var e,n,i,a,r,o,s,l,u,d,h=this,c=h._options,f=h._model,g=h._model=We(c),p=h._active,m=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},b={x:f.x,y:f.y},x={width:f.width,height:f.height},y={x:f.caretX,y:f.caretY};if(p.length){g.opacity=1;var _=[],k=[];y=Ne[c.position].call(h,p,h._eventPosition);var w=[];for(e=0,n=p.length;ei.width&&(a=i.width-e.width),a<0&&(a=0)),\"top\"===d?r+=h:r-=\"bottom\"===d?e.height+h:e.height/2,\"center\"===d?\"left\"===u?a+=h:\"right\"===u&&(a-=h):\"left\"===u?a-=c:\"right\"===u&&(a+=c),{x:a,y:r}}(g,x,v=function(t,e){var n,i,a,r,o,s=t._model,l=t._chart,u=t._chart.chartArea,d=\"center\",h=\"center\";s.yl.height-e.height&&(h=\"bottom\");var c=(u.left+u.right)/2,f=(u.top+u.bottom)/2;\"center\"===h?(n=function(t){return t<=c},i=function(t){return t>c}):(n=function(t){return t<=e.width/2},i=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},r=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?\"top\":\"bottom\"},n(s.x)?(d=\"left\",a(s.x)&&(d=\"center\",h=o(s.y))):i(s.x)&&(d=\"right\",r(s.x)&&(d=\"center\",h=o(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:h}}(this,x),h._chart)}else g.opacity=0;return g.xAlign=v.xAlign,g.yAlign=v.yAlign,g.x=b.x,g.y=b.y,g.width=x.width,g.height=x.height,g.caretX=y.x,g.caretY=y.y,h._model=g,t&&c.custom&&c.custom.call(h,g),h},drawCaret:function(t,e){var n=this._chart.ctx,i=this._view,a=this.getCaretPosition(t,e,i);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var i,a,r,o,s,l,u=n.caretSize,d=n.cornerRadius,h=n.xAlign,c=n.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if(\"center\"===c)s=g+m/2,\"left\"===h?(a=(i=f)-u,r=i,o=s+u,l=s-u):(a=(i=f+p)+u,r=i,o=s-u,l=s+u);else if(\"left\"===h?(i=(a=f+d+u)-u,r=a+u):\"right\"===h?(i=(a=f+p-d-u)-u,r=a+u):(i=(a=n.caretX)-u,r=a+u),\"top\"===c)s=(o=g)-u,l=o;else{s=(o=g+m)+u,l=o;var v=r;r=i,i=v}return{x1:i,x2:a,x3:r,y1:o,y2:s,y3:l}},drawTitle:function(t,e,n){var i,a,r,o=e.title,s=o.length;if(s){var l=ze(e.rtl,e.x,e.width);for(t.x=Ve(e,e._titleAlign),n.textAlign=l.textAlign(e._titleAlign),n.textBaseline=\"middle\",i=e.titleFontSize,a=e.titleSpacing,n.fillStyle=e.titleFontColor,n.font=V.fontString(i,e._titleFontStyle,e._titleFontFamily),r=0;r0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,r=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&r&&(t.save(),t.globalAlpha=a,this.drawBackground(i,e,t,n),i.y+=e.yPadding,V.rtl.overrideTextDirection(t,e.textDirection),this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),V.rtl.restoreTextDirection(t,e.textDirection),t.restore())}},handleEvent:function(t){var e,n=this,i=n._options;return n._lastActive=n._lastActive||[],\"mouseout\"===t.type?n._active=[]:(n._active=n._chart.getElementsAtEventForMode(t,i.mode,i),i.reverse&&n._active.reverse()),(e=!V.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(i.enabled||i.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}}),qe=Ne,Ue=je;Ue.positioners=qe;var Ye=V.valueOrDefault;function Ge(){return V.merge({},[].slice.call(arguments),{merger:function(t,e,n,i){if(\"xAxes\"===t||\"yAxes\"===t){var a,r,o,s=n[t].length;for(e[t]||(e[t]=[]),a=0;a=e[t].length&&e[t].push({}),!e[t][a].type||o.type&&o.type!==e[t][a].type?V.merge(e[t][a],[Oe.getScaleDefaults(r),o]):V.merge(e[t][a],o)}else V._merger(t,e,n,i)}})}function Xe(){return V.merge({},[].slice.call(arguments),{merger:function(t,e,n,i){var a=e[t]||{},r=n[t];\"scales\"===t?e[t]=Ge(a,r):\"scale\"===t?e[t]=V.merge(a,[Oe.getScaleDefaults(r.type),r]):V._merger(t,e,n,i)}})}function Ke(t){var e=t.options;V.each(t.scales,(function(e){ge.removeBox(t,e)})),e=Xe(z.global,z[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function Ze(t,e,n){var i,a=function(t){return t.id===i};do{i=e+n++}while(V.findIndex(t,a)>=0);return i}function $e(t){return\"top\"===t||\"bottom\"===t}function Je(t,e){return function(n,i){return n[t]===i[t]?n[e]-i[e]:n[t]-i[t]}}z._set(\"global\",{elements:{},events:[\"mousemove\",\"mouseout\",\"click\",\"touchstart\",\"touchmove\"],hover:{onHover:null,mode:\"nearest\",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var Qe=function(t,e){return this.construct(t,e),this};V.extend(Qe.prototype,{construct:function(t,e){var n=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=Xe(z.global,z[t.type],t.options||{}),t}(e);var i=Fe.acquireContext(t,e),a=i&&i.canvas,r=a&&a.height,o=a&&a.width;n.id=V.uid(),n.ctx=i,n.canvas=a,n.config=e,n.width=o,n.height=r,n.aspectRatio=r?o/r:null,n.options=e.options,n._bufferedRender=!1,n._layers=[],n.chart=n,n.controller=n,Qe.instances[n.id]=n,Object.defineProperty(n,\"data\",{get:function(){return n.config.data},set:function(t){n.config.data=t}}),i&&a?(n.initialize(),n.update()):console.error(\"Failed to create chart: can't acquire context from the given item\")},initialize:function(){var t=this;return Le.notify(t,\"beforeInit\"),V.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.initToolTip(),Le.notify(t,\"afterInit\"),t},clear:function(){return V.canvas.clear(this),this},stop:function(){return $.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,a=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(V.getMaximumWidth(i))),o=Math.max(0,Math.floor(a?r/a:V.getMaximumHeight(i)));if((e.width!==r||e.height!==o)&&(i.width=e.width=r,i.height=e.height=o,i.style.width=r+\"px\",i.style.height=o+\"px\",V.retinaScale(e,n.devicePixelRatio),!t)){var s={width:r,height:o};Le.notify(e,\"resize\",[s]),n.onResize&&n.onResize(e,s),e.stop(),e.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;V.each(e.xAxes,(function(t,n){t.id||(t.id=Ze(e.xAxes,\"x-axis-\",n))})),V.each(e.yAxes,(function(t,n){t.id||(t.id=Ze(e.yAxes,\"y-axis-\",n))})),n&&(n.id=n.id||\"scale\")},buildOrUpdateScales:function(){var t=this,e=t.options,n=t.scales||{},i=[],a=Object.keys(n).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(i=i.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:\"category\",dposition:\"bottom\"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:\"linear\",dposition:\"left\"}})))),e.scale&&i.push({options:e.scale,dtype:\"radialLinear\",isDefault:!0,dposition:\"chartArea\"}),V.each(i,(function(e){var i=e.options,r=i.id,o=Ye(i.type,e.dtype);$e(i.position)!==$e(e.dposition)&&(i.position=e.dposition),a[r]=!0;var s=null;if(r in n&&n[r].type===o)(s=n[r]).options=i,s.ctx=t.ctx,s.chart=t;else{var l=Oe.getScaleConstructor(o);if(!l)return;s=new l({id:r,type:o,options:i,ctx:t.ctx,chart:t}),n[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)})),V.each(a,(function(t,e){t||delete n[e]})),t.scales=n,Oe.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t,e,n=this,i=[],a=n.data.datasets;for(t=0,e=a.length;t=0;--n)this.drawDataset(e[n],t);Le.notify(this,\"afterDatasetsDraw\",[t])}},drawDataset:function(t,e){var n={meta:t,index:t.index,easingValue:e};!1!==Le.notify(this,\"beforeDatasetDraw\",[n])&&(t.controller.draw(e),Le.notify(this,\"afterDatasetDraw\",[n]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==Le.notify(this,\"beforeTooltipDraw\",[n])&&(e.draw(),Le.notify(this,\"afterTooltipDraw\",[n]))},getElementAtEvent:function(t){return ae.modes.single(this,t)},getElementsAtEvent:function(t){return ae.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return ae.modes[\"x-axis\"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=ae.modes[e];return\"function\"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return ae.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e.order||0,index:t}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e3?n[2]-n[1]:n[1]-n[0];Math.abs(i)>1&&t!==Math.floor(t)&&(i=t-Math.floor(t));var a=V.log10(Math.abs(i)),r=\"\";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var o=V.log10(Math.abs(t)),s=Math.floor(o)-Math.floor(a);s=Math.max(Math.min(s,20),0),r=t.toExponential(s)}else{var l=-1*Math.floor(a);l=Math.max(Math.min(l,20),0),r=t.toFixed(l)}else r=\"0\";return r},logarithmic:function(t,e,n){var i=t/Math.pow(10,Math.floor(V.log10(t)));return 0===t?\"0\":1===i||2===i||5===i||0===e||e===n.length-1?t.toExponential():\"\"}}},on=V.isArray,sn=V.isNullOrUndef,ln=V.valueOrDefault,un=V.valueAtIndexOrDefault;function dn(t,e,n){var i,a=t.getTicks().length,r=Math.min(e,a-1),o=t.getPixelForTick(r),s=t._startPixel,l=t._endPixel;if(!(n&&(i=1===a?Math.max(o-s,l-o):0===e?(t.getPixelForTick(1)-o)/2:(o-t.getPixelForTick(r-1))/2,(o+=rl+1e-6)))return o}function hn(t,e,n,i){var a,r,o,s,l,u,d,h,c,f,g,p,m,v=n.length,b=[],x=[],y=[];for(a=0;ae){for(n=0;n=c||d<=1||!s.isHorizontal()?s.labelRotation=h:(e=(t=s._getLabelSizes()).widest.width,n=t.highest.height-t.highest.offset,i=Math.min(s.maxWidth,s.chart.width-e),e+6>(a=l.offset?s.maxWidth/d:i/(d-1))&&(a=i/(d-(l.offset?.5:1)),r=s.maxHeight-cn(l.gridLines)-u.padding-fn(l.scaleLabel),o=Math.sqrt(e*e+n*n),f=V.toDegrees(Math.min(Math.asin(Math.min((t.highest.height+6)/a,1)),Math.asin(Math.min(r/o,1))-Math.asin(n/o))),f=Math.max(h,Math.min(c,f))),s.labelRotation=f)},afterCalculateTickRotation:function(){V.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){V.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=t.chart,i=t.options,a=i.ticks,r=i.scaleLabel,o=i.gridLines,s=t._isVisible(),l=\"bottom\"===i.position,u=t.isHorizontal();if(u?e.width=t.maxWidth:s&&(e.width=cn(o)+fn(r)),u?s&&(e.height=cn(o)+fn(r)):e.height=t.maxHeight,a.display&&s){var d=pn(a),h=t._getLabelSizes(),c=h.first,f=h.last,g=h.widest,p=h.highest,m=.4*d.minor.lineHeight,v=a.padding;if(u){var b=0!==t.labelRotation,x=V.toRadians(t.labelRotation),y=Math.cos(x),_=Math.sin(x),k=_*g.width+y*(p.height-(b?p.offset:0))+(b?0:m);e.height=Math.min(t.maxHeight,e.height+k+v);var w,M,S=t.getPixelForTick(0)-t.left,C=t.right-t.getPixelForTick(t.getTicks().length-1);b?(w=l?y*c.width+_*c.offset:_*(c.height-c.offset),M=l?_*(f.height-f.offset):y*f.width+_*f.offset):(w=c.width/2,M=f.width/2),t.paddingLeft=Math.max((w-S)*t.width/(t.width-S),0)+3,t.paddingRight=Math.max((M-C)*t.width/(t.width-C),0)+3}else{var P=a.mirror?0:g.width+v+m;e.width=Math.min(t.maxWidth,e.width+P),t.paddingTop=c.height/2,t.paddingBottom=f.height/2}}t.handleMargins(),u?(t.width=t._length=n.width-t.margins.left-t.margins.right,t.height=e.height):(t.width=e.width,t.height=t._length=n.height-t.margins.top-t.margins.bottom)},handleMargins:function(){var t=this;t.margins&&(t.margins.left=Math.max(t.paddingLeft,t.margins.left),t.margins.top=Math.max(t.paddingTop,t.margins.top),t.margins.right=Math.max(t.paddingRight,t.margins.right),t.margins.bottom=Math.max(t.paddingBottom,t.margins.bottom))},afterFit:function(){V.callback(this.options.afterFit,[this])},isHorizontal:function(){var t=this.options.position;return\"top\"===t||\"bottom\"===t},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(sn(t))return NaN;if((\"number\"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},_convertTicksToLabels:function(t){var e,n,i,a=this;for(a.ticks=t.map((function(t){return t.value})),a.beforeTickToLabelConversion(),e=a.convertTicksToLabels(t)||a.ticks,a.afterTickToLabelConversion(),n=0,i=t.length;nn-1?null:this.getPixelForDecimal(t*i+(e?i/2:0))},getPixelForDecimal:function(t){return this._reversePixels&&(t=1-t),this._startPixel+t*this._length},getDecimalForPixel:function(t){var e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,n,i,a,r=this.options.ticks,o=this._length,s=r.maxTicksLimit||o/this._tickSize()+1,l=r.major.enabled?function(t){var e,n,i=[];for(e=0,n=t.length;es)return function(t,e,n){var i,a,r=0,o=e[0];for(n=Math.ceil(n),i=0;iu)return r;return Math.max(u,1)}(l,t,0,s),u>0){for(e=0,n=u-1;e1?(h-d)/(u-1):null,vn(t,i,V.isNullOrUndef(a)?0:d-a,d),vn(t,i,h,V.isNullOrUndef(a)?t.length:h+a),mn(t)}return vn(t,i),mn(t)},_tickSize:function(){var t=this.options.ticks,e=V.toRadians(this.labelRotation),n=Math.abs(Math.cos(e)),i=Math.abs(Math.sin(e)),a=this._getLabelSizes(),r=t.autoSkipPadding||0,o=a?a.widest.width+r:0,s=a?a.highest.height+r:0;return this.isHorizontal()?s*n>o*i?o/n:s/i:s*i=0&&(o=t),void 0!==r&&(t=n.indexOf(r))>=0&&(s=t),e.minIndex=o,e.maxIndex=s,e.min=n[o],e.max=n[s]},buildTicks:function(){var t=this._getLabels(),e=this.minIndex,n=this.maxIndex;this.ticks=0===e&&n===t.length-1?t:t.slice(e,n+1)},getLabelForIndex:function(t,e){var n=this.chart;return n.getDatasetMeta(e).controller._getValueScaleId()===this.id?this.getRightValue(n.data.datasets[e].data[t]):this._getLabels()[t]},_configure:function(){var t=this,e=t.options.offset,n=t.ticks;xn.prototype._configure.call(t),t.isHorizontal()||(t._reversePixels=!t._reversePixels),n&&(t._startValue=t.minIndex-(e?.5:0),t._valueRange=Math.max(n.length-(e?0:1),1))},getPixelForValue:function(t,e,n){var i,a,r,o=this;return yn(e)||yn(n)||(t=o.chart.data.datasets[n].data[e]),yn(t)||(i=o.isHorizontal()?t.x:t.y),(void 0!==i||void 0!==t&&isNaN(e))&&(a=o._getLabels(),t=V.valueOrDefault(i,t),e=-1!==(r=a.indexOf(t))?r:e,isNaN(e)&&(e=t)),o.getPixelForDecimal((e-o._startValue)/o._valueRange)},getPixelForTick:function(t){var e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t],t+this.minIndex)},getValueForPixel:function(t){var e=Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange);return Math.min(Math.max(e,0),this.ticks.length-1)},getBasePixel:function(){return this.bottom}}),kn={position:\"bottom\"};_n._defaults=kn;var wn=V.noop,Mn=V.isNullOrUndef;var Sn=xn.extend({getRightValue:function(t){return\"string\"==typeof t?+t:xn.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=V.sign(t.min),i=V.sign(t.max);n<0&&i<0?t.max=0:n>0&&i>0&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),a!==r&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,n=e.stepSize,i=e.maxTicksLimit;return n?t=Math.ceil(this.max/n)-Math.floor(this.min/n)+1:(t=this._computeTickLimit(),i=i||11),i&&(t=Math.min(i,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:wn,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),i={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:V.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var n,i,a,r,o=[],s=t.stepSize,l=s||1,u=t.maxTicks-1,d=t.min,h=t.max,c=t.precision,f=e.min,g=e.max,p=V.niceNum((g-f)/u/l)*l;if(p<1e-14&&Mn(d)&&Mn(h))return[f,g];(r=Math.ceil(g/p)-Math.floor(f/p))>u&&(p=V.niceNum(r*p/u/l)*l),s||Mn(c)?n=Math.pow(10,V._decimalPlaces(p)):(n=Math.pow(10,c),p=Math.ceil(p*n)/n),i=Math.floor(f/p)*p,a=Math.ceil(g/p)*p,s&&(!Mn(d)&&V.almostWhole(d/p,p/1e3)&&(i=d),!Mn(h)&&V.almostWhole(h/p,p/1e3)&&(a=h)),r=(a-i)/p,r=V.almostEquals(r,Math.round(r),p/1e3)?Math.round(r):Math.ceil(r),i=Math.round(i*n)/n,a=Math.round(a*n)/n,o.push(Mn(d)?i:d);for(var m=1;me.length-1?null:this.getPixelForValue(e[t])}}),Tn=Cn;Dn._defaults=Tn;var In=V.valueOrDefault,Fn=V.math.log10;var Ln={position:\"left\",ticks:{callback:rn.formatters.logarithmic}};function On(t,e){return V.isFinite(t)&&t>=0?t:e}var Rn=xn.extend({determineDataLimits:function(){var t,e,n,i,a,r,o=this,s=o.options,l=o.chart,u=l.data.datasets,d=o.isHorizontal();function h(t){return d?t.xAxisID===o.id:t.yAxisID===o.id}o.min=Number.POSITIVE_INFINITY,o.max=Number.NEGATIVE_INFINITY,o.minNotZero=Number.POSITIVE_INFINITY;var c=s.stacked;if(void 0===c)for(t=0;t0){var e=V.min(t),n=V.max(t);o.min=Math.min(o.min,e),o.max=Math.max(o.max,n)}}))}else for(t=0;t0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(Fn(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),i={min:On(e.min),max:On(e.max)},a=t.ticks=function(t,e){var n,i,a=[],r=In(t.min,Math.pow(10,Math.floor(Fn(e.min)))),o=Math.floor(Fn(e.max)),s=Math.ceil(e.max/Math.pow(10,o));0===r?(n=Math.floor(Fn(e.minNotZero)),i=Math.floor(e.minNotZero/Math.pow(10,n)),a.push(r),r=i*Math.pow(10,n)):(n=Math.floor(Fn(r)),i=Math.floor(r/Math.pow(10,n)));var l=n<0?Math.pow(10,Math.abs(n)):1;do{a.push(r),10===++i&&(i=1,l=++n>=0?1:l),r=Math.round(i*Math.pow(10,n)*l)/l}while(ne.length-1?null:this.getPixelForValue(e[t])},_getFirstTickValue:function(t){var e=Math.floor(Fn(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},_configure:function(){var t=this,e=t.min,n=0;xn.prototype._configure.call(t),0===e&&(e=t._getFirstTickValue(t.minNotZero),n=In(t.options.ticks.fontSize,z.global.defaultFontSize)/t._length),t._startValue=Fn(e),t._valueOffset=n,t._valueRange=(Fn(t.max)-Fn(e))/(1-n)},getPixelForValue:function(t){var e=this,n=0;return(t=+e.getRightValue(t))>e.min&&t>0&&(n=(Fn(t)-e._startValue)/e._valueRange+e._valueOffset),e.getPixelForDecimal(n)},getValueForPixel:function(t){var e=this,n=e.getDecimalForPixel(t);return 0===n&&0===e.min?0:Math.pow(10,e._startValue+(n-e._valueOffset)*e._valueRange)}}),zn=Ln;Rn._defaults=zn;var Nn=V.valueOrDefault,Bn=V.valueAtIndexOrDefault,En=V.options.resolve,Wn={display:!0,animate:!0,position:\"chartArea\",angleLines:{display:!0,color:\"rgba(0,0,0,0.1)\",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:\"rgba(255,255,255,0.75)\",backdropPaddingY:2,backdropPaddingX:2,callback:rn.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function Vn(t){var e=t.ticks;return e.display&&t.display?Nn(e.fontSize,z.global.defaultFontSize)+2*e.backdropPaddingY:0}function Hn(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:ta?{start:e-n,end:e}:{start:e,end:e+n}}function jn(t){return 0===t||180===t?\"center\":t<180?\"left\":\"right\"}function qn(t,e,n,i){var a,r,o=n.y+i/2;if(V.isArray(e))for(a=0,r=e.length;a270||t<90)&&(n.y-=e.h)}function Yn(t){return V.isNumber(t)?t:0}var Gn=Sn.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=Vn(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;V.each(e.data.datasets,(function(a,r){if(e.isDatasetVisible(r)){var o=e.getDatasetMeta(r);V.each(a.data,(function(e,a){var r=+t.getRightValue(e);isNaN(r)||o.data[a].hidden||(n=Math.min(r,n),i=Math.max(r,i))}))}})),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/Vn(this.options))},convertTicksToLabels:function(){var t=this;Sn.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map((function(){var e=V.callback(t.options.pointLabels.callback,arguments,t);return e||0===e?e:\"\"}))},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,n,i,a=V.options._parseFont(t.options.pointLabels),r={l:0,r:t.width,t:0,b:t.height-t.paddingTop},o={};t.ctx.font=a.string,t._pointLabelSizes=[];var s,l,u,d=t.chart.data.labels.length;for(e=0;er.r&&(r.r=f.end,o.r=h),g.startr.b&&(r.b=g.end,o.b=h)}t.setReductions(t.drawingArea,r,o)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,n){var i=this,a=e.l/Math.sin(n.l),r=Math.max(e.r-i.width,0)/Math.sin(n.r),o=-e.t/Math.cos(n.t),s=-Math.max(e.b-(i.height-i.paddingTop),0)/Math.cos(n.b);a=Yn(a),r=Yn(r),o=Yn(o),s=Yn(s),i.drawingArea=Math.min(Math.floor(t-(a+r)/2),Math.floor(t-(o+s)/2)),i.setCenterPoint(a,r,o,s)},setCenterPoint:function(t,e,n,i){var a=this,r=a.width-e-a.drawingArea,o=t+a.drawingArea,s=n+a.drawingArea,l=a.height-a.paddingTop-i-a.drawingArea;a.xCenter=Math.floor((o+r)/2+a.left),a.yCenter=Math.floor((s+l)/2+a.top+a.paddingTop)},getIndexAngle:function(t){var e=this.chart,n=(t*(360/e.data.labels.length)+((e.options||{}).startAngle||0))%360;return(n<0?n+360:n)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(V.isNullOrUndef(t))return NaN;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(n)*e+this.xCenter,y:Math.sin(n)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(t){var e=this.min,n=this.max;return this.getPointPositionForValue(t||0,this.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0)},_drawGrid:function(){var t,e,n,i=this,a=i.ctx,r=i.options,o=r.gridLines,s=r.angleLines,l=Nn(s.lineWidth,o.lineWidth),u=Nn(s.color,o.color);if(r.pointLabels.display&&function(t){var e=t.ctx,n=t.options,i=n.pointLabels,a=Vn(n),r=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),o=V.options._parseFont(i);e.save(),e.font=o.string,e.textBaseline=\"middle\";for(var s=t.chart.data.labels.length-1;s>=0;s--){var l=0===s?a/2:0,u=t.getPointPosition(s,r+l+5),d=Bn(i.fontColor,s,z.global.defaultFontColor);e.fillStyle=d;var h=t.getIndexAngle(s),c=V.toDegrees(h);e.textAlign=jn(c),Un(c,t._pointLabelSizes[s],u),qn(e,t.pointLabels[s],u,o.lineHeight)}e.restore()}(i),o.display&&V.each(i.ticks,(function(t,n){0!==n&&(e=i.getDistanceFromCenterForValue(i.ticksAsNumbers[n]),function(t,e,n,i){var a,r=t.ctx,o=e.circular,s=t.chart.data.labels.length,l=Bn(e.color,i-1),u=Bn(e.lineWidth,i-1);if((o||s)&&l&&u){if(r.save(),r.strokeStyle=l,r.lineWidth=u,r.setLineDash&&(r.setLineDash(e.borderDash||[]),r.lineDashOffset=e.borderDashOffset||0),r.beginPath(),o)r.arc(t.xCenter,t.yCenter,n,0,2*Math.PI);else{a=t.getPointPosition(0,n),r.moveTo(a.x,a.y);for(var d=1;d=0;t--)e=i.getDistanceFromCenterForValue(r.ticks.reverse?i.min:i.max),n=i.getPointPosition(t,e),a.beginPath(),a.moveTo(i.xCenter,i.yCenter),a.lineTo(n.x,n.y),a.stroke();a.restore()}},_drawLabels:function(){var t=this,e=t.ctx,n=t.options.ticks;if(n.display){var i,a,r=t.getIndexAngle(0),o=V.options._parseFont(n),s=Nn(n.fontColor,z.global.defaultFontColor);e.save(),e.font=o.string,e.translate(t.xCenter,t.yCenter),e.rotate(r),e.textAlign=\"center\",e.textBaseline=\"middle\",V.each(t.ticks,(function(r,l){(0!==l||n.reverse)&&(i=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]),n.showLabelBackdrop&&(a=e.measureText(r).width,e.fillStyle=n.backdropColor,e.fillRect(-a/2-n.backdropPaddingX,-i-o.size/2-n.backdropPaddingY,a+2*n.backdropPaddingX,o.size+2*n.backdropPaddingY)),e.fillStyle=s,e.fillText(r,0,-i))})),e.restore()}},_drawTitle:V.noop}),Xn=Wn;Gn._defaults=Xn;var Kn=V._deprecated,Zn=V.options.resolve,$n=V.valueOrDefault,Jn=Number.MIN_SAFE_INTEGER||-9007199254740991,Qn=Number.MAX_SAFE_INTEGER||9007199254740991,ti={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ei=Object.keys(ti);function ni(t,e){return t-e}function ii(t){return V.valueOrDefault(t.time.min,t.ticks.min)}function ai(t){return V.valueOrDefault(t.time.max,t.ticks.max)}function ri(t,e,n,i){var a=function(t,e,n){for(var i,a,r,o=0,s=t.length-1;o>=0&&o<=s;){if(a=t[(i=o+s>>1)-1]||null,r=t[i],!a)return{lo:null,hi:r};if(r[e]n))return{lo:a,hi:r};s=i-1}}return{lo:r,hi:null}}(t,e,n),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],o=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=o[e]-r[e],l=s?(n-r[e])/s:0,u=(o[i]-r[i])*l;return r[i]+u}function oi(t,e){var n=t._adapter,i=t.options.time,a=i.parser,r=a||i.format,o=e;return\"function\"==typeof a&&(o=a(o)),V.isFinite(o)||(o=\"string\"==typeof r?n.parse(o,r):n.parse(o)),null!==o?+o:(a||\"function\"!=typeof r||(o=r(e),V.isFinite(o)||(o=n.parse(o))),o)}function si(t,e){if(V.isNullOrUndef(e))return null;var n=t.options.time,i=oi(t,t.getRightValue(e));return null===i?i:(n.round&&(i=+t._adapter.startOf(i,n.round)),i)}function li(t,e,n,i){var a,r,o,s=ei.length;for(a=ei.indexOf(t);a=0&&(e[r].major=!0);return e}(t,r,o,n):r}var di=xn.extend({initialize:function(){this.mergeTicksOptions(),xn.prototype.initialize.call(this)},update:function(){var t=this,e=t.options,n=e.time||(e.time={}),i=t._adapter=new an._date(e.adapters.date);return Kn(\"time scale\",n.format,\"time.format\",\"time.parser\"),Kn(\"time scale\",n.min,\"time.min\",\"ticks.min\"),Kn(\"time scale\",n.max,\"time.max\",\"ticks.max\"),V.mergeIf(n.displayFormats,i.formats()),xn.prototype.update.apply(t,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),xn.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,i,a,r,o,s=this,l=s.chart,u=s._adapter,d=s.options,h=d.time.unit||\"day\",c=Qn,f=Jn,g=[],p=[],m=[],v=s._getLabels();for(t=0,n=v.length;t1?function(t){var e,n,i,a={},r=[];for(e=0,n=t.length;e1e5*u)throw e+\" and \"+n+\" are too far apart with stepSize of \"+u+\" \"+l;for(a=h;a=a&&n<=r&&d.push(n);return i.min=a,i.max=r,i._unit=l.unit||(s.autoSkip?li(l.minUnit,i.min,i.max,h):function(t,e,n,i,a){var r,o;for(r=ei.length-1;r>=ei.indexOf(n);r--)if(o=ei[r],ti[o].common&&t._adapter.diff(a,i,o)>=e-1)return o;return ei[n?ei.indexOf(n):0]}(i,d.length,l.minUnit,i.min,i.max)),i._majorUnit=s.major.enabled&&\"year\"!==i._unit?function(t){for(var e=ei.indexOf(t)+1,n=ei.length;ee&&s=0&&t0?s:1}}),hi={position:\"bottom\",distribution:\"linear\",bounds:\"data\",adapters:{},time:{parser:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:\"millisecond\",displayFormats:{}},ticks:{autoSkip:!1,source:\"auto\",major:{enabled:!1}}};di._defaults=hi;var ci={category:_n,linear:Dn,logarithmic:Rn,radialLinear:Gn,time:di},fi={datetime:\"MMM D, YYYY, h:mm:ss a\",millisecond:\"h:mm:ss.SSS a\",second:\"h:mm:ss a\",minute:\"h:mm a\",hour:\"hA\",day:\"MMM D\",week:\"ll\",month:\"MMM YYYY\",quarter:\"[Q]Q - YYYY\",year:\"YYYY\"};an._date.override(\"function\"==typeof t?{_id:\"moment\",formats:function(){return fi},parse:function(e,n){return\"string\"==typeof e&&\"string\"==typeof n?e=t(e,n):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,n){return t(e).format(n)},add:function(e,n,i){return t(e).add(n,i).valueOf()},diff:function(e,n,i){return t(e).diff(t(n),i)},startOf:function(e,n,i){return e=t(e),\"isoWeek\"===n?e.isoWeekday(i).valueOf():e.startOf(n).valueOf()},endOf:function(e,n){return t(e).endOf(n).valueOf()},_create:function(e){return t(e)}}:{}),z._set(\"global\",{plugins:{filler:{propagate:!0}}});var gi={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),a=i&&n.isDatasetVisible(e)&&i.dataset._children||[],r=a.length||0;return r?function(t,e){return e=n)&&i;switch(r){case\"bottom\":return\"start\";case\"top\":return\"end\";case\"zero\":return\"origin\";case\"origin\":case\"start\":case\"end\":return r;default:return!1}}function mi(t){return(t.el._scale||{}).getPointPositionForValue?function(t){var e,n,i,a,r,o=t.el._scale,s=o.options,l=o.chart.data.labels.length,u=t.fill,d=[];if(!l)return null;for(e=s.ticks.reverse?o.max:o.min,n=s.ticks.reverse?o.min:o.max,i=o.getPointPositionForValue(0,e),a=0;a0;--r)V.canvas.lineTo(t,n[r],n[r-1],!0);else for(o=n[0].cx,s=n[0].cy,l=Math.sqrt(Math.pow(n[0].x-o,2)+Math.pow(n[0].y-s,2)),r=a-1;r>0;--r)t.arc(o,s,l,n[r].angle,n[r-1].angle,!0)}}function _i(t,e,n,i,a,r){var o,s,l,u,d,h,c,f,g=e.length,p=i.spanGaps,m=[],v=[],b=0,x=0;for(t.beginPath(),o=0,s=g;o=0;--n)(e=l[n].$filler)&&e.visible&&(a=(i=e.el)._view,r=i._children||[],o=e.mapper,s=a.backgroundColor||z.global.defaultColor,o&&s&&r.length&&(V.canvas.clipArea(u,t.chartArea),_i(u,r,o,a,s,i._loop),V.canvas.unclipArea(u)))}},wi=V.rtl.getRtlAdapter,Mi=V.noop,Si=V.valueOrDefault;function Ci(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}z._set(\"global\",{legend:{display:!0,position:\"top\",align:\"center\",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data.datasets,n=t.options.legend||{},i=n.labels&&n.labels.usePointStyle;return t._getSortedDatasetMetas().map((function(n){var a=n.controller.getStyle(i?0:void 0);return{text:e[n.index].label,fillStyle:a.backgroundColor,hidden:!t.isDatasetVisible(n.index),lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:a.borderWidth,strokeStyle:a.borderColor,pointStyle:a.pointStyle,rotation:a.rotation,datasetIndex:n.index}}),this)}}},legendCallback:function(t){var e,n,i,a=document.createElement(\"ul\"),r=t.data.datasets;for(a.setAttribute(\"class\",t.id+\"-legend\"),e=0,n=r.length;el.width)&&(h+=o+n.padding,d[d.length-(e>0?0:1)]=0),s[e]={left:0,top:0,width:i,height:o},d[d.length-1]+=i+n.padding})),l.height+=h}else{var c=n.padding,f=t.columnWidths=[],g=t.columnHeights=[],p=n.padding,m=0,v=0;V.each(t.legendItems,(function(t,e){var i=Ci(n,o)+o/2+a.measureText(t.text).width;e>0&&v+o+2*c>l.height&&(p+=m+n.padding,f.push(m),g.push(v),m=0,v=0),m=Math.max(m,i),v+=o+c,s[e]={left:0,top:0,width:i,height:o}})),p+=m,f.push(m),g.push(v),l.width+=p}t.width=l.width,t.height=l.height}else t.width=l.width=t.height=l.height=0},afterFit:Mi,isHorizontal:function(){return\"top\"===this.options.position||\"bottom\"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,i=z.global,a=i.defaultColor,r=i.elements.line,o=t.height,s=t.columnHeights,l=t.width,u=t.lineWidths;if(e.display){var d,h=wi(e.rtl,t.left,t.minSize.width),c=t.ctx,f=Si(n.fontColor,i.defaultFontColor),g=V.options._parseFont(n),p=g.size;c.textAlign=h.textAlign(\"left\"),c.textBaseline=\"middle\",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=g.string;var m=Ci(n,p),v=t.legendHitBoxes,b=function(t,i){switch(e.align){case\"start\":return n.padding;case\"end\":return t-i;default:return(t-i+n.padding)/2}},x=t.isHorizontal();d=x?{x:t.left+b(l,u[0]),y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+b(o,s[0]),line:0},V.rtl.overrideTextDirection(t.ctx,e.textDirection);var y=p+n.padding;V.each(t.legendItems,(function(e,i){var f=c.measureText(e.text).width,g=m+p/2+f,_=d.x,k=d.y;h.setWidth(t.minSize.width),x?i>0&&_+g+n.padding>t.left+t.minSize.width&&(k=d.y+=y,d.line++,_=d.x=t.left+b(l,u[d.line])):i>0&&k+y>t.top+t.minSize.height&&(_=d.x=_+t.columnWidths[d.line]+n.padding,d.line++,k=d.y=t.top+b(o,s[d.line]));var w=h.x(_);!function(t,e,i){if(!(isNaN(m)||m<=0)){c.save();var o=Si(i.lineWidth,r.borderWidth);if(c.fillStyle=Si(i.fillStyle,a),c.lineCap=Si(i.lineCap,r.borderCapStyle),c.lineDashOffset=Si(i.lineDashOffset,r.borderDashOffset),c.lineJoin=Si(i.lineJoin,r.borderJoinStyle),c.lineWidth=o,c.strokeStyle=Si(i.strokeStyle,a),c.setLineDash&&c.setLineDash(Si(i.lineDash,r.borderDash)),n&&n.usePointStyle){var s=m*Math.SQRT2/2,l=h.xPlus(t,m/2),u=e+p/2;V.canvas.drawPoint(c,i.pointStyle,s,l,u,i.rotation)}else c.fillRect(h.leftForLtr(t,m),e,m,p),0!==o&&c.strokeRect(h.leftForLtr(t,m),e,m,p);c.restore()}}(w,k,e),v[i].left=h.leftForLtr(w,v[i].width),v[i].top=k,function(t,e,n,i){var a=p/2,r=h.xPlus(t,m+a),o=e+a;c.fillText(n.text,r,o),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(r,o),c.lineTo(h.xPlus(r,i),o),c.stroke())}(w,k,e,f),x?d.x+=g+n.padding:d.y+=y})),V.rtl.restoreTextDirection(t.ctx,e.textDirection)}},_getLegendItemAt:function(t,e){var n,i,a,r=this;if(t>=r.left&&t<=r.right&&e>=r.top&&e<=r.bottom)for(a=r.legendHitBoxes,n=0;n=(i=a[n]).left&&t<=i.left+i.width&&e>=i.top&&e<=i.top+i.height)return r.legendItems[n];return null},handleEvent:function(t){var e,n=this,i=n.options,a=\"mouseup\"===t.type?\"click\":t.type;if(\"mousemove\"===a){if(!i.onHover&&!i.onLeave)return}else{if(\"click\"!==a)return;if(!i.onClick)return}e=n._getLegendItemAt(t.x,t.y),\"click\"===a?e&&i.onClick&&i.onClick.call(n,t.native,e):(i.onLeave&&e!==n._hoveredItem&&(n._hoveredItem&&i.onLeave.call(n,t.native,n._hoveredItem),n._hoveredItem=e),i.onHover&&e&&i.onHover.call(n,t.native,e))}});function Ai(t,e){var n=new Pi({ctx:t.ctx,options:e,chart:t});ge.configure(t,n,e),ge.addBox(t,n),t.legend=n}var Di={id:\"legend\",_element:Pi,beforeInit:function(t){var e=t.options.legend;e&&Ai(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(V.mergeIf(e,z.global.legend),n?(ge.configure(t,n,e),n.options=e):Ai(t,e)):n&&(ge.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}},Ti=V.noop;z._set(\"global\",{title:{display:!1,fontStyle:\"bold\",fullWidth:!0,padding:10,position:\"top\",text:\"\",weight:2e3}});var Ii=X.extend({initialize:function(t){V.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:Ti,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:Ti,beforeSetDimensions:Ti,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Ti,beforeBuildLabels:Ti,buildLabels:Ti,afterBuildLabels:Ti,beforeFit:Ti,fit:function(){var t,e=this,n=e.options,i=e.minSize={},a=e.isHorizontal();n.display?(t=(V.isArray(n.text)?n.text.length:1)*V.options._parseFont(n).lineHeight+2*n.padding,e.width=i.width=a?e.maxWidth:t,e.height=i.height=a?t:e.maxHeight):e.width=i.width=e.height=i.height=0},afterFit:Ti,isHorizontal:function(){var t=this.options.position;return\"top\"===t||\"bottom\"===t},draw:function(){var t=this,e=t.ctx,n=t.options;if(n.display){var i,a,r,o=V.options._parseFont(n),s=o.lineHeight,l=s/2+n.padding,u=0,d=t.top,h=t.left,c=t.bottom,f=t.right;e.fillStyle=V.valueOrDefault(n.fontColor,z.global.defaultFontColor),e.font=o.string,t.isHorizontal()?(a=h+(f-h)/2,r=d+l,i=f-h):(a=\"left\"===n.position?h+l:f-l,r=d+(c-d)/2,i=c-d,u=Math.PI*(\"left\"===n.position?-.5:.5)),e.save(),e.translate(a,r),e.rotate(u),e.textAlign=\"center\",e.textBaseline=\"middle\";var g=n.text;if(V.isArray(g))for(var p=0,m=0;m=0;i--){var a=t[i];if(e(a))return a}},V.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},V.almostEquals=function(t,e,n){return Math.abs(t-e)=t},V.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},V.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},V.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0===(t=+t)||isNaN(t)?t:t>0?1:-1},V.toRadians=function(t){return t*(Math.PI/180)},V.toDegrees=function(t){return t*(180/Math.PI)},V._decimalPlaces=function(t){if(V.isFinite(t)){for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}},V.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),r=Math.atan2(i,n);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},V.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},V.aliasPixel=function(t){return t%2==0?0:.5},V._alignPixel=function(t,e,n){var i=t.currentDevicePixelRatio,a=n/2;return Math.round((e-a)*i)/i+a},V.splineCurve=function(t,e,n,i){var a=t.skip?e:t,r=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l),h=i*(u=isNaN(u)?0:u),c=i*(d=isNaN(d)?0:d);return{previous:{x:r.x-h*(o.x-a.x),y:r.y-h*(o.y-a.y)},next:{x:r.x+c*(o.x-a.x),y:r.y+c*(o.y-a.y)}}},V.EPSILON=Number.EPSILON||1e-14,V.splineCurveMonotone=function(t){var e,n,i,a,r,o,s,l,u,d=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),h=d.length;for(e=0;e0?d[e-1]:null,(a=e0?d[e-1]:null,a=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},V.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},V.niceNum=function(t,e){var n=Math.floor(V.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},V.requestAnimFrame=\"undefined\"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},V.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,r=t.target||t.srcElement,o=r.getBoundingClientRect(),s=a.touches;s&&s.length>0?(n=s[0].clientX,i=s[0].clientY):(n=a.clientX,i=a.clientY);var l=parseFloat(V.getStyle(r,\"padding-left\")),u=parseFloat(V.getStyle(r,\"padding-top\")),d=parseFloat(V.getStyle(r,\"padding-right\")),h=parseFloat(V.getStyle(r,\"padding-bottom\")),c=o.right-o.left-l-d,f=o.bottom-o.top-u-h;return{x:n=Math.round((n-o.left-l)/c*r.width/e.currentDevicePixelRatio),y:i=Math.round((i-o.top-u)/f*r.height/e.currentDevicePixelRatio)}},V.getConstraintWidth=function(t){return n(t,\"max-width\",\"clientWidth\")},V.getConstraintHeight=function(t){return n(t,\"max-height\",\"clientHeight\")},V._calculatePadding=function(t,e,n){return(e=V.getStyle(t,e)).indexOf(\"%\")>-1?n*parseInt(e,10)/100:parseInt(e,10)},V._getParentNode=function(t){var e=t.parentNode;return e&&\"[object ShadowRoot]\"===e.toString()&&(e=e.host),e},V.getMaximumWidth=function(t){var e=V._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,i=n-V._calculatePadding(e,\"padding-left\",n)-V._calculatePadding(e,\"padding-right\",n),a=V.getConstraintWidth(t);return isNaN(a)?i:Math.min(i,a)},V.getMaximumHeight=function(t){var e=V._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,i=n-V._calculatePadding(e,\"padding-top\",n)-V._calculatePadding(e,\"padding-bottom\",n),a=V.getConstraintHeight(t);return isNaN(a)?i:Math.min(i,a)},V.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},V.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||\"undefined\"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,r=t.width;i.height=a*n,i.width=r*n,t.ctx.scale(n,n),i.style.height||i.style.width||(i.style.height=a+\"px\",i.style.width=r+\"px\")}},V.fontString=function(t,e,n){return e+\" \"+t+\"px \"+n},V.longestText=function(t,e,n,i){var a=(i=i||{}).data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},r=i.garbageCollect=[],i.font=e),t.font=e;var o,s,l,u,d,h=0,c=n.length;for(o=0;on.length){for(o=0;oi&&(i=r),i},V.numberOfLabelLines=function(t){var e=1;return V.each(t,(function(t){V.isArray(t)&&t.length>e&&(e=t.length)})),e},V.color=k?function(t){return t instanceof CanvasGradient&&(t=z.global.defaultColor),k(t)}:function(t){return console.error(\"Color.js not found!\"),t},V.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:V.color(t).saturate(.5).darken(.1).rgbString()}}(),tn._adapters=an,tn.Animation=Z,tn.animationService=$,tn.controllers=$t,tn.DatasetController=nt,tn.defaults=z,tn.Element=X,tn.elements=_t,tn.Interaction=ae,tn.layouts=ge,tn.platform=Fe,tn.plugins=Le,tn.Scale=xn,tn.scaleService=Oe,tn.Ticks=rn,tn.Tooltip=Ue,tn.helpers.each(ci,(function(t,e){tn.scaleService.registerScaleType(e,t,t._defaults)})),Li)Li.hasOwnProperty(Ni)&&tn.plugins.register(Li[Ni]);tn.platform.initialize();var Bi=tn;return\"undefined\"!=typeof window&&(window.Chart=tn),tn.Chart=tn,tn.Legend=Li.legend._element,tn.Title=Li.title._element,tn.pluginService=tn.plugins,tn.PluginBase=tn.Element.extend({}),tn.canvasHelpers=tn.helpers.canvas,tn.layoutService=tn.layouts,tn.LinearScaleBase=Sn,tn.helpers.each([\"Bar\",\"Bubble\",\"Doughnut\",\"Line\",\"PolarArea\",\"Radar\",\"Scatter\"],(function(t){tn[t]=function(e,n){return new tn(e,tn.helpers.merge(n||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}})),Bi}));\r\n","const resetPassword = (function () {\r\n let SEARCH_WRAP;\r\n let SEARCH_BTN;\r\n let SEARCH_INPUT;\r\n let INACTIVE_CHKBOX;\r\n let userTableData = [];\r\n let tempUserTableData = [];\r\n let displayedUsers = [];\r\n\r\n var userTable;\r\n var changePasswordPopup;\r\n var savePasswordBtn;\r\n var cancelPasswordBtn;\r\n var confirmPasswordInput;\r\n var newPasswordInput;\r\n var isCardDisabled = false;\r\n var newPasswordValue = null;\r\n var confirmPasswordValue = null;\r\n var selectedUserID;\r\n var isChecked;\r\n\r\n function init() {\r\n DOM.clearActionCenter();\r\n const topNav = buildRosterTopNav();\r\n userTable = buildTable();\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = userTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // User Name\r\n headers[1].setAttribute('data-type', 'string'); // Last Name\r\n headers[2].setAttribute('data-type', 'string'); // First Name \r\n \r\n DOM.ACTIONCENTER.appendChild(topNav); \r\n DOM.ACTIONCENTER.appendChild(userTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(userTable);\r\n \r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n tableUserSearch(event.target.value);\r\n });\r\n isChecked = $.session.isActiveUsers;\r\n loadReviewPage(isChecked);\r\n document.getElementById('searchBtn').click(); \r\n }\r\n\r\n function buildSearchBtn() {\r\n return button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['searchBtn'],\r\n });\r\n }\r\n\r\n function changePasswordBtn() {\r\n return button.build({\r\n text: 'Change Password',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n }\r\n\r\n function buildInactiveChkBox() {\r\n return input.buildCheckbox({\r\n text: 'Show Inactives',\r\n id: 'chkInacive',\r\n callback: () => setCheckForInactiveUser(event.target),\r\n isChecked: $.session.isActiveUsers,\r\n });\r\n }\r\n\r\n function buildActiveChkBox(checked) {\r\n return input.buildCheckbox({\r\n isChecked: checked === 'Y' ? true : false,\r\n callback: () => setCheckForInactiveUser(event.target),\r\n });\r\n }\r\n\r\n function buildTable() {\r\n var tableOptions = {\r\n plain: false,\r\n tableId: 'singleEntryAdminReviewTable',\r\n columnHeadings: ['User Name', 'Last Name', 'First Name'],\r\n endIcon: true,\r\n secondendIconHeading: 'Active',\r\n secondendIcon: true,\r\n };\r\n\r\n return table.build(tableOptions);\r\n }\r\n\r\n function buildChangePasswordPopup(userId, userFirstName, UserLastName) {\r\n selectedUserID = userId;\r\n var popupClassNames = isCardDisabled\r\n ? ['resetPasswordPopup', 'popup--filter', 'disabled']\r\n : ['resetPasswordPopup', 'popup--filter'];\r\n\r\n changePasswordPopup = POPUP.build({\r\n classNames: popupClassNames,\r\n hideX: true,\r\n });\r\n\r\n newPasswordInput = input.build({\r\n id: 'newPasswordInput',\r\n label: 'New Password',\r\n type: 'password',\r\n style: 'secondary',\r\n value: newPasswordValue,\r\n });\r\n\r\n confirmPasswordInput = input.build({\r\n id: 'confirmPasswordInput',\r\n label: 'Confirm Password',\r\n type: 'password',\r\n style: 'secondary',\r\n class: 'input-field__input',\r\n value: confirmPasswordValue,\r\n });\r\n\r\n savePasswordBtn = button.build({\r\n id: 'savePasswordBtn',\r\n text: 'Change',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n });\r\n\r\n cancelPasswordBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n classNames: 'cancelTransBtn',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(savePasswordBtn);\r\n btnWrap.appendChild(cancelPasswordBtn);\r\n\r\n var header = document.createElement('h3');\r\n header.innerHTML = userId + ` - ` + userFirstName + ' ' + UserLastName;\r\n var headerSpace = document.createElement('h3');\r\n headerSpace.innerHTML = '';\r\n\r\n var errortext = document.createElement('div');\r\n errortext.innerHTML = `

`;\r\n\r\n var confirmMessage = document.createElement('div');\r\n confirmMessage.innerHTML = `

`;\r\n \r\n changePasswordPopup.appendChild(header);\r\n changePasswordPopup.appendChild(headerSpace);\r\n changePasswordPopup.appendChild(newPasswordInput);\r\n changePasswordPopup.appendChild(confirmPasswordInput);\r\n changePasswordPopup.appendChild(errortext);\r\n changePasswordPopup.appendChild(confirmMessage);\r\n changePasswordPopup.appendChild(btnWrap);\r\n setupChangePasswordEvents();\r\n POPUP.show(changePasswordPopup);\r\n document.getElementById('newPasswordInput').focus(); \r\n \r\n strongPassword = $.session.strongPassword;\r\n if (strongPassword === 'Y') {\r\n //is password strong? \r\n var messagetext = document.getElementById('confirmMessage');\r\n messagetext.innerHTML = ``;\r\n let specialCharDisplay = $.session.passwordSpecialCharacters.replaceAll(`\\\\\\\\`, `\\\\`);\r\n specialCharDisplay = specialCharDisplay.replaceAll(`\\\\\"`, `\"`);\r\n messagetext.innerHTML = `Passwords must meet all of the following requirements: Be at least ${$.session.advancedPasswordLength} characters long, \r\n have a special character(${specialCharDisplay}), have a number, and include upper and lower case letters.`;\r\n messagetext.classList.remove('password-error');\r\n }\r\n }\r\n\r\n function setupChangePasswordEvents() {\r\n savePasswordBtn.addEventListener('click', () => {\r\n savePassword();\r\n });\r\n cancelPasswordBtn.addEventListener('click', () => {\r\n POPUP.hide(changePasswordPopup);\r\n });\r\n newPasswordInput.addEventListener('keyup', event => {\r\n checkPassword();\r\n });\r\n confirmPasswordInput.addEventListener('keyup', event => {\r\n checkPassword();\r\n });\r\n }\r\n\r\n function savePassword() {\r\n const changeBtn = document.getElementById('savePasswordBtn');\r\n if (checkPassword() == 0) return;\r\n changeBtn.classList.add('disabled');\r\n\r\n let newPW = $('#newPasswordInput').val();\r\n let confirmPW = $('#confirmPasswordInput').val();\r\n newPW = newPW.replaceAll(`\\\\`, `\\\\\\\\`);\r\n newPW = newPW.replaceAll(`\"`, `\\\\\"`);\r\n newPW = newPW.replaceAll(`'`, `''`);\r\n var messagetext = document.getElementById('confirmMessage');\r\n messagetext.innerHTML = ``;\r\n let passwordChangeError = false;\r\n let inactiveUser = false;\r\n let passwordReuseError = false;\r\n // blur focus to prevent messages from getting removed too quickly\r\n document.activeElement.blur();\r\n\r\n resetPasswordAjax.changeUserPassword(\r\n {\r\n UserID: selectedUserID,\r\n newPW: newPW,\r\n confirmPW: confirmPW,\r\n },\r\n function (results, error) {\r\n // success\r\n if (results.indexOf('Not active') != -1) {\r\n const message = `\r\n\t\t\t\tYour account is inactive. Please contact your System Administrator to enable your account. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n inactiveUser = true;\r\n return;\r\n }\r\n if (results.indexOf('Error:611') > -1) {\r\n passwordReuseError = true;\r\n messagetext.innerHTML = 'Your new password does not meet your organizations password reuse rules. Please use a different password.';\r\n messagetext.classList.add('password-error');\r\n return;\r\n } else if (results.indexOf('Error:610') > -1) {\r\n passwordChangeError = true;\r\n } else {\r\n passwordChangeError = false;\r\n }\r\n\r\n changeBtn.classList.remove('disabled');\r\n\r\n if (inactiveUser || passwordReuseError) {\r\n return;\r\n }\r\n if (passwordChangeError) {\r\n const message = `Invalid user name or password. `;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n\r\n const passwordChangeConfPOPUP = POPUP.build({\r\n hideX: true,\r\n });\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(passwordChangeConfPOPUP);\r\n },\r\n });\r\n okBtn.style.width = '100%';\r\n const message = document.createElement('p');\r\n message.innerText = 'Password has been successfully changed for the selected user.';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n passwordChangeConfPOPUP.appendChild(message);\r\n passwordChangeConfPOPUP.appendChild(okBtn);\r\n okBtn.focus();\r\n POPUP.hide(changePasswordPopup);\r\n POPUP.show(passwordChangeConfPOPUP);\r\n },\r\n );\r\n }\r\n\r\n function checkPassword() {\r\n var pass1 = document.getElementById('newPasswordInput');\r\n var pass2 = document.getElementById('confirmPasswordInput');\r\n var message = document.getElementById('confirmMessage');\r\n\r\n message.innerHTML = ``;\r\n $('#errortext').text(``);\r\n strongPassword = $.session.strongPassword;\r\n // PW Can't contain more than one backslash in a row\r\n if (pass1.value.match(/\\\\{2,}/g)) {\r\n $('#errortext').text(`Your password can't contain more than one \\\\ in a row.`);\r\n document.getElementById('savePasswordBtn').classList.add('disabled');\r\n return 0;\r\n } else {\r\n $('#errortext').text(``);\r\n }\r\n\r\n //Extra condition for whether or not a strong password is required\r\n if (strongPassword === 'N') {\r\n if (pass1.value === '' || pass2.value === '') {\r\n message.innerHTML = 'Please enter and confirm a new password.';\r\n message.classList.add('password-error');\r\n document.getElementById('savePasswordBtn').classList.add('disabled');\r\n return 0;\r\n }\r\n //passwords match?\r\n if (pass1.value !== pass2.value) {\r\n message.innerHTML = 'Passwords Do Not Match!';\r\n message.classList.add('password-error');\r\n document.getElementById('savePasswordBtn').classList.add('disabled');\r\n return 0;\r\n } else {\r\n message.innerHTML = '';\r\n message.classList.remove('password-error');\r\n document.getElementById('savePasswordBtn').classList.remove('disabled');\r\n return 1;\r\n }\r\n } else {\r\n //if both are null\r\n if (\r\n pass1.value.length === 0 &&\r\n pass2.value.length === 0 &&\r\n $.session.changePasswordLinkSelected === ''\r\n ) {\r\n message.innerHTML = 'Please enter and confirm a new password.';\r\n document.getElementById('savePasswordBtn').classList.add('disabled');\r\n return 0;\r\n }\r\n\r\n //is password strong?\r\n if (IsPasswordStrong(pass1.value) !== 1) {\r\n // specialCharDisplay. Remove the escape from backslash and quote.\r\n let specialCharDisplay = $.session.passwordSpecialCharacters.replaceAll(`\\\\\\\\`, `\\\\`);\r\n specialCharDisplay = specialCharDisplay.replaceAll(`\\\\\"`, `\"`);\r\n message.innerHTML = `Passwords must meet all of the following requirements: Be at least ${$.session.advancedPasswordLength} characters long, \r\n have a special character(${specialCharDisplay}), have a number, and include upper and lower case letters.`;\r\n document.getElementById('savePasswordBtn').classList.add('disabled');\r\n message.classList.add('password-error');\r\n return 0;\r\n }\r\n\r\n //passwords match?\r\n if (pass1.value === '' || pass2.value === '') {\r\n message.innerHTML = 'Please enter and confirm a new password.'; \r\n message.classList.add('password-error');\r\n document.getElementById('savePasswordBtn').classList.add('disabled');\r\n return 0;\r\n }\r\n //passwords match?\r\n if (pass1.value !== pass2.value) {\r\n message.innerHTML = 'Passwords Do Not Match!';\r\n message.classList.add('password-error');\r\n document.getElementById('savePasswordBtn').classList.add('disabled');\r\n return 0;\r\n } else {\r\n message.innerHTML = '';\r\n message.classList.remove('password-error');\r\n document.getElementById('savePasswordBtn').classList.remove('disabled');\r\n return 1;\r\n }\r\n }\r\n document.getElementById('savePasswordBtn').classList.remove('disabled');\r\n return 1;\r\n }\r\n\r\n function IsPasswordStrong(password) {\r\n let preSpecialCharCheckString = $.session.passwordSpecialCharacters;\r\n // Remove the escapes, and re-add escapes after the string has been re-joined with commas.\r\n preSpecialCharCheckString = preSpecialCharCheckString.replaceAll(`\\\\\\\\`, `\\\\`);\r\n preSpecialCharCheckString = preSpecialCharCheckString.replaceAll(`\\\\\"`, `\"`);\r\n const specCharNoCommas = preSpecialCharCheckString.split('');\r\n let withCommas = specCharNoCommas.join((separator = ','));\r\n // Add in escapes\r\n withCommas = withCommas.replaceAll(`\\\\`, `\\\\\\\\`);\r\n withCommas = withCommas.replaceAll(`/`, `\\\\/`);\r\n withCommas = withCommas.replaceAll(`-`, `\\\\-`);\r\n withCommas = withCommas.replaceAll(`]`, `\\\\]`);\r\n withCommas = withCommas.replaceAll(`[`, `\\\\[`);\r\n const specChar = new RegExp(`[${withCommas}]`, 'g');\r\n\r\n if (password.length < $.session.advancedPasswordLength) return 0;\r\n if (!password.match(/[a-z]/) || !password.match(/[A-Z]/)) return 0;\r\n if (!password.match(specChar)) return 0;\r\n if (/\\d/.test(password) === false) return 0;\r\n\r\n return 1;\r\n }\r\n\r\n //populate\r\n function populateTable(results, IsFirstLoad) {\r\n userTableData = results.map(td => {\r\n var userID = td.User_ID;\r\n var LastName = td.Last_Name;\r\n var FirstName = td.First_Name;\r\n var Active = td.Active;\r\n\r\n const additionalInformation = changePasswordBtn();\r\n additionalInformation.innerHTML = 'CHANGE PASSWORD';\r\n\r\n additionalInformation.style = 'margin-top: -10px; width: 200px;';\r\n const activeCheckbox = buildActiveChkBox(Active);\r\n activeCheckbox.style = \"padding-top: 2px; margin-left: 10px;\"; \r\n if ($.session.ResetPasswordUpdate) { \r\n activeCheckbox.classList.remove('disabled'); \r\n additionalInformation.classList.remove('disabled');\r\n } else {\r\n activeCheckbox.classList.add('disabled');\r\n additionalInformation.classList.add('disabled');\r\n }\r\n\r\n return {\r\n id: userID,\r\n endIcon: additionalInformation.outerHTML,\r\n secondendIcon: activeCheckbox.outerHTML,\r\n FirstName: FirstName,\r\n LastName: LastName,\r\n Active: Active,\r\n values: [userID, LastName, FirstName],\r\n attributes: [\r\n { key: 'data-status', value: Active },\r\n { key: 'data-consumer-id', value: userID },\r\n ],\r\n endIconCallback: e => {\r\n if ($.session.ResetPasswordUpdate) {\r\n buildChangePasswordPopup(userID, FirstName, LastName);\r\n }\r\n },\r\n secondendIconCallback: e => {\r\n if ($.session.ResetPasswordUpdate) {\r\n setCheckUpdateUserStatus(Active, userID); \r\n } \r\n },\r\n };\r\n });\r\n if (IsFirstLoad) {\r\n tempUserTableData = userTableData;\r\n }\r\n table.populate(userTable, userTableData, false, true);\r\n }\r\n\r\n function buildRosterTopNav() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('roster-top-nav');\r\n\r\n SEARCH_BTN = buildSearchBtn(); \r\n INACTIVE_CHKBOX = buildInactiveChkBox();\r\n\r\n // custom search stuff\r\n SEARCH_WRAP = document.createElement('div');\r\n SEARCH_WRAP.classList.add('rosterSearch');\r\n SEARCH_INPUT = document.createElement('input');\r\n SEARCH_INPUT.setAttribute('placeholder', 'search users');\r\n SEARCH_WRAP.appendChild(SEARCH_BTN);\r\n SEARCH_WRAP.appendChild(SEARCH_INPUT);\r\n\r\n INACTIVE_CHKBOX.classList.add('chkBoxStyle'); \r\n var wrap1 = document.createElement('div');\r\n wrap1.classList.add('btnWrap');\r\n wrap1.appendChild(INACTIVE_CHKBOX);\r\n wrap1.appendChild(SEARCH_WRAP);\r\n\r\n INACTIVE_CHKBOX.addEventListener('change', event => {\r\n isChecked = event.target.checked;\r\n $.session.isActiveUsers = isChecked;\r\n });\r\n\r\n btnWrap.appendChild(wrap1);\r\n return btnWrap;\r\n }\r\n\r\n function setCheckForInactiveUser(input) {\r\n if (input.checked) {\r\n isChecked = true;\r\n } else {\r\n isChecked = false;\r\n }\r\n loadReviewPage(isChecked);\r\n }\r\n\r\n function setCheckUpdateUserStatus(active, id) {\r\n resetPasswordAjax.updateActiveInactiveUser(\r\n {\r\n isActive: active == 'Y' ? 'N' : 'Y',\r\n userId: id,\r\n },\r\n function (results, error) {\r\n populateTable(results, true);\r\n },\r\n );\r\n\r\n\r\n const passwordChangeConfPOPUP = POPUP.build({\r\n hideX: true,\r\n });\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(passwordChangeConfPOPUP);\r\n loadReviewPage(isChecked);\r\n },\r\n });\r\n okBtn.style.width = '100%';\r\n const message = document.createElement('p');\r\n if (active == 'Y') {\r\n message.innerText = 'The user has been de-activated and can no longer login to the website.';\r\n } else {\r\n message.innerText = 'The user has been reactivated and can login to the website.';\r\n }\r\n\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n passwordChangeConfPOPUP.appendChild(message);\r\n passwordChangeConfPOPUP.appendChild(okBtn);\r\n okBtn.focus();\r\n POPUP.show(passwordChangeConfPOPUP);\r\n }\r\n\r\n function tableUserSearch(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n displayedUsers = [];\r\n tempUserTableData.forEach(consumer => {\r\n var firstName = consumer.FirstName.toLowerCase();\r\n var lastName = consumer.LastName.toLowerCase();\r\n var userId = consumer.id.toLowerCase();\r\n var fullName = `${firstName} ${lastName} ${userId}`;\r\n var fullNameReversed = `${lastName} ${firstName} ${userId}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n var matchesNameReverse = fullNameReversed.indexOf(searchValue);\r\n\r\n if (matchesName !== -1 || matchesNameReverse !== -1) {\r\n consumerObj = {\r\n User_ID: consumer.id,\r\n First_Name: consumer.FirstName,\r\n Last_Name: consumer.LastName,\r\n Active: consumer.Active,\r\n };\r\n displayedUsers.push(consumerObj);\r\n }\r\n });\r\n populateTable(displayedUsers, false);\r\n }\r\n\r\n // load\r\n function loadReviewPage(active) {\r\n active = document.getElementById('chkInacive').checked;\r\n resetPasswordAjax.getActiveInactiveUserlist(\r\n {\r\n isActive: active == true ? 'N' : 'Y',\r\n },\r\n function (results, error) {\r\n populateTable(results, true);\r\n },\r\n );\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const resetPasswordAjax = (function () {\r\n\r\n function getActiveInactiveUserlist(dataObj, callback) {\r\n // dataObj = {IsInActive}\r\n // This gets data for reset password page to populate the user table\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getActiveInactiveUserDateJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"isActive\":\"' +\r\n dataObj.isActive +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getActiveInactiveUserDateJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n function changeUserPassword(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getUserCredDateJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"userId\":\"' +\r\n dataObj.UserID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getUserCredDateJSONResult;\r\n myObj = JSON.parse(res)\r\n getPassword = myObj[0].password;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/resetPassword/',\r\n data:\r\n '{\"userId\":\"' +\r\n dataObj.UserID +\r\n '\", \"hash\":\"' +\r\n $().crypt({\r\n method: 'md5',\r\n source: getPassword,\r\n }) +\r\n '\", \"newPassword\":\"' +\r\n dataObj.newPW +\r\n '\", \"changingToHashPassword\":\"' +\r\n $().crypt({\r\n method: 'md5',\r\n source: dataObj.confirmPW,\r\n }) +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n });\r\n },\r\n error: function (xhr, status, error) {\r\n },\r\n });\r\n }\r\n\r\n function updateActiveInactiveUser(dataObj, callback) {\r\n // dataObj = {IsInActive,userId}\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateActiveInactiveUser/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"isActive\":\"' +\r\n dataObj.isActive +\r\n '\",\"userId\":\"' +\r\n dataObj.userId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getActiveInactiveUserDateJSONResult;\r\n //callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n return {\r\n getActiveInactiveUserlist,\r\n changeUserPassword,\r\n updateActiveInactiveUser\r\n }\r\n})();","const assessmentHistory = (() => {\r\n //Inputs\r\n let filterRow;\r\n let assessmentEntriesTable;\r\n let filterPopup;\r\n var selectedConsumers;\r\n var selectedConsumersName;\r\n var selectedConsumersId;\r\n //filter\r\n let filterValues;\r\n\r\n let startDateFrom;\r\n let startDateTo;\r\n let endDateFrom;\r\n let endDateTo;\r\n let priorAuthApplFrom;\r\n let priorAuthApplTo;\r\n let priorAuthRecFrom;\r\n let priorAuthRecTo;\r\n\r\n\r\n let btnWrap;\r\n let methodologyValuesBtnWrap;\r\n let scoreValuesBtnWrap;\r\n let startDateBtnWrap;\r\n let endDateBtnWrap;\r\n let priorAuthApplyBtnWrap;\r\n let priorAuthRecBtnWrap;\r\n let priorAuthAmtFromBtnWrap;\r\n let priorAuthAmtToBtnWrap;\r\n let HistoryData;\r\n let groupedHistory;\r\n let historyGroupCount;\r\n let activeGroup;\r\n let loadMoreHistory = [];\r\n let chunkedArray;\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n filterValues = undefined;\r\n await loadAssessmentHistoryLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n authorizationLanding.load();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Build AssessmentHistory Module Landing Page \r\n async function loadAssessmentHistoryLanding() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n\r\n landingPage = document.createElement('div');\r\n\r\n selectedConsumersId = selectedConsumers[selectedConsumers.length - 1].id;\r\n const name = (\r\n await ConsumerFinancesAjax.getConsumerNameByID({\r\n token: $.session.Token,\r\n consumerId: selectedConsumersId,\r\n })\r\n ).getConsumerNameByIDResult;\r\n\r\n selectedConsumersName = name[0].FullName;\r\n buildNewFilterBtn();\r\n filterRow = document.createElement('div');\r\n filterRow.classList.add('filterElement');\r\n\r\n const filteredBy = buildFilteredBy();\r\n filterRow.appendChild(filteredBy);\r\n landingPage.appendChild(filterRow);\r\n assessmentEntriesTable = await buildAssessmentEntriesTable();\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = assessmentEntriesTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'date'); // Start Date\r\n headers[1].setAttribute('data-type', 'date'); // End Date\r\n headers[2].setAttribute('data-type', 'string'); // Methodology\r\n headers[3].setAttribute('data-type', 'string'); // Score \r\n headers[4].setAttribute('data-type', 'string'); // Beh mod \r\n headers[5].setAttribute('data-type', 'string'); // medicile mod\r\n headers[6].setAttribute('data-type', 'string'); // Dc Mod \r\n headers[7].setAttribute('data-type', 'string'); // CC Mod\r\n headers[8].setAttribute('data-type', 'date'); // Prior Auth Applied \r\n headers[9].setAttribute('data-type', 'date'); // Prior Auth Recieved\r\n headers[10].setAttribute('data-type', 'string'); // Prior Auth Amount \r\n\r\n LOAD_MORE_BTN = buildLoadMoreBtn();\r\n landingPage.appendChild(assessmentEntriesTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(assessmentEntriesTable);\r\n\r\n landingPage.appendChild(LOAD_MORE_BTN);\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n document.getElementById('loadMoreBtn').style.display = 'none';\r\n loadAssessmentHistoryPage();\r\n\r\n }\r\n\r\n // build the listing of Assessment Entries (based off of filter settings)\r\n async function buildAssessmentEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'assessmentHistoryTable',\r\n headline: 'Consumer: ' + selectedConsumersName,\r\n columnHeadings: ['Start Date', 'End Date', 'Methodology', 'Score', 'Behavior Mod?', 'Medical Mod?', 'DC Mod?', 'CC Mod?', 'Prior Auth Applied', 'Prior Auth Received', 'Prior Auth Amount'],\r\n endIcon: false,\r\n };\r\n\r\n return table.build(tableOptions);\r\n }\r\n\r\n async function loadAssessmentHistoryPage() {\r\n let assessmentEntries = await authorizationsAjax.getAssessmentEntriesAsync(\r\n selectedConsumersId,\r\n filterValues.methodology,\r\n filterValues.score,\r\n filterValues.startDateFrom,\r\n filterValues.startDateTo,\r\n filterValues.endDateFrom,\r\n filterValues.endDateTo,\r\n filterValues.priorAuthApplFrom,\r\n filterValues.priorAuthApplTo,\r\n filterValues.priorAuthRecFrom,\r\n filterValues.priorAuthRecTo,\r\n filterValues.priorAuthAmtFrom,\r\n filterValues.priorAuthAmtTo,\r\n );\r\n HistoryData = assessmentEntries.getAssessmentEntriesResult;\r\n groupHistoryData();\r\n }\r\n\r\n function populateTable(results) {\r\n let tableData = results.map((entry) => ({\r\n values: [entry.startDate == '' || entry.startDate == undefined ? '' : moment(entry.startDate).format('MM/DD/YYYY'), entry.endDate == '' || entry.endDate == undefined ? '' : moment(entry.endDate).format('MM/DD/YYYY'),\r\n entry.methodology, entry.score, entry.behaviorMod, entry.medicalMod, entry.DCMod, entry.CCMod, entry.priorAuthApplied == '' ? '' : moment(entry.priorAuthApplied).format('MM/DD/YYYY'),\r\n entry.priorAuthReceived == '' ? '' : moment(entry.priorAuthReceived).format('MM/DD/YYYY'), entry.priorAuthAmount == '' ? '' : '$' + numberWithCommas(entry.priorAuthAmount)],\r\n attributes: [{ key: 'Id', value: entry.ID }],\r\n }));\r\n table.populate(assessmentEntriesTable, tableData); \r\n if (!groupedHistory[activeGroup + 1]) {\r\n document.getElementById('loadMoreBtn').style.display = 'none';\r\n }\r\n else {\r\n document.getElementById('loadMoreBtn').style.display = 'block';\r\n }\r\n }\r\n\r\n function pouplateHistory() {\r\n loadMoreHistory = loadMoreHistory.concat(groupedHistory[activeGroup]);\r\n populateTable(loadMoreHistory);\r\n }\r\n\r\n async function groupHistoryData(history) {\r\n const chunkBy = 50;\r\n chunkedArray = history ? UTIL.chunkArray(history, chunkBy) : UTIL.chunkArray(HistoryData, chunkBy);\r\n groupedHistory = {};\r\n chunkedArray.forEach((a, index) => (groupedHistory[index] = a));\r\n const vendorKeys = Object.keys(groupedHistory);\r\n historyGroupCount = vendorKeys && vendorKeys.length;\r\n activeGroup = 0;\r\n loadMoreHistory = groupedHistory[activeGroup];\r\n populateTable(loadMoreHistory);\r\n }\r\n\r\n function buildLoadMoreBtn() {\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('loadMoreVendorBtn');\r\n const btn = button.build({\r\n id: 'loadMoreBtn',\r\n text: 'Load More...',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n activeGroup++;\r\n pouplateHistory();\r\n },\r\n });\r\n btnWrap.appendChild(btn);\r\n return btnWrap;\r\n }\r\n\r\n function numberWithCommas(x) {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n\r\n // build Filter button, which filters the data displayed on the Assessment History Entries Table\r\n function buildNewFilterBtn() {\r\n if (!filterValues) filterValues = {\r\n token: $.session.Token,\r\n methodology: '%',\r\n score: '%',\r\n startDateFrom: '%',//UTIL.formatDateFromDateObj(dates.subDays(new Date(), 730)), \r\n startDateTo: '%',\r\n endDateFrom: '%',\r\n endDateTo: '%',\r\n priorAuthApplFrom: '%',\r\n priorAuthApplTo: '%',\r\n priorAuthRecFrom: '%',\r\n priorAuthRecTo: '%',\r\n priorAuthAmtFrom: '',\r\n priorAuthAmtTo: '',\r\n methodologyValues: '%',\r\n scoreValues: '%',\r\n }\r\n }\r\n\r\n // build the display of the current Filter Settings (next to the Filter button) \r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n startDateFrom = filterValues.startDateFrom == '%' ? 'ALL' : moment(filterValues.startDateFrom, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n startDateTo = filterValues.startDateTo == '%' ? 'ALL' : moment(filterValues.startDateTo, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n endDateFrom = filterValues.endDateFrom == '%' ? 'ALL' : moment(filterValues.endDateFrom, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n endDateTo = filterValues.endDateTo == '%' ? 'ALL' : moment(filterValues.endDateTo, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n priorAuthApplFrom = filterValues.priorAuthApplFrom == '%' ? 'ALL' : moment(filterValues.priorAuthApplFrom, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n priorAuthApplTo = filterValues.priorAuthApplTo == '%' ? 'ALL' : moment(filterValues.priorAuthApplTo, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n priorAuthRecFrom = filterValues.priorAuthRecFrom == '%' ? 'ALL' : moment(filterValues.priorAuthRecFrom, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n priorAuthRecTo = filterValues.priorAuthRecTo == '%' ? 'ALL' : moment(filterValues.priorAuthRecTo, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet();\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n filteredBy.style.maxWidth = '100%';\r\n\r\n if (filterValues.methodologyValues === '%' || filterValues.methodologyValues === 'ALL') {\r\n btnWrap.appendChild(methodologyValuesBtnWrap);\r\n btnWrap.removeChild(methodologyValuesBtnWrap);\r\n } else {\r\n btnWrap.appendChild(methodologyValuesBtnWrap);\r\n }\r\n\r\n if (filterValues.scoreValues === '%' || filterValues.scoreValues === 'ALL') {\r\n btnWrap.appendChild(scoreValuesBtnWrap);\r\n btnWrap.removeChild(scoreValuesBtnWrap);\r\n } else {\r\n btnWrap.appendChild(scoreValuesBtnWrap);\r\n }\r\n\r\n if (startDateFrom == 'ALL' && startDateTo == 'ALL') {\r\n btnWrap.appendChild(startDateBtnWrap);\r\n btnWrap.removeChild(startDateBtnWrap);\r\n } else {\r\n btnWrap.appendChild(startDateBtnWrap);\r\n }\r\n\r\n if (endDateFrom === 'ALL' && endDateTo === 'ALL') {\r\n btnWrap.appendChild(endDateBtnWrap);\r\n btnWrap.removeChild(endDateBtnWrap);\r\n } else {\r\n btnWrap.appendChild(endDateBtnWrap);\r\n }\r\n\r\n if (priorAuthApplFrom === 'ALL' && priorAuthApplTo === 'ALL') {\r\n btnWrap.appendChild(priorAuthApplyBtnWrap);\r\n btnWrap.removeChild(priorAuthApplyBtnWrap);\r\n } else {\r\n btnWrap.appendChild(priorAuthApplyBtnWrap);\r\n }\r\n\r\n if (priorAuthRecFrom === 'ALL' && priorAuthRecTo === 'ALL') {\r\n btnWrap.appendChild(priorAuthRecBtnWrap);\r\n btnWrap.removeChild(priorAuthRecBtnWrap);\r\n } else {\r\n btnWrap.appendChild(priorAuthRecBtnWrap);\r\n }\r\n\r\n if (filterValues.priorAuthAmtFrom === '') {\r\n btnWrap.appendChild(priorAuthAmtFromBtnWrap);\r\n btnWrap.removeChild(priorAuthAmtFromBtnWrap);\r\n } else {\r\n btnWrap.appendChild(priorAuthAmtFromBtnWrap);\r\n }\r\n\r\n if (filterValues.priorAuthAmtTo === '') {\r\n btnWrap.appendChild(priorAuthAmtToBtnWrap);\r\n btnWrap.removeChild(priorAuthAmtToBtnWrap);\r\n } else {\r\n btnWrap.appendChild(priorAuthAmtToBtnWrap);\r\n }\r\n\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { buildFilterPopUp('ALL') },\r\n });\r\n\r\n methodologyValuesBtn = button.build({\r\n id: 'methodologyValuesBtn',\r\n text: 'Methodology: ' + filterValues.methodologyValues,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('methodologyValuesBtn') },\r\n });\r\n methodologyValuesCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('methodologyValuesBtn') },\r\n });\r\n\r\n scoreValuesBtn = button.build({\r\n id: 'scoreValuesBtn',\r\n text: 'Score: ' + filterValues.scoreValues,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('scoreValuesBtn') },\r\n });\r\n scoreValuesCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('scoreValuesBtn') },\r\n });\r\n\r\n startDateBtn = button.build({\r\n id: 'startDateBtn',\r\n text: 'Start Date: ' + startDateFrom + '-' + startDateTo,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('startDateBtn') },\r\n });\r\n startDateCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('startDateBtn') },\r\n });\r\n\r\n endDateBtn = button.build({\r\n id: 'endDateBtn',\r\n text: 'End Date: ' + endDateFrom + '-' + endDateTo,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('endDateBtn') },\r\n });\r\n endDateCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('endDateBtn') },\r\n });\r\n\r\n priorAuthApplyBtn = button.build({\r\n id: 'priorAuthApplyBtn',\r\n text: 'Prior Auth Applied: ' + priorAuthApplFrom + '-' + priorAuthApplTo,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('priorAuthApplyBtn') },\r\n });\r\n priorAuthApplyCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('priorAuthApplyBtn') },\r\n });\r\n\r\n priorAuthRecBtn = button.build({\r\n id: 'priorAuthRecBtn',\r\n text: 'Prior Auth Received: ' + priorAuthRecFrom + '-' + priorAuthRecTo,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('priorAuthRecBtn') },\r\n });\r\n priorAuthRecCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('priorAuthRecBtn') },\r\n });\r\n\r\n priorAuthAmtFromBtn = button.build({\r\n id: 'priorAuthAmtFromBtn',\r\n text: 'Prior Auth Amount From: $' + numberWithCommas(filterValues.priorAuthAmtFrom),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('priorAuthAmtFromBtn') },\r\n });\r\n priorAuthAmtFromCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('priorAuthAmtFromBtn') },\r\n });\r\n\r\n priorAuthAmtToBtn = button.build({\r\n id: 'priorAuthAmtToBtn',\r\n text: 'Prior Auth Amount To: $' + numberWithCommas(filterValues.priorAuthAmtTo),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('priorAuthAmtToBtn') },\r\n });\r\n priorAuthAmtToCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('priorAuthAmtToBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n methodologyValuesBtnWrap = document.createElement('div');\r\n methodologyValuesBtnWrap.classList.add('filterSelectionBtnWrap');\r\n methodologyValuesBtnWrap.appendChild(methodologyValuesBtn);\r\n methodologyValuesBtnWrap.appendChild(methodologyValuesCloseBtn);\r\n btnWrap.appendChild(methodologyValuesBtnWrap);\r\n\r\n scoreValuesBtnWrap = document.createElement('div');\r\n scoreValuesBtnWrap.classList.add('filterSelectionBtnWrap');\r\n scoreValuesBtnWrap.appendChild(scoreValuesBtn);\r\n scoreValuesBtnWrap.appendChild(scoreValuesCloseBtn);\r\n btnWrap.appendChild(scoreValuesBtnWrap);\r\n\r\n startDateBtnWrap = document.createElement('div');\r\n startDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n startDateBtnWrap.appendChild(startDateBtn);\r\n startDateBtnWrap.appendChild(startDateCloseBtn);\r\n btnWrap.appendChild(startDateBtnWrap);\r\n\r\n endDateBtnWrap = document.createElement('div');\r\n endDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n endDateBtnWrap.appendChild(endDateBtn);\r\n endDateBtnWrap.appendChild(endDateCloseBtn)\r\n btnWrap.appendChild(endDateBtnWrap);\r\n\r\n priorAuthApplyBtnWrap = document.createElement('div');\r\n priorAuthApplyBtnWrap.classList.add('filterSelectionBtnWrap');\r\n priorAuthApplyBtnWrap.appendChild(priorAuthApplyBtn);\r\n priorAuthApplyBtnWrap.appendChild(priorAuthApplyCloseBtn);\r\n btnWrap.appendChild(priorAuthApplyBtnWrap);\r\n\r\n priorAuthRecBtnWrap = document.createElement('div');\r\n priorAuthRecBtnWrap.classList.add('filterSelectionBtnWrap');\r\n priorAuthRecBtnWrap.appendChild(priorAuthRecBtn);\r\n priorAuthRecBtnWrap.appendChild(priorAuthRecCloseBtn);\r\n btnWrap.appendChild(priorAuthRecBtnWrap);\r\n\r\n priorAuthAmtFromBtnWrap = document.createElement('div');\r\n priorAuthAmtFromBtnWrap.classList.add('filterSelectionBtnWrap');\r\n priorAuthAmtFromBtnWrap.appendChild(priorAuthAmtFromBtn);\r\n priorAuthAmtFromBtnWrap.appendChild(priorAuthAmtFromCloseBtn)\r\n btnWrap.appendChild(priorAuthAmtFromBtnWrap);\r\n\r\n priorAuthAmtToBtnWrap = document.createElement('div');\r\n priorAuthAmtToBtnWrap.classList.add('filterSelectionBtnWrap');\r\n priorAuthAmtToBtnWrap.appendChild(priorAuthAmtToBtn);\r\n priorAuthAmtToBtnWrap.appendChild(priorAuthAmtToCloseBtn);\r\n btnWrap.appendChild(priorAuthAmtToBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n\r\n if (closeFilter == 'methodologyValuesBtn') {\r\n filterValues.methodologyValues = '%';\r\n filterValues.methodology = '%';\r\n }\r\n if (closeFilter == 'scoreValuesBtn') {\r\n filterValues.scoreValues = '%';\r\n filterValues.score = '%';\r\n }\r\n if (closeFilter == 'priorAuthApplyBtn') {\r\n filterValues.priorAuthApplFrom = '%';\r\n filterValues.priorAuthApplTo = '%';\r\n }\r\n if (closeFilter == 'priorAuthRecBtn') {\r\n filterValues.priorAuthRecFrom = '%';\r\n filterValues.priorAuthRecTo = '%';\r\n }\r\n if (closeFilter == 'endDateBtn') {\r\n filterValues.endDateFrom = '%';\r\n filterValues.endDateTo = '%';\r\n }\r\n if (closeFilter == 'priorAuthAmtFromBtn') {\r\n filterValues.priorAuthAmtFrom = '';\r\n }\r\n if (closeFilter == 'priorAuthAmtToBtn') {\r\n filterValues.priorAuthAmtTo = '';\r\n }\r\n if (closeFilter == 'startDateBtn') {\r\n filterValues.startDateFrom = '%';\r\n filterValues.startDateTo = '%';\r\n }\r\n\r\n\r\n\r\n loadAssessmentHistoryLanding();\r\n }\r\n\r\n // build Filter pop-up that displays when an \"Filter\" button is clicked\r\n function buildFilterPopUp(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n // dropdowns & inputs \r\n methodologyDropdown = dropdown.build({\r\n id: 'methodologyDropdown',\r\n label: \"Methodology\",\r\n dropdownId: \"methodologyDropdown\",\r\n });\r\n\r\n scoreDropdown = dropdown.build({\r\n id: 'scoreDropdown',\r\n label: \"Score\",\r\n dropdownId: \"scoreDropdown\",\r\n });\r\n\r\n startDateFrom = input.build({\r\n id: 'startDateFrom',\r\n type: 'date',\r\n label: 'Start Date From',\r\n style: 'secondary',\r\n value: filterValues.startDateFrom,\r\n });\r\n\r\n startDateTo = input.build({\r\n id: 'startDateTo',\r\n type: 'date',\r\n label: 'Start Date To',\r\n style: 'secondary',\r\n value: filterValues.startDateTo,\r\n });\r\n\r\n endDateFrom = input.build({\r\n id: 'endDateFrom',\r\n type: 'date',\r\n label: 'End Date From',\r\n style: 'secondary',\r\n value: filterValues.endDateFrom,\r\n });\r\n\r\n endDateTo = input.build({\r\n id: 'endDateTo',\r\n type: 'date',\r\n label: 'End Date To',\r\n style: 'secondary',\r\n value: filterValues.endDateTo,\r\n });\r\n\r\n priorAuthApplFrom = input.build({\r\n id: 'priorAuthApplFrom',\r\n type: 'date',\r\n label: 'Prior Auth Appl From',\r\n style: 'secondary',\r\n value: filterValues.priorAuthApplFrom,\r\n });\r\n\r\n priorAuthApplTo = input.build({\r\n id: 'priorAuthApplTo',\r\n type: 'date',\r\n label: 'Prior Auth Appl To',\r\n style: 'secondary',\r\n value: filterValues.priorAuthApplTo,\r\n });\r\n\r\n priorAuthRecFrom = input.build({\r\n id: 'priorAuthRecFrom',\r\n type: 'date',\r\n label: 'Prior Auth Rec From',\r\n style: 'secondary',\r\n value: filterValues.priorAuthRecFrom,\r\n });\r\n\r\n priorAuthRecTo = input.build({\r\n id: 'priorAuthRecTo',\r\n type: 'date',\r\n label: 'Prior Auth Rec To',\r\n style: 'secondary',\r\n value: filterValues.priorAuthRecTo,\r\n });\r\n\r\n priorAuthAmtFrom = input.build({\r\n id: 'priorAuthAmtFrom',\r\n type: 'text',\r\n label: 'Prior Auth Amt From',\r\n style: 'secondary',\r\n value: '$' + ((filterValues.priorAuthAmtFrom) ? filterValues.priorAuthAmtFrom : ''),\r\n });\r\n\r\n priorAuthAmtTo = input.build({\r\n id: 'priorAuthAmtTo',\r\n type: 'text',\r\n label: 'Prior Auth Amt To',\r\n style: 'secondary',\r\n value: '$' + ((filterValues.priorAuthAmtTo) ? filterValues.priorAuthAmtTo : ''),\r\n });\r\n\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => filterPopupCancelBtn()\r\n });\r\n\r\n var startDateWrap = document.createElement('div');\r\n startDateWrap.classList.add('dateWrap');\r\n startDateWrap.appendChild(startDateFrom);\r\n startDateWrap.appendChild(startDateTo);\r\n\r\n var endDateWrap = document.createElement('div');\r\n endDateWrap.classList.add('dateWrap');\r\n endDateWrap.appendChild(endDateFrom);\r\n endDateWrap.appendChild(endDateTo);\r\n\r\n var applDateWrap = document.createElement('div');\r\n applDateWrap.classList.add('dateWrap');\r\n applDateWrap.appendChild(priorAuthApplFrom);\r\n applDateWrap.appendChild(priorAuthApplTo);\r\n\r\n var recDateWrap = document.createElement('div');\r\n recDateWrap.classList.add('dateWrap');\r\n recDateWrap.appendChild(priorAuthRecFrom);\r\n recDateWrap.appendChild(priorAuthRecTo);\r\n\r\n var amtWrap = document.createElement('div');\r\n amtWrap.classList.add('dateWrap');\r\n if (IsShow == 'ALL' || IsShow == 'priorAuthAmtFromBtn')\r\n amtWrap.appendChild(priorAuthAmtFrom);\r\n if (IsShow == 'ALL' || IsShow == 'priorAuthAmtToBtn')\r\n amtWrap.appendChild(priorAuthAmtTo);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'methodologyValuesBtn')\r\n filterPopup.appendChild(methodologyDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'scoreValuesBtn')\r\n filterPopup.appendChild(scoreDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'startDateBtn')\r\n filterPopup.appendChild(startDateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'endDateBtn')\r\n filterPopup.appendChild(endDateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'priorAuthApplyBtn')\r\n filterPopup.appendChild(applDateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'priorAuthRecBtn')\r\n filterPopup.appendChild(recDateWrap);\r\n\r\n filterPopup.appendChild(amtWrap);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(filterPopup);\r\n eventListeners();\r\n populateFilterDropdown();\r\n checkRequiredFieldsOfFilter();\r\n }\r\n\r\n // binding filter events \r\n function eventListeners() {\r\n var tmpMethodology;\r\n var tmpScore;\r\n var tmpStartDateFrom;\r\n var tmpStartDateTo;\r\n var tmpEndDateFrom;\r\n var tmpEndDateTo;\r\n var tmpPriorAuthApplFrom;\r\n var tmpPriorAuthApplTo;\r\n var tmpPriorAuthRecFrom;\r\n var tmpPriorAuthRecTo;\r\n var tmpPriorAuthAmtFrom;\r\n var tmpPriorAuthAmtTo;\r\n\r\n methodologyDropdown.addEventListener('change', event => {\r\n tmpMethodology = event.target.value;\r\n filterValues.methodologyValues = event.target.options[event.target.selectedIndex].innerHTML;\r\n populateScoreDropdown(tmpMethodology)\r\n });\r\n scoreDropdown.addEventListener('change', event => {\r\n tmpScore = event.target.value;\r\n filterValues.scoreValues = event.target.options[event.target.selectedIndex].innerHTML;\r\n });\r\n\r\n startDateFrom.addEventListener('change', event => {\r\n tmpStartDateFrom = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n startDateTo.addEventListener('change', event => {\r\n tmpStartDateTo = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n\r\n endDateFrom.addEventListener('change', event => {\r\n tmpEndDateFrom = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n endDateTo.addEventListener('change', event => {\r\n tmpEndDateTo = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n\r\n priorAuthApplFrom.addEventListener('change', event => {\r\n tmpPriorAuthApplFrom = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n priorAuthApplTo.addEventListener('change', event => {\r\n tmpPriorAuthApplTo = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n\r\n priorAuthRecFrom.addEventListener('change', event => {\r\n tmpPriorAuthRecFrom = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n priorAuthRecTo.addEventListener('change', event => {\r\n tmpPriorAuthRecTo = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n\r\n priorAuthAmtFrom.addEventListener('input', event => {\r\n minAmount = event.target.value;\r\n tmpPriorAuthAmtFrom = minAmount.trim().replace('$', '');\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(minAmount)) {\r\n document.getElementById('priorAuthAmtFrom').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n }\r\n else if (minAmount.includes('.') && (minAmount.match(/\\./g).length > 1 || minAmount.toString().split('.')[1].length > 2)) {\r\n document.getElementById('priorAuthAmtFrom').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n }\r\n checkRequiredFieldsOfFilter();\r\n });\r\n\r\n priorAuthAmtTo.addEventListener('input', event => {\r\n maxAmount = event.target.value;\r\n tmpPriorAuthAmtTo = maxAmount.trim().replace('$', '');\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(maxAmount)) {\r\n document.getElementById('priorAuthAmtTo').value = maxAmount.substring(0, maxAmount.length - 1);\r\n return;\r\n }\r\n else if (maxAmount.includes('.') && (maxAmount.match(/\\./g).length > 1 || maxAmount.toString().split('.')[1].length > 2)) {\r\n document.getElementById('priorAuthAmtTo').value = maxAmount.substring(0, maxAmount.length - 1);\r\n return;\r\n }\r\n checkRequiredFieldsOfFilter();\r\n });\r\n\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n updateFilterData({\r\n tmpMethodology,\r\n tmpScore,\r\n tmpStartDateFrom,\r\n tmpStartDateTo,\r\n tmpEndDateFrom,\r\n tmpEndDateTo,\r\n tmpPriorAuthApplFrom,\r\n tmpPriorAuthApplTo,\r\n tmpPriorAuthRecFrom,\r\n tmpPriorAuthRecTo,\r\n tmpPriorAuthAmtFrom,\r\n tmpPriorAuthAmtTo\r\n });\r\n\r\n POPUP.hide(filterPopup);\r\n loadAssessmentHistoryLanding();\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfFilter() {\r\n\r\n var newStartDateFrom = startDateFrom.querySelector('#startDateFrom');\r\n var newStartDateTo = startDateTo.querySelector('#startDateTo');\r\n var newEndDateFrom = endDateFrom.querySelector('#endDateFrom');\r\n var newEndDateTo = endDateTo.querySelector('#endDateTo');\r\n var newPriorAuthApplFrom = priorAuthApplFrom.querySelector('#priorAuthApplFrom');\r\n var newPriorAuthApplTo = priorAuthApplTo.querySelector('#priorAuthApplTo');\r\n var newPriorAuthRecFrom = priorAuthRecFrom.querySelector('#priorAuthRecFrom');\r\n var newPriorAuthRecTo = priorAuthRecTo.querySelector('#priorAuthRecTo');\r\n var newPriorAuthAmtFrom = parseInt(priorAuthAmtFrom.querySelector('#priorAuthAmtFrom').value.replace('$', ''));\r\n var newPriorAuthAmtTo = parseInt(priorAuthAmtTo.querySelector('#priorAuthAmtTo').value.replace('$', ''));\r\n\r\n if (newStartDateTo.value != '' && newStartDateFrom.value > newStartDateTo.value) {\r\n startDateTo.classList.add('errorPopup');\r\n } else {\r\n startDateTo.classList.remove('errorPopup');\r\n }\r\n\r\n if (newEndDateTo.value != '' && newEndDateFrom.value > newEndDateTo.value) {\r\n endDateTo.classList.add('errorPopup');\r\n } else {\r\n endDateTo.classList.remove('errorPopup');\r\n }\r\n\r\n if (newPriorAuthApplTo.value != '' && newPriorAuthApplFrom.value > newPriorAuthApplTo.value) {\r\n priorAuthApplTo.classList.add('errorPopup');\r\n } else {\r\n priorAuthApplTo.classList.remove('errorPopup');\r\n }\r\n\r\n if (newPriorAuthRecTo.value != '' && newPriorAuthRecFrom.value > newPriorAuthRecTo.value) {\r\n priorAuthRecTo.classList.add('errorPopup');\r\n } else {\r\n priorAuthRecTo.classList.remove('errorPopup');\r\n }\r\n\r\n if (newPriorAuthAmtTo != '' && newPriorAuthAmtFrom > newPriorAuthAmtTo) {\r\n priorAuthAmtTo.classList.add('errorPopup');\r\n } else {\r\n priorAuthAmtTo.classList.remove('errorPopup');\r\n }\r\n\r\n setBtnStatusOfFilter();\r\n }\r\n\r\n function setBtnStatusOfFilter() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tmpMethodology) filterValues.methodology = data.tmpMethodology;\r\n if (data.tmpScore) filterValues.score = data.tmpScore;\r\n if (data.tmpStartDateFrom != undefined) filterValues.startDateFrom = data.tmpStartDateFrom;\r\n if (data.tmpStartDateTo != undefined) filterValues.startDateTo = data.tmpStartDateTo;\r\n if (data.tmpEndDateFrom != undefined) filterValues.endDateFrom = data.tmpEndDateFrom;\r\n if (data.tmpEndDateTo != undefined) filterValues.endDateTo = data.tmpEndDateTo;\r\n if (data.tmpPriorAuthApplFrom != undefined) filterValues.priorAuthApplFrom = data.tmpPriorAuthApplFrom;\r\n if (data.tmpPriorAuthApplTo != undefined) filterValues.priorAuthApplTo = data.tmpPriorAuthApplTo;\r\n if (data.tmpPriorAuthRecFrom != undefined) filterValues.priorAuthRecFrom = data.tmpPriorAuthRecFrom;\r\n if (data.tmpPriorAuthRecTo != undefined) filterValues.priorAuthRecTo = data.tmpPriorAuthRecTo;\r\n if (data.tmpPriorAuthAmtFrom != undefined) filterValues.priorAuthAmtFrom = data.tmpPriorAuthAmtFrom;\r\n if (data.tmpPriorAuthAmtTo != undefined) filterValues.priorAuthAmtTo = data.tmpPriorAuthAmtTo;\r\n\r\n if (data.tmpStartDateFrom == '') filterValues.startDateFrom = '%';\r\n if (data.tmpStartDateTo == '') filterValues.startDateTo = '%';\r\n if (data.tmpEndDateFrom == '') filterValues.endDateFrom = '%';\r\n if (data.tmpEndDateTo == '') filterValues.endDateTo = '%';\r\n if (data.tmpPriorAuthApplFrom == '') filterValues.priorAuthApplFrom = '%';\r\n if (data.tmpPriorAuthApplTo == '') filterValues.priorAuthApplTo = '%';\r\n if (data.tmpPriorAuthRecFrom == '') filterValues.priorAuthRecFrom = '%';\r\n if (data.tmpPriorAuthRecTo == '') filterValues.priorAuthRecTo = '%';\r\n }\r\n\r\n function populateFilterDropdown() {\r\n const methData = ([\r\n { id: 1, value: 'D', text: 'Day Services' },\r\n { id: 2, value: 'L', text: 'Level One Waiver' },\r\n { id: 3, value: 'S', text: 'Self Waiver' },\r\n { id: 4, value: 'W', text: 'Waiver Reimbursement' },\r\n ]);\r\n methData.unshift({ id: '%', value: '%', text: 'ALL' });\r\n dropdown.populate(\"methodologyDropdown\", methData, filterValues.methodology);\r\n populateScoreDropdown(filterValues.methodology);\r\n }\r\n\r\n async function populateScoreDropdown(methodologyID) {\r\n const {\r\n getScoreResult: Score,\r\n } = await authorizationsAjax.getScoreAsync(methodologyID);\r\n let scoreData = Score.map((score) => ({\r\n id: score.scoreID,\r\n value: score.scoreDescription,\r\n text: score.scoreDescription\r\n }));\r\n scoreData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"scoreDropdown\", scoreData, filterValues.score);\r\n }\r\n\r\n function filterPopupCancelBtn() {\r\n POPUP.hide(filterPopup);\r\n }\r\n\r\n function init() {\r\n setActiveModuleSectionAttribute('assessmentHistory');\r\n $.loadedApp = 'assessmentHistory';\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadAssessmentHistoryLanding,\r\n };\r\n})(); \r\n","var authorizationLanding = (function () {\r\n function loadAuthorizationLanding() {\r\n let pasBtn = button.build({\r\n text: 'PAS',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: authorizations.init\r\n });\r\n\r\n let assessmentHistoryBtn = button.build({\r\n text: 'ASSESSMENT HISTORY',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: assessmentHistory.init\r\n });\r\n let vendorInfoBtn = button.build({\r\n text: 'VENDOR INFO',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: vendorInfo.init \r\n });\r\n\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n btnWrap.appendChild(pasBtn);\r\n btnWrap.appendChild(assessmentHistoryBtn);\r\n if ($.session.authorizationsVendorInfoView)\r\n btnWrap.appendChild(vendorInfoBtn); \r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n\r\n function init() {\r\n $.loadedApp = 'authorizations';\r\n setActiveModuleAttribute('authorizations');\r\n DOM.clearActionCenter();\r\n loadAuthorizationLanding();\r\n }\r\n\r\n return {\r\n load: init,\r\n }\r\n})();","const authorizations = (function () {\r\n // DATA\r\n let authData;\r\n let filterDropdownData;\r\n let selectedConsumer;\r\n let filterValues;\r\n // DOM\r\n let pageWrap;\r\n let overviewTable;\r\n //--\r\n let filterPopup;\r\n let planTypeDropdown;\r\n let vendorDropdown;\r\n let matchSourceDropdown;\r\n let completedDateStart;\r\n let completedDateEnd;\r\n let yearStartStart;\r\n let yearStartEnd;\r\n let yearEndStart;\r\n let yearEndEnd;\r\n let applyFilterBtn;\r\n\r\n let btnWrap;\r\n let plantypeBtnWrap;\r\n let vendorBtnWrap;\r\n let matchSourceBtnWrap;\r\n let completedDateBtnWrap;\r\n let yearStartBtnWrap;\r\n let yearEndBtnWrap;\r\n\r\n let newFilterValues;\r\n\r\n function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n selectedConsumer = roster2.getActiveConsumers()[0];\r\n DOM.clearActionCenter();\r\n loadPage();\r\n DOM.toggleNavLayout();\r\n\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n authorizationLanding.load();\r\n break;\r\n }\r\n }\r\n }\r\n function clearAllData() {\r\n // DATA\r\n authData = undefined;\r\n filterDropdownData = undefined;\r\n selectedConsumer = undefined;\r\n filterValues = undefined;\r\n pageWrap = undefined;\r\n overviewTable = undefined;\r\n filterPopup = undefined;\r\n planTypeDropdown = undefined;\r\n vendorDropdown = undefined;\r\n matchSourceDropdown = undefined;\r\n completedDateStartInput = undefined;\r\n completedDateEndInput = undefined;\r\n yearStartStartInput = undefined;\r\n yearStartEndInput = undefined;\r\n yearEndStartInput = undefined;\r\n yearEndEndInput = undefined;\r\n applyFilterBtn = undefined;\r\n }\r\n function groupChildData() {\r\n if (!authData.pageDataChild) {\r\n return;\r\n }\r\n\r\n const groupedChildren = authData.pageDataChild.reduce((obj, child) => {\r\n if (!obj[child.pas_id]) {\r\n obj[child.pas_id] = [];\r\n obj[child.pas_id].push(child);\r\n } else {\r\n obj[child.pas_id].push(child);\r\n }\r\n\r\n return obj;\r\n }, {});\r\n\r\n authData.pageDataChild = { ...groupedChildren };\r\n }\r\n function convertToCurrency(dirtyNumber) {\r\n const numberValue = parseFloat(dirtyNumber);\r\n\r\n return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(\r\n numberValue,\r\n );\r\n }\r\n function getFreqName(key) {\r\n const freqObj = {\r\n W: 'Week',\r\n S: 'Span',\r\n D: 'Day',\r\n M: 'Month',\r\n N: 'None',\r\n };\r\n\r\n return freqObj[key];\r\n }\r\n function formatDate(date) {\r\n if (!date) return '';\r\n\r\n return UTIL.abbreviateDateYear(UTIL.formatDateFromIso(date.split('T')[0]));\r\n }\r\n\r\n // Filter Popup\r\n //----------------------------------------\r\n function initFilterValues() {\r\n filterValues = {\r\n planType: '%',\r\n vendor: '%',\r\n matchSource: '%',\r\n completedDateStart: dates\r\n .formatISO(dates.subYears(new Date(new Date().setHours(0, 0, 0, 0)), 2))\r\n .slice(0, 10),\r\n completedDateEnd: dates.formatISO(new Date(new Date().setHours(0, 0, 0, 0))).slice(0, 10),\r\n yearStartStart: dates\r\n .formatISO(dates.subYears(new Date(new Date().setHours(0, 0, 0, 0)), 2))\r\n .slice(0, 10),\r\n yearStartEnd: dates\r\n .formatISO(dates.addYears(new Date(new Date().setHours(0, 0, 0, 0)), 1))\r\n .slice(0, 10),\r\n yearEndStart: '', //dates.formatISO(new Date(new Date().setHours(0, 0, 0, 0))).slice(0, 10),\r\n yearEndEnd: '', //dates.formatISO(dates.addYears(new Date(new Date().setHours(0, 0, 0, 0)), 1)).slice(0, 10),\r\n };\r\n }\r\n function buildFilteredByData() {\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n\r\n completedDateStart = `${formatDate(filterValues.completedDateStart)}`;\r\n completedDateEnd = `${formatDate(filterValues.completedDateEnd)}`;\r\n yearStartStart = `${formatDate(filterValues.yearStartStart)}`;\r\n yearStartEnd = `${formatDate(filterValues.yearStartEnd)}`;\r\n yearEndStart = `${formatDate(filterValues.yearEndStart)}`;\r\n yearEndEnd = `${formatDate(filterValues.yearEndEnd)}`;\r\n\r\n if (!currentFilterDisplay) {\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n filterButtonSet();\r\n currentFilterDisplay.appendChild(btnWrap);\r\n }\r\n\r\n if (getPlanTypeFullName(filterValues.planType) === 'All') {\r\n btnWrap.appendChild(plantypeBtnWrap);\r\n btnWrap.removeChild(plantypeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(plantypeBtnWrap);\r\n if (document.getElementById('plantypeBtn') != null)\r\n document.getElementById('plantypeBtn').innerHTML = 'Plan Type: ' + getPlanTypeFullName(filterValues.planType);\r\n }\r\n\r\n if (getVendorFullName(filterValues.vendor) === 'All') {\r\n btnWrap.appendChild(vendorBtnWrap);\r\n btnWrap.removeChild(vendorBtnWrap);\r\n } else {\r\n btnWrap.appendChild(vendorBtnWrap);\r\n if (document.getElementById('vendorBtn') != null)\r\n document.getElementById('vendorBtn').innerHTML = 'PL Vendor: ' + getVendorFullName(filterValues.vendor);\r\n }\r\n\r\n if (getMatchSourceName(filterValues.matchSource) === 'All') {\r\n btnWrap.appendChild(matchSourceBtnWrap);\r\n btnWrap.removeChild(matchSourceBtnWrap);\r\n } else {\r\n btnWrap.appendChild(matchSourceBtnWrap);\r\n if (document.getElementById('matchSourceBtn') != null)\r\n document.getElementById('matchSourceBtn').innerHTML = 'Match Source: ' + getMatchSourceName(filterValues.matchSource);\r\n }\r\n\r\n if (completedDateStart == '' && completedDateEnd == '') {\r\n btnWrap.appendChild(completedDateBtnWrap);\r\n btnWrap.removeChild(completedDateBtnWrap);\r\n } else {\r\n btnWrap.appendChild(completedDateBtnWrap);\r\n if (document.getElementById('completedDateBtn') != null)\r\n document.getElementById('completedDateBtn').innerHTML = 'Completed Dates: ' + completedDateStart + '-' + completedDateEnd;\r\n }\r\n\r\n if (yearStartStart === '' && yearStartEnd === '') {\r\n btnWrap.appendChild(yearStartBtnWrap);\r\n btnWrap.removeChild(yearStartBtnWrap);\r\n } else {\r\n btnWrap.appendChild(yearStartBtnWrap);\r\n if (document.getElementById('yearStartBtn') != null)\r\n document.getElementById('yearStartBtn').innerHTML = 'Year Start: ' + yearStartStart + '-' + yearStartEnd;\r\n }\r\n\r\n if (yearEndStart === '' && yearEndEnd === '') {\r\n btnWrap.appendChild(yearEndBtnWrap);\r\n btnWrap.removeChild(yearEndBtnWrap);\r\n } else {\r\n btnWrap.appendChild(yearEndBtnWrap);\r\n if (document.getElementById('yearEndBtn') != null)\r\n document.getElementById('yearEndBtn').innerHTML = 'Year End: ' + yearEndStart + '-' + yearEndEnd;\r\n }\r\n\r\n return currentFilterDisplay;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { showFilterPopup('ALL') },\r\n });\r\n\r\n plantypeBtn = button.build({\r\n id: 'plantypeBtn',\r\n text: 'Plan Type: ' + getPlanTypeFullName(filterValues.planType),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('plantypeBtn') },\r\n });\r\n plantypeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('plantypeBtn') },\r\n });\r\n\r\n vendorBtn = button.build({\r\n id: 'vendorBtn',\r\n text: 'PL Vendor: ' + getVendorFullName(filterValues.vendor),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('vendorBtn') },\r\n });\r\n vendorCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('vendorBtn') },\r\n });\r\n\r\n matchSourceBtn = button.build({\r\n id: 'matchSourceBtn',\r\n text: 'Match Source: ' + getMatchSourceName(filterValues.matchSource),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('matchSourceBtn') },\r\n });\r\n matchSourceCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('matchSourceBtn') },\r\n });\r\n\r\n completedDateBtn = button.build({\r\n id: 'completedDateBtn',\r\n text: 'Completed Dates: ' + completedDateStart + '-' + completedDateEnd,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('completedDateBtn') },\r\n });\r\n\r\n yearStartBtn = button.build({\r\n id: 'yearStartBtn',\r\n text: 'Year start: ' + yearStartStart + '-' + yearStartEnd,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('yearStartBtn') },\r\n });\r\n\r\n yearEndBtn = button.build({\r\n id: 'yearEndBtn',\r\n text: 'Year End: ' + yearEndStart + '-' + yearEndEnd,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('yearEndBtn') },\r\n });\r\n yearEndCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('yearEndBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n plantypeBtnWrap = document.createElement('div');\r\n plantypeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n plantypeBtnWrap.appendChild(plantypeBtn);\r\n plantypeBtnWrap.appendChild(plantypeCloseBtn);\r\n btnWrap.appendChild(plantypeBtnWrap);\r\n\r\n vendorBtnWrap = document.createElement('div');\r\n vendorBtnWrap.classList.add('filterSelectionBtnWrap');\r\n vendorBtnWrap.appendChild(vendorBtn);\r\n vendorBtnWrap.appendChild(vendorCloseBtn);\r\n btnWrap.appendChild(vendorBtnWrap);\r\n\r\n matchSourceBtnWrap = document.createElement('div');\r\n matchSourceBtnWrap.classList.add('filterSelectionBtnWrap');\r\n matchSourceBtnWrap.appendChild(matchSourceBtn);\r\n matchSourceBtnWrap.appendChild(matchSourceCloseBtn);\r\n btnWrap.appendChild(matchSourceBtnWrap);\r\n\r\n completedDateBtnWrap = document.createElement('div');\r\n completedDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n completedDateBtnWrap.appendChild(completedDateBtn);\r\n btnWrap.appendChild(completedDateBtnWrap);\r\n\r\n yearStartBtnWrap = document.createElement('div');\r\n yearStartBtnWrap.classList.add('filterSelectionBtnWrap');\r\n yearStartBtnWrap.appendChild(yearStartBtn);\r\n btnWrap.appendChild(yearStartBtnWrap);\r\n\r\n yearEndBtnWrap = document.createElement('div');\r\n yearEndBtnWrap.classList.add('filterSelectionBtnWrap');\r\n yearEndBtnWrap.appendChild(yearEndBtn);\r\n yearEndBtnWrap.appendChild(yearEndCloseBtn);\r\n btnWrap.appendChild(yearEndBtnWrap);\r\n\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'plantypeBtn') {\r\n filterValues.planType = '%';\r\n newFilterValues.planType = '%';\r\n }\r\n if (closeFilter == 'vendorBtn') {\r\n filterValues.vendor = '%';\r\n newFilterValues.vendor = '%';\r\n }\r\n\r\n if (closeFilter == 'matchSourceBtn') {\r\n filterValues.matchSource = '%';\r\n newFilterValues.matchSource = '%';\r\n }\r\n\r\n if (closeFilter == 'yearEndBtn') {\r\n filterValues.yearEndStart = '';\r\n filterValues.yearEndEnd = '';\r\n newFilterValues.yearEndStart = '';\r\n newFilterValues.yearEndEnd = '';\r\n }\r\n\r\n applyFilter();\r\n\r\n }\r\n\r\n function checkFilterPopForErrors() {\r\n const errors = [...filterPopup.querySelectorAll('.error')];\r\n const hasErrors = errors.legnth > 0 ? true : false;\r\n\r\n if (hasErrors) {\r\n applyFilterBtn.classList.add('disabled');\r\n } else {\r\n applyFilterBtn.classList.remove('disabled');\r\n }\r\n }\r\n function populatePlanTypeDropdown() {\r\n const data = [\r\n { value: '%', text: 'All' },\r\n { text: 'Final', value: 'F' },\r\n { text: 'Initial', value: 'I' },\r\n { text: 'Revision', value: 'V' },\r\n { text: 'Redetermination', value: 'R' },\r\n ];\r\n dropdown.populate(planTypeDropdown, data, filterValues.planType);\r\n }\r\n function populateVendorDropdown() {\r\n const data = filterDropdownData.planVendors.map(pv => {\r\n return {\r\n value: pv.vendorId,\r\n text: pv.vendorName,\r\n };\r\n });\r\n data.unshift({ value: '%', text: 'All' });\r\n data.sort((a, b) => {\r\n if (a.vendorName < b.vendorName) {\r\n return -1;\r\n }\r\n if (a.vendorName > b.vendorName) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n dropdown.populate(vendorDropdown, data, filterValues.vendor);\r\n }\r\n function populateMatchSourceDropdown() {\r\n const data = filterDropdownData.matchSources.map(ms => {\r\n return {\r\n value: ms.code,\r\n text: ms.caption,\r\n };\r\n });\r\n data.sort((a, b) => {\r\n if (a.caption < b.caption) {\r\n return -1;\r\n }\r\n if (a.caption > b.caption) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n data.unshift({ value: '%', text: 'All' });\r\n dropdown.populate(matchSourceDropdown, data, filterValues.matchSource);\r\n }\r\n function getVendorFullName(id) {\r\n if (id === '') return '';\r\n if (id === '%') return 'All';\r\n\r\n const filteredVendor = filterDropdownData.planVendors.filter(pv => {\r\n return pv.vendorId === id;\r\n });\r\n\r\n if (filteredVendor.length > 0) {\r\n return filteredVendor[0].vendorName;\r\n }\r\n }\r\n function getPlanTypeFullName(value, revisionNumber) {\r\n switch (value) {\r\n case 'F': {\r\n return 'Final';\r\n }\r\n case 'I': {\r\n return 'Initial';\r\n }\r\n case 'V': {\r\n return revisionNumber ? `Revision ${revisionNumber}` : 'Revision';\r\n }\r\n case 'R': {\r\n return 'Redetermination';\r\n }\r\n default: {\r\n return 'All';\r\n }\r\n }\r\n }\r\n function getMatchSourceName(id) {\r\n if (id === '%') return 'All';\r\n\r\n const filteredMatch = filterDropdownData.matchSources.filter(ms => {\r\n return ms.code === code;\r\n });\r\n\r\n if (filteredMatch.length > 0) {\r\n return filteredMatch[0].caption;\r\n }\r\n }\r\n function showFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({\r\n classNames: 'authorizationsReviewFilterPopup',\r\n });\r\n\r\n // Dropdowns\r\n planTypeDropdown = dropdown.build({\r\n dropdownId: 'planTypeDropdown',\r\n label: 'Plan Type',\r\n style: 'secondary',\r\n });\r\n vendorDropdown = dropdown.build({\r\n dropdownId: 'vendorDropdown',\r\n label: 'PL Vendor',\r\n style: 'secondary',\r\n });\r\n matchSourceDropdown = dropdown.build({\r\n dropdownId: 'matchSourceDropdown',\r\n label: 'Match Source',\r\n style: 'secondary',\r\n });\r\n\r\n // Date Inputs\r\n const dateWrap = document.createElement('div');\r\n completedDateStartInput = input.build({\r\n type: 'date',\r\n label: 'Completed Date (Start)',\r\n style: 'secondary',\r\n value: filterValues.completedDateStart,\r\n });\r\n completedDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Completed Date (End)',\r\n style: 'secondary',\r\n value: filterValues.completedDateEnd,\r\n });\r\n yearStartStartInput = input.build({\r\n type: 'date',\r\n label: 'Year Start (Start)',\r\n style: 'secondary',\r\n value: filterValues.yearStartStart,\r\n });\r\n yearStartEndInput = input.build({\r\n type: 'date',\r\n label: 'Year Start (End)',\r\n style: 'secondary',\r\n value: filterValues.yearStartEnd,\r\n });\r\n yearEndStartInput = input.build({\r\n type: 'date',\r\n label: 'Year End (Start)',\r\n style: 'secondary',\r\n value: filterValues.yearEndStart,\r\n });\r\n yearEndEndInput = input.build({\r\n type: 'date',\r\n label: 'Year End (End)',\r\n style: 'secondary',\r\n value: filterValues.yearEndEnd,\r\n });\r\n if (IsShow == 'ALL' || IsShow == 'completedDateBtn') {\r\n dateWrap.appendChild(completedDateStartInput);\r\n dateWrap.appendChild(completedDateEndInput);\r\n }\r\n if (IsShow == 'ALL' || IsShow == 'yearStartBtn') {\r\n dateWrap.appendChild(yearStartStartInput);\r\n dateWrap.appendChild(yearStartEndInput);\r\n }\r\n if (IsShow == 'ALL' || IsShow == 'yearEndBtn') {\r\n dateWrap.appendChild(yearEndStartInput);\r\n dateWrap.appendChild(yearEndEndInput);\r\n }\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n applyFilterBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n const cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n POPUP.hide(filterPopup);\r\n },\r\n });\r\n btnWrap.appendChild(applyFilterBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'plantypeBtn')\r\n filterPopup.appendChild(planTypeDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'vendorBtn')\r\n filterPopup.appendChild(vendorDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'matchSourceBtn')\r\n filterPopup.appendChild(matchSourceDropdown);\r\n filterPopup.appendChild(dateWrap);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(filterPopup);\r\n\r\n populatePlanTypeDropdown();\r\n populateVendorDropdown();\r\n populateMatchSourceDropdown();\r\n\r\n setupFilterEvents();\r\n }\r\n function setupFilterEvents() {\r\n newFilterValues = {};\r\n\r\n planTypeDropdown.addEventListener('change', e => {\r\n var selectedOption = e.target.options[e.target.selectedIndex];\r\n newFilterValues.planType = selectedOption.value;\r\n });\r\n vendorDropdown.addEventListener('change', e => {\r\n var selectedOption = e.target.options[e.target.selectedIndex];\r\n newFilterValues.vendor = selectedOption.value;\r\n });\r\n matchSourceDropdown.addEventListener('change', e => {\r\n var selectedOption = e.target.options[e.target.selectedIndex];\r\n newFilterValues.matchSource = selectedOption.value;\r\n });\r\n completedDateStartInput.addEventListener('change', e => {\r\n newFilterValues.completedDateStart = e.target.value;\r\n if (e.target.value === '') {\r\n completedDateStartInput.classList.add('error');\r\n } else {\r\n completedDateStartInput.classList.remove('error');\r\n }\r\n checkFilterPopForErrors();\r\n });\r\n completedDateEndInput.addEventListener('change', e => {\r\n newFilterValues.completedDateEnd = e.target.value;\r\n if (e.target.value === '') {\r\n completedDateEndInput.classList.add('error');\r\n } else {\r\n completedDateEndInput.classList.remove('error');\r\n }\r\n checkFilterPopForErrors();\r\n });\r\n yearStartStartInput.addEventListener('change', e => {\r\n newFilterValues.yearStartStart = e.target.value;\r\n if (e.target.value === '') {\r\n yearStartStartInput.classList.add('error');\r\n } else {\r\n yearStartStartInput.classList.remove('error');\r\n }\r\n checkFilterPopForErrors();\r\n });\r\n yearStartEndInput.addEventListener('change', e => {\r\n newFilterValues.yearStartEnd = e.target.value;\r\n if (e.target.value === '') {\r\n yearStartEndInput.classList.add('error');\r\n } else {\r\n yearStartEndInput.classList.remove('error');\r\n }\r\n checkFilterPopForErrors();\r\n });\r\n yearEndStartInput.addEventListener('change', e => {\r\n newFilterValues.yearEndStart = e.target.value;\r\n });\r\n yearEndEndInput.addEventListener('change', e => {\r\n newFilterValues.yearEndEnd = e.target.value;\r\n });\r\n applyFilterBtn.addEventListener('click', async e => {\r\n POPUP.hide(filterPopup);\r\n applyFilter();\r\n });\r\n }\r\n\r\n async function applyFilter() {\r\n filterValues = { ...filterValues, ...newFilterValues };\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Data...');\r\n pageWrap.removeChild(overviewTable);\r\n pageWrap.appendChild(spinner);\r\n\r\n authData = await authorizationsAjax.getPageData({\r\n token: $.session.Token,\r\n selectedConsumerId: selectedConsumer.id,\r\n code: '%',\r\n matchSource: filterValues.matchSource,\r\n vendorId: filterValues.vendor,\r\n planType: filterValues.planType,\r\n planYearStartStart: UTIL.formatDateToIso(filterValues.yearStartStart),\r\n planYearStartEnd: UTIL.formatDateToIso(filterValues.yearStartEnd),\r\n planYearEndStart: filterValues.yearEndStart\r\n ? UTIL.formatDateToIso(filterValues.yearEndStart)\r\n : '',\r\n planYearEndEnd: filterValues.yearEndEnd\r\n ? UTIL.formatDateToIso(filterValues.yearEndEnd)\r\n : '',\r\n completedDateStart: UTIL.formatDateToIso(filterValues.completedDateStart),\r\n completedDateEnd: UTIL.formatDateToIso(filterValues.completedDateEnd),\r\n });\r\n pageWrap.removeChild(spinner);\r\n\r\n buildOverviewTable();\r\n const newfilteredByData = buildFilteredByData();\r\n pageWrap.replaceChild(newfilteredByData, filteredByData);\r\n filteredByData = newfilteredByData;\r\n }\r\n //----------------------------------------\r\n function buildConsumerCard() {\r\n selectedConsumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(selectedConsumer.card);\r\n\r\n return wrap;\r\n }\r\n function buildOverviewTable() {\r\n groupChildData();\r\n\r\n overviewTable = document.createElement('div');\r\n overviewTable.classList.add('authTable');\r\n\r\n const mainHeading = document.createElement('div');\r\n mainHeading.classList.add('authTable__header');\r\n mainHeading.innerHTML = `\r\n
\r\n
Completed
\r\n
Year Start
\r\n
Year End
\r\n
Plan Type
\r\n
PL Vendor
\r\n
Match Source
\r\n `;\r\n overviewTable.appendChild(mainHeading);\r\n\r\n authData.pageDataParent.forEach(parent => {\r\n const pasID = parent.pas_id;\r\n\r\n const rowWrap = document.createElement('div');\r\n rowWrap.classList.add('authTable__subTableWrap');\r\n\r\n // TOP LEVEL ROW\r\n //---------------------------------\r\n const mainDataRow = document.createElement('div');\r\n mainDataRow.classList.add('authTable__mainDataRow', 'authTable__dataRow');\r\n mainDataRow.innerHTML = `\r\n
${icons.keyArrowRight}
\r\n
${UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(parent.CompletionDate.split('T')[0]),\r\n )}
\r\n
${UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(parent.plan_year_start.split('T')[0]),\r\n )}
\r\n
${UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(parent.plan_year_end.split('T')[0]),\r\n )}
\r\n
${getPlanTypeFullName(parent.plantype, parent.revisionNum)}
\r\n
${parent.plVendorId ? getVendorFullName(parent.plVendorId) : ''}
\r\n
${parent.sourceAndCaption}
\r\n `;\r\n rowWrap.appendChild(mainDataRow);\r\n\r\n // SUB ROWS\r\n //---------------------------------\r\n const subRowWrap = document.createElement('div');\r\n subRowWrap.classList.add('authTable__subRowWrap');\r\n\r\n const subHeading = document.createElement('div');\r\n subHeading.classList.add('authTable__subHeader');\r\n subHeading.innerHTML = `\r\n
#
\r\n
Service
\r\n
Service Code
\r\n
Begin Date
\r\n
End Date
\r\n
Units
\r\n
Frequency
\r\n
Vendor
\r\n
Auth Cost FY1
\r\n
Auth Cost FY2
\r\n `;\r\n subRowWrap.appendChild(subHeading);\r\n\r\n if (authData.pageDataChild[pasID]) {\r\n authData.pageDataChild[pasID].sort((a, b) => {\r\n return parseInt(a.itemnum) - parseInt(b.itemnum);\r\n });\r\n\r\n authData.pageDataChild[pasID].forEach(child => {\r\n const subDataRow = document.createElement('div');\r\n subDataRow.classList.add('authTable__subDataRow', 'authTable__dataRow');\r\n subDataRow.innerHTML = `\r\n
${child.itemnum}
\r\n
${child.description}
\r\n
${child.service_code}
\r\n
${UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(child.BeginDate.split('T')[0]),\r\n )}
\r\n
${UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(child.EndDate.split('T')[0]),\r\n )}
\r\n
${child.MaxUnits}
\r\n
${getFreqName(child.frequency)}
\r\n
${child.vendorName}
\r\n
${convertToCurrency(child.authCostFY1)}
\r\n
${convertToCurrency(child.authCostFY2)}
\r\n `;\r\n subRowWrap.appendChild(subDataRow);\r\n });\r\n }\r\n\r\n // EVENT\r\n //---------------------------------\r\n mainDataRow.addEventListener('click', e => {\r\n const toggle = e.target.querySelector('#authToggle');\r\n\r\n if (subRowWrap.classList.contains('active')) {\r\n // close it\r\n subRowWrap.classList.remove('active');\r\n toggle.innerHTML = icons.keyArrowRight;\r\n } else {\r\n // open it\r\n subRowWrap.classList.add('active');\r\n toggle.innerHTML = icons.keyArrowDown;\r\n }\r\n });\r\n\r\n // ASSEMBLY\r\n //---------------------------------\r\n rowWrap.appendChild(subRowWrap);\r\n overviewTable.appendChild(rowWrap);\r\n });\r\n\r\n pageWrap.appendChild(overviewTable);\r\n }\r\n\r\n async function loadPage() {\r\n initFilterValues();\r\n\r\n pageWrap = document.createElement('div');\r\n const consumerCard = buildConsumerCard();\r\n\r\n filteredByData = buildFilteredByData();\r\n\r\n pageWrap.appendChild(consumerCard);\r\n pageWrap.appendChild(filteredByData);\r\n DOM.ACTIONCENTER.appendChild(pageWrap);\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Data...');\r\n pageWrap.appendChild(spinner);\r\n\r\n authData = await authorizationsAjax.getPageData({\r\n token: $.session.Token,\r\n selectedConsumerId: selectedConsumer.id,\r\n code: '%',\r\n matchSource: filterValues.matchSource,\r\n vendorId: filterValues.vendor,\r\n planType: filterValues.planType,\r\n planYearStartStart: filterValues.yearStartStart,\r\n planYearStartEnd: filterValues.yearStartEnd,\r\n planYearEndStart: filterValues.yearEndStart,\r\n planYearEndEnd: filterValues.yearEndEnd,\r\n completedDateStart: filterValues.completedDateStart,\r\n completedDateEnd: filterValues.completedDateEnd,\r\n });\r\n filterDropdownData = await authorizationsAjax.getFilterDropdownData({\r\n token: $.session.Token,\r\n });\r\n\r\n pageWrap.removeChild(spinner);\r\n\r\n buildOverviewTable();\r\n }\r\n\r\n function init() {\r\n setActiveModuleSectionAttribute('authorizations');\r\n $.loadedApp = 'authorizations';\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n clearAllData,\r\n init,\r\n };\r\n})();\r\n","const authorizationsAjax = (function () {\r\n async function getPageData(retrieveData) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAuthorizationPageData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getAuthorizationPageDataResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getVendorLandingPageInfoAsync(callback) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/authorizationGetLandingPageData/',\r\n data: JSON.stringify({\r\n token: $.session.Token\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n const res = data.authorizationGetLandingPageDataResult;\r\n callback(res)\r\n \r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getFilterDropdownData(retrieveData) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAuthorizationFilterData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getAuthorizationFilterDataResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getAssessmentEntriesAsync(\r\n consumerIds,\r\n methodology,\r\n score,\r\n startDateFrom,\r\n startDateTo,\r\n endDateFrom,\r\n endDateTo,\r\n priorAuthApplFrom,\r\n priorAuthApplTo,\r\n priorAuthRecFrom,\r\n priorAuthRecTo,\r\n priorAuthAmtFrom,\r\n priorAuthAmtTo,\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAssessmentEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"methodology\":\"' +\r\n methodology +\r\n '\", \"score\":\"' +\r\n score +\r\n '\", \"startDateFrom\":\"' +\r\n startDateFrom +\r\n '\", \"startDateTo\":\"' +\r\n startDateTo +\r\n '\", \"endDateFrom\":\"' +\r\n endDateFrom +\r\n '\", \"endDateTo\":\"' +\r\n endDateTo +\r\n '\", \"priorAuthApplFrom\":\"' +\r\n priorAuthApplFrom +\r\n '\", \"priorAuthApplTo\":\"' +\r\n priorAuthApplTo +\r\n '\", \"priorAuthRecFrom\":\"' +\r\n priorAuthRecFrom +\r\n '\", \"priorAuthRecTo\":\"' +\r\n priorAuthRecTo +\r\n '\", \"priorAuthAmtFrom\":\"' +\r\n priorAuthAmtFrom +\r\n '\", \"priorAuthAmtTo\":\"' +\r\n priorAuthAmtTo +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getScoreAsync(MethodologyID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getScore/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n methodologyID: MethodologyID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getVendorInfoAsync(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVendorInfo/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"vendor\":\"' +\r\n dataObj.vendor +\r\n '\",\"DDNumber\":\"' +\r\n dataObj.DDNumber +\r\n '\",\"localNumber\":\"' +\r\n dataObj.localNumber +\r\n '\",\"goodStanding\":\"' +\r\n dataObj.goodStanding +\r\n '\",\"homeServices\":\"' +\r\n dataObj.homeServices +\r\n '\",\"takingNewReferrals\":\"' +\r\n dataObj.takingNewReferrals +\r\n '\",\"fundingSource\":\"' +\r\n dataObj.fundingSource +\r\n '\",\"serviceCode\":\"' +\r\n dataObj.serviceCode +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response) {\r\n var res = response.getVendorInfoResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n\r\n async function getVendorAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVendor/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getFundingSourceAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getFundingSource/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getServiceCodeAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceCode/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getVendorEntriesByIdAsync(vendorID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVendorEntriesById/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"vendorID\":\"' + vendorID + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getVenderServicesEntriesAsync(vendorID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVenderServicesEntries/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"vendorID\":\"' + vendorID + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getVenderUCREntriesAsync(vendorID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVenderUCREntries/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"vendorID\":\"' + vendorID + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getProviderTypeEntriesAsync(vendorID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getProviderTypeEntries/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"vendorID\":\"' + vendorID + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getVenderCertificationEntriesAsync(vendorID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVenderCertificationEntries/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"vendorID\":\"' + vendorID + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getVenderLocationReviewEntriesAsync(vendorID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVenderLocationReviewEntries/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"vendorID\":\"' + vendorID + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getPageData,\r\n getVendorLandingPageInfoAsync,\r\n getFilterDropdownData,\r\n getAssessmentEntriesAsync,\r\n getScoreAsync,\r\n getVendorInfoAsync,\r\n getVendorAsync,\r\n getFundingSourceAsync,\r\n getServiceCodeAsync,\r\n getVendorEntriesByIdAsync,\r\n getVenderServicesEntriesAsync,\r\n getVenderUCREntriesAsync,\r\n getProviderTypeEntriesAsync,\r\n getVenderCertificationEntriesAsync,\r\n getVenderLocationReviewEntriesAsync,\r\n };\r\n})();\r\n","const newVendorInfo = (function () {\r\n\r\n let vendorID;\r\n let ispDiv;\r\n let ispNav;\r\n let ispBody;\r\n let DDNumber;\r\n let LocalNumber;\r\n let Phone;\r\n let Name;\r\n\r\n const sections = [\r\n {\r\n title: 'General',\r\n id: 0,\r\n markup: () => vendorGeneral.getMarkup(),\r\n },\r\n {\r\n title: 'Services',\r\n id: 1,\r\n markup: () => vendorServices.getMarkup(),\r\n },\r\n {\r\n title: 'UCR',\r\n id: 2,\r\n markup: () => vendorUCR.getMarkup(),\r\n },\r\n {\r\n title: 'Provider Type',\r\n id: 3,\r\n markup: () => vendorProviderType.getMarkup(),\r\n },\r\n {\r\n title: 'Certification',\r\n id: 4,\r\n markup: () => vendorCertification.getMarkup(),\r\n },\r\n {\r\n title: 'Location Reviews',\r\n id: 5,\r\n markup: () => vendorLocationReview.getMarkup(),\r\n },\r\n\r\n ];\r\n\r\n async function refreshVendor(vendorId, DDNum, localNum, phone, name) {\r\n vendorID = vendorId;\r\n DDNumber = DDNum;\r\n LocalNumber = localNum;\r\n Phone = phone;\r\n Name = name;\r\n DOM.clearActionCenter();\r\n\r\n var headingWrap = document.createElement('div');\r\n headingWrap.classList.add('vendorBtnWrap');\r\n const heading = document.createElement('div');\r\n const headingName = document.createElement('div');\r\n const localNumberheading = document.createElement('div');\r\n const head = document.createElement('div');\r\n\r\n const ispWrap = document.createElement('div');\r\n\r\n ispWrap.id = 'planISP';\r\n\r\n ispWrap.innerHTML = '';\r\n\r\n BACK_BTN = button.build({\r\n text: 'BACK',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { await vendorInfo.vendorInfoLoad() }, \r\n });\r\n\r\n const newIspMarkup = await getMarkup();\r\n\r\n heading.innerHTML = `

${Name} ${Phone}

`;\r\n headingName.innerHTML = `

DD Number: ${DDNumber}

`;\r\n localNumberheading.innerHTML = `

Local Number: ${LocalNumber}

`;\r\n ispWrap.appendChild(newIspMarkup);\r\n\r\n head.appendChild(heading);\r\n head.appendChild(headingName);\r\n head.appendChild(localNumberheading);\r\n headingWrap.appendChild(head);\r\n headingWrap.appendChild(BACK_BTN);\r\n\r\n DOM.ACTIONCENTER.appendChild(headingWrap);\r\n DOM.ACTIONCENTER.appendChild(ispWrap);\r\n DOM.autosizeTextarea(); \r\n }\r\n function toggleActiveNavItem(selectedNavItem) {\r\n const activeNavItem = ispNav.querySelector('.active');\r\n\r\n if (activeNavItem) {\r\n activeNavItem.classList.remove('active');\r\n }\r\n\r\n selectedNavItem.classList.add('active');\r\n }\r\n function toggleActiveSection(sectionId) {\r\n const activeSection = ispBody.querySelector('.active');\r\n const targetSection = ispBody.querySelector(`[data-section-id=\"${sectionId}\"]`);\r\n\r\n if (activeSection) {\r\n activeSection.classList.remove('active');\r\n }\r\n\r\n targetSection.classList.add('active');\r\n }\r\n\r\n // Markup\r\n //---------------------------------------------\r\n function buildNavigation() {\r\n const nav = document.createElement('div');\r\n nav.classList.add('planISP__nav');\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n\r\n const navItem = document.createElement('div');\r\n navItem.classList.add('planISP__navItem');\r\n navItem.innerHTML = `${section.title}`;\r\n\r\n if (index === 0) {\r\n navItem.classList.add('active');\r\n }\r\n\r\n navItem.addEventListener('click', e => {\r\n toggleActiveNavItem(navItem);\r\n toggleActiveSection(sectionId);\r\n DOM.autosizeTextarea();\r\n });\r\n\r\n nav.appendChild(navItem);\r\n });\r\n\r\n return nav;\r\n }\r\n async function buildBody() {\r\n const body = document.createElement('div');\r\n body.classList.add('planISP__body');\r\n\r\n await vendorGeneral.init(vendorID);\r\n await vendorServices.init(vendorID);\r\n await vendorUCR.init(vendorID);\r\n await vendorProviderType.init(vendorID);\r\n await vendorCertification.init(vendorID);\r\n await vendorLocationReview.init(vendorID);\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n const sectionMarkup = section.markup();\r\n sectionMarkup.setAttribute('data-section-id', sectionId);\r\n sectionMarkup.classList.add('planISP__section');\r\n\r\n if (index === 0) { \r\n sectionMarkup.classList.add('active');\r\n }\r\n\r\n body.appendChild(sectionMarkup);\r\n });\r\n\r\n return body;\r\n }\r\n\r\n async function getMarkup() {\r\n ispDiv = document.createElement('div');\r\n ispDiv.classList.add('planISP');\r\n\r\n ispNav = buildNavigation();\r\n ispDiv.appendChild(ispNav);\r\n\r\n ispBody = await buildBody();\r\n ispDiv.appendChild(ispBody);\r\n\r\n return ispDiv;\r\n }\r\n\r\n return {\r\n refreshVendor,\r\n getMarkup,\r\n };\r\n})();\r\n","const vendorCertification = (() => {\r\n let vendorID;\r\n let certificationEntries;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n certificationEntries = await authorizationsAjax.getVenderCertificationEntriesAsync(vendorID);\r\n }\r\n\r\n\r\n function getMarkup() {\r\n const vendorCertificationWrap = document.createElement('div');\r\n vendorCertificationWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewCertificationForm();\r\n vendorCertificationWrap.appendChild(importantTables);\r\n\r\n return vendorCertificationWrap;\r\n }\r\n\r\n function buildNewCertificationForm() {\r\n const vendorCertificationDiv = document.createElement('div');\r\n vendorCertificationDiv.classList.add('additionalQuestionWrap');\r\n\r\n certificationEntriesTable = buildCertificationEntriesTable();\r\n\r\n const headers = certificationEntriesTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Certification\r\n headers[1].setAttribute('data-type', 'date'); // Start Date\r\n headers[2].setAttribute('data-type', 'date'); // End Date \r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
Certification
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(certificationEntriesTable);\r\n vendorCertificationDiv.appendChild(column1);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(certificationEntriesTable); \r\n\r\n return vendorCertificationDiv;\r\n }\r\n\r\n function buildCertificationEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoTable', \r\n columnHeadings: ['Certification', 'Start Date', 'End Date'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = certificationEntries.getVenderCertificationEntriesResult.map((entry) => ({\r\n values: [entry.Certifiction, entry.startDate == '' ? '' : moment(entry.startDate).format('MM/DD/YYYY'), entry.endDate == '' ? '' : moment(entry.endDate).format('MM/DD/YYYY')],\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n return {\r\n init,\r\n buildNewCertificationForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorGeneral = (() => {\r\n let vendorID;\r\n let vendorEntriesById;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n vendorEntriesById = await authorizationsAjax.getVendorEntriesByIdAsync(vendorID);\r\n }\r\n\r\n function getMarkup() {\r\n const workScheduleWrap = document.createElement('div');\r\n workScheduleWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildVendorGeneralForm();\r\n workScheduleWrap.appendChild(importantTables);\r\n\r\n return workScheduleWrap;\r\n }\r\n\r\n function buildVendorGeneralForm() {\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n\r\n\r\n nameInput = input.build({\r\n id: 'nameInput',\r\n type: 'text',\r\n label: 'Name',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].name,\r\n });\r\n dbaInput = input.build({\r\n id: 'dbaInput',\r\n type: 'text',\r\n label: 'Doing Business As',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].DBA,\r\n });\r\n contactNameInput = input.build({\r\n id: 'contactNameInput',\r\n type: 'text',\r\n label: 'Contact Name',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].contactName,\r\n });\r\n contactPhoneInput = input.build({\r\n id: 'contactPhoneInput',\r\n type: 'text',\r\n label: 'Contact Phone',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].contactPhone,\r\n });\r\n contactEmailInput = input.build({\r\n id: 'contactEmailInput',\r\n type: 'text',\r\n label: 'Contact Email',\r\n readonly: true,\r\n style: 'secondary',\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].contactEmail,\r\n });\r\n address1Input = input.build({\r\n id: 'address1Input',\r\n type: 'text',\r\n label: 'Address 1',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].address1,\r\n });\r\n address2Input = input.build({\r\n id: 'address2Input',\r\n type: 'text',\r\n label: 'Address 2',\r\n readonly: true,\r\n style: 'secondary',\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].address2,\r\n });\r\n cityInput = input.build({\r\n id: 'cityInput',\r\n type: 'text',\r\n label: 'City',\r\n readonly: true,\r\n style: 'secondary',\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].city,\r\n });\r\n stateInput = input.build({\r\n id: 'ststeInput',\r\n type: 'text',\r\n label: 'State',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].state,\r\n });\r\n zipInput = input.build({\r\n id: 'zipInput',\r\n type: 'text',\r\n label: 'Zip Code',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].zipCode,\r\n });\r\n phoneInput = input.build({\r\n id: 'phoneInput',\r\n type: 'text',\r\n label: 'Phone',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].primaryPhone,\r\n });\r\n firstNameInput = input.build({\r\n id: 'Input',\r\n type: 'text',\r\n label: 'First Name',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].providerFirstName,\r\n });\r\n lastNameInput = input.build({\r\n id: 'lastNameInput',\r\n type: 'text',\r\n label: 'Last Name',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].providerLastName,\r\n });\r\n birthDateInput = input.build({\r\n id: 'birthDateInput',\r\n type: 'text',\r\n label: 'Birth Date',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].providerBirthDate == '' ? '' : moment(vendorEntriesById.getVendorEntriesByIdResult[0].providerBirthDate).format('MM/DD/YYYY'),\r\n });\r\n buildingNumberInput = input.build({\r\n id: 'buildingNumberInput',\r\n type: 'text',\r\n label: 'Building Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].providerBuildingNumber,\r\n });\r\n salesforceIDInput = input.build({\r\n id: 'salesforceIDInput',\r\n type: 'text',\r\n label: 'Salesforce ID',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].salesforceId,\r\n });\r\n DDStateNumberInput = input.build({\r\n id: 'DDStateNumberInput',\r\n type: 'text',\r\n label: 'DD State Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].DDStateNumber,\r\n });\r\n einInput = input.build({\r\n id: 'einInput',\r\n type: 'text',\r\n label: 'EIN',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].ein,\r\n });\r\n submitterInput = input.build({\r\n id: 'submitterInput',\r\n type: 'text',\r\n label: 'Submitter',\r\n readonly: true,\r\n style: 'secondary',\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].submitterId,\r\n });\r\n localNumberInput = input.build({\r\n id: 'localNumberInput',\r\n type: 'text',\r\n label: 'Local Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].LocalNumber,\r\n });\r\n SSNInput = input.build({\r\n id: 'SSNInput',\r\n type: 'text',\r\n label: 'SSN',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].ssn,\r\n });\r\n senderInput = input.build({\r\n id: 'senderInput',\r\n type: 'text',\r\n label: 'Sender ',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].sender,\r\n });\r\n MHStateNumberInput = input.build({\r\n id: 'MHStateNumberInput',\r\n type: 'text',\r\n label: 'MH State Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].MHStateNumber,\r\n });\r\n TDDStateNumberInput = input.build({\r\n id: 'TDDStateNumberInput',\r\n type: 'text',\r\n label: 'TDD State Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].TDDStateNumber,\r\n });\r\n NPIInput = input.build({\r\n id: 'NPIInput',\r\n type: 'text',\r\n label: 'NPI',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].NPI,\r\n });\r\n MHNPIInput = input.build({\r\n id: 'MHNPIInput',\r\n type: 'text',\r\n label: 'MH NPI',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].MHNPI,\r\n });\r\n\r\n inGoodStandingchkBox = input.buildCheckbox({\r\n text: 'In Good Standing',\r\n id: 'chkinGoodStanding',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].goodStanding == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n takingNewReferralschkBox = input.buildCheckbox({\r\n text: 'Taking New Referrals',\r\n id: 'chktakingNewReferrals',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].takingNewReferrals == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n FSSVendorchkBox = input.buildCheckbox({\r\n text: 'FSS Vendor',\r\n id: 'chkFSSVendor',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].FSSVendor == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n sanctionsAdministeredchkBox = input.buildCheckbox({\r\n text: 'Sanctions Administered',\r\n id: 'chkSanctionsAdministered',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].sanctionsAdministered == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n inHomeServiceschkBox = input.buildCheckbox({\r\n text: 'In Home Services',\r\n id: 'chkInHomeServices',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].homeServices == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
General
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"heading\");\r\n consumerNameDisplay.innerHTML = `${'Contact Information'}`;\r\n addNewCardBody.appendChild(consumerNameDisplay);\r\n\r\n nameInput.classList.add('marginTop2Per');\r\n addNewCardBody.appendChild(nameInput);\r\n dbaInput.classList.add('marginTop2Per');\r\n addNewCardBody.appendChild(dbaInput);\r\n\r\n var dropWrap = document.createElement('div');\r\n dropWrap.classList.add('vendorDTWrap');\r\n contactNameInput.classList.add('width35Per');\r\n dropWrap.appendChild(contactNameInput);\r\n contactPhoneInput.classList.add('width30Per');\r\n dropWrap.appendChild(contactPhoneInput);\r\n contactEmailInput.classList.add('width30Per'); \r\n dropWrap.appendChild(contactEmailInput);\r\n addNewCardBody.appendChild(dropWrap);\r\n\r\n var dropWrap1 = document.createElement('div');\r\n dropWrap1.classList.add('vendorDTWrap');\r\n address1Input.classList.add('width50Per');\r\n dropWrap1.appendChild(address1Input);\r\n address2Input.classList.add('width50Per');\r\n dropWrap1.appendChild(address2Input);\r\n addNewCardBody.appendChild(dropWrap1);\r\n\r\n var dropWrap2 = document.createElement('div');\r\n dropWrap2.classList.add('vendorDTWrap');\r\n cityInput.classList.add('width30Per');\r\n dropWrap2.appendChild(cityInput);\r\n stateInput.classList.add('width10Per');\r\n dropWrap2.appendChild(stateInput);\r\n zipInput.classList.add('width20Per');\r\n dropWrap2.appendChild(zipInput);\r\n phoneInput.classList.add('width32Per');\r\n dropWrap2.appendChild(phoneInput);\r\n addNewCardBody.appendChild(dropWrap2);\r\n\r\n const consumerNameDisplay1 = document.createElement(\"p\");\r\n consumerNameDisplay1.classList.add(\"heading\");\r\n consumerNameDisplay1.innerHTML = `${'Ohio ISP Information'}`;\r\n addNewCardBody.appendChild(consumerNameDisplay1);\r\n\r\n var dropWrap3 = document.createElement('div');\r\n dropWrap3.classList.add('marginTop2Per');\r\n dropWrap3.classList.add('vendorDTWrap');\r\n firstNameInput.classList.add('width25Per');\r\n dropWrap3.appendChild(firstNameInput);\r\n lastNameInput.classList.add('width23Per');\r\n dropWrap3.appendChild(lastNameInput);\r\n birthDateInput.classList.add('width23Per');\r\n dropWrap3.appendChild(birthDateInput);\r\n buildingNumberInput.classList.add('width23Per');\r\n dropWrap3.appendChild(buildingNumberInput);\r\n addNewCardBody.appendChild(dropWrap3);\r\n\r\n var dropWrap4 = document.createElement('div');\r\n dropWrap4.classList.add('vendorDTWrap');\r\n salesforceIDInput.classList.add('width40Per');\r\n dropWrap4.appendChild(salesforceIDInput);\r\n addNewCardBody.appendChild(dropWrap4);\r\n\r\n const consumerNameDisplay2 = document.createElement(\"p\");\r\n consumerNameDisplay2.classList.add(\"heading\");\r\n consumerNameDisplay2.innerHTML = `${'Billing/Authorization'}`;\r\n addNewCardBody.appendChild(consumerNameDisplay2);\r\n\r\n var dropWrap5 = document.createElement('div');\r\n dropWrap5.classList.add('marginTop2Per');\r\n dropWrap5.classList.add('vendorDTWrap');\r\n DDStateNumberInput.classList.add('width19Per');\r\n dropWrap5.appendChild(DDStateNumberInput);\r\n einInput.classList.add('width18Per');\r\n dropWrap5.appendChild(einInput);\r\n submitterInput.classList.add('width18Per');\r\n dropWrap5.appendChild(submitterInput);\r\n localNumberInput.classList.add('width18Per');\r\n dropWrap5.appendChild(localNumberInput);\r\n SSNInput.classList.add('width18Per');\r\n dropWrap5.appendChild(SSNInput);\r\n addNewCardBody.appendChild(dropWrap5);\r\n\r\n var dropWrap6 = document.createElement('div');\r\n dropWrap6.classList.add('vendorDTWrap');\r\n senderInput.classList.add('width19Per');\r\n dropWrap6.appendChild(senderInput);\r\n MHStateNumberInput.classList.add('width18Per');\r\n dropWrap6.appendChild(MHStateNumberInput);\r\n TDDStateNumberInput.classList.add('width18Per');\r\n dropWrap6.appendChild(TDDStateNumberInput);\r\n NPIInput.classList.add('width18Per');\r\n dropWrap6.appendChild(NPIInput);\r\n MHNPIInput.classList.add('width18Per');\r\n dropWrap6.appendChild(MHNPIInput);\r\n addNewCardBody.appendChild(dropWrap6);\r\n\r\n const consumerNameDisplay3 = document.createElement(\"p\");\r\n consumerNameDisplay3.classList.add(\"heading\");\r\n consumerNameDisplay3.innerHTML = `${'Miscellaneous'}`;\r\n addNewCardBody.appendChild(consumerNameDisplay3);\r\n\r\n var chkDiv = document.createElement('div');\r\n chkDiv.classList.add('marginTop2Per');\r\n chkDiv.appendChild(inGoodStandingchkBox);\r\n addNewCardBody.appendChild(chkDiv);\r\n\r\n var chkDiv1 = document.createElement('div');\r\n chkDiv1.appendChild(takingNewReferralschkBox);\r\n addNewCardBody.appendChild(chkDiv1);\r\n\r\n var chkDiv2 = document.createElement('div');\r\n chkDiv2.appendChild(FSSVendorchkBox);\r\n addNewCardBody.appendChild(chkDiv2);\r\n\r\n var chkDiv3 = document.createElement('div');\r\n chkDiv3.appendChild(sanctionsAdministeredchkBox);\r\n addNewCardBody.appendChild(chkDiv3);\r\n\r\n var chkDiv4 = document.createElement('div');\r\n chkDiv4.appendChild(inHomeServiceschkBox);\r\n addNewCardBody.appendChild(chkDiv4);\r\n\r\n employeeInfoDiv.appendChild(column1);\r\n return employeeInfoDiv;\r\n }\r\n\r\n return {\r\n init,\r\n buildVendorGeneralForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorInfo = (function () {\r\n let SEARCH_WRAP;\r\n let SEARCH_BTN;\r\n let SEARCH_INPUT;\r\n let userTableData = [];\r\n let tempUserTableData = [];\r\n let displayedUsers = [];\r\n var userTable;\r\n\r\n let btnWrap;\r\n let vendorBtnWrap;\r\n let DDNumberBtnWrap;\r\n let localNumberBtnWrap;\r\n let goodStandingBtnWrap;\r\n let homeServicesBtnWrap;\r\n let takingNewReferralsBtnWrap;\r\n let fundingSourceBtnWrap;\r\n let serviceCodeBtnWrap;\r\n\r\n let vendorsData;\r\n let groupedVendors;\r\n let vendorGroupCount;\r\n let activeGroup;\r\n let loadMoreVendors = [];\r\n let chunkedArray;\r\n //filter\r\n let filterValues;\r\n function init() {\r\n filterValues = undefined;\r\n vendorInfoLoad();\r\n }\r\n\r\n async function vendorInfoLoad(fromFilter = false) {\r\n DOM.clearActionCenter();\r\n const topNav = buildRosterTopNav();\r\n userTable = buildTable();\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = userTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Name\r\n headers[1].setAttribute('data-type', 'string'); // DBA\r\n headers[2].setAttribute('data-type', 'string'); // DD Number\r\n headers[3].setAttribute('data-type', 'string'); // Local Number \r\n headers[4].setAttribute('data-type', 'string'); // Contact \r\n headers[5].setAttribute('data-type', 'string'); // Phone\r\n\r\n filterRow = document.createElement('div');\r\n filterRow.classList.add('filterElement');\r\n\r\n const filteredBy = buildFilteredBy();\r\n filterRow.appendChild(filteredBy);\r\n topNav.classList.add('marginBottomFilter');\r\n LOAD_MORE_BTN = buildLoadMoreBtn();\r\n\r\n DOM.ACTIONCENTER.appendChild(topNav);\r\n DOM.ACTIONCENTER.appendChild(filterRow);\r\n DOM.ACTIONCENTER.appendChild(userTable);\r\n DOM.ACTIONCENTER.appendChild(LOAD_MORE_BTN);\r\n document.getElementById('loadMoreBtn').style.display = 'none';\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(userTable);\r\n\r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n tableUserSearch(event.target.value);\r\n });\r\n await loadReviewPage(fromFilter);\r\n document.getElementById('searchBtn').click();\r\n }\r\n\r\n function buildSearchBtn() {\r\n return button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['searchBtn'],\r\n });\r\n }\r\n\r\n function buildNewFilterBtn() {\r\n if (!filterValues)\r\n filterValues = {\r\n token: $.session.Token,\r\n vendor: '%',\r\n DDNumber: '',\r\n localNumber: '',\r\n goodStanding: '%',\r\n homeServices: '%',\r\n takingNewReferrals: '%',\r\n fundingSource: '%',\r\n serviceCode: '%',\r\n };\r\n }\r\n\r\n function buildTable() {\r\n var tableOptions = {\r\n plain: false,\r\n headline: 'Vendor Info',\r\n tableId: 'vendorInfoTable',\r\n columnHeadings: ['Name', 'DBA', 'DD Number', 'Local Number', 'Contact', 'Phone'],\r\n callback: handleVendorInfoTableEvents,\r\n endIcon: false,\r\n secondendIcon: false,\r\n };\r\n\r\n return table.build(tableOptions);\r\n }\r\n\r\n function populateTable(results) {\r\n userTableData = results.map(td => {\r\n var vendorID = td.vendorID;\r\n var name = td.name;\r\n var DDNumber = td.DDNumber;\r\n var localNumber = td.localNumber;\r\n var contact = td.contact;\r\n var phone = td.phone;\r\n var DBA = td.DBA;\r\n\r\n return {\r\n vendorID: vendorID,\r\n name: name,\r\n DBA: DBA,\r\n DDNumber: DDNumber,\r\n localNumber: localNumber,\r\n contact: contact,\r\n phone: phone,\r\n values: [name, DBA, DDNumber, localNumber, contact, formatPhoneNumber(phone)],\r\n attributes: [{ key: 'vendorId', value: vendorID }],\r\n };\r\n });\r\n\r\n table.populate(userTable, userTableData, false, true);\r\n if (chunkedArray.length < 2) {\r\n document.getElementById('loadMoreBtn').style.display = 'none';\r\n } else {\r\n document.getElementById('loadMoreBtn').style.display = 'block';\r\n }\r\n }\r\n\r\n function handleVendorInfoTableEvents(event) {\r\n if (event.target.childNodes[0].innerText == undefined) return;\r\n var name = event.target.childNodes[0].innerText;\r\n var DDNum = event.target.childNodes[2].innerText;\r\n var localNum = event.target.childNodes[3].innerText;\r\n var phone = event.target.childNodes[5].innerText;\r\n var vendorId = event.target.attributes.vendorId.value;\r\n newVendorInfo.refreshVendor(vendorId, DDNum, localNum, phone, name);\r\n }\r\n\r\n function buildRosterTopNav() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('roster-top-nav');\r\n\r\n SEARCH_BTN = buildSearchBtn();\r\n buildNewFilterBtn();\r\n\r\n // custom search stuff\r\n SEARCH_WRAP = document.createElement('div');\r\n SEARCH_WRAP.classList.add('rosterSearch');\r\n SEARCH_INPUT = document.createElement('input');\r\n SEARCH_INPUT.setAttribute('placeholder', 'search vendors');\r\n SEARCH_WRAP.appendChild(SEARCH_BTN);\r\n SEARCH_WRAP.appendChild(SEARCH_INPUT);\r\n\r\n var wrap1 = document.createElement('div');\r\n wrap1.classList.add('btnWrap');\r\n wrap1.appendChild(SEARCH_WRAP);\r\n\r\n btnWrap.appendChild(wrap1);\r\n return btnWrap;\r\n }\r\n\r\n function tableUserSearch(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n displayedUsers = [];\r\n\r\n tempUserTableData.forEach(consumer => {\r\n var Name = consumer.name.toLowerCase();\r\n var fullName = `${Name}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n\r\n if (matchesName !== -1) {\r\n consumerObj = {\r\n vendorID: consumer.vendorID,\r\n name: consumer.name,\r\n DBA: consumer.DBA, \r\n DDNumber: consumer.DDNumber, \r\n localNumber: consumer.localNumber,\r\n contact: consumer.contact,\r\n phone: consumer.phone,\r\n };\r\n displayedUsers.push(consumerObj);\r\n }\r\n });\r\n\r\n groupVendorData(displayedUsers);\r\n }\r\n\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet();\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n filteredBy.style.maxWidth = '100%';\r\n\r\n if (filterValues.vendor === '%' || filterValues.vendor === 'ALL') {\r\n btnWrap.appendChild(vendorBtnWrap);\r\n btnWrap.removeChild(vendorBtnWrap);\r\n } else {\r\n btnWrap.appendChild(vendorBtnWrap);\r\n }\r\n\r\n if (filterValues.DDNumber === '') {\r\n btnWrap.appendChild(DDNumberBtnWrap);\r\n btnWrap.removeChild(DDNumberBtnWrap);\r\n } else {\r\n btnWrap.appendChild(DDNumberBtnWrap);\r\n }\r\n\r\n if (filterValues.localNumber === '') {\r\n btnWrap.appendChild(localNumberBtnWrap);\r\n btnWrap.removeChild(localNumberBtnWrap);\r\n } else {\r\n btnWrap.appendChild(localNumberBtnWrap);\r\n }\r\n\r\n if (filterValues.goodStanding === '%' || filterValues.goodStanding === 'ALL') {\r\n btnWrap.appendChild(goodStandingBtnWrap);\r\n btnWrap.removeChild(goodStandingBtnWrap);\r\n } else {\r\n btnWrap.appendChild(goodStandingBtnWrap);\r\n }\r\n\r\n if (filterValues.homeServices === '%' || filterValues.homeServices === 'ALL') {\r\n btnWrap.appendChild(homeServicesBtnWrap);\r\n btnWrap.removeChild(homeServicesBtnWrap);\r\n } else {\r\n btnWrap.appendChild(homeServicesBtnWrap);\r\n }\r\n\r\n if (filterValues.takingNewReferrals === '%' || filterValues.takingNewReferrals === 'ALL') {\r\n btnWrap.appendChild(takingNewReferralsBtnWrap);\r\n btnWrap.removeChild(takingNewReferralsBtnWrap);\r\n } else {\r\n btnWrap.appendChild(takingNewReferralsBtnWrap);\r\n }\r\n\r\n if (filterValues.fundingSource === '%' || filterValues.fundingSource === 'ALL') {\r\n btnWrap.appendChild(fundingSourceBtnWrap);\r\n btnWrap.removeChild(fundingSourceBtnWrap);\r\n } else {\r\n btnWrap.appendChild(fundingSourceBtnWrap);\r\n }\r\n if (filterValues.serviceCode === '%' || filterValues.serviceCode === 'ALL') {\r\n btnWrap.appendChild(serviceCodeBtnWrap);\r\n btnWrap.removeChild(serviceCodeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(serviceCodeBtnWrap);\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n buildFilterPopUp('ALL');\r\n },\r\n });\r\n\r\n DDNumberBtn = button.build({\r\n id: 'DDNumberBtn',\r\n text: 'DD ',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtnVendorInfo',\r\n callback: () => {\r\n buildFilterPopUp('DDNumberBtn');\r\n },\r\n });\r\n\r\n DDNumberBtn2 = button.build({\r\n id: 'DDNumberBtn2',\r\n text: 'Number: ' + filterValues.DDNumber,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('DDNumberBtn');\r\n },\r\n });\r\n DDNumberCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('DDNumberBtn');\r\n },\r\n });\r\n\r\n localNumberBtn = button.build({\r\n id: 'localNumberBtn',\r\n text: 'Local Number: ' + filterValues.localNumber,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('localNumberBtn');\r\n },\r\n });\r\n localNumberCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('localNumberBtn');\r\n },\r\n });\r\n vendorBtn = button.build({\r\n id: 'vendorBtn',\r\n text: 'Vendor: ' + filterValues.vendor,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('vendorBtn');\r\n },\r\n });\r\n vendorCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('vendorBtn');\r\n },\r\n });\r\n\r\n goodStandingBtn = button.build({\r\n id: 'goodStandingBtn',\r\n text: filterValues.goodStanding == 'Y' ? 'In Good Standing: Yes' : 'In Good Standing: No',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('goodStandingBtn');\r\n },\r\n });\r\n goodStandingCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('goodStandingBtn');\r\n },\r\n });\r\n\r\n homeServicesBtn = button.build({\r\n id: 'homeServicesBtn',\r\n text: filterValues.homeServices == 'Y' ? 'In Home Services: Yes' : 'In Home Services: No',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('homeServicesBtn');\r\n },\r\n });\r\n homeServicesCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('homeServicesBtn');\r\n },\r\n });\r\n\r\n takingNewReferralsBtn = button.build({\r\n id: 'takingNewReferralsBtn',\r\n text: filterValues.takingNewReferrals == 'Y' ? 'Taking New Referrals: Yes' : 'Taking New Referrals: No',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('takingNewReferralsBtn');\r\n },\r\n });\r\n takingNewReferralsCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('takingNewReferralsBtn');\r\n },\r\n });\r\n\r\n fundingSourceBtn = button.build({\r\n id: 'fundingSourceBtn',\r\n text: 'Funding Source: ' + filterValues.fundingSource,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('fundingSourceBtn');\r\n },\r\n });\r\n fundingSourceCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('fundingSourceBtn');\r\n },\r\n });\r\n\r\n serviceCodeBtn = button.build({\r\n id: 'serviceCodeBtn',\r\n text: 'Service Code: ' + filterValues.serviceCode,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('serviceCodeBtn');\r\n },\r\n });\r\n serviceCodeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('serviceCodeBtn');\r\n },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n vendorBtnWrap = document.createElement('div');\r\n vendorBtnWrap.classList.add('filterSelectionBtnWrap');\r\n vendorBtnWrap.appendChild(vendorBtn);\r\n vendorBtnWrap.appendChild(vendorCloseBtn);\r\n btnWrap.appendChild(vendorBtnWrap);\r\n\r\n DDNumberBtnWrap = document.createElement('div');\r\n DDNumberBtnWrap.classList.add('filterSelectionBtnWrap');\r\n DDNumberBtnWrap.appendChild(DDNumberBtn);\r\n DDNumberBtnWrap.appendChild(DDNumberBtn2);\r\n DDNumberBtnWrap.appendChild(DDNumberCloseBtn);\r\n btnWrap.appendChild(DDNumberBtnWrap);\r\n\r\n localNumberBtnWrap = document.createElement('div');\r\n localNumberBtnWrap.classList.add('filterSelectionBtnWrap');\r\n localNumberBtnWrap.appendChild(localNumberBtn);\r\n localNumberBtnWrap.appendChild(localNumberCloseBtn);\r\n btnWrap.appendChild(localNumberBtnWrap);\r\n\r\n goodStandingBtnWrap = document.createElement('div');\r\n goodStandingBtnWrap.classList.add('filterSelectionBtnWrap');\r\n goodStandingBtnWrap.appendChild(goodStandingBtn);\r\n goodStandingBtnWrap.appendChild(goodStandingCloseBtn);\r\n btnWrap.appendChild(goodStandingBtnWrap);\r\n\r\n homeServicesBtnWrap = document.createElement('div');\r\n homeServicesBtnWrap.classList.add('filterSelectionBtnWrap');\r\n homeServicesBtnWrap.appendChild(homeServicesBtn);\r\n homeServicesBtnWrap.appendChild(homeServicesCloseBtn);\r\n btnWrap.appendChild(homeServicesBtnWrap);\r\n\r\n takingNewReferralsBtnWrap = document.createElement('div');\r\n takingNewReferralsBtnWrap.classList.add('filterSelectionBtnWrap');\r\n takingNewReferralsBtnWrap.appendChild(takingNewReferralsBtn);\r\n takingNewReferralsBtnWrap.appendChild(takingNewReferralsCloseBtn);\r\n btnWrap.appendChild(takingNewReferralsBtnWrap);\r\n\r\n fundingSourceBtnWrap = document.createElement('div');\r\n fundingSourceBtnWrap.classList.add('filterSelectionBtnWrap');\r\n fundingSourceBtnWrap.appendChild(fundingSourceBtn);\r\n fundingSourceBtnWrap.appendChild(fundingSourceCloseBtn);\r\n btnWrap.appendChild(fundingSourceBtnWrap);\r\n\r\n serviceCodeBtnWrap = document.createElement('div');\r\n serviceCodeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceCodeBtnWrap.appendChild(serviceCodeBtn);\r\n serviceCodeBtnWrap.appendChild(serviceCodeCloseBtn);\r\n btnWrap.appendChild(serviceCodeBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'DDNumberBtn') {\r\n filterValues.DDNumber = '';\r\n }\r\n if (closeFilter == 'localNumberBtn') {\r\n filterValues.localNumber = '';\r\n }\r\n if (closeFilter == 'vendorBtn') {\r\n filterValues.vendor = '%';\r\n }\r\n if (closeFilter == 'goodStandingBtn') {\r\n filterValues.goodStanding = '%';\r\n }\r\n if (closeFilter == 'homeServicesBtn') {\r\n filterValues.homeServices = '%';\r\n }\r\n if (closeFilter == 'fundingSourceBtn') {\r\n filterValues.fundingSource = '%';\r\n }\r\n if (closeFilter == 'serviceCodeBtn') {\r\n filterValues.serviceCode = '%';\r\n }\r\n if (closeFilter == 'takingNewReferralsBtn') {\r\n filterValues.takingNewReferrals = '%';\r\n }\r\n\r\n vendorInfoLoad(true);\r\n }\r\n\r\n // build Filter pop-up that displays when an \"Filter\" button is clicked\r\n function buildFilterPopUp(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n // dropdowns & inputs\r\n vendorDropdown = dropdown.build({\r\n id: 'vendorDropdown',\r\n label: 'Vendors',\r\n dropdownId: 'vendorDropdown',\r\n });\r\n\r\n DDNumberInput = input.build({\r\n id: 'DDNumberInput',\r\n type: 'text',\r\n label: 'DD Number',\r\n style: 'secondary',\r\n value: filterValues.DDNumber,\r\n });\r\n\r\n localNumberInput = input.build({\r\n id: 'localNumberInput',\r\n type: 'text',\r\n label: 'Local Number',\r\n style: 'secondary',\r\n value: filterValues.localNumber,\r\n });\r\n\r\n goodStandingDropdown = dropdown.build({\r\n id: 'goodStandingDropdown',\r\n label: 'In Good Standing',\r\n dropdownId: 'goodStandingDropdown',\r\n });\r\n\r\n homeServicesDropdown = dropdown.build({\r\n id: 'homeServicesDropdown',\r\n label: 'In Home Services',\r\n dropdownId: 'homeServicesDropdown',\r\n });\r\n\r\n takingNewReferralsDropdown = dropdown.build({\r\n id: 'takingNewReferralsDropdown',\r\n label: 'Taking New Referrals',\r\n dropdownId: 'takingNewReferralsDropdown',\r\n });\r\n\r\n fundingSourceDropdown = dropdown.build({\r\n id: 'fundingSourceDropdown',\r\n label: 'Funding Source',\r\n dropdownId: 'fundingSourceDropdown',\r\n });\r\n\r\n serviceCodeDropdown = dropdown.build({\r\n id: 'serviceCodeDropdown',\r\n label: 'Service Code',\r\n dropdownId: 'serviceCodeDropdown',\r\n });\r\n\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => filterPopupCancelBtn(),\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'vendorBtn') filterPopup.appendChild(vendorDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'DDNumberBtn') filterPopup.appendChild(DDNumberInput);\r\n if (IsShow == 'ALL' || IsShow == 'localNumberBtn') filterPopup.appendChild(localNumberInput);\r\n if (IsShow == 'ALL' || IsShow == 'goodStandingBtn') filterPopup.appendChild(goodStandingDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'homeServicesBtn') filterPopup.appendChild(homeServicesDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'takingNewReferralsBtn') filterPopup.appendChild(takingNewReferralsDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'fundingSourceBtn') filterPopup.appendChild(fundingSourceDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'serviceCodeBtn') filterPopup.appendChild(serviceCodeDropdown);\r\n\r\n filterPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(filterPopup);\r\n eventListeners();\r\n populateFilterDropdown();\r\n }\r\n\r\n // binding filter events\r\n function eventListeners() {\r\n var tmpVendor;\r\n var tmpDDNumber;\r\n var tmpLocalNumber;\r\n var tmpGoodStanding;\r\n var tmpHomeServices;\r\n var tmpTakingNewReferrals;\r\n var tmpFundingSource;\r\n var tmpServiceCode;\r\n\r\n vendorDropdown.addEventListener('change', event => {\r\n tmpVendor = event.target.value;\r\n });\r\n DDNumberInput.addEventListener('input', event => {\r\n tmpDDNumber = event.target.value.trim();\r\n });\r\n localNumberInput.addEventListener('input', event => {\r\n tmpLocalNumber = event.target.value.trim();\r\n });\r\n goodStandingDropdown.addEventListener('change', event => {\r\n tmpGoodStanding = event.target.value;\r\n });\r\n homeServicesDropdown.addEventListener('change', event => {\r\n tmpHomeServices = event.target.value;\r\n });\r\n takingNewReferralsDropdown.addEventListener('change', event => {\r\n tmpTakingNewReferrals = event.target.value;\r\n });\r\n fundingSourceDropdown.addEventListener('change', event => {\r\n tmpFundingSource = event.target.value;\r\n });\r\n serviceCodeDropdown.addEventListener('change', event => {\r\n tmpServiceCode = event.target.value;\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n updateFilterData({\r\n tmpVendor,\r\n tmpDDNumber,\r\n tmpLocalNumber,\r\n tmpGoodStanding,\r\n tmpHomeServices,\r\n tmpTakingNewReferrals,\r\n tmpFundingSource,\r\n tmpServiceCode,\r\n });\r\n\r\n POPUP.hide(filterPopup);\r\n vendorInfoLoad(true);\r\n });\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tmpVendor) filterValues.vendor = data.tmpVendor;\r\n if (data.tmpDDNumber != undefined) filterValues.DDNumber = data.tmpDDNumber;\r\n if (data.tmpLocalNumber != undefined) filterValues.localNumber = data.tmpLocalNumber;\r\n if (data.tmpGoodStanding) filterValues.goodStanding = data.tmpGoodStanding;\r\n if (data.tmpHomeServices) filterValues.homeServices = data.tmpHomeServices;\r\n if (data.tmpTakingNewReferrals) filterValues.takingNewReferrals = data.tmpTakingNewReferrals;\r\n if (data.tmpFundingSource) filterValues.fundingSource = data.tmpFundingSource;\r\n if (data.tmpServiceCode) filterValues.serviceCode = data.tmpServiceCode;\r\n }\r\n\r\n async function populateFilterDropdown() {\r\n const { getVendorResult: Vendor } = await authorizationsAjax.getVendorAsync();\r\n let vendorData = Vendor.map(vendor => ({\r\n id: vendor.Description,\r\n value: vendor.Description,\r\n text: vendor.Description,\r\n }));\r\n vendorData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('vendorDropdown', vendorData, filterValues.vendor);\r\n\r\n const { getFundingSourceResult: FundingSource } = await authorizationsAjax.getFundingSourceAsync();\r\n let fundingSourceData = FundingSource.map(fundingSource => ({\r\n id: fundingSource.ID,\r\n value: fundingSource.Description,\r\n text: fundingSource.Description,\r\n }));\r\n fundingSourceData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('fundingSourceDropdown', fundingSourceData, filterValues.fundingSource);\r\n\r\n const { getServiceCodeResult: ServiceCode } = await authorizationsAjax.getServiceCodeAsync();\r\n let serviceCodeData = ServiceCode.map(serviceCode => ({\r\n id: serviceCode.ID,\r\n value: serviceCode.Description,\r\n text: serviceCode.Description,\r\n }));\r\n serviceCodeData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('serviceCodeDropdown', serviceCodeData, filterValues.serviceCode);\r\n\r\n const goodStandingData = [\r\n { id: 1, value: 'N', text: 'No' },\r\n { id: 2, value: 'Y', text: 'Yes' },\r\n ];\r\n goodStandingData.unshift({ id: '%', value: '%', text: 'ALL' });\r\n dropdown.populate('goodStandingDropdown', goodStandingData, filterValues.goodStanding);\r\n\r\n const homeServicesData = [\r\n { id: 1, value: 'N', text: 'No' },\r\n { id: 2, value: 'Y', text: 'Yes' },\r\n ];\r\n homeServicesData.unshift({ id: '%', value: '%', text: 'ALL' });\r\n dropdown.populate('homeServicesDropdown', homeServicesData, filterValues.homeServices);\r\n\r\n const takingNewReferralsData = [\r\n { id: 1, value: 'N', text: 'No' },\r\n { id: 2, value: 'Y', text: 'Yes' },\r\n ];\r\n takingNewReferralsData.unshift({ id: '%', value: '%', text: 'ALL' });\r\n dropdown.populate('takingNewReferralsDropdown', takingNewReferralsData, filterValues.takingNewReferrals);\r\n }\r\n\r\n function filterPopupCancelBtn() {\r\n POPUP.hide(filterPopup);\r\n }\r\n\r\n // load\r\n async function loadReviewPage(fromFilter) {\r\n var DDNum = filterValues.DDNumber == '' ? '%' : filterValues.DDNumber;\r\n var localNum = filterValues.localNumber == '' ? '%' : filterValues.localNumber;\r\n if (fromFilter) {\r\n await authorizationsAjax.getVendorInfoAsync(\r\n {\r\n vendor: filterValues.vendor,\r\n DDNumber: DDNum,\r\n localNumber: localNum,\r\n goodStanding: filterValues.goodStanding,\r\n homeServices: filterValues.homeServices,\r\n takingNewReferrals: filterValues.takingNewReferrals,\r\n fundingSource: filterValues.fundingSource,\r\n serviceCode: filterValues.serviceCode,\r\n },\r\n async function (results) {\r\n tempUserTableData = results;\r\n vendorsData = results;\r\n await groupVendorData();\r\n },\r\n );\r\n return;\r\n }\r\n\r\n await authorizationsAjax.getVendorLandingPageInfoAsync(async function (results) {\r\n tempUserTableData = results;\r\n vendorsData = results;\r\n await groupVendorData();\r\n });\r\n }\r\n\r\n function pouplateVendors() {\r\n if (!groupedVendors[activeGroup + 1]) {\r\n document.getElementById('loadMoreBtn').style.display = 'none';\r\n } else {\r\n document.getElementById('loadMoreBtn').style.display = 'block';\r\n }\r\n loadMoreVendors = loadMoreVendors.concat(groupedVendors[activeGroup]);\r\n populateTable(loadMoreVendors);\r\n }\r\n\r\n async function groupVendorData(vendors) {\r\n const chunkBy = 50;\r\n chunkedArray = vendors ? UTIL.chunkArray(vendors, chunkBy) : UTIL.chunkArray(vendorsData, chunkBy);\r\n groupedVendors = {};\r\n chunkedArray.forEach((a, index) => (groupedVendors[index] = a));\r\n const vendorKeys = Object.keys(groupedVendors);\r\n vendorGroupCount = vendorKeys && vendorKeys.length;\r\n activeGroup = 0;\r\n loadMoreVendors = groupedVendors[activeGroup];\r\n populateTable(loadMoreVendors);\r\n }\r\n\r\n function buildLoadMoreBtn() {\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('loadMoreVendorBtn');\r\n\r\n const btn = button.build({\r\n id: 'loadMoreBtn',\r\n text: 'Load More...',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n activeGroup++;\r\n pouplateVendors();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(btn);\r\n\r\n return btnWrap;\r\n }\r\n\r\n function formatPhoneNumber(number) {\r\n if (number == '' || number == ' ') return '';\r\n\r\n const phoneNumber = UTIL.formatPhoneNumber(number.substr(0, 10));\r\n const phoneExt = number.substr(10);\r\n\r\n const phonebracket = phoneNumber.substr(0, 3);\r\n const phonenum = phoneNumber.substr(4, 11);\r\n\r\n const phone = `(${phonebracket})` + ` ` + ` ${phonenum}` + ` ` + `${phoneExt}`;\r\n\r\n return phone;\r\n }\r\n\r\n return {\r\n init,\r\n vendorInfoLoad,\r\n };\r\n})();\r\n","const vendorLocationReview = (() => {\r\n let vendorID;\r\n let locationReviewEntries;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n locationReviewEntries = await authorizationsAjax.getVenderLocationReviewEntriesAsync(vendorID);\r\n }\r\n\r\n function getMarkup() {\r\n const locatationReviewWrap = document.createElement('div');\r\n locatationReviewWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewVendorLocationReviewForm();\r\n locatationReviewWrap.appendChild(importantTables);\r\n\r\n return locatationReviewWrap;\r\n }\r\n\r\n function buildNewVendorLocationReviewForm() {\r\n const locatationReviewDiv = document.createElement('div');\r\n locatationReviewDiv.classList.add('additionalQuestionWrap');\r\n\r\n locationReviewEntriesTable = buildLocationReviewEntriesTable();\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = locationReviewEntriesTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Location\r\n headers[1].setAttribute('data-type', 'string'); // Review Type\r\n headers[2].setAttribute('data-type', 'date'); // Due Date \r\n headers[3].setAttribute('data-type', 'date'); // Completed Date \r\n headers[4].setAttribute('data-type', 'string'); // Responsible Staff \r\n\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
Location Review
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(locationReviewEntriesTable);\r\n locatationReviewDiv.appendChild(column1);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(locationReviewEntriesTable); \r\n\r\n return locatationReviewDiv;\r\n }\r\n\r\n function buildLocationReviewEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoTable', \r\n columnHeadings: ['Location ', 'Review Type', 'Due Date', 'Completed Date', 'Responsible Staff'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = locationReviewEntries.getVenderLocationReviewEntriesResult.map((entry) => ({\r\n values: [entry.location, entry.reviewType, entry.dueDate == '' ? '' : moment(entry.dueDate).format('MM/DD/YYYY'), entry.completedDate == '' ? '' : moment(entry.completedDate).format('MM/DD/YYYY'), entry.responsibleStaff],\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n\r\n return {\r\n init,\r\n buildNewVendorLocationReviewForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorProviderType = (() => {\r\n let vendorID;\r\n let providerTypeEntries;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n providerTypeEntries = await authorizationsAjax.getProviderTypeEntriesAsync(vendorID);\r\n }\r\n\r\n function getMarkup() {\r\n const vendorProviderWrap = document.createElement('div');\r\n vendorProviderWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewVendorProviderTypeForm();\r\n vendorProviderWrap.appendChild(importantTables);\r\n\r\n return vendorProviderWrap;\r\n }\r\n\r\n function buildNewVendorProviderTypeForm() {\r\n const vendorProviderDiv = document.createElement('div');\r\n vendorProviderDiv.classList.add('additionalQuestionWrap');\r\n\r\n providerTypeEntriesTable = buildProviderTypeEntriesTable();\r\n\r\n const headers = providerTypeEntriesTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Provider Type\r\n headers[1].setAttribute('data-type', 'date'); // Start Date\r\n headers[2].setAttribute('data-type', 'date'); // End Date \r\n headers[3].setAttribute('data-type', 'string'); // Notes \r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
Provider Type
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(providerTypeEntriesTable);\r\n vendorProviderDiv.appendChild(column1);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(providerTypeEntriesTable); \r\n\r\n return vendorProviderDiv;\r\n }\r\n\r\n function buildProviderTypeEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoTable',\r\n columnHeadings: ['Provider Type', 'Start Date', 'End Date', 'Notes'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = providerTypeEntries.getProviderTypeEntriesResult.map((entry) => ({\r\n values: [entry.ProviderType, entry.startDate == '' ? '' : moment(entry.startDate).format('MM/DD/YYYY'), entry.endDate == '' ? '' : moment(entry.endDate).format('MM/DD/YYYY'), entry.Notes],\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n return {\r\n init,\r\n buildNewVendorProviderTypeForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorServices = (() => {\r\n let vendorID;\r\n let ServicesEntries;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n ServicesEntries = await authorizationsAjax.getVenderServicesEntriesAsync(vendorID);\r\n }\r\n\r\n function getMarkup() {\r\n const vendorServicesWrap = document.createElement('div');\r\n vendorServicesWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewVendorServicesForm();\r\n vendorServicesWrap.appendChild(importantTables);\r\n\r\n return vendorServicesWrap;\r\n }\r\n\r\n function buildNewVendorServicesForm() {\r\n const vendorServicesDiv = document.createElement('div');\r\n vendorServicesDiv.classList.add('additionalQuestionWrap');\r\n\r\n serviceEntriesTable = buildServicesEntriesTable();\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
Services
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(serviceEntriesTable);\r\n vendorServicesDiv.appendChild(column1);\r\n return vendorServicesDiv;\r\n }\r\n\r\n function buildServicesEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoTable',\r\n columnHeadings: ['Funding Source', 'Service Code', 'Service Description'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = ServicesEntries.getVenderServicesEntriesResult.map((entry) => ({\r\n values: [entry.fundingSource, entry.serviceCode, entry.serviceDescription], \r\n }));\r\n const oTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = oTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Funding Source\r\n headers[1].setAttribute('data-type', 'string'); // Service Code\r\n headers[2].setAttribute('data-type', 'string'); // Service Description \r\n\r\n table.populate(oTable, tableData);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable); \r\n\r\n return oTable;\r\n }\r\n\r\n return {\r\n init,\r\n buildNewVendorServicesForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorUCR = (() => {\r\n\r\n let vendorID;\r\n let UCREntries;\r\n\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n UCREntries = await authorizationsAjax.getVenderUCREntriesAsync(vendorID);\r\n }\r\n\r\n\r\n function getMarkup() {\r\n const vendorUCRWrap = document.createElement('div');\r\n vendorUCRWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewVendorUCRForm();\r\n vendorUCRWrap.appendChild(importantTables);\r\n\r\n return vendorUCRWrap;\r\n }\r\n\r\n function buildNewVendorUCRForm() {\r\n const vendorUCRDiv = document.createElement('div');\r\n vendorUCRDiv.classList.add('additionalQuestionWrap');\r\n\r\n UCREntriesTable = buildUCREntriesTable();\r\n\r\n const headers = UCREntriesTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Service\r\n headers[1].setAttribute('data-type', 'string'); // Group Size\r\n headers[2].setAttribute('data-type', 'string'); // Service Location \r\n headers[3].setAttribute('data-type', 'string'); // CDB Category \r\n headers[4].setAttribute('data-type', 'string'); // Assessment/ Acuity Score\r\n headers[5].setAttribute('data-type', 'date'); // Start Date\r\n headers[6].setAttribute('data-type', 'date'); // End Date \r\n headers[7].setAttribute('data-type', 'amount'); // UCR\r\n\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
UCR
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(UCREntriesTable);\r\n vendorUCRDiv.appendChild(column1);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(UCREntriesTable); \r\n\r\n return vendorUCRDiv;\r\n }\r\n\r\n function buildUCREntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoUCRTable',\r\n columnHeadings: ['Service ', 'Group Size', 'Service Location', 'CDB Category', 'Assessment/ Acuity Score', 'Start Date', 'End Date', 'UCR'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = UCREntries.getVenderUCREntriesResult.map((entry) => ({\r\n values: [entry.service, entry.groupSize, entry.serviceLocation, entry.CDBCategory, entry.assessmentAcuityScore, entry.startDate == '' ? '' : moment(entry.startDate).format('MM/DD/YYYY'), entry.endDate == '' ? '' : moment(entry.endDate).format('MM/DD/YYYY'), entry.UCR == '' ? entry.UCR : '$' + entry.UCR],\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n\r\n return {\r\n init,\r\n buildNewVendorUCRForm,\r\n getMarkup,\r\n };\r\n})(); ","const CaseNotes = (() => {\r\n //--------------------------\r\n // SESSION DATA\r\n //--------------------------\r\n let caseNoteId = null;\r\n let caseNoteGroupId = null;\r\n let caseNoteEditData = {};\r\n let caseNoteAttachmentsEditData = [];\r\n let attachmentsForDelete = [];\r\n let caseManagerId;\r\n let selectedConsumers = [];\r\n let selectedDate = null;\r\n let selectedServiceCode;\r\n let updatedInputs = {};\r\n let allowGroupNotes = false;\r\n let defaultServiceCode;\r\n //--------------------------\r\n // PERMISSIONS\r\n //--------------------------\r\n let isReadOnly;\r\n //--------------------------\r\n // DOM\r\n //--------------------------\r\n let moduleWrap;\r\n let cnHeader;\r\n let cnDateNavWrap;\r\n let cnFormWrap;\r\n let cnRosterWrap;\r\n //--------------------------\r\n // UI INSTANCES\r\n //--------------------------\r\n let dateNavigation;\r\n let rosterPicker;\r\n let cnForm;\r\n let cnOverview;\r\n let cnPhrases;\r\n let cnDocTimer;\r\n let reqVisualizer;\r\n\r\n function resetModuleData() {\r\n _DOM.ACTIONCENTER.removeAttribute('data-ui');\r\n\r\n moduleWrap = undefined;\r\n cnHeader = undefined;\r\n cnDateNavWrap = undefined;\r\n cnFormWrap = undefined;\r\n cnRosterWrap = undefined;\r\n dateNavigation = undefined;\r\n rosterPicker = undefined;\r\n cnForm = undefined;\r\n cnOverview = undefined;\r\n cnPhrases = undefined;\r\n cnDocTimer = undefined;\r\n reqVisualizer = undefined;\r\n\r\n resetNoteData();\r\n }\r\n function resetNoteData() {\r\n caseNoteId = null;\r\n caseNoteGroupId = null;\r\n caseNoteEditData = {};\r\n caseNoteAttachmentsEditData = [];\r\n attachmentsForDelete = [];\r\n caseManagerId = $.session.PeopleId;\r\n selectedConsumers = [];\r\n selectedServiceCode = defaultServiceCode ? defaultServiceCode : '';\r\n updatedInputs = {};\r\n }\r\n function resetModule() {\r\n resetModuleData();\r\n resetNoteData();\r\n }\r\n\r\n // UTILS\r\n //--------------------------------------------------\r\n function isNoteConfidential() {\r\n // old function = checkConfidential\r\n }\r\n function setPermissions() {\r\n //TODO-ASH: check if case note is batched | *ONLY FOR REVIEW*\r\n // batched notes are readonly, if batched status === '' it is NOT BATCHED\r\n\r\n //! GK ONLY\r\n //? If note is batched then we shouldn't hit this if bc note is read only\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n if ($.session.CaseNotesUpdate) {\r\n if (\r\n !$.session.CaseNotesUpdateEntered ||\r\n ($.session.CaseNotesUpdateEntered && caseManagerId === $.session.PeopleId)\r\n ) {\r\n //can edit (correct alignment of Update and UpdateEntered Case Notes permissions)\r\n isReadOnly = false;\r\n } else {\r\n //can not edit (with UpdateEntered permission, can't edit other people's case notes)\r\n isReadOnly = true;\r\n }\r\n } else {\r\n isReadOnly = true; //can not edit (no overall update permission)\r\n }\r\n }\r\n }\r\n function checkServiceFundingADV() {\r\n //! ADV ONLY\r\n // based off selected servBillCode\r\n // check its service funding value\r\n // if funding value is \"N\" - disable service location dropdown\r\n // else - enable dropdown, make required\r\n }\r\n function checkGroupNotesPermission() {\r\n allowGroupNotes;\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n allowGroupNotes = cnData.allowGroupNotes(selectedServiceCode);\r\n } else {\r\n allowGroupNotes = true;\r\n }\r\n\r\n rosterPicker.toggleMultiSelectOption(allowGroupNotes);\r\n }\r\n function extractCaseNoteId(xmlString) {\r\n const match = xmlString.match(/(\\d+)<\\/caseNoteId>/);\r\n return match ? match[1] : null;\r\n }\r\n function checkRequiredFields() {\r\n // const isFormValid = areAllFormFieldsValid();\r\n let isSaveDisabled = false;\r\n\r\n if (selectedConsumers.length === 0) {\r\n isSaveDisabled = true;\r\n } else {\r\n isSaveDisabled = false;\r\n }\r\n\r\n if (isSaveDisabled) {\r\n cnForm.buttons['submit'].toggleDisabled(true);\r\n cnForm.buttons['saveAndNew'].toggleDisabled(true);\r\n cnForm.buttons['update'].toggleDisabled(true);\r\n } else {\r\n cnForm.buttons['submit'].toggleDisabled(false);\r\n cnForm.buttons['saveAndNew'].toggleDisabled(false);\r\n cnForm.buttons['update'].toggleDisabled(false);\r\n }\r\n }\r\n\r\n // TIME HELPERS\r\n //--------------------------------------------------\r\n function parseSessionTime(dirtyTime) {\r\n let time = `${dirtyTime.slice(0, -2)} ${dirtyTime.slice(-2)}`;\r\n time = UTIL.convertToMilitary(time);\r\n return time.slice(0, -3);\r\n }\r\n function timesWithinWorkHoursCheck(startTime, endTime) {\r\n const valuesToCheck = [undefined, null, '', '00:00', 'Null'];\r\n const isWarningStartTimeValid = valuesToCheck.includes($.session.caseNotesWarningStartTime) ? false : true;\r\n const isWarningEndTimeValid = valuesToCheck.includes($.session.caseNotesWarningStartTime) ? false : true;\r\n\r\n if (!isWarningStartTimeValid || !isWarningEndTimeValid) {\r\n // session warning times don't matter\r\n return true;\r\n }\r\n\r\n const warnStart = parseSessionTime($.session.caseNotesWarningStartTime);\r\n const warnEnd = parseSessionTime($.session.caseNotesWarningEndTime);\r\n\r\n const validStart = (startTime < warnStart || startTime > warnEnd) && startTime !== '' ? false : true;\r\n const validEnd = (endTime < warnStart || endTime > warnEnd) && endTime !== '' ? false : true;\r\n\r\n return { validStart, validEnd };\r\n }\r\n function isFutureTime(dirtyTime) {\r\n //If selectedDate is not today then time dosen't matter\r\n const isToday = new Date().setHours(0, 0, 0, 0) !== new Date(selectedDate).setHours(0, 0, 0, 0);\r\n if (!isToday || !dirtyTime) {\r\n return false;\r\n }\r\n\r\n const currentDate = new Date();\r\n const selectedDateClone = new Date(selectedDate);\r\n\r\n // CHECKS IF TIME IS IN FURUTRE\r\n dirtyTime = dirtyTime.split(':');\r\n selectedDateClone.setHours(dirtyTime[0], dirtyTime[1], 0, 0);\r\n return dates.isAfter(selectedDateClone, currentDate);\r\n }\r\n function isStartTimeBeforeEndTime(startTime, endTime) {\r\n if (!startTime || !endTime) return true;\r\n\r\n return startTime < endTime ? true : false;\r\n }\r\n async function timeOverlapCheck(startTime, endTime) {\r\n await cnData.fetchTimeOverlapData({\r\n caseManagerId,\r\n consumerId: selectedConsumers[0],\r\n endTime: endTime,\r\n groupNoteId: caseNoteGroupId ?? 0,\r\n noteId: caseNoteId ?? 0,\r\n serviceDate: dates.formatISO(selectedDate, { representation: 'date' }),\r\n startTime: startTime,\r\n });\r\n\r\n const overlap = cnData.getOverlapData();\r\n\r\n return overlap;\r\n }\r\n\r\n // CRUD\r\n //--------------------------------------------------\r\n async function deleteNote(noteId) {\r\n const response = await _UTIL.fetchData('deleteExistingCaseNote', {\r\n noteId: noteId,\r\n });\r\n\r\n return response.deleteExistingCaseNoteResults;\r\n }\r\n async function saveAttachments(attachmentsForSave) {\r\n const saveAttachmentPromises = [];\r\n\r\n // Store promises in array so we can handle each attachment individually\r\n for (attachment in attachmentsForSave) {\r\n const promise = _UTIL\r\n .fetchData('addCaseNoteAttachment', {\r\n caseNoteId: caseNoteId,\r\n description: attachmentsForSave[attachment].description,\r\n attachmentType: attachmentsForSave[attachment].type,\r\n attachment: attachmentsForSave[attachment].attachment,\r\n })\r\n .then(result => ({ status: 'fulfilled', value: result }))\r\n .catch(error => ({ status: 'rejected', reason: error, attachment: attachmentsForSave[attachment] }));\r\n\r\n saveAttachmentPromises.push(promise);\r\n }\r\n\r\n // Loop through to check for any failed attachment saves\r\n const saveAttachmentResults = await Promise.allSettled(saveAttachmentPromises);\r\n const failedSaves = saveAttachmentResults.reduce((acc, result) => {\r\n if (result.status === 'rejected') {\r\n acc.push(result.attachment.description);\r\n }\r\n return acc;\r\n }, []);\r\n\r\n return failedSaves.length === 0 ? 'success' : 'error';\r\n }\r\n async function saveGroup(data) {\r\n const savePromises = [];\r\n let newGroupId;\r\n let consumerGroupCount;\r\n\r\n if (!caseNoteGroupId) {\r\n deleteNote(caseNoteId);\r\n caseNoteId = null;\r\n const response = await _UTIL.fetchData('getGroupNoteId');\r\n newGroupId = JSON.parse(response.getGroupNoteIdResult);\r\n newGroupId = newGroupId[0].groupNoteId;\r\n consumerGroupCount = selectedConsumers.length;\r\n }\r\n\r\n selectedConsumers.forEach(consumerId => {\r\n if (!caseNoteGroupId) {\r\n savePromises.push(\r\n _UTIL\r\n .fetchData('saveGroupCaseNote', {\r\n ...data,\r\n consumerId,\r\n consumerGroupCount,\r\n groupNoteId: newGroupId,\r\n noteId: 0,\r\n })\r\n .then(result => ({ status: 'fulfilled', value: result }))\r\n .catch(error => ({ status: 'rejected', reason: error })),\r\n );\r\n\r\n return;\r\n }\r\n\r\n if (caseNoteEditData.consumerid === consumerId) {\r\n savePromises.push(\r\n _UTIL\r\n .fetchData('saveCaseNote', data)\r\n .then(result => ({ status: 'fulfilled', value: result }))\r\n .catch(error => ({ status: 'rejected', reason: error })),\r\n );\r\n } else {\r\n data.consumerId = consumerId;\r\n savePromises.push(\r\n _UTIL\r\n .fetchData('saveAdditionalGroupCaseNote', data)\r\n .then(result => ({ status: 'fulfilled', value: result }))\r\n .catch(error => ({ status: 'rejected', reason: error })),\r\n );\r\n }\r\n });\r\n\r\n if (caseNoteGroupId) {\r\n savePromises.push(\r\n _UTIL\r\n .fetchData('updateGroupNoteValues', {\r\n groupNoteId: caseNoteGroupId,\r\n noteId: caseNoteId,\r\n serviceOrBillingCodeId: data.serviceOrBillingCodeId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n })\r\n .then(result => ({ status: 'fulfilled', value: result }))\r\n .catch(error => ({ status: 'rejected', reason: error })),\r\n );\r\n }\r\n\r\n const groupSaveResults = await Promise.allSettled(savePromises);\r\n const failedSaves = groupSaveResults.reduce((acc, result) => {\r\n if (result.status === 'rejected') {\r\n acc.push('fail');\r\n }\r\n return acc;\r\n }, []);\r\n\r\n if (!caseNoteGroupId && caseNoteAttachmentsEditData.length) {\r\n // re saving attachments back to orig note\r\n saveAttachments(caseNoteAttachmentsEditData);\r\n }\r\n\r\n if (newGroupId) {\r\n caseNoteGroupId = newGroupId;\r\n }\r\n\r\n const success = failedSaves.length === 0 ? 'success' : 'error';\r\n return {\r\n success,\r\n newGroup: newGroupId ? true : false,\r\n };\r\n }\r\n async function saveNote(data, attachments) {\r\n let saveResponse,\r\n isNewGroup = false;\r\n\r\n reqVisualizer.show('Saving Case Note...');\r\n\r\n if (selectedConsumers.length === 1 && !caseNoteGroupId) {\r\n // NEW NOTE or EDIT NON GROUP NOTE\r\n const response = (await _UTIL.fetchData('saveCaseNote', data)).saveCaseNoteResult;\r\n caseNoteId = caseNoteId ? caseNoteId : extractCaseNoteId(response);\r\n saveResponse = caseNoteId ? 'success' : 'error';\r\n isNewGroup = false;\r\n\r\n // SAVE ATTACHMENTS\r\n if ($.session.applicationName === 'Gatekeeper' && Object.keys(attachments).length > 0) {\r\n const attachSaveResponse = saveAttachments(attachments);\r\n if (attachSaveResponse === 'error') {\r\n reqVisualizer.fullfill('error', 'Error Saving Attachments', 2000);\r\n return;\r\n }\r\n }\r\n } else {\r\n const resp = await saveGroup(data);\r\n saveResponse = resp.success;\r\n isNewGroup = resp.newGroup;\r\n }\r\n\r\n if (saveResponse === 'success') {\r\n reqVisualizer.fullfill('success', 'Case Note Saved!', 2000);\r\n } else {\r\n reqVisualizer.fullfill('error', 'Error Saving Case Note', 2000);\r\n }\r\n\r\n return { saveResponse, isNewGroup };\r\n }\r\n\r\n // FORM\r\n //--------------------------------------------------\r\n function areAllFormFieldsValid() {\r\n const invalidControls = cnForm.form.querySelectorAll(':invalid');\r\n\r\n if (invalidControls.length > 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n function checkFormForUnsavedChanges(inputName, newValue) {\r\n const originalNoteDataMap = {\r\n serviceCode: caseNoteEditData.mainbillingorservicecodeid,\r\n location: caseNoteEditData.locationcode,\r\n serviceLocation: caseNoteEditData.servicelocationid,\r\n need: caseNoteEditData.serviceneedcode,\r\n vendor: caseNoteEditData.vendorid,\r\n contact: caseNoteEditData.contactcode,\r\n startTime: caseNoteEditData.starttime,\r\n endTime: caseNoteEditData.endtime,\r\n mileage: caseNoteEditData.totalmiles,\r\n travelTime: caseNoteEditData.traveltime,\r\n noteText: caseNoteEditData.casenote,\r\n confidential: caseNoteEditData.confidential,\r\n outcomeServiceMonitoring: caseNoteEditData.outcomeServiceMonitoring,\r\n };\r\n\r\n if (originalNoteDataMap[inputName] !== newValue) {\r\n updatedInputs[inputName] = true;\r\n } else {\r\n delete updatedInputs[inputName];\r\n }\r\n\r\n if (Object.keys(updatedInputs).length) {\r\n cnFormToast.show(`You have unsaved changes. Click 'Update' to keep them or 'Cancel' to discard.`);\r\n } else {\r\n cnFormToast.close();\r\n }\r\n }\r\n function toggleFormButtonShowHide() {\r\n cnForm.buttons['submit'].toggleVisibility(caseNoteId ? true : false);\r\n cnForm.buttons['saveAndNew'].toggleVisibility(caseNoteId ? true : false);\r\n cnForm.buttons['update'].toggleVisibility(caseNoteId ? false : true);\r\n cnForm.buttons['delete'].toggleVisibility(caseNoteId ? false : true);\r\n }\r\n function toggleFormButtonsDisabled(isDisabled) {\r\n cnForm.buttons['submit'].toggleDisabled(isDisabled);\r\n cnForm.buttons['saveAndNew'].toggleDisabled(isDisabled);\r\n cnForm.buttons['update'].toggleDisabled(isDisabled);\r\n cnForm.buttons['delete'].toggleDisabled(isDisabled);\r\n cnForm.buttons['cancel'].toggleDisabled(isDisabled);\r\n }\r\n // DROPDOWNS\r\n async function updateVendorDropdownByConsumer() {\r\n await cnData.fetchVendorDropdownData({\r\n consumerId: selectedConsumers[0],\r\n serviceDate: dates.formatISO(selectedDate, { representation: 'date' }),\r\n });\r\n\r\n const vendorData = cnData.getVendorDropdownData();\r\n cnForm.inputs['vendor'].populate(vendorData);\r\n\r\n if (vendorData.length === 1) {\r\n cnForm.inputs['vendor'].setValue(vendorData[0].value);\r\n }\r\n }\r\n async function updateServiceLocationDropdownByConsumer() {\r\n await cnData.fetchServiceLocationDropdownData({\r\n consumerId: selectedConsumers[0],\r\n serviceDate: dates.formatISO(selectedDate, { representation: 'date' }),\r\n });\r\n\r\n const servLocData = cnData.getServiceLocationDropdownData();\r\n cnForm.inputs['serviceLocation'].populate(servLocData);\r\n if (cnForm.formData) {\r\n cnForm.inputs['serviceLocation'].setValue(cnForm.formData.serviceLocation);\r\n }\r\n\r\n onServiceCodeChange();\r\n }\r\n async function setConsumerRelatedDropdowns() {\r\n await updateVendorDropdownByConsumer();\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n await updateServiceLocationDropdownByConsumer();\r\n\r\n if (cnData.canConsumerHaveMileage(selectedConsumers[0])) {\r\n cnForm.inputs['mileage'].toggleDisabled(false);\r\n }\r\n }\r\n }\r\n // ATTACHMENT DELETE\r\n async function onFileDelete(e) {\r\n // console.log(e.target);\r\n // console.log('File delete from form', e.detail);\r\n\r\n attachmentsForDelete.push(e.detail);\r\n // console.log(attachmentsForDelete);\r\n }\r\n // CHANGE \\ KEYUP\r\n function onTimeChange(target) {\r\n const inputKey = target === 'start' ? 'startTime' : 'endTime';\r\n const startTimeVal = cnForm.inputs['startTime'].getValue();\r\n const endTimeVal = cnForm.inputs['endTime'].getValue();\r\n\r\n if (startTimeVal === '' && endTimeVal === '') {\r\n return;\r\n }\r\n\r\n if (target) {\r\n const isTimeFuture = isFutureTime(target === 'start' ? startTimeVal : endTimeVal);\r\n if (isTimeFuture) {\r\n cnForm.inputs[inputKey].setValidtyError('error');\r\n cnForm.inputs[inputKey].showError('Time can not be in future.');\r\n return;\r\n }\r\n } else {\r\n const isStartTimeFuture = isFutureTime(startTimeVal);\r\n const isEndTimeFuture = isFutureTime(endTimeVal);\r\n if (isStartTimeFuture) {\r\n cnForm.inputs['startTime'].setValidtyError('error');\r\n cnForm.inputs['startTime'].showError('Time can not be in future.');\r\n }\r\n if (isEndTimeFuture) {\r\n cnForm.inputs['endTime'].setValidtyError('error');\r\n cnForm.inputs['endTime'].showError('Time can not be in future.');\r\n }\r\n if (isStartTimeFuture || isEndTimeFuture) return;\r\n }\r\n\r\n const isStartBeforeEnd = isStartTimeBeforeEndTime(startTimeVal, endTimeVal);\r\n if (!isStartBeforeEnd) {\r\n cnForm.inputs['startTime'].setValidtyError(`error`);\r\n cnForm.inputs['startTime'].showError(`Start time can't be after end time.`);\r\n return;\r\n }\r\n\r\n cnForm.inputs['startTime'].setValidtyError('');\r\n cnForm.inputs['endTime'].setValidtyError('');\r\n\r\n let validStart = true;\r\n let validEnd = true;\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n ({ validStart, validEnd } = timesWithinWorkHoursCheck(startTimeVal, endTimeVal));\r\n\r\n if (!validStart) {\r\n cnForm.inputs['startTime'].showWarning(`Time is outside normal working hours.`);\r\n }\r\n\r\n if (!validEnd) {\r\n cnForm.inputs['endTime'].showWarning(`Time is outside normal working hours.`);\r\n }\r\n }\r\n\r\n if (validStart) {\r\n cnForm.inputs['startTime'].clearErrorOrWarning();\r\n }\r\n if (validEnd) {\r\n cnForm.inputs['endTime'].clearErrorOrWarning();\r\n }\r\n }\r\n function onServiceCodeChange(documentationTime = 0) {\r\n if (caseNoteId) {\r\n checkGroupNotesPermission();\r\n }\r\n\r\n if ($.session.applicationName === 'Gatekeeper' && selectedServiceCode !== '') {\r\n const mileageRequired = cnData.isMileageRequired(selectedServiceCode);\r\n const isTravelTimeRequired = cnData.isTravelTimeRequired(selectedServiceCode);\r\n const isDocTimeRequired = cnData.isDocTimeRequired(selectedServiceCode);\r\n\r\n if (isDocTimeRequired) {\r\n cnDocTimer.showAutoStartPopup(parseInt(documentationTime));\r\n }\r\n\r\n cnForm.inputs['mileage'].toggleDisabled(!mileageRequired);\r\n cnForm.inputs['travelTime'].toggleDisabled(!isTravelTimeRequired);\r\n } else {\r\n const isServiceFunding = cnData.isServiceFunding(selectedServiceCode);\r\n cnForm.inputs['serviceLocation'].toggleDisabled(!isServiceFunding);\r\n if (!isServiceFunding) {\r\n cnForm.inputs['serviceLocation'].setValue('');\r\n }\r\n }\r\n\r\n if (selectedServiceCode !== '') {\r\n // get required fields\r\n const locationRequired = cnData.isLocationRequired(selectedServiceCode);\r\n const needRequired = cnData.isNeedRequired(selectedServiceCode);\r\n const contactRequired = cnData.isContactRequired(selectedServiceCode);\r\n const serviceRequired = cnData.isServiceRequired(selectedServiceCode);\r\n // enable dropdowns\r\n cnForm.inputs['location'].toggleDisabled(!locationRequired);\r\n cnForm.inputs['service'].toggleDisabled(!serviceRequired);\r\n cnForm.inputs['need'].toggleDisabled(!needRequired);\r\n cnForm.inputs['contact'].toggleDisabled(!contactRequired);\r\n // set required fields\r\n cnForm.inputs['location'].toggleRequired(locationRequired);\r\n cnForm.inputs['service'].toggleRequired(serviceRequired);\r\n cnForm.inputs['need'].toggleRequired(needRequired);\r\n cnForm.inputs['contact'].toggleRequired(contactRequired);\r\n //populate dropdowns tied to this one\r\n cnForm.inputs['location'].populate(cnData.getLocationDropdownData(selectedServiceCode));\r\n cnForm.inputs['service'].populate(cnData.getServicesDropdownData(selectedServiceCode));\r\n cnForm.inputs['need'].populate(cnData.getNeedsDropdownData(selectedServiceCode));\r\n cnForm.inputs['contact'].populate(cnData.getContactsDropdownData(selectedServiceCode));\r\n } else {\r\n // set required to false\r\n cnForm.inputs['location'].toggleRequired(false);\r\n cnForm.inputs['service'].toggleRequired(false);\r\n cnForm.inputs['need'].toggleRequired(false);\r\n cnForm.inputs['contact'].toggleRequired(false);\r\n // disable dropdowns\r\n cnForm.inputs['location'].toggleDisabled(true);\r\n cnForm.inputs['service'].toggleDisabled(true);\r\n cnForm.inputs['need'].toggleDisabled(true);\r\n cnForm.inputs['contact'].toggleDisabled(true);\r\n //clear dropdown values\r\n cnForm.inputs['location'].populate([]);\r\n cnForm.inputs['service'].populate([]);\r\n cnForm.inputs['need'].populate([]);\r\n cnForm.inputs['contact'].populate([]);\r\n }\r\n }\r\n const onChangeCallbacks = {\r\n serviceCode: ({ event, value, name, input }) => {\r\n selectedServiceCode = value;\r\n onServiceCodeChange();\r\n },\r\n serviceLocation: ({ event, value, name, input }) => {\r\n // adv only\r\n },\r\n startTime: () => {\r\n onTimeChange('start');\r\n },\r\n endTime: () => {\r\n onTimeChange('end');\r\n },\r\n mileage: ({ event, value, name, input }) => {\r\n return;\r\n\r\n const hasDecimal = event.key === '.' && value.indexOf('.') === 1 ? true : false;\r\n },\r\n };\r\n function onFormChange(event) {\r\n const value = event.target.value;\r\n let name = event.target.name;\r\n const input = cnForm.inputs[name];\r\n\r\n if (onChangeCallbacks[name]) {\r\n onChangeCallbacks[name]({\r\n event,\r\n value,\r\n name,\r\n input,\r\n });\r\n }\r\n\r\n checkRequiredFields();\r\n\r\n // if (caseNoteId) {\r\n // checkFormForUnsavedChanges(name, value);\r\n // }\r\n }\r\n const onKeyupCallbacks = {\r\n travelTime: ({ event, value, name, input }) => {\r\n if (value.length > 4) {\r\n event.target.value = value.substr(0, 4);\r\n }\r\n },\r\n /**\r\n * @param {Object} data\r\n * @param {Event} data.event - event obj\r\n * @param {string} data.value - value of input\r\n * @param {Event} data.name - name of input\r\n * @param {Instance} data.input - noteText input instance\r\n */\r\n noteText: ({ event, value, name, input }) => {\r\n const words = value.split(/\\s+/);\r\n\r\n if (event.detail) {\r\n // check for the #ph\r\n if (words.includes('#ph')) {\r\n // if (cnPhrases.InsertPhrases.dialog.dialog.parentNode !== input.fullscreen.fullScreenDialog.dialog) {\r\n // cnPhrases.InsertPhrases.renderTo(input.fullscreen.fullScreenDialog.dialog);\r\n // }\r\n\r\n // get textarea clone in fullscreen popup\r\n const textareaInput = input.fullscreen.textareaClone.querySelector('textarea');\r\n\r\n // disable textarea and close buton\r\n textareaInput.disabled = true;\r\n input.fullscreen.disableCloseButon(true);\r\n\r\n // show phrases dialog\r\n cnPhrases.InsertPhrases.show();\r\n\r\n cnPhrases.InsertPhrases.onPhraseSelect(phraseText => {\r\n // Replace #ph with user-generated text\r\n const textValue = value.replace('#ph', phraseText);\r\n // Update the textarea's value\r\n input.setValue(textValue);\r\n textareaInput.value = textValue;\r\n // re enable input\r\n textareaInput.disabled = false;\r\n // close dialog\r\n cnPhrases.InsertPhrases.close();\r\n // disable textarea and close buton\r\n textareaInput.disabled = false;\r\n input.fullscreen.disableCloseButon(false);\r\n // focus on textarea\r\n textareaInput.focus();\r\n });\r\n }\r\n } else {\r\n // check for the #ph\r\n if (words.includes('#ph')) {\r\n // temp disable input\r\n input.toggleDisabled(true);\r\n\r\n // show phrases dialog\r\n cnPhrases.InsertPhrases.show();\r\n\r\n cnPhrases.InsertPhrases.onPhraseSelect(phraseText => {\r\n // Replace #ph with user-generated text\r\n const textValue = value.replace('#ph', phraseText);\r\n // Update the textarea's value\r\n input.setValue(textValue);\r\n input.fullscreen.updateCloneValue(textValue);\r\n // re enable input\r\n input.toggleDisabled(false);\r\n // close dialog\r\n cnPhrases.InsertPhrases.close();\r\n // focus on textarea\r\n input.setFocus();\r\n });\r\n }\r\n }\r\n },\r\n };\r\n function onFormKeyup(event) {\r\n const value = event.target.value;\r\n let name = event.target.name;\r\n const input = cnForm.inputs[name];\r\n\r\n if (onKeyupCallbacks[name]) {\r\n onKeyupCallbacks[name]({\r\n event,\r\n value,\r\n name,\r\n input,\r\n });\r\n }\r\n\r\n checkRequiredFields();\r\n }\r\n // SUBMIT\r\n async function processAttachmentsForSave(data) {\r\n const attachmentsForSave = {};\r\n\r\n for (const key in data) {\r\n if (key.includes('attachment')) {\r\n if (data[key].name) {\r\n const attachmentDetails = await _DOM.getAttachmentDetails(data[key]);\r\n attachmentsForSave[attachmentDetails.description] = attachmentDetails;\r\n }\r\n }\r\n }\r\n\r\n return attachmentsForSave;\r\n }\r\n function onFormReset() {\r\n resetNoteData();\r\n cnFormToast.close();\r\n rosterPicker.setSelectedConsumers([]);\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n cnDocTimer.clear();\r\n }\r\n }\r\n async function onFormDelete() {\r\n const continueSave = await deleteConfirmationPopup.show(\r\n 'Are you sure you would like to delete this case note?',\r\n );\r\n \r\n if (continueSave !== 'confirm') {\r\n return;\r\n } \r\n\r\n resetNoteData();\r\n cnForm.clear();\r\n cnFormToast.close();\r\n rosterPicker.setSelectedConsumers([]);\r\n\r\n await deleteNote(caseNoteId);\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n cnDocTimer.clear();\r\n }\r\n }\r\n async function onFormSubmit(data, submitter) {\r\n toggleFormButtonsDisabled(true);\r\n const buttonName = submitter.name.toLowerCase();\r\n\r\n const overlaps = await timeOverlapCheck(data.startTime, data.endTime);\r\n if (overlaps.length) {\r\n const continueSave = await overlapPopup.show(\r\n `The times you have entered for this note overlap with the following consumer(s), ${overlaps.join(\r\n ',',\r\n )}. Click OK to continue with save or CANCEL to go back to note.`,\r\n );\r\n\r\n if (continueSave === 'cancel') {\r\n return;\r\n }\r\n }\r\n\r\n // Fetch reviewRequired data\r\n const reviewRequiredData = await cnData.fetchCaseManagerReviewData(caseManagerId);\r\n\r\n const saveData = {\r\n caseManagerId,\r\n caseNote: data.noteText ? _UTIL.removeUnsavableNoteText(data.noteText) : '',\r\n casenotemileage: data.mileage ?? '0',\r\n casenotetraveltime: data.travelTime ?? '',\r\n consumerId: selectedConsumers[0],\r\n confidential: data.confidential === 'on' ? 'Y' : 'N',\r\n contactCode: data.contact ?? '',\r\n corrected: 'N',\r\n documentationTime: $.session.applicationName === 'Gatekeeper' ? cnDocTimer.stop().getTime() : '',\r\n endTime: data.endTime.substring(0, 5),\r\n locationCode: data.location ?? '',\r\n noteId: caseNoteId ?? 0,\r\n needCode: data.need ?? '',\r\n reviewRequired: reviewRequiredData.reviewRequired,\r\n serviceDate: dates.formatISO(selectedDate, { representation: 'date' }),\r\n serviceCode: data.service ?? '',\r\n serviceLocationCode: data.serviceLocation ?? '',\r\n serviceOrBillingCodeId: data.serviceCode ?? '',\r\n startTime: data.startTime.substring(0, 5),\r\n vendorId: data.vendor ?? '',\r\n outcomeServiceMonitoring: data.outcomeServiceMonitoring === 'on' ? 'Y' : 'N',\r\n };\r\n const attachmentsForSave = await processAttachmentsForSave(data);\r\n\r\n const { isNewGroup } = await saveNote(saveData, attachmentsForSave);\r\n\r\n // OVERVIEW // await cnOverview.fetchData(selectedDate);\r\n // OVERVIEW // cnOverview.populate();\r\n\r\n cnFormToast.close();\r\n\r\n if (buttonName === 'saveandnew' || isNewGroup) {\r\n resetNoteData();\r\n cnForm.clear();\r\n rosterPicker.setSelectedConsumers([]);\r\n cnForm.inputs['serviceCode'].setValue(selectedServiceCode);\r\n onServiceCodeChange();\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n cnDocTimer.clear();\r\n }\r\n }\r\n\r\n toggleFormButtonsDisabled(false);\r\n }\r\n\r\n // ROSTER\r\n //--------------------------------------------------\r\n async function onConsumerSelect(data) {\r\n selectedConsumers = data;\r\n\r\n await updateVendorDropdownByConsumer();\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n if (cnData.canConsumerHaveMileage(selectedConsumers[0])) {\r\n cnForm.inputs['mileage'].toggleDisabled(false);\r\n }\r\n\r\n await updateServiceLocationDropdownByConsumer();\r\n }\r\n\r\n checkRequiredFields();\r\n }\r\n\r\n // DATE NAV\r\n //--------------------------------------------------\r\n async function onDateChange(newDate) {\r\n selectedDate = newDate;\r\n\r\n onTimeChange();\r\n\r\n rosterPicker = new RosterPicker({\r\n allowMultiSelect: false,\r\n consumerRequired: true,\r\n selectionDate: selectedDate,\r\n });\r\n\r\n //await populatePage(); \r\n await rosterPicker.fetchConsumers();\r\n rosterPicker.populate(); \r\n //re populate overview section when date change\r\n // OVERVIEW // await cnOverview.fetchData(selectedDate);\r\n // OVERVIEW // cnOverview.populate();\r\n }\r\n\r\n // OVERVIEW CARDS\r\n //--------------------------------------------------\r\n async function onOverviewCardDelete(caseNoteId) {\r\n deleteNote(caseNoteId);\r\n }\r\n async function onOverviewCardEdit(noteId) {\r\n _DOM.scrollToTop();\r\n\r\n let data = await _UTIL.fetchData('getCaseNoteEditJSON', {\r\n noteId: noteId,\r\n });\r\n caseNoteEditData = data.getCaseNoteEditJSONResult[0];\r\n\r\n caseNoteId = noteId;\r\n caseNoteGroupId = caseNoteEditData.groupid;\r\n caseManagerId = caseNoteEditData.casemanagerid;\r\n selectedConsumers = [caseNoteEditData.consumerid];\r\n selectedServiceCode = caseNoteEditData.mainbillingorservicecodeid;\r\n attachmentsForDelete = [];\r\n\r\n rosterPicker.setSelectedConsumers(selectedConsumers, true);\r\n setConsumerRelatedDropdowns();\r\n onServiceCodeChange(caseNoteEditData.totaldoctime);\r\n\r\n if (!allowGroupNotes) {\r\n rosterPicker.toggleRosterDisabled(true, isReadOnly);\r\n }\r\n\r\n cnForm.populate({\r\n serviceCode: caseNoteEditData.mainbillingorservicecodeid,\r\n location: caseNoteEditData.locationcode,\r\n serviceLocation: caseNoteEditData.servicelocationid,\r\n service: caseNoteEditData.servicecode,\r\n need: caseNoteEditData.serviceneedcode,\r\n vendor: caseNoteEditData.vendorid,\r\n contact: caseNoteEditData.contactcode,\r\n startTime: caseNoteEditData.starttime,\r\n endTime: caseNoteEditData.endtime,\r\n mileage: caseNoteEditData.totalmiles,\r\n travelTime: caseNoteEditData.traveltime,\r\n noteText: caseNoteEditData.casenote,\r\n confidential: caseNoteEditData.confidential === 'Y' ? true : false,\r\n outcomeServiceMonitoring: caseNoteEditData.outcomeServiceMonitoring === 'Y' ? true : false,\r\n });\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n await cnData.fetchAttachmentsGK(caseNoteId);\r\n caseNoteAttachmentsEditData = cnData.getAttachmentsList();\r\n cnForm.inputs['attachment'].addAttachments(caseNoteAttachmentsEditData);\r\n }\r\n\r\n if (caseNoteEditData.credit === 'Y' || caseNoteEditData.credit === '-1') {\r\n cnForm.disableFormInputs();\r\n toggleFormButtonsDisabled();\r\n rosterPicker.toggleRosterDisabled(true, true);\r\n }\r\n\r\n //TODO-ASH: Add entered by (caseNoteEditData.originaluserfullname, caseNoteEditData.originaluserid)\r\n //TODO-ASH: Add last edit on (caseNoteEditData.lastupdate)\r\n //cnFormWrap\r\n\r\n toggleFormButtonShowHide();\r\n checkRequiredFields();\r\n }\r\n\r\n // MAIN\r\n //--------------------------------------------------\r\n function attachEvents() {\r\n dateNavigation.onDateChange(onDateChange);\r\n rosterPicker.onConsumerSelect(onConsumerSelect);\r\n cnForm.onChange(onFormChange);\r\n cnForm.onKeyup(onFormKeyup);\r\n cnForm.onDelete(onFormDelete);\r\n cnForm.onSubmit(onFormSubmit);\r\n cnForm.onReset(onFormReset);\r\n cnForm.onFileDelete(onFileDelete);\r\n\r\n // OVERVIEW // cnOverview.onCardEdit(onOverviewCardEdit);\r\n // OVERVIEW // cnOverview.onCardDelete(onOverviewCardDelete);\r\n }\r\n async function populatePage() {\r\n await cnPhrases.InsertPhrases.fetchData();\r\n cnPhrases.InsertPhrases.populate();\r\n await rosterPicker.fetchConsumers();\r\n rosterPicker.populate();\r\n // OVERVIEW // await cnOverview.fetchData(selectedDate);\r\n // OVERVIEW // cnOverview.populate();\r\n if (selectedConsumers) {\r\n rosterPicker.setSelectedConsumers(selectedConsumers);\r\n }\r\n }\r\n async function loadPage() {\r\n dateNavigation.renderTo(cnDateNavWrap);\r\n rosterPicker.renderTo(cnRosterWrap);\r\n cnFormToast.renderTo(cnFormWrap);\r\n cnForm.renderTo(cnFormWrap);\r\n\r\n // OVERVIEW // cnOverview.renderTo(moduleWrap);\r\n cnPhrases.renderTo(_DOM.ACTIONCENTER);\r\n\r\n attachEvents();\r\n }\r\n function loadPageSkeleton() {\r\n // prep actioncenter\r\n _DOM.ACTIONCENTER.innerHTML = '';\r\n _DOM.ACTIONCENTER.setAttribute('data-UI', true);\r\n _DOM.setActiveModuleAttribute('casenotes2.0');\r\n\r\n // build DOM skeleton\r\n moduleWrap = _DOM.createElement('div', { class: 'caseNotesModule' });\r\n cnHeader = _DOM.createElement('div', { class: 'caseNotesHeader', html: `

Case Notes

` });\r\n cnDateNavWrap = _DOM.createElement('div', { class: 'caseNotesDateNav' });\r\n cnFormWrap = _DOM.createElement('div', { class: 'caseNotesForm' });\r\n cnRosterWrap = _DOM.createElement('div', { class: 'caseNotesRosterPicker' });\r\n\r\n moduleWrap.appendChild(cnHeader);\r\n moduleWrap.appendChild(cnDateNavWrap);\r\n moduleWrap.appendChild(cnRosterWrap);\r\n moduleWrap.appendChild(cnFormWrap);\r\n _DOM.ACTIONCENTER.appendChild(moduleWrap);\r\n }\r\n\r\n // INIT (data & defaults)\r\n //--------------------------------------------------\r\n function initComponents() {\r\n // Date Navigation\r\n dateNavigation = new DateNavigation({\r\n selectedDate: selectedDate,\r\n allowFutureDate: false,\r\n });\r\n\r\n // Roster Picker\r\n rosterPicker = new RosterPicker({\r\n allowMultiSelect: false,\r\n consumerRequired: true,\r\n selectionDate: undefined, \r\n });\r\n\r\n // Form\r\n cnForm = new Form({\r\n fields: [\r\n //confidential\r\n {\r\n type: 'checkbox',\r\n label: 'Confidential',\r\n id: 'confidential',\r\n },\r\n //outcomeServiceMonitoring\r\n {\r\n type: 'checkbox',\r\n label: 'Outcome/Service Monitoring',\r\n id: 'outcomeServiceMonitoring',\r\n hidden: $.session.applicationName === 'Advisor',\r\n //disabled: true,\r\n },\r\n //startTime\r\n {\r\n type: 'time',\r\n label: 'Start Time',\r\n id: 'startTime',\r\n required: true,\r\n },\r\n //endTime\r\n {\r\n type: 'time',\r\n label: 'End Time',\r\n id: 'endTime',\r\n required: true,\r\n },\r\n //serviceCode\r\n {\r\n type: 'select',\r\n label: $.session.applicationName === 'Gatekeeper' ? 'Bill Code:' : 'Serv. Code:',\r\n id: 'serviceCode',\r\n required: true,\r\n data: cnData.getServiceBillCodeDropdownData(),\r\n defaultValue: selectedServiceCode,\r\n includeBlankOption: true,\r\n },\r\n //location\r\n {\r\n type: 'select',\r\n label: 'Location',\r\n id: 'location',\r\n disabled: true,\r\n includeBlankOption: true,\r\n },\r\n //service\r\n {\r\n type: 'select',\r\n label: 'Service',\r\n id: 'service',\r\n disabled: true,\r\n includeBlankOption: true,\r\n },\r\n //need\r\n {\r\n type: 'select',\r\n label: 'Need',\r\n id: 'need',\r\n disabled: true,\r\n includeBlankOption: true,\r\n },\r\n //contact\r\n {\r\n type: 'select',\r\n label: 'Contact',\r\n id: 'contact',\r\n disabled: true,\r\n includeBlankOption: true,\r\n },\r\n //vendor\r\n {\r\n type: 'select',\r\n label: 'Vendor',\r\n id: 'vendor',\r\n note: 'Requires a consumer(s) to be selected',\r\n },\r\n //serviceLocation\r\n {\r\n type: 'select',\r\n label: 'Service Location',\r\n id: 'serviceLocation',\r\n hidden: $.session.applicationName === 'Gatekeeper',\r\n disabled: true,\r\n },\r\n //noteText\r\n {\r\n type: 'textarea',\r\n label: 'Note',\r\n id: 'noteText',\r\n required: true,\r\n fullscreen: true,\r\n speechToText: true,\r\n note: `Use the new quick insert key for phrases, type #ph. (#ph must not be apart of another word)`,\r\n },\r\n //mileage\r\n {\r\n type: 'number',\r\n label: 'Mileage',\r\n id: 'mileage',\r\n disabled: $.session.applicationName === 'Gatekeeper' ? true : false,\r\n },\r\n //travelTime\r\n {\r\n type: 'number',\r\n label: 'Travel Time',\r\n id: 'travelTime',\r\n hidden: $.session.applicationName === 'Advisor',\r\n disabled: true,\r\n },\r\n //attachment\r\n {\r\n type: 'attachment',\r\n label: 'Add Attachment',\r\n id: 'attachment',\r\n hidden: $.session.applicationName === 'Advisor',\r\n },\r\n ],\r\n buttons: [\r\n {\r\n type: 'submit',\r\n text: 'Save & New',\r\n icon: 'add',\r\n name: 'saveAndNew',\r\n style: 'primary',\r\n styleType: 'outlined',\r\n },\r\n {\r\n type: 'submit',\r\n text: 'Update',\r\n icon: 'save',\r\n name: 'update',\r\n hidden: true,\r\n },\r\n ],\r\n });\r\n cnFormToast = new Toast();\r\n\r\n // Overview Cards\r\n // OVERVIEW // cnOverview = new CaseNotesOverview(cnData);\r\n\r\n // Phrases\r\n cnPhrases = new CaseNotesPhrases();\r\n\r\n // Documentation Timer\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n cnDocTimer = new CaseNotesTimer();\r\n cnDocTimer.renderTo(cnFormWrap);\r\n }\r\n\r\n // Req Visualizer\r\n reqVisualizer = new AsyncRequestVisualizer();\r\n reqVisualizer.renderTo(_DOM.ACTIONCENTER);\r\n\r\n // Overlap Popup\r\n overlapPopup = new ConfirmationPopup({ className: 'overlapWarning' });\r\n overlapPopup.renderTo(_DOM.ACTIONCENTER);\r\n\r\n // DeleteConfirmation Popup\r\n deleteConfirmationPopup = new WarningPopup({ className: 'deleteCaseWarning' });\r\n deleteConfirmationPopup.renderTo(_DOM.ACTIONCENTER);\r\n }\r\n async function init(fromDashboard) {\r\n setPermissions();\r\n\r\n selectedDate = dates.getTodaysDateObj();\r\n caseManagerId = $.session.PeopleId;\r\n if (fromDashboard === true) {\r\n selectedConsumers = [CN_CaseLoadWidget.getCurrentlyselectedConsumerId()];\r\n }\r\n\r\n loadPageSkeleton();\r\n\r\n // init case notes data\r\n cnData = new CaseNotesData(); \r\n await cnData.fetchDropdownData();\r\n await cnData.fetchCaseManagerReviewData(caseManagerId);\r\n defaultServiceCode = cnData.getDefaultServiceCode();\r\n selectedServiceCode = defaultServiceCode;\r\n if ($.session.applicationName === 'Advisor') {\r\n await cnData.fetchConsumersThatCanHaveMileage();\r\n }\r\n\r\n initComponents();\r\n await loadPage();\r\n await populatePage();\r\n\r\n onServiceCodeChange();\r\n\r\n // if (isReadOnly) {\r\n // cnForm.disableFormInputs();\r\n // toggleFormButtonsDisabled();\r\n // rosterPicker.toggleRosterDisabled(true, true);\r\n // return;\r\n // }\r\n\r\n checkRequiredFields();\r\n }\r\n\r\n return {\r\n init,\r\n resetModule,\r\n };\r\n})();\r\n","(function (global, factory) {\r\n global.CaseNotesData = factory();\r\n})(this, function () {\r\n function dealWithDropdownDataHugeString(res) {\r\n function decipherXML(res) {\r\n const xmlDoc = UTIL.parseXml('' + res);\r\n const data = [];\r\n\r\n const billingCodes = [].slice.call(xmlDoc.getElementsByTagName('billingcode'));\r\n billingCodes.forEach(bc => {\r\n const tmpServiceCode = [].slice.call(bc.getElementsByTagName('codename'))[0];\r\n const tmpServiceId = [].slice.call(bc.getElementsByTagName('serviceid'))[0];\r\n const tmpServiceFunding = [].slice.call(bc.getElementsByTagName('includeinfunding'))[0];\r\n const tmpServiceRequired = [].slice.call(bc.getElementsByTagName('servicerequired'))[0];\r\n const tmpLocationRequired = [].slice.call(bc.getElementsByTagName('locationrequired'))[0];\r\n const tmpNeedRequired = [].slice.call(bc.getElementsByTagName('needrequired'))[0];\r\n const tmpContactRequired = [].slice.call(bc.getElementsByTagName('contactrequired'))[0];\r\n const tmpAllowGroupNotes = [].slice.call(bc.getElementsByTagName('allowgroupnotes'))[0];\r\n const tmpMileageRequired = [].slice.call(bc.getElementsByTagName('mileagerequired'))[0];\r\n const tmpDocTimeRequired = [].slice.call(bc.getElementsByTagName('doctimerequired'))[0];\r\n const tmpTravelTimeRequired = [].slice.call(bc.getElementsByTagName('traveltimerequired'))[0];\r\n const locations = [].slice.call(bc.getElementsByTagName('location'));\r\n const contacts = [].slice.call(bc.getElementsByTagName('contact'));\r\n const services = [].slice.call(bc.getElementsByTagName('service'));\r\n const needs = [].slice.call(bc.getElementsByTagName('need'));\r\n\r\n const tmpObject = {};\r\n tmpObject.serviceCode = tmpServiceCode ? tmpServiceCode.textContent : '';\r\n tmpObject.serviceId = tmpServiceId ? tmpServiceId.textContent : '';\r\n tmpObject.serviceFunding = tmpServiceFunding ? tmpServiceFunding.textContent : '';\r\n tmpObject.serviceRequired = tmpServiceRequired ? tmpServiceRequired.textContent : '';\r\n tmpObject.locationRequired = tmpLocationRequired ? tmpLocationRequired.textContent : '';\r\n tmpObject.needRequired = tmpNeedRequired ? tmpNeedRequired.textContent : '';\r\n tmpObject.contactRequired = tmpContactRequired ? tmpContactRequired.textContent : '';\r\n tmpObject.allowGroupNotes = tmpAllowGroupNotes ? tmpAllowGroupNotes.textContent : '';\r\n tmpObject.mileageRequired = tmpMileageRequired ? tmpMileageRequired.textContent : '';\r\n tmpObject.docTimeRequired = tmpDocTimeRequired ? tmpDocTimeRequired.textContent : '';\r\n tmpObject.travelTimeRequired = tmpTravelTimeRequired ? tmpTravelTimeRequired.textContent : '';\r\n tmpObject.locations = [];\r\n tmpObject.contacts = [];\r\n tmpObject.services = [];\r\n tmpObject.needs = [];\r\n\r\n locations.forEach(loc => {\r\n const tmpLocName = [].slice.call(loc.getElementsByTagName('locname'))[0].textContent;\r\n const tmpLocCode = [].slice.call(loc.getElementsByTagName('loccode'))[0].textContent;\r\n tmpObject.locations.push({\r\n locName: tmpLocName,\r\n locCode: tmpLocCode,\r\n });\r\n });\r\n contacts.forEach(loc => {\r\n const tmpContactName = [].slice.call(loc.getElementsByTagName('contactname'))[0].textContent;\r\n const tmpContactCode = [].slice.call(loc.getElementsByTagName('contactcode'))[0].textContent;\r\n tmpObject.contacts.push({\r\n contactName: tmpContactName,\r\n contactCode: tmpContactCode,\r\n });\r\n });\r\n services.forEach(loc => {\r\n const tmpServiceName = [].slice.call(loc.getElementsByTagName('servicename'))[0].textContent;\r\n const tmpServiceCode = [].slice.call(loc.getElementsByTagName('servicecode'))[0].textContent;\r\n tmpObject.services.push({\r\n serviceName: tmpServiceName,\r\n serviceCode: tmpServiceCode,\r\n });\r\n });\r\n needs.forEach(loc => {\r\n const tmpNeedName = [].slice.call(loc.getElementsByTagName('needname'))[0].textContent;\r\n const tmpNeedCode = [].slice.call(loc.getElementsByTagName('needcode'))[0].textContent;\r\n tmpObject.needs.push({\r\n needName: tmpNeedName,\r\n needCode: tmpNeedCode,\r\n });\r\n });\r\n\r\n data.push(tmpObject);\r\n });\r\n\r\n return data;\r\n }\r\n\r\n const beautifulObject = decipherXML(res);\r\n let dropdownDataObj = {};\r\n\r\n // create object for quick access\r\n beautifulObject.forEach(dd => {\r\n // create object for each billercode\r\n if (!dropdownDataObj[dd.serviceId]) {\r\n dropdownDataObj[dd.serviceId] = {\r\n serviceId: dd.serviceId,\r\n serviceCode: dd.serviceCode,\r\n serviceFunding: dd.serviceFunding,\r\n locations: [...dd.locations],\r\n contacts: [...dd.contacts],\r\n services: [...dd.services],\r\n needs: [...dd.needs],\r\n docTimeRequired: dd.docTimeRequired,\r\n travelTimeRequired: dd.travelTimeRequired,\r\n mileageRequired: dd.mileageRequired,\r\n locationRequired: dd.locationRequired,\r\n needRequired: dd.needRequired,\r\n serviceRequired: dd.serviceRequired,\r\n contactRequired: dd.contactRequired,\r\n allowGroupNotes: dd.allowGroupNotes,\r\n };\r\n }\r\n });\r\n\r\n //dropdownDataKeys = Object.keys(dropdownDataObj);\r\n return dropdownDataObj;\r\n }\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating a Case Notes Data set.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesData}\r\n */\r\n function CaseNotesData() {\r\n // Review Data\r\n this.caseLoadOnly = $.session.CaseNotesCaseloadRestrictions;\r\n this.viewEntered = $.session.CaseNotesViewEntered;\r\n this.caseLoadRestrictions = null;\r\n this.reviewGroups = {};\r\n this.reviewConsumers = [];\r\n\r\n // Dropdown Data\r\n this.dropdownData = {};\r\n this.vendorDropdownData = [];\r\n this.serviceLocationDropdownData = [];\r\n\r\n // case manager related\r\n this.caseManagerReview = {};\r\n this.reviewRequired = null;\r\n this.defaultServiceCode = null;\r\n\r\n // Other Data\r\n this.consumersThatCanHaveMileage = [];\r\n this.attachmentList = null;\r\n this.overlapData = null;\r\n }\r\n\r\n // FETCH DATA\r\n //---------------------------------------\r\n /**\r\n * @function\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchDropdownData = async function () {\r\n const data = await _UTIL.fetchData('populateDropdownData');\r\n this.dropdownData = dealWithDropdownDataHugeString(data.populateDropdownDataResult);\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedConsumerId\r\n * @param {Date} selectedDate\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchVendorDropdownData = async function ({ consumerId, serviceDate }) {\r\n const data = await _UTIL.fetchData('getConsumerSpecificVendorsJSON', {\r\n consumerId,\r\n serviceDate,\r\n });\r\n this.vendorDropdownData = data.getConsumerSpecificVendorsJSONResult;\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedConsumerId\r\n * @param {Date} selectedDate\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchServiceLocationDropdownData = async function ({ consumerId, serviceDate }) {\r\n const data = await _UTIL.fetchData('getServiceLocationsForCaseNoteDropdown', {\r\n consumerId,\r\n serviceDate,\r\n });\r\n this.serviceLocationDropdownData = data.getServiceLocationsForCaseNoteDropDownResult;\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @param {String} caseManagerId\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchCaseManagerReviewData = async function (caseManagerId) {\r\n const data = await _UTIL.fetchData('getReviewRequiredForCaseManager', {\r\n caseManagerId,\r\n });\r\n this.caseManagerReview = data.getReviewRequiredForCaseManagerResult[0];\r\n this.reviewRequired = this.caseManagerReview.reviewrequired === '' || this.caseManagerReview.reviewrequired === 'N' ? 'N' : 'Y';\r\n this.defaultServiceCode = this.caseManagerReview.serviceid;\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchConsumersThatCanHaveMileage = async function () {\r\n //* GATEKEEPER ALL CONSUMERS CAN HAVE MILEAGE\r\n //if ($.session.applicationName === 'Gatekeeper') return this;\r\n\r\n let data = await _UTIL.fetchData('getConsumersThatCanHaveMileageJSON');\r\n data = data.getConsumersThatCanHaveMileageJSONResult;\r\n this.consumersThatCanHaveMileage = data.map(({ consumerid }) => consumerid);\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @param {String} caseNoteId\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchAttachmentsGK = async function (caseNoteId) {\r\n // const data = await _UTIL.fetchData('getCaseNoteAttachmentsList', { caseNoteId });\r\n // this.attachmentList = data.getCaseNoteAttachmentsListResult;\r\n\r\n const data2 = await _UTIL.fetchData('getCaseNoteAttachmentsListForGroupNote', { caseNoteId });\r\n this.attachmentList = data2.getCaseNoteAttachmentsListForGroupNoteResult;\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @param {Object} retrieveData\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchTimeOverlapData = async function (retrieveData) {\r\n const data = await _UTIL.fetchData('caseNoteOverlapCheck', { ...retrieveData });\r\n this.overlapData = JSON.parse(data.caseNoteOverlapCheckResult);\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @param {Object} retrieveData\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchReviewData = async function (retrieveData) {\r\n if (this.caseLoadOnly) {\r\n const restrictionsResponse = await _UTIL.fetchData('getCaseLoadRestriction');\r\n this.caseLoadRestrictions = restrictionsResponse.getCaseLoadRestrictionResult;\r\n }\r\n\r\n const data = await _UTIL.fetchData('caseNotesFilteredSearchJSON', {\r\n ...retrieveData,\r\n });\r\n this.caseNoteReviewData = data.caseNotesFilteredSearchJSONResult;\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @param {Object} retrieveData\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchNoteData = async function (retrieveData) {\r\n return this;\r\n };\r\n\r\n // DROPDOWN DATA MAPPING\r\n //---------------------------------------\r\n CaseNotesData.prototype.getServiceBillCodeDropdownData = function () {\r\n let data = [];\r\n\r\n for (serviceId in this.dropdownData) {\r\n data.push({\r\n value: serviceId,\r\n text: UTIL.removeQuotes(this.dropdownData[serviceId].serviceCode),\r\n });\r\n }\r\n\r\n return data;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getLocationDropdownData = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].locations.map(location => {\r\n return {\r\n value: location.locCode,\r\n text: location.locName,\r\n };\r\n });\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getServicesDropdownData = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].services.map(service => {\r\n return {\r\n value: service.serviceCode,\r\n text: service.serviceName,\r\n };\r\n });\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getContactsDropdownData = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].contacts.map(contact => {\r\n return {\r\n value: contact.contactCode,\r\n text: contact.contactName,\r\n };\r\n });\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getNeedsDropdownData = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].needs.map(need => {\r\n return {\r\n value: need.needCode,\r\n text: need.needName,\r\n };\r\n });\r\n };\r\n /**\r\n * @function\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getVendorDropdownData = function () {\r\n return this.vendorDropdownData.map(vendor => {\r\n return {\r\n value: vendor.vendorId,\r\n text: vendor.vendorName,\r\n };\r\n });\r\n };\r\n /**\r\n * @function\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getServiceLocationDropdownData = function () {\r\n return this.serviceLocationDropdownData.map(location => {\r\n return {\r\n value: location.code,\r\n text: location.caption,\r\n };\r\n });\r\n };\r\n\r\n // DATA GETTERS\r\n //---------------------------------------\r\n /**\r\n * @function\r\n * @param {Object} retrieveData\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.getReviewData = async function (retrieveData) {\r\n return this.caseNoteReviewData.filter(data => {\r\n // GROUPING\r\n if (data.numberInGroup !== '1') {\r\n const groupNoteId = data.groupnoteid.split('.')[0];\r\n const consumerId = data.consumerid.split('.')[0];\r\n const name = `${data.lastname}, ${data.firstname}`;\r\n\r\n this.reviewGroups[groupNoteId] = this.reviewGroups[groupNoteId] ?? {};\r\n this.reviewGroups[groupNoteId][consumerId] = name;\r\n }\r\n\r\n // TABLE CONSUMERS\r\n this.reviewConsumers.push({\r\n id: data.casenoteid.split('.')[0],\r\n FirstName: data.firstname,\r\n LastName: data.lastname,\r\n });\r\n\r\n // FOR VIEW ENTERED & CASELOAD ONLY\r\n if (this.viewEntered && this.caseLoadOnly) {\r\n const enteredByUser = data.enteredby.toUpperCase() === $.session.UserId.toUpperCase();\r\n const onCaseload = this.caseLoadRestrictions.some(\r\n cl => cl.id.toUpperCase() === data.consumerid.split('.')[0].toUpperCase(),\r\n );\r\n return enteredByUser || onCaseload;\r\n }\r\n\r\n // FOR VIEW ENTERED ONLY\r\n if (this.viewEntered) {\r\n return data.enteredby.toUpperCase() === $.session.UserId.toUpperCase();\r\n }\r\n\r\n // FOR CASELOAD ONLY\r\n if (this.caseLoadOnly) {\r\n return this.caseLoadRestrictions.some(cl => cl.id === data.consumerid.split('.')[0]);\r\n }\r\n\r\n return true; // If no conditions met, return the data as is\r\n });\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isLocationRequired = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].locationRequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isNeedRequired = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].needRequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isContactRequired = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].contactRequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isServiceRequired = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].serviceRequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isMileageRequired = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].mileageRequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isTravelTimeRequired = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].travelTimeRequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isDocTimeRequired = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].docTimeRequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isServiceFunding = function (selectedServiceCode) {\r\n const serviceCode = selectedServiceCode ? selectedServiceCode : this.defaultServiceCode;\r\n return this.dropdownData[serviceCode].serviceFunding === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isReviewRequired = function () {\r\n return this.caseManagerReview.reviewrequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.allowGroupNotes = function (selectedServiceCode) {\r\n const serviceCode = selectedServiceCode ? selectedServiceCode : this.defaultServiceCode;\r\n return this.dropdownData[serviceCode].allowGroupNotes === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @returns {String}\r\n */\r\n CaseNotesData.prototype.getDefaultServiceCode = function () {\r\n return this.defaultServiceCode;\r\n };\r\n /**\r\n * @function\r\n * @param {String} serviceCode\r\n * @returns {String}\r\n */\r\n CaseNotesData.prototype.getMainServiceCodeNameById = function (serviceCode) {\r\n return this.dropdownData[serviceCode].serviceCode;\r\n };\r\n /**\r\n * @function\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getOverlapData = function () {\r\n if (this.overlapData && this.overlapData.length > 0) {\r\n return this.overlapData.map(d => d.consumername);\r\n }\r\n\r\n return '';\r\n };\r\n /**\r\n * @function\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getAttachmentsList = function () {\r\n return this.attachmentList.map(att => {\r\n return {\r\n description: att.description,\r\n type: att.attachmentType,\r\n attachment: att.attachment,\r\n attachmentId: att.attachmentId,\r\n };\r\n });\r\n };\r\n /**\r\n * @function\r\n * @param {String} consumerId\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.canConsumerHaveMileage = function (consumerId) {\r\n return this.consumersThatCanHaveMileage.includes(consumerId);\r\n };\r\n\r\n return CaseNotesData;\r\n});\r\n","(function (global, factory) {\r\n global.CaseNotesOverview = factory();\r\n})(this, function () {\r\n function buildMostRecentUpdateElement(dateObj) {\r\n let mostRecentUpdate = new Intl.DateTimeFormat('en-US', {\r\n day: 'numeric',\r\n month: 'numeric',\r\n year: '2-digit',\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n weekday: 'long',\r\n }).format(new Date(dateObj));\r\n mostRecentUpdate = mostRecentUpdate.split(', ');\r\n mostRecentUpdate = `${mostRecentUpdate[0].substring(0, 3)}, ${mostRecentUpdate[1]} at ${mostRecentUpdate[2]}`;\r\n return _DOM.createElement('p', { class: 'noteText', text: mostRecentUpdate });\r\n }\r\n function buildEnteredByElement(enteredBy, originalUserFullName) {\r\n return _DOM.createElement('div', {\r\n class: 'withLabelWrap',\r\n html: `

${enteredBy} (${originalUserFullName})

`,\r\n });\r\n }\r\n function buildStartTimeElement(dirtyStart) {\r\n const time = UTIL.convertFromMilitary(dirtyStart);\r\n return _DOM.createElement('div', {\r\n class: 'withLabelWrap',\r\n html: `\r\n

\r\n ${time.split(' ')[0]}\r\n ${time.split(' ')[1]}\r\n

\r\n `,\r\n });\r\n }\r\n function buildEndTimeElement(dirtyEnd) {\r\n const time = UTIL.convertFromMilitary(dirtyEnd);\r\n return _DOM.createElement('div', {\r\n class: 'withLabelWrap',\r\n html: `\r\n

\r\n ${time.split(' ')[0]}\r\n ${time.split(' ')[1]}\r\n

\r\n `,\r\n });\r\n }\r\n function buildTimeDiffElement(dirtyStart, dirtyEnd) {\r\n const timDiff = dates.getMilitaryTimeDifference(dirtyStart, dirtyEnd, true);\r\n return _DOM.createElement('div', {\r\n class: 'withLabelWrap',\r\n html: `

${timDiff}

`,\r\n });\r\n }\r\n function buildConsumerElement(id, firstname, lastname) {\r\n const consumerFullName = `${lastname}, ${firstname}`;\r\n\r\n const consumerNameEle = _DOM.createElement('div', {\r\n class: 'consumer',\r\n html: `

${consumerFullName}

`,\r\n });\r\n const portrait = new Portrait(id);\r\n portrait.renderTo(consumerNameEle);\r\n\r\n return consumerNameEle;\r\n }\r\n function buildServiceInfoElement(mainService, service) {\r\n return _DOM.createElement('p', {\r\n class: 'serviceInfo',\r\n text: `${mainService}${service ? ` - ${service}` : ''}`,\r\n });\r\n }\r\n function buildNoteElement(noteText) {\r\n const note = noteText.length > 100 ? `${noteText.replace(/(\\r\\n|\\n|\\r)/gm, '').slice(0, 100)}...` : noteText;\r\n return _DOM.createElement('p', { class: 'noteText', text: note });\r\n }\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating the Case Notes Overview component.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesOverview}\r\n */\r\n function CaseNotesOverview(cnData) {\r\n // Data Init\r\n this.cnData = cnData;\r\n this.caseLoadOnly = $.session.CaseNotesCaseloadRestrictions;\r\n this.viewEntered = $.session.CaseNotesViewEntered;\r\n this.reviewGroups = {};\r\n this.reviewConsumers = [];\r\n this.showAllNotes = false;\r\n this.selectedDate = null;\r\n\r\n this.caseLoadRestrictions = null;\r\n this.caseLoadReviewData = [];\r\n\r\n // DOM Ref\r\n this.overviewWrap = null;\r\n this.overviewSearch = null;\r\n this.showAllNotesToggle = null;\r\n this.overviewCardsWrap = null;\r\n this.overviewCards = {};\r\n\r\n this._init();\r\n this._build();\r\n this._setupEvents();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesOverview.prototype._init = function () {\r\n const showAllNotesLS = _UTIL.localStorageHandler.get('casenotes-showAllNotes');\r\n this.showAllNotes = showAllNotesLS === 'Y' ? true : false;\r\n };\r\n\r\n /**\r\n * Builds the CaseNotesOverview component HTML\r\n *\r\n * @function\r\n */\r\n CaseNotesOverview.prototype._build = function () {\r\n this.overviewWrap = _DOM.createElement('div', { class: 'caseNotesOverview' });\r\n\r\n // Header\r\n //---------------------------------\r\n const overviewHeader = _DOM.createElement('div', { class: 'caseNotesOverview__header' });\r\n this.overviewWrap.appendChild(overviewHeader);\r\n\r\n // search\r\n //---------------------------------\r\n this.overviewSearch = new Input({\r\n type: 'search',\r\n id: 'overviewSearch',\r\n placeholder: 'Search...',\r\n });\r\n this.overviewSearch.renderTo(overviewHeader);\r\n\r\n // all notes toggle\r\n //---------------------------------\r\n this.showAllNotesToggle = new Checkbox({\r\n id: 'notesView',\r\n label: 'My Notes',\r\n toggle: true,\r\n checked: !this.showAllNotes,\r\n });\r\n this.showAllNotesToggle.renderTo(overviewHeader);\r\n\r\n // Cards\r\n //---------------------------------\r\n this.overviewCardsWrap = _DOM.createElement('div', { class: 'caseNotesOverview__cardsWrap' });\r\n this.overviewWrap.appendChild(this.overviewCardsWrap);\r\n\r\n deleteConfirmationPopup = new WarningPopup({ className: 'deleteCaseWarning' });\r\n deleteConfirmationPopup.renderTo(_DOM.ACTIONCENTER);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesOverview.prototype._setupEvents = function () {\r\n this.showAllNotesToggle.onChange(async e => {\r\n this.showAllNotes = e.target.checked ? true : false;\r\n _UTIL.localStorageHandler.set('casenotes-showAllNotes', this.showAllNotes ? 'Y' : 'N');\r\n\r\n await this.fetchData();\r\n\r\n this.populate();\r\n });\r\n\r\n this.overviewSearch.onKeyup(\r\n _UTIL.debounce(e => {\r\n this._filterOverviewOnSearch(e);\r\n }, 500),\r\n );\r\n };\r\n\r\n /**\r\n * Filters overview on search\r\n *\r\n * @function\r\n * @param {Event} e\r\n */\r\n CaseNotesOverview.prototype._filterOverviewOnSearch = function (e) {\r\n this.caseLoadReviewData.forEach(rd => {\r\n const caseNoteId = rd.casenoteid.split('.')[0];\r\n\r\n const firstName = rd.firstname.toLowerCase().trim();\r\n const lastName = rd.lastname.toLowerCase().trim();\r\n const enteredBy = rd.enteredby.toLowerCase().trim();\r\n const serviceName = rd.serviceName?.toLowerCase().trim() || '';\r\n\r\n const searchFields = [\r\n `${firstName} ${lastName}`,\r\n `${lastName}, ${firstName}`,\r\n firstName,\r\n lastName,\r\n enteredBy,\r\n serviceName,\r\n ];\r\n\r\n const isMatch = searchFields.some(combo => combo.indexOf(e.target.value.toLowerCase()) !== -1);\r\n if (isMatch) {\r\n this.overviewCards[caseNoteId].classList.remove('closed');\r\n } else {\r\n this.overviewCards[caseNoteId].classList.add('closed');\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Populates the overview page\r\n *\r\n * @function\r\n */\r\n CaseNotesOverview.prototype.populate = function () {\r\n this.overviewCardsWrap.innerHTML = '';\r\n\r\n this.caseLoadReviewData\r\n .sort((a, b) => {\r\n if (a.starttime < b.starttime) return 1;\r\n if (a.starttime > b.starttime) return -1;\r\n if (a.endtime < b.endtime) return 1;\r\n if (a.endtime > b.endtime) return -1;\r\n return 0;\r\n })\r\n .forEach(rd => {\r\n console.table(rd);\r\n // Review Data\r\n //---------------------------------\r\n const caseNoteId = rd.casenoteid.split('.')[0];\r\n const consumerId = rd.consumerid.split('.')[0];\r\n const mainService = this.cnData.getMainServiceCodeNameById(rd.mainbillingorservicecodeid.split('.')[0]);\r\n const isConfidential = rd.confidential === 'Y' ? true : false;\r\n const attachmentCountGK = rd.attachcount;\r\n\r\n // Overview Card\r\n //---------------------------------\r\n const overviewCardWrap = _DOM.createElement('div', {\r\n class: 'caseNotesOverview__overviewCard',\r\n 'data-noteid': caseNoteId,\r\n });\r\n const overviewCard = _DOM.createElement('div', {\r\n class: 'overviewCardInner',\r\n });\r\n overviewCardWrap.appendChild(overviewCard);\r\n\r\n // IDK YET??\r\n const mostRecentUpdateEle = buildMostRecentUpdateElement(rd.mostrecentupdate);\r\n const enteredByEle = buildEnteredByElement(rd.enteredby, rd.originalUserFullName);\r\n\r\n // BUTTONS\r\n const btnWrap = _DOM.createElement('div', { class: 'button-wrap' });\r\n const editButton = new Button({\r\n text: 'edit',\r\n style: 'primary',\r\n styleType: 'contained',\r\n icon: 'edit',\r\n });\r\n const deleteButton = new Button({\r\n text: 'delete',\r\n style: 'danger',\r\n styleType: 'outlined',\r\n icon: 'delete',\r\n });\r\n editButton.renderTo(btnWrap);\r\n deleteButton.renderTo(btnWrap);\r\n editButton.onClick(e => {\r\n const customEvent = new CustomEvent('onCardEdit', {\r\n bubbles: true,\r\n cancelable: true,\r\n detail: { caseNoteId },\r\n });\r\n this.overviewCardsWrap.dispatchEvent(customEvent);\r\n });\r\n deleteButton.onClick(async e => {\r\n const continueSave = await deleteConfirmationPopup.show(\r\n 'Are you sure you would like to delete this case note?',\r\n );\r\n \r\n if (continueSave !== 'confirm') {\r\n return;\r\n }\r\n\r\n const customEvent = new CustomEvent('onCardDelete', {\r\n bubbles: true,\r\n cancelable: true,\r\n detail: { caseNoteId },\r\n });\r\n this.overviewCardsWrap.dispatchEvent(customEvent);\r\n }); \r\n\r\n // TOP\r\n const startTimeEle = buildStartTimeElement(rd.starttime);\r\n const endTimeEle = buildEndTimeElement(rd.endtime);\r\n const timeDurationEle = buildTimeDiffElement(rd.starttime, rd.endtime);\r\n overviewCard.appendChild(startTimeEle);\r\n overviewCard.appendChild(endTimeEle);\r\n overviewCard.appendChild(timeDurationEle);\r\n overviewCard.appendChild(btnWrap);\r\n\r\n // MAIN\r\n const consumerNameEle = buildConsumerElement(consumerId, rd.firstname, rd.lastname);\r\n const serviceInfoEle = buildServiceInfoElement(mainService, rd.serviceName);\r\n const noteTextEle = buildNoteElement(rd.caseNote);\r\n overviewCard.appendChild(consumerNameEle);\r\n overviewCard.appendChild(serviceInfoEle);\r\n overviewCard.appendChild(noteTextEle);\r\n // overviewCard.appendChild(enteredByEle);\r\n // overviewCard.appendChild(mostRecentUpdateEle);\r\n\r\n //---------------------------------\r\n this.overviewCards[caseNoteId] = overviewCardWrap;\r\n this.overviewCardsWrap.appendChild(overviewCardWrap);\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesOverview.prototype.fetchData = async function (selectedDate) {\r\n if (selectedDate) {\r\n this.selectedDate = selectedDate;\r\n }\r\n\r\n if (this.caseLoadOnly) {\r\n const restrictionsResponse = await _UTIL.fetchData('getCaseLoadRestriction');\r\n this.caseLoadRestrictions = restrictionsResponse.getCaseLoadRestrictionResult;\r\n }\r\n\r\n const filteredSearchResponse = await _UTIL.fetchData('caseNotesFilteredSearchJSON', {\r\n applicationName: $.session.applicationName,\r\n attachments: '%',\r\n billerId: this.showAllNotes ? '%' : $.session.PeopleId,\r\n billingCode: '%',\r\n billed: '%',\r\n consumerId: '%',\r\n contact: '%',\r\n confidential: '%',\r\n corrected: '%',\r\n dateEnteredStart: '1900-01-01',\r\n dateEnteredEnd: dates.formatISO(dates.getTodaysDateObj(), { representation: 'date' }),\r\n location: '%',\r\n need: '%',\r\n noteText: '%%%',\r\n overlaps: 'N',\r\n reviewStatus: '%',\r\n service: '%',\r\n serviceStartDate: dates.formatISO(this.selectedDate, { representation: 'date' }),\r\n serviceEndDate: dates.formatISO(this.selectedDate, { representation: 'date' }),\r\n });\r\n\r\n this.caseLoadReviewData = filteredSearchResponse.caseNotesFilteredSearchJSONResult.filter(data => {\r\n // GROUPING\r\n if (data.numberInGroup !== '1') {\r\n const groupNoteId = data.groupnoteid.split('.')[0];\r\n const consumerId = data.consumerid.split('.')[0];\r\n const name = `${data.lastname}, ${data.firstname}`;\r\n\r\n this.reviewGroups[groupNoteId] = this.reviewGroups[groupNoteId] ?? {};\r\n this.reviewGroups[groupNoteId][consumerId] = name;\r\n }\r\n\r\n // TABLE CONSUMERS\r\n this.reviewConsumers.push({\r\n id: data.casenoteid.split('.')[0],\r\n FirstName: data.firstname,\r\n LastName: data.lastname,\r\n });\r\n\r\n // FOR VIEW ENTERED & CASELOAD ONLY\r\n if (this.viewEntered && this.caseLoadOnly) {\r\n const enteredByUser = data.enteredby.toUpperCase() === $.session.UserId.toUpperCase();\r\n const onCaseload = this.caseLoadRestrictions.some(\r\n cl => cl.id.toUpperCase() === data.consumerid.split('.')[0].toUpperCase(),\r\n );\r\n return enteredByUser || onCaseload;\r\n }\r\n\r\n // FOR VIEW ENTERED only\r\n if (this.viewEntered) {\r\n return data.enteredby.toUpperCase() === $.session.UserId.toUpperCase();\r\n }\r\n\r\n // FOR CASELOAD ONLY\r\n if (this.caseLoadOnly) {\r\n return this.caseLoadRestrictions.some(cl => cl.id === data.consumerid.split('.')[0]);\r\n }\r\n\r\n return true; // If no conditions met, return the data as is\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n CaseNotesOverview.prototype.onCardEdit = function (cbFunc) {\r\n this.overviewCardsWrap.addEventListener('onCardEdit', e => {\r\n cbFunc(e.detail.caseNoteId);\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n CaseNotesOverview.prototype.onCardDelete = function (cbFunc) {\r\n this.overviewCardsWrap.addEventListener('onCardDelete', e => {\r\n // remove data\r\n const noteId = e.detail.caseNoteId;\r\n const index = this.caseLoadReviewData.findIndex(obj => obj.casenoteid === noteId);\r\n this.caseLoadReviewData.splice(index, 1);\r\n\r\n // remove card\r\n this.overviewCards[noteId].remove();\r\n delete this.overviewCards[noteId];\r\n\r\n cbFunc(noteId);\r\n });\r\n };\r\n\r\n /**\r\n * Renders Case Notes Overview markup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render case notes overview to\r\n * @returns {CaseNotesOverview} Returns the current instances for chaining\r\n */\r\n CaseNotesOverview.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.overviewWrap);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return CaseNotesOverview;\r\n});\r\n","(function (global, factory) {\r\n global.CaseNotesPhrases = factory();\r\n})(this, function () {\r\n //=======================================\r\n // ADDING NEW PHRASES\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating the Case Notes Add Phrases component.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesAddPhrases}\r\n */\r\n function CaseNotesAddPhrases(phrasesInstance) {\r\n // Data Init\r\n // Instances\r\n this.dialog = null;\r\n this.addPhraseForm = null;\r\n this.PhrasesInstance = phrasesInstance;\r\n // DOM Ref\r\n }\r\n\r\n /**\r\n * @function\r\n * @returns {CaseNotesAddPhrases} - Returns the current instances for chaining\r\n */\r\n CaseNotesAddPhrases.prototype.build = function () {\r\n this.dialog = new Dialog({ className: 'addPhrases' });\r\n\r\n this.addPhraseForm = new Form({\r\n fields: [\r\n {\r\n type: 'checkbox',\r\n label: 'Publicly Available',\r\n id: 'public',\r\n },\r\n {\r\n type: 'text',\r\n label: 'shortcut',\r\n id: 'shortcut',\r\n required: true,\r\n maxlength: 10,\r\n //showCount: true,\r\n },\r\n {\r\n type: 'textarea',\r\n label: 'phrase',\r\n id: 'phrase',\r\n required: true,\r\n },\r\n ],\r\n // buttons: [\r\n // {\r\n // text: 'Cancel',\r\n // icon: 'cancel',\r\n // style: 'primary',\r\n // styleType: 'outlined',\r\n // name: 'cancel',\r\n // },\r\n // ],\r\n });\r\n\r\n this.addPhraseForm.renderTo(this.dialog.dialog);\r\n\r\n this.setupEvents();\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesAddPhrases.prototype.show = function () {\r\n this.dialog.show();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesAddPhrases.prototype.close = function () {\r\n this.dialog.close();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesAddPhrases.prototype.setupEvents = function () {\r\n this.addPhraseForm.onSubmit(async formData => {\r\n const data = await _UTIL.fetchData('insertCustomPhrase', {\r\n shortcut: formData.shortcut,\r\n phrase: formData.phrase,\r\n makePublic: formData.public === 'on' ? 'Y' : 'N',\r\n });\r\n const success = data.insertCustomPhraseResult;\r\n\r\n this.close();\r\n\r\n // update phrases list for inserting\r\n await this.PhrasesInstance.InsertPhrases.fetchData();\r\n this.PhrasesInstance.InsertPhrases.populate();\r\n });\r\n this.addPhraseForm.onChange(event => {\r\n const value = event.target.value;\r\n const name = event.target.name;\r\n const input = this.addPhraseForm.inputs[name];\r\n });\r\n };\r\n\r\n /**\r\n * Renders Case Notes Phrase makrup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node - DOM node to render case notes phrases to\r\n * @returns {CaseNotesAddPhrases} - Returns the current instances for chaining\r\n */\r\n CaseNotesAddPhrases.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n //=======================================\r\n // INSERTING PHRASES\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating the Case Notes Insert Phrases component.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesInsertPhrases}\r\n */\r\n function CaseNotesInsertPhrases(phrasesInstance) {\r\n // Data Init\r\n this.phrasesData = [];\r\n this.showAllPhrases = null;\r\n\r\n // Instance Ref\r\n this.PhrasesInstance = phrasesInstance;\r\n\r\n // DOM Ref\r\n this.dialog = null;\r\n this.showAllPhrasesToggle = null;\r\n this.addPhraseButton = null;\r\n this.phraseWrap = null;\r\n }\r\n\r\n /**\r\n * @function\r\n * @returns {CaseNotesInsertPhrases} - Returns the current instances for chaining\r\n */\r\n CaseNotesInsertPhrases.prototype.build = function () {\r\n this.showAllPhrases = _UTIL.localStorageHandler.get('casenotes-showAllPhrases');\r\n this.showAllPhrases = this.showAllPhrases === 'Y' ? true : false;\r\n\r\n this.dialog = new Dialog({ className: 'insertPhrases' });\r\n\r\n this.showAllPhrasesToggle = new Checkbox({\r\n id: 'phraseView',\r\n label: 'Show All Phrases',\r\n toggle: true,\r\n checked: this.showAllPhrases,\r\n });\r\n this.showAllPhrasesToggle.renderTo(this.dialog.dialog);\r\n\r\n this.phraseWrap = _DOM.createElement('div', { class: 'phraseWrap' });\r\n this.dialog.dialog.appendChild(this.phraseWrap);\r\n\r\n this.addPhraseButton = new Button({ text: 'New Phrase', icon: 'add' }).renderTo(this.dialog.dialog);\r\n\r\n this.setupEvents();\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesInsertPhrases.prototype.populate = function () {\r\n this.phraseWrap.innerHTML = '';\r\n\r\n const sortedKeys = Object.keys(this.phrasesData).sort((a, b) => {\r\n return this.phrasesData[a].shortcut.localeCompare(this.phrasesData[b].shortcut);\r\n });\r\n\r\n sortedKeys.forEach(id => {\r\n const phrase = this.phrasesData[id].phrase;\r\n const shortcut = this.phrasesData[id].shortcut;\r\n\r\n const phraseEle = _DOM.createElement('p', {\r\n id,\r\n html: `${shortcut}${phrase.slice(0, 35)}...`,\r\n class: 'phrase',\r\n 'data-target': 'phrase',\r\n });\r\n\r\n this.phraseWrap.appendChild(phraseEle);\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesInsertPhrases.prototype.show = function () {\r\n this.dialog.show();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesInsertPhrases.prototype.close = function () {\r\n this.dialog.close();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesInsertPhrases.prototype.onPhraseSelect = function (cb) {\r\n const handleClick = e => {\r\n if (e.target.dataset.target === 'phrase') {\r\n cb(this.phrasesData[e.target.id].phrase);\r\n this.phraseWrap.removeEventListener('click', handleClick);\r\n }\r\n };\r\n\r\n this.phraseWrap.addEventListener('click', handleClick);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesInsertPhrases.prototype.setupEvents = function () {\r\n // PHRASE LIST TOGGLE\r\n this.showAllPhrasesToggle.onChange(async e => {\r\n this.showAllPhrases = e.target.checked ? true : false;\r\n _UTIL.localStorageHandler.set('casenotes-showAllPhrases', this.showAllPhrases ? 'Y' : 'N');\r\n\r\n await this.fetchData();\r\n\r\n this.populate();\r\n });\r\n\r\n // ADD NEW PHRASE BUTTON CLICK\r\n this.addPhraseButton.onClick(async e => {\r\n this.PhrasesInstance.AddPhrases.show();\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesInsertPhrases.prototype.fetchData = async function () {\r\n const data = await _UTIL.fetchData('getCustomPhrases', {\r\n showAll: this.showAllPhrases ? 'Y' : 'N',\r\n });\r\n\r\n this.phrasesData = data.getCustomPhrasesResult.reduce((obj, phrase) => {\r\n if (!obj[phrase.phrase_id]) {\r\n obj[phrase.phrase_id] = {\r\n shortcut: phrase.phrase_shortcut,\r\n phrase: phrase.phrase,\r\n };\r\n }\r\n\r\n return obj;\r\n }, {});\r\n };\r\n\r\n /**\r\n * Renders Case Notes Phrase makrup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render case notes phrases to\r\n * @returns {CaseNotesInsertPhrases} Returns the current instances for chaining\r\n */\r\n CaseNotesInsertPhrases.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating the Case Notes Phrases component.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesPhrases}\r\n */\r\n function CaseNotesPhrases() {\r\n // Data Init\r\n this.AddPhrases = new CaseNotesAddPhrases(this);\r\n this.InsertPhrases = new CaseNotesInsertPhrases(this);\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * @function\r\n *\r\n * @returns {CaseNotesPhrases} Returns the current instances for chaining\r\n */\r\n CaseNotesPhrases.prototype._build = function () {\r\n this.AddPhrases.build();\r\n this.InsertPhrases.build();\r\n };\r\n\r\n /**\r\n * Renders Case Notes Phrase Dialogs to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render case notes phrases to\r\n * @returns {CaseNotesPhrases} Returns the current instances for chaining\r\n */\r\n CaseNotesPhrases.prototype.renderTo = function (node) {\r\n this.AddPhrases.renderTo(node);\r\n this.InsertPhrases.renderTo(node);\r\n };\r\n\r\n return CaseNotesPhrases;\r\n});\r\n","(function (global, factory) {\r\n global.CaseNotesReports = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Constructor function for Case Notes Reports.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesReports}\r\n */\r\n function CaseNotesReports() {\r\n // Instance Ref\r\n this.dialog = null;\r\n\r\n // DOM Ref\r\n\r\n this._build();\r\n this._setupEvents();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReports.prototype._build = function () {\r\n this.dialog = new Dialog({ className: 'addPhrases' });\r\n\r\n //TODO-ASH: build form to allow user to select criteria for report\r\n this.detailReportForm = new Form({\r\n fields: [\r\n {\r\n type: 'time',\r\n label: 'Start Time',\r\n id: 'startTime',\r\n required: true,\r\n },\r\n ],\r\n });\r\n\r\n this.timeAnalysisReportForm = new Form({\r\n fields: [\r\n {\r\n type: 'time',\r\n label: 'Start Time',\r\n id: 'startTime',\r\n required: true,\r\n },\r\n ],\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReports.prototype._setupEvents = function () {\r\n this.detailReportForm.onSubmit(data => {\r\n this.generateDetailReport();\r\n });\r\n this.timeAnalysisReportForm.onSubmit(data => {\r\n this.generateTimeAnalysisReport();\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReports.prototype.show = function () {\r\n this.dialog.show();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReports.prototype.close = function () {\r\n this.dialog.close();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReports.prototype.generateDetailReport = async function () {\r\n const success = await _UTIL.fetchData('generateCNDetailReport', {\r\n userId: $.session.UserId,\r\n });\r\n\r\n const debounceTime = parseInt($.session.reportSeconds) * 1000;\r\n _UTIL.debounce(\r\n (async () => {\r\n const doesReportExist = await _UTIL.fetchData('checkIfCNReportExists', {\r\n reportScheduleId: success[0].reportScheduleId,\r\n });\r\n\r\n if (doesReportExist.indexOf('1') !== -1) {\r\n this.viewReport(success[0].reportScheduleId);\r\n }\r\n })(),\r\n debounceTime,\r\n );\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReports.prototype.generateTimeAnalysisReport = async function () {\r\n const success = await _UTIL.fetchData('generateCNTimeAnalysisReport', {\r\n userId: $.session.UserId,\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReports.prototype.viewReport = async function (reportScheduleId) {\r\n const action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewCaseNoteReport/`;\r\n\r\n var form = document.createElement('form');\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', () => {\r\n form.remove();\r\n });\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'reportScheduleId');\r\n attachmentInput.setAttribute('value', reportScheduleId);\r\n attachmentInput.id = 'reportScheduleId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n };\r\n\r\n /**\r\n * Renders Case Notes Report Popup markup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render case notes report popup to\r\n * @returns {CaseNotesReports} Returns the current instances for chaining\r\n */\r\n CaseNotesReports.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return CaseNotesReports;\r\n});\r\n","(function (global, factory) {\r\n global.CaseNotesReviewTable = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating the Case Notes Review Table component.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesReviewTable}\r\n */\r\n function CaseNotesReviewTable(cnData) {\r\n // Data Init\r\n this.cnData = cnData;\r\n this.caseLoadOnly = $.session.CaseNotesCaseloadRestrictions;\r\n this.viewEntered = $.session.CaseNotesViewEntered;\r\n this.reviewGroups = {};\r\n this.reviewConsumers = [];\r\n\r\n this.caseLoadRestrictions = null;\r\n this.caseLoadReviewData = [];\r\n\r\n // DOM Ref\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReviewTable.prototype._build = function () {\r\n this.rootElement = _DOM.createElement('div');\r\n\r\n this.reviewTable = new Table({\r\n data: {\r\n headings: [\r\n {\r\n text: 'Service Date',\r\n type: 'date',\r\n },\r\n {\r\n text: 'Start Time',\r\n type: 'time',\r\n },\r\n {\r\n text: 'End Time',\r\n type: 'time',\r\n },\r\n {\r\n text: 'Name',\r\n type: 'string',\r\n },\r\n {\r\n text: 'Created',\r\n type: 'date',\r\n },\r\n {\r\n text: 'User Updated',\r\n type: 'string',\r\n },\r\n ],\r\n },\r\n });\r\n\r\n this.reviewTable.renderTo(this.rootElement);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReviewTable.prototype.fetchData = async function (selectedDate) {\r\n if (this.caseLoadOnly) {\r\n const restrictionsResponse = await _UTIL.fetchData('getCaseLoadRestriction');\r\n this.caseLoadRestrictions = restrictionsResponse.getCaseLoadRestrictionResult;\r\n }\r\n\r\n const filteredSearchResponse = await _UTIL.fetchData('caseNotesFilteredSearchJSON', {\r\n applicationName: $.session.applicationName,\r\n attachments: '%',\r\n billerId: this.showAllNotes ? '%' : $.session.PeopleId,\r\n billingCode: '%',\r\n billed: '%',\r\n consumerId: '%',\r\n contact: '%',\r\n confidential: '%',\r\n corrected: '%',\r\n dateEnteredStart: '1900-01-01',\r\n dateEnteredEnd: dates.formatISO(selectedDate, { representation: 'date' }),\r\n location: '%',\r\n need: '%',\r\n noteText: '%%%',\r\n overlaps: 'N',\r\n reviewStatus: '%',\r\n service: '%',\r\n serviceStartDate: dates.formatISO(selectedDate, { representation: 'date' }),\r\n serviceEndDate: dates.formatISO(selectedDate, { representation: 'date' }),\r\n });\r\n\r\n this.caseLoadReviewData = filteredSearchResponse.caseNotesFilteredSearchJSONResult.filter(data => {\r\n // GROUPING\r\n if (data.numberInGroup !== '1') {\r\n const groupNoteId = data.groupnoteid.split('.')[0];\r\n const consumerId = data.consumerid.split('.')[0];\r\n const name = `${data.lastname}, ${data.firstname}`;\r\n\r\n this.reviewGroups[groupNoteId] = this.reviewGroups[groupNoteId] ?? {};\r\n this.reviewGroups[groupNoteId][consumerId] = name;\r\n }\r\n\r\n // TABLE CONSUMERS\r\n this.reviewConsumers.push({\r\n id: data.casenoteid.split('.')[0],\r\n FirstName: data.firstname,\r\n LastName: data.lastname,\r\n });\r\n\r\n // FOR VIEW ENTERED & CASELOAD ONLY\r\n if (this.viewEntered && this.caseLoadOnly) {\r\n const enteredByUser = data.enteredby.toUpperCase() === $.session.UserId.toUpperCase();\r\n const onCaseload = this.caseLoadRestrictions.some(\r\n cl => cl.id.toUpperCase() === data.consumerid.split('.')[0].toUpperCase(),\r\n );\r\n return enteredByUser || onCaseload;\r\n }\r\n\r\n // FOR VIEW ENTERED only\r\n if (this.viewEntered) {\r\n return data.enteredby.toUpperCase() === $.session.UserId.toUpperCase();\r\n }\r\n\r\n // FOR CASELOAD ONLY\r\n if (this.caseLoadOnly) {\r\n return this.caseLoadRestrictions.some(cl => cl.id === data.consumerid.split('.')[0]);\r\n }\r\n\r\n return true; // If no conditions met, return the data as is\r\n });\r\n };\r\n\r\n /**\r\n * Renders Case Notes Review Table markup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render case notes review table to\r\n * @returns {CaseNotesReviewTable} Returns the current instances for chaining\r\n */\r\n CaseNotesReviewTable.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return CaseNotesReviewTable;\r\n});\r\n","(function (global, factory) {\r\n global.CaseNotesTimer = factory();\r\n})(this, function () {\r\n //=======================================\r\n // INACTIVITY\r\n //---------------------------------------\r\n /**\r\n * @constructor\r\n */\r\n function InactivityWarningPopup() {\r\n this.dialog = null;\r\n\r\n this.yesButton = null;\r\n this.noButton = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n InactivityWarningPopup.prototype.build = function () {\r\n // Inactivity Warning\r\n this.dialog = new Dialog({ className: 'inactivityWarning' });\r\n\r\n const messageEle = _DOM.createElement('p', {\r\n text: 'Your documentation timer has been paused. Continue timing?',\r\n });\r\n\r\n const btnWrap = _DOM.createElement('div', { class: 'button-wrap' });\r\n this.yesButton = new Button({ text: 'yes' });\r\n this.noButton = new Button({ text: 'no', styleType: 'outlined' });\r\n this.yesButton.renderTo(btnWrap);\r\n this.noButton.renderTo(btnWrap);\r\n\r\n this.dialog.dialog.appendChild(messageEle);\r\n this.dialog.dialog.appendChild(btnWrap);\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Shows the inactivity warning dialog\r\n *\r\n * @function\r\n */\r\n InactivityWarningPopup.prototype.show = function () {\r\n this.dialog.show();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n InactivityWarningPopup.prototype.onClick = function (cbFunc) {\r\n this.yesButton.onClick(e => {\r\n cbFunc(true);\r\n this.dialog.close();\r\n });\r\n this.noButton.onClick(e => {\r\n cbFunc(false);\r\n this.dialog.close();\r\n });\r\n };\r\n\r\n /**\r\n * Renders the built InactivityWarningPopup element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Inactivity Warning Popup to\r\n * @returns {InactivityWarningPopup} Returns the current instances for chaining\r\n */\r\n InactivityWarningPopup.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n //=======================================\r\n // AUTO START\r\n //---------------------------------------\r\n /**\r\n * @constructor\r\n */\r\n function TimerAutoStartPopup() {\r\n this.prevDocumentationTime = 0;\r\n this.dialog = null;\r\n\r\n this.yesButton = null;\r\n this.noButton = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n TimerAutoStartPopup.prototype.build = function () {\r\n this.dialog = new Dialog({ className: 'timerAutoStart' });\r\n\r\n const messageEle = _DOM.createElement('p', {\r\n text: 'Documentation Time is allowed for this bill code. Would you like to start the timer now?',\r\n });\r\n\r\n const btnWrap = _DOM.createElement('div', { class: 'button-wrap' });\r\n this.yesButton = new Button({ text: 'yes' });\r\n this.noButton = new Button({ text: 'no', styleType: 'outlined' });\r\n this.yesButton.renderTo(btnWrap);\r\n this.noButton.renderTo(btnWrap);\r\n\r\n this.dialog.dialog.appendChild(messageEle);\r\n this.dialog.dialog.appendChild(btnWrap);\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Shows the auto start dialog\r\n *\r\n * @function\r\n */\r\n TimerAutoStartPopup.prototype.show = function (prevDocumentationTime) {\r\n this.prevDocumentationTime = prevDocumentationTime;\r\n this.dialog.show();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n TimerAutoStartPopup.prototype.onClick = function (cbFunc) {\r\n this.yesButton.onClick(e => {\r\n cbFunc(true, this.prevDocumentationTime);\r\n this.dialog.close();\r\n this.prevDocumentationTime = 0;\r\n });\r\n this.noButton.onClick(e => {\r\n cbFunc(false);\r\n this.dialog.close();\r\n this.prevDocumentationTime = 0;\r\n });\r\n };\r\n\r\n /**\r\n * Renders the built TimerAutoStartPopup element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Timer Auto Start Popup to\r\n * @returns {TimerAutoStartPopup} Returns the current instances for chaining\r\n */\r\n TimerAutoStartPopup.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating the Case Notes Timer component.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesTimer}\r\n */\r\n function CaseNotesTimer() {\r\n this.startTime = null; // To store the time when the timer starts\r\n this.timeOffset = 0; // To store additional time in seconds\r\n this.elapsedTimeInSeconds = 0; // To store the elapsed time in seconds\r\n\r\n this.intervalId = null; // To store the ID of the timer interval\r\n this.inactivityIntervalId = null; // to store the ID of the inactivity timeout\r\n\r\n // Instance Ref\r\n this.inactivityWarningDialog = null;\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.timeDisplay = null;\r\n this.playButton = null;\r\n this.stopButton = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * Builds the Case Notes Timer element component HTML\r\n *\r\n * @function\r\n * @private\r\n * @returns {CaseNotesTimer} Returns the current instances for chaining\r\n */\r\n CaseNotesTimer.prototype._build = function () {\r\n this.rootElement = _DOM.createElement('div', { class: 'caseNotesTimer' });\r\n\r\n this.playButton = new Button({ icon: 'play', style: 'secondary', styleType: 'outlined' });\r\n this.stopButton = new Button({ icon: 'stop', style: 'danger', styleType: 'outlined' });\r\n this.timeDisplay = _DOM.createElement('p', { text: dates.formatSecondsToFullTime(this.elapsedTimeInSeconds) });\r\n\r\n this.rootElement.appendChild(this.timeDisplay);\r\n this.playButton.renderTo(this.rootElement);\r\n this.stopButton.renderTo(this.rootElement);\r\n\r\n // Inactivity Warning\r\n this.inactivityWarningPopup = new InactivityWarningPopup();\r\n this.inactivityWarningPopup.renderTo(_DOM.ACTIONCENTER);\r\n\r\n // Auto Start\r\n this.timerAutoStartPopup = new TimerAutoStartPopup();\r\n this.timerAutoStartPopup.renderTo(_DOM.ACTIONCENTER);\r\n\r\n this._setupEvents();\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesTimer.prototype._setupEvents = function () {\r\n this.playButton.onClick(e => {\r\n this.start(this.elapsedTimeInSeconds);\r\n this.playButton.toggleDisabled(true);\r\n });\r\n this.stopButton.onClick(e => {\r\n this.stop();\r\n this.playButton.toggleDisabled(false);\r\n\r\n if (this.inactivityTimeoutId) {\r\n clearTimeout(this.inactivityTimeoutId);\r\n }\r\n });\r\n this.inactivityWarningPopup.onClick(continueTimer => {\r\n if (continueTimer) {\r\n this.start(this.elapsedTimeInSeconds);\r\n }\r\n });\r\n this.timerAutoStartPopup.onClick((autoStart, prevDocTime) => {\r\n if (autoStart) {\r\n this.start(prevDocTime);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Starts the Doc Timer.\r\n * Should not be used to start timer after its been stopped\r\n *\r\n * @function\r\n * @param {Number} options\r\n */\r\n CaseNotesTimer.prototype.start = function (additionalTimeInSeconds = 0) {\r\n this.startTime = Date.now(); // Capture the start time\r\n this.timeOffset = additionalTimeInSeconds; // Store the additional time\r\n\r\n // Clear any existing interval\r\n if (this.intervalId) {\r\n clearInterval(this.intervalId);\r\n }\r\n\r\n // Start a new interval\r\n this.intervalId = setInterval(() => {\r\n const currentTime = Date.now();\r\n this.elapsedTimeInSeconds = Math.floor((currentTime - this.startTime) / 1000) + this.timeOffset;\r\n this.timeDisplay.innerText = dates.formatSecondsToFullTime(this.elapsedTimeInSeconds);\r\n //console.log(`Elapsed Time: ${this.elapsedTimeInSeconds} seconds`);\r\n }, 1000);\r\n\r\n // clear existing inactivity interval\r\n if (this.inactivityIntervalId) {\r\n clearTimeout(this.inactivityIntervalId);\r\n }\r\n // Start inactivity timer\r\n this.inactivityIntervalId = setTimeout(() => {\r\n this.stop();\r\n this.inactivityWarningPopup.show();\r\n }, 120000);\r\n };\r\n\r\n /**\r\n * Stops the Doc Timer. (aka pause)\r\n *\r\n * @function\r\n * @returns {CaseNotesTimer} Returns the current instances for chaining\r\n */\r\n CaseNotesTimer.prototype.stop = function () {\r\n clearInterval(this.intervalId);\r\n clearTimeout(this.inactivityTimeoutId);\r\n this.intervalId = null;\r\n this.inactivityTimeoutId = null;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesTimer.prototype.clear = function () {\r\n if (this.intervalId) {\r\n clearInterval(this.intervalId);\r\n }\r\n if (this.inactivityTimeoutId) {\r\n clearTimeout(this.inactivityTimeoutId);\r\n }\r\n\r\n this.startTime = null;\r\n this.timeOffset = 0;\r\n this.intervalId = null;\r\n this.inactivityTimeoutId = null;\r\n this.elapsedTimeInSeconds = 0;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesTimer.prototype.getTime = function () {\r\n return this.elapsedTimeInSeconds;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesTimer.prototype.showAutoStartPopup = function (prevDocumentationTime) {\r\n if (this.intervalId) return;\r\n\r\n this.timerAutoStartPopup.show(prevDocumentationTime);\r\n };\r\n\r\n /**\r\n * Renders Case Notes Timer makrup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render case notes timer to\r\n * @returns {CaseNotesTimer} Returns the current instances for chaining\r\n */\r\n CaseNotesTimer.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return CaseNotesTimer;\r\n});\r\n","","//test df\r\nvar caseNotes = (function () {\r\n function loadCaseNotesLanding() {\r\n let newBtn = button.build({\r\n text: 'New Note',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n note.init('new');\r\n },\r\n });\r\n let newSSABtn = button.build({\r\n text: 'New SSA Note',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n noteSSA.init('new');\r\n },\r\n });//test\r\n\r\n let overviewBtn = button.build({\r\n text: 'Review Notes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: notesOverview.init,\r\n });\r\n let editPhrasesBtn = button.build({\r\n text: 'Edit My Phrases',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: cnEditPhrases.init,\r\n });\r\n let tryNewCaseNotes = button.build({\r\n text: 'NEW! Case Note Entry',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: CaseNotes.init,\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n btnWrap.appendChild(tryNewCaseNotes);\r\n if ($.session.CaseNotesUpdate && $.session.CaseNotesSSANotes) btnWrap.appendChild(newSSABtn);\r\n if ($.session.CaseNotesUpdate) btnWrap.appendChild(newBtn);\r\n btnWrap.appendChild(overviewBtn);\r\n btnWrap.appendChild(editPhrasesBtn);\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n\r\n function init() {\r\n DOM.clearActionCenter();\r\n //PERMISSION// caseNotesUpdate === false means they have view only permisison\r\n //Can't create new notes or update/delete notes. -- Skip the landing, and just load the overview page\r\n if (!$.session.CaseNotesUpdate) {\r\n notesOverview.init();\r\n return;\r\n }\r\n loadCaseNotesLanding();\r\n }\r\n\r\n return {\r\n load: init,\r\n };\r\n})();\r\n","var caseNotesAjax = (function () {\r\n // GET\r\n function getFilteredCaseNotesList(data, callback) {\r\n const spinner = PROGRESS.SPINNER.get('Loading Overlaps...');\r\n const reviewTable = document.querySelector('#caseNotesReviewTable .table__body');\r\n const submitData = {\r\n token: $.session.Token,\r\n billerId: data.billerId,\r\n consumerId: data.consumer,\r\n serviceStartDate: data.serviceDateStart,\r\n serviceEndDate: data.serviceDateEnd,\r\n dateEnteredStart: data.enteredDateStart,\r\n dateEnteredEnd: data.enteredDateEnd,\r\n billingCode: data.billingCode,\r\n reviewStatus: data.reviewStatus,\r\n location: data.location,\r\n service: data.service,\r\n need: data.need,\r\n contact: data.contact,\r\n confidential: data.confidential,\r\n corrected: data.corrected,\r\n billed: data.billed,\r\n attachments: data.attachments,\r\n overlaps: data.overlaps,\r\n noteText: data.noteText !== '' ? `%${data.noteText}%` : '',\r\n applicationName: $.session.applicationName,\r\n outcomeServiceMonitoring: data.outcomeServiceMonitoring\r\n };\r\n if (data.overlaps === 'Y') {\r\n reviewTable.innerHTML = '';\r\n reviewTable.appendChild(spinner);\r\n spinner.style.top = 0;\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/caseNotesFilteredSearchJSON/',\r\n // data:\r\n // '{\"token\":\"' +\r\n // $.session.Token +\r\n // '\", \"billerId\":\"' +\r\n // data.billerId +\r\n // '\", \"consumerId\":\"' +\r\n // data.consumer +\r\n // '\", \"serviceStartDate\":\"' +\r\n // data.serviceDateStart +\r\n // '\", \"serviceEndDate\":\"' +\r\n // data.serviceDateEnd +\r\n // '\", \"dateEnteredStart\":\"' +\r\n // data.enteredDateStart +\r\n // '\", \"dateEnteredEnd\":\"' +\r\n // data.enteredDateEnd +\r\n // '\", \"billingCode\":\"' +\r\n // data.billingCode +\r\n // '\", \"reviewStatus\":\"' +\r\n // data.reviewStatus +\r\n // '\", \"location\":\"' +\r\n // data.location +\r\n // '\", \"service\":\"' +\r\n // data.service +\r\n // '\", \"need\":\"' +\r\n // data.need +\r\n // '\", \"contact\":\"' +\r\n // data.contact +\r\n // '\", \"confidential\":\"' +\r\n // data.confidential +\r\n // '\", \"billed\":\"' +\r\n // data.billed +\r\n // '\", \"attachments\":\"' +\r\n // data.attachments +\r\n // '\", \"overlaps\":\"' +\r\n // data.overlaps +\r\n // '\", \"noteText\":\"' +\r\n // data.noteText +\r\n // '\"}',\r\n data: JSON.stringify(submitData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.caseNotesFilteredSearchJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getCaseNoteEdit(noteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCaseNoteEditJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCaseNoteEditJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getGroupNoteId(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGroupNoteId/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.getGroupNoteIdResult);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDropdownData(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/populateDropdownData/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getConsumersThatCanHaveMileage(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumersThatCanHaveMileageJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumersThatCanHaveMileageJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getBillersListForDropDown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getBillersListForDropDownJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getBillersListForDropDownJSONResult;\r\n // var allString = '000All';\r\n // res = res.slice(0, 45) + allString + res.slice(45);\r\n // createBillerDropdown(res);\r\n callback(res);\r\n // if ($.session.CaseNotesCaseloadRestriction == false) {\r\n // \tconvertDaysBackForCaseNoteLoadFilter($.session.defaultCaseNoteReviewDays);\r\n // }\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getReviewRequiredForCaseManager(caseManagerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getReviewRequiredForCaseManager/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseManagerId\":\"' + caseManagerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getReviewRequiredForCaseManagerResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getCaseNoteAttachmentsList(caseNoteId, cb) {\r\n data = {\r\n token: $.session.Token,\r\n caseNoteId: caseNoteId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCaseNoteAttachmentsList/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCaseNoteAttachmentsListResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function getConsumerSpecificVendors(consumerId, serviceDate, callback) {\r\n if (consumerId == '' || consumerId == undefined) {\r\n consumerId = $.session.caseNoteConsumerId;\r\n }\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerSpecificVendorsJSON/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + consumerId + '\", \"serviceDate\":\"' + serviceDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerSpecificVendorsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getServiceLocationsForCaseNoteDropDown(data, callback) {\r\n //** OBJ **\r\n // data = { serviceDate, consumerId }\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceLocationsForCaseNoteDropDown/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"consumerId\":\"' +\r\n data.consumerId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getServiceLocationsForCaseNoteDropDownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function caseNoteOverlapCheck(data, callback) {\r\n // data = {consumerId, startTime, endTime, serviceDate, caseManagerId, noteId, groupNoteId}\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/caseNoteOverlapCheck/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerId\":\"' +\r\n data.consumerId +\r\n '\", \"startTime\":\"' +\r\n data.startTime +\r\n '\", \"endTime\":\"' +\r\n data.endTime +\r\n '\", \"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"caseManagerId\":\"' +\r\n data.caseManagerId +\r\n '\", \"noteId\":\"' +\r\n data.noteId +\r\n '\", \"groupNoteId\":\"' +\r\n data.groupNoteId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.caseNoteOverlapCheckResult);\r\n callback(res);\r\n },\r\n });\r\n }\r\n\r\n // SAVE, UPDATE, DELETE\r\n function saveSingleCaseNote(data, callback) {\r\n // saveCaseNote\r\n data = {\r\n token: $.session.Token,\r\n noteId: data.noteId,\r\n caseManagerId: data.caseManagerId,\r\n consumerId: data.consumerId,\r\n serviceOrBillingCodeId: data.serviceOrBillingCodeId,\r\n locationCode: data.locationCode,\r\n serviceCode: data.serviceCode,\r\n needCode: data.needCode,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n vendorId: data.vendorId,\r\n contactCode: data.contactCode,\r\n serviceLocationCode: data.serviceLocationCode,\r\n caseNote: data.caseNote,\r\n reviewRequired: data.reviewRequired,\r\n confidential: data.confidential,\r\n corrected: data.corrected,\r\n casenotemileage: data.casenotemileage,\r\n casenotetraveltime: data.casenotetraveltime,\r\n documentationTime: data.documentationTime,\r\n outcomeServiceMonitoring: data.serviceMonitoring\r\n };\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveCaseNote/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n callback(response.saveCaseNoteResult);\r\n },\r\n });\r\n }\r\n function saveGroupCaseNote(data, callback) {\r\n // saveGroupCaseNote\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveGroupCaseNote/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"noteId\":\"' +\r\n data.noteId +\r\n '\",\"groupNoteId\":\"' +\r\n data.groupNoteId +\r\n '\",\"caseManagerId\":\"' +\r\n data.caseManagerId +\r\n '\", \"consumerId\":\"' +\r\n data.consumerId +\r\n '\", \"serviceOrBillingCodeId\":\"' +\r\n data.serviceOrBillingCodeId +\r\n '\", \"locationCode\":\"' +\r\n data.locationCode +\r\n '\", \"serviceCode\":\"' +\r\n data.serviceCode +\r\n '\", \"needCode\":\"' +\r\n data.needCode +\r\n '\", \"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"startTime\":\"' +\r\n data.startTime +\r\n '\", \"endTime\":\"' +\r\n data.endTime +\r\n '\", \"vendorId\":\"' +\r\n data.vendorId +\r\n '\", \"contactCode\":\"' +\r\n data.contactCode +\r\n '\", \"serviceLocationCode\":\"' +\r\n data.serviceLocationCode +\r\n '\", \"caseNote\":\"' +\r\n data.caseNote +\r\n '\", \"reviewRequired\":\"' +\r\n data.reviewRequired +\r\n '\", \"confidential\":\"' +\r\n data.confidential +\r\n '\", \"consumerGroupCount\":\"' +\r\n data.consumerGroupCount +\r\n '\", \"casenotemileage\":\"' +\r\n data.casenotemileage +\r\n '\", \"casenotetraveltime\":\"' +\r\n data.casenotetraveltime +\r\n '\", \"documentationTime\":\"' +\r\n data.documentationTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function saveAdditionalGroupCaseNote(data, callback) {\r\n // saveAdditionalGroupCaseNote\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveAdditionalGroupCaseNote/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"noteId\":\"' +\r\n data.noteId +\r\n '\",\"groupNoteId\":\"' +\r\n data.groupNoteId +\r\n '\",\"caseManagerId\":\"' +\r\n data.caseManagerId +\r\n '\", \"consumerId\":\"' +\r\n data.consumerId +\r\n '\", \"serviceOrBillingCodeId\":\"' +\r\n data.serviceOrBillingCodeId +\r\n '\", \"locationCode\":\"' +\r\n data.locationCode +\r\n '\", \"serviceCode\":\"' +\r\n data.serviceCode +\r\n '\", \"needCode\":\"' +\r\n data.needCode +\r\n '\", \"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"startTime\":\"' +\r\n data.startTime +\r\n '\", \"endTime\":\"' +\r\n data.endTime +\r\n '\", \"vendorId\":\"' +\r\n data.vendorId +\r\n '\", \"contactCode\":\"' +\r\n data.contactCode +\r\n '\", \"serviceLocationCode\":\"' +\r\n data.serviceLocationCode +\r\n '\", \"reviewRequired\":\"' +\r\n data.reviewRequired +\r\n '\", \"confidential\":\"' +\r\n data.confidential +\r\n '\", \"caseNote\":\"' +\r\n data.caseNote +\r\n '\", \"casenotemileage\":\"' +\r\n data.casenotemileage +\r\n '\", \"casenotetraveltime\":\"' +\r\n data.casenotetraveltime +\r\n '\", \"documentationTime\":\"' +\r\n data.documentationTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n });\r\n }\r\n function updateGroupNoteValues(data, callback) {\r\n // updateGroupNoteValues\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateGroupNoteValues/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"groupNoteId\":\"' +\r\n data.groupNoteId +\r\n '\", \"noteId\":\"' +\r\n data.noteId +\r\n '\", \"serviceOrBillingCodeId\":\"' +\r\n data.serviceOrBillingCodeId +\r\n '\",\"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"startTime\":\"' +\r\n data.startTime +\r\n '\", \"endTime\":\"' +\r\n data.endTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n });\r\n }\r\n async function deleteExistingCaseNote(noteId) {\r\n try {\r\n const data = {\r\n token: $.session.Token,\r\n noteId: noteId,\r\n };\r\n const res = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteExistingCaseNote/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n // success: function (response, status, xhr) {\r\n // \tvar res = JSON.stringify(response);\r\n // },\r\n // error: function (xhr, status, error) {\r\n // \t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n // },\r\n });\r\n return res.deleteExistingCaseNoteResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // ATTACHMENTS\r\n function addCaseNoteAttachment(caseNoteId, desc, attachmentType, buf, cb) {\r\n // let abString = btoa(String.fromCharCode.apply(null, new Uint8Array(buf)))\r\n var binary = '';\r\n var bytes = new Uint8Array(buf);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n data = {\r\n token: $.session.Token,\r\n caseNoteId: caseNoteId,\r\n description: desc,\r\n attachmentType: attachmentType,\r\n attachment: abString,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addCaseNoteAttachment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.deleteCaseNoteAttachmentResult;\r\n if (cb) cb(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function deleteCaseNoteAttachment(caseNoteId, attachmentId) {\r\n data = {\r\n token: $.session.Token,\r\n caseNoteId: caseNoteId,\r\n attachmentId: attachmentId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteCaseNoteAttachment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.deleteCaseNoteAttachmentResult;\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function viewCaseNoteAttachment(attachmentId) {\r\n data = {\r\n attachmentId: attachmentId,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewCaseNoteAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', attachmentId);\r\n attachmentInput.id = 'attachmentId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n // PHRASES\r\n function getCustomPhrases(showAll, cb) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCustomPhrases/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"showAll\":\"' + showAll + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCustomPhrasesResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function insertCustomPhrases(shortcut, phrase, makePublic, cb) {\r\n data = {\r\n token: $.session.Token,\r\n shortcut: shortcut,\r\n phrase: phrase,\r\n makePublic: makePublic,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertCustomPhrase/',\r\n //data: '{\"token\":\"' + $.session.Token + '\", \"shortcut\":\"' + shortcut + '\", \"phrase\":\"' + phrase + '\", \"makePublic\":\"' + makePublic + '\"}',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCustomPhraseResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getConsumersForCNFilter(callback) {\r\n data = {\r\n token: $.session.Token,\r\n caseLoadOnly: $.session.CaseNotesCaseloadRestriction ? 'Y' : 'N',\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumersForCNFilter/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumersForCNFilterResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n\r\n // REPORTS\r\n function generateCNDetailReport(filterValues, callback) {\r\n //data = {\r\n // token: $.session.Token,\r\n // userId: $.session.UserId,\r\n // billerId: filterValues.billerId,\r\n // consumerId: filterValues.consumer,\r\n // consumerName: filterValues.consumerName,\r\n // serviceStartDate: filterValues.serviceDateStart,\r\n // serviceEndDate: filterValues.serviceDateEnd,\r\n // enteredDateStart: filterValues.enteredDateStart,\r\n // enteredDateEnd: filterValues.enteredDateEnd,\r\n // billingCode: filterValues.billingCode,\r\n // location: filterValues.location,\r\n // service: filterValues.service,\r\n // need: filterValues.need,\r\n // contact: filterValues.contact,\r\n // applicationName: $.session.applicationName\r\n //}\r\n if (filterValues.billCodeText == null || filterValues.billCodeText == undefined) {\r\n filterValues.billCodeText = 'All';\r\n }\r\n data = {\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n billerId: filterValues.billerId,\r\n consumerId: filterValues.consumer,\r\n consumerName: filterValues.consumerName,\r\n serviceStartDate: filterValues.serviceDateStart,\r\n serviceEndDate: filterValues.serviceDateEnd,\r\n location: filterValues.location,\r\n originallyEnteredStart: filterValues.enteredDateStart,\r\n originallyEnteredEnd: filterValues.enteredDateEnd,\r\n billingCode: filterValues.billCodeText,\r\n service: filterValues.service,\r\n need: filterValues.need,\r\n contact: filterValues.contact,\r\n applicationName: $.session.applicationName,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/generateCNDetailReport/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.generateCNDetailReportResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function generateCNTimeAnalysisReport(filterValues, callback) {\r\n //string token, string userId, string billerId, string consumerId, string billingCode, string applicationName\r\n if (filterValues.billCodeText == null || filterValues.billCodeText == undefined) {\r\n filterValues.billCodeText = 'All';\r\n }\r\n data = {\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n billerId: filterValues.billerId,\r\n consumerId: filterValues.consumer,\r\n consumerName: filterValues.consumerName,\r\n billingCode: filterValues.billCodeText,\r\n serviceStartDate: filterValues.serviceDateStart,\r\n serviceEndDate: filterValues.serviceDateEnd,\r\n applicationName: $.session.applicationName,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/generateCNTimeAnalysisReport/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.generateCNTimeAnalysisReportResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function checkIfCNReportExists(res, callback) {\r\n data = {\r\n token: $.session.Token,\r\n reportScheduleId: res[0].reportScheduleId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkIfCNReportExists/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.checkIfCNReportExistsResult;\r\n callback(res, data.reportScheduleId);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function viewCaseNoteReport(reportScheduleId) {\r\n data = {\r\n reportScheduleId: reportScheduleId,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewCaseNoteReport/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'reportScheduleId');\r\n attachmentInput.setAttribute('value', reportScheduleId);\r\n attachmentInput.id = 'reportScheduleId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n // OTHER\r\n function getCNPopulateFilterDropdowns(serviceCodeId) {\r\n // Pass % service code on initial load and when service code/bill code == ALL\r\n data = {\r\n token: $.session.Token,\r\n serviceCodeId: serviceCodeId,\r\n };\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCNPopulateFilterDropdowns/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getSSAServiceOptionsDropdown(consumerId, serviceDate, callback) {\r\n if (consumerId == '' || consumerId == undefined) {\r\n consumerId = $.session.caseNoteConsumerId;\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSSAServiceOptionsDropdown/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\", \"serviceDate\":\"' + serviceDate + '\", \"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSSAServiceOptionsDropdownResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getCaseLoadRestriction(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCaseLoadRestriction/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.getCaseLoadRestrictionResult);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getSSABillCodesFromService(serviceName, servicePersonApproved, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSSABillCodesFromService/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceName\":\"' +\r\n serviceName +\r\n '\", \"personApproved\":\"' +\r\n servicePersonApproved +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSSABillCodesFromServiceResult;\r\n callback(res, servicePersonApproved);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getConsumersThatCanHaveMileage,\r\n getBillersListForDropDown,\r\n getFilteredCaseNotesList,\r\n getConsumerSpecificVendors,\r\n getCaseNoteEdit,\r\n getReviewRequiredForCaseManager,\r\n getDropdownData,\r\n getGroupNoteId,\r\n getServiceLocationsForCaseNoteDropDown,\r\n getCaseLoadRestriction,\r\n // saving & updating\r\n caseNoteOverlapCheck,\r\n saveSingleCaseNote,\r\n saveGroupCaseNote,\r\n saveAdditionalGroupCaseNote,\r\n updateGroupNoteValues,\r\n deleteExistingCaseNote,\r\n getCustomPhrases,\r\n insertCustomPhrases,\r\n deleteCaseNoteAttachment,\r\n addCaseNoteAttachment,\r\n viewCaseNoteAttachment,\r\n getCaseNoteAttachmentsList,\r\n getConsumersForCNFilter,\r\n getCNPopulateFilterDropdowns,\r\n getSSAServiceOptionsDropdown,\r\n getSSABillCodesFromService,\r\n generateCNDetailReport,\r\n generateCNTimeAnalysisReport,\r\n checkIfCNReportExists,\r\n viewCaseNoteReport,\r\n };\r\n})();\r\n","var caseNotesTimer = (function() {\r\n function clearTimerOnSave() {\r\n clearInterval($.caseNotes.interval);\r\n clearTimeout($.caseNotes.inactTime);\r\n clearInterval(inactivityTime);\r\n clearTimeout(inactivityTime);\r\n //$.caseNotes.inactTime = 0;\r\n $.caseNotes.documentTimeSeconds = 0;\r\n window.onload = null;\r\n document.onmousemove = null;\r\n document.onkeypress = null;\r\n }\r\n function pauseTimer(fromInactive) {\r\n clearInterval($.caseNotes.interval);\r\n clearTimeout($.caseNotes.inactTime);\r\n clearTimeout($.caseNotes.inactiveTimeForClear);\r\n clearInterval(inactivityTime);\r\n clearTimeout(inactivityTime);\r\n $.caseNotes.inactTime = 0;\r\n window.onload = null;\r\n document.onmousemove = null;\r\n document.onkeypress = null;\r\n $('#cnTimerStart').css('background', '#eee');\r\n $('#minutes').attr('contenteditable', 'true');\r\n $('#minutes').removeClass('unclickableElement');\r\n $('#editcasenotetimer').removeClass('unclickableElement');\r\n if (fromInactive) {\r\n } else {\r\n displayDocTime(); //\r\n }\r\n }\r\n function resetTimer() {\r\n if ($.caseNotes.dontResetInactTimerFlag == false) {\r\n clearTimeout($.caseNotes.inactTime);\r\n clearInterval($.caseNotes.inactTime);\r\n clearInterval($.caseNotes.inactiveTimeForClear);\r\n clearTimeout($.caseNotes.inactiveTimeForClear);\r\n clearTimeout(inactivityTime);\r\n $.caseNotes.inactTime = setTimeout(logout, 120000);\r\n }\r\n }\r\n function logout() {\r\n //alert(\"Your documentation time has been paused.\");\r\n clearInterval(inactivityTime);\r\n clearInterval($.caseNotes.inactTime);\r\n clearInterval($.caseNotes.inactiveTimeForClear);\r\n clearTimeout(inactivityTime);\r\n var answer = confirm('Your documentation time has been paused. Continue timing');\r\n if (answer) {\r\n resetTimer();\r\n } else {\r\n pauseTimer(true);\r\n }\r\n }\r\n var inactivityTime = function() {\r\n $.caseNotes.inactTime = setTimeout(logout, 120000);\r\n $.caseNotes.inactiveTimeForClear = $.caseNotes.inactTime;\r\n var t;\r\n window.onload = resetTimer;\r\n document.onmousemove = resetTimer;\r\n document.onkeypress = resetTimer;\r\n };\r\n function startCaseNoteTimer(state, timeInSeconds) {\r\n $('#minutes').attr('contenteditable', 'false');\r\n $('#editcasenotetimer').addClass('unclickableElement');\r\n $('#minutes').addClass('unclickableElement');\r\n inactivityTime();\r\n var minutesLabel = document.getElementById('minutes');\r\n var totalSeconds = 0;\r\n totalSeconds = $.caseNotes.documentTimeSeconds;\r\n $.caseNotes.interval = setInterval(setTime, 1000);\r\n $('#cnTimerStart').css('background', 'green');\r\n function setTime() {\r\n ++totalSeconds;\r\n $.caseNotes.documentTimeSeconds = totalSeconds;\r\n }\r\n }\r\n\r\n\r\n return {\r\n clearTimerOnSave,\r\n startCaseNoteTimer\r\n }\r\n\r\n\r\n})();","var documentationTimer = (function () {\r\n var runningTime = 0;\r\n var saveTime;\r\n var inactTime;\r\n var timer;\r\n var minutes;\r\n var startBtn;\r\n let timerRunning = false;\r\n\r\n function clearTimer() {\r\n clearTimeout(inactTime);\r\n clearInterval(timer);\r\n window.onload = null;\r\n document.onmousemove = null;\r\n document.onkeypress = null;\r\n runningTime = 0;\r\n minutes = 0;\r\n inactTime = null;\r\n timer = null;\r\n }\r\n\r\n var inactivityTime = function () {\r\n inactTime = setTimeout(inactiveAlert, 120000);\r\n };\r\n\r\n function inactiveAlert() {\r\n //Speech to text, check if speech to text is listening, and reset inactivity if it is\r\n if (document.querySelector('.stt_listening')) {\r\n resetInactivityTimer();\r\n return;\r\n }\r\n clearTimeout(inactTime);\r\n clearInterval(timer);\r\n var answer = confirm('Your documentation time has been paused. Continue timing?');\r\n if (answer) {\r\n resetInactivityTimer();\r\n const start = Date.now() - runningTime * 1000;\r\n timer = setInterval(function () {\r\n const deltaMS = Date.now() - start; // milliseconds elapsed since start\r\n const deltaS = Math.floor(deltaMS / 1000);\r\n runningTime = deltaS;\r\n const newMinutes = Math.round(Math.floor(runningTime / 30) / 2);\r\n if (newMinutes !== minutes) {\r\n minutes = newMinutes;\r\n const minArea = document.getElementById('docTimeMinutesDisplay');\r\n minArea.value = minutes;\r\n }\r\n }, 1000);\r\n } else {\r\n // pauseTimer\r\n note.getTimeFromInactivity(stopTimer());\r\n }\r\n }\r\n\r\n function resetInactivityTimer() {\r\n clearTimeout(inactTime);\r\n inactTime = setTimeout(inactiveAlert, 120000);\r\n }\r\n\r\n function startPercisionTimer(prevTime) {\r\n if (timerRunning) {\r\n clearTimer();\r\n } else {\r\n docTimerMutationObserver();\r\n }\r\n\r\n let start;\r\n timerRunning = true;\r\n startBtn = document.getElementById('cnTimerStart');\r\n startBtn.dataset.toggled = 'true';\r\n\r\n if (prevTime) {\r\n const prevTimeMS = parseInt(prevTime) * 1000; // convert to ms\r\n start = Date.now() - prevTimeMS;\r\n } else {\r\n start = Date.now();\r\n }\r\n\r\n inactivityTime();\r\n\r\n timer = setInterval(function () {\r\n const deltaMS = Date.now() - start; // milliseconds elapsed since startm\r\n const deltaS = Math.floor(deltaMS / 1000);\r\n runningTime = deltaS;\r\n const newMinutes = Math.round(Math.floor(runningTime / 30) / 2);\r\n if (newMinutes !== minutes) {\r\n minutes = newMinutes;\r\n const minArea = document.getElementById('docTimeMinutesDisplay');\r\n minArea.value = minutes;\r\n }\r\n }, 1000);\r\n\r\n window.onload = resetInactivityTimer;\r\n document.onmousemove = resetInactivityTimer;\r\n document.onkeypress = resetInactivityTimer;\r\n }\r\n\r\n function stopTimer() {\r\n if (docTimerMutationObserver.disconnect) docTimerMutationObserver.disconnect();\r\n timerRunning = false;\r\n startBtn = document.getElementById('cnTimerStart');\r\n startBtn.dataset.toggled = 'false';\r\n saveTime = runningTime;\r\n clearTimer();\r\n return saveTime;\r\n }\r\n\r\n function docTimerMutationObserver() {\r\n const observNode = document.getElementById('actioncenter');\r\n const config = { attributes: true };\r\n const callback = function (mutationList, observer) {\r\n for (let mutation of mutationList) {\r\n if (mutation.type === 'attributes') {\r\n if (mutation.attributeName === 'data-active-section') {\r\n observer.disconnect();\r\n clearTimer();\r\n timerRunning = false;\r\n }\r\n }\r\n }\r\n };\r\n const observer = new MutationObserver(callback);\r\n\r\n function disconnect() {\r\n observer.disconnect();\r\n }\r\n\r\n observer.observe(observNode, config);\r\n docTimerMutationObserver.disconnect = disconnect;\r\n }\r\n\r\n return {\r\n startTimer: startPercisionTimer,\r\n stopTimer,\r\n };\r\n})();\r\n","const cnEditPhrases = (function() {\r\n //DOM\r\n let cardBody;\r\n let shortcutInput;\r\n let phraseInput;\r\n let pubCheckbox;\r\n let saveBtn;\r\n\r\n function buildCard() {\r\n let cardHeader = document.createElement(\"div\");\r\n cardHeader.classList.add(\"card__header\");\r\n cardHeader.innerHTML = \"Edit My Phrases\";\r\n\r\n cardBody = document.createElement(\"div\");\r\n cardBody.classList.add(\"card__body\");\r\n\r\n let card = document.createElement(\"div\");\r\n card.classList.add(\"card\", \"editPhrases\");\r\n\r\n card.appendChild(cardHeader);\r\n card.appendChild(cardBody);\r\n DOM.ACTIONCENTER.appendChild(card);\r\n }\r\n\r\n function buildInputs() {\r\n shortcutInput = input.build({\r\n label: \"Shortcut\",\r\n style: \"secondary\",\r\n charLimit: 10\r\n });\r\n phraseInput = input.build({\r\n label: \"Phrase\",\r\n type: \"textarea\",\r\n style: \"secondary\"\r\n });\r\n pubCheckbox = input.buildCheckbox({\r\n text: \"Publicly Available\"\r\n });\r\n saveBtn = button.build({\r\n id: \"phraseEditSaveBtn\",\r\n text: \"Save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n callback: savePhrase\r\n });\r\n saveBtn.classList.add(\"disabled\")\r\n\r\n let cancelBtn = button.build({\r\n id: \"phraseEditCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: caseNotes.load\r\n });\r\n\r\n shortcutInput.classList.add(\"error\")\r\n phraseInput.classList.add(\"error\")\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n\r\n cardBody.appendChild(shortcutInput);\r\n cardBody.appendChild(phraseInput);\r\n cardBody.appendChild(pubCheckbox);\r\n cardBody.appendChild(btnWrap);\r\n eventListeners()\r\n }\r\n\r\n function eventListeners() {\r\n shortcutInput.addEventListener(\"keyup\", event => {\r\n if (event.target.value.length > 10 || event.target.value.length === 0) {\r\n shortcutInput.classList.add(\"error\")\r\n } else shortcutInput.classList.remove(\"error\")\r\n checkForError()\r\n })\r\n shortcutInput.addEventListener(\"paste\", event => {\r\n if ((event.target.value.length + event.clipboardData.getData(\"text/plain\").length) > 10){\r\n shortcutInput.classList.add(\"error\")\r\n } else shortcutInput.classList.remove(\"error\")\r\n checkForError()\r\n })\r\n phraseInput.addEventListener(\"keyup\", event => {\r\n if (event.target.value.length === 0) {\r\n phraseInput.classList.add(\"error\")\r\n } else phraseInput.classList.remove(\"error\")\r\n checkForError()\r\n })\r\n }\r\n\r\n function checkForError() {\r\n errors = document.querySelectorAll(\".error\");\r\n if (errors.length !== 0) {\r\n saveBtn.classList.add(\"disabled\")\r\n } else saveBtn.classList.remove(\"disabled\")\r\n }\r\n\r\n function savePhrase() {\r\n pendingSave.show(\"Saving Phrase...\")\r\n \r\n shortcut = UTIL.removeUnsavableNoteText(shortcutInput.querySelector(\".input-field__input\").value)\r\n phrase = UTIL.removeUnsavableNoteText(phraseInput.querySelector(\".input-field__input\").value)\r\n makePublic = pubCheckbox.getElementsByTagName(\"input\")[0].checked ? \"Y\" : \"N\";\r\n\r\n caseNotesAjax.insertCustomPhrases(shortcut, phrase, makePublic, res => {\r\n pendingSave.fulfill();\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n caseNotes.load() \r\n }, 1000);\r\n })\r\n }\r\n\r\n function init() {\r\n DOM.clearActionCenter();\r\n buildCard();\r\n buildInputs();\r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();\r\n","const CFEditAccount = (() => {\r\n //Inputs\r\n let CFConsumerBtns;\r\n let consumerRow;\r\n let consumerElement;\r\n var selectedConsumers;\r\n var selectedConsumersName;\r\n var selectedConsumersId;\r\n\r\n //filter\r\n let accountId = '0';\r\n let BtnName;\r\n let page;\r\n let load;\r\n let IsDisabledAccount = false;\r\n let accountPermission;\r\n let tempAccountPer;\r\n let backPage;\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n page = 'Update';\r\n backPage = 1;\r\n load = 1;\r\n account = '';\r\n accountId = '0';\r\n await loadCFEditLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n async function loadCFEditFromAccountRegister(Consumers) {\r\n setActiveModuleAttribute('CFEditAccount');\r\n backPage = 2;\r\n DOM.clearActionCenter();\r\n selectedConsumers = Consumers;\r\n page = 'Update';\r\n load = 1;\r\n await loadCFEditLanding();\r\n DOM.toggleNavLayout();\r\n }\r\n\r\n // Build OOD Module Landing Page\r\n async function loadCFEditLanding() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n\r\n landingPage = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n getaccountPermission();\r\n selectedConsumersId = selectedConsumers[selectedConsumers.length - 1].id;\r\n const name = (\r\n await ConsumerFinancesAjax.getConsumerNameByID({\r\n token: $.session.Token,\r\n consumerId: selectedConsumersId,\r\n })\r\n ).getConsumerNameByIDResult;\r\n\r\n selectedConsumersName = name[selectedConsumers.length - 1].FullName;\r\n\r\n const resultAccount = await ConsumerFinancesAjax.getEditAccountAsync(selectedConsumersId, accountPermission);\r\n const { getEditAccountResult } = resultAccount;\r\n if (getEditAccountResult.length > 0 && load == 1) {\r\n account = getEditAccountResult[0].accountName;\r\n accountId = getEditAccountResult[0].accountId;\r\n }\r\n\r\n if (page == 'Update') {\r\n const topButton = buildHeaderButton();\r\n landingPage.appendChild(topButton);\r\n border = document.createElement('div');\r\n border.classList.add('borderLine');\r\n landingPage.appendChild(LineBr);\r\n landingPage.appendChild(LineBr);\r\n landingPage.appendChild(border);\r\n landingPage.appendChild(LineBr);\r\n }\r\n\r\n const importantAccountForm = await buildAccountForm();\r\n landingPage.appendChild(importantAccountForm);\r\n populateAccountDropdown();\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n // build display of Account and button\r\n function buildHeaderButton() {\r\n consumerElement = document.createElement('div');\r\n consumerRow = document.createElement('div');\r\n consumerRow.classList.add('consumerHeader');\r\n CFConsumerBtns = buildButtonBar();\r\n consumerRow.appendChild(CFConsumerBtns);\r\n consumerElement.appendChild(consumerRow);\r\n return consumerElement;\r\n }\r\n\r\n // build display of \"New Account\"\r\n function buildButtonBar() {\r\n const buttonBar = document.createElement('div');\r\n buttonBar.classList.add('OODbuttonBar');\r\n buttonBar.style.maxHeight = '50px';\r\n buttonBar.style.minWidth = '100%';\r\n\r\n const dropdownButtonBar = document.createElement('div');\r\n const entryButtonBar = document.createElement('div');\r\n dropdownButtonBar.style.width = '40%';\r\n entryButtonBar.style.width = '32%';\r\n\r\n accountDropdown = dropdown.build({\r\n label: 'Accounts:',\r\n dropdownId: 'accountDropdown',\r\n });\r\n\r\n accountDropdown.addEventListener('change', event => {\r\n accountId = event.target.value;\r\n account = event.target.options[event.target.selectedIndex].id;\r\n page = 'Update';\r\n load = 2;\r\n loadCFEditLanding();\r\n });\r\n\r\n const entryBtn = button.build({\r\n text: 'ADD ACCOUNT',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'newEntryBtn',\r\n readonly: $.session.CFInsertAccounts,\r\n callback: async () => {\r\n if (!entryBtn.classList.contains('disabled')) {\r\n page = 'Add';\r\n loadCFEditLanding();\r\n }\r\n },\r\n });\r\n if ($.session.CFInsertAccounts) {\r\n entryBtn.classList.remove('disabled');\r\n } else {\r\n entryBtn.classList.add('disabled');\r\n }\r\n entryBtn.style.height = '50px';\r\n entryBtn.style.minWidth = '100%';\r\n accountDropdown.style.minWidth = '100%';\r\n dropdownButtonBar.appendChild(accountDropdown);\r\n entryButtonBar.appendChild(entryBtn);\r\n entryButtonBar.style.marginLeft = '10%';\r\n buttonBar.appendChild(dropdownButtonBar);\r\n buttonBar.appendChild(entryButtonBar);\r\n return buttonBar;\r\n }\r\n\r\n async function buildAccountForm() {\r\n disabledEnabledAccounts();\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n\r\n name = '';\r\n number = '';\r\n type = '';\r\n status = '';\r\n classofAccount = null;\r\n dateClosed = null;\r\n lastReconciled = '';\r\n openingBalance = '';\r\n balance = '';\r\n description = '';\r\n dateOpened = null;\r\n\r\n nameTemp = '';\r\n numberTemp = '';\r\n typeTemp = '';\r\n statusTemp = '';\r\n classofAccountTemp = '';\r\n dateOpenedTemp = '';\r\n dateClosedTemp = '';\r\n openingBalanceTemp = '';\r\n descriptionTemp = '';\r\n\r\n if (page == 'Update') {\r\n if (accountId != '' && accountId != '0') {\r\n const result = await ConsumerFinancesAjax.getEditAccountInfoByIdAsync(accountId);\r\n const { getEditAccountInfoByIdResult } = result;\r\n name = getEditAccountInfoByIdResult[0].name;\r\n number = getEditAccountInfoByIdResult[0].number;\r\n type = getEditAccountInfoByIdResult[0].type;\r\n status = getEditAccountInfoByIdResult[0].status;\r\n classofAccount = getEditAccountInfoByIdResult[0].classofAccount;\r\n dateOpened =\r\n getEditAccountInfoByIdResult[0].dateOpened == ''\r\n ? null\r\n : moment(getEditAccountInfoByIdResult[0].dateOpened).format('YYYY-MM-DD');\r\n dateClosed =\r\n getEditAccountInfoByIdResult[0].dateClosed == ''\r\n ? null\r\n : moment(getEditAccountInfoByIdResult[0].dateClosed).format('YYYY-MM-DD');\r\n lastReconciled =\r\n getEditAccountInfoByIdResult[0].lastReconciled == ''\r\n ? null\r\n : moment(getEditAccountInfoByIdResult[0].lastReconciled).format('YYYY-MM-DD');\r\n openingBalance = getEditAccountInfoByIdResult[0].openingBalance;\r\n balance = getEditAccountInfoByIdResult[0].balance;\r\n description = getEditAccountInfoByIdResult[0].description;\r\n } else {\r\n account = '';\r\n }\r\n BtnName = 'UPDATE';\r\n } else {\r\n BtnName = 'SAVE';\r\n dateOpened = UTIL.getTodaysDate();\r\n accountId = '0';\r\n account = '';\r\n }\r\n\r\n inputName = input.build({\r\n id: 'inputName',\r\n type: 'text',\r\n label: 'Name',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: name ? name : '',\r\n });\r\n inputNumber = input.build({\r\n id: 'inputNumber',\r\n type: 'number',\r\n label: 'Number',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: number ? number : '',\r\n });\r\n typeDropdown = dropdown.build({\r\n id: 'typeDropdown',\r\n label: 'Type',\r\n dropdownId: 'typeDropdown',\r\n readonly: IsDisabledAccount,\r\n value: type ? type : '',\r\n });\r\n statusDropdown = dropdown.build({\r\n id: 'statusDropdown',\r\n label: 'Status',\r\n dropdownId: 'statusDropdown',\r\n readonly: IsDisabledAccount,\r\n value: status ? status : '',\r\n });\r\n classDropdown = dropdown.build({\r\n id: 'classDropdown',\r\n label: 'Class',\r\n dropdownId: 'classDropdown',\r\n readonly: IsDisabledAccount,\r\n value: classofAccount ? classofAccount : '',\r\n });\r\n opendDate = input.build({\r\n id: 'opendDate',\r\n type: 'date',\r\n label: 'Date Opened',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: dateOpened ? dateOpened : '',\r\n });\r\n closeDate = input.build({\r\n id: 'closeDate',\r\n type: 'date',\r\n label: 'Date Closed',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: dateClosed ? dateClosed : '',\r\n });\r\n lastReconciledDate = input.build({\r\n id: 'lastReconciledDate',\r\n type: 'date',\r\n label: 'Last Reconciled',\r\n style: 'secondary',\r\n readonly: true,\r\n value: lastReconciled ? lastReconciled : '',\r\n });\r\n inputOpeningBal = input.build({\r\n id: 'inputOpeningBal',\r\n type: 'text',\r\n label: 'Opening Balance',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: openingBalance ? '$' + openingBalance : '',\r\n });\r\n inputBal = input.build({\r\n id: 'inputBal',\r\n type: 'text',\r\n label: 'Balance',\r\n style: 'secondary',\r\n readonly: true,\r\n value: balance ? '$' + balance : '',\r\n });\r\n\r\n inputDesc = input.build({\r\n id: 'inputDesc',\r\n type: 'text',\r\n label: 'Description',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: description ? description : '',\r\n });\r\n\r\n // button\r\n SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n readonly: IsDisabledAccount,\r\n callback: async () => {\r\n if (!SAVE_BTN.classList.contains('disabled')) {\r\n SAVE_BTN.classList.add('disabled');\r\n await saveUpdateAccount();\r\n }\r\n },\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => {\r\n if (backPage == 1) cancleAccount();\r\n else {\r\n ConsumerFinances.backFromConsumerFinanceEditAccount(selectedConsumers);\r\n }\r\n },\r\n });\r\n\r\n const column1 = document.createElement('div');\r\n column1.classList.add('col-1');\r\n const addNewCard = document.createElement('div');\r\n addNewCard.classList.add('card');\r\n const addNewCardBody = document.createElement('div');\r\n addNewCardBody.classList.add('card__body');\r\n if (page == 'Add') {\r\n addNewCard.innerHTML = `
${selectedConsumersName}
`;\r\n } else {\r\n addNewCard.innerHTML = `
${selectedConsumersName}
Account : ${account}
`;\r\n }\r\n\r\n addNewCard.appendChild(addNewCardBody);\r\n column1.appendChild(addNewCard);\r\n\r\n var drWrap = document.createElement('div');\r\n drWrap.classList.add('editAccountDTWrap');\r\n inputName.classList.add('width23Per');\r\n drWrap.appendChild(inputName);\r\n inputNumber.classList.add('width23Per');\r\n drWrap.appendChild(inputNumber);\r\n typeDropdown.classList.add('width16Per');\r\n drWrap.appendChild(typeDropdown);\r\n statusDropdown.classList.add('width16Per');\r\n drWrap.appendChild(statusDropdown);\r\n classDropdown.classList.add('width16Per');\r\n drWrap.appendChild(classDropdown);\r\n addNewCardBody.appendChild(drWrap);\r\n\r\n var drWrap1 = document.createElement('div');\r\n drWrap1.classList.add('editAccountDTWrap');\r\n drWrap1.classList.add('width50Per');\r\n opendDate.classList.add('width32Per');\r\n drWrap1.appendChild(opendDate);\r\n inputOpeningBal.classList.add('width32Per');\r\n drWrap1.appendChild(inputOpeningBal);\r\n closeDate.classList.add('width32Per');\r\n drWrap1.appendChild(closeDate);\r\n addNewCardBody.appendChild(drWrap1);\r\n\r\n var drWrap2 = document.createElement('div');\r\n drWrap2.classList.add('editAccountDTWrap');\r\n drWrap2.classList.add('width33Per');\r\n\r\n lastReconciledDate.classList.add('width50Per');\r\n drWrap2.appendChild(lastReconciledDate);\r\n inputBal.classList.add('width50Per');\r\n drWrap2.appendChild(inputBal);\r\n //addNewCardBody.appendChild(drWrap2); //Due to new requirenment hide reconciled and opening balance\r\n\r\n var drWrap3 = document.createElement('div');\r\n drWrap3.classList.add('editAccountDTWrap');\r\n inputDesc.classList.add('width50Per');\r\n drWrap3.appendChild(inputDesc);\r\n addNewCardBody.appendChild(drWrap3);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('editAccountBtnWrap');\r\n btnWrap.style.marginLeft = '25%';\r\n btnWrap.style.width = '50%';\r\n\r\n SAVE_BTN.style.width = '52%';\r\n btnWrap.appendChild(SAVE_BTN);\r\n\r\n CANCEL_BTN.style.width = '52%';\r\n CANCEL_BTN.style.marginLeft = '5%';\r\n btnWrap.appendChild(CANCEL_BTN);\r\n addNewCardBody.appendChild(btnWrap);\r\n\r\n employeeInfoDiv.appendChild(column1);\r\n populateDropdown();\r\n eventListeners();\r\n\r\n checkRequiredFieldsOfAccountInfo(name, type, status, dateOpened, dateClosed);\r\n return employeeInfoDiv;\r\n }\r\n\r\n function disabledEnabledAccounts() {\r\n if ($.session.CFUpdateEditAccounts && page == 'Update') {\r\n IsDisabledAccount = false;\r\n } else if ($.session.CFInsertAccounts && page == 'Add') {\r\n IsDisabledAccount = false;\r\n } else {\r\n IsDisabledAccount = true;\r\n }\r\n }\r\n // Populate the Account DDL\r\n async function populateAccountDropdown() {\r\n const { getEditAccountResult: accounts } = await ConsumerFinancesAjax.getEditAccountAsync(\r\n selectedConsumersId,\r\n accountPermission,\r\n );\r\n\r\n let dataAccount = accounts.map(account => ({\r\n id: account.accountName,\r\n value: account.accountId,\r\n text: account.accountName + ' - $' + (account.totalBalance == '' ? '0.00' : account.totalBalance),\r\n }));\r\n dropdown.populate('accountDropdown', dataAccount, accountId);\r\n }\r\n\r\n async function populateDropdown() {\r\n const { getAccountClassResult: classAccount } = await ConsumerFinancesAjax.getAccountClassAsync();\r\n let dataClass = classAccount.map(accountClass => ({\r\n id: accountClass.SystemClass,\r\n value: accountClass.accountClass,\r\n text: accountClass.accountClass,\r\n }));\r\n dataClass.unshift({ id: null, value: '', text: '' }); //ADD Blank value\r\n dropdown.populate('classDropdown', dataClass, classofAccount);\r\n\r\n const typeData = [\r\n { id: 1, value: 'A', text: 'Asset ' },\r\n { id: 2, value: 'L', text: 'Liability' },\r\n ];\r\n typeData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate('typeDropdown', typeData, type);\r\n\r\n const statusData = [\r\n { id: 1, value: 'O', text: 'Open' },\r\n { id: 2, value: 'I', text: 'Inactive' },\r\n { id: 3, value: 'C', text: 'Closed' },\r\n ];\r\n statusData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate('statusDropdown', statusData, status);\r\n }\r\n\r\n function eventListeners() {\r\n inputName.addEventListener('input', event => {\r\n nameTemp = 'Changed';\r\n name = event.target.value.trim();\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n inputNumber.addEventListener('input', event => {\r\n numberTemp = 'Changed';\r\n number = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n opendDate.addEventListener('input', event => {\r\n dateOpenedTemp = 'Changed';\r\n dateOpened = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n closeDate.addEventListener('input', event => {\r\n dateClosedTemp = 'Changed';\r\n dateClosed = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n inputDesc.addEventListener('input', event => {\r\n descriptionTemp = 'Changed';\r\n description = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n inputOpeningBal.addEventListener('input', event => {\r\n let minAmount = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(minAmount) && minAmount != '') {\r\n document.getElementById('inputOpeningBal').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n } else if (\r\n minAmount.includes('.') &&\r\n (minAmount.match(/\\./g).length > 1 || minAmount.toString().split('.')[1].length > 2)\r\n ) {\r\n document.getElementById('inputOpeningBal').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n }\r\n openingBalance = minAmount.replace('$', '');\r\n openingBalanceTemp = 'Changed';\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n typeDropdown.addEventListener('change', event => {\r\n typeTemp = 'Changed';\r\n type = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n statusDropdown.addEventListener('change', event => {\r\n statusTemp = 'Changed';\r\n status = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n classDropdown.addEventListener('change', event => {\r\n classofAccountTemp = 'Changed';\r\n classofAccount = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n }\r\n\r\n function getRequiredFieldsOfAccountInfo() {\r\n var openDateVal = opendDate.querySelector('#opendDate');\r\n var closeDateVal = closeDate.querySelector('#closeDate');\r\n var nameVal = inputName.querySelector('#inputName');\r\n var typeVal = typeDropdown.querySelector('#typeDropdown');\r\n var statusVal = statusDropdown.querySelector('#statusDropdown');\r\n checkRequiredFieldsOfAccountInfo(\r\n nameVal.value,\r\n typeVal.value,\r\n statusVal.value,\r\n openDateVal.value,\r\n closeDateVal.value,\r\n );\r\n }\r\n\r\n function checkRequiredFieldsOfAccountInfo(nameVal, typeVal, statusVal, openDateVal, closeDateVal) {\r\n if (nameVal.trim() === '') {\r\n inputName.classList.add('error');\r\n } else {\r\n inputName.classList.remove('error');\r\n }\r\n\r\n if (typeVal === '') {\r\n typeDropdown.classList.add('error');\r\n } else {\r\n typeDropdown.classList.remove('error');\r\n }\r\n\r\n if (statusVal === '') {\r\n statusDropdown.classList.add('error');\r\n } else {\r\n statusDropdown.classList.remove('error');\r\n }\r\n\r\n if (openDateVal === '') {\r\n opendDate.classList.add('error');\r\n } else {\r\n opendDate.classList.remove('error');\r\n }\r\n\r\n if (closeDateVal != null && closeDateVal != '' && openDateVal > closeDateVal) {\r\n closeDate.classList.add('error');\r\n } else {\r\n closeDate.classList.remove('error');\r\n }\r\n setBtnStatusOfAccountInfo();\r\n }\r\n\r\n function setBtnStatusOfAccountInfo() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n SAVE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n if (\r\n nameTemp != '' ||\r\n numberTemp != '' ||\r\n typeTemp != '' ||\r\n statusTemp != '' ||\r\n classofAccountTemp != '' ||\r\n dateOpenedTemp != '' ||\r\n dateClosedTemp != '' ||\r\n openingBalanceTemp != '' ||\r\n descriptionTemp != ''\r\n ) {\r\n if (accountId == '0' && page == 'Update') {\r\n SAVE_BTN.classList.add('disabled');\r\n } else {\r\n SAVE_BTN.classList.remove('disabled');\r\n }\r\n } else {\r\n SAVE_BTN.classList.add('disabled');\r\n }\r\n }\r\n }\r\n\r\n function cancleAccount() {\r\n if (page == 'Add') {\r\n page = 'Update';\r\n load = 1;\r\n loadCFEditLanding();\r\n } else {\r\n roster2.clearSelectedConsumers();\r\n roster2.clearActiveConsumers();\r\n CFEditAccount.init();\r\n }\r\n }\r\n\r\n async function saveUpdateAccount() {\r\n if (page == 'Add') {\r\n accountId = '0';\r\n }\r\n\r\n if (dateClosed == '') dateClosed = null;\r\n const result = await ConsumerFinancesAjax.insertEditRegisterAccountAsync(\r\n selectedConsumersId,\r\n accountId,\r\n name,\r\n number == '' ? null : number,\r\n type,\r\n status,\r\n classofAccount == '' ? null : classofAccount,\r\n dateOpened,\r\n dateClosed,\r\n openingBalance,\r\n description == '' ? null : description,\r\n );\r\n const { insertEditRegisterAccountResult } = result;\r\n if (insertEditRegisterAccountResult.accountId != null) {\r\n page = 'Update';\r\n loadCFEditLanding();\r\n }\r\n }\r\n\r\n function init() {\r\n setActiveModuleAttribute('CFEditAccount');\r\n DOM.clearActionCenter();\r\n let defaultCFLocation = defaults.getLocation('moneyManagement');\r\n if (defaultCFLocation === '') {\r\n defaults.setLocation('moneyManagement', 0);\r\n defaultCFLocation = '0';\r\n }\r\n roster2.miniRosterinit(\r\n {\r\n locationId: defaultCFLocation,\r\n locationName: '',\r\n },\r\n {\r\n hideDate: true,\r\n },\r\n );\r\n\r\n roster2.showMiniRoster();\r\n }\r\n\r\n function getaccountPermission() {\r\n accountPermission = '';\r\n tempAccountPer = [];\r\n if ($.session.CFViewChecking) tempAccountPer.push('Checking');\r\n\r\n if ($.session.CFViewCraditCard) {\r\n tempAccountPer.push('Credit Card');\r\n }\r\n\r\n if ($.session.CFViewFoodStamp) {\r\n tempAccountPer.push('Food Stamps');\r\n }\r\n\r\n if ($.session.CFViewPettyCash) {\r\n tempAccountPer.push('Petty Cash');\r\n }\r\n\r\n if ($.session.CFViewShaving) {\r\n tempAccountPer.push('Savings');\r\n }\r\n\r\n if ($.session.CFViewChristmasClub) {\r\n tempAccountPer.push('Christmas Club');\r\n }\r\n if ($.session.CFViewSystem20183A) {\r\n tempAccountPer.push('System 2018.3A');\r\n }\r\n if ($.session.CFViewSystem20183) {\r\n tempAccountPer.push('System 2018.3');\r\n }\r\n if ($.session.CFViewOhioEBT) {\r\n tempAccountPer.push('Ohio EBT');\r\n }\r\n if ($.session.CFViewViewFoodStampDebitCardEBT) {\r\n tempAccountPer.push('Food Stamp Debit Card EBT');\r\n }\r\n\r\n if (tempAccountPer.length > 0) {\r\n accountPermission = tempAccountPer.toString();\r\n } else accountPermission = '';\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadCFEditLanding,\r\n loadCFEditFromAccountRegister,\r\n };\r\n})();\r\n","const consumerFinanceAttachment = (() => {\r\n let attachments = [];\r\n class ConsumerFinanceAttachment {\r\n\r\n constructor(header, regId, IsDisabled, attachID) {\r\n this.attachmentsForQuestion = header;\r\n this.regId = regId;\r\n this.IsDisabledBtn = IsDisabled;\r\n this.attachID = attachID;\r\n }\r\n\r\n buildAttachmentButton() {\r\n const attachmentButton = button.build({\r\n id: `attachConsumer`,\r\n text: `ATTACHMENTS (${this.attachmentsForQuestion.length})`,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n this.attachmentPopup();\r\n },\r\n });\r\n\r\n attachmentButton.classList.add('attachmentBtn');\r\n if (this.attachmentsForQuestion.length > 0)\r\n attachmentButton.classList.add('hasAttachments');\r\n\r\n return attachmentButton;\r\n }\r\n\r\n attachmentPopup() {\r\n const regId = this.regId;\r\n const attachmentsForQuestion = this.attachmentsForQuestion;\r\n const attachmentsToDelete = [];\r\n const attachmentsAdded = [];\r\n\r\n // Adds attachments to the existing attachments section in popup\r\n function populateExistingAttachments() {\r\n\r\n const header = document.createElement('h5');\r\n header.innerText = 'Existing Attachments:';\r\n reviewAttachmentList.appendChild(header);\r\n\r\n attachmentsForQuestion.forEach(attachment => {\r\n const fileContainer = document.createElement('div');\r\n fileContainer.classList.add('reviewAttachmentContainer');\r\n fileContainer.setAttribute('id', attachment.attachmentID);\r\n fileContainer.setAttribute('delete', false);\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n callback: event => addRemoveAttachmentToDeleteList(event.target.parentElement),\r\n });\r\n const file = document.createElement('p');\r\n file.innerText = attachment.description;\r\n fileContainer.appendChild(removeAttachmentBtn);\r\n fileContainer.appendChild(file);\r\n file.addEventListener('click', event => {\r\n const attachmentId = event.target.parentElement.id;\r\n ConsumerFinancesAjax.viewCFAttachment(attachmentId, '');\r\n });\r\n reviewAttachmentList.appendChild(fileContainer);\r\n });\r\n }\r\n // CB for clicking the delete button on attachments in existing attachment section\r\n function addRemoveAttachmentToDeleteList(attachmentElement) {\r\n\r\n const currentDeleteStatus = attachmentElement.getAttribute('delete');\r\n const attachmentId = attachmentElement.getAttribute('id');\r\n switch (currentDeleteStatus) {\r\n case 'false':\r\n attachmentElement.classList.add('deleteAttachment');\r\n attachmentsToDelete.push(attachmentId);\r\n attachmentElement.setAttribute('delete', true);\r\n break;\r\n case 'true':\r\n attachmentElement.classList.remove('deleteAttachment');\r\n attachmentsToDelete = attachmentsToDelete.filter(\r\n attachment => attachment !== attachmentId,\r\n );\r\n attachmentElement.setAttribute('delete', false);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n // checks file is a valid type\r\n function fileValidation(target) {\r\n const fileType = target.files[0].type;\r\n const reFileTypeTest = new RegExp('(audio/)|(video/)');\r\n if (reFileTypeTest.test(fileType)) {\r\n alert('Anywhere currently does not accept audio or video files');\r\n target.value = '';\r\n return false;\r\n }\r\n }\r\n // CB for clicking the add attachment button. doesn't do anything if they haven't yet chosen an\r\n // attachment for existing add attachment input.\r\n function addNewAttachment() {\r\n\r\n function addRemoveAttachmentEventListener(btn) {\r\n btn.addEventListener('click', event => {\r\n const fileInput = event.target.parentElement.getElementsByTagName('input')[0];\r\n if (fileInput !== '') {\r\n event.target.parentElement.remove();\r\n }\r\n });\r\n }\r\n // Don't add new attachment input if the last attachment is empty\r\n const form = document.getElementById('attachmentForm');\r\n const lastAttachment = form.lastChild;\r\n if (lastAttachment && lastAttachment.querySelector('.attachmentInput').value === '') {\r\n return;\r\n }\r\n const newFileContainer = attachmentContainer.cloneNode(true);\r\n newFileContainer.getElementsByTagName('input')[0].value = ''; //remove file for new container\r\n newFileContainer\r\n .getElementsByTagName('input')[0]\r\n .addEventListener('change', evt => fileValidation(evt.target));\r\n attachmentList.appendChild(newFileContainer);\r\n addRemoveAttachmentEventListener(newFileContainer.firstElementChild);\r\n attachmentContainer = newFileContainer;\r\n }\r\n\r\n // CB for Done Button\r\n async function saveAction() {\r\n async function saveAttachmentsToDB() {\r\n const attachmentSaveArray = [];\r\n if (attachmentArray.length === 0) return;\r\n\r\n attachmentArray.forEach(attachment => {\r\n const saveProm = new Promise(resolve => {\r\n const saveData = {\r\n token: $.session.Token,\r\n attachmentType: attachment.type,\r\n attachment: attachment.arrayBuffer,\r\n regId: regId,\r\n };\r\n\r\n ConsumerFinancesAjax.addCFAttachment(saveData).then(res => resolve(res));\r\n });\r\n attachmentSaveArray.push(saveProm);\r\n });\r\n\r\n const attSaveRes = await Promise.all(attachmentSaveArray);\r\n let count = 0;\r\n attSaveRes.forEach(att => {\r\n attachmentsAdded.push(att);\r\n });\r\n attachmentArray.forEach(att => {\r\n att.attachmentID = attSaveRes[count];\r\n attachments.push(att);\r\n count++;\r\n });\r\n\r\n }\r\n // DELETE ATTACHMENTS\r\n attachmentsToDelete.forEach(attachment => {\r\n ConsumerFinancesAjax.deleteCFAttachment(attachment);\r\n });\r\n\r\n // ADD ATTACHMENTS\r\n const attachmentInputs = document.querySelectorAll('.attachmentInput');\r\n if (attachmentInputs.length === 0) {\r\n console.log('no attachments to add');\r\n return;\r\n }\r\n\r\n let attachmentProms = [];\r\n let attachmentArray = [];\r\n attachmentInputs.forEach(inputElement => {\r\n if (inputElement.value === '') {\r\n return;\r\n }\r\n const attPromise = new Promise(resolve => {\r\n const attachmentObj = {};\r\n const attachmentFile = inputElement.files.item(0);\r\n const attachmentName = attachmentFile.name;\r\n const attachmentType = attachmentFile.name.split('.').pop();\r\n attachmentObj.description = attachmentName;\r\n attachmentObj.type = attachmentType;\r\n attachmentObj.attachmentID = 0;\r\n attachmentObj.registerID = 0;\r\n // new Response(file) was added for Safari compatibility\r\n new Response(attachmentFile).arrayBuffer().then(res => {\r\n attachmentObj.arrayBuffer = res;\r\n attachmentArray.push(attachmentObj);\r\n resolve();\r\n });\r\n });\r\n\r\n attachmentProms.push(attPromise);\r\n });\r\n\r\n await Promise.all(attachmentProms);\r\n await saveAttachmentsToDB();\r\n\r\n POPUP.hide(popup);\r\n //NewEntryCF.buildNewEntryForm(regId, attachmentsForQuestion, attachmentsAdded) \r\n }\r\n //===========================================\r\n //===========================================\r\n\r\n const popup = POPUP.build({\r\n header: this.header,\r\n id: 'planAttachmentPopup',\r\n });\r\n\r\n const addAttachmentBtn = button.build({\r\n text: 'Add Attachment',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'add',\r\n callback: () => {\r\n if (!addAttachmentBtn.classList.contains('disabled')) {\r\n addNewAttachment(); \r\n }\r\n },\r\n });\r\n addAttachmentBtn.type = 'button';\r\n\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n });\r\n removeAttachmentBtn.type = 'button';\r\n\r\n const saveBtn = button.build({\r\n id: 'attachmentSave',\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n try {\r\n if (!saveBtn.classList.contains('disabled')) {\r\n await saveAction();\r\n await this.cleanAttachmentLists(attachmentsAdded, attachmentsToDelete);\r\n } \r\n } catch (error) {\r\n pendingSave.reject('Error saving attachment changes');\r\n setTimeout(() => {\r\n failSave.hide(false);\r\n popup.style.removeProperty('display');\r\n }, 2000);\r\n console.error(error);\r\n }\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n id: 'attachmentCancel',\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n if (this.IsDisabledBtn == true) {\r\n removeAttachmentBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n addAttachmentBtn.classList.add('disabled');\r\n }\r\n else {\r\n removeAttachmentBtn.classList.remove('disabled');\r\n saveBtn.classList.remove('disabled');\r\n addAttachmentBtn.classList.remove('disabled');\r\n }\r\n\r\n const reviewAttachmentList = document.createElement('div');\r\n reviewAttachmentList.classList.add('reviewAttachmentList');\r\n const newAttachmentList = document.createElement('div');\r\n newAttachmentList.classList.add('newAttachmentList');\r\n const newAttachmentsHeader = document.createElement('h5');\r\n newAttachmentsHeader.innerText = 'Attachments to be added:';\r\n newAttachmentList.appendChild(newAttachmentsHeader);\r\n\r\n const attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.classList.add('input-field__input', 'attachmentInput');\r\n attachmentInput.addEventListener('change', evt => fileValidation(evt.target));\r\n\r\n let attachmentContainer = document.createElement('div');\r\n attachmentContainer.classList.add('attachmentContainer');\r\n const attachmentList = document.createElement('form');\r\n attachmentList.setAttribute('id', 'attachmentForm');\r\n attachmentList.appendChild(attachmentContainer);\r\n attachmentContainer.appendChild(removeAttachmentBtn);\r\n attachmentContainer.appendChild(attachmentInput);\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n popup.appendChild(reviewAttachmentList);\r\n\r\n popup.appendChild(newAttachmentList);\r\n popup.appendChild(attachmentList);\r\n popup.appendChild(addAttachmentBtn);\r\n btnWrap.appendChild(saveBtn);\r\n\r\n\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n if (attachmentsForQuestion.length > 0) populateExistingAttachments();\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n /**\r\n * Gets the attachment button element\r\n * @return {HTMLButtonElement} Attachment Button Element\r\n */\r\n get attachmentButton() {\r\n return this.buildAttachmentButton();\r\n }\r\n\r\n cleanAttachmentLists(attachmentsToAdd, attachmentsToRemove) {\r\n if (attachmentsToRemove.length > 0) {\r\n attachments = this.attachmentsForQuestion;\r\n }\r\n attachmentsToRemove.forEach(attId => {\r\n attachments.forEach(attach => {\r\n if (attach.attachmentID == attId) {\r\n const index = attachments.indexOf(attach);\r\n attachments.splice(index, 1)\r\n this.attachmentsForQuestion = attachments;\r\n }\r\n });\r\n });\r\n\r\n attachmentsToAdd.forEach(attId => {\r\n attachments.forEach(attach => {\r\n let isAttacExist = this.attachmentsForQuestion.filter(a => a.attachmentID === attId);\r\n if (attach.attachmentID == attId && isAttacExist.length == 0) {\r\n this.attachmentsForQuestion.push(attach);\r\n }\r\n });\r\n });\r\n\r\n\r\n const attachmentBtn = document.getElementById(`attachConsumer`);\r\n attachmentBtn.innerText = `ATTACHMENTS (${this.attachmentsForQuestion.length})`;\r\n\r\n if (this.attachmentsForQuestion.length > 0) {\r\n attachmentBtn.classList.add('hasAttachments');\r\n } else {\r\n attachmentBtn.classList.remove('hasAttachments');\r\n }\r\n\r\n NewEntryCF.buildNewEntryForm(this.regId, this.attachmentsForQuestion, attachmentsToAdd, false)\r\n }\r\n }\r\n\r\n async function getConsumerFinanceAttachments(regID) {\r\n attachments = [];\r\n const retData = {\r\n token: $.session.Token,\r\n regId: regID,\r\n };\r\n const res = await ConsumerFinancesAjax.getCFAttachmentsList(retData);\r\n res.forEach(attachment => {\r\n attachments.push(attachment);\r\n });\r\n return attachments;\r\n }\r\n\r\n return {\r\n ConsumerFinanceAttachment,\r\n getConsumerFinanceAttachments,\r\n };\r\n})();\r\n","const ConsumerFinances = (() => {\r\n //Inputs\r\n let ConsumerFinanceEntriesTable = [];\r\n let CFConsumerBtns;\r\n let consumerRow;\r\n let consumerElement;\r\n let filterPopup;\r\n var selectedConsumers;\r\n var selectedConsumersName;\r\n var selectedConsumersId;\r\n //filter\r\n let accountDropdown;\r\n let filterValues;\r\n let btnWrap;\r\n let activityStartDateBtnWrap;\r\n let activityEndDateBtnWrap;\r\n let minamountBtnWrap;\r\n let maxamountBtnWrap;\r\n let transectionTypeBtnWrap;\r\n let accountNameBtnWrap;\r\n let payeeBtnWrap;\r\n let categoryBtnWrap;\r\n let enteredByBtnWrap;\r\n let isattachmentBtnWrap;\r\n let accountPermission;\r\n let tempAccountPer;\r\n\r\n //service filter options\r\n let selectedConsumerIds;\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n filterValues = undefined;\r\n await loadConsumerFinanceLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n async function backFromConsumerFinanceEditAccount(Consumers) {\r\n setActiveModuleAttribute('ConsumerFinances');\r\n DOM.clearActionCenter();\r\n selectedConsumers = Consumers;\r\n filterValues = undefined;\r\n await loadConsumerFinanceLanding();\r\n DOM.toggleNavLayout();\r\n }\r\n\r\n // Build Consumer Finance Module Landing Page\r\n async function loadConsumerFinanceLanding(value) {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n\r\n if (value) {\r\n filterValues.accountName = value;\r\n }\r\n\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n landingPage = document.createElement('div');\r\n if (selectedConsumers != undefined) {\r\n selectedConsumersId = selectedConsumers[selectedConsumers.length - 1].id;\r\n $.session.consumerId = selectedConsumersId;\r\n } else {\r\n dashboard.load();\r\n return;\r\n }\r\n\r\n const name = (\r\n await ConsumerFinancesAjax.getConsumerNameByID({\r\n token: $.session.Token,\r\n consumerId: selectedConsumersId,\r\n })\r\n ).getConsumerNameByIDResult;\r\n\r\n getaccountPermission();\r\n\r\n selectedConsumersName = name[0].FullName;\r\n const topButton = buildHeaderButton(selectedConsumers[0]);\r\n landingPage.appendChild(topButton);\r\n filterRow = document.createElement('div');\r\n filterRow.classList.add('filterElement');\r\n\r\n const filteredBy = buildFilteredBy();\r\n filterRow.appendChild(filteredBy);\r\n landingPage.appendChild(filterRow);\r\n ConsumerFinanceEntriesTable = await buildConsumerFinanceEntriesTable(filterValues);\r\n landingPage.appendChild(ConsumerFinanceEntriesTable);\r\n populateAccountDropdown();\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n function getaccountPermission() {\r\n accountPermission = '';\r\n tempAccountPer = [];\r\n if ($.session.CFViewChecking) tempAccountPer.push('Checking');\r\n\r\n if ($.session.CFViewCraditCard) {\r\n tempAccountPer.push('Credit Card');\r\n }\r\n\r\n if ($.session.CFViewFoodStamp) {\r\n tempAccountPer.push('Food Stamps');\r\n }\r\n\r\n if ($.session.CFViewPettyCash) {\r\n tempAccountPer.push('Petty Cash');\r\n }\r\n\r\n if ($.session.CFViewShaving) {\r\n tempAccountPer.push('Savings');\r\n }\r\n\r\n if ($.session.CFViewChristmasClub) {\r\n tempAccountPer.push('Christmas Club');\r\n }\r\n if ($.session.CFViewSystem20183A) {\r\n tempAccountPer.push('System 2018.3A');\r\n }\r\n if ($.session.CFViewSystem20183) {\r\n tempAccountPer.push('System 2018.3');\r\n }\r\n if ($.session.CFViewOhioEBT) {\r\n tempAccountPer.push('Ohio EBT');\r\n }\r\n if ($.session.CFViewViewFoodStampDebitCardEBT) {\r\n tempAccountPer.push('Food Stamp Debit Card EBT');\r\n }\r\n\r\n if (tempAccountPer.length > 0) {\r\n accountPermission = tempAccountPer.toString();\r\n } else accountPermission = '';\r\n }\r\n\r\n // build the listing of OOD Entries (based off of filter settings)\r\n async function buildConsumerFinanceEntriesTable(filterValues) {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'singleEntryAdminReviewTable',\r\n headline: selectedConsumersName,\r\n columnHeadings: ['Date', 'Account', 'Payee', 'Category', 'Amount', 'Check No.', 'Balance', 'Entered By'],\r\n endIcon: true,\r\n };\r\n\r\n selectedConsumerIds = selectedConsumers.map(function (x) {\r\n return x.id;\r\n });\r\n let ConsumerFinancesEntries = await ConsumerFinancesAjax.getAccountTransectionEntriesAsync(\r\n selectedConsumerIds.join(', '),\r\n filterValues.activityStartDate,\r\n filterValues.activityEndDate,\r\n filterValues.accountName,\r\n filterValues.payee,\r\n filterValues.category,\r\n filterValues.minamount,\r\n filterValues.maxamount,\r\n filterValues.checkNo,\r\n filterValues.Balance,\r\n filterValues.enteredBy,\r\n filterValues.isattachment,\r\n filterValues.transectionType,\r\n accountPermission,\r\n );\r\n\r\n ConsumerFinancesEntries.getAccountTransectionEntriesResult.forEach(function (entry) {\r\n let newDate = new Date(entry.activityDate);\r\n let theMonth = newDate.getMonth() + 1;\r\n let formatActivityDate =\r\n UTIL.leadingZero(theMonth) + '/' + UTIL.leadingZero(newDate.getDate()) + '/' + newDate.getFullYear();\r\n entry.activityDate = formatActivityDate;\r\n });\r\n\r\n let tableData = ConsumerFinancesEntries.getAccountTransectionEntriesResult.map(entry => {\r\n let checkNo = entry.checkno;\r\n let category = entry.category;\r\n let payee = entry.payee;\r\n\r\n if (entry.categoryCode !== 'C') {\r\n category = '';\r\n payee = entry.payee2;\r\n\r\n if (entry.categoryCode === 'T') {\r\n checkNo = 'Transfer';\r\n }\r\n }\r\n\r\n return {\r\n values: [\r\n entry.activityDate,\r\n entry.account,\r\n payee,\r\n category,\r\n '$' + entry.amount,\r\n checkNo,\r\n '$' + entry.balance,\r\n entry.enteredby,\r\n ],\r\n attributes: [\r\n { key: 'registerId', value: entry.ID },\r\n { key: 'data-plan-active', value: entry.isExpance },\r\n ],\r\n onClick: e => {\r\n if (entry.categoryCode === 'C') {\r\n handleAccountTableEvents(e.target.attributes.registerId.value);\r\n }\r\n },\r\n endIcon: entry.AttachmentsID == 0 ? `${icons['Empty']}` : `${icons['attachmentSmall']}`,\r\n };\r\n });\r\n const oTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = oTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'date'); // Date\r\n headers[1].setAttribute('data-type', 'string'); // Account\r\n headers[2].setAttribute('data-type', 'string'); // Payee\r\n headers[3].setAttribute('data-type', 'string'); // Category\r\n headers[4].setAttribute('data-type', 'amount'); // Amount\r\n headers[5].setAttribute('data-type', 'string'); // Check No\r\n headers[6].setAttribute('data-type', 'amount'); // Balance\r\n headers[7].setAttribute('data-type', 'string'); // Enter By\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function handleAccountTableEvents(registerId) {\r\n NewEntryCF.buildNewEntryForm(registerId);\r\n }\r\n\r\n // build display of Account and button\r\n function buildHeaderButton(consumer) {\r\n consumerElement = document.createElement('div');\r\n consumerRow = document.createElement('div');\r\n consumerRow.classList.add('consumerHeader');\r\n CFConsumerBtns = buildButtonBar(consumer);\r\n consumerRow.appendChild(CFConsumerBtns);\r\n consumerElement.appendChild(consumerRow);\r\n return consumerElement;\r\n }\r\n\r\n function buildButtonBar(consumer) {\r\n const buttonBar = document.createElement('div');\r\n buttonBar.classList.add('OODbuttonBar');\r\n buttonBar.style.maxHeight = '50px';\r\n buttonBar.style.minWidth = '100%';\r\n\r\n const dropdownButtonBar = document.createElement('div');\r\n const entryButtonBar = document.createElement('div');\r\n const editButtonBar = document.createElement('div');\r\n dropdownButtonBar.style.width = '32%';\r\n entryButtonBar.style.width = '32%';\r\n editButtonBar.style.width = '32%';\r\n\r\n accountDropdown = dropdown.build({\r\n label: 'Accounts:',\r\n dropdownId: 'accountDropdown',\r\n });\r\n\r\n accountDropdown.addEventListener('change', event => {\r\n filterValues.accountName = event.target.value;\r\n loadConsumerFinanceLanding(filterValues.accountName);\r\n });\r\n\r\n const entryBtn = button.build({\r\n text: '+ New Entry',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'newEntryBtn',\r\n callback: async () => {\r\n if (!entryBtn.classList.contains('disabled')) {\r\n NewEntryCF.init();\r\n }\r\n },\r\n });\r\n\r\n const editAccountBtn = button.build({\r\n text: 'Edit Accounts',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!editAccountBtn.classList.contains('disabled')) {\r\n CFEditAccount.loadCFEditFromAccountRegister(selectedConsumers);\r\n }\r\n },\r\n });\r\n\r\n if ($.session.CFInsert) {\r\n entryBtn.classList.remove('disabled');\r\n } else {\r\n entryBtn.classList.add('disabled');\r\n }\r\n\r\n if ($.session.CFViewEditAccounts) {\r\n editAccountBtn.classList.remove('disabled');\r\n } else {\r\n editAccountBtn.classList.add('disabled');\r\n }\r\n\r\n entryBtn.style.height = '50px';\r\n entryBtn.style.minWidth = '100%';\r\n editAccountBtn.style.height = '50px';\r\n editAccountBtn.style.minWidth = '100%';\r\n\r\n buildNewFilterBtn();\r\n accountDropdown.style.minWidth = '100%';\r\n dropdownButtonBar.appendChild(accountDropdown);\r\n editButtonBar.appendChild(editAccountBtn);\r\n editButtonBar.style.marginLeft = '2%';\r\n entryButtonBar.appendChild(entryBtn);\r\n entryButtonBar.style.marginLeft = '2%';\r\n buttonBar.appendChild(dropdownButtonBar);\r\n buttonBar.appendChild(editButtonBar);\r\n buttonBar.appendChild(entryButtonBar);\r\n return buttonBar;\r\n }\r\n\r\n function buildNewFilterBtn() {\r\n if (!filterValues)\r\n filterValues = {\r\n token: $.session.Token,\r\n activityStartDate: UTIL.formatDateFromDateObj(dates.subDays(new Date(), 30)),\r\n activityEndDate: UTIL.getTodaysDate(),\r\n accountName: '%',\r\n payee: '%',\r\n category: '%',\r\n minamount: '-10000.00',\r\n maxamount: '10000.00',\r\n checkNo: '',\r\n Balance: '',\r\n enteredBy: '%',\r\n isattachment: '%',\r\n transectionType: '%',\r\n };\r\n }\r\n\r\n // Populate the Account DDL\r\n async function populateAccountDropdown() {\r\n const { getActiveAccountResult: accounts } = await ConsumerFinancesAjax.getActiveAccountAsync(\r\n selectedConsumersId,\r\n accountPermission,\r\n );\r\n let data = accounts.map(account => ({\r\n id: account.accountId,\r\n value: account.accountName,\r\n text: account.accountName + ' - $' + (account.totalBalance == '' ? '0.00' : account.totalBalance),\r\n }));\r\n if (data.length > 0) data.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate('accountDropdown', data, filterValues.accountName);\r\n }\r\n\r\n // build the display of the current Filter Settings (next to the Filter button)\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet();\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n filteredBy.style.maxWidth = '100%';\r\n\r\n if (filterValues.transectionType === '%' || filterValues.transectionType === 'ALL') {\r\n btnWrap.appendChild(transectionTypeBtnWrap);\r\n btnWrap.removeChild(transectionTypeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(transectionTypeBtnWrap);\r\n }\r\n\r\n if (filterValues.accountName === '%' || filterValues.accountName === 'ALL') {\r\n btnWrap.appendChild(accountNameBtnWrap);\r\n btnWrap.removeChild(accountNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(accountNameBtnWrap);\r\n }\r\n\r\n if (filterValues.payee === '%' || filterValues.payee === 'ALL') {\r\n btnWrap.appendChild(payeeBtnWrap);\r\n btnWrap.removeChild(payeeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(payeeBtnWrap);\r\n }\r\n\r\n if (filterValues.category === '%' || filterValues.category === 'ALL') {\r\n btnWrap.appendChild(categoryBtnWrap);\r\n btnWrap.removeChild(categoryBtnWrap);\r\n } else {\r\n btnWrap.appendChild(categoryBtnWrap);\r\n }\r\n\r\n if (filterValues.enteredBy === '%' || filterValues.enteredBy === 'ALL') {\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n btnWrap.removeChild(enteredByBtnWrap);\r\n } else {\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n }\r\n if (filterValues.isattachment === '%' || filterValues.isattachment === 'ALL') {\r\n btnWrap.appendChild(isattachmentBtnWrap);\r\n btnWrap.removeChild(isattachmentBtnWrap);\r\n } else {\r\n btnWrap.appendChild(isattachmentBtnWrap);\r\n }\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n buildFilterPopUp('ALL');\r\n },\r\n });\r\n activityStartDateBtn = button.build({\r\n id: 'activityStartDateBtn',\r\n text: 'From Date: ' + moment(filterValues.activityStartDate, 'YYYY-MM-DD').format('M/D/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('activityStartDateBtn');\r\n },\r\n });\r\n activityEndDateBtn = button.build({\r\n id: 'activityEndDateBtn',\r\n text: 'To date: ' + moment(filterValues.activityEndDate, 'YYYY-MM-DD').format('M/D/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('activityEndDateBtn');\r\n },\r\n });\r\n minamountBtn = button.build({\r\n id: 'minamountBtn',\r\n text: 'Min Amount: $' + filterValues.minamount,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('minamountBtn');\r\n },\r\n });\r\n maxamountBtn = button.build({\r\n id: 'maxamountBtn',\r\n text: 'Max Amount: $' + filterValues.maxamount,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('maxamountBtn');\r\n },\r\n });\r\n transectionTypeBtn = button.build({\r\n id: 'transectionTypeBtn',\r\n text: filterValues.transectionType == 'false' ? 'Transaction Type: Deposit' : 'Transaction Type: Expense',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('transectionTypeBtn');\r\n },\r\n });\r\n transectionTypeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('transectionTypeBtn');\r\n },\r\n });\r\n accountNameBtn = button.build({\r\n id: 'accountNameBtn',\r\n text: 'Account: ' + filterValues.accountName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('accountNameBtn');\r\n },\r\n });\r\n accountNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('accountNameBtn');\r\n },\r\n });\r\n payeeBtn = button.build({\r\n id: 'payeeBtn',\r\n text: 'Payee: ' + filterValues.payee,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('payeeBtn');\r\n },\r\n });\r\n payeeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('payeeBtn');\r\n },\r\n });\r\n categoryBtn = button.build({\r\n id: 'categoryBtn',\r\n text: 'Category: ' + filterValues.category,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('categoryBtn');\r\n },\r\n });\r\n categoryCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('categoryBtn');\r\n },\r\n });\r\n enteredByBtn = button.build({\r\n id: 'enteredByBtn',\r\n text: 'Last Updated By: ' + filterValues.userName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('enteredByBtn');\r\n },\r\n });\r\n enteredByCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('enteredByBtn');\r\n },\r\n });\r\n isattachmentBtn = button.build({\r\n id: 'isattachmentBtn',\r\n text: 'Has Attachment: ' + filterValues.isattachment,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('isattachmentBtn');\r\n },\r\n });\r\n isattachmentCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('isattachmentBtn');\r\n },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n activityStartDateBtnWrap = document.createElement('div');\r\n activityStartDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n activityStartDateBtnWrap.appendChild(activityStartDateBtn);\r\n btnWrap.appendChild(activityStartDateBtnWrap);\r\n\r\n activityEndDateBtnWrap = document.createElement('div');\r\n activityEndDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n activityEndDateBtnWrap.appendChild(activityEndDateBtn);\r\n btnWrap.appendChild(activityEndDateBtnWrap);\r\n\r\n minamountBtnWrap = document.createElement('div');\r\n minamountBtnWrap.classList.add('filterSelectionBtnWrap');\r\n minamountBtnWrap.appendChild(minamountBtn);\r\n btnWrap.appendChild(minamountBtnWrap);\r\n\r\n maxamountBtnWrap = document.createElement('div');\r\n maxamountBtnWrap.classList.add('filterSelectionBtnWrap');\r\n maxamountBtnWrap.appendChild(maxamountBtn);\r\n btnWrap.appendChild(maxamountBtnWrap);\r\n\r\n transectionTypeBtnWrap = document.createElement('div');\r\n transectionTypeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n transectionTypeBtnWrap.appendChild(transectionTypeBtn);\r\n transectionTypeBtnWrap.appendChild(transectionTypeCloseBtn);\r\n btnWrap.appendChild(transectionTypeBtnWrap);\r\n\r\n accountNameBtnWrap = document.createElement('div');\r\n accountNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n accountNameBtnWrap.appendChild(accountNameBtn);\r\n accountNameBtnWrap.appendChild(accountNameCloseBtn);\r\n btnWrap.appendChild(accountNameBtnWrap);\r\n\r\n payeeBtnWrap = document.createElement('div');\r\n payeeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n payeeBtnWrap.appendChild(payeeBtn);\r\n payeeBtnWrap.appendChild(payeeCloseBtn);\r\n btnWrap.appendChild(payeeBtnWrap);\r\n\r\n categoryBtnWrap = document.createElement('div');\r\n categoryBtnWrap.classList.add('filterSelectionBtnWrap');\r\n categoryBtnWrap.appendChild(categoryBtn);\r\n categoryBtnWrap.appendChild(categoryCloseBtn);\r\n btnWrap.appendChild(categoryBtnWrap);\r\n\r\n enteredByBtnWrap = document.createElement('div');\r\n enteredByBtnWrap.classList.add('filterSelectionBtnWrap');\r\n enteredByBtnWrap.appendChild(enteredByBtn);\r\n enteredByBtnWrap.appendChild(enteredByCloseBtn);\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n\r\n isattachmentBtnWrap = document.createElement('div');\r\n isattachmentBtnWrap.classList.add('filterSelectionBtnWrap');\r\n isattachmentBtnWrap.appendChild(isattachmentBtn);\r\n isattachmentBtnWrap.appendChild(isattachmentCloseBtn);\r\n btnWrap.appendChild(isattachmentBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'transectionTypeBtn') {\r\n filterValues.transectionType = '%';\r\n }\r\n if (closeFilter == 'accountNameBtn') {\r\n filterValues.accountName = '%';\r\n }\r\n if (closeFilter == 'payeeBtn') {\r\n filterValues.payee = '%';\r\n }\r\n if (closeFilter == 'enteredByBtn') {\r\n filterValues.enteredBy = '%';\r\n }\r\n if (closeFilter == 'isattachmentBtn') {\r\n filterValues.isattachment = '%';\r\n }\r\n if (closeFilter == 'categoryBtn') {\r\n filterValues.category = '%';\r\n }\r\n loadConsumerFinanceLanding();\r\n }\r\n\r\n // build Filter pop-up that displays when an \"Filter\" button is clicked\r\n function buildFilterPopUp(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n // dropdowns & inputs\r\n fromDateInput = input.build({\r\n id: 'fromDateInput',\r\n type: 'date',\r\n label: 'From Date',\r\n style: 'secondary',\r\n value: filterValues.activityStartDate,\r\n });\r\n\r\n toDateInput = input.build({\r\n id: 'toDateInput',\r\n type: 'date',\r\n label: 'To Date',\r\n style: 'secondary',\r\n value: filterValues.activityEndDate,\r\n });\r\n\r\n minAmountInput = input.build({\r\n id: 'minAmountInput',\r\n type: 'text',\r\n label: 'Min Amount',\r\n style: 'secondary',\r\n value: '$' + (filterValues.minamount ? filterValues.minamount : ''),\r\n });\r\n\r\n maxAmountInput = input.build({\r\n id: 'maxAmountInput',\r\n type: 'text',\r\n label: 'Max Amount',\r\n style: 'secondary',\r\n value: '$' + (filterValues.maxamount ? filterValues.maxamount : ''),\r\n });\r\n\r\n transectionTypeFilterDropdown = dropdown.build({\r\n label: 'Transaction Type',\r\n dropdownId: 'transectionTypeFilterDropdown',\r\n });\r\n\r\n accountFilterDropdown = dropdown.build({\r\n label: 'Account',\r\n dropdownId: 'accountFilterDropdown',\r\n });\r\n\r\n payeeDropdown = dropdown.build({\r\n id: 'payeeDropdown',\r\n label: 'Payee',\r\n dropdownId: 'payeeDropdown',\r\n });\r\n\r\n categoryDropdown = dropdown.build({\r\n id: 'categoryDropdown',\r\n label: 'Category',\r\n dropdownId: 'categoryDropdown',\r\n });\r\n\r\n lastUpdateDropdown = dropdown.build({\r\n id: 'lastUpdateDropdown',\r\n label: 'Last Updated By',\r\n dropdownId: 'lastUpdateDropdown',\r\n });\r\n\r\n isAttachedDropdown = dropdown.build({\r\n id: 'isAttachedDropdown',\r\n label: 'Has Attachment?',\r\n dropdownId: 'isAttachedDropdown',\r\n });\r\n\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => filterPopupCancelBtn(),\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n var dateWrap = document.createElement('div');\r\n dateWrap.classList.add('dateWrap');\r\n if (IsShow == 'ALL' || IsShow == 'activityStartDateBtn') dateWrap.appendChild(fromDateInput);\r\n if (IsShow == 'ALL' || IsShow == 'activityEndDateBtn') dateWrap.appendChild(toDateInput);\r\n\r\n var amountWrap = document.createElement('div');\r\n amountWrap.classList.add('dateWrap');\r\n if (IsShow == 'ALL' || IsShow == 'minamountBtn') amountWrap.appendChild(minAmountInput);\r\n if (IsShow == 'ALL' || IsShow == 'maxamountBtn') amountWrap.appendChild(maxAmountInput);\r\n\r\n // build popup\r\n filterPopup.appendChild(dateWrap);\r\n filterPopup.appendChild(amountWrap);\r\n if (IsShow == 'ALL' || IsShow == 'transectionTypeBtn') filterPopup.appendChild(transectionTypeFilterDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'accountNameBtn') filterPopup.appendChild(accountFilterDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'payeeBtn') filterPopup.appendChild(payeeDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'categoryBtn') filterPopup.appendChild(categoryDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'enteredByBtn') filterPopup.appendChild(lastUpdateDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'isattachmentBtn') filterPopup.appendChild(isAttachedDropdown);\r\n\r\n filterPopup.appendChild(btnWrap);\r\n eventListeners();\r\n populateFilterDropdown();\r\n POPUP.show(filterPopup);\r\n checkValidationOfFilter();\r\n }\r\n\r\n // binding filter events\r\n function eventListeners() {\r\n var tmpactivityStartDate;\r\n var tmpactivityEndDate;\r\n var tmpminAmount;\r\n var tmpmaxAmount;\r\n var tmpaccountName;\r\n var tmpenteredBy;\r\n var tmppayee;\r\n var tmpcategory;\r\n var tmpisattachment;\r\n var tmptransectionType;\r\n\r\n fromDateInput.addEventListener('change', event => {\r\n tmpactivityStartDate = event.target.value;\r\n checkValidationOfFilter();\r\n });\r\n toDateInput.addEventListener('change', event => {\r\n tmpactivityEndDate = event.target.value;\r\n checkValidationOfFilter();\r\n });\r\n\r\n minAmountInput.addEventListener('keyup', event => {\r\n minAmount = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(minAmount)) {\r\n document.getElementById('minAmountInput').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n } else if (\r\n minAmount.includes('.') &&\r\n (minAmount.match(/\\./g).length > 1 || minAmount.toString().split('.')[1].length > 2)\r\n ) {\r\n document.getElementById('minAmountInput').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n }\r\n\r\n tmpminAmount = minAmount.trim().replace('$', '');\r\n tmpminAmount = parseFloat(tmpminAmount).toFixed(2);\r\n });\r\n\r\n maxAmountInput.addEventListener('keyup', event => {\r\n maxAmount = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(maxAmount)) {\r\n document.getElementById('maxAmountInput').value = maxAmount.substring(0, maxAmount.length - 1);\r\n return;\r\n } else if (\r\n maxAmount.includes('.') &&\r\n (maxAmount.match(/\\./g).length > 1 || maxAmount.toString().split('.')[1].length > 2)\r\n ) {\r\n document.getElementById('maxAmountInput').value = maxAmount.substring(0, maxAmount.length - 1);\r\n return;\r\n }\r\n tmpmaxAmount = maxAmount.trim().replace('$', '');\r\n tmpmaxAmount = parseFloat(tmpmaxAmount).toFixed(2);\r\n });\r\n\r\n transectionTypeFilterDropdown.addEventListener('change', event => {\r\n tmptransectionType = event.target.value;\r\n });\r\n accountFilterDropdown.addEventListener('change', event => {\r\n tmpaccountName = event.target.value;\r\n });\r\n lastUpdateDropdown.addEventListener('change', event => {\r\n tmpenteredBy =\r\n event.target.options[event.target.selectedIndex].innerHTML == 'ALL'\r\n ? '%'\r\n : event.target.options[event.target.selectedIndex].id; //event.target.options[event.target.selectedIndex].innerHTML;\r\n filterValues.userName = event.target.options[event.target.selectedIndex].innerHTML;\r\n });\r\n payeeDropdown.addEventListener('change', event => {\r\n tmppayee = event.target.value;\r\n });\r\n categoryDropdown.addEventListener('change', event => {\r\n tmpcategory = event.target.value;\r\n });\r\n isAttachedDropdown.addEventListener('change', event => {\r\n tmpisattachment = event.target.value;\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n updateFilterData({\r\n tmpactivityStartDate,\r\n tmpactivityEndDate,\r\n tmpminAmount,\r\n tmpmaxAmount,\r\n tmpaccountName,\r\n tmpenteredBy,\r\n tmppayee,\r\n tmpcategory,\r\n tmpisattachment,\r\n tmptransectionType,\r\n });\r\n POPUP.hide(filterPopup);\r\n loadConsumerFinanceLanding();\r\n }\r\n });\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tmpactivityStartDate) filterValues.activityStartDate = data.tmpactivityStartDate;\r\n if (data.tmpactivityEndDate) filterValues.activityEndDate = data.tmpactivityEndDate;\r\n if (data.tmpminAmount) filterValues.minamount = data.tmpminAmount;\r\n if (data.tmpmaxAmount) filterValues.maxamount = data.tmpmaxAmount;\r\n if (data.tmpaccountName) filterValues.accountName = data.tmpaccountName;\r\n if (data.tmpenteredBy) filterValues.enteredBy = data.tmpenteredBy;\r\n if (data.tmppayee) filterValues.payee = data.tmppayee;\r\n if (data.tmpcategory) filterValues.category = data.tmpcategory;\r\n if (data.tmpisattachment) filterValues.isattachment = data.tmpisattachment;\r\n if (data.tmptransectionType) filterValues.transectionType = data.tmptransectionType;\r\n }\r\n\r\n function checkValidationOfFilter() {\r\n var fromDate = fromDateInput.querySelector('#fromDateInput');\r\n var toDate = toDateInput.querySelector('#toDateInput');\r\n\r\n if (fromDate.value > toDate.value) {\r\n toDateInput.classList.add('errorPopup');\r\n } else {\r\n toDateInput.classList.remove('errorPopup');\r\n }\r\n setBtnStatusOfFilter();\r\n }\r\n\r\n function setBtnStatusOfFilter() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function populateFilterDropdown() {\r\n const { getActiveAccountResult: accounts } = await ConsumerFinancesAjax.getActiveAccountAsync(\r\n selectedConsumersId,\r\n accountPermission,\r\n );\r\n let accountData = accounts.map(account => ({\r\n id: account.accountId,\r\n value: account.accountName,\r\n text: account.accountName,\r\n }));\r\n accountData.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate('accountFilterDropdown', accountData, filterValues.accountName);\r\n\r\n const { getPayeesResult: Payees } = await ConsumerFinancesAjax.getPayeesAsync($.session.consumerId);\r\n let payeeData = Payees.map(payees => ({\r\n id: payees.CategoryID,\r\n value: payees.Description,\r\n text: payees.Description,\r\n }));\r\n payeeData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('payeeDropdown', payeeData, filterValues.payee);\r\n\r\n let categoryID;\r\n const { getCategoriesSubCategoriesResult: Category } = await ConsumerFinancesAjax.getCategoriesSubCategoriesAsync(\r\n categoryID,\r\n );\r\n let categoryData = Category.map(category => ({\r\n id: category.CategoryID,\r\n value: category.CategoryDescription,\r\n text: category.CategoryDescription,\r\n }));\r\n categoryData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('categoryDropdown', categoryData, filterValues.category);\r\n\r\n const { getActiveUsedByResult: employees } = await ConsumerFinancesAjax.getActiveEmployeesAsync();\r\n let data = employees.map(employee => ({\r\n id: employee.userId,\r\n value: employee.userId,\r\n text: employee.userName,\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('lastUpdateDropdown', data, filterValues.enteredBy);\r\n\r\n const condfidentialDropdownData = [\r\n { text: 'Yes', value: 'Yes' },\r\n { text: 'No', value: 'No' },\r\n ];\r\n condfidentialDropdownData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('isAttachedDropdown', condfidentialDropdownData, filterValues.isattachment);\r\n\r\n const TransectionTypeDropdownData = [\r\n { text: 'Deposit', value: 'false' },\r\n { text: 'Expense', value: 'true' },\r\n ];\r\n TransectionTypeDropdownData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('transectionTypeFilterDropdown', TransectionTypeDropdownData, filterValues.transectionType);\r\n }\r\n\r\n function filterPopupCancelBtn() {\r\n POPUP.hide(filterPopup);\r\n }\r\n\r\n function init() {\r\n setActiveModuleAttribute('ConsumerFinances');\r\n DOM.clearActionCenter();\r\n\r\n let defaultCFLocation = defaults.getLocation('moneyManagement');\r\n if (defaultCFLocation === '') {\r\n defaults.setLocation('moneyManagement', 0);\r\n defaultCFLocation = '0';\r\n }\r\n roster2.miniRosterinit(\r\n {\r\n locationId: defaultCFLocation,\r\n locationName: '',\r\n },\r\n {\r\n hideDate: true,\r\n },\r\n );\r\n\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadConsumerFinanceLanding,\r\n getaccountPermission,\r\n backFromConsumerFinanceEditAccount,\r\n };\r\n})();\r\n","var ConsumerFinancesAjax = (function () {\r\n // OOD Main/Landing Page\r\n async function getAccountTransectionEntriesAsync(\r\n consumerIds,\r\n activityStartDate,\r\n activityEndDate,\r\n accountName,\r\n payee,\r\n category,\r\n minamount,\r\n maxamount,\r\n checkNo,\r\n balance,\r\n enteredBy,\r\n isattachment,\r\n transectionType,\r\n accountPermission,\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAccountTransectionEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"activityStartDate\":\"' +\r\n activityStartDate +\r\n '\", \"activityEndDate\":\"' +\r\n activityEndDate +\r\n '\", \"accountName\":\"' +\r\n accountName +\r\n '\", \"payee\":\"' +\r\n payee +\r\n '\", \"category\":\"' +\r\n category +\r\n '\", \"minamount\":\"' +\r\n minamount +\r\n '\", \"maxamount\":\"' +\r\n maxamount +\r\n '\", \"checkNo\":\"' +\r\n checkNo +\r\n '\", \"balance\":\"' +\r\n balance +\r\n '\", \"enteredBy\":\"' +\r\n enteredBy +\r\n '\", \"isattachment\":\"' +\r\n isattachment +\r\n '\", \"transectionType\":\"' +\r\n transectionType +\r\n '\", \"accountPermission\":\"' +\r\n accountPermission +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getActiveAccountAsync(ConsumersId, accountPermission) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveAccount/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: ConsumersId,\r\n accountPermission: accountPermission,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPayeesAsync(ConsumersId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPayees/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: ConsumersId,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getCategoriesAsync(CategoryID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCatogories/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n categoryID: CategoryID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getSubCategoriesAsync(Category) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSubCatogories/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n category: Category,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getCategoriesSubCategoriesByPayeeAsync(CategoryID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCategoriesSubCategoriesByPayee/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n categoryID: CategoryID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertPayeeAsync(payeeName, payeeaddress1, payeeaddress2, payeecity, payeestate, payeezipcode) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPayee/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n payeeName: payeeName,\r\n address1: payeeaddress1,\r\n address2: payeeaddress2,\r\n city: payeecity,\r\n state: payeestate,\r\n zipcode: payeezipcode,\r\n userId: $.session.UserId,\r\n consumerId: $.session.consumerId,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertAccountAsync(\r\n date,\r\n amount,\r\n amountType,\r\n AccountID,\r\n payee,\r\n CategoryID,\r\n subCategory,\r\n checkNo,\r\n description,\r\n attachmentID,\r\n attachmentDesc,\r\n receipt,\r\n BtnName,\r\n regId,\r\n splitAmount,\r\n categoryID,\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertAccount/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n date: date,\r\n amount: amount,\r\n amountType: amountType,\r\n account: AccountID,\r\n payee: payee,\r\n category: CategoryID,\r\n subCategory: subCategory,\r\n checkNo: checkNo,\r\n description: description,\r\n attachmentId: attachmentID,\r\n attachmentDesc: attachmentDesc,\r\n receipt: receipt,\r\n userId: $.session.UserId,\r\n eventType: BtnName,\r\n regId: regId,\r\n splitAmount: splitAmount,\r\n categoryID: categoryID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getAccountEntriesByIDAsync(registerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAccountEntriesById/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"registerId\":\"' + registerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function deleteConsumerFinanceAccountAsync(registerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteConsumerFinanceAccount/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"registerId\":\"' + registerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getActiveEmployeesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveUsedBy/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function addCFAttachment(retrieveData) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(retrieveData.attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n retrieveData.attachment = abString;\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addCFAttachment/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.addCFAttachmentResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n function deleteCFAttachment(attachmentId) {\r\n data = {\r\n token: $.session.Token,\r\n attachmentId: attachmentId,\r\n };\r\n try {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteCFAttachment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.deletePlanAttachmentResult;\r\n },\r\n });\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getCFAttachmentsList(retrieveData) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCFAttachmentsList/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getCFAttachmentsListResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getConsumerNameByID(retrieveData) {\r\n //token, consumerId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerNameByID/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function viewCFAttachment(attachmentId, section) {\r\n data = {\r\n attachmentId: attachmentId,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewCFAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', attachmentId);\r\n attachmentInput.id = 'attachmentId';\r\n var sectionInput = document.createElement('input');\r\n sectionInput.setAttribute('name', 'section');\r\n sectionInput.setAttribute('value', section);\r\n sectionInput.id = 'section';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.appendChild(sectionInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n form.remove();\r\n }\r\n\r\n async function getCategoriesSubCategoriesAsync(CategoryID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCategoriesSubCategories/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n categoryID: CategoryID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEditAccountInfoByIdAsync(accountId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEditAccountInfoById/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"accountId\":\"' + accountId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getAccountClassAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAccountClass/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertEditRegisterAccountAsync(\r\n selectedConsumersId,\r\n accountId,\r\n name,\r\n number,\r\n type,\r\n status,\r\n classofAccount,\r\n dateOpened,\r\n dateClosed,\r\n openingBalance,\r\n description,\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertEditRegisterAccount/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n selectedConsumersId: selectedConsumersId,\r\n accountId: accountId,\r\n name: name,\r\n number: number,\r\n type: type,\r\n status: status,\r\n classofAccount: classofAccount,\r\n dateOpened: dateOpened,\r\n dateClosed: dateClosed,\r\n openingBalance: openingBalance,\r\n description: description,\r\n userId: $.session.UserId,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEditAccountAsync(ConsumersId, accountPermission) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEditAccount/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: ConsumersId,\r\n accountPermission: accountPermission,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getSplitRegisterAccountEntriesByIDAsync(registerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSplitRegisterAccountEntriesByID/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"registerId\":\"' + registerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getSplitCategoriesSubCategoriesAsync(CategoryID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSplitCategoriesSubCategories/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n categoryID: CategoryID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getAccountTransectionEntriesAsync,\r\n getActiveAccountAsync,\r\n getPayeesAsync,\r\n getCategoriesAsync,\r\n getSubCategoriesAsync,\r\n getCategoriesSubCategoriesByPayeeAsync,\r\n insertPayeeAsync,\r\n insertAccountAsync,\r\n getAccountEntriesByIDAsync,\r\n deleteConsumerFinanceAccountAsync,\r\n getActiveEmployeesAsync,\r\n addCFAttachment,\r\n deleteCFAttachment,\r\n getCFAttachmentsList,\r\n getConsumerNameByID,\r\n viewCFAttachment,\r\n getCategoriesSubCategoriesAsync,\r\n getEditAccountInfoByIdAsync,\r\n getAccountClassAsync,\r\n insertEditRegisterAccountAsync,\r\n getEditAccountAsync,\r\n getSplitRegisterAccountEntriesByIDAsync,\r\n getSplitCategoriesSubCategoriesAsync,\r\n };\r\n})();\r\n","const NewEntryCF = (() => {\r\n // dropdown and inputs declaration\r\n let newDateInput;\r\n let newAmountInput;\r\n let newAccountDropdown;\r\n let newPayeeDropdown;\r\n let ADD_NEW_PAYEE_BTN;\r\n let newCategoryDropdown;\r\n let newSubCategoryDropdown;\r\n let newCheckNoInput;\r\n let newDescriptionInput;\r\n let newReceiptInput;\r\n let NEW_SAVE_BTN;\r\n let NEW_CANCEL_BTN;\r\n\r\n let attachmentArray = [];\r\n let prevAttachmentArray = [];\r\n let attachmentId = [];\r\n let attachmentDesc = [];\r\n let categoryID;\r\n let Description;\r\n let BtnName;\r\n let regId;\r\n let IsDisabledBtn = false;\r\n let lastUpdateBy;\r\n let IsReconciled = 'N';\r\n let IsAddNewPayDisable = true;\r\n let IsSaveDisable = true;\r\n let IsDeleteDisable = true;\r\n let splitAmountInputN = [];\r\n let splitCategoryDropdownN = [];\r\n let splitDescriptionInputN = [];\r\n let categoryOldVal;\r\n let totalAmount;\r\n let regTotalAmount;\r\n let numberOfRows;\r\n let splitAmount = [];\r\n let splitTransPopup;\r\n let tempAmountval;\r\n let tempSplit;\r\n let tempAmouts;\r\n let totalAmountSaved;\r\n let accountPermission;\r\n let tempAccountPer;\r\n let pageName;\r\n\r\n async function init() {\r\n buildNewEntryForm(registerId = undefined, attachment = undefined, attachmentID = undefined, IsNewRefresh = true);\r\n }\r\n\r\n async function buildNewEntryForm(registerId, attachment, attachmentID, IsNewRefresh = true) {\r\n prevAttachmentArray = [];\r\n numberOfRows = 5;\r\n if (registerId && IsNewRefresh) {\r\n splitAmount = [];\r\n totalAmountSaved = 0;\r\n prevAttachmentArray = await consumerFinanceAttachment.getConsumerFinanceAttachments(registerId);\r\n BtnName = 'UPDATE'\r\n pageName = 'Update';\r\n regId = registerId;\r\n const result = await ConsumerFinancesAjax.getAccountEntriesByIDAsync(registerId);\r\n const { getAccountEntriesByIdResult } = result;\r\n date = moment(getAccountEntriesByIdResult[0].activityDate).format('YYYY-MM-DD');\r\n amount = getAccountEntriesByIdResult[0].amount != '' ? parseFloat(getAccountEntriesByIdResult[0].amount).toFixed(2) : '';\r\n tempAmountval = getAccountEntriesByIdResult[0].amount;\r\n account = getAccountEntriesByIdResult[0].account;\r\n payee = getAccountEntriesByIdResult[0].payee;\r\n category = getAccountEntriesByIdResult[0].category;\r\n subCategory = getAccountEntriesByIdResult[0].subCategory;\r\n checkNo = getAccountEntriesByIdResult[0].checkno;\r\n description = getAccountEntriesByIdResult[0].description;\r\n receipt = getAccountEntriesByIdResult[0].receipt;\r\n accountID = getAccountEntriesByIdResult[0].accountID;\r\n accountType = getAccountEntriesByIdResult[0].accountType;\r\n IsReconciled = getAccountEntriesByIdResult[0].reconciled;\r\n lastUpdateBy = getAccountEntriesByIdResult[0].lastUpdateBy;\r\n categoryOldVal = category;\r\n const SplitDataresult = await ConsumerFinancesAjax.getSplitRegisterAccountEntriesByIDAsync(registerId);\r\n const { getSplitRegisterAccountEntriesByIDResult } = SplitDataresult;\r\n splitAmount = getSplitRegisterAccountEntriesByIDResult;\r\n var sum = 0;\r\n for (var i = 0; i < splitAmount.length; i++) {\r\n if (splitAmount[i].amount != '')\r\n sum += parseFloat(splitAmount[i].amount);\r\n }\r\n totalAmount = sum.toFixed(2);\r\n totalAmountSaved = totalAmount;\r\n }\r\n else if (registerId && !IsNewRefresh) {\r\n BtnName = 'UPDATE';\r\n pageName = 'Update';\r\n }\r\n else if (registerId == 0 && attachmentID) {\r\n regId = 0;\r\n BtnName = 'SAVE';\r\n pageName = 'New';\r\n }\r\n else {\r\n regId = 0;\r\n BtnName = 'SAVE';\r\n pageName = 'New';\r\n date = UTIL.getTodaysDate();\r\n amount = '';\r\n account = '';\r\n payee = '';\r\n category = '';\r\n subCategory = '';\r\n checkNo = '';\r\n description = '';\r\n attachment = '';\r\n receipt = '';\r\n accountID = '';\r\n accountType = 'E';\r\n IsReconciled = 'N';\r\n IsDisabledBtn = false;\r\n categoryOldVal = '';\r\n totalAmount = 0;\r\n tempAmountval = 0;\r\n splitAmount = [];\r\n totalAmountSaved = 0;\r\n }\r\n\r\n tempdate = '';\r\n tempamount = '';\r\n tempaccount = '';\r\n tempaccountType = '';\r\n temppayee = '';\r\n tempcategory = '';\r\n tempsubCategory = '';\r\n tempcheckNo = '';\r\n tempdescription = '';\r\n tempattachment = '';\r\n tempreceipt = '';\r\n tempSplit = '';\r\n if (attachment) {\r\n attachmentArray = attachment;\r\n attachmentId = attachmentID;\r\n attachment.forEach(att => {\r\n if (att.registerID == 0) {\r\n attachmentDesc.push(att.description);\r\n tempattachment = attachmentID;\r\n }\r\n });\r\n\r\n }\r\n else {\r\n attachmentArray = [];\r\n attachmentId = [];\r\n attachmentDesc = [];\r\n prevAttachmentArray.forEach(att => {\r\n attachmentArray.push(att);\r\n });\r\n }\r\n getaccountPermission();\r\n DOM.clearActionCenter();\r\n\r\n const column1 = document.createElement('div')\r\n const column2 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n column2.classList.add('col-2')\r\n\r\n newDateInput = input.build({\r\n id: 'newDateInput',\r\n type: 'date',\r\n label: 'Date',\r\n style: 'secondary',\r\n value: (date) ? date : '',\r\n });\r\n\r\n newAmountInput = input.build({\r\n id: 'newAmountInput',\r\n type: 'number',\r\n label: 'Amount',\r\n style: 'secondary',\r\n value: (amount) ? amount : '',\r\n });\r\n\r\n newAccountDropdown = dropdown.build({\r\n id: 'newAccountDropdown',\r\n label: \"Account\",\r\n dropdownId: \"newAccountDropdown\",\r\n value: (account) ? account : '',\r\n });\r\n\r\n newPayeeDropdown = dropdown.build({\r\n id: 'newPayeeDropdown',\r\n label: \"Payee\",\r\n dropdownId: \"newPayeeDropdown\",\r\n value: (payee) ? payee : '',\r\n });\r\n\r\n ADD_NEW_PAYEE_BTN = button.build({\r\n text: 'ADD NEW PAYEE',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n newCategoryDropdown = dropdown.build({\r\n id: 'newCategoryDropdown',\r\n label: \"Category\",\r\n dropdownId: \"newCategoryDropdown\",\r\n value: (category) ? category : '',\r\n });\r\n\r\n SPLIT_BTN = button.build({\r\n id: 'SPLIT_BTN',\r\n text: 'Split',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n newSubCategoryDropdown = dropdown.build({\r\n id: 'newSubCategoryDropdown',\r\n label: \"Sub Category\",\r\n dropdownId: \"newSubCategoryDropdown\",\r\n value: (subCategory) ? subCategory : '',\r\n });\r\n\r\n newCheckNoInput = input.build({\r\n type: 'text',\r\n label: 'Check No.',\r\n style: 'secondary',\r\n value: (checkNo) ? checkNo : '',\r\n });\r\n\r\n newDescriptionInput = input.build({\r\n type: 'textarea',\r\n label: 'Description',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: (description) ? description : '',\r\n });\r\n\r\n newReceiptInput = input.build({\r\n type: 'text',\r\n label: 'Receipt',\r\n style: 'secondary',\r\n value: (receipt) ? receipt : '',\r\n });\r\n\r\n NEW_SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n NEW_CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { ConsumerFinances.loadConsumerFinanceLanding() },\r\n });\r\n\r\n NEW_DELETE_BTN = button.build({\r\n text: 'DELETE ENTRY',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n // Billing Radios //\r\n expenseRadio = input.buildRadio({\r\n id: `expenseRadio`,\r\n text: \"Expense\",\r\n name: \"amountType\",\r\n isChecked: accountType == 'D' ? false : true,\r\n });\r\n depositRadio = input.buildRadio({\r\n id: `depositRadio`,\r\n text: \"Deposit\",\r\n name: \"amountType\",\r\n isChecked: accountType == 'D' ? true : false,\r\n });\r\n\r\n const radioDiv = document.createElement(\"div\");\r\n radioDiv.classList.add(\"addCFRadioDiv\");\r\n radioDiv.appendChild(expenseRadio);\r\n radioDiv.appendChild(depositRadio);\r\n /////////////////\r\n\r\n var space = document.createElement('h3');\r\n space.innerHTML = '';\r\n var LineBr = document.createElement('br');\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n\r\n if (registerId) {\r\n btnWrap.appendChild(NEW_SAVE_BTN);\r\n btnWrap.appendChild(NEW_DELETE_BTN);\r\n\r\n if (payee == 'Opening Balance') {\r\n DisabledAllInputs();\r\n }\r\n else {\r\n enableDisabledInputs();\r\n }\r\n }\r\n else {\r\n btnWrap.appendChild(NEW_SAVE_BTN);\r\n btnWrap.appendChild(NEW_CANCEL_BTN);\r\n if ($.session.CFADDPayee) {\r\n ADD_NEW_PAYEE_BTN.classList.remove('disabled');\r\n }\r\n else {\r\n ADD_NEW_PAYEE_BTN.classList.add('disabled');\r\n }\r\n }\r\n\r\n var dropWrap = document.createElement('div');\r\n dropWrap.classList.add('vehicleInspectionDTWrap');\r\n dropWrap.appendChild(newDateInput);\r\n dropWrap.appendChild(newAmountInput);\r\n\r\n var radioWrap = document.createElement('div');\r\n radioWrap.classList.add('vehicleInspectionDTWrap');\r\n radioWrap.appendChild(space);\r\n radioWrap.appendChild(radioDiv);\r\n\r\n // New Entry Card//\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
${pageName} Entry
`; \r\n addNewCard.appendChild(addNewCardBody)\r\n\r\n column1.appendChild(addNewCard)\r\n addNewCardBody.appendChild(LineBr);\r\n addNewCardBody.appendChild(dropWrap);\r\n addNewCardBody.appendChild(radioWrap);\r\n addNewCardBody.appendChild(LineBr);\r\n addNewCardBody.appendChild(newAccountDropdown);\r\n addNewCardBody.appendChild(newPayeeDropdown);\r\n addNewCardBody.appendChild(ADD_NEW_PAYEE_BTN);\r\n addNewCardBody.appendChild(newCategoryDropdown);\r\n addNewCardBody.appendChild(SPLIT_BTN);\r\n addNewCardBody.appendChild(newSubCategoryDropdown);\r\n addNewCardBody.appendChild(newCheckNoInput);\r\n\r\n const addRightCard = document.createElement(\"div\");\r\n const addRightHeader = document.createElement(\"div\");\r\n const addRightBody = document.createElement(\"div\");\r\n addRightCard.classList.add(\"card\");\r\n addRightHeader.classList.add(\"card__header\");\r\n addRightBody.classList.add(\"card__body\");\r\n addRightBody.id = 'consumerOnRouteSection';\r\n addRightCard.appendChild(addRightBody);\r\n\r\n addRightBody.appendChild(newDescriptionInput);\r\n const questionAttachment = new consumerFinanceAttachment.ConsumerFinanceAttachment(attachmentArray, regId, IsDisabledBtn, attachmentId);\r\n addRightBody.appendChild(questionAttachment.attachmentButton);\r\n\r\n addRightBody.appendChild(newReceiptInput);\r\n if (registerId) {\r\n addRightBody.appendChild(btnWrap);\r\n NEW_CANCEL_BTN.style.width = '100%';\r\n addRightBody.appendChild(NEW_CANCEL_BTN);\r\n }\r\n else {\r\n addRightBody.appendChild(btnWrap);\r\n }\r\n\r\n column2.appendChild(addRightCard);\r\n\r\n DOM.ACTIONCENTER.appendChild(column1);\r\n DOM.ACTIONCENTER.appendChild(column2);\r\n eventListeners();\r\n\r\n populateAccountDropdown();\r\n populatePayeeDropdown();\r\n populateCategoryDropdown(categoryID);\r\n populateSubCategoryDropdown(category);\r\n checkRequiredFieldsOfNewEntry();\r\n\r\n if (category == '--Split--') {\r\n document.getElementById('SPLIT_BTN').style.display = 'block';\r\n }\r\n else {\r\n document.getElementById('SPLIT_BTN').style.display = 'none';\r\n }\r\n }\r\n\r\n async function getSplitdata() {\r\n const SplitDataresult = await ConsumerFinancesAjax.getSplitRegisterAccountEntriesByIDAsync(regId);\r\n const { getSplitRegisterAccountEntriesByIDResult } = SplitDataresult;\r\n splitAmount = getSplitRegisterAccountEntriesByIDResult;\r\n\r\n buildSplitTransectionPopUp();\r\n if (splitAmount.length > 0) {\r\n document.getElementById('SPLIT_BTN').style.display = 'block';\r\n }\r\n }\r\n\r\n function enableDisabledInputs() {\r\n if (IsReconciled == 'Y') {\r\n DisabledAllInputs();\r\n } else if (IsReconciled == 'N') {\r\n if (!$.session.CFUpdate) {\r\n DisabledAllInputs();\r\n }\r\n else if (!$.session.CFEditAccountEntries && lastUpdateBy != $.session.UserId) {\r\n DisabledAllInputs();\r\n }\r\n else if (($.session.CFDelete || $.session.CFUpdate || $.session.CFView) && lastUpdateBy == $.session.UserId) {\r\n EnabledAllInputs();\r\n if (!$.session.CFDelete) {\r\n NEW_DELETE_BTN.classList.add('disabled');\r\n }\r\n if (!$.session.CFADDPayee) {\r\n ADD_NEW_PAYEE_BTN.classList.add('disabled');\r\n }\r\n if (!$.session.CFUpdate) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n }\r\n }\r\n else if ($.session.CFDelete || $.session.CFUpdate || $.session.CFView || $.session.CFEditAccountEntries) {\r\n EnabledAllInputs();\r\n if (!$.session.CFDelete) {\r\n NEW_DELETE_BTN.classList.add('disabled');\r\n }\r\n if (!$.session.CFADDPayee) {\r\n ADD_NEW_PAYEE_BTN.classList.add('disabled');\r\n }\r\n if (!$.session.CFUpdate) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n }\r\n }\r\n else {\r\n DisabledAllInputs();\r\n }\r\n }\r\n else {\r\n DisabledAllInputs();\r\n }\r\n }\r\n\r\n function DisabledAllInputs() {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n newDateInput.classList.add('disabled');\r\n newAmountInput.classList.add('disabled');\r\n newAccountDropdown.classList.add('disabled');\r\n newPayeeDropdown.classList.add('disabled');\r\n ADD_NEW_PAYEE_BTN.classList.add('disabled');\r\n newCategoryDropdown.classList.add('disabled');\r\n newSubCategoryDropdown.classList.add('disabled');\r\n newCheckNoInput.classList.add('disabled');\r\n newDescriptionInput.classList.add('disabled');\r\n newReceiptInput.classList.add('disabled');\r\n NEW_DELETE_BTN.classList.add('disabled');\r\n expenseRadio.classList.add('disabled');\r\n depositRadio.classList.add('disabled');\r\n IsDisabledBtn = true;\r\n }\r\n\r\n function EnabledAllInputs() {\r\n NEW_SAVE_BTN.classList.remove('disabled');\r\n newDateInput.classList.remove('disabled');\r\n newAmountInput.classList.remove('disabled');\r\n newAccountDropdown.classList.remove('disabled');\r\n newPayeeDropdown.classList.remove('disabled');\r\n newCategoryDropdown.classList.remove('disabled');\r\n newSubCategoryDropdown.classList.remove('disabled');\r\n newCheckNoInput.classList.remove('disabled');\r\n newDescriptionInput.classList.remove('disabled');\r\n newReceiptInput.classList.remove('disabled');\r\n NEW_DELETE_BTN.classList.remove('disabled');\r\n expenseRadio.classList.remove('disabled');\r\n depositRadio.classList.remove('disabled');\r\n IsDisabledBtn = false;\r\n }\r\n\r\n function checkRequiredFieldsOfNewEntry() {\r\n var date = newDateInput.querySelector('#newDateInput');\r\n var amount = newAmountInput.querySelector('#newAmountInput');\r\n var account = newAccountDropdown.querySelector('#newAccountDropdown');\r\n var payee = newPayeeDropdown.querySelector('#newPayeeDropdown');\r\n var category = newCategoryDropdown.querySelector('#newCategoryDropdown');\r\n var subCategory = newSubCategoryDropdown.querySelector('#newSubCategoryDropdown');\r\n\r\n if (date.value === '') {\r\n newDateInput.classList.add('error');\r\n } else {\r\n newDateInput.classList.remove('error');\r\n }\r\n\r\n if (amount.value === '') {\r\n newAmountInput.classList.add('error');\r\n } else {\r\n newAmountInput.classList.remove('error');\r\n }\r\n\r\n if (account.value === '') {\r\n newAccountDropdown.classList.add('error');\r\n } else {\r\n newAccountDropdown.classList.remove('error');\r\n }\r\n\r\n if (payee.value === '' || payee.value === 'Opening Balance') {\r\n newPayeeDropdown.classList.add('error');\r\n } else {\r\n newPayeeDropdown.classList.remove('error');\r\n }\r\n\r\n if (category.value === '') {\r\n newCategoryDropdown.classList.add('error');\r\n } else {\r\n newCategoryDropdown.classList.remove('error');\r\n }\r\n\r\n if (IsReconciled == 'N') {\r\n setBtnStatusOfNewEntry();\r\n }\r\n }\r\n\r\n function setBtnStatusOfNewEntry() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n if (tempdate != '' || tempamount != '' || tempaccount != '' || tempaccountType != '' || temppayee != '' || tempcategory != '' || tempsubCategory != '' || tempcheckNo != '' || tempdescription != '' || tempattachment != '' || tempreceipt != '' || tempSplit != '') {\r\n NEW_SAVE_BTN.classList.remove('disabled');\r\n }\r\n else {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n }\r\n }\r\n }\r\n\r\n function eventListeners() {\r\n ADD_NEW_PAYEE_BTN.addEventListener('keypress', event => {\r\n if (event.keyCode === 13 && ADD_NEW_PAYEE_BTN.classList.contains('disabled')) {\r\n IsAddNewPayDisable = false;\r\n }\r\n });\r\n ADD_NEW_PAYEE_BTN.addEventListener('click', event => {\r\n if (IsAddNewPayDisable) {\r\n buildNewPayeePopUp();\r\n }\r\n IsAddNewPayDisable = true;\r\n });\r\n SPLIT_BTN.addEventListener('click', event => {\r\n buildSplitTransectionPopUp();\r\n });\r\n NEW_SAVE_BTN.addEventListener('keypress', event => {\r\n if (event.keyCode === 13 && NEW_SAVE_BTN.classList.contains('disabled')) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n IsSaveDisable = false;\r\n }\r\n });\r\n NEW_SAVE_BTN.addEventListener('click', event => {\r\n if (IsSaveDisable) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n saveNewAccount();\r\n }\r\n IsSaveDisable = true;\r\n });\r\n NEW_DELETE_BTN.addEventListener('keypress', event => {\r\n if (event.keyCode === 13 && NEW_DELETE_BTN.classList.contains('disabled')) {\r\n IsDeleteDisable = false;\r\n }\r\n });\r\n NEW_DELETE_BTN.addEventListener('click', event => {\r\n if (IsDeleteDisable) {\r\n deleteAccountPOPUP();\r\n }\r\n IsDeleteDisable = true;\r\n });\r\n\r\n newDateInput.addEventListener('input', event => {\r\n if (!newDateInput.classList.contains('disabled')) {\r\n date = event.target.value;\r\n tempdate = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newAmountInput.addEventListener('input', event => {\r\n if (!newAmountInput.classList.contains('disabled')) {\r\n amount = event.target.value;\r\n if (amount.includes('.') && (amount.match(/\\./g).length > 1 || amount.toString().split('.')[1].length > 2)) {\r\n document.getElementById('newAmountInput').value = amount.substring(0, amount.length - 1);\r\n return;\r\n }\r\n tempamount = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n\r\n newAmountInput.addEventListener('focusout', event => {\r\n if (totalAmountSaved > 0 && totalAmountSaved != event.target.value && category == '--Split--') {\r\n errorPopup(2);\r\n }\r\n if (document.getElementById('newAmountInput').value != '')\r\n document.getElementById('newAmountInput').value = parseFloat(document.getElementById('newAmountInput').value).toFixed(2);\r\n });\r\n\r\n newPayeeDropdown.addEventListener('change', event => {\r\n if (!newPayeeDropdown.classList.contains('disabled')) {\r\n categoryID = event.target.options[event.target.selectedIndex].id;\r\n if (categoryID != '') {\r\n getCategorySubCategorybyPayee(categoryID);\r\n }\r\n payee = event.target.options[event.target.selectedIndex].text;\r\n temppayee = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newAccountDropdown.addEventListener('change', event => {\r\n if (!newAccountDropdown.classList.contains('disabled')) {\r\n accountID = event.target.options[event.target.selectedIndex].id;\r\n account = event.target.options[event.target.selectedIndex].text;\r\n tempaccount = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newCategoryDropdown.addEventListener('change', event => {\r\n if (!newCategoryDropdown.classList.contains('disabled')) {\r\n categoryID = event.target.options[event.target.selectedIndex].id;\r\n category = event.target.options[event.target.selectedIndex].text;\r\n if (category == '--Split--') {\r\n getSplitdata();\r\n }\r\n else {\r\n document.getElementById('SPLIT_BTN').style.display = 'none';\r\n totalAmountSaved = '';\r\n splitAmount = [];\r\n }\r\n tempcategory = 'ChangedValue';\r\n subCategory = '';\r\n populateSubCategoryDropdown(category);\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newSubCategoryDropdown.addEventListener('change', event => {\r\n if (!newSubCategoryDropdown.classList.contains('disabled')) {\r\n categoryID = event.target.options[event.target.selectedIndex].id;\r\n subCategory = event.target.options[event.target.selectedIndex].text;\r\n tempsubCategory = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newCheckNoInput.addEventListener('input', event => {\r\n if (!newCheckNoInput.classList.contains('disabled')) {\r\n checkNo = event.target.value;\r\n tempcheckNo = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newDescriptionInput.addEventListener('input', event => {\r\n if (!newDescriptionInput.classList.contains('disabled')) {\r\n description = event.target.value;\r\n tempdescription = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newReceiptInput.addEventListener('input', event => {\r\n if (!newReceiptInput.classList.contains('disabled')) {\r\n receipt = event.target.value;\r\n tempreceipt = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n expenseRadio.addEventListener('change', event => {\r\n if (!expenseRadio.classList.contains('disabled')) {\r\n accountType = 'E';\r\n tempaccountType = 'E';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n depositRadio.addEventListener('change', event => {\r\n if (!depositRadio.classList.contains('disabled')) {\r\n accountType = 'D';\r\n tempaccountType = 'D';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n }\r\n\r\n async function saveNewAccount() {\r\n if (document.getElementById('newCategoryDropdown').value != '--Split--') {\r\n splitAmount = [];\r\n }\r\n const amountType = document.getElementById(\"expenseRadio\").checked ? \"E\" : \"D\";\r\n if (attachmentArray == undefined || attachmentArray.length == 0) {\r\n const result = await ConsumerFinancesAjax.insertAccountAsync(date, amount, amountType, accountID, payee, category, subCategory, checkNo, description, null, null, receipt, BtnName, regId, splitAmount, categoryID);\r\n const { insertAccountResult } = result;\r\n if (insertAccountResult.registerId != null) {\r\n ConsumerFinances.loadConsumerFinanceLanding();\r\n }\r\n }\r\n else {\r\n const result = await ConsumerFinancesAjax.insertAccountAsync(date, amount, amountType, accountID, payee, category, subCategory, checkNo, description, attachmentId, attachmentDesc, receipt, BtnName, regId, splitAmount, categoryID);\r\n const { insertAccountResult } = result;\r\n\r\n if (insertAccountResult.registerId != null) {\r\n splitAmount = [];\r\n ConsumerFinances.loadConsumerFinanceLanding();\r\n }\r\n }\r\n }\r\n\r\n function deleteAccountPOPUP() {\r\n const confirmPopup = POPUP.build({\r\n hideX: true,\r\n classNames: ['warning'],\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n deleteAccount(confirmPopup);\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n\r\n message.innerText = 'Are you sure you would like to delete this record?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n async function deleteAccount(confirmPopup) {\r\n await ConsumerFinancesAjax.deleteConsumerFinanceAccountAsync(regId);\r\n POPUP.hide(confirmPopup);\r\n ConsumerFinances.loadConsumerFinanceLanding();\r\n }\r\n\r\n async function getCategorySubCategorybyPayee(categoryID) {\r\n const {\r\n getCategoriesSubCategoriesByPayeeResult: CategoriesSubCategory,\r\n } = await ConsumerFinancesAjax.getCategoriesSubCategoriesByPayeeAsync(categoryID);\r\n\r\n if (payee == 'Opening Balance') {\r\n category = '';\r\n } else {\r\n category = CategoriesSubCategory[0].CategoryDescription;\r\n }\r\n subCategory = CategoriesSubCategory[0].SubCategoryDescription;\r\n populateCategoryDropdown(categoryID);\r\n populateSubCategoryDropdown(category);\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n // Populate the Account DDL \r\n async function populateAccountDropdown() {\r\n const {\r\n getActiveAccountResult: accounts,\r\n } = await ConsumerFinancesAjax.getActiveAccountAsync($.session.consumerId, accountPermission);\r\n let data = accounts.map((account) => ({\r\n id: account.accountId,\r\n value: account.accountName,\r\n text: account.accountName\r\n }));\r\n if (data.length == 1) {\r\n account = data[0].value;\r\n accountID = data[0].id;\r\n }\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"newAccountDropdown\", data, account);\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n async function populatePayeeDropdown() {\r\n const {\r\n getPayeesResult: Payees,\r\n } = await ConsumerFinancesAjax.getPayeesAsync($.session.consumerId);\r\n let data = Payees.map((payees) => ({\r\n id: payees.CategoryID,\r\n value: payees.Description,\r\n text: payees.Description\r\n }));\r\n data.unshift({ id: null, value: 'Opening Balance', text: 'Opening Balance' });\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"newPayeeDropdown\", data, payee);\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n async function populateCategoryDropdown(categoryID) {\r\n const {\r\n getCatogoriesResult: Category,\r\n } = await ConsumerFinancesAjax.getCategoriesAsync(categoryID);\r\n let data = Category.map((category) => ({\r\n id: category.CategoryID,\r\n value: category.CategoryDescription,\r\n text: category.CategoryDescription\r\n }));\r\n\r\n data.unshift({ id: null, value: '--Split--', text: '--Split--' });\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"newCategoryDropdown\", data, category);\r\n if (category == '--Split--' && document.getElementById('SPLIT_BTN').style.display == 'none' && payee != 'Opening Balance') {\r\n buildSplitTransectionPopUp();\r\n }\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n async function populateSubCategoryDropdown(category) {\r\n const {\r\n getSubCatogoriesResult: SubCategory,\r\n } = await ConsumerFinancesAjax.getSubCategoriesAsync(category);\r\n let data = SubCategory.map((subCategory) => ({\r\n id: subCategory.CategoryID,\r\n value: subCategory.SubCategoryDescription,\r\n text: subCategory.SubCategoryDescription\r\n }));\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"newSubCategoryDropdown\", data, subCategory);\r\n checkRequiredFieldsOfNewEntry();\r\n\r\n }\r\n\r\n // build payee pop-up used for adding payee information\r\n async function buildNewPayeePopUp() {\r\n payeeId = '';\r\n payeeName = '';\r\n payeeaddress1 = '';\r\n payeeaddress2 = '';\r\n payeecity = '';\r\n payeestate = 'OH';\r\n payeezipcode = '';\r\n\r\n\r\n let addPayeePopup = POPUP.build({\r\n header: \"Add payee\",\r\n hideX: true,\r\n id: \"addPayeePopup\"\r\n });\r\n\r\n payeeInput = input.build({\r\n id: 'payeeInput',\r\n label: 'Name',\r\n value: (payeeName) ? payeeName : '',\r\n });\r\n\r\n address1Input = input.build({\r\n id: 'address1Input',\r\n label: 'Address 1',\r\n value: (payeeaddress1) ? payeeaddress1 : '',\r\n });\r\n\r\n address2Input = input.build({\r\n label: 'Address 2',\r\n value: (payeeaddress2) ? payeeaddress2 : '',\r\n });\r\n\r\n cityInput = input.build({\r\n id: 'cityInput',\r\n label: 'City',\r\n value: (payeecity) ? payeecity : '',\r\n });\r\n\r\n stateInput = input.build({\r\n id: 'stateInput',\r\n label: 'State',\r\n attributes: [{ key: 'maxlength', value: '2' }],\r\n value: (payeestate) ? payeestate : '',\r\n });\r\n\r\n zipcodeInput = input.build({\r\n id: 'zipcodeInput',\r\n label: 'Zip Code',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['zip'],\r\n attributes: [{ key: 'maxlength', value: '10' }],\r\n value: (payeezipcode) ? payeezipcode : '',\r\n });\r\n\r\n saveBtn = button.build({\r\n id: \"addpayeeSaveBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n callback: () => addPayeePopupDoneBtn()\r\n });\r\n\r\n cancelBtn = button.build({\r\n id: \"addpayeeCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => POPUP.hide(addPayeePopup)\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n addPayeePopup.appendChild(payeeInput);\r\n addPayeePopup.appendChild(address1Input);\r\n addPayeePopup.appendChild(address2Input);\r\n addPayeePopup.appendChild(cityInput);\r\n addPayeePopup.appendChild(stateInput);\r\n addPayeePopup.appendChild(zipcodeInput);\r\n\r\n var confirmMessage = document.createElement('div');\r\n confirmMessage.innerHTML = `

`;\r\n addPayeePopup.appendChild(confirmMessage);\r\n\r\n addPayeePopup.appendChild(btnWrap);\r\n popUpEventHandlers();\r\n POPUP.show(addPayeePopup);\r\n checkRequiredFields();\r\n\r\n }\r\n\r\n function popUpEventHandlers() {\r\n\r\n payeeInput.addEventListener('input', event => {\r\n payeeName = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n address1Input.addEventListener('input', event => {\r\n payeeaddress1 = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n address2Input.addEventListener('input', event => {\r\n payeeaddress2 = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n cityInput.addEventListener('input', event => {\r\n payeecity = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n stateInput.addEventListener('input', event => {\r\n payeestate = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n zipcodeInput.addEventListener('input', event => {\r\n payeezipcode = event.target.value;\r\n var reg = new RegExp('^[0-9 -]+$');\r\n if (payeezipcode) {\r\n if (!reg.test(payeezipcode)) {\r\n document.getElementById('zipcodeInput').value = payeezipcode.substring(0, payeezipcode.length - 1);\r\n return;\r\n }\r\n payeezipcode = payeezipcode.split('-').join('');\r\n let finalVal = payeezipcode.match(/.{1,5}/g).join('-');\r\n document.getElementById('zipcodeInput').value = finalVal;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n }\r\n\r\n function checkRequiredFields() {\r\n var payee = payeeInput.querySelector('#payeeInput');\r\n var address1 = address1Input.querySelector('#address1Input');\r\n var city = cityInput.querySelector('#cityInput');\r\n var state = stateInput.querySelector('#stateInput');\r\n var zipcode = zipcodeInput.querySelector('#zipcodeInput');\r\n\r\n if (payee.value === '') {\r\n payeeInput.classList.add('errorPopup');\r\n } else {\r\n payeeInput.classList.remove('errorPopup');\r\n }\r\n\r\n if (address1.value === '') {\r\n address1Input.classList.add('errorPopup');\r\n } else {\r\n address1Input.classList.remove('errorPopup');\r\n }\r\n\r\n if (city.value === '') {\r\n cityInput.classList.add('errorPopup');\r\n } else {\r\n cityInput.classList.remove('errorPopup');\r\n }\r\n\r\n if (state.value === '') {\r\n stateInput.classList.add('errorPopup');\r\n } else {\r\n stateInput.classList.remove('errorPopup');\r\n }\r\n\r\n if (zipcode.value === '') {\r\n zipcodeInput.classList.add('errorPopup');\r\n } else {\r\n zipcodeInput.classList.remove('errorPopup');\r\n }\r\n setBtnStatus();\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function addPayeePopupDoneBtn() {\r\n const result = await ConsumerFinancesAjax.insertPayeeAsync(payeeName, payeeaddress1, payeeaddress2, payeecity, payeestate, payeezipcode);\r\n const { insertPayeeResult } = result;\r\n\r\n var messagetext = document.getElementById('confirmMessage');\r\n messagetext.innerHTML = ``;\r\n if (insertPayeeResult.RegionID == '-1') {\r\n duplicatePayeErrorPopup();\r\n\r\n }\r\n else {\r\n POPUP.hide(addPayeePopup);\r\n payee = payeeName;\r\n document.getElementById('newCategoryDropdown').value = '';\r\n document.getElementById('newSubCategoryDropdown').value = '';\r\n temppayee = 'ChangedValue';\r\n populatePayeeDropdown();\r\n }\r\n\r\n }\r\n\r\n function duplicatePayeErrorPopup() {\r\n const duplicatePayeErrorConfPOPUP = POPUP.build({\r\n hideX: true,\r\n classNames: ['warning'],\r\n });\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(duplicatePayeErrorConfPOPUP);\r\n POPUP.show(addPayeePopup);\r\n },\r\n });\r\n okBtn.style.width = '100%';\r\n const message = document.createElement('p');\r\n message.innerText = 'You are trying to add a payee that already exists, please select the existing payee or enter a new payee with a different name.';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n duplicatePayeErrorConfPOPUP.appendChild(message);\r\n duplicatePayeErrorConfPOPUP.appendChild(okBtn);\r\n okBtn.focus();\r\n POPUP.show(duplicatePayeErrorConfPOPUP);\r\n }\r\n\r\n async function buildSplitTransectionPopUp() {\r\n if (splitAmount.length > 3) {\r\n numberOfRows = splitAmount.length + 2;\r\n }\r\n\r\n regTotalAmount = document.getElementById('newAmountInput').value != '' ? parseFloat(document.getElementById('newAmountInput').value).toFixed(2) : 0;\r\n splitTransPopup = POPUP.build({\r\n header: \"Split Transaction\",\r\n hideX: true,\r\n id: \"splitTransPopup\"\r\n });\r\n\r\n splitTransPopup.style.maxWidth = '900px';\r\n\r\n for (let i = 0; i < numberOfRows; i++) {\r\n splitCategoryDropdownN[i] = dropdown.build({\r\n id: 'splitCategoryDropdownN' + i,\r\n label: \"Category\",\r\n dropdownId: \"splitCategoryDropdownN\" + i,\r\n });\r\n\r\n splitDescriptionInputN[i] = input.build({\r\n id: 'splitDescriptionInputN' + i,\r\n type: 'text',\r\n label: 'Description',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: splitAmount[i] != undefined ? splitAmount[i].description : '',\r\n });\r\n\r\n splitAmountInputN[i] = input.build({\r\n id: 'splitAmountInputN' + i,\r\n type: 'number',\r\n label: 'Amount',\r\n style: 'secondary',\r\n value: splitAmount[i] != undefined ? splitAmount[i].amount : '',\r\n });\r\n\r\n btnWrapInputsN = document.createElement(\"div\");\r\n btnWrapInputsN.classList.add(\"cFInputWrap\");\r\n splitCategoryDropdownN[i].classList.add('width37Per');\r\n btnWrapInputsN.appendChild(splitCategoryDropdownN[i]);\r\n splitDescriptionInputN[i].classList.add('width37Per');\r\n btnWrapInputsN.appendChild(splitDescriptionInputN[i]);\r\n splitAmountInputN[i].classList.add('width21Per');\r\n btnWrapInputsN.appendChild(splitAmountInputN[i]);\r\n splitTransPopup.appendChild(btnWrapInputsN);\r\n }\r\n\r\n\r\n regAmountTotalInput = input.build({\r\n id: 'regAmountTotalInput',\r\n type: 'number',\r\n label: 'Register Total',\r\n style: 'secondary',\r\n readonly: true,\r\n value: regTotalAmount,\r\n });\r\n\r\n amountTotalInput = input.build({\r\n id: 'amountTotalInput',\r\n type: 'number',\r\n label: 'Total',\r\n style: 'secondary',\r\n readonly: true,\r\n value: totalAmount,\r\n });\r\n\r\n let totalBtnWrapInputs = document.createElement(\"div\");\r\n totalBtnWrapInputs.classList.add(\"cFInputWrap\");\r\n regAmountTotalInput.classList.add('width21Per');\r\n regAmountTotalInput.classList.add('marginLeft50Per');\r\n totalBtnWrapInputs.appendChild(regAmountTotalInput);\r\n amountTotalInput.classList.add('width21Per');\r\n totalBtnWrapInputs.appendChild(amountTotalInput);\r\n splitTransPopup.appendChild(totalBtnWrapInputs);\r\n\r\n saveSplitBtn = button.build({\r\n id: \"saveSplitBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n callback: () => splitTransPopupSaveBtn()\r\n });\r\n\r\n cancelSplitBtn = button.build({\r\n id: \"cancelSplitBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => {\r\n document.getElementById('newCategoryDropdown').value = categoryOldVal;\r\n\r\n if (tempAmountval) {\r\n document.getElementById('newAmountInput').value = tempAmountval;\r\n amount = tempAmountval;\r\n }\r\n\r\n POPUP.hide(splitTransPopup);\r\n checkRequiredFieldsOfNewEntry();\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveSplitBtn);\r\n btnWrap.appendChild(cancelSplitBtn);\r\n splitTransPopup.appendChild(btnWrap);\r\n popUpSplitTransectionEventHandlers();\r\n POPUP.show(splitTransPopup);\r\n populateSplitCategoryDropdown('');\r\n splitAmountTotal();\r\n }\r\n\r\n function popUpSplitTransectionEventHandlers() {\r\n for (let i = 0; i < numberOfRows; i++) {\r\n splitAmountInputN[i].addEventListener('input', event => {\r\n tempAmouts = event.target.value;\r\n if (tempAmouts.includes('.') && (tempAmouts.match(/\\./g).length > 1 || tempAmouts.toString().split('.')[1].length > 2)) {\r\n splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value = tempAmouts.substring(0, tempAmouts.length - 1);\r\n return;\r\n }\r\n checkRequiredFieldsSplitTransection();\r\n splitAmountTotal();\r\n });\r\n splitAmountInputN[i].addEventListener('focusout', event => {\r\n tempAmouts = event.target.value;\r\n if (tempAmouts.includes('.') && (tempAmouts.match(/\\./g).length > 1 || tempAmouts.toString().split('.')[1].length > 2)) {\r\n splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value = tempAmouts.substring(0, tempAmouts.length - 1);\r\n return;\r\n }\r\n checkRequiredFieldsSplitTransection();\r\n splitAmountTotal();\r\n if (splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value != '')\r\n splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value = parseFloat(splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value).toFixed(2);\r\n });\r\n\r\n splitDescriptionInputN[i].addEventListener('input', event => {\r\n checkRequiredFieldsSplitTransection();\r\n });\r\n\r\n splitCategoryDropdownN[i].addEventListener('change', event => {\r\n checkRequiredFieldsSplitTransection();\r\n });\r\n }\r\n }\r\n\r\n function checkRequiredFieldsSplitTransection() {\r\n for (let i = 0; i < 2; i++) {\r\n var SplitCategory = splitCategoryDropdownN[i].querySelector('#splitCategoryDropdownN' + i);\r\n var splitAmt = splitAmountInputN[i].querySelector('#splitAmountInputN' + i);\r\n if (SplitCategory.value === '') {\r\n splitCategoryDropdownN[i].classList.add('errorPopup');\r\n } else {\r\n splitCategoryDropdownN[i].classList.remove('errorPopup');\r\n }\r\n\r\n if (splitAmt.value === '') {\r\n splitAmountInputN[i].classList.add('errorPopup');\r\n } else {\r\n splitAmountInputN[i].classList.remove('errorPopup');\r\n }\r\n }\r\n\r\n for (let i = 2; i < numberOfRows; i++) {\r\n var SplitCategory = splitCategoryDropdownN[i].querySelector('#splitCategoryDropdownN' + i);\r\n var splitAmt = splitAmountInputN[i].querySelector('#splitAmountInputN' + i);\r\n if (SplitCategory.value !== '' && splitAmt.value === '') {\r\n splitAmountInputN[i].classList.add('errorPopup');\r\n } else {\r\n splitAmountInputN[i].classList.remove('errorPopup');\r\n }\r\n if (SplitCategory.value === '' && splitAmt.value !== '') {\r\n splitCategoryDropdownN[i].classList.add('errorPopup');\r\n } else {\r\n splitCategoryDropdownN[i].classList.remove('errorPopup');\r\n }\r\n }\r\n\r\n setBtnStatusSplitTransection();\r\n }\r\n\r\n function setBtnStatusSplitTransection() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n saveSplitBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveSplitBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function populateSplitCategoryDropdown(categoryID) { \r\n const {\r\n getSplitCategoriesSubCategoriesResult: Category,\r\n } = await ConsumerFinancesAjax.getSplitCategoriesSubCategoriesAsync(categoryID);\r\n let data = Category.map((category) => ({\r\n id: category.CategoryID,\r\n value: category.CategoryID,\r\n text: category.CategoryDescription\r\n }));\r\n data.unshift({ id: null, value: '', text: '' });\r\n for (let i = 0; i < numberOfRows; i++) {\r\n dropdown.populate(\"splitCategoryDropdownN\" + i, data, splitAmount[i] != undefined ? splitAmount[i].categoryId : '');\r\n }\r\n checkRequiredFieldsSplitTransection();\r\n }\r\n\r\n function splitAmountTotal() {\r\n var sum = 0;\r\n for (var i = 0; i < numberOfRows; i++) {\r\n if (splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value != '')\r\n sum += parseFloat(splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value);\r\n }\r\n totalAmount = parseFloat(sum).toFixed(2); \r\n document.getElementById('amountTotalInput').value = sum.toFixed(2);\r\n if (document.getElementById('newAmountInput').value == '') {\r\n document.getElementById('newAmountInput').value = sum.toFixed(2);\r\n document.getElementById('regAmountTotalInput').value = sum.toFixed(2);\r\n amount = sum.toFixed(2);\r\n }\r\n }\r\n\r\n async function splitTransPopupSaveBtn() {\r\n if (regTotalAmount != totalAmount) {\r\n errorPopup(1);\r\n }\r\n else {\r\n splitTransSaveData();\r\n POPUP.hide(splitTransPopup);\r\n }\r\n }\r\n\r\n function errorPopup(errorCode) {\r\n const errorConfPOPUP = POPUP.build({\r\n hideX: true,\r\n classNames: ['warning', 'popupSize'],\r\n });\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n if (errorCode == 1) {\r\n cancelSplitBtn.classList.remove('disabled');\r\n POPUP.hide(errorConfPOPUP);\r\n POPUP.hide(splitTransPopup);\r\n document.getElementById('newAmountInput').value = parseFloat(totalAmount).toFixed(2);\r\n amount = parseFloat(totalAmount).toFixed(2);\r\n splitTransSaveData();\r\n }\r\n else {\r\n POPUP.hide(errorConfPOPUP);\r\n buildSplitTransectionPopUp();\r\n }\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n if (errorCode == 1) {\r\n cancelSplitBtn.classList.remove('disabled');\r\n POPUP.hide(errorConfPOPUP);\r\n POPUP.show(splitTransPopup);\r\n } else {\r\n document.getElementById('newAmountInput').value = parseFloat(totalAmount).toFixed(2);\r\n amount = parseFloat(totalAmount).toFixed(2);\r\n POPUP.hide(errorConfPOPUP);\r\n }\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n if (errorCode == 1)\r\n message.innerText = 'The total of this split transaction dose not match the total entered on the New Entry form. Would you like to change the total on the New Entry form.';\r\n else\r\n message.innerText = 'The Amount entered does not equal the total amount for this split transaction. Would you like to edit the split transaction?';\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n errorConfPOPUP.appendChild(message);\r\n errorConfPOPUP.appendChild(btnWrap);\r\n POPUP.show(errorConfPOPUP);\r\n if (errorCode == 1)\r\n cancelSplitBtn.classList.add('disabled');\r\n }\r\n\r\n async function splitTransSaveData() {\r\n splitAmount = [];\r\n for (let i = 0; i < numberOfRows; i++) {\r\n var SplitCategory = splitCategoryDropdownN[i].querySelector('#splitCategoryDropdownN' + i);\r\n var desc = splitDescriptionInputN[i].querySelector('#splitDescriptionInputN' + i);\r\n var splitAmt = splitAmountInputN[i].querySelector('#splitAmountInputN' + i);\r\n if (SplitCategory.value !== '') {\r\n splitAmount.push({\r\n \"itemNumber\": i + 1,\r\n \"categoryId\": SplitCategory.options[SplitCategory.selectedIndex].id,\r\n \"category\": SplitCategory.options[SplitCategory.selectedIndex].value,\r\n \"description\": desc.value,\r\n \"amount\": splitAmt.value\r\n });\r\n }\r\n }\r\n document.getElementById('SPLIT_BTN').style.display = 'block';\r\n tempSplit = 'ChangedValue';\r\n tempAmountval = totalAmount;\r\n totalAmountSaved = totalAmount;\r\n categoryOldVal = document.getElementById('newCategoryDropdown').value;\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n function getaccountPermission() {\r\n accountPermission = '';\r\n tempAccountPer = [];\r\n if ($.session.CFViewChecking)\r\n tempAccountPer.push('Checking');\r\n\r\n if ($.session.CFViewCraditCard) {\r\n tempAccountPer.push('Credit Card');\r\n }\r\n\r\n if ($.session.CFViewFoodStamp) {\r\n tempAccountPer.push('Food Stamps');\r\n }\r\n\r\n if ($.session.CFViewPettyCash) {\r\n tempAccountPer.push('Petty Cash');\r\n }\r\n\r\n if ($.session.CFViewShaving) {\r\n tempAccountPer.push('Savings');\r\n }\r\n\r\n if ($.session.CFViewChristmasClub) {\r\n tempAccountPer.push('Christmas Club');\r\n }\r\n if ($.session.CFViewSystem20183A) {\r\n tempAccountPer.push('System 2018.3A');\r\n }\r\n if ($.session.CFViewSystem20183) {\r\n tempAccountPer.push('System 2018.3');\r\n }\r\n if ($.session.CFViewOhioEBT) {\r\n tempAccountPer.push('Ohio EBT');\r\n }\r\n if ($.session.CFViewViewFoodStampDebitCardEBT) {\r\n tempAccountPer.push('Food Stamp Debit Card EBT'); \r\n }\r\n\r\n if (tempAccountPer.length > 0)\r\n accountPermission = tempAccountPer.toString();\r\n else\r\n accountPermission = '';\r\n }\r\n\r\n return {\r\n init,\r\n buildNewEntryForm,\r\n populatePayeeDropdown,\r\n populateCategoryDropdown,\r\n populateAccountDropdown,\r\n };\r\n})(); ","const covidChecklist = (function () {\r\n let inputs, checklistTable, tableContainer;\r\n let completedChecklistData, activeChecklistId, rosterLocations;\r\n let checklistMode; //'update' || 'insert'\r\n let typeOfChecklist; // 'employee' || 'consumer'\r\n let initialLoad;\r\n let consumer;\r\n\r\n function buildEmployeePage() {\r\n ////////////////////\r\n // Main Checklist Card Element\r\n const checklistCard = document.createElement(\"div\");\r\n checklistCard.classList.add(\"card\", \"checklistCard\");\r\n ////////////////////\r\n // Heading for checklist card\r\n const mainHeading = document.createElement(\"div\");\r\n mainHeading.classList.add(\"card__header\");\r\n mainHeading.innerHTML =\r\n typeOfChecklist === \"employee\"\r\n ? \"

My Covid-19 Checklist

\"\r\n : \"

Consumer Covid-19 Checklist

\";\r\n checklistCard.appendChild(mainHeading);\r\n ////////////////////\r\n // Consumer Name display (Consumer Checklist only)\r\n if (typeOfChecklist === \"consumer\") {\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"currConsumerDisp\");\r\n consumerNameDisplay.innerHTML = `Checklist for: ${consumer.name}`;\r\n checklistCard.appendChild(consumerNameDisplay);\r\n }\r\n ////////////////////\r\n //Top Questions\r\n const mainSection = document.createElement(\"div\");\r\n mainSection.classList.add(\"card__body\", \"covidEmployeeCard_details\");\r\n checklistCard.appendChild(mainSection);\r\n mainSection.appendChild(inputs.dateInput);\r\n mainSection.appendChild(inputs.timeInput);\r\n mainSection.appendChild(inputs.locationDropdown);\r\n mainSection.appendChild(inputs.settingInput);\r\n ////////////////////\r\n // Symptom Questions\r\n const symptomHeading = document.createElement(\"h3\");\r\n symptomHeading.classList.add(\"covidSubHeading\");\r\n symptomHeading.innerText = \"Symptoms\";\r\n const symptomSection = document.createElement(\"div\");\r\n symptomSection.classList.add(\"symptomSection\");\r\n mainSection.appendChild(symptomHeading);\r\n inputs.symptomElements.forEach((el) => {\r\n symptomSection.appendChild(el);\r\n });\r\n symptomSection.appendChild(inputs.otherInput);\r\n mainSection.appendChild(symptomSection);\r\n ////////////////////\r\n // Buttons\r\n const buttonDiv = document.createElement(\"div\");\r\n buttonDiv.classList.add(\"btnWrap\");\r\n const buttonDiv2 = buttonDiv.cloneNode();\r\n buttonDiv2.id = \"editButtonDiv\";\r\n buttonDiv2.style.display = \"none\";\r\n buttonDiv.appendChild(inputs.saveBtn);\r\n buttonDiv.appendChild(inputs.cancelBtn);\r\n buttonDiv2.appendChild(inputs.deleteBtn);\r\n mainSection.appendChild(buttonDiv);\r\n mainSection.appendChild(buttonDiv2);\r\n ////////////////////\r\n // Warning about not a checklist you didn't create\r\n // (consumer only, they can't edit or delete them)\r\n if (typeOfChecklist === \"consumer\") {\r\n const noEditWarning = document.createElement(\"div\");\r\n noEditWarning.innerHTML = `

This record was created by another user. \r\n Deleting and editing is disabled.

`;\r\n noEditWarning.classList.add(\"covidNoEdit\");\r\n noEditWarning.style.display = \"none\";\r\n mainSection.appendChild(noEditWarning);\r\n }\r\n ////////////////////\r\n // Adding Card and table to action center\r\n DOM.ACTIONCENTER.appendChild(checklistCard);\r\n tableContainer = document.createElement(\"div\");\r\n tableContainer.classList.add(\"covidTableContainer\");\r\n DOM.ACTIONCENTER.appendChild(tableContainer);\r\n tableContainer.appendChild(checklistTable);\r\n ////////////////////\r\n // After Build actions\r\n populateLocationDropdown();\r\n populateTable(UTIL.getTodaysDate(false));\r\n }\r\n\r\n function buildEmployeeChecklistTable() {\r\n const date = UTIL.formatDateFromIso(UTIL.getTodaysDate());\r\n checklistTable = table.build({\r\n tableId: \"employeeChecklistTable\",\r\n headline: `Completed Checklists for ${date}`,\r\n columnHeadings: [\"Time\", \"Location\", \"Setting\"],\r\n });\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = checklistTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'date'); // Time\r\n headers[1].setAttribute('data-type', 'string'); // Location\r\n headers[2].setAttribute('data-type', 'string'); //Setting\r\n\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(checklistTable);\r\n }\r\n\r\n async function populateTable(date) {\r\n try {\r\n completedChecklistData = {};\r\n const peopleId =\r\n typeOfChecklist === \"employee\" ? $.session.PeopleId : consumer.id;\r\n const consumerChecklist = typeOfChecklist === 'consumer' ? 'T' : 'F';\r\n const checklistResult = (\r\n await covidAjax.getCovidChecklists(peopleId, date, consumerChecklist)\r\n ).getIndividualsCovidDetailsResult;\r\n // Update Table Header //\r\n const displayDate = UTIL.formatDateFromIso(date);\r\n const tableHeader = document\r\n .getElementById(\"employeeChecklistTable\")\r\n .querySelector(\".table__headline\")\r\n .getElementsByTagName(\"h2\")[0];\r\n tableHeader.innerText = `Completed Checklists for ${displayDate}`;\r\n ///////////////////\r\n // Break Down Data //\r\n checklistResult.forEach((checklist) => {\r\n //Create Completed Checklist Object//\r\n const checklistData = {\r\n enteredBy: checklist.enteredBy,\r\n time: checklist.assessmentTime,\r\n locationId: checklist.locationId,\r\n setting: checklist.settingType,\r\n cough: checklist.cough,\r\n diarrhea: checklist.diarrhea,\r\n fever: checklist.fever,\r\n malaise: checklist.malaise,\r\n nasalCong: checklist.nasalCong,\r\n nausea: checklist.nausea,\r\n tasteAndSmell: checklist.tasteAndSmell,\r\n other: checklist.notes,\r\n shortnessBreath: checklist.shortnessBreath,\r\n soreThroat: checklist.soreThroat,\r\n };\r\n completedChecklistData[checklist.assessmentId] = checklistData;\r\n });\r\n // Create Table Data for populating table //\r\n let tableData = []\r\n checklistResult.forEach((checklist) => {\r\n let location\r\n try {\r\n location = rosterLocations[checklist.locationId].name;\r\n } catch (error) {\r\n console.info(`NOTICE: skipping record ${checklist.assessmentId}. User might not have permission to locaiton ${checklist.locationId}`)\r\n return;\r\n }\r\n const time = UTIL.formatTimeString(checklist.assessmentTime);\r\n const setting = checklist.settingType;\r\n tableData.push({\r\n values: [time, location, setting],\r\n id: checklist.assessmentId,\r\n onClick: () => {\r\n // Clicking on row of a table goes into edit mode //\r\n activeChecklistId = checklist.assessmentId;\r\n covidChecklistActions.loadChecklist(\r\n checklist.assessmentId,\r\n completedChecklistData,\r\n inputs\r\n );\r\n inputs.saveBtn.innerText = \"Update\";\r\n inputs.saveBtn.setAttribute(\"data-function\", \"update\");\r\n checklistMode = \"update\";\r\n // If they didn't create the checklist they can't make changes to it\r\n if (typeOfChecklist === \"consumer\") {\r\n if (checklist.enteredBy.toLowerCase() !== $.session.UserId.toLowerCase()) {\r\n inputs.saveBtn.classList.add(\"disabled\");\r\n document.querySelector(\".covidNoEdit\").style.display = \"block\";\r\n document.getElementById(\"editButtonDiv\").style.display = \"none\";\r\n } else {\r\n inputs.saveBtn.classList.remove(\"disabled\");\r\n document.querySelector(\".covidNoEdit\").style.display = \"none\";\r\n document.getElementById(\"editButtonDiv\").style.display = \"flex\";\r\n }\r\n } else {\r\n inputs.saveBtn.classList.remove(\"disabled\");\r\n document.getElementById(\"editButtonDiv\").style.display = \"flex\";\r\n }\r\n },\r\n });\r\n });\r\n\r\n table.populate(checklistTable, tableData);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n function populateLocationDropdown() {\r\n const rawLocations = covidLanding.locations();\r\n rosterLocations = {};\r\n\r\n const dropdownData = rawLocations.map((location) => {\r\n const id = location.ID;\r\n const name = location.Name;\r\n // rosterLocations Object is used for getting the Name of the location\r\n // in the Completed checklist table\r\n rosterLocations[id] = { name: name };\r\n\r\n return {\r\n text: name,\r\n value: id,\r\n };\r\n });\r\n const defaultLocation = defaults.getLocation('roster')\r\n dropdown.populate(inputs.locationDropdown, dropdownData, defaultLocation);\r\n }\r\n\r\n function eventListeners() {\r\n // changing date re-populates the completed checklist table for that date\r\n inputs.dateInput.addEventListener(\"input\", () => {\r\n const newDate = inputs.dateInput.firstChild.value\r\n roster2.updateSelectedDate(newDate);\r\n populateTable(newDate);\r\n });\r\n // After records are saved, or deleted the checklist gets reset to default values\r\n inputs.saveBtn.addEventListener(\"click\", () => {\r\n const peopleId =\r\n typeOfChecklist === \"employee\" ? $.session.PeopleId : consumer.id;\r\n covidChecklistActions.insertUpdateChecklist(\r\n inputs,\r\n activeChecklistId,\r\n peopleId,\r\n typeOfChecklist,\r\n resetChecklist\r\n );\r\n });\r\n /* \r\n When in 'edit mode' the cancel button resets any changes\r\n sets the checklist back to defaults, and sets the mode to 'insert'.\r\n When in 'insert new record mode' cancel button goes\r\n back to the covid landing page.\r\n */\r\n inputs.cancelBtn.addEventListener(\"click\", () => {\r\n if (checklistMode === \"update\") {\r\n resetChecklist();\r\n } else {\r\n covidChecklistActions.cancel();\r\n }\r\n });\r\n inputs.deleteBtn.addEventListener(\"click\", () => deleteConfirmation());\r\n }\r\n // Resets the checkist back to the way it was when first entering the page.\r\n function resetChecklist() {\r\n covidChecklistActions.clearChecklist(inputs);\r\n activeChecklistId = null;\r\n inputs.saveBtn.innerText = \"Save\";\r\n inputs.saveBtn.setAttribute(\"data-function\", \"insert\");\r\n checklistMode = \"insert\";\r\n if (typeOfChecklist === \"consumer\") {\r\n inputs.saveBtn.classList.remove(\"disabled\");\r\n document.querySelector(\".covidNoEdit\").style.display = \"none\";\r\n }\r\n document.getElementById(\"editButtonDiv\").style.display = \"none\";\r\n }\r\n\r\n async function deleteChecklist() {\r\n try {\r\n pendingSave.show(\"Deleting...\");\r\n await covidAjax.deleteCovidChecklist(activeChecklistId);\r\n resetChecklist();\r\n pendingSave.fulfill(\"Delete Successful\");\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n }, 1000);\r\n } catch (err) {\r\n console.error(err);\r\n pendingSave.reject(\"Delete Failed. Please Try Again.\");\r\n setTimeout(() => failSave.hide(), 2000);\r\n resetChecklist();\r\n }\r\n }\r\n\r\n function deleteConfirmation() {\r\n const popup = POPUP.build({\r\n id: \"deleteWarningPopup\",\r\n classNames: \"warning\",\r\n });\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n const yesBtn = button.build({\r\n text: \"Yes\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"checkmark\",\r\n callback: function () {\r\n POPUP.hide(popup);\r\n deleteChecklist();\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: \"No\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"close\",\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n const warningMessage = document.createElement(\"p\");\r\n warningMessage.innerHTML =\r\n \"Are you sure you would like to delete this completed COVID-19 Checklist?\";\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case \"miniRosterDone\": {\r\n if (initialLoad) {\r\n initialLoad = false;\r\n const activeConsumer = roster2.getActiveConsumers();\r\n activeConsumer.forEach((consumer) => {\r\n roster2.removeConsumerFromActiveConsumers(consumer.id);\r\n });\r\n consumer.name = activeConsumer[0].card.innerText;\r\n consumer.id = activeConsumer[0].id;\r\n DOM.toggleNavLayout();\r\n buildEmployeeChecklistTable();\r\n buildEmployeePage();\r\n eventListeners();\r\n } else {\r\n const activeConsumer = roster2.getActiveConsumers();\r\n if (activeConsumer.length > 0) {\r\n activeConsumer.forEach((consumer) => {\r\n roster2.removeConsumerFromActiveConsumers(consumer.id);\r\n });\r\n }\r\n consumer.name = activeConsumer[0].card.innerText;\r\n consumer.id = activeConsumer[0].id;\r\n document.querySelector('.currConsumerDisp').innerHTML = `Checklist for: ${consumer.name}`\r\n DOM.toggleNavLayout();\r\n resetChecklist();\r\n }\r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n if (initialLoad) {\r\n covidLanding.init();\r\n } else {\r\n DOM.toggleNavLayout();\r\n roster2.clearActiveConsumers();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function init(type) {\r\n typeOfChecklist = type;\r\n checklistMode = \"insert\";\r\n initialLoad = true;\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n inputs = covidChecklistElements.init();\r\n switch (typeOfChecklist) {\r\n case \"employee\":\r\n setActiveModuleSectionAttribute(\"checklist\");\r\n buildEmployeeChecklistTable();\r\n buildEmployeePage();\r\n eventListeners();\r\n break;\r\n case \"consumer\":\r\n consumer = {};\r\n setActiveModuleSectionAttribute(\"checklist\");\r\n roster2.miniRosterinit(null, {hideDate: true})\r\n roster2.showMiniRoster({ hideDate: true });\r\n break;\r\n default:\r\n covidLanding.init();\r\n break;\r\n }\r\n }\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n };\r\n})();\r\n","const covidChecklistActions = (function () {\r\n function loadChecklist(id, completedChecklists, inputs) {\r\n inputs.timeInput.firstChild.value = completedChecklists[id].time;\r\n inputs.locationDropdown.firstChild.value = completedChecklists[id].locationId;\r\n inputs.settingInput.firstChild.value = completedChecklists[id].setting;\r\n inputs.otherInput.firstChild.value = completedChecklists[id].other;\r\n inputs.settingInput.firstChild.dispatchEvent(new Event('keyup'));\r\n inputs.otherInput.firstChild.dispatchEvent(new Event('keyup'));\r\n\r\n\r\n //symptoms\r\n //cough\r\n completedChecklists[id].cough === \"Y\"\r\n ? document.getElementById(\"cough-yes\").checked = true\r\n : document.getElementById(\"cough-no\").checked = true;\r\n //diarrhea\r\n completedChecklists[id].diarrhea === \"Y\"\r\n ? document.getElementById(\"diarrhea-yes\").checked = true\r\n : document.getElementById(\"diarrhea-no\").checked = true;\r\n //fever\r\n completedChecklists[id].fever === \"Y\"\r\n ? document.getElementById(\"fever-yes\").checked = true\r\n : document.getElementById(\"fever-no\").checked = true;\r\n //malaise\r\n completedChecklists[id].malaise === \"Y\"\r\n ? document.getElementById(\"malaise-yes\").checked = true\r\n : document.getElementById(\"malaise-no\").checked = true;\r\n //nasalCong\r\n completedChecklists[id].nasalCong === \"Y\"\r\n ? document.getElementById(\"nasal_congestion-yes\").checked = true\r\n : document.getElementById(\"nasal_congestion-no\").checked = true;\r\n //nausea\r\n completedChecklists[id].nausea === \"Y\"\r\n ? document.getElementById(\"nausea-yes\").checked = true\r\n : document.getElementById(\"nausea-no\").checked = true;\r\n //shortnessBreath\r\n completedChecklists[id].shortnessBreath === \"Y\"\r\n ? document.getElementById(\"shortness_of_breath-yes\").checked = true\r\n : document.getElementById(\"shortness_of_breath-no\").checked = true;\r\n //soreThroat\r\n completedChecklists[id].soreThroat === \"Y\"\r\n ? document.getElementById(\"sore_throat-yes\").checked = true\r\n : document.getElementById(\"sore_throat-no\").checked = true;\r\n //tasteAndSmell\r\n completedChecklists[id].tasteAndSmell === \"Y\"\r\n ? document.getElementById(\"taste_and_smell-yes\").checked = true\r\n : document.getElementById(\"taste_and_smell-no\").checked = true;\r\n }\r\n \r\n async function insertUpdateChecklist(inputs, checklistId, peopleId, checklistType, callback) {\r\n const action = document.getElementById(\"covidSaveUpdate\").getAttribute('data-function');\r\n const date = inputs.dateInput.firstChild.value;\r\n const time = inputs.timeInput.firstChild.value;\r\n const location = inputs.locationDropdown.firstChild.value;\r\n const setting = UTIL.removeUnsavableNoteText(inputs.settingInput.firstChild.value);\r\n const other = UTIL.removeUnsavableNoteText(inputs.otherInput.firstChild.value);\r\n\r\n const cough = document.getElementById(\"cough-yes\").checked ? \"Y\":\"N\";\r\n const diarrhea = document.getElementById(\"diarrhea-yes\").checked ? \"Y\":\"N\";\r\n const fever = document.getElementById(\"fever-yes\").checked ? \"Y\":\"N\";\r\n const malaise = document.getElementById(\"malaise-yes\").checked ? \"Y\":\"N\";\r\n const nasalCong = document.getElementById(\"nasal_congestion-yes\").checked ? \"Y\":\"N\";\r\n const nausea = document.getElementById(\"nausea-yes\").checked ? \"Y\":\"N\";\r\n const shortnessBreath = document.getElementById(\"shortness_of_breath-yes\").checked ? \"Y\":\"N\";\r\n const soreThroat = document.getElementById(\"sore_throat-yes\").checked ? \"Y\":\"N\";\r\n const tasteAndSmell = document.getElementById(\"taste_and_smell-yes\").checked ? \"Y\":\"N\";\r\n const data = {\r\n token: $.session.Token,\r\n assesmentDate: date,\r\n assessmentTime: time,\r\n cough: cough,\r\n diarrhea: diarrhea,\r\n fever: fever,\r\n locationId: location,\r\n malaise: malaise,\r\n nasalCong: nasalCong,\r\n nausea: nausea,\r\n tasteAndSmell: tasteAndSmell,\r\n notes: other,\r\n peopleId: peopleId,\r\n settingType: setting,\r\n shortnessBreath: shortnessBreath,\r\n soreThroat: soreThroat,\r\n assessmentId: checklistId,\r\n isConsumer: checklistType === 'consumer' ? 'T' : 'F'\r\n }\r\n pendingSave.show('Saving Checklist...')\r\n switch (action) {\r\n case \"insert\":\r\n try {\r\n data.assessmentId = '0'\r\n await covidAjax.insertUpdateCovidChecklists(data);\r\n pendingSave.fulfill(\"Saved\")\r\n setTimeout(() => {\r\n successfulSave.hide()\r\n if (callback) callback()\r\n }, 1000)\r\n } catch (err) {\r\n pendingSave.reject('Error Saving Checklist. Please Try Again.')\r\n setTimeout(() => failSave.hide(), 2000)\r\n }\r\n break;\r\n case \"update\":\r\n try {\r\n await covidAjax.insertUpdateCovidChecklists(data);\r\n pendingSave.fulfill(\"Saved\")\r\n setTimeout(() => {\r\n successfulSave.hide()\r\n if (callback) callback()\r\n }, 1000)\r\n } catch (err) {\r\n pendingSave.reject('Error Updating Checklist. Please Try Again.')\r\n setTimeout(() => failSave.hide(), 2000)\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function clearChecklist(inputs) {\r\n inputs.dateInput.firstChild.value = UTIL.getTodaysDate(false)\r\n inputs.dateInput.dispatchEvent(new Event('input'))\r\n inputs.timeInput.firstChild.value = UTIL.getCurrentTime();\r\n // No longer re-setting location. Keep location from checklist to checklist\r\n // inputs.locationDropdown.firstChild.selectedIndex = \"0\";\r\n inputs.settingInput.firstChild.value = \"\";\r\n inputs.settingInput.firstChild.dispatchEvent(new Event('keyup'));\r\n inputs.otherInput.firstChild.value = \"\";\r\n inputs.otherInput.firstChild.dispatchEvent(new Event('keyup'));\r\n //symptoms\r\n document.getElementById(\"cough-no\").checked = true;\r\n document.getElementById(\"diarrhea-no\").checked = true;\r\n document.getElementById(\"fever-no\").checked = true;\r\n document.getElementById(\"malaise-no\").checked = true;\r\n document.getElementById(\"nasal_congestion-no\").checked = true;\r\n document.getElementById(\"nausea-no\").checked = true;\r\n document.getElementById(\"shortness_of_breath-no\").checked = true;\r\n document.getElementById(\"sore_throat-no\").checked = true;\r\n document.getElementById(\"taste_and_smell-no\").checked = true;\r\n }\r\n\r\n function cancel() {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(null);\r\n covidLanding.init()\r\n }\r\n return {\r\n insertUpdateChecklist,\r\n loadChecklist,\r\n clearChecklist,\r\n cancel\r\n };\r\n})();\r\n","//TEST FOR JOE\r\n\r\nconst covidChecklistElements = (function() {\r\n\r\n function createInputs() {\r\n const dateInput = input.build({\r\n id: \"covidDate\",\r\n label: \"Date\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: UTIL.getTodaysDate()\r\n })\r\n const timeInput = input.build({\r\n id: \"covidTime\",\r\n label: \"Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n value: UTIL.getCurrentTime()\r\n })\r\n //*Location drop down - include the locations the user has access to in the Roster \r\n const locationDropdown = dropdown.build({\r\n dropdownId: \"covidLocationDropdown\",\r\n label: \"Location\",\r\n })\r\n const settingInput = input.build({\r\n id: \"covidSetting\",\r\n label: \"Setting\",\r\n style: \"secondary\",\r\n charLimit: 50\r\n })\r\n const otherInput = input.build({\r\n id: \"covidOtherSymptom\",\r\n label: \"Other\",\r\n type: 'textarea',\r\n style: \"secondary\",\r\n charLimit: 50\r\n })\r\n const saveBtn = button.build({\r\n id: \"covidSaveUpdate\",\r\n attributes: [{key: 'data-function', value: 'insert'}],\r\n text: \"Save\",\r\n style: \"secondary\",\r\n type: \"contained\"\r\n })\r\n const deleteBtn = button.build({\r\n id: \"covidDeleteChecklist\",\r\n text: \"Delete\",\r\n style: \"secondary\",\r\n type: \"contained\"\r\n })\r\n const cancelBtn = button.build({\r\n id: \"covidCancel\",\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n })\r\n // Symptom Y/N questions radios\r\n const symptoms = [\r\n \"fever\",\r\n \"cough\",\r\n \"sore_throat\",\r\n \"shortness_of_breath\",\r\n \"malaise\",\r\n \"nasal_congestion\",\r\n \"nausea\",\r\n \"diarrhea\",\r\n \"taste_and_smell\"\r\n ]\r\n// need to create a div with the symptom name, and 2 radio buttons one for yes one for no\r\n const symptomElements = symptoms.map(symptom => {\r\n let capSymptomNameArr = [];\r\n const readableSymptomNameBaseArr = symptom.split(\"_\");\r\n readableSymptomNameBaseArr.forEach(word => {\r\n const capWord = UTIL.capitalize(word)\r\n capSymptomNameArr.push(capWord)\r\n });\r\n let readableName = capSymptomNameArr.join(\" \");\r\n const yesRadio = input.buildRadio({\r\n id: `${symptom}-yes`,\r\n text: \"Yes\",\r\n name: symptom,\r\n \r\n })\r\n const noRadio = input.buildRadio({\r\n id: `${symptom}-no`,\r\n text: \"No\",\r\n name: symptom,\r\n isChecked: true,\r\n })\r\n const symptomTitle = document.createElement('h4');\r\n if (readableName === 'Fever') {\r\n readableName = 'Fever > 100°F'\r\n }\r\n if (readableName === 'Taste And Smell') {\r\n readableName = 'Loss of Taste and Smell'\r\n }\r\n symptomTitle.innerHTML = readableName;\r\n const symptomContainer = document.createElement('div');\r\n const radioDiv = document.createElement('div')\r\n radioDiv.classList.add('covid_radioDiv')\r\n radioDiv.appendChild(yesRadio)\r\n radioDiv.appendChild(noRadio)\r\n symptomContainer.appendChild(symptomTitle)\r\n symptomContainer.appendChild(radioDiv)\r\n\r\n return symptomContainer\r\n })\r\n\r\n return {\r\n dateInput,\r\n timeInput,\r\n locationDropdown,\r\n settingInput,\r\n otherInput,\r\n symptomElements,\r\n saveBtn,\r\n cancelBtn,\r\n deleteBtn\r\n }\r\n }\r\n function init() {\r\n const inputs = createInputs()\r\n return inputs\r\n }\r\n return {\r\n init\r\n }\r\n})();","const covidAjax = (function() {\r\n function getCovidChecklists(peopleId, date, consumerChecklist) {\r\n const data = {\r\n token: $.session.Token,\r\n peopleId: peopleId,\r\n assessmentDate: date,\r\n isConsumer: consumerChecklist\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getIndividualsCovidDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function insertUpdateCovidChecklists(insertData) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertUpdateCovidAssessment/',\r\n\t\t\tdata: JSON.stringify(insertData),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function deleteCovidChecklist(checklistId) {\r\n const data = {\r\n token: $.session.Token,\r\n assessmentId: checklistId\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteCovidAssessment/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n return {\r\n getCovidChecklists,\r\n insertUpdateCovidChecklists,\r\n deleteCovidChecklist\r\n }\r\n})();","const covidLanding = (function() {\r\n let rosterLocations\r\n\r\n function loadCovidLanding(params) {\r\n const myChecklist = button.build({\r\n text: \"My Covid Checklist\",\r\n style: \"secondary\",\r\n type: 'contained',\r\n callback: () => {\r\n covidChecklist.init('employee')\r\n \r\n }\r\n });\r\n const consumerChecklists = button.build({\r\n text: \"Consumer Covid Checklist\",\r\n style: \"secondary\",\r\n type: 'contained',\r\n callback: () => {\r\n covidChecklist.init('consumer')\r\n }\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n btnWrap.appendChild(myChecklist);\r\n btnWrap.appendChild(consumerChecklists);\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n\r\n function locations() {\r\n return [...rosterLocations]\r\n }\r\n\r\n async function init() {\r\n setActiveModuleSectionAttribute(null)\r\n if (!rosterLocations) {\r\n PROGRESS.init()\r\n PROGRESS.SPINNER.show('Gathering Data...')\r\n rosterLocations = (await rosterAjax.getRosterLocations()).getLocationsJSONResult; \r\n const spinner = document.querySelector('.spinner');\r\n spinner.remove();\r\n }\r\n const miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) {\r\n miniRosterBtn.remove();\r\n DOM.toggleNavLayout();\r\n }\r\n loadCovidLanding()\r\n }\r\n return {\r\n init,\r\n locations\r\n }\r\n})();","var dashboard = (function () {\r\n var widgets;\r\n var setupFuncs;\r\n var widgetSettings;\r\n\r\n var widgetIds = {\r\n caseNotesProductivity: 1,\r\n caseNotesCaseLoad: 2,\r\n caseNotesRejected: 3,\r\n planWorkflow: 4,\r\n customLinks: 5,\r\n absent: 6,\r\n unreadLocationNotes: 7,\r\n consumerProgressNotes: 8,\r\n timeClock: 9,\r\n hoursWorked: 10,\r\n goals: 11,\r\n clockedIn: 12,\r\n singleEntry: 13,\r\n adminSingleEntry: 14,\r\n schedule: 15,\r\n incidentTracking: 16,\r\n missingSignatures: 17,\r\n moneyManagement: 18,\r\n infal: null,\r\n systemMessages: 19,\r\n rosterToDoList: 20,\r\n };\r\n\r\n // Widget Markup\r\n var html = {\r\n absent: `\r\n
\r\n

Absent Consumers

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n `,\r\n adminSingleEntry: `\r\n
\r\n

Time Entry Review

\r\n
\r\n
\r\n `,\r\n customLinks: `\r\n
\r\n

Custom Links

\r\n
\r\n
\r\n
\r\n
\r\n `,\r\n clockedIn: `\r\n
\r\n

Day Services

\r\n
\r\n
\r\n `,\r\n goals: `\r\n
\r\n

Daily Services

\r\n
\r\n
\r\n
\r\n

Total Remaining Services:

\r\n

Total Consumers:

\r\n
\r\n
    \r\n
    \r\n `,\r\n hoursWorked: `\r\n
    \r\n

    Hours Worked

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n incidentTracking: `\r\n
    \r\n

    Incident Tracking

    \r\n
    \r\n
    \r\n `,\r\n infal: `\r\n
    \r\n

    Infal Time Clock

    \r\n
    \r\n
    \r\n
    \r\n `,\r\n timeClock: `\r\n
    \r\n

    Day Service Time Clock

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n `,\r\n schedule: `\r\n
    \r\n

    My Schedule

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n singleEntry: `\r\n
    \r\n

    My Unapproved Time Entries

    \r\n
    \r\n
    \r\n `,\r\n systemMessages: `\r\n
    \r\n

    System Messages

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n consumerProgressNotes: `\r\n
    \r\n

    Consumer Progress Notes

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n unreadLocationNotes: `\r\n
    \r\n

    Location Progress Notes

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n caseNotesProductivity: `\r\n
    \r\n

    Case Note Productivity

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n caseNotesCaseLoad: `\r\n
    \r\n

    My Case Load

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n caseNotesRejected: `\r\n
    \r\n

    Rejected Case Notes

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n planWorkflow: `\r\n
    \r\n

    Plan To-Do List

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n missingSignatures: `\r\n
    \r\n

    Plans Missing Signatures

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n moneyManagement: `\r\n
    \r\n

    Money Management

    \r\n
    \r\n
    \r\n `,\r\n rosterToDoList: `\r\n
    \r\n

    Roster To-Do List

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n };\r\n\r\n // Global Dash Functions\r\n function appendFilterButton(widgetId, btnId) {\r\n var filterBtn = document.getElementById(btnId);\r\n if (!filterBtn) {\r\n var headerSelector = `#${widgetId} .widget__header`;\r\n var widgetHeader = document.querySelector(headerSelector);\r\n filterBtn = button.build({\r\n id: btnId,\r\n text: 'Filter',\r\n style: 'primary',\r\n type: 'text',\r\n icon: 'filter',\r\n iconPos: 'right',\r\n callback: function () {\r\n var filtersSelector = `#${widgetId} .widget__filters`;\r\n var widgetFilters = document.querySelector(filtersSelector);\r\n overlay.show();\r\n bodyScrollLock.disableBodyScroll(widgetFilters);\r\n widgetFilters.classList.add('visible'); \r\n },\r\n });\r\n widgetHeader.appendChild(filterBtn);\r\n }\r\n }\r\n\r\n function appendAddMessageButton(widgetId, btnId) {\r\n var addMessageBtn = document.getElementById(btnId);\r\n if (!addMessageBtn) {\r\n var headerSelector = `#${widgetId} .widget__header`;\r\n var widgetHeader = document.querySelector(headerSelector);\r\n addMessageBtn = button.build({\r\n id: btnId,\r\n text: 'New',\r\n style: 'primary',\r\n type: 'text',\r\n icon: 'add',\r\n iconPos: 'right',\r\n callback: function () { \r\n linksAndMessages.buildAddMessagePopup(); \r\n }, \r\n });\r\n widgetHeader.appendChild(addMessageBtn);\r\n }\r\n }\r\n\r\n function appendPDFButton(widgetId, btnId) {\r\n var pdfBtn = document.getElementById(btnId);\r\n if (!pdfBtn) {\r\n var headerSelector = `#${widgetId} .widget__header`;\r\n var widgetHeader = document.querySelector(headerSelector);\r\n pdfBtn = button.build({\r\n id: btnId,\r\n style: 'primary',\r\n type: 'text',\r\n icon: 'PDFFormWhite', \r\n iconPos: 'right', \r\n callback: function () {\r\n generateReports.passFilterValuesForReport('My Case Load Roster List', null);\r\n generateReports.showWarningPopup('My Case Load Roster List')\r\n },\r\n });\r\n widgetHeader.appendChild(pdfBtn);\r\n }\r\n }\r\n\r\n function buildFilterPopup() {\r\n var filterPopup = document.createElement('div');\r\n filterPopup.classList.add('widget__filters', 'popup', 'popup--static', 'popup--filter');\r\n filterPopup.setAttribute('data-popup', 'true');\r\n\r\n return filterPopup;\r\n }\r\n\r\n // Widget Init Functions\r\n function initAbsentWidget() {\r\n const showHide = getWidgetSettings(widgetIds.absent).showHide;\r\n if (!infalOnly) {\r\n (function loadAbsentWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.absent);\r\n div.id = 'dashabsentconsumers';\r\n div.classList.add('widget');\r\n div.classList.add('absentWidget');\r\n div.innerHTML = html.absent;\r\n widgets.push(div);\r\n setupFuncs.push(absentWidget.init);\r\n })();\r\n }\r\n }\r\n function initLinksAndMessagesWidget() { \r\n const showHideCustomLinks = getWidgetSettings(widgetIds.customLinks).showHide;\r\n (function loadSysMessagesAndCustomLinksWidget() {\r\n var div2 = document.createElement('div');\r\n div2.setAttribute('data-show', showHideCustomLinks);\r\n div2.setAttribute('data-widgetId', widgetIds.customLinks);\r\n div2.id = 'dashcustomlinks';\r\n div2.classList.add('widget');\r\n div2.classList.add('customLinksWidget');\r\n div2.innerHTML = html.customLinks;\r\n widgets.push(div2);\r\n // Check if setupFuncs already contains linksAndMessages.init (stops duplicate messages and links)\r\n if (!setupFuncs.includes(linksAndMessages.init)) { \r\n setupFuncs.push(linksAndMessages.init);\r\n }\r\n })();\r\n }\r\n\r\n function initSystemMessagesWidget() { \r\n (function loadSysMessagesAndCustomLinksWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', 'Y');\r\n div.setAttribute('data-widgetId', widgetIds.systemMessages);\r\n div.id = 'dashsystemmessagewidget';\r\n div.classList.add('widget');\r\n div.classList.add('systemMessagesWidget');\r\n div.innerHTML = html.systemMessages;\r\n widgets.push(div);\r\n\r\n // Check if setupFuncs already contains linksAndMessages.init (stops duplicate messages and links)\r\n if (!setupFuncs.includes(linksAndMessages.init)) {\r\n setupFuncs.push(linksAndMessages.init);\r\n }\r\n })();\r\n }\r\n\r\n function initSingleEntryWidget() {\r\n const showHide = getWidgetSettings(widgetIds.singleEntry).showHide;\r\n if (\r\n $.session.applicationName !== 'Gatekeeper' &&\r\n $.session.SingleEntryView &&\r\n $.session.singleEntryPermission === 'Anywhere_SingleEntry'\r\n ) {\r\n // Single Entry\r\n (function loadAdminSingleEntryWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.singleEntry);\r\n div.id = 'dashsingleentrywidget';\r\n div.classList.add('widget');\r\n div.classList.add('singleEntryWidget');\r\n div.innerHTML = html.singleEntry;\r\n widgets.push(div);\r\n setupFuncs.push(singleEntryCountWidget.init);\r\n })();\r\n }\r\n }\r\n function initAdminSingleEntryWidget() {\r\n const showHide = getWidgetSettings(widgetIds.adminSingleEntry).showHide;\r\n if (\r\n $.session.applicationName !== 'Gatekeeper' &&\r\n $.session.ViewAdminSingleEntry &&\r\n $.session.SEViewAdminWidget\r\n ) {\r\n //TODO needs added to if $.session.singleEntryPermission == \"Anywhere_SingleEntry\"\r\n (function loadSingleEntryWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.adminSingleEntry);\r\n div.id = 'admindashsingleentrywidget';\r\n div.classList.add('widget');\r\n div.classList.add('adminSingleEntryWidget');\r\n div.innerHTML = html.adminSingleEntry;\r\n widgets.push(div);\r\n setupFuncs.push(adminSingleEntryWidget.init);\r\n })();\r\n }\r\n }\r\n function initTimeClockWidget() {\r\n const showHide = getWidgetSettings(widgetIds.timeClock).showHide;\r\n if (\r\n $.session.isPSI == false &&\r\n $.session.DayServiceUpdate &&\r\n $.session.dayServicesPermission === 'Anywhere_DayServices'\r\n ) {\r\n (function loadEmployeeDayServicesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.timeClock);\r\n div.id = 'dashtimeclockwidget';\r\n div.classList.add('widget');\r\n div.classList.add('timeClockWidget');\r\n div.innerHTML = html.timeClock;\r\n widgets.push(div);\r\n setupFuncs.push(timeClock.init);\r\n })();\r\n }\r\n }\r\n function initHoursWorkedWidget() {\r\n const showHide = getWidgetSettings(widgetIds.hoursWorked).showHide;\r\n if (\r\n $.session.SEViewAdminWidget === true ||\r\n ($.session.DayServiceUpdate && $.session.dayServicesPermission === 'Anywhere_DayServices')\r\n ) {\r\n (function loadHoursWorkedWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.hoursWorked);\r\n div.id = 'dashhoursworkedwidget';\r\n div.classList.add('widget');\r\n div.classList.add('hoursWorkedWidget');\r\n div.innerHTML = html.hoursWorked;\r\n widgets.push(div);\r\n setupFuncs.push(hoursWorkedWidget.init);\r\n })();\r\n }\r\n }\r\n function initScheduleWidget() {\r\n const showHide = getWidgetSettings(widgetIds.schedule).showHide;\r\n if (\r\n $.session.applicationName !== 'Gatekeeper' &&\r\n $.session.schedulingPermission === 'Scheduling'\r\n ) {\r\n (function loadScheduleWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.schedule);\r\n div.id = 'dashschedulewidget';\r\n div.classList.add('widget');\r\n div.classList.add('scheduleWidget');\r\n div.innerHTML = html.schedule;\r\n widgets.push(div);\r\n setupFuncs.push(schedule.init);\r\n })();\r\n }\r\n }\r\n function initDailyServicesWidget() {\r\n const showHide = getWidgetSettings(widgetIds.goals).showHide;\r\n if (\r\n $.session.GoalsView &&\r\n $.session.outcomesPermission === 'Anywhere_Outcomes' &&\r\n !$.session.removeGoalsWidget\r\n ) {\r\n (function loadDailyServicesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.goals);\r\n div.id = 'dashgoalswidget';\r\n div.classList.add('widget');\r\n div.classList.add('goalsWidget');\r\n div.innerHTML = html.goals;\r\n widgets.push(div);\r\n\r\n function widgetSetup() {\r\n //remainingDailyServicesWidgetAjax.populateFilteredList('%', '%', '%');\r\n remainingDailyServicesWidget.init();\r\n }\r\n\r\n setupFuncs.push(widgetSetup);\r\n })();\r\n }\r\n }\r\n function initClockedInWidget() {\r\n const showHide = getWidgetSettings(widgetIds.clockedIn).showHide;\r\n if ($.session.DayServiceView && $.session.dayServicesPermission === 'Anywhere_DayServices') {\r\n (function loadDayServicesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.clockedIn);\r\n div.id = 'dashdsclockedin';\r\n div.classList.add('widget');\r\n div.classList.add('clockedInWidget');\r\n div.innerHTML = html.clockedIn;\r\n widgets.push(div);\r\n setupFuncs.push(clockedInWidget.init);\r\n })();\r\n }\r\n }\r\n function initIncidentTrackingWidget() {\r\n const showHide = getWidgetSettings(widgetIds.incidentTracking).showHide;\r\n if (\r\n ($.session.isASupervisor || $.session.isPSI == true) && $.session.incidentTrackingView == true && \r\n $.session.incidentTrackingPermission === 'Anywhere_Incident_Tracking'\r\n ) {\r\n (function loadIncidentTrackingWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.incidentTracking);\r\n div.id = 'incidenttrackingwidget';\r\n div.classList.add('widget');\r\n div.classList.add('incidentWidget');\r\n div.innerHTML = html.incidentTracking;\r\n widgets.push(div);\r\n setupFuncs.push(incidentTrackingWidget.init);\r\n })();\r\n }\r\n }\r\n function initConsumerProgressNotesWidget() {\r\n const showHide = getWidgetSettings(widgetIds.consumerProgressNotes).showHide;\r\n if ($.session.isPSI == true || $.session.useProgressNotes === 'Y') {\r\n (function loadConsumerProgressNotesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.consumerProgressNotes);\r\n div.id = 'consumerprogressnoteswidget';\r\n div.classList.add('widget');\r\n div.classList.add('consumerProgressNoteWidget');\r\n div.innerHTML = html.consumerProgressNotes;\r\n widgets.push(div);\r\n setupFuncs.push(consumerProgresNotes.init);\r\n })();\r\n }\r\n }\r\n function initLocationProgressNotesWidget() {\r\n const showHide = getWidgetSettings(widgetIds.unreadLocationNotes).showHide;\r\n if ($.session.isPSI == true || $.session.useProgressNotes === 'Y') {\r\n (function loadLocationProgressNotesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.unreadLocationNotes);\r\n div.id = 'locationprogressnoteswidget';\r\n div.classList.add('widget');\r\n div.classList.add('locationProgressNoteWidget');\r\n div.innerHTML = html.unreadLocationNotes;\r\n widgets.push(div);\r\n setupFuncs.push(unreadLocationNotes.init);\r\n })();\r\n }\r\n }\r\n function initCaseNotesProductivityWidget() {\r\n const isPSI =\r\n $.session.isPSI == true && $.session.applicationName === 'Gatekeeper' ? true : false;\r\n const hasPerm =\r\n $.session.caseNotesPermission === 'Anywhere_CaseNotes' &&\r\n $.session.applicationName === 'Gatekeeper'\r\n ? true\r\n : false;\r\n const showHide = getWidgetSettings(widgetIds.caseNotesProductivity).showHide;\r\n\r\n if (isPSI || hasPerm) {\r\n (function loadCaseNotesProdictivityWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.caseNotesProductivity);\r\n div.id = 'casenotesprodictivitywidget';\r\n div.classList.add('widget');\r\n div.classList.add('caseNotesProductivityWidget');\r\n div.innerHTML = html.caseNotesProductivity;\r\n widgets.push(div);\r\n setupFuncs.push(CN_ProductivityWidget.init);\r\n })();\r\n }\r\n }\r\n function initCaseNotesCaseLoadWidget() {\r\n const showHide = getWidgetSettings(widgetIds.caseNotesCaseLoad).showHide;\r\n if (\r\n ($.session.isPSI == true && $.session.applicationName === 'Gatekeeper') ||\r\n ($.session.caseNotesPermission === 'Anywhere_CaseNotes' &&\r\n $.session.applicationName === 'Gatekeeper')\r\n ) {\r\n (function loadCaseNotesCaseLoadWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.caseNotesCaseLoad);\r\n div.id = 'casenotescaseload';\r\n div.classList.add('widget');\r\n div.classList.add('caseNotesCaseLoadWidget');\r\n div.innerHTML = html.caseNotesCaseLoad;\r\n widgets.push(div);\r\n setupFuncs.push(CN_CaseLoadWidget.init);\r\n })();\r\n }\r\n }\r\n function initCaseNotesRejectedWidget() {\r\n const showHide = getWidgetSettings(widgetIds.caseNotesRejected).showHide;\r\n if (\r\n ($.session.isPSI == true && $.session.applicationName === 'Gatekeeper') ||\r\n ($.session.caseNotesPermission === 'Anywhere_CaseNotes' &&\r\n $.session.applicationName === 'Gatekeeper')\r\n ) {\r\n (function loadCaseNotesCaseLoadWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.caseNotesRejected);\r\n div.id = 'casenotesrejected';\r\n div.classList.add('widget');\r\n div.classList.add('caseNotesRejectedWidget');\r\n div.innerHTML = html.caseNotesRejected;\r\n widgets.push(div);\r\n setupFuncs.push(CN_RejectedWidget.init);\r\n })();\r\n }\r\n }\r\n function initPlanWorkflowWidget() {\r\n const showHide = getWidgetSettings(widgetIds.planWorkflow).showHide;\r\n if (\r\n ($.session.isPSI == true && $.session.applicationName === 'Gatekeeper') ||\r\n ($.session.anywherePlanPermission == 'Anywhere_Plan' &&\r\n $.session.applicationName === 'Gatekeeper')\r\n ) {\r\n (function loadPlanWorkflowWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.planWorkflow);\r\n div.id = 'planworkflow';\r\n div.classList.add('widget');\r\n div.classList.add('planWorkflowWidget');\r\n div.innerHTML = html.planWorkflow;\r\n widgets.push(div);\r\n setupFuncs.push(planWorkflowWidget.init);\r\n })();\r\n }\r\n }\r\n\r\n function initRosterToDoListWidget() {\r\n const showHide = getWidgetSettings(widgetIds.rosterToDoList).showHide;\r\n if (\r\n ($.session.isPSI == true && $.session.applicationName === 'Gatekeeper') ||\r\n ($.session.anywherePlanPermission == 'Anywhere_Plan' &&\r\n $.session.applicationName === 'Gatekeeper')\r\n ) {\r\n (function loadRosterToDoListWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.rosterToDoList);\r\n div.id = 'rosterToDoList';\r\n div.classList.add('widget');\r\n div.classList.add('rosterToDoListWidget');\r\n div.innerHTML = html.rosterToDoList;\r\n widgets.push(div);\r\n setupFuncs.push(rosterToDoListWidget.init);\r\n })();\r\n }\r\n }\r\n\r\n function initInfalWidget() {\r\n const showHide = getWidgetSettings(widgetIds.infal).showHide;\r\n if (\r\n $.session.infalOnly &&\r\n $.session.applicationName == 'Gatekeeper' &&\r\n $.session.infalHasConnectionString == true\r\n ) {\r\n (function anonymousFunction() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.infal);\r\n div.id = 'dashinfaltimeclockwidget';\r\n div.classList.add('widget');\r\n div.classList.add('infalWidget');\r\n div.innerHTML = html.infal;\r\n widgets.push(div);\r\n\r\n setupFuncs.push(infalTimeClockWidget.init);\r\n })();\r\n }\r\n }\r\n function initSignaturesWidget() {\r\n const showHide = getWidgetSettings(widgetIds.missingSignatures).showHide;\r\n if (!$.session.planView) return;\r\n if (!infalOnly) {\r\n (function loadSignatureWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.missingSignatures);\r\n div.id = 'dashmissingsignatures';\r\n div.classList.add('widget');\r\n div.classList.add('missingSignaturesWidget');\r\n div.innerHTML = html.missingSignatures;\r\n widgets.push(div);\r\n setupFuncs.push(signatureWidget.init);\r\n })();\r\n }\r\n }\r\n\r\n function initMoneyManagementWidget() {\r\n const showHide = getWidgetSettings(widgetIds.moneyManagement).showHide;\r\n if (\r\n $.session.anywhereConsumerFinancesPermission === 'Anywhere_Consumer_Finances' && $.session.CFView == true\r\n ) {\r\n (function loadMoneyManagementWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.moneyManagement);\r\n div.id = 'dashMoneyManagementwidget';\r\n div.classList.add('widget');\r\n div.classList.add('absentWidget');\r\n div.innerHTML = html.moneyManagement;\r\n widgets.push(div);\r\n setupFuncs.push(consumerFinancesWidget.init);\r\n })();\r\n }\r\n }\r\n\r\n function loadDashboardWidgets() {\r\n var actioncenter = document.getElementById('actioncenter');\r\n actioncenter.innerHTML = '';\r\n \r\n widgetSettings.forEach(widgetSetting => { \r\n // Check for invalid defaults while widgets load in background\r\n defaults.getInvalidDefaultLocations();\r\n\r\n if (widgetSetting.widgetName == 'System Messages') {\r\n /*19*/ initSystemMessagesWidget(); // System Message Widget\r\n } \r\n\r\n // The order of the function calls below determines the order of widgets\r\n if (widgetSetting.widgetName == 'Custom Links') {\r\n /*1*/ initLinksAndMessagesWidget(); // System Messages & Custom Links\r\n }\r\n else if (widgetSetting.widgetName == 'Absent Consumers') {\r\n /*2*/ initAbsentWidget(); // Absent Consumers \r\n }\r\n else if (widgetSetting.widgetName == 'Case_Note_Productivity') {\r\n /*3*/ initCaseNotesProductivityWidget(); // Case Notes Producitivity (GK Only) --- WidgetId 1\r\n }\r\n else if (widgetSetting.widgetName == 'Case Load Widget') {\r\n /*4*/ initCaseNotesCaseLoadWidget(); // Case Notes Case Load (GK Only) --- WidgetId 2\r\n }\r\n else if (widgetSetting.widgetName == 'Rejected Case Notes') {\r\n /*5*/ initCaseNotesRejectedWidget(); // Case Notes Rejected (GK Only) --- WidgetId 2\r\n }\r\n else if (widgetSetting.widgetName == 'Plan To-Do List') {\r\n /*6*/ initPlanWorkflowWidget(); // Plan Workflow To Do List Widget\r\n }\r\n else if (widgetSetting.widgetName == 'Location Progress Notes') {\r\n /*7*/ initLocationProgressNotesWidget(); //Location Progress Notes Widget\r\n }\r\n else if (widgetSetting.widgetName == 'My Unapproved Time Entries') {\r\n /*8*/ initSingleEntryWidget(); // Unapproved Time Entries - Single Entry\r\n }\r\n else if (widgetSetting.widgetName == 'Consumer Progress Notes') {\r\n /*9*/ initConsumerProgressNotesWidget(); //Consumer Progress Note Widget\r\n }\r\n else if (widgetSetting.widgetName == 'Time Entry Review') {\r\n /*10*/ initAdminSingleEntryWidget(); // Supervisor Time Entry Review - Admin Single Entry\r\n }\r\n else if (widgetSetting.widgetName == 'Day Service Time Clock') {\r\n /*11*/ initTimeClockWidget(); // Employee Day Service Time Clock\r\n }\r\n else if (widgetSetting.widgetName == 'Hours Worked') {\r\n /*12*/ initHoursWorkedWidget(); // Hours Worked\r\n }\r\n else if (widgetSetting.widgetName == 'My Schedule') {\r\n /*13*/ initScheduleWidget(); // My Schedule\r\n }\r\n else if (widgetSetting.widgetName == 'Daily Services') {\r\n /*14*/ initDailyServicesWidget(); // Remaining Daily Services\r\n }\r\n else if (widgetSetting.widgetName == 'Day Services') {\r\n /*15*/ initClockedInWidget(); // Day Services Clocked In\r\n }\r\n else if (widgetSetting.widgetName == 'Incident Tracking') {\r\n /*16*/ initIncidentTrackingWidget(); // Incident Tracking\r\n }\r\n else if (widgetSetting.widgetName == 'Plans Missing Signatures') {\r\n /*17*/ initSignaturesWidget(); // Missing Signatures Widget\r\n }\r\n else if (widgetSetting.widgetName == 'Money Management') {\r\n /*18*/ initMoneyManagementWidget(); // Money Management Widget \r\n } \r\n else if (widgetSetting.widgetName == 'Roster To-Do List') {\r\n /*20*/ initRosterToDoListWidget(); // Plan Workflow To Do List Widget\r\n }\r\n\r\n /*17*/ initInfalWidget(); // InfalTimeClock Widget\r\n });\r\n\r\n let IsSystemMessageAvailable = widgetSettings.find(x => x.widgetName == 'System Messages') == undefined ? true : false; \r\n if (IsSystemMessageAvailable) {\r\n /*19*/ initSystemMessagesWidget(); // System Message Widget\r\n } \r\n\r\n var actioncenter = document.getElementById('actioncenter');\r\n widgets.forEach(widget => {\r\n actioncenter.appendChild(widget);\r\n });\r\n\r\n setupFuncs.forEach(func => func());\r\n }\r\n\r\n function getWidgetSettings(widgetId) {\r\n if (!widgetId) {\r\n // if no widget id means no settings so go ahead and set showHide to Y\r\n return {\r\n showHide: 'Y',\r\n };\r\n }\r\n\r\n const settingForWidget = widgetSettings.filter(\r\n widget => parseInt(widget.widgetId) === parseInt(widgetId),\r\n )[0];\r\n if (settingForWidget) {\r\n return {\r\n widgetId: settingForWidget.widgetId,\r\n showHide: settingForWidget.showHide,\r\n widgetConfig:\r\n settingForWidget.widgetConfig === '' ? null : JSON.parse(settingForWidget.widgetConfig),\r\n widgetName: settingForWidget.widgetName,\r\n widgetOrder: settingForWidget.widgetOrder,\r\n };\r\n } else {\r\n return {\r\n widgetId: widgetId,\r\n showHide: 'Y',\r\n widgetConfig: null,\r\n widgetName: null,\r\n widgetOrder: null,\r\n };\r\n }\r\n }\r\n\r\n async function refreshWidgetSettings() {\r\n widgetSettings = (await widgetSettingsAjax.getWidgetSettings()).getUserWidgetSettingsResult;\r\n }\r\n\r\n async function preLoadWidget() {\r\n widgetSettings = (await widgetSettingsAjax.getWidgetSettings()).getUserWidgetSettingsResult;\r\n\r\n function getSetting(widgetId) {\r\n return widgetSettings.filter(widget => {\r\n if (widget.widgetId === widgetId) return widget;\r\n })[0];\r\n }\r\n\r\n loadDashboardWidgets();\r\n\r\n return {\r\n getSetting: getSetting,\r\n };\r\n }\r\n\r\n function init() {\r\n remainingDailyServicesWidget.filter.outcomeType = '%';\r\n remainingDailyServicesWidget.filter.location = '%';\r\n remainingDailyServicesWidget.filter.group = '%'; \r\n widgets = [];\r\n setupFuncs = [];\r\n preLoadWidget();\r\n }\r\n\r\n return {\r\n appendFilterButton,\r\n appendPDFButton,\r\n appendAddMessageButton,\r\n buildFilterPopup,\r\n getWidgetSettings,\r\n refreshWidgetSettings,\r\n load: init,\r\n };\r\n})();\r\n","var displayTimeSelect = 'Y';\r\nvar validateError = '';\r\nvar numberOfCards = 4;\r\n\r\nfunction pad(x) {\r\n\treturn x < 10 ? '0' + x : x;\r\n}\r\n\r\nfunction ticktock() {\r\n\tvar d = new Date();\r\n\tvar h = pad(d.getHours());\r\n\tvar m = pad(d.getMinutes());\r\n\tvar s = pad(d.getSeconds());\r\n\tvar current_time = [h, m].join(':');\r\n}\r\n\r\nfunction anywhere() {\r\n\twindow.location = 'anywhere.html';\r\n}\r\n\r\nfunction popCalendar(event) {\r\n\tif ($('#calendardropdown').css('opacity') == '0') {\r\n\t\t$('#calendardropdown')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t} else {\r\n\t\t$('#calendardropdown')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t}\r\n}\r\n\r\nfunction startMessage() {\r\n\tif ($('#messageinput').val() == 'Add a new message...') {\r\n\t\t$('#messageinput').val('');\r\n\t}\r\n}\r\n\r\nfunction swapMessageBoxes() {\r\n\tif ($('#messageboxsmall').css('opacity') == '0') {\r\n\t\t$('#messageboxsmall')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t\t$('#messageinput')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t\t$('#messagetypebox')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t\t$('#closemessageinput')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t} else {\r\n\t\t$('#messageboxsmall')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t\t$('#messageinput')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t\t$('#messagetypebox')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t\t$('#closemessageinput')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t}\r\n}\r\n\r\nfunction showDownArrow() {\r\n\tif ($('clockrow').length == 0) {\r\n\t\t$('#downarrow')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t} else {\r\n\t\t$('#downarrow')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t}\r\n}\r\n\r\nfunction validateTime(startTime, stopTime) {\r\n\tvar validTime = 1;\r\n\tif (startTime > stopTime && stopTime != '00:00:00') {\r\n\t\tvalidTime = 0;\r\n\t}\r\n\treturn validTime;\r\n}\r\n/////////////////// Pop the display boxes ///////////////////////////////////\r\n// Get time in and time out values for day service consumer rows:\r\nfunction popDayStaffTimeBox(tagname, event) {\r\n\tvar obj = $('#' + tagname);\r\n\tobj.blur();\r\n\t$('.timein').blur();\r\n\t$('.timeout').blur();\r\n\tif ($.session.DenyStaffClockUpdate == true) {\r\n\t\treturn;\r\n\t}\r\n\tvar now = new Date();\r\n\tvar nonFormattedTime = '';\r\n\toriginalText = $('#' + tagname).val();\r\n\tnonFormattedTime = originalText;\r\n\tif (tagname.indexOf('out') != -1) {\r\n\t\tif (originalText != '') {\r\n\t\t\toriginalText = convertTimeToMilitary(originalText);\r\n\t\t\t$.session.initialTimeOut = originalText;\r\n\t\t\t$.session.initialTimeIn = '';\r\n\t\t}\r\n\t}\r\n\tif (tagname.indexOf('in') != -1) {\r\n\t\toriginalText = convertTimeToMilitary(originalText);\r\n\t\t$.session.initialTimeIn = originalText;\r\n\t\t$.session.initialTimeOut = '';\r\n\t}\r\n\tsetupTimeInputBox(obj, event);\r\n\treturn false;\r\n}\r\n\r\nfunction validateStaffTime(tagname, valueText) {\r\n\tif (valueText.length > 8) {\r\n\t\treturn false;\r\n\t}\r\n\tvar rowid = '';\r\n\tvar timein = '';\r\n\tvar timeout = '';\r\n\r\n\tif (tagname.indexOf('out') > -1) {\r\n\t\trowid = tagname.substring(7);\r\n\t\ttimein = $('#timein' + rowid)\r\n\t\t\t.val()\r\n\t\t\t.replace(' ', '');\r\n\t\ttimein = convertTimeToMilitary(timein);\r\n\t\ttimeout = $('#' + tagname)\r\n\t\t\t.val()\r\n\t\t\t.replace(' ', '');\r\n\t\ttimeout = convertTimeToMilitary(timeout);\r\n\t}\r\n\r\n\tif (tagname.indexOf('in') > -1) {\r\n\t\trowid = tagname.substring(6);\r\n\t\ttimeout = $('#timeout' + rowid)\r\n\t\t\t.val()\r\n\t\t\t.replace(' ', '');\r\n\t\ttimeout = convertTimeToMilitary(timeout);\r\n\t\ttimein = $('#' + tagname)\r\n\t\t\t.val()\r\n\t\t\t.replace(' ', '');\r\n\t\ttimein = convertTimeToMilitary(timein);\r\n\t}\r\n\ttimein = timein.replace(':', '');\r\n\ttimeout = timeout.replace(':', '');\r\n\tif (timeout.length < 2) return true;\r\n\tif (timeout < timein && timeout != '00:00:00' && timeout != '0000:00' && timeout != '00:00') {\r\n\t\tvalidateError = 'In time can not be greater than out time.';\r\n\t\twindow.timeOverlapError = false; //ensures error message above takes priority over time overlap error\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction getTimeClockInput(objId, rowId) {\r\n\tvar obj = $('#' + objId),\r\n\t\ttext = obj.text();\r\n\tobj.text('');\r\n\tvar pushStr = \"';\r\n\t$(pushStr)\r\n\t\t.appendTo(obj)\r\n\t\t.val(text)\r\n\t\t.focus()\r\n\t\t.change(function() {\r\n\t\t\tvar newText = $('#tempLocation option:selected').text();\r\n\t\t\tvar newValue = $('#tempLocation option:selected').val();\r\n\t\t\tobj.text(newText).attr('locid', newValue);\r\n\t\t});\r\n}\r\n\r\nfunction textFieldEdit(objId) {\r\n\tvar text = $('#' + objId).text();\r\n\t$('#' + objId).text('');\r\n\t$('')\r\n\t\t.appendTo($('#' + objId))\r\n\t\t.val(text)\r\n\t\t.select()\r\n\t\t.blur(function() {\r\n\t\t\tvar newText = $('#temptxt').attr('value');\r\n\t\t\t$('#' + objId).text(newText); //, find('input:text').remove();\r\n\t\t});\r\n}\r\n\r\nfunction showRemainingGoals(res, $goalsCount, $listTarget, $goalsConsumerCount) {\r\n\tvar people = {},\r\n\t\tcount = 0,\r\n\t\tconsumerCount = 0;\r\n\t$('result', res).each(function() {\r\n\t\tcount++;\r\n\t\tvar ID = $('ID', this).text(),\r\n\t\t\toid = $('oid', this).text(),\r\n\t\t\tfirst_name = $('first_name', this).text(),\r\n\t\t\tlast_name = $('last_name', this).text(),\r\n\t\t\tfullName = [first_name, last_name].join(' ');\r\n\t\tif (!people[fullName]) people[fullName] = 0;\r\n\t\tpeople[fullName]++;\r\n\t});\r\n\t$goalsCount.text(count);\r\n\tvar names = Object.keys(people);\r\n\t//names.sort();\r\n\tnames.forEach(function(name) {\r\n\t\tconsumerCount++;\r\n\t\tvar li = $('
  • ').text(name + ' - ' + people[name]);\r\n\t\t$listTarget.append(li);\r\n\t});\r\n\t$goalsConsumerCount.text(consumerCount);\r\n}\r\n\r\nfunction displayChangeUser() {\r\n\tvar overlay = $('
    ')\r\n\t\t.addClass('modaloverlay')\r\n\t\t.css({\r\n\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.15)',\r\n\t\t})\r\n\t\t.appendTo($('body'));\r\n\r\n\t$.ajax({\r\n\t\ttype: 'GET',\r\n\t\turl: 'dist/templates/autologin.html?RNG=' + +new Date(),\r\n\t\tsuccess: function(HTMLresponse, status, xhr) {\r\n\t\t\t//buildAbsentCard({ card: $(\"
    \").replaceWith(HTMLresponse), overlay: overlay, values: values, multi: true });\r\n\t\t\tvar card = $(HTMLresponse);\r\n\t\t\trosterAjax.getPSIUserOptionList(function(err, data) {\r\n\t\t\t\toverlay\r\n\t\t\t\t\t.click(function() {\r\n\t\t\t\t\t\t$(this).remove();\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.append(card);\r\n\r\n\t\t\t\tcard\r\n\t\t\t\t\t.click(function(e) {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.bind('remove', function() {\r\n\t\t\t\t\t\toverlay.remove();\r\n\t\t\t\t\t});\r\n\t\t\t\tdata.forEach(function(user) {\r\n var li = $('
  • ').text([user.last_name, user.first_name +' ('+user.user_id+')'].join(', '));\r\n\t\t\t\t\tli.click(function() {\r\n\t\t\t\t\t\t$.session.UserId = user.user_id;\r\n\t\t\t\t\t\t//homeServiceLoad(false);\r\n\t\t\t\t\t\tchangeFromPSIAjax(user.user_id);\r\n\t\t\t\t\t\tcard.trigger('remove');\r\n\t\t\t\t\t});\r\n\t\t\t\t\t$('#autologinlist').append(li);\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\t\t\tpsiLogin.buildPopup(overlay[0]);\r\n\t\t},\r\n\t\terror: function(xhr, status, error) {\r\n\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t},\r\n\t});\r\n\treturn;\r\n}\r\n\r\nfunction isNumberKey(evt) {\r\n\tvar charCode = evt.which ? evt.which : event.keyCode;\r\n\tif (charCode > 31 && (charCode < 48 || charCode > 57)) return false;\r\n\r\n\treturn true;\r\n}\r\n\r\nfunction formatDateGFromDB(date) {\r\n\tdate = new Date(date);\r\n\tdate = ('0' + (date.getMonth() + 1)).slice(-2) + '/' + ('0' + date.getDate()).slice(-2) + '/' + date.getFullYear();\r\n\treturn date;\r\n}\r\n\r\nfunction formatTimeFromDB(time) {\r\n\tvar test = time.substr(0, 2);\r\n\tif (time.substr(0, 2) > 12 && time.substr(0, 2) < 22) {\r\n\t\ttest2 = time.substr(0, 2) - 12;\r\n\t\t//tmpStartTime = tmpStartTime.replace(test, '0' + test2)\r\n\t\ttime = time.replace(time.substring(0, 2), '0' + test2);\r\n\t} else if (time.substr(0, 2) >= 22) {\r\n\t\ttest2 = time.substr(0, 2) - 12;\r\n\t\ttime = time.replace(time.substring(0, 2), test2);\r\n\t\t//tmpStartTime = tmpStartTime.replace(test, test2)\r\n\t} else if (time.substr(0, 2) == 0) {\r\n\t\ttime = time.replace(time.substring(0, 2), 12);\r\n\t\t//tmpStartTime = tmpStartTime.replace(test, test2)\r\n\t}\r\n\t//\r\n\ttime = time.slice(0, 5);\r\n\t//\r\n\tif (test >= 12) {\r\n\t\ttime = time + ' PM';\r\n\t} else {\r\n\t\ttime = time + ' AM';\r\n\t}\r\n\treturn time;\r\n}\r\n\r\nfunction convertTimeFromMilitary(value) {\r\n\tif (value !== null && value !== undefined) {\r\n\t\t//If value is passed in\r\n\t\tif (value.indexOf('AM') > -1 || value.indexOf('PM') > -1) {\r\n\t\t\t//If time is already in standard time then don't format.\r\n\t\t\treturn value;\r\n\t\t} else {\r\n\t\t\tif (value.length == 8) {\r\n\t\t\t\t//If value is the expected length for military time then process to standard time.\r\n\t\t\t\tvar hour = value.substring(0, 2); //Extract hour\r\n\t\t\t\tvar minutes = value.substring(3, 5); //Extract minutes\r\n\t\t\t\tvar identifier = 'AM'; //Initialize AM PM identifier\r\n\r\n\t\t\t\tif (hour == 12) {\r\n\t\t\t\t\t//If hour is 12 then should set AM PM identifier to PM\r\n\t\t\t\t\tidentifier = 'PM';\r\n\t\t\t\t}\r\n\t\t\t\tif (hour == 0) {\r\n\t\t\t\t\t//If hour is 0 then set to 12 for standard time 12 AM\r\n\t\t\t\t\thour = 12;\r\n\t\t\t\t}\r\n\t\t\t\tif (hour > 12) {\r\n\t\t\t\t\t//If hour is greater than 12 then convert to standard 12 hour format and set the AM PM identifier to PM\r\n\t\t\t\t\thour = hour - 12;\r\n\t\t\t\t\tif (hour < 10) {\r\n\t\t\t\t\t\thour = '0' + hour;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tidentifier = 'PM';\r\n\t\t\t\t}\r\n\t\t\t\treturn hour + ':' + minutes + ' ' + identifier; //Return the constructed standard time\r\n\t\t\t} else {\r\n\t\t\t\t//If value is not the expected length than just return the value as is\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction removeBadNoteTextToDisplay(note) {\r\n\tvar test = note.indexOf('\\\\r');\r\n\tnote = note.replace(/[\\n\\r]/g, '');\r\n\tif (note.indexOf('\\\\n') != -1) {\r\n\t\tnote = note.replace(/\\\\n/g, '\\n');\r\n\t}\r\n\tif (note.indexOf('\\\\r') != -1) {\r\n\t\tnote = note.replace(/\\\\r/g, ' ');\r\n\t}\r\n\tif (note.indexOf('\"') != -1) {\r\n\t\tnote = note.replace(/\\\"/g, '');\r\n\t}\r\n\tif (note.indexOf(\"'\") != -1) {\r\n\t\tnote = note.replace(/'/g, '');\r\n\t}\r\n\tif (note.indexOf('\\\\') != -1) {\r\n\t\tnote = note.replace(/\\\\/g, '');\r\n\t}\r\n\tnote = note.replace(' ', '');\r\n\tnote = note.replace('\\t', '');\r\n\tnote = note.replace(/\\t/g, '');\r\n\r\n\tnote = note;\r\n\treturn note;\r\n}\r\n\r\n//Gets days between passed in date and current date\r\nfunction daysBetweenDates(checkDate) {\r\n\tvar oneDay = 24 * 60 * 60 * 1000;\r\n\tvar todaysDate = new Date();\r\n\tif (checkDate == undefined) {\r\n\t\tvar checkDate = new Date();\r\n\t}\r\n\tvar changeDate = new Date(checkDate);\r\n\r\n\treturn Math.floor((todaysDate.getTime() - changeDate.getTime()) / oneDay);\r\n}\r\n\r\nfunction formatDateForDatabaseSave(date) {\r\n\tvar newDate = new Date(date);\r\n\tdate = newDate.getFullYear() + '-' + (newDate.getMonth() + 1) + '-' + newDate.getDate();\r\n\treturn date;\r\n}\r\n\r\nfunction convertTimeToMilitaryNew(inputTime) {\r\n\tif (inputTime == '') {\r\n\t\treturn '::00';\r\n\t}\r\n\tvar time = inputTime;\r\n\tvar hours = parseInt(time.match(/^(\\d+)/)[1], 10);\r\n\tvar minutes = parseInt(time.match(/:(\\d+)/)[1], 10);\r\n\tvar AMPM = time.match(/\\s(.*)$/)[1];\r\n\tif (AMPM == 'PM' && hours < 12) hours = hours + 12;\r\n\tif (AMPM == 'AM' && hours == 12) hours = hours - 12;\r\n\tvar sHours = hours.toString();\r\n\tvar sMinutes = minutes.toString();\r\n\tif (hours < 10) sHours = '0' + sHours;\r\n\tif (minutes < 10) sMinutes = '0' + sMinutes;\r\n\t//alert(sHours + \":\" + sMinutes);\r\n\treturn [sHours, sMinutes, '00'].join(':');\r\n}\r\n\r\n// Convert the input AM/PM time to a 24-hour military time:\r\nfunction convertTimeToMilitary(inputTime) {\r\n\tvar amPM = '';\r\n\tvar hour = '';\r\n\tvar minute = '';\r\n\tvar militaryTime = '';\r\n\tif (inputTime.length < 5 && inputTime != '') {\r\n\t\tinputTime = '0' + inputTime;\r\n\t}\r\n\t// Parse the input time into hours, minutes and AM/PM values:\r\n\tfor (var i = 0; i < inputTime.length; i++) {\r\n\t\tif (isNaN(inputTime.charAt(i)) == false && inputTime.charAt(i) != ' ') {\r\n\t\t\tif (i < 2) {\r\n\t\t\t\thour = hour + inputTime.charAt(i);\r\n\t\t\t}\r\n\r\n\t\t\tif (i == 3 || i == 4) {\r\n\t\t\t\tminute = minute + inputTime.charAt(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inputTime.charAt(i) == 'A' || inputTime.charAt(i) == 'P' || inputTime.charAt(i) == 'M') {\r\n\t\t\tamPM = amPM + inputTime.charAt(i);\r\n\t\t}\r\n\t}\r\n\r\n\t// If a AM value, add 12 to the input hour:\r\n\tif (amPM == 'AM' && hour == '12') {\r\n\t\thour = '00';\r\n\t}\r\n\r\n\t// If a PM value, add 12 to the input hour:\r\n\tif (amPM == 'PM') {\r\n\t\tif (hour != '00') {\r\n\t\t\tif (hour != '12') {\r\n\t\t\t\tvar x = +hour;\r\n\t\t\t\tx = x + 12;\r\n\t\t\t\thour = String(x);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Create a military time from the input time format:\r\n\tmilitaryTime = hour + ':' + minute + ':00';\r\n\r\n\treturn militaryTime;\r\n}\r\n\r\n//http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area\r\nfunction setSelectionRange(input, selectionStart, selectionEnd) {\r\n\tif (input.setSelectionRange) {\r\n\t\tinput.focus();\r\n\t\tinput.setSelectionRange(selectionStart, selectionEnd);\r\n\t} else if (input.createTextRange) {\r\n\t\tvar range = input.createTextRange();\r\n\t\trange.collapse(true);\r\n\t\trange.moveEnd('character', selectionEnd);\r\n\t\trange.moveStart('character', selectionStart);\r\n\t\trange.select();\r\n\t}\r\n}\r\n\r\nfunction setCaretToPos(input, pos) {\r\n\tsetSelectionRange(input, pos, pos);\r\n}\r\n\r\nfunction getDeviceLocation(callback) {\r\n\tif (location.protocol === 'https:' || location.hostname === 'localhost') {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(callback, callback, { timeout: 3000 });\r\n\t\t} else {\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//New time enter code below\r\nfunction setTimeToScreen(amOrPm) {\r\n\tvar pmAM = amOrPm;\r\n\tvar timeDigitsEntered = $('#timedisplayfield').val();\r\n\tvar originId = '#' + $('.timebox').attr('fromid');\r\n\tif (timeDigitsEntered.length < 3) {\r\n\t\ttimeDigitsEntered = timeDigitsEntered + ':00';\r\n\t} else {\r\n\t\ttimeDigitsEntered = timeDigitsEntered.substring(0, timeDigitsEntered.length - 2) + ':' + timeDigitsEntered.slice(-2);\r\n\t}\r\n\tif (timeDigitsEntered.length < 5) {\r\n\t\ttimeDigitsEntered = '0' + timeDigitsEntered;\r\n\t}\r\n\ttimeDigitsEntered = timeDigitsEntered + ' ' + pmAM;\r\n\tvar opts = $('.timebox').data('opts');\r\n\tvar increment = opts.increment;\r\n\tvar minutes = timeDigitsEntered.split(':')[1].split(' ')[0];\r\n\tvar hours = timeDigitsEntered.split(':')[0];\r\n\tif (increment != 0 && increment != undefined) {\r\n\t\tif (parseInt(minutes, 10) % increment != 0) {\r\n\t\t\treturn $.fn.PSmodal({\r\n\t\t\t\tbody: opts.incrementMessage,\r\n\t\t\t\timmediate: true,\r\n\t\t\t\tcloseOnBlur: false,\r\n\t\t\t\tbuttons: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttext: 'OK',\r\n\t\t\t\t\t\tcallback: function() {},\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tif (parseInt(hours, 10) > 12) {\r\n\t\treturn $.fn.PSmodal({\r\n\t\t\tbody: 'You have entered invalid hours. Please correct this.',\r\n\t\t\timmediate: true,\r\n\t\t\tcloseOnBlur: false,\r\n\t\t\tbuttons: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttext: 'OK',\r\n\t\t\t\t\tcallback: function() {},\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t});\r\n\t}\r\n\tif (parseInt(minutes, 10) > 59) {\r\n\t\treturn $.fn.PSmodal({\r\n\t\t\tbody: 'You have entered invalid minutes. Please correct this.',\r\n\t\t\timmediate: true,\r\n\t\t\tcloseOnBlur: false,\r\n\t\t\tbuttons: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttext: 'OK',\r\n\t\t\t\t\tcallback: function() {},\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t});\r\n\t}\r\n\tif (opts.callback) {\r\n\t\topts.callback(timeDigitsEntered);\r\n\t} else {\r\n\t\t$(originId).val(timeDigitsEntered);\r\n\t\t$(originId).html(timeDigitsEntered);\r\n\t\t$(originId).text(timeDigitsEntered);\r\n\t\t$(originId).change();\r\n\t}\r\n\r\n\t$('#timeoverlay').remove();\r\n}\r\n\r\nfunction setupTimeInputBox(obj, event, opts) {\r\n\tURL = '/webroot/dist/templates/timeinputpad.html'; // adjust path\r\n\t$.ajax({\r\n\t\ttype: 'GET',\r\n\t\turl: URL + '?RNG=' + +new Date(),\r\n\t\tsuccess: function(response) {\r\n\t\t\thtml = response;\r\n\t\t\tdisplayTimeBox(\r\n\t\t\t\thtml,\r\n\t\t\t\tobj,\r\n\t\t\t\tevent,\r\n\t\t\t\topts || {\r\n\t\t\t\t\tincrement: 0,\r\n\t\t\t\t\tincrementMessage: '',\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t},\r\n\t});\r\n}\r\n\r\nfunction displayTimeBox(html, obj, event, opts) {\r\n\tvar x, y;\r\n\tif ($.mobile) {\r\n\t\tx = 20;\r\n\t\ty = 20;\r\n\t} else {\r\n\t\tx = event.x - 50;\r\n\t\ty = event.y - 16;\r\n\t\t$('#timeinputkeypad').css('zoom', '125%');\r\n\t}\r\n\tvar overlay = $(\"
    \")\r\n\t\t.css({\r\n\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.15)',\r\n\t\t\tposition: 'absolute',\r\n\t\t\ttop: '0',\r\n\t\t\tbottom: '0',\r\n\t\t\tleft: '0',\r\n\t\t\tright: '0',\r\n\t\t\tzIndex: '99999',\r\n\t\t})\r\n\t\t.click(function() {\r\n\t\t\t$(this).remove();\r\n\t\t\treturn false;\r\n\t\t});\r\n\tvar timeBox = $('
    ' + html + '
    ')\r\n\t\t.click(function(e) {\r\n\t\t\treturn false;\r\n\t\t})\r\n\t\t.data('opts', opts);\r\n\r\n\ttimeBox.css({\r\n\t\topacity: '1.0 !important',\r\n\t\tmarginLeft: x,\r\n\t\tmarginTop: y,\r\n\t});\r\n\r\n\toverlay.append(timeBox);\r\n\t$('body').append(overlay);\r\n}\r\n\r\nfunction clearTimepadInputField() {\r\n\t$('#timedisplayfield').val('');\r\n}\r\n\r\nfunction convertDaysBack(daysBackIn) {\r\n\tvar dateOffset = 24 * 60 * 60 * 1000 * daysBackIn;\r\n\tvar daysBackDate = new Date();\r\n\tdaysBackDate.setTime(daysBackDate.getTime() - dateOffset);\r\n\tvar dateToPass = daysBackDate.getFullYear() + '-' + UTIL.leadingZero(daysBackDate.getMonth() + 1) + '-' + UTIL.leadingZero(daysBackDate.getDate());\r\n\treturn dateToPass;\r\n}\r\n\r\nfunction convertDaysBackGoals(daysBackIn) {\r\n\tvar dateOffset = 24 * 60 * 60 * 1000 * daysBackIn;\r\n\tvar daysBackDate = new Date();\r\n\tdaysBackDate.setTime(daysBackDate.getTime() - dateOffset);\r\n\tif (daysBackIn < 31) {\r\n\t\treturn new Date(daysBackDate.getFullYear(), daysBackDate.getMonth(), daysBackDate.getDate());\r\n\t} else {\r\n\t\treturn new Date(daysBackDate.getFullYear(), daysBackDate.getMonth() + 1, daysBackDate.getDate());\r\n\t}\r\n}\r\n\r\nfunction popupCalendar(opts) {\r\n\tvar minDate = opts.minDate || null,\r\n\t\tmaxDate = opts.maxDate || null,\r\n\t\tcurrVal = opts.currVal || null,\r\n\t\tcallback = opts.callback || function() {},\r\n\t\ttarget = opts.target;\r\n\r\n\tvar obj = {\r\n\t\tdateFormat: 'mm/dd/yy',\r\n\t\ttheme: 'wp',\r\n\t\taccent: 'steel',\r\n\t\tdisplay: 'bubble',\r\n\t\tmode: 'scroller',\r\n\t\tpreset: 'date',\r\n\t\tonSelect: function(valueText, inst) {\r\n\t\t\ttarget.text(valueText);\r\n\t\t\tcallback();\r\n\t\t},\r\n\t\tonShow: function() {\r\n\t\t\tif (currVal != null) {\r\n\t\t\t\t$(this).scroller('setDate', new Date(currVal.getFullYear(), currVal.getMonth(), currVal.getDate()), false);\r\n\t\t\t}\r\n\r\n\t\t\t$('.dw-arr').css('display', 'none');\r\n\t\t},\r\n\t};\r\n\r\n\tif (minDate != null) {\r\n\t\tobj.minDate = minDate;\r\n\t}\r\n\r\n\tif (maxDate != null) {\r\n\t\tobj.maxDate = maxDate;\r\n\t}\r\n\r\n\ttarget\r\n\t\t.mobiscroll()\r\n\t\t.date(obj)\r\n\t\t.mobiscroll('show');\r\n}\r\n\r\nfunction openCaraSolva() {\r\n\tvar form = $('
    ', {\r\n\t\taction: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/CaraSolvaSignIn/',\r\n\t\tmethod: 'POST',\r\n\t\ttarget: '_blank',\r\n\t\tenctype: 'application/json',\r\n\t});\r\n\tform.hide().append(\"\");\r\n\tform.appendTo($('body'));\r\n\tform.submit();\r\n}\r\n\r\n(function(scope) {\r\n\tif (!scope.Anywhere) {\r\n\t\tscope.Anywhere = {};\r\n\t}\r\n\tscope.Anywhere.promptYesNo = function(message, yesCallback, noCallback) {\r\n\t\t$.fn.PSmodal({\r\n\t\t\tbody: message,\r\n\t\t\timmediate: true,\r\n\t\t\tbuttons: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttext: 'Yes',\r\n\t\t\t\t\tcallback: function() {\r\n\t\t\t\t\t\tif (yesCallback) yesCallback();\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttext: 'No',\r\n\t\t\t\t\tcallback: function() {\r\n\t\t\t\t\t\tif (noCallback) noCallback();\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t});\r\n\t};\r\n})(window);\r\n","// function getLocationNameFromId(id) {\r\n// \tfor (var i in $.session.locations) {\r\n// \t\tif ($.session.locationids[i] == id) return $.session.locations[i];\r\n// \t}\r\n// }\r\n\r\n//ANYW_Dashboard_GetRemainingGoalsCount\r\n// Not Being Called\r\n// function getRemainingGoalsCountForDashboard(callback) {\r\n// \t$.ajax({\r\n// \t\ttype: 'POST',\r\n// \t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getRemainingGoalsCountForDashboard/',\r\n// \t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n// \t\tcontentType: 'application/json; charset=utf-8',\r\n// \t\tdataType: 'json',\r\n// \t\tsuccess: function(response, status, xhr) {\r\n// \t\t\tvar res = JSON.stringify(response);\r\n// \t\t\tcallback(null, res);\r\n// \t\t},\r\n// \t\terror: function(xhr, status, error) {\r\n// \t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n// \t\t\tcallback(error, null);\r\n// \t\t},\r\n// \t});\r\n// }\r\n\r\n// function getLocationsForDashboardAbsent\r\n// function getConsumerGroupsForDashboardAbsent\r\n\r\n// Not Being Called\r\n// function getClockedInDayServicesAtLocationCountsAjax(locationId, callback) {\r\n// \t$.ajax({\r\n// \t\ttype: 'POST',\r\n// \t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getClockedInDayServicesAtLocationCounts/',\r\n// \t\tdata: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\"}',\r\n// \t\tcontentType: 'application/json; charset=utf-8',\r\n// \t\tdataType: 'json',\r\n// \t\tsuccess: function(response, status, xhr) {\r\n// \t\t\tvar res = JSON.stringify(response);\r\n// \t\t\tcallback(null, res);\r\n// \t\t},\r\n// \t\terror: function(xhr, status, error) {\r\n// \t\t\tcallback(error, null);\r\n// \t\t},\r\n// \t});\r\n// }\r\n\r\n// function getInfalLoginCredentialsAjax(callback) {\r\n// \t$.ajax({\r\n// \t\ttype: 'POST',\r\n// \t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getInfalLoginCredentials/',\r\n// \t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n// \t\tcontentType: 'application/json; charset=utf-8',\r\n// \t\tdataType: 'json',\r\n// \t\tsuccess: function(response, status, xhr) {\r\n// \t\t\tvar res = JSON.parse(response.getInfalLoginCredentialsResult);\r\n// \t\t\tif (res[0] && res[0].App_Password) ID = res[0].App_Password;\r\n// \t\t\tif ((ID = 0)) {\r\n// \t\t\t\t//go get ssn and use it to get emp id from infal, pass it along and then update user application cred table\r\n// \t\t\t}\r\n// \t\t\tcallback(null, res);\r\n// \t\t},\r\n// \t\terror: function(xhr, status, error) {\r\n// \t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n// \t\t},\r\n// \t});\r\n// }\r\n\r\nfunction changeFromPSIAjax(userId, callback) {\r\n\t$.ajax({\r\n\t\ttype: 'POST',\r\n\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/changeFromPSI/',\r\n\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"userID\":\"' + userId + '\"}',\r\n\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\tdataType: 'json',\r\n\t\tsuccess: function(response, status, xhr) {\r\n\t\t\tvar res = JSON.stringify(response);\r\n\t\t\teraseCookie('psiuser');\r\n\t\t\tvar overlay = document.createElement('div');\r\n\t\t\tif ($('permissions', res).is('*') && checkforErrors(res) == 0) {\r\n\t\t\t\teraseCookie('psi');\r\n\t\t\t\tcreateCookie('psi', res, 1);\r\n\t\t\t\tsuccess = true;\r\n\t\t\t\tdocument.location.href = 'anywhere.html';\r\n\t\t\t} else if (res.indexOf('609') > -1) {\r\n\t\t\t\t//checkForErrors();\r\n\t\t\t\tcustomPasswordChange();\r\n\t\t\t} else {\r\n\t\t\t\t$('#error').css('opacity', '1');\r\n\t\t\t\t$('#error').css('display', 'block');\r\n\t\t\t\tif ($('#error').hasClass('hippaRestriction')) {\r\n\t\t\t\t\t$('#errortext').text('Password cannot match a recently used password');\r\n\t\t\t\t} else if ($('#error').hasClass('userInputError')) {\r\n\t\t\t\t\t$('#errortext').text('Invalid username or password');\r\n\t\t\t\t} else if (res.indexOf('608') > -1) {\r\n\t\t\t\t\t$('#errortext').text('This user name does not exist in demographics.');\r\n\t\t\t\t} else {\r\n $('#errortext').text('Invalid user name or password.');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\terror: function(xhr, status, error) {\r\n\t\t\t//alert(\r\n\t\t\t// \"There was a problem connecting to the database. Please click OK to continue. If the problem persists, please contact Primary Solutions.\" +\r\n\t\t\t// xhr.status + '\\n' + xhr.responseText);\r\n\t\t},\r\n\t\tcomplete: function() {\r\n\t\t\t// hide gif here, eg:\r\n\t\t\t$('body').css('cursor', 'auto');\r\n\t\t},\r\n\t});\r\n}\r\n","const psiLogin = (function() {\r\n let userPopup\r\n \r\n function buildPopup(userElemet) {\r\n\r\n userPopup = POPUP.build({\r\n header: \"Select a User\",\r\n id: \"psiUserSelectPopup\"\r\n })\r\n userPopup.appendChild(userElemet)\r\n \r\n POPUP.show(userPopup)\r\n}\r\n\r\n return {\r\n buildPopup\r\n }\r\n})()","const dayServices = (function () {\r\n //DOM ELEMENTS\r\n let multiDeleteRecordBtn;\r\n let multiSelectAllBtn;\r\n let multiSelectNoneBtn;\r\n let multiOutRecordBtn;\r\n let multiInRecordBtn;\r\n let filterBtn;\r\n let filterLocationDropdown;\r\n let filterGroupDropdown;\r\n let filterPopup;\r\n let filterDateInput;\r\n let fitlerApplyBtn;\r\n let batchedMessageDisplay = document.createElement('h3');\r\n let mulitSelectBtn;\r\n let multiSelectAllNoneArea;\r\n let dsCardArea = document.createElement('div');\r\n dsCardArea.classList.add('dsCardArea');\r\n\r\n let SEARCH_WRAP;\r\n let SEARCH_BTN;\r\n let SEARCH_INPUT;\r\n\r\n let saveBtn;\r\n let groupDropdown;\r\n\r\n // New Roster\r\n let initRosterSelection;\r\n let activeConsumers;\r\n\r\n // Filter Data\r\n let rosterGroupResults;\r\n let serviceDate;\r\n let locationID;\r\n let filterGroupID;\r\n let filterGroupRetrieveID;\r\n let temp__locationID;\r\n let temp__groupID;\r\n let temp__retrieveID;\r\n let temp__serviceDate;\r\n let btnWrap;\r\n let locationBtnWrap;\r\n let serviceDateBtnWrap;\r\n let selectedGroupNameBtnWrap;\r\n\r\n // DATA\r\n let displayedConsumers = [];\r\n let enabledConsumers;\r\n let noLocationSet;\r\n let enabledConsumerString;\r\n let selectedConsumers;\r\n let currentLocationBatched;\r\n let locationCache = {};\r\n let activityCache = {};\r\n let dsConsumers = [];\r\n let dsGroupsCache;\r\n let dsDropdownData;\r\n let ciDropdownData;\r\n let groupDropdownData;\r\n let selectedDSType;\r\n let selectedGroup;\r\n let selectedGroupId;\r\n let locationDropdownData;\r\n let enableMultiEdit = false;\r\n let IsSaveBtnDisable = true;\r\n //permission\r\n // var PERMISSION__viewOnly = !$.session.DayServiceUpdate;\r\n\r\n const dsTypes = [\r\n { dsType: 'A', dsText: 'Adult Day' },\r\n { dsType: 'G', dsText: 'Group Employment' },\r\n //{ dsType: 'H', dsText: 'Restart Voc. Hab.' },\r\n //{ dsType: 'R', dsText: 'Restart Adult Day' },\r\n { dsType: 'X', dsText: 'STEP Voc. Hab.' },\r\n { dsType: 'S', dsText: 'STEP Adult Day' },\r\n { dsType: 'D', dsText: 'Virtual Adult Day' },\r\n { dsType: 'Y', dsText: 'Virtual Voc. Hab.' },\r\n { dsType: 'V', dsText: 'Voc. Hab.' },\r\n { dsType: 'N', dsText: 'Non-Billable' },\r\n //{ dsType: 'C', dsText: 'Combo' },\r\n //{ dsType: 'E', dsText: 'Enclave' },\r\n\r\n // { dsType: \"0\", dsText: \"Day Service\" }\r\n ];\r\n\r\n // Util\r\n //-------------------------------------------------------------------------\r\n function formatConsumersForClockIn(consumerIds) {\r\n var consumerString = consumerIds.map(c => c.id).join('|');\r\n consumerString += '|';\r\n return consumerString;\r\n }\r\n\r\n function formatConsumersForClockOut(consumerIds) {\r\n consumerIds = consumerIds.map(c => c.id);\r\n let consumerString = '';\r\n consumerIds.forEach(id => {\r\n activityCache[id].forEach(act => {\r\n if (act.Stop_Time === '') {\r\n consumerString += `${id},${act.Start_Time}|`;\r\n }\r\n });\r\n });\r\n return consumerString;\r\n }\r\n\r\n function checkIfBatched() {\r\n var miniRosterBtn = document.querySelector('.consumerListBtn');\r\n dayServiceAjax.getDSIsLocationBatched(locationID, serviceDate, res => {\r\n if (res.length !== 0) {\r\n currentLocationBatched = true;\r\n } else {\r\n currentLocationBatched = false;\r\n }\r\n if (currentLocationBatched) {\r\n if ($.session.DayServiceUpdate) mulitSelectBtn.classList.add('disabled');\r\n if ($.session.DayServiceUpdate) miniRosterBtn.classList.add('disabled');\r\n batchedMessageDisplay.classList.remove('hidden');\r\n } else {\r\n if ($.session.DayServiceUpdate) mulitSelectBtn.classList.remove('disabled');\r\n if ($.session.DayServiceUpdate) miniRosterBtn.classList.remove('disabled');\r\n batchedMessageDisplay.classList.add('hidden');\r\n checkForNoLocation();\r\n }\r\n });\r\n }\r\n\r\n function checkForNoLocation() {\r\n if (!$.session.DayServiceUpdate) return; //Don't need to do anything with multiselect or miniroster for view only.\r\n miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (noLocationSet) {\r\n miniRosterBtn.classList.add('disabled');\r\n mulitSelectBtn.classList.add('disabled');\r\n } else {\r\n miniRosterBtn.classList.remove('disabled');\r\n mulitSelectBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function getDayServiceActivity(callback) {\r\n activityCache = {};\r\n var tempDsConsumers = [];\r\n dsConsumers = [];\r\n displayedConsumers = [];\r\n\r\n //enabledConsumerString = enabledConsumers.map(c => c.id).join(',');\r\n enabledConsumerString = enabledConsumers.join(', ');\r\n if (enabledConsumerString.indexOf(', [object Object]') !== -1) {\r\n enabledConsumerString = enabledConsumerString.replaceAll(', [object Object]', '');\r\n }\r\n\r\n dayServiceAjax.getConsumerDayServiceActivity(\r\n enabledConsumerString,\r\n serviceDate,\r\n locationID,\r\n filterGroupID,\r\n filterGroupRetrieveID,\r\n res => {\r\n res.forEach(res => {\r\n obj = {\r\n Acuity: res.Acuity,\r\n AllowNonBillable: res.AllowNonBillable,\r\n Day_Service_Type: res.Day_Service_Type,\r\n FirstName: res.FirstName,\r\n LastName: res.LastName,\r\n Service_Date: res.Service_Date,\r\n Start_Time: res.Start_Time,\r\n Stop_Time: res.Stop_Time,\r\n ciStaffID: res.ciStaffID,\r\n isBatched: res.isBatched,\r\n dsGroupId: res.Day_service_group_id,\r\n };\r\n consumerObj = {\r\n id: res.ID,\r\n FirstName: res.FirstName,\r\n LastName: res.LastName,\r\n };\r\n if (activityCache[res.ID]) {\r\n arr = activityCache[res.ID];\r\n arr.push(obj);\r\n activityCache[res.ID] = arr;\r\n } else {\r\n activityCache[res.ID] = [obj];\r\n }\r\n tempDsConsumers.push(consumerObj);\r\n selectedGroupId = res.Day_service_group_id;\r\n });\r\n //filter out array to only get distinct consumers:\r\n var dsConsumerMap = new Map();\r\n for (const item of tempDsConsumers) {\r\n if (!dsConsumerMap.has(item.id)) {\r\n dsConsumerMap.set(item.id, true);\r\n dsConsumers.push({\r\n id: item.id,\r\n FirstName: item.FirstName,\r\n LastName: item.LastName,\r\n });\r\n }\r\n }\r\n //Add all consumers to the displayed consumers array\r\n dsConsumers.forEach(consumer => {\r\n displayedConsumers.push(consumer.id);\r\n });\r\n //===\r\n if (callback) callback();\r\n },\r\n );\r\n }\r\n\r\n function checkForCI(dsType) {\r\n //Chceks if selectedDSType is a DS type that allows CI returns true if it is.\r\n //If no dsType is provided function defaults to selectedDSType\r\n\r\n let type = dsType ? dsType : selectedDSType;\r\n\r\n switch (type) {\r\n case 'A':\r\n return true;\r\n case 'V':\r\n return true;\r\n case 'N':\r\n return true;\r\n case 'H':\r\n return true;\r\n case 'R':\r\n return true;\r\n case 'X':\r\n return true;\r\n case 'S':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n function errorPopup(text) {\r\n var errorPopup = POPUP.build({\r\n id: 'errorPopup',\r\n classNames: 'error',\r\n });\r\n var errorPopupText = document.createElement('p');\r\n errorPopupText.classList.add('errorTextArea');\r\n errorPopup.appendChild(errorPopupText);\r\n errorPopupText.innerHTML = text;\r\n POPUP.show(errorPopup);\r\n }\r\n\r\n // Search\r\n //-------------------------------------------------------------------------\r\n function searchDS(searchValue) {\r\n // gather all names shown\r\n //reset the array containing list of consumers that are being displayed\r\n displayedConsumers = [];\r\n searchValue = searchValue.toLowerCase();\r\n dsConsumers.forEach(consumer => {\r\n var firstName = consumer.FirstName.toLowerCase();\r\n var lastName = consumer.LastName.toLowerCase();\r\n var fullName = `${lastName}, ${firstName}`;\r\n var fullNameReversed = `${lastName}, ${firstName}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n var matchesNameReverse = fullNameReversed.indexOf(searchValue);\r\n var consumerCard = document.querySelector(`[data-consumerid=\"${consumer.id}\"]`);\r\n\r\n if (matchesName !== -1 || matchesNameReverse !== -1) {\r\n consumerCard.classList.remove('hidden');\r\n displayedConsumers.push(consumer.id);\r\n } else {\r\n consumerCard.classList.add('hidden');\r\n var index = displayedConsumers.indexOf(consumer.id);\r\n if (index > -1) displayedConsumers.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n function convertDSValueToText(value) {\r\n var newtext;\r\n switch (value) {\r\n case 'C':\r\n newText = 'Combo';\r\n break;\r\n case 'A':\r\n newText = 'Adult Day';\r\n break;\r\n case 'V':\r\n newText = 'Voc. Hab.';\r\n break;\r\n case 'E':\r\n newText = 'Enclave';\r\n break;\r\n case 'N':\r\n newText = 'Non-Billable';\r\n break;\r\n case 'G':\r\n newText = 'Group Employment';\r\n break;\r\n //case 'H':\r\n //\tnewText = 'Restart Voc. Hab.';\r\n //\tbreak;\r\n //case 'R':\r\n //\tnewText = 'Restart Adult Day';\r\n //\tbreak;\r\n case 'X':\r\n newText = 'STEP Voc. Hab.';\r\n break;\r\n case 'S':\r\n newText = 'STEP Adult Day';\r\n break;\r\n case 'D':\r\n newText = 'Virtual Adult Day';\r\n break;\r\n case 'Y':\r\n newText = 'Virtual Voc. Hab.';\r\n break;\r\n default:\r\n newText = 'Day Service';\r\n }\r\n return newText;\r\n }\r\n\r\n function updateCurrentFilterDisplay() {\r\n\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n\r\n if (!currentFilterDisplay) {\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n filterButtonSet();\r\n currentFilterDisplay.appendChild(btnWrap);\r\n }\r\n\r\n currentFilterDisplay.style.maxWidth = '100%';\r\n\r\n if (document.getElementById('locationBtn') != null)\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + locationCache[locationID].locationName;\r\n\r\n if (document.getElementById('serviceDateBtn') != null)\r\n document.getElementById('serviceDateBtn').innerHTML = 'Date: ' + UTIL.formatDateFromIso(serviceDate);\r\n\r\n if (selectedGroupName === 'Everyone') {\r\n selectedGroupNameBtnWrap.style.display = 'none';\r\n } else {\r\n if (document.getElementById('selectedGroupNameBtn') != null)\r\n document.getElementById('selectedGroupNameBtn').innerHTML = 'Group: ' + selectedGroupName;\r\n selectedGroupNameBtnWrap.style.display = 'inherit';\r\n }\r\n return currentFilterDisplay;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { dayServicesFilterPopup('ALL') },\r\n });\r\n\r\n locationBtn = button.build({\r\n id: 'locationBtn',\r\n text: 'Location: ' + locationCache[locationID].locationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { dayServicesFilterPopup('locationBtn') },\r\n });\r\n\r\n serviceDateBtn = button.build({\r\n id: 'serviceDateBtn',\r\n text: 'Date: ' + UTIL.formatDateFromIso(serviceDate),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { dayServicesFilterPopup('serviceDateBtn') },\r\n });\r\n\r\n selectedGroupNameBtn = button.build({\r\n id: 'selectedGroupNameBtn',\r\n text: 'Group: ' + selectedGroupName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { dayServicesFilterPopup('selectedGroupNameBtn') },\r\n });\r\n selectedGroupNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('selectedGroupNameBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n locationBtnWrap = document.createElement('div');\r\n locationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationBtnWrap.appendChild(locationBtn);\r\n btnWrap.appendChild(locationBtnWrap);\r\n\r\n serviceDateBtnWrap = document.createElement('div');\r\n serviceDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceDateBtnWrap.appendChild(serviceDateBtn);\r\n btnWrap.appendChild(serviceDateBtnWrap);\r\n\r\n selectedGroupNameBtnWrap = document.createElement('div');\r\n selectedGroupNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedGroupNameBtnWrap.appendChild(selectedGroupNameBtn);\r\n if ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices') { } else {\r\n selectedGroupNameBtnWrap.appendChild(selectedGroupNameCloseBtn);\r\n } \r\n selectedGroupNameBtnWrap.setAttribute(\"id\", \"GroupNameCloseBtn\");\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'selectedGroupNameBtn') {\r\n selectedGroupName = 'Everyone';\r\n temp__groupID = 'ALL'; \r\n }\r\n filterApplyAction(filterPopup);\r\n }\r\n\r\n // Action Nav\r\n //-------------------------------------------------------------------------\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n selectedConsumers.forEach(consumer => {\r\n const index = enabledConsumers.findIndex(x => x.id == consumer.id);\r\n if (index === -1) {\r\n //enabledConsumers.push(consumer);\r\n enabledConsumers.push(consumer.id);\r\n }\r\n });\r\n DOM.toggleNavLayout();\r\n roster2.clearActiveConsumers();\r\n clockInOutChoicePopup();\r\n\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n //if (initRosterSelection) {\r\n // loadApp('home');\r\n //} else {\r\n DOM.toggleNavLayout();\r\n //}\r\n break;\r\n }\r\n }\r\n }\r\n function setupActionNav() {\r\n multiSelectBtn = document.getElementById('multiSelectBtn');\r\n multiDeleteRecordBtn = button.build({\r\n text: 'Delete Record',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: function () {\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n multiDeleteRecord(highlightedRows);\r\n //Reset Stuff\r\n ACTION_NAV.hide();\r\n enableMultiEdit = false;\r\n filterBtn.classList.toggle('disabled');\r\n multiSelectBtn.classList.toggle('enabled');\r\n miniRosterBtn.classList.toggle('disabled');\r\n multiSelectAllNoneArea.classList.add('hidden');\r\n //Un-select elements\r\n var selectedElms = document.querySelectorAll('.selected');\r\n [].forEach.call(selectedElms, function (el) {\r\n el.classList.remove('selected');\r\n });\r\n },\r\n });\r\n\r\n multiInRecordBtn = button.build({\r\n text: 'Clock In',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: function () {\r\n var highlightedHeaders = [].slice.call(document.querySelectorAll('.card__header.selected'));\r\n multiInOutRecord('in', highlightedHeaders);\r\n //Reset Stuff\r\n ACTION_NAV.hide();\r\n enableMultiEdit = false;\r\n filterBtn.classList.toggle('disabled');\r\n multiSelectBtn.classList.toggle('enabled');\r\n miniRosterBtn.classList.toggle('disabled');\r\n multiSelectAllNoneArea.classList.add('hidden');\r\n //Un-select elements\r\n var selectedElms = document.querySelectorAll('.selected');\r\n [].forEach.call(selectedElms, function (el) {\r\n el.classList.remove('selected');\r\n });\r\n },\r\n });\r\n\r\n multiOutRecordBtn = button.build({\r\n text: 'Clock Out',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: function () {\r\n var highlightedHeaders = [].slice.call(document.querySelectorAll('.card__header.selected'));\r\n multiInOutRecord('out', highlightedHeaders);\r\n //Reset Stuff\r\n ACTION_NAV.hide();\r\n enableMultiEdit = false;\r\n filterBtn.classList.toggle('disabled');\r\n multiSelectBtn.classList.toggle('enabled');\r\n miniRosterBtn.classList.toggle('disabled');\r\n multiSelectAllNoneArea.classList.add('hidden');\r\n //Un-select elements\r\n var selectedElms = document.querySelectorAll('.selected');\r\n [].forEach.call(selectedElms, function (el) {\r\n el.classList.remove('selected');\r\n });\r\n },\r\n });\r\n\r\n ACTION_NAV.clear();\r\n ACTION_NAV.populate([multiInRecordBtn, multiOutRecordBtn, multiDeleteRecordBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n\r\n // Filter\r\n //-------------------------------------------------------------------------\r\n function populateFilterGroupDropdown() {\r\n let groupCodeObj = {};\r\n\r\n const data = rosterGroupResults.map(r => {\r\n // dataObj for quick lookup\r\n if (!groupCodeObj[r.GroupCode]) {\r\n groupCodeObj[r.GroupCode] = {\r\n groupCode: r.GroupCode,\r\n groupName: r.GroupName,\r\n members: r.Members ? r.Members.split('|') : r.Members,\r\n };\r\n }\r\n\r\n return {\r\n //value: `${r.GroupCode}-${r.RetrieveID}`,\r\n value: r.GroupCode,\r\n text: r.GroupName,\r\n attributes: [{ key: 'data-retrieveId', value: r.RetrieveID }],\r\n };\r\n });\r\n if ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices') {\r\n defaultVal = 'CAS'; \r\n } else {\r\n defaultVal = !filterGroupID || filterGroupID === '%' ? 'ALL' : filterGroupID;\r\n } \r\n dropdown.populate(filterGroupDropdown, data, defaultVal); \r\n }\r\n function dayServicesFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({\r\n classNames: 'dayServiceFilterPopup',\r\n header: 'Filter',\r\n id: 'dayServiceFilterPopup',\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(fitlerApplyBtn);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'serviceDateBtn')\r\n filterPopup.appendChild(filterDateInput);\r\n if (IsShow == 'ALL' || IsShow == 'locationBtn')\r\n filterPopup.appendChild(filterLocationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'selectedGroupNameBtn')\r\n filterPopup.appendChild(filterGroupDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n POPUP.show(filterPopup);\r\n\r\n dropdown.populate(filterLocationDropdown, locationDropdownData, locationID);\r\n populateFilterGroupDropdown();\r\n }\r\n function filterApplyAction(popup) {\r\n //I need to close the filter popup after clicking apply and not in the callback of an AJAX call.\r\n //Issue is if there is a slow connection the apply button can be clicked multiple times.\r\n \r\n if (temp__serviceDate) {\r\n serviceDate = temp__serviceDate;\r\n roster2.updateSelectedDate(serviceDate);\r\n }\r\n if (temp__groupID) {\r\n filterGroupID = temp__groupID;\r\n filterGroupRetrieveID = temp__retrieveID;\r\n }\r\n\r\n //MAT\r\n locationName = filterLocationDropdown.firstElementChild.options[filterLocationDropdown.firstElementChild.selectedIndex].innerText;\r\n locationID = filterLocationDropdown.firstElementChild.options[filterLocationDropdown.firstElementChild.selectedIndex].value;\r\n\r\n roster2.updateSelectedLocationId(locationID, locationName);\r\n noLocationSet = locationID === '' ? true : false;\r\n checkForNoLocation();\r\n\r\n // Update Default Location if Remember Last Location is set:\r\n if (defaults.rememberLastLocation('dayServices'))\r\n defaults.setLocation('dayServices', locationID);\r\n\r\n updateCurrentFilterDisplay();\r\n\r\n //1) get enabled consumers\r\n try {\r\n dayServiceAjax.getDayServiceGetEnabledConsumers(serviceDate, locationID, res => {\r\n fitlerApplyBtn.disabled = false;\r\n\r\n const allowedConsumers = [];\r\n res.forEach(r => {\r\n const consumer_id = r.consumerId;\r\n allowedConsumers.push({ consumer_id: consumer_id });\r\n enabledConsumers.push(consumer_id);\r\n });\r\n roster2.setAllowedConsumers(allowedConsumers);\r\n doStuff();\r\n });\r\n } catch (error) {\r\n fitlerApplyBtn.disabled = false;\r\n POPUP.hide(popup);\r\n }\r\n\r\n function doStuff() {\r\n getDayServiceActivity(() => {\r\n //2.1) Check if location/Date combo is batched\r\n checkIfBatched();\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n\r\n //3) get CI staff for new location and date\r\n //dayServiceAjax.getCiStaff(serviceDate, locationID, (res) => {\r\n //\tciDropdownData = res.map((ci) => {\r\n //\t\tvar id = `ci-${ci.id}`;\r\n //\t\tvar value = ci.id;\r\n //\t\tvar text = ci.fullName;\r\n //\t\treturn {\r\n //\t\t\tid,\r\n //\t\t\tvalue,\r\n //\t\t\ttext,\r\n //\t\t};\r\n //\t});\r\n //\tciDropdownData.unshift({ id: 'ci-0', value: '', text: '' });\r\n //});\r\n\r\n //4) get groups for new location\r\n dayServiceAjax.getDayServiceGroups($.session.Token, locationID, res => {\r\n dsGroupsCache = {};\r\n groupDropdownData = res.map((group, index) => {\r\n var { groupId, groupDescription } = group;\r\n if (index === 0) selectedGroupId = groupId;\r\n\r\n if (!dsGroupsCache[groupId]) {\r\n dsGroupsCache[groupId] = {\r\n id: groupId,\r\n value: groupDescription,\r\n };\r\n }\r\n\r\n return {\r\n id: groupId,\r\n value: groupId,\r\n text: groupDescription,\r\n };\r\n });\r\n groupDropdownData.unshift({ id: '%', value: '', text: '' });\r\n });\r\n }\r\n }\r\n\r\n // DS Cards\r\n //-------------------------------------------------------------------------\r\n function handleDayServiceCardEvents(element, consumer) {\r\n var isRow = event.target.classList.contains('table__row');\r\n var isHeader = event.target.classList.contains('card__header');\r\n // consumer = event.target.dataset.consumerid;\r\n\r\n if (!isRow && !isHeader) return; // if not row or header return\r\n if (isRow) {\r\n if (enableMultiEdit) {\r\n event.target.classList.toggle('selected');\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n if (highlightedRows.length > 0) {\r\n multiDeleteRecordBtn.classList.remove('disabled');\r\n } else {\r\n multiDeleteRecordBtn.classList.add('disabled');\r\n }\r\n } else if (!enableMultiEdit) {\r\n rowPopup(element, consumer);\r\n }\r\n }\r\n if (isHeader) {\r\n if (enableMultiEdit) {\r\n event.target.classList.toggle('selected');\r\n var highlightedHeaders = [].slice.call(document.querySelectorAll('.card__header.selected'));\r\n if (highlightedHeaders.length > 0) {\r\n multiOutRecordBtn.classList.remove('disabled');\r\n multiInRecordBtn.classList.remove('disabled');\r\n } else {\r\n multiInRecordBtn.classList.add('disabled');\r\n multiOutRecordBtn.classList.add('disabled');\r\n }\r\n }\r\n }\r\n }\r\n function buildCards() {\r\n if (!dsConsumers || dsConsumers.length === 0) {\r\n // show message\r\n const message = `There are no individuals clocked in at this location for the selected date. Please use the Roster button below to select individuals to clock in.`;\r\n dsCardArea.innerHTML = `

    ${message}

    `;\r\n return;\r\n }\r\n\r\n //sort consumers Alphabeically\r\n dsConsumers.sort(function (a, b) {\r\n var textA = a.LastName.toUpperCase();\r\n var textB = b.LastName.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n //For each unique consumer, create a card:\r\n dsConsumers.forEach(consumer => {\r\n var card = document.createElement('div');\r\n card.classList.add('card', 'dayServiceActivityCard');\r\n card.setAttribute('data-consumerID', consumer.id);\r\n card.setAttribute('id', 'consumer-' + consumer.id);\r\n\r\n var cardHeader = document.createElement('div');\r\n cardHeader.classList.add('card__header');\r\n cardHeader.setAttribute('data-consumerID', consumer.id);\r\n\r\n var cardBody = document.createElement('div');\r\n cardBody.classList.add('card__body');\r\n\r\n cardHeader.innerHTML = `\r\n \r\n

    ${activityCache[consumer.id][0].FirstName} ${activityCache[consumer.id][0].LastName}

    \r\n

    ${activityCache[consumer.id][0].Acuity === ''\r\n ? ''\r\n : 'Acuity: ' + activityCache[consumer.id][0].Acuity\r\n }

    \r\n `;\r\n\r\n var cardBodyHeader = document.createElement('div');\r\n cardBodyHeader.innerHTML = `
    In
    Out
    DS Type
    Group
    `; //
    CI
    \r\n cardBodyHeader.classList.add('dayServiceCardBodyHeader');\r\n cardBody.appendChild(cardBodyHeader);\r\n\r\n card.appendChild(cardHeader);\r\n card.appendChild(cardBody);\r\n\r\n //For each activity that consumer has, create a new row:\r\n activityCache[consumer.id].forEach(act => {\r\n var dsGroup = dsGroupsCache[act.dsGroupId];\r\n var dsGroupValue = dsGroup ? dsGroup.value : null;\r\n var displayStartTime = UTIL.convertFromMilitary(act.Start_Time);\r\n var displayEndTime = UTIL.convertFromMilitary(act.Stop_Time);\r\n var cardRow = document.createElement('div');\r\n cardRow.classList.add('dayServiceCardRow', 'table__row');\r\n\r\n if (act.Day_Service_Type !== '')\r\n var dayServiceDisplay = convertDSValueToText(act.Day_Service_Type);\r\n else var dayServiceDisplay = icons.error;\r\n\r\n //A V N allow CI\r\n //let allowCI = false;\r\n //let hasCI = false;\r\n //if (checkForCI(act.Day_Service_Type)) {\r\n //\tcardRow.setAttribute('data-allow-CI', true);\r\n //\tallowCI = true;\r\n //\tif (act.ciStaffID !== '') {\r\n //\t\tcardRow.setAttribute('data-has-CI', true);\r\n //\t\thasCI = true;\r\n //\t} else {\r\n //\t\tcardRow.setAttribute('data-has-CI', false);\r\n //\t}\r\n //} else {\r\n //\tcardRow.setAttribute('data-allow-CI', false);\r\n //}\r\n\r\n //ADD in time and consumer ID data attributes for easier multi-select opperations\r\n cardRow.setAttribute('data-in-time', act.Start_Time);\r\n cardRow.setAttribute('data-consumer-id', consumer.id);\r\n\r\n cardRow.innerHTML = `\r\n
    ${displayStartTime}
    \r\n
    ${displayEndTime === '' ? icons.error : displayEndTime}
    \r\n
    ${dayServiceDisplay}
    \r\n
    ${dsGroupValue ? dsGroupValue : act.Day_Service_Type === 'S' || act.Day_Service_Type === 'X' ? icons.error : '-'}
    \r\n `;\r\n //
    ${allowCI === true ? (hasCI === true ? icons.checkmark : '-') : '-'}
    \r\n //View only has no need to click on a row:\r\n if ($.session.DayServiceUpdate) {\r\n cardRow.addEventListener('click', function () {\r\n handleDayServiceCardEvents(event.target, consumer.id);\r\n });\r\n }\r\n cardBody.appendChild(cardRow);\r\n });\r\n\r\n cardHeader.addEventListener('click', function () {\r\n handleDayServiceCardEvents(event.target);\r\n });\r\n dsCardArea.appendChild(card);\r\n });\r\n\r\n //Add place holders for odd number of cards;\r\n var placeholder1 = document.createElement('div');\r\n var placeholder2 = document.createElement('div');\r\n var placeholder3 = document.createElement('div');\r\n var placeholder4 = document.createElement('div');\r\n placeholder1.classList.add('cardPlaceholder');\r\n placeholder2.classList.add('cardPlaceholder');\r\n placeholder3.classList.add('cardPlaceholder');\r\n placeholder4.classList.add('cardPlaceholder');\r\n dsCardArea.appendChild(placeholder1);\r\n dsCardArea.appendChild(placeholder2);\r\n dsCardArea.appendChild(placeholder3);\r\n dsCardArea.appendChild(placeholder4);\r\n }\r\n\r\n //==== Muti Button Stuff =========================\r\n function enableMultiEditRows(multiBtn) {\r\n setupActionNav();\r\n miniRosterBtn = document.querySelector('.consumerListBtn');\r\n miniRosterBtn.classList.toggle('disabled');\r\n\r\n enableMultiEdit = !enableMultiEdit;\r\n multiBtn.classList.toggle('enabled');\r\n\r\n if (enableMultiEdit) {\r\n multiSelectAllNoneArea.classList.remove('hidden');\r\n ACTION_NAV.show();\r\n } else {\r\n multiSelectAllNoneArea.classList.add('hidden');\r\n ACTION_NAV.hide();\r\n }\r\n\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n var highlightedHeaders = [].slice.call(document.querySelectorAll('.card__header.selected'));\r\n highlightedHeaders.forEach(header => header.classList.remove('selected'));\r\n }\r\n //When Delete record button is clicked -\r\n function multiDeleteRecord(highlightedRows) {\r\n deleteConfirmation(\r\n null,\r\n (res = () => {\r\n if (res) {\r\n var recordsToDelete = '';\r\n highlightedRows.forEach(row => {\r\n recordsToDelete += `${row.dataset.consumerId},${row.dataset.inTime}|`;\r\n });\r\n deleteDSRecord(recordsToDelete);\r\n }\r\n }),\r\n );\r\n }\r\n //when in or out button is clicked -\r\n function multiInOutRecord(type, highlightedHeaders) {\r\n selectedConsumers = [];\r\n highlightedHeaders.forEach(row => {\r\n obj = {};\r\n obj['id'] = row.dataset.consumerid;\r\n selectedConsumers.push(obj);\r\n });\r\n clockInOutActionPopup(type);\r\n }\r\n\r\n //====== POPUP WHEN CLICKING ON A ACTIVITY ROW =========================\r\n function rowPopup(element, consumer) {\r\n //==== !No Popup When Location is Batched! ====\r\n if (currentLocationBatched) {\r\n return;\r\n }\r\n //======= REST =========\r\n var ciStaffID;\r\n var dsType;\r\n var groupID;\r\n var newInTime;\r\n var newOutTime;\r\n\r\n let outTime =\r\n element.childNodes[3].childElementCount !== 0\r\n ? null\r\n : UTIL.convertToMilitary(element.childNodes[3].innerHTML);\r\n let inTime = UTIL.convertToMilitary(element.childNodes[1].innerHTML);\r\n activityCache[consumer].forEach(act => {\r\n if (act.Start_Time === inTime) {\r\n ciStaffID = act.ciStaffID;\r\n dsType = act.Day_Service_Type;\r\n groupID = act.dsGroupId;\r\n }\r\n });\r\n\r\n var popup = POPUP.build({\r\n classNames: 'dayServiceRowPopup',\r\n header: `${activityCache[consumer][0].FirstName} ${activityCache[consumer][0].LastName}`,\r\n id: `consumer${consumer}`,\r\n });\r\n\r\n var inTimeField = input.build({\r\n id: 'inTime',\r\n label: 'In Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: inTime,\r\n });\r\n var outTimeField = input.build({\r\n id: 'outTime',\r\n label: 'Out Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: outTime,\r\n });\r\n\r\n var dsTypeDropdown = dropdown.build({\r\n dropdownId: 'dsTypeDropdown',\r\n label: 'DS Type',\r\n style: 'secondary',\r\n });\r\n //var ciDropdown = dropdown.build({\r\n //\tdropdownId: 'ciDropdown',\r\n //\tlabel: 'CI',\r\n //\tstyle: 'secondary',\r\n //});\r\n groupDropdown = dropdown.build({\r\n id: 'groupDropdown',\r\n dropdownId: 'groupDropdown',\r\n label: 'Group', \r\n style: 'secondary',\r\n });\r\n\r\n saveBtn = button.build({\r\n text: 'Save',\r\n id: 'rowSaveBtn',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n callback: function () {\r\n if (IsSaveBtnDisable) {\r\n dsTypeDropdown = document.getElementById('dsTypeDropdown');\r\n //ciStaffDropdown = document.getElementById('ciDropdown');\r\n groupDropdown = document.getElementById('groupDropdown');\r\n //if (ciStaffDropdown) ciStaffID = ciStaffDropdown.options[ciStaffDropdown.selectedIndex].value;\r\n if (groupDropdown)\r\n selectedGroupId = groupDropdown.options[groupDropdown.selectedIndex].value;\r\n selectedDSType = dsTypeDropdown.options[dsTypeDropdown.selectedIndex].value;\r\n saveTypeAndCi(\r\n consumer,\r\n inTime,\r\n newInTime,\r\n outTime,\r\n newOutTime,\r\n selectedDSType,\r\n ciStaffID,\r\n selectedGroupId,\r\n );\r\n POPUP.hide(popup);\r\n }\r\n IsSaveBtnDisable = true;\r\n },\r\n });\r\n var deleteBtn = button.build({\r\n text: 'Delete Record',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'delete',\r\n callback: function () {\r\n deleteConfirmation(\r\n popup,\r\n (res = () => {\r\n if (res) {\r\n consumerDeleteString = `${consumer},${inTime}|`;\r\n deleteDSRecord(consumerDeleteString);\r\n POPUP.hide(popup);\r\n }\r\n }),\r\n );\r\n },\r\n });\r\n\r\n inTimeField.addEventListener('change', () => {\r\n let inTimeField = document.getElementById('inTime');\r\n newInTime = inTimeField.value;\r\n });\r\n\r\n outTimeField.addEventListener('change', () => {\r\n let outTimeField = document.getElementById('outTime');\r\n newOutTime = outTimeField.value;\r\n });\r\n\r\n dsTypeDropdown.addEventListener('change', () => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedDSType = selectedOption.value;\r\n checkRequiredFieldsOfNewEntry();\r\n //let allowCi = checkForCI();\r\n //if (allowCi) {\r\n //\tciDropdown.style.display = '';\r\n //\tdropdown.populate(ciDropdown, ciDropdownData);\r\n //} else {\r\n //\tciDropdown.style.display = 'none';\r\n //}\r\n });\r\n\r\n saveBtn.addEventListener('keypress', event => {\r\n if (event.keyCode === 13 && saveBtn.classList.contains('disabled')) {\r\n IsSaveBtnDisable = false;\r\n }\r\n });\r\n\r\n groupDropdown.addEventListener('change', () => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedGroup = selectedOption.innerText;\r\n selectedGroupId = selectedOption.id;\r\n checkRequiredFieldsOfNewEntry();\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n\r\n popup.appendChild(inTimeField);\r\n popup.appendChild(outTimeField);\r\n popup.appendChild(dsTypeDropdown);\r\n popup.appendChild(groupDropdown);\r\n //popup.appendChild(ciDropdown);\r\n //ciDropdown.style.display = element.dataset.allowCi === 'true' ? 'auto' : 'none';\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n\r\n dropdown.populate(dsTypeDropdown, dsDropdownData, dsType);\r\n //dropdown.populate(ciDropdown, ciDropdownData, ciStaffID);\r\n dropdown.populate(groupDropdown, groupDropdownData, groupID);\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n //====== POPUP WARNING WHEN CONSUMER HAS EXISTING DAY SERVICE ACTIVITY ===========\r\n function consumerExistingDayServicePopup(consumerList) {\r\n var popup = POPUP.build({\r\n header: 'At least one consumer has existing day service activity at another location.',\r\n });\r\n\r\n var continueBtn = button.build({\r\n text: 'Continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n clockInOutActionPopup('in');\r\n },\r\n });\r\n\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n roster2.clearActiveConsumers();\r\n },\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(continueBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n var textArea;\r\n consumerList.forEach(consumer => {\r\n textArea = document.createElement('p');\r\n textArea.innerHTML = `\r\n
    Name: ${consumer.name}
    \r\n
    Location: ${consumer.location}
    \r\n
    Start Time: ${consumer.startTime}
    \r\n
    End Time: ${consumer.endTime}
    \r\n

    \r\n `;\r\n popup.appendChild(textArea);\r\n });\r\n\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n\r\n function checkRequiredFieldsOfNewEntry() {\r\n\r\n var selectedGroupId = '';\r\n var selectedDSTypeId = '';\r\n var group = document.getElementById('groupDropdown');\r\n var dsType = document.getElementById('dsTypeDropdown');\r\n if (group)\r\n selectedGroupId = group.options[group.selectedIndex].value;\r\n if (dsType)\r\n selectedDSTypeId = dsType.options[dsType.selectedIndex].value;\r\n\r\n if (selectedGroupId === '' && (selectedDSTypeId == 'X' || selectedDSTypeId == 'S')) {\r\n groupDropdown.classList.add('error');\r\n } else {\r\n groupDropdown.classList.remove('error');\r\n }\r\n setBtnStatusOfSave();\r\n }\r\n\r\n function setBtnStatusOfSave() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n //====== POPUP DISPLAYING OPTION TO CLOCKIN OR CLOCK OUT =========================\r\n function clockInOutChoicePopup() {\r\n let popup = POPUP.build({\r\n header: 'Please Choose an Option',\r\n id: 'clockInOutChoicePopup',\r\n });\r\n\r\n let clockInBtn = button.build({\r\n text: 'Clock In',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n\r\n const idString = selectedConsumers.map(function (sc) {\r\n return sc.id\r\n }).join(\",\");\r\n\r\n //Get a list of any existing day service activity for this consumer, on today's date, on other locations\r\n const clockedInConsumers = await dayServiceAjax.getDayServiceClockedInConsumers({\r\n token: $.session.Token,\r\n consumerIdString: idString,\r\n serviceDate: serviceDate,\r\n locationId: locationID,\r\n });\r\n\r\n //If the consumer has no existing day service activity, behave normally...\r\n if (clockedInConsumers.length === 0) {\r\n clockInOutActionPopup('in');\r\n } else {\r\n consumerExistingDayServicePopup(clockedInConsumers);\r\n }\r\n },\r\n });\r\n let clockOutBtn = button.build({\r\n text: 'Clock Out',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n clockInOutActionPopup('out');\r\n },\r\n });\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('choiceBtnWrap');\r\n btnWrap.appendChild(clockInBtn);\r\n btnWrap.appendChild(clockOutBtn);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n //====== ACTION FOR CLOCKING IN OR OUT =========================\r\n // in / clock out popup\r\n function clockInOutActionPopup(choice) {\r\n let inPopup = POPUP.build({\r\n header: 'Clock In',\r\n id: 'clockInOutPopup',\r\n });\r\n\r\n let outPopup = POPUP.build({\r\n header: 'Clock Out',\r\n id: 'clockInOutPopup',\r\n });\r\n\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n let timeInField = input.build({\r\n id: 'inTime',\r\n label: 'In Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: currentTime,\r\n });\r\n\r\n let timeOutField = input.build({\r\n id: 'outTime',\r\n label: 'Out Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: currentTime,\r\n });\r\n\r\n let clockInBtn = button.build({\r\n text: 'Clock In',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: 'clockInBtn',\r\n callback: function () {\r\n clockIn(timeInField);\r\n POPUP.hide(inPopup);\r\n roster2.clearActiveConsumers();\r\n //Clock in function\r\n },\r\n });\r\n\r\n let clockOutBtn = button.build({\r\n text: 'Clock Out',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n clockOut();\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(outPopup);\r\n //clock out function\r\n },\r\n });\r\n\r\n let inCancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(inPopup);\r\n },\r\n });\r\n\r\n let outCancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(outPopup);\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n timeInField.addEventListener('change', function () {\r\n let inTimeField = document.getElementById('inTime');\r\n if (inTimeField.value === '') {\r\n clockInBtn.classList.add('disabled');\r\n timeInField.classList.add('error');\r\n } else {\r\n clockInBtn.classList.remove('disabled');\r\n timeInField.classList.remove('error');\r\n }\r\n });\r\n\r\n timeOutField.addEventListener('change', function () {\r\n let outTimeField = document.getElementById('outTime');\r\n if (outTimeField.value === '') {\r\n clockOutBtn.classList.add('disabled');\r\n timeOutField.classList.add('error');\r\n } else {\r\n clockOutBtn.classList.remove('disabled');\r\n timeOutField.classList.remove('error');\r\n }\r\n });\r\n\r\n switch (choice) {\r\n case 'in': {\r\n inPopup.appendChild(timeInField);\r\n btnWrap.appendChild(clockInBtn);\r\n btnWrap.appendChild(inCancelBtn);\r\n inPopup.appendChild(btnWrap);\r\n POPUP.show(inPopup);\r\n break;\r\n }\r\n case 'out': {\r\n outPopup.appendChild(timeOutField);\r\n btnWrap.appendChild(clockOutBtn);\r\n btnWrap.appendChild(outCancelBtn);\r\n outPopup.appendChild(btnWrap);\r\n POPUP.show(outPopup);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function clockIn() {\r\n let inTime = document.getElementById('inTime').value;\r\n inTime += ':00';\r\n let clockInConsumerString = formatConsumersForClockIn(selectedConsumers);\r\n let selectedConsumerCount = selectedConsumers.length;\r\n //get consuemrs with existing clockins TODO. call new ajax. $.session.Token\r\n dayServiceAjax.dayServiceClockIn(\r\n clockInConsumerString,\r\n serviceDate,\r\n locationID,\r\n inTime,\r\n res => {\r\n //Overlap error occured\r\n if (res.indexOf('615') !== -1) {\r\n let start = res.search('');\r\n let end = res.search('');\r\n var overlapConsumers = res.substring(start + 11, end - 1).split('|');\r\n }\r\n getDayServiceActivity(cb => {\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n if (overlapConsumers) {\r\n overlapConsumers.forEach(consumer => {\r\n let card = document.getElementById('consumer-' + consumer);\r\n cardHeader = card.querySelector('.card__header');\r\n cardHeader.classList.add('overlapError');\r\n accuityDisplay = cardHeader.querySelector('.accuityDisplay');\r\n accuityDisplay.innerHTML = 'TIME OVERLAP';\r\n });\r\n }\r\n });\r\n },\r\n );\r\n selectedConsumers = null;\r\n }\r\n\r\n function clockOut() {\r\n let outTime = document.getElementById('outTime').value;\r\n outTime += ':00';\r\n let clockOutConsumerString = formatConsumersForClockOut(selectedConsumers);\r\n dayServiceAjax.updateDayServiceActivity(\r\n clockOutConsumerString,\r\n 'Stop Time',\r\n outTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n //Overlap error occured\r\n if (res.indexOf('615') !== -1) {\r\n let start = res.search('');\r\n let end = res.search('');\r\n var overlapConsumers = res.substring(start + 11, end - 1).split('|');\r\n }\r\n getDayServiceActivity(cb => {\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n if (overlapConsumers) {\r\n overlapConsumers.forEach(consumer => {\r\n let card = document.getElementById('consumer-' + consumer);\r\n cardHeader = card.querySelector('.card__header');\r\n cardHeader.classList.add('overlapError');\r\n accuityDisplay = cardHeader.querySelector('.accuityDisplay');\r\n accuityDisplay.innerHTML = 'TIME OVERLAP';\r\n });\r\n }\r\n });\r\n },\r\n );\r\n selectedConsumers = null;\r\n }\r\n\r\n function deleteDSRecord(consumerDeleteString) {\r\n // let consumerString = `${consumerId},${inTime}|`;\r\n dayServiceAjax.deleteDayServiceActivity(consumerDeleteString, serviceDate, locationID, res => {\r\n getDayServiceActivity(cb => {\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n });\r\n }\r\n //POPUP for confirming the delete action\r\n function deleteConfirmation(orgPopup, callback) {\r\n if (orgPopup) POPUP.hide(orgPopup);\r\n\r\n var confPopup = POPUP.build({\r\n classNames: 'warning',\r\n });\r\n\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'no',\r\n callback: function () {\r\n POPUP.hide(confPopup);\r\n if (orgPopup) POPUP.show(orgPopup);\r\n callback((res = false));\r\n },\r\n });\r\n var confirmBtn = button.build({\r\n text: 'Delete Entry',\r\n style: 'secondary',\r\n type: 'outlined',\r\n id: 'confDeleteBtn',\r\n icon: 'delete',\r\n callback: function () {\r\n POPUP.hide(confPopup);\r\n callback((res = true));\r\n },\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(cancelBtn);\r\n btnWrap.appendChild(confirmBtn);\r\n\r\n var textArea = document.createElement('p');\r\n textArea.classList.add('warningTextArea');\r\n textArea.innerHTML = 'Are you sure you want to delete this record?';\r\n confPopup.appendChild(textArea);\r\n confPopup.appendChild(btnWrap);\r\n POPUP.show(confPopup);\r\n }\r\n\r\n //Update single DS record from the row popup. Curently updates everything even if it wasn't changed.\r\n function saveTime(\r\n consumerId,\r\n orgInTime,\r\n newInTime,\r\n orgEndTime,\r\n newOutTime,\r\n selectedDSType,\r\n ciStaffId,\r\n ) {\r\n let consumerString = `${consumerId},${orgInTime}|`;\r\n\r\n //Update Start Time && Stop Times\r\n if (newInTime && newOutTime) {\r\n newInTime += ':00';\r\n newOutTime += ':00';\r\n try {\r\n if (newInTime > newOutTime) {\r\n throw 'overlap';\r\n }\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Start Time',\r\n newInTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n if (res.indexOf('615') !== -1) errorPopup('Start Time Overlaps with existing Activity');\r\n },\r\n );\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Stop Time',\r\n newOutTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n if (res.indexOf('615') !== -1) errorPopup('Stop Time Overlaps with existing Activity');\r\n //Finally - Reload DS Card Area\r\n getDayServiceActivity(() => {\r\n //1) get activity from DB, 2(cb) rebuild the cards.\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n },\r\n );\r\n newInTime = null;\r\n newOutTime = null;\r\n } catch (e) {\r\n if (e === 'overlap') {\r\n errorPopup('Times Overlap');\r\n }\r\n }\r\n }\r\n //Only New In Time\r\n else if (newInTime && !newOutTime) {\r\n newInTime += ':00';\r\n try {\r\n if (newInTime > orgEndTime) {\r\n throw 'overlap';\r\n }\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Start Time',\r\n newInTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n if (res.indexOf('615') !== -1) errorPopup('Start Time Overlaps with existing Activity');\r\n //Finally - Reload DS Card Area\r\n getDayServiceActivity(() => {\r\n //1) get activity from DB, 2(cb) rebuild the cards.\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n },\r\n );\r\n newInTime = null;\r\n } catch (e) {\r\n if (e === 'overlap') {\r\n errorPopup('Start Time Overlaps with End Time');\r\n }\r\n }\r\n }\r\n //Only New Out Time\r\n else if (newOutTime && !newInTime) {\r\n newOutTime += ':00';\r\n try {\r\n if (newOutTime < orgInTime) {\r\n throw 'overlap';\r\n }\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Stop Time',\r\n newOutTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n if (res.indexOf('615') !== -1) errorPopup('Stop Time Overlaps with existing Activity');\r\n //Finally - Reload DS Card Area\r\n getDayServiceActivity(() => {\r\n //1) get activity from DB, 2(cb) rebuild the cards.\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n },\r\n );\r\n newOutTime = null;\r\n } catch (e) {\r\n if (e === 'overlap') {\r\n errorPopup('Stop Time Overlaps with Start Time');\r\n }\r\n }\r\n } else\r\n getDayServiceActivity(() => {\r\n //1) get activity from DB, 2(cb) rebuild the cards.\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n }\r\n\r\n function saveTypeAndCi(\r\n consumerId,\r\n orgInTime,\r\n newInTime,\r\n orgEndTime,\r\n newOutTime,\r\n selectedDSType,\r\n ciStaffId,\r\n selectedGroupId,\r\n ) {\r\n let consumerString = `${consumerId},${orgInTime}|`;\r\n //Update Ds Type\r\n var updateDSTypePromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Service Type',\r\n newInTime,\r\n serviceDate,\r\n locationID,\r\n selectedDSType,\r\n selectedGroupId,\r\n () => {\r\n resolve('success');\r\n },\r\n );\r\n });\r\n\r\n //Update CI\r\n if (checkForCI() && ciStaffId !== '') {\r\n var updateCIPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.updateCIStaff(\r\n consumerId,\r\n ciStaffId,\r\n orgInTime,\r\n serviceDate,\r\n locationID,\r\n () => {\r\n resolve('success');\r\n },\r\n );\r\n });\r\n } else {\r\n var deleteCIPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.deleteCIStaffId(consumerId, orgInTime, serviceDate, locationID, () => {\r\n resolve('success');\r\n });\r\n });\r\n }\r\n\r\n if (updateCIPromise) {\r\n Promise.all([updateDSTypePromise, updateCIPromise]).then(function () {\r\n saveTime(\r\n consumerId,\r\n orgInTime,\r\n newInTime,\r\n orgEndTime,\r\n newOutTime,\r\n selectedDSType,\r\n ciStaffId,\r\n );\r\n });\r\n } else if (deleteCIPromise) {\r\n Promise.all([updateDSTypePromise, deleteCIPromise]).then(function () {\r\n saveTime(\r\n consumerId,\r\n orgInTime,\r\n newInTime,\r\n orgEndTime,\r\n newOutTime,\r\n selectedDSType,\r\n ciStaffId,\r\n );\r\n });\r\n }\r\n }\r\n\r\n function buildPageComponents() {\r\n // custom search stuff\r\n SEARCH_BTN = button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n SEARCH_WRAP = document.createElement('div');\r\n SEARCH_WRAP.classList.add('consumerSearch');\r\n SEARCH_INPUT = document.createElement('input');\r\n SEARCH_INPUT.setAttribute('placeholder', 'search consumers');\r\n SEARCH_WRAP.appendChild(SEARCH_BTN);\r\n SEARCH_WRAP.appendChild(SEARCH_INPUT);\r\n\r\n\r\n mulitSelectBtn = button.build({\r\n text: 'Multi Select',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectBtn',\r\n id: 'multiSelectBtn',\r\n callback: function () {\r\n enableMultiEditRows(mulitSelectBtn);\r\n filterBtn.classList.toggle('disabled');\r\n },\r\n });\r\n\r\n multiSelectAllBtn = button.build({\r\n text: 'Select All',\r\n icon: 'selectAll',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectAllBtn',\r\n callback: function () {\r\n if (Object.keys(activityCache).length === displayedConsumers.length) {\r\n var allRows = [].slice.call(document.querySelectorAll('.table__row'));\r\n var allHeaders = [].slice.call(document.querySelectorAll('.card__header'));\r\n allRows.forEach(row => row.classList.add('selected'));\r\n allHeaders.forEach(header => header.classList.add('selected'));\r\n if (allRows.length !== 0) {\r\n multiOutRecordBtn.classList.remove('disabled');\r\n multiInRecordBtn.classList.remove('disabled');\r\n multiDeleteRecordBtn.classList.remove('disabled');\r\n }\r\n } else if (displayedConsumers.length !== 0) {\r\n displayedConsumers.forEach(consumer => {\r\n var card = document.getElementById(`consumer-${consumer}`);\r\n card.querySelector('.card__header').classList.add('selected');\r\n var rows = card.querySelectorAll('.table__row');\r\n rows.forEach(row => row.classList.add('selected'));\r\n multiOutRecordBtn.classList.remove('disabled');\r\n multiInRecordBtn.classList.remove('disabled');\r\n multiDeleteRecordBtn.classList.remove('disabled');\r\n });\r\n }\r\n },\r\n });\r\n\r\n multiSelectNoneBtn = button.build({\r\n text: 'Select None',\r\n icon: 'deSelectAll',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectNoneBtn',\r\n callback: function () {\r\n multiOutRecordBtn.classList.add('disabled');\r\n multiInRecordBtn.classList.add('disabled');\r\n multiDeleteRecordBtn.classList.add('disabled');\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n var highlightedHeaders = [].slice.call(document.querySelectorAll('.card__header.selected'));\r\n highlightedHeaders.forEach(header => header.classList.remove('selected'));\r\n },\r\n });\r\n\r\n filterLocationDropdown = dropdown.build({\r\n dropdownId: 'dsLocationDropdown',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n\r\n var isDisabld = false;\r\n if ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices') {\r\n isDisabld = true;\r\n }\r\n\r\n filterGroupDropdown = dropdown.build({\r\n dropdownId: 'dsGroupDropdown',\r\n label: 'Group',\r\n style: 'secondary',\r\n readonly: isDisabld, \r\n });\r\n\r\n filterDateInput = input.build({\r\n id: 'dsFilterDate',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: serviceDate,\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n\r\n fitlerApplyBtn = button.build({\r\n id: 'filterApply',\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n disabled: false,\r\n callback: function () {\r\n fitlerApplyBtn.disabled = true;\r\n filterApplyAction(filterPopup);\r\n POPUP.hide(filterPopup); \r\n },\r\n });\r\n\r\n updateCurrentFilterDisplay();\r\n\r\n //Disable multi-select button where there are 0 consumers displayed:\r\n // if (displayedConsumers.length === 0) multiSelectBtn.classList.add('disabled');\r\n\r\n multiSelectAllNoneArea = document.createElement('div');\r\n multiSelectAllNoneArea.classList.add('btnWrap');\r\n multiSelectAllNoneArea.setAttribute('id', 'selectAllSelectNoneWrap');\r\n multiSelectAllNoneArea.appendChild(multiSelectAllBtn);\r\n multiSelectAllNoneArea.appendChild(multiSelectNoneBtn);\r\n multiSelectAllNoneArea.classList.add('hidden');\r\n\r\n function getFilterValues() {\r\n return (filterValues = {\r\n dayServiceLocation: locationID,\r\n dayServiceServiceDate: serviceDate,\r\n });\r\n }\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: function () {\r\n // Iterate through each item in the buttonsData array\r\n buttonsData.forEach(function (buttonData) {\r\n buttonData.filterValues = getFilterValues();\r\n });\r\n\r\n generateReports.showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n reportsBtn = createMainReportButton([{ text: 'Individual Day Service Activity Report' }]);\r\n\r\n batchedMessageDisplay.innerHTML = 'The selected location is batched for this date.';\r\n batchedMessageDisplay.classList.add('batchedMessageDisplay');\r\n batchedMessageDisplay.classList.add('hidden');\r\n\r\n let filterSelectReportBtnWrap = document.createElement('div');\r\n filterSelectReportBtnWrap.classList.add('btnWrap', 'filterSelectReportBtnWrap'); \r\n if ($.session.DayServiceUpdate) filterSelectReportBtnWrap.appendChild(mulitSelectBtn); //No need to multi select for view only\r\n filterSelectReportBtnWrap.appendChild(reportsBtn);\r\n DOM.ACTIONCENTER.appendChild(filterSelectReportBtnWrap);\r\n if ($.session.DayServiceUpdate) DOM.ACTIONCENTER.appendChild(multiSelectAllNoneArea); //no need to multi select for view only\r\n DOM.ACTIONCENTER.appendChild(SEARCH_WRAP);\r\n\r\n const filteredBy = updateCurrentFilterDisplay();\r\n DOM.ACTIONCENTER.appendChild(filteredBy);\r\n\r\n DOM.ACTIONCENTER.appendChild(batchedMessageDisplay);\r\n //if (dsCardArea.outerHTML.indexOf('style=\\\"display: none;\\\"') != -1) {\r\n // dsCardArea.outerHTML = dsCardArea.outerHTML.replace('\"style=\\\"display: none;\\\"', '');\r\n //}\r\n\r\n DOM.ACTIONCENTER.appendChild(dsCardArea);\r\n roster2.toggleActionCenterChildrenVisiblity('show');\r\n buildCards();\r\n }\r\n\r\n async function initialPageBuild() {\r\n dsDropdownData = dsTypes.map(ds => {\r\n var id = `ds-${ds.dsType}`;\r\n var value = ds.dsType;\r\n var text = ds.dsText;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n if ($.session.applicationName.toLowerCase() === 'gatekeeper') {\r\n dsDropdownData.push({ id: '', value: '0', text: '' });\r\n }\r\n buildPageComponents();\r\n addEventListeners();\r\n //checkIfBatched();\r\n document.getElementById('searchBtn').click();\r\n rosterGroupResults = (await customGroupsAjax.getConsumerGroups(locationID))\r\n .getConsumerGroupsJSONResult;\r\n }\r\n\r\n function addEventListeners() {\r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n searchDS(event.target.value);\r\n });\r\n\r\n filterLocationDropdown.addEventListener('change', async event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n temp__locationID = selectedOption.value;\r\n\r\n rosterGroupResults = (await customGroupsAjax.getConsumerGroups(temp__locationID))\r\n .getConsumerGroupsJSONResult;\r\n populateFilterGroupDropdown();\r\n });\r\n\r\n filterGroupDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n temp__groupID = selectedOption.value;\r\n temp__retrieveID = selectedOption.dataset.retrieveid;\r\n selectedGroupName = selectedOption.innerHTML;\r\n });\r\n\r\n filterDateInput.addEventListener('change', event => {\r\n temp__serviceDate = event.target.value;\r\n });\r\n\r\n //MutationObserver to detect when leaving the module, reset values\r\n var observNode = document.getElementById('actioncenter');\r\n var config = { attributes: true };\r\n var callback = function (mutationList, observer) {\r\n for (let mutation of mutationList) {\r\n if (mutation.type === 'attributes') {\r\n if (mutation.attributeName === 'data-active-module') {\r\n observer.disconnect();\r\n miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) miniRosterBtn.classList.remove('disabled');\r\n enableMultiEdit = false;\r\n }\r\n }\r\n }\r\n };\r\n const observer = new MutationObserver(callback);\r\n observer.observe(observNode, config);\r\n }\r\n\r\n function initPageLoad() {\r\n let tempDsConsumers = [];\r\n let dsEnabledConsumers;\r\n serviceDate = UTIL.getTodaysDate();\r\n\r\n //Check to see if CI should be enabled\r\n const checkCiPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getDateToCheckShowCI(res => {\r\n var today = new Date();\r\n ciDateToCompare = new Date(res[0].Setting_Value);\r\n if (ciDateToCompare <= today) {\r\n $.session.ciBShow = true;\r\n }\r\n resolve('success');\r\n });\r\n });\r\n\r\n //Get CI Staff for CI Dropdown\r\n const getCiStaffPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getCiStaff(serviceDate, locationID, res => {\r\n ciDropdownData = res.map(ci => {\r\n var id = `ci-${ci.id}`;\r\n var value = ci.id;\r\n var text = ci.fullName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n ciDropdownData.unshift({ id: 'ci-0', value: '', text: '' });\r\n resolve('success');\r\n });\r\n });\r\n\r\n //Get consumer activities\r\n const getEnabledConsumersPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getDayServiceGetEnabledConsumers(serviceDate, locationID, res => {\r\n dsEnabledConsumers = res.map(r => r.consumerId);\r\n dayServiceAjax.getConsumerDayServiceActivity(\r\n dsEnabledConsumers,\r\n serviceDate,\r\n locationID,\r\n filterGroupID,\r\n filterGroupRetrieveID,\r\n res => {\r\n dsConsumers = [];\r\n res.forEach(res => {\r\n actObj = {\r\n Acuity: res.Acuity,\r\n AllowNonBillable: res.AllowNonBillable,\r\n Day_Service_Type: res.Day_Service_Type,\r\n FirstName: res.FirstName,\r\n LastName: res.LastName,\r\n Service_Date: res.Service_Date,\r\n Start_Time: res.Start_Time,\r\n Stop_Time: res.Stop_Time,\r\n ciStaffID: res.ciStaffID,\r\n isBatched: res.isBatched,\r\n dsGroupId: res.Day_service_group_id,\r\n };\r\n consumerObj = {\r\n id: res.ID,\r\n FirstName: res.FirstName,\r\n LastName: res.LastName,\r\n };\r\n if (activityCache[res.ID]) {\r\n arr = activityCache[res.ID];\r\n arr.push(actObj);\r\n activityCache[res.ID] = arr;\r\n } else {\r\n activityCache[res.ID] = [actObj];\r\n }\r\n // if (!dsConsumers[res.ID]) {\r\n // dsConsumers[res.ID] = consumerObj;\r\n // }\r\n tempDsConsumers.push(consumerObj);\r\n selectedGroupId = res.Day_service_group_id;\r\n });\r\n //filter out array to only get distinct consumers:\r\n var dsConsumerMap = new Map();\r\n for (const item of tempDsConsumers) {\r\n if (!dsConsumerMap.has(item.id)) {\r\n dsConsumerMap.set(item.id, true);\r\n dsConsumers.push({\r\n id: item.id,\r\n FirstName: item.FirstName,\r\n LastName: item.LastName,\r\n });\r\n }\r\n }\r\n //Add all consumers to the displayed consumers array\r\n dsConsumers.forEach(consumer => {\r\n displayedConsumers.push(consumer.id);\r\n });\r\n\r\n resolve('success');\r\n },\r\n );\r\n });\r\n });\r\n\r\n //Get Groups\r\n const getGroupsPrommise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getDayServiceGroups($.session.Token, locationID, res => {\r\n dsGroupsCache = {};\r\n groupDropdownData = res.map((group, index) => {\r\n var { groupId, groupDescription } = group;\r\n\r\n if (!dsGroupsCache[groupId]) {\r\n dsGroupsCache[groupId] = {\r\n id: groupId,\r\n value: groupDescription,\r\n };\r\n }\r\n\r\n return {\r\n id: groupId,\r\n value: groupId,\r\n text: groupDescription,\r\n };\r\n });\r\n groupDropdownData.unshift({ id: '%', value: '', text: '' });\r\n resolve('success');\r\n });\r\n });\r\n\r\n Promise.all([\r\n checkCiPromise,\r\n getCiStaffPromise,\r\n getEnabledConsumersPromise,\r\n getGroupsPrommise,\r\n ]).then(function () {\r\n initialPageBuild();\r\n enabledConsumers = dsEnabledConsumers;\r\n roster2.setAllowedConsumers(dsEnabledConsumers);\r\n let locationName = locationCache[locationID].locationName;\r\n roster2.miniRosterinit(\r\n { locationId: locationID, locationName: locationName },\r\n {\r\n hideDate: true,\r\n },\r\n );\r\n checkIfBatched();\r\n });\r\n }\r\n\r\n function locationCheck() {\r\n locationID = defaults.getLocation('dayServices');\r\n noLocationSet = locationID === '' ? true : false;\r\n serviceDate = UTIL.getTodaysDate();\r\n \r\n if ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices') {\r\n selectedGroupName = 'Caseload'; \r\n temp__groupID = 'CAS';\r\n } else {\r\n selectedGroupName = 'Everyone';\r\n }\r\n \r\n\r\n //get locations and cache them\r\n dayServiceAjax.getDayServiceLocations(serviceDate, loc => {\r\n loc.forEach(loc => {\r\n if (!locationCache[loc.locationId]) {\r\n obj = {\r\n locationName: loc.Name,\r\n defaultDayServiceType: loc.defaultDayServiceType,\r\n };\r\n locationCache[loc.locationId] = obj;\r\n }\r\n });\r\n\r\n locationDropdownData = loc.map(loc => {\r\n var id = `loc${loc.locationId}`;\r\n var value = loc.locationId;\r\n var text = loc.Name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n //Add \"\" location for users that don't have a default location set\r\n locationCache[''] = {\r\n locationName: 'Select a location from the filter',\r\n defaultDayServiceType: '',\r\n };\r\n\r\n //When done, if they don't have a default location set, or the default loaction is set that they don't have permisison to (Advisor bug)\r\n //display a popup that has a location selection\r\n if (noLocationSet || !Object.keys(locationCache).includes(locationID)) {\r\n var popup = document.createElement('div');\r\n popup.classList.add('popup', 'visable', 'locationPicker');\r\n let header = document.createElement('h2');\r\n header.classList.add('popupHeader');\r\n popup.appendChild(header);\r\n\r\n header.innerHTML = 'No Default Location Set. Please Choose a Location:';\r\n var locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'location',\r\n style: 'secondary',\r\n });\r\n\r\n var applyBtn = button.build({\r\n id: 'apply',\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: function () {\r\n locationID =\r\n locationDropdown.firstElementChild.options[\r\n locationDropdown.firstElementChild.selectedIndex\r\n ].value;\r\n let locationName =\r\n locationDropdown.firstElementChild.options[\r\n locationDropdown.firstElementChild.selectedIndex\r\n ].innerText;\r\n if (defaults.rememberLastLocation('dayServices'))\r\n defaults.setLocation('dayServices', locationID);\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n noLocationSet = false;\r\n overlay.hide();\r\n\r\n initPageLoad();\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.appendChild(applyBtn);\r\n btnWrap.classList.add('btnWrap');\r\n\r\n popup.appendChild(locationDropdown);\r\n popup.appendChild(btnWrap);\r\n DOM.ACTIONCENTER.appendChild(popup);\r\n overlay.show();\r\n\r\n dropdown.populate(locationDropdown, locationDropdownData);\r\n } else {\r\n initPageLoad();\r\n }\r\n });\r\n }\r\n\r\n function init() {\r\n initRosterSelection = true;\r\n setActiveModuleSectionAttribute('dayServices');\r\n\r\n //clear cache\r\n locationCache = {};\r\n activityCache = {};\r\n\r\n dsCardArea.innerHTML = '';\r\n\r\n DOM.clearActionCenter();\r\n locationCheck();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n };\r\n})();\r\n","const dayServiceAjax = (function () {\r\n function checkConsumersForDate(locationId, consumerList, serviceDate, callback) {\r\n //CONSUMER LIST = \"id|id|id|id\" or \"id|\"\r\n //massUserCheckByDate\r\n // var consumerIds = '';\r\n\r\n // // For every consumer that is \"active\":\r\n // $('#consumerlist')\r\n // \t.children()\r\n // \t.each(function() {\r\n // \t\t// Add the consumer day service record for update:\r\n // \t\tconsumerId = $(this).attr('id');\r\n // \t\tconsumerIds = consumerIds + consumerId + '|';\r\n // \t});\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/massUserCheckByDateJSON/',\r\n data:\r\n '{\"consumerIds\":\"' +\r\n consumerList +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.massUserCheckByDateJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getDayServiceGetEnabledConsumers(serviceDate, locationId, callback) {\r\n //* serviceDate, locationId & groupId are set by filter\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDayServiceGetEnabledConsumers/',\r\n data: '{\"serviceDate\":\"' + serviceDate + '\", \"locationId\":\"' + locationId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getDayServiceGetEnabledConsumersResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function dayServiceClockIn(consumerIds, serviceDate, locationId, startTime, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addDayServiceActivityMassClockInConsumer/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\", \"startTime\":\"' +\r\n startTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n return;\r\n errorMessage = '';\r\n var errorId;\r\n var errorConsumerIds;\r\n\r\n $('dayrow', res).each(function () {\r\n // Look for errors:\r\n $('errors', res).each(function () {\r\n // Get the error code:\r\n tmpErrorCode = $('error_code', this).text();\r\n // If time overlaps:\r\n if (tmpErrorCode == '615') {\r\n // Set the error message:\r\n errorMessage = ' Time overlaps found, with people exsiting in the database';\r\n setErrorBox(errorMessage);\r\n // Get the consumer IDs:\r\n errorConsumerIds = $('consumers', this).text();\r\n }\r\n });\r\n });\r\n\r\n //alert('success: ' + res);\r\n\r\n // After clockin, refresh data\r\n if (errorConsumerIds != null) {\r\n getConsumerDayServiceActivity(errorConsumerIds);\r\n } else {\r\n getConsumerDayServiceActivity();\r\n }\r\n },\r\n\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n }\r\n function dayServiceClockOut(consumerIds, stopTime) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addDayServiceActivityMassClockOutConsumer/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceDate\":\"' +\r\n $('#dsdatebox').val() +\r\n '\", \"locationId\":\"' +\r\n $('#dslocationbox').attr('locid') +\r\n '\", \"stopTime\":\"' +\r\n stopTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n //alert('success: ' + res);\r\n\r\n //615156|156|\r\n errorMessage = '';\r\n\r\n $('dayrow', res).each(function () {\r\n // Look for errors:\r\n $('errors', res).each(function () {\r\n // Get the error code:\r\n tmpErrorCode = $('error_code', this).text();\r\n // If time overlaps:\r\n if (tmpErrorCode == '615') {\r\n // Set the error message:\r\n errorMessage = ' Time overlaps found, with people exsiting in the database';\r\n setErrorBox(errorMessage);\r\n // Get the consumer IDs:\r\n errorConsumerIds = $('consumers', this).text();\r\n }\r\n });\r\n });\r\n\r\n // After clockout, refresh data\r\n getConsumerDayServiceActivity();\r\n },\r\n\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n }\r\n function deleteDayServiceActivity(consumerIds, serviceDate, locationID, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteDayServiceMassDeleteConsumerActivity/',\r\n data:\r\n '{\"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationID\":\"' +\r\n locationID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n\r\n // After delete, refresh data\r\n // getConsumerDayServiceActivity();\r\n },\r\n\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); }\r\n });\r\n }\r\n function deleteCIStaffId(consumerId, startTime, serviceDate, locationID, callback) {\r\n // startTime = convertTimeToMilitary(startTime);\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteCIStaffId/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationID\":\"' +\r\n locationID +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\", \"startTime\":\"' +\r\n startTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDateToCheckShowCI(callback) {\r\n //Done\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDateToCheckShowCI/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.getDateToCheckShowCIResult);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getExistingCIStaffId(consumerId, startTime, resIn, ciButtonId, isBatched) {\r\n startTime = convertTimeToMilitary(startTime);\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getExistingCIStaffId/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n $('#dsdatebox').val() +\r\n '\", \"locationID\":\"' +\r\n $('#dslocationbox').attr('locid') +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\", \"startTime\":\"' +\r\n startTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n staffId = getExistingCIStaffIDFromResponse(res);\r\n createCIDropdown(resIn, staffId, consumerId, startTime, ciButtonId, isBatched);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDayServiceLocations(serviceDate, callback) {\r\n //Done\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDayServiceLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"serviceDate\":\"' + serviceDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n //var res = JSON.stringify(response);\r\n var res = response.getDayServiceLocationsJSONResult;\r\n //always check for errors before processing\r\n //if (checkforErrors(res) == -1){\r\n // return;\r\n //};\r\n callback(res);\r\n return;\r\n var optionsHtml = [];\r\n var locations = $('#dslocationpop');\r\n var first = 0;\r\n var showSelect = 'Y';\r\n\r\n $('location', res).each(function () {\r\n tmpName = $('name', this).text();\r\n tmpId = $('locationId', this).text();\r\n tmpId2 = $('ID', this).text();\r\n tmpRes = $('Residence', this).text();\r\n\r\n if (tmpRes == 'Y') {\r\n icon = \"\";\r\n } else {\r\n icon = \"\";\r\n }\r\n\r\n if (tmpId == '') {\r\n tmpId = tmpId2;\r\n }\r\n\r\n // If more than 1 location for the selected consumers:\r\n if (serviceLocationCount > 1) {\r\n // Populate the day services location box with all the locations and a link to the changeTheDSLocation function in dayservices.js:\r\n optionsHtml.push(\r\n \"\" +\r\n icon +\r\n ' ' +\r\n tmpName +\r\n '',\r\n );\r\n } else {\r\n // If only 1 location for the selected consumers and the location id is the same as the selected location:\r\n if (serviceLocationCount == 1 && locationIds[0] == currentlocationId) {\r\n // If the location id = the selected location:\r\n if (tmpId == currentlocationId) {\r\n currentlocationId = tmpId;\r\n\r\n // Display the location name:\r\n $('#dslocationbox').html(\r\n tmpName +\r\n \"\",\r\n );\r\n $('#dslocationbox').attr('locid', tmpId);\r\n resizeHeaderText('#dslocationbox', tmpName.length);\r\n showSelect = 'N';\r\n } else {\r\n // Populate the day services location box with all the locations and a link to the changeTheDSLocation function in dayservices.js:\r\n optionsHtml.push(\r\n \"\" +\r\n icon +\r\n ' ' +\r\n tmpName +\r\n '',\r\n );\r\n }\r\n } else {\r\n // Populate the day services location box with all the locations and a link to the changeTheDSLocation function in dayservices.js:\r\n optionsHtml.push(\r\n \"\" +\r\n icon +\r\n ' ' +\r\n tmpName +\r\n '',\r\n );\r\n }\r\n }\r\n });\r\n\r\n // If more than 1 location for the selected consumers:\r\n if (showSelect == 'Y') {\r\n // Display \"Select a Location\":\r\n $('#dslocationbox').html(\r\n 'Select a Location' +\r\n \"\",\r\n );\r\n $('#dslocationbox').attr('locid', 0);\r\n resizeHeaderText('#dslocationbox', 15);\r\n currentlocationId = 0;\r\n }\r\n\r\n optionsHtml = optionsHtml.join('');\r\n locations.html(optionsHtml);\r\n\r\n //if true gets history value for switching between modules but not reloading page\r\n if ($.session.dsLocationHistoryFlag == true && $.session.dsLocationHistoryValue != null) {\r\n changeTheDSLocation($.session.dsLocationHistoryValue);\r\n } else {\r\n if (readCookie('defaultDayServiceLocationName') == 'Remember Last Location') {\r\n changeTheDSLocation(readCookie('defaultDayServiceLocation'));\r\n } else {\r\n changeTheDSLocation(readCookie('defaultDayServiceLocationNameValue'));\r\n }\r\n }\r\n\r\n if (currentlocationId != 0) {\r\n getConsumerDayServiceActivity();\r\n } else {\r\n $('#locationhelp').css('display', 'block');\r\n $('#appbuttonbox').html('');\r\n }\r\n },\r\n\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n-----\\n' + error + '\\n-----\\n'+ xhr.responseText); }\r\n });\r\n }\r\n function getConsumerDayServiceActivity(\r\n peopleList,\r\n serviceDate,\r\n locationId,\r\n groupCode,\r\n retrieveId,\r\n callback,\r\n ) {\r\n //Done\r\n // removeErrorMessage();\r\n // var dsDate = $('#dsdatebox').val();\r\n // if (dsDate == undefined) {\r\n // \tvar newDate = new Date();\r\n // \tdsDate = newDate.getFullYear() + '-' + (newDate.getMonth() + 1) + '-' + newDate.getDate();\r\n // }\r\n groupCode = !groupCode ? 'ALL' : groupCode;\r\n\r\n if (groupCode !== 'CST') {\r\n if (!retrieveId) retrieveId = locationId;\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerDayServiceActivityJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"peopleList\":\"' +\r\n peopleList +\r\n '\", \"groupCode\":\"' +\r\n groupCode +\r\n '\",\"retrieveId\":\"' +\r\n retrieveId +\r\n '\",\"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\"}',\r\n\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerDayServiceActivityJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getCiStaff(serviceDate, locationId, callback) {\r\n // startTime = convertTimeToMilitary(startTime);\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCIStaffDropdownJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationID\":\"' +\r\n locationId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n //var res = JSON.stringify(response);\r\n var res = response.getCIStaffDropdownJSONResult;\r\n callback(res);\r\n //ASH below will need tweaked to fit new response\r\n // getExistingCIStaffIdAjax(consumerId, startTime, res, ciButtonId, isBatched);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function updateCIStaff(consumerId, staffId, startTime, serviceDate, locationId, callback) {\r\n startTime = convertTimeToMilitary(startTime);\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateCIStaff/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationID\":\"' +\r\n locationId +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\", \"startTime\":\"' +\r\n startTime +\r\n '\", \"staffId\":\"' +\r\n staffId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function updateDayServiceActivity(\r\n consumerIds,\r\n inputType,\r\n inputTime,\r\n serviceDate,\r\n locationID,\r\n dayServiceType,\r\n selectedGroupId,\r\n callback,\r\n ) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateDayServiceActivity/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationId\":\"' +\r\n locationID +\r\n '\", \"inputType\":\"' +\r\n inputType +\r\n '\", \"inputTime\":\"' +\r\n inputTime +\r\n '\", \"dayServiceType\":\"' +\r\n dayServiceType +\r\n '\", \"selectedGroupId\":\"' +\r\n selectedGroupId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n // return res;\r\n // var errorId;\r\n // errorMessage = '';\r\n // var errorConsumerIds;\r\n\r\n // $('dayrow', res).each(function() {\r\n // \t// Look for errors:\r\n // \t$('errors', res).each(function() {\r\n // \t\t// Get the error code:\r\n // \t\ttmpErrorCode = $('error_code', this).text();\r\n // \t\t// If time overlaps:\r\n\r\n // \t\tif (tmpErrorCode == '615' && inputTime != '00:00:00') {\r\n // \t\t\t// Get the consumer IDs:\r\n // \t\t\terrorConsumerIds = $('consumers', this).text();\r\n // \t\t}\r\n // \t});\r\n // });\r\n\r\n // // After update, refresh data\r\n // if (errorConsumerIds != null) {\r\n // \tgetConsumerDayServiceActivity(errorConsumerIds);\r\n // } else {\r\n // \tgetConsumerDayServiceActivity();\r\n // }\r\n },\r\n\r\n error: function (xhr, status, error) {\r\n alert('Error\\n-----\\n' + error + ' \\n' + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDSIsLocationBatched(locationId, serviceDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDSIsLocationBatched/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n data = response.getDSIsLocationBatchedResult;\r\n callback(data);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDayServiceGroups(token, locationId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDayServiceGroups/',\r\n data: '{\"token\":\"' + token + '\", \"locationId\":\"' + locationId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getDayServiceGroupsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n\r\n // comment\r\n async function getDayServiceClockedInConsumers(retrieveData) {\r\n //string token, string consumerIdString, string serviceDate, string locationId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDayServiceClockedInConsumers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getDayServiceClockedInConsumersResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n checkConsumersForDate,\r\n getDayServiceGetEnabledConsumers,\r\n dayServiceClockIn,\r\n dayServiceClockOut,\r\n deleteDayServiceActivity,\r\n deleteCIStaffId,\r\n getDateToCheckShowCI,\r\n getExistingCIStaffId,\r\n getDayServiceLocations,\r\n getConsumerDayServiceActivity,\r\n getCiStaff,\r\n updateCIStaff,\r\n updateDayServiceActivity,\r\n getDSIsLocationBatched,\r\n getDayServiceGroups,\r\n getDayServiceClockedInConsumers\r\n };\r\n})();\r\n","const addEditEmployers = (() => {\r\n let addNewEmployerBtn;\r\n let rtnOODMainPageBtn;\r\n // insert/update employer data\r\n let employerId;\r\n let employerName = '';\r\n let employeraddress1 = '';\r\n let employeraddress2 = '';\r\n let employercity = '';\r\n let employerstate = '';\r\n let employerzipcode = '';\r\n\r\n //employer inputs \r\n let employerInput;\r\n let address1Input;\r\n let address2Input;\r\n let cityInput;\r\n let stateInput;\r\n let zipcodeInput;\r\n let saveBtn;\r\n let cancelBtn;\r\n let openedPage;\r\n let redirectInformation = {};\r\n let BtnEventType;\r\n\r\n async function init() {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n let container = document.createElement(\"div\");\r\n var LineBr = document.createElement('br');\r\n\r\n addNewEmployerBtn = button.build({\r\n text: 'Add New Employer',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!addNewEmployerBtn.classList.contains('disabled')) {\r\n buildEmployerPopUp({}, 'insert', 'employer', null)\r\n }\r\n },\r\n });\r\n\r\n rtnOODMainPageBtn = button.build({\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['caseNoteSave'],\r\n callback: async () => { Employment.loadEmploymentLanding() },\r\n });\r\n\r\n OODEmployersTable = await buildEmployersTable();\r\n\r\n var headingWrap = document.createElement('div');\r\n headingWrap.classList.add('employmentBtnWrap');\r\n if (!$.session.InsertEmployers) {\r\n addNewEmployerBtn.classList.add('disabled');\r\n }\r\n headingWrap.appendChild(addNewEmployerBtn);\r\n headingWrap.appendChild(rtnOODMainPageBtn);\r\n container.appendChild(headingWrap);\r\n container.appendChild(LineBr);\r\n container.appendChild(OODEmployersTable);\r\n\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n }\r\n\r\n // build the listing of OOD Entries (based off of filter settings)\r\n async function buildEmployersTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODEmployersTable',\r\n columnHeadings: ['Employer', 'Address', 'City', 'State', 'Zip Code'],\r\n endIcon: false,\r\n };\r\n const { getActiveEmployersResult: activeEmployers } = await OODAjax.getActiveEmployersAsync();\r\n var filteredActiveEmployers = activeEmployers.filter((x) => x.employerId != 0);\r\n\r\n let tableData = filteredActiveEmployers.map((employer) => ({\r\n values: [employer.employerName, employer.address1 + ' ' + employer.address2, employer.city, employer.state, employer.zipcode],\r\n attributes: [{ key: 'employerId', value: employer.employerId }],\r\n id: employer.employerId,\r\n onClick: (e) => {\r\n OODAjax.getEmployer(employer.employerId, function (results) {\r\n buildEmployerPopUp(results, 'update', 'employer', null);\r\n });\r\n },\r\n }));\r\n const oTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = oTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Employer\r\n headers[1].setAttribute('data-type', 'string'); // Address\r\n headers[2].setAttribute('data-type', 'string'); // City\r\n headers[3].setAttribute('data-type', 'string'); // State \r\n headers[4].setAttribute('data-type', 'number'); // Zip Code \r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\r\n table.populate(oTable, tableData);\r\n return oTable;\r\n }\r\n\r\n\r\n // build Employer pop-up used for adding/editing Employer information\r\n async function buildEmployerPopUp(employerdata, postType, openpageName, redirectInfo) {\r\n if (openpageName == 'employmentInfo') {\r\n openedPage = 'employmentInfo';\r\n redirectInformation = redirectInfo\r\n }\r\n else\r\n openedPage = 'employer';\r\n\r\n var headingEmployer;\r\n if (employerdata && Object.keys(employerdata).length !== 0) {\r\n employerId = employerdata[0].employerId;\r\n employerName = employerdata[0].employerName;\r\n employeraddress1 = employerdata[0].address1;\r\n employeraddress2 = employerdata[0].address2;\r\n employercity = employerdata[0].city;\r\n employerstate = employerdata[0].state;\r\n employerzipcode = employerdata[0].zipcode;\r\n headingEmployer = 'Edit this Employer';\r\n BtnEventType = 'Update';\r\n } else {\r\n employerId = '';\r\n employerName = '';\r\n employeraddress1 = '';\r\n employeraddress2 = '';\r\n employercity = '';\r\n employerstate = '';\r\n employerzipcode = '';\r\n headingEmployer = 'Add Employer';\r\n BtnEventType = 'Add';\r\n }\r\n\r\n let editEmployerPopup = POPUP.build({\r\n header: headingEmployer,\r\n hideX: true,\r\n id: \"editEmployerPopup\"\r\n });\r\n\r\n employerInput = input.build({\r\n id: 'employerInput',\r\n label: 'Employer',\r\n value: (employerName) ? employerName : '',\r\n });\r\n\r\n address1Input = input.build({\r\n label: 'Address',\r\n value: (employeraddress1) ? employeraddress1 : '',\r\n });\r\n\r\n address2Input = input.build({\r\n label: 'Address 2',\r\n value: (employeraddress2) ? employeraddress2 : '',\r\n });\r\n\r\n cityInput = input.build({\r\n label: 'City',\r\n value: (employercity) ? employercity : '',\r\n });\r\n\r\n stateInput = input.build({\r\n label: 'State',\r\n value: (employerstate) ? employerstate : '',\r\n });\r\n\r\n zipcodeInput = input.build({\r\n label: 'Zip Code',\r\n value: (employerzipcode) ? employerzipcode : '',\r\n });\r\n\r\n saveBtn = button.build({\r\n id: \"addEmployerSaveBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n callback: () => {\r\n if (!saveBtn.classList.contains('disabled')) {\r\n editEmployerPopupDoneBtn(postType)\r\n }\r\n }\r\n });\r\n\r\n cancelBtn = button.build({\r\n id: \"addEmployerCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => POPUP.hide(editEmployerPopup)\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n editEmployerPopup.appendChild(employerInput);\r\n editEmployerPopup.appendChild(address1Input);\r\n editEmployerPopup.appendChild(address2Input);\r\n editEmployerPopup.appendChild(cityInput);\r\n editEmployerPopup.appendChild(stateInput);\r\n editEmployerPopup.appendChild(zipcodeInput);\r\n editEmployerPopup.appendChild(btnWrap);\r\n\r\n popUpEventHandlers();\r\n POPUP.show(editEmployerPopup);\r\n checkRequiredFields();\r\n }\r\n\r\n function popUpEventHandlers() {\r\n employerInput.addEventListener('input', event => {\r\n employerName = event.target.value.trim();\r\n checkRequiredFields();\r\n });\r\n\r\n address1Input.addEventListener('input', event => {\r\n employeraddress1 = event.target.value;\r\n });\r\n\r\n address2Input.addEventListener('input', event => {\r\n employeraddress2 = event.target.value;\r\n });\r\n\r\n cityInput.addEventListener('input', event => {\r\n employercity = event.target.value;\r\n });\r\n\r\n stateInput.addEventListener('input', event => {\r\n employerstate = event.target.value;\r\n });\r\n\r\n zipcodeInput.addEventListener('input', event => {\r\n employerzipcode = event.target.value;\r\n });\r\n }\r\n\r\n function checkRequiredFields() {\r\n var employrInput = employerInput.querySelector('#employerInput');\r\n if (employrInput.value.trim() === '') { \r\n employerInput.classList.add('error');\r\n saveBtn.classList.add('disabled'); \r\n return;\r\n } else {\r\n employerInput.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n }\r\n\r\n if (($.session.UpdateEmployers && BtnEventType == 'Update') || ($.session.InsertEmployers && BtnEventType == 'Add')) {\r\n saveBtn.classList.remove('disabled');\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n // Event for Done BTN on the Edit Employer Popup Window\r\n async function editEmployerPopupDoneBtn(postType) {\r\n\r\n if (postType == 'insert') {\r\n\r\n const result = await OODAjax.insertEmployerAsync(employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { insertEmployerResult } = result;\r\n let employerID = insertEmployerResult.employerId;\r\n\r\n if (employerID == '0') {\r\n warningPopup();\r\n } else {\r\n POPUP.hide(editEmployerPopup)\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (openedPage == 'employmentInfo')\r\n NewEmployment.refreshEmployment(redirectInformation.positionId, redirectInformation.empName, redirectInformation.posName, redirectInformation.consumersName, redirectInformation.consumersId, tabPositionIndex = 0);\r\n else\r\n addEditEmployers.init();\r\n }, 2000);\r\n }\r\n\r\n } else { //'update'\r\n POPUP.hide(editEmployerPopup)\r\n const result = await OODAjax.updateEmployerAsync(employerId, employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { updateEmployerResult: { employerID } } = result;\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n addEditEmployers.init();\r\n }, 2000);\r\n }\r\n }\r\n\r\n function deleteConfirmation(employerId, tableRow) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteEmployerAsync(employerId);\r\n if (result.deleteEmployerResult === \"1\") {\r\n tableRow.remove();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this employer?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n function warningPopup() {\r\n var popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n });\r\n var OKBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = \"This employer already exists.\";\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n return {\r\n init,\r\n buildEmployerPopUp,\r\n };\r\n})(); ","const Employment = (() => {\r\n //Inputs\r\n let newFilterBtn;\r\n let filterRow;\r\n let EmploymentEntriesTable = [];\r\n let PositionBtns;\r\n let consumerRow;\r\n let consumerElement;\r\n let filterPopup;\r\n var selectedConsumers;\r\n var selectedConsumersName;\r\n var selectedConsumersId;\r\n //filter\r\n let filterValues;\r\n let btnWrap;\r\n let employerBtnWrap;\r\n let positionBtnWrap;\r\n let positionStartDateBtnWrap;\r\n let positionEndDateBtnWrap;\r\n let jobStandingBtnWrap;\r\n let reportValues;\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n await loadEmploymentLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Build Employment Module Landing Page \r\n async function loadEmploymentLanding() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n\r\n landingPage = document.createElement('div');\r\n\r\n selectedConsumersId = selectedConsumers[selectedConsumers.length - 1].id;\r\n $.session.consumerId = selectedConsumersId;\r\n const name = (\r\n await ConsumerFinancesAjax.getConsumerNameByID({\r\n token: $.session.Token,\r\n consumerId: selectedConsumersId,\r\n })\r\n ).getConsumerNameByIDResult;\r\n\r\n selectedConsumersName = name[0].FullName;\r\n const topButton = buildHeaderButton(selectedConsumers[0]);\r\n landingPage.appendChild(topButton);\r\n filterRow = document.createElement('div');\r\n filterRow.classList.add('filterElement');\r\n\r\n const filteredBy = buildFilteredBy();\r\n filterRow.appendChild(filteredBy);\r\n\r\n landingPage.appendChild(filterRow);\r\n EmploymentEntriesTable = await buildEmploymentEntriesTable(filterValues);\r\n landingPage.appendChild(EmploymentEntriesTable);\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n // build the listing of Employment Entries (based off of filter settings)\r\n async function buildEmploymentEntriesTable(filterValues) {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'singleEntryAdminReviewTable',\r\n headline: selectedConsumersName,\r\n columnHeadings: ['Employer', 'Position', 'Position Start Date', 'Position End Date', 'Job Standing'],\r\n endIcon: false,\r\n };\r\n\r\n let EmploymentsEntries = await EmploymentAjax.getEmploymentEntriesAsync(\r\n selectedConsumersId,\r\n filterValues.employer,\r\n filterValues.position,\r\n filterValues.positionStartDate,\r\n filterValues.positionEndDate == null ? UTIL.getTodaysDate() : filterValues.positionEndDate,\r\n filterValues.jobStanding,\r\n );\r\n\r\n let tableData = EmploymentsEntries.getEmploymentEntriesResult.map((entry) => ({\r\n values: [entry.employer, entry.position, entry.positionStartDate == '' ? '' : moment(entry.positionStartDate).format('M/D/YYYY'), entry.positionEndDate == '' ? '' : moment(entry.positionEndDate).format('M/D/YYYY'), entry.jobStanding],\r\n attributes: [{ key: 'positionId', value: entry.positionId }, { key: 'PeopleName', value: entry.PeopleName }],\r\n onClick: (e) => {\r\n handleAccountTableEvents(e)\r\n },\r\n }));\r\n const oTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = oTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Employer\r\n headers[1].setAttribute('data-type', 'string'); // Position\r\n headers[2].setAttribute('data-type', 'date'); // Position start \r\n headers[3].setAttribute('data-type', 'date'); // Position End \r\n headers[4].setAttribute('data-type', 'string'); // Job Standing \r\n\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function handleAccountTableEvents(event) {\r\n var name = event.target.childNodes[0].innerText;\r\n var positionName = event.target.childNodes[1].innerText;\r\n var positionId = event.target.attributes.positionId.value;\r\n NewEmployment.refreshEmployment(positionId, name, positionName, selectedConsumersName, selectedConsumersId);\r\n }\r\n\r\n // build display of Account and button\r\n function buildHeaderButton(consumer) {\r\n consumerElement = document.createElement('div');\r\n consumerRow = document.createElement('div');\r\n consumerRow.classList.add('consumerHeader');\r\n PositionBtns = buildButtonBar(consumer);\r\n consumerRow.appendChild(PositionBtns);\r\n consumerElement.appendChild(consumerRow);\r\n return consumerElement;\r\n }\r\n\r\n function buildButtonBar(consumer) {\r\n const buttonBar = document.createElement('div');\r\n buttonBar.classList.add('OODbuttonBar');\r\n buttonBar.style.maxHeight = '50px';\r\n buttonBar.style.minWidth = '100%';\r\n\r\n const newPositionBtn = button.build({\r\n text: '+ New Position',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'entryBtn',\r\n callback: async () => {\r\n if (!newPositionBtn.classList.contains('disabled')) {\r\n NewEmployment.refreshEmployment(positionId = undefined, '', '', selectedConsumersName, selectedConsumersId)\r\n }\r\n },\r\n });\r\n\r\n const editEmployerBtn = button.build({\r\n text: 'Edit Employers',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'entryBtn',\r\n callback: async () => {\r\n if (!editEmployerBtn.classList.contains('disabled')) {\r\n addEditEmployers.init();\r\n }\r\n },\r\n });\r\n\r\n\r\n\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'entryBtn',\r\n callback: function () {\r\n // Iterate through each item in the buttonsData array\r\n buttonsData.forEach(function (buttonData) {\r\n buttonData.filterValues = getReportValues();\r\n });\r\n\r\n generateReports.showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n reportsBtn = createMainReportButton([{ text: 'Employee Reporting Information' }])\r\n\r\n if ($.session.EmploymentUpdate) {\r\n newPositionBtn.classList.remove('disabled');\r\n }\r\n else {\r\n newPositionBtn.classList.add('disabled');\r\n }\r\n newPositionBtn.style.height = '50px';\r\n\r\n newFilterBtn = buildNewFilterBtn();\r\n\r\n const entryButtonBar = document.createElement('div');\r\n entryButtonBar.classList.add('employmentBtnWrap');\r\n entryButtonBar.style.width = '100%';\r\n entryButtonBar.appendChild(newPositionBtn);\r\n\r\n if (!$.session.InsertEmployers && !$.session.UpdateEmployers) {\r\n editEmployerBtn.classList.add('disabled');\r\n }\r\n entryButtonBar.appendChild(editEmployerBtn);\r\n if ($.session.EmploymentView) {\r\n entryButtonBar.appendChild(reportsBtn);\r\n }\r\n buttonBar.appendChild(entryButtonBar);\r\n\r\n return buttonBar;\r\n }\r\n\r\n // build Filter button, which filters the data displayed on the OOD Entries Table\r\n function buildNewFilterBtn() {\r\n if (!filterValues) filterValues = {\r\n token: $.session.Token,\r\n employer: '%',\r\n position: '%',\r\n positionStartDate: '1900-01-01',\r\n positionEndDate: null,\r\n jobStanding: '%',\r\n EmployerID: '%',\r\n positionID: '%',\r\n jobStandingID: '%'\r\n }\r\n }\r\n\r\n function getReportValues() {\r\n return (reportValues = {\r\n consumerID: selectedConsumersId,\r\n employer: filterValues.EmployerID == undefined ? '%' : filterValues.EmployerID,\r\n position: filterValues.positionID == undefined ? '%' : filterValues.positionID,\r\n positionStartDate: filterValues.positionStartDate,\r\n positionEndDate: filterValues.positionEndDate == null ? UTIL.getTodaysDate() : filterValues.positionEndDate,\r\n jobStanding: filterValues.jobStandingID == undefined ? '%' : filterValues.jobStandingID,\r\n });\r\n }\r\n\r\n\r\n // build the display of the current Filter Settings (next to the Filter button) \r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet()\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n filteredBy.style.maxWidth = '100%';\r\n if (filterValues.employer === '%' || filterValues.employer === 'ALL') {\r\n btnWrap.appendChild(employerBtnWrap);\r\n btnWrap.removeChild(employerBtnWrap);\r\n } else {\r\n btnWrap.appendChild(employerBtnWrap);\r\n }\r\n\r\n if (filterValues.position === '%' || filterValues.position === 'ALL') {\r\n btnWrap.appendChild(positionBtnWrap);\r\n btnWrap.removeChild(positionBtnWrap);\r\n } else {\r\n btnWrap.appendChild(positionBtnWrap);\r\n }\r\n\r\n if (filterValues.positionEndDate === null) {\r\n btnWrap.appendChild(positionEndDateBtnWrap);\r\n btnWrap.removeChild(positionEndDateBtnWrap);\r\n } else {\r\n btnWrap.appendChild(positionEndDateBtnWrap);\r\n }\r\n if (filterValues.jobStanding === '%' || filterValues.jobStanding === 'ALL') {\r\n btnWrap.appendChild(jobStandingBtnWrap);\r\n btnWrap.removeChild(jobStandingBtnWrap);\r\n } else {\r\n btnWrap.appendChild(jobStandingBtnWrap);\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { buildFilterPopUp('ALL') },\r\n });\r\n\r\n employerBtn = button.build({\r\n id: 'employerBtn',\r\n text: 'Employer: ' + filterValues.employer,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('employerBtn') },\r\n });\r\n employerCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('employerBtn') },\r\n });\r\n\r\n positionBtn = button.build({\r\n id: 'positionBtn',\r\n text: 'Position: ' + filterValues.position,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('positionBtn') },\r\n });\r\n positionCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('positionBtn') },\r\n });\r\n\r\n positionStartDateBtn = button.build({\r\n id: 'positionStartDateBtn',\r\n text: 'Position Start Date: ' + moment(filterValues.positionStartDate, 'YYYY-MM-DD').format('MM/DD/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('positionStartDateBtn') },\r\n });\r\n\r\n positionEndDateBtn = button.build({\r\n id: 'positionEndDateBtn',\r\n text: 'Position End Date: ' + moment(filterValues.positionEndDate, 'YYYY-MM-DD').format('MM/DD/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('positionEndDateBtn') },\r\n });\r\n positionEndDateCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('positionEndDateBtn') },\r\n });\r\n\r\n jobStandingBtn = button.build({\r\n id: 'jobStandingBtn',\r\n text: 'Job Standing: ' + filterValues.jobStanding,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('jobStandingBtn') },\r\n });\r\n jobStandingCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('jobStandingBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n employerBtnWrap = document.createElement('div');\r\n employerBtnWrap.classList.add('filterSelectionBtnWrap');\r\n employerBtnWrap.appendChild(employerBtn);\r\n employerBtnWrap.appendChild(employerCloseBtn);\r\n btnWrap.appendChild(employerBtnWrap);\r\n\r\n positionBtnWrap = document.createElement('div');\r\n positionBtnWrap.classList.add('filterSelectionBtnWrap');\r\n positionBtnWrap.appendChild(positionBtn);\r\n positionBtnWrap.appendChild(positionCloseBtn);\r\n btnWrap.appendChild(positionBtnWrap);\r\n\r\n positionStartDateBtnWrap = document.createElement('div');\r\n positionStartDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n positionStartDateBtnWrap.appendChild(positionStartDateBtn);\r\n btnWrap.appendChild(positionStartDateBtnWrap);\r\n\r\n positionEndDateBtnWrap = document.createElement('div');\r\n positionEndDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n positionEndDateBtnWrap.appendChild(positionEndDateBtn);\r\n positionEndDateBtnWrap.appendChild(positionEndDateCloseBtn);\r\n btnWrap.appendChild(positionEndDateBtnWrap);\r\n\r\n jobStandingBtnWrap = document.createElement('div');\r\n jobStandingBtnWrap.classList.add('filterSelectionBtnWrap');\r\n jobStandingBtnWrap.appendChild(jobStandingBtn);\r\n jobStandingBtnWrap.appendChild(jobStandingCloseBtn);\r\n btnWrap.appendChild(jobStandingBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'employerBtn') {\r\n filterValues.employer = '%';\r\n }\r\n if (closeFilter == 'positionBtn') {\r\n filterValues.position = '%';\r\n }\r\n if (closeFilter == 'positionEndDateBtn') {\r\n filterValues.positionEndDate = null;\r\n }\r\n if (closeFilter == 'jobStandingBtn') {\r\n filterValues.jobStanding = '%';\r\n }\r\n loadEmploymentLanding();\r\n }\r\n\r\n // build Filter pop-up that displays when an \"Filter\" button is clicked\r\n function buildFilterPopUp(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n // dropdowns & inputs \r\n positionStartDate = input.build({\r\n id: 'positionStartDate',\r\n type: 'date',\r\n label: 'Position Start Date',\r\n style: 'secondary',\r\n value: filterValues.positionStartDate,\r\n });\r\n\r\n positionEndDate = input.build({\r\n id: 'positionEndDate',\r\n type: 'date',\r\n label: 'Position End Date',\r\n style: 'secondary',\r\n value: filterValues.positionEndDate,\r\n });\r\n\r\n positionDropdown = dropdown.build({\r\n id: 'positionDropdown',\r\n label: \"Position\",\r\n dropdownId: \"positionDropdown\",\r\n });\r\n\r\n jobStandingDropdown = dropdown.build({\r\n id: 'jobStandingDropdown',\r\n label: \"Job Standing\",\r\n dropdownId: \"jobStandingDropdown\",\r\n });\r\n\r\n EmployerDropdown = dropdown.build({\r\n id: 'employerDropdown',\r\n label: \"Employer\",\r\n dropdownId: \"employerDropdown\",\r\n });\r\n\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => filterPopupCancelBtn()\r\n });\r\n\r\n if (IsShow == 'ALL' || IsShow == 'employerBtn')\r\n filterPopup.appendChild(EmployerDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'positionBtn')\r\n filterPopup.appendChild(positionDropdown);\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n var dateWrap = document.createElement('div');\r\n dateWrap.classList.add('dateWrap');\r\n if (IsShow == 'ALL' || IsShow == 'positionStartDateBtn')\r\n dateWrap.appendChild(positionStartDate);\r\n if (IsShow == 'ALL' || IsShow == 'positionEndDateBtn')\r\n dateWrap.appendChild(positionEndDate);\r\n\r\n // build popup\r\n filterPopup.appendChild(dateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'jobStandingBtn')\r\n filterPopup.appendChild(jobStandingDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n eventListeners();\r\n populateFilterDropdown();\r\n POPUP.show(filterPopup);\r\n }\r\n\r\n // binding filter events \r\n function eventListeners() {\r\n\r\n var tmpEmployer;\r\n var tmpPosition;\r\n var tmpJobStanding;\r\n var tmpStartDate;\r\n var tmpEndDate;\r\n var tmpEmployerID;\r\n var tmppositionID;\r\n var tmpjobStandingID;\r\n\r\n positionStartDate.addEventListener('change', event => {\r\n tmpStartDate = event.target.value;\r\n });\r\n positionEndDate.addEventListener('change', event => {\r\n tmpEndDate = event.target.value;\r\n });\r\n EmployerDropdown.addEventListener('change', event => {\r\n tmpEmployer = event.target.value;\r\n tmpEmployerID = event.target.options[event.target.selectedIndex].id;\r\n });\r\n positionDropdown.addEventListener('change', event => {\r\n tmpPosition = event.target.value;\r\n tmppositionID = event.target.options[event.target.selectedIndex].id;\r\n });\r\n jobStandingDropdown.addEventListener('change', event => {\r\n tmpJobStanding = event.target.value;\r\n tmpjobStandingID = event.target.options[event.target.selectedIndex].id;\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n updateFilterData({\r\n tmpEmployer,\r\n tmpPosition,\r\n tmpJobStanding,\r\n tmpStartDate,\r\n tmpEndDate,\r\n tmpEmployerID,\r\n tmppositionID,\r\n tmpjobStandingID\r\n });\r\n\r\n POPUP.hide(filterPopup);\r\n eventListeners();\r\n loadEmploymentLanding();\r\n });\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tmpEmployer) filterValues.employer = data.tmpEmployer;\r\n if (data.tmpPosition) filterValues.position = data.tmpPosition;\r\n if (data.tmpJobStanding) filterValues.jobStanding = data.tmpJobStanding;\r\n if (data.tmpStartDate) filterValues.positionStartDate = data.tmpStartDate;\r\n if (data.tmpEndDate) filterValues.positionEndDate = data.tmpEndDate;\r\n if (data.tmpEndDate == '') filterValues.positionEndDate = null;\r\n if (data.tmpStartDate == '') filterValues.positionStartDate = '1900-01-01';\r\n\r\n if (data.tmpEmployerID) filterValues.EmployerID = data.tmpEmployerID;\r\n if (data.tmppositionID) filterValues.positionID = data.tmppositionID;\r\n if (data.tmpjobStandingID) filterValues.jobStandingID = data.tmpjobStandingID;\r\n }\r\n\r\n async function populateFilterDropdown() {\r\n const {\r\n getPositionsResult: Positions,\r\n } = await EmploymentAjax.getPositionsAsync();\r\n let positionsData = Positions.map((positions) => ({\r\n id: positions.positionId,\r\n value: positions.positionName,\r\n text: positions.positionName\r\n }));\r\n positionsData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"positionDropdown\", positionsData, filterValues.position);\r\n\r\n const {\r\n getEmployersResult: Employer,\r\n } = await EmploymentAjax.getEmployersAsync();\r\n let data = Employer.map((employer) => ({\r\n id: employer.employerId,\r\n value: employer.employerName,\r\n text: employer.employerName\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"employerDropdown\", data, filterValues.employer);\r\n\r\n const {\r\n getJobStandingsResult: JobStanding,\r\n } = await EmploymentAjax.getJobStandingsAsync();\r\n let jobStandingData = JobStanding.map((jobStanding) => ({\r\n id: jobStanding.jobStandingId,\r\n value: jobStanding.jobStandingName,\r\n text: jobStanding.jobStandingName\r\n }));\r\n jobStandingData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"jobStandingDropdown\", jobStandingData, filterValues.jobStanding);\r\n }\r\n\r\n function filterPopupCancelBtn() {\r\n POPUP.hide(filterPopup);\r\n }\r\n\r\n function init() {\r\n setActiveModuleAttribute('Employment');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadEmploymentLanding,\r\n };\r\n})(); \r\n","var EmploymentAjax = (function () {\r\n // Employment Main/Landing Page\r\n async function getEmploymentEntriesAsync(consumerIds, employer, position, positionStartDate, positionEndDate, jobStanding) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmploymentEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"employer\":\"' +\r\n employer +\r\n '\", \"position\":\"' +\r\n position +\r\n '\", \"positionStartDate\":\"' +\r\n positionStartDate +\r\n '\", \"positionEndDate\":\"' +\r\n positionEndDate +\r\n '\", \"jobStanding\":\"' +\r\n jobStanding +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEmployersAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployers/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPositionsAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPositions/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getJobStandingsAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getJobStandings/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEmployeeInfoByIDAsync(positionId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeeInfoByID/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionId\":\"' +\r\n positionId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertEmploymentPathAsync(\r\n employmentPath, newStartDate, newEndDate, currentEndDate, peopleID, userID, existingPathID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertEmploymentPath/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n employmentPath: employmentPath,\r\n newStartDate: newStartDate,\r\n newEndDate: newEndDate,\r\n currentEndDate: currentEndDate,\r\n peopleID: peopleID,\r\n userID: userID,\r\n existingPathID: existingPathID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertEmploymentInfoAsync(\r\n startDatePosition, endDatePosition, position, jobStanding, employer, transportation, typeOfWork, selfEmployed, name, phone, email, peopleID, userID, PositionId, typeOfEmployment\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertEmploymentInfo/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n startDatePosition: startDatePosition,\r\n endDatePosition: endDatePosition,\r\n position: position,\r\n jobStanding: jobStanding,\r\n employer: employer,\r\n transportation: transportation,\r\n typeOfWork: typeOfWork,\r\n selfEmployed: selfEmployed,\r\n name: name,\r\n phone: phone,\r\n email: email,\r\n peopleID: peopleID,\r\n userID: userID,\r\n PositionId: PositionId,\r\n typeOfEmployment: typeOfEmployment,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getJobStandingsDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getJobStandingsDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEmployerDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployerDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPositionDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPositionDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getTransportationDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTransportationDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getTypeOfWorkDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTypeOfWorkDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getTypeOfEmploymentDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTypeOfEmploymentDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWagesEntriesAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWagesEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWagesCheckboxEntriesAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWagesCheckboxEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertWagesAsync(\r\n hoursWeek, hoursWages, startDate, endDate, PositionId, wagesID, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertWages/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n hoursWeek: hoursWeek,\r\n hoursWages: hoursWages,\r\n startDate: startDate,\r\n endDate: endDate,\r\n PositionId: PositionId,\r\n wagesID: wagesID,\r\n userID: userID\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n\r\n async function saveCheckboxWagesAsync(\r\n chkboxName, IsChacked, PositionId, textboxValue, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveCheckboxWages/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n chkboxName: chkboxName,\r\n IsChacked: IsChacked,\r\n PositionId: PositionId,\r\n textboxValue: textboxValue,\r\n userID: userID\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPositionTaskEntriesAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPositionTaskEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getInitialPerformanceDropdownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInitialPerformanceDropdown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertPositionTaskAsync(\r\n task, description, startDate, endDate, initialPerformance, initialPerformanceNotes, employeeStandard, PositionId, jobTaskID, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPositionTask/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n task: task,\r\n description: description,\r\n startDate: startDate,\r\n endDate: endDate,\r\n initialPerformance: initialPerformance,\r\n initialPerformanceNotes: initialPerformanceNotes,\r\n employeeStandard: employeeStandard,\r\n PositionId: PositionId,\r\n jobTaskID: jobTaskID,\r\n userID: userID\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWorkScheduleEntriesAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkScheduleEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function isNewPositionEnableAsync(consumerIds) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/isNewPositionEnable/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEmployeementPathAsync(consumersId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeementPath/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumersId\":\"' +\r\n consumersId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertWorkScheduleAsync(\r\n dayOfWeek, startTime, endTime, PositionId, WorkScheduleID, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertWorkSchedule/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n dayOfWeek: dayOfWeek,\r\n startTime: startTime,\r\n endTime: endTime,\r\n PositionId: PositionId,\r\n WorkScheduleID: WorkScheduleID,\r\n userID: userID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getLastTaskNumberAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLastTaskNumber/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n function deleteWagesBenefits(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteWagesBenefits/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"wagesID\":\"' +\r\n dataObj.wagesID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response) {\r\n var res = response.deleteWagesBenefitsResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n function deleteWorkSchedule(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteWorkSchedule/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"WorkScheduleID\":\"' +\r\n dataObj.WorkScheduleID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response) {\r\n var res = response.deleteWorkScheduleResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n function deletePostionTask(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deletePostionTask/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"jobTaskID\":\"' +\r\n dataObj.jobTaskID +\r\n '\",\"PositionID\":\"' +\r\n dataObj.PositionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response) {\r\n var res = response.deletePostionTaskResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n async function getEmployeeStatusDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeeStatusDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function createNewEmploymentPathAsync(\r\n currentStatus, pathToEmployment, pathToStartDate, peopleID, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/createNewEmploymentPath/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n currentStatus: currentStatus,\r\n pathToEmployment: pathToEmployment,\r\n pathToStartDate: pathToStartDate,\r\n peopleID: peopleID,\r\n userID: userID\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getEmploymentEntriesAsync,\r\n getEmployersAsync,\r\n getPositionsAsync,\r\n getJobStandingsAsync,\r\n getEmployeeInfoByIDAsync,\r\n insertEmploymentPathAsync,\r\n insertEmploymentInfoAsync,\r\n getJobStandingsDropDownAsync,\r\n getEmployerDropDownAsync,\r\n getPositionDropDownAsync,\r\n getTransportationDropDownAsync,\r\n getTypeOfWorkDropDownAsync,\r\n getWagesEntriesAsync,\r\n getWagesCheckboxEntriesAsync,\r\n insertWagesAsync,\r\n saveCheckboxWagesAsync,\r\n getPositionTaskEntriesAsync,\r\n getInitialPerformanceDropdownAsync,\r\n insertPositionTaskAsync,\r\n getWorkScheduleEntriesAsync,\r\n isNewPositionEnableAsync,\r\n getEmployeementPathAsync,\r\n insertWorkScheduleAsync,\r\n getLastTaskNumberAsync,\r\n deleteWagesBenefits,\r\n deleteWorkSchedule,\r\n deletePostionTask,\r\n getEmployeeStatusDropDownAsync,\r\n createNewEmploymentPathAsync,\r\n getTypeOfEmploymentDropDownAsync,\r\n };\r\n})();\r\n","const EmploymentInformation = (() => {\r\n var employmentPath;\r\n let PositionId;\r\n let getEmployeeInfoByID = [];\r\n let peopleID;\r\n let BtnName;\r\n let tempstartDatePosition = '';\r\n let tempendDatePosition = '';\r\n let tempposition = '';\r\n let tempjobStanding = '';\r\n let tempemployer = '';\r\n let temptransportation = '';\r\n let temptypeOfWork = '';\r\n let tempselfEmployed = '';\r\n let tempname = '';\r\n let tempphone = '';\r\n let tempemail = '';\r\n let consumersID;\r\n let employerName;\r\n let positionName;\r\n let selectedConsumersName;\r\n let getEmployeepath = [];\r\n let existingEndDate;\r\n let isNewPositionEnable;\r\n let currentStatus;\r\n let pathToEmployment;\r\n let pathToStartDate;\r\n let temptypeOfEmployment = '';\r\n\r\n async function init(positionId, Name, PositionName, SelectedConsumersName, ConsumersId) {\r\n PositionId = positionId;\r\n consumersID = ConsumersId;\r\n employerName = Name;\r\n positionName = PositionName;\r\n selectedConsumersName = SelectedConsumersName;\r\n getEmployeepath = await EmploymentAjax.getEmployeementPathAsync(ConsumersId);\r\n if (PositionId != undefined) {\r\n getEmployeeInfoByID = await EmploymentAjax.getEmployeeInfoByIDAsync(PositionId);\r\n }\r\n\r\n const result = await EmploymentAjax.isNewPositionEnableAsync(ConsumersId);\r\n const { isNewPositionEnableResult } = result;\r\n if (isNewPositionEnableResult[0].IsEmployeeEnable == '0') {\r\n isNewPositionEnable = true;\r\n }\r\n else {\r\n isNewPositionEnable = false;\r\n }\r\n }\r\n\r\n function getMarkup() {\r\n const employeeInforWrap = document.createElement('div');\r\n employeeInforWrap.classList.add('planSummary');\r\n const importantTables = buildNewEmploymentForm();\r\n employeeInforWrap.appendChild(importantTables);\r\n return employeeInforWrap;\r\n }\r\n\r\n function buildNewEmploymentForm() {\r\n if (isNewPositionEnable)\r\n createEmploymentPathPopupBtn();\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n\r\n if (PositionId != undefined) {\r\n BtnName = 'SAVE';\r\n startDatePosition = moment(getEmployeeInfoByID.getEmployeeInfoByIDResult[0].positionStartDate).format('YYYY-MM-DD');\r\n endDatePosition = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].positionEndDate == '' ? '' : moment(getEmployeeInfoByID.getEmployeeInfoByIDResult[0].positionEndDate).format('YYYY-MM-DD');\r\n position = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].position;\r\n jobStanding = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].jobStanding;\r\n employer = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].employer;\r\n transportation = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].transportation;\r\n typeOfWork = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].typeOfWork;\r\n selfEmployed = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].selfEmployed;\r\n name = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].name;\r\n phone = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].phone;\r\n email = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].email;\r\n peopleID = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].peopleId;\r\n typeOfEmployment = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].typeOfEmployment;\r\n }\r\n else {\r\n BtnName = 'SAVE';\r\n // PositionId = 0; \r\n startDatePosition = '';\r\n endDatePosition = '';\r\n position = '';\r\n jobStanding = '';\r\n employer = '';\r\n transportation = '';\r\n typeOfWork = '';\r\n selfEmployed = '';\r\n name = '';\r\n phone = '';\r\n email = '';\r\n peopleID = consumersID;\r\n typeOfEmployment = '';\r\n }\r\n\r\n employmentPath = getEmployeepath.getEmployeementPathResult.length > 0 ? getEmployeepath.getEmployeementPathResult[0].employmentPath : '';\r\n existingPathID = getEmployeepath.getEmployeementPathResult[0] == undefined || getEmployeepath.getEmployeementPathResult[0].existingPathID == '' ? '' : getEmployeepath.getEmployeementPathResult[0].existingPathID;\r\n existingStartDate = getEmployeepath.getEmployeementPathResult[0] == undefined || getEmployeepath.getEmployeementPathResult[0].existingStartDate == '' ? '' : moment(getEmployeepath.getEmployeementPathResult[0].existingStartDate).format('YYYY-MM-DD');\r\n existingEndDate = getEmployeepath.getEmployeementPathResult[0] == undefined || getEmployeepath.getEmployeementPathResult[0].existingEndDate == '' ? '' : moment(getEmployeepath.getEmployeementPathResult[0].existingEndDate).format('YYYY-MM-DD');\r\n tempstartDatePosition = '';\r\n tempendDatePosition = '';\r\n tempposition = '';\r\n tempjobStanding = '';\r\n tempemployer = '';\r\n temptransportation = '';\r\n temptypeOfWork = '';\r\n tempselfEmployed = '';\r\n tempname = '';\r\n tempphone = '';\r\n tempemail = '';\r\n temptypeOfEmployment = '';\r\n\r\n positionStartDate = input.build({\r\n id: 'positionStartDate',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n value: (startDatePosition) ? startDatePosition : '',\r\n });\r\n\r\n positionEndDate = input.build({\r\n id: 'positionEndDate',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n value: (endDatePosition) ? endDatePosition : '',\r\n });\r\n\r\n positionDropdown = dropdown.build({\r\n id: 'positionDropdown',\r\n label: \"Position\",\r\n dropdownId: \"positionDropdown\",\r\n value: (position) ? position : '',\r\n });\r\n\r\n jobStandingDropdown = dropdown.build({\r\n id: 'jobStandingDropdown',\r\n label: \"Job Standing\",\r\n dropdownId: \"jobStandingDropdown\",\r\n value: (jobStanding) ? jobStanding : '',\r\n });\r\n\r\n employerDropdown = dropdown.build({\r\n id: 'employerDropdown',\r\n label: \"Employer\",\r\n dropdownId: \"employerDropdown\",\r\n value: (employer) ? employer : '',\r\n });\r\n\r\n transportationDropdown = dropdown.build({\r\n id: 'transportationDropdown',\r\n label: \"Transportation\",\r\n dropdownId: \"transportationDropdown\",\r\n value: (transportation) ? transportation : '',\r\n });\r\n\r\n typeOfWorkDropdown = dropdown.build({\r\n id: 'typeOfWorkDropdown',\r\n label: \"Type Of Work\",\r\n dropdownId: \"typeOfWorkDropdown\",\r\n value: (typeOfWork) ? typeOfWork : '',\r\n });\r\n\r\n typeOfEmploymentDropdown = dropdown.build({\r\n id: 'typeOfEmploymentDropdown',\r\n label: \"Employment Type\",\r\n dropdownId: \"typeOfEmploymentDropdown\",\r\n value: (typeOfEmployment) ? typeOfEmployment : '',\r\n });\r\n\r\n isSelfEmployed = input.buildCheckbox({\r\n text: 'Self-Employed?',\r\n id: 'chkisSelfEmployed',\r\n isChecked: selfEmployed == 'Y' ? true : false,\r\n });\r\n\r\n nameInput = input.build({\r\n id: 'nameInput',\r\n label: 'Name',\r\n type: 'text',\r\n style: 'secondary',\r\n value: (name) ? name : '',\r\n });\r\n\r\n phoneInput = input.build({\r\n id: 'phoneInput',\r\n label: 'Phone',\r\n type: 'number',\r\n style: 'secondary',\r\n attributes: [{ key: 'maxlength', value: '12' }],\r\n value: (phone) ? phone : '',\r\n });\r\n\r\n emailInput = input.build({\r\n id: 'emailInput',\r\n label: 'Email',\r\n type: 'text',\r\n style: 'secondary',\r\n value: (email) ? email : '',\r\n });\r\n\r\n // Save button\r\n SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!SAVE_BTN.classList.contains('disabled')) {\r\n SAVE_BTN.classList.add('disabled');\r\n saveEmployeeInfo()\r\n }\r\n },\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { CancleValidate() },\r\n });\r\n UPDATE_BTN = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n updatePathPopupBtn()\r\n },\r\n });\r\n\r\n const addEmployerBtn = button.build({\r\n text: '+ Add Employers',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const redirectInfo = {\r\n positionId: PositionId,\r\n empName: employerName,\r\n posName: positionName,\r\n consumersName: selectedConsumersName,\r\n consumersId: consumersID\r\n };\r\n if (!addEmployerBtn.classList.contains('disabled')) {\r\n addEditEmployers.buildEmployerPopUp({}, 'insert', 'employmentInfo', redirectInfo);\r\n }\r\n },\r\n });\r\n\r\n var LineBr = document.createElement('br');\r\n\r\n\r\n const messageHeading = document.createElement('b');\r\n messageHeading.classList.add('boldfont');\r\n messageHeading.style.marginTop = '1%';\r\n messageHeading.innerText = 'Path to Employment: '\r\n\r\n const message = document.createElement('p');\r\n if (employmentPath == '1')\r\n message.innerText = ' 1 - I have a job but would like a better one or to move up.';\r\n else if (employmentPath == '2')\r\n message.innerText = ' 2 - I want a job! I need help to find one.';\r\n else if (employmentPath == '3')\r\n message.innerText = \" 3 - I'm not sure about work. I need help to learn more.\";\r\n else if (employmentPath == '4')\r\n message.innerText = \" 4 - I don't think I want to work, but I may not know enough.\";\r\n else\r\n message.innerText = '';\r\n message.style.marginTop = '1%';\r\n message.style.marginLeft = '1%';\r\n var msgWrap = document.createElement('div');\r\n msgWrap.classList.add('employmentMsgWrap');\r\n\r\n msgWrap.appendChild(messageHeading);\r\n msgWrap.appendChild(message);\r\n\r\n if ($.session.EmploymentUpdate) {\r\n UPDATE_BTN.style.marginLeft = '1%';\r\n msgWrap.appendChild(UPDATE_BTN);\r\n }\r\n\r\n employeeInfoDiv.appendChild(msgWrap);\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Employment Information
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n const employerBtnWrap = document.createElement('div');\r\n employerBtnWrap.classList.add('employmentBtnWrap');\r\n employerDropdown.style.width = '80%';\r\n addEmployerBtn.style.width = '19%';\r\n if (!$.session.InsertEmployers) {\r\n addEmployerBtn.classList.add('disabled');\r\n }\r\n employerBtnWrap.appendChild(employerDropdown);\r\n employerBtnWrap.appendChild(addEmployerBtn);\r\n\r\n addNewCardBody.appendChild(employerBtnWrap);\r\n addNewCardBody.appendChild(positionDropdown);\r\n\r\n var dropWrap = document.createElement('div');\r\n dropWrap.classList.add('employmentDTWrap');\r\n jobStandingDropdown.classList.add('width27Per');\r\n dropWrap.appendChild(jobStandingDropdown);\r\n transportationDropdown.classList.add('width27Per');\r\n dropWrap.appendChild(transportationDropdown);\r\n positionStartDate.classList.add('width20Per');\r\n dropWrap.appendChild(positionStartDate);\r\n positionEndDate.classList.add('width20Per');\r\n dropWrap.appendChild(positionEndDate);\r\n addNewCardBody.appendChild(dropWrap);\r\n\r\n var drWrap = document.createElement('div');\r\n drWrap.classList.add('employmentDTWrap');\r\n typeOfWorkDropdown.classList.add('width39Per');\r\n drWrap.appendChild(typeOfWorkDropdown);\r\n isSelfEmployed.classList.add('width22Per');\r\n drWrap.appendChild(isSelfEmployed);\r\n typeOfEmploymentDropdown.classList.add('width38Per');\r\n drWrap.appendChild(typeOfEmploymentDropdown);\r\n addNewCardBody.appendChild(drWrap);\r\n\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"heading\");\r\n consumerNameDisplay.innerHTML = `${'Supervisor Information'}`;\r\n consumerNameDisplay.style.marginLeft = '10px';\r\n addNewCardBody.appendChild(consumerNameDisplay);\r\n addNewCardBody.appendChild(LineBr);\r\n addNewCardBody.appendChild(LineBr);\r\n\r\n var infoWrap = document.createElement('div');\r\n infoWrap.classList.add('employmentDTWrap');\r\n nameInput.classList.add('width30Per');\r\n infoWrap.appendChild(nameInput);\r\n phoneInput.classList.add('width32Per');\r\n infoWrap.appendChild(phoneInput);\r\n emailInput.classList.add('width32Per');\r\n infoWrap.appendChild(emailInput);\r\n addNewCardBody.appendChild(infoWrap);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('employmentBtnWrap');\r\n btnWrap.style.marginLeft = '25%';\r\n btnWrap.style.width = '50%';\r\n\r\n if ($.session.EmploymentUpdate) {\r\n SAVE_BTN.style.width = '52%';\r\n btnWrap.appendChild(SAVE_BTN);\r\n }\r\n\r\n CANCEL_BTN.style.width = '52%';\r\n CANCEL_BTN.style.marginLeft = '5%';\r\n btnWrap.appendChild(CANCEL_BTN);\r\n addNewCardBody.appendChild(btnWrap);\r\n\r\n eventListeners();\r\n populateDropdowns();\r\n enableDisabledInputs();\r\n employeeInfoDiv.appendChild(column1);\r\n checkRequiredFieldsOfEmployeeInfo(startDatePosition, position, employer, jobStanding, endDatePosition);\r\n\r\n return employeeInfoDiv;\r\n }\r\n\r\n function enableDisabledInputs() {\r\n if ($.session.EmploymentUpdate) {\r\n positionStartDate.classList.remove('disabled');\r\n positionEndDate.classList.remove('disabled');\r\n positionDropdown.classList.remove('disabled');\r\n jobStandingDropdown.classList.remove('disabled');\r\n employerDropdown.classList.remove('disabled');\r\n transportationDropdown.classList.remove('disabled');\r\n typeOfWorkDropdown.classList.remove('disabled');\r\n typeOfEmploymentDropdown.classList.remove('disabled');\r\n isSelfEmployed.classList.remove('disabled');\r\n nameInput.classList.remove('disabled');\r\n phoneInput.classList.remove('disabled');\r\n emailInput.classList.remove('disabled');\r\n UPDATE_BTN.classList.remove('disabled');\r\n SAVE_BTN.classList.remove('disabled');\r\n }\r\n else {\r\n positionStartDate.classList.add('disabled');\r\n positionEndDate.classList.add('disabled');\r\n positionDropdown.classList.add('disabled');\r\n jobStandingDropdown.classList.add('disabled');\r\n employerDropdown.classList.add('disabled');\r\n transportationDropdown.classList.add('disabled');\r\n typeOfWorkDropdown.classList.add('disabled');\r\n typeOfEmploymentDropdown.classList.add('disabled');\r\n isSelfEmployed.classList.add('disabled');\r\n nameInput.classList.add('disabled');\r\n phoneInput.classList.add('disabled');\r\n emailInput.classList.add('disabled');\r\n UPDATE_BTN.classList.add('disabled');\r\n SAVE_BTN.classList.add('disabled');\r\n }\r\n\r\n }\r\n\r\n function getRequiredFieldsOfEmployeeInfo() {\r\n var startDate = positionStartDate.querySelector('#positionStartDate');\r\n var endDate = positionEndDate.querySelector('#positionEndDate');\r\n var position = positionDropdown.querySelector('#positionDropdown');\r\n var employer = employerDropdown.querySelector('#employerDropdown');\r\n var jobStanding = jobStandingDropdown.querySelector('#jobStandingDropdown');\r\n checkRequiredFieldsOfEmployeeInfo(startDate.value, position.value, employer.value, jobStanding.value, endDate.value)\r\n }\r\n\r\n function checkRequiredFieldsOfEmployeeInfo(startDate, position, employer, jobStanding, endDate) {\r\n if (startDate === '' || (endDate != '' && startDate > endDate)) {\r\n positionStartDate.classList.add('error');\r\n } else {\r\n positionStartDate.classList.remove('error');\r\n }\r\n\r\n if (position === '') {\r\n positionDropdown.classList.add('error');\r\n } else {\r\n positionDropdown.classList.remove('error');\r\n }\r\n\r\n if (employer === '') {\r\n employerDropdown.classList.add('error');\r\n } else {\r\n employerDropdown.classList.remove('error');\r\n }\r\n\r\n if (jobStanding === '') {\r\n jobStandingDropdown.classList.add('error');\r\n } else {\r\n jobStandingDropdown.classList.remove('error');\r\n }\r\n setBtnStatusOfEmployeeInfo();\r\n }\r\n\r\n function setBtnStatusOfEmployeeInfo() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n SAVE_BTN.classList.add('disabled');\r\n BACK_BTN.classList.remove('disabled');\r\n return;\r\n } else {\r\n if (tempstartDatePosition != '' || tempendDatePosition != '' || tempposition != '' || tempjobStanding != '' || tempemployer != '' || temptransportation != '' || temptypeOfWork != '' || tempselfEmployed != '' || tempname != '' || tempphone != '' || tempemail != '' || temptypeOfEmployment != '') {\r\n SAVE_BTN.classList.remove('disabled');\r\n BACK_BTN.classList.add('disabled');\r\n }\r\n else {\r\n SAVE_BTN.classList.add('disabled');\r\n BACK_BTN.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n\r\n function eventListeners() {\r\n positionStartDate.addEventListener('input', event => {\r\n startDatePosition = event.target.value;\r\n tempstartDatePosition = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n positionEndDate.addEventListener('input', event => {\r\n endDatePosition = event.target.value;\r\n tempendDatePosition = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n positionDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n position = selectedConsumerOption.id;\r\n positionName = selectedConsumerOption.text;\r\n tempposition = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n jobStandingDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n jobStanding = selectedConsumerOption.id;\r\n tempjobStanding = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n employerDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n employer = selectedConsumerOption.id;\r\n employerName = selectedConsumerOption.text;\r\n tempemployer = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n transportationDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n transportation = selectedConsumerOption.id;\r\n temptransportation = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n typeOfWorkDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n typeOfWork = selectedConsumerOption.id;\r\n temptypeOfWork = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n typeOfEmploymentDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n typeOfEmployment = selectedConsumerOption.id;\r\n temptypeOfEmployment = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n isSelfEmployed.addEventListener('change', event => {\r\n selfEmployed = event.target.checked == true ? 'Y' : 'N';\r\n tempselfEmployed = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n nameInput.addEventListener('input', event => {\r\n name = event.target.value;\r\n tempname = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n phoneInput.addEventListener('input', event => {\r\n phone = event.target.value;\r\n tempphone = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n emailInput.addEventListener('input', event => {\r\n email = event.target.value;\r\n tempemail = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n }\r\n\r\n async function populateDropdowns() {\r\n const {\r\n getPositionDropDownResult: Positions,\r\n } = await EmploymentAjax.getPositionDropDownAsync();\r\n let positionsData = Positions.map((positions) => ({\r\n id: positions.positionId,\r\n value: positions.positionId,\r\n text: positions.positionName\r\n }));\r\n positionsData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"positionDropdown\", positionsData, position);\r\n\r\n const {\r\n getEmployerDropDownResult: Employer,\r\n } = await EmploymentAjax.getEmployerDropDownAsync();\r\n let data = Employer.map((employer) => ({\r\n id: employer.employerId,\r\n value: employer.employerId,\r\n text: employer.employerName\r\n }));\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"employerDropdown\", data, employer);\r\n\r\n const {\r\n getJobStandingsDropDownResult: JobStanding,\r\n } = await EmploymentAjax.getJobStandingsDropDownAsync();\r\n let jobStandingData = JobStanding.map((jobStanding) => ({\r\n id: jobStanding.jobStandingId,\r\n value: jobStanding.jobStandingId,\r\n text: jobStanding.jobStandingName\r\n }));\r\n jobStandingData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"jobStandingDropdown\", jobStandingData, jobStanding);\r\n\r\n const {\r\n getTransportationDropDownResult: Transportation,\r\n } = await EmploymentAjax.getTransportationDropDownAsync();\r\n let transportationData = Transportation.map((transportation) => ({\r\n id: transportation.transportationId,\r\n value: transportation.transportationId,\r\n text: transportation.transportationName\r\n }));\r\n transportationData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"transportationDropdown\", transportationData, transportation);\r\n\r\n const {\r\n getTypeOfWorkDropDownResult: TypeOfWork,\r\n } = await EmploymentAjax.getTypeOfWorkDropDownAsync();\r\n let typeOfWorkData = TypeOfWork.map((typeOfWorks) => ({\r\n id: typeOfWorks.typeOfWorkId,\r\n value: typeOfWorks.typeOfWorkId,\r\n text: typeOfWorks.typeOfWorkName\r\n }));\r\n typeOfWorkData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"typeOfWorkDropdown\", typeOfWorkData, typeOfWork);\r\n\r\n const {\r\n getTypeOfEmploymentDropDownResult: TypeOfEmployment,\r\n } = await EmploymentAjax.getTypeOfEmploymentDropDownAsync();\r\n let typeOfEmploymentData = TypeOfEmployment.map((typeOfEmployments) => ({\r\n id: typeOfEmployments.typeOfWorkId,\r\n value: typeOfEmployments.typeOfWorkId,\r\n text: typeOfEmployments.typeOfWorkName\r\n }));\r\n typeOfEmploymentData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"typeOfEmploymentDropdown\", typeOfEmploymentData, typeOfEmployment);\r\n\r\n\r\n }\r\n\r\n\r\n function updatePathPopupBtn() {\r\n employmentPath = '';\r\n currentEndDate = existingEndDate;\r\n newStartDate = '';\r\n newEndDate = '';\r\n\r\n updatePathPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n const heading = document.createElement('h2');\r\n heading.style.marginTop = '-20px';\r\n heading.style.marginBottom = '20px';\r\n heading.innerText = 'Update Path to Employment';\r\n\r\n // dropdowns & inputs\r\n currentPathEndDate = input.build({\r\n id: 'currentPathEndDate',\r\n type: 'date',\r\n label: 'Current Path End Date',\r\n style: 'secondary',\r\n value: currentEndDate,\r\n });\r\n\r\n newPathEmploymentDropdown = dropdown.build({\r\n id: 'newPathEmploymentDropdown',\r\n label: \"New Path to Employment\",\r\n dropdownId: \"newPathEmploymentDropdown\",\r\n });\r\n\r\n newPathStartDate = input.build({\r\n id: 'newPathStartDate',\r\n type: 'date',\r\n label: 'New Path Start Date',\r\n style: 'secondary',\r\n value: newStartDate,\r\n });\r\n\r\n newPathEndDate = input.build({\r\n id: 'newPathEndDate',\r\n type: 'date',\r\n label: 'New Path End Date',\r\n style: 'secondary',\r\n value: newEndDate,\r\n });\r\n\r\n APPLY_BTN = button.build({\r\n text: 'APPLY',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n APPLY_BTN.classList.add('disabled');\r\n saveNewPathPopup();\r\n }\r\n }\r\n });\r\n\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n updatePathPopup.appendChild(heading);\r\n updatePathPopup.appendChild(currentPathEndDate);\r\n\r\n updatePathPopup.appendChild(newPathEmploymentDropdown);\r\n updatePathPopup.appendChild(newPathStartDate);\r\n updatePathPopup.appendChild(newPathEndDate);\r\n\r\n var confirmMessage = document.createElement('div');\r\n confirmMessage.innerHTML = `

    `;\r\n updatePathPopup.appendChild(confirmMessage);\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(APPLY_BTN);\r\n popupbtnWrap.appendChild(CANCEL_BTN);\r\n updatePathPopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(updatePathPopup);\r\n PopupEventListeners();\r\n populateNewPathEmploymentDropdown('updatePath');\r\n checkRequiredFieldsOfEmploymentPath();\r\n }\r\n\r\n function PopupEventListeners() {\r\n newPathEmploymentDropdown.addEventListener('change', event => {\r\n employmentPath = event.target.value;\r\n checkRequiredFieldsOfEmploymentPath();\r\n });\r\n\r\n newPathStartDate.addEventListener('input', event => {\r\n newStartDate = event.target.value;\r\n checkRequiredFieldsOfEmploymentPath();\r\n });\r\n newPathEndDate.addEventListener('input', event => {\r\n newEndDate = event.target.value;\r\n checkRequiredFieldsOfEmploymentPath();\r\n });\r\n currentPathEndDate.addEventListener('input', event => {\r\n currentEndDate = event.target.value;\r\n checkRequiredFieldsOfEmploymentPath();\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(updatePathPopup);\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfEmploymentPath() {\r\n var newPathEmployment = newPathEmploymentDropdown.querySelector('#newPathEmploymentDropdown');\r\n var newStartDate = newPathStartDate.querySelector('#newPathStartDate');\r\n var newEndDate = newPathEndDate.querySelector('#newPathEndDate');\r\n var CurrentEndDate = currentPathEndDate.querySelector('#currentPathEndDate');\r\n\r\n if (newPathEmployment.value === '') {\r\n newPathEmploymentDropdown.classList.add('errorPopup');\r\n } else {\r\n newPathEmploymentDropdown.classList.remove('errorPopup');\r\n }\r\n\r\n if (CurrentEndDate.value === '' || CurrentEndDate.value < existingStartDate) {\r\n currentPathEndDate.classList.add('errorPopup');\r\n } else {\r\n currentPathEndDate.classList.remove('errorPopup');\r\n }\r\n\r\n if (newStartDate.value === '' || CurrentEndDate.value > newStartDate.value || (newEndDate.value != '' && newStartDate.value > newEndDate.value)) {\r\n newPathStartDate.classList.add('errorPopup');\r\n } else {\r\n newPathStartDate.classList.remove('errorPopup');\r\n }\r\n\r\n setBtnStatusOfEmploymentPath();\r\n }\r\n\r\n function setBtnStatusOfEmploymentPath() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function populateNewPathEmploymentDropdown(pathName) {\r\n const condfidentialDropdownData = ([\r\n { id: 1, value: 1, text: \"1 - I have a job but would like a better one or to move up.\" },\r\n { id: 2, value: 2, text: \"2 - I want a job! I need help to find one.\" },\r\n { id: 3, value: 3, text: \"3 - I'm not sure about work. I need help to learn more.\" },\r\n { id: 4, value: 4, text: \"4 - I don't think I want to work, but I may not know enough.\" },\r\n ]);\r\n condfidentialDropdownData.unshift({ id: null, value: '', text: '' });\r\n if (pathName == 'updatePath')\r\n dropdown.populate(\"newPathEmploymentDropdown\", condfidentialDropdownData, employmentPath);\r\n else\r\n dropdown.populate(\"pathToEmploymentDropdown\", condfidentialDropdownData, pathToEmployment);\r\n }\r\n\r\n\r\n\r\n async function saveNewPathPopup() {\r\n const result = await EmploymentAjax.insertEmploymentPathAsync(employmentPath, newStartDate, newEndDate, currentEndDate, consumersID, $.session.UserId, existingPathID);\r\n const { insertEmploymentPathResult } = result;\r\n var messagetext = document.getElementById('confirmMessage');\r\n\r\n messagetext.innerHTML = ``;\r\n if (insertEmploymentPathResult.pathId == '-1') {\r\n messagetext.innerHTML = 'This record overlaps with an existing record. Changes cannot be saved.';\r\n messagetext.classList.add('password-error');\r\n }\r\n else {\r\n NewEmployment.refreshEmployment(PositionId, employerName, positionName, selectedConsumersName, consumersID);\r\n POPUP.hide(updatePathPopup);\r\n }\r\n\r\n }\r\n\r\n async function saveEmployeeInfo() {\r\n const result = await EmploymentAjax.insertEmploymentInfoAsync(startDatePosition, endDatePosition, position, jobStanding, employer, transportation, typeOfWork, selfEmployed, name, phone, email, consumersID, $.session.UserId, PositionId, typeOfEmployment);\r\n const { insertEmploymentInfoResult } = result;\r\n if (insertEmploymentInfoResult.positionID != null) {\r\n NewEmployment.refreshEmployment(insertEmploymentInfoResult.positionID, employerName, positionName, selectedConsumersName, consumersID, tabPositionIndex = 0);\r\n }\r\n }\r\n\r\n function CancleValidate() {\r\n if (tempstartDatePosition != ''\r\n || tempendDatePosition != ''\r\n || tempposition != ''\r\n || tempjobStanding != ''\r\n || tempemployer != ''\r\n || temptransportation != ''\r\n || temptypeOfWork != ''\r\n || tempselfEmployed != ''\r\n || tempname != ''\r\n || tempphone != ''\r\n || tempemail != ''\r\n || temptypeOfEmployment != '') {\r\n CancleEmploymentInfoPopup();\r\n }\r\n else {\r\n Employment.loadEmploymentLanding();\r\n }\r\n }\r\n\r\n function CancleEmploymentInfoPopup() {\r\n const confirmPopup = POPUP.build({\r\n hideX: true,\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n Employment.loadEmploymentLanding();\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n\r\n message.innerText = 'Any changes you have made will not be saved. Do you wish to continue?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n\r\n function createEmploymentPathPopupBtn() {\r\n pathToStartDate = '';\r\n pathToEmployment = '';\r\n currentStatus = '';\r\n\r\n createPathPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n // dropdowns & inputs\r\n currentStatusDropdown = dropdown.build({\r\n id: 'currentStatusDropdown',\r\n label: \"Current Status\",\r\n dropdownId: \"currentStatusDropdown\",\r\n });\r\n\r\n pathToEmploymentDropdown = dropdown.build({\r\n id: 'pathToEmploymentDropdown',\r\n label: \"Path to Employment\",\r\n dropdownId: \"pathToEmploymentDropdown\",\r\n });\r\n\r\n pathToEmploymentStartDate = input.build({\r\n id: 'pathToEmploymentStartDate',\r\n type: 'date',\r\n label: 'Path to Employment Start Date',\r\n style: 'secondary',\r\n });\r\n\r\n CONTINUE_BTN = button.build({\r\n text: 'continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n if (!CONTINUE_BTN.classList.contains('disabled')) {\r\n CONTINUE_BTN.classList.add('disabled');\r\n createNewPath();\r\n }\r\n }\r\n });\r\n\r\n CREATE_PATH_CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n createPathPopup.appendChild(currentStatusDropdown);\r\n createPathPopup.appendChild(pathToEmploymentDropdown);\r\n createPathPopup.appendChild(pathToEmploymentStartDate);\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(CREATE_PATH_CANCEL_BTN);\r\n popupbtnWrap.appendChild(CONTINUE_BTN);\r\n createPathPopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(createPathPopup);\r\n pathToEmploymentStartDate.classList.add('disabled');\r\n createEmploymentPathPopupEventListeners();\r\n populateNewPathEmploymentDropdown('createPath');\r\n populateEmploymentStatusDropdowns();\r\n checkRequiredFieldsOfCreateEmploymentPath();\r\n }\r\n\r\n function createEmploymentPathPopupEventListeners() {\r\n currentStatusDropdown.addEventListener('change', event => {\r\n currentStatus = event.target.value;\r\n checkRequiredFieldsOfCreateEmploymentPath();\r\n });\r\n pathToEmploymentDropdown.addEventListener('change', event => {\r\n pathToEmployment = event.target.value;\r\n if (pathToEmployment == '') {\r\n pathToEmploymentStartDate.classList.add('disabled');\r\n pathToStartDate = '';\r\n document.getElementById('pathToEmploymentStartDate').value = '';\r\n }\r\n else {\r\n pathToEmploymentStartDate.classList.remove('disabled');\r\n }\r\n checkRequiredFieldsOfCreateEmploymentPath();\r\n });\r\n\r\n pathToEmploymentStartDate.addEventListener('input', event => {\r\n if (pathToEmployment != '') {\r\n pathToStartDate = event.target.value;\r\n }\r\n else {\r\n document.getElementById('pathToEmploymentStartDate').value = '';\r\n pathToStartDate = '';\r\n }\r\n checkRequiredFieldsOfCreateEmploymentPath();\r\n });\r\n\r\n CREATE_PATH_CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(createPathPopup);\r\n Employment.loadEmploymentLanding();\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfCreateEmploymentPath() {\r\n var currentSts = currentStatusDropdown.querySelector('#currentStatusDropdown');\r\n var pathToEmp = pathToEmploymentDropdown.querySelector('#pathToEmploymentDropdown');\r\n var pathStartDt = pathToEmploymentStartDate.querySelector('#pathToEmploymentStartDate');\r\n\r\n if (currentSts.value === '') {\r\n currentStatusDropdown.classList.add('errorPopup');\r\n } else {\r\n currentStatusDropdown.classList.remove('errorPopup');\r\n }\r\n\r\n if (pathToEmp.value != '' && pathStartDt.value === '') {\r\n pathToEmploymentStartDate.classList.add('errorPopup');\r\n } else {\r\n pathToEmploymentStartDate.classList.remove('errorPopup');\r\n }\r\n\r\n setBtnStatusOfCreateEmploymentPath();\r\n }\r\n\r\n function setBtnStatusOfCreateEmploymentPath() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n CONTINUE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n CONTINUE_BTN.classList.remove('disabled');\r\n }\r\n }\r\n async function populateEmploymentStatusDropdowns() {\r\n const {\r\n getEmployeeStatusDropDownResult: EmpStatus,\r\n } = await EmploymentAjax.getEmployeeStatusDropDownAsync();\r\n let empStatus = EmpStatus.map((empStatus) => ({\r\n id: empStatus.empStatusId,\r\n value: empStatus.empStatusId,\r\n text: empStatus.empStatusName\r\n }));\r\n empStatus.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"currentStatusDropdown\", empStatus, currentStatus);\r\n }\r\n\r\n async function createNewPath() {\r\n const result = await EmploymentAjax.createNewEmploymentPathAsync(currentStatus, pathToEmployment, pathToStartDate, consumersID, $.session.UserId);\r\n const { createNewEmploymentPathResult } = result;\r\n POPUP.hide(createPathPopup);\r\n NewEmployment.refreshEmployment(PositionId, employerName, positionName, selectedConsumersName, consumersID);\r\n }\r\n\r\n return {\r\n init,\r\n buildNewEmploymentForm,\r\n getMarkup,\r\n };\r\n})(); ","const NewEmployment = (function () {\r\n\r\n let PositionId;\r\n let ispDiv;\r\n let ispNav;\r\n let ispBody;\r\n let consumersId;\r\n let name;\r\n let positionName;\r\n let selectedConsumersName;\r\n let tabPositionIndex;\r\n\r\n const sections = [\r\n {\r\n title: 'Employment Information',\r\n id: 0,\r\n markup: () => EmploymentInformation.getMarkup(),\r\n },\r\n {\r\n title: 'Wages & Benefits',\r\n id: 1,\r\n markup: () => WagesBenefits.getMarkup(),\r\n },\r\n {\r\n title: 'Position Tasks',\r\n id: 2,\r\n markup: () => PositionTask.getMarkup(),\r\n },\r\n {\r\n title: 'Work Schedule',\r\n id: 3,\r\n markup: () => WorkSchedule.getMarkup(),\r\n },\r\n\r\n ];\r\n\r\n async function refreshEmployment(PositionID, Name, PositionName, SelectedConsumersName, selectedConsumersId, TabPosition = 0) {\r\n PositionId = PositionID;\r\n consumersId = selectedConsumersId;\r\n name = Name;\r\n positionName = PositionName;\r\n selectedConsumersName = SelectedConsumersName;\r\n tabPositionIndex = TabPosition;\r\n\r\n DOM.clearActionCenter();\r\n\r\n var headingWrap = document.createElement('div');\r\n headingWrap.classList.add('employmentBtnWrap'); \r\n const heading = document.createElement('div');\r\n const headingName = document.createElement('div');\r\n const head = document.createElement('div');\r\n\r\n const ispWrap = document.createElement('div');\r\n\r\n ispWrap.id = 'planISP';\r\n\r\n ispWrap.innerHTML = '';\r\n\r\n BACK_BTN = button.build({\r\n text: 'BACK',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { Employment.loadEmploymentLanding() }, \r\n });\r\n\r\n const newIspMarkup = await getMarkup();\r\n\r\n heading.innerHTML = `

    ${selectedConsumersName}

    `;\r\n headingName.innerHTML = `

    ${Name} - ${PositionName}

    `;\r\n ispWrap.appendChild(newIspMarkup);\r\n\r\n head.appendChild(heading);\r\n if (PositionId != undefined)\r\n head.appendChild(headingName);\r\n headingWrap.appendChild(head);\r\n headingWrap.appendChild(BACK_BTN);\r\n\r\n DOM.ACTIONCENTER.appendChild(headingWrap);\r\n DOM.ACTIONCENTER.appendChild(ispWrap);\r\n DOM.autosizeTextarea();\r\n }\r\n function toggleActiveNavItem(selectedNavItem) {\r\n const activeNavItem = ispNav.querySelector('.active');\r\n\r\n if (activeNavItem) {\r\n activeNavItem.classList.remove('active');\r\n }\r\n\r\n selectedNavItem.classList.add('active');\r\n }\r\n function toggleActiveSection(sectionId) {\r\n const activeSection = ispBody.querySelector('.active');\r\n const targetSection = ispBody.querySelector(`[data-section-id=\"${sectionId}\"]`);\r\n\r\n if (activeSection) {\r\n activeSection.classList.remove('active');\r\n }\r\n\r\n if (sectionId > 0) {\r\n BACK_BTN.classList.remove('disabled');\r\n } else if (sectionId == 0 && SAVE_BTN.classList.contains('disabled')) {\r\n BACK_BTN.classList.remove('disabled');\r\n } else {\r\n BACK_BTN.classList.add('disabled'); \r\n } \r\n targetSection.classList.add('active');\r\n }\r\n\r\n // Markup\r\n //---------------------------------------------\r\n function buildNavigation() {\r\n const nav = document.createElement('div');\r\n nav.classList.add('planISP__nav');\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n\r\n const navItem = document.createElement('div');\r\n navItem.classList.add('planISP__navItem');\r\n navItem.innerHTML = `${section.title}`;\r\n\r\n if (tabPositionIndex === index) {\r\n navItem.classList.add('active');\r\n }\r\n\r\n navItem.addEventListener('click', e => {\r\n toggleActiveNavItem(navItem);\r\n toggleActiveSection(sectionId);\r\n DOM.autosizeTextarea();\r\n });\r\n\r\n nav.appendChild(navItem);\r\n });\r\n\r\n return nav;\r\n }\r\n async function buildBody() {\r\n const body = document.createElement('div');\r\n body.classList.add('planISP__body');\r\n\r\n await EmploymentInformation.init(PositionId, name, positionName, selectedConsumersName, consumersId);\r\n await WagesBenefits.init(PositionId, name, positionName, selectedConsumersName, consumersId);\r\n await PositionTask.init(PositionId, name, positionName, selectedConsumersName, consumersId);\r\n await WorkSchedule.init(PositionId, name, positionName, selectedConsumersName, consumersId);\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n const sectionMarkup = section.markup();\r\n sectionMarkup.setAttribute('data-section-id', sectionId);\r\n sectionMarkup.classList.add('planISP__section');\r\n\r\n if (tabPositionIndex === index) {\r\n sectionMarkup.classList.add('active');\r\n }\r\n\r\n body.appendChild(sectionMarkup);\r\n });\r\n\r\n return body;\r\n }\r\n\r\n async function getMarkup() {\r\n ispDiv = document.createElement('div');\r\n ispDiv.classList.add('planISP');\r\n\r\n ispNav = buildNavigation();\r\n ispDiv.appendChild(ispNav);\r\n\r\n ispBody = await buildBody();\r\n ispDiv.appendChild(ispBody);\r\n\r\n return ispDiv;\r\n }\r\n\r\n return {\r\n refreshEmployment,\r\n getMarkup,\r\n };\r\n})();\r\n","const PositionTask = (() => {\r\n\r\n let PositionEntriesTable = [];\r\n let PositionId;\r\n let jobTaskID;\r\n let PositionEntries;\r\n let LastTaskNumber;\r\n let consumersID;\r\n let name;\r\n let positionName;\r\n let selectedConsumersName;\r\n let actualTaskNumber;\r\n\r\n async function init(positionId, Name, PositionName, SelectedConsumersName, ConsumersId) {\r\n PositionId = positionId;\r\n consumersID = ConsumersId;\r\n name = Name;\r\n positionName = PositionName;\r\n selectedConsumersName = SelectedConsumersName;\r\n if (PositionId != undefined) {\r\n PositionEntries = await EmploymentAjax.getPositionTaskEntriesAsync(PositionId);\r\n LastTaskNumber = await EmploymentAjax.getLastTaskNumberAsync(PositionId);\r\n }\r\n }\r\n\r\n\r\n function getMarkup() {\r\n const positionWrap = document.createElement('div');\r\n positionWrap.classList.add('planSummary');\r\n\r\n if (PositionId != undefined) {\r\n const importantTables = buildNewPositionForm();\r\n positionWrap.appendChild(importantTables);\r\n }\r\n else {\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Position Task';\r\n heading.classList.add('sectionHeading');\r\n positionWrap.appendChild(heading);\r\n }\r\n\r\n return positionWrap;\r\n }\r\n\r\n function buildNewPositionForm() {\r\n const positionDiv = document.createElement('div');\r\n positionDiv.classList.add('additionalQuestionWrap');\r\n\r\n NEW_POSITION_BTN = button.build({\r\n text: '+ NEW POSITION TASK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addPositionPopupBtn()\r\n });\r\n PositionEntriesTable = buildPositionEntriesTable();\r\n\r\n // DOM.clearActionCenter();\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Position Task
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n if ($.session.EmploymentUpdate) {\r\n addNewCardBody.appendChild(NEW_POSITION_BTN);\r\n }\r\n addNewCardBody.appendChild(PositionEntriesTable);\r\n positionDiv.appendChild(column1);\r\n return positionDiv;\r\n }\r\n\r\n function buildPositionEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'employmentPositionTable',\r\n columnHeadings: ['Task #', 'Description', 'Start Date', 'End Date', 'Initial Performance', 'Initial Performance Notes', 'Employer Standard'],\r\n endIcon: $.session.EmploymentDelete == true ? true :false,\r\n };\r\n\r\n let tableData = PositionEntries.getPositionTaskEntriesResult.map((entry) => ({\r\n values: [entry.task, entry.description, entry.startDate == '' ? '' : moment(entry.startDate).format('MM/DD/YY'), entry.endDate == '' ? '' : moment(entry.endDate).format('MM/DD/YY'), entry.initialPerformance, entry.initialPerformanceNotes, entry.employeeStandard],\r\n attributes: [{ key: 'jobTaskId', value: entry.jobTaskId }],\r\n onClick: (e) => {\r\n if ($.session.EmploymentUpdate) {\r\n handleAccountTableEvents(e.target.attributes.jobTaskId.value)\r\n } \r\n },\r\n endIcon: $.session.EmploymentDelete == true ? `${icons['delete']}` : '',\r\n endIconCallback: (e) => {\r\n deletePositionTaskPOPUP(entry.jobTaskId);\r\n },\r\n }));\r\n const oTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = oTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'number'); // Task\r\n headers[1].setAttribute('data-type', 'string'); // Description\r\n headers[2].setAttribute('data-type', 'date'); // Start Date\r\n headers[3].setAttribute('data-type', 'date'); // End Date\r\n headers[4].setAttribute('data-type', 'string'); // Initial Performance\r\n headers[5].setAttribute('data-type', 'string'); // Initial Performance Notes\r\n headers[6].setAttribute('data-type', 'string'); // Employer Standard\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function handleAccountTableEvents(jobTaskId) {\r\n addPositionPopupBtn(jobTaskId)\r\n }\r\n\r\n function deletePositionTaskPOPUP(jobTaskId) {\r\n const confirmPopup = POPUP.build({\r\n hideX: true,\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n deletePositionTask(jobTaskId, confirmPopup);\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n\r\n message.innerText = 'Are you sure you would like to delete this Position Task?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n function deletePositionTask(jobTaskId, confirmPopup) {\r\n EmploymentAjax.deletePostionTask(\r\n {\r\n jobTaskID: jobTaskId,\r\n PositionID: PositionId,\r\n },\r\n function (results) {\r\n if (results = 'sucess') {\r\n POPUP.hide(confirmPopup);\r\n NewEmployment.refreshEmployment(PositionId, name, positionName, selectedConsumersName, consumersID, tabPositionIndex = 2);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function addPositionPopupBtn(jobTaskId) {\r\n if (jobTaskId == 0 || jobTaskId == undefined) {\r\n actualTaskNumber = LastTaskNumber.getLastTaskNumberResult[0] == undefined ? 1 : LastTaskNumber.getLastTaskNumberResult[0].lastTaskNumber;\r\n task = LastTaskNumber.getLastTaskNumberResult[0] == undefined ? 1 : LastTaskNumber.getLastTaskNumberResult[0].lastTaskNumber > 7 ? LastTaskNumber.getLastTaskNumberResult[0].lastTaskNumber - 7 : LastTaskNumber.getLastTaskNumberResult[0].lastTaskNumber;\r\n description = '';\r\n startDate = LastTaskNumber.getLastTaskNumberResult[0] == undefined ? '' : UTIL.formatDateFromDateObj(LastTaskNumber.getLastTaskNumberResult[0].startDate);\r\n endDate = '';\r\n initialPerformance = '';\r\n initialPerformanceNotes = '';\r\n employeeStandard = '';\r\n initialPerformanceID = '';\r\n }\r\n else {\r\n let positionValue = PositionEntries.getPositionTaskEntriesResult.find(x => x.jobTaskId == jobTaskId);\r\n actualTaskNumber = positionValue.task;\r\n task = positionValue.task;\r\n description = positionValue.description;\r\n startDate = moment(positionValue.startDate).format('YYYY-MM-DD');\r\n endDate = positionValue.endDate == '' ? '' : moment(positionValue.endDate).format('YYYY-MM-DD');\r\n initialPerformance = positionValue.initialPerformanceID;\r\n initialPerformanceNotes = positionValue.initialPerformanceNotes;\r\n employeeStandard = positionValue.employeeStandard;\r\n initialPerformanceID = positionValue.initialPerformanceID\r\n }\r\n\r\n\r\n addPositionPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n const heading = document.createElement('h2');\r\n heading.style.marginTop = '-20px';\r\n heading.style.marginBottom = '20px';\r\n if (jobTaskId) {\r\n heading.innerText = 'Update Position Task';\r\n jobTaskID = jobTaskId;\r\n }\r\n else {\r\n heading.innerText = 'New Position Task';\r\n jobTaskID = 0;\r\n }\r\n\r\n // dropdowns & inputs\r\n taskInput = input.build({\r\n id: 'taskInput',\r\n type: 'text',\r\n label: 'Task Number',\r\n style: 'secondary',\r\n value: task,\r\n });\r\n\r\n descriptionInput = input.build({\r\n id: 'descriptionInput',\r\n type: 'text',\r\n label: 'Description',\r\n style: 'secondary',\r\n value: description,\r\n });\r\n\r\n newStartDate = input.build({\r\n id: 'newStartDate',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n value: startDate,\r\n });\r\n\r\n newEndDate = input.build({\r\n id: 'newEndDate',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n value: endDate,\r\n });\r\n\r\n initialPerformanceDropdown = dropdown.build({\r\n id: 'initialPerformanceDropdown',\r\n label: \"Initial Performance\",\r\n dropdownId: \"initialPerformanceDropdown\",\r\n value: (initialPerformanceID) ? initialPerformanceID : '',\r\n });\r\n\r\n initialPerformanceNotesInput = input.build({\r\n id: 'initialPerformanceNotesInput',\r\n type: 'textarea',\r\n label: 'Initial Performance Notes',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: initialPerformanceNotes,\r\n });\r\n\r\n employeeStandardInput = input.build({\r\n id: 'employeeStandardInput',\r\n type: 'textarea',\r\n label: 'Employer Standard',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: employeeStandard,\r\n });\r\n\r\n\r\n APPLY_BTN = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n addPositionPopup.appendChild(heading);\r\n\r\n addPositionPopup.appendChild(taskInput);\r\n addPositionPopup.appendChild(descriptionInput);\r\n addPositionPopup.appendChild(newStartDate);\r\n addPositionPopup.appendChild(newEndDate);\r\n addPositionPopup.appendChild(initialPerformanceDropdown);\r\n addPositionPopup.appendChild(initialPerformanceNotesInput);\r\n addPositionPopup.appendChild(employeeStandardInput);\r\n taskInput.classList.add('disabled');\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n if ($.session.EmploymentUpdate) {\r\n popupbtnWrap.appendChild(APPLY_BTN);\r\n }\r\n popupbtnWrap.appendChild(CANCEL_BTN);\r\n addPositionPopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(addPositionPopup);\r\n PopupEventListeners();\r\n populateDropdowns();\r\n checkRequiredFieldsOfPopup();\r\n }\r\n\r\n function PopupEventListeners() {\r\n taskInput.addEventListener('input', event => {\r\n task = event.target.value;\r\n });\r\n\r\n descriptionInput.addEventListener('input', event => {\r\n description = event.target.value;\r\n });\r\n newStartDate.addEventListener('input', event => {\r\n startDate = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n newEndDate.addEventListener('input', event => {\r\n endDate = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n initialPerformanceDropdown.addEventListener('change', event => {\r\n initialPerformanceID = event.target.value;\r\n });\r\n\r\n initialPerformanceNotesInput.addEventListener('input', event => {\r\n initialPerformanceNotes = event.target.value;\r\n });\r\n\r\n employeeStandardInput.addEventListener('input', event => {\r\n employeeStandard = event.target.value;\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n APPLY_BTN.classList.add('disabled');\r\n saveNewPositionPopup();\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(addPositionPopup);\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfPopup() {\r\n var startDate = newStartDate.querySelector('#newStartDate');\r\n var endDate = newEndDate.querySelector('#newEndDate');\r\n\r\n if (startDate.value === '' || (endDate.value != '' && startDate.value > endDate.value)) {\r\n newStartDate.classList.add('errorPopup');\r\n } else {\r\n newStartDate.classList.remove('errorPopup');\r\n }\r\n\r\n setBtnStatusOfPopup();\r\n }\r\n\r\n function setBtnStatusOfPopup() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function populateDropdowns() {\r\n const {\r\n getInitialPerformanceDropdownResult: InitialPerformance,\r\n } = await EmploymentAjax.getInitialPerformanceDropdownAsync();\r\n let initialPerformanceData = InitialPerformance.map((initialPerformance) => ({\r\n id: initialPerformance.initialPerformanceId,\r\n value: initialPerformance.initialPerformanceId,\r\n text: initialPerformance.initialPerformanceName\r\n }));\r\n initialPerformanceData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"initialPerformanceDropdown\", initialPerformanceData, initialPerformance);\r\n }\r\n\r\n async function saveNewPositionPopup() {\r\n const result = await EmploymentAjax.insertPositionTaskAsync(actualTaskNumber, description, startDate, endDate, initialPerformanceID, initialPerformanceNotes, employeeStandard, PositionId, jobTaskID, $.session.UserId);\r\n const { insertPositionTaskResult } = result;\r\n\r\n if (insertPositionTaskResult.jobTaskId != null) {\r\n NewEmployment.refreshEmployment(PositionId, name, positionName, selectedConsumersName, consumersID, tabPositionIndex = 2);\r\n }\r\n POPUP.hide(addPositionPopup);\r\n }\r\n\r\n return {\r\n init,\r\n buildNewPositionForm,\r\n getMarkup,\r\n };\r\n})(); ","const WagesBenefits = (() => {\r\n let WagesEntriesTable = [];\r\n let PositionId;\r\n let EmploymentsEntries;\r\n let wagesID;\r\n let CheckBoxEntries;\r\n let vacationSickChk;\r\n let retirementChk;\r\n let medicialChk;\r\n let DiscountChk;\r\n let otherChk;\r\n let otherValue;\r\n let isOverLapRecord = false;\r\n let consumersID;\r\n let name;\r\n let positionName;\r\n let selectedConsumersName;\r\n let eligibleBenefits;\r\n\r\n //CheckBoxs\r\n let eligibleBenefitschkBox;\r\n let vacationSickchkBox;\r\n let medicalVisionchkbox;\r\n let retirementchkBox;\r\n let empDiscountchkBox;\r\n let otherchkBox;\r\n let otherInput;\r\n\r\n async function init(positionId, Name, PositionName, SelectedConsumersName, ConsumersId) {\r\n PositionId = positionId;\r\n consumersID = ConsumersId;\r\n name = Name;\r\n positionName = PositionName;\r\n selectedConsumersName = SelectedConsumersName;\r\n if (PositionId != undefined) {\r\n EmploymentsEntries = await EmploymentAjax.getWagesEntriesAsync(PositionId);\r\n CheckBoxEntries = await EmploymentAjax.getWagesCheckboxEntriesAsync(PositionId);\r\n }\r\n }\r\n\r\n\r\n function getMarkup() {\r\n const wagesInfoWrap = document.createElement('div');\r\n wagesInfoWrap.classList.add('planSummary');\r\n\r\n if (PositionId != undefined) {\r\n const importantTables = buildNewWagesBenefitsForm();\r\n wagesInfoWrap.appendChild(importantTables);\r\n }\r\n else {\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Wages & Benefits';\r\n heading.classList.add('sectionHeading');\r\n wagesInfoWrap.appendChild(heading);\r\n }\r\n return wagesInfoWrap;\r\n }\r\n\r\n function buildNewWagesBenefitsForm() {\r\n const wagesDiv = document.createElement('div');\r\n wagesDiv.classList.add('additionalQuestionWrap');\r\n otherInputText = '';\r\n\r\n vacationSickChk = CheckBoxEntries.getWagesCheckboxEntriesResult[0].vacationSick;\r\n retirementChk = CheckBoxEntries.getWagesCheckboxEntriesResult[0].retirement;\r\n medicialChk = CheckBoxEntries.getWagesCheckboxEntriesResult[0].medical;\r\n DiscountChk = CheckBoxEntries.getWagesCheckboxEntriesResult[0].empDiscount;\r\n otherChk = CheckBoxEntries.getWagesCheckboxEntriesResult[0].other;\r\n otherValue = CheckBoxEntries.getWagesCheckboxEntriesResult[0].otherText;\r\n eligibleBenefits = CheckBoxEntries.getWagesCheckboxEntriesResult[0].eligibleBenefits;\r\n\r\n eligibleBenefitschkBox = input.buildCheckbox({\r\n text: 'Eligible For Benefits',\r\n id: 'chkEligibleBenefits',\r\n isChecked: eligibleBenefits == 'Y' ? true : false,\r\n style: 'secondary',\r\n callback: event => {\r\n saveWagesChecked('EligibleForBenifit', event.target.checked, null);\r\n eligibleBenefits = event.target.checked == true ? 'Y' : 'N';\r\n if (event.target.checked == false) {\r\n checkBoxValidation();\r\n }\r\n disableCheckBox();\r\n }\r\n });\r\n\r\n vacationSickchkBox = input.buildCheckbox({\r\n text: 'Vacation/Sick',\r\n id: 'chkVacationSick',\r\n isChecked: vacationSickChk == 'Y' ? true : false,\r\n style: 'secondary',\r\n callback: () => saveWagesChecked('VacationSick', event.target.checked, null),\r\n });\r\n\r\n medicalVisionchkbox = input.buildCheckbox({\r\n text: 'Medical/Dental/Vision',\r\n id: 'chkmedicalVision',\r\n isChecked: medicialChk == 'Y' ? true : false,\r\n style: 'secondary',\r\n callback: () => saveWagesChecked('Medical', event.target.checked, null),\r\n });\r\n\r\n retirementchkBox = input.buildCheckbox({\r\n text: 'Retirement',\r\n id: 'chkRetirement',\r\n isChecked: retirementChk == 'Y' ? true : false,\r\n style: 'secondary',\r\n callback: () => saveWagesChecked('Retirement', event.target.checked, null),\r\n });\r\n\r\n empDiscountchkBox = input.buildCheckbox({\r\n text: 'Employee Discount',\r\n id: 'chkEmpDiscount',\r\n isChecked: DiscountChk == 'Y' ? true : false,\r\n style: 'secondary',\r\n callback: () => saveWagesChecked('empDiscount', event.target.checked, null),\r\n });\r\n\r\n otherchkBox = input.buildCheckbox({\r\n text: 'Other',\r\n id: 'chkOther',\r\n isChecked: otherChk == 'Y' ? true : false,\r\n style: 'secondary',\r\n callback: () => otherChecked(event.target.checked),\r\n });\r\n\r\n otherInput = input.build({\r\n type: 'text',\r\n id: 'otherInput',\r\n style: 'secondary',\r\n value: otherValue,\r\n });\r\n\r\n NEW_WAGES_BTN = button.build({\r\n text: '+ NEW WAGES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addWagesPopupBtn()\r\n });\r\n WagesEntriesTable = buildWagesEntriesTable();\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Wages & Benefits
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n if ($.session.EmploymentUpdate) {\r\n addNewCardBody.appendChild(NEW_WAGES_BTN);\r\n }\r\n\r\n addNewCardBody.appendChild(WagesEntriesTable);\r\n\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"headline\");\r\n consumerNameDisplay.innerHTML = `

    ${'Benefits'}

    `;\r\n consumerNameDisplay.style.marginTop = '20px';\r\n addNewCardBody.appendChild(consumerNameDisplay);\r\n\r\n var chk1Div = document.createElement('div');\r\n chk1Div.style.marginTop = '20px';\r\n chk1Div.appendChild(eligibleBenefitschkBox);\r\n addNewCardBody.appendChild(chk1Div);\r\n\r\n var chkDiv = document.createElement('div');\r\n chkDiv.style.marginTop = '20px'\r\n chkDiv.appendChild(vacationSickchkBox);\r\n addNewCardBody.appendChild(chkDiv);\r\n\r\n\r\n var chkDiv1 = document.createElement('div');\r\n chkDiv1.appendChild(medicalVisionchkbox);\r\n addNewCardBody.appendChild(chkDiv1);\r\n\r\n var chkDiv2 = document.createElement('div');\r\n chkDiv2.appendChild(retirementchkBox);\r\n addNewCardBody.appendChild(chkDiv2);\r\n\r\n var chkDiv3 = document.createElement('div');\r\n chkDiv3.appendChild(empDiscountchkBox);\r\n addNewCardBody.appendChild(chkDiv3);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('employmentMsgWrap');\r\n btnWrap.appendChild(otherchkBox);\r\n otherInput.style.width = '80%';\r\n otherInput.style.marginLeft = '2%';\r\n btnWrap.appendChild(otherInput);\r\n addNewCardBody.appendChild(btnWrap);\r\n\r\n wagesDiv.appendChild(column1);\r\n eventListeners();\r\n disableCheckBox();\r\n return wagesDiv;\r\n\r\n }\r\n\r\n function eventListeners() {\r\n otherInput.addEventListener('focusout', event => {\r\n if (!otherInput.classList.contains('disabled')) {\r\n otherInputText = event.target.value;\r\n saveWagesChecked('other', true, otherInputText);\r\n }\r\n });\r\n }\r\n\r\n function disableCheckBox() {\r\n if ($.session.EmploymentUpdate && eligibleBenefits == 'Y') {\r\n vacationSickchkBox.classList.remove('disabled');\r\n medicalVisionchkbox.classList.remove('disabled');\r\n retirementchkBox.classList.remove('disabled');\r\n empDiscountchkBox.classList.remove('disabled');\r\n otherchkBox.classList.remove('disabled');\r\n if (otherChk == 'Y') {\r\n otherInput.classList.remove('disabled');\r\n } else {\r\n otherInput.classList.add('disabled');\r\n }\r\n }\r\n else {\r\n vacationSickchkBox.classList.add('disabled');\r\n medicalVisionchkbox.classList.add('disabled');\r\n retirementchkBox.classList.add('disabled');\r\n empDiscountchkBox.classList.add('disabled');\r\n otherchkBox.classList.add('disabled');\r\n otherInput.classList.add('disabled');\r\n }\r\n }\r\n\r\n function buildWagesEntriesTable() {\r\n\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'employmentCommonTable',\r\n columnHeadings: ['Avg Hours Per Week', 'Avg Wages Per Week', 'Start Date', 'End Date'],\r\n endIcon: $.session.EmploymentDelete == true ? true : false,\r\n };\r\n\r\n let tableData = EmploymentsEntries.getWagesEntriesResult.map((entry) => ({\r\n values: [entry.hoursPerWeek, '$' + parseFloat(entry.wagesPerHour).toFixed(2), moment(entry.startDate).format('MM/DD/YYYY'), entry.endDate == '' ? '' : moment(entry.endDate).format('MM/DD/YYYY')],\r\n attributes: [{ key: 'wagesId', value: entry.wagesId }],\r\n onClick: (e) => {\r\n if ($.session.EmploymentUpdate) {\r\n handleAccountTableEvents(e.target.attributes.wagesId.value)\r\n }\r\n },\r\n endIcon: $.session.EmploymentDelete == true ? `${icons['delete']}` : '',\r\n endIconCallback: (e) => {\r\n deleteWagesBenefitsPOPUP(entry.wagesId);\r\n },\r\n }));\r\n const oTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = oTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'number'); // Avg Hours Per Week\r\n headers[1].setAttribute('data-type', 'amount'); // Avg Wages Per Week \r\n headers[2].setAttribute('data-type', 'date'); // Start Date\r\n headers[3].setAttribute('data-type', 'date'); // End Date \r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function handleAccountTableEvents(wagesId) {\r\n addWagesPopupBtn(wagesId)\r\n }\r\n\r\n function deleteWagesBenefitsPOPUP(wagesId) {\r\n const confirmPopup = POPUP.build({\r\n hideX: true,\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n deleteWagesBenefits(wagesId, confirmPopup);\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n\r\n message.innerText = 'Are you sure you would like to remove this Wage & Benefit record?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n function deleteWagesBenefits(wagesId, confirmPopup) {\r\n EmploymentAjax.deleteWagesBenefits(\r\n {\r\n wagesID: wagesId\r\n },\r\n function (results) {\r\n if (results = 'sucess') {\r\n POPUP.hide(confirmPopup);\r\n NewEmployment.refreshEmployment(PositionId, name, positionName, selectedConsumersName, consumersID, tabPositionIndex = 1);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function addWagesPopupBtn(wagesId) {\r\n if (wagesId == 0 || wagesId == undefined) {\r\n hoursWeek = '';\r\n hoursWages = '';\r\n startDate = '';\r\n endDate = '';\r\n }\r\n else {\r\n let empValue = EmploymentsEntries.getWagesEntriesResult.find(x => x.wagesId == wagesId);\r\n hoursWeek = empValue.hoursPerWeek;\r\n hoursWages = parseFloat(empValue.wagesPerHour).toFixed(2);\r\n startDate = moment(empValue.startDate).format('YYYY-MM-DD');\r\n endDate = empValue.endDate == '' ? '' : moment(empValue.endDate).format('YYYY-MM-DD');\r\n }\r\n\r\n\r\n addWagesPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n const heading = document.createElement('h2');\r\n heading.style.marginTop = '-20px';\r\n heading.style.marginBottom = '20px';\r\n if (wagesId) {\r\n heading.innerText = 'Update Wage/Hours';\r\n wagesID = wagesId;\r\n }\r\n else {\r\n heading.innerText = 'Add Wage/Hours';\r\n wagesID = 0;\r\n }\r\n\r\n\r\n // dropdowns & inputs\r\n weekHours = input.build({\r\n id: 'weekHours',\r\n type: 'text', \r\n label: 'Hours Per Week',\r\n style: 'secondary',\r\n value: hoursWeek, \r\n });\r\n\r\n wagesHours = input.build({\r\n id: 'wagesHours',\r\n type: 'text',\r\n label: 'Wages Per Hour',\r\n style: 'secondary',\r\n value: '$' + hoursWages,\r\n });\r\n\r\n newStartDate = input.build({\r\n id: 'newStartDate',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n value: startDate,\r\n });\r\n\r\n newEndDate = input.build({\r\n id: 'newEndDate',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n value: endDate,\r\n });\r\n\r\n APPLY_BTN = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n addWagesPopup.appendChild(heading);\r\n\r\n addWagesPopup.appendChild(weekHours);\r\n addWagesPopup.appendChild(wagesHours);\r\n addWagesPopup.appendChild(newStartDate);\r\n addWagesPopup.appendChild(newEndDate);\r\n\r\n\r\n var confirmMessage = document.createElement('div');\r\n confirmMessage.innerHTML = `

    `;\r\n addWagesPopup.appendChild(confirmMessage);\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n if ($.session.EmploymentUpdate) {\r\n popupbtnWrap.appendChild(APPLY_BTN);\r\n }\r\n popupbtnWrap.appendChild(CANCEL_BTN);\r\n addWagesPopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(addWagesPopup);\r\n PopupEventListeners();\r\n checkRequiredFieldsOfPopup();\r\n }\r\n\r\n function PopupEventListeners() {\r\n weekHours.addEventListener('input', event => {\r\n hoursWeek = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(hoursWeek)) {\r\n document.getElementById('weekHours').value = '';\r\n }\r\n else if (hoursWeek.includes('.') && (hoursWeek.match(/\\./g).length > 1 || hoursWeek.toString().split('.')[1].length > 2)) {\r\n document.getElementById('weekHours').value = '';\r\n }\r\n if (hoursWeek.includes('-') || hoursWeek.includes(' ')) {\r\n document.getElementById('weekHours').value = '';\r\n }\r\n checkRequiredFieldsOfPopup();\r\n });\r\n\r\n wagesHours.addEventListener('input', event => {\r\n hoursWages = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(hoursWages)) {\r\n document.getElementById('wagesHours').value = '$';\r\n }\r\n else if (hoursWages.includes('.') && (hoursWages.match(/\\./g).length > 1 || hoursWages.toString().split('.')[1].length > 2)) {\r\n document.getElementById('wagesHours').value = '$';\r\n }\r\n if (hoursWages.includes('-') || hoursWages.includes(' ')) {\r\n document.getElementById('wagesHours').value = '$';\r\n }\r\n if (hoursWages.includes('$') && hoursWages.match(/\\$/g).length > 1) {\r\n document.getElementById('wagesHours').value = '$';\r\n } \r\n checkRequiredFieldsOfPopup();\r\n });\r\n newStartDate.addEventListener('input', event => {\r\n startDate = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n newEndDate.addEventListener('input', event => {\r\n endDate = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n saveNewWagesPopup();\r\n }\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(addWagesPopup);\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfPopup() {\r\n var weekPerHour = weekHours.querySelector('#weekHours');\r\n var wagesPerHour = wagesHours.querySelector('#wagesHours');\r\n var startDate = newStartDate.querySelector('#newStartDate');\r\n var endDate = newEndDate.querySelector('#newEndDate');\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n\r\n if (weekPerHour.value === '' || weekPerHour.value.includes('-') || !reg.test(weekPerHour.value)) {\r\n weekHours.classList.add('errorPopup');\r\n } else {\r\n weekHours.classList.remove('errorPopup');\r\n }\r\n \r\n if (wagesPerHour.value === '' || wagesPerHour.value === '$' || wagesPerHour.value.includes('-') || !reg.test(wagesPerHour.value)) {\r\n wagesHours.classList.add('errorPopup');\r\n } else {\r\n wagesHours.classList.remove('errorPopup');\r\n } \r\n\r\n if (startDate.value === '' || (endDate.value != '' && startDate.value > endDate.value)) {\r\n newStartDate.classList.add('errorPopup');\r\n } else {\r\n newStartDate.classList.remove('errorPopup');\r\n }\r\n\r\n setBtnStatusOfPopup();\r\n }\r\n\r\n function setBtnStatusOfPopup() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function otherChecked(event) {\r\n if ($.session.EmploymentUpdate) {\r\n if (event == true) {\r\n otherInput.classList.remove('disabled');\r\n saveWagesChecked('other', true, '');\r\n } else {\r\n otherInput.classList.add('disabled');\r\n otherValue = '';\r\n otherInput.querySelector('#otherInput').value = '';\r\n saveWagesChecked('other', false, '');\r\n\r\n }\r\n }\r\n }\r\n\r\n async function saveNewWagesPopup() {\r\n const result = await EmploymentAjax.insertWagesAsync(hoursWeek, hoursWages.replace('$', ''), startDate, endDate, PositionId, wagesID, $.session.UserId);\r\n const { insertWagesResult } = result;\r\n var messagetext = document.getElementById('confirmMessage');\r\n messagetext.innerHTML = ``;\r\n if (insertWagesResult.wagesId == '-1') {\r\n messagetext.innerHTML = 'This record overlaps with an existing record. Changes cannot be saved.';\r\n messagetext.classList.add('password-error');\r\n }\r\n else {\r\n NewEmployment.refreshEmployment(PositionId, name, positionName, selectedConsumersName, consumersID, tabPositionIndex = 1);\r\n POPUP.hide(addWagesPopup);\r\n }\r\n\r\n }\r\n\r\n async function saveWagesChecked(chkboxName, event, textboxValue) {\r\n if ($.session.EmploymentUpdate) {\r\n let IsChacked = event == true ? 'Y' : 'N';\r\n const result = await EmploymentAjax.saveCheckboxWagesAsync(chkboxName, IsChacked, PositionId, textboxValue, $.session.UserId);\r\n const { saveCheckboxWagesResult } = result;\r\n }\r\n }\r\n\r\n function checkBoxValidation() {\r\n var vacationSick = vacationSickchkBox.querySelector('#chkVacationSick');\r\n var medicalVision = medicalVisionchkbox.querySelector('#chkmedicalVision');\r\n var retirement = retirementchkBox.querySelector('#chkRetirement');\r\n var empDiscount = empDiscountchkBox.querySelector('#chkEmpDiscount');\r\n var other = otherchkBox.querySelector('#chkOther');\r\n\r\n if (eligibleBenefits == 'N' && (vacationSick.checked || medicalVision.checked || retirement.checked || empDiscount.checked || other.checked)) {\r\n eligibleForBenifitConfirmPOPUP();\r\n }\r\n }\r\n\r\n function eligibleForBenifitConfirmPOPUP() {\r\n const confirmPopup = POPUP.build({\r\n hideX: true,\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n await saveWagesChecked('VacationSick', false, null);\r\n await saveWagesChecked('Medical', false, null);\r\n await saveWagesChecked('empDiscount', false, null);\r\n await saveWagesChecked('Retirement', false, null);\r\n await saveWagesChecked('Medical', false, null);\r\n await saveWagesChecked('other', false, '');\r\n\r\n vacationSickchkBox.querySelector('#chkVacationSick').checked = false;\r\n medicalVisionchkbox.querySelector('#chkmedicalVision').checked = false;\r\n retirementchkBox.querySelector('#chkRetirement').checked = false;\r\n empDiscountchkBox.querySelector('#chkEmpDiscount').checked = false;\r\n otherchkBox.querySelector('#chkOther').checked = false;\r\n otherInput.querySelector('#otherInput').value = '';\r\n disableCheckBox();\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n eligibleBenefits = 'Y';\r\n eligibleBenefitschkBox.querySelector('#chkEligibleBenefits').checked = true;\r\n saveWagesChecked('EligibleForBenifit', true, null);\r\n disableCheckBox();\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n\r\n message.innerText = 'All benefits that this person is eligible for will be removed. Do you want to continue?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n return {\r\n init,\r\n buildNewWagesBenefitsForm,\r\n getMarkup,\r\n };\r\n})(); ","const WorkSchedule = (() => {\r\n\r\n let workScheduleEntriesTable = [];\r\n let PositionId;\r\n let ScheduleEntries;\r\n let WorkScheduleID;\r\n let consumersID;\r\n let name;\r\n let positionName;\r\n let selectedConsumersName;\r\n let startTime;\r\n let endTime;\r\n let weekDaysSelection = [];\r\n let nameOfEvent;\r\n let toRemoveWeekName;\r\n let totalHours;\r\n let messagetext;\r\n\r\n async function init(positionId, Name, PositionName, SelectedConsumersName, ConsumersId) {\r\n PositionId = positionId;\r\n consumersID = ConsumersId;\r\n name = Name;\r\n positionName = PositionName;\r\n selectedConsumersName = SelectedConsumersName;\r\n if (PositionId != undefined) {\r\n ScheduleEntries = await EmploymentAjax.getWorkScheduleEntriesAsync(PositionId);\r\n if (ScheduleEntries.getWorkScheduleEntriesResult.length > 0)\r\n totalHours = ScheduleEntries.getWorkScheduleEntriesResult[0].totalHours;\r\n }\r\n }\r\n\r\n function getMarkup() {\r\n const workScheduleWrap = document.createElement('div');\r\n workScheduleWrap.classList.add('planSummary');\r\n\r\n if (PositionId != undefined) {\r\n const importantTables = buildNewWorkScheduleForm();\r\n workScheduleWrap.appendChild(importantTables);\r\n }\r\n else {\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Work Schedule';\r\n heading.classList.add('sectionHeading');\r\n workScheduleWrap.appendChild(heading);\r\n }\r\n\r\n\r\n\r\n return workScheduleWrap;\r\n }\r\n\r\n function buildNewWorkScheduleForm() {\r\n const workScheduleDiv = document.createElement('div');\r\n workScheduleDiv.classList.add('additionalQuestionWrap');\r\n\r\n NEW_SHIFT_BTN = button.build({\r\n text: '+ ADD NEW SHIFT',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addWorkSchedulePopupBtn(0, 'Add')\r\n });\r\n workScheduleEntriesTable = buildworkScheduleEntriesTable();\r\n\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Work Schedule
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n if ($.session.EmploymentUpdate) {\r\n addNewCardBody.appendChild(NEW_SHIFT_BTN);\r\n }\r\n addNewCardBody.appendChild(workScheduleEntriesTable);\r\n const totalHourDiv = document.createElement(\"div\");\r\n totalHourDiv.classList.add(\"totalHour\"); \r\n totalHourDiv.innerHTML = `
    Total Hours: ${totalHours}
    `;\r\n addNewCardBody.appendChild(totalHourDiv); \r\n\r\n workScheduleDiv.appendChild(column1);\r\n return workScheduleDiv;\r\n }\r\n\r\n\r\n function buildworkScheduleEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'employmentWorkScheduleTable',\r\n columnHeadings: ['Day Of Week', 'Start Time', 'End Time', 'Hours'],\r\n endIcon: $.session.EmploymentUpdate == true ? true : false,\r\n secondendIcon: $.session.EmploymentDelete == true ? true : false,\r\n };\r\n\r\n let tableData = ScheduleEntries.getWorkScheduleEntriesResult.map((entry) => ({\r\n values: [entry.dayOfWeek == 1 ? 'Sunday' : entry.dayOfWeek == 2 ? 'Monday' : entry.dayOfWeek == 3 ? 'Tuesday' : entry.dayOfWeek == 4 ? 'Wednesday' : entry.dayOfWeek == 5 ? 'Thursday' : entry.dayOfWeek == 6 ? 'Friday' : entry.dayOfWeek == 7 ? 'Saturday' : '', UTIL.convertFromMilitary(entry.startTime), UTIL.convertFromMilitary(entry.endTime), entry.timeInHours],\r\n attributes: [{ key: 'WorkScheduleId', value: entry.WorkScheduleId }, { key: 'data-plan-active', value: entry.startTime == '' ? 'true' : 'false' }, { key: 'deleteHide', value: $.session.EmploymentDelete == true ? 'true' : 'false' }, { key: 'copyHide', value: $.session.EmploymentUpdate == true ? 'true' : 'false' }],\r\n onClick: (e) => {\r\n if ($.session.EmploymentUpdate && e.target.attributes[2].value == 'false') {\r\n addWorkSchedulePopupBtn(e.target.attributes.WorkScheduleId.value, 'Edit')\r\n }\r\n },\r\n endIcon: $.session.EmploymentUpdate == true && entry.dayOfWeek != '' ? `${icons['copy']}` : `${icons['Empty']}`,\r\n endIconCallback: (e) => {\r\n addWorkSchedulePopupBtn(entry.WorkScheduleId, 'Copy');\r\n },\r\n secondendIcon: $.session.EmploymentDelete == true && entry.dayOfWeek != '' ? `${icons['delete']}` : `${icons['Empty']}`,\r\n secondendIconCallback: (e) => {\r\n deleteWorkSchedulePOPUP(entry.WorkScheduleId);\r\n },\r\n }));\r\n const oTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = oTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Day Of Week\r\n headers[1].setAttribute('data-type', 'date'); // Start Time\r\n headers[2].setAttribute('data-type', 'date'); //End Date \r\n headers[3].setAttribute('data-type', 'number'); // Hours \r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n \r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function deleteWorkSchedulePOPUP(WorkScheduleId) {\r\n const confirmPopup = POPUP.build({\r\n hideX: true,\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n deleteWorkSchedule(WorkScheduleId, confirmPopup);\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n\r\n message.innerText = 'Are you sure you would like to remove this Work Schedule record?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n function deleteWorkSchedule(WorkScheduleId, confirmPopup) {\r\n EmploymentAjax.deleteWorkSchedule(\r\n {\r\n WorkScheduleID: WorkScheduleId\r\n },\r\n function (results) {\r\n if (results = 'sucess') {\r\n POPUP.hide(confirmPopup);\r\n NewEmployment.refreshEmployment(PositionId, name, positionName, selectedConsumersName, consumersID, tabPositionIndex = 3);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function addWorkSchedulePopupBtn(WorkScheduleId, eventName) {\r\n if (WorkScheduleId == 0 || WorkScheduleId == undefined) {\r\n dayOfWeek = '';\r\n startTime = '';\r\n endTime = '';\r\n }\r\n else {\r\n let workScheduleValue = ScheduleEntries.getWorkScheduleEntriesResult.find(x => x.WorkScheduleId == WorkScheduleId);\r\n dayOfWeek = workScheduleValue.dayOfWeek;\r\n toRemoveWeekName = workScheduleValue.dayOfWeek;\r\n startTime = workScheduleValue.startTime;\r\n endTime = workScheduleValue.endTime;\r\n }\r\n addWorkSchedulePopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n const heading = document.createElement('h2');\r\n heading.style.marginTop = '-20px';\r\n heading.style.marginBottom = '15px';\r\n if (eventName == 'Edit') {\r\n heading.innerText = 'Update Shift';\r\n WorkScheduleID = WorkScheduleId;\r\n nameOfEvent = 'Edit'\r\n }\r\n else if (eventName == 'Copy') {\r\n heading.innerText = 'Copy Shift';\r\n WorkScheduleID = WorkScheduleId;\r\n nameOfEvent = 'Copy'\r\n dayOfWeek = '';\r\n }\r\n else {\r\n heading.innerText = 'New Shift';\r\n WorkScheduleID = 0;\r\n nameOfEvent = 'Add'\r\n }\r\n\r\n // Checkbox\r\n var checkboxlable = document.createElement('div');\r\n checkboxlable.style.marginBottom = '10px';\r\n checkboxlable.style.marginLeft = '5px';\r\n checkboxlable.innerHTML = `

    Day(s) Of Week

    `;\r\n\r\n var sundaylable = document.createElement('div');\r\n sundaylable.classList.add('chkWeekDay');\r\n sundaylable.innerHTML = `Sun`;\r\n sundaychkBox = input.buildCheckbox({\r\n id: 'sundaychkBox',\r\n isChecked: false,\r\n style: 'secondary',\r\n callback: () => checkRequiredFieldsOfPopup(),\r\n });\r\n var mondaylable = document.createElement('div');\r\n mondaylable.classList.add('chkWeekDay');\r\n mondaylable.innerHTML = `Mon`;\r\n mondaychkBox = input.buildCheckbox({\r\n id: 'mondaychkBox',\r\n isChecked: false,\r\n style: 'secondary',\r\n callback: () => checkRequiredFieldsOfPopup(),\r\n });\r\n var tuesdaylable = document.createElement('div');\r\n tuesdaylable.classList.add('chkWeekDay');\r\n tuesdaylable.innerHTML = `Tue`;\r\n tuesdaychkBox = input.buildCheckbox({\r\n id: 'tuesdaychkBox',\r\n isChecked: false,\r\n style: 'secondary',\r\n callback: () => checkRequiredFieldsOfPopup(),\r\n });\r\n var wednesdaylable = document.createElement('div');\r\n wednesdaylable.classList.add('chkWeekDay');\r\n wednesdaylable.innerHTML = `Wed`;\r\n wednesdaychkBox = input.buildCheckbox({\r\n id: 'wednesdaychkBox',\r\n isChecked: false,\r\n style: 'secondary',\r\n callback: () => checkRequiredFieldsOfPopup(),\r\n });\r\n var thursdaylable = document.createElement('div');\r\n thursdaylable.classList.add('chkWeekDay');\r\n thursdaylable.innerHTML = `Thu`;\r\n thursdaychkBox = input.buildCheckbox({\r\n id: 'thursdaychkBox',\r\n isChecked: false,\r\n style: 'secondary',\r\n callback: () => checkRequiredFieldsOfPopup(),\r\n });\r\n var fridaylable = document.createElement('div');\r\n fridaylable.classList.add('chkWeekDay');\r\n fridaylable.innerHTML = `Fri`;\r\n fridaychkBox = input.buildCheckbox({\r\n id: 'fridaychkBox',\r\n isChecked: false,\r\n style: 'secondary',\r\n callback: () => checkRequiredFieldsOfPopup(),\r\n });\r\n var saturdaylable = document.createElement('div');\r\n saturdaylable.classList.add('chkWeekDay');\r\n saturdaylable.innerHTML = `Sat`;\r\n saturdaychkBox = input.buildCheckbox({\r\n id: 'saturdaychkBox',\r\n isChecked: false,\r\n style: 'secondary',\r\n callback: () => checkRequiredFieldsOfPopup(),\r\n });\r\n\r\n // dropdowns & inputs\r\n dayOfWeekDropdown = dropdown.build({\r\n id: 'dayOfWeekDropdown',\r\n label: \"Day Of Week\",\r\n dropdownId: \"dayOfWeekDropdown\",\r\n value: (dayOfWeek) ? dayOfWeek : '',\r\n });\r\n\r\n NewStartTime = input.build({\r\n id: 'NewStartTime',\r\n type: 'time',\r\n label: 'Start Time',\r\n style: 'secondary',\r\n value: startTime,\r\n });\r\n\r\n NewEndTime = input.build({\r\n id: 'NewEndTime',\r\n type: 'time',\r\n label: 'End Time',\r\n style: 'secondary',\r\n value: endTime,\r\n });\r\n\r\n APPLY_BTN = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n addWorkSchedulePopup.appendChild(heading);\r\n\r\n if (WorkScheduleId == 0 || WorkScheduleId == undefined) {\r\n var dayChkWrap = document.createElement('div');\r\n sundaylable.appendChild(sundaychkBox);\r\n mondaylable.appendChild(mondaychkBox);\r\n tuesdaylable.appendChild(tuesdaychkBox);\r\n wednesdaylable.appendChild(wednesdaychkBox);\r\n thursdaylable.appendChild(thursdaychkBox);\r\n fridaylable.appendChild(fridaychkBox);\r\n saturdaylable.appendChild(saturdaychkBox);\r\n addWorkSchedulePopup.appendChild(checkboxlable);\r\n dayChkWrap.classList.add('chkWrap');\r\n dayChkWrap.appendChild(sundaylable);\r\n dayChkWrap.appendChild(mondaylable);\r\n dayChkWrap.appendChild(tuesdaylable);\r\n dayChkWrap.appendChild(wednesdaylable);\r\n dayChkWrap.appendChild(thursdaylable);\r\n dayChkWrap.appendChild(fridaylable);\r\n dayChkWrap.appendChild(saturdaylable);\r\n addWorkSchedulePopup.appendChild(dayChkWrap);\r\n } else {\r\n addWorkSchedulePopup.appendChild(dayOfWeekDropdown);\r\n }\r\n\r\n\r\n var timebtnWrap = document.createElement('div');\r\n timebtnWrap.classList.add('btnWrap');\r\n NewStartTime.style.marginLeft = '1%';\r\n NewStartTime.style.width = '48%';\r\n timebtnWrap.appendChild(NewStartTime);\r\n NewEndTime.style.marginLeft = '2%';\r\n NewEndTime.style.width = '48%';\r\n timebtnWrap.appendChild(NewEndTime);\r\n addWorkSchedulePopup.appendChild(timebtnWrap);\r\n\r\n var confirmMessage = document.createElement('div');\r\n confirmMessage.innerHTML = `

    `;\r\n addWorkSchedulePopup.appendChild(confirmMessage);\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n if ($.session.EmploymentUpdate) {\r\n popupbtnWrap.appendChild(APPLY_BTN);\r\n }\r\n popupbtnWrap.appendChild(CANCEL_BTN);\r\n addWorkSchedulePopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(addWorkSchedulePopup);\r\n PopupEventListeners();\r\n populateWeekDaysDropdown();\r\n checkRequiredFieldsOfPopup();\r\n }\r\n\r\n function PopupEventListeners() {\r\n dayOfWeekDropdown.addEventListener('change', event => {\r\n dayOfWeek = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n NewStartTime.addEventListener('change', event => {\r\n startTime = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n NewEndTime.addEventListener('change', event => {\r\n endTime = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n saveNewWagesPopup();\r\n }\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(addWorkSchedulePopup);\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfPopup() {\r\n var weekDay = dayOfWeekDropdown.querySelector('#dayOfWeekDropdown');\r\n var timeEnd = NewEndTime.querySelector('#NewEndTime');\r\n var timeStart = NewStartTime.querySelector('#NewStartTime');\r\n messagetext = document.getElementById('confirmMessage'); \r\n messagetext.innerHTML = ``; \r\n if (nameOfEvent == 'Add') {\r\n var sundaychk = sundaychkBox.querySelector('#sundaychkBox');\r\n var mondaychk = mondaychkBox.querySelector('#mondaychkBox');\r\n var tuesdaychk = tuesdaychkBox.querySelector('#tuesdaychkBox');\r\n var wednesdaychk = wednesdaychkBox.querySelector('#wednesdaychkBox');\r\n var thursdaychk = thursdaychkBox.querySelector('#thursdaychkBox');\r\n var fridaychk = fridaychkBox.querySelector('#fridaychkBox');\r\n var saturdaychk = saturdaychkBox.querySelector('#saturdaychkBox');\r\n\r\n var chklable = document.getElementById('checkboxlable');\r\n\r\n if (!sundaychk.checked && !mondaychk.checked && !tuesdaychk.checked && !wednesdaychk.checked && !thursdaychk.checked && !fridaychk.checked && !saturdaychk.checked) {\r\n chklable.classList.add('errorPopup');\r\n chklable.classList.add('password-error');\r\n }\r\n else {\r\n chklable.classList.remove('errorPopup');\r\n chklable.classList.remove('password-error');\r\n }\r\n } else if (nameOfEvent == 'Edit') {\r\n if (dayOfWeek === '') {\r\n dayOfWeekDropdown.classList.add('errorPopup');\r\n } else {\r\n dayOfWeekDropdown.classList.remove('errorPopup');\r\n }\r\n }\r\n else {\r\n if (weekDay.value === '') {\r\n dayOfWeekDropdown.classList.add('errorPopup');\r\n } else {\r\n dayOfWeekDropdown.classList.remove('errorPopup');\r\n }\r\n\r\n }\r\n\r\n if (timeEnd.value === '' || timeStart.value > timeEnd.value) {\r\n NewEndTime.classList.add('errorPopup');\r\n } else {\r\n NewEndTime.classList.remove('errorPopup');\r\n }\r\n\r\n if (timeStart.value === '') {\r\n NewStartTime.classList.add('errorPopup');\r\n } else {\r\n NewStartTime.classList.remove('errorPopup');\r\n }\r\n\r\n setBtnStatusOfPopup();\r\n }\r\n\r\n function setBtnStatusOfPopup() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n\r\n function populateWeekDaysDropdown() {\r\n const dayOfWeekDropdownData = ([\r\n { id: 1, value: 1, text: 'Sunday' },\r\n { id: 2, value: 2, text: 'Monday' },\r\n { id: 3, value: 3, text: 'Tuesday' },\r\n { id: 4, value: 4, text: 'Wednesday' },\r\n { id: 5, value: 5, text: 'Thursday' },\r\n { id: 6, value: 6, text: 'Friday' },\r\n { id: 7, value: 7, text: 'Saturday' },\r\n\r\n ]);\r\n dayOfWeekDropdownData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"dayOfWeekDropdown\", dayOfWeekDropdownData, dayOfWeek);\r\n }\r\n\r\n\r\n async function saveNewWagesPopup() {\r\n weekDaysSelection = [];\r\n if (nameOfEvent == 'Add') {\r\n if (sundaychkBox.querySelector('#sundaychkBox').checked) weekDaysSelection.push(1)\r\n if (mondaychkBox.querySelector('#mondaychkBox').checked) weekDaysSelection.push(2)\r\n if (tuesdaychkBox.querySelector('#tuesdaychkBox').checked) weekDaysSelection.push(3)\r\n if (wednesdaychkBox.querySelector('#wednesdaychkBox').checked) weekDaysSelection.push(4)\r\n if (thursdaychkBox.querySelector('#thursdaychkBox').checked) weekDaysSelection.push(5)\r\n if (fridaychkBox.querySelector('#fridaychkBox').checked) weekDaysSelection.push(6)\r\n if (saturdaychkBox.querySelector('#saturdaychkBox').checked) weekDaysSelection.push(7)\r\n } else if (nameOfEvent == 'Edit') {\r\n weekDaysSelection.push(dayOfWeek)\r\n } else {\r\n weekDaysSelection.push(dayOfWeek)\r\n WorkScheduleID = 0;\r\n }\r\n\r\n const result = await EmploymentAjax.insertWorkScheduleAsync(weekDaysSelection, startTime, endTime, PositionId, WorkScheduleID, $.session.UserId);\r\n const { insertWorkScheduleResult } = result;\r\n\r\n messagetext = document.getElementById('confirmMessage');\r\n messagetext.innerHTML = ``;\r\n if (insertWorkScheduleResult.WorkScheduleId == '-1') {\r\n messagetext.innerHTML = 'This record overlaps with an existing record. Changes cannot be saved.';\r\n messagetext.classList.add('password-error');\r\n }\r\n else {\r\n NewEmployment.refreshEmployment(PositionId, name, positionName, selectedConsumersName, consumersID, tabPositionIndex = 3);\r\n POPUP.hide(addWorkSchedulePopup);\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n buildNewWorkScheduleForm,\r\n getMarkup,\r\n };\r\n})(); ","const esignatures = (function () {\r\n let questions;\r\n let submitBtn;\r\n let esignerData = {};\r\n let formData = {};\r\n let ssaDropdownData;\r\n let providerDropdownData;\r\n let paidSupportProviders;\r\n let progressDiv;\r\n let viewerContainer;\r\n let formContainer;\r\n\r\n function generateReportDownload(tempUserId) {\r\n esignaturesAjax.downloadReportAfterSigning({ tempUserId }, () => {\r\n const arr = success._buffer;\r\n const byteArray = new Uint8Array(arr);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser === 'Explorer' || $.session.browser === 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n const fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n\r\n reports.handledProcessedReport();\r\n return 'success';\r\n });\r\n }\r\n\r\n function setSSADropdownInitialWidth(ssaDropdown, csChangeMindSSAPeopleId) {\r\n //const ssaDropdown = popup.querySelector('#isp_ic_ssaDropdown');\r\n ssaDropdown.value = csChangeMindSSAPeopleId;\r\n let ssaWidth = 150;\r\n if (ssaDropdown.selectedIndex !== -1) {\r\n ssaWidth = ssaDropdown.options[ssaDropdown.selectedIndex].text.length * 10;\r\n }\r\n ssaDropdown.style.width = `${ssaWidth}px`;\r\n}\r\nfunction setVendorDropdownInitialWidth(vendorContactDropdown, csContactProviderVendorId) {\r\n //const vendorContactDropdown = popup.querySelector('#isp_ic_vendorContactDropdown');\r\n vendorContactDropdown.value = csContactProviderVendorId;\r\n const vendorWidth =\r\n (vendorContactDropdown.options[vendorContactDropdown.selectedIndex].text.length + 3) * 10;\r\n\r\n vendorContactDropdown.style.width = `${vendorWidth}px`;\r\n}\r\n\r\nfunction updateSSADropdownWidth(popup) {\r\n const ssaDropdown = popup.querySelector('#isp_ic_ssaDropdown');\r\n const hidden_opt = popup.querySelector('#isp_ic_ssaDropdown__width_tmp_option');\r\n hidden_opt.innerHTML = ssaDropdown.options[ssaDropdown.selectedIndex].textContent;\r\n const hidden_sel = popup.querySelector('#isp_ic_ssaDropdown__width_tmp_select');\r\n hidden_sel.style.display = 'initial';\r\n ssaDropdown.style.width = hidden_sel.clientWidth + 22 + 'px';\r\n hidden_sel.style.display = 'none';\r\n}\r\nfunction updateVendorDropdownWidth(popup) {\r\n const vendorContactDropdown = popup.querySelector('#isp_ic_vendorContactDropdown');\r\n const hidden_opt = popup.querySelector('#isp_ic_vendorContactDropdown__width_tmp_option');\r\n hidden_opt.innerHTML =\r\n vendorContactDropdown.options[vendorContactDropdown.selectedIndex].textContent;\r\n const hidden_sel = popup.querySelector('#isp_ic_vendorContactDropdown__width_tmp_select');\r\n hidden_sel.style.display = 'initial';\r\n vendorContactDropdown.style.width = hidden_sel.clientWidth + 22 + 'px';\r\n hidden_sel.style.display = 'none';\r\n}\r\n\r\n\r\n async function displayFormPopup(tempUserId) {\r\n progressDiv = document.createElement('div');\r\n progressDiv.classList.add('test');\r\n progressDiv.style.height = 'auto';\r\n\r\n const popup = document.createElement('div');\r\n popup.id = 'formPopup';\r\n popup.classList.add('popup');\r\n\r\n viewerContainer = document.createElement('div');\r\n viewerContainer.id = 'viewer';\r\n viewerContainer.style.width = '800px';\r\n viewerContainer.style.height = '500px';\r\n viewerContainer.style.margin = '0';\r\n\r\n popup.appendChild(viewerContainer);\r\n\r\n formContainer = document.createElement('div');\r\n formContainer.classList.add('formContainer');\r\n\r\n function buildDissentSection() {\r\n const dissentWrap = document.createElement('div');\r\n dissentWrap.classList.add('dissentWrap');\r\n const dissentTitle = document.createElement('h3');\r\n dissentTitle.classList.add('h3Title');\r\n dissentTitle.innerText = 'Dissenting Opinion';\r\n\r\n dissentAreaDisagree = input.build({\r\n label: 'Area Team Member Disagrees',\r\n value: '',\r\n type: 'textarea',\r\n readonly: false,\r\n classNames: 'autosize',\r\n charLimit: 2500,\r\n forceCharLimit: true,\r\n callback: event => {\r\n formData.dissentAreaDisagree = event.target.value;\r\n },\r\n });\r\n\r\n dissentHowToAddress = input.build({\r\n label: 'How to Address',\r\n value: '',\r\n type: 'textarea',\r\n readonly: false,\r\n classNames: 'autosize',\r\n charLimit: 2500,\r\n forceCharLimit: true,\r\n callback: event => {\r\n formData.dissentHowToAddress = event.target.value;\r\n },\r\n });\r\n\r\n dissentWrap.appendChild(dissentTitle);\r\n dissentWrap.appendChild(dissentAreaDisagree);\r\n dissentWrap.appendChild(dissentHowToAddress);\r\n\r\n return dissentWrap;\r\n }\r\n\r\n function getVendorDropdownData() {\r\n const nonPaidSupportData = providerDropdownData.filter(\r\n provider => paidSupportProviders.indexOf(provider.vendorId) < 0,\r\n );\r\n const paidSupportData = providerDropdownData.filter(\r\n provider => paidSupportProviders.indexOf(provider.vendorId) >= 0,\r\n );\r\n const nonPaidSupportDropdownData = nonPaidSupportData.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n const paidSupportDropdownData = paidSupportData.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n return {\r\n paidSupport: paidSupportDropdownData,\r\n nonPaidSupport: nonPaidSupportDropdownData,\r\n };\r\n }\r\n function getSSADropdownData() {\r\n const data = ssaDropdownData.map(ssa => {\r\n return {\r\n value: ssa.id,\r\n text: ssa.name,\r\n };\r\n });\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n data.unshift({ value: '', text: '[SELECT A QIDP]' });\r\n } else {\r\n data.unshift({ value: '', text: '[SELECT AN SSA]' });\r\n }\r\n\r\n return data;\r\n }\r\n\r\n function populateDropdownSSA(ssaDropdown, csChangeMindSSAPeopleId) {\r\n const csChangeMindQuestionDropdownData = getSSADropdownData();\r\n\r\n dropdown.populate(ssaDropdown, csChangeMindQuestionDropdownData, csChangeMindSSAPeopleId);\r\n }\r\n\r\n function populateDropdownVendor(vendorDropdown, csContactProviderVendorId) {\r\n //* VENDOR DROPDOWN\r\n const contactQuestionDropdownData = getVendorDropdownData();\r\n const nonGroupedDropdownData = [{ value: '', text: '[SELECT A PROVIDER]' }];\r\n const paidSupportGroup = {\r\n groupLabel: 'Paid Support Providers',\r\n groupId: 'isp_ic_providerDropdown_paidSupportProviders',\r\n dropdownValues: contactQuestionDropdownData.paidSupport,\r\n };\r\n const nonPaidSupportGroup = {\r\n groupLabel: 'Other Providers',\r\n groupId: 'isp_ic_providerDropdown_nonPaidSupportProviders',\r\n dropdownValues: contactQuestionDropdownData.nonPaidSupport,\r\n };\r\n\r\n const groupDropdownData = [];\r\n if (contactQuestionDropdownData.paidSupport.length > 0) {\r\n groupDropdownData.push(paidSupportGroup);\r\n }\r\n\r\n groupDropdownData.push(nonPaidSupportGroup);\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: vendorDropdown,\r\n data: groupDropdownData,\r\n nonGroupedData: nonGroupedDropdownData,\r\n defaultVal: csContactProviderVendorId,\r\n });\r\n }\r\n\r\n function buildStandardQuestionSet() {\r\n const changeMindQuestion = document.createElement('div');\r\n changeMindQuestion.classList.add('changeMindQuestion');\r\n changeMindQuestion.classList.add('ic_questionContainer');\r\n\r\n //Question Text Element, Will contain dropdown too\r\n const csChangeMindQuestionText = document.createElement('div');\r\n csChangeMindQuestionText.classList.add('changeMindQuestionText');\r\n\r\n const csChangeMindQuestionDropdown = dropdown.inlineBuild({\r\n dropdownId: 'isp_ic_ssaDropdown',\r\n });\r\n\r\n populateDropdownSSA(csChangeMindQuestionDropdown, esignerData.ssaPeopleId);\r\n\r\n // Build Out Question with dropdown\r\n csChangeMindQuestionText.innerHTML = `I understand that I can change my mind at any time. I just need to let `;\r\n csChangeMindQuestionText.appendChild(csChangeMindQuestionDropdown);\r\n csChangeMindQuestionText.innerHTML += ` know.`;\r\n changeMindQuestion.appendChild(csChangeMindQuestionText);\r\n\r\n changeMindQuestion.addEventListener('change', event => {\r\n // if event.target.value = 'on' then it wont set the formdata value. 'on' means the radio was changed\r\n if (event.target.value !== 'on') {\r\n formData.csChangeMindSSAPeopleId = event.target.value;\r\n updateSSADropdownWidth(formContainer);\r\n validateForm();\r\n }\r\n });\r\n\r\n const csChangeMindRadioContainer = document.createElement('div');\r\n csChangeMindRadioContainer.classList.add('ic_questionRadioContainer', 'formError');\r\n ['Yes', 'No'].forEach(option => {\r\n const radio = input.buildRadio({\r\n id: `csChangeMind-${option}`,\r\n text: option,\r\n name: 'csChangeMind',\r\n callback: () => {\r\n formData.csChangeMind = option === 'Yes' ? 'Y' : 'N';\r\n csChangeMindRadioContainer.classList.remove('formError');\r\n validateForm();\r\n },\r\n });\r\n csChangeMindRadioContainer.appendChild(radio);\r\n });\r\n changeMindQuestion.appendChild(csChangeMindRadioContainer);\r\n\r\n const contactQuestion = document.createElement('div');\r\n contactQuestion.classList.add('contactQuestion');\r\n\r\n // Inner Wrap for just Dropdown and Radios *for safari\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('ic_questionContainer');\r\n\r\n //Question Text Element, Will contain dropdown too\r\n const contactQuestionText = document.createElement('div');\r\n contactQuestionText.classList.add('contactQuestionText');\r\n\r\n //SSA Inline Dropdown\r\n const csContactQuestionDropdown = dropdown.inlineBuild({\r\n dropdownId: 'isp_ic_vendorContactDropdown',\r\n });\r\n\r\n // populate\r\n populateDropdownVendor(csContactQuestionDropdown, esignerData.vendorId);\r\n\r\n contactQuestion.addEventListener('change', event => {\r\n // if event.target.value = 'on' then it wont set the formdata value. 'on' means the radio was changed\r\n if (event.target.value !== 'on') {\r\n formData.csContactProviderVendorId = event.target.value;\r\n updateVendorDropdownWidth(formContainer);\r\n validateForm();\r\n }\r\n });\r\n\r\n // Build Out Question with dropdown\r\n contactQuestionText.innerHTML = `I understand I can contact someone at `;\r\n contactQuestionText.appendChild(csContactQuestionDropdown);\r\n contactQuestionText.innerHTML += ' if I want to file a complaint.';\r\n wrap.appendChild(contactQuestionText);\r\n contactQuestion.appendChild(wrap);\r\n\r\n const csContactRadioContainer = document.createElement('div');\r\n csContactRadioContainer.classList.add('ic_questionRadioContainer', 'formError');\r\n ['Yes', 'No'].forEach(option => {\r\n const radio = input.buildRadio({\r\n id: `csContact-${option}`,\r\n text: option,\r\n name: 'csContact',\r\n callback: () => {\r\n formData.csContact = option === 'Yes' ? 'Y' : 'N';\r\n csContactRadioContainer.classList.remove('formError');\r\n validateForm();\r\n },\r\n });\r\n csContactRadioContainer.appendChild(radio);\r\n });\r\n wrap.appendChild(csContactRadioContainer);\r\n\r\n const standardQuestions = [\r\n // {\r\n // id: 'csChangeMind',\r\n // text: `I understand that I can change my mind at any time. I just need to let ${esignerData.ssaName} know`,\r\n // options: ['Yes', 'No'],\r\n // defaultVal: \"\"\r\n // },\r\n // {\r\n // id: 'csContact',\r\n // text: `I understand I can contact someone at ${esignerData.vendorName} if I want to file a complaint.`,\r\n // options: ['Yes', 'No'],\r\n // defaultVal: \"\"\r\n // },\r\n {\r\n id: 'csSupportsHealthNeeds',\r\n text: 'I agree this plan contains supports to meet my health and welfare needs.',\r\n options: ['Yes', 'No'],\r\n defaultVal: '',\r\n },\r\n {\r\n id: 'csRightsReviewed',\r\n text: 'Individual rights have been reviewed with me.',\r\n options: ['Yes', 'No'],\r\n defaultVal: '',\r\n },\r\n {\r\n id: 'csAgreeToPlan',\r\n text: 'I understand the purpose, benefits, and potential risks. I agree and consent to this entire plan.',\r\n options: ['Yes', 'No'],\r\n defaultVal: '',\r\n },\r\n {\r\n id: 'csTechnology',\r\n text: 'Technology solutions have been explored with my team and me.',\r\n options: ['Yes', 'No'],\r\n defaultVal: '',\r\n },\r\n {\r\n id: 'csFCOPExplained',\r\n text: 'Free Choice Of Provider has been explained to me.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: '',\r\n },\r\n {\r\n id: 'csDueProcess',\r\n text: 'I have been given my due process rights.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: '',\r\n },\r\n {\r\n id: 'csResidentialOptions',\r\n text: 'I have been given information on residential options.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: '',\r\n },\r\n ];\r\n\r\n const standardQuestionsWrap = document.createElement('div');\r\n standardQuestionsWrap.classList.add('standardQuestionsWrap');\r\n\r\n standardQuestionsWrap.appendChild(changeMindQuestion);\r\n standardQuestionsWrap.appendChild(contactQuestion);\r\n\r\n standardQuestions.forEach(question => {\r\n const questionContainer = document.createElement('div');\r\n questionContainer.classList.add('ic_questionContainer');\r\n const questionText = document.createElement('p');\r\n questionText.classList.add('standardQuestionText');\r\n questionText.innerText = question.text;\r\n\r\n const questionRadioContainer = document.createElement('div');\r\n questionRadioContainer.classList.add('ic_questionRadioContainer');\r\n\r\n if (question.defaultVal === '') {\r\n questionRadioContainer.classList.add('formError');\r\n }\r\n\r\n question.options.forEach(option => {\r\n const radio = input.buildRadio({\r\n id: `${question.id}-${option}`,\r\n text: option,\r\n name: question.id,\r\n callback: () => {\r\n switch (option) {\r\n case 'Yes':\r\n formData[question.id] = 'Y';\r\n break;\r\n case 'No':\r\n formData[question.id] = 'N';\r\n break;\r\n case 'N/A':\r\n formData[question.id] = 'NA';\r\n break;\r\n default:\r\n formData[question.id] = '';\r\n break;\r\n }\r\n questionRadioContainer.classList.remove('formError');\r\n validateForm();\r\n },\r\n });\r\n questionRadioContainer.appendChild(radio);\r\n });\r\n\r\n questionContainer.appendChild(questionText);\r\n questionContainer.appendChild(questionRadioContainer);\r\n\r\n standardQuestionsWrap.appendChild(questionContainer);\r\n });\r\n\r\n return standardQuestionsWrap;\r\n }\r\n\r\n function buildConsentSection() {\r\n const consentWrap = document.createElement('div');\r\n consentWrap.classList.add('consentWrap');\r\n\r\n const consentHeader = document.createElement('h3');\r\n consentHeader.classList.add('h3Title');\r\n consentHeader.innerText = 'Consent Statements';\r\n consentWrap.appendChild(consentHeader);\r\n\r\n const standardQuestions = buildStandardQuestionSet();\r\n\r\n consentWrap.appendChild(standardQuestions);\r\n\r\n return consentWrap;\r\n }\r\n\r\n function validateForm() {\r\n const radios = document.querySelectorAll('.ic_questionRadioContainer input[type=\"radio\"]');\r\n const signatureInput = document.getElementById('signatureInput');\r\n const ssaDropdown = document.getElementById('isp_ic_ssaDropdown');\r\n const vendorDropdown = document.getElementById('isp_ic_vendorContactDropdown');\r\n\r\n let allFilled = true;\r\n\r\n radios.forEach(radio => {\r\n const name = radio.name;\r\n if (!document.querySelector(`input[name=\"${name}\"]:checked`)) {\r\n allFilled = false;\r\n }\r\n });\r\n\r\n if (ssaDropdown && vendorDropdown) {\r\n if (ssaDropdown.value === '' || vendorDropdown.value === '') {\r\n allFilled = false;\r\n }\r\n }\r\n\r\n if (signatureInput.value === '' || !allFilled) {\r\n if (!submitBtn.classList.contains('disabled')) {\r\n submitBtn.classList.add('disabled');\r\n }\r\n submitBtn.disabled = true;\r\n } else {\r\n submitBtn.classList.remove('disabled');\r\n submitBtn.disabled = false;\r\n }\r\n }\r\n\r\n submitBtn = button.build({\r\n id: 'eSigSubmitBtn',\r\n text: 'Sign Document',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const updateQuestions = await _UTIL.fetchData('updateESignFormValues', { formData });\r\n\r\n const downloadExitPopup = document.createElement('div');\r\n downloadExitPopup.classList.add('popup', 'downloadExitPopup');\r\n\r\n var paragraph = document.createElement('p');\r\n paragraph.textContent =\r\n 'You have successfully signed this plan! You will receive a confirmation email shortly. The Case Manager will also be notified that you signed the plan. Please close your browser tab to complete the process.';\r\n\r\n const downloadPlanBtn = button.build({\r\n id: 'downloadPlanBtn',\r\n text: 'Download Plan',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n generateReportDownload(tempUserId);\r\n },\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(paragraph);\r\n btnWrap.appendChild(downloadPlanBtn);\r\n\r\n downloadExitPopup.appendChild(paragraph);\r\n downloadExitPopup.appendChild(btnWrap);\r\n const overlay = document.querySelector('.overlay');\r\n overlay.classList.add('visible');\r\n\r\n const formPopup = document.getElementById('formPopup');\r\n formPopup.remove();\r\n\r\n document.body.appendChild(downloadExitPopup);\r\n },\r\n });\r\n submitBtn.classList.add('disabled');\r\n\r\n if (\r\n esignerData.teamMemberType === 'Parent/Guardian' ||\r\n esignerData.teamMemberType === 'Parent' ||\r\n esignerData.teamMemberType === 'Guardian' ||\r\n esignerData.teamMemberType === 'Person Supported'\r\n ) {\r\n questions = buildConsentSection();\r\n formContainer.appendChild(questions);\r\n }\r\n const dissentingSection = buildDissentSection();\r\n\r\n formContainer.appendChild(dissentingSection);\r\n\r\n const signatureDisplay = document.createElement('div');\r\n signatureDisplay.id = 'signatureDisplay';\r\n\r\n const signatureInput = input.build({\r\n id: 'signatureInput',\r\n type: 'input',\r\n label: 'Name',\r\n style: 'secondary',\r\n });\r\n\r\n signatureInput.classList.add('errorPopup')\r\n\r\n signatureInput.addEventListener('input', function (event) {\r\n const value = event.target.value;\r\n signatureDisplay.textContent = value;\r\n \r\n if (value === '') {\r\n signatureInput.classList.add('errorPopup');\r\n } else {\r\n signatureInput.classList.remove('errorPopup');\r\n }\r\n \r\n validateForm();\r\n });\r\n \r\n\r\n formContainer.appendChild(signatureDisplay);\r\n formContainer.appendChild(signatureInput);\r\n\r\n popup.appendChild(formContainer);\r\n formContainer.appendChild(submitBtn);\r\n\r\n progressDiv.appendChild(popup);\r\n document.body.appendChild(progressDiv);\r\n //document.body.appendChild(popup);\r\n\r\n popup.style.display = 'block';\r\n\r\n esignaturesAjax.openESignaturesPDFEditor(tempUserId, viewerContainer);\r\n }\r\n\r\n async function init(tempUserId) {\r\n const eSignerDataResult = await _UTIL.fetchData('getESignerData', { tempUserId });\r\n esignerData = eSignerDataResult.getESignerDataResult;\r\n\r\n formData = {\r\n peopleId: esignerData.peopleId,\r\n planId: esignerData.planId,\r\n csChangeMind: '',\r\n csChangeMindSSAPeopleId: '',\r\n csContact: '',\r\n csContactProviderVendorId: '',\r\n csContactInput: '',\r\n csRightsReviewed: '',\r\n csAgreeToPlan: '',\r\n csFCOPExplained: '',\r\n csDueProcess: '',\r\n csResidentialOptions: '',\r\n csSupportsHealthNeeds: '',\r\n csTechnology: '',\r\n dissentAreaDisagree: '',\r\n dissentHowToAddress: '',\r\n applicationName: esignerData.applicationName,\r\n };\r\n\r\n async function loadDropdownData() {\r\n providerDropdownData = await consentAndSignAjax.getPlanInformedConsentVendors({\r\n token: $.session.Token,\r\n peopleid: esignerData.peopleId,\r\n });\r\n // this is where the DDL gets its data -- people, user permissions, etc tables\r\n ssaDropdownData = await consentAndSignAjax.getPlanInformedConsentSSAs({\r\n token: $.session.Token,\r\n });\r\n }\r\n\r\n await loadDropdownData();\r\n\r\n paidSupportProviders = servicesSupports.getSelectedVendorIds();\r\n\r\n displayFormPopup(tempUserId);\r\n\r\n const ssaDropdown = document.getElementById('isp_ic_ssaDropdown');\r\n const vendorDropdown = document.getElementById('isp_ic_vendorContactDropdown');\r\n\r\n // set the initial value and width of the dropdown value if they \r\n if (ssaDropdown) {\r\n const ssaDropdown = document.getElementById('isp_ic_ssaDropdown');\r\n setSSADropdownInitialWidth(ssaDropdown, esignerData.ssaPeopleId);\r\n }\r\n \r\n if (vendorDropdown) {\r\n const vendorDropdown = document.getElementById('isp_ic_vendorContactDropdown');\r\n setVendorDropdownInitialWidth(vendorDropdown, esignerData.vendorId);\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var esignaturesAjax = (function () { \r\n\r\n async function openESignaturesPDFEditor(tempUserId, progressDiv) {\r\n const token = $.session.token;\r\n \r\n // Show the spinner\r\n var popup = document.createElement('div');\r\n popup.classList.add('pendingSavePopup', 'popup');\r\n\r\n //SPINNER\r\n spinnerWrap = document.createElement('div');\r\n spinnerWrap.classList.add('spinner');\r\n spinnerMessage = document.createElement('h2');\r\n spinnerMessage.classList.add('spinner__message');\r\n var spinnerBar = document.createElement('div');\r\n spinnerBar.classList.add('spinner__bar');\r\n spinnerMessage.innerHTML = `

    Loading...

    `;\r\n spinnerWrap.appendChild(spinnerBar);\r\n spinnerWrap.appendChild(spinnerMessage);\r\n\r\n popup.appendChild(spinnerWrap);\r\n\r\n progressDiv.appendChild(popup);\r\n\r\n try {\r\n const response = await $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/openESignaturesEditor/',\r\n data: JSON.stringify({ tempUserId }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json'\r\n });\r\n \r\n var arr = response.openESignaturesEditorResult;\r\n \r\n await WebViewer({\r\n path: './WebViewer/lib', // path to the PDFTron 'lib' folder on your server\r\n licenseKey: 'Marshall Information Services, LLC (primarysolutions.net):OEM:Gatekeeper/Anywhere, Advisor/Anywhere::B+:AMS(20240512):99A5375D0437C60A0360B13AC9A2537860613FAD9766CD3BD5343BC2C76C38C054C2BEF5C7',\r\n documentType: 'pdf',\r\n }, document.getElementById('viewer'))\r\n .then(instance => {\r\n var FitMode = instance.UI.FitMode;\r\n instance.UI.setFitMode(FitMode.FitWidth);\r\n instance.UI.disableElements(['ribbons']);\r\n \r\n const docViewer = instance.Core.documentViewer;\r\n const annotManager = instance.Core.annotationManager;\r\n \r\n instance.UI.setHeaderItems(header => {\r\n header.push({\r\n type: 'actionButton',\r\n img: 'icon-close',\r\n title: 'Close Window',\r\n onClick: async () => { }\r\n });\r\n });\r\n \r\n const binaryString = window.atob(arr);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n \r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n \r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n instance.Core.documentViewer.loadDocument(blob, { filename: 'myfile.pdf' });\r\n instance.UI.disableElements(['toolsHeader']);\r\n \r\n docViewer.addEventListener('documentLoaded', async () => {\r\n try {\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n \r\n await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n });\r\n \r\n } catch (error) {\r\n throw new Error('Failed to process document');\r\n }\r\n });\r\n });\r\n \r\n\r\n var popup = document.querySelector('.pendingSavePopup');\r\n progressDiv.removeChild(popup);\r\n\r\n return 'success';\r\n } catch (error) {\r\n var popup = document.querySelector('.pendingSavePopup');\r\n progressDiv.removeChild(popup);\r\n \r\n return 'error';\r\n }\r\n }\r\n\r\n function downloadReportAfterSigning(retrieveData, callback) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/downloadReportAfterSigning/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'bare');\r\n form.setAttribute('success', successFunction);\r\n\r\n var tempUserIdInput = document.createElement('input');\r\n tempUserIdInput.setAttribute('name', 'token');\r\n tempUserIdInput.setAttribute('value', retrieveData.tempUserId);\r\n tempUserIdInput.id = 'tempUserId';\r\n\r\n form.appendChild(tempUserIdInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n return { \r\n openESignaturesPDFEditor,\r\n downloadReportAfterSigning\r\n };\r\n})();\r\n","const forms = (function () {\r\n var defaultval;\r\n let displayfromBLOBBtn;\r\n let documntId;\r\n let landingPage;\r\n let overviewTable;\r\n let newFormBtn;\r\n let selectedConsumer;\r\n let isFormLocked;\r\n\r\n // values for selectTemplatePopup\r\n let templateId;\r\n let typeId;\r\n let templateDropdown;\r\n let typeDropdown;\r\n let doneBtn;\r\n let formIds = [];\r\n\r\n async function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n selectedConsumer = roster2.getActiveConsumers()[0];\r\n await loadPDFFormsLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n // Build Forms Module Landing Page\r\n async function loadPDFFormsLanding() {\r\n DOM.clearActionCenter();\r\n\r\n landingPage = document.createElement('div');\r\n landingPage.classList.add('planLandingPage');\r\n\r\n const consumerCard = buildConsumerCard();\r\n newFormBtn = buildNewFormBtn();\r\n\r\n let filterValues = { formsConsumer: selectedConsumer.id };\r\n reportsBtn = generateReports.createMainReportButton([\r\n { text: 'Form Listing - By Consumer', filterValues },\r\n ]);\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('newFormAndReportBtns');\r\n\r\n landingPage.appendChild(consumerCard);\r\n landingPage.appendChild(btnWrap);\r\n btnWrap.appendChild(newFormBtn);\r\n btnWrap.appendChild(reportsBtn);\r\n\r\n overviewTable = await buildOverviewTable();\r\n landingPage.appendChild(overviewTable);\r\n\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n // Build User's table of Forms on the Landing Page\r\n async function buildOverviewTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'consumerFormsTable',\r\n columnHeadings: ['', 'Type', 'Completion', 'Last Updated', 'User Updated'],\r\n endIcon: true,\r\n };\r\n\r\n // FAKE DATA : build table data\r\n // const tableData = [{ values : ['Test', '03/01/2021'], endIcon : `${icons['delete']}`}, {values : ['Test2', '04/01/2021'], endIcon : `${icons['delete']}` }];\r\n let hasAssignedFormTypes = $.session.formsFormtype ? '1' : '0';\r\n const { getconsumerFormsResult: consumerForms } = await formsAjax.getconsumerFormsAsync(\r\n $.session.UserId,\r\n selectedConsumer.id,\r\n hasAssignedFormTypes,\r\n );\r\n // format the Completion Dates\r\n consumerForms.forEach(function (consumerForm) {\r\n let newDate = new Date(consumerForm.formCompleteDate);\r\n let theMonth = newDate.getMonth() + 1;\r\n let formatCompleteDate =\r\n UTIL.leadingZero(theMonth) +\r\n '/' +\r\n UTIL.leadingZero(newDate.getDate()) +\r\n '/' +\r\n newDate.getFullYear();\r\n consumerForm.formCompleteDate = formatCompleteDate;\r\n });\r\n\r\n let tableData = consumerForms.map(consumerForm => ({\r\n values: [\r\n `${icons['PDFForm']}`,\r\n consumerForm.formType + ' -- ' + consumerForm.formDescription,\r\n consumerForm.formCompleteDate,\r\n consumerForm.formLastUpdated,\r\n consumerForm.formUserUpdated,\r\n ],\r\n endIcon: $.session.formsDelete || $.session.formsUpdate ? `${icons['edit']}` : null,\r\n id: consumerForm.formId,\r\n attributes: [{ key: 'data-form-id', value: consumerForm.formId }],\r\n endIconCallback: e => {\r\n e.stopPropagation();\r\n try {\r\n let tableRow = document.getElementById(consumerForm.formId);\r\n formEditPopup(consumerForm.formId, consumerForm.formCompleteDate, tableRow);\r\n // deleteConfirmation(consumerForm.formId, tableRow);\r\n return;\r\n } catch (err) {\r\n console.error('error: ', err);\r\n }\r\n },\r\n onClick: () => {\r\n let isTemplate = '0';\r\n let documentEdited = '1'; // document previously edited\r\n let consumerId = selectedConsumer.id;\r\n let isRefresh = false;\r\n let formId = consumerForm.formId;\r\n let formCompleteDate = consumerForm.formCompleteDate;\r\n\r\n displayFormPopup(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n formCompleteDate,\r\n );\r\n },\r\n }));\r\n\r\n const oTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = oTable.querySelectorAll('.header div');\r\n headers[1].setAttribute('data-type', 'string'); // Type\r\n headers[2].setAttribute('data-type', 'date'); //Completion \r\n headers[3].setAttribute('data-type', 'string'); // Last Update \r\n headers[4].setAttribute('data-type', 'string'); // User Updated\r\n\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function buildConsumerCard() {\r\n selectedConsumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(selectedConsumer.card);\r\n\r\n return wrap;\r\n }\r\n\r\n function buildNewFormBtn() {\r\n return button.build({\r\n text: 'Add New Form',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: !$.session.formsInsert ? ['disabled'] : ['newPlanBtn'],\r\n callback: () => createTemplatePopUp(),\r\n });\r\n }\r\n\r\n // Build/Display Popup Window for selecting a Form template from a DDL\r\n function createTemplatePopUp() {\r\n let selectTemplatePopup = POPUP.build({\r\n header: 'Template Select',\r\n hideX: true,\r\n id: 'selectTemplatePopup',\r\n });\r\n\r\n typeDropdown = dropdown.build({\r\n label: 'Form Type',\r\n dropdownId: 'typeDropdown',\r\n });\r\n\r\n templateDropdown = dropdown.build({\r\n label: 'Form Templates',\r\n dropdownId: 'templateDropdown',\r\n });\r\n\r\n let newDate = new Date();\r\n let theMonth = newDate.getMonth() + 1;\r\n let formCompleteDate =\r\n UTIL.leadingZero(theMonth) +\r\n '/' +\r\n UTIL.leadingZero(newDate.getDate()) +\r\n '/' +\r\n newDate.getFullYear();\r\n\r\n let thisCompleteDate = newDate;\r\n\r\n let completeDateInput = input.build({\r\n type: 'date',\r\n label: 'Completion Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(formCompleteDate.split(' ')[0]),\r\n // readonly: true,\r\n });\r\n\r\n completeDateInput.addEventListener('change', event => {\r\n thisCompleteDate = event.target.value;\r\n // validation of completeDateInput\r\n if (thisCompleteDate === '') {\r\n completeDateInput.classList.add('error');\r\n } else {\r\n completeDateInput.classList.remove('error');\r\n }\r\n setBtnStatus();\r\n });\r\n\r\n doneBtn = button.build({\r\n id: 'wfStepDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => templatePopupDoneBtn(thisCompleteDate),\r\n });\r\n this.doneButton = doneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: 'wfStepCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: () => templatePopupCancelBtn(),\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n selectTemplatePopup.appendChild(typeDropdown);\r\n selectTemplatePopup.appendChild(templateDropdown);\r\n selectTemplatePopup.appendChild(completeDateInput);\r\n selectTemplatePopup.appendChild(btnWrap);\r\n\r\n populateTypeDropdown();\r\n populateDropdown('0');\r\n\r\n // validation of templateDropdown\r\n templateId = templateDropdown.value;\r\n if (templateId === '' || templateId === undefined) {\r\n templateDropdown.classList.add('error');\r\n } else templateDropdown.classList.remove('error');\r\n\r\n templateDropdown.addEventListener('change', e => {\r\n templateId = e.target.value;\r\n templateDropdownValidation();\r\n setBtnStatus();\r\n });\r\n\r\n typeDropdown.addEventListener('change', async e => {\r\n typeId = e.target.value;\r\n await populateDropdown(typeId);\r\n templateDropdownValidation();\r\n setBtnStatus();\r\n });\r\n\r\n POPUP.show(selectTemplatePopup);\r\n setBtnStatus();\r\n }\r\n\r\n function templateDropdownValidation() { \r\n var templateDropdownOptions = document.getElementById('templateDropdown');\r\n templateId = templateDropdownOptions.options[templateDropdownOptions.selectedIndex].value;\r\n if (templateId === '') {\r\n templateDropdown.classList.add('error');\r\n return;\r\n } else {\r\n templateDropdown.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n\r\n if (hasErrors.length !== 0) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n // Event for Done BTN on the Template Form Popup Window\r\n function templatePopupDoneBtn(completeDate) {\r\n POPUP.hide(selectTemplatePopup);\r\n let isTemplate = '1';\r\n let documentEdited = '0'; // document not previously edited\r\n let consumerId = selectedConsumer.id;\r\n let isRefresh = false;\r\n let formId = templateId;\r\n\r\n forms.displayFormPopup(formId, documentEdited, consumerId, isRefresh, isTemplate, completeDate);\r\n }\r\n\r\n // Event for Cancel BTN on the Template Form Popup Window\r\n function templatePopupCancelBtn() {\r\n POPUP.hide(selectTemplatePopup);\r\n }\r\n\r\n // Populate the DDL on the Type Form Popup Window\r\n async function populateTypeDropdown() {\r\n const {\r\n getFormTypeResult: FormType,\r\n } = await formsAjax.getFormTypeAsync();\r\n let data = FormType.map((formType) => ({\r\n id: formType.formTypeId,\r\n value: formType.formTypeId,\r\n text: formType.formTypeDescription\r\n }));\r\n data.unshift({ id: null, value: '0', text: 'ALL' });\r\n dropdown.populate(\"typeDropdown\", data, '0');\r\n }\r\n\r\n // Populate the DDL on the Template Form Popup Window\r\n async function populateDropdown(typeId) {\r\n let hasAssignedFormTypes = $.session.formsFormtype ? '1' : '0';\r\n const { getUserFormTemplatesResult: templates } = await formsAjax.getUserFormTemplatesAsync(\r\n $.session.UserId,\r\n hasAssignedFormTypes,\r\n typeId,\r\n );\r\n\r\n // Array to store unique template objects\r\n const uniqueForms = [];\r\n formIds = []; \r\n\r\n // Iterate over the templates array\r\n templates.forEach(template => {\r\n // Check if the formTemplateId already exists in uniqueForms\r\n const exists = uniqueForms.some(form => form.formTemplateId === template.formTemplateId);\r\n // If not, add the template to uniqueForms\r\n if (!exists) {\r\n uniqueForms.push(template);\r\n }\r\n\r\n if (typeId != '0')\r\n formIds.push(template.formTemplateId);\r\n });\r\n\r\n // Prepare data for dropdown\r\n const data = uniqueForms.map(template => ({\r\n id: template.formTemplateId,\r\n value: template.formTemplateId,\r\n text: template.formType + ' -- ' + template.formDescription,\r\n }));\r\n\r\n if (typeId == '0' || templates.length == 0) { \r\n data.unshift({ id: null, value: '', text: '' }); // Add blank value\r\n dropdown.populate('templateDropdown', data);\r\n }\r\n else {\r\n data.unshift({ id: null, value: '0', text: 'ALL' }); // Add blank value\r\n dropdown.populate('templateDropdown', data, '0');\r\n }\r\n }\r\n\r\n\r\n async function displayFormPopup(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n formCompleteDate,\r\n ) {\r\n let formPopup = POPUP.build({\r\n header: '',\r\n hideX: true,\r\n id: 'formPopup',\r\n });\r\n\r\n const viewer = document.createElement('div');\r\n\r\n var viewerWrap = document.createElement('div');\r\n viewerWrap.style = 'width: 1300px; height: 600px; margin: 0;';\r\n viewerWrap.id = 'viewer';\r\n\r\n viewer.appendChild(viewerWrap);\r\n\r\n formPopup.appendChild(viewer);\r\n\r\n POPUP.show(formPopup);\r\n\r\n // If the form is new, skip the forms lock check\r\n if (isTemplate !== '1') {\r\n const checkFormsLockValue = await formsAjax.checkFormsLock(formId, $.session.UserId);\r\n\r\n // if the forms lock value returns a non empty string, display the forms lock popup\r\n if (checkFormsLockValue !== '') {\r\n isFormLocked = true;\r\n\r\n const popup = POPUP.build({\r\n id: 'formLocksPopup',\r\n classNames: 'warning',\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(okBtn);\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = `This form is currently locked by ${checkFormsLockValue}. Any changes you make to this form will not be saved.`;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n }\r\n\r\n if (formId == '0') { \r\n await formsAjax.insertSeveralConsumerFormAsync($.session.UserId, consumerId, formIds, isTemplate, formCompleteDate); \r\n POPUP.hide(formPopup);\r\n forms.loadPDFFormsLanding(); \r\n }\r\n else {\r\n formsAjax.openFormEditor(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n $.session.applicationName,\r\n formCompleteDate,\r\n isFormLocked,\r\n );\r\n }\r\n\r\n isFormLocked = false;\r\n }\r\n\r\n async function displayStepFormPopup(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n formCompleteDate,\r\n stepId,\r\n docOrder,\r\n formName,\r\n ) {\r\n let formPopup = POPUP.build({\r\n header: '',\r\n hideX: true,\r\n id: 'formPopup',\r\n });\r\n\r\n const viewer = document.createElement('div');\r\n\r\n var viewerWrap = document.createElement('div');\r\n viewerWrap.style = 'width: 1300px; height: 600px; margin: 0;';\r\n viewerWrap.id = 'viewer';\r\n\r\n viewer.appendChild(viewerWrap);\r\n\r\n formPopup.appendChild(viewer);\r\n\r\n POPUP.show(formPopup);\r\n\r\n // If the form is new, skip the forms lock check\r\n if (isTemplate !== '1') {\r\n const checkFormsLockValue = await formsAjax.checkFormsLock(formId, $.session.UserId);\r\n\r\n // if the forms lock value returns a non empty string, display the forms lock popup\r\n if (checkFormsLockValue !== '') {\r\n isFormLocked = true;\r\n\r\n const popup = POPUP.build({\r\n id: 'formLocksPopup',\r\n classNames: 'warning',\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(okBtn);\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = `This form is currently locked by ${checkFormsLockValue}. Any changes you make to this form will not be saved.`;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n }\r\n\r\n formsAjax.openStepFormEditor(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n $.session.applicationName,\r\n formCompleteDate,\r\n isFormLocked,\r\n stepId,\r\n docOrder,\r\n formName,\r\n );\r\n isFormLocked = false;\r\n }\r\n\r\n function displayWFStepFormPopup(\r\n templateId,\r\n templateName,\r\n stepId,\r\n docOrder,\r\n isTemplate,\r\n documntEdited,\r\n consumerId,\r\n ) {\r\n isTemplate ? (documntId = 0) : (documntId = templateId);\r\n\r\n var displayfromBLOBBtn = button.build({\r\n text: 'Display Selected Form',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n //formsAjax.openEditor(templateId, false);\r\n // alert(\"Hi there.\");\r\n },\r\n });\r\n\r\n let formPopup = POPUP.build({\r\n header: '',\r\n hideX: true,\r\n id: 'formPopup',\r\n });\r\n\r\n const viewer = document.createElement('div');\r\n\r\n var viewerWrap = document.createElement('div');\r\n viewerWrap.style = 'width: 1300px; height: 600px; margin: 0;';\r\n viewerWrap.id = 'viewer';\r\n\r\n viewer.appendChild(viewerWrap);\r\n\r\n formPopup.appendChild(viewer);\r\n\r\n // Display the window that the Form will populate using either openEditor/openPDFEditor\r\n POPUP.show(formPopup);\r\n\r\n if (isTemplate) {\r\n formsAjax.openEditor(templateId, templateName, consumerId, stepId, docOrder);\r\n } else {\r\n let isRefresh = false;\r\n formsAjax.openPDFEditor(documntId, documntEdited, consumerId, isRefresh);\r\n }\r\n // isTemplate ? formsAjax.openEditor(templateId, templateName) : formsAjax.openPDFEditor(documntId);\r\n }\r\n\r\n function deleteConfirmation(formId, tableRow) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n //\tPOPUP.hide(formeditpopup);\r\n let result = await formsAjax.deleteConsumerFormAsync(formId);\r\n if (result.deleteConsumerFormResult === '1') {\r\n tableRow.remove();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this form?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n function formEditPopup(formId, formCompleteDate, tableRow) {\r\n const formeditpopup = POPUP.build({\r\n id: 'formeditpopup',\r\n classNames: 'miniform',\r\n hideX: true,\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n let thisCompleteDate = formCompleteDate;\r\n\r\n let completeDateInput = input.build({\r\n type: 'date',\r\n label: 'Completion Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(formCompleteDate.split(' ')[0]),\r\n // readonly: true,\r\n });\r\n\r\n completeDateInput.addEventListener('change', event => {\r\n thisCompleteDate = event.target.value;\r\n // validation of completeDateInput\r\n if (thisCompleteDate === '') {\r\n completeDateInput.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n completeDateInput.classList.remove('error');\r\n if ($.session.formsUpdate) saveBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n var saveBtn = button.build({\r\n text: 'Save Completion Date',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n await formsAjax.updateConsumerFormCompletionDateAsync(formId, thisCompleteDate);\r\n POPUP.hide(formeditpopup);\r\n // POPUP.hide(formPopup);\r\n forms.loadPDFFormsLanding();\r\n // overlay.show();\r\n },\r\n });\r\n\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(formeditpopup);\r\n // overlay.show();\r\n },\r\n });\r\n\r\n var deleteBtn = button.build({\r\n text: 'Delete Form',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(formeditpopup);\r\n deleteConfirmation(formId, tableRow);\r\n // overlay.show();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Update Completion Date?';\r\n formeditpopup.appendChild(completeDateInput);\r\n formeditpopup.appendChild(warningMessage);\r\n formeditpopup.appendChild(btnWrap);\r\n // formeditpopup.appendChild(deleteBtn);\r\n\r\n if (!$.session.formsUpdate) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n\r\n if (!$.session.formsDelete) {\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n deleteBtn.classList.remove('disabled');\r\n }\r\n\r\n POPUP.show(formeditpopup);\r\n }\r\n\r\n function init() {\r\n //DOM.clearActionCenter();\r\n // PROGRESS.SPINNER.show('Loading PDF Forms...');\r\n //loadPDFFormsLanding();\r\n setActiveModuleAttribute('forms');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n loadPDFFormsLanding,\r\n displayWFStepFormPopup,\r\n displayFormPopup,\r\n displayStepFormPopup,\r\n handleActionNavEvent,\r\n };\r\n})();\r\n","var formsAjax = (function () {\r\n\r\n function openEditor(templateId, templateName, consumerId, stepId, docOrder) {\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/openEditor/',\r\n data: '{\"templateId\":\"' + templateId + '\", \"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var arr = response.openEditorResult;\r\n\r\n WebViewer({\r\n path: './WebViewer/lib', // path to the PDFTron 'lib' folder on your server\r\n // licenseKey: 'Marshall Information Services, LLC(primarysolutions.net):OEM:Advisor/Anywhere;Gatekeeper/Anywhere::B+:AMS(20220512):A8A5354D0437C60A7360B13AC9A2537860614FABB956CD3BD5343BC2C76C38C054C2BEF5C7',\r\n licenseKey: 'Marshall Information Services, LLC (primarysolutions.net):OEM:Gatekeeper/Anywhere, Advisor/Anywhere::B+:AMS(20240512):99A5375D0437C60A0360B13AC9A2537860613FAD9766CD3BD5343BC2C76C38C054C2BEF5C7',\r\n documentType: 'pdf',\r\n // initialDoc: 'https://pdftron.s3.amazonaws.com/downloads/pl/webviewer-demo.pdf',\r\n // initialDoc: 'test.pdf', // You can also use documents on your server\r\n }, document.getElementById('viewer'))\r\n .then(instance => {\r\n console.log('success with S3 file');\r\n var FitMode = instance.UI.FitMode;\r\n instance.UI.setFitMode(FitMode.FitWidth);\r\n // hide the ribbons\r\n instance.UI.disableElements(['ribbons']);\r\n // instance.disableFeatures([instance.Feature.Download]);\r\n // set the default toolbar group to the Shapes group\r\n // instance.setToolbarGroup(['toolbarGroup-Shapes']);\r\n // call methods from instance, docViewer and annotManager as needed\r\n\r\n const docViewer = instance.Core.documentViewer;\r\n const annotManager = instance.Core.annotationManager;\r\n\r\n // -- Save PDF with Annotations -- https://www.pdftron.com/documentation/web/guides/get-file-data-with-viewer/\r\n\r\n // Add header button that will get file data on click\r\n instance.UI.setHeaderItems(header => {\r\n header.push({\r\n type: 'actionButton',\r\n img: '',\r\n title: 'Save Current Data',\r\n onClick: async () => {\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n\r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n });\r\n\r\n let documentEdited = \"1\"; // documentEdited = T \r\n const result = await WorkflowViewerAjax.insertStepDocumentAsync(stepId, docOrder, templateName + '.pdf', 'pdf', data, documentEdited);\r\n const { insertWorkflowStepDocumentResult: { attachmentId, documentId } } = result;\r\n\r\n const newDocObj = {\r\n documentId: documentId,\r\n stepId: stepId,\r\n docOrder: `\"${docOrder}\"`,\r\n description: templateName + '.pdf',\r\n attachmentId: attachmentId,\r\n documentEdited: documentEdited,\r\n attachmentType: 'pdf'\r\n }\r\n\r\n const newStepDocComponent = new WorkflowDocumentComponent(newDocObj).render();\r\n\r\n alert('Document has been saved.');\r\n\r\n POPUP.hide(formPopup);\r\n\r\n const stepsContainer = document.querySelector(`.wf-steps-container[data-id='${stepId}']`);\r\n const documentsList = stepsContainer.querySelector(\".wf-documents-list\");\r\n\r\n documentsList.appendChild(newStepDocComponent);\r\n\r\n }\r\n });\r\n\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n img: 'icon-close',\r\n title: 'Close Window',\r\n onClick: async () => {\r\n\r\n let PDFForm = document.getElementById('formPopup');\r\n POPUP.hide(formPopup);\r\n\r\n }\r\n });\r\n });\r\n\r\n // -- Display PDF (from memorystream/string) -- https://www.pdftron.com/documentation/web/guides/basics/open/base64/\r\n\r\n const binaryString = window.atob(arr);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n\r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n\r\n // const arr = new Uint8Array(bytes);\r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n instance.Core.documentViewer.loadDocument(blob, { filename: templateName + '.pdf' });\r\n instance.UI.disableElements(['toolsHeader']);\r\n // instance.disableElements(['toolbarGroup-Shapes']);\r\n // instance.disableElements(['toolbarGroup-Edit']);\r\n // instance.disableElements(['toolbarGroup-Insert']);\r\n // you can also access major namespaces from the instance as follows:\r\n const Tools = instance.Tools;\r\n const Annotations = instance.Annotations;\r\n\r\n docViewer.addEventListener('documentLoaded', async () => {\r\n //docViewer.setOptions({ enableAnnotations: false });\r\n // docViewer.zoomTo(docViewer.getZoom() + 1.75);\r\n // call methods relating to the loaded document\r\n });\r\n });\r\n\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function openPDFEditor(documentId, documentEdited, consumerId, isRefresh) {\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/openPDFEditor/',\r\n data: '{\"documentId\":\"' + documentId + '\", \"documentEdited\":\"' + documentEdited + '\", \"consumerId\":\"' + consumerId + '\", \"isRefresh\":\"' + isRefresh + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var arr = response.openPDFEditorResult;\r\n\r\n WebViewer({\r\n path: './WebViewer/lib', // path to the PDFTron 'lib' folder on your server\r\n // licenseKey: 'Marshall Information Services, LLC(primarysolutions.net):OEM:Advisor/Anywhere;Gatekeeper/Anywhere::B+:AMS(20220512):A8A5354D0437C60A7360B13AC9A2537860614FABB956CD3BD5343BC2C76C38C054C2BEF5C7',\r\n licenseKey: 'Marshall Information Services, LLC (primarysolutions.net):OEM:Gatekeeper/Anywhere, Advisor/Anywhere::B+:AMS(20240512):99A5375D0437C60A0360B13AC9A2537860613FAD9766CD3BD5343BC2C76C38C054C2BEF5C7',\r\n documentType: 'pdf',\r\n // initialDoc: 'https://pdftron.s3.amazonaws.com/downloads/pl/webviewer-demo.pdf',\r\n // initialDoc: 'test.pdf', // You can also use documents on your server\r\n }, document.getElementById('viewer'))\r\n .then(instance => {\r\n console.log('success with S3 file');\r\n var FitMode = instance.UI.FitMode;\r\n instance.UI.setFitMode(FitMode.FitWidth);\r\n // hide the ribbons\r\n instance.UI.disableElements(['ribbons']);\r\n // instance.disableFeatures([instance.Feature.Download]);\r\n\r\n const docViewer = instance.Core.documentViewer;\r\n const annotManager = instance.Core.annotationManager\r\n\r\n instance.UI.setHeaderItems(header => {\r\n header.push({\r\n type: 'actionButton',\r\n img: '',\r\n title: 'Save Current Data',\r\n onClick: async () => {\r\n\r\n try {\r\n\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n\r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n });\r\n\r\n let documentEdited = \"1\"; // documentEdited = T \r\n const result = await WorkflowViewerAjax.updateStepDocumentAsync(documentId, 'pdf', data, documentEdited);\r\n const { updateWorkflowStepDocumentResult: { attachmentId, documntId } } = result;\r\n\r\n alert('Document has been saved.');\r\n\r\n POPUP.hide(formPopup);\r\n const updatedDocument = document.querySelector(`[data-document-id='${documentId}']`);\r\n updatedDocument.setAttribute(\"data-attachment-id\", `${attachmentId}`);\r\n updatedDocument.setAttribute(\"data-document-edited\", `${documentEdited}`);\r\n updatedDocument.setAttribute(\"data-attachment-type\", 'pdf');\r\n\r\n } catch {\r\n // \r\n alert('This PDF document format does not allow saving. Document NOT saved.');\r\n // POPUP.hide(formPopup);\r\n\r\n }\r\n\r\n\r\n }\r\n });\r\n\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n img: 'icon-close',\r\n title: 'Close Window',\r\n onClick: async () => {\r\n // let PDFForm = document.getElementById('formPopup');\r\n POPUP.hide(formPopup);\r\n\r\n }\r\n });\r\n\r\n if (documentEdited == \"1\") {\r\n\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n // img: 'icon-chevron-down',\r\n img: ' ',\r\n title: 'Refresh with original data',\r\n onClick: async () => {\r\n\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n\r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n });\r\n\r\n docViewer.closeDocument();\r\n // get the data for annotated version of the document \r\n let isRefresh = true;\r\n const result = await formsAjax.getPDFDocData(documentId, \"0\", consumerId, isRefresh);\r\n\r\n if (result) {\r\n\r\n const binaryString = window.atob(result);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n\r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n // display annotated version of the document \r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n var FitMode = docViewer.FitMode;\r\n docViewer.setFitMode(FitMode.FitWidth);\r\n docViewer.loadDocument(blob, { filename: 'myfile.pdf' });\r\n\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n });\r\n\r\n\r\n // -- Display PDF (from memorystream/string) -- https://www.pdftron.com/documentation/web/guides/basics/open/base64/\r\n\r\n const binaryString = window.atob(arr);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n\r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n\r\n // const arr = new Uint8Array(bytes);\r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n instance.UI.loadDocument(blob, { filename: 'myfile.pdf' });\r\n instance.UI.disableElements(['toolsHeader']);\r\n\r\n docViewer.addEventListener('documentLoaded', async () => {\r\n try {\r\n annotManager.exportAnnotations().then(xfdfString => {\r\n const doc = docViewer.getDocument();\r\n });\r\n\r\n } catch {\r\n\r\n documentNotAllowedSaveAlert();\r\n // alert('This PDF document format does not allow saving. Any entered data can not be saved to the database.');\r\n }\r\n\r\n });\r\n });\r\n\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n\r\n function openFormEditor(formId, documentEdited, consumerId, isRefresh, isTemplate, applicationName, formCompleteDate, isFormLocked) {\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/openFormEditor/',\r\n data: '{\"formId\":\"' + formId + '\", \"documentEdited\":\"' + documentEdited + '\", \"consumerId\":\"' + consumerId + '\", \"isRefresh\":\"' + isRefresh + '\", \"isTemplate\":\"' + isTemplate + '\", \"applicationName\":\"' + applicationName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var arr = response.openFormEditorResult;\r\n \r\n WebViewer({\r\n path: './WebViewer/lib', // path to the PDFTron 'lib' folder on your server\r\n // licenseKey: 'Marshall Information Services, LLC(primarysolutions.net):OEM:Advisor/Anywhere;Gatekeeper/Anywhere::B+:AMS(20220512):A8A5354D0437C60A7360B13AC9A2537860614FABB956CD3BD5343BC2C76C38C054C2BEF5C7',\r\n // licenseKey: 'Marshall Information Services, LLC(primarysolutions.net):OEM:Advisor/Anywhere;Gatekeeper/Anywhere::B+:AMS(20220512):A8A5354D0437C60A7360B13AC9A2537860614FABB956CD3BD5343BC2C76C38C054C2BEF5C7',\r\n licenseKey: 'Marshall Information Services, LLC (primarysolutions.net):OEM:Gatekeeper/Anywhere, Advisor/Anywhere::B+:AMS(20240512):99A5375D0437C60A0360B13AC9A2537860613FAD9766CD3BD5343BC2C76C38C054C2BEF5C7',\r\n documentType: 'pdf',\r\n // initialDoc: 'https://pdftron.s3.amazonaws.com/downloads/pl/webviewer-demo.pdf',\r\n // initialDoc: 'test.pdf', // You can also use documents on your server\r\n }, document.getElementById('viewer'))\r\n .then(instance => {\r\n console.log('success with S3 file');\r\n var FitMode = instance.UI.FitMode;\r\n instance.UI.setFitMode(FitMode.FitWidth);\r\n // hide the ribbons\r\n instance.UI.disableElements(['ribbons']);\r\n \r\n instance.UI.useEmbeddedPrint(true);\r\n\r\n const docViewer = instance.Core.documentViewer;\r\n const annotManager = instance.Core.annotationManager;\r\n\r\n instance.UI.setHeaderItems(header => {\r\n if ($.session.formsUpdate) {\r\n header.push({\r\n type: 'actionButton',\r\n img: '',\r\n title: 'Save Current Data',\r\n onClick: async () => {\r\n\r\n try {\r\n if (isFormLocked) {\r\n throw new Error();\r\n }\r\n\r\n let formID;\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n\r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n });\r\n\r\n // let documentEdited = \"1\"; // documentEdited = T\r\n // insertConsumerFormAsync\r\n \r\n if (documentEdited === \"1\") {\r\n const result = await formsAjax.updateConsumerFormAsync(formId, data, documentEdited);\r\n const { updateConsumerFormResult: { formID } } = result;\r\n\r\n } else {\r\n const result = await formsAjax.insertConsumerFormAsync($.session.UserId, consumerId, formId, data, formCompleteDate);\r\n const { insertConsumerFormResult } = result;\r\n formID = insertConsumerFormResult.formId;\r\n\r\n overlay.hide();\r\n forms.loadPDFFormsLanding();\r\n }\r\n\r\n alert('Document has been saved.');\r\n\r\n } catch (e) {\r\n if (e) {\r\n alert('Cannot save while document is locked. Document NOT saved.')\r\n } else {\r\n //\r\n alert('This PDF document format does not allow saving. Document NOT saved.');\r\n // POPUP.hide(formPopup);\r\n }\r\n }\r\n\r\n }\r\n }); // push\r\n } //if\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n img: 'icon-close',\r\n title: 'Close Window',\r\n onClick: async () => {\r\n // let PDFForm = document.getElementById('formPopup');\r\n //POPUP.hide(formPopup);\r\n if ($.session.formsUpdate) {\r\n closewarningPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n removeFormsLock(formId, consumerId);\r\n } else {\r\n POPUP.hide(formPopup);\r\n removeFormsLock(formId, consumerId);\r\n }\r\n\r\n }\r\n });\r\n\r\n if (isTemplate == \"0\" && $.session.formsUpdate == true) {\r\n\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n // img: 'icon-chevron-down',\r\n img: ' ',\r\n title: 'Refresh with original data',\r\n onClick: async () => {\r\n\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n\r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n });\r\n\r\n docViewer.closeDocument();\r\n // get the data for annotated version of the document \r\n let isRefresh = true;\r\n const result = await formsAjax.getPDFFormData(formId, \"0\", consumerId, isRefresh, isTemplate, $.session.applicationName);\r\n\r\n if (result) {\r\n\r\n const binaryString = window.atob(result);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n\r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n // display annotated version of the document \r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n var FitMode = docViewer.FitMode;\r\n docViewer.setFitMode(FitMode.FitWidth);\r\n docViewer.loadDocument(blob, { filename: 'myfile.pdf' });\r\n\r\n }\r\n\r\n }\r\n });\r\n\r\n }\r\n\r\n });\r\n\r\n\r\n // -- Display PDF (from memorystream/string) -- https://www.pdftron.com/documentation/web/guides/basics/open/base64/\r\n\r\n const binaryString = window.atob(arr);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n\r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n\r\n // const arr = new Uint8Array(bytes);\r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n docViewer.loadDocument(blob, { filename: 'myfile.pdf' });\r\n instance.UI.disableElements(['toolsHeader']);\r\n\r\n docViewer.addEventListener('documentLoaded', async () => {\r\n try {\r\n\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n\r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n });\r\n\r\n } catch {\r\n\r\n documentNotAllowedSaveAlert();\r\n // alert('This PDF document format does not allow saving. Any entered data can not be saved to the database.');\r\n }\r\n\r\n });\r\n });\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function openStepFormEditor(formId, documentEdited, consumerId, isRefresh, isTemplate, applicationName, formCompleteDate, isFormLocked, stepId, docOrder, formName) {\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/openFormEditor/',\r\n data: '{\"formId\":\"' + formId + '\", \"documentEdited\":\"' + documentEdited + '\", \"consumerId\":\"' + consumerId + '\", \"isRefresh\":\"' + isRefresh + '\", \"isTemplate\":\"' + isTemplate + '\", \"applicationName\":\"' + applicationName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var arr = response.openFormEditorResult;\r\n\r\n WebViewer({\r\n path: './WebViewer/lib', // path to the PDFTron 'lib' folder on your server\r\n // licenseKey: 'Marshall Information Services, LLC(primarysolutions.net):OEM:Advisor/Anywhere;Gatekeeper/Anywhere::B+:AMS(20220512):A8A5354D0437C60A7360B13AC9A2537860614FABB956CD3BD5343BC2C76C38C054C2BEF5C7',\r\n // licenseKey: 'Marshall Information Services, LLC(primarysolutions.net):OEM:Advisor/Anywhere;Gatekeeper/Anywhere::B+:AMS(20220512):A8A5354D0437C60A7360B13AC9A2537860614FABB956CD3BD5343BC2C76C38C054C2BEF5C7',\r\n licenseKey: 'Marshall Information Services, LLC (primarysolutions.net):OEM:Gatekeeper/Anywhere, Advisor/Anywhere::B+:AMS(20240512):99A5375D0437C60A0360B13AC9A2537860613FAD9766CD3BD5343BC2C76C38C054C2BEF5C7',\r\n documentType: 'pdf',\r\n // initialDoc: 'https://pdftron.s3.amazonaws.com/downloads/pl/webviewer-demo.pdf',\r\n // initialDoc: 'test.pdf', // You can also use documents on your server\r\n }, document.getElementById('viewer'))\r\n .then(instance => {\r\n console.log('success with S3 file');\r\n var FitMode = instance.UI.FitMode;\r\n instance.UI.setFitMode(FitMode.FitWidth);\r\n // hide the ribbons\r\n instance.UI.disableElements(['ribbons']);\r\n // instance.disableFeatures([instance.Feature.Download]);\r\n\r\n const docViewer = instance.Core.documentViewer;\r\n const annotManager = instance.Core.annotationManager;\r\n\r\n instance.UI.setHeaderItems(header => {\r\n if ($.session.formsUpdate) {\r\n header.push({\r\n type: 'actionButton',\r\n img: '',\r\n title: 'Save Current Data',\r\n onClick: async () => {\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n\r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n });\r\n // save the Step Document with any edits included \r\n let documentEdited = \"1\"; // documentEdited = T \r\n const resultStepDoc = await WorkflowViewerAjax.insertStepDocumentAsync(stepId, docOrder, formName + '.pdf', 'pdf', data, documentEdited);\r\n const { insertWorkflowStepDocumentResult: { attachmentId, documentId } } = resultStepDoc;\r\n // save the original Form Document with any edits included\r\n // const resultFormDoc = await formsAjax.updateConsumerFormAsync(formId, data, documentEdited); \r\n // const {updateConsumerFormResult: {formID}} = resultFormDoc;\r\n\r\n const newDocObj = {\r\n documentId: documentId,\r\n stepId: stepId,\r\n docOrder: `\"${docOrder}\"`,\r\n description: formName + '.pdf',\r\n attachmentId: attachmentId,\r\n documentEdited: documentEdited,\r\n attachmentType: 'pdf'\r\n\r\n }\r\n\r\n const newStepDocComponent = new WorkflowDocumentComponent(newDocObj).render();\r\n\r\n alert('Document has been saved.');\r\n\r\n\r\n\r\n removeFormsLock(formId, consumerId);\r\n POPUP.hide(formPopup);\r\n\r\n const stepsContainer = document.querySelector(`.wf-steps-container[data-id='${stepId}']`);\r\n const documentsList = stepsContainer.querySelector(\".wf-documents-list\");\r\n\r\n documentsList.appendChild(newStepDocComponent);\r\n\r\n\r\n\r\n } //onclick\r\n }); // push\r\n } //if\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n img: 'icon-close',\r\n title: 'Close Window',\r\n onClick: async () => {\r\n // let PDFForm = document.getElementById('formPopup');\r\n //POPUP.hide(formPopup);\r\n if ($.session.formsUpdate) {\r\n closewarningPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n removeFormsLock(formId, consumerId);\r\n } else {\r\n POPUP.hide(formPopup);\r\n removeFormsLock(formId, consumerId);\r\n }\r\n\r\n }\r\n });\r\n\r\n if (isTemplate == \"0\" && $.session.formsUpdate == true) {\r\n\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n // img: 'icon-chevron-down',\r\n img: ' ',\r\n title: 'Refresh with original data',\r\n onClick: async () => {\r\n\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n\r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n });\r\n\r\n docViewer.closeDocument();\r\n // get the data for annotated version of the document \r\n let isRefresh = true;\r\n const result = await formsAjax.getPDFFormData(formId, \"0\", consumerId, isRefresh, isTemplate, $.session.applicationName);\r\n\r\n if (result) {\r\n\r\n const binaryString = window.atob(result);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n\r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n // display annotated version of the document \r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n var FitMode = docViewer.FitMode;\r\n docViewer.setFitMode(FitMode.FitWidth);\r\n docViewer.loadDocument(blob, { filename: 'myfile.pdf' });\r\n\r\n }\r\n\r\n }\r\n });\r\n\r\n }\r\n\r\n });\r\n\r\n\r\n // -- Display PDF (from memorystream/string) -- https://www.pdftron.com/documentation/web/guides/basics/open/base64/\r\n\r\n const binaryString = window.atob(arr);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n\r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n\r\n // const arr = new Uint8Array(bytes);\r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n instance.Core.documentViewer.loadDocument(blob, { filename: 'myfile.pdf' });\r\n instance.UI.disableElements(['toolsHeader']);\r\n\r\n docViewer.addEventListener('documentLoaded', async () => {\r\n try {\r\n\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n\r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n });\r\n\r\n } catch {\r\n\r\n documentNotAllowedSaveAlert();\r\n // alert('This PDF document format does not allow saving. Any entered data can not be saved to the database.');\r\n }\r\n\r\n });\r\n });\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n async function getUserFormTemplatesAsync(userId, hasAssignedFormTypes, typeId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getUserFormTemplates/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n userId: userId,\r\n hasAssignedFormTypes: hasAssignedFormTypes,\r\n typeId: typeId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getFormTypeAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getFormType/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertConsumerFormAsync(\r\n userId,\r\n consumerId,\r\n formtemplateid,\r\n formdata,\r\n formCompleteDate,\r\n ) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(formdata);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertConsumerForm/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n userId,\r\n consumerId,\r\n formtemplateid,\r\n formdata: abString,\r\n formCompleteDate,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertSeveralConsumerFormAsync(\r\n userId,\r\n consumerId,\r\n formtemplateid,\r\n isTemplate,\r\n formCompleteDate,\r\n ) {\r\n try { \r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertSeveralConsumerForm/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n userId,\r\n consumerId,\r\n formtemplateid,\r\n isTemplate,\r\n formCompleteDate,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function updateConsumerFormAsync(\r\n formId,\r\n formdata,\r\n documentEdited,\r\n ) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(formdata);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerForm/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n formId,\r\n formdata: abString,\r\n documentEdited,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function updateConsumerFormCompletionDateAsync(\r\n formId,\r\n formCompletionDate,\r\n ) {\r\n try {\r\n\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerFormCompletionDate/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n formId,\r\n formCompletionDate,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function deleteConsumerFormAsync(formId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteConsumerForm/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"formId\":\"' +\r\n formId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getconsumerFormsAsync(userId, consumerId, hasAssignedFormTypes) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getconsumerForms/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"userId\":\"' +\r\n userId +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\", \"hasAssignedFormTypes\":\"' +\r\n hasAssignedFormTypes +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n\r\n // for Plan module (Workflow Step Docs)\r\n async function getPDFDocData(documentId, documentEdited, consumerId, isRefresh) {\r\n // token, consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/openPDFEditor/',\r\n data: '{\"documentId\":\"' + documentId + '\", \"documentEdited\":\"' + documentEdited + '\", \"consumerId\":\"' + consumerId + '\", \"isRefresh\":\"' + isRefresh + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.openPDFEditorResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // for Forms module\r\n async function getPDFFormData(formId, documentEdited, consumerId, isRefresh, isTemplate, applicationName) {\r\n // token, consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/openFormEditor/',\r\n data: '{\"formId\":\"' + formId + '\", \"documentEdited\":\"' + documentEdited + '\", \"consumerId\":\"' + consumerId + '\", \"isRefresh\":\"' + isRefresh + '\", \"isTemplate\":\"' + isTemplate + '\", \"applicationName\":\"' + applicationName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.openFormEditorResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n function documentNotAllowedSaveAlert() {\r\n\r\n var popup = POPUP.build({\r\n id: 'saveNotAllowedAlertPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(okBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'This PDF document format does not allow saving. Any entered data can not be saved to the database.';\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n\r\n }\r\n\r\n function closewarningPopup(formId, documentEdited, consumerId, isRefresh, isTemplate) {\r\n const closewarningpopup = POPUP.build({\r\n id: 'closewarningPopup',\r\n classNames: 'warning',\r\n hideX: true,\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add(\"btnWrap\");\r\n\r\n const continueNoSaveBtn = button.build({\r\n text: 'Continue Close',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n\r\n POPUP.hide(closewarningpopup);\r\n POPUP.hide(formPopup);\r\n // if (documentEdited === \"0\") forms.loadPDFFormsLanding();\r\n //overlay.hide();\r\n // forms.loadPDFFormsLanding();\r\n // overlay.show();\r\n\r\n } //callback\r\n }) //continueBtn Build\r\n\r\n\r\n\r\n var mustSaveBtn = button.build({\r\n text: 'Do Not Close',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(closewarningpopup);\r\n overlay.show();\r\n\r\n }\r\n })\r\n btnWrap.appendChild(mustSaveBtn);\r\n btnWrap.appendChild(continueNoSaveBtn);\r\n\r\n var warningMessage = document.createElement(\"p\");\r\n warningMessage.innerHTML = \"You should not close this form until you have saved your work. Do you want to proceed with closing this form?\";\r\n closewarningpopup.appendChild(warningMessage);\r\n closewarningpopup.appendChild(btnWrap);\r\n POPUP.show(closewarningpopup);\r\n }\r\n\r\n async function checkFormsLock(formId, userId) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkFormsLock/',\r\n data: '{\"formId\":\"' + formId + '\", \"userId\":\"' + userId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.checkFormsLockResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function removeFormsLock(formId) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/removeFormsLock/',\r\n data: '{\"formId\":\"' + formId + '\", \"userId\":\"' + $.session.UserId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.removeFormsLockResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n openEditor,\r\n openPDFEditor,\r\n openFormEditor,\r\n openStepFormEditor,\r\n getUserFormTemplatesAsync,\r\n insertConsumerFormAsync,\r\n updateConsumerFormAsync,\r\n updateConsumerFormCompletionDateAsync,\r\n deleteConsumerFormAsync,\r\n getconsumerFormsAsync,\r\n getPDFDocData,\r\n getPDFFormData,\r\n removeFormsLock,\r\n checkFormsLock,\r\n getFormTypeAsync,\r\n insertSeveralConsumerFormAsync\r\n };\r\n})();","const EditFamilies = (function () {\r\n let SEARCH_WRAP;\r\n let SEARCH_BTN;\r\n let SEARCH_INPUT;\r\n let INACTIVE_CHKBOX;\r\n let familyTableData = [];\r\n let tempfamilyTableData = [];\r\n let displayedUsers = [];\r\n var userTable;\r\n var isChecked;\r\n\r\n function init() {\r\n setActiveModuleAttribute('FSS');\r\n DOM.clearActionCenter();\r\n const topNav = buildRosterTopNav();\r\n userTable = buildTable();\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = userTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Family Name\r\n headers[1].setAttribute('data-type', 'string'); // Address\r\n headers[2].setAttribute('data-type', 'number'); // Phone \r\n\r\n DOM.ACTIONCENTER.appendChild(topNav);\r\n DOM.ACTIONCENTER.appendChild(userTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(userTable);\r\n\r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n tableUserSearch(event.target.value);\r\n });\r\n isChecked = $.session.isActiveFamilies;\r\n loadReviewPage(isChecked);\r\n document.getElementById('searchBtn').click();\r\n }\r\n\r\n function buildSearchBtn() {\r\n return button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['searchBtn'],\r\n });\r\n }\r\n\r\n function viewEditFamilyBtn() {\r\n return button.build({\r\n text: 'View/Edit Family',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n }\r\n\r\n function buildInactiveChkBox() {\r\n return input.buildCheckbox({\r\n text: 'Show Inactives',\r\n id: 'chkInacive',\r\n callback: () => setCheckForInactiveUser(event.target),\r\n isChecked: $.session.isActiveFamilies,\r\n });\r\n }\r\n\r\n function buildActiveChkBox(checked) {\r\n return input.buildCheckbox({\r\n isChecked: checked === 'Y' ? true : false,\r\n callback: () => setCheckForInactiveUser(event.target),\r\n });\r\n }\r\n\r\n function buildTable() {\r\n var tableOptions = {\r\n plain: false,\r\n tableId: 'singleEntryAdminReviewTable',\r\n columnHeadings: ['Name', 'Address', 'Primary Phone'],\r\n endIcon: true,\r\n secondendIconHeading: 'Active',\r\n secondendIcon: true,\r\n };\r\n\r\n return table.build(tableOptions);\r\n }\r\n\r\n //populate\r\n function populateTable(results, IsFirstLoad) {\r\n familyTableData = results.map(td => {\r\n var familyId = td.familyId;\r\n var primaryPhone = td.primaryPhone;\r\n var familyName = td.familyName;\r\n var address = td.address;\r\n var Active = td.active;\r\n\r\n const additionalInformation = viewEditFamilyBtn();\r\n additionalInformation.innerHTML = 'View/Edit Family';\r\n\r\n additionalInformation.style = 'margin-top: -10px; width: 200px;';\r\n const activeCheckbox = buildActiveChkBox(Active);\r\n activeCheckbox.style = \"padding-top: 2px; margin-left: 10px;\";\r\n\r\n return {\r\n id: familyId,\r\n endIcon: additionalInformation.outerHTML,\r\n secondendIcon: activeCheckbox.outerHTML,\r\n FamilyName: familyName,\r\n Address: address,\r\n PrimaryPhone: primaryPhone,\r\n Active: Active,\r\n values: [familyName, address, primaryPhone],\r\n attributes: [\r\n { key: 'data-status', value: Active },\r\n { key: 'familyId', value: familyId },\r\n ],\r\n endIconCallback: e => {\r\n EditFamilyHeader.refreshFamily(familyId, familyName);\r\n },\r\n secondendIconCallback: e => {\r\n },\r\n };\r\n });\r\n if (IsFirstLoad) {\r\n tempfamilyTableData = familyTableData;\r\n }\r\n table.populate(userTable, familyTableData, false, true);\r\n }\r\n\r\n function buildRosterTopNav() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('roster-top-nav');\r\n\r\n SEARCH_BTN = buildSearchBtn();\r\n INACTIVE_CHKBOX = buildInactiveChkBox();\r\n\r\n // custom search stuff\r\n SEARCH_WRAP = document.createElement('div');\r\n SEARCH_WRAP.classList.add('rosterSearch');\r\n SEARCH_INPUT = document.createElement('input');\r\n SEARCH_INPUT.setAttribute('placeholder', 'search users');\r\n SEARCH_WRAP.appendChild(SEARCH_BTN);\r\n SEARCH_WRAP.appendChild(SEARCH_INPUT);\r\n\r\n INACTIVE_CHKBOX.classList.add('chkBoxStyle');\r\n var wrap1 = document.createElement('div');\r\n wrap1.classList.add('btnWrap');\r\n wrap1.appendChild(INACTIVE_CHKBOX);\r\n wrap1.appendChild(SEARCH_WRAP);\r\n\r\n INACTIVE_CHKBOX.addEventListener('change', event => {\r\n isChecked = event.target.checked;\r\n $.session.isActiveFamilies = isChecked;\r\n });\r\n\r\n btnWrap.appendChild(wrap1);\r\n return btnWrap;\r\n }\r\n\r\n function setCheckForInactiveUser(input) {\r\n if (input.checked) {\r\n isChecked = true;\r\n } else {\r\n isChecked = false;\r\n }\r\n loadReviewPage(isChecked);\r\n }\r\n\r\n function tableUserSearch(searchValue) {\r\n\r\n searchValue = searchValue.toLowerCase();\r\n displayedUsers = [];\r\n tempfamilyTableData.forEach(consumer => {\r\n var familyName = consumer.FamilyName.toLowerCase();\r\n var address = consumer.Address.toLowerCase();\r\n var primaryPhone = consumer.PrimaryPhone.toLowerCase();\r\n var fullName = `${familyName} ${address} ${primaryPhone}`;\r\n var fullNameReversed = `${address} ${familyName} ${primaryPhone}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n var matchesNameReverse = fullNameReversed.indexOf(searchValue);\r\n\r\n if (matchesName !== -1 || matchesNameReverse !== -1) {\r\n consumerObj = {\r\n familyId: consumer.id,\r\n familyName: consumer.FamilyName,\r\n address: consumer.Address,\r\n primaryPhone: consumer.PrimaryPhone,\r\n active: consumer.Active,\r\n };\r\n displayedUsers.push(consumerObj);\r\n }\r\n });\r\n populateTable(displayedUsers, false);\r\n }\r\n\r\n // load\r\n function loadReviewPage(active) {\r\n active = document.getElementById('chkInacive').checked;\r\n FSSAjax.getActiveInactiveFamilylist(\r\n {\r\n isActive: active == true ? 'N' : 'Y',\r\n },\r\n function (results, error) {\r\n populateTable(results, true);\r\n },\r\n );\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const EditFamilyHeader = (function () {\r\n let familyID;\r\n let ispDiv;\r\n let ispNav;\r\n let ispBody;\r\n let name;\r\n let tabPositionIndex;\r\n\r\n const sections = [\r\n {\r\n title: 'Family',\r\n id: 0,\r\n markup: () => EditFamilyInformation.getMarkup(),\r\n },\r\n {\r\n title: 'Members',\r\n id: 1,\r\n markup: () => EditMembers.getMarkup(),\r\n }, \r\n ];\r\n\r\n async function refreshFamily(FamilyId, Name, TabPosition = 0) {\r\n familyID = FamilyId;\r\n name = Name;\r\n tabPositionIndex = TabPosition;\r\n\r\n DOM.clearActionCenter();\r\n\r\n var headingWrap = document.createElement('div');\r\n headingWrap.classList.add('familyBtnWrap');\r\n const heading = document.createElement('div');\r\n const head = document.createElement('div');\r\n\r\n const ispWrap = document.createElement('div');\r\n ispWrap.id = 'planISP';\r\n ispWrap.innerHTML = '';\r\n\r\n BACK_BTN = button.build({\r\n text: 'BACK',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { EditFamilies.init(); }, \r\n });\r\n\r\n const newIspMarkup = await getMarkup();\r\n\r\n heading.innerHTML = `

    ${name}

    `;\r\n ispWrap.appendChild(newIspMarkup);\r\n\r\n head.appendChild(heading);\r\n headingWrap.appendChild(head);\r\n headingWrap.appendChild(BACK_BTN);\r\n\r\n DOM.ACTIONCENTER.appendChild(headingWrap);\r\n DOM.ACTIONCENTER.appendChild(ispWrap);\r\n DOM.autosizeTextarea();\r\n }\r\n function toggleActiveNavItem(selectedNavItem) {\r\n const activeNavItem = ispNav.querySelector('.active');\r\n\r\n if (activeNavItem) {\r\n activeNavItem.classList.remove('active');\r\n }\r\n\r\n selectedNavItem.classList.add('active');\r\n }\r\n function toggleActiveSection(sectionId) {\r\n const activeSection = ispBody.querySelector('.active');\r\n const targetSection = ispBody.querySelector(`[data-section-id=\"${sectionId}\"]`);\r\n\r\n if (activeSection) {\r\n activeSection.classList.remove('active');\r\n }\r\n \r\n targetSection.classList.add('active');\r\n }\r\n\r\n // Markup\r\n //---------------------------------------------\r\n function buildNavigation() {\r\n const nav = document.createElement('div');\r\n nav.classList.add('planISP__nav');\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n\r\n const navItem = document.createElement('div');\r\n navItem.classList.add('planISP__navItem');\r\n navItem.innerHTML = `${section.title}`;\r\n\r\n if (tabPositionIndex === index) {\r\n navItem.classList.add('active');\r\n }\r\n\r\n navItem.addEventListener('click', e => {\r\n toggleActiveNavItem(navItem);\r\n toggleActiveSection(sectionId);\r\n DOM.autosizeTextarea();\r\n });\r\n\r\n nav.appendChild(navItem);\r\n });\r\n\r\n return nav;\r\n }\r\n async function buildBody() {\r\n const body = document.createElement('div');\r\n body.classList.add('planISP__body');\r\n\r\n await EditFamilyInformation.init(familyID, name);\r\n await EditMembers.init(familyID, name);\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n const sectionMarkup = section.markup();\r\n sectionMarkup.setAttribute('data-section-id', sectionId);\r\n sectionMarkup.classList.add('planISP__section');\r\n\r\n if (tabPositionIndex === index) {\r\n sectionMarkup.classList.add('active');\r\n }\r\n\r\n body.appendChild(sectionMarkup);\r\n });\r\n\r\n return body;\r\n }\r\n\r\n async function getMarkup() {\r\n ispDiv = document.createElement('div');\r\n ispDiv.classList.add('planISP');\r\n\r\n ispNav = buildNavigation();\r\n ispDiv.appendChild(ispNav);\r\n\r\n ispBody = await buildBody();\r\n ispDiv.appendChild(ispBody);\r\n\r\n return ispDiv;\r\n }\r\n\r\n return {\r\n refreshFamily,\r\n getMarkup,\r\n };\r\n})();\r\n","const EditFamilyInformation = (() => {\r\n let getFamilyInfoByID = [];\r\n let familyID;\r\n let headingName;\r\n let IsValueChanged = false;\r\n\r\n let familyName;\r\n let address1;\r\n let address2;\r\n let city; \r\n let state;\r\n let zip;\r\n let primaryPhone;\r\n let secondaryPhone;\r\n let email;\r\n let notes;\r\n let active; \r\n\r\n\r\n async function init(familyId, name) {\r\n familyID = familyId;\r\n headingName = name;\r\n\r\n if (familyID != undefined) {\r\n getFamilyInfoByID = await FSSAjax.getFamilyInfoByID(familyID);\r\n }\r\n\r\n }\r\n\r\n function getMarkup() {\r\n const familyInfoWrap = document.createElement('div');\r\n familyInfoWrap.classList.add('planSummary');\r\n const importantTables = buildFamilyForm();\r\n familyInfoWrap.appendChild(importantTables);\r\n return familyInfoWrap;\r\n }\r\n\r\n function buildFamilyForm() {\r\n\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n\r\n familyName = getFamilyInfoByID.getFamilyInfoByIDResult[0].familyName;\r\n address1 = getFamilyInfoByID.getFamilyInfoByIDResult[0].address1;\r\n address2 = getFamilyInfoByID.getFamilyInfoByIDResult[0].address2;\r\n city = getFamilyInfoByID.getFamilyInfoByIDResult[0].city;\r\n state = getFamilyInfoByID.getFamilyInfoByIDResult[0].state;\r\n zip = getFamilyInfoByID.getFamilyInfoByIDResult[0].zip;\r\n primaryPhone = getFamilyInfoByID.getFamilyInfoByIDResult[0].primaryPhone;\r\n secondaryPhone = getFamilyInfoByID.getFamilyInfoByIDResult[0].secondaryPhone;\r\n email = getFamilyInfoByID.getFamilyInfoByIDResult[0].email;\r\n notes = getFamilyInfoByID.getFamilyInfoByIDResult[0].notes;\r\n active = getFamilyInfoByID.getFamilyInfoByIDResult[0].active;\r\n\r\n\r\n familyNameInput = input.build({\r\n id: 'familyNameInput',\r\n type: 'text',\r\n label: 'Name',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (familyName) ? familyName : '',\r\n });\r\n\r\n address1Input = input.build({\r\n id: 'address1Input',\r\n type: 'text',\r\n label: 'Address1',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (address1) ? address1 : '',\r\n });\r\n\r\n address2Input = input.build({\r\n id: 'address2Input',\r\n type: 'text',\r\n label: 'Address2',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (address2) ? address2 : '',\r\n });\r\n\r\n cityInput = input.build({\r\n id: 'cityInput',\r\n type: 'text',\r\n label: 'City',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (city) ? city : '',\r\n });\r\n\r\n stateInput = input.build({\r\n id: 'stateInput',\r\n type: 'text',\r\n label: 'State',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (state) ? state : '',\r\n });\r\n\r\n zipInput = input.build({\r\n id: 'zipInput',\r\n type: 'text',\r\n label: 'Zip',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (zip) ? zip : '',\r\n });\r\n\r\n primaryPhoneInput = input.build({\r\n id: 'primaryPhoneInput',\r\n type: 'number',\r\n label: 'Primary Phone',\r\n style: 'secondary',\r\n attributes: [{ key: 'maxlength', value: '12' }],\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (primaryPhone) ? primaryPhone : '',\r\n });\r\n\r\n secondaryPhoneInput = input.build({\r\n id: 'secondaryPhoneInput',\r\n type: 'number',\r\n label: 'Secondary Phone',\r\n style: 'secondary',\r\n attributes: [{ key: 'maxlength', value: '12' }],\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (secondaryPhone) ? secondaryPhone : '',\r\n });\r\n\r\n activeChk = input.buildCheckbox({\r\n text: 'Active?',\r\n id: 'activeChk',\r\n isChecked: active == 'Y' ? true : false,\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n });\r\n\r\n emailInput = input.build({\r\n id: 'emailInput',\r\n label: 'Email',\r\n type: 'text',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (email) ? email : '',\r\n });\r\n\r\n notesInput = input.build({\r\n id: 'notesInput',\r\n label: 'Notes',\r\n type: 'text',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (notes) ? notes : '',\r\n });\r\n\r\n // Save button\r\n SAVE_BTN = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n callback: async () => {\r\n if (!SAVE_BTN.classList.contains('disabled')) {\r\n SAVE_BTN.classList.add('disabled');\r\n saveEmployeeInfo()\r\n }\r\n },\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { EditFamilies.init() },\r\n });\r\n\r\n var LineBr = document.createElement('br');\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Family
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n const familyBtnWrap = document.createElement('div');\r\n familyBtnWrap.classList.add('familyDTWrap');\r\n familyNameInput.classList.add('width65Per');\r\n familyBtnWrap.appendChild(familyNameInput);\r\n activeChk.classList.add('width32Per');\r\n familyBtnWrap.appendChild(activeChk);\r\n addNewCardBody.appendChild(familyBtnWrap);\r\n\r\n const addressNameDisplay = document.createElement(\"p\");\r\n addressNameDisplay.classList.add(\"heading\");\r\n addressNameDisplay.innerHTML = `${'Address Information'}`;\r\n addressNameDisplay.style.marginLeft = '10px';\r\n addressNameDisplay.style.marginBottom = '15px';\r\n addNewCardBody.appendChild(addressNameDisplay);\r\n addNewCardBody.appendChild(LineBr);\r\n addNewCardBody.appendChild(LineBr);\r\n\r\n var dropWrap = document.createElement('div');\r\n dropWrap.classList.add('familyDTWrap');\r\n address1Input.classList.add('width32Per');\r\n dropWrap.appendChild(address1Input);\r\n address2Input.classList.add('width32Per');\r\n dropWrap.appendChild(address2Input);\r\n cityInput.classList.add('width32Per');\r\n dropWrap.appendChild(cityInput);\r\n addNewCardBody.appendChild(dropWrap);\r\n\r\n var drWrap = document.createElement('div');\r\n drWrap.classList.add('familyDTWrap');\r\n stateInput.classList.add('width32Per');\r\n drWrap.appendChild(stateInput);\r\n zipInput.classList.add('width32Per');\r\n drWrap.appendChild(zipInput);\r\n addNewCardBody.appendChild(drWrap);\r\n\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"heading\");\r\n consumerNameDisplay.innerHTML = `${'Contact Information'}`;\r\n consumerNameDisplay.style.marginLeft = '10px';\r\n addNewCardBody.appendChild(consumerNameDisplay);\r\n addNewCardBody.appendChild(LineBr);\r\n addNewCardBody.appendChild(LineBr);\r\n\r\n var infoWrap = document.createElement('div');\r\n infoWrap.classList.add('familyDTWrap');\r\n primaryPhoneInput.classList.add('width32Per');\r\n infoWrap.appendChild(primaryPhoneInput);\r\n secondaryPhoneInput.classList.add('width32Per');\r\n infoWrap.appendChild(secondaryPhoneInput);\r\n emailInput.classList.add('width32Per');\r\n infoWrap.appendChild(emailInput);\r\n addNewCardBody.appendChild(infoWrap);\r\n\r\n addNewCardBody.appendChild(notesInput);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('familyBtnWrap');\r\n btnWrap.style.marginLeft = '25%';\r\n btnWrap.style.width = '50%';\r\n\r\n if ($.session.EmploymentUpdate) {\r\n SAVE_BTN.style.width = '52%';\r\n btnWrap.appendChild(SAVE_BTN);\r\n }\r\n\r\n CANCEL_BTN.style.width = '52%';\r\n CANCEL_BTN.style.marginLeft = '5%';\r\n btnWrap.appendChild(CANCEL_BTN);\r\n addNewCardBody.appendChild(btnWrap);\r\n\r\n eventListeners();\r\n employeeInfoDiv.appendChild(column1);\r\n checkRequiredFieldsOfEmployeeInfo(familyName);\r\n\r\n return employeeInfoDiv;\r\n }\r\n\r\n function getRequiredFieldsOfEmployeeInfo() {\r\n var familyName = familyNameInput.querySelector('#familyNameInput');\r\n checkRequiredFieldsOfEmployeeInfo(familyName.value)\r\n }\r\n\r\n function checkRequiredFieldsOfEmployeeInfo(familyName) {\r\n if (familyName === '') {\r\n familyNameInput.classList.add('error');\r\n } else {\r\n familyNameInput.classList.remove('error');\r\n }\r\n\r\n setBtnStatusOfEmployeeInfo();\r\n }\r\n\r\n function setBtnStatusOfEmployeeInfo() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n SAVE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n if (IsValueChanged == true) {\r\n SAVE_BTN.classList.remove('disabled');\r\n }\r\n else {\r\n SAVE_BTN.classList.add('disabled');\r\n }\r\n }\r\n }\r\n\r\n function eventListeners() {\r\n familyNameInput.addEventListener('input', event => {\r\n familyName = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n address1Input.addEventListener('input', event => {\r\n address1 = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n address2Input.addEventListener('input', event => {\r\n address2 = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n cityInput.addEventListener('input', event => {\r\n city = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n zipInput.addEventListener('input', event => {\r\n zip = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n stateInput.addEventListener('input', event => {\r\n state = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n primaryPhoneInput.addEventListener('input', event => {\r\n primaryPhone = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n secondaryPhoneInput.addEventListener('input', event => {\r\n secondaryPhone = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n activeChk.addEventListener('change', event => {\r\n active = event.target.checked == true ? 'Y' : 'N';\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n emailInput.addEventListener('input', event => {\r\n email = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n notesInput.addEventListener('input', event => {\r\n notes = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n }\r\n\r\n async function saveEmployeeInfo() {\r\n\r\n await FSSAjax.updateFamilyInfo({\r\n token: $.session.Token,\r\n familyName: familyName,\r\n address1: address1,\r\n address2: address2,\r\n city: city,\r\n state: state,\r\n zip: zip,\r\n primaryPhone: primaryPhone,\r\n secondaryPhone: secondaryPhone,\r\n email: email,\r\n notes: notes,\r\n active: active,\r\n userId: $.session.UserId,\r\n familyID: familyID\r\n });\r\n\r\n EditFamilyHeader.refreshFamily(familyID, familyName, tabPositionIndex = 0);\r\n\r\n }\r\n\r\n return {\r\n init,\r\n buildFamilyForm,\r\n getMarkup,\r\n };\r\n})(); ","const EditMembers = (() => {\r\n\r\n let memberEntriesTable;\r\n let familyID;\r\n let familyEntries;\r\n let headingName;\r\n let name;\r\n let nameOfEvent;\r\n let memberName;\r\n var isActive;\r\n var memberId;\r\n let addEditMemberPopup;\r\n var newMemberId;\r\n\r\n async function init(familyId, name) {\r\n familyID = familyId;\r\n headingName = name;\r\n\r\n if (familyID != undefined) {\r\n familyEntries = await FSSAjax.getFamilyMembers(familyID);\r\n }\r\n }\r\n\r\n function getMarkup() {\r\n const memberWrap = document.createElement('div');\r\n memberWrap.classList.add('planSummary');\r\n const importantTables = buildNewMemberForm();\r\n memberWrap.appendChild(importantTables);\r\n return memberWrap;\r\n }\r\n\r\n function buildNewMemberForm() {\r\n const workScheduleDiv = document.createElement('div');\r\n workScheduleDiv.classList.add('additionalQuestionWrap');\r\n\r\n const newMemberBtn = button.build({\r\n text: '+ ADD FAMILY MEMBER',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addMemberPopup(0,0, 'Add')\r\n });\r\n memberEntriesTable = buildmemberEntriesTable();\r\n\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Family Members
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n if ($.session.EmploymentUpdate) {\r\n addNewCardBody.appendChild(newMemberBtn);\r\n }\r\n addNewCardBody.appendChild(memberEntriesTable);\r\n workScheduleDiv.appendChild(column1);\r\n return workScheduleDiv;\r\n }\r\n\r\n\r\n function buildmemberEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'employmentWorkScheduleTable',\r\n columnHeadings: ['Family Member', 'Active?'],\r\n endIcon: $.session.FSSUpdate == true ? true : false,\r\n };\r\n\r\n let tableData = familyEntries.getFamilyMembersResult.map((entry) => ({\r\n values: [entry.memberName, entry.active == 'Y' ? 'Yes' : 'No'],\r\n attributes: [{ key: 'familyId', value: entry.familyId }],\r\n onClick: (e) => {\r\n addMemberPopup(entry.familyId, entry.memberId, 'Edit')\r\n },\r\n endIcon: `${icons['delete']}`,\r\n endIconCallback: (e) => {\r\n deleteMemberPOPUP(entry.familyId, entry.memberId);\r\n },\r\n }));\r\n const oTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = oTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Family Member\r\n headers[1].setAttribute('data-type', 'string'); // Active\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function deleteMemberPOPUP(familyId, memberId) {\r\n const confirmPopup = POPUP.build({\r\n hideX: true,\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n deleteMember(familyId, memberId, confirmPopup);\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n\r\n message.innerText = 'Are you sure you would like to remove this Member?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n function deleteMember(familyId, memberId, confirmPopup) {\r\n FSSAjax.deleteMemberInfo(\r\n {\r\n token: $.session.Token,\r\n memberId: memberId,\r\n familyID: familyID\r\n }\r\n );\r\n POPUP.hide(confirmPopup);\r\n EditFamilyHeader.refreshFamily(familyID, headingName, tabPositionIndex = 1);\r\n }\r\n\r\n function addMemberPopup(familyId, memberIdd, eventName) {\r\n if (eventName == 'Add') {\r\n memberName = '';\r\n isActive = 'Y';\r\n memberId = '';\r\n newMemberId = '';\r\n }\r\n else {\r\n let memberValues = familyEntries.getFamilyMembersResult.find(x => x.familyId == familyId && x.memberId == memberIdd);\r\n memberName = memberValues.memberName;\r\n isActive = memberValues.active;\r\n memberId = memberValues.memberId;\r\n newMemberId = memberValues.memberId;\r\n }\r\n addEditMemberPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n const heading = document.createElement('h2');\r\n heading.style.marginTop = '-20px';\r\n heading.style.marginBottom = '15px';\r\n if (eventName == 'Edit') {\r\n heading.innerText = 'Update Family Member';\r\n memberId = memberId;\r\n }\r\n else {\r\n heading.innerText = 'Add Family Member';\r\n memberId = '0';\r\n }\r\n\r\n // dropdowns & inputs\r\n memberDropdown = dropdown.build({\r\n id: 'memberDropdown',\r\n label: \"Family Member\",\r\n dropdownId: \"memberDropdown\",\r\n value: (memberId) ? memberId : '',\r\n });\r\n\r\n const yesActiveRadio = input.buildRadio({\r\n id: 'yesActiveRadio',\r\n text: \"Yes\",\r\n name: \"activeChk\",\r\n isChecked: true,\r\n })\r\n const noActiveRadio = input.buildRadio({\r\n id: 'noActiveRadio',\r\n text: \"No\",\r\n name: \"activeChk\",\r\n })\r\n\r\n const radioDiv = document.createElement('div')\r\n radioDiv.classList.add('radioDiv')\r\n radioDiv.appendChild(yesActiveRadio)\r\n radioDiv.appendChild(noActiveRadio)\r\n\r\n APPLY_BTN = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n addEditMemberPopup.appendChild(heading);\r\n addEditMemberPopup.appendChild(memberDropdown);\r\n\r\n const active = document.createElement('h3');\r\n active.innerText = 'Active?';\r\n\r\n var timebtnWrap = document.createElement('div');\r\n timebtnWrap.classList.add('btnWrap');\r\n active.style.marginLeft = '1%';\r\n active.style.width = '48%';\r\n timebtnWrap.appendChild(active);\r\n radioDiv.style.marginLeft = '2%';\r\n radioDiv.style.width = '48%';\r\n timebtnWrap.appendChild(radioDiv);\r\n addEditMemberPopup.appendChild(timebtnWrap);\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(APPLY_BTN);\r\n popupbtnWrap.appendChild(CANCEL_BTN);\r\n addEditMemberPopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(addEditMemberPopup);\r\n PopupEventListeners();\r\n populateMemberDropdown(memberId);\r\n checkRequiredFieldsOfPopup();\r\n }\r\n\r\n function PopupEventListeners() {\r\n memberDropdown.addEventListener('change', event => {\r\n newMemberId = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n yesActiveRadio.addEventListener('change', event => {\r\n isActive = 'Y';\r\n });\r\n noActiveRadio.addEventListener('change', event => {\r\n isActive = 'N';\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n saveNewMemberPopup();\r\n }\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(addEditMemberPopup);\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfPopup() {\r\n var memberNm = memberDropdown.querySelector('#memberDropdown');\r\n\r\n if (memberNm.value === '') {\r\n memberDropdown.classList.add('errorPopup');\r\n } else {\r\n memberDropdown.classList.remove('errorPopup');\r\n }\r\n\r\n setBtnStatusOfPopup();\r\n }\r\n\r\n function setBtnStatusOfPopup() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n\r\n async function populateMemberDropdown(memberId) {\r\n const {\r\n getMembersResult: Members,\r\n } = await FSSAjax.getMembers();\r\n let data = Members.map((members) => ({\r\n id: members.memberId,\r\n value: members.memberId,\r\n text: members.memberName\r\n }));\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"memberDropdown\", data, memberId);\r\n checkRequiredFieldsOfPopup();\r\n }\r\n\r\n async function saveNewMemberPopup() {\r\n\r\n\r\n await FSSAjax.insertMemberInfo({\r\n token: $.session.Token,\r\n memberId: memberId,\r\n familyID: familyID,\r\n active: isActive,\r\n userId: $.session.UserId,\r\n newMemberId: newMemberId,\r\n });\r\n POPUP.hide(addEditMemberPopup);\r\n EditFamilyHeader.refreshFamily(familyID, headingName, tabPositionIndex = 1);\r\n\r\n\r\n }\r\n\r\n return {\r\n init,\r\n buildNewMemberForm,\r\n getMarkup,\r\n };\r\n})(); ","const FSS = (() => {\r\n //Inputs\r\n var selectedConsumer;\r\n let fSSData;\r\n //filter\r\n let filterValues;\r\n let newFilterValues;\r\n let editFamily;\r\n let filesList = [];\r\n let backBtn;\r\n // DOM\r\n let pageWrap;\r\n let overviewTable;\r\n //--\r\n let filterPopup;\r\n let address;\r\n let applyFilterBtn;\r\n let btnWrap;\r\n let familyNameBtnWrap;\r\n let primaryPhoneBtnWrap;\r\n let addressBtnWrap;\r\n let coPayVal;\r\n let allocationVal;\r\n let fundingSourceVal;\r\n let startDateVal;\r\n let endDateVal;\r\n let authorizationPopup;\r\n let UtilizationPopup\r\n let encumberedInputsVal;\r\n let familyMemberDropdownVal;\r\n let serviceCodeDropdownVal;\r\n let paidAmountInputsVal;\r\n let vendorDropdownVal;\r\n let datePaidVal;\r\n let selectedConsumersId;\r\n //--\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n var activeConsumers = roster2.getActiveConsumers();\r\n selectedConsumer = activeConsumers[activeConsumers.length - 1];\r\n selectedConsumersId = activeConsumers[activeConsumers.length - 1].id;\r\n await loadFSSLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n async function loadFSSLanding() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n initFilterValues();\r\n pageWrap = document.createElement('div');\r\n const consumerCard = buildConsumerCard();\r\n const backbtnWrap = document.createElement('div');\r\n backbtnWrap.classList.add('addOutcomeBtnWrap');\r\n const addInsertServicesBtnWrap = document.createElement('div');\r\n addInsertServicesBtnWrap.classList.add('addInsertServicesBtnWrap');\r\n backbtnWrap.appendChild(addInsertServicesBtnWrap);\r\n\r\n filteredByData = buildFilteredByData();\r\n editFamily = editFamiliesButton();\r\n backBtn = backButton();\r\n addInsertServicesBtnWrap.appendChild(editFamily);\r\n\r\n backbtnWrap.appendChild(backBtn);\r\n\r\n pageWrap.appendChild(consumerCard);\r\n pageWrap.appendChild(backbtnWrap);\r\n pageWrap.appendChild(filteredByData);\r\n DOM.ACTIONCENTER.appendChild(pageWrap);\r\n\r\n if ($.session.FSSUpdate == true) {\r\n editFamily.classList.remove('disabled');\r\n } else {\r\n editFamily.classList.add('disabled');\r\n }\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Data...');\r\n pageWrap.appendChild(spinner);\r\n\r\n fSSData = await FSSAjax.getFSSPageData({\r\n token: $.session.Token,\r\n familyName: filterValues.familyName,\r\n primaryPhone: filterValues.primaryPhone,\r\n address: filterValues.address,\r\n appName: $.session.applicationName,\r\n });\r\n\r\n pageWrap.removeChild(spinner);\r\n buildOverviewTable();\r\n }\r\n\r\n function buildConsumerCard() {\r\n selectedConsumer.card.classList.remove('highlighted');\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n wrap.appendChild(selectedConsumer.card);\r\n return wrap;\r\n }\r\n\r\n function initFilterValues() {\r\n filterValues = {\r\n familyName: '%',\r\n primaryPhone: '%',\r\n address: '%',\r\n };\r\n }\r\n\r\n function buildFilteredByData() {\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n\r\n if (!currentFilterDisplay) {\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n filterButtonSet();\r\n currentFilterDisplay.appendChild(btnWrap);\r\n }\r\n\r\n if (filterValues.familyName === '%') {\r\n btnWrap.appendChild(familyNameBtnWrap);\r\n btnWrap.removeChild(familyNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(familyNameBtnWrap);\r\n if (document.getElementById('familyNameBtn') != null)\r\n document.getElementById('familyNameBtn').innerHTML = 'Family Name: ' + filterValues.familyName;\r\n }\r\n\r\n if (filterValues.primaryPhone === '%') {\r\n btnWrap.appendChild(primaryPhoneBtnWrap);\r\n btnWrap.removeChild(primaryPhoneBtnWrap);\r\n } else {\r\n btnWrap.appendChild(primaryPhoneBtnWrap);\r\n if (document.getElementById('primaryPhoneBtn') != null)\r\n document.getElementById('primaryPhoneBtn').innerHTML = ' Primary Phone: ' + filterValues.primaryPhone;\r\n }\r\n\r\n if (filterValues.address === '%') {\r\n btnWrap.appendChild(addressBtnWrap);\r\n btnWrap.removeChild(addressBtnWrap);\r\n } else {\r\n btnWrap.appendChild(addressBtnWrap);\r\n if (document.getElementById('addressBtn') != null)\r\n document.getElementById('addressBtn').innerHTML = 'Address: ' + filterValues.address;\r\n }\r\n\r\n return currentFilterDisplay;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n showFilterPopup('ALL');\r\n },\r\n });\r\n\r\n familyNameBtn = button.build({\r\n id: 'familyNameBtn',\r\n text: 'Family Name: ' + filterValues.familyName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('familyNameBtn');\r\n },\r\n });\r\n familyNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('familyNameBtn');\r\n },\r\n });\r\n\r\n primaryPhoneBtn = button.build({\r\n id: 'primaryPhoneBtn',\r\n text: 'Primary Phone: ' + filterValues.primaryPhone,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('primaryPhoneBtn');\r\n },\r\n });\r\n\r\n primaryPhoneCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('primaryPhoneBtn');\r\n },\r\n });\r\n\r\n addressBtn = button.build({\r\n id: 'addressBtn',\r\n text: 'Import Date: ' + filterValues.address,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('addressBtn');\r\n },\r\n });\r\n\r\n addressCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('addressBtn');\r\n },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n familyNameBtnWrap = document.createElement('div');\r\n familyNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n familyNameBtnWrap.appendChild(familyNameBtn);\r\n familyNameBtnWrap.appendChild(familyNameCloseBtn);\r\n btnWrap.appendChild(familyNameBtnWrap);\r\n\r\n primaryPhoneBtnWrap = document.createElement('div');\r\n primaryPhoneBtnWrap.classList.add('filterSelectionBtnWrap');\r\n primaryPhoneBtnWrap.appendChild(primaryPhoneBtn);\r\n primaryPhoneBtnWrap.appendChild(primaryPhoneCloseBtn);\r\n btnWrap.appendChild(primaryPhoneBtnWrap);\r\n\r\n addressBtnWrap = document.createElement('div');\r\n addressBtnWrap.classList.add('filterSelectionBtnWrap');\r\n addressBtnWrap.appendChild(addressBtn);\r\n addressBtnWrap.appendChild(addressCloseBtn);\r\n btnWrap.appendChild(addressBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'familyNameBtn') {\r\n newFilterValues.familyName = '%';\r\n }\r\n if (closeFilter == 'primaryPhoneBtn') {\r\n newFilterValues.primaryPhone = '%';\r\n }\r\n if (closeFilter == 'addressBtn') {\r\n newFilterValues.address = '%';\r\n }\r\n applyFilter();\r\n }\r\n\r\n function showFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({});\r\n\r\n // Inputs\r\n familyNameInput = input.build({\r\n type: 'text',\r\n label: 'Family Name',\r\n style: 'secondary',\r\n value: filterValues.familyName == '%' ? '' : filterValues.familyName,\r\n });\r\n\r\n primaryPhoneInput = input.build({\r\n type: 'text',\r\n label: 'Primary Phone',\r\n style: 'secondary',\r\n value: filterValues.primaryPhone == '%' ? '' : filterValues.primaryPhone,\r\n });\r\n\r\n addressInput = input.build({\r\n type: 'text',\r\n label: 'Address',\r\n style: 'secondary',\r\n value: filterValues.address == '%' ? '' : filterValues.address,\r\n });\r\n\r\n const btnFilterWrap = document.createElement('div');\r\n btnFilterWrap.classList.add('btnWrap');\r\n applyFilterBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n POPUP.hide(filterPopup);\r\n },\r\n });\r\n btnFilterWrap.appendChild(applyFilterBtn);\r\n btnFilterWrap.appendChild(cancelFilterBtn);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'familyNameBtn') filterPopup.appendChild(familyNameInput);\r\n if (IsShow == 'ALL' || IsShow == 'primaryPhoneBtn') filterPopup.appendChild(primaryPhoneInput);\r\n if (IsShow == 'ALL' || IsShow == 'addressBtn') filterPopup.appendChild(addressInput);\r\n filterPopup.appendChild(btnFilterWrap);\r\n\r\n POPUP.show(filterPopup);\r\n setupFilterEvents();\r\n }\r\n function setupFilterEvents() {\r\n newFilterValues = {};\r\n\r\n familyNameInput.addEventListener('input', event => {\r\n newFilterValues.familyName = event.target.value;\r\n });\r\n\r\n primaryPhoneInput.addEventListener('input', event => {\r\n newFilterValues.primaryPhone = event.target.value;\r\n });\r\n\r\n addressInput.addEventListener('input', event => {\r\n newFilterValues.address = event.target.value;\r\n });\r\n\r\n applyFilterBtn.addEventListener('click', async e => {\r\n if (!applyFilterBtn.classList.contains('disabled')) {\r\n applyFilter();\r\n POPUP.hide(filterPopup);\r\n }\r\n });\r\n }\r\n\r\n async function applyFilter() {\r\n filterValues = { ...filterValues, ...newFilterValues };\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Data...');\r\n pageWrap.removeChild(overviewTable);\r\n pageWrap.appendChild(spinner);\r\n\r\n fSSData = await FSSAjax.getFSSPageData({\r\n token: $.session.Token,\r\n familyName: filterValues.familyName,\r\n primaryPhone: filterValues.primaryPhone,\r\n address: filterValues.address,\r\n appName: $.session.applicationName,\r\n });\r\n\r\n pageWrap.removeChild(spinner);\r\n\r\n buildOverviewTable();\r\n const newfilteredByData = buildFilteredByData();\r\n pageWrap.replaceChild(newfilteredByData, filteredByData);\r\n filteredByData = newfilteredByData;\r\n }\r\n\r\n function editFamiliesButton() {\r\n return button.build({\r\n text: 'Edit Families',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: async () => {\r\n if (!editFamily.classList.contains('disabled')) {\r\n EditFamilies.init();\r\n }\r\n },\r\n });\r\n }\r\n\r\n function backButton() {\r\n return button.build({\r\n text: 'BACK',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => {\r\n roster2.clearSelectedConsumers();\r\n roster2.clearActiveConsumers();\r\n FSS.init()\r\n },\r\n });\r\n }\r\n\r\n\r\n function buildOverviewTable() {\r\n groupChildData();\r\n groupSubChildData();\r\n\r\n overviewTable = document.createElement('div');\r\n overviewTable.classList.add('fssTable');\r\n\r\n const mainHeading = document.createElement('div');\r\n mainHeading.classList.add('fssTable__header');\r\n mainHeading.innerHTML = `\r\n
    \r\n
    Family Name
    \r\n
    Address
    \r\n
    Primary Phone
    \r\n
    Notes
    \r\n
    \r\n `;\r\n overviewTable.appendChild(mainHeading);\r\n\r\n fSSData.pageDataParent.forEach(parent => {\r\n const familyID = parent.familyId;\r\n var eventName;\r\n const notes = parent.notes == null ? '' : parent.notes;\r\n const rowWrap = document.createElement('div');\r\n rowWrap.classList.add('fssTable__subTableWrap');\r\n\r\n // TOP LEVEL ROW\r\n //---------------------------------\r\n const mainDataRow = document.createElement('div');\r\n mainDataRow.classList.add('fssTable__mainDataRow', 'fssTable__dataRow');\r\n mainDataRow.value = parent.familyId;\r\n const endIcon = document.createElement('div');\r\n endIcon.classList.add('fssTable__endIcon');\r\n\r\n const toggleIcon = document.createElement('div');\r\n toggleIcon.id = 'authToggle';\r\n toggleIcon.classList.add('fssTable__endIcon');\r\n toggleIcon.innerHTML = icons['keyArrowRight'];\r\n mainDataRow.innerHTML = ` \r\n
    ${parent.familyName}
    \r\n
    ${parent.address}
    \r\n
    ${parent.primaryPhone}
    \r\n
    ${notes}
    \r\n `;\r\n mainDataRow.prepend(toggleIcon);\r\n if ($.session.FSSUpdate == true) {\r\n endIcon.innerHTML = icons['add'];\r\n } else {\r\n endIcon.innerHTML = `
    `;\r\n }\r\n mainDataRow.appendChild(endIcon);\r\n rowWrap.appendChild(mainDataRow);\r\n\r\n // SUB ROWS\r\n //---------------------------------\r\n const subRowWrap = document.createElement('div');\r\n subRowWrap.classList.add('fssTable__subRowWrap');\r\n\r\n const subHeading = document.createElement('div');\r\n subHeading.classList.add('fssTable__subHeader');\r\n subHeading.innerHTML = `\r\n
    \r\n
    Start Date
    \r\n
    End Date
    \r\n
    Co-Pay %
    \r\n
    Allocation
    \r\n
    Encumbered
    \r\n
    Amt. Paid
    \r\n
    Balance
    \r\n
    Funding
    \r\n
    \r\n `;\r\n subRowWrap.appendChild(subHeading);\r\n\r\n if (fSSData.pageDataChild[familyID]) {\r\n fSSData.pageDataChild[familyID].sort((a, b) => {\r\n return parseInt(a.itemnum) - parseInt(b.itemnum);\r\n });\r\n\r\n fSSData.pageDataChild[familyID].forEach(child => {\r\n const fundingSourceID = child.fundingSourceID;\r\n const fID = child.familyId;\r\n const authId = child.authId;\r\n const encumbered = child.encumbered == null ? '0.0' : child.encumbered;\r\n const amtPaid = child.amtPaid == null ? '0.0' : child.amtPaid;\r\n const subDataRow = document.createElement('div');\r\n var startDate =\r\n child.startDate == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(child.startDate.split('T')[0]));\r\n var endDate =\r\n child.endDate == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(child.endDate.split('T')[0]));\r\n subDataRow.classList.add('fssTable__subDataRow', 'fssTable__dataRow');\r\n const endIconSub = document.createElement('div');\r\n endIconSub.classList.add('fssTable__endIcon');\r\n const toggleIconSub = document.createElement('div');\r\n toggleIconSub.id = 'authToggle';\r\n toggleIconSub.classList.add('fssTable__endIcon');\r\n toggleIconSub.innerHTML = icons['keyArrowRight'];\r\n\r\n subDataRow.innerHTML = `\r\n
    ${startDate}
    \r\n
    ${endDate}
    \r\n
    ${child.coPay}
    \r\n
    ${child.allocation}
    \r\n
    ${encumbered}
    \r\n
    ${amtPaid}
    \r\n
    ${child.balance}
    \r\n
    ${child.funding}
    \r\n\r\n `;\r\n subDataRow.prepend(toggleIconSub);\r\n if ($.session.FSSUpdate == true) {\r\n endIconSub.innerHTML = icons['add'];\r\n } else {\r\n endIconSub.innerHTML = `
    `;\r\n }\r\n subDataRow.appendChild(endIconSub);\r\n subRowWrap.appendChild(subDataRow);\r\n\r\n endIconSub.addEventListener('click', e => {\r\n addFamilyUtilization(child.familyId, child.authId, fundingSourceID);\r\n });\r\n\r\n // SUB CHILD ROWS\r\n //---------------------------------\r\n const subChildRowWrap = document.createElement('div');\r\n subChildRowWrap.classList.add('fssTable__subChildRowWrap');\r\n\r\n const subChildHeading = document.createElement('div');\r\n subChildHeading.classList.add('fssTable__subChildHeader');\r\n subChildHeading.innerHTML = `\r\n
    \r\n
    Family Member
    \r\n
    Service Code
    \r\n
    Vendor
    \r\n
    Encumbered
    \r\n
    Paid amount
    \r\n
    Date Paid
    \r\n
    \r\n `;\r\n subChildRowWrap.appendChild(subChildHeading);\r\n\r\n if (fSSData.pageDataSubChild[authId]) {\r\n fSSData.pageDataSubChild[authId].sort((a, b) => {\r\n return parseInt(a.itemnum) - parseInt(b.itemnum);\r\n });\r\n\r\n fSSData.pageDataSubChild[authId].forEach(subChild => {\r\n const aID = subChild.authId;\r\n const encumbered = subChild.encumbered == null ? '0.0' : subChild.encumbered;\r\n const paidAmt = subChild.paidAmt == null ? '0.0' : subChild.paidAmt;\r\n const subChildDataRow = document.createElement('div');\r\n var paidDate =\r\n subChild.paidDate == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(subChild.paidDate.split('T')[0]));\r\n\r\n subChildDataRow.classList.add('fssTable__subChildDataRow', 'fssTable__dataRow');\r\n const endIconSub = document.createElement('div');\r\n endIconSub.classList.add('fssTable__endIcon');\r\n\r\n\r\n subChildDataRow.innerHTML = `\r\n
    \r\n
    ${subChild.familyMember}
    \r\n
    ${subChild.serviceCode}
    \r\n
    ${subChild.Vendor}
    \r\n
    ${encumbered}
    \r\n
    ${paidAmt}
    \r\n
    ${paidDate}
    \r\n `;\r\n if ($.session.FSSUpdate == true) {\r\n endIconSub.innerHTML = icons['delete'];\r\n } else {\r\n endIconSub.innerHTML = `
    `;\r\n }\r\n subChildDataRow.appendChild(endIconSub);\r\n subChildRowWrap.appendChild(subChildDataRow);\r\n\r\n subChildDataRow.addEventListener('click', e => {\r\n //subChild.authDetailId subChild.authId\r\n });\r\n });\r\n }\r\n toggleIconSub.addEventListener('click', e => {\r\n const toggle = document.querySelector('#authToggle');\r\n eventName = 'toggle';\r\n if (subChildRowWrap.classList.contains('active')) {\r\n // close it\r\n subChildRowWrap.classList.remove('active');\r\n toggleIconSub.innerHTML = icons.keyArrowRight;\r\n } else {\r\n // open it\r\n subChildRowWrap.classList.add('active');\r\n toggleIconSub.innerHTML = icons.keyArrowDown;\r\n }\r\n });\r\n\r\n subRowWrap.appendChild(subChildRowWrap);\r\n });\r\n }\r\n\r\n toggleIcon.addEventListener('click', e => {\r\n const toggle = document.querySelector('#authToggle');\r\n eventName = 'toggle';\r\n if (subRowWrap.classList.contains('active')) {\r\n // close it\r\n subRowWrap.classList.remove('active');\r\n toggleIcon.innerHTML = icons.keyArrowRight;\r\n } else {\r\n // open it\r\n subRowWrap.classList.add('active');\r\n toggleIcon.innerHTML = icons.keyArrowDown;\r\n }\r\n });\r\n\r\n endIcon.addEventListener('click', e => {\r\n addFamilyAuthorization(parent.familyId)\r\n });\r\n\r\n // ASSEMBLY\r\n //---------------------------------\r\n rowWrap.appendChild(subRowWrap);\r\n overviewTable.appendChild(rowWrap);\r\n });\r\n\r\n pageWrap.appendChild(overviewTable);\r\n }\r\n\r\n function groupChildData() {\r\n if (!fSSData.pageDataChild) {\r\n return;\r\n }\r\n\r\n const groupedChildren = fSSData.pageDataChild.reduce((obj, child) => {\r\n if (!obj[child.familyId]) {\r\n obj[child.familyId] = [];\r\n obj[child.familyId].push(child);\r\n } else {\r\n obj[child.familyId].push(child);\r\n }\r\n\r\n return obj;\r\n }, {});\r\n\r\n fSSData.pageDataChild = { ...groupedChildren };\r\n }\r\n\r\n function groupSubChildData() {\r\n if (!fSSData.pageDataSubChild) {\r\n return;\r\n }\r\n\r\n const groupedChildren = fSSData.pageDataSubChild.reduce((obj, child) => {\r\n if (!obj[child.authId]) {\r\n obj[child.authId] = [];\r\n obj[child.authId].push(child);\r\n } else {\r\n obj[child.authId].push(child);\r\n }\r\n\r\n return obj;\r\n }, {});\r\n\r\n fSSData.pageDataSubChild = { ...groupedChildren };\r\n }\r\n\r\n function addFamilyAuthorization(familyId) {\r\n\r\n authorizationPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerText = 'New Family Authorization';\r\n\r\n // inputs \r\n newStartDate = input.build({\r\n id: 'newStartDate',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n value: UTIL.getTodaysDate(),\r\n });\r\n startDateVal = UTIL.getTodaysDate()\r\n\r\n newEndDate = input.build({\r\n id: 'newEndDate',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n });\r\n coPay = input.build({\r\n id: 'coPay',\r\n type: 'number',\r\n label: 'Copay %',\r\n style: 'secondary',\r\n attributes: [\r\n { key: 'min', value: '0' },\r\n { key: 'max', value: '99' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n\r\n allocation = input.build({\r\n id: 'allocation',\r\n type: 'text',\r\n label: 'Allocation',\r\n style: 'secondary',\r\n value: '$',\r\n });\r\n\r\n fundingSourceDropdown = dropdown.build({\r\n id: 'fundingSourceDropdown',\r\n label: \"Payee\",\r\n dropdownId: \"fundingSourceDropdown\",\r\n });\r\n\r\n APPLY_BTN = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n await saveAuthorizationData(familyId);\r\n POPUP.hide(authorizationPopup);\r\n }\r\n },\r\n });\r\n\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n authorizationPopup.appendChild(heading);\r\n authorizationPopup.appendChild(newStartDate);\r\n authorizationPopup.appendChild(newEndDate);\r\n authorizationPopup.appendChild(coPay);\r\n authorizationPopup.appendChild(allocation);\r\n authorizationPopup.appendChild(fundingSourceDropdown);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(APPLY_BTN);\r\n popupbtnWrap.appendChild(CANCEL_BTN);\r\n authorizationPopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(authorizationPopup);\r\n fundingDropdownPopulate();\r\n authorizationPopupEventListeners();\r\n authorizationRequiredFieldsOfPopup();\r\n }\r\n\r\n function authorizationPopupEventListeners() {\r\n coPay.addEventListener('input', event => {\r\n coPayVal = event.target.value;\r\n authorizationRequiredFieldsOfPopup();\r\n });\r\n\r\n allocation.addEventListener('input', event => {\r\n allocationVal = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(allocationVal)) {\r\n document.getElementById('allocation').value = '$';\r\n }\r\n else if (allocationVal.includes('.') && (allocationVal.match(/\\./g).length > 1 || allocationVal.toString().split('.')[1].length > 2)) {\r\n document.getElementById('allocation').value = '$';\r\n }\r\n if (allocationVal.includes('-') || allocationVal.includes(' ')) {\r\n document.getElementById('allocation').value = '$';\r\n }\r\n if (allocationVal.includes('$') && allocationVal.match(/\\$/g).length > 1) {\r\n document.getElementById('allocation').value = '$';\r\n }\r\n allocationVal = allocationVal.replace('$', '');\r\n authorizationRequiredFieldsOfPopup();\r\n });\r\n\r\n fundingSourceDropdown.addEventListener('change', event => {\r\n fundingSourceVal = event.target.options[event.target.selectedIndex].id;\r\n authorizationRequiredFieldsOfPopup();\r\n });\r\n newStartDate.addEventListener('input', event => {\r\n startDateVal = event.target.value;\r\n authorizationRequiredFieldsOfPopup();\r\n });\r\n newEndDate.addEventListener('input', event => {\r\n endDateVal = event.target.value;\r\n authorizationRequiredFieldsOfPopup();\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(authorizationPopup);\r\n });\r\n }\r\n\r\n function authorizationRequiredFieldsOfPopup() {\r\n var allocate = allocation.querySelector('#allocation');\r\n var fundingSource = fundingSourceDropdown.querySelector('#fundingSourceDropdown');\r\n var startDate = newStartDate.querySelector('#newStartDate');\r\n var endDate = newEndDate.querySelector('#newEndDate');\r\n var cPay = coPay.querySelector('#coPay');\r\n\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n\r\n if (fundingSource.value === '') {\r\n fundingSourceDropdown.classList.add('errorPopup');\r\n } else {\r\n fundingSourceDropdown.classList.remove('errorPopup');\r\n }\r\n\r\n if (cPay.value != '' && parseInt(cPay.value) > 99) {\r\n coPay.classList.add('errorPopup');\r\n } else {\r\n coPay.classList.remove('errorPopup');\r\n }\r\n\r\n if (allocate.value === '' || allocate.value === '$' || allocate.value.includes('-') || !reg.test(allocate.value)) {\r\n allocation.classList.add('errorPopup');\r\n } else {\r\n allocation.classList.remove('errorPopup');\r\n }\r\n\r\n if (startDate.value === '') {\r\n newStartDate.classList.add('errorPopup');\r\n } else {\r\n newStartDate.classList.remove('errorPopup');\r\n }\r\n\r\n if (endDate.value === '' || startDate.value > endDate.value) {\r\n newEndDate.classList.add('errorPopup');\r\n } else {\r\n newEndDate.classList.remove('errorPopup');\r\n }\r\n\r\n setAuthorizationBtnStatusOfPopup();\r\n }\r\n\r\n async function fundingDropdownPopulate() {\r\n const {\r\n getFundingResult: Fundings,\r\n } = await FSSAjax.getFunding();\r\n\r\n let data = Fundings.map((fundings) => ({\r\n id: fundings.id,\r\n value: fundings.id,\r\n text: fundings.name\r\n }));\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"fundingSourceDropdown\", data, '');\r\n }\r\n\r\n function setAuthorizationBtnStatusOfPopup() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function saveAuthorizationData(familyId) {\r\n await FSSAjax.insertAuthorization({\r\n token: $.session.Token,\r\n coPay: coPayVal,\r\n allocation: allocationVal,\r\n fundingSource: fundingSourceVal,\r\n startDate: startDateVal,\r\n endDate: endDateVal,\r\n userId: $.session.UserId,\r\n familyID: familyId,\r\n });\r\n applyFilter();\r\n }\r\n\r\n\r\n\r\n function addFamilyUtilization(familyId, authId, fundingSourceID) {\r\n\r\n UtilizationPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerText = 'New Family Utilization';\r\n\r\n // inputs \r\n familyMemberDropdown = dropdown.build({\r\n id: 'familyMemberDropdown',\r\n label: \"Family Member\",\r\n dropdownId: \"familyMemberDropdown\",\r\n });\r\n\r\n serviceCodeDropdown = dropdown.build({\r\n id: 'serviceCodeDropdown',\r\n label: \"Service Code\",\r\n dropdownId: \"serviceCodeDropdown\",\r\n });\r\n\r\n vendorDropdown = dropdown.build({\r\n id: 'vendorDropdown',\r\n label: \"Vendor\",\r\n dropdownId: \"vendorDropdown\",\r\n });\r\n\r\n encumberedInputs = input.build({\r\n id: 'encumbered',\r\n type: 'text',\r\n label: 'Encumbered',\r\n style: 'secondary',\r\n });\r\n\r\n paidAmountInputs = input.build({\r\n id: 'paidAmountInputs',\r\n type: 'text',\r\n label: 'Paid amount',\r\n style: 'secondary',\r\n });\r\n\r\n datePaid = input.build({\r\n id: 'datePaid',\r\n type: 'date',\r\n label: 'Date Paid',\r\n style: 'secondary',\r\n });\r\n\r\n UAPPLY_BTN = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!UAPPLY_BTN.classList.contains('disabled')) {\r\n await saveUtilizationData(familyId, authId);\r\n POPUP.hide(UtilizationPopup);\r\n }\r\n },\r\n });\r\n\r\n UCANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n var LineBr = document.createElement('br');\r\n UtilizationPopup.appendChild(heading);\r\n UtilizationPopup.appendChild(LineBr);\r\n UtilizationPopup.appendChild(LineBr);\r\n UtilizationPopup.appendChild(familyMemberDropdown);\r\n UtilizationPopup.appendChild(serviceCodeDropdown);\r\n UtilizationPopup.appendChild(vendorDropdown);\r\n\r\n\r\n UtilizationPopup.appendChild(encumberedInputs);\r\n UtilizationPopup.appendChild(paidAmountInputs);\r\n\r\n UtilizationPopup.appendChild(datePaid);\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(UAPPLY_BTN);\r\n popupbtnWrap.appendChild(UCANCEL_BTN);\r\n UtilizationPopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(UtilizationPopup);\r\n UtilizationDropdownPopulate(fundingSourceID);\r\n UtilizationPopupEventListeners();\r\n UtilizationRequiredFieldsOfPopup();\r\n }\r\n\r\n function UtilizationPopupEventListeners() { \r\n encumberedInputs.addEventListener('input', event => {\r\n encumberedInputsVal = event.target.value;\r\n });\r\n familyMemberDropdown.addEventListener('change', event => {\r\n familyMemberDropdownVal = event.target.options[event.target.selectedIndex].id;\r\n UtilizationRequiredFieldsOfPopup();\r\n });\r\n serviceCodeDropdown.addEventListener('change', event => {\r\n serviceCodeDropdownVal = event.target.options[event.target.selectedIndex].id;\r\n UtilizationRequiredFieldsOfPopup();\r\n });\r\n vendorDropdown.addEventListener('change', event => {\r\n vendorDropdownVal = event.target.options[event.target.selectedIndex].id;\r\n });\r\n paidAmountInputs.addEventListener('input', event => {\r\n paidAmountInputsVal = event.target.value;\r\n UtilizationRequiredFieldsOfPopup();\r\n });\r\n datePaid.addEventListener('input', event => {\r\n datePaidVal = event.target.value;\r\n UtilizationRequiredFieldsOfPopup();\r\n });\r\n\r\n UCANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(UtilizationPopup);\r\n });\r\n }\r\n\r\n function UtilizationRequiredFieldsOfPopup() {\r\n var familyMemberVal = familyMemberDropdown.querySelector('#familyMemberDropdown');\r\n var serviceCodeVal = serviceCodeDropdown.querySelector('#serviceCodeDropdown');\r\n var paidAmountval = paidAmountInputs.querySelector('#paidAmountInputs');\r\n var datePaidVal = datePaid.querySelector('#datePaid');\r\n\r\n if (familyMemberVal.value === '') {\r\n familyMemberDropdown.classList.add('errorPopup');\r\n } else {\r\n familyMemberDropdown.classList.remove('errorPopup');\r\n }\r\n\r\n if (serviceCodeVal.value === '') {\r\n serviceCodeDropdown.classList.add('errorPopup');\r\n } else {\r\n serviceCodeDropdown.classList.remove('errorPopup');\r\n }\r\n\r\n if (paidAmountval.value === '' && datePaidVal.value != '') {\r\n paidAmountInputs.classList.add('errorPopup');\r\n } else {\r\n paidAmountInputs.classList.remove('errorPopup');\r\n }\r\n\r\n if (datePaidVal.value === '' && paidAmountval.value != '') {\r\n datePaid.classList.add('errorPopup');\r\n } else {\r\n datePaid.classList.remove('errorPopup');\r\n }\r\n\r\n setUtilizationBtnStatusOfPopup();\r\n }\r\n\r\n async function UtilizationDropdownPopulate(fundingSourceID) {\r\n const {\r\n getFamilyMembersDropDownResult: FamilyMembers,\r\n } = await FSSAjax.getFamilyMembersDropDown();\r\n\r\n let familyMembersData = FamilyMembers.map((familyMembers) => ({\r\n id: familyMembers.id,\r\n value: familyMembers.id,\r\n text: familyMembers.name\r\n }));\r\n familyMembersData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"familyMemberDropdown\", familyMembersData, '');\r\n\r\n const {\r\n getServiceCodesResult: ServiceCode,\r\n } = await FSSAjax.getServiceCodes(fundingSourceID);\r\n\r\n let serviceCodeData = ServiceCode.map((serviceCode) => ({\r\n id: serviceCode.id,\r\n value: serviceCode.id,\r\n text: serviceCode.name\r\n }));\r\n serviceCodeData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"serviceCodeDropdown\", serviceCodeData, '');\r\n\r\n const {\r\n getVendorsResult: Vendors,\r\n } = await FSSAjax.getVendors();\r\n\r\n let vendorsData = Vendors.map((vendors) => ({\r\n id: vendors.id,\r\n value: vendors.id,\r\n text: vendors.name\r\n }));\r\n vendorsData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"vendorDropdown\", vendorsData, '');\r\n }\r\n\r\n function setUtilizationBtnStatusOfPopup() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n UAPPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n UAPPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function saveUtilizationData(familyId, authId) {\r\n await FSSAjax.insertUtilization({\r\n token: $.session.Token,\r\n encumbered: encumberedInputsVal,\r\n familyMember: familyMemberDropdownVal,\r\n serviceCode: serviceCodeDropdownVal,\r\n paidAmount: paidAmountInputsVal,\r\n vendor: vendorDropdownVal,\r\n datePaid: datePaidVal,\r\n userId: $.session.UserId,\r\n familyID: familyId,\r\n authID: authId,\r\n consumerID: selectedConsumersId,\r\n });\r\n applyFilter();\r\n }\r\n\r\n function formatDate(date) {\r\n if (!date) return '';\r\n\r\n return UTIL.abbreviateDateYear(UTIL.formatDateFromIso(date.split('T')[0]));\r\n }\r\n function init() {\r\n setActiveModuleAttribute('FSS');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadFSSLanding,\r\n };\r\n})(); \r\n","var FSSAjax = (function () {\r\n // FSS Main/Landing Page\r\n \r\n async function getFSSPageData(retrieveData) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getFSSPageData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getFSSPageDataResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n function getActiveInactiveFamilylist(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getActiveInactiveFamilylist/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"isActive\":\"' +\r\n dataObj.isActive +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getActiveInactiveFamilylistResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n async function getFamilyInfoByID(familyId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getFamilyInfoByID/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"familyId\":\"' +\r\n familyId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function updateFamilyInfo(retrieveData) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateFamilyInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateFamilyInfoResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getFamilyMembers(familyID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getFamilyMembers/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"familyID\":\"' +\r\n familyID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getMembers() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getMembers/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token + \r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertMemberInfo(retrieveData) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertMemberInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.insertMemberInfoResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function deleteMemberInfo(retrieveData) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteMemberInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.deleteMemberInfoResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getFunding() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getFunding/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertAuthorization(retrieveData) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertAuthorization/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.insertAuthorizationResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function insertUtilization(retrieveData) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertUtilization/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.insertUtilizationResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getFamilyMembersDropDown() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getFamilyMembersDropDown/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getServiceCodes(fundingSourceID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceCodes/',\r\n data:\r\n '{\"fundingSourceID\":\"' +\r\n fundingSourceID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getVendors() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVendors/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n\r\n return {\r\n getFSSPageData,\r\n getActiveInactiveFamilylist,\r\n getFamilyInfoByID,\r\n updateFamilyInfo,\r\n getFamilyMembers,\r\n getMembers,\r\n insertMemberInfo,\r\n deleteMemberInfo,\r\n getFunding,\r\n insertAuthorization,\r\n insertUtilization,\r\n getFamilyMembersDropDown,\r\n getServiceCodes,\r\n getVendors\r\n };\r\n})();\r\n","var incidentTracking = (function() {\r\n // DATA\r\n\t//---------------------\r\n\tvar involvementTypes;\r\n var incidentLocations;\r\n\tvar categories;\r\n var employeeNames;\r\n\r\n function getInvolvementTypes() {\r\n if (involvementTypes) return [...involvementTypes];\r\n }\r\n function getLocations() {\r\n if (incidentLocations) return [...incidentLocations];\r\n }\r\n function getCategories() {\r\n if (categories) return [...categories];\r\n }\r\n function getEmployeeNames() {\r\n if (employeeNames) return [...employeeNames];\r\n }\r\n function getDropdownData(callback) {\r\n // gets all the data needed for dropdowns\r\n var getInvolvementTypesPromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.getInvolvementTypeData(results => {\r\n involvementTypes = results;\r\n fulfill();\r\n });\r\n });\r\n var getIncidentCategoriesPromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.getIncidentCategories(results => {\r\n categories = results;\r\n fulfill();\r\n });\r\n });\r\n var getIncidentLocationDetailPromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.getIncidentLocationDetail(results => {\r\n incidentLocations = results;\r\n fulfill();\r\n });\r\n });\r\n var getEmployeesInvolvedEmployeeDropdownPromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.getEmployeesInvolvedEmployeeDropdown(results => {\r\n employeeNames = results;\r\n fulfill();\r\n });\r\n });\r\n\r\n Promise.all([\r\n getInvolvementTypesPromise,\r\n getIncidentCategoriesPromise,\r\n getIncidentLocationDetailPromise,\r\n getEmployeesInvolvedEmployeeDropdownPromise\r\n ]).then(() => {\r\n callback();\r\n });\r\n }\r\n\r\n function loadLandingPage() {\r\n var newIncidentBtn = button.build({\r\n text: 'New Incident',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: newIncident.init\r\n });\r\n var overviewBtn = button.build({\r\n text: 'Review Incidents',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: incidentOverview.init\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n\r\n btnWrap.appendChild(newIncidentBtn);\r\n btnWrap.appendChild(overviewBtn);\r\n\r\n PROGRESS.SPINNER.show('Loading Incident Tracking...');\r\n getDropdownData(() => {\r\n DOM.clearActionCenter();\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n });\r\n }\r\n\r\n return {\r\n getInvolvementTypes,\r\n getLocations,\r\n getCategories,\r\n getEmployeeNames,\r\n loadLandingPage,\r\n getDropdownData, //For Dashboard\r\n }\r\n})();","var incidentTrackingAjax = (function () {\r\n //'use-strict';\r\n //Incident Save\r\n //Send incident notification\r\n function sendNotification(notificationType, employeeId, data) {\r\n // notificationType either Insert or Update\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/sendITNotification/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"notificationType\":\"' +\r\n notificationType +\r\n '\",\"employeeId\":\"' +\r\n employeeId +\r\n '\",\"incidentTypeDesc\":\"' +\r\n data.incidentTypeDesc +\r\n '\",\"incidentDate\":\"' +\r\n data.incidentDate +\r\n '\",\"incidentTime\":\"' +\r\n data.incidentTime +\r\n '\",\"subcategoryId\":\"' +\r\n data.subcategoryId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITInvolvementTypeDataResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Drop Downs Creation\r\n //Involvment Types\r\n function getInvolvementTypeData(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITInvolvementTypeData/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITInvolvementTypeDataResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Incident Categories\r\n function getIncidentCategories(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITIncidentCategories/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITIncidentCategoriesResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Locations Detail\r\n function getIncidentLocationDetail(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITIncidentLocationDetail/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITIncidentLocationDetailResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Service Locations\r\n function getConsumerServiceLocations(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITConsumerServiceLocations/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITConsumerServiceLocationsResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Days back\r\n function updateIncidentTrackingDaysBack() {\r\n updatedReviewDays = $('#incidenttrackingdaysback').val();\r\n if (parseInt(updatedReviewDays) > parseInt('365')) {\r\n updatedReviewDays = 365;\r\n $('#incidenttrackingdaysback').val('365');\r\n alert('Days back must be 365 or less.');\r\n }\r\n $.session.defaultIncidentTrackingReviewDays = updatedReviewDays;\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateIncidentTrackingDaysBack/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"updatedReviewDays\":\"' + updatedReviewDays + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.updateIncidentTrackingDaysBackResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Get review table data\r\n function getITReviewTableData(retrieveData, callback) {\r\n //retrieveData is = token, userId, locationId, consumerId, employeeId, subcategoryId, fromDate, toDate\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITReviewTableData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITReviewTableDataResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n // callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n //Review page locations\r\n function getReviewPageLocations(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLocationsIncidentTrackingReviewPage/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getLocationsIncidentTrackingReviewPageResult;\r\n callback(res);\r\n //var allString = '000AllY';//this is to add the 'ALL' option\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Employees Involved Employee Dropdown\r\n function getEmployeesInvolvedEmployeeDropdown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeesInvolvedEmployeeDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getEmployeesInvolvedEmployeeDropdownResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getITReviewPageEmployeeListAndSubList(supervisorId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITReviewPageEmployeeListAndSubList/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"supervisorId\":\"' + supervisorId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n function getIncidentEditReviewDataAllObjects(incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getIncidentEditReviewDataAllObjects/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"incidentId\":\"' + incidentId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getIncidentEditReviewDataAllObjectsResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n function deleteITIncident(incidentId) {\r\n // notificationType either Insert or Update\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteAnywhereITIncident/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"incidentId\":\"' + incidentId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITInvolvementTypeDataResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function saveUpdateITIncident(incidentData, callback) {\r\n var notifyArr = incidentData.notifyEmployeeString.split('|');\r\n var employeeIdArr = incidentData.employeeIdString.split('|');\r\n var notificationType = incidentData.saveUpdate === 'Save' ? 'Insert' : 'Update';\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITIncident/',\r\n data: JSON.stringify(incidentData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITIncidentResult;\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n for (let i = 0; i < notifyArr.length; i++) {\r\n if (notifyArr[i] === 'Y') {\r\n sendNotification(notificationType, employeeIdArr[i], incidentData);\r\n }\r\n }\r\n //notifyArr.forEach((notify, index) => {\r\n // if (notify === 'Y') {\r\n // sendNotification(notificationType, employeeIdArr[index], incidentData);\r\n // }\r\n //});\r\n if (callback) callback(res);\r\n }, 1000);\r\n //for loop' if notify emp is y call procedure with person id of employee with checked box\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n // consumer involved DROPDOWN data\r\n function getReviewedByDropdown(callback) {\r\n // notificationType either Insert or Update\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getReviewedByDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getReviewedByDropdownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getInjuryLocationsDropdown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInjuryLocationsDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getInjuryLocationsDropdownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getInjuryTypesDropdown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInjuryTypesDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getInjuryTypesDropdownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getRiskAndCauseDropdown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getRiskAndCauseDropdowns/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.GetRiskAndCauseDropdownsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerFollowUpTypes(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerFollowUpTypes/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerFollowUpTypesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerBehaviorTypes(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerBehaviorTypes/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerBehaviorTypesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitReportingCategories(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitReportingCategories/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitReportingCategoriesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getInterventionTypesDropdown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInterventionTypesDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getInterventionTypesDropdownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n // consumer involved REVIEW data\r\n function getitConsumerInterventions(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerInterventions/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerInterventionsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerInjuries(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerInjuries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerInjuriesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerReviews(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerReviews/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerReviewsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerFollowUps(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerFollowUps/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerFollowUpsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerReporting(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerReporting/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerReportingResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerBehavior(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerBehaviors/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerBehaviorsResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n console.log(xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Consumer Folow Ups Specific Alters\r\n function itDeleteConsumerFollowUp(itConsumerFollowUpId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerFollowUp/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\",\"itConsumerFollowUpId\":\"' + itConsumerFollowUpId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerFollowUpResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerFollowUp(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \tconsumerInvolvedId: '',\r\n // \tconsumerFollowUpIdArray: [],\r\n // \tfollowUpTypeIdArray: [],\r\n // \tpersonResponsibleArray: [],\r\n // \tdueDateArray: [],\r\n // \tcompletedDateArray: [],\r\n // \tnotesArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerFollowUp/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerFollowUpResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Injury Alters\r\n function saveUpdateITConsumerInjuries(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // itConsumerInvolvedId: '',\r\n // itConsumerInjuryIdArray: [],\r\n // \tcheckedByNurseArray: [],\r\n // \tcheckedDateArray: [],\r\n // \tdetailsArray: [],\r\n // \titInjuryLocationIdArray: [],\r\n // \titInjuryTypeIdArray: [],\r\n // \ttreatmentArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerInjuries/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerInjuriesResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n function itDeleteConsumerInjuries(itConsumerInjuryId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerInjuries/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"itConsumerInjuryId\":\"' + itConsumerInjuryId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerInjuriesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Intervention Alters\r\n function itDeleteConsumerInterventions(itConsumerInterventionId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerInterventions/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"itConsumerInterventionId\":\"' +\r\n itConsumerInterventionId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerInterventionsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerInterventions(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \titConsumerInvolvedId: '',\r\n // \titConsumerInterventionIdArray: [],\r\n // \taversiveArray: [],\r\n // itConsumerInterventionTypeIdArray: [],\r\n // notesArray: [],\r\n // \tstartTimeArray: [],\r\n // \tstopTimeArray: [],\r\n // \ttimeLengthArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerInterventions/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerInterventionsResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Reporting Alters\r\n function itDeleteConsumerReporting(itConsumerReportingId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerReporting/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"itConsumerReportingId\":\"' +\r\n itConsumerReportingId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerReportingResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerReporting(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \tconsumerInvolvedId: '',\r\n // \tconsumerReportIdArray: [],\r\n // \treportDateArray: [],\r\n // reportTimeArray: [],\r\n // reportingCategoryIdArray: [],\r\n // reportToArray: [],\r\n // reportByArray: [],\r\n // reportMethodArray: [],\r\n // \tnotesArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerReporting/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerReportingResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Review Alters\r\n function itDeleteConsumerReviews(itConsumerReviewId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerReviews/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"itConsumerReviewId\":\"' + itConsumerReviewId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerReviewsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerReviews(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \tconsumerInvolvedId: '',\r\n // \titConsumerReviewIdArray: [],\r\n // \treviewedByArray: [],\r\n // reviewedDateArray: [],\r\n // noteArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerReviews/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerReviewsResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Behavior Alters\r\n function itDeleteConsumerBehavior(itConsumerBehaviorId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerBehavior/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\",\"itConsumerBehaviorId\":\"' + itConsumerBehaviorId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerBehaviorsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerBehaviors(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \tconsumerInvolvedId: '',\r\n // \titConsumerBehaviorIdArray: [],\r\n // \tstartTimeArray: [],\r\n // endTimeArray: [],\r\n // occurrencesArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerBehavior/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerBehaviorsResult;\r\n if (callback) callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n console.log(xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n // User Incident View Tracking\r\n async function updateIncidentViewByUser(retrieveData) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateIncidentViewByUser/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // Generate Incident Tracking Report\r\n function generateIncidentTrackingReport(incidentId, callback) {\r\n data = {\r\n token: $.session.Token,\r\n incidentId: incidentId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/generateIncidentTrackingReport/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.generateIncidentTrackingReportResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function checkIfITReportExists(res, callback) {\r\n data = {\r\n token: $.session.Token,\r\n reportScheduleId: res[0].reportScheduleId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkIfITReportExists/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.checkIfITReportExistsResult;\r\n callback(res, data.reportScheduleId);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n // Send the report to designated emails\r\n function sendIncidentTrackingReport(reportScheduleId, incidentTrackingEmailReportData) {\r\n data = {\r\n token: $.session.Token,\r\n reportScheduleId: reportScheduleId,\r\n toAddresses: incidentTrackingEmailReportData.toAddresses,\r\n ccAddresses: incidentTrackingEmailReportData.ccAddresses,\r\n bccAddresses: incidentTrackingEmailReportData.bccAddresses,\r\n emailSubject: incidentTrackingEmailReportData.emailSubject,\r\n emailBody: incidentTrackingEmailReportData.emailBody,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/sendIncidentTrackingReport/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.sendIncidentTrackingReportResult;\r\n //callback(res, data.reportScheduleId);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n async function getRelationshipData(consumerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getRelationshipData/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n supervisorId: $.session.PeopleId,\r\n consumerId: consumerId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n sendNotification,\r\n getInvolvementTypeData,\r\n getIncidentCategories,\r\n getIncidentLocationDetail,\r\n getConsumerServiceLocations,\r\n updateIncidentTrackingDaysBack,\r\n getITReviewTableData,\r\n getReviewPageLocations,\r\n getEmployeesInvolvedEmployeeDropdown,\r\n getITReviewPageEmployeeListAndSubList,\r\n getIncidentEditReviewDataAllObjects,\r\n deleteITIncident,\r\n saveUpdateITIncident,\r\n getReviewedByDropdown,\r\n getInjuryLocationsDropdown,\r\n getInjuryTypesDropdown,\r\n getRiskAndCauseDropdown,\r\n getitConsumerInterventions,\r\n getitConsumerInjuries,\r\n getitConsumerReviews,\r\n getitConsumerFollowUps,\r\n getitConsumerReporting,\r\n getitConsumerBehavior,\r\n getitConsumerFollowUpTypes,\r\n getitConsumerBehaviorTypes,\r\n getitReportingCategories,\r\n getInterventionTypesDropdown,\r\n itDeleteConsumerFollowUp,\r\n saveUpdateITConsumerFollowUp,\r\n itDeleteConsumerReporting,\r\n saveUpdateITConsumerReporting,\r\n itDeleteConsumerReviews,\r\n saveUpdateITConsumerReviews,\r\n itDeleteConsumerInjuries,\r\n itDeleteConsumerInterventions,\r\n saveUpdateITConsumerInjuries,\r\n saveUpdateITConsumerInterventions,\r\n itDeleteConsumerBehavior,\r\n saveUpdateITConsumerBehaviors,\r\n updateIncidentViewByUser,\r\n generateIncidentTrackingReport,\r\n checkIfITReportExists,\r\n sendIncidentTrackingReport,\r\n getRelationshipData,\r\n };\r\n})();\r\n","function buildInfal() {\r\n var holder = $(\"
    \").addClass(\"infalHolder\"),\r\n header = $(\"
    \").addClass(\"infalHeader\").appendTo(holder),\r\n headerText = $(\"\").addClass(\"infalHeaderText\").html(\"Infal TimeClock\").appendTo(header),\r\n body = $(\"
    \").addClass(\"infalBody\").appendTo(holder),\r\n dropdown = $(\"\").appendTo(body),\r\n button = $(\"\").addClass(\"infalBodyButton\").html(\" \").appendTo(body);\r\n\r\n $(\"#actioncenter\").append(holder);\r\n\r\n InfalGetJobsAjax();\r\n}\r\n\r\nfunction getInfalUsernameDataSetter() {\r\n empId = readCookie(\"id\");\r\n infalAjax.getInfalUserNameAjax(empId, setInfalUserNameToScreen);//Still need to add and implement callback\r\n}\r\n\r\nfunction setInfalUserNameToScreen(res) {\r\n var name = '';\r\n $('result', res).each(function () {\r\n //$.session.Name = $('name', this).text();\r\n name = $('name', this).text();\r\n });\r\n var t = name.split(',');\r\n name = t[1] + ' ' + t[0];\r\n $(\"#firstName\").text(name);\r\n}","var infalAjax = (function() {\r\n\r\n function InfalGetJobsAjax(empId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/InfalGetJobs/\",\r\n //data: '{\"id\":\"' + $.session.PeopleId + '\"}',\r\n //data: '{\"id\":\"' + 1308 + '\"}',\r\n data: JSON.stringify(empId),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.InfalGetJobsResult);\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n } \r\n \r\n function InfalGetClockInsAndOutsAjax(empId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/InfalGetClockInsAndOuts/\",\r\n data: JSON.stringify(empId),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.InfalGetClockInsAndOutsResult);\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n \r\n function InfalClockInAjax(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/InfalClockIn/\",\r\n //data: '{\"id\":\"' + $.session.PeopleId + '\"}',\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n resObj = JSON.parse(res);\r\n callback(resObj);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n \r\n function InfalClockOutAjax(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/InfalClockOut/\",\r\n //data: '{\"id\":\"' + $.session.PeopleId + '\"}',\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n \r\n function getInfalUserNameAjax(empId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getInfalUserName/\",\r\n data: '{\"empId\":\"' + empId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n\treturn {\r\n InfalGetJobsAjax,\r\n InfalGetClockInsAndOutsAjax,\r\n InfalClockInAjax,\r\n InfalClockOutAjax,\r\n getInfalUserNameAjax\r\n\t};\r\n})();","const multiTabs = (function () {\r\n function notifyOtherTabs(message) {\r\n userActivityChannel.postMessage({ type: 'update' });\r\n }\r\n\r\n function newTabOpen(message) {\r\n userActivityChannel.postMessage({ type: 'newTab' });\r\n }\r\n\r\n return {\r\n notifyOtherTabs,\r\n newTabOpen\r\n };\r\n})();\r\n\r\nconst userActivityChannel = new BroadcastChannel('userActivityChannel');\r\n\r\nlocalStorage.setItem('activeChannel', true);\r\n\r\nlet isOriginalTab = true;\r\n\r\nfunction autoLogout() {\r\n var isPopupVisible = false;\r\n var idleTime = 0;\r\n var logoutInterval = setInterval(timerIncrement, 60000);\r\n\r\n function timerIncrement() {\r\n var timeLimit = parseInt($.session.anywhereMinutestotimeout);\r\n idleTime++;\r\n if (idleTime === timeLimit - 1) {\r\n POPUP.show(logoutPopup);\r\n isPopupVisible = true;\r\n }\r\n if (idleTime === timeLimit) setCookieOnFail('');\r\n }\r\n\r\n var logoutMessage = `You've been inactive for a while. For security purposes, we will automatically sign you out in approximately 1 minute.`;\r\n var logoutPopup = POPUP.build({});\r\n logoutPopup.innerHTML += logoutMessage;\r\n\r\n // Broadcast mouse movement event to other tabs\r\n document.addEventListener('mousemove', () => {\r\n if (isPopupVisible) {\r\n POPUP.hide(logoutPopup);\r\n isPopupVisible = false;\r\n }\r\n idleTime = 0;\r\n clearInterval(logoutInterval);\r\n logoutInterval = setInterval(timerIncrement, 60000);\r\n\r\n // Broadcast mouse movement event to other tabs\r\n userActivityChannel.postMessage({ type: 'mouseMove' });\r\n });\r\n\r\n // Broadcast keyboard activity event to other tabs\r\n document.addEventListener('keydown', () => {\r\n if (isPopupVisible) {\r\n POPUP.hide(logoutPopup);\r\n isPopupVisible = false;\r\n }\r\n idleTime = 0;\r\n clearInterval(logoutInterval);\r\n logoutInterval = setInterval(timerIncrement, 60000);\r\n\r\n // Broadcast keyboard activity event to other tabs\r\n userActivityChannel.postMessage({ type: 'keyPress' });\r\n });\r\n\r\n userActivityChannel.addEventListener('message', function (event) {\r\n const message = event.data;\r\n\r\n if (message.type === 'mouseMove' || message.type === 'keyPress') {\r\n // Reset idleTime to zero when there's user activity in other tabs\r\n idleTime = 0;\r\n } else if (message.type === 'buttonClick') {\r\n unloadApp($.loadedApp);\r\n setCookieOnFail('');\r\n } else if (message.type === 'newTab') {\r\n const element = document.getElementById('newTabsPopup');\r\n\r\n if (!element) {\r\n const newTabsPopup = POPUP.build({\r\n id: 'newTabsPopup',\r\n header: 'Attention!',\r\n hideX: true,\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.classList.add('message');\r\n message.innerText =\r\n 'Opening multiple tabs simultaneously may lead to potential data corruption. For optimal system performance and to avoid any issues, please refrain from making changes in multiple tabs simultaneously.';\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const continueBtn = button.build({\r\n text: 'Continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(newTabsPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(continueBtn);\r\n newTabsPopup.appendChild(message);\r\n newTabsPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(newTabsPopup);\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction handleLogoutButtonClick() {\r\n unloadApp($.loadedApp);\r\n setCookieOnFail('');\r\n\r\n // Broadcast the button click event to other tabs\r\n userActivityChannel.postMessage({ type: 'buttonClick' });\r\n}","const oneSpan = (() => {\r\n let oneSpanDocumentStatus;\r\n let oneSpanDocumentData;\r\n\r\n async function checkOneSpanData(planId) {\r\n // Checks if the document has been signed and values are in our database\r\n oneSpanDocumentStatus = await oneSpanAjax.oneSpanCheckDocumentStatus({\r\n token: $.session.Token,\r\n assessmentId: planId\r\n });\r\n \r\n if (oneSpanDocumentStatus[0].signedStatus !== \"\") {\r\n const oneSpanRetrieveData = {\r\n token: $.session.Token,\r\n packageId: oneSpanDocumentStatus[0].packageId,\r\n assessmentID: planId\r\n }\r\n \r\n await oneSpanAjax.oneSpanGetSignedDocuments(oneSpanRetrieveData);\r\n }\r\n }\r\n\r\n function fireDataUpdateEvent(planId) {\r\n // custom event for event listener used on button to run disabled check\r\n const dataUpdateEvent = new CustomEvent(\"data-update\", {\r\n detail: {\r\n data: planId\r\n }\r\n })\r\n\r\n document.dispatchEvent(dataUpdateEvent)\r\n }\r\n\r\n async function shouldBeDisabled(btn, planId, signatureTypeToCheck) {\r\n // gathers the new list of team members and their signature types\r\n const updatedMemberData = await consentAndSignAjax.getConsentAndSignData({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n // disables the btn if there are no team members\r\n if (updatedMemberData.length === 0) {\r\n btn.classList.add('disabled');\r\n }\r\n \r\n // if there is a digital signature type for any team member the button is no logner disabled\r\n for (let i = 0; i < updatedMemberData.length; i++) {\r\n if (updatedMemberData[i].signatureType.includes(signatureTypeToCheck) && updatedMemberData[i].signature === '') {\r\n btn.classList.remove('disabled');\r\n break;\r\n } else {\r\n btn.classList.add('disabled');\r\n }\r\n }\r\n }\r\n\r\n function buildPopupMessage() {\r\n const message = document.createElement('p');\r\n message.classList.add('message');\r\n message.innerText =\r\n 'Are you sure you want to send the Document via One Span?';\r\n return message;\r\n }\r\n\r\n async function sendToOneSpanProgress() {\r\n oneSpanPopup.style.display = 'none';\r\n pendingSave.show('Sending...');\r\n\r\n // Sends the document out via One Span\r\n const sentStatus = await oneSpanAjax.oneSpanBuildSigners(oneSpanDocumentData);\r\n\r\n if (sentStatus === 'success') {\r\n success = true;\r\n } else {\r\n success = false;\r\n }\r\n\r\n const pendingSavePopup = document.querySelector('.pendingSavePopup');\r\n pendingSavePopup.style.display = 'none';\r\n\r\n // Handles popup actions based on whether the One Span delivery was successsful\r\n if (success) {\r\n pendingSave.fulfill('Sent!');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(oneSpanPopup);\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to send, please try again.');\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n oneSpanPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n }\r\n\r\n function showOneSpanPopup() { \r\n oneSpanPopup = POPUP.build({\r\n id: 'sendToOneSpanPopup',\r\n header: 'Send To One Span'\r\n });\r\n \r\n const message = buildPopupMessage();\r\n\r\n //* ACTION BUTTONS\r\n //*----------------------------------\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const continueBtn = button.build({\r\n text: 'Continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n // Shows spinner while the document is being sent via One Span\r\n sendToOneSpanProgress();\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(oneSpanPopup);\r\n },\r\n });\r\n \r\n btnWrap.appendChild(continueBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n oneSpanPopup.appendChild(message);\r\n oneSpanPopup.appendChild(btnWrap);\r\n \r\n POPUP.show(oneSpanPopup);\r\n }\r\n\r\n function buildSendDocumentToOneSpanBtn(planId, teamMemberData) {\r\n const sendDocumentToOneSpanBtn =\r\n button.build({\r\n id: 'sig_addMember',\r\n text: 'REQUEST E-SIGNATURES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n oneSpanDocumentData = {\r\n token: $.session.Token,\r\n assessmentID: planId,\r\n userID: $.session.PeopleId,\r\n versionID: 1,\r\n extraSpace: \"false\",\r\n isp: true,\r\n oneSpan: true\r\n },\r\n\r\n showOneSpanPopup(oneSpanDocumentData)\r\n }\r\n });\r\n\r\n sendDocumentToOneSpanBtn.classList.add('disabled');\r\n\r\n return sendDocumentToOneSpanBtn;\r\n } \r\n \r\n return {\r\n checkOneSpanData,//\r\n buildSendDocumentToOneSpanBtn,\r\n shouldBeDisabled,\r\n fireDataUpdateEvent,\r\n sendToOneSpanProgress//\r\n };\r\n })();","var oneSpanAjax = (function () {\r\n //'use-strict';\r\n\r\n async function oneSpanBuildSigners(retrieveData) {\r\n //token, assessmentID, userID, versionID, extraSpace, isp, oneSpan\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',//\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/oneSpanBuildSigners/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return await data.oneSpanBuildSignersResult; //\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n //function oneSpanBuildSigners() {\r\n // $.ajax({\r\n // type: 'POST',\r\n // url:\r\n // $.webServer.protocol + '://' +\r\n // $.webServer.address + ':' +\r\n // $.webServer.port + '/' +\r\n // $.webServer.serviceName + '/oneSpanBuildSigners/',\r\n // data: '{\"token\":\"' + $.session.Token + '\"}',\r\n // contentType: 'application/json; charset=utf-8',\r\n // dataType: 'json',\r\n // success: function (response, status, xhr) {\r\n // var res;\r\n // try {\r\n // res = response.oneSpanBuildSignersResult;\r\n // //callback(res, null);\r\n // } catch (e) {\r\n // // callback(null, error);\r\n // }\r\n // },\r\n // error: function (xhr, status, error) {\r\n // callback(error, null);\r\n // },\r\n // });\r\n //}\r\n async function oneSpanGetSignedDocuments(retrieveData) {\r\n // token, packageId, planId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/oneSpanGetSignedDocuments/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return await data.oneSpanGetSignedDocumentsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function oneSpanCheckDocumentStatus(retrieveData) {\r\n // token, assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/oneSpanCheckDocumentStatus/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.oneSpanCheckDocumentStatusResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n oneSpanBuildSigners,\r\n oneSpanGetSignedDocuments,\r\n oneSpanCheckDocumentStatus,\r\n };\r\n})();\r\n","const OODEmployers = (() => {\r\n\r\n let addNewEmployerBtn;\r\n let rtnOODMainPageBtn;\r\n\r\n // insert/update employer data\r\n let employerId;\r\n let employerName = '';\r\n let employeraddress1 = '';\r\n let employeraddress2 = '';\r\n let employercity = '';\r\n let employerstate = '';\r\n let employerzipcode = '';\r\n\r\n //employer inputs \r\n let employerInput;\r\n let address1Input;\r\n let address2Input;\r\n let cityInput;\r\n let stateInput;\r\n let zipcodeInput;\r\n\r\n let saveBtn;\r\n let cancelBtn;\r\n\r\n async function init() {\r\n\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n\r\n\r\n let container = document.createElement(\"div\");\r\n // container.classList.add(\"btnWrap\");\r\n var LineBr = document.createElement('br');\r\n\r\n addNewEmployerBtn = button.build({\r\n text: 'Add New Employer',\r\n style: 'secondary',\r\n type: 'contained',\r\n // icon: 'save',\r\n classNames: !$.session.OODInsert ? ['caseNoteSave', 'disabled'] : ['caseNoteSave'],\r\n callback: async () => { buildEmployerPopUp({}, 'insert') },\r\n });\r\n\r\n rtnOODMainPageBtn = button.build({\r\n text: 'Return to OOD Main Page',\r\n style: 'secondary',\r\n type: 'contained',\r\n // icon: 'save',\r\n classNames: ['caseNoteSave'],\r\n callback: async () => { OOD.loadOODLanding() },\r\n });\r\n\r\n OODEmployersTable = await buildEmployersTable();\r\n\r\n container.appendChild(addNewEmployerBtn);\r\n container.appendChild(LineBr);\r\n container.appendChild(OODEmployersTable);\r\n container.appendChild(LineBr);\r\n container.appendChild(rtnOODMainPageBtn);\r\n\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n }\r\n\r\n // build the listing of OOD Entries (based off of filter settings)\r\n async function buildEmployersTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODEmployersTable',\r\n columnHeadings: ['Employer', 'Address', 'City', 'State', 'Zip Code'],\r\n endIcon: true,\r\n // endIcon : ($.session.formsDelete) ? `${icons['delete']}` : null,\r\n\r\n };\r\n\r\n // FAKE DATA : build table data -- see forms.js line 93\r\n // const tableData = [{ values : ['My Employer', '123 State St', 'Kyzyl', 'OH'], endIcon : `${icons['delete']}`, onClick : async () => {buildEmployerPopUp()} }, \r\n // { values : ['Your Employer', '456 Main St', 'Santa Clause', 'IN'], endIcon : `${icons['delete']}`,onClick : async () => {buildEmployerPopUp()} } ];\r\n\r\n\r\n const { getActiveEmployersResult: activeEmployers } = await OODAjax.getActiveEmployersAsync();\r\n\r\n var filteredActiveEmployers = activeEmployers.filter((x) => x.employerId != 0);\r\n\r\n let tableData = filteredActiveEmployers.map((employer) => ({\r\n values: [employer.employerName, employer.address1 + ' ' + employer.address2, employer.city, employer.state, employer.zipcode],\r\n attributes: [{ key: 'employerId', value: employer.employerId }],\r\n endIcon: ((employer.isEmployerIdReferenced == '0') && $.session.OODDelete) ? `${icons['delete']}` : ' ',\r\n id: employer.employerId,\r\n endIconCallback: e => {\r\n e.stopPropagation();\r\n // alert('Delete')\r\n try {\r\n let tableRow = document.getElementById(employer.employerId)\r\n deleteConfirmation(employer.employerId, tableRow);\r\n return;\r\n } catch (err) {\r\n console.error(\"error: \", err);\r\n }\r\n },\r\n onClick: (e) => {\r\n if ($.session.OODUpdate) {\r\n OODAjax.getEmployer(employer.employerId, function (results) {\r\n buildEmployerPopUp(results, 'update');\r\n });\r\n }\r\n },\r\n\r\n }));\r\n\r\n\r\n const oTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = oTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Employer\r\n headers[1].setAttribute('data-type', 'string'); // Address\r\n headers[2].setAttribute('data-type', 'string'); // City\r\n headers[3].setAttribute('data-type', 'string'); // State \r\n headers[4].setAttribute('data-type', 'number'); // Zip Code \r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n\r\n // build Employer pop-up used for adding/editing Employer information\r\n async function buildEmployerPopUp(employerdata, postType) {\r\n\r\n if (employerdata && Object.keys(employerdata).length !== 0) {\r\n\r\n employerId = employerdata[0].employerId;\r\n employerName = employerdata[0].employerName;\r\n employeraddress1 = employerdata[0].address1;\r\n employeraddress2 = employerdata[0].address2;\r\n employercity = employerdata[0].city;\r\n employerstate = employerdata[0].state;\r\n employerzipcode = employerdata[0].zipcode;\r\n\r\n } else {\r\n\r\n employerId = '';\r\n employerName = '';\r\n employeraddress1 = '';\r\n employeraddress2 = '';\r\n employercity = '';\r\n employerstate = '';\r\n employerzipcode = '';\r\n\r\n }\r\n\r\n let editEmployerPopup = POPUP.build({\r\n header: \"Edit this Employer\",\r\n hideX: true,\r\n id: \"editEmployerPopup\"\r\n });\r\n\r\n employerInput = input.build({\r\n id: 'employerInput',\r\n label: 'Employer',\r\n // value: (employerdata) ? employerdata[0].employerName : '',\r\n value: (employerName) ? employerName : '',\r\n });\r\n\r\n address1Input = input.build({\r\n label: 'Address',\r\n // value: (employerdata) ? employerdata[0].address1 : '',\r\n value: (employeraddress1) ? employeraddress1 : '',\r\n\r\n });\r\n\r\n address2Input = input.build({\r\n label: 'Address 2',\r\n //value: (employerdata) ? employerdata[0].address2 : '',\r\n value: (employeraddress2) ? employeraddress2 : '',\r\n\r\n });\r\n\r\n cityInput = input.build({\r\n label: 'City',\r\n // value: (employerdata) ? employerdata[0].city : '',\r\n value: (employercity) ? employercity : '',\r\n });\r\n\r\n stateInput = input.build({\r\n label: 'State',\r\n // value: (employerdata) ? employerdata[0].state : '',\r\n value: (employerstate) ? employerstate : '',\r\n\r\n });\r\n\r\n zipcodeInput = input.build({\r\n label: 'Zip Code',\r\n // value: (employerdata) ? employerdata[0].state : '',\r\n value: (employerzipcode) ? employerzipcode : '',\r\n\r\n });\r\n\r\n saveBtn = button.build({\r\n id: \"addEmployerSaveBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n //callback: () => POPUP.hide(editEmployerPopup) \r\n callback: () => editEmployerPopupDoneBtn(postType)\r\n });\r\n // this.saveButton = saveBtn;\r\n\r\n cancelBtn = button.build({\r\n id: \"addEmployerCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => POPUP.hide(editEmployerPopup)\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n // editEmployerPopup.appendChild(servicesDropdown);\r\n editEmployerPopup.appendChild(employerInput);\r\n editEmployerPopup.appendChild(address1Input);\r\n editEmployerPopup.appendChild(address2Input);\r\n editEmployerPopup.appendChild(cityInput);\r\n editEmployerPopup.appendChild(stateInput);\r\n editEmployerPopup.appendChild(zipcodeInput);\r\n editEmployerPopup.appendChild(btnWrap);\r\n\r\n popUpEventHandlers();\r\n\r\n POPUP.show(editEmployerPopup);\r\n\r\n checkRequiredFields();\r\n\r\n }\r\n\r\n function popUpEventHandlers() {\r\n\r\n employerInput.addEventListener('input', event => {\r\n employerName = event.target.value.trim(); \r\n checkRequiredFields();\r\n\r\n });\r\n\r\n address1Input.addEventListener('input', event => {\r\n employeraddress1 = event.target.value;\r\n\r\n });\r\n\r\n address2Input.addEventListener('input', event => {\r\n employeraddress2 = event.target.value;\r\n\r\n });\r\n\r\n cityInput.addEventListener('input', event => {\r\n employercity = event.target.value;\r\n\r\n });\r\n\r\n stateInput.addEventListener('input', event => {\r\n employerstate = event.target.value;\r\n\r\n });\r\n\r\n zipcodeInput.addEventListener('input', event => {\r\n employerzipcode = event.target.value;\r\n\r\n });\r\n\r\n }\r\n\r\n function checkRequiredFields() { \r\n var employrInput = employerInput.querySelector('#employerInput');\r\n\r\n if (employrInput.value.trim() === '') { \r\n employerInput.classList.add('error');\r\n } else {\r\n employerInput.classList.remove('error');\r\n }\r\n\r\n setBtnStatus();\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n\r\n if ($.session.OODInsert || $.session.OODUpdate) {\r\n saveBtn.classList.remove('disabled');\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n // Event for Done BTN on the Edit Employer Popup Window\r\n async function editEmployerPopupDoneBtn(postType) {\r\n\r\n if (postType == 'insert') {\r\n\r\n const result = await OODAjax.insertEmployerAsync(employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { insertEmployerResult } = result;\r\n let employerID = insertEmployerResult.employerId;\r\n\r\n if (employerID == '0') {\r\n warningPopup();\r\n } else {\r\n POPUP.hide(editEmployerPopup)\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OODEmployers.init();\r\n }, 2000);\r\n }\r\n\r\n } else { //'update'\r\n POPUP.hide(editEmployerPopup)\r\n const result = await OODAjax.updateEmployerAsync(employerId, employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { updateEmployerResult: { employerID } } = result;\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OODEmployers.init();\r\n }, 2000);\r\n }\r\n }\r\n\r\n function deleteConfirmation(employerId, tableRow) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteEmployerAsync(employerId);\r\n if (result.deleteEmployerResult === \"1\") {\r\n tableRow.remove();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this employer?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n function warningPopup() {\r\n var popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n });\r\n var OKBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = \"This employer already exists.\";\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n return {\r\n init,\r\n\r\n };\r\n})(); ","const OOD = (() => {\r\n //Inputs\r\n let serviceDateInput;\r\n let serviceDate;\r\n const CLEAREDSERVICEDATE = '1970-01-01';\r\n\r\n let editEmployersBtn;\r\n let createFormsBtn;\r\n let createfilterPopupCreateBTN;\r\n let updateEmploymentGoalBtn;\r\n let employmentGoalText;\r\n let filterRow;\r\n let newEntryBtn;\r\n let newSummaryBtn;\r\n let OODEntriesTable;\r\n let OODConsumerBtns;\r\n let consumerRow;\r\n let consumerElement;\r\n let filterPopup;\r\n let createfilterPopup;\r\n\r\n // New Roster\r\n //let initRosterSelection;\r\n var enabledConsumers;\r\n var selectedConsumers;\r\n let selectedConsumerPeopleId;\r\n\r\n //filter\r\n let serviceDateStartInput;\r\n let serviceDateEndInput;\r\n let createServiceDateStartInput;\r\n let createServiceDateEndInput;\r\n \r\n let employeeDropdown;\r\n let servicesDropdown;\r\n let referenceNumbersDropdown;\r\n let createreferenceNumbersDropdown;\r\n let filterValues;\r\n let createFilterValues;\r\n let thisStartDate;\r\n let thisEndDate;\r\n\r\n let btnWrap;\r\n let serviceDateStartBtnWrap;\r\n let serviceDateEndBtnWrap;\r\n let employeeBtnWrap;\r\n let serviceBtnWrap;\r\n let referenceNumberBtnWrap;\r\n\r\n //service filter options\r\n const OODENTRIESFILTER = 'OODEntriesFilter';\r\n const FORM4MONTHLYSUMMARYSERVICES = 'Form4MonthlySummary';\r\n\r\n let consumerServicesDropdown;\r\n let consumerServicesDoneBtn;\r\n let selectConsumerServicePopup;\r\n let selectedConsumerServiceId;\r\n let selectedConsumerReferenceNumber;\r\n let selectedConsumerServiceType;\r\n let selectedConsumerFormNumber;\r\n let selectedConsumerServiceName;\r\n let summaryServicesDropdown;\r\n let summaryServicesDoneBtn;\r\n let selectSummaryServicePopup;\r\n\r\n let selectedConsumerIds;\r\n //let consumerServices;\r\n\r\n let employmentGoalTextarea;\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n await loadOODLanding();\r\n DOM.toggleNavLayout();\r\n //\t\troster2.clearActiveConsumers();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Build OOD Module Landing Page\r\n async function loadOODLanding() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n\r\n landingPage = document.createElement('div');\r\n selectedConsumers.forEach(consumer => {\r\n const consumerCard = buildConsumerCard(consumer);\r\n landingPage.appendChild(consumerCard);\r\n });\r\n\r\n filterRow = document.createElement('div');\r\n filterRow.classList.add('filterElement');\r\n\r\n const filteredBy = buildFilteredBy();\r\n\r\n // editEmployersBtn = buildEditEmployersBtn();\r\n\r\n filterRow.appendChild(filteredBy);\r\n // filterRow.appendChild(editEmployersBtn);\r\n\r\n \r\n await planAjax.getConsumerPeopleId(selectedConsumers[0].id, function (results) {\r\n selectedConsumerPeopleId = results[0].id;\r\n \r\n });\r\n\r\n const { getEmploymentGoalResult: EmploymentGoal } = await OODAjax.getEmploymentGoal(\r\n selectedConsumerPeopleId,\r\n );\r\n\r\n employmentGoalText = EmploymentGoal;\r\n\r\n let employmentGoalDIV = document.createElement('div');\r\n\r\n \r\n let employmentGoalMessage = document.createElement('p');\r\n employmentGoalMessage.innerHTML =\r\n `Employment Goal: ${EmploymentGoal}`;\r\n\r\n updateEmploymentGoalBtn = buildUpdateEmploymentGoalsBtn();\r\n updateEmploymentGoalBtn.setAttribute('max-width', '100px: !importatnt;');\r\n \r\n\r\n employmentGoalDIV.classList.add(\"EmployeeGoal\");\r\n employmentGoalDIV.appendChild(employmentGoalMessage) \r\n if ($.session.OODUpdate) employmentGoalDIV.appendChild(updateEmploymentGoalBtn);\r\n\r\n // employmentGoalDIV.appendChild(employmentGoalMessage);\r\n // employmentGoalDIV.appendChild(updateEmploymentGoalBtn);\r\n\r\n landingPage.appendChild(filterRow);\r\n landingPage.appendChild(employmentGoalDIV);\r\n OODEntriesTable = await buildOODEntriesTable(filterValues);\r\n landingPage.appendChild(OODEntriesTable);\r\n\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n // build the listing of OOD Entries (based off of filter settings)\r\n async function buildOODEntriesTable(filterValues) {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODEntriesTable',\r\n columnHeadings: [\r\n 'Service Date',\r\n 'Consumer',\r\n 'Service',\r\n 'Reference No',\r\n 'User Updated',\r\n 'Employer',\r\n ],\r\n endIcon: false,\r\n };\r\n\r\n // FAKE DATA : build table data -- see forms.js line 93\r\n //const tableData = [{ values : ['11/09/2021', 'Aaron, Aaron', 'LPA'], onClick : () => {OODForm4MonthlyPlacement.init(currentConsumer)}, attributes : [{ key: 'consumerId', value: '10000030' }, { key: 'contactsId', value: '686614946775283' } ]},\r\n //\t\t\t\t\t{ values : ['11/11/2021', 'Abrams, Jackie', 'IPA'], onClick : () => {OODForm4MonthlyPlacement.init(currentConsumer)}, attributes : [{ key: 'consumerId', value: '10000241' }, { key: 'reviewId', value: '686614946775290' } ]} ];\r\n\r\n selectedConsumerIds = selectedConsumers.map(function (x) {\r\n return x.id;\r\n });\r\n //TODO JOE: FORM 8 -- Need to include in OODEntries serviceType: T1 and T2 -- Need to UpdateSP _OODEntries with EM_Service_Names.Template_Num\r\n const { getOODEntriesResult: OODEntries } = await OODAjax.getOODEntriesAsync(\r\n selectedConsumerIds.join(', '),\r\n filterValues.serviceDateStart,\r\n filterValues.serviceDateEnd,\r\n filterValues.userId,\r\n filterValues.serviceId,\r\n filterValues.referenceNumber, //reference number\r\n );\r\n\r\n // format the Completion Dates\r\n OODEntries.forEach(function (entry) {\r\n let newDate = new Date(entry.serviceDate);\r\n let theMonth = newDate.getMonth() + 1;\r\n let formatServiceDate =\r\n UTIL.leadingZero(theMonth) +\r\n '/' +\r\n UTIL.leadingZero(newDate.getDate()) +\r\n '/' +\r\n newDate.getFullYear();\r\n entry.serviceDate = formatServiceDate;\r\n });\r\n\r\n let tableData = OODEntries.map(entry => ({\r\n values: [\r\n entry.serviceDate,\r\n entry.consumerName,\r\n entry.serviceCode,\r\n entry.referenceNumber,\r\n entry.userUpdated,\r\n entry.employerName,\r\n ],\r\n //TODO JOE: add key: ServiceType value: entry.serviceType (T1 and T2)\r\n attributes: [\r\n {\r\n key: 'OODReportType',\r\n value: entry.employerName == 'Monthly Review' ? 'monthlySummary' : 'newEntry',\r\n },\r\n { key: 'consumerId', value: entry.consumerId },\r\n { key: 'Id', value: entry.ID },\r\n { key: 'userId', value: entry.userUpdated },\r\n { key: 'formNumber', value: Math.round(entry.formNumber) },\r\n ],\r\n onClick: e => {\r\n var rowConsumer = selectedConsumers.filter(function (x) {\r\n return x.id == entry.consumerId;\r\n });\r\n //TODO JOE: add to the if clause below (Form4) and add two more ifs to cover the Form 8 ---\r\n //TODO JOE: if (rowConsumer[0] && e.target.attributes.OODReportType.value === 'newEntry' && e.target.attributes.serviceType.value === 'T1')\r\n // TODO JOE: Will also need two new SP to get the Form 8 data\r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '4'\r\n ) {\r\n OODAjax.getForm4MonthlyPlacementEditData(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n OODForm4MonthlyPlacement.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'monthlySummary' &&\r\n e.target.attributes.formNumber.value === '4'\r\n ) {\r\n OODAjax.getForm4MonthlySummary(e.target.attributes.Id.value, function (results) {\r\n OODForm4MonthlySummary.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n e.target.attributes.userId.value,\r\n );\r\n });\r\n }\r\n\r\n if ( //NEED NEW AJAX TO GET Form 6 \r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '6'\r\n ) {\r\n OODAjax.getForm6Tier1andJDPLan(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n Tier1andJDPlanForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n results[0].serviceName,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '8'\r\n ) {\r\n OODAjax.getForm8CommunityBasedAssessment(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n communityBasedAssessmentForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n results[0].serviceName,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'monthlySummary' &&\r\n e.target.attributes.formNumber.value === '8'\r\n ) {\r\n OODAjax.getForm8MonthlySummary(e.target.attributes.Id.value, function (results) {\r\n communityBasedAssessmentSummaryForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n e.target.attributes.userId.value,\r\n );\r\n });\r\n }\r\n \r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '10'\r\n ) {\r\n OODAjax.getForm10TransportationData(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n OODFormTransportation.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n\r\n if ( //NEED NEW AJAX TO GET Form 16 \r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '16'\r\n ) {\r\n OODAjax.getForm16SummerYouthWorkExperience(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n summerYouthWorkExperienceForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n results[0].serviceName,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n if ( //NEED NEW AJAX TO GET Form 16\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'monthlySummary' &&\r\n e.target.attributes.formNumber.value === '16'\r\n ) {\r\n OODAjax.getForm16MonthlySummary(e.target.attributes.Id.value, function (results) {\r\n summerYouthWorkExperienceSummaryForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n e.target.attributes.userId.value,\r\n );\r\n });\r\n }\r\n },\r\n }));\r\n\r\n const oTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = oTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'date'); // Service date\r\n headers[1].setAttribute('data-type', 'string'); // Consumer\r\n headers[2].setAttribute('data-type', 'string'); // Service\r\n headers[3].setAttribute('data-type', 'number'); // Ref No \r\n headers[4].setAttribute('data-type', 'string'); // User Updated \r\n headers[5].setAttribute('data-type', 'string'); // Employer\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n consumerElement = document.createElement('div');\r\n consumerRow = document.createElement('div');\r\n consumerRow.classList.add('consumerHeader');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const consumerCard = document.createElement('div');\r\n consumerCard.classList.add('OODConsumerCard');\r\n\r\n consumerCard.appendChild(consumer.card);\r\n\r\n consumerCard.addEventListener('click', event => {\r\n var consumerId = event.target.dataset.consumerId;\r\n selectedConsumerIds = selectedConsumerIds.filter(id => id !== consumerId);\r\n selectedConsumers = selectedConsumers.filter(function (x) {\r\n return x.id !== consumerId;\r\n });\r\n roster2.removeConsumerFromActiveConsumers(consumerId);\r\n var activeConsumers = roster2.getActiveConsumers();\r\n activeConsumers.length === 0 ? roster2.showMiniRoster() : loadOODLanding();\r\n // event.target.parentElement.parentElement.remove();\r\n });\r\n\r\n consumerRow.appendChild(consumerCard);\r\n\r\n OODConsumerBtns = buildButtonBar(consumer);\r\n\r\n consumerRow.appendChild(OODConsumerBtns);\r\n var LineBr = document.createElement('br');\r\n\r\n consumerElement.appendChild(consumerRow);\r\n // consumerElement.appendChild(LineBr);\r\n\r\n return consumerElement;\r\n }\r\n\r\n // build display of \"Entry\" Buttons -- \"New Entry\" and \"New Monthly Summary\"\r\n function buildButtonBar(consumer) {\r\n const buttonBar = document.createElement('div');\r\n buttonBar.classList.add('OODbuttonBar');\r\n\r\n const entryBtn = button.build({\r\n text: 'New Entry',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [\r\n { key: 'consumerId', value: consumer.id },\r\n { key: 'btnType', value: 'newEntry' },\r\n ],\r\n classNames: !$.session.OODInsert ? ['newEntryBtn', 'disabled'] : ['newEntryBtn'],\r\n callback: () =>\r\n buildEntryServicePopUp(\r\n entryBtn.attributes.consumerid.value,\r\n entryBtn.attributes.btnType.value,\r\n ),\r\n });\r\n const summaryBtn = button.build({\r\n text: 'New Monthly Summary',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [\r\n { key: 'consumerId', value: consumer.id },\r\n { key: 'btnType', value: 'monthlySummary' },\r\n ],\r\n classNames: !$.session.OODInsert\r\n ? ['newMonthlySummaryBtn', 'disabled']\r\n : ['newMonthlySummaryBtn'],\r\n callback: () =>\r\n buildSummaryServicePopUp(\r\n summaryBtn.attributes.consumerid.value,\r\n summaryBtn.attributes.btnType.value,\r\n ),\r\n });\r\n editEmployersBtn = buildEditEmployersBtn();\r\n createFormsBtn = buildCreateFormsBtn();\r\n buildNewFilterBtn();\r\n\r\n const oodBtnsWrap = document.createElement('div');\r\n oodBtnsWrap.classList.add('OODbuttonBar__btnWrap');\r\n oodBtnsWrap.appendChild(entryBtn);\r\n oodBtnsWrap.appendChild(summaryBtn);\r\n oodBtnsWrap.appendChild(editEmployersBtn);\r\n oodBtnsWrap.appendChild(createFormsBtn);\r\n\r\n buttonBar.appendChild(oodBtnsWrap);\r\n\r\n return buttonBar;\r\n }\r\n\r\n // build Services pop-up that displays when an \"Entry\" button is clicked\r\n async function buildEntryServicePopUp(consumerId, btnType) {\r\n serviceDate = UTIL.getTodaysDate();\r\n //\tserviceDate = '2021-03-22';\r\n // TODO: the results of this AJAX call should be used in the call to function populateConsumerServiceCodeDropdown()\r\n const {\r\n //TODO JOE: Alter SP ANYW_OOD_getConsumerServiceCodes to include T1 (Form4) and T2 (Form8) services AND pass back T1 or T2 to include in the DDL items\r\n getConsumerServiceCodesResult: consumerServices,\r\n } = await OODAjax.getConsumerServiceCodesAsync(consumerId, serviceDate);\r\n\r\n if (consumerServices === undefined || consumerServices.length == 0) {\r\n buildNoServicesPopup(consumerId, btnType);\r\n } else {\r\n // services exist\r\n\r\n selectConsumerServicePopup = POPUP.build({\r\n header: 'Select a Service',\r\n hideX: true,\r\n id: 'selectServicePopup',\r\n });\r\n\r\n serviceDateInput = input.build({\r\n type: 'date',\r\n label: 'Service Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n\r\n serviceDateInput.addEventListener('focusout', async event => {\r\n serviceDate = event.target.value;\r\n if (serviceDate === '') {\r\n serviceDate = CLEAREDSERVICEDATE;\r\n selectedConsumerServiceId = '';\r\n // selectedConsumerServiceType = '';\r\n selectedConsumerFormNumber = '';\r\n selectedConsumerServiceName = '';\r\n selectedConsumerReferenceNumber = '';\r\n await populateConsumerServiceCodeDropdown(consumerId, serviceDate);\r\n } else {\r\n const { getConsumerServiceCodesResult: consumerServices } =\r\n await OODAjax.getConsumerServiceCodesAsync(consumerId, serviceDate);\r\n\r\n if (consumerServices === undefined || consumerServices.length == 0) {\r\n servicePopupCancelBtn(btnType);\r\n buildNoServicesPopup(consumerId, btnType);\r\n } else {\r\n populateConsumerServiceCodeDropdown(consumerId, serviceDate);\r\n }\r\n }\r\n\r\n serviceDateInputRequired();\r\n consumerServicesDropDownRequired();\r\n });\r\n\r\n // serviceDateInput.addEventListener('keydown', event => {\r\n // \tevent.preventDefault();\r\n // \tevent.stopPropagation();\r\n // });\r\n\r\n consumerServicesDropdown = dropdown.build({\r\n label: 'Services',\r\n dropdownId: 'consumerServicesDropdown',\r\n });\r\n\r\n consumerServicesDoneBtn = button.build({\r\n id: 'consumerServicesDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n callback: () => servicePopupDoneBtn(consumerId, btnType),\r\n });\r\n this.doneButton = consumerServicesDoneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: 'consumerServicesCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: () => servicePopupCancelBtn(btnType),\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(consumerServicesDoneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n selectConsumerServicePopup.appendChild(LineBr);\r\n selectConsumerServicePopup.appendChild(serviceDateInput);\r\n selectConsumerServicePopup.appendChild(consumerServicesDropdown);\r\n selectConsumerServicePopup.appendChild(btnWrap);\r\n\r\n populateConsumerServiceCodeDropdown(consumerId, serviceDate);\r\n\r\n consumerServicesDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n selectedConsumerServiceId = '';\r\n // selectedConsumerServiceType = '';\r\n selectedConsumerFormNumber = '';\r\n selectedConsumerServiceName = '';\r\n selectedConsumerReferenceNumber = '';\r\n } else {\r\n // TODO JOE: selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n selectedConsumerServiceId = selectedOption.value;\r\n // selectedConsumerServiceType = selectedOption.id;\r\n selectedConsumerFormNumber = selectedOption.id;\r\n selectedConsumerServiceName = selectedOption.text;\r\n selectedConsumerReferenceNumber = selectedOption.text.split('# ')[1];\r\n }\r\n\r\n serviceDateInputRequired();\r\n consumerServicesDropDownRequired();\r\n });\r\n\r\n serviceDateInputRequired();\r\n consumerServicesDropDownRequired();\r\n\r\n POPUP.show(selectConsumerServicePopup);\r\n\r\n function consumerServicesDropDownRequired() {\r\n if (!selectedConsumerServiceId || selectedConsumerServiceId === '') {\r\n consumerServicesDropdown.classList.add('error');\r\n consumerServicesDoneBtn.classList.add('disabled');\r\n } else {\r\n consumerServicesDropdown.classList.remove('error');\r\n consumerServicesDoneBtn.classList.remove('disabled');\r\n serviceDateInputRequired();\r\n }\r\n }\r\n\r\n function serviceDateInputRequired() {\r\n var todayDate = new Date(UTIL.getTodaysDate().split('-').join('/'));\r\n var thisServiceDate = new Date(serviceDate.split('-').join('/'));\r\n if (\r\n !serviceDate ||\r\n serviceDate === CLEAREDSERVICEDATE ||\r\n dates.isAfter(thisServiceDate, todayDate)\r\n ) {\r\n serviceDateInput.classList.add('error');\r\n consumerServicesDoneBtn.classList.add('disabled');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n consumerServicesDoneBtn.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n }\r\n\r\n function buildNoServicesPopup(consumerId, btnType) {\r\n // no services for Monthly Placemnet form (ie, after clicking a consumer \"Entry\" btn)\r\n let noServicesPopup = POPUP.build({\r\n header: 'No Services found',\r\n hideX: true,\r\n id: 'noServicePopup',\r\n });\r\n\r\n let OKBtn = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(noServicesPopup);\r\n loadOODLanding();\r\n //buildEntryServicePopUp(consumerId, btnType)\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n let warningMessage = document.createElement('p');\r\n warningMessage.innerHTML =\r\n 'There are no authorized services for the selected consumer. Please contact your Advisor OOD Administrator to enter an authorization or select a different consumer.';\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n //noServicesPopup.appendChild(consumerServicesDropdown);\r\n noServicesPopup.appendChild(warningMessage);\r\n noServicesPopup.appendChild(btnWrap);\r\n overlay.show();\r\n POPUP.show(noServicesPopup);\r\n }\r\n\r\n // build Services pop-up that displays when an \"Monthly Summary\" button is clicked\r\n async function buildSummaryServicePopUp(consumerId, btnType) {\r\n selectSummaryServicePopup = POPUP.build({\r\n header: 'Select a Service',\r\n hideX: true,\r\n id: 'selectSummaryServicePopup',\r\n });\r\n\r\n summaryServicesDropdown = dropdown.build({\r\n label: 'Services',\r\n dropdownId: 'summaryServicesDropdown',\r\n });\r\n\r\n summaryServicesDoneBtn = button.build({\r\n id: 'summaryServicesDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n callback: () => servicePopupDoneBtn(consumerId, btnType),\r\n });\r\n this.doneButton = summaryServicesDoneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: 'summaryServiceCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: () => servicePopupCancelBtn(btnType),\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(summaryServicesDoneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n selectSummaryServicePopup.appendChild(summaryServicesDropdown);\r\n selectSummaryServicePopup.appendChild(btnWrap);\r\n\r\n populateMonthlySummaryServiceCodeDropdown(consumerId);\r\n\r\n summaryServicesDropdown.addEventListener('change', event => {\r\n selectedConsumerServiceId = event.target.value;\r\n // selectedConsumerServiceType = event.target.id;\r\n selectedConsumerFormNumber = event.target.id;\r\n selectedConsumerServiceName = event.target.text;\r\n });\r\n\r\n summaryServicesDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n selectedConsumerServiceId = '';\r\n // selectedConsumerServiceType = '';\r\n selectedConsumerFormNumber = '';\r\n selectedConsumerServiceName = '';\r\n } else {\r\n // TODO JOE: selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n selectedConsumerServiceId = selectedOption.value;\r\n // selectedConsumerServiceType = selectedOption.id;\r\n selectedConsumerFormNumber = selectedOption.id;\r\n selectedConsumerServiceName = selectedOption.text;\r\n }\r\n summaryServicesDropDownRequired();\r\n });\r\n\r\n summaryServicesDropDownRequired();\r\n\r\n POPUP.show(selectSummaryServicePopup);\r\n\r\n function summaryServicesDropDownRequired() {\r\n if (!selectedConsumerServiceId || selectedConsumerServiceId === '') {\r\n summaryServicesDropdown.classList.add('error');\r\n summaryServicesDoneBtn.classList.add('disabled');\r\n } else {\r\n summaryServicesDropdown.classList.remove('error');\r\n summaryServicesDoneBtn.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n\r\n // Event for Done BTN on the Services Popup Window\r\n function servicePopupDoneBtn(consumerId, btnType) {\r\n if (btnType === 'newEntry') {\r\n POPUP.hide(selectServicePopup);\r\n } else {\r\n POPUP.hide(selectSummaryServicePopup);\r\n }\r\n\r\n // find the array element with consumerId\r\n var thisConsumer = selectedConsumers.filter(consumer => {\r\n return consumer.id === consumerId;\r\n });\r\n var thisselectedConsumerServiceId = selectedConsumerServiceId;\r\n var thisselectedConsumerReferenceNumber = selectedConsumerReferenceNumber;\r\n var thisselectedConsumerServiceType = selectedConsumerServiceType;\r\n var thisselectedConsumerFormNumber = selectedConsumerFormNumber;\r\n var thisselectedConsumerServiceName = selectedConsumerServiceName.substr(4).split('- Ref #')[0];\r\n selectedConsumerServiceId = '';\r\n //selectedConsumerServiceType = '';\r\n selectedConsumerFormNumber = '';\r\n // TODO JOE: selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n // TODO JOE: Need to add to the two ifs below to include selectedConsumerServiceType\r\n // TODO JOE: Need to add two more if statements to call init() for the two Form 8 Forms\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '4')\r\n OODForm4MonthlyPlacement.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n\r\n if (thisConsumer && btnType === 'monthlySummary' && thisselectedConsumerFormNumber === '4')\r\n OODForm4MonthlySummary.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n $.session.UserId,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '6')\r\n Tier1andJDPlanForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerServiceName,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '8')\r\n communityBasedAssessmentForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerServiceName,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'monthlySummary' && thisselectedConsumerFormNumber === '8')\r\n communityBasedAssessmentSummaryForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n $.session.UserId,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '10')\r\n OODFormTransportation.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '16')\r\n summerYouthWorkExperienceForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerServiceName,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'monthlySummary' && thisselectedConsumerFormNumber === '16')\r\n summerYouthWorkExperienceSummaryForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n $.session.UserId,\r\n btnType,\r\n );\r\n // forms.displayFormPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n }\r\n\r\n // Event for Cancel BTN on the Services Popup Window\r\n function servicePopupCancelBtn(btnType) {\r\n selectedConsumerServiceId = '';\r\n selectedConsumerReferenceNumber = '';\r\n if (btnType === 'newEntry') {\r\n POPUP.hide(selectServicePopup);\r\n loadOODLanding();\r\n } else {\r\n POPUP.hide(selectSummaryServicePopup);\r\n loadOODLanding();\r\n }\r\n // OODForm4MonthlyPlacement.init();\r\n // forms.displayFormPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n }\r\n\r\n async function generateAndTrackFormProgress(formNumber) {\r\n // Prepare data for form generation\r\n let data = {\r\n referenceNumber: createFilterValues.referenceNumber,\r\n peopleId: selectedConsumerIds[0],\r\n serviceCodeId: filterValues.serviceId,\r\n startDate: createFilterValues.serviceDateStart,\r\n endDate: createFilterValues.serviceDateEnd,\r\n userId: createFilterValues.userId,\r\n loggedInUserPersonId: $.session.PeopleId \r\n };\r\n \r\n try {\r\n switch (formNumber) {\r\n case 4:\r\n sentStatus = await OODAjax.generateForm4(data);\r\n break;\r\n \r\n case 6:\r\n sentStatus = await OODAjax.generateForm6(data);\r\n break;\r\n\r\n case 8:\r\n sentStatus = await OODAjax.generateForm8(data);\r\n break;\r\n \r\n case 10:\r\n sentStatus = await OODAjax.generateForm10(data);\r\n success = true;\r\n break;\r\n\r\n case 16:\r\n sentStatus = await OODAjax.generateForm16(data);\r\n //alert('Form 16 under construction.');\r\n break;\r\n }\r\n } catch (error) {\r\n //console.error(error);\r\n const formsPopup = document.getElementById('createOODFormsPopup');\r\n formsPopup.remove();\r\n overlay.hide();\r\n }\r\n const formsPopup = document.getElementById('createOODFormsPopup');\r\n if (formsPopup) formsPopup.remove();\r\n overlay.hide();\r\n }\r\n \r\n\r\n // build Filter button, which filters the data displayed on the OOD Entries Table\r\n function buildNewFilterBtn() {\r\n if (!filterValues) {\r\n\r\n \r\n filterValues = {\r\n token: $.session.Token,\r\n serviceDateStart: UTIL.formatDateFromDateObj(dates.subDays(new Date(), 30)),\r\n serviceDateEnd: UTIL.getTodaysDate(),\r\n \r\n userId: $.session.UserId,\r\n userName: $.session.LName + ', ' + $.session.Name,\r\n serviceId: '%',\r\n serviceName: '',\r\n referenceNumber: '%',\r\n };\r\n }\r\n }\r\n\r\n // build Edit Employers button,\r\n function buildEditEmployersBtn() {\r\n return button.build({\r\n text: 'Edit Employers',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: 'editEmployersBtn',\r\n //classNames: !$.session.formsInsert ? ['disabled'] : ['newPlanBtn'],\r\n classNames:\r\n $.session.OODUpdate || $.session.OODInsert || $.session.OODView\r\n ? ['editEmployersBtn']\r\n : ['editEmployersBtn', 'disabled'],\r\n callback: async () => {\r\n OODEmployers.init();\r\n },\r\n });\r\n }\r\n\r\n // build Each Form Button button,\r\n function buildIndividualFormBtn(formText, formNumber) {\r\n return button.build({\r\n text: formText,\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `OODForm${formNumber}Btn`,\r\n classNames: `OODForm${formNumber}Btn`,\r\n callback: async () => {\r\n //generateAndTrackFormProgress(formNumber);\r\n // displayPopup\r\n buildCreateFormPopUp(formNumber);\r\n },\r\n });\r\n }\r\n\r\n // build Create Forms button,\r\n function buildCreateFormsBtn() {\r\n return button.build({\r\n text: 'Create OOD Forms',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: 'createFormsBtn',\r\n classNames: 'createFormsBtn',\r\n callback: () => {\r\n showCreateFormsPopup();\r\n },\r\n });\r\n }\r\n\r\n \r\n // build Update Employment Goals button,\r\n function buildUpdateEmploymentGoalsBtn() {\r\n return button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: 'createFormsBtn2',\r\n callback: () => {\r\n buildEmploymentGoalPopUp();\r\n },\r\n });\r\n }\r\n\r\n function showCreateFormsPopup() {\r\n // Popup\r\n const popup = POPUP.build({\r\n id: `createOODFormsPopup`,\r\n hideX: true,\r\n classNames: [\r\n 'popup',\r\n 'visible',\r\n 'popup--filter',\r\n 'createOODFormsPopup']\r\n });\r\n\r\n popup.setAttribute('data-popup', 'true');\r\n popup.setAttribute('overflow-y', 'unset: !importatnt;');\r\n\r\n const form4Btn = buildIndividualFormBtn('Form 4 - Monthly Job & Site Development', 4);\r\n const form6Btn = buildIndividualFormBtn('Form 6 - Tier1 and JD Plan', 6);\r\n const form8Btn = buildIndividualFormBtn('Form 8 - Work Activities and Assessment', 8);\r\n const form10Btn = buildIndividualFormBtn('Form 10 - Transportation', 10);\r\n const form16Btn = buildIndividualFormBtn('Form 16 - Summer Youth Experience', 16);\r\n\r\n popup.appendChild(form4Btn);\r\n popup.appendChild(form6Btn);\r\n popup.appendChild(form8Btn);\r\n popup.appendChild(form10Btn);\r\n popup.appendChild(form16Btn);\r\n\r\n // Append to DOM\r\n bodyScrollLock.disableBodyScroll(popup);\r\n overlay.show();\r\n actioncenter.appendChild(popup);\r\n }\r\n\r\n // build the display of the current Filter Settings (next to the Filter button)\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet()\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n // var splitDate = selectedDate.split('-');\r\n var splitDate = '2021-12-28'.split('-');\r\n var filteredDate = `${UTIL.leadingZero(splitDate[1])}/${UTIL.leadingZero(\r\n splitDate[2],\r\n )}/${splitDate[0].slice(2, 4)}`;\r\n\r\n\r\n if (filterValues.userId === '%' || filterValues.userId === 'ALL') {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n btnWrap.removeChild(employeeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n }\r\n\r\n if (filterValues.serviceId === '%' || filterValues.serviceId === 'ALL') {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n btnWrap.removeChild(serviceBtnWrap);\r\n } else {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n }\r\n if (filterValues.referenceNumber === '%' || filterValues.referenceNumber === 'ALL') {\r\n btnWrap.appendChild(referenceNumberBtnWrap);\r\n btnWrap.removeChild(referenceNumberBtnWrap);\r\n } else {\r\n btnWrap.appendChild(referenceNumberBtnWrap);\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { buildFilterPopUp('ALL') },\r\n });\r\n\r\n serviceDateStartBtn = button.build({\r\n id: 'serviceDateStartBtn',\r\n text: 'Service Start Date: ' + moment(filterValues.serviceDateStart, 'YYYY-MM-DD').format('M/D/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('serviceDateStartBtn') },\r\n });\r\n\r\n serviceDateEndBtn = button.build({\r\n id: 'serviceDateEndBtn',\r\n text: 'Service End Date: ' + moment(filterValues.serviceDateEnd, 'YYYY-MM-DD').format('M/D/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('serviceDateEndBtn') },\r\n });\r\n\r\n employeeBtn = button.build({\r\n id: 'employeeBtn',\r\n text: 'Employee: ' + filterValues.userName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('employeeBtn') },\r\n });\r\n employeeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('employeeBtn') },\r\n });\r\n\r\n serviceBtn = button.build({\r\n id: 'serviceBtn',\r\n text: 'Service: ' + filterValues.serviceName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('serviceBtn') },\r\n });\r\n serviceCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('serviceBtn') },\r\n });\r\n\r\n referenceNumberBtn = button.build({\r\n id: 'referenceNumberBtn',\r\n text: 'Reference Number: ' + filterValues.referenceNumber,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('referenceNumberBtn') },\r\n });\r\n referenceNumberCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('referenceNumberBtn') },\r\n });\r\n\r\n // if (filterValues.referenceNumber != 'ALL' && filterValues.referenceNumber != '%' && filterValues.referenceNumber != '') {\r\n // createFilterValues.referenceNumber = filterValues.referenceNumber;\r\n // }\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n serviceDateStartBtnWrap = document.createElement('div');\r\n serviceDateStartBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceDateStartBtnWrap.appendChild(serviceDateStartBtn); \r\n btnWrap.appendChild(serviceDateStartBtnWrap);\r\n\r\n serviceDateEndBtnWrap = document.createElement('div');\r\n serviceDateEndBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceDateEndBtnWrap.appendChild(serviceDateEndBtn);\r\n btnWrap.appendChild(serviceDateEndBtnWrap);\r\n\r\n employeeBtnWrap = document.createElement('div');\r\n employeeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n employeeBtnWrap.appendChild(employeeBtn);\r\n employeeBtnWrap.appendChild(employeeCloseBtn)\r\n btnWrap.appendChild(employeeBtnWrap);\r\n\r\n serviceBtnWrap = document.createElement('div');\r\n serviceBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceBtnWrap.appendChild(serviceBtn);\r\n serviceBtnWrap.appendChild(serviceCloseBtn);\r\n btnWrap.appendChild(serviceBtnWrap);\r\n\r\n referenceNumberBtnWrap = document.createElement('div');\r\n referenceNumberBtnWrap.classList.add('filterSelectionBtnWrap');\r\n referenceNumberBtnWrap.appendChild(referenceNumberBtn);\r\n referenceNumberBtnWrap.appendChild(referenceNumberCloseBtn);\r\n btnWrap.appendChild(referenceNumberBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) { \r\n if (closeFilter == 'employeeBtn') {\r\n filterValues.userId = '%';\r\n }\r\n if (closeFilter == 'serviceBtn') {\r\n filterValues.serviceId = '%';\r\n }\r\n if (closeFilter == 'referenceNumberBtn') {\r\n filterValues.referenceNumber = '%';\r\n // createFilterValues.referenceNumber = '%';\r\n }\r\n loadOODLanding();\r\n } \r\n\r\n // build Filter pop-up that displays when an \"Filter\" button is clicked\r\n function buildFilterPopUp(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n // dropdowns & inputs\r\n employeeDropdown = dropdown.build({\r\n label: 'Employee',\r\n dropdownId: 'employeeDropdown',\r\n });\r\n\r\n serviceDateStartInput = input.build({\r\n type: 'date',\r\n label: 'Service Date Start',\r\n style: 'secondary',\r\n value: filterValues.serviceDateStart,\r\n });\r\n serviceDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Service Date End',\r\n style: 'secondary',\r\n value: filterValues.serviceDateEnd,\r\n });\r\n\r\n servicesDropdown = dropdown.build({\r\n label: 'Services',\r\n dropdownId: 'servicesDropdown',\r\n });\r\n\r\n referenceNumbersDropdown = dropdown.build({\r\n label: 'Reference Number',\r\n dropdownId: 'referenceNumbersDropdown',\r\n });\r\n\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => filterPopupDoneBtn(),\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => filterPopupCancelBtn(),\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n // build popup\r\n if (IsShow == 'ALL' || IsShow == 'employeeBtn')\r\n filterPopup.appendChild(employeeDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'serviceDateStartBtn')\r\n filterPopup.appendChild(serviceDateStartInput);\r\n if (IsShow == 'ALL' || IsShow == 'serviceDateEndBtn')\r\n filterPopup.appendChild(serviceDateEndInput);\r\n if (IsShow == 'ALL' || IsShow == 'serviceBtn')\r\n filterPopup.appendChild(servicesDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'referenceNumberBtn')\r\n filterPopup.appendChild(referenceNumbersDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n populateEmployeeDropdown();\r\n populateServiceCodeDropdown();\r\n populateReferenceNumberDropdown();\r\n eventListeners();\r\n // setupFilterEvent();\r\n\r\n //return filterPopup;\r\n POPUP.show(filterPopup);\r\n }\r\n\r\n // Populate the employee DDL on the Filter Popup Window\r\n async function populateEmployeeDropdown() {\r\n const { getActiveEmployeesResult: employees } = await OODAjax.getActiveEmployeesAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = employees.map(employee => ({\r\n id: employee.userId,\r\n value: employee.userId,\r\n text: employee.userName,\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate('employeeDropdown', data, filterValues.userId);\r\n }\r\n\r\n async function populateCreateEmployeeDropdown() {\r\n const { getActiveEmployeesResult: employees } = await OODAjax.getActiveEmployeesAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = employees.map(employee => ({\r\n id: employee.userId,\r\n value: employee.userId,\r\n text: employee.userName,\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate('employeeDropdown', data, createFilterValues.userId);\r\n }\r\n\r\n // Populate the Service Code DDL on the Filter Popup Window\r\n async function populateServiceCodeDropdown() {\r\n const { getActiveServiceCodesResult: services } = await OODAjax.getActiveServiceCodesAsync(\r\n OODENTRIESFILTER,\r\n );\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = services.map(service => ({\r\n id: service.serviceType,\r\n value: service.serviceId,\r\n text: service.serviceName,\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate('servicesDropdown', data, filterValues.serviceId);\r\n }\r\n\r\n // Populate the Reference Number DDL on the Filter Popup Window\r\n async function populateReferenceNumberDropdown() {\r\n var consumerIds = selectedConsumerIds.join(', ');\r\n\r\n const { getConsumerReferenceNumbersResult: referencenumbers } =\r\n await OODAjax.getConsumerReferenceNumbersAsync(consumerIds);\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = referencenumbers.map(referencenumber => ({\r\n id: referencenumber.referenceNumber,\r\n value: referencenumber.referenceNumber,\r\n text: referencenumber.referenceNumber,\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate('referenceNumbersDropdown', data, filterValues.referenceNumber);\r\n // dropdown.populate('createreferenceNumbersDropdown', data, filterValues.referenceNumber);\r\n }\r\n\r\n // Populate the Reference Number DDL on the Filter Popup Window\r\n async function populatecreateReferenceNumberDropdown(formNumber) {\r\n var consumerIds = selectedConsumerIds.join(', ');\r\n\r\n const { getConsumerReferenceNumbersResult: referencenumbers } =\r\n await OODAjax.getConsumerReferenceNumbersAsync(consumerIds, createFilterValues.serviceDateStart, createFilterValues.serviceDateEnd, formNumber);\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = referencenumbers.map(referencenumber => ({\r\n id: referencenumber.referenceNumber,\r\n value: referencenumber.referenceNumber,\r\n text: referencenumber.referenceNumber,\r\n }));\r\n data.unshift({ id: null, value: '%', text: '' }); //ADD Blank value\r\n // dropdown.populate('referenceNumbersDropdown', data, filterValues.referenceNumber);\r\n \r\n if (filterValues.referenceNumber === '%' || filterValues.referenceNumber === 'ALL') {\r\n dropdown.populate('createreferenceNumbersDropdown', data, createFilterValues.referenceNumber);\r\n } else {\r\n dropdown.populate('createreferenceNumbersDropdown', data, filterValues.referenceNumber);\r\n createFilterValues.referenceNumber = filterValues.referenceNumber\r\n checkCreatePopupRequiredFields();\r\n }\r\n \r\n }\r\n\r\n // Populate the Service Code DDL for the 'Entry' Service Popup Window\r\n async function populateConsumerServiceCodeDropdown(consumerId, serviceDate) {\r\n const { getConsumerServiceCodesResult: services } = await OODAjax.getConsumerServiceCodesAsync(\r\n consumerId,\r\n serviceDate,\r\n );\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n\r\n //TODO JOE: id: should use selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n let data = services.map(service => ({\r\n // id: (service.serviceType === '') ? 'T10' : service.serviceType, // replace with selectedConsumerServiceType to get T1 and T2 info\r\n id: service.formNumber,\r\n value: service.serviceId,\r\n text: service.serviceName + ' - Ref # ' + service.referenceNumber,\r\n }));\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('consumerServicesDropdown', data);\r\n //selectedConsumerServiceId = '';\r\n // consumerServicesDropDownRequired();\r\n consumerServicesDoneBtn.classList.add('disabled');\r\n consumerServicesDropdown.classList.add('error');\r\n }\r\n\r\n // Populate the Service Code DDL for the 'Monthly Summary' Service Popup Window\r\n async function populateMonthlySummaryServiceCodeDropdown(consumerId) {\r\n const { getActiveServiceCodesResult: services } = await OODAjax.getActiveServiceCodesAsync(\r\n FORM4MONTHLYSUMMARYSERVICES,\r\n );\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n //TODO JOE: id: should use selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n let data = services.map(service => ({\r\n //id: service.serviceType, // replace with selectedConsumerServiceType to get T1 and T2 info\r\n id: service.formNumber,\r\n value: service.serviceId,\r\n text: service.serviceName,\r\n }));\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('summaryServicesDropdown', data);\r\n }\r\n\r\n function eventListeners() {\r\n serviceDateStartInput.addEventListener('change', event => { \r\n if (event.target.value !== '') {\r\n filterValues.serviceDateStart = event.target.value;\r\n } else {\r\n event.target.value = filterValues.serviceDateStart;\r\n } \r\n });\r\n serviceDateEndInput.addEventListener('change', event => { \r\n if (event.target.value !== '') { \r\n filterValues.serviceDateEnd = event.target.value;\r\n } else {\r\n event.target.value = filterValues.serviceDateEnd;\r\n }\r\n });\r\n employeeDropdown.addEventListener('change', event => {\r\n filterValues.userId = event.target.value;\r\n filterValues.userName = event.target.options[event.target.selectedIndex].text;\r\n });\r\n servicesDropdown.addEventListener('change', event => {\r\n filterValues.serviceId = event.target.value;\r\n filterValues.serviceName = event.target.options[event.target.selectedIndex].text;\r\n });\r\n referenceNumbersDropdown.addEventListener('change', event => {\r\n filterValues.referenceNumber = event.target.value;\r\n // createFilterValues.referenceNumber = event.target.value;\r\n });\r\n //routeStatusDropdown.addEventListener('change', event => {\r\n // filterOpts.routeStatus = event.target.value;\r\n // });\r\n }\r\n\r\n async function filterPopupDoneBtn() {\r\n POPUP.hide(filterPopup);\r\n eventListeners();\r\n loadOODLanding();\r\n\r\n //let OODtable = document.getElementById('OODEntriesTable')\r\n // OODEntriesTable = await buildOODEntriesTable(filterValues);\r\n //OODtable.remove();\r\n // DOM.ACTIONCENTER.appendChild(OODEntriesTable);\r\n }\r\n\r\n function filterPopupCancelBtn() {\r\n POPUP.hide(filterPopup);\r\n // OODForm4MonthlyPlacement.init();\r\n // forms.displayFormPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n }\r\n\r\n function employmentGoalPopupCancelBtn() {\r\n POPUP.hide(employmentGoalPopup);\r\n // OODForm4MonthlyPlacement.init();\r\n // forms.displayFormPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n }\r\n // build Create Form pop-up that displays when a Form is selected\r\n function buildCreateFormPopUp(formNumber) {\r\n\r\n if (!thisStartDate) {\r\n thisStartDate = new Date();\r\n thisStartDate.setDate(1); // Set to the first day of the current month\r\n thisStartDate.setMonth(thisStartDate.getMonth() - 1); // Go back one month\r\n thisStartDate.setDate(1); // Ensure it's the first day of the previous month\r\n }\r\n\r\n if (!thisEndDate) {\r\n thisEndDate = new Date();\r\n thisEndDate.setDate(0); // Sets the date to the last day of the previous month\r\n }\r\n\r\n createFilterValues = {\r\n token: $.session.Token,\r\n // serviceDateStart: UTIL.formatDateFromDateObj(dates.subDays(new Date(), 30)),\r\n // serviceDateEnd: UTIL.getTodaysDate(),\r\n serviceDateStart: thisStartDate.toISOString().split('T')[0],\r\n serviceDateEnd: thisEndDate.toISOString().split('T')[0],\r\n\r\n userId: '%',\r\n // userName: $.session.LName + ', ' + $.session.Name,\r\n // serviceId: '%',\r\n // serviceName: '',\r\n // referenceNumber: '%',\r\n };\r\n\r\n\r\n // popup\r\n createfilterPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n // dropdowns & inputs\r\n employeeDropdown = dropdown.build({\r\n label: 'Employee',\r\n dropdownId: 'employeeDropdown',\r\n // value: createFilterValues.userId,\r\n });\r\n\r\n createServiceDateStartInput = input.build({\r\n type: 'date',\r\n label: 'Service Date Start',\r\n style: 'secondary',\r\n value: createFilterValues.serviceDateStart,\r\n });\r\n createServiceDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Service Date End',\r\n style: 'secondary',\r\n value: createFilterValues.serviceDateEnd,\r\n });\r\n\r\n createreferenceNumbersDropdown = dropdown.build({\r\n label: 'Reference Number',\r\n dropdownId: 'createreferenceNumbersDropdown',\r\n id: 'createreferenceNumbersDropdown',\r\n // value: '',\r\n });\r\n\r\n // apply filters button\r\n createfilterPopupCreateBTN = button.build({\r\n text: `Create Form ${formNumber}`,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => createfilterPopupDoneBtn(formNumber),\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => POPUP.hide(createfilterPopup),\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(createfilterPopupCreateBTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n // build popup\r\n \r\n createfilterPopup.appendChild(employeeDropdown);\r\n \r\n createfilterPopup.appendChild(createServiceDateStartInput);\r\n \r\n createfilterPopup.appendChild(createServiceDateEndInput);\r\n \r\n createfilterPopup.appendChild(createreferenceNumbersDropdown);\r\n createfilterPopup.appendChild(btnWrap);\r\n\r\n populateCreateEmployeeDropdown();\r\n populatecreateReferenceNumberDropdown(formNumber);\r\n createeventListeners(formNumber);\r\n // checkCreatePopupRequiredFields();\r\n // setupFilterEvent();\r\n\r\n \r\n\r\n //return filterPopup;\r\n const formsPopup = document.getElementById('createOODFormsPopup');\r\n formsPopup.remove();\r\n\r\n POPUP.show(createfilterPopup);\r\n checkCreatePopupRequiredFields();\r\n\r\n }\r\n\r\n async function createfilterPopupDoneBtn(formNumber) {\r\n POPUP.hide(createfilterPopup);\r\n createeventListeners(formNumber);\r\n generateAndTrackFormProgress(formNumber);\r\n \r\n loadOODLanding();\r\n\r\n }\r\n\r\n\r\n function createeventListeners(formNumber) {\r\n createServiceDateStartInput.addEventListener('input', event => { \r\n if (event.target.value !== '') {\r\n createFilterValues.serviceDateStart = event.target.value;\r\n populatecreateReferenceNumberDropdown(formNumber);\r\n } else {\r\n event.target.value = createFilterValues.serviceDateStart;\r\n \r\n } \r\n });\r\n createServiceDateEndInput.addEventListener('input', event => { \r\n if (event.target.value !== '') { \r\n createFilterValues.serviceDateEnd = event.target.value;\r\n populatecreateReferenceNumberDropdown(formNumber);\r\n } else {\r\n event.target.value = createFilterValues.serviceDateEnd;\r\n \r\n }\r\n });\r\n employeeDropdown.addEventListener('change', event => {\r\n createFilterValues.userId = event.target.value;\r\n createFilterValues.userName = event.target.options[event.target.selectedIndex].text;\r\n });\r\n \r\n createreferenceNumbersDropdown.addEventListener('change', event => {\r\n createFilterValues.referenceNumber = event.target.value;\r\n checkCreatePopupRequiredFields();\r\n });\r\n \r\n }\r\n\r\n function checkCreatePopupRequiredFields() {\r\n // var createreferenceNumbersDropdown = document.querySelector('#createreferenceNumbersDropdown');\r\n let createreferenceNumbersDropDown = document.getElementById(\"createreferenceNumbersDropdown\");\r\n if (createreferenceNumbersDropDown.value === '' || createreferenceNumbersDropDown.value === '%') { \r\n createreferenceNumbersDropDown.parentElement.classList.add('error');\r\n createfilterPopupCreateBTN.classList.add('disabled'); \r\n return;\r\n } else {\r\n createreferenceNumbersDropDown.parentElement.classList.remove('error');\r\n createfilterPopupCreateBTN.classList.remove('disabled');\r\n }\r\n\r\n }\r\n\r\n function buildEmploymentGoalPopUp() {\r\n // popup\r\n employmentGoalPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n \r\n\r\n\temploymentGoalTextarea = input.build({\r\n label: 'Employment Goal',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: employmentGoalText,\r\n // charLimit: charLimits.importantTo,\r\n forceCharLimit: true,\r\n callback: e => {\r\n employmentGoalText = e.target.value; \r\n },\r\n });\r\n employmentGoalTextarea.classList.add('importantTo');\r\n\t\t\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const success = await OODAjax.updateEmploymentGoal(\r\n { peopleId: selectedConsumerPeopleId, \r\n userId: $.session.UserId, \r\n ServiceGoal: employmentGoalText,\r\n });\r\n POPUP.hide(employmentGoalPopup);\r\n loadOODLanding();\r\n },\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n\r\n employmentGoalPopupCancelBtn()\r\n loadOODLanding();\r\n },\r\n });\r\n\t\t\r\n\t\t\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n let employmentGoalTitle = document.createElement('h2');\r\n employmentGoalTitle.innerHTML =\r\n `Update Employment Goal`;\r\n\r\n employmentGoalTitle.style.padding = '10px';\r\n\r\n employmentGoalPopup.appendChild(employmentGoalTitle);\r\n\t\temploymentGoalPopup.appendChild(employmentGoalTextarea);\r\n\t employmentGoalPopup.appendChild(btnWrap);\r\n\r\n //return filterPopup;\r\n POPUP.show(employmentGoalPopup);\r\n checkEmploymentGoalRequiredFields();\r\n checkEmploymentGoalEventListners();\r\n }\r\n\r\n function checkEmploymentGoalRequiredFields() {\r\n var employmentGoalInput = employmentGoalPopup.querySelector('textarea');\r\n\r\n if (employmentGoalInput.value === '') {\r\n employmentGoalTextarea.classList.add('error');\r\n } else {\r\n employmentGoalTextarea.classList.remove('error');\r\n }\r\n\r\n setBtnStatus();\r\n }\r\n \r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(employmentGoalPopup.querySelectorAll('.error'));\r\n if ((hasErrors.length !== 0)) {\r\n APPLY_BTN.classList.add('disabled');\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n \r\n }\r\n function checkEmploymentGoalEventListners() {\r\n // var employeeGoalInput = employeeGoalPopup.querySelector('textarea');\r\n employmentGoalTextarea.addEventListener('input', event => {\r\n employmentGoalText = event.target.value;\r\n checkEmploymentGoalRequiredFields();\r\n });\r\n }\r\n \r\n\r\n function init() {\r\n //DOM.clearActionCenter();\r\n // PROGRESS.SPINNER.show('Loading PDF Forms...');\r\n //loadPDFFormsLanding();\r\n\r\n setActiveModuleAttribute('OOD');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadOODLanding,\r\n buildEntryServicePopUp,\r\n buildSummaryServicePopUp,\r\n };\r\n})();\r\n","var OODAjax = (function () {\r\n // OOD Main/Landing Page\r\n async function getOODEntriesAsync(consumerIds, serviceStartDate, serviceEndDate, userId, serviceCode, referenceNumber) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOODEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceStartDate\":\"' +\r\n serviceStartDate +\r\n '\", \"serviceEndDate\":\"' +\r\n serviceEndDate +\r\n '\", \"userId\":\"' +\r\n userId +\r\n '\", \"serviceCode\":\"' +\r\n serviceCode +\r\n '\", \"referenceNumber\":\"' +\r\n referenceNumber +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // OOD Main/Landing Page\r\n async function getActiveEmployeesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveEmployees/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Form 4 -- Monthly Placement\r\n async function getConsumerEmployersAsync(consumerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerEmployers/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n // Employers Page\r\n async function getActiveEmployersAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveEmployers/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Employers Page\r\n async function deleteEmployerAsync(employerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteEmployer/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"employerId\":\"' +\r\n employerId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Employers Page\r\n async function updateEmployerAsync(\r\n employerId, \r\n employerName, \r\n address1, \r\n address2, \r\n city, \r\n state,\r\n zipcode\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateEmployer/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n employerId, \r\n employerName, \r\n address1, \r\n address2, \r\n city, \r\n state,\r\n zipcode,\r\n userId: $.session.UserId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Employers Page\r\n async function insertEmployerAsync(\r\n employerName, \r\n address1, \r\n address2, \r\n city, \r\n state,\r\n zipcode\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertEmployer/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n employerName, \r\n address1, \r\n address2, \r\n city, \r\n state,\r\n zipcode,\r\n userId: $.session.UserId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Employers Page\r\n function getEmployer(employerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getEmployerJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"employerId\":\"' + employerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getEmployerJSONResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n async function updateEmploymentGoal(retrieveData) {\r\n //type, value, consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateEmploymentGoal/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return {\r\n ...data.updateEmploymentGoalResult,\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n}\r\n\r\n\r\n // OOD Main/Landing Page\r\n async function getActiveServiceCodesAsync(serviceCodeType) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveServiceCodes/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n serviceCodeType: serviceCodeType,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n async function getConsumerReferenceNumbersAsync(consumerIds, startDate, endDate, formNumber) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerReferenceNumbers/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerIds: consumerIds,\r\n startDate: startDate,\r\n endDate: endDate,\r\n formNumber: formNumber,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n // OOD Main/Landing Page\r\n async function getConsumerServiceCodesAsync(consumerId, serviceDate) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerServiceCodes/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n serviceDate: serviceDate,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n // Form 4 -- Monthly Placement\r\n async function getContactTypesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getContactTypes/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n // Form 4 -- Monthly Placement\r\n async function getOutcomesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomes/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Form 8 Community Based Assessment Form -- Contact Methods data for DDL\r\n async function getContactMethodsAsync(FormType) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getContactMethods/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n formtype: FormType,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // Form 8 Community Based Assessment Form -- Indicators data for DDLs\r\n async function getIndicatorsAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getIndicators/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // Form 8 Community Based Assessment Form -- Positions data for DDLs\r\n async function getPositionsAsync(consumerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOODPositions/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Form 4 -- Monthly Placement\r\n function getForm4MonthlyPlacementEditData(caseNoteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm4MonthlyPlacementEditDataJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseNoteId\":\"' + caseNoteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm4MonthlyPlacementEditDataJSONResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 4 -- Monthly Placement\r\n function updateForm4MonthlyPlacementEditData(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n SAMLevel: data.SAMLevel,\r\n employer: data.employer,\r\n contactType: data.contactType,\r\n jobSeekerPresent: data.jobSeekerPresent,\r\n outcome: data.outcome,\r\n TSCNotified: data.TSCNotified,\r\n bilingualSupplement: data.bilingualSupplement,\r\n notes: data.notes,\r\n userId: data.userId,\r\n application: data.application, \r\n interview: data.interview,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm4MonthlyPlacementEditData/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm4MonthlyPlacementEditDataResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 4 -- Monthly Placement\r\n function insertForm4MonthlyPlacementEditData(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n SAMLevel: data.SAMLevel,\r\n employer: data.employer,\r\n contactType: data.contactType,\r\n jobSeekerPresent: data.jobSeekerPresent,\r\n outcome: data.outcome,\r\n TSCNotified: data.TSCNotified,\r\n bilingualSupplement: data.bilingualSupplement,\r\n notes: data.notes,\r\n caseManagerId: data.caseManagerId,\r\n userId: data.userId,\r\n serviceId: data.serviceId,\r\n referenceNumber: data.referenceNumber,\r\n application: data.application, \r\n interview: data.interview,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm4MonthlyPlacementEditData/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm4MonthlyPlacementEditDataResult);\r\n },\r\n });\r\n }\r\n \r\n // Both Forms (Form 4 and Form 8) -- OOD Form Entry\r\n // TODO JOE: LOOK into this for Form 10 \r\n async function deleteOODFormEntryAsync(caseNoteId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteOODFormEntry/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"caseNoteId\":\"' +\r\n caseNoteId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n \r\n // Form 4 -- Monthly Summary\r\n function getForm4MonthlySummary(emReviewId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm4MonthlySummaryJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"emReviewId\":\"' + emReviewId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm4MonthlySummaryJSONResult[0];\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 4 -- Monthly Summary\r\n function updateForm4MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewId: data.emReviewId,\r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emEmploymentGoal: data.emEmploymentGoal,\r\n emReferralQuestions: data.emReferralQuestions, //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch: data.emIndivInputonSearch,\r\n emPotentialIssueswithProgress: data.emPotentialIssueswithProgress,\r\n emPlanGoalsNextMonth: data.emPlanGoalsNextMonth, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts: data.emNumberofConsumerContacts, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer: data.emNumberEmployerContactsbyConsumer, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff: data.emNumberEmployerContactsbyStaff, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment: data.emNumberMonthsJobDevelopment, //-- REMOVED FROM FORM ON 4/7/22\r\n userId: data.userId\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm4MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm4MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 4 -- Monthly Summary\r\n function insertForm4MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emEmploymentGoal: data.emEmploymentGoal,\r\n emReferralQuestions: data.emReferralQuestions, //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch: data.emIndivInputonSearch,\r\n emPotentialIssueswithProgress: data.emPotentialIssueswithProgress,\r\n emPlanGoalsNextMonth: data.emPlanGoalsNextMonth, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts: data.emNumberofConsumerContacts, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer: data.emNumberEmployerContactsbyConsumer, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff: data.emNumberEmployerContactsbyStaff, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment: data.emNumberMonthsJobDevelopment, //-- REMOVED FROM FORM ON 4/7/22\r\n userId: data.userId,\r\n serviceId: data.serviceId\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm4MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm4MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n \r\n // Both Forms (Form 4 and Form 8) -- Monthly Entry\r\n async function deleteFormMonthlySummaryAsync(emReviewId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteFormMonthlySummary/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"emReviewId\":\"' +\r\n emReviewId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // Form 6 -- Form6Tier1andJDPLan\r\n function getForm6Tier1andJDPLan(caseNoteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm6Tier1andJDPLan/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseNoteId\":\"' + caseNoteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm6Tier1andJDPLanResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 6 -- Form6Tier1andJDPLan\r\n function updateForm6Tier1andJDPLan(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n SAMLevel: data.SAMLevel,\r\n contactMethod: data.contactMethod,\r\n narrative: data.narrative,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm6Tier1andJDPLan/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm6Tier1andJDPLanResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 6 -- Form6Tier1andJDPLan\r\n function insertForm6Tier1andJDPLan(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n SAMLevel: data.SAMLevel,\r\n contactMethod: data.contactMethod,\r\n narrative: data.narrative,\r\n userId: data.userId,\r\n serviceId: data.serviceId,\r\n referenceNumber: data.referenceNumber,\r\n caseManagerId: data.caseManagerId,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm6Tier1andJDPLan/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm6Tier1andJDPLanResult);\r\n },\r\n });\r\n }\r\n \r\n \r\n // Form 8 -- Form8CommunityBasedAssessment\r\n function getForm8CommunityBasedAssessment(caseNoteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm8CommunityBasedAssessment/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseNoteId\":\"' + caseNoteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm8CommunityBasedAssessmentResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Form8CommunityBasedAssessment\r\n function updateForm8CommunityBasedAssessment(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n SAMLevel: data.SAMLevel,\r\n position: data.position,\r\n employer: data.employer,\r\n contactMethod: data.contactMethod,\r\n behavioralIndicators: data.behavioralIndicators,\r\n jobTaskQualityIndicators: data.jobTaskQualityIndicators,\r\n jobTaskQuantityIndicators: data.jobTaskQuantityIndicators,\r\n narrative: data.narrative,\r\n interventions: data.interventions,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm8CommunityBasedAssessment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm8CommunityBasedAssessmentResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Form8CommunityBasedAssessment\r\n function insertForm8CommunityBasedAssessment(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n SAMLevel: data.SAMLevel,\r\n position: data.position,\r\n employer: data.employer,\r\n contactMethod: data.contactMethod,\r\n behavioralIndicators: data.behavioralIndicators,\r\n jobTaskQualityIndicators: data.jobTaskQualityIndicators,\r\n jobTaskQuantityIndicators: data.jobTaskQuantityIndicators,\r\n narrative: data.narrative,\r\n interventions: data.interventions,\r\n userId: data.userId,\r\n serviceId: data.serviceId,\r\n referenceNumber: data.referenceNumber,\r\n caseManagerId: data.caseManagerId,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm8CommunityBasedAssessment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm8CommunityBasedAssessmentResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Monthly Summary\r\n function getForm8MonthlySummary(emReviewId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm8MonthlySummary/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"emReviewId\":\"' + emReviewId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm8MonthlySummaryResult[0];\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Monthly Summary\r\n function updateForm8MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewId: data.emReviewId,\r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emSummaryIndivSelfAssessment: data.emSummaryIndivSelfAssessment,\r\n emSummaryIndivEmployerAssessment: data.emSummaryIndivEmployerAssessment,\r\n emSummaryIndivProviderAssessment: data.emSummaryIndivProviderAssessment, \r\n emSupportandTransition: data.emSupportandTransition,\r\n emReviewVTS: data.emReviewVTS,\r\n userId: data.userId, \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm8MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm8MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Monthly Summary\r\n function insertForm8MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emSummaryIndivSelfAssessment: data.emSummaryIndivSelfAssessment,\r\n emSummaryIndivEmployerAssessment: data.emSummaryIndivEmployerAssessment,\r\n emSummaryIndivProviderAssessment: data.emSummaryIndivProviderAssessment,\r\n emSupportandTransition: data.emSupportandTransition,\r\n emReviewVTS: data.emReviewVTS,\r\n userId: data.userId,\r\n serviceId: data.serviceId \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm8MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm8MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n\r\n async function getEmploymentGoal(peopleId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmploymentGoal/',\r\n data: JSON.stringify({\r\n peopleId: peopleId,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // Form 10 -- Transportation\r\n function getForm10TransportationData(OODTransportationId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm10TransportationData/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"OODTransportationId\":\"' + OODTransportationId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm10TransportationDataResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 10 -- Transportation\r\n function updateForm10TransportationData(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n OODTransportationId: data.OODTransportationId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime, \r\n numberInVehicle: data.numberInVehicle,\r\n startLocation: data.startLocation,\r\n endLocation: data.endLocation,\r\n userId: data.userId, \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm10TransportationData/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm10TransportationDataResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 10 -- Transportation\r\n function insertForm10TransportationData(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n numberInVehicle: data.numberInVehicle,\r\n startLocation: data.startLocation,\r\n endLocation: data.endLocation,\r\n userId: data.userId,\r\n referenceNumber: data.referenceNumber,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm10TransportationData/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm10TransportationDataResult);\r\n },\r\n });\r\n }\r\n\r\n // Form 16 -- Form16SummerYouthWorkExperience\r\n function getForm16SummerYouthWorkExperience(caseNoteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm16SummerYouthWorkExperience/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseNoteId\":\"' + caseNoteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm16SummerYouthWorkExperienceResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- getForm16SummerYouthWorkExperience\r\n function updateForm16SummerYouthWorkExperience(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n position: data.position,\r\n groupSize: data.groupSize,\r\n interventions: data.interventions,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm16SummerYouthWorkExperience/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm16SummerYouthWorkExperienceResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- getForm16SummerYouthWorkExperience\r\n function insertForm16SummerYouthWorkExperience(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n position: data.position,\r\n groupSize: data.groupSize,\r\n interventions: data.interventions,\r\n userId: data.userId,\r\n serviceId: data.serviceId,\r\n referenceNumber: data.referenceNumber,\r\n caseManagerId: data.caseManagerId,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm16SummerYouthWorkExperience/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm16SummerYouthWorkExperienceResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- Monthly Summary\r\n function getForm16MonthlySummary(emReviewId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm16MonthlySummary/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"emReviewId\":\"' + emReviewId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm16MonthlySummaryResult[0];\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- Monthly Summary\r\n function updateForm16MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewId: data.emReviewId,\r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emSummaryIndivSelfAssessment: data.emSummaryIndivSelfAssessment,\r\n emSummaryIndivProviderAssessment: data.emSummaryIndivProviderAssessment, \r\n emReviewVTS: data.emReviewVTS,\r\n emOfferedHoursNotWorkNumber: data.emOfferedHoursNotWorkNumber,\r\n userId: data.userId, \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm16MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm16MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- Monthly Summary\r\n function insertForm16MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emSummaryIndivSelfAssessment: data.emSummaryIndivSelfAssessment,\r\n emSummaryIndivProviderAssessment: data.emSummaryIndivProviderAssessment,\r\n emReviewVTS: data.emReviewVTS,\r\n emOfferedHoursNotWorkNumber: data.emOfferedHoursNotWorkNumber,\r\n userId: data.userId,\r\n serviceId: data.serviceId \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm16MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm16MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n\r\n\r\n async function deleteOODForm10TransportationEntry(OODTransportationId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteOODForm10TransportationEntry/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"OODTransportationId\":\"' +\r\n OODTransportationId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // Form 4 -- Generate Form\r\n // async function generateForm4(data, callback) {\r\n // const generateForm4 = await _UTIL.fetchData('generateForm4', {\r\n // token: $.session.Token, \r\n // referenceNumber: data.referenceNumber,\r\n // vendorId: '',\r\n // peopleId: data.peopleId,\r\n // serviceCodeId: data.serviceCodeId,\r\n // startDate: data.startDate,\r\n // endDate: data.endDate,\r\n // });\r\n\r\n // return generateForm4;\r\n // }\r\n\r\n // Form 4 -- Generate Form\r\n function generateForm4(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm4/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId\r\n }\r\n\r\n // Create an HTML form element\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank'); // Open the response in a new tab\r\n\r\n // Create input elements for form data\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('type', 'hidden'); // Hidden input\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n form.setAttribute('success', successFunction);\r\n form.setAttribute('enctype', 'bare');\r\n //form.setAttribute('enctype', 'multipart/form-data');\r\n\r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n function generateForm6(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm6/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId,\r\n loggedInUserPersonId: data.loggedInUserPersonId\r\n }\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'bare');\r\n form.setAttribute('success', successFunction); \r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var loggedInUserPersonIdInput = document.createElement('input');\r\n loggedInUserPersonIdInput.setAttribute('name', 'loggedInUserPersonId');\r\n loggedInUserPersonIdInput.setAttribute('value', data.loggedInUserPersonId);\r\n loggedInUserPersonIdInput.id = 'loggedInUserPersonId';\r\n\r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n form.appendChild(loggedInUserPersonIdInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n\r\n function generateForm8(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm8/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId,\r\n loggedInUserPersonId: data.loggedInUserPersonId\r\n }\r\n\r\n // Create an HTML form element\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank'); // Open the response in a new tab\r\n\r\n // Create input elements for form data\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('type', 'hidden'); // Hidden input\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n form.setAttribute('success', successFunction);\r\n form.setAttribute('enctype', 'bare');\r\n //form.setAttribute('enctype', 'multipart/form-data');\r\n\r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var loggedInUserPersonIdInput = document.createElement('input');\r\n loggedInUserPersonIdInput.setAttribute('name', 'loggedInUserPersonId');\r\n loggedInUserPersonIdInput.setAttribute('value', data.loggedInUserPersonId);\r\n loggedInUserPersonIdInput.id = 'loggedInUserPersonId';\r\n\r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n form.appendChild(loggedInUserPersonIdInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n function generateForm10(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm10/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId,\r\n loggedInUserPersonId: data.loggedInUserPersonId\r\n }\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'bare');\r\n form.setAttribute('success', successFunction); \r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n var loggedInUserPersonIdInput = document.createElement('input');\r\n loggedInUserPersonIdInput.setAttribute('name', 'loggedInUserPersonId');\r\n loggedInUserPersonIdInput.setAttribute('value', data.loggedInUserPersonId);\r\n loggedInUserPersonIdInput.id = 'loggedInUserPersonId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n form.appendChild(loggedInUserPersonIdInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n function generateForm16(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm16/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId,\r\n loggedInUserPersonId: data.loggedInUserPersonId\r\n }\r\n\r\n // Create an HTML form element\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank'); // Open the response in a new tab\r\n\r\n // Create input elements for form data\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('type', 'hidden'); // Hidden input\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n form.setAttribute('success', successFunction);\r\n form.setAttribute('enctype', 'bare');\r\n //form.setAttribute('enctype', 'multipart/form-data');\r\n\r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var loggedInUserPersonIdInput = document.createElement('input');\r\n loggedInUserPersonIdInput.setAttribute('name', 'loggedInUserPersonId');\r\n loggedInUserPersonIdInput.setAttribute('value', data.loggedInUserPersonId);\r\n loggedInUserPersonIdInput.id = 'loggedInUserPersonId';\r\n\r\n \r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n form.appendChild(loggedInUserPersonIdInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n return { \r\n \r\n getOODEntriesAsync,\r\n getActiveEmployeesAsync,\r\n getConsumerEmployersAsync,\r\n getActiveEmployersAsync,\r\n deleteEmployerAsync,\r\n updateEmployerAsync,\r\n insertEmployerAsync,\r\n getEmployer,\r\n updateEmploymentGoal,\r\n getEmploymentGoal,\r\n getActiveServiceCodesAsync,\r\n getConsumerReferenceNumbersAsync,\r\n getConsumerServiceCodesAsync,\r\n getContactTypesAsync,\r\n getOutcomesAsync,\r\n getContactMethodsAsync,\r\n getIndicatorsAsync,\r\n getPositionsAsync, \r\n getForm4MonthlyPlacementEditData,\r\n updateForm4MonthlyPlacementEditData,\r\n insertForm4MonthlyPlacementEditData,\r\n deleteOODFormEntryAsync,\r\n getForm4MonthlySummary,\r\n updateForm4MonthlySummary,\r\n insertForm4MonthlySummary,\r\n deleteFormMonthlySummaryAsync,\r\n getForm6Tier1andJDPLan,\r\n updateForm6Tier1andJDPLan,\r\n insertForm6Tier1andJDPLan,\r\n getForm8CommunityBasedAssessment,\r\n updateForm8CommunityBasedAssessment,\r\n insertForm8CommunityBasedAssessment,\r\n getForm8MonthlySummary,\r\n updateForm8MonthlySummary,\r\n insertForm8MonthlySummary,\r\n getForm10TransportationData,\r\n insertForm10TransportationData,\r\n updateForm10TransportationData,\r\n deleteOODForm10TransportationEntry,\r\n getForm16SummerYouthWorkExperience,\r\n insertForm16SummerYouthWorkExperience,\r\n updateForm16SummerYouthWorkExperience,\r\n getForm16MonthlySummary,\r\n updateForm16MonthlySummary,\r\n insertForm16MonthlySummary,\r\n generateForm4,\r\n generateForm6,\r\n generateForm8,\r\n generateForm10,\r\n generateForm16\r\n };\r\n }) ();\r\n ","const addEditOutcomeServices = (() => {\r\n let outcomeServicesData;\r\n let selectedConsumer;\r\n let filterValues;\r\n let newFilterValues;\r\n let filterRow;\r\n let addOutCome;\r\n let importServicesBtn;\r\n let filesList = [];\r\n let backBtn;\r\n // DOM\r\n let pageWrap;\r\n let overviewTable;\r\n let fileInput;\r\n //--\r\n let filterPopup;\r\n let outcomeTypeDropdown;\r\n let effectiveDateStart;\r\n let effectiveDateEnd;\r\n let importDate;\r\n let applyFilterBtn;\r\n let btnWrap;\r\n let outcomeTypeBtnWrap;\r\n let effectiveDateBtnWrap;\r\n let importDateBtnWrap;\r\n let fromImportedServicesPage = false;\r\n\r\n async function init(selectedConsume, navigatedFromImport) {\r\n selectedConsumer = selectedConsume;\r\n\r\n if (navigatedFromImport) {\r\n fromImportedServicesPage = navigatedFromImport;\r\n } else {\r\n fromImportedServicesPage = false;\r\n }\r\n buildNewOutcomeServices();\r\n }\r\n\r\n async function buildNewOutcomeServices() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n initFilterValues();\r\n document.getElementById('mini_roster').style.display = 'none';\r\n pageWrap = document.createElement('div');\r\n const consumerCard = buildConsumerCard();\r\n const backbtnWrap = document.createElement('div');\r\n backbtnWrap.classList.add('addOutcomeBtnWrap');\r\n const addInsertServicesBtnWrap = document.createElement('div');\r\n addInsertServicesBtnWrap.classList.add('addInsertServicesBtnWrap');\r\n backbtnWrap.appendChild(addInsertServicesBtnWrap);\r\n\r\n filteredByData = buildFilteredByData();\r\n addOutCome = addOutcomesButton();\r\n backBtn = backButton();\r\n addInsertServicesBtnWrap.appendChild(addOutCome);\r\n\r\n if ($.session.InsertServices === true && $.session.applicationName === 'Advisor') {\r\n importServicesBtn = button.build({\r\n text: 'IMPORT SERVICES',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'importServices',\r\n callback: async () => {\r\n createUploadPopup();\r\n },\r\n });\r\n\r\n addInsertServicesBtnWrap.appendChild(importServicesBtn);\r\n }\r\n\r\n backbtnWrap.appendChild(backBtn);\r\n\r\n pageWrap.appendChild(consumerCard);\r\n pageWrap.appendChild(backbtnWrap);\r\n pageWrap.appendChild(filteredByData);\r\n DOM.ACTIONCENTER.appendChild(pageWrap);\r\n\r\n if ($.session.InsertOutcomes == true) {\r\n addOutCome.classList.remove('disabled');\r\n } else {\r\n addOutCome.classList.add('disabled');\r\n }\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Data...');\r\n pageWrap.appendChild(spinner);\r\n\r\n outcomeServicesData = await outcomesAjax.getOutcomeServicsPageData({\r\n token: $.session.Token,\r\n selectedConsumerId: selectedConsumer.id,\r\n outcomeType: filterValues.outcomeTypeName,\r\n effectiveDateStart: filterValues.effectiveDateStart,\r\n effectiveDateEnd: filterValues.effectiveDateEnd,\r\n appName: $.session.applicationName,\r\n });\r\n\r\n pageWrap.removeChild(spinner);\r\n buildOverviewTable();\r\n }\r\n\r\n // Create and append the popup to the body\r\n function createUploadPopup() {\r\n let filesList = [];\r\n\r\n // Create the main popup container\r\n const popup = document.createElement('div');\r\n popup.id = 'upload-popup';\r\n popup.className = 'upload-popup hiddenPopup';\r\n\r\n // Create the content container\r\n const popupContent = document.createElement('div');\r\n popupContent.className = 'upload-popup-content';\r\n\r\n // Create the heading\r\n const heading = document.createElement('h2');\r\n heading.innerText = 'Upload File';\r\n\r\n // Create the drop area\r\n const dropArea = document.createElement('div');\r\n dropArea.id = 'drop-area';\r\n dropArea.className = 'drop-area';\r\n dropArea.style.display = 'flex'; // Make the dropArea a flex container\r\n dropArea.style.flexDirection = 'column';\r\n dropArea.style.alignItems = 'center';\r\n dropArea.style.justifyContent = 'center';\r\n\r\n // Add text to the drop area\r\n const dropText1 = document.createElement('p');\r\n dropText1.innerText = 'Drag & drop a file here';\r\n const dropText2 = document.createElement('p');\r\n dropText2.innerText = 'or';\r\n\r\n // Handle drag and drop\r\n dropArea.addEventListener('dragover', event => {\r\n event.preventDefault();\r\n dropArea.classList.add('active');\r\n });\r\n\r\n dropArea.addEventListener('dragleave', () => {\r\n dropArea.classList.remove('active');\r\n });\r\n\r\n dropArea.addEventListener('drop', event => {\r\n event.preventDefault();\r\n dropArea.classList.remove('active');\r\n const files = event.dataTransfer.files;\r\n handleFiles(files);\r\n });\r\n\r\n // Create the file input element\r\n fileInput = document.createElement('input');\r\n fileInput.type = 'file';\r\n fileInput.id = 'file-input';\r\n fileInput.className = 'file-input';\r\n fileInput.multiple = true;\r\n fileInput.style.display = 'none'; // Hide the input element\r\n\r\n // Create the button for selecting files\r\n const selectFilesButton = button.build({\r\n text: 'Select File',\r\n id: 'select-files',\r\n style: 'primary',\r\n type: 'contained',\r\n classNames: 'btn',\r\n callback: async () => {\r\n fileInput.click();\r\n },\r\n });\r\n\r\n // Center the button in its container\r\n selectFilesButton.style.margin = '10px auto';\r\n\r\n // Event listener to handle file selection\r\n fileInput.addEventListener('change', event => {\r\n const files = event.target.files;\r\n handleFiles(files);\r\n });\r\n\r\n // Append text and button to drop area\r\n dropArea.appendChild(dropText1);\r\n dropArea.appendChild(dropText2);\r\n dropArea.appendChild(selectFilesButton);\r\n\r\n // Create the file list display area\r\n const fileListDisplay = document.createElement('div');\r\n fileListDisplay.id = 'file-list';\r\n fileListDisplay.className = 'file-list';\r\n\r\n // Create the close button\r\n const closeButton = button.build({\r\n text: 'Close',\r\n id: 'upload-close',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'btn',\r\n callback: async () => {\r\n hidePopup();\r\n filesList = [];\r\n },\r\n });\r\n\r\n // Create the Import button\r\n const importButton = button.build({\r\n text: 'Start Import',\r\n id: 'upload-import',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['btn', 'disabled'],\r\n callback: async () => {\r\n const attachmentsForSave = await processFilesForUpload(filesList);\r\n\r\n hidePopup();\r\n importServices.init(attachmentsForSave, outcomeServicesData, selectedConsumer);\r\n },\r\n });\r\n\r\n const uploadBtnsWrap = document.createElement('div');\r\n uploadBtnsWrap.className = 'uploadBtnsWrap';\r\n\r\n // Append all elements to the content container\r\n popupContent.appendChild(heading);\r\n popupContent.appendChild(dropArea);\r\n popupContent.appendChild(fileListDisplay);\r\n uploadBtnsWrap.appendChild(importButton);\r\n uploadBtnsWrap.appendChild(closeButton);\r\n popupContent.appendChild(uploadBtnsWrap);\r\n\r\n // Append the content container to the popup\r\n popup.appendChild(popupContent);\r\n\r\n // Append the popup to the body\r\n document.body.appendChild(popup);\r\n\r\n // Function to display file names\r\n function displayFileNames(filesList) {\r\n fileListDisplay.innerHTML = ''; // Clear previous file list\r\n const list = document.createElement('ul');\r\n filesList.forEach((file, index) => {\r\n const listItem = document.createElement('li');\r\n listItem.innerText = file.name;\r\n\r\n // Create the remove button (X)\r\n const removeButton = document.createElement('button');\r\n removeButton.innerText = 'X';\r\n removeButton.style.marginLeft = '10px';\r\n removeButton.style.color = 'red';\r\n removeButton.style.border = 'none';\r\n removeButton.style.background = 'transparent';\r\n removeButton.style.cursor = 'pointer';\r\n\r\n // Event listener to remove the file from the list\r\n removeButton.addEventListener('click', () => {\r\n removeFile(index);\r\n });\r\n\r\n listItem.appendChild(removeButton);\r\n list.appendChild(listItem);\r\n });\r\n fileListDisplay.appendChild(list);\r\n }\r\n\r\n // Function to handle files\r\n function handleFiles(files) {\r\n filesList = filesList.concat(Array.from(files));\r\n displayFileNames(filesList);\r\n for (const file of files) {\r\n console.log('File uploaded:', file.name);\r\n }\r\n\r\n toggleButtonsDisabled('import', filesList);\r\n }\r\n\r\n function toggleButtonsDisabled(filesList) {\r\n const importButton = document.getElementById('upload-import');\r\n\r\n if (filesList.length > 0) {\r\n importButton.disabled = false;\r\n importButton.classList.remove('disabled');\r\n } else {\r\n importButton.disabled = true;\r\n importButton.classList.add('disabled');\r\n }\r\n }\r\n\r\n // Function to remove a file from the list\r\n function removeFile(index) {\r\n filesList.splice(index, 1);\r\n fileInput.value = '';\r\n displayFileNames(filesList);\r\n \r\n toggleButtonsDisabled(filesList);\r\n }\r\n\r\n // Function to process files for upload\r\n async function processFilesForUpload(files) {\r\n let attachments = [];\r\n \r\n for (const file of files) {\r\n const attachmentDetails = await _DOM.getAttachmentDetails(file);\r\n attachments.push(attachmentDetails.attachment);\r\n }\r\n \r\n return attachments; // Return just the attachment data\r\n }\r\n }\r\n\r\n // Hide popup function\r\n function hidePopup() {\r\n const popup = document.getElementById('upload-popup');\r\n if (popup) {\r\n popup.remove();\r\n }\r\n }\r\n\r\n function addOutcomesButton() {\r\n return button.build({\r\n text: 'ADD NEW OUTCOME',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: async () => {\r\n if (!addOutCome.classList.contains('disabled')) {\r\n addOutcomes.init(selectedConsumer, 0);\r\n }\r\n },\r\n });\r\n }\r\n\r\n function backButton() {\r\n return button.build({\r\n text: 'BACK',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => {\r\n document.getElementById('mini_roster').style.display = 'block';\r\n outcomes.backToOutcomeLoad(selectedConsumer);\r\n },\r\n });\r\n }\r\n\r\n function initFilterValues() {\r\n filterValues = {\r\n outcomeType: '%',\r\n effectiveDateStart: dates.formatISO(dates.subYears(new Date(new Date().setHours(0, 0, 0, 0)), 10)).slice(0, 10),\r\n effectiveDateEnd: dates.formatISO(new Date(new Date().setHours(0, 0, 0, 0))).slice(0, 10),\r\n importDate: dates.formatISO(new Date(new Date().setHours(0, 0, 0, 0))).slice(0, 10),\r\n outcomeTypeName: '%',\r\n };\r\n }\r\n\r\n function buildConsumerCard() {\r\n selectedConsumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(selectedConsumer.card);\r\n\r\n return wrap;\r\n }\r\n\r\n function buildFilteredByData() {\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n\r\n effectiveDateEnd = `${formatDate(filterValues.effectiveDateEnd)}`;\r\n importDate = '';\r\n\r\n if (fromImportedServicesPage) {\r\n importDate = `${formatDate(filterValues.effectiveDateEnd)}`;\r\n }\r\n\r\n if (!currentFilterDisplay) {\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n filterButtonSet();\r\n currentFilterDisplay.appendChild(btnWrap);\r\n }\r\n\r\n if (filterValues.outcomeType === '%') {\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n btnWrap.removeChild(outcomeTypeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n if (document.getElementById('outcomeTypeBtn') != null)\r\n document.getElementById('outcomeTypeBtn').innerHTML = 'Outcome Type: ' + filterValues.outcomeTypeName;\r\n }\r\n\r\n if (effectiveDateEnd == '') {\r\n btnWrap.appendChild(effectiveDateBtnWrap);\r\n btnWrap.removeChild(effectiveDateBtnWrap);\r\n } else {\r\n btnWrap.appendChild(effectiveDateBtnWrap);\r\n if (document.getElementById('effectiveDateBtn') != null)\r\n document.getElementById('effectiveDateBtn').innerHTML = 'Effective As Of: ' + effectiveDateEnd;\r\n }\r\n\r\n if (importDate == '') {\r\n btnWrap.removeChild(importDateBtnWrap);\r\n } else {\r\n btnWrap.appendChild(importDateBtnWrap);\r\n if (document.getElementById('importDateBtn') != null)\r\n document.getElementById('importDateBtn').innerHTML = 'ImportDate: ' + importDate;\r\n }\r\n\r\n return currentFilterDisplay;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n showFilterPopup('ALL');\r\n },\r\n });\r\n\r\n outcomeTypeBtn = button.build({\r\n id: 'outcomeTypeBtn',\r\n text: 'Outcome Type: ' + filterValues.outcomeType,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('outcomeTypeBtn');\r\n },\r\n });\r\n outcomeTypeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('outcomeTypeBtn');\r\n },\r\n });\r\n\r\n effectiveDateBtn = button.build({\r\n id: 'effectiveDateBtn',\r\n text: 'Effective As Of: ' + effectiveDateEnd,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('effectiveDateBtn');\r\n },\r\n });\r\n\r\n importDateBtn = button.build({\r\n id: 'importDateBtn',\r\n text: 'Import Date: ' + importDate,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('importDateBtn');\r\n },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n outcomeTypeBtnWrap = document.createElement('div');\r\n outcomeTypeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n outcomeTypeBtnWrap.appendChild(outcomeTypeBtn);\r\n outcomeTypeBtnWrap.appendChild(outcomeTypeCloseBtn);\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n\r\n effectiveDateBtnWrap = document.createElement('div');\r\n effectiveDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n effectiveDateBtnWrap.appendChild(effectiveDateBtn);\r\n btnWrap.appendChild(effectiveDateBtnWrap);\r\n\r\n importDateBtnWrap = document.createElement('div');\r\n importDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n importDateBtnWrap.appendChild(importDateBtn);\r\n btnWrap.appendChild(importDateBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'outcomeTypeBtn') {\r\n filterValues.outcomeType = '%';\r\n filterValues.outcomeTypeName = '%';\r\n newFilterValues.outcomeType = '%';\r\n newFilterValues.outcomeTypeName = '%';\r\n }\r\n applyFilter();\r\n }\r\n\r\n function showFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({});\r\n\r\n // Dropdowns\r\n outcomeTypeDropdown = dropdown.build({\r\n dropdownId: 'outcomeTypeDropdown',\r\n label: 'Outcome Type',\r\n style: 'secondary',\r\n value: filterValues.outcomeType,\r\n });\r\n\r\n // Date Inputs\r\n const effectiveDateWrap = document.createElement('div');\r\n effectiveDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Effective As Of',\r\n style: 'secondary',\r\n value: filterValues.effectiveDateEnd,\r\n });\r\n\r\n const importDateWrap = document.createElement('div');\r\n importDateInput = input.build({\r\n type: 'date',\r\n label: 'Import Date',\r\n style: 'secondary',\r\n value: filterValues.importDate,\r\n });\r\n\r\n if (IsShow == 'ALL' || IsShow == 'effectiveDateBtn') {\r\n effectiveDateWrap.appendChild(effectiveDateEndInput);\r\n }\r\n\r\n if (IsShow == 'ALL' || IsShow == 'importDateBtn') {\r\n importDateWrap.appendChild(importDateInput);\r\n }\r\n\r\n const btnFilterWrap = document.createElement('div');\r\n btnFilterWrap.classList.add('btnWrap');\r\n applyFilterBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n const cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n POPUP.hide(filterPopup);\r\n },\r\n });\r\n btnFilterWrap.appendChild(applyFilterBtn);\r\n btnFilterWrap.appendChild(cancelFilterBtn);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'outcomeTypeBtn') filterPopup.appendChild(outcomeTypeDropdown);\r\n\r\n filterPopup.appendChild(effectiveDateWrap);\r\n filterPopup.appendChild(importDateWrap);\r\n filterPopup.appendChild(btnFilterWrap);\r\n\r\n POPUP.show(filterPopup);\r\n populateOutcomeTypeDropdown();\r\n setupFilterEvents();\r\n }\r\n function setupFilterEvents() {\r\n newFilterValues = {};\r\n\r\n outcomeTypeDropdown.addEventListener('change', e => {\r\n var selectedOption = e.target.options[e.target.selectedIndex];\r\n newFilterValues.outcomeType = selectedOption.value;\r\n newFilterValues.outcomeTypeName = selectedOption.text;\r\n });\r\n\r\n effectiveDateEndInput.addEventListener('change', e => {\r\n if (e.target.value === '') {\r\n effectiveDateEndInput.classList.add('error');\r\n } else {\r\n effectiveDateEndInput.classList.remove('error');\r\n newFilterValues.effectiveDateEnd = e.target.value;\r\n }\r\n checkFilterPopForErrors();\r\n });\r\n applyFilterBtn.addEventListener('click', async e => {\r\n POPUP.hide(filterPopup);\r\n if (!applyFilterBtn.classList.contains('disabled')) {\r\n applyFilter();\r\n }\r\n });\r\n }\r\n\r\n async function populateOutcomeTypeDropdown() {\r\n const { getOutcomeTypeDropDownResult: OutcomeType } = await outcomesAjax.getOutcomeTypeDropDownAsync(selectedConsumer);\r\n let outcomeTypeData = OutcomeType.map(outcomeTypes => ({\r\n id: outcomeTypes.Goal_Type_ID,\r\n value: outcomeTypes.Goal_Type_ID,\r\n text: outcomeTypes.goal_type_description,\r\n }));\r\n outcomeTypeData.unshift({ id: '%', value: '%', text: 'ALL' });\r\n dropdown.populate('outcomeTypeDropdown', outcomeTypeData, filterValues.outcomeType);\r\n }\r\n\r\n function checkFilterPopForErrors() {\r\n const errors = [...filterPopup.querySelectorAll('.error')];\r\n const hasErrors = errors.length > 0 ? true : false;\r\n\r\n if (hasErrors) {\r\n applyFilterBtn.classList.add('disabled');\r\n } else {\r\n applyFilterBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function applyFilter() {\r\n filterValues = { ...filterValues, ...newFilterValues };\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Data...');\r\n pageWrap.removeChild(overviewTable);\r\n pageWrap.appendChild(spinner);\r\n\r\n outcomeServicesData = await outcomesAjax.getOutcomeServicsPageData({\r\n token: $.session.Token,\r\n selectedConsumerId: selectedConsumer.id,\r\n outcomeType: filterValues.outcomeTypeName == 'ALL' ? '%' : filterValues.outcomeTypeName,\r\n effectiveDateStart: filterValues.effectiveDateStart,\r\n effectiveDateEnd: filterValues.effectiveDateEnd,\r\n appName: $.session.applicationName,\r\n });\r\n\r\n pageWrap.removeChild(spinner);\r\n\r\n buildOverviewTable();\r\n const newfilteredByData = buildFilteredByData();\r\n pageWrap.replaceChild(newfilteredByData, filteredByData);\r\n filteredByData = newfilteredByData;\r\n }\r\n\r\n function buildOverviewTable() {\r\n groupChildData();\r\n\r\n overviewTable = document.createElement('div');\r\n overviewTable.classList.add('outcomeTable');\r\n\r\n const mainHeading = document.createElement('div');\r\n mainHeading.classList.add('outcomeTable__header');\r\n mainHeading.innerHTML = `\r\n
    \r\n
    Outcome Type
    \r\n
    Outcome Statement
    \r\n
    Start Date
    \r\n
    End Date
    \r\n
    \r\n `;\r\n overviewTable.appendChild(mainHeading);\r\n\r\n outcomeServicesData.pageDataParent.forEach(parent => {\r\n const goalID = parent.goal_id;\r\n var eventName;\r\n var startDate =\r\n parent.effectiveDateStart == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(parent.effectiveDateStart.split('T')[0]));\r\n var endDate =\r\n parent.effectiveDateEnd == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(parent.effectiveDateEnd.split('T')[0]));\r\n const rowWrap = document.createElement('div');\r\n rowWrap.classList.add('outcomeTable__subTableWrap');\r\n\r\n // TOP LEVEL ROW\r\n //---------------------------------\r\n const mainDataRow = document.createElement('div');\r\n mainDataRow.classList.add('outcomeTable__mainDataRow', 'outcomeTable__dataRow');\r\n mainDataRow.value = parent.goal_id;\r\n const endIcon = document.createElement('div');\r\n endIcon.classList.add('outcomeTable__endIcon');\r\n\r\n const toggleIcon = document.createElement('div');\r\n toggleIcon.id = 'authToggle';\r\n toggleIcon.classList.add('outcomeTable__endIcon');\r\n toggleIcon.innerHTML = icons['keyArrowRight'];\r\n mainDataRow.innerHTML = ` \r\n
    ${parent.outcomeType}
    \r\n
    ${parent.outcomeStatement}
    \r\n
    ${startDate}
    \r\n
    ${endDate}
    \r\n `;\r\n mainDataRow.prepend(toggleIcon);\r\n if ($.session.InsertServices == true) {\r\n endIcon.innerHTML = icons['add'];\r\n } else {\r\n endIcon.innerHTML = `
    `;\r\n }\r\n mainDataRow.appendChild(endIcon);\r\n rowWrap.appendChild(mainDataRow);\r\n\r\n // SUB ROWS\r\n //---------------------------------\r\n const subRowWrap = document.createElement('div');\r\n subRowWrap.classList.add('outcomeTable__subRowWrap');\r\n\r\n const subHeading = document.createElement('div');\r\n subHeading.classList.add('outcomeTable__subHeader');\r\n subHeading.innerHTML = `\r\n
    \r\n
    Service Type
    \r\n
    Service Statement
    \r\n
    Frequency
    \r\n
    Start Date
    \r\n
    End Date
    \r\n `;\r\n subRowWrap.appendChild(subHeading);\r\n\r\n if (outcomeServicesData.pageDataChild[goalID]) {\r\n outcomeServicesData.pageDataChild[goalID].sort((a, b) => {\r\n return parseInt(a.itemnum) - parseInt(b.itemnum);\r\n });\r\n\r\n outcomeServicesData.pageDataChild[goalID].forEach(child => {\r\n const subDataRow = document.createElement('div');\r\n var startDate =\r\n child.serviceStartDate == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(child.serviceStartDate.split('T')[0]));\r\n var endDate =\r\n child.serviceEndDate == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(child.serviceEndDate.split('T')[0]));\r\n var serviceTyp = child.serviceType == null ? '' : child.serviceType;\r\n subDataRow.classList.add('outcomeTable__subDataRow', 'outcomeTable__dataRow');\r\n subDataRow.innerHTML = `\r\n
    \r\n
    ${serviceTyp}
    \r\n
    ${child.serviceStatement}
    \r\n
    ${child.frequency}
    \r\n
    ${startDate}
    \r\n
    ${endDate}
    \r\n `;\r\n subRowWrap.appendChild(subDataRow);\r\n\r\n subDataRow.addEventListener('click', e => {\r\n if ($.session.UpdateServices == true) {\r\n addServicesForm.init(selectedConsumer, child.objective_Id, 0);\r\n }\r\n });\r\n });\r\n }\r\n\r\n // EVENT\r\n //---------------------------------\r\n mainDataRow.addEventListener('click', e => {\r\n var goalID = e.currentTarget.value;\r\n if (eventName != 'toggle' && eventName != 'add') {\r\n if ($.session.UpdateOutcomes == true) {\r\n addOutcomes.init(selectedConsumer, goalID);\r\n }\r\n }\r\n eventName = '';\r\n });\r\n\r\n toggleIcon.addEventListener('click', e => {\r\n const toggle = document.querySelector('#authToggle');\r\n eventName = 'toggle';\r\n if (subRowWrap.classList.contains('active')) {\r\n // close it\r\n subRowWrap.classList.remove('active');\r\n toggleIcon.innerHTML = icons.keyArrowRight;\r\n } else {\r\n // open it\r\n subRowWrap.classList.add('active');\r\n toggleIcon.innerHTML = icons.keyArrowDown;\r\n }\r\n });\r\n\r\n endIcon.addEventListener('click', e => {\r\n eventName = 'add';\r\n addServicesForm.init(selectedConsumer, 0, goalID);\r\n });\r\n\r\n // ASSEMBLY\r\n //---------------------------------\r\n rowWrap.appendChild(subRowWrap);\r\n overviewTable.appendChild(rowWrap);\r\n });\r\n\r\n pageWrap.appendChild(overviewTable);\r\n }\r\n\r\n function groupChildData() {\r\n if (!outcomeServicesData.pageDataChild) {\r\n return;\r\n }\r\n\r\n const groupedChildren = outcomeServicesData.pageDataChild.reduce((obj, child) => {\r\n if (!obj[child.goal_id]) {\r\n obj[child.goal_id] = [];\r\n obj[child.goal_id].push(child);\r\n } else {\r\n obj[child.goal_id].push(child);\r\n }\r\n\r\n return obj;\r\n }, {});\r\n\r\n outcomeServicesData.pageDataChild = { ...groupedChildren };\r\n }\r\n\r\n function formatDate(date) {\r\n if (!date) return '';\r\n\r\n return UTIL.abbreviateDateYear(UTIL.formatDateFromIso(date.split('T')[0]));\r\n }\r\n\r\n return {\r\n init,\r\n buildNewOutcomeServices,\r\n };\r\n})();\r\n","const addOutcomes = (() => {\r\n //Inputs\r\n var selectedConsumers;\r\n var selectedConsumerId;\r\n let startDate;\r\n let endDate;\r\n let outcomeType;\r\n let outcomeTypeName;\r\n let outcomeStatement;\r\n let goalId;\r\n let BtnName;\r\n let location;\r\n\r\n async function init(selectedConsume, goalID) {\r\n selectedConsumers = selectedConsume;\r\n goalId = goalID;\r\n buildNewOutcomes();\r\n SAVE_BTN.classList.add('disabled');\r\n }\r\n\r\n // Build New Outcomes Page \r\n function buildConsumerCard() {\r\n selectedConsumers.card.classList.remove('highlighted');\r\n \r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n \r\n wrap.appendChild(selectedConsumers.card);\r\n \r\n return wrap;\r\n }\r\n async function buildNewOutcomes() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n landingPage = document.createElement('div');\r\n selectedConsumerId = selectedConsumers.id;\r\n const importantOutcomeForm = await buildOutComeForm();\r\n const consumerCard = buildConsumerCard();\r\n landingPage.appendChild(consumerCard);\r\n landingPage.appendChild(importantOutcomeForm);\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n async function buildOutComeForm() {\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n\r\n if (goalId > 0) {\r\n const result = await outcomesAjax.getGoalEntriesByIdAsync(goalId);\r\n const { getGoalEntriesByIdResult } = result;\r\n\r\n startDate = getGoalEntriesByIdResult[0].effectiveDateStart == '' ? '' : moment(getGoalEntriesByIdResult[0].effectiveDateStart).format('YYYY-MM-DD');\r\n endDate = getGoalEntriesByIdResult[0].effectiveDateEnd == '' ? '' : moment(getGoalEntriesByIdResult[0].effectiveDateEnd).format('YYYY-MM-DD');\r\n outcomeType = getGoalEntriesByIdResult[0].outcomeType;\r\n outcomeStatement = getGoalEntriesByIdResult[0].outcomeStatement;\r\n location = getGoalEntriesByIdResult[0].location;\r\n BtnName = 'UPDATE';\r\n }\r\n else {\r\n startDate = UTIL.getTodaysDate();\r\n endDate = '';\r\n outcomeType = '';\r\n outcomeStatement = '';\r\n location = '';\r\n BtnName = 'SAVE';\r\n }\r\n\r\n outcomeDropdown = dropdown.build({\r\n id: 'outcomeDropdown',\r\n label: \"Outcome Type\",\r\n dropdownId: \"outcomeDropdown\",\r\n value: outcomeType,\r\n });\r\n outcomeStatementInput = input.build({\r\n id: 'outcomeStatementInput',\r\n type: 'textarea',\r\n label: 'Outcome Statement',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: outcomeStatement,\r\n });\r\n dateStart = input.build({\r\n id: 'dateStart',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n value: startDate,\r\n });\r\n dateEnd = input.build({\r\n id: 'dateEnd',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n value: endDate,\r\n });\r\n locationDropdown = dropdown.build({\r\n id: 'locationDropdown',\r\n label: \"Location\",\r\n dropdownId: \"locationDropdown\",\r\n value: location,\r\n });\r\n\r\n // button\r\n SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!SAVE_BTN.classList.contains('disabled')) {\r\n SAVE_BTN.classList.add('disabled');\r\n await saveUpdateOutcomes();\r\n }\r\n },\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { addEditOutcomeServices.init(selectedConsumers) },\r\n });\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Outcome
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(outcomeDropdown);\r\n addNewCardBody.appendChild(outcomeStatementInput);\r\n\r\n var dateWrap = document.createElement('div');\r\n dateWrap.classList.add('addOutcomedateWrap');\r\n dateWrap.appendChild(dateStart);\r\n dateEnd.style.marginLeft = '2%';\r\n dateWrap.appendChild(dateEnd);\r\n locationDropdown.style.marginLeft = '2%';\r\n dateWrap.appendChild(locationDropdown);\r\n addNewCardBody.appendChild(dateWrap);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('addOutcomeBtnWrap');\r\n btnWrap.style.marginLeft = '25%';\r\n btnWrap.style.width = '50%';\r\n\r\n SAVE_BTN.style.width = '52%';\r\n btnWrap.appendChild(SAVE_BTN);\r\n\r\n CANCEL_BTN.style.width = '52%';\r\n CANCEL_BTN.style.marginLeft = '5%';\r\n btnWrap.appendChild(CANCEL_BTN);\r\n addNewCardBody.appendChild(btnWrap);\r\n\r\n employeeInfoDiv.appendChild(column1);\r\n populateOutcomeTypesDropdown();\r\n eventListeners();\r\n requiredFieldsOfAddOutcome(startDate, endDate, outcomeType, outcomeStatement);\r\n return employeeInfoDiv;\r\n }\r\n\r\n\r\n async function populateOutcomeTypesDropdown() {\r\n const {\r\n getOutcomeTypeDropDownResult: OutcomeType,\r\n } = await outcomesAjax.getOutcomeTypeDropDownAsync(selectedConsumerId, startDate);\r\n\r\n let outcomeTypeData = OutcomeType.map((outcomeTypes) => ({\r\n id: outcomeTypes.Goal_Type_ID,\r\n value: outcomeTypes.Goal_Type_ID,\r\n text: outcomeTypes.goal_type_description\r\n }));\r\n\r\n outcomeTypeData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"outcomeDropdown\", outcomeTypeData, outcomeType);\r\n\r\n const {\r\n getLocationDropDownResult: locationDrop,\r\n } = await outcomesAjax.getLocationDropDownAsync();\r\n\r\n let locationData = locationDrop.map((locationDrops) => ({\r\n id: locationDrops.locationID,\r\n value: locationDrops.locationID,\r\n text: locationDrops.locationDescription\r\n }));\r\n locationData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"locationDropdown\", locationData, location);\r\n }\r\n\r\n function eventListeners() {\r\n outcomeDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n outcomeType = selectedOption.value;\r\n outcomeTypeName = selectedOption.innerHTML;\r\n checkRequiredFieldsOfAddOutcome();\r\n });\r\n\r\n locationDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n location = selectedOption.value;\r\n });\r\n\r\n outcomeStatementInput.addEventListener('input', event => {\r\n outcomeStatement = event.target.value.trim();\r\n checkRequiredFieldsOfAddOutcome();\r\n });\r\n dateStart.addEventListener('input', event => {\r\n startDate = event.target.value;\r\n checkRequiredFieldsOfAddOutcome();\r\n });\r\n dateEnd.addEventListener('input', event => {\r\n endDate = event.target.value;\r\n checkRequiredFieldsOfAddOutcome();\r\n });\r\n }\r\n\r\n\r\n function checkRequiredFieldsOfAddOutcome() {\r\n var startDateVal = dateStart.querySelector('#dateStart');\r\n var endDateVal = dateEnd.querySelector('#dateEnd');\r\n var outcomeStatementVal = outcomeStatementInput.querySelector('#outcomeStatementInput');\r\n var outComeVal = outcomeDropdown.querySelector('#outcomeDropdown');\r\n\r\n requiredFieldsOfAddOutcome(startDateVal.value, endDateVal.value, outComeVal.value, outcomeStatementVal.value)\r\n }\r\n\r\n function requiredFieldsOfAddOutcome(startDateVal, endDateVal, outComeVal, outcomeStatementVal) {\r\n if (startDateVal === '') {\r\n dateStart.classList.add('error');\r\n } else {\r\n dateStart.classList.remove('error');\r\n }\r\n\r\n if (endDateVal != null && endDateVal != '' && startDateVal > endDateVal) {\r\n dateEnd.classList.add('error');\r\n }\r\n else {\r\n dateEnd.classList.remove('error');\r\n }\r\n\r\n if (outComeVal === '') {\r\n outcomeDropdown.classList.add('error');\r\n } else {\r\n outcomeDropdown.classList.remove('error');\r\n }\r\n\r\n if (outcomeStatementVal.trim() === '') {\r\n outcomeStatementInput.classList.add('error');\r\n } else {\r\n outcomeStatementInput.classList.remove('error');\r\n }\r\n\r\n setBtnStatusOfAddOutcome();\r\n }\r\n\r\n function setBtnStatusOfAddOutcome() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length > 0) {\r\n SAVE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n SAVE_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function saveUpdateOutcomes() {\r\n const result = await outcomesAjax.insertOutcomeInfoAsync(startDate, endDate, outcomeType, UTIL.removeUnsavableNoteText(outcomeStatement), $.session.UserId, goalId, selectedConsumerId, location);\r\n const { insertOutcomeInfoResult } = result;\r\n if (insertOutcomeInfoResult[0].goal_id != '0') {\r\n addEditOutcomeServices.init(selectedConsumers)\r\n }\r\n }\r\n\r\n\r\n return {\r\n init,\r\n buildNewOutcomes,\r\n };\r\n})(); \r\n","const addServicesForm = (() => {\r\n //Inputs\r\n var selectedConsumers;\r\n var selectedConsumerId;\r\n let startDate;\r\n let endDate;\r\n let outcomeType;\r\n let outcomeTypeName;\r\n let servicesStatement;\r\n let ServiceType;\r\n let ServiceTypeName;\r\n let method;\r\n let success;\r\n let frequencyModifier;\r\n let frequency;\r\n let frequencyPeriod;\r\n let objectiveId;\r\n let BtnName;\r\n let outcomeGoalId;\r\n let duration;\r\n let location;\r\n let SAVE_BTN; \r\n\r\n async function init(selectedConsume, ObjectiveID , goalId) {\r\n selectedConsumers = selectedConsume;\r\n objectiveId = ObjectiveID;\r\n outcomeGoalId = goalId > 0 ? goalId : '';\r\n await buildNewServicesForm();\r\n SAVE_BTN.classList.add('disabled'); \r\n }\r\n\r\n // Build New Outcomes Page\r\n function buildConsumerCard() {\r\n selectedConsumers.card.classList.remove('highlighted');\r\n \r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n \r\n wrap.appendChild(selectedConsumers.card);\r\n \r\n return wrap;\r\n }\r\n async function buildNewServicesForm() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n landingPage = document.createElement('div');\r\n selectedConsumerId = selectedConsumers.id;\r\n const importantOutcomeForm = await buildServicesForm();\r\n const consumerCard = buildConsumerCard();\r\n landingPage.appendChild(consumerCard);\r\n landingPage.appendChild(importantOutcomeForm);\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n async function buildServicesForm() {\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n if (objectiveId > 0) {\r\n const result = await outcomesAjax.getObjectiveEntriesByIdAsync(objectiveId);\r\n const { getObjectiveEntriesByIdResult } = result;\r\n\r\n startDate = getObjectiveEntriesByIdResult[0].serviceStartDate == '' ? UTIL.getTodaysDate() : moment(getObjectiveEntriesByIdResult[0].serviceStartDate).format('YYYY-MM-DD');\r\n endDate = getObjectiveEntriesByIdResult[0].serviceEndDate == '' ? '' : moment(getObjectiveEntriesByIdResult[0].serviceEndDate).format('YYYY-MM-DD');\r\n outcomeType = getObjectiveEntriesByIdResult[0].goal_id;\r\n servicesStatement = getObjectiveEntriesByIdResult[0].serviceStatement;\r\n ServiceType = getObjectiveEntriesByIdResult[0].objective_type;\r\n method = getObjectiveEntriesByIdResult[0].objective_method;\r\n success = getObjectiveEntriesByIdResult[0].success_determination;\r\n frequencyModifier = getObjectiveEntriesByIdResult[0].frequency_modifier;\r\n frequency = getObjectiveEntriesByIdResult[0].frequency_occurance;\r\n frequencyPeriod = getObjectiveEntriesByIdResult[0].frequency_peroid;\r\n duration = getObjectiveEntriesByIdResult[0].duration;\r\n location = getObjectiveEntriesByIdResult[0].location;\r\n BtnName = 'UPDATE';\r\n }\r\n else {\r\n const result = await outcomesAjax.getGoalEntriesByIdAsync(outcomeGoalId);\r\n const { getGoalEntriesByIdResult } = result;\r\n\r\n startDate = UTIL.getTodaysDate();\r\n endDate = '';\r\n outcomeType = outcomeGoalId; \r\n servicesStatement = '';\r\n ServiceType = '';\r\n method = '';\r\n success = '';\r\n frequencyModifier = '';\r\n frequency = '';\r\n frequencyPeriod = '';\r\n duration = '';\r\n location = getGoalEntriesByIdResult[0].location;\r\n BtnName = 'SAVE';\r\n }\r\n\r\n outcomeDropdown = dropdown.build({\r\n id: 'outcomeDropdown',\r\n label: \"Outcome\",\r\n dropdownId: \"outcomeDropdown\",\r\n value: outcomeType,\r\n });\r\n\r\n ServiceTypeDropdown = dropdown.build({\r\n id: 'ServiceTypeDropdown',\r\n label: \"Service Type\",\r\n dropdownId: \"ServiceTypeDropdown\",\r\n value: ServiceType,\r\n });\r\n\r\n servicesStatementInput = input.build({\r\n id: 'servicesStatementInput',\r\n type: 'textarea',\r\n label: 'Service Statement',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: servicesStatement,\r\n });\r\n\r\n methodInput = input.build({\r\n id: 'methodInput',\r\n type: 'textarea',\r\n label: 'Method',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: method,\r\n });\r\n\r\n successInput = input.build({\r\n id: 'successInput',\r\n type: 'textarea',\r\n label: 'Success',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: success,\r\n });\r\n\r\n dateStart = input.build({\r\n id: 'dateStart',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n value: startDate,\r\n });\r\n dateEnd = input.build({\r\n id: 'dateEnd',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n value: endDate,\r\n });\r\n locationDropdown = dropdown.build({\r\n id: 'locationDropdown',\r\n label: \"Location\",\r\n dropdownId: \"locationDropdown\",\r\n value: location,\r\n });\r\n\r\n frequencyModifierDropdown = dropdown.build({\r\n id: 'frequencyModifierDropdown',\r\n label: \"Frequency Modifier\",\r\n dropdownId: \"frequencyModifierDropdown\",\r\n value: frequencyModifier,\r\n });\r\n\r\n frequencyInput = input.build({\r\n id: 'frequencyInput',\r\n type: 'number',\r\n label: 'Frequency',\r\n style: 'secondary',\r\n value: frequency,\r\n attributes: [ \r\n { key: 'min', value: '0' }, \r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n\r\n frequencyPeriodDropdown = dropdown.build({\r\n id: 'frequencyPeriodDropdown',\r\n label: \"Frequency Period\",\r\n dropdownId: \"frequencyPeriodDropdown\",\r\n value: frequencyPeriod,\r\n });\r\n\r\n durationInput = input.build({\r\n id: 'durationInput',\r\n type: 'text',\r\n label: 'Duration',\r\n style: 'secondary',\r\n value: duration, \r\n });\r\n\r\n // button\r\n SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!SAVE_BTN.classList.contains('disabled')) {\r\n SAVE_BTN.classList.add('disabled');\r\n await saveUpdateOutcomesService();\r\n }\r\n },\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { addEditOutcomeServices.init(selectedConsumers) },\r\n });\r\n var LineBr = document.createElement('br');\r\n const column1 = document.createElement('div');\r\n column1.classList.add('col-1');\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Outcome
    `;\r\n addNewCard.appendChild(addNewCardBody);\r\n column1.appendChild(addNewCard);\r\n\r\n const addNewServiceCard = document.createElement(\"div\");\r\n addNewServiceCard.classList.add(\"card\"); \r\n const addNewServiceCardBody = document.createElement(\"div\");\r\n addNewServiceCardBody.classList.add(\"card__body\");\r\n addNewServiceCard.innerHTML = `
    Service
    `;\r\n addNewServiceCard.appendChild(addNewServiceCardBody)\r\n column1.appendChild(addNewServiceCard)\r\n\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"heading\");\r\n consumerNameDisplay.innerHTML = `${'Frequency'}`;\r\n consumerNameDisplay.style.marginLeft = '10px';\r\n\r\n addNewCardBody.appendChild(outcomeDropdown);\r\n\r\n addNewServiceCardBody.appendChild(ServiceTypeDropdown);\r\n addNewServiceCardBody.appendChild(servicesStatementInput);\r\n addNewServiceCardBody.appendChild(methodInput);\r\n addNewServiceCardBody.appendChild(successInput);\r\n\r\n var dateWrap = document.createElement('div');\r\n dateWrap.classList.add('addOutcomedateWrap');\r\n dateWrap.appendChild(dateStart);\r\n dateEnd.style.marginLeft = '2%';\r\n dateWrap.appendChild(dateEnd);\r\n locationDropdown.style.marginLeft = '2%';\r\n dateWrap.appendChild(locationDropdown);\r\n addNewServiceCardBody.appendChild(dateWrap);\r\n\r\n addNewServiceCardBody.appendChild(consumerNameDisplay);\r\n addNewServiceCardBody.appendChild(LineBr);\r\n addNewServiceCardBody.appendChild(LineBr);\r\n\r\n var infoWrap = document.createElement('div');\r\n infoWrap.classList.add('frequencyDTWrap');\r\n frequencyModifierDropdown.classList.add('width30Per');\r\n infoWrap.appendChild(frequencyModifierDropdown);\r\n frequencyInput.classList.add('width32Per');\r\n infoWrap.appendChild(frequencyInput);\r\n frequencyPeriodDropdown.classList.add('width32Per');\r\n infoWrap.appendChild(frequencyPeriodDropdown);\r\n addNewServiceCardBody.appendChild(infoWrap);\r\n\r\n var durationWrap = document.createElement('div');\r\n durationWrap.classList.add('frequencyDTWrap');\r\n durationInput.classList.add('width32Per');\r\n durationWrap.appendChild(durationInput);\r\n addNewServiceCardBody.appendChild(durationWrap); \r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('addOutcomeBtnWrap');\r\n btnWrap.style.marginLeft = '25%';\r\n btnWrap.style.width = '50%';\r\n\r\n SAVE_BTN.style.width = '52%';\r\n btnWrap.appendChild(SAVE_BTN);\r\n\r\n CANCEL_BTN.style.width = '52%';\r\n CANCEL_BTN.style.marginLeft = '5%';\r\n btnWrap.appendChild(CANCEL_BTN);\r\n addNewServiceCardBody.appendChild(btnWrap);\r\n\r\n employeeInfoDiv.appendChild(column1);\r\n populateOutcomeDropdown();\r\n eventListeners();\r\n populatefrequencyModifierDropdown();\r\n RequiredFieldsOfAddServiceForm(outcomeType, servicesStatement, startDate, endDate);\r\n return employeeInfoDiv;\r\n } \r\n\r\n async function populatefrequencyModifierDropdown() {\r\n const {\r\n getServiceFrequencyTypeDropDownResult: ServiceFrequency,\r\n } = await outcomesAjax.getServiceFrequencyTypeDropDownAsync('frequency');\r\n let ServiceFrequencyData = ServiceFrequency.map((serviceFrequency) => ({\r\n id: serviceFrequency.serviceFrequencyType_id,\r\n value: serviceFrequency.serviceFrequencyType_id,\r\n text: serviceFrequency.serviceFrequencyType_name\r\n }));\r\n ServiceFrequencyData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"frequencyModifierDropdown\", ServiceFrequencyData, frequencyModifier);\r\n }\r\n\r\n async function populateOutcomeDropdown() {\r\n const {\r\n getOutcomeServiceDropDownResult: OutcomeType,\r\n } = await outcomesAjax.getOutcomeServiceDropDownAsync(selectedConsumerId, startDate);\r\n\r\n let outcomeTypeData = OutcomeType.map(outcomeTypes => ({\r\n id: outcomeTypes.goal_id,\r\n value: outcomeTypes.goal_id,\r\n text: outcomeTypes.goal_serviceStatement,\r\n })).sort((a, b) => {\r\n if (a.text < b.text) return -1;\r\n if (a.text > b.text) return 1;\r\n return 0;\r\n });\r\n\r\n outcomeTypeData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate('outcomeDropdown', outcomeTypeData, outcomeType);\r\n\r\n const { getServiceFrequencyTypeDropDownResult: ServiceFrequencyType } =\r\n await outcomesAjax.getServiceFrequencyTypeDropDownAsync('service');\r\n\r\n let ServiceFrequencyData = ServiceFrequencyType.map(serviceFrequencyType => ({\r\n id: serviceFrequencyType.serviceFrequencyType_id,\r\n value: serviceFrequencyType.serviceFrequencyType_id,\r\n text: serviceFrequencyType.serviceFrequencyType_name,\r\n })).sort((a, b) => {\r\n if (a.text < b.text) return -1;\r\n if (a.text > b.text) return 1;\r\n return 0;\r\n });\r\n ServiceFrequencyData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate('ServiceTypeDropdown', ServiceFrequencyData, ServiceType);\r\n\r\n const frequencyPeriodDropdownData = [\r\n { id: 'H', value: 'H', text: 'per Hour' },\r\n { id: 'D', value: 'D', text: 'per Day' },\r\n { id: 'W', value: 'W', text: 'per Week' },\r\n { id: 'M', value: 'M', text: 'per Month' },\r\n { id: 'Y', value: 'Y', text: 'per Year' },\r\n ];\r\n frequencyPeriodDropdownData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate('frequencyPeriodDropdown', frequencyPeriodDropdownData, frequencyPeriod);\r\n\r\n const { getLocationDropDownResult: locationDrop } = await outcomesAjax.getLocationDropDownAsync();\r\n\r\n let locationData = locationDrop\r\n .map(locationDrops => ({\r\n id: locationDrops.locationID,\r\n value: locationDrops.locationID,\r\n text: locationDrops.locationDescription,\r\n }))\r\n .sort((a, b) => {\r\n if (a.text < b.text) return -1;\r\n if (a.text > b.text) return 1;\r\n return 0;\r\n });\r\n locationData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"locationDropdown\", locationData, location); \r\n }\r\n\r\n function eventListeners() {\r\n outcomeDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n outcomeType = selectedOption.value;\r\n outcomeTypeName = selectedOption.innerHTML;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n ServiceTypeDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n ServiceType = selectedOption.value;\r\n ServiceTypeName = selectedOption.innerHTML; \r\n getRequiredFieldsOfAddServiceForm(); \r\n });\r\n\r\n servicesStatementInput.addEventListener('input', event => {\r\n servicesStatement = event.target.value.trim(); \r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n methodInput.addEventListener('input', event => {\r\n method = event.target.value.trim();\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n successInput.addEventListener('input', event => {\r\n success = event.target.value.trim();\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n frequencyInput.addEventListener('input', event => {\r\n frequency = event.target.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n dateStart.addEventListener('input', event => {\r\n startDate = event.target.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n dateEnd.addEventListener('input', event => {\r\n endDate = event.target.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n frequencyModifierDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n frequencyModifier = selectedOption.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n frequencyPeriodDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n frequencyPeriod = selectedOption.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n durationInput.addEventListener('input', event => {\r\n duration = event.target.value.trim();\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n locationDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n location = selectedOption.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n }\r\n\r\n\r\n function getRequiredFieldsOfAddServiceForm() {\r\n var startDateVal = dateStart.querySelector('#dateStart');\r\n var endDateVal = dateEnd.querySelector('#dateEnd');\r\n var servicesStatementVal = servicesStatementInput.querySelector('#servicesStatementInput');\r\n var outComeVal = outcomeDropdown.querySelector('#outcomeDropdown');\r\n RequiredFieldsOfAddServiceForm(outComeVal.value, servicesStatementVal.value, startDateVal.value, endDateVal.value);\r\n }\r\n\r\n function RequiredFieldsOfAddServiceForm(outComeVal, servicesStatementVal, startDateVal, endDateVal) {\r\n if (outComeVal === '') {\r\n outcomeDropdown.classList.add('error');\r\n } else {\r\n outcomeDropdown.classList.remove('error');\r\n }\r\n \r\n if (servicesStatementVal.trim() === '') { \r\n servicesStatementInput.classList.add('error');\r\n } else {\r\n servicesStatementInput.classList.remove('error');\r\n }\r\n\r\n if (endDateVal != null && endDateVal != '' && startDateVal > endDateVal) {\r\n dateEnd.classList.add('error');\r\n }\r\n else {\r\n dateEnd.classList.remove('error');\r\n }\r\n setBtnStatusOfAddOutcome();\r\n }\r\n\r\n function setBtnStatusOfAddOutcome() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length > 0) {\r\n SAVE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n SAVE_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function saveUpdateOutcomesService() {\r\n const result = await outcomesAjax.insertOutcomeServiceInfoAsync(startDate, endDate, outcomeType, UTIL.removeUnsavableNoteText(servicesStatement), ServiceType, UTIL.removeUnsavableNoteText(method), UTIL.removeUnsavableNoteText(success), frequencyModifier, frequency, frequencyPeriod, $.session.UserId, objectiveId, selectedConsumerId, location, duration);\r\n const { insertOutcomeServiceInfoResult } = result;\r\n if (insertOutcomeServiceInfoResult[0].objective_Id != '0') {\r\n addEditOutcomeServices.init(selectedConsumers)\r\n } \r\n }\r\n\r\n\r\n return {\r\n init,\r\n buildNewServicesForm,\r\n };\r\n})(); \r\n","const importServices = (() => {\r\n\r\n //DATA\r\n let extractionData;\r\n let currentlySelectedConsumer;\r\n let existingOutcomesVendorData;\r\n let selectedOutcomes = [];\r\n let assessmentAreas = \r\n {\r\n 'Communication' : 34,\r\n 'Advocacy & Engagement' : 35,\r\n 'Safety and Security' : 36,\r\n 'Social and Spirituality' : 37,\r\n 'Daily Life and Employment' : 38,\r\n 'Community Living' : 39,\r\n 'Healthy Living' : 40\r\n }\r\n const sectionToTableMap = {\r\n 'Known & Likely Risks': 'importedPlanRisksTable',\r\n 'Experiences': 'importedExperiencesTable',\r\n 'Paid Supports': 'importedPaidSupportsTable',\r\n 'Additional Supports': 'importedAdditionalSupportsTable',\r\n 'Professional Referrals': 'importedProfessionalReferralsTable',\r\n }; \r\n\r\n //ELEMENTS \r\n let importSelectedServicesPopup;\r\n\r\n // TABLES\r\n let knownAndLikelyRisksTable;\r\n let experiencesTable;\r\n let paidSupportsTable;\r\n let additionalSupportsTable;\r\n let professionalReferralsTable;\r\n\r\n async function init(files, outcomesServicesData, selectedConsumer) {\r\n const token = $.session.Token\r\n currentlySelectedConsumer = selectedConsumer;\r\n\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n landingPage = document.createElement('div');\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Data...');\r\n landingPage.appendChild(spinner);\r\n\r\n extractionData = await _UTIL.fetchData('importedOutcomesPDFData', {token, files});\r\n existingOutcomesVendorData = outcomesServicesData.pageDataParent.map(outcome => ({\r\n value: outcome.goal_id,\r\n text: outcome.outcomeStatement,\r\n }))\r\n buildImportSections();\r\n }\r\n\r\n // Build New Outcomes Page \r\n async function buildImportSections() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n landingPage = document.createElement('div');\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n\r\n var headerCheckbox = document.createElement('input');\r\n headerCheckbox.type = 'checkbox';\r\n headerCheckbox.classList.add('header-checkbox');\r\n\r\n var rowCheckbox = document.createElement('input');\r\n rowCheckbox.type = 'checkbox';\r\n rowCheckbox.classList.add('row-checkbox');\r\n\r\n function formatDateToYYYYMMDD(dateString) {\r\n const date = new Date(dateString);\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are 0-based\r\n const day = String(date.getDate()).padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n function handleCheckboxSelection(event, rowData) {\r\n let checkbox = event.target;\r\n const currentTable = checkbox.closest('.table');\r\n const tableRow = checkbox.closest('.table__row');\r\n const tableRowId = tableRow.id;\r\n const outcomeRowId = `${tableRowId}A`;\r\n \r\n // Use CSS.escape to ensure the ID is properly escaped for querySelector\r\n const escapedOutcomeRowId = `#${CSS.escape(outcomeRowId)}`;\r\n \r\n // Find the outcomeRowContainer within the current table\r\n const outcomeRowContainer = currentTable.querySelector(escapedOutcomeRowId);\r\n \r\n // Check if the target is the checkbox itself\r\n if (checkbox.type !== 'checkbox') {\r\n // If not, assume we're in the div and select the checkbox within the startIcon div\r\n checkbox = event.target.querySelector('input[type=\"checkbox\"]');\r\n }\r\n \r\n if (checkbox && checkbox.checked) {\r\n // Gather values from the outcomeRowContainer inputs\r\n const dropdownId = `existingOutcomeDropdown_${tableRowId}`;\r\n const dropdown = document.getElementById(dropdownId);\r\n const serviceDateStart = outcomeRowContainer.querySelector('input.startDate');\r\n const serviceDateEnd = outcomeRowContainer.querySelector('input.endDate');\r\n \r\n // Add these input values to the rowData\r\n const outcomeData = {\r\n rowId: tableRowId,\r\n existingOutcomeGoalId: dropdown ? dropdown.value : null,\r\n serviceDateStart: serviceDateStart ? serviceDateStart.value : null,\r\n serviceDateEnd: serviceDateEnd ? serviceDateEnd.value : null\r\n };\r\n \r\n // Merge the rowData with the outcomeData\r\n const combinedData = { ...rowData, ...outcomeData };\r\n \r\n // Add the newly checked row data to the selected outcomes array\r\n selectedOutcomes.push(combinedData);\r\n \r\n // Show the existing outcomes div below the checkbox row\r\n outcomeRowContainer.style.display = 'flex';\r\n \r\n } else {\r\n // Remove the now unselected row data from the selected outcomes array\r\n selectedOutcomes = selectedOutcomes.filter(\r\n selectedRow => selectedRow.rowId !== tableRowId\r\n );\r\n \r\n // Hide the existing outcomes div below the checkbox row\r\n outcomeRowContainer.style.display = 'none';\r\n }\r\n \r\n // Toggle the import button based on the current state of checkboxes\r\n toggleImportButton();\r\n }\r\n \r\n function handleHeaderCheckboxSelection(headerCheckboxSelector, tableSelector) {\r\n const headerCheckbox = document.querySelector(headerCheckboxSelector);\r\n const rowCheckboxes = document.querySelectorAll(`${tableSelector} .row-checkbox`);\r\n \r\n rowCheckboxes.forEach(checkbox => {\r\n checkbox.checked = headerCheckbox.checked;\r\n\r\n // Find the cell that contains this checkbox\r\n const cell = checkbox.closest('.startIcon');\r\n\r\n // Dispatch the click event on the cell to trigger the callback\r\n if (cell) {\r\n cell.dispatchEvent(new Event('click'));\r\n }\r\n });\r\n }\r\n\r\n function createAddToExistingOutcomesRow(rowId, isPaidSupportsTable) {\r\n let serviceDateStartValue = extractionData.importedOutcomesPDFDataResult.startDate;\r\n let serviceDateEndValue = extractionData.importedOutcomesPDFDataResult.endDate;\r\n // Only check for BeginDateEndDate if we are dealing with the paidSupports table\r\n if (isPaidSupportsTable) {\r\n const index = parseInt(rowId, 10) - 1; // Convert rowId to an integer and adjust for 0-based index\r\n const [bDate, eDate] = extractionData.importedOutcomesPDFDataResult.paidSupports[index].BeginDateEndDate.split(/(?<=\\d{4})\\s+/);\r\n\r\n // Format the dates to 'YYYY-MM-DD'\r\n const formattedBDate = formatDateToYYYYMMDD(bDate);\r\n const formattedEDate = formatDateToYYYYMMDD(eDate);\r\n\r\n serviceDateStartValue = formattedBDate;\r\n serviceDateEndValue = formattedEDate;\r\n }\r\n const exitingOutcomDropdown = dropdown.build({\r\n id: `existingOutcomeDropdown_${rowId}`,\r\n label: 'Add to Existing Outcome',\r\n dropdownId: `existingOutcomeDropdown_${rowId}`,\r\n callback: () => toggleImportButton(),\r\n callbackType: 'change',\r\n classNames: \"existingOutcomesDropdown\"\r\n });\r\n \r\n const serviceDateStartInput = input.build({\r\n type: 'date',\r\n label: 'Service Date Start',\r\n style: 'secondary',\r\n callback: () => toggleImportButton(),\r\n callbackType: 'input',\r\n value: serviceDateStartValue,\r\n classNames: \"startDate\"\r\n });\r\n \r\n const serviceDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Service Date End',\r\n style: 'secondary',\r\n callback: () => toggleImportButton(),\r\n callbackType: 'input',\r\n value: serviceDateEndValue,\r\n classNames: \"endDate\"\r\n });\r\n \r\n const createAddToExistingOutcomesRowContainerDiv = document.createElement('div');\r\n createAddToExistingOutcomesRowContainerDiv.classList.add('addToExistingOutcomesRowContainer');\r\n createAddToExistingOutcomesRowContainerDiv.id = `${rowId}A`;\r\n \r\n createAddToExistingOutcomesRowContainerDiv.appendChild(exitingOutcomDropdown);\r\n createAddToExistingOutcomesRowContainerDiv.appendChild(serviceDateStartInput);\r\n createAddToExistingOutcomesRowContainerDiv.appendChild(serviceDateEndInput);\r\n \r\n // Populate dropdown with options\r\n dropdown.populate(exitingOutcomDropdown, existingOutcomesVendorData, existingOutcomesVendorData[0]?.value);\r\n \r\n createAddToExistingOutcomesRowContainerDiv.style.display = 'none';\r\n return createAddToExistingOutcomesRowContainerDiv;\r\n }\r\n\r\n function appendToEachRow(table, isPaidSupportsTable = false) { \r\n const tableBody = table.querySelector('.table__body');\r\n const rows = Array.from(tableBody.querySelectorAll('.table__row'));\r\n \r\n rows.forEach(row => {\r\n // Create a new row for each existing table row\r\n const newRow = createAddToExistingOutcomesRow(row.id, isPaidSupportsTable);\r\n \r\n // Insert the new row after the current row\r\n row.insertAdjacentElement('afterend', newRow);\r\n });\r\n }\r\n\r\n knownAndLikelyRisksTable = table.build({\r\n tableId: `importedPlanRisksTable`,\r\n headline: `Known & Likely Risks`,\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'What is the risk, what it looks like, where it occurs',\r\n 'What support must look like, why the person needs this support',\r\n 'Does this risk require supervision?',\r\n 'Who is responsible',\r\n ],\r\n sortable: false,\r\n startIcon: true,\r\n startIconHeader: headerCheckbox.outerHTML,\r\n startIconHeaderCallback: () => handleHeaderCheckboxSelection('#importedPlanRisksTable .startIcon input[type=\"checkbox\"]', '#importedPlanRisksTable'),\r\n });\r\n\r\n if (extractionData.importedOutcomesPDFDataResult.riskAssessments) {\r\n const tableData = extractionData.importedOutcomesPDFDataResult.riskAssessments\r\n .map((ra, i) => {\r\n const { tableValues, raData } = mapRiskAssessmentsDataForTable(ra);\r\n const rowId = i + 1;\r\n\r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: raData.assessmentAreaId }],\r\n startIcon: rowCheckbox.outerHTML,\r\n startIconCallback: (event) => handleCheckboxSelection(event, raData),\r\n onClick: event => {},\r\n };\r\n });\r\n\r\n table.populate(knownAndLikelyRisksTable, tableData, false);\r\n appendToEachRow(knownAndLikelyRisksTable);\r\n };\r\n \r\n // Experiences Table\r\n experiencesTable = table.build({\r\n tableId: `importedExperiencesTable`,\r\n headline: `Experiences: In order to accomplish the outcome, what experiences does the person need to have?`,\r\n columnHeadings: [\r\n 'What needs to happen',\r\n 'How should it happen?',\r\n 'Who is responsible?',\r\n 'When / How Often?',\r\n ],\r\n sortable: false,\r\n startIcon: true,\r\n startIconHeader: headerCheckbox.outerHTML,\r\n startIconHeaderCallback: () => handleHeaderCheckboxSelection('#importedExperiencesTable .startIcon input[type=\"checkbox\"]', '#importedExperiencesTable'),\r\n });\r\n\r\n if (extractionData.importedOutcomesPDFDataResult.experiences) {\r\n const tableData = extractionData.importedOutcomesPDFDataResult.experiences\r\n .map((ex, i) => { \r\n const { tableValues, exData } = mapExperiencesDataForTable(ex);\r\n const rowId = i + 1; \r\n \r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: exData.assessmentAreaId }],\r\n startIcon: rowCheckbox.outerHTML,\r\n startIconCallback: (event) => handleCheckboxSelection(event, exData),\r\n onClick: () => {},\r\n };\r\n });\r\n \r\n table.populate(experiencesTable, tableData, false);\r\n appendToEachRow(experiencesTable);\r\n }\r\n \r\n // Paid Supports Table\r\n paidSupportsTable = table.build({\r\n tableId: 'importedPaidSupportsTable',\r\n headline: 'Paid Supports',\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'Funding Source',\r\n 'Service Name',\r\n 'Provider Name',\r\n 'Scope of Service/ What support looks like',\r\n 'How Often / How Much',\r\n 'Begin Date',\r\n 'End Date',\r\n ],\r\n sortable: false,\r\n startIcon: true,\r\n startIconHeader: headerCheckbox.outerHTML,\r\n startIconHeaderCallback: () => handleHeaderCheckboxSelection('#importedPaidSupportsTable .startIcon input[type=\"checkbox\"]', '#importedPaidSupportsTable'),\r\n });\r\n\r\n if (extractionData.importedOutcomesPDFDataResult.paidSupports) {\r\n const tableData = extractionData.importedOutcomesPDFDataResult.paidSupports\r\n .map((ps, i) => {\r\n const { tableValues, psData } = mapPaidSupportDataForTable(ps);\r\n const rowId = i + 1;\r\n\r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: psData.assessmentAreaId }],\r\n startIcon: rowCheckbox.outerHTML,\r\n startIconCallback: (event) => handleCheckboxSelection(event, psData),\r\n onClick: event => {},\r\n };\r\n });\r\n\r\n table.populate(paidSupportsTable, tableData, false, true);\r\n appendToEachRow(paidSupportsTable, true);\r\n };\r\n \r\n // Additional Supports Table\r\n additionalSupportsTable = table.build({\r\n tableId: 'importedAdditionalSupportsTable',\r\n headline: `Additional Supports: Family, friends, community resources, technology, etc.`,\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'Who Supports',\r\n 'What Support Looks Like',\r\n 'When/How Often',\r\n ],\r\n endIcon: false,\r\n sortable: false,\r\n startIcon: true,\r\n startIconHeader: headerCheckbox.outerHTML,\r\n startIconHeaderCallback: () => handleHeaderCheckboxSelection('#importedAdditionalSupportsTable .startIcon input[type=\"checkbox\"]', '#importedAdditionalSupportsTable'),\r\n });\r\n\r\n if (extractionData.importedOutcomesPDFDataResult.additionalSupports) {\r\n const tableData = extractionData.importedOutcomesPDFDataResult.additionalSupports\r\n .map((as, i) => { \r\n const { tableValues, asData } = mapAdditionalSupportDataForTable(as);\r\n const rowId = i + 1; \r\n \r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: asData.assessmentAreaId }],\r\n startIcon: rowCheckbox.outerHTML,\r\n startIconCallback: (event) => handleCheckboxSelection(event, asData),\r\n onClick: () => {},\r\n };\r\n });\r\n \r\n table.populate(additionalSupportsTable, tableData, false);\r\n\r\n appendToEachRow(additionalSupportsTable);\r\n }\r\n \r\n // Professional Referrals Table\r\n professionalReferralsTable = table.build({\r\n tableId: 'importedProfessionalReferralsTable',\r\n headline: `Professional Referrals: Medical professionals, therapists, etc.`,\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'New or Existing',\r\n 'Who Supports',\r\n 'Reason for Referral',\r\n ],\r\n sortable: false,\r\n startIcon: true,\r\n startIconHeader: headerCheckbox.outerHTML,\r\n startIconHeaderCallback: () => handleHeaderCheckboxSelection('#importedProfessionalReferralsTable .startIcon input[type=\"checkbox\"]', '#importedProfessionalReferralsTable'),\r\n });\r\n\r\n if (extractionData.importedOutcomesPDFDataResult.professionalReferrals) {\r\n const tableData = extractionData.importedOutcomesPDFDataResult.professionalReferrals\r\n .map((pr, i) => { \r\n const { tableValues, prData } = mapProfessionalReferralsDataForTable(pr);\r\n const rowId = i + 1; \r\n \r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: prData.assessmentAreaId }],\r\n startIcon: rowCheckbox.outerHTML,\r\n startIconCallback: (event) => handleCheckboxSelection(event, prData),\r\n onClick: () => {}\r\n }\r\n });\r\n \r\n table.populate(professionalReferralsTable, tableData, false);\r\n appendToEachRow(professionalReferralsTable);\r\n }\r\n\r\n const importSelectedSerivcesAndCancelBtnWrap = document.createElement('div');\r\n importSelectedSerivcesAndCancelBtnWrap.classList.add('importSelectedSerivcesAndCancelBtnWrap');\r\n const importSelectedServicesBtn = button.build({\r\n id: 'importSelectedServicesBtn',\r\n text: 'Import Selected Services',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['importSelectedServicesBtn', 'disabled'],\r\n callback: async () => {showImportSelectedServicesPopup()},\r\n });\r\n\r\n const cancelBtn = button.build({\r\n id: 'cancelBtn',\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'cancelBtn',\r\n callback: () => {\r\n selectedOutcomes = [];\r\n addEditOutcomeServices.init(currentlySelectedConsumer, true);\r\n },\r\n });\r\n\r\n function toggleImportButton() {\r\n const importButton = document.getElementById('importSelectedServicesBtn');\r\n const checkboxes = document.querySelectorAll('.row-checkbox');\r\n \r\n // Check if any checkbox is checked at all\r\n const anyChecked = Array.from(checkboxes).some(checkbox => checkbox.checked);\r\n \r\n // No checkboxes are selected, keep the import button disabled\r\n if (!anyChecked) {\r\n importButton.disabled = true;\r\n importButton.classList.add('disabled');\r\n return;\r\n }\r\n \r\n let allValid = true; // Flag to track if all selected rows are valid\r\n \r\n checkboxes.forEach(checkbox => {\r\n if (checkbox.checked) {\r\n const currentTable = checkbox.closest('.table');\r\n const tableRow = checkbox.closest('.table__row');\r\n const tableRowId = tableRow.id;\r\n const outcomeRowId = `${tableRowId}A`;\r\n let startDateInput;\r\n let endDateInput;\r\n \r\n // Use CSS.escape to ensure the ID is properly escaped for querySelector\r\n const escapedOutcomeRowId = `#${CSS.escape(outcomeRowId)}`;\r\n \r\n // Find the outcomeRowContainer within the current table\r\n const outcomeRowContainer = currentTable.querySelector(escapedOutcomeRowId);\r\n \r\n if (outcomeRowContainer) {\r\n const dropdown = outcomeRowContainer.querySelector('select');\r\n\r\n // Find all date inputs within the outcomeRowContainer\r\n const dateInputs = outcomeRowContainer.querySelectorAll('input[type=\"date\"]');\r\n\r\n // Ensure there are at least two date inputs\r\n if (dateInputs.length >= 2) {\r\n startDateInput = dateInputs[0];\r\n endDateInput = dateInputs[1];\r\n }\r\n \r\n // Validate dropdown and date inputs\r\n const isDropdownSelected = dropdown && dropdown.value !== \"\";\r\n const isStartDateValid = startDateInput && startDateInput.value !== \"\";\r\n const isEndDateValid = endDateInput && endDateInput.value !== \"\";\r\n const isDateRangeValid = isStartDateValid && isEndDateValid && (new Date(startDateInput.value) <= new Date(endDateInput.value));\r\n \r\n // If any condition is not met, set allValid to false\r\n if (!isDropdownSelected || !isStartDateValid || !isEndDateValid || !isDateRangeValid) {\r\n allValid = false;\r\n }\r\n } else {\r\n // If outcomeRowContainer is not found, set allValid to false\r\n allValid = false;\r\n }\r\n }\r\n });\r\n \r\n // Enable or disable the button based on the validation checks\r\n if (allValid) {\r\n importButton.disabled = false;\r\n importButton.classList.remove('disabled');\r\n } else {\r\n importButton.disabled = true;\r\n importButton.classList.add('disabled');\r\n }\r\n }\r\n \r\n \r\n\r\n importSelectedSerivcesAndCancelBtnWrap.appendChild(importSelectedServicesBtn);\r\n importSelectedSerivcesAndCancelBtnWrap.appendChild(cancelBtn);\r\n\r\n async function showImportSelectedServicesPopup() {\r\n importSelectedServicesPopup = POPUP.build({\r\n classNames: 'importSelectedServicesPopup',\r\n })\r\n\r\n let importSelectedServicesPopupMessage = document.createElement('p');\r\n\r\n const okBtn = button.build({\r\n id: 'okBtn',\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'okBtn',\r\n callback: () => {\r\n selectedOutcomes = [];\r\n POPUP.hide(importSelectedServicesPopup)\r\n addEditOutcomeServices.init(currentlySelectedConsumer, true);\r\n },\r\n });\r\n\r\n const token = $.session.Token;\r\n\r\n // Define the properties of ImportedTables with default values\r\n function createDefaultImportedTable(rowData) {\r\n return {\r\n assessmentAreaId: rowData.assessmentAreaId || null,\r\n assessmentArea: rowData.assessmentArea || \"\",\r\n whatIsRisk: rowData.whatIsRisk || \"\",\r\n whatSupportMustLookLike: rowData.whatSupportMustLookLike || \"\",\r\n whatSupportLooksLike: rowData.whatSupportLooksLike || \"\",\r\n riskRequiresSupervision: rowData.riskRequiresSupervision || \"\",\r\n whatNeedsToHappen: rowData.whatNeedsToHappen || \"\",\r\n howItShouldHappen: rowData.howItShouldHappen || \"\",\r\n whoIsResponsible: rowData.whoIsResponsible || \"\",\r\n whenHowOften: rowData.whenHowOften || \"\",\r\n providerName: rowData.providerName || \"\",\r\n scopeOfService: rowData.scopeOfService || \"\",\r\n howOftenValue: rowData.howOftenValue || \"\",\r\n howOftenText: rowData.howOftenText || \"\",\r\n howOftenFrequency: rowData.howOftenFrequency || \"\",\r\n whoSupports: rowData.whoSupports || \"\",\r\n newOrExisting: rowData.newOrExisting || \"\",\r\n reasonForReferral: rowData.reasonForReferral || \"\",\r\n section: rowData.section || \"\",\r\n existingOutcomeGoalId: rowData.existingOutcomeGoalId || \"\",\r\n serviceDateStart: rowData.serviceDateStart || \"\",\r\n serviceDateEnd: rowData.serviceDateEnd || \"\"\r\n };\r\n }\r\n\r\n // Gather all selected rows with additional data\r\n const importedTables = selectedOutcomes.map((rowData) => {\r\n // Use the sectionToTableMap to get the tableId\r\n const tableId = sectionToTableMap[rowData.section];\r\n const tableDiv = document.getElementById(tableId);\r\n\r\n const escapedId = CSS.escape(`${rowData.rowId}A`); // Escape the ID to handle special characters like digits or others\r\n const existingOutcomeContainer = tableDiv.querySelector(`#${escapedId}`);\r\n\r\n const dropdownId = `existingOutcomeDropdown_${rowData.rowId}`;\r\n const esitingOutcomeContainerDropdown = tableDiv.querySelector(`#${dropdownId}`);\r\n\r\n const serviceDateStart = existingOutcomeContainer.querySelector('.addToExistingOutcomesRowContainer input.startDate');\r\n const serviceDateEnd = existingOutcomeContainer.querySelector('.addToExistingOutcomesRowContainer input.endDate');\r\n\r\n const additionalData = {\r\n existingOutcomeGoalId: esitingOutcomeContainerDropdown ? esitingOutcomeContainerDropdown.value : null,\r\n serviceDateStart: serviceDateStart ? serviceDateStart.value : null,\r\n serviceDateEnd: serviceDateEnd ? serviceDateEnd.value : null\r\n };\r\n\r\n // Create a default ImportedTable object and merge with additional data\r\n return createDefaultImportedTable({ ...rowData, ...additionalData });\r\n });\r\n\r\n const importSelectedServicesResult = await _UTIL.fetchData('importSelectedServices', {token, importedTables});\r\n\r\n if (importSelectedServicesResult.importSelectedServicesResult.length === 0) {\r\n importSelectedServicesPopupMessage.innerText = 'Your outcomes have been successfully imported.'\r\n } else {\r\n importSelectedServicesPopupMessage.innerText = 'Something went wrong when trying to import your services. Please Try again.'\r\n }\r\n\r\n importSelectedServicesPopup.appendChild(importSelectedServicesPopupMessage);\r\n importSelectedServicesPopup.appendChild(okBtn);\r\n\r\n POPUP.show(importSelectedServicesPopup);\r\n }\r\n \r\n landingPage.appendChild(knownAndLikelyRisksTable);\r\n landingPage.appendChild(experiencesTable);\r\n landingPage.appendChild(paidSupportsTable);\r\n landingPage.appendChild(additionalSupportsTable);\r\n landingPage.appendChild(professionalReferralsTable);\r\n landingPage.appendChild(importSelectedSerivcesAndCancelBtnWrap);\r\n }\r\n\r\n // Match string of imported table assessment area to get the associated assessment area id\r\n function getAssessmentAreaId(targetKey) {\r\n return assessmentAreas.hasOwnProperty(targetKey) ? assessmentAreas[targetKey] : '';\r\n }\r\n \r\n\r\n // map the know and likely risks data into the format needed for populating the table\r\n function mapRiskAssessmentsDataForTable(ra) {\r\n let provderId = '';\r\n\r\n const whatIsRisk = ra.WhatIsRisk || \"\";\r\n const whatSupportMustLookLike = ra.WhatSupportMustLookLike || \"\";\r\n const riskRequiresSupervision = ra.RiskRequiresSupervision || \"\";\r\n const whoIsResponsible = ra.WhoIsResponsible || \"\";\r\n\r\n const assessmentAreaId = getAssessmentAreaId(ra.AssessmentArea);\r\n const assessmentArea = ra.AssessmentArea;\r\n\r\n const section = 'Known & Likely Risks';\r\n\r\n return {\r\n tableValues: [\r\n assessmentArea,\r\n whatIsRisk,\r\n whatSupportMustLookLike,\r\n riskRequiresSupervision,\r\n whoIsResponsible,\r\n ],\r\n raData: {\r\n assessmentAreaId,\r\n assessmentArea,\r\n whatIsRisk,\r\n whatSupportMustLookLike,\r\n riskRequiresSupervision,\r\n whoIsResponsible,\r\n section\r\n },\r\n };\r\n }\r\n\r\n // map the experiences data into the format needed for populating the table\r\n function mapExperiencesDataForTable(ex) {\r\n const whatNeedsToHappen = ex.WhatNeedsToHappen || \"\";\r\n const howItShouldHappen = ex.HowItShouldHappen || \"\";\r\n const whoIsResponsible = ex.WhoIsResponsible || \"\";\r\n const whenHowOften = ex.WhenHowOften || \"\";\r\n\r\n const section = 'Experiences';\r\n const assessmentAreaId = getAssessmentAreaId(ex.AssessmentArea);\r\n const assessmentArea = ex.AssessmentArea;\r\n\r\n return {\r\n tableValues: [\r\n whatNeedsToHappen,\r\n howItShouldHappen,\r\n whoIsResponsible,\r\n whenHowOften,\r\n ],\r\n exData: {\r\n assessmentAreaId,\r\n assessmentArea,\r\n whatNeedsToHappen,\r\n howItShouldHappen,\r\n whoIsResponsible,\r\n whenHowOften,\r\n section\r\n },\r\n };\r\n }\r\n\r\n // map the paid support data into the format needed for populating the table\r\n function mapPaidSupportDataForTable(ps) {\r\n // Split the string into two parts\r\n const [bDate, eDate] = (ps.BeginDateEndDate).split(/(?<=\\d{4})\\s+/);\r\n\r\n const serviceName = ps.ServiceName || \"\";\r\n const scopeOfService = ps.ScopeOfService || \"\";\r\n const howOftenValue = ps.HowOftenHowMuch || \"\";\r\n const howOftenText = ps.HowOftenHowMuch || \"\";\r\n const fundingSourceText = ps.FundingSource || \"\";\r\n const paidSupportsId = '';\r\n const providerName = ps.ProviderName || \"\";\r\n\r\n const assessmentAreaId = getAssessmentAreaId(ps.AssessmentArea);\r\n const assessmentArea = ps.AssessmentArea;\r\n\r\n const section = 'Paid Supports';\r\n\r\n let howOften = '';\r\n if (howOftenValue) howOften += howOftenValue;\r\n\r\n if (howOftenText) howOften += ` ${howOftenText}`;\r\n\r\n return {\r\n tableValues: [\r\n assessmentArea,\r\n fundingSourceText,\r\n serviceName,\r\n providerName,\r\n scopeOfService,\r\n howOftenText,\r\n bDate,\r\n eDate,\r\n ],\r\n psData: {\r\n assessmentAreaId,\r\n providerName,\r\n //serviceNameOther,\r\n scopeOfService,\r\n howOftenValue,\r\n howOftenText,\r\n bDate,\r\n eDate,\r\n fundingSourceText,\r\n paidSupportsId,\r\n section\r\n },\r\n };\r\n }\r\n\r\n // map the additional supports data into the format needed for populating the table\r\n function mapAdditionalSupportDataForTable(as) {\r\n let assessmentAreaId;\r\n let assessmentArea;\r\n\r\n const whoSupports = as.WhoSupports || \"\";\r\n const whoSupportsText = as.WhoSupports || \"\";\r\n const whatSupportLooksLike = as.WhatSupportLooksLike || \"\";\r\n const howOftenValue = as.WhenHowOften || \"\";\r\n const howOftenFrequency = as.WhenHowOften || \"\";\r\n const howOftenText = as.WhenHowOften || \"\";\r\n const additionalSupportsId = '';\r\n\r\n assessmentAreaId = getAssessmentAreaId(as.AssessmentArea);\r\n assessmentArea = as.AssessmentArea;\r\n\r\n const section = 'Additional Supports';\r\n\r\n const whenHowOftenDesc = '';\r\n let howOften = '';\r\n if (howOftenValue) howOften += howOftenValue;\r\n if (howOftenFrequency && howOftenFrequency !== '4') {\r\n howOften += ` ${whenHowOftenDesc}`;\r\n } else {\r\n if (howOftenText) howOften += ` ${howOftenText}`;\r\n }\r\n\r\n return {\r\n tableValues: [\r\n assessmentArea, \r\n whoSupportsText, \r\n whatSupportLooksLike, \r\n howOften,\r\n ],\r\n asData: {\r\n assessmentAreaId,\r\n whoSupports,\r\n whatSupportLooksLike,\r\n howOftenValue,\r\n howOftenFrequency,\r\n howOftenText,\r\n additionalSupportsId,\r\n section\r\n },\r\n };\r\n }\r\n\r\n // map the professional referrals data into the format needed for populating the table\r\n function mapProfessionalReferralsDataForTable(pr) {\r\n let assessmentAreaId;\r\n let assessmentArea;\r\n\r\n const newOrExisting = pr.NewOrExisting || \"\";\r\n const whoSupports = pr.WhoSupports || \"\";\r\n const reasonForReferral = pr.ReasonForReferral || \"\";\r\n const howOftenValue = pr.WhenHowOften || \"\";\r\n const howOftenFrequency = pr.WhenHowOften || \"\";\r\n const howOftenText = pr.WhenHowOften || \"\";\r\n const additionalSupportsId = '';\r\n\r\n assessmentAreaId = getAssessmentAreaId(pr.AssessmentArea);\r\n assessmentArea = pr.AssessmentArea;\r\n\r\n const section = 'Professional Referrals';\r\n\r\n const whenHowOftenDesc = '';\r\n let howOften = '';\r\n if (howOftenValue) howOften += howOftenValue;\r\n if (howOftenFrequency && howOftenFrequency !== '4') {\r\n howOften += ` ${whenHowOftenDesc}`;\r\n } else {\r\n if (howOftenText) howOften += ` ${howOftenText}`;\r\n }\r\n\r\n return {\r\n tableValues: [\r\n assessmentArea, \r\n newOrExisting, \r\n whoSupports, \r\n reasonForReferral,\r\n ],\r\n prData: {\r\n assessmentAreaId,\r\n assessmentArea, \r\n newOrExisting, \r\n whoSupports, \r\n reasonForReferral,\r\n section\r\n },\r\n };\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})(); ","const outcomes = (function () {\r\n let OUTCOMES_SECTION;\r\n\r\n // Filter DOM\r\n let filterPopup;\r\n let filterButton;\r\n let dateInput;\r\n let serviceDropdown;\r\n let outcomeDropdown;\r\n let applyButton;\r\n //const currentFilterDisplay = document.createElement(\"div\");\r\n // Filter Values\r\n let currDate;\r\n let currService;\r\n let currOutcome;\r\n let currOutcomeId;\r\n // Data\r\n //----------------------------\r\n let selectedConsumerObj;\r\n let selectedConsumerId;\r\n let selectedConsume;\r\n // front card data\r\n let outcomesDataObj;\r\n let outcomesPrompts;\r\n let outcomesLocations;\r\n // back card dom (popup)\r\n let detailsPopup;\r\n let primaryLocationDropdown;\r\n let secondaryLocationDropdown;\r\n let resultsDropdown;\r\n let promptsDropdown;\r\n let attemptsDropdown;\r\n let cIDropdown;\r\n let timeInputs;\r\n let saveBtn;\r\n let deleteBtn;\r\n let noteInput;\r\n let enteredByUser;\r\n let edit__lastEditedByDetails;\r\n // back card data\r\n let ciData;\r\n let successObj;\r\n let successType;\r\n let successDetails;\r\n let currResult = '';\r\n let currReason = '';\r\n let currAttempts = '';\r\n let currPrompt = '';\r\n let currCI = '';\r\n let currNote = '';\r\n let currStartTime = '';\r\n let currEndTime = '';\r\n let defaultObjLocationId;\r\n let defaultGoalLocationId;\r\n // save/update data\r\n let personId;\r\n let objectiveId;\r\n let activityId;\r\n let objdate;\r\n let success;\r\n let goalnote;\r\n let reviewNote;\r\n let notifyEmployee = 'N';\r\n let promptType;\r\n let promptNumber;\r\n let locationId;\r\n let locationSecondaryId;\r\n let goalStartTime;\r\n let goalEndTime;\r\n let goalCILevel;\r\n // other\r\n let dateSpanMessage;\r\n let daysBack;\r\n let daysBackDate;\r\n let useConsumerLocation;\r\n let defaultPrimaryLocation;\r\n let currentSection;\r\n let todaysDateToDisplay;\r\n let firstDayOfWeek;\r\n let lastDayOfWeek;\r\n let firstDayOfMonth;\r\n let lastDayOfMonth;\r\n let yearOfCurrentDay;\r\n let dailyAbsent = false;\r\n let consumerName;\r\n const todaysDate = UTIL.getTodaysDate();\r\n let initLoad;\r\n\r\n let btnWrap;\r\n let serviceBtnWrap;\r\n let outcomeTypeBtnWrap;\r\n let tmpService;\r\n let tmpOutcome;\r\n let tmpOutcomeId;\r\n let editOutcomeBtn;\r\n let viewPlanBtn;\r\n let viewPlanPOPUP;\r\n let updatePlanPopup;\r\n let attachmentInput; \r\n\r\n let isViewedAvailableOSPlan = 'false';\r\n\r\n function getAllowedConsumerIds() {\r\n return allowedConsumerIds;\r\n }\r\n function getDropdownValues() {\r\n return {\r\n prompts: outcomesPrompts,\r\n ci: ciData,\r\n };\r\n }\r\n function getDataForOverview() {\r\n return {\r\n objLocationId: defaultObjLocationId,\r\n goalLocationId: defaultGoalLocationId,\r\n primaryLocationId: defaultPrimaryLocation,\r\n };\r\n }\r\n\r\n // Workers\r\n //------------------------------------\r\n function disableNewOutcomeFields() {\r\n attemptsDropdown.classList.add('disabled');\r\n promptsDropdown.classList.add('disabled');\r\n cIDropdown.classList.add('disabled');\r\n timeInputs.start.classList.add('disabled');\r\n timeInputs.end.classList.add('disabled');\r\n //noteInput.classList.add('disabled');\r\n }\r\n function disableOutcomeFieldsOtherUser() {\r\n primaryLocationDropdown.classList.add('disabled');\r\n secondaryLocationDropdown.classList.add('disabled');\r\n resultsDropdown.classList.add('disabled');\r\n attemptsDropdown.classList.add('disabled');\r\n promptsDropdown.classList.add('disabled');\r\n cIDropdown.classList.add('disabled');\r\n timeInputs.start.classList.add('disabled');\r\n timeInputs.end.classList.add('disabled');\r\n // noteInput.classList.add('disabled');\r\n noteInput.querySelector('.input-field__input').setAttribute('readonly', 'true');\r\n saveBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n function clearBackCardValues() {\r\n //ciData = '';\r\n successObj = '';\r\n successType = '';\r\n successDetails = '';\r\n currReason = '';\r\n currAttempts = '';\r\n currPrompt = '';\r\n currCI = '';\r\n currNote = '';\r\n currStartTime = '';\r\n currEndTime = '';\r\n goalnote = '';\r\n promptType = null;\r\n promptNumber = null;\r\n locationId = null;\r\n locationSecondaryId = null;\r\n goalStartTime = null;\r\n goalEndTime = null;\r\n goalCILevel = null;\r\n }\r\n function sortOutcomes(results) {\r\n outcomesDataObj = {};\r\n\r\n results.forEach(res => {\r\n var occurrence = res.Objective_Recurrance ? res.Objective_Recurrance : 'NF';\r\n\r\n if (!outcomesDataObj[occurrence]) {\r\n outcomesDataObj[occurrence] = [];\r\n }\r\n\r\n res.nullHourDaySuccesses = res.nullHourDaySuccesses !== '' ? res.nullHourDaySuccesses.split(',') : [];\r\n res.weekSuccesses = res.weekSuccesses !== '' ? res.weekSuccesses.split(',') : [];\r\n res.monthSuccesses = res.monthSuccesses !== '' ? res.monthSuccesses.split(',') : [];\r\n res.yearSuccesses = res.yearSuccesses !== '' ? res.yearSuccesses.split(',') : [];\r\n\r\n outcomesDataObj[occurrence].push(res);\r\n });\r\n }\r\n function sortOutcomeLocations(results) {\r\n outcomesLocations = {};\r\n\r\n results.forEach(res => {\r\n if (!outcomesLocations[res.type]) {\r\n outcomesLocations[res.type] = [];\r\n }\r\n\r\n outcomesLocations[res.type].push(res);\r\n });\r\n outcomesLocations['Primary'].sort(function (a, b) {\r\n if (a.description < b.description) {\r\n return -1;\r\n }\r\n if (a.description > b.description) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n if (outcomesLocations.Secondary) {\r\n outcomesLocations['Secondary'].sort(function (a, b) {\r\n if (a.description < b.description) {\r\n return -1;\r\n }\r\n if (a.description > b.description) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n }\r\n function sortSuccessTypes(results) {\r\n unOrderedSuccessObj = {};\r\n successObj = {};\r\n\r\n results.forEach(st => {\r\n var label = st.Objective_Success_Description;\r\n if (!unOrderedSuccessObj[label]) {\r\n unOrderedSuccessObj[label] = st;\r\n }\r\n });\r\n\r\n Object.keys(unOrderedSuccessObj)\r\n .sort()\r\n .forEach(key => {\r\n successObj[key] = unOrderedSuccessObj[key];\r\n });\r\n }\r\n function getObjectiveActivities(outcome) {\r\n var objectiveRecurrance = outcome.Objective_Recurrance;\r\n if (objectiveRecurrance === '') objectiveRecurrance = 'NF';\r\n var activities;\r\n\r\n switch (objectiveRecurrance) {\r\n case 'NF': {\r\n activities = outcome.nullHourDaySuccesses;\r\n break;\r\n }\r\n case 'H': {\r\n activities = outcome.nullHourDaySuccesses;\r\n break;\r\n }\r\n case 'D': {\r\n activities = outcome.nullHourDaySuccesses;\r\n break;\r\n }\r\n case 'W': {\r\n activities = outcome.weekSuccesses;\r\n break;\r\n }\r\n case 'M': {\r\n activities = outcome.monthSuccesses;\r\n break;\r\n }\r\n case 'Y': {\r\n activities = outcome.yearSuccesses;\r\n break;\r\n }\r\n }\r\n\r\n return activities;\r\n }\r\n // Save/Update/Delete\r\n //------------------------------------\r\n function initSaveData(outcome) {\r\n personId = selectedConsumerId;\r\n activityId = 0;\r\n objectiveId = outcome.Objective_id;\r\n objdate = currDate;\r\n }\r\n function saveNewOutcome() {\r\n getInputValues();\r\n goalnote = UTIL.removeUnsavableNoteText(goalnote); //fix note with bad text\r\n const newOutcomeData = {\r\n personId,\r\n objectiveId,\r\n activityId,\r\n objdate,\r\n success,\r\n goalnote: !goalnote ? '' : goalnote,\r\n promptType: !promptType ? '0' : promptType,\r\n promptNumber: !promptNumber ? '0' : promptNumber,\r\n locationId,\r\n locationSecondaryId: !locationSecondaryId ? 0 : locationSecondaryId,\r\n goalStartTime: !goalStartTime ? '' : goalStartTime,\r\n goalEndTime: !goalEndTime ? '' : goalEndTime,\r\n goalCILevel: !goalCILevel ? '' : goalCILevel,\r\n };\r\n var section = document.querySelector('.tabs__nav--item.active');\r\n currentSection = section.innerHTML;\r\n POPUP.hide(detailsPopup);\r\n successfulSave.show();\r\n outcomesAjax.saveGoals(newOutcomeData, async function () {\r\n await outcomesAjax.addReviewNote({\r\n token: $.session.Token,\r\n objectiveActivityId: activityId,\r\n reviewNote: reviewNote,\r\n consumerId: selectedConsumerId,\r\n objectiveActivityDate: objdate,\r\n notifyEmployee: notifyEmployee,\r\n });\r\n\r\n resetOutcomeSaveData();\r\n getConsumersWithRemainingGoals();\r\n locationSecondaryId = 0;\r\n setTimeout(async () => {\r\n successfulSave.hide();\r\n await loadCardView(selectedConsumerObj, 'false');\r\n applyOutComeFilter();\r\n }, 1000);\r\n });\r\n }\r\n function resetOutcomeSaveData() {\r\n success = '';\r\n promptType = '0';\r\n promptNumber = 0;\r\n goalnote = '';\r\n goalStartTime = '';\r\n goalEndTime = '';\r\n goalCILevel = '';\r\n locationSecondaryId = 0;\r\n notifyEmployee = 'N';\r\n reviewNote = '';\r\n }\r\n function getInputValues() {\r\n var promptTypeInput = promptsDropdown.querySelector('.dropdown__select');\r\n var promptNumberInput = attemptsDropdown.querySelector('.dropdown__select');\r\n var goalnoteInput = noteInput.querySelector('.input-field__input');\r\n promptType = promptTypeInput[promptTypeInput.selectedIndex].value;\r\n promptNumber = promptNumberInput[promptNumberInput.selectedIndex].value;\r\n goalnote = goalnoteInput.value;\r\n }\r\n function deleteObjectiveActivity() {\r\n outcomesAjax.deleteGoal(activityId, selectedConsumerId, currDate, async () => {\r\n POPUP.hide(detailsPopup);\r\n await loadCardView(selectedConsumerObj);\r\n });\r\n }\r\n\r\n // Required Fields\r\n //------------------------------------\r\n function checkRequiredFields() {\r\n var showAttempts = successDetails?.Show_Attempts;\r\n var showPrompts = successDetails?.Show_Prompts;\r\n var showTime = successDetails?.Show_Time;\r\n var showCI = successDetails?.Show_Community_Integration;\r\n\r\n var attemptsRequired = successDetails?.Attempts_Required;\r\n var promptsRequired = successDetails?.Prompt_Required;\r\n var timeRequired = successDetails?.Times_Required;\r\n var ciRequired = successDetails?.Community_Integration_Required;\r\n var noteRequired = successDetails?.Notes_Required;\r\n\r\n var errorFree = true;\r\n\r\n // attempts\r\n if (showAttempts === 'Y') {\r\n attemptsDropdown.classList.remove('hidden');\r\n attemptsDropdown.classList.remove('disabled');\r\n if (attemptsRequired === 'Y') {\r\n if (!currAttempts || currAttempts === '') {\r\n attemptsDropdown.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n attemptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n attemptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n attemptsDropdown.classList.add('hidden');\r\n attemptsDropdown.classList.add('disabled');\r\n }\r\n // prompts\r\n if (showPrompts === 'Y') {\r\n promptsDropdown.classList.remove('hidden');\r\n promptsDropdown.classList.remove('disabled');\r\n if (promptsRequired === 'Y') {\r\n if (!currPrompt || currPrompt === '') {\r\n promptsDropdown.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n promptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n promptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n promptsDropdown.classList.add('hidden');\r\n promptsDropdown.classList.add('disabled');\r\n }\r\n // community integration\r\n if (showCI === 'Y') {\r\n cIDropdown.classList.remove('hidden');\r\n cIDropdown.classList.remove('disabled');\r\n if (ciRequired === 'Y') {\r\n if (!currCI || currCI === '') {\r\n cIDropdown.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n cIDropdown.classList.remove('error');\r\n }\r\n } else {\r\n cIDropdown.classList.remove('error');\r\n }\r\n } else {\r\n cIDropdown.classList.add('hidden');\r\n cIDropdown.classList.add('disabled');\r\n }\r\n // start and end time\r\n if (showTime === 'Y') {\r\n timeInputs.start.classList.remove('disabled');\r\n timeInputs.end.classList.remove('disabled');\r\n if (timeRequired === 'Y') {\r\n if (currStartTime === '') {\r\n timeInputs.start.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n timeInputs.start.classList.remove('error');\r\n }\r\n if (currEndTime === '') {\r\n timeInputs.end.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n timeInputs.end.classList.remove('error');\r\n }\r\n } else {\r\n timeInputs.start.classList.remove('error');\r\n timeInputs.end.classList.remove('error');\r\n }\r\n } else {\r\n timeInputs.start.classList.add('disabled');\r\n timeInputs.end.classList.add('disabled');\r\n }\r\n // note\r\n if (noteRequired === 'Y') {\r\n if (!currNote || currNote === '') {\r\n noteInput.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n noteInput.classList.remove('error');\r\n }\r\n } else {\r\n noteInput.classList.remove('error');\r\n }\r\n\r\n if (showTime === 'Y') validateStartEndTimes();\r\n\r\n checkErrors();\r\n }\r\n function validateStartEndTimes() {\r\n var timeRequired = successDetails.Times_Required;\r\n var startInput = timeInputs.start.querySelector('input');\r\n var endInput = timeInputs.end.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n\r\n if (timeRequired === 'N' && startTime === '' && endTime === '') return;\r\n\r\n if (endTime === '00:00') {\r\n timeInputs.end.classList.add('error'); //error on 12am end time\r\n }\r\n\r\n if (timeRequired === 'N') {\r\n if (startTime === '' && endTime !== '') {\r\n timeInputs.start.classList.add('error');\r\n }\r\n if (endTime === '' && startTime !== '') {\r\n timeInputs.end.classList.add('error');\r\n }\r\n }\r\n // if ((startTime === \"\" && timeRequired === \"N\") && endTime !== \"\") {\r\n // timeInputs.start.classList.add(\"error\")\r\n // } else timeInputs.start.classList.remove(\"error\")\r\n // if ((endTime === \"\" && timeRequired === \"N\") && startTime !== \"\") {\r\n // timeInputs.end.classList.add(\"error\")\r\n // }\r\n if (startTime >= endTime) {\r\n timeInputs.end.classList.add('error');\r\n } else {\r\n timeInputs.end.classList.remove('error');\r\n }\r\n if (startTime <= endTime && startTime !== '') {\r\n timeInputs.start.classList.remove('error');\r\n } else {\r\n timeInputs.start.classList.add('error');\r\n }\r\n }\r\n\r\n function checkShowFields() {\r\n var showAttempts = successObj[Object.keys(successObj)[0]].Show_Attempts;\r\n var showPrompts = successObj[Object.keys(successObj)[0]].Show_Prompts;\r\n var showTime = successObj[Object.keys(successObj)[0]].Show_Time;\r\n var showCI = successObj[Object.keys(successObj)[0]].Show_Community_Integration;\r\n\r\n if (showAttempts === 'Y') {\r\n attemptsDropdown.classList.remove('hidden');\r\n } else {\r\n attemptsDropdown.classList.add('hidden');\r\n }\r\n if (showPrompts === 'Y') {\r\n promptsDropdown.classList.remove('hidden');\r\n } else {\r\n promptsDropdown.classList.add('hidden');\r\n }\r\n if (showTime === 'Y') {\r\n timeInputs.start.classList.remove('hidden');\r\n timeInputs.end.classList.remove('hidden');\r\n } else {\r\n timeInputs.start.classList.add('hidden');\r\n timeInputs.end.classList.add('hidden');\r\n }\r\n if (showCI === 'Y') {\r\n cIDropdown.classList.remove('hidden');\r\n } else {\r\n cIDropdown.classList.add('hidden');\r\n }\r\n }\r\n\r\n function checkErrors() {\r\n var errors = document.querySelectorAll('.error');\r\n if (errors.length === 0) {\r\n saveBtn.classList.remove('disabled');\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n }\r\n }\r\n // Action Nav\r\n //------------------------------------\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'rosterDone': {\r\n //! I do not think this is used anymore\r\n roster.selectedConsumersToEnabledList();\r\n PROGRESS.SPINNER.show('Loading Outcomes...');\r\n loadLandingPage();\r\n roster.clearActiveConsumers();\r\n break;\r\n }\r\n case 'rosterCancel': {\r\n //! I do not think this is used anymore\r\n var outcomeModuleBtn = document.getElementById('goalssettingsbutton');\r\n var dashButton = document.getElementById('singlebutton');\r\n outcomeModuleBtn.classList.remove('active');\r\n dashButton.classList.add('active');\r\n unloadApp($.loadedApp);\r\n setActiveModuleAttribute('home');\r\n DOM.clearActionCenter();\r\n DOM.ACTIONCENTER.removeAttribute('data-active-section');\r\n dashboard.load();\r\n break;\r\n }\r\n case 'miniRosterDone': {\r\n initLoad = false;\r\n var activeConsumers = roster2.getActiveConsumers();\r\n if (activeConsumers.length > 0) {\r\n activeConsumers.forEach(consumer => {\r\n roster2.removeConsumerFromActiveConsumers(consumer.id);\r\n });\r\n }\r\n selectedConsumerObj = activeConsumers[activeConsumers.length - 1];\r\n consumerName = activeConsumers[activeConsumers.length - 1].card.innerText;\r\n selectedConsumerId = activeConsumers[activeConsumers.length - 1].id;\r\n afterSelectionRoster();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n if (initLoad) {\r\n loadApp('home');\r\n } else DOM.toggleNavLayout();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function backToOutcomeLoad(consumerObj) {\r\n selectedConsumerObj = consumerObj;\r\n consumerName = consumerObj.card.innerText;\r\n selectedConsumerId = consumerObj.id;\r\n afterSelectionRoster();\r\n }\r\n\r\n function afterSelectionRoster() {\r\n DOM.toggleNavLayout();\r\n PROGRESS.SPINNER.show(`Loading Outcomes For ${consumerName}`);\r\n resetFilter();\r\n updateCurrentFilterDisplay();\r\n outcomesAjax.getOutcomesPrompts(function (results) {\r\n outcomesPrompts = results;\r\n outcomesAjax.getGoalsCommunityIntegrationLevelDropdown(function (ciResults) {\r\n ciData = ciResults;\r\n outcomesAjax.getDaysBackForEditingGoalsAndUseConsumerLocation(selectedConsumerId, async function (results) {\r\n daysBack = results[0].setting_value;\r\n daysBackDate = convertDaysBack(daysBack);\r\n useConsumerLocation = results[0].outcomes_use_consumer_location;\r\n defaultPrimaryLocation = results[0].consumer_location;\r\n await loadCardView(selectedConsumerObj);\r\n });\r\n });\r\n });\r\n }\r\n //Set up spans to display\r\n function setUpOutcomesTabSpans() {\r\n //Create date to use for calculations\r\n var dateForCalculations = new Date(UTIL.formatDateFromIso(currDate));\r\n var day = dateForCalculations.getDay() + 1;\r\n //Single date\r\n todaysDateToDisplay = UTIL.formatDateFromIso(currDate);\r\n //week the date is in\r\n //first day\r\n firstDayOfWeek = new Date(\r\n dateForCalculations.getFullYear(),\r\n dateForCalculations.getMonth(),\r\n dateForCalculations.getDate() + (day == 0 ? -7 : 1) - day,\r\n );\r\n firstDayOfWeek = UTIL.getFormattedDateFromDate(firstDayOfWeek);\r\n //lastDayOfWeek\r\n lastDayOfWeek = new Date(\r\n dateForCalculations.getFullYear(),\r\n dateForCalculations.getMonth(),\r\n dateForCalculations.getDate() + (day == 0 ? 0 : 7) - day,\r\n );\r\n lastDayOfWeek = UTIL.getFormattedDateFromDate(lastDayOfWeek);\r\n //first day of month\r\n firstDayOfMonth = new Date(dateForCalculations.getFullYear(), dateForCalculations.getMonth(), 1);\r\n firstDayOfMonth = UTIL.getFormattedDateFromDate(firstDayOfMonth);\r\n //last day of month\r\n lastDayOfMonth = new Date(dateForCalculations.getFullYear(), dateForCalculations.getMonth() + 1, 0);\r\n lastDayOfMonth = UTIL.getFormattedDateFromDate(lastDayOfMonth);\r\n //year of current day\r\n yearOfCurrentDay = dateForCalculations.getFullYear();\r\n }\r\n\r\n // Filtering\r\n //------------------------------------\r\n function updateCurrentFilterDisplay(service = 'All', outcomeType = 'All') {\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n\r\n if (!currentFilterDisplay) {\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n filterButtonSet(service, outcomeType);\r\n currentFilterDisplay.appendChild(btnWrap);\r\n }\r\n\r\n currentFilterDisplay.style.maxWidth = '100%';\r\n\r\n if (service === '%' || service === 'All') {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n btnWrap.removeChild(serviceBtnWrap);\r\n } else {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n if (document.getElementById('serviceBtn') != null)\r\n document.getElementById('serviceBtn').innerHTML = 'Service: ' + service;\r\n }\r\n\r\n if (outcomeType === '%' || outcomeType === 'All') {\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n btnWrap.removeChild(outcomeTypeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n if (document.getElementById('outcomeTypeBtn') != null)\r\n document.getElementById('outcomeTypeBtn').innerHTML = 'Outcome Type: ' + outcomeType;\r\n }\r\n return currentFilterDisplay;\r\n }\r\n function filterButtonSet(service = 'All', outcomeType = 'All') {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n showFilterPopup('ALL');\r\n },\r\n });\r\n\r\n serviceBtn = button.build({\r\n id: 'serviceBtn',\r\n text: 'Service: ' + service,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('serviceBtn');\r\n },\r\n });\r\n serviceCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('serviceBtn');\r\n },\r\n });\r\n\r\n outcomeTypeBtn = button.build({\r\n id: 'outcomeTypeBtn',\r\n text: 'Outcome Type: ' + outcomeType,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('outcomeTypeBtn');\r\n },\r\n });\r\n outcomeTypeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('outcomeTypeBtn');\r\n },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n serviceBtnWrap = document.createElement('div');\r\n serviceBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceBtnWrap.appendChild(serviceBtn);\r\n serviceBtnWrap.appendChild(serviceCloseBtn);\r\n btnWrap.appendChild(serviceBtnWrap);\r\n\r\n outcomeTypeBtnWrap = document.createElement('div');\r\n outcomeTypeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n outcomeTypeBtnWrap.appendChild(outcomeTypeBtn);\r\n outcomeTypeBtnWrap.appendChild(outcomeTypeCloseBtn);\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n }\r\n function closeFilter(closefilter) {\r\n if (closefilter == 'serviceBtn') {\r\n tmpService = 'All';\r\n }\r\n if (closefilter == 'outcomeTypeBtn') {\r\n tmpOutcome = 'All';\r\n tmpOutcomeId = '%';\r\n }\r\n applyOutComeFilter();\r\n }\r\n function getOutcomeCompletion(outcome) {\r\n var recurrance = outcome.Objective_Recurrance;\r\n var occurance = outcome.Frequency_Occurance;\r\n var freqModifier = outcome.Frequency_Modifier;\r\n var successArray;\r\n var isComplete;\r\n\r\n if (recurrance === 'NF' || recurrance === 'H' || recurrance === 'D') {\r\n successArray = outcome.nullHourDaySuccesses;\r\n }\r\n if (recurrance === 'W') successArray = outcome.weekSuccesses;\r\n if (recurrance === 'M') successArray = outcome.monthSuccesses;\r\n if (recurrance === 'Y') successArray = outcome.yearSuccesses;\r\n\r\n switch (freqModifier) {\r\n case 'OBJFMEX':\r\n if (successArray && successArray.length >= occurance) {\r\n isComplete = true;\r\n } else {\r\n isComplete = false;\r\n }\r\n break;\r\n case 'OBJFMAL':\r\n if (successArray && successArray.length >= occurance) {\r\n isComplete = true;\r\n } else {\r\n isComplete = false;\r\n }\r\n break;\r\n case 'OBJFMAN':\r\n isComplete = true;\r\n break;\r\n case 'OBJFMAR':\r\n isComplete = true;\r\n break;\r\n case 'OBJFMNM':\r\n isComplete = true;\r\n break;\r\n case '':\r\n isComplete = true;\r\n break;\r\n default:\r\n isComplete = false;\r\n break;\r\n }\r\n\r\n return isComplete ? 'Complete' : 'Incomplete';\r\n }\r\n function filterOutcomes(filterByData) {\r\n var service = filterByData.currService;\r\n var outcomeId = filterByData.currOutcomeId;\r\n var filteredOutcomesDataObj = {};\r\n\r\n function filterObject() {\r\n var freqKeys = Object.keys(outcomesDataObj);\r\n\r\n freqKeys.forEach(key => {\r\n var data = outcomesDataObj[key].filter(od => {\r\n var completion = getOutcomeCompletion(od);\r\n\r\n switch (service) {\r\n case 'All':\r\n if (currOutcomeId === '%') return true;\r\n return od.Goal_Type_ID === outcomeId;\r\n case 'Incomplete':\r\n case 'Complete':\r\n if (currOutcomeId !== '%') return od.Goal_Type_ID === outcomeId && completion === service;\r\n return completion === service;\r\n default:\r\n break;\r\n }\r\n\r\n // if (currService === 'All' && currOutcomeId === '%') return true;\r\n // if (service && outcomeId) return od.Goal_Type_ID === outcomeId && completion === service;\r\n // if (service && !outcomeId) return completion === service;\r\n // if (!service && outcomeId) return od.Goal_Type_ID === outcomeId;\r\n });\r\n filteredOutcomesDataObj[key] = data;\r\n });\r\n }\r\n\r\n if (filterByData.tmpDate) {\r\n outcomesAjax.getGoals(selectedConsumerId, currDate, function (results) {\r\n sortOutcomes(results);\r\n filterObject();\r\n });\r\n } else {\r\n filterObject();\r\n }\r\n\r\n populateOutcomes(filteredOutcomesDataObj);\r\n }\r\n function setupFilterEvents() {\r\n serviceDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpService = selectedOption.value;\r\n });\r\n outcomeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpOutcomeId = selectedOption.value;\r\n tmpOutcome = selectedOption.innerHTML;\r\n });\r\n applyButton.addEventListener('click', () => {\r\n applyOutComeFilter();\r\n POPUP.hide(filterPopup);\r\n });\r\n }\r\n\r\n function applyOutComeFilter() {\r\n if (tmpService) {\r\n currService = tmpService;\r\n } else {\r\n currService = currService ? currService : 'All';\r\n }\r\n if (tmpOutcome) {\r\n currOutcome = tmpOutcome;\r\n currOutcomeId = tmpOutcomeId;\r\n } else if (!currOutcomeId) {\r\n currOutcome = 'All';\r\n currOutcomeId = '%';\r\n }\r\n\r\n if (tmpService || tmpOutcome) {\r\n filterOutcomes({ currService, currOutcomeId });\r\n }\r\n\r\n let outcomeDd = document.getElementById('outcomeDropdown');\r\n let outcomeTypeText = outcomeDd == null ? currOutcome : outcomeDd.options[outcomeDd.selectedIndex].innerHTML;\r\n updateCurrentFilterDisplay(currService ? currService : 'All', outcomeTypeText);\r\n\r\n setUpOutcomesTabSpans();\r\n }\r\n function populateServiceDropdown() {\r\n var data = [\r\n { value: 'All', text: 'All' },\r\n { value: 'Complete', text: 'Complete' },\r\n { value: 'Incomplete', text: 'Incomplete' },\r\n ];\r\n if (currService === undefined) {\r\n currService = 'All';\r\n } else {\r\n currService = currService;\r\n }\r\n dropdown.populate(serviceDropdown, data, currService);\r\n }\r\n function populateOutcomeTypesDropdown(results) {\r\n // Goal_Type_ID: \"114\"\r\n // goal_type_description: \"Actions\"\r\n var data = results.map(res => {\r\n return {\r\n value: res.Goal_Type_ID,\r\n text: res.goal_type_description,\r\n };\r\n });\r\n if (currOutcomeId === undefined) {\r\n currOutcomeId = '%';\r\n currOutcome = 'All';\r\n } else {\r\n currOutcomeId = currOutcomeId;\r\n currOutcome = currOutcome;\r\n }\r\n data.unshift({ value: '%', text: 'All' });\r\n dropdown.populate(outcomeDropdown, data, currOutcomeId);\r\n }\r\n function populateDropdowns() {\r\n populateServiceDropdown();\r\n outcomesAjax.getOutcomeTypeForFilter(\r\n {\r\n consumerId: selectedConsumerId,\r\n selectedDate: currDate,\r\n token: $.session.Token,\r\n },\r\n populateOutcomeTypesDropdown,\r\n );\r\n }\r\n function showFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({});\r\n\r\n serviceDropdown = dropdown.build({\r\n label: 'Service',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n outcomeDropdown = dropdown.build({\r\n dropdownId: 'outcomeDropdown',\r\n label: 'Outcome Type',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyButton = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n applyButton.classList.add('singleBtn');\r\n if (IsShow == 'ALL' || IsShow == 'serviceBtn') filterPopup.appendChild(serviceDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'outcomeTypeBtn') filterPopup.appendChild(outcomeDropdown);\r\n filterPopup.appendChild(applyButton);\r\n\r\n populateDropdowns();\r\n setupFilterEvents();\r\n\r\n POPUP.show(filterPopup);\r\n }\r\n function resetFilter() {\r\n currService = null;\r\n currOutcomeId = null;\r\n }\r\n\r\n // DATE INPUT\r\n //------------------------------------\r\n function buildDateInput() {\r\n var dateinput = input.build({\r\n id: 'outcomeDatePicker',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: currDate,\r\n classNames: ['dateInput'],\r\n attributes: [\r\n { key: 'min', value: daysBackDate },\r\n { key: 'max', value: UTIL.getTodaysDate() },\r\n ],\r\n });\r\n\r\n dateinput.addEventListener('change', event => {\r\n var currDateCache = currDate;\r\n currDate = event.target.value;\r\n var currDateCheck = new Date(currDate.split('-')[0], currDate.split('-')[1] - 1, currDate.split('-')[2]);\r\n var daysBackDateCheck = new Date(\r\n daysBackDate.split('-')[0],\r\n daysBackDate.split('-')[1] - 1,\r\n daysBackDate.split('-')[2],\r\n );\r\n if (currDateCheck < daysBackDateCheck || currDate === '' || currDateCheck > new Date()) {\r\n dateinput.classList.add('error');\r\n currDate = currDateCache;\r\n return;\r\n } else dateinput.classList.remove('error');\r\n currService = 'All';\r\n currOutcomeId = '%';\r\n currOutcome = 'All';\r\n roster2.updateSelectedDate(currDate);\r\n setUpOutcomesTabSpans(currDate);\r\n outcomesAjax.getGoals(selectedConsumerId, currDate, loadOutcomesCards);\r\n getConsumersWithRemainingGoals();\r\n });\r\n dateinput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n return dateinput;\r\n }\r\n\r\n // Build Outcome Cards\r\n //------------------------------------\r\n function buildConsumerCard(clone, consumerId) {\r\n var card = document.createElement('div');\r\n card.classList.add('outcomes__consumer');\r\n card.appendChild(clone);\r\n return card;\r\n }\r\n // card details (old back)\r\n function buildPrimaryLocationDropdown(locId) {\r\n var select = dropdown.build({\r\n label: 'Primary Location',\r\n style: 'secondary',\r\n });\r\n var data = outcomesLocations.Primary.map(pl => {\r\n return {\r\n value: pl.Location_ID,\r\n text: pl.description,\r\n };\r\n });\r\n\r\n if (locId) {\r\n dropdown.populate(select, data, locId);\r\n locationId = locId;\r\n } else {\r\n if (defaultObjLocationId !== '') {\r\n var defaultLocation = defaultObjLocationId;\r\n } else if (defaultGoalLocationId !== '') {\r\n var defaultLocation = defaultGoalLocationId;\r\n } else if (useConsumerLocation) {\r\n var defaultLocation = defaultPrimaryLocation;\r\n } else {\r\n var defaultLocation = '';\r\n }\r\n // var defaultLocation = useConsumerLocation ? defaultPrimaryLocation : '';\r\n dropdown.populate(select, data, defaultLocation);\r\n locationId = defaultLocation === '' ? data[0].value : defaultLocation;\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n locationId = selectedOption.value;\r\n rePopSecondaryLocationDropdown(locationId);\r\n });\r\n\r\n return select;\r\n }\r\n function rePopSecondaryLocationDropdown(locId) {\r\n var filteredOutcomesLocations = { Primary: [], Secondary: [] };\r\n\r\n outcomesLocations.Secondary.forEach(sl => {\r\n if (sl.primaryLocId === locId) {\r\n let obj = {\r\n Location_ID: sl.Location_ID,\r\n description: sl.description,\r\n primaryLocId: sl.primaryLocId,\r\n };\r\n filteredOutcomesLocations['Secondary'].push(obj);\r\n }\r\n });\r\n\r\n var data = filteredOutcomesLocations.Secondary.map(sl => {\r\n return {\r\n value: sl.Location_ID,\r\n text: sl.description,\r\n attributes: [{ key: 'data-primary-loc-id', value: sl.primaryLocId }],\r\n };\r\n });\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n dropdown.populate(secondaryLocationDropdown, data);\r\n locationSecondaryId = data[0].value;\r\n }\r\n\r\n function buildSecondaryLocationDropdown(locId) {\r\n var select = dropdown.build({\r\n label: 'Secondary Location',\r\n style: 'secondary',\r\n });\r\n\r\n if (!outcomesLocations.Secondary || outcomesLocations.Secondary.legnth < 1) return select;\r\n\r\n var filteredOutcomesLocations = { Primary: [], Secondary: [] };\r\n\r\n outcomesLocations.Secondary.forEach(sl => {\r\n if (sl.primaryLocId === locationId) {\r\n let obj = {\r\n Location_ID: sl.Location_ID,\r\n description: sl.description,\r\n primaryLocId: sl.primaryLocId,\r\n };\r\n filteredOutcomesLocations['Secondary'].push(obj);\r\n }\r\n });\r\n\r\n var data = filteredOutcomesLocations.Secondary.map(sl => {\r\n return {\r\n value: sl.Location_ID,\r\n text: sl.description,\r\n attributes: [{ key: 'data-primary-loc-id', value: sl.primaryLocId }],\r\n };\r\n });\r\n\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n\r\n if (locId) {\r\n dropdown.populate(select, data, locId);\r\n locationSecondaryId = locId;\r\n } else {\r\n dropdown.populate(select, data);\r\n locationSecondaryId = data[0].value;\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n locationSecondaryId = selectedOption.value;\r\n });\r\n\r\n return select;\r\n }\r\n function buildResultsDropdown(result) {\r\n var select = dropdown.build({\r\n label: 'Results',\r\n style: 'secondary',\r\n });\r\n\r\n var data = Object.values(successObj).map(r => {\r\n return {\r\n value: r.Objective_Success_Description,\r\n text: `${r.Objective_Success} ${r.Objective_Success_Description}`,\r\n attributes: [{ key: 'data-success', value: r.Objective_Success }],\r\n };\r\n });\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n\r\n currResult = data[0].value;\r\n\r\n if (result) {\r\n dropdown.populate(select, data, result);\r\n successType = result;\r\n successDetails = successObj[successType];\r\n success = successDetails.Objective_Success;\r\n } else {\r\n select.classList.add('error');\r\n dropdown.populate(select, data);\r\n successType = data[0].value;\r\n successDetails = successObj[successType];\r\n success = successType;\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n successType = selectedOption.value;\r\n if (successType === '') {\r\n resultsDropdown.classList.add('error');\r\n } else resultsDropdown.classList.remove('error');\r\n successDetails = successObj[successType];\r\n success = selectedOption.dataset.success;\r\n checkErrors();\r\n checkRequiredFields();\r\n });\r\n\r\n return select;\r\n }\r\n function buildPromptsDropdown(code) {\r\n var select = dropdown.build({\r\n label: 'Prompts',\r\n style: 'secondary',\r\n });\r\n var data = outcomesPrompts.map(op => {\r\n return {\r\n value: op.Code,\r\n text: `${op.Code} ${op.Caption}`,\r\n };\r\n });\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n if (code) {\r\n dropdown.populate(select, data, code);\r\n currPrompt = code;\r\n } else {\r\n dropdown.populate(select, data);\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n currPrompt = selectedOption.value;\r\n promptType = currPrompt;\r\n //promptNumber;\r\n checkRequiredFields();\r\n });\r\n\r\n return select;\r\n }\r\n function buildAttemptsDropdown(attempt) {\r\n var select = dropdown.build({\r\n label: 'Attempts',\r\n style: 'secondary',\r\n });\r\n var data = [\r\n { value: '', text: '' },\r\n // { value: '', text: 'Ø' },\r\n // { value: '0', text: '0' },\r\n { value: '1', text: '1' },\r\n { value: '2', text: '2' },\r\n { value: '3', text: '3' },\r\n { value: '4', text: '4' },\r\n { value: '5', text: '5' },\r\n { value: '6', text: '6' },\r\n { value: '7', text: '7' },\r\n { value: '8', text: '8' },\r\n { value: '9', text: '9' },\r\n ];\r\n dropdown.populate(select, data, attempt);\r\n if (attempt) currAttempts = attempt;\r\n\r\n select.addEventListener('change', event => {\r\n currAttempts = event.target.value;\r\n promptNumber = currAttempts;\r\n checkRequiredFields();\r\n });\r\n\r\n return select;\r\n }\r\n function buildCommunityIntegrationDropdown(ciLevel) {\r\n var select = dropdown.build({\r\n label: 'Community Integration',\r\n style: 'secondary',\r\n });\r\n var data = ciData.map(ci => {\r\n return {\r\n value: ci.code,\r\n text: `${ci.code} ${ci.captionname}`,\r\n };\r\n });\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n\r\n if (ciLevel) {\r\n dropdown.populate(select, data, ciLevel);\r\n goalCILevel = ciLevel;\r\n currCI = ciLevel;\r\n } else {\r\n dropdown.populate(select, data);\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n goalCILevel = event.target.value;\r\n currCI = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n return select;\r\n }\r\n function buildTimeInputs(startTime, endTime) {\r\n var start = input.build({\r\n label: 'Start Time',\r\n style: 'secondary',\r\n type: 'time',\r\n value: startTime,\r\n });\r\n var end = input.build({\r\n label: 'End Time',\r\n style: 'secondary',\r\n type: 'time',\r\n value: endTime,\r\n });\r\n\r\n if (startTime) {\r\n goalStartTime = startTime;\r\n currStartTime = startTime;\r\n }\r\n if (endTime) {\r\n goalEndTime = endTime;\r\n currEndTime = endTime;\r\n }\r\n\r\n start.addEventListener('change', event => {\r\n goalStartTime = event.target.value;\r\n currStartTime = startTime;\r\n checkRequiredFields();\r\n checkErrors();\r\n });\r\n end.addEventListener('change', event => {\r\n goalEndTime = event.target.value;\r\n currEndTime = endTime;\r\n checkRequiredFields();\r\n // if (validateStartEndTimes()) {\r\n // end.classList.remove('error')\r\n // } else end.classList.add('error')\r\n checkErrors();\r\n });\r\n\r\n return {\r\n start,\r\n end,\r\n };\r\n }\r\n function buildNoteInput(note) {\r\n var noteInput = input.build({\r\n label: 'Note',\r\n style: 'secondary',\r\n type: 'textarea',\r\n value: note,\r\n });\r\n\r\n if (note) {\r\n currNote = note;\r\n goalnote = note;\r\n }\r\n\r\n if (note !== undefined && enteredByUser && enteredByUser.toUpperCase() !== $.session.UserId.toUpperCase()) {\r\n return noteInput;\r\n }\r\n noteInput.addEventListener('keyup', (event) => {\r\n currNote = event.target.value;\r\n goalnote = currNote;\r\n checkRequiredFields();\r\n });\r\n\r\n return noteInput;\r\n }\r\n function buildReviewNoteInput(note) {\r\n const noteInput = input.build({\r\n label: 'Review Note',\r\n style: 'secondary',\r\n type: 'textarea',\r\n value: note,\r\n });\r\n\r\n reviewNote = note;\r\n\r\n noteInput.addEventListener('keyup', (event) => {\r\n reviewNote = event.target.value;\r\n });\r\n \r\n return noteInput;\r\n }\r\n function buildNotifyCheckbox() {\r\n const notifyEmployeeCheckbox = input.buildCheckbox({\r\n text: 'Notify Employee via System Message',\r\n });\r\n \r\n notifyEmployeeCheckbox.addEventListener('change', e => {\r\n notifyEmployee = e.target.checked ? 'Y' : 'N';\r\n });\r\n \r\n return notifyEmployeeCheckbox;\r\n }\r\n function buildSaveButton(isEdit) {\r\n var text = isEdit ? 'Update' : 'Save';\r\n var btn = button.build({\r\n text,\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: saveNewOutcome,\r\n });\r\n\r\n return btn;\r\n }\r\n function buildDeleteButton() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n //callback: deleteObjectiveActivity,\r\n callback: deleteIncident,\r\n });\r\n\r\n return btn;\r\n }\r\n function deleteIncident() {\r\n var popup = document.createElement('div');\r\n popup.classList.add('popup');\r\n popup.classList.add('warning');\r\n popup.setAttribute('data-popup', 'true');\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete this activity?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n deleteObjectiveActivity();\r\n // hide popup\r\n actioncenter.removeChild(popup);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n // clear active consumers\r\n // roster.clearActiveConsumers();\r\n // re-get Users with remaining goals\r\n getConsumersWithRemainingGoals();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n // hide popup\r\n actioncenter.removeChild(popup);\r\n // overlay.hide()\r\n // bodyScrollLock.enableBodyScroll(popup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n popup.appendChild(message);\r\n popup.appendChild(btnWrap);\r\n\r\n // show overlay\r\n overlay.show();\r\n // show popup\r\n actioncenter.appendChild(popup);\r\n // disable scrolling\r\n bodyScrollLock.disableBodyScroll(popup);\r\n }\r\n function buildCardDetails(editData) {\r\n detailsPopup = POPUP.build({\r\n classNames: ['card', 'objectiveDetails'],\r\n });\r\n\r\n if (editData) {\r\n editData = editData[0];\r\n personId = selectedConsumerId;\r\n objectiveId = editData.Objective_ID;\r\n objdate = currDate;\r\n let lastEditedTime = editData.Last_Update.split(' ')[1];\r\n let lastEditHH = lastEditedTime.split(':')[0];\r\n let lastEditMM = UTIL.leadingZero(lastEditedTime.split(':')[1]);\r\n lastEditedTime = `${lastEditHH}:${lastEditMM} ${editData.Last_Update.split(' ')[2]}`;\r\n\r\n var lastEditedDate = editData.Last_Update.split(' ')[0];\r\n var lastEdited = `${lastEditedDate} ${lastEditedTime}`;\r\n\r\n primaryLocationDropdown = buildPrimaryLocationDropdown(editData.Location_ID);\r\n secondaryLocationDropdown = buildSecondaryLocationDropdown(editData.Locations_Secondary_ID);\r\n resultsDropdown = buildResultsDropdown(editData.objective_success_description);\r\n promptsDropdown = buildPromptsDropdown(editData.Prompt_Type);\r\n attemptsDropdown = buildAttemptsDropdown(editData.Prompt_Number);\r\n cIDropdown = buildCommunityIntegrationDropdown(editData.community_integration_level);\r\n timeInputs = buildTimeInputs(editData.start_time, editData.end_time);\r\n noteInput = buildNoteInput(editData.Objective_Activity_Note);\r\n reviewNoteInput = buildReviewNoteInput(editData.reviewNote);\r\n notifyEmployeeCheckbox = buildNotifyCheckbox();\r\n saveBtn = buildSaveButton(true);\r\n deleteBtn = buildDeleteButton();\r\n enteredByUser = editData.submitted_by_user_id;\r\n edit__lastEditedByDetails = buildCardEnteredByDetails(enteredByUser, lastEdited);\r\n } else {\r\n primaryLocationDropdown = buildPrimaryLocationDropdown();\r\n secondaryLocationDropdown = buildSecondaryLocationDropdown();\r\n resultsDropdown = buildResultsDropdown();\r\n promptsDropdown = buildPromptsDropdown();\r\n attemptsDropdown = buildAttemptsDropdown();\r\n cIDropdown = buildCommunityIntegrationDropdown();\r\n timeInputs = buildTimeInputs();\r\n noteInput = buildNoteInput();\r\n reviewNoteInput = buildReviewNoteInput();\r\n notifyEmployeeCheckbox = buildNotifyCheckbox();\r\n saveBtn = buildSaveButton(false);\r\n deleteBtn = undefined;\r\n }\r\n\r\n \r\n if (!$.session.OutcomesReview) {\r\n reviewNoteInput.classList.add('disabled');\r\n notifyEmployeeCheckbox.classList.add('disabled');\r\n }\r\n\r\n checkShowFields();\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveBtn);\r\n if (deleteBtn) btnWrap.appendChild(deleteBtn);\r\n\r\n var timeWrap = document.createElement('div');\r\n timeWrap.appendChild(timeInputs.start);\r\n timeWrap.appendChild(timeInputs.end);\r\n\r\n detailsPopup.appendChild(primaryLocationDropdown);\r\n if (outcomesLocations.Secondary) detailsPopup.appendChild(secondaryLocationDropdown);\r\n detailsPopup.appendChild(resultsDropdown);\r\n detailsPopup.appendChild(promptsDropdown);\r\n detailsPopup.appendChild(attemptsDropdown);\r\n\r\n if ($.session.applicationName !== 'Gatekeeper') {\r\n detailsPopup.appendChild(cIDropdown);\r\n detailsPopup.appendChild(timeWrap);\r\n }\r\n\r\n detailsPopup.appendChild(noteInput);\r\n detailsPopup.appendChild(reviewNoteInput);\r\n detailsPopup.appendChild(notifyEmployeeCheckbox);\r\n detailsPopup.appendChild(btnWrap);\r\n\r\n if (editData) checkRequiredFields();\r\n if (editData) detailsPopup.appendChild(edit__lastEditedByDetails);\r\n if (editData && enteredByUser && enteredByUser.toUpperCase() !== $.session.UserId.toUpperCase()) {\r\n disableOutcomeFieldsOtherUser();\r\n btnWrap.classList.add('hidden');\r\n }\r\n\r\n POPUP.show(detailsPopup);\r\n }\r\n // card overview (old front)\r\n function buildActivityTracker(outcome) {\r\n var activities = getObjectiveActivities(outcome);\r\n var activityCount;\r\n var activityLimit = outcome.Frequency_Occurance !== '' ? parseInt(outcome.Frequency_Occurance, 10) : 0;\r\n\r\n activities = activities.filter(o => {\r\n // var type = o.split('|')[0];\r\n let isAbsent = o.split('|')[2];\r\n return isAbsent !== 'Y';\r\n });\r\n activityCount = activities.length;\r\n\r\n // set frequency modifier & path color\r\n var frequencyModifier = outcome.Frequency_Modifier.replace('OBJFM', '');\r\n var frequencySeparator;\r\n var pathColor;\r\n\r\n // color and modifier\r\n switch (frequencyModifier) {\r\n case 'AN':\r\n case 'AR':\r\n // As Needed & As Requested\r\n frequencySeparator = '>';\r\n if (activityLimit === 0 && activityCount > activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n break;\r\n } else if (activityLimit === 0 && activityCount === 0) {\r\n //no color\r\n break;\r\n }\r\n if (activityCount === activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n break;\r\n }\r\n pathColor = 'rgb(238,132,52)'; //orange\r\n break;\r\n case 'AL':\r\n // At Least\r\n frequencySeparator = '>';\r\n if (activityCount === 0 || activityCount < activityLimit) {\r\n pathColor = 'rgb(219,22,47)'; //red\r\n } else if (activityCount >= activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n }\r\n break;\r\n case 'EX':\r\n // Exactly\r\n frequencySeparator = 'of';\r\n if (activityCount === 0 || activityCount < activityLimit) {\r\n pathColor = 'rgb(219,22,47)'; //red\r\n } else if (activityCount > activityLimit) {\r\n pathColor = 'rgb(238,132,52)'; //orange\r\n } else if (activityCount === activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n }\r\n break;\r\n case 'NM':\r\n // No More Than\r\n frequencySeparator = '<';\r\n if (activityCount <= activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n } else {\r\n pathColor = 'rgb(238,132,52)'; //orange\r\n }\r\n break;\r\n case '':\r\n frequencySeparator = '';\r\n if (activityLimit === 0) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n } else if (activityCount < activityLimit) {\r\n pathColor = 'rgb(219,22,47)'; //red\r\n } else if (activityCount > activityLimit) {\r\n pathColor = 'rgb(238,132,52)'; //orange\r\n } else if (activityCount === activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // get percent complete\r\n\r\n // Dashoffset values vv\r\n // 301.635 = 0/ no circle\r\n // 0 = a full circle\r\n\r\n // var percentComplete = activityCount === 0 || activityLimit === 0 ? 0 : activityLimit / activityCount / 100;\r\n var percentComplete = activityCount === 0 || activityLimit === 0 ? 0 : activityCount / activityLimit;\r\n var dashOffset = 301.635 - percentComplete * 301.635;\r\n dashOffset = dashOffset === 0 ? 301.635 : dashOffset;\r\n // if (frequencySeparator === '') {\r\n // \tdashOffset = 0;\r\n // }\r\n if (percentComplete >= 1) {\r\n // dashOffset 0 = full circle. Anything 100% or over is a full circle\r\n dashOffset = 0;\r\n }\r\n if (activityCount > activityLimit) {\r\n dashOffset = 0;\r\n }\r\n var path2Style = `stroke-dashoffset: ${dashOffset};`;\r\n\r\n // cool circle thing\r\n var circle = document.createElement('div');\r\n circle.classList.add('progressCircle');\r\n circle.innerHTML = `\r\n \r\n \r\n \r\n \r\n ${\r\n frequencySeparator !== ''\r\n ? `

    ${activityCount} ${frequencySeparator} ${activityLimit}

    `\r\n : activityLimit > 0\r\n ? `

    ${activityCount}

    `\r\n : `

    ${activityCount}

    `\r\n }\r\n `;\r\n\r\n return circle;\r\n }\r\n function buildSuccessPopup(success) {\r\n var popup = POPUP.build({});\r\n var successPopupText = document.createElement('p');\r\n popup.appendChild(successPopupText);\r\n var successText = success.replace(/(\\r\\n|\\n|\\r)/g, '
    ');\r\n successPopupText.innerHTML += `${successText}`;\r\n POPUP.show(popup);\r\n //return popup;\r\n }\r\n function buildMethodPopup(method) {\r\n var popup = POPUP.build({});\r\n var methodPopupText = document.createElement('p');\r\n popup.appendChild(methodPopupText);\r\n var methodText = method.replace(/(\\r\\n|\\n|\\r)/g, '
    ');\r\n methodPopupText.innerHTML += `${methodText}`;\r\n POPUP.show(popup);\r\n //return popup;\r\n }\r\n function buildObjectiveActivities(outcome) {\r\n var objectiveActivities = getObjectiveActivities(outcome);\r\n var outcomeRecurrance = outcome.Objective_Recurrance;\r\n if (objectiveActivities.length === 0) return null;\r\n // if (outcome.Objective_Statement === \"\") return null;\r\n\r\n var activities = document.createElement('div');\r\n activities.classList.add('activities');\r\n\r\n objectiveActivities.forEach(activity => {\r\n activity = activity.split('|');\r\n dailyAbsent = false;\r\n let label = activity[0];\r\n let id = activity[1];\r\n let isAbsent = activity[2];\r\n var ele = document.createElement('span');\r\n if (outcomeRecurrance === 'D' && isAbsent === 'Y') {\r\n dailyAbsent = true;\r\n }\r\n ele.classList.add('activity');\r\n ele.setAttribute('data-activity-id', id);\r\n ele.innerHTML = label;\r\n activities.appendChild(ele);\r\n });\r\n //if (!dailyAbsent) {\r\n activities.addEventListener('click', event => {\r\n activityId = event.target.dataset.activityId;\r\n if (activityId) {\r\n outcomesAjax.getObjectiveActivity(activityId, function (results) {\r\n outcomesAjax.getOutcomesSuccessTypes(outcome.Goal_Type_ID, function (successTypes) {\r\n outcomesAjax.getOutcomesPrimaryAndSecondaryLocations(selectedConsumerId, currDate, function (locations) {\r\n sortSuccessTypes(successTypes);\r\n sortOutcomeLocations(locations);\r\n buildCardDetails(results);\r\n });\r\n });\r\n });\r\n }\r\n });\r\n //}\r\n return activities;\r\n }\r\n async function buildCardOverview(outcome) {\r\n if (outcome.Objective_Statement === '') return;\r\n //PERMISSIONS - if $.session.viewableGoalTypeIds does not contain this cards goal type ID, do not display the card.\r\n var hasPermission = false;\r\n $.session.viewableGoalTypeIds.forEach(id => {\r\n if (outcome.Goal_Type_ID === id) {\r\n hasPermission = true;\r\n return;\r\n }\r\n });\r\n if (!hasPermission) return false;\r\n //////////\r\n var overviewCard = document.createElement('div');\r\n overviewCard.classList.add('card', 'objectiveOverview');\r\n\r\n // card values\r\n var typeDescription = outcome.goal_type_description;\r\n var goalStatement = outcome.Objective_Statement.replace(/(\\r\\n|\\n|\\r)/g, '
    '); //outcome.Goal_Statement;\r\n var success = outcome.Success_Determination;\r\n var method = outcome.Objective_Method;\r\n var lastUpdateBy = outcome.lastUpdatedBy;\r\n\r\n // build card\r\n var description = document.createElement('h3');\r\n description.classList.add('description');\r\n description.innerHTML = typeDescription;\r\n\r\n var editIconBtn = button.build({\r\n icon: 'edit',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n addServicesForm.init(selectedConsume, outcome.Objective_id, 0);\r\n },\r\n });\r\n\r\n var statement = document.createElement('p');\r\n statement.classList.add('statement');\r\n statement.innerHTML = goalStatement;\r\n var lastUpdated = document.createElement('div');\r\n lastUpdated.classList.add('lastUpdated');\r\n if (lastUpdateBy !== '') {\r\n lastUpdated.innerHTML = `\r\n

    Last update by ${lastUpdateBy.split(' ')[0]} ${lastUpdateBy.split(' ')[1]}

    \r\n

    on ${UTIL.formatDateFromIso(lastUpdateBy.split(' ')[2])}

    \r\n `;\r\n } else {\r\n lastUpdated.innerHTML = ``;\r\n }\r\n\r\n // activity tracker\r\n var activityTracker = buildActivityTracker(outcome);\r\n // btns\r\n var newBtn = button.build({\r\n text: 'New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'outcomeNew',\r\n callback: function () {\r\n outcomesAjax.getOutcomesSuccessTypes(outcome.Goal_Type_ID, function (successTypes) {\r\n outcomesAjax.getOutcomesPrimaryAndSecondaryLocations(selectedConsumerId, currDate, function (locations) {\r\n defaultObjLocationId = outcome.objLocationId;\r\n defaultGoalLocationId = outcome.Location_ID;\r\n sortSuccessTypes(successTypes);\r\n sortOutcomeLocations(locations);\r\n buildCardDetails();\r\n initSaveData(outcome);\r\n successType = null;\r\n successDetails = null;\r\n disableNewOutcomeFields();\r\n });\r\n });\r\n },\r\n });\r\n var successBtn = button.build({\r\n text: 'Success',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n var popup = buildSuccessPopup(success);\r\n POPUP.show(popup);\r\n },\r\n });\r\n var methodBtn = button.build({\r\n text: 'Method',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n var popup = buildMethodPopup(method);\r\n POPUP.show(popup);\r\n },\r\n });\r\n dailyAbsent = false;\r\n var objectiveActivities = buildObjectiveActivities(outcome);\r\n\r\n //const result = await outcomesAjax.isNewBtnDisabledByPlanHistory(\r\n // selectedConsumerId,\r\n // outcome.goal_id,\r\n // outcome.Objective_id,\r\n // );\r\n // const { isNewBtnDisabledByPlanHistoryResult } = result;\r\n\r\n // if (dailyAbsent || isNewBtnDisabledByPlanHistoryResult[0].isNewDisabled == 'true') {\r\n // newBtn.classList.add('disabled');\r\n // }\r\n\r\n var successMethodWrap = document.createElement('div');\r\n successMethodWrap.classList.add('btnWrap');\r\n if (success !== '') successMethodWrap.appendChild(successBtn);\r\n if (method !== '') successMethodWrap.appendChild(methodBtn);\r\n\r\n var wrap1 = document.createElement('div');\r\n wrap1.classList.add('row', 'progressAndNew');\r\n wrap1.appendChild(activityTracker);\r\n wrap1.appendChild(newBtn);\r\n\r\n var wrapEdit = document.createElement('div');\r\n wrapEdit.classList.add('editBtnWrap');\r\n wrapEdit.appendChild(description);\r\n if ($.session.UpdateServices == true) {\r\n wrapEdit.appendChild(editIconBtn);\r\n }\r\n overviewCard.appendChild(wrapEdit);\r\n overviewCard.appendChild(wrap1);\r\n overviewCard.appendChild(statement);\r\n overviewCard.appendChild(successMethodWrap);\r\n if (objectiveActivities) overviewCard.appendChild(objectiveActivities);\r\n if (lastUpdateBy !== '') overviewCard.appendChild(lastUpdated);\r\n\r\n return overviewCard;\r\n }\r\n function buildCardEnteredByDetails(enteredBy, lastUpdatedDate) {\r\n let txtArea = document.createElement('p');\r\n txtArea.classList.add('enteredByDetail');\r\n txtArea.innerHTML = `Entered By: ${enteredBy}
    Last Updated: ${lastUpdatedDate}`;\r\n return txtArea;\r\n }\r\n // main card\r\n function buildCardContainer(consumer) {\r\n OUTCOMES_SECTION.innerHTML = '';\r\n\r\n consumer.card.classList.remove('highlighted');\r\n var clone = consumer.card.cloneNode(true);\r\n var card = buildConsumerCard(clone, consumer.id);\r\n\r\n OUTCOMES_SECTION.appendChild(card);\r\n\r\n return OUTCOMES_SECTION;\r\n }\r\n\r\n // Populate Outcome Card\r\n //------------------------------------\r\n function populateNoFreqOutcomes(outcomes) {\r\n // aka NONE\r\n var section = document.getElementById('no frequency');\r\n section.innerHTML = '';\r\n outcomes.forEach(async oc => {\r\n var card = await buildCardOverview(oc);\r\n if (card) section.appendChild(card);\r\n });\r\n }\r\n function populateHourlyOutcomes(outcomes) {\r\n var section = document.getElementById('hourly');\r\n section.innerHTML = '';\r\n outcomes.forEach(async oc => {\r\n var card = await buildCardOverview(oc);\r\n if (card) section.appendChild(card);\r\n });\r\n }\r\n function populateDailyOutcomes(outcomes) {\r\n var section = document.getElementById('daily');\r\n section.innerHTML = '';\r\n outcomes.forEach(async oc => {\r\n var card = await buildCardOverview(oc);\r\n if (card) section.appendChild(card);\r\n });\r\n }\r\n function populateWeeklyOutcomes(outcomes) {\r\n var section = document.getElementById('weekly');\r\n section.innerHTML = '';\r\n outcomes.forEach(async oc => {\r\n var card = await buildCardOverview(oc);\r\n if (card) section.appendChild(card);\r\n });\r\n }\r\n function populateMonthlyOutcomes(outcomes) {\r\n var section = document.getElementById('monthly');\r\n section.innerHTML = '';\r\n outcomes.forEach(async oc => {\r\n var card = await buildCardOverview(oc);\r\n if (card) section.appendChild(card);\r\n });\r\n }\r\n function populateYearlyOutcomes(outcomes) {\r\n var section = document.getElementById('yearly');\r\n section.innerHTML = '';\r\n outcomes.forEach(async oc => {\r\n var card = await buildCardOverview(oc);\r\n if (card) section.appendChild(card);\r\n });\r\n }\r\n\r\n function populateOutcomes(od) {\r\n outcomesData = sortOutcomesAlpha(od);\r\n var sections = [];\r\n var noFreqOutcomes = outcomesData['NF'];\r\n var hourlyOutcomes = outcomesData['H'];\r\n var dailyOutcomes = outcomesData['D'];\r\n var weeklyOutcomes = outcomesData['W'];\r\n var monthlyOutcomes = outcomesData['M'];\r\n var yearlyOutcomes = outcomesData['Y'];\r\n\r\n if (noFreqOutcomes) sections.push('No Frequency');\r\n if (hourlyOutcomes) sections.push('Hourly');\r\n if (dailyOutcomes) sections.push('Daily');\r\n if (weeklyOutcomes) sections.push('Weekly');\r\n if (monthlyOutcomes) sections.push('Monthly');\r\n if (yearlyOutcomes) sections.push('Yearly');\r\n\r\n //currentSection\r\n var defaultActiveSection;\r\n sections.forEach((sec, index) => {\r\n if (sec === currentSection) defaultActiveSection = index;\r\n });\r\n\r\n defaultActiveSection = defaultActiveSection ? defaultActiveSection : 0;\r\n currentSection = sections[defaultActiveSection];\r\n\r\n OUTCOMES_SECTION.innerHTML = '';\r\n var outcomeTabs = tabs.build({\r\n sections,\r\n active: defaultActiveSection,\r\n tabNavCallback: function (data) {\r\n currentSection = data.activeSection;\r\n setUpOutcomesTabSpans();\r\n },\r\n });\r\n OUTCOMES_SECTION.appendChild(outcomeTabs);\r\n\r\n if (noFreqOutcomes) populateNoFreqOutcomes(noFreqOutcomes);\r\n if (hourlyOutcomes) populateHourlyOutcomes(hourlyOutcomes);\r\n if (dailyOutcomes) populateDailyOutcomes(dailyOutcomes);\r\n if (weeklyOutcomes) populateWeeklyOutcomes(weeklyOutcomes);\r\n if (monthlyOutcomes) populateMonthlyOutcomes(monthlyOutcomes);\r\n if (yearlyOutcomes) populateYearlyOutcomes(yearlyOutcomes);\r\n setUpOutcomesTabSpans();\r\n }\r\n\r\n //Handle navigation from dashboard widget to module\r\n function dashHandler(myconsumerId) {\r\n let myval = { id: '34275', card: 'div.consumerCard.consumer-selected.highlighted' };\r\n selectedConsumerId = '34275';\r\n currDate = '2020-03-30';\r\n consumerName = 'Joe Meyer';\r\n daysBack = '13';\r\n\r\n loadCardView(myval);\r\n }\r\n\r\n async function loadCardView(selectedConsumer, displayPlanViewPopup) {\r\n // DOM.scrollToTopOfPage();\r\n selectedConsume = selectedConsumer;\r\n DOM.clearActionCenter();\r\n clearBackCardValues();\r\n //Filter and date wrap\r\n var topFilterDateWrap = document.createElement('div');\r\n topFilterDateWrap.classList.add('topOutcomeWrap');\r\n //Date Input\r\n var date_Input = document.querySelector('.dateInput');\r\n if (!date_Input) {\r\n dateInput = buildDateInput();\r\n topFilterDateWrap.appendChild(dateInput);\r\n }\r\n\r\n reportsBtn = button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: function () {\r\n const filterValues = {\r\n outcomesService: currService ? currService : 'All',\r\n outcomesType: currOutcomeId ? currOutcomeId : '0',\r\n outcomesConsumer: selectedConsumerId,\r\n outcomesDate: currDate,\r\n };\r\n\r\n generateReports.showReportsPopup([\r\n { text: 'Documentation - Completed With Percentages', filterValues },\r\n { text: 'Outcome Activity - With Community Integration by Employee, Consumer, Date', filterValues },\r\n ]);\r\n },\r\n });\r\n editOutcomeBtn = button.build({\r\n text: 'EDIT OUTCOMES/SERVICES',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: () => {\r\n if (!editOutcomeBtn.classList.contains('disabled')) {\r\n addEditOutcomeServices.init(selectedConsume);\r\n }\r\n },\r\n });\r\n reviewOutcomesBtn = button.build({\r\n text: 'REVIEW OUTCOMES/SERVICES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n outcomesReview.init({\r\n consumer: selectedConsumerObj,\r\n consumerName: consumerName,\r\n date: currDate,\r\n allowedConsumerIds: allowedConsumerIds,\r\n });\r\n },\r\n });\r\n\r\n let buttonName = 'VIEW PLAN';\r\n if ($.session.UpdatePlan) buttonName = 'VIEW/UPDATE PLAN';\r\n\r\n viewPlanBtn = button.build({\r\n text: buttonName,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n if (!viewPlanBtn.classList.contains('disabled')) {\r\n planViewPOPUP();\r\n }\r\n },\r\n });\r\n topFilterDateWrap.appendChild(editOutcomeBtn);\r\n if ($.session.OutcomesReview) {\r\n topFilterDateWrap.appendChild(reviewOutcomesBtn);\r\n }\r\n\r\n if (\r\n $.session.InsertOutcomes == true ||\r\n $.session.UpdateOutcomes == true ||\r\n $.session.InsertServices == true ||\r\n $.session.UpdateServices == true\r\n ) {\r\n editOutcomeBtn.classList.remove('disabled');\r\n } else {\r\n editOutcomeBtn.classList.add('disabled');\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n topFilterDateWrap.appendChild(reportsBtn);\r\n }\r\n\r\n const showPopup = await outcomesAjax.getPlanbyConsumerHistory(selectedConsumerId);\r\n const { getPlanbyConsumerHistoryResult } = showPopup;\r\n\r\n if (getPlanbyConsumerHistoryResult[0].isPlanAvailable == 'true') {\r\n if (displayPlanViewPopup !== 'false' && $.session.RequireViewPlan) planViewPOPUP(); \r\n if ($.session.RequireViewPlan) topFilterDateWrap.appendChild(viewPlanBtn);\r\n //viewPlanBtn.classList.remove('disabled');\r\n }\r\n else {\r\n //planViewPOPUP(); \r\n if ($.session.RequireViewPlan) topFilterDateWrap.appendChild(viewPlanBtn);\r\n // viewPlanBtn.classList.add('disabled');\r\n }\r\n \r\n const result = await outcomesAjax.isViewPlabBtnDisabled(selectedConsumerId);\r\n const { isViewPlabBtnDisabledResult } = result;\r\n\r\n if (isViewPlabBtnDisabledResult[0].isPlanAvailable == 'false' && !$.session.UpdatePlan) {\r\n viewPlanBtn.classList.add('disabled');\r\n }\r\n\r\n if (!document.querySelector('.topOutcomeWrap')) {\r\n DOM.ACTIONCENTER.appendChild(topFilterDateWrap);\r\n }\r\n\r\n var documentingForDiv = document.createElement('div');\r\n documentingForDiv.innerHTML = `

    Documenting for: ${consumerName}

    `;\r\n DOM.ACTIONCENTER.appendChild(documentingForDiv);\r\n\r\n var dayBackDateSpanWrap = document.createElement('div');\r\n dayBackDateSpanWrap.classList.add('dayBackDateSpanWrap');\r\n //Days back message\r\n var daysBackDiv = document.createElement('div');\r\n daysBackDiv.innerHTML = `

    You can document up to ${daysBack} days back

    `;\r\n dayBackDateSpanWrap.appendChild(daysBackDiv);\r\n\r\n DOM.ACTIONCENTER.appendChild(dayBackDateSpanWrap);\r\n\r\n const filteredBy = updateCurrentFilterDisplay();\r\n DOM.ACTIONCENTER.appendChild(filteredBy);\r\n\r\n //Main section & tabs\r\n var outcomesTabs = buildCardContainer(selectedConsumer);\r\n DOM.ACTIONCENTER.appendChild(outcomesTabs);\r\n\r\n //Build and populate card overview\r\n const goalsResp = await outcomesAjax.getGoalsAsync(selectedConsumerId, currDate);\r\n loadOutcomesCards(goalsResp);\r\n }\r\n function loadOutcomesCards(results) {\r\n sortOutcomes(results);\r\n populateOutcomes(outcomesDataObj);\r\n }\r\n\r\n function sortOutcomesAlpha(outcomesData) {\r\n Object.keys(outcomesData).forEach(occur => {\r\n outcomesData[occur].sort((a, b) =>\r\n a.goal_type_description.toUpperCase() > b.goal_type_description.toUpperCase()\r\n ? 1\r\n : a.goal_type_description.toUpperCase() === b.goal_type_description.toUpperCase()\r\n ? a.Objective_Statement.toUpperCase() > b.Objective_Statement.toUpperCase()\r\n ? 1\r\n : -1\r\n : -1,\r\n );\r\n });\r\n return outcomesData;\r\n }\r\n\r\n function buildAllowedConsumersObj(userIdsWithGoals, userIdsWithRemainingGoals) {\r\n var remainingGoalsIds = {};\r\n userIdsWithGoals.forEach(user => {\r\n userIdsWithRemainingGoals.every(userReminingGoal => {\r\n if (user.id === userReminingGoal.ID) {\r\n remainingGoalsIds[user.id] = true;\r\n return false;\r\n } else {\r\n remainingGoalsIds[user.id] = false;\r\n return true;\r\n }\r\n });\r\n });\r\n\r\n var consumerIds = userIdsWithGoals.map(userId => {\r\n var showAlert = remainingGoalsIds[parseInt(userId.id)];\r\n return {\r\n consumer_id: userId.id,\r\n showAlertIcon: showAlert,\r\n };\r\n });\r\n allowedConsumerIds = consumerIds;\r\n\r\n roster2.setAllowedConsumers(consumerIds);\r\n if (initLoad) {\r\n roster2.miniRosterinit(null, {\r\n hideDate: true,\r\n });\r\n roster2.showMiniRoster({\r\n hideDate: true,\r\n });\r\n }\r\n }\r\n\r\n function getConsumersWithRemainingGoals() {\r\n var getUserIdPromise = new Promise(function (resolve, reject) {\r\n outcomesAjax.getUserIdsWithGoalsByDate(currDate, res => {\r\n userIdsWithGoals = res;\r\n resolve('success');\r\n });\r\n });\r\n var getRemainingDailyGoalsPromise = new Promise(function (resolve, reject) {\r\n outcomesAjax.getRemainingDailyGoals(currDate, res => {\r\n userIdsWithRemainingGoals = res;\r\n resolve('success');\r\n });\r\n });\r\n\r\n Promise.all([getUserIdPromise, getRemainingDailyGoalsPromise]).then(function () {\r\n buildAllowedConsumersObj(userIdsWithGoals, userIdsWithRemainingGoals);\r\n });\r\n }\r\n\r\n async function planViewPOPUP() {\r\n viewPlanPOPUP = POPUP.build({\r\n hideX: false, \r\n });\r\n\r\n planNow = button.build({\r\n text: 'READ AND ACKNOWLEDGE PLAN NOW',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'planNowBtn',\r\n callback: async () => {\r\n await savePlanNow(isViewedAvailableOSPlan);\r\n POPUP.hide(viewPlanPOPUP);\r\n },\r\n });\r\n\r\n planLater = button.build({\r\n text: 'READ AND ACKNOWLEDGE PLAN LATER',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n await savePlanLater();\r\n POPUP.hide(viewPlanPOPUP);\r\n },\r\n });\r\n\r\n planUpdate = button.build({\r\n text: 'UPDATE PLAN',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n planUpdatePOPUP();\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n planNow.style.width = '100%';\r\n planLater.style.width = '100%';\r\n planUpdate.style.width = '100%';\r\n message.innerText =\r\n \"A new ISP is available for viewing for this individual. You are required to acknowledge that you've read this plan before documenting for services. Would you like to read the plan now or later? \";\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n viewPlanPOPUP.appendChild(message);\r\n viewPlanPOPUP.appendChild(planNow);\r\n\r\n const result = await outcomesAjax.getPlanHistorybyConsumer(selectedConsumerId);\r\n const { getPlanHistorybyConsumerResult } = result;\r\n\r\n // if isPlanAvailable = TRUE -- then either history table doesnt have this attachment or history table has attachment and it hasn't been viewed \r\n if (getPlanHistorybyConsumerResult[0].isPlanAvailable == 'true' ) {\r\n viewPlanPOPUP.appendChild(planLater);\r\n if (getPlanHistorybyConsumerResult[0].isPlanLaterDisable == 'true') {\r\n planLater.classList.add('disabled'); \r\n\r\n } else {\r\n planLater.classList.remove('disabled');\r\n //viewPlanPOPUP.appendChild(planLater);\r\n }\r\n } else {\r\n\r\n }\r\n\r\n // if isViewedAvailableOSPlan = TRUE -- history table has attachment and it has been viewed\r\n if (getPlanHistorybyConsumerResult[0].isViewedAvailableOSPlan == 'true' ) {\r\n\r\n const planNowBtn = viewPlanPOPUP.getElementsByClassName('planNowBtn')[0];\r\n planNowBtn.innerHTML = 'READ CURRENT PLAN';\r\n isViewedAvailableOSPlan = 'true';\r\n message.style.display = 'none';\r\n const closePopupBtn = viewPlanPOPUP.getElementsByClassName('closePopupBtn')[0];\r\n closePopupBtn.style.display = 'inline';\r\n\r\n } else {\r\n\r\n isViewedAvailableOSPlan = 'false';\r\n }\r\n\r\n if ($.session.UpdatePlan) viewPlanPOPUP.appendChild(planUpdate);\r\n\r\n const resultCheckPlan = await outcomesAjax.isViewPlabBtnDisabled(selectedConsumerId);\r\n const { isViewPlabBtnDisabledResult } = resultCheckPlan;\r\n\r\n if (isViewPlabBtnDisabledResult[0].isPlanAvailable == 'false' && $.session.UpdatePlan) {\r\n message.style.display = 'none';\r\n planNow.style.display = 'none';\r\n planLater.style.display = 'none';\r\n // viewPlanPOPUP.closePopupBtn.display = 'none'\r\n const closePopupBtn = viewPlanPOPUP.getElementsByClassName('closePopupBtn')[0];\r\n closePopupBtn.style.display = 'inline';\r\n\r\n \r\n\r\n\r\n } else {\r\n const closePopupBtn = viewPlanPOPUP.getElementsByClassName('closePopupBtn')[0];\r\n closePopupBtn.style.display = 'none';\r\n\r\n if (getPlanHistorybyConsumerResult[0].isViewedAvailableOSPlan == 'true' ) {\r\n\r\n const planNowBtn = viewPlanPOPUP.getElementsByClassName('planNowBtn')[0];\r\n planNowBtn.innerHTML = 'READ CURRENT PLAN';\r\n isViewedAvailableOSPlan = 'true';\r\n message.style.display = 'none';\r\n const closePopupBtn = viewPlanPOPUP.getElementsByClassName('closePopupBtn')[0];\r\n closePopupBtn.style.display = 'inline';\r\n \r\n } else {\r\n \r\n const planNowBtn = viewPlanPOPUP.getElementsByClassName('planNowBtn')[0];\r\n planNowBtn.innerHTML = 'READ AND ACKNOWLEDGE PLAN NOW';\r\n isViewedAvailableOSPlan = 'false';\r\n }\r\n }\r\n POPUP.show(viewPlanPOPUP);\r\n }\r\n\r\n async function savePlanLater() {\r\n const saveData = {\r\n token: $.session.Token,\r\n consumerId: selectedConsumerId,\r\n };\r\n outcomesAjax.addOutcomePlanLater(saveData);\r\n }\r\n\r\n async function savePlanNow(isViewedAvailableOSPlan) {\r\n outcomesAjax.addOutcomePlanNow(selectedConsumerId, isViewedAvailableOSPlan);\r\n }\r\n\r\n function planUpdatePOPUP() {\r\n updatePlanPOPUP = POPUP.build({\r\n classNames: ['updatePlanPOPUP'],\r\n hideX: true,\r\n });\r\n\r\n //inputs\r\n newStartDate = input.build({\r\n id: 'newStartDate',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n });\r\n\r\n newEndDate = input.build({\r\n id: 'newEndDate',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n });\r\n\r\n APPLY_BTN = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n CANCEL_BTN = button.build({\r\n text: 'CANCEL',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var popupDateWrap = document.createElement('div');\r\n popupDateWrap.classList.add('btnWrap');\r\n newStartDate.style.width = '49%';\r\n newEndDate.style.width = '49%';\r\n popupDateWrap.appendChild(newStartDate);\r\n popupDateWrap.appendChild(newEndDate);\r\n updatePlanPOPUP.appendChild(popupDateWrap);\r\n\r\n const newAttachmentList = document.createElement('div');\r\n newAttachmentList.classList.add('newAttachmentList');\r\n const newAttachmentsHeader = document.createElement('h5');\r\n newAttachmentsHeader.innerText = 'Attachments to be added:';\r\n newAttachmentList.appendChild(newAttachmentsHeader);\r\n updatePlanPOPUP.appendChild(newAttachmentList);\r\n\r\n attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.classList.add('input-field__input', 'attachmentInput');\r\n attachmentInput.addEventListener('change', evt => fileValidation(evt.target));\r\n attachmentInput.style.marginBottom = '15px';\r\n updatePlanPOPUP.appendChild(attachmentInput);\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(APPLY_BTN);\r\n popupbtnWrap.appendChild(CANCEL_BTN);\r\n updatePlanPOPUP.appendChild(popupbtnWrap);\r\n\r\n POPUP.hide(viewPlanPOPUP);\r\n POPUP.show(updatePlanPOPUP);\r\n PopupEventListeners();\r\n checkRequiredFieldsOfPopup();\r\n }\r\n\r\n // checks file is a valid type\r\n function fileValidation(target) {\r\n const fileType = target.files[0].type;\r\n const reFileTypeTest = new RegExp('(audio/)|(video/)');\r\n if (reFileTypeTest.test(fileType)) {\r\n alert('Anywhere currently does not accept audio or video files');\r\n target.value = '';\r\n return false;\r\n }\r\n checkRequiredFieldsOfPopup();\r\n }\r\n\r\n function PopupEventListeners() {\r\n newStartDate.addEventListener('input', event => {\r\n startDate = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n newEndDate.addEventListener('input', event => {\r\n endDate = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', async () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n // ADD ATTACHMENTS\r\n const attachmentInputs = document.querySelectorAll('.attachmentInput');\r\n if (attachmentInputs.length === 0) {\r\n console.log('no attachments to add');\r\n return;\r\n }\r\n\r\n let attachmentProms = [];\r\n let attachmentArray = [];\r\n attachmentInputs.forEach(inputElement => {\r\n if (inputElement.value === '') {\r\n return;\r\n }\r\n const attPromise = new Promise(resolve => {\r\n const attachmentObj = {};\r\n const attachmentFile = inputElement.files.item(0);\r\n const attachmentName = attachmentFile.name;\r\n const attachmentType = attachmentFile.name.split('.').pop();\r\n attachmentObj.description = attachmentName;\r\n attachmentObj.type = attachmentType;\r\n // new Response(file) was added for Safari compatibility\r\n new Response(attachmentFile).arrayBuffer().then(res => {\r\n attachmentObj.arrayBuffer = res;\r\n attachmentArray.push(attachmentObj);\r\n resolve();\r\n });\r\n });\r\n\r\n attachmentProms.push(attPromise);\r\n });\r\n\r\n await Promise.all(attachmentProms);\r\n await saveAttachmentsToDB(attachmentArray);\r\n\r\n POPUP.hide(updatePlanPOPUP);\r\n POPUP.hide(viewPlanPOPUP);\r\n }\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(updatePlanPOPUP);\r\n POPUP.show(viewPlanPOPUP);\r\n });\r\n }\r\n\r\n async function saveAttachmentsToDB(attachmentArray) {\r\n if (attachmentArray.length === 0) return;\r\n attachmentArray.forEach(attachment => {\r\n const saveProm = new Promise(resolve => {\r\n const saveData = {\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n consumerId: selectedConsumerId,\r\n attachmentType: attachment.description,\r\n attachment: attachment.arrayBuffer,\r\n startDate: startDate,\r\n endDate: endDate,\r\n };\r\n outcomesAjax.addOutcomePlan(saveData);\r\n });\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfPopup() {\r\n var startDate = newStartDate.querySelector('#newStartDate');\r\n var endDate = newEndDate.querySelector('#newEndDate');\r\n const attachmentInputs = document.querySelectorAll('.attachmentInput');\r\n\r\n if (attachmentInputs[0].value == '') {\r\n attachmentInput.classList.add('errorPopup');\r\n } else {\r\n attachmentInput.classList.remove('errorPopup');\r\n }\r\n if (startDate.value === '') {\r\n newStartDate.classList.add('errorPopup');\r\n } else {\r\n newStartDate.classList.remove('errorPopup');\r\n }\r\n\r\n if (endDate.value === '' || (startDate.value != '' && startDate.value > endDate.value)) {\r\n newEndDate.classList.add('errorPopup');\r\n } else {\r\n newEndDate.classList.remove('errorPopup');\r\n } \r\n setBtnStatusOfPopup();\r\n }\r\n\r\n function setBtnStatusOfPopup() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function loadLandingPage() {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n PROGRESS.SPINNER.show('Loading Outcomes...');\r\n\r\n OUTCOMES_SECTION = document.createElement('div');\r\n OUTCOMES_SECTION.classList.add('outcomes');\r\n\r\n DOM.ACTIONCENTER.appendChild(OUTCOMES_SECTION);\r\n\r\n currDate = UTIL.getTodaysDate();\r\n outcomesAjax.getViewableGoalIdsByPermission(getConsumersWithRemainingGoals);\r\n }\r\n\r\n function init() {\r\n initLoad = true;\r\n loadLandingPage();\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n dashHandler,\r\n init,\r\n backToOutcomeLoad,\r\n getAllowedConsumerIds,\r\n getDropdownValues,\r\n getDataForOverview,\r\n };\r\n})();\r\n","const outcomesAjax = (function () {\r\n function deleteGoal(activityId, consumerId, goalDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteGoal/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"activityId\":\"' + activityId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function getGoals(consumerId, goalDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalsByDateNew/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + consumerId + '\", \"goalDate\":\"' + goalDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getGoalsByDateNewResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n async function getGoalsAsync(consumerId, goalDate) {\r\n const retrieveData = {\r\n consumerId,\r\n goalDate,\r\n token: $.session.Token,\r\n };\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalsByDateNew/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getGoalsByDateNewResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n function getGoalSpecificLocationInfo(activityId, goalId, objId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalSpecificLocationInfoJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"activityId\":\"' + activityId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getGoalSpecificLocationInfoJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getIdsWithGoals(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getUserIdsWithGoalsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getUserIdsWithGoalsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getUserIdsWithGoalsByDate(goalsCheckDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getUserIdsWithGoalsByDateJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"goalsCheckDate\":\"' + goalsCheckDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getUserIdsWithGoalsByDateJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getDaysBackForEditingGoalsAndUseConsumerLocation(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDaysBackForEditingGoalsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getDaysBackForEditingGoalsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getViewableGoalIdsByPermission(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getViewableGoalIdsByPermissionJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getViewableGoalIdsByPermissionJSONResult;\r\n res.forEach(function ashLikesThisLoop(element, i) {\r\n $.session.viewableGoalTypeIds.push(element.ID);\r\n });\r\n callback();\r\n },\r\n });\r\n }\r\n function getRemainingDailyGoals(checkDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getRemainingDailyGoalsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"checkDate\":\"' + checkDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getRemainingDailyGoalsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getGoalsCommunityIntegrationLevelDropdown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalsCommunityIntegrationLevelJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getGoalsCommunityIntegrationLevelJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n //Get whether or not community integration is required.\r\n function getGoalsCommunityIntegrationRequired(callback) {\r\n //Brad\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalsCommunityIntegrationRequiredJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var results = ''; //JSON.parse(response.getGoalsCommunityIntegrationRequiredResult);\r\n var res = response.getGoalsCommunityIntegrationRequiredJSONResult;\r\n\r\n if (res.length) {\r\n if (res[0].Setting_Value == 'Y') {\r\n $.session.communityIntegrityRequired = true;\r\n } else {\r\n $.session.communityIntegrityRequired = false;\r\n }\r\n } else {\r\n $.session.communityIntegrityRequired = 'n/a';\r\n }\r\n\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getOutcomeTypeForFilter(data, callback) {\r\n // data = {consumerId, selectedDate, token}\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomeTypeForFilterJSON/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var results = response.getOutcomeTypeForFilterJSONResult;\r\n callback(results);\r\n },\r\n });\r\n }\r\n //function getConsumerTableConsumerLocation(consumerId) {\r\n //\tdata = {\r\n //\t\ttoken: $.session.Token,\r\n //\t\tconsumerId: consumerId,\r\n //\t};\r\n //\t$.ajax({\r\n //\t\ttype: 'POST',\r\n //\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getConsumerTableConsumerLocation/',\r\n //\t\tdata: JSON.stringify(data),\r\n //\t\tcontentType: 'application/json; charset=utf-8',\r\n //\t\tdataType: 'json',\r\n //\t\tsuccess: function(response, status, xhr) {\r\n //\t\t\tdata = response.getConsumerTableConsumerLocationResult;\r\n //\t\t\t$.session.consumerTableConsumerLocationId = data[0].locationId;\r\n //\t\t\t$.session.consumerTableConsumerLocationName = data[0].description;\r\n //\t\t},\r\n //\t\terror: function(xhr, status, error) {\r\n //\t\t\talert('Error\\n-----\\n' + xhr.status + '\\n' + xhr.responseText);\r\n //\t\t},\r\n //\t});\r\n //}\r\n function saveGoals(data, callback) {\r\n data = {\r\n token: $.session.Token,\r\n objectiveId: data.objectiveId,\r\n activityId: data.activityId,\r\n date: data.objdate,\r\n success: data.success,\r\n goalnote: data.goalnote,\r\n promptType: data.promptType,\r\n promptNumber: data.promptNumber,\r\n locationId: data.locationId,\r\n locationSecondaryId: data.locationSecondaryId,\r\n goalStartTime: data.goalStartTime,\r\n goalEndTime: data.goalEndTime,\r\n goalCILevel: data.goalCILevel,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveGoal/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n\r\n if (!response.saveGoalResult.match('Error')) {\r\n callback(res);\r\n } else {\r\n alert('Outcome could not be saved. Please verify your start time, end time, and all other data.');\r\n }\r\n },\r\n });\r\n }\r\n function getObjectiveActivity(objectiveActivityId, callback) {\r\n data = {\r\n objectiveActivityId: objectiveActivityId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getObjectiveActivity/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getObjectiveActivityResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getOutcomesPrompts(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomesPrompts/',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getOutcomesPromptsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getOutcomesSuccessTypes(goalTypeId, callback) {\r\n data = {\r\n goalTypeId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomesSuccessTypes/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getOutcomesSuccessTypesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getOutcomesPrimaryAndSecondaryLocations(consumerId, goalDate, callback) {\r\n data = {\r\n consumerId,\r\n goalDate,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomesPrimaryAndSecondaryLocations/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getOutcomesPrimaryAndSecondaryLocationsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getSuccessSymbols(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSuccessSymbolLookup/',\r\n // data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSuccessSymbolLookupResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n\r\n async function getOutcomeServicsPageData(retrieveData) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomeServicsPageData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getOutcomeServicsPageDataResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getOutcomeTypeDropDownAsync(selectedConsumer, effectiveDateStart) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomeTypeDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: selectedConsumer.id,\r\n effectiveDateStart,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getOutcomeServiceDropDownAsync(selectedConsumerId, startDate) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomeServiceDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: selectedConsumerId,\r\n effectiveDateStart: startDate,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getGoalEntriesByIdAsync(goalId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalEntriesById/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"goalId\":\"' + goalId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getObjectiveEntriesByIdAsync(objectiveId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getObjectiveEntriesById/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"objectiveId\":\"' + objectiveId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getServiceFrequencyTypeDropDownAsync(Type) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceFrequencyTypeDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n type: Type,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertOutcomeInfoAsync(\r\n startDate,\r\n endDate,\r\n outcomeType,\r\n outcomeStatement,\r\n userID,\r\n goalId,\r\n consumerId,\r\n location,\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertOutcomeInfo/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n startDate: startDate,\r\n endDate: endDate,\r\n outcomeType: outcomeType,\r\n outcomeStatement: outcomeStatement,\r\n userID: userID,\r\n goalId: goalId,\r\n consumerId: consumerId,\r\n location: location,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertOutcomeServiceInfoAsync(\r\n startDate,\r\n endDate,\r\n outcomeType,\r\n servicesStatement,\r\n ServiceType,\r\n method,\r\n success,\r\n frequencyModifier,\r\n frequency,\r\n frequencyPeriod,\r\n userID,\r\n objectiveId,\r\n consumerId,\r\n location,\r\n duration,\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertOutcomeServiceInfo/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n startDate: startDate,\r\n endDate: endDate,\r\n outcomeType: outcomeType,\r\n servicesStatement: servicesStatement,\r\n ServiceType: ServiceType,\r\n method: method,\r\n success: success,\r\n frequencyModifier: frequencyModifier,\r\n frequency: frequency,\r\n frequencyPeriod: frequencyPeriod,\r\n userID: userID,\r\n objectiveId: objectiveId,\r\n consumerId: consumerId,\r\n location: location,\r\n duration: duration,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getLocationDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLocationDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // Review\r\n async function getReviewTableData(retrieveData) {\r\n //consumerId, objectiveDate\r\n //4365, '2024/07/01'\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomesReviewGrid/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n ...retrieveData,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return result.getOutcomesReviewGridResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n async function getReviewTableDataSecondary(retrieveData) {\r\n //consumerId, startDate, endDate, objectiveIdList\r\n //4365, '2024/07/01', '2024/10/01',\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomesReviewGridSecondary/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n ...retrieveData,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return result.getOutcomesReviewGridSecondaryResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n async function getAllGoalTypes() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAllGoalTypes/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return result.getAllGoalTypesResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n async function addReviewNote(data) {\r\n // @token\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateReviewNote/',\r\n data: JSON.stringify({token: $.session.Token, ...data}),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return result.updateReviewNoteResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n //\r\n\r\n async function addOutcomePlan(retrieveData) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(retrieveData.attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n retrieveData.attachment = abString;\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addOutcomePlan/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.addOutcomePlanResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getPlanHistorybyConsumer(selectedConsumerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanHistorybyConsumer/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + selectedConsumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPlanbyConsumerHistory(selectedConsumerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanbyConsumerHistory/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + selectedConsumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function addOutcomePlanLater(retrieveData) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addOutcomePlanLater/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.addOutcomePlanLaterResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n function addOutcomePlanNow(selectedConsumerId, isViewedAvailableOSPlan) {\r\n data = {\r\n token: $.session.Token,\r\n consumerId: selectedConsumerId,\r\n isViewedAvailableOSPlan: isViewedAvailableOSPlan,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/addOutcomePlanNow/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'consumerId');\r\n attachmentInput.setAttribute('value', selectedConsumerId);\r\n attachmentInput.id = 'consumerId';\r\n var isViewedAvailableOSPlanInput = document.createElement('input');\r\n isViewedAvailableOSPlanInput.setAttribute('name', 'isViewedAvailableOSPlan');\r\n isViewedAvailableOSPlanInput.setAttribute('value', isViewedAvailableOSPlan);\r\n isViewedAvailableOSPlanInput.id = 'isViewedAvailableOSPlan';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.appendChild(isViewedAvailableOSPlanInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n form.remove();\r\n }\r\n\r\n async function isNewBtnDisabledByPlanHistory(selectedConsumerId, goalTypeID, ObjectiveID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/isNewBtnDisabledByPlanHistory/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerId\":\"' +\r\n selectedConsumerId +\r\n '\", \"goalTypeID\":\"' +\r\n goalTypeID +\r\n '\", \"ObjectiveID\":\"' +\r\n ObjectiveID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function isViewPlabBtnDisabled(selectedConsumerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/isViewPlabBtnDisabled/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + selectedConsumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n deleteGoal,\r\n getGoals,\r\n getGoalsAsync,\r\n getGoalSpecificLocationInfo,\r\n getIdsWithGoals,\r\n getUserIdsWithGoalsByDate,\r\n getDaysBackForEditingGoalsAndUseConsumerLocation,\r\n getViewableGoalIdsByPermission,\r\n getRemainingDailyGoals,\r\n getGoalsCommunityIntegrationLevelDropdown,\r\n getGoalsCommunityIntegrationRequired,\r\n getOutcomeTypeForFilter,\r\n // getConsumerTableConsumerLocation,\r\n saveGoals,\r\n getObjectiveActivity,\r\n getOutcomesPrompts,\r\n getOutcomesSuccessTypes,\r\n getOutcomesPrimaryAndSecondaryLocations,\r\n getSuccessSymbols,\r\n getOutcomeServicsPageData,\r\n getOutcomeTypeDropDownAsync,\r\n getGoalEntriesByIdAsync,\r\n getObjectiveEntriesByIdAsync,\r\n getOutcomeServiceDropDownAsync,\r\n getServiceFrequencyTypeDropDownAsync,\r\n insertOutcomeInfoAsync,\r\n insertOutcomeServiceInfoAsync,\r\n getLocationDropDownAsync,\r\n // Review\r\n getReviewTableData,\r\n getReviewTableDataSecondary,\r\n getAllGoalTypes,\r\n addReviewNote,\r\n //\r\n addOutcomePlan,\r\n getPlanHistorybyConsumer,\r\n addOutcomePlanLater,\r\n addOutcomePlanNow,\r\n isNewBtnDisabledByPlanHistory,\r\n isViewPlabBtnDisabled,\r\n getPlanbyConsumerHistory,\r\n };\r\n})();\r\n","const outcomesReview = (function () {\r\n // Data\r\n let selectedConsumerId;\r\n let selectedConsumerCard;\r\n let selectedDate;\r\n let outcomesData;\r\n let outcomesDataRaw;\r\n let outcomesDataSecondaryRaw;\r\n let exclamationIds;\r\n let exclamationSecondaryIds;\r\n let exclamationDateMap;\r\n let timesDocByDate;\r\n let dropdownData;\r\n let activityRes;\r\n let locations;\r\n let successTypes;\r\n let goalTypes;\r\n let tabSections;\r\n let activeTab;\r\n // Filter\r\n let filterBtn;\r\n let servBtnWrap;\r\n let serviceBtn;\r\n let serviceCloseBtn;\r\n let typeBtnWrap;\r\n let outcomeTypeBtn;\r\n let outcomeTypeCloseBtn;\r\n let serviceFilterVal;\r\n let outcomeTypeFilterVal;\r\n // Date span/days back filter\r\n let selectedDateSpan = { to: null, from: null };\r\n let unitType;\r\n let spanLength;\r\n let daysBackInput;\r\n let toDateInput;\r\n let fromDateInput;\r\n let isDaysBackFilter = true;\r\n // DOM\r\n let outcomesReviewDiv;\r\n let outcomeTabs;\r\n let detailsPopup;\r\n let reviewNotePopup;\r\n // Constants\r\n const NO_FREQ_SPAN = 7;\r\n const HOUR_SPAN = 24;\r\n const DAY_SPAN = 2;\r\n const WEEK_SPAN = 1;\r\n const MONTH_SPAN = 2;\r\n const YEAR_SPAN = 2;\r\n const NO_FREQ = 'no frequency';\r\n const HOUR = 'hourly';\r\n const DAY = 'daily';\r\n const WEEK = 'weekly';\r\n const MONTH = 'monthly';\r\n const YEAR = 'yearly';\r\n const FREQ_MAP = {\r\n 'no frequency': 'NF',\r\n hourly: 'H',\r\n daily: 'D',\r\n weekly: 'W',\r\n monthly: 'M',\r\n yearly: 'Y',\r\n };\r\n const MONTHS = {\r\n '01': 'January',\r\n '02': 'February',\r\n '03': 'March',\r\n '04': 'April',\r\n '05': 'May',\r\n '06': 'June',\r\n '07': 'July',\r\n '08': 'August',\r\n '09': 'September',\r\n 10: 'October',\r\n 11: 'November',\r\n 12: 'December',\r\n };\r\n const FREQUENCY = {\r\n OBJFMAL: 'At least',\r\n OBJFMAN: 'As needed',\r\n OBJFMAR: 'As Requested',\r\n OBJFMEX: 'Exactly',\r\n OBJFMNM: 'No more than',\r\n };\r\n const RECURRANCE = {\r\n D: 'per day',\r\n Y: 'per year',\r\n W: 'per week',\r\n M: 'per month',\r\n H: 'per hour',\r\n };\r\n\r\n function buildConsumerCard() {\r\n selectedConsumerCard.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(selectedConsumerCard);\r\n\r\n return wrap;\r\n }\r\n\r\n // Mini Roster\r\n //----------------------------------------------------\r\n async function handleActionNavEvent(target) {\r\n if (target.dataset.actionNav === 'miniRosterCancel') {\r\n DOM.toggleNavLayout();\r\n }\r\n\r\n if (target.dataset.actionNav === 'miniRosterDone') {\r\n DOM.toggleNavLayout();\r\n\r\n roster2.removeConsumerFromActiveConsumers(selectedConsumerId);\r\n\r\n const activeConsumers = roster2.getActiveConsumers();\r\n selectedConsumerId = activeConsumers[0].id;\r\n selectedConsumerCard = activeConsumers[0].card;\r\n\r\n await getReviewTableData();\r\n await getReviewTableDataSecondary();\r\n\r\n // replace consumer header\r\n const newConsumerCardHeader = buildConsumerCard();\r\n outcomesReviewDiv.replaceChild(newConsumerCardHeader, consumerCardHeader);\r\n consumerCardHeader = newConsumerCardHeader;\r\n // rebuild & populate tabs/tables\r\n const newOutcomeTabs = buildTabs();\r\n outcomesReviewDiv.replaceChild(newOutcomeTabs, outcomeTabs);\r\n outcomeTabs = newOutcomeTabs;\r\n\r\n populateTabSections();\r\n\r\n // data that is based off consumerID\r\n outcomesAjax.getDaysBackForEditingGoalsAndUseConsumerLocation(selectedConsumerId, res => {\r\n defaultPrimaryLocation = results[0].consumer_location;\r\n });\r\n outcomesAjax.getOutcomesPrimaryAndSecondaryLocations(\r\n selectedConsumerId,\r\n dates.formateToISO(selectedDate),\r\n results => sortLocations(results),\r\n );\r\n }\r\n }\r\n\r\n // Detail View Popup\r\n //----------------------------------------------------\r\n function showAddReviewNotePopup({ date, result, attempts, prompts, employeeId, activityId }) {\r\n const saveData = {\r\n objectiveActivityId: activityId,\r\n reviewNote: '',\r\n consumerId: selectedConsumerId,\r\n objectiveActivityDate: date.split(' ')[0],\r\n notifyEmployee: 'N',\r\n };\r\n\r\n reviewNotePopup = POPUP.build({\r\n id: 'reviewNotePopup',\r\n hideX: true,\r\n });\r\n\r\n const header = _DOM.createElement('div', { class: ['reviewNoteHeader'] });\r\n header.innerHTML = `

    Service Review Note - ${selectedConsumerName}

    `;\r\n const topInfo = _DOM.createElement('div', { class: ['reviewNoteInfo'] });\r\n topInfo.innerHTML = `\r\n

    Date: ${date}

    \r\n

    Result: ${result}

    \r\n

    Attempts: ${attempts}

    \r\n

    Prompts: ${prompts}

    \r\n `;\r\n\r\n const noteInput = input.build({\r\n label: 'Review Note',\r\n style: 'secondary',\r\n type: 'textarea',\r\n callback: e => {\r\n saveData.reviewNote = e.target.value;\r\n },\r\n });\r\n const notifyEmployeeCheckbox = input.buildCheckbox({\r\n text: 'Notify Employee via System Message',\r\n callback: e => {\r\n saveData.notifyEmployee = e.target.checked ? 'Y' : 'N';\r\n },\r\n });\r\n const savebtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n await outcomesAjax.addReviewNote({\r\n token: $.session.Token,\r\n ...saveData,\r\n });\r\n\r\n POPUP.hide(reviewNotePopup);\r\n POPUP.show(detailsPopup);\r\n },\r\n });\r\n const cancelbtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(reviewNotePopup);\r\n POPUP.show(detailsPopup);\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(savebtn);\r\n btnWrap.appendChild(cancelbtn);\r\n\r\n reviewNotePopup.appendChild(header);\r\n reviewNotePopup.appendChild(topInfo);\r\n reviewNotePopup.appendChild(noteInput);\r\n reviewNotePopup.appendChild(notifyEmployeeCheckbox);\r\n reviewNotePopup.appendChild(btnWrap);\r\n\r\n POPUP.show(reviewNotePopup);\r\n }\r\n function sortLocations(results) {\r\n locations = {};\r\n\r\n results.forEach(res => {\r\n if (!locations[res.type]) {\r\n locations[res.type] = [];\r\n }\r\n\r\n locations[res.type].push(res);\r\n });\r\n locations['Primary'].sort(function (a, b) {\r\n if (a.description < b.description) {\r\n return -1;\r\n }\r\n if (a.description > b.description) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n if (locations.Secondary) {\r\n locations['Secondary'].sort(function (a, b) {\r\n if (a.description < b.description) {\r\n return -1;\r\n }\r\n if (a.description > b.description) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n }\r\n // Popup\r\n function buildPrimaryLocationDropdown(locId) {\r\n const select = dropdown.build({\r\n label: 'Primary Location',\r\n style: 'secondary',\r\n });\r\n\r\n const data = locations.Primary.map(pl => {\r\n return {\r\n value: pl.Location_ID,\r\n text: pl.description,\r\n };\r\n });\r\n\r\n dropdown.populate(select, data, locId);\r\n\r\n return select;\r\n }\r\n function buildSecondaryLocationDropdown(secLocId) {\r\n const select = dropdown.build({\r\n label: 'Secondary Location',\r\n style: 'secondary',\r\n });\r\n\r\n if (!locations.Secondary || locations.Secondary.legnth < 1) return select;\r\n\r\n const data = locations.Secondary.filter(sloc => {\r\n return sloc.primaryLocId === secLocId ? true : false;\r\n }).map(sl => {\r\n return {\r\n value: sl.Location_ID,\r\n text: sl.description,\r\n attributes: [{ key: 'data-primary-loc-id', value: sl.primaryLocId }],\r\n };\r\n });\r\n data.unshift({\r\n value: '',\r\n text: '',\r\n });\r\n\r\n dropdown.populate(select, data, secLocId);\r\n\r\n return select;\r\n }\r\n function buildResultsDropdown(result = '') {\r\n const select = dropdown.build({\r\n label: 'Results',\r\n style: 'secondary',\r\n });\r\n\r\n const data = Object.values(successTypes).map(r => {\r\n return {\r\n value: r.Objective_Success_Description,\r\n text: `${r.Objective_Success} ${r.Objective_Success_Description}`,\r\n attributes: [{ key: 'data-success', value: r.Objective_Success }],\r\n };\r\n });\r\n data.unshift({\r\n value: '',\r\n text: '',\r\n });\r\n\r\n const successType = result || data[0].value;\r\n successDetails = successTypes[successType];\r\n\r\n dropdown.populate(select, data, result);\r\n\r\n return select;\r\n }\r\n function buildPromptsDropdown(code = '') {\r\n const select = dropdown.build({\r\n label: 'Prompts',\r\n style: 'secondary',\r\n });\r\n\r\n const data = dropdownData.prompts.map(op => {\r\n return {\r\n value: op.Code,\r\n text: `${op.Code} ${op.Caption}`,\r\n };\r\n });\r\n data.unshift({\r\n value: '',\r\n text: '',\r\n });\r\n\r\n dropdown.populate(select, data, code);\r\n\r\n return select;\r\n }\r\n function buildAttemptsDropdown(attempt = '') {\r\n const select = dropdown.build({\r\n label: 'Attempts',\r\n style: 'secondary',\r\n });\r\n\r\n const data = [\r\n { value: '', text: '' },\r\n // { value: '', text: 'Ø' },\r\n // { value: '0', text: '0' },\r\n { value: '1', text: '1' },\r\n { value: '2', text: '2' },\r\n { value: '3', text: '3' },\r\n { value: '4', text: '4' },\r\n { value: '5', text: '5' },\r\n { value: '6', text: '6' },\r\n { value: '7', text: '7' },\r\n { value: '8', text: '8' },\r\n { value: '9', text: '9' },\r\n ];\r\n\r\n dropdown.populate(select, data, attempt);\r\n\r\n return select;\r\n }\r\n function buildCommunityIntegrationDropdown(ciLevel = '') {\r\n const select = dropdown.build({\r\n label: 'Community Integration',\r\n style: 'secondary',\r\n });\r\n\r\n const data = dropdownData.ci.map(ci => {\r\n return {\r\n value: ci.code,\r\n text: `${ci.code} ${ci.captionname}`,\r\n };\r\n });\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n\r\n dropdown.populate(select, data, ciLevel);\r\n\r\n return select;\r\n }\r\n function buildTimeInputs(startTime, endTime) {\r\n const start = input.build({\r\n label: 'Start Time',\r\n style: 'secondary',\r\n type: 'time',\r\n value: startTime,\r\n });\r\n const end = input.build({\r\n label: 'End Time',\r\n style: 'secondary',\r\n type: 'time',\r\n value: endTime,\r\n });\r\n\r\n const timeWrap = document.createElement('div');\r\n timeWrap.appendChild(start);\r\n timeWrap.appendChild(end);\r\n\r\n return { timeWrap, start, end };\r\n }\r\n function buildNoteInput(note) {\r\n const noteInput = input.build({\r\n label: 'Note',\r\n style: 'secondary',\r\n type: 'textarea',\r\n value: note,\r\n });\r\n\r\n return noteInput;\r\n }\r\n function buildReviewNoteInput(note) {\r\n const noteInput = input.build({\r\n label: 'Review Note',\r\n style: 'secondary',\r\n type: 'textarea',\r\n value: note,\r\n });\r\n\r\n return noteInput;\r\n }\r\n function buildNotifyCheckbox() {\r\n const notifyEmployeeCheckbox = input.buildCheckbox({\r\n text: 'Notify Employee via System Message',\r\n });\r\n\r\n return notifyEmployeeCheckbox;\r\n }\r\n function buildSaveButton(isEdit) {\r\n const text = isEdit ? 'Update' : 'Save';\r\n const btn = button.build({\r\n text,\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildDeleteButton() {\r\n const btn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildAddNoteButton() {\r\n const btn = button.build({\r\n text: 'Add Review Note',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildCardEnteredByDetails(enteredBy, lastUpdatedDateDirty) {\r\n let lastEditedTime = lastUpdatedDateDirty.split(' ')[1];\r\n const lastEditHH = lastEditedTime.split(':')[0];\r\n const lastEditMM = UTIL.leadingZero(lastEditedTime.split(':')[1]);\r\n lastEditedTime = `${lastEditHH}:${lastEditMM} ${lastUpdatedDateDirty.split(' ')[2]}`;\r\n const lastEditedDate = lastUpdatedDateDirty.split(' ')[0];\r\n const lastEdited = `${lastEditedDate} ${lastEditedTime}`;\r\n\r\n const txtArea = document.createElement('p');\r\n txtArea.classList.add('enteredByDetail');\r\n txtArea.innerHTML = `Entered By: ${enteredBy}
    Last Updated: ${lastEdited}`;\r\n\r\n return txtArea;\r\n }\r\n function showDetailViewPopup(editData, outcomeData) {\r\n detailsPopup = POPUP.build({});\r\n const tmpData = {\r\n notifyEmployee: 'N',\r\n reviewNote: outcomeData.reviewNote || ''\r\n };\r\n\r\n if (editData) {\r\n locationID = editData.Location_ID || '';\r\n tmpData.primaryLoc = editData.Location_ID || '';\r\n tmpData.secLoc = editData.Locations_Secondary_ID || '';\r\n tmpData.success = editData.Objective_Success || '';\r\n tmpData.prompt = editData.Prompt_Type || '';\r\n tmpData.attempt = editData.Prompt_Number || '';\r\n tmpData.ci = editData.community_integration_level || '';\r\n tmpData.startTime = editData.start_time || '';\r\n tmpData.endTime = editData.end_time || '';\r\n tmpData.note = editData.Objective_Activity_Note || '';\r\n }\r\n\r\n const primaryLocationDropdown = buildPrimaryLocationDropdown(editData.Location_ID);\r\n const secondaryLocationDropdown = buildSecondaryLocationDropdown(editData.Locations_Secondary_ID);\r\n const resultsDropdown = buildResultsDropdown(editData.objective_success_description);\r\n const promptsDropdown = buildPromptsDropdown(editData.Prompt_Type);\r\n const attemptsDropdown = buildAttemptsDropdown(editData.Prompt_Number);\r\n const cIDropdown = buildCommunityIntegrationDropdown(editData.community_integration_level);\r\n const timeInputs = buildTimeInputs(editData.start_time, editData.end_time);\r\n const noteInput = buildNoteInput(editData.Objective_Activity_Note);\r\n const reviewNoteInput = buildReviewNoteInput(outcomeData.reviewNote);\r\n const notifyCheckbox = buildNotifyCheckbox();\r\n const saveBtn = buildSaveButton(true);\r\n const deleteBtn = buildDeleteButton();\r\n const lastEditBy = buildCardEnteredByDetails(editData.submitted_by_user_id, editData.Last_Update);\r\n \r\n\r\n const checkShowFields = () => {\r\n const showAttempts = successDetails?.Show_Attempts;\r\n const showPrompts = successDetails?.Show_Prompts;\r\n const showTime = successDetails?.Show_Time;\r\n const showCI = successDetails?.Show_Community_Integration;\r\n\r\n if (showAttempts === 'Y') {\r\n attemptsDropdown.classList.remove('hidden');\r\n } else {\r\n attemptsDropdown.classList.add('hidden');\r\n }\r\n if (showPrompts === 'Y') {\r\n promptsDropdown.classList.remove('hidden');\r\n } else {\r\n promptsDropdown.classList.add('hidden');\r\n }\r\n if (showTime === 'Y') {\r\n timeInputs.start.classList.remove('hidden');\r\n timeInputs.end.classList.remove('hidden');\r\n } else {\r\n timeInputs.start.classList.add('hidden');\r\n timeInputs.end.classList.add('hidden');\r\n }\r\n if (showCI === 'Y') {\r\n cIDropdown.classList.remove('hidden');\r\n } else {\r\n cIDropdown.classList.add('hidden');\r\n }\r\n };\r\n const checkRequiredFields = () => {\r\n const showAttempts = successDetails?.Show_Attempts;\r\n const showPrompts = successDetails?.Show_Prompts;\r\n const showTime = successDetails?.Show_Time;\r\n const showCI = successDetails?.Show_Community_Integration;\r\n\r\n const attemptsRequired = successDetails?.Attempts_Required;\r\n const promptsRequired = successDetails?.Prompt_Required;\r\n const timeRequired = successDetails?.Times_Required;\r\n const ciRequired = successDetails?.Community_Integration_Required;\r\n const noteRequired = successDetails?.Notes_Required;\r\n\r\n // attempts\r\n if (showAttempts === 'Y') {\r\n attemptsDropdown.classList.remove('hidden');\r\n attemptsDropdown.classList.remove('disabled');\r\n if (attemptsRequired === 'Y') {\r\n if (!tmpData.attempt || tmpData.attempt === '') {\r\n attemptsDropdown.classList.add('error');\r\n } else {\r\n attemptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n attemptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n attemptsDropdown.classList.add('hidden');\r\n attemptsDropdown.classList.add('disabled');\r\n }\r\n // prompts\r\n if (showPrompts === 'Y') {\r\n promptsDropdown.classList.remove('hidden');\r\n promptsDropdown.classList.remove('disabled');\r\n if (promptsRequired === 'Y') {\r\n if (!tmpData.prompt || tmpData.prompt === '') {\r\n promptsDropdown.classList.add('error');\r\n } else {\r\n promptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n promptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n promptsDropdown.classList.add('hidden');\r\n promptsDropdown.classList.add('disabled');\r\n }\r\n // community integration\r\n if (showCI === 'Y') {\r\n cIDropdown.classList.remove('hidden');\r\n cIDropdown.classList.remove('disabled');\r\n if (ciRequired === 'Y') {\r\n if (!tmpData.ci || tmpData.ci === '') {\r\n cIDropdown.classList.add('error');\r\n } else {\r\n cIDropdown.classList.remove('error');\r\n }\r\n } else {\r\n cIDropdown.classList.remove('error');\r\n }\r\n } else {\r\n cIDropdown.classList.add('hidden');\r\n cIDropdown.classList.add('disabled');\r\n }\r\n // start and end time\r\n if (showTime === 'Y') {\r\n timeInputs.start.classList.remove('disabled');\r\n timeInputs.end.classList.remove('disabled');\r\n if (timeRequired === 'Y') {\r\n if (tmpData.startTime === '') {\r\n timeInputs.start.classList.add('error');\r\n } else {\r\n timeInputs.start.classList.remove('error');\r\n }\r\n if (tmpData.endTime === '') {\r\n timeInputs.end.classList.add('error');\r\n } else {\r\n timeInputs.end.classList.remove('error');\r\n }\r\n } else {\r\n timeInputs.start.classList.remove('error');\r\n timeInputs.end.classList.remove('error');\r\n }\r\n } else {\r\n timeInputs.start.classList.add('disabled');\r\n timeInputs.end.classList.add('disabled');\r\n }\r\n // note\r\n if (noteRequired === 'Y') {\r\n if (!tmpData.note || tmpData.note === '') {\r\n noteInput.classList.add('error');\r\n } else {\r\n noteInput.classList.remove('error');\r\n }\r\n } else {\r\n noteInput.classList.remove('error');\r\n }\r\n\r\n const errors = [...detailsPopup.querySelectorAll('.error')];\r\n if (errors.length === 0) {\r\n saveBtn.classList.remove('disabled');\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n }\r\n };\r\n const checkErrors = () => {\r\n const errors = document.querySelectorAll('.error');\r\n if (errors.length === 0) {\r\n saveBtn.classList.remove('disabled');\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n }\r\n };\r\n\r\n primaryLocationDropdown.addEventListener('change', e => {\r\n tmpData.primaryLoc = e.target.value;\r\n });\r\n secondaryLocationDropdown.addEventListener('change', e => {\r\n tmpData.secLoc = e.target.value;\r\n });\r\n resultsDropdown.addEventListener('change', e => {\r\n const selectedOption = e.target.options[e.target.selectedIndex];\r\n tmpData.success = selectedOption.dataset.success;\r\n successDetails = successTypes[selectedOption.value];\r\n\r\n if (selectedOption.value === '') {\r\n resultsDropdown.classList.add('error');\r\n } else {\r\n resultsDropdown.classList.remove('error');\r\n }\r\n\r\n checkErrors();\r\n checkRequiredFields();\r\n });\r\n promptsDropdown.addEventListener('change', e => {\r\n tmpData.prompt = e.target.value;\r\n checkRequiredFields();\r\n });\r\n attemptsDropdown.addEventListener('change', e => {\r\n tmpData.attempt = e.target.value;\r\n checkRequiredFields();\r\n });\r\n cIDropdown.addEventListener('change', e => {\r\n tmpData.ci = e.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n timeInputs.start.addEventListener('change', e => {\r\n if (e.target) {\r\n tmpData.startTime = e.target.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n timeInputs.end.addEventListener('change', e => {\r\n if (e.target) {\r\n tmpData.endTime = e.target.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n noteInput.addEventListener('change', e => {\r\n tmpData.note = e.target.value;\r\n checkRequiredFields();\r\n });\r\n reviewNoteInput.addEventListener('change', e => {\r\n tmpData.reviewNote = e.target.value;\r\n });\r\n notifyCheckbox.addEventListener('change', e => {\r\n tmpData.notifyEmployee = e.target.checked ? 'Y' : 'N';\r\n });\r\n\r\n saveBtn.addEventListener('click', async e => {\r\n // main outcome\r\n const updateData = {\r\n personId: selectedConsumerId,\r\n objectiveId: editData.Objective_ID,\r\n activityId: outcomeData.activityId,\r\n objdate: dates.formateToISO(editData.Objective_Date.split(' ')[0]),\r\n success: tmpData.success,\r\n goalnote: UTIL.removeUnsavableNoteText(tmpData.note),\r\n promptType: tmpData.prompt === '' ? '0' : tmpData.prompt,\r\n promptNumber: tmpData.attempt === '' ? '0' : tmpData.attempt,\r\n locationId: tmpData.primaryLoc,\r\n locationSecondaryId: tmpData.secLoc === '' ? 0 : tmpData.secLoc,\r\n goalStartTime: tmpData.startTime,\r\n goalEndTime: tmpData.endTime,\r\n goalCILevel: tmpData.ci,\r\n }\r\n outcomesAjax.saveGoals(updateData, () => {\r\n POPUP.hide(detailsPopup);\r\n });\r\n\r\n // review note\r\n const rnUpdateData = {\r\n objectiveActivityId: outcomeData.activityId,\r\n reviewNote: tmpData.reviewNote,\r\n consumerId: selectedConsumerId,\r\n objectiveActivityDate: editData.Objective_Date.split(' ')[0],\r\n notifyEmployee: tmpData.notifyEmployee,\r\n }\r\n await outcomesAjax.addReviewNote({\r\n token: $.session.Token,\r\n ...rnUpdateData,\r\n });\r\n \r\n await getReviewTableDataSecondary();\r\n populateTabSections();\r\n });\r\n deleteBtn.addEventListener('click', e => {\r\n outcomesAjax.deleteGoal(outcomeData.activityId, selectedConsumerId, selectedDate, async () => {\r\n await getReviewTableDataSecondary();\r\n populateTabSections();\r\n POPUP.hide(detailsPopup);\r\n });\r\n });\r\n\r\n if (!$.session.OutcomesReview) {\r\n reviewNoteInput.classList.add('disabled');\r\n notifyCheckbox.classList.add('disabled');\r\n }\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n\r\n detailsPopup.appendChild(primaryLocationDropdown);\r\n if (locations.Secondary) detailsPopup.appendChild(secondaryLocationDropdown);\r\n detailsPopup.appendChild(resultsDropdown);\r\n detailsPopup.appendChild(promptsDropdown);\r\n detailsPopup.appendChild(attemptsDropdown);\r\n\r\n if ($.session.applicationName !== 'Gatekeeper') {\r\n detailsPopup.appendChild(cIDropdown);\r\n detailsPopup.appendChild(timeInputs.timeWrap);\r\n }\r\n\r\n detailsPopup.appendChild(noteInput);\r\n detailsPopup.appendChild(reviewNoteInput);\r\n detailsPopup.appendChild(notifyCheckbox);\r\n detailsPopup.appendChild(btnWrap);\r\n detailsPopup.appendChild(lastEditBy);\r\n\r\n POPUP.show(detailsPopup);\r\n\r\n checkShowFields();\r\n\r\n return;\r\n\r\n //? Might need below but need more data from Mike\r\n if (\r\n editData &&\r\n editData.submitted_by_user_id &&\r\n editData.submitted_by_user_id.toUpperCase() !== $.session.UserId.toUpperCase()\r\n ) {\r\n primaryLocationDropdown.classList.add('disabled');\r\n secondaryLocationDropdown.classList.add('disabled');\r\n resultsDropdown.classList.add('disabled');\r\n attemptsDropdown.classList.add('disabled');\r\n promptsDropdown.classList.add('disabled');\r\n cIDropdown.classList.add('disabled');\r\n timeInputs.classList.add('disabled');\r\n noteInput.querySelector('.input-field__input').setAttribute('readonly', 'true');\r\n saveBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n btnWrap.classList.add('hidden');\r\n }\r\n }\r\n function onDetailRowClick(outcome) {\r\n const getSuccessTypes = new Promise((resolve, reject) => {\r\n outcomesAjax.getOutcomesSuccessTypes(outcome.goalTypeID, results => {\r\n unOrderedSuccessObj = {};\r\n successTypes = {};\r\n\r\n results.forEach(st => {\r\n var label = st.Objective_Success_Description;\r\n if (!unOrderedSuccessObj[label]) {\r\n unOrderedSuccessObj[label] = st;\r\n }\r\n });\r\n\r\n Object.keys(unOrderedSuccessObj)\r\n .sort()\r\n .forEach(key => {\r\n successTypes[key] = unOrderedSuccessObj[key];\r\n });\r\n\r\n resolve('success');\r\n });\r\n });\r\n\r\n const getActivity = new Promise((resolve, reject) => {\r\n outcomesAjax.getObjectiveActivity(outcome.activityId, results => {\r\n activityRes = results;\r\n resolve('success');\r\n });\r\n });\r\n\r\n Promise.all([getSuccessTypes, getActivity]).then(function () {\r\n showDetailViewPopup(activityRes[0], outcome);\r\n });\r\n }\r\n\r\n // Filtering\r\n //----------------------------------------------------\r\n // date span filter\r\n function calculateSpanFromDateRange() {\r\n const toDate = new Date(`${selectedDateSpan.to} 00:00:00`);\r\n const fromDate = new Date(`${selectedDateSpan.from} 00:00:00`);\r\n\r\n const toWeekStart = dates.startDayOfWeek(toDate);\r\n const fromWeekStart = dates.startDayOfWeek(fromDate);\r\n const isoToDate = dates.formatISO(toWeekStart).split('T')[0];\r\n const isoFromDate = dates.formatISO(fromWeekStart).split('T')[0];\r\n\r\n switch (activeTab) {\r\n case NO_FREQ: {\r\n spanLength = dates.differenceInDays(toDate, fromDate);\r\n break;\r\n }\r\n case HOUR: {\r\n spanLength = dates.differenceInDays(toDate, fromDate);\r\n spanLength = spanLength * 24;\r\n break;\r\n }\r\n case DAY: {\r\n spanLength = dates.differenceInDays(toDate, fromDate);\r\n break;\r\n }\r\n case WEEK: {\r\n spanLength = dates.differenceInWeeks(toDate, fromDate);\r\n break;\r\n }\r\n case MONTH: {\r\n spanLength = dates.differenceInMonths(toDate, fromDate);\r\n break;\r\n }\r\n case YEAR: {\r\n spanLength = dates.differenceInYears(toDate, fromDate);\r\n break;\r\n }\r\n }\r\n }\r\n function updateSpanInput() {\r\n daysBackInput.value = spanLength;\r\n }\r\n function updateDateRangeInputs() {\r\n fromDateInput.value = selectedDateSpan.from;\r\n toDateInput.value = selectedDateSpan.to;\r\n }\r\n function updateFilterDates() {\r\n daysBackToggleBtn.textContent = `${unitType} Back`;\r\n daysBackLabel.textContent = `${unitType} Back`;\r\n updateDateRangeInputs();\r\n updateSpanInput();\r\n }\r\n function buildFilterDates() {\r\n const toggleButtonWrap = _DOM.createElement('div', { class: 'dateFilterToggle' });\r\n daysBackToggleBtn = _DOM.createElement('button', {\r\n class: 'active',\r\n id: 'days-back-btn',\r\n text: `${unitType} Back`,\r\n });\r\n const dateRangeToggleBtn = _DOM.createElement('button', { id: 'date-range-btn', text: 'Date Range' });\r\n toggleButtonWrap.appendChild(daysBackToggleBtn);\r\n toggleButtonWrap.appendChild(dateRangeToggleBtn);\r\n\r\n const daysBackInputWrap = _DOM.createElement('div', { class: ['daysBack', 'active'] });\r\n daysBackLabel = _DOM.createElement('label', { for: 'daysBack', text: `${unitType} Back` });\r\n daysBackInput = _DOM.createElement('input', {\r\n id: 'daysBack',\r\n type: 'number',\r\n name: 'daysBack',\r\n value: spanLength,\r\n });\r\n daysBackInputWrap.appendChild(daysBackLabel);\r\n daysBackInputWrap.appendChild(daysBackInput);\r\n\r\n const dateRangeInputWrap = _DOM.createElement('div', { class: ['dateRange'] });\r\n const dateRangeInnerWrap1 = _DOM.createElement('div');\r\n const dateRangeInnerWrap2 = _DOM.createElement('div');\r\n dateRangeInputWrap.appendChild(dateRangeInnerWrap1);\r\n dateRangeInputWrap.appendChild(dateRangeInnerWrap2);\r\n\r\n const fromDateLabel = _DOM.createElement('label', { for: 'fromDate', text: `From:` });\r\n fromDateInput = _DOM.createElement('input', {\r\n id: 'fromDate',\r\n type: 'date',\r\n name: 'fromDate',\r\n value: selectedDateSpan.from,\r\n });\r\n dateRangeInnerWrap1.appendChild(fromDateLabel);\r\n dateRangeInnerWrap1.appendChild(fromDateInput);\r\n\r\n const toDateLabel = _DOM.createElement('label', { for: 'toDate', text: `To:` });\r\n toDateInput = _DOM.createElement('input', {\r\n id: 'toDate',\r\n type: 'date',\r\n name: 'toDate',\r\n value: selectedDateSpan.to,\r\n });\r\n dateRangeInnerWrap2.appendChild(toDateLabel);\r\n dateRangeInnerWrap2.appendChild(toDateInput);\r\n\r\n const dateWrap = _DOM.createElement('div', { class: 'dateFilter' });\r\n dateWrap.appendChild(toggleButtonWrap);\r\n dateWrap.appendChild(daysBackInputWrap);\r\n dateWrap.appendChild(dateRangeInputWrap);\r\n\r\n toggleButtonWrap.addEventListener('click', async e => {\r\n if (e.target.classList.contains('active')) {\r\n return;\r\n }\r\n\r\n const daysBack = dateWrap.querySelector('.daysBack');\r\n const dateRange = dateWrap.querySelector('.dateRange');\r\n\r\n if (e.target === daysBackToggleBtn) {\r\n isDaysBackFilter = true;\r\n daysBack.classList.add('active');\r\n daysBackToggleBtn.classList.add('active');\r\n dateRange.classList.remove('active');\r\n dateRangeToggleBtn.classList.remove('active');\r\n\r\n if (selectedDateSpan.to !== selectedDate) {\r\n setUnitType();\r\n updateFilterDates();\r\n \r\n await getReviewTableDataSecondary();\r\n \r\n populateTabSections();\r\n }\r\n\r\n return;\r\n }\r\n\r\n isDaysBackFilter = false;\r\n dateRange.classList.add('active');\r\n dateRangeToggleBtn.classList.add('active');\r\n daysBack.classList.remove('active');\r\n daysBackToggleBtn.classList.remove('active');\r\n });\r\n\r\n dateWrap.addEventListener('change', async e => {\r\n if (e.target.id === 'daysBack') {\r\n spanLength = e.target.value;\r\n selectedDateSpan.to = selectedDate;\r\n\r\n switch (activeTab) {\r\n case NO_FREQ: {\r\n const dateObj = dates.subDays(new Date(`${selectedDateSpan.to} 00:00:00`), spanLength);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n break;\r\n }\r\n case HOUR: {\r\n const dateObj = dates.subHours(new Date(`${selectedDateSpan.to} 00:00:00`), spanLength);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n break;\r\n }\r\n case DAY: {\r\n const dateObj = dates.subDays(new Date(`${selectedDateSpan.to} 00:00:00`), spanLength);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n break;\r\n }\r\n case WEEK: {\r\n const dateObj = dates.subWeeks(new Date(`${selectedDateSpan.to} 00:00:00`), spanLength);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n break;\r\n }\r\n case MONTH: {\r\n const dateObj = dates.subMonths(new Date(`${selectedDateSpan.to} 00:00:00`), spanLength);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n break;\r\n }\r\n case YEAR: {\r\n const dateObj = dates.subYears(new Date(`${selectedDateSpan.to} 00:00:00`), spanLength);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n break;\r\n }\r\n }\r\n\r\n updateDateRangeInputs();\r\n await getReviewTableDataSecondary();\r\n populateTabSections();\r\n }\r\n if (e.target.id === 'fromDate') {\r\n selectedDateSpan.from = e.target.value;\r\n calculateSpanFromDateRange();\r\n updateSpanInput();\r\n await getReviewTableDataSecondary();\r\n populateTabSections();\r\n }\r\n if (e.target.id === 'toDate') {\r\n selectedDateSpan.to = e.target.value;\r\n calculateSpanFromDateRange();\r\n updateSpanInput();\r\n await getReviewTableDataSecondary();\r\n populateTabSections();\r\n }\r\n });\r\n\r\n return dateWrap;\r\n }\r\n // current filter display\r\n function buildCurrentFilterdisplay() {\r\n const currentFilterDisplay = _DOM.createElement('div', { class: 'filteredByData' });\r\n const dateFilter = buildFilterDates();\r\n const filteredByWrap = _DOM.createElement('div', { class: 'filteredByWrap' });\r\n const btnWrap = _DOM.createElement('div', { class: 'filterBtnWrap' });\r\n servBtnWrap = _DOM.createElement('div', { class: 'filterSelectionBtnWrap' });\r\n typeBtnWrap = _DOM.createElement('div', { class: 'filterSelectionBtnWrap' });\r\n\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n showFilterPopup('ALL');\r\n },\r\n });\r\n\r\n serviceBtn = button.build({\r\n id: 'serviceBtn',\r\n text: 'Service:',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('serviceBtn');\r\n },\r\n });\r\n serviceCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('serviceBtn');\r\n },\r\n });\r\n\r\n outcomeTypeBtn = button.build({\r\n id: 'outcomeTypeBtn',\r\n text: 'Outcome Type:',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('outcomeTypeBtn');\r\n },\r\n });\r\n outcomeTypeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('outcomeTypeBtn');\r\n },\r\n });\r\n\r\n btnWrap.appendChild(filterBtn);\r\n\r\n servBtnWrap.appendChild(serviceBtn);\r\n servBtnWrap.appendChild(serviceCloseBtn);\r\n\r\n typeBtnWrap.appendChild(outcomeTypeBtn);\r\n typeBtnWrap.appendChild(outcomeTypeCloseBtn);\r\n\r\n filteredByWrap.appendChild(btnWrap);\r\n filteredByWrap.appendChild(servBtnWrap);\r\n filteredByWrap.appendChild(typeBtnWrap);\r\n currentFilterDisplay.appendChild(filteredByWrap);\r\n currentFilterDisplay.appendChild(dateFilter);\r\n\r\n return currentFilterDisplay;\r\n }\r\n function updateCurrentFilterDisplay(service = '%', outcomeType = '%') {\r\n if (service === '%' || service === 'All') {\r\n servBtnWrap.classList.add('hidden');\r\n } else {\r\n servBtnWrap.classList.remove('hidden');\r\n serviceBtn.textContent = `Service: ${service}`;\r\n }\r\n\r\n if (outcomeType === '%' || outcomeType === 'All') {\r\n typeBtnWrap.classList.add('hidden');\r\n } else {\r\n typeBtnWrap.classList.remove('hidden');\r\n outcomeTypeBtn.textContent = `Outcome Type: ${outcomeType}`;\r\n }\r\n }\r\n // filter popup\r\n function applyFilter() {\r\n updateCurrentFilterDisplay(serviceFilterVal.text, outcomeTypeFilterVal.text);\r\n\r\n populateTabSections();\r\n }\r\n async function buildTypesDropdown() {\r\n const typesDrop = dropdown.build({\r\n dropdownId: 'outcomeDropdown',\r\n label: 'Outcome Type',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n const data = goalTypes.map(type => {\r\n return {\r\n value: type.goalTypeId,\r\n text: type.goalTypeDescription,\r\n };\r\n });\r\n data.unshift({ value: '%', text: 'All' });\r\n\r\n const defaultValue = outcomeTypeFilterVal?.value ?? '%';\r\n dropdown.populate(typesDrop, data, defaultValue);\r\n\r\n return typesDrop;\r\n }\r\n function buildServiceDropdown() {\r\n const servDrop = dropdown.build({\r\n label: 'Service',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n const data = [\r\n { value: 'All', text: 'All' },\r\n { value: 'Complete', text: 'Complete' },\r\n { value: 'Incomplete', text: 'Incomplete' },\r\n ];\r\n\r\n const defaultValue = serviceFilterVal?.value ?? 'All';\r\n dropdown.populate(servDrop, data, defaultValue);\r\n\r\n return servDrop;\r\n }\r\n function closeFilter(closefilter) {\r\n if (closefilter == 'serviceBtn') {\r\n serviceFilterVal.text = 'All';\r\n serviceFilterVal.value = 'All';\r\n }\r\n if (closefilter == 'outcomeTypeBtn') {\r\n outcomeTypeFilterVal.text = 'All';\r\n outcomeTypeFilterVal.value = '%';\r\n }\r\n applyFilter();\r\n }\r\n async function showFilterPopup(IsShow) {\r\n let tempServiceVal, tempTypeVal;\r\n\r\n filterPopup = POPUP.build({\r\n closeCallback: () => {},\r\n });\r\n\r\n const serviceDropdown = buildServiceDropdown();\r\n const typesDropdown = await buildTypesDropdown();\r\n const applyButton = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n applyButton.classList.add('singleBtn');\r\n\r\n serviceDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n tempServiceVal = selectedOption;\r\n });\r\n typesDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n tempTypeVal = selectedOption;\r\n });\r\n applyButton.addEventListener('click', () => {\r\n serviceFilterVal = tempServiceVal ?? serviceFilterVal;\r\n outcomeTypeFilterVal = tempTypeVal ?? outcomeTypeFilterVal;\r\n applyFilter();\r\n POPUP.hide(filterPopup);\r\n });\r\n\r\n if (IsShow == 'ALL' || IsShow == 'serviceBtn') filterPopup.appendChild(serviceDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'outcomeTypeBtn') filterPopup.appendChild(typesDropdown);\r\n filterPopup.appendChild(applyButton);\r\n\r\n POPUP.show(filterPopup);\r\n }\r\n\r\n // Table\r\n //----------------------------------------------------\r\n function buildToggleIcon() {\r\n const toggleIcon = _DOM.createElement('div', { class: ['rowToggle', 'closed'] });\r\n toggleIcon.innerHTML = icons['keyArrowRight'];\r\n return toggleIcon;\r\n }\r\n function buildTable(data, frequency) {\r\n let showTabExclamation;\r\n\r\n const table = _DOM.createElement('div');\r\n table.classList.add('outcomesReviewTable');\r\n\r\n const mainHeading = _DOM.createElement('div', { class: ['heading', 'heading-main'] });\r\n mainHeading.innerHTML = `\r\n
    \r\n
    Individual
    \r\n
    Service Statement
    \r\n
    Frequency
    \r\n
    Times Documented
    \r\n
    Success Rate
    \r\n
    \r\n `;\r\n table.appendChild(mainHeading);\r\n\r\n for (const objId in data) {\r\n const d = data[objId];\r\n\r\n const mainRowWrap = _DOM.createElement('div', { class: ['rowWrap', 'rowWrap-main'] });\r\n table.appendChild(mainRowWrap);\r\n\r\n const mainRow = _DOM.createElement('div', { class: ['row', 'row-main'] });\r\n mainRow.setAttribute('data-objid', objId);\r\n mainRow.setAttribute('data-outcomeType', d.outcomeType);\r\n mainRow.setAttribute('data-outcomeTypeId', d.outcomeTypeId);\r\n mainRow.setAttribute('data-showExclamation', d.showExclamation);\r\n const mainTI = buildToggleIcon();\r\n mainTI.classList.add('mainToggle');\r\n mainRow.appendChild(mainTI);\r\n mainRow.innerHTML += `\r\n
    ${d.individual}
    \r\n
    ${d.serviceStatement}
    \r\n
    ${d.frequency}
    \r\n
    ${d.timesDoc}
    \r\n
    ${d.successRate}
    \r\n
    ${d.showExclamation ? icons.error : ''}
    \r\n `;\r\n mainRowWrap.appendChild(mainRow);\r\n \r\n\r\n const mainRowSubWrap = _DOM.createElement('div', { class: ['rowWrap', 'rowWrap-main-sub', 'hidden'] });\r\n mainRowWrap.appendChild(mainRowSubWrap);\r\n\r\n mainRow.addEventListener('click', e => {\r\n const target = e.target;\r\n\r\n if (!target.classList.contains('mainToggle')) return;\r\n\r\n const showChildren = target.classList.contains('closed');\r\n\r\n if (showChildren) {\r\n target.innerHTML = icons.keyArrowDown;\r\n target.classList.remove('closed');\r\n mainRowSubWrap.classList.remove('hidden');\r\n } else {\r\n target.innerHTML = icons.keyArrowRight;\r\n target.classList.add('closed');\r\n mainRowSubWrap.classList.add('hidden');\r\n }\r\n });\r\n\r\n for (const date in data[objId].reviewDates) {\r\n const dateRowWrap = _DOM.createElement('div', { class: ['rowWrap', 'rowWrap-date'] });\r\n mainRowSubWrap.appendChild(dateRowWrap);\r\n\r\n const dateRow = _DOM.createElement('div', { class: ['row', 'row-date'] });\r\n const dateTI = buildToggleIcon();\r\n dateTI.classList.add('subToggle');\r\n dateRow.appendChild(dateTI);\r\n const dateForRow = frequency === 'H' ? dates.convertFromMilitary(date) : date;\r\n dateRow.innerHTML += `
    ${dateForRow !== 'nf' ? dateForRow : 'No Frequency'}
    `;\r\n dateRowWrap.appendChild(dateRow);\r\n if (exclamationDateMap[objId] && exclamationDateMap[objId][date]) {\r\n dateRow.innerHTML += `
    ${icons.error}
    `;\r\n showTabExclamation = true;\r\n }\r\n\r\n const detailsTable = _DOM.createElement('div', { class: ['rowWrap', 'rowWrap-date-sub', 'hidden'] });\r\n dateRowWrap.appendChild(detailsTable);\r\n\r\n dateRow.addEventListener('click', e => {\r\n const target = e.target;\r\n\r\n if (!target.classList.contains('subToggle')) return;\r\n\r\n const showChildren = target.classList.contains('closed');\r\n\r\n if (showChildren) {\r\n target.innerHTML = icons.keyArrowDown;\r\n target.classList.remove('closed');\r\n detailsTable.classList.remove('hidden');\r\n } else {\r\n target.innerHTML = icons.keyArrowRight;\r\n target.classList.add('closed');\r\n detailsTable.classList.add('hidden');\r\n }\r\n });\r\n\r\n if (Object.keys(data[objId].reviewDates[date]).length > 0) {\r\n const detailsHeading = _DOM.createElement('div', { class: ['heading', 'heading-details'] });\r\n detailsHeading.innerHTML = `\r\n
    Employee
    \r\n
    Result
    \r\n
    Attempts
    \r\n
    Prompts
    \r\n
    Note
    \r\n `;\r\n detailsTable.appendChild(detailsHeading);\r\n\r\n for (const activityId in data[objId].reviewDates[date]) {\r\n const details = data[objId].reviewDates[date][activityId];\r\n\r\n const detailRow = _DOM.createElement('div', { class: ['row', 'row-details'] });\r\n detailRow.innerHTML = `\r\n
    ${details.employee}
    \r\n
    ${details.result}
    \r\n
    ${details.attempts}
    \r\n
    ${details.prompts}
    \r\n
    ${details.note}
    \r\n `;\r\n detailsTable.appendChild(detailRow);\r\n\r\n detailRow.addEventListener('click', () => {\r\n onDetailRowClick({\r\n goalTypeID: d.outcomeTypeId,\r\n activityId: details.activityId,\r\n date: date,\r\n result: details.result,\r\n attempt: details.attempts,\r\n employeeId: details.staffId,\r\n reviewNote: details.reviewNote\r\n });\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n return { sectionTable: table, showTabExclamation };\r\n }\r\n\r\n // Tabs\r\n //----------------------------------------------------\r\n function buildTabs() {\r\n return tabs.build({\r\n sections: Object.values(tabSections),\r\n active: 0,\r\n tabNavCallback: async function (data) {\r\n activeTab = data.activeSection.toLowerCase();\r\n setUnitType();\r\n updateFilterDates();\r\n \r\n await getReviewTableDataSecondary();\r\n\r\n populateTabSections();\r\n },\r\n });\r\n }\r\n function populateTabSections(data) {\r\n if (!data) data = outcomesData;\r\n\r\n const key = FREQ_MAP[activeTab];\r\n const sectionID = tabSections[key].toLowerCase();\r\n const section = document.getElementById(sectionID);\r\n section.innerHTML = '';\r\n\r\n const { sectionTable, showTabExclamation } = buildTable(data[key], key);\r\n\r\n const rows = [...sectionTable.querySelectorAll('.row.row-main')];\r\n rows.forEach(row => {\r\n const outcomeType = row.dataset.outcometype;\r\n const outcomeTypeId = row.dataset.outcometypeid;\r\n const showExclamation = row.dataset.showexclamation;\r\n\r\n if (outcomeTypeFilterVal.text !== 'All' && outcomeTypeFilterVal.text !== outcomeType) {\r\n row.parentNode.style.display = 'none';\r\n return;\r\n }\r\n\r\n if (serviceFilterVal.text === 'Complete' && showExclamation === 'true') {\r\n row.parentNode.style.display = 'none';\r\n return;\r\n }\r\n\r\n if (serviceFilterVal.text === 'Incomplete' && showExclamation === 'false') {\r\n row.parentNode.style.display = 'none';\r\n return;\r\n }\r\n\r\n row.parentNode.style.display = 'flex';\r\n });\r\n\r\n const tabNavItems = [...document.querySelectorAll('.tabs__nav--item')];\r\n tabNavItems.forEach(item => {\r\n const freq = item.getAttribute('section');\r\n\r\n if (freq.toLowerCase() === activeTab.toLowerCase() && showTabExclamation) {\r\n item.innerHTML = `${freq} ${icons.error}`;\r\n } else {\r\n item.innerHTML = freq;\r\n }\r\n });\r\n\r\n section.appendChild(sectionTable);\r\n\r\n return;\r\n }\r\n\r\n // Main\r\n //----------------------------------------------------\r\n function getPercentForSuccessRate(topNumb, bottomNum) {\r\n if (bottomNum === '0' && topNumb === '0') {\r\n return 'N';\r\n }\r\n\r\n if (bottomNum === '0' && topNumb !== '0') {\r\n return '';\r\n }\r\n\r\n const percent = ((parseInt(topNumb) / parseInt(bottomNum)) * 100).toString().slice(0, 5);\r\n\r\n return `${percent}%`;\r\n }\r\n function setDatesForMiddleTier() {\r\n Object.keys(outcomesData).forEach(occ => {\r\n if (occ === 'NF') return;\r\n\r\n Object.keys(outcomesData[occ]).forEach(objId => {\r\n outcomesData[occ][objId].reviewDates = {};\r\n \r\n const dObj = {};\r\n\r\n if (occ === 'H') {\r\n dObj[0] = currentDateTime;\r\n dObj[0].setMinutes(0);\r\n dObj[0].setSeconds(0);\r\n } else {\r\n dObj[0] = new Date(`${selectedDateSpan.to} 00:00:00`)\r\n }\r\n\r\n const loopLength = isDaysBackFilter ? spanLength - 1 : spanLength;\r\n for (let index = 0; index < loopLength; index++) {\r\n switch (occ) {\r\n case 'H': {\r\n const nextDate = dates.subHours(dObj[index], 1);\r\n dObj[index + 1] = nextDate;\r\n break;\r\n }\r\n case 'D': {\r\n const nextDate = dates.subDays(dObj[index], 1);\r\n dObj[index + 1] = nextDate;\r\n break;\r\n }\r\n case 'W': {\r\n const nextDate = dates.subWeeks(dObj[index], 1);\r\n dObj[index + 1] = nextDate;\r\n break;\r\n }\r\n case 'M': {\r\n const nextDate = dates.subMonths(dObj[index], 1);\r\n dObj[index + 1] = nextDate;\r\n break;\r\n }\r\n case 'Y': {\r\n const nextDate = dates.subYears(dObj[index], 1);\r\n dObj[index + 1] = nextDate;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n Object.keys(dObj).forEach(key => {\r\n switch (occ) {\r\n case 'H': {\r\n //2024-10-31T14:11:35-04:00\r\n const militaryTime = dates.formatISO(dObj[key]).slice(11, 16);\r\n outcomesData[occ][objId].reviewDates[militaryTime] = {};\r\n break;\r\n }\r\n case 'D': {\r\n const isoDate = dates.formatISO(dObj[key]).split('T')[0];\r\n const stDate = dates.formateToStandard(isoDate);\r\n outcomesData[occ][objId].reviewDates[stDate] = {};\r\n break;\r\n }\r\n case 'W': {\r\n const weekStart = dates.startDayOfWeek(dObj[key]);\r\n const isoStartDate = dates.formatISO(weekStart).split('T')[0];\r\n const stStartDate = dates.formateToStandard(isoStartDate);\r\n\r\n const weekEnd = dates.endOfWeek(dObj[key]);\r\n const isoEndDate = dates.formatISO(weekEnd).split('T')[0];\r\n const stEndDate = dates.formateToStandard(isoEndDate);\r\n\r\n const dateKey = `${stStartDate}-${stEndDate}`;\r\n\r\n outcomesData[occ][objId].reviewDates[dateKey] = {};\r\n break;\r\n }\r\n case 'M': {\r\n const isoDate = dates.formatISO(dObj[key]).split('T')[0];\r\n const stDate = dates.formateToStandard(isoDate);\r\n const dateKey = MONTHS[stDate.split('/')[0]];\r\n outcomesData[occ][objId].reviewDates[dateKey] = {};\r\n break;\r\n }\r\n case 'Y': {\r\n const isoDate = dates.formatISO(dObj[key]).split('T')[0];\r\n const stDate = dates.formateToStandard(isoDate);\r\n const dateKey = stDate.split('/')[2];\r\n outcomesData[occ][objId].reviewDates[dateKey] = {};\r\n break;\r\n }\r\n }\r\n });\r\n });\r\n });\r\n }\r\n function setUnitType() {\r\n selectedDateSpan.to = selectedDate;\r\n\r\n switch (activeTab) {\r\n case NO_FREQ: {\r\n const dateObj = dates.subDays(new Date(`${selectedDate} 00:00:00`), NO_FREQ_SPAN);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n unitType = 'Day(s)';\r\n spanLength = NO_FREQ_SPAN;\r\n break;\r\n }\r\n case HOUR: {\r\n const dateObj = dates.subHours(new Date(`${selectedDate} 00:00:00`), HOUR_SPAN);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n unitType = 'Hour(s)';\r\n spanLength = HOUR_SPAN;\r\n break;\r\n }\r\n case DAY: {\r\n const dateObj = dates.subDays(new Date(`${selectedDate} 00:00:00`), DAY_SPAN);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n unitType = 'Day(s)';\r\n spanLength = DAY_SPAN;\r\n break;\r\n }\r\n case WEEK: {\r\n let dateObj;\r\n\r\n if (WEEK_SPAN === 1) {\r\n dateObj = new Date(`${selectedDate} 00:00:00`)\r\n } else {\r\n dateObj = dates.subWeeks(new Date(`${selectedDate} 00:00:00`), WEEK_SPAN);\r\n }\r\n \r\n dateObj = dates.startDayOfWeek(dateObj);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n unitType = 'Week(s)';\r\n spanLength = WEEK_SPAN;\r\n break;\r\n }\r\n case MONTH: {\r\n const dateObj = dates.subMonths(new Date(`${selectedDate} 00:00:00`), MONTH_SPAN);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n unitType = 'Month(s)';\r\n spanLength = MONTH_SPAN;\r\n break;\r\n }\r\n case YEAR: {\r\n const dateObj = dates.subYears(new Date(`${selectedDate} 00:00:00`), YEAR_SPAN);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n unitType = 'Year(s)';\r\n spanLength = YEAR_SPAN;\r\n break;\r\n }\r\n default: {\r\n console.error(activeTab);\r\n throw new Error('something went wrong setting unit types');\r\n }\r\n }\r\n }\r\n function setTabSections() {\r\n tabSections = {};\r\n\r\n if (outcomesData.hasOwnProperty('NF')) tabSections['NF'] = NO_FREQ;\r\n if (outcomesData.hasOwnProperty('H')) tabSections['H'] = HOUR;\r\n if (outcomesData.hasOwnProperty('D')) tabSections['D'] = DAY;\r\n if (outcomesData.hasOwnProperty('W')) tabSections['W'] = WEEK;\r\n if (outcomesData.hasOwnProperty('M')) tabSections['M'] = MONTH;\r\n if (outcomesData.hasOwnProperty('Y')) tabSections['Y'] = YEAR;\r\n\r\n activeTab = Object.values(tabSections)[0];\r\n }\r\n function sortReviewTableData(dirtyData) {\r\n objIdSet = new Set();\r\n\r\n return dirtyData.reduce((a, d) => {\r\n const occurrence = d.objectiveRecurrance || 'NF';\r\n const objID = d.objectiveId;\r\n\r\n if (!occurrence || !objID) return a;\r\n\r\n objIdSet.add(objID);\r\n\r\n if (!a[occurrence]) {\r\n a[occurrence] = {};\r\n }\r\n\r\n if (!a[occurrence][objID]) {\r\n a[occurrence][objID] = {};\r\n }\r\n\r\n const freq = FREQUENCY[d.frequencyModifier] || '';\r\n const recurr = RECURRANCE[d.objectiveRecurrance] || '';\r\n\r\n a[occurrence][objID].showExclamation = false;\r\n a[occurrence][objID].individual = d.consumerName;\r\n a[occurrence][objID].serviceStatement = d.objectiveStatement;\r\n a[occurrence][objID].frequency = `${freq} ${d.objectiveIncrement} ${recurr}`;\r\n a[occurrence][objID].frequencyIncrement = d.objectiveIncrement;\r\n a[occurrence][objID].frequencyModifier = d.frequencyModifier;\r\n a[occurrence][objID].outcomeType = d.goalTypeDescription;\r\n a[occurrence][objID].outcomeTypeId = d.goalTypeId;\r\n\r\n return a;\r\n }, {});\r\n }\r\n function sortReviewTableDataSecondary(data, outcomeOjb) {\r\n timesDocByDate = {};\r\n\r\n data.forEach(d => {\r\n const occurrence = d.objectiveRecurrance || 'NF';\r\n const objID = d.objectiveId;\r\n const date = d.objective_date.split(' ')[0];\r\n const staffId = d.staffId;\r\n const activityId = d.objectiveActivityId;\r\n const percent = getPercentForSuccessRate(d.top_number, d.bottom_number);\r\n\r\n if (outcomeOjb[occurrence]) {\r\n if (outcomeOjb[occurrence][objID]) {\r\n outcomeOjb[occurrence][objID].successRate = percent;\r\n\r\n const prompt = dropdownData.prompts.find(p => p.Code === d.promptType);\r\n\r\n let dateThisBelongsTo;\r\n\r\n if (occurrence === 'NF') {\r\n outcomeOjb[occurrence][objID].timesDoc++;\r\n\r\n if (!outcomeOjb[occurrence][objID].reviewDates) {\r\n outcomeOjb[occurrence][objID].reviewDates = {};\r\n }\r\n\r\n if (!outcomeOjb[occurrence][objID].reviewDates['nf']) {\r\n outcomeOjb[occurrence][objID].reviewDates['nf'] = {};\r\n }\r\n\r\n if (!outcomeOjb[occurrence][objID].reviewDates['nf'][activityId]) {\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId] = {};\r\n }\r\n\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId].employee = d.employee;\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][\r\n activityId\r\n ].result = `${d.objectiveSuccessSymbol} ${d.objectiveSuccessDescription}`;\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId].attempts = d.promptNumber;\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId].prompts = `${prompt ? prompt.Code : ''} ${prompt ? prompt.Caption : ''}`;\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId].note = d.objectiveActivityNote;\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId].activityId = d.objectiveActivityId;\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId].staffId = staffId;\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId].reviewNote = d.reviewNote;\r\n\r\n return;\r\n }\r\n if (occurrence === 'H') {\r\n if (d.startTime) {\r\n Object.keys(outcomeOjb[occurrence][objID].reviewDates).forEach(key => {\r\n let splitStart = d.startTime.split(':');\r\n let splitKey = key.split(':');\r\n\r\n if (splitStart[0] === splitKey[0]) {\r\n dateThisBelongsTo = key;\r\n }\r\n });\r\n }\r\n }\r\n if (occurrence === 'D') {\r\n const splitDate = date.split('/');\r\n const month = splitDate[0] < 10 ? `0${splitDate[0]}` : splitDate[0];\r\n const day = splitDate[1] < 10 ? `0${splitDate[1]}` : splitDate[1];\r\n const year = splitDate[2];\r\n \r\n dateThisBelongsTo = `${month}/${day}/${year}`;\r\n }\r\n if (occurrence === 'W') {\r\n Object.keys(outcomeOjb[occurrence][objID].reviewDates).forEach(key => {\r\n const [start, end] = key.split('-');\r\n const afterDate = new Date(`${start} 00:00:00`);\r\n const endDate = new Date(`${end} 00:00:00`);\r\n const compareDate = new Date(`${date} 00:00:00`);\r\n const isAfter = dates.isAfter(compareDate, afterDate);\r\n const isBefore = dates.isBefore(compareDate, endDate);\r\n\r\n if (isAfter && isBefore) {\r\n dateThisBelongsTo = key;\r\n }\r\n });\r\n }\r\n if (occurrence === 'M') {\r\n Object.keys(outcomeOjb[occurrence][objID].reviewDates).forEach(key => {\r\n let [month, day, year] = date.split('/');\r\n if (month < 10 && month.length === 1) {\r\n month = `0${month}`;\r\n }\r\n\r\n if (MONTHS[month] === key) {\r\n dateThisBelongsTo = key;\r\n }\r\n });\r\n }\r\n if (occurrence === 'Y') {\r\n Object.keys(outcomeOjb[occurrence][objID].reviewDates).forEach(key => {\r\n const [month, day, year] = date.split('/');\r\n if (year === key) {\r\n dateThisBelongsTo = key;\r\n }\r\n });\r\n }\r\n\r\n if (!dateThisBelongsTo) return;\r\n if (!outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo]) return;\r\n\r\n outcomeOjb[occurrence][objID].timesDoc++;\r\n\r\n if (!timesDocByDate[occurrence]) timesDocByDate[occurrence] = {};\r\n if (!timesDocByDate[occurrence][objID]) timesDocByDate[occurrence][objID] = {};\r\n if (!timesDocByDate[occurrence][objID][dateThisBelongsTo]) timesDocByDate[occurrence][objID][dateThisBelongsTo] = {};\r\n if (!timesDocByDate[occurrence][objID][dateThisBelongsTo].timesDoc) {\r\n timesDocByDate[occurrence][objID][dateThisBelongsTo].timesDoc = 1;\r\n } else {\r\n timesDocByDate[occurrence][objID][dateThisBelongsTo].timesDoc++;\r\n }\r\n \r\n if (!outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId]) {\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId] = {};\r\n }\r\n\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId].employee = d.employee;\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][\r\n activityId\r\n ].result = `${d.objectiveSuccessSymbol} ${d.objectiveSuccessDescription}`;\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId].attempts = d.promptNumber;\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][\r\n activityId\r\n ].prompts = `${prompt ? prompt.Code : ''} ${prompt ? prompt.Caption : ''}`;\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId].note = d.objectiveActivityNote;\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId].staffId = staffId;\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId].activityId = d.objectiveActivityId;\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId].reviewNote = d.reviewNote;\r\n }\r\n }\r\n });\r\n }\r\n async function getReviewTableData() {\r\n const data = await outcomesAjax.getReviewTableData({\r\n consumerId: selectedConsumerId,\r\n objectiveDate: dates.formateToISO(selectedDate),\r\n });\r\n\r\n outcomesDataRaw = data;\r\n\r\n outcomesData = sortReviewTableData(data);\r\n setTabSections();\r\n setUnitType();\r\n }\r\n async function getReviewTableDataSecondary() {\r\n exclamationDateMap = {};\r\n setDatesForMiddleTier();\r\n\r\n const frequency = FREQ_MAP[activeTab];\r\n const data = await outcomesAjax.getReviewTableDataSecondary({\r\n consumerId: selectedConsumerId,\r\n startDate: selectedDateSpan.from,\r\n endDate: selectedDateSpan.to,\r\n objectiveIdList: Array.from(objIdSet).join(','),\r\n frequency,\r\n });\r\n\r\n outcomesDataSecondaryRaw = data.gridSecondary;\r\n\r\n Object.keys(outcomesData).forEach(a => {\r\n Object.keys(outcomesData[a]).forEach(b => {\r\n outcomesData[a][b].timesDoc = 0;\r\n outcomesData[a][b].successRate = 0;\r\n outcomesData[a][b].showExclamation = false;\r\n });\r\n });\r\n\r\n sortReviewTableDataSecondary(data.gridSecondary, outcomesData);\r\n\r\n Object.keys(outcomesData[frequency]).forEach(objId => {\r\n if (outcomesData[frequency][objId].successRate === 'N') {\r\n if (outcomesData[frequency][objId].timesDoc > 0) {\r\n outcomesData[frequency][objId].successRate = '0%';\r\n }\r\n\r\n if (outcomesData[frequency][objId].timesDoc === 0) {\r\n outcomesData[frequency][objId].successRate = '';\r\n }\r\n } else {\r\n if (outcomesData[frequency][objId].timesDoc > 0) {\r\n if (!outcomesData[frequency][objId].successRate) {\r\n outcomesData[frequency][objId].successRate = '100%';\r\n }\r\n } else if (outcomesData[frequency][objId].timesDoc === 0) {\r\n outcomesData[frequency][objId].successRate = '0%';\r\n }\r\n }\r\n \r\n if (outcomesData[frequency][objId].reviewDates) {\r\n Object.keys(outcomesData[frequency][objId].reviewDates).forEach(rDate => {\r\n if (frequency === 'NF') return;\r\n\r\n const freqMod = outcomesData[frequency][objId].frequencyModifier;\r\n const freqInc = outcomesData[frequency][objId].frequencyIncrement;\r\n const timesDoc = outcomesData[frequency][objId].timesDoc;\r\n let timesDocDate = 0;\r\n\r\n if (timesDocByDate[frequency] && timesDocByDate[frequency][objId] && timesDocByDate[frequency][objId][rDate]) {\r\n timesDocDate = timesDocByDate[frequency][objId][rDate].timesDoc ?? 0;\r\n }\r\n\r\n if (!exclamationDateMap[objId]) exclamationDateMap[objId] = {};\r\n\r\n if (freqMod === 'OBJFMAL' && timesDocDate < parseInt(freqInc)) {\r\n //'At least'\r\n outcomesData[frequency][objId].showExclamation = true\r\n exclamationDateMap[objId][rDate] = true;\r\n }\r\n if (freqMod === 'OBJFMEX' && timesDocDate !== parseInt(freqInc)) {\r\n //'Exactly'\r\n outcomesData[frequency][objId].showExclamation = true\r\n exclamationDateMap[objId][rDate] = true;\r\n }\r\n if (freqMod === 'OBJFMNM' && timesDocDate > parseInt(freqInc)) {\r\n //'No more than'\r\n outcomesData[frequency][objId].showExclamation = true\r\n exclamationDateMap[objId][rDate] = true;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n \r\n async function init({ consumer, consumerName, date, allowedConsumerIds }) {\r\n console.clear();\r\n\r\n selectedConsumerId = consumer.id;\r\n selectedConsumerCard = consumer.card;\r\n selectedConsumerName = consumerName;\r\n selectedDate = date;\r\n serviceFilterVal = {\r\n text: 'All',\r\n value: 'All'\r\n };\r\n outcomeTypeFilterVal = {\r\n text: 'All',\r\n value: '%'\r\n };\r\n currentDateTime = new Date();\r\n\r\n setActiveModuleSectionAttribute('outcomes-review');\r\n PROGRESS.SPINNER.show('Loading Outcomes...');\r\n\r\n otherData = outcomes.getDataForOverview();\r\n dropdownData = outcomes.getDropdownValues();\r\n\r\n await getReviewTableData();\r\n await getReviewTableDataSecondary();\r\n\r\n DOM.clearActionCenter();\r\n\r\n outcomesReviewDiv = _DOM.createElement('div');\r\n outcomesReviewDiv.classList.add('outcomesReview');\r\n\r\n const backbtn = button.build({\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n outcomes.backToOutcomeLoad(consumer);\r\n }\r\n });\r\n\r\n consumerCardHeader = buildConsumerCard();\r\n\r\n const filterDisplay = buildCurrentFilterdisplay();\r\n outcomeTabs = buildTabs();\r\n\r\n outcomesReviewDiv.appendChild(backbtn);\r\n outcomesReviewDiv.appendChild(consumerCardHeader);\r\n outcomesReviewDiv.appendChild(filterDisplay);\r\n outcomesReviewDiv.appendChild(outcomeTabs);\r\n DOM.ACTIONCENTER.appendChild(outcomesReviewDiv);\r\n\r\n updateCurrentFilterDisplay();\r\n populateTabSections();\r\n\r\n roster2.setAllowedConsumers(allowedConsumerIds);\r\n roster2.addConsumerToActiveConsumers(selectedConsumerCard);\r\n roster2.miniRosterinit(null, {\r\n hideDate: true,\r\n });\r\n\r\n goalTypes = await outcomesAjax.getAllGoalTypes();\r\n outcomesAjax.getOutcomesPrimaryAndSecondaryLocations(\r\n selectedConsumerId,\r\n dates.formateToISO(selectedDate),\r\n results => sortLocations(results),\r\n );\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n };\r\n})();\r\n","const plan = (function () {\r\n // DOM\r\n // -----------------\r\n // plan landing\r\n let landingPage;\r\n let overviewTable;\r\n let newPlanBtn;\r\n let assignCaseLoadBtn;\r\n let downloadPlanBtn;\r\n // new plan setup\r\n let planSetupPage;\r\n let setupWrap;\r\n let prevPlanTable;\r\n let datesBoxDiv;\r\n let doneBtn;\r\n let addedMemberPopup;\r\n // main plan page\r\n let planHeader;\r\n let planHeaderButtons;\r\n let planHeaderGeneralInfoBar;\r\n let morePopup;\r\n let morePopupMenu;\r\n let editDatesScreen;\r\n let updateStatusScreen;\r\n let deleteScreen;\r\n let reactivateScreen;\r\n let addWorkflowScreen;\r\n let reportsScreen;\r\n let reportsAttachmentScreen;\r\n let DODDScreen;\r\n let portalScreen;\r\n let sendToDODDScreen;\r\n let changePlanTypeScreen;\r\n let generalInfoBar;\r\n\r\n // DATA\r\n // -----------------\r\n let previousPlansData;\r\n let dropdownData;\r\n let retrieveData;\r\n // general info\r\n let selectedConsumer;\r\n let planId;\r\n let planType;\r\n let planStatus;\r\n let planActiveStatus;\r\n let revisionNumber;\r\n let sentToOnet;\r\n let downloadedFromSalesforce;\r\n // prior plan data\r\n let hasPreviousPlans;\r\n let priorConsumerPlanId;\r\n let thisPreviousPlanId = 0;\r\n // more popup\r\n let selectedWorkflows;\r\n //let selectedPreviousWfForms;\r\n let addWorkflowDoneBtn;\r\n let planAttBody;\r\n let workflowAttBody;\r\n let signatureAttBody;\r\n let portalPlanAttBody;\r\n let portalWorkflowAttBody;\r\n let portalSignatureAttBody;\r\n let DODDplanAttBody;\r\n let DODDsignAttBody;\r\n let DODDworkflowAttBody;\r\n // runReports screen\r\n let include = 'N';\r\n let includeCheckbox; //\r\n // plan validation\r\n let ISPValidationCheck;\r\n\r\n async function launchWorkflowViewer() {\r\n let processId =\r\n planType === 'Revision' ? WorkflowProcess.CONSUMER_PLAN_REVISION : WorkflowProcess.CONSUMER_PLAN_ANNUAL;\r\n await WorkflowViewerComponent.open(processId, planId);\r\n }\r\n async function dashHandler(consumer, pId, stepId) {\r\n function pageLoadCallback() {\r\n let target = document.querySelector(`.wf-steps-container[data-id='${stepId}']`);\r\n let container = document.querySelector('.planWorkflow');\r\n if (target) container.scrollTop = target.offsetTop;\r\n }\r\n let {\r\n consumer: { consumerId, consumerFirstName, consumerLastName },\r\n } = consumer;\r\n\r\n setActiveModuleAttribute('plan');\r\n $.loadedApp = 'plan';\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n UTIL.toggleMenuItemHighlight('plan');\r\n\r\n // mock consumerCard\r\n let card = roster2.buildConsumerCard({\r\n FN: consumerFirstName,\r\n LN: consumerLastName,\r\n id: consumerId,\r\n });\r\n\r\n selectedConsumer = { card: card, id: consumerId };\r\n\r\n const plans = await planAjax.getConsumerPlans({\r\n token: $.session.Token,\r\n consumerId: selectedConsumer.id,\r\n });\r\n const pd = plans.filter(p => p.consumerPlanId === pId)[0];\r\n const assessmentData = await assessment.getAssessmentData(pd.consumerPlanId);\r\n const type = pd.planType === 'A' ? 'a' : 'r';\r\n const effectiveStart = pd.effectiveStart.split(' ')[0];\r\n const effectiveEnd = pd.effectiveEnd.split(' ')[0];\r\n const isActive = pd.active === 'True' ? true : false;\r\n\r\n planId = pd.consumerPlanId;\r\n planType = type;\r\n planStatus = pd.planStatus ? pd.planStatus : 'D';\r\n planActiveStatus = isActive;\r\n\r\n // TODO: below will need changed to call buildPlanPage()\r\n planDates.dashHandler({\r\n planYearStartDate: new Date(pd.planYearStart.split(' ')[0]),\r\n planYearEndDate: new Date(pd.planYearEnd.split(' ')[0]),\r\n effectiveStartDate: new Date(pd.effectiveStart.split(' ')[0]),\r\n effectiveEndDate: new Date(pd.effectiveEnd.split(' ')[0]),\r\n planReviewDate: pd.reviewDate ? new Date(pd.reviewDate.split(' ')[0]) : '',\r\n });\r\n await buildPlanPage(['w', 'a', 'i'], pageLoadCallback);\r\n // TODO: end\r\n\r\n // setTimeout(() => {\r\n\r\n // }, 1000);\r\n }\r\n\r\n // Helpers\r\n //---------------------------------------------\r\n async function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n PROGRESS.init();\r\n PROGRESS.SPINNER.show('Gathering Plans...');\r\n selectedConsumer = roster2.getActiveConsumers()[0];\r\n if ($.session.applicationName === 'Advisor') {\r\n planAjax.getConsumerPeopleId(selectedConsumer.id, function (results) {\r\n $.session.planPeopleId = results[0].id;\r\n selectedConsumer.consumerId = selectedConsumer.id;\r\n selectedConsumer.id = $.session.planPeopleId;\r\n loadLandingPage();\r\n DOM.toggleNavLayout();\r\n });\r\n } else {\r\n loadLandingPage();\r\n DOM.toggleNavLayout();\r\n }\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n //-- get\r\n function getSelectedConsumer() {\r\n return selectedConsumer;\r\n }\r\n function getCurrentPlanId() {\r\n return planId;\r\n }\r\n function getCurrentPlanType() {\r\n return planType;\r\n }\r\n function getPlanStatus() {\r\n return planStatus;\r\n }\r\n function getPlanActiveStatus() {\r\n return planActiveStatus;\r\n }\r\n function getPlanDropdownData() {\r\n return dropdownData;\r\n }\r\n function getHasPreviousPlans() {\r\n return previousPlansData ? (previousPlansData.length > 0 ? true : false) : false;\r\n }\r\n function getISPValidation() {\r\n return ISPValidationCheck;\r\n }\r\n //-- set\r\n function setSelectedConsumer(consumer) {\r\n selectedConsumer = consumer;\r\n }\r\n function setPlanId(newPlanId) {\r\n planId = newPlanId;\r\n }\r\n function setPlanType(newPlanType) {\r\n planType = newPlanType;\r\n }\r\n function setPlanStatus(newPlanStatus) {\r\n if (planStatus !== newPlanStatus) {\r\n planStatus = newPlanStatus;\r\n\r\n if (planStatus === 'D') {\r\n // do stuff\r\n } else {\r\n // do stuff\r\n }\r\n\r\n //isp informed consent\r\n // informedConsent.planStatusChange();\r\n //isp signatures\r\n // planSignature.planStatusChange();\r\n //isp contact information\r\n // contactInformation.planStatusChange();\r\n }\r\n }\r\n function setRevisionNumber(revNum) {\r\n revisionNumber = revNum;\r\n }\r\n function setPlanActiveStatus(newActiveStatus) {\r\n planActiveStatus = newActiveStatus;\r\n }\r\n //-- clear\r\n function clearAllData() {\r\n selectedConsumer = undefined;\r\n clearAllDataKeepConsumer();\r\n }\r\n function clearAllDataKeepConsumer() {\r\n planId = undefined;\r\n planType = undefined;\r\n planStatus = undefined;\r\n planActiveStatus = undefined;\r\n revisionNumber = undefined;\r\n downloadedFromSalesforce = undefined;\r\n\r\n hasPreviousPlans = undefined;\r\n priorConsumerPlanId = undefined;\r\n\r\n landingPage = undefined;\r\n overviewTable = undefined;\r\n newPlanBtn = undefined;\r\n planSetupPage = undefined;\r\n setupWrap = undefined;\r\n prevPlanTable = undefined;\r\n datesBoxDiv = undefined;\r\n doneBtn = undefined;\r\n planHeader = undefined;\r\n planHeaderButtons = undefined;\r\n planHeaderGeneralInfoBar = undefined;\r\n morePopup = undefined;\r\n morePopupMenu = undefined;\r\n editDatesScreen = undefined;\r\n updateStatusScreen = undefined;\r\n deleteScreen = undefined;\r\n reactivateScreen = undefined;\r\n addWorkflowScreen = undefined;\r\n sentToOnet = '';\r\n\r\n planDates.clearData();\r\n assessmentCard.clearData();\r\n }\r\n function clearPlanId() {\r\n planId = undefined;\r\n }\r\n\r\n // Plan Page - Q&A, ISP, Workflow, etc...\r\n //---------------------------------------------\r\n // more popup\r\n function refreshMoreMenu() {\r\n const newMorePopupMenu = buildMorePopupMenu();\r\n menuInnerWrap.replaceChild(newMorePopupMenu, morePopupMenu);\r\n morePopupMenu = newMorePopupMenu;\r\n }\r\n function buildEditDatesScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'editDatesScreen';\r\n screen.classList.add('screen');\r\n\r\n const validDates = isValid => {\r\n if (isValid) {\r\n updateBtn.classList.remove('disabled');\r\n updateBtn.disabled = false;\r\n } else {\r\n updateBtn.classList.add('disabled');\r\n updateBtn.disabled = true;\r\n }\r\n };\r\n const dateBoxDiv = planDates.buildDatesBox(validDates);\r\n\r\n const updateBtn = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const success = await planDates.updatePlanDates(planId, planType);\r\n // const message = success === 1 ? 'Dates successfully changed.' : 'Plan dates were not able to be changed.';\r\n const message = 'Dates successfully changed.';\r\n const successDiv = successfulSave.get(message, true);\r\n // if (success !== 1) successDiv.classList.add('error');\r\n\r\n dateBoxDiv.style.display = 'none';\r\n btnWrap.style.display = 'none';\r\n screen.appendChild(successDiv);\r\n\r\n setTimeout(() => {\r\n screen.removeChild(successDiv);\r\n\r\n dateBoxDiv.removeAttribute('style');\r\n btnWrap.removeAttribute('style');\r\n\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n\r\n refreshGeneralInfo();\r\n assessmentCard.refreshAssessmentCard({\r\n planStatus,\r\n planId,\r\n isActive: planActiveStatus,\r\n });\r\n ISP.refreshISP(planId);\r\n }, 1000);\r\n // let cache = {eventTypeId : planId, eventType : \"plan\", eventId : 13};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n planDates.resetPlanDatesToOriginal();\r\n planDates.updateBoxDateValues();\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n btnWrap.appendChild(updateBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n screen.appendChild(dateBoxDiv);\r\n screen.appendChild(btnWrap);\r\n\r\n return screen;\r\n }\r\n function buildUpdateStatusScreen() {\r\n let newStatus;\r\n\r\n const screen = document.createElement('div');\r\n screen.id = 'updateStatusScreen';\r\n screen.classList.add('screen');\r\n\r\n const currentStatus = document.createElement('div');\r\n currentStatus.classList.add('currentStatus');\r\n currentStatus.innerHTML = `\r\n

    Current Status:

    ${planStatus === 'D' ? '

    Draft

    ' : '

    Complete

    '}\r\n `;\r\n\r\n const statusDropdown = dropdown.build({\r\n className: `statusDropdown`,\r\n label: 'Status',\r\n style: 'secondary',\r\n });\r\n const dropdownData = [\r\n { value: 'D', text: 'Draft' },\r\n { value: 'C', text: 'Complete' },\r\n ];\r\n dropdown.populate(statusDropdown, dropdownData, planStatus);\r\n statusDropdown.addEventListener('change', e => {\r\n var selectedOption = e.target.options[e.target.selectedIndex];\r\n newStatus = selectedOption.value;\r\n if (newStatus === planStatus) {\r\n updateBtn.classList.add('disabled');\r\n } else {\r\n updateBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n const updateBtn = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n let success;\r\n\r\n if (newStatus !== planStatus) {\r\n success = await planAjax.updateConsumerPlanSetStatus({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n status: newStatus,\r\n });\r\n planStatus = newStatus;\r\n if (planStatus === 'C') {\r\n finalizeBtn.classList.remove('disabled');\r\n } else {\r\n finalizeBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n const message = success === 1 ? 'Status successfully updated.' : 'Status was not able to be updated.';\r\n const successDiv = successfulSave.get(message, true);\r\n if (success !== 1) successDiv.classList.add('error');\r\n\r\n currentStatus.style.display = 'none';\r\n statusDropdown.style.display = 'none';\r\n btnWrap.style.display = 'none';\r\n screen.appendChild(successDiv);\r\n\r\n setTimeout(() => {\r\n screen.removeChild(successDiv);\r\n\r\n currentStatus.removeAttribute('style');\r\n statusDropdown.removeAttribute('style');\r\n btnWrap.removeAttribute('style');\r\n\r\n refreshMoreMenu();\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n\r\n if (success === 1) {\r\n assessmentCard.refreshAssessmentCard({\r\n planStatus,\r\n planId,\r\n isActive: planActiveStatus,\r\n });\r\n ISP.refreshISP(planId);\r\n }\r\n }, 1000);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n btnWrap.appendChild(updateBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n screen.appendChild(currentStatus);\r\n screen.appendChild(statusDropdown);\r\n screen.appendChild(btnWrap);\r\n\r\n return screen;\r\n }\r\n function buildDeleteScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'deleteScreen';\r\n screen.classList.add('screen');\r\n\r\n const warningMessage = document.createElement('div');\r\n warningMessage.classList.add('warningMessage');\r\n\r\n const effectiveStart = planDates.getEffectiveStartDate();\r\n const formatedDate = UTIL.formatDateFromDateObj(effectiveStart);\r\n const splitFormatedDate = formatedDate.split('-');\r\n let esDate = `${splitFormatedDate[1]}/${splitFormatedDate[2]}/${splitFormatedDate[0].substring(2)}`;\r\n\r\n if (planType === 'Annual' || planType === 'a') {\r\n warningMessage.innerHTML = `\r\n

    Are you sure you want to delete the entire Annual plan effective on ${esDate} for \r\n ${getConsumerNameFromCard(selectedConsumer)}?

    \r\n `;\r\n } else {\r\n warningMessage.innerHTML = `\r\n

    Are you sure you want to delete the entire Revision ${revisionNumber} plan effective on ${esDate} for \r\n ${getConsumerNameFromCard(selectedConsumer)}?

    \r\n `;\r\n }\r\n\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const success = await planAjax.deletePlan({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n });\r\n const message = success === 'success' ? 'Plan was deleted.' : 'Unable to delete plan.';\r\n const successDiv = successfulSave.get(message, true);\r\n if (success !== 'success') {\r\n successDiv.classList.add('error');\r\n return;\r\n }\r\n\r\n const outcomes = [...document.querySelectorAll('.outcome')];\r\n outcomes.forEach(async outcome => {\r\n const isNew = outcome.dataset.newOutcome;\r\n const outcomeId = outcome.id;\r\n\r\n if (isNew === 'false') {\r\n await planOutcomesAjax.deletePlanOutcome({\r\n token: $.session.Token,\r\n outcomeId: outcomeId,\r\n });\r\n }\r\n });\r\n\r\n warningMessage.style.display = 'none';\r\n btnWrap.style.display = 'none';\r\n screen.appendChild(successDiv);\r\n\r\n setTimeout(function () {\r\n screen.removeChild(successDiv);\r\n\r\n warningMessage.removeAttribute('style');\r\n btnWrap.removeAttribute('style');\r\n\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n\r\n if (success === 'success') {\r\n POPUP.hide(morePopup);\r\n loadLandingPage();\r\n }\r\n }, 1000);\r\n // let cache27 = {eventTypeId : planId, eventType : \"plan\", eventId : 27};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache27);\r\n // let cache28 = {eventTypeId : planId, eventType : \"plan\", eventId : 28};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache28);\r\n },\r\n });\r\n\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n screen.appendChild(warningMessage);\r\n screen.appendChild(btnWrap);\r\n\r\n return screen;\r\n }\r\n function buildReactivateScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'reactivateScreen';\r\n screen.classList.add('screen');\r\n\r\n const warningMessage = document.createElement('div');\r\n warningMessage.classList.add('warningMessage');\r\n warningMessage.innerHTML = '

    Are you sure you want to reactivate this plan?

    ';\r\n\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const success = await planAjax.updateConsumerPlanReactivate({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n });\r\n\r\n const message = success === 1 ? 'Plan successfully reactivated.' : 'Unable to reactivate plan.';\r\n const successDiv = successfulSave.get(message, true);\r\n if (success !== 1) successDiv.classList.add('error');\r\n\r\n warningMessage.style.display = 'none';\r\n btnWrap.style.display = 'none';\r\n screen.appendChild(successDiv);\r\n\r\n setTimeout(() => {\r\n screen.removeChild(successDiv);\r\n\r\n warningMessage.removeAttribute('style');\r\n btnWrap.removeAttribute('style');\r\n\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n\r\n if (success === 1) {\r\n planActiveStatus = !planActiveStatus;\r\n assessmentCard.refreshAssessmentCard({\r\n planStatus,\r\n planId,\r\n isActive: planActiveStatus,\r\n });\r\n ISP.refreshISP(planId);\r\n }\r\n }, 1000);\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n screen.appendChild(warningMessage);\r\n screen.appendChild(btnWrap);\r\n\r\n return screen;\r\n }\r\n function buildAddWorkflowScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'addWorkflowScreen';\r\n screen.classList.add('screen');\r\n\r\n screen.addEventListener('click', e => {\r\n if (e.target.classList.contains('workflowListItem')) {\r\n const templateID = e.target.dataset.templateId;\r\n\r\n if (!e.target.classList.contains('selected')) {\r\n e.target.classList.add('selected');\r\n selectedWorkflows.push(templateID);\r\n } else {\r\n e.target.classList.remove('selected');\r\n selectedWorkflows = selectedWorkflows.filter(wf => wf !== templateID);\r\n }\r\n\r\n selectedWorkflows.length > 0\r\n ? addWorkflowDoneBtn.classList.remove('disabled')\r\n : addWorkflowDoneBtn.classList.add('disabled');\r\n }\r\n });\r\n\r\n return screen;\r\n }\r\n async function populateAddWorkflowScreen() {\r\n const processId = planWorkflow.getProcessId(planType);\r\n selectedWorkflows = [];\r\n\r\n const screen = document.getElementById('addWorkflowScreen');\r\n screen.innerHTML = '';\r\n\r\n const title = document.createElement('h2');\r\n title.innerHTML = 'Select workflow(s) to attach.';\r\n screen.appendChild(title);\r\n\r\n const wfvData = await planWorkflow.getWorkflowList(processId, planId);\r\n if (wfvData && wfvData.length > 0) {\r\n const list = planWorkflow.buildWorkflowList(wfvData);\r\n screen.appendChild(list);\r\n }\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n addWorkflowDoneBtn.classList.add('disabled');\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n addWorkflowDoneBtn = button.build({\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['copySelectedBtn', 'disabled'],\r\n callback: () => {\r\n addWorkflowDoneBtn.classList.add('disabled');\r\n cancelBtn.classList.add('disabled');\r\n\r\n if (selectedWorkflows && selectedWorkflows.length > 0) {\r\n selectedWorkflows.forEach(workflowTemplateId => {\r\n WorkflowViewerAjax.copyWorkflowtemplateToRecord({\r\n token: $.session.Token,\r\n templateId: workflowTemplateId,\r\n referenceId: planId,\r\n peopleId: selectedConsumer.id,\r\n });\r\n });\r\n\r\n const message = 'Workflows Added';\r\n const successDiv = successfulSave.get(null, true);\r\n screen.appendChild(successDiv);\r\n\r\n setTimeout(() => {\r\n screen.removeChild(successDiv);\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n }, 1000);\r\n }\r\n },\r\n });\r\n\r\n btnWrap.appendChild(addWorkflowDoneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n screen.appendChild(btnWrap);\r\n }\r\n function buildReportsScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'reportsScreen';\r\n screen.classList.add('screen');\r\n\r\n const attachmentsWrap = document.createElement('div');\r\n attachmentsWrap.classList.add('attachmentsWrap');\r\n const attachHeading = document.createElement('p');\r\n attachHeading.classList.add('attachmentsHeading');\r\n attachHeading.innerText = `Please select the attachment(s) that should be included with the report.`;\r\n attachmentsWrap.appendChild(attachHeading);\r\n\r\n const planAttWrap = document.createElement('div');\r\n planAttWrap.classList.add('planAttWrap');\r\n const workflowAttWrap = document.createElement('div');\r\n workflowAttWrap.classList.add('workflowAttWrap');\r\n const signatureAttWrap = document.createElement('div');\r\n signatureAttWrap.classList.add('signatureAttWrap');\r\n attachmentsWrap.appendChild(planAttWrap);\r\n attachmentsWrap.appendChild(workflowAttWrap);\r\n attachmentsWrap.appendChild(signatureAttWrap);\r\n\r\n const planHeading = document.createElement('h2');\r\n const workflowHeading = document.createElement('h2');\r\n const signHeading = document.createElement('h2');\r\n planHeading.innerText = 'Plan Attachments';\r\n workflowHeading.innerText = 'Workflow Attachments';\r\n signHeading.innerText = 'Signature Attachments';\r\n planAttWrap.appendChild(planHeading);\r\n workflowAttWrap.appendChild(workflowHeading);\r\n signatureAttWrap.appendChild(signHeading);\r\n\r\n planAttBody = document.createElement('div');\r\n signatureAttBody = document.createElement('div');\r\n workflowAttBody = document.createElement('div');\r\n planAttWrap.appendChild(planAttBody);\r\n signatureAttWrap.appendChild(signatureAttBody);\r\n workflowAttWrap.appendChild(workflowAttBody);\r\n\r\n screen.appendChild(attachmentsWrap);\r\n\r\n return screen;\r\n }\r\n function buildReportsAttachmentsScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'reportsAttachmentScreen';\r\n screen.classList.add('screen');\r\n\r\n return screen;\r\n }\r\n function buildDODDScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'DODDScreen';\r\n screen.classList.add('screen');\r\n\r\n //const message = document.createElement('p');\r\n //message.classList.add('doddMessage');\r\n //screen.appendChild(message);\r\n\r\n const attachmentsWrap = document.createElement('div');\r\n attachmentsWrap.classList.add('attachmentsWrap');\r\n const attachHeading = document.createElement('p');\r\n attachHeading.classList.add('attachmentsHeading');\r\n attachHeading.innerText = `Please select the attachment(s) that should be sent to DODD with the plan.`;\r\n attachmentsWrap.appendChild(attachHeading);\r\n\r\n const DODDplanAttWrap = document.createElement('div');\r\n DODDplanAttWrap.classList.add('planAttWrap');\r\n const DODDsignatureAttWrap = document.createElement('div');\r\n DODDsignatureAttWrap.classList.add('signatureAttWrap');\r\n const DODDworkflowAttWrap = document.createElement('div');\r\n DODDworkflowAttWrap.classList.add('workflowAttWrap');\r\n attachmentsWrap.appendChild(DODDplanAttWrap);\r\n attachmentsWrap.appendChild(DODDsignatureAttWrap);\r\n attachmentsWrap.appendChild(DODDworkflowAttWrap);\r\n\r\n const planHeading = document.createElement('h2');\r\n const signHeading = document.createElement('h2');\r\n const workflowHeading = document.createElement('h2');\r\n planHeading.innerText = 'Plan and Assessment Attachments';\r\n signHeading.innerText = 'Signature Attachments';\r\n workflowHeading.innerText = 'Workflow Attachments';\r\n DODDplanAttWrap.appendChild(planHeading);\r\n DODDsignatureAttWrap.appendChild(signHeading);\r\n DODDworkflowAttWrap.appendChild(workflowHeading);\r\n\r\n DODDplanAttBody = document.createElement('div');\r\n DODDsignAttBody = document.createElement('div');\r\n DODDworkflowAttBody = document.createElement('div');\r\n DODDplanAttWrap.appendChild(DODDplanAttBody);\r\n DODDsignatureAttWrap.appendChild(DODDsignAttBody);\r\n DODDworkflowAttWrap.appendChild(DODDworkflowAttBody);\r\n\r\n screen.appendChild(attachmentsWrap);\r\n\r\n return screen;\r\n }\r\n function buildPortalScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'portalScreen';\r\n screen.classList.add('screen');\r\n\r\n const attachmentsWrap = document.createElement('div');\r\n attachmentsWrap.classList.add('attachmentsWrap');\r\n const attachHeading = document.createElement('p');\r\n attachHeading.classList.add('attachmentsHeading');\r\n attachHeading.innerText = `Please select the attachment(s) that should be included with the report.`;\r\n attachmentsWrap.appendChild(attachHeading);\r\n\r\n const portalPlanAttWrap = document.createElement('div');\r\n portalPlanAttWrap.classList.add('planAttWrap');\r\n const portalWorkflowAttWrap = document.createElement('div');\r\n portalWorkflowAttWrap.classList.add('workflowAttWrap');\r\n const portalSignatureAttWrap = document.createElement('div');\r\n portalSignatureAttWrap.classList.add('signatureAttWrap');\r\n attachmentsWrap.appendChild(portalPlanAttWrap);\r\n attachmentsWrap.appendChild(portalWorkflowAttWrap);\r\n attachmentsWrap.appendChild(portalSignatureAttWrap);\r\n\r\n const planHeading = document.createElement('h2');\r\n const workflowHeading = document.createElement('h2');\r\n const signHeading = document.createElement('h2');\r\n planHeading.innerText = 'Plan Attachments';\r\n workflowHeading.innerText = 'Workflow Attachments';\r\n signHeading.innerText = 'Signature Attachments';\r\n portalPlanAttWrap.appendChild(planHeading);\r\n portalWorkflowAttWrap.appendChild(workflowHeading);\r\n portalSignatureAttWrap.appendChild(signHeading);\r\n\r\n portalPlanAttBody = document.createElement('div');\r\n portalSignatureAttBody = document.createElement('div');\r\n portalWorkflowAttBody = document.createElement('div');\r\n portalPlanAttWrap.appendChild(portalPlanAttBody);\r\n portalSignatureAttWrap.appendChild(portalSignatureAttBody);\r\n portalWorkflowAttWrap.appendChild(portalWorkflowAttBody);\r\n\r\n screen.appendChild(attachmentsWrap);\r\n\r\n return screen;\r\n }\r\n function buildSendToDODDScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'sendToDODDScreen';\r\n screen.classList.add('screen');\r\n\r\n const message = document.createElement('p');\r\n message.classList.add('doddMessage');\r\n screen.appendChild(message);\r\n\r\n return screen;\r\n }\r\n function buildChangePlanTypeScreen() {\r\n let origDateCache;\r\n let origType;\r\n let newType;\r\n let previousPlansTable;\r\n let datesBoxDiv;\r\n // data from prev plan\r\n let newPlan, newPlanData;\r\n\r\n const screen = document.createElement('div');\r\n screen.id = 'changePlanTypeScreen';\r\n screen.classList.add('screen');\r\n\r\n // current type\r\n const currentType = document.createElement('div');\r\n currentType.classList.add('currentType');\r\n currentType.innerHTML = `\r\n

    Current Type:

    ${planType === 'a' ? '

    Annual

    ' : '

    Revision

    '}\r\n `;\r\n\r\n // dropdown\r\n const typeDropdown = dropdown.build({\r\n className: `typeDropdown`,\r\n label: 'Type',\r\n style: 'secondary',\r\n });\r\n dropdown.populate(\r\n typeDropdown,\r\n [\r\n { value: 'a', text: 'Annual' },\r\n { value: 'r', text: 'Revision' },\r\n ],\r\n planType,\r\n );\r\n typeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n newType = selectedOption.value;\r\n if (newType === planType) {\r\n updateBtn.classList.add('disabled');\r\n } else {\r\n updateBtn.classList.remove('disabled');\r\n\r\n if (newType === 'r') {\r\n // prev plans table\r\n previousPlansTable = buildPreviousPlansTable(true, (selectedPlan, planData) => {\r\n newPlan = selectedPlan;\r\n newPlanData = planData;\r\n\r\n origType = planType;\r\n origDateCache = planDates.setRevisionPlanDates(newPlanData);\r\n planType = newType;\r\n\r\n const previouslySeletedRow = previousPlansTable.querySelector('.selected');\r\n if (previouslySeletedRow) previouslySeletedRow.classList.remove('selected');\r\n selectedPlan.classList.add('selected');\r\n\r\n if (screen.contains(datesBoxDiv)) screen.removeChild(datesBoxDiv);\r\n datesBoxDiv = planDates.buildDatesBox(isValid => {\r\n if (isValid) {\r\n updateBtn.classList.remove('disabled');\r\n } else {\r\n updateBtn.classList.add('disabled');\r\n }\r\n }, true);\r\n screen.insertBefore(datesBoxDiv, btnWrap);\r\n });\r\n screen.insertBefore(previousPlansTable, btnWrap);\r\n } else {\r\n if (previousPlansTable) screen.removeChild(previousPlansTable);\r\n if (datesBoxDiv) screen.removeChild(datesBoxDiv);\r\n if (origDateCache) planDates.resetPlanDatesFromChangeTypeMenu(origDateCache);\r\n }\r\n }\r\n });\r\n\r\n // btns\r\n const updateBtn = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const success = await planAjax.updatePlanType({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n prevPlanId: newType === 'a' ? planId : newPlanData.consumerPlanId,\r\n planType: newType.toUpperCase(),\r\n revisionNumber: newType === 'r' ? parseInt(newPlanData.revisionNumber) + 1 : '',\r\n planYearStart: UTIL.formatDateToIso(dates.formatISO(planDates.getPlanYearStartDate()).split('T')[0]),\r\n planYearEnd: UTIL.formatDateToIso(dates.formatISO(planDates.getPlanYearEndDate()).split('T')[0]),\r\n effectiveStartDate: UTIL.formatDateToIso(dates.formatISO(planDates.getEffectiveStartDate()).split('T')[0]),\r\n effectiveEndDate: UTIL.formatDateToIso(dates.formatISO(planDates.getEffectiveEndDate())).split('T')[0],\r\n reviewDate: UTIL.formatDateToIso(dates.formatISO(planDates.getPlanReviewDate())).split('T')[0],\r\n });\r\n\r\n if (success === 'Success') {\r\n currentType.innerHTML = `

    Current Type:

    ${planType === 'a' ? '

    Annual

    ' : '

    Revision

    '}`;\r\n }\r\n\r\n const message = success === 'Success' ? 'Type successfully updated.' : 'Type was not able to be updated.';\r\n const successDiv = successfulSave.get(message, true);\r\n if (success !== 'Success') successDiv.classList.add('error');\r\n\r\n currentType.style.display = 'none';\r\n typeDropdown.style.display = 'none';\r\n btnWrap.style.display = 'none';\r\n screen.appendChild(successDiv);\r\n\r\n setTimeout(() => {\r\n screen.removeChild(successDiv);\r\n\r\n currentType.removeAttribute('style');\r\n typeDropdown.removeAttribute('style');\r\n btnWrap.removeAttribute('style');\r\n\r\n refreshMoreMenu();\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n\r\n if (success === 'Success') {\r\n refreshGeneralInfo();\r\n assessmentCard.refreshAssessmentCard({\r\n planStatus,\r\n planId,\r\n isActive: planActiveStatus,\r\n });\r\n ISP.refreshISP(planId);\r\n } else {\r\n if (previousPlansTable) screen.removeChild(previousPlansTable);\r\n if (datesBoxDiv) screen.removeChild(datesBoxDiv);\r\n\r\n // reset type dropdown value\r\n const typeSelect = typeDropdown.querySelector('select');\r\n typeSelect.value = planType;\r\n // reset dates\r\n if (origDateCache) planDates.resetPlanDatesFromChangeTypeMenu(origDateCache);\r\n // reset type\r\n plantype = origType;\r\n }\r\n }, 1000);\r\n },\r\n });\r\n updateBtn.classList.add('disabled');\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n if (previousPlansTable) screen.removeChild(previousPlansTable);\r\n if (datesBoxDiv) screen.removeChild(datesBoxDiv);\r\n\r\n // reset type dropdown value\r\n const typeSelect = typeDropdown.querySelector('select');\r\n typeSelect.value = planType;\r\n // reset dates\r\n if (origDateCache) planDates.resetPlanDatesFromChangeTypeMenu(origDateCache);\r\n // reset type\r\n plantype = origType;\r\n\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n btnWrap.appendChild(updateBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n screen.appendChild(currentType);\r\n screen.appendChild(typeDropdown);\r\n screen.appendChild(btnWrap);\r\n\r\n return screen;\r\n }\r\n function getAttachmentIds(attachments) {\r\n const idArray = [];\r\n\r\n for (const prop in attachments) {\r\n idArray.push(attachments[prop].attachmentId);\r\n }\r\n\r\n return idArray;\r\n }\r\n\r\n function getwfstepdocIds(attachments) {\r\n const idArray = [];\r\n\r\n for (const prop in attachments) {\r\n idArray.push(attachments[prop].workflowstepdocId);\r\n }\r\n\r\n return idArray;\r\n }\r\n\r\n async function runReportScreen(extraSpace) {\r\n const selectedAttachmentsPlan = {};\r\n const selectedAttachmentsWorkflow = {};\r\n const selectedAttachmentsSignature = {};\r\n\r\n // clear out body before each run to prevent dups\r\n planAttBody.innerHTML = '';\r\n workflowAttBody.innerHTML = '';\r\n signatureAttBody.innerHTML = '';\r\n\r\n // Show Attachements\r\n const attachments = await planAjax.getPlanAndWorkFlowAttachments({\r\n token: $.session.Token,\r\n assessmentId: planId, //TODO\r\n });\r\n\r\n let index = 0;\r\n\r\n if (attachments) {\r\n for (const prop in attachments) {\r\n attachments[prop].order = index;\r\n const a = attachments[prop];\r\n const attachment = document.createElement('div');\r\n attachment.classList.add('attachment');\r\n const description = document.createElement('p');\r\n description.innerText = a.description;\r\n attachment.appendChild(description);\r\n\r\n attachment.addEventListener('click', () => {\r\n if (!attachment.classList.contains('selected')) {\r\n attachment.classList.add('selected');\r\n if (a.sigAttachmentId) {\r\n selectedAttachmentsSignature[a.order] = { ...a };\r\n } else if (a.whereFrom === 'Plan') {\r\n selectedAttachmentsPlan[a.order] = { ...a };\r\n } else {\r\n selectedAttachmentsWorkflow[a.order] = { ...a };\r\n }\r\n } else {\r\n attachment.classList.remove('selected');\r\n if (a.sigAttachmentId) {\r\n delete selectedAttachmentsSignature[a.order];\r\n } else if (a.whereFrom === 'Plan') {\r\n delete selectedAttachmentsPlan[a.order];\r\n } else {\r\n delete selectedAttachmentsWorkflow[a.order];\r\n }\r\n }\r\n });\r\n\r\n if (a.sigAttachmentId) {\r\n signatureAttBody.appendChild(attachment);\r\n } else if (a.whereFrom === 'Plan') {\r\n planAttBody.appendChild(attachment);\r\n } else {\r\n workflowAttBody.appendChild(attachment);\r\n }\r\n\r\n index++;\r\n }\r\n }\r\n\r\n // checkbox\r\n includeCheckbox = input.buildCheckbox({\r\n id: 'reportCheckbox',\r\n // className: 'reportCheckbox',\r\n isChecked: include === 'Y' ? true : false,\r\n });\r\n\r\n includeCheckbox.addEventListener('change', event => {\r\n include = event.target.checked ? 'Y' : 'N';\r\n });\r\n\r\n const doneBtn = button.build({\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n let isSuccess;\r\n // build & show spinner\r\n const spinner = PROGRESS.SPINNER.get('Building Report...');\r\n const screenInner = reportsScreen.querySelector('.attachmentsWrap');\r\n reportsScreen.removeChild(doneBtn);\r\n reportsScreen.removeChild(checkboxArea);\r\n reportsScreen.removeChild(screenInner);\r\n reportsScreen.appendChild(spinner);\r\n // generate report\r\n if (\r\n Object.keys(selectedAttachmentsPlan).length > 0 ||\r\n Object.keys(selectedAttachmentsWorkflow).length > 0 ||\r\n Object.keys(selectedAttachmentsSignature).length > 0\r\n ) {\r\n const planAttachmentIds = getAttachmentIds(selectedAttachmentsPlan);\r\n const wfAttachmentIds = getAttachmentIds(selectedAttachmentsWorkflow);\r\n const sigAttachmentIds = getAttachmentIds(selectedAttachmentsSignature);\r\n isSuccess = assessment.generateReportWithAttachments(\r\n planId,\r\n '1',\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n 'false', //DODDFlag\r\n 'false', //signatureOnly\r\n include, // 'Y' or 'N' -- Include Important to, Important For, Skills and Abilities, and Risks in assessment\r\n );\r\n } else {\r\n //isSuccess = await assessment.generateReport(planId, '1', extraSpace);\r\n const planAttachmentIds = getAttachmentIds(selectedAttachmentsPlan);\r\n const wfAttachmentIds = getAttachmentIds(selectedAttachmentsWorkflow);\r\n const sigAttachmentIds = getAttachmentIds(selectedAttachmentsSignature);\r\n isSuccess = assessment.generateReportWithAttachments(\r\n planId,\r\n '1',\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n 'false', //DODDFlag\r\n 'false', //signatureOnly\r\n include, // 'Y' or 'N' -- Include Important to, Important For, Skills and Abilities, and Risks in assessment\r\n );\r\n }\r\n\r\n // remove spinner\r\n reportsScreen.removeChild(spinner);\r\n reportsScreen.appendChild(screenInner);\r\n reportsScreen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n\r\n // add checkbox\r\n // const checkboxCheck = document.createElement('div');\r\n // checkboxCheck.appendChild(includeCheckbox);\r\n const checkboxText = document.createElement('div');\r\n checkboxText.innerHTML = 'Include Important to, Important For, Skills and Abilities, and Risks in assessment';\r\n const checkboxArea = document.createElement('div');\r\n checkboxArea.classList.add('checkboxWrap');\r\n checkboxArea.appendChild(includeCheckbox);\r\n checkboxArea.appendChild(checkboxText);\r\n reportsScreen.appendChild(checkboxArea);\r\n reportsScreen.appendChild(doneBtn);\r\n }\r\n\r\n async function runPortalScreen(extraSpace) {\r\n const selectedAttachmentsPlan = {};\r\n const selectedAttachmentsWorkflow = {};\r\n const selectedAttachmentsSignature = {};\r\n\r\n // clear out body before each run to prevent dups\r\n portalPlanAttBody.innerHTML = '';\r\n portalWorkflowAttBody.innerHTML = '';\r\n portalSignatureAttBody.innerHTML = '';\r\n\r\n // Show Attachements\r\n const attachments = await planAjax.getPlanAndWorkFlowAttachments({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n let index = 0;\r\n\r\n if (attachments) {\r\n for (const prop in attachments) {\r\n attachments[prop].order = index;\r\n const a = attachments[prop];\r\n const attachment = document.createElement('div');\r\n attachment.classList.add('attachment');\r\n const description = document.createElement('p');\r\n description.innerText = a.description;\r\n attachment.appendChild(description);\r\n\r\n attachment.addEventListener('click', () => {\r\n if (!attachment.classList.contains('selected')) {\r\n attachment.classList.add('selected');\r\n if (a.sigAttachmentId) {\r\n selectedAttachmentsSignature[a.order] = { ...a };\r\n } else if (a.whereFrom === 'Plan') {\r\n selectedAttachmentsPlan[a.order] = { ...a };\r\n } else {\r\n selectedAttachmentsWorkflow[a.order] = { ...a };\r\n }\r\n } else {\r\n attachment.classList.remove('selected');\r\n if (a.sigAttachmentId) {\r\n delete selectedAttachmentsSignature[a.order];\r\n } else if (a.whereFrom === 'Plan') {\r\n delete selectedAttachmentsPlan[a.order];\r\n } else {\r\n delete selectedAttachmentsWorkflow[a.order];\r\n }\r\n }\r\n });\r\n\r\n if (a.sigAttachmentId) {\r\n portalSignatureAttBody.appendChild(attachment);\r\n } else if (a.whereFrom === 'Plan') {\r\n portalPlanAttBody.appendChild(attachment);\r\n } else {\r\n portalWorkflowAttBody.appendChild(attachment);\r\n }\r\n\r\n index++;\r\n }\r\n }\r\n\r\n // checkbox\r\n includeCheckbox = input.buildCheckbox({\r\n id: 'portalCheckbox',\r\n isChecked: include === 'Y' ? true : false,\r\n });\r\n\r\n includeCheckbox.addEventListener('change', event => {\r\n include = event.target.checked ? 'Y' : 'N';\r\n });\r\n\r\n const doneBtn = button.build({\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n let sendSuccess;\r\n // build & show spinner\r\n const spinner = PROGRESS.SPINNER.get('Sending Plan to OhioDD.net');\r\n const screenInner = portalScreen.querySelector('.attachmentsWrap');\r\n portalScreen.removeChild(doneBtn);\r\n portalScreen.removeChild(checkboxArea);\r\n portalScreen.removeChild(screenInner);\r\n portalScreen.appendChild(spinner);\r\n // send report to ohiodd.net\r\n if (\r\n Object.keys(selectedAttachmentsPlan).length > 0 ||\r\n Object.keys(selectedAttachmentsWorkflow).length > 0 ||\r\n Object.keys(selectedAttachmentsSignature).length > 0\r\n ) {\r\n const planAttachmentIds = getAttachmentIds(selectedAttachmentsPlan);\r\n const wfAttachmentIds = getAttachmentIds(selectedAttachmentsWorkflow);\r\n const sigAttachmentIds = getAttachmentIds(selectedAttachmentsSignature);\r\n sendSuccess = await assessment.transeferPlanReportToONET(\r\n planId,\r\n '1',\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n 'false', //DODDFlag\r\n 'false', //signatureOnly\r\n include, // 'Y' or 'N' -- Include Important to, Important For, Skills and Abilities, and Risks in assessment\r\n );\r\n } else {\r\n const planAttachmentIds = getAttachmentIds(selectedAttachmentsPlan);\r\n const wfAttachmentIds = getAttachmentIds(selectedAttachmentsWorkflow);\r\n const sigAttachmentIds = getAttachmentIds(selectedAttachmentsSignature);\r\n sendSuccess = await assessment.transeferPlanReportToONET(\r\n planId,\r\n '1',\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n 'false', //DODDFlag\r\n 'false', //signatureOnly\r\n include, // 'Y' or 'N' -- Include Important to, Important For, Skills and Abilities, and Risks in assessment\r\n );\r\n }\r\n\r\n sendToPortalAlert(sendSuccess);\r\n\r\n // remove spinner\r\n portalScreen.removeChild(spinner);\r\n portalScreen.appendChild(screenInner);\r\n portalScreen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n\r\n const checkboxText = document.createElement('div');\r\n checkboxText.innerHTML = 'Include Important to, Important For, Skills and Abilities, and Risks in assessment';\r\n const checkboxArea = document.createElement('div');\r\n checkboxArea.classList.add('checkboxWrap');\r\n checkboxArea.appendChild(includeCheckbox);\r\n checkboxArea.appendChild(checkboxText);\r\n portalScreen.appendChild(checkboxArea);\r\n portalScreen.appendChild(doneBtn);\r\n }\r\n\r\n async function runDODDScreen(extraSpace) {\r\n const selectedAttachmentsPlan = {};\r\n const selectedAttachmentsWorkflow = {};\r\n const selectedAttachmentsSignature = {};\r\n\r\n // clear out body before each run to prevent dups\r\n DODDplanAttBody.innerHTML = '';\r\n DODDsignAttBody.innerHTML = '';\r\n DODDworkflowAttBody.innerHTML = '';\r\n\r\n // Show Attachements\r\n const attachments = await planAjax.getPlanAndWorkFlowAttachments({\r\n token: $.session.Token,\r\n assessmentId: planId, //TODO\r\n });\r\n\r\n let index = 0;\r\n\r\n if (attachments) {\r\n for (const prop in attachments) {\r\n attachments[prop].order = index;\r\n const a = attachments[prop];\r\n const attachment = document.createElement('div');\r\n attachment.classList.add('attachment');\r\n const description = document.createElement('p');\r\n description.innerText = a.description;\r\n attachment.appendChild(description);\r\n // attachment.setAttribute('data-WF-stepdocId', a.workflowstepdocId);\r\n // attachment.setAttribute('data-attachmentId', a.attachmentId);\r\n\r\n attachment.addEventListener('click', () => {\r\n if (!attachment.classList.contains('selected')) {\r\n attachment.classList.add('selected');\r\n if (a.sigAttachmentId) {\r\n selectedAttachmentsSignature[a.order] = { ...a };\r\n } else if (a.whereFrom === 'Plan') {\r\n selectedAttachmentsPlan[a.order] = { ...a };\r\n } else {\r\n selectedAttachmentsWorkflow[a.order] = { ...a };\r\n }\r\n } else {\r\n attachment.classList.remove('selected');\r\n if (a.sigAttachmentId) {\r\n delete selectedAttachmentsSignature[a.order];\r\n } else if (a.whereFrom === 'Plan') {\r\n delete selectedAttachmentsPlan[a.order];\r\n } else {\r\n delete selectedAttachmentsWorkflow[a.order];\r\n }\r\n }\r\n });\r\n\r\n if (a.sigAttachmentId) {\r\n DODDsignAttBody.appendChild(attachment);\r\n } else if (a.whereFrom === 'Plan') {\r\n DODDplanAttBody.appendChild(attachment);\r\n } else {\r\n DODDworkflowAttBody.appendChild(attachment);\r\n }\r\n\r\n index++;\r\n }\r\n }\r\n\r\n const doneBtn = button.build({\r\n text: 'Send To DODD',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n //Send plan to DODD\r\n // runSendToDODDScreen();\r\n\r\n //Send the selected plan attachments to DODD by calling the same function the report uses\r\n let sendSuccess = [];\r\n // build & show spinner\r\n const spinner = PROGRESS.SPINNER.get('Sending to DODD...');\r\n const screenInner = DODDScreen.querySelector('.attachmentsWrap');\r\n DODDScreen.removeChild(doneBtn);\r\n DODDScreen.removeChild(screenInner);\r\n DODDScreen.appendChild(spinner);\r\n // generate report\r\n // if (\r\n // Object.keys(selectedAttachmentsPlan).length > 0 ||\r\n // Object.keys(selectedAttachmentsWorkflow).length > 0 ||\r\n // Object.keys(selectedAttachmentsSignature).length > 0\r\n // ) {\r\n const planAttachmentIds = getAttachmentIds(selectedAttachmentsPlan);\r\n const wfAttachmentIds = getwfstepdocIds(selectedAttachmentsWorkflow);\r\n const sigAttachmentIds = getAttachmentIds(selectedAttachmentsSignature);\r\n try {\r\n // await needed to allow spinner to spin while request is being made\r\n // try catch added to prevent code from stopping on ajax error\r\n sendSuccess = await assessmentAjax.sendSelectedAttachmentsToDODD({\r\n token: $.session.Token,\r\n planAttachmentIds: planAttachmentIds,\r\n wfAttachmentIds: wfAttachmentIds,\r\n sigAttachmentIds: sigAttachmentIds,\r\n planId: planId,\r\n consumerId: selectedConsumer.id,\r\n });\r\n } catch (error) {\r\n console.log(error.statusText);\r\n }\r\n //* if we need to upload to dodd after sending attachments\r\n //* below was old code from old sendToDODD screen\r\n // const success = await planAjax.uploadPlanToDODD({\r\n // consumerId: selectedConsumer.id,\r\n // planId,\r\n // });\r\n // }\r\n\r\n if (\r\n sendSuccess &&\r\n (sendSuccess[0] === 'Successfully sent Plan to DODD.' ||\r\n sendSuccess[0] === 'Successfully sent Plan and selected Attachments to DODD.')\r\n ) {\r\n sendtoDODDSuccessMessage(sendSuccess);\r\n } else {\r\n sendtoDODDGeneralErrorMessage(sendSuccess);\r\n }\r\n\r\n DODDScreen.removeChild(spinner);\r\n DODDScreen.appendChild(screenInner);\r\n DODDScreen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n\r\n //TODO set date_sent_to_dodd column when the attachment is successfully uploaded to DODD\r\n },\r\n });\r\n\r\n DODDScreen.appendChild(doneBtn);\r\n }\r\n\r\n function sendtoDODDGeneralErrorMessage(sendtoDODDResponse) {\r\n console.log('sendtoDODDGeneralErrorMessage', sendtoDODDResponse[0]);\r\n var generalMessagePopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n hideX: true,\r\n });\r\n var generalBtnWrap = document.createElement('div');\r\n generalBtnWrap.classList.add('btnWrap');\r\n var closeBtnWrap = document.createElement('div');\r\n closeBtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'Copy Error to Clipboard',\r\n style: 'secondary',\r\n type: 'contained',\r\n // icon: 'checkmark',\r\n callback: async function () {\r\n navigator.clipboard.writeText(sendtoDODDResponse[0]);\r\n // POPUP.hide(generalMessagePopup);\r\n overlay.show();\r\n showOKPopup();\r\n },\r\n });\r\n var displayDetailBtn = button.build({\r\n text: 'Show Error Details',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n POPUP.hide(generalMessagePopup);\r\n overlay.show();\r\n sendtoDODDDetailErrorMessage(sendtoDODDResponse);\r\n },\r\n });\r\n var closeBtn = button.build({\r\n text: 'Close',\r\n style: 'secondary',\r\n type: 'contained',\r\n // classNames: 'btnWrap',\r\n // icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(generalMessagePopup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n generalBtnWrap.appendChild(alertokBtn);\r\n generalBtnWrap.appendChild(displayDetailBtn);\r\n closeBtnWrap.appendChild(closeBtn);\r\n var generalMessage = document.createElement('p');\r\n generalMessage.innerHTML = sendtoDODDResponse[0];\r\n generalMessagePopup.appendChild(generalMessage);\r\n generalMessagePopup.appendChild(generalBtnWrap);\r\n generalMessagePopup.appendChild(closeBtnWrap);\r\n POPUP.show(generalMessagePopup);\r\n }\r\n\r\n function sendtoDODDDetailErrorMessage(sendtoDODDResponse) {\r\n console.log('sendtoDODDDetailErrorMessage', sendtoDODDResponse[1]);\r\n var detailMessagePopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n hideX: true,\r\n });\r\n var detailBtnWrap = document.createElement('div');\r\n detailBtnWrap.classList.add('btnWrap');\r\n var closeBtnWrap = document.createElement('div');\r\n closeBtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'Copy Error to Clipboard',\r\n style: 'secondary',\r\n type: 'contained',\r\n // icon: 'checkmark',\r\n callback: async function () {\r\n navigator.clipboard.writeText(sendtoDODDResponse[0] + ' ' + sendtoDODDResponse[1]);\r\n // POPUP.hide(detailMessagePopup);\r\n overlay.show();\r\n showOKPopup();\r\n },\r\n });\r\n var displayGeneralBtn = button.build({\r\n text: 'Hide Error Details',\r\n style: 'secondary',\r\n type: 'contained',\r\n //icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(detailMessagePopup);\r\n overlay.show();\r\n sendtoDODDGeneralErrorMessage(sendtoDODDResponse);\r\n },\r\n });\r\n var closeBtn = button.build({\r\n text: 'Close',\r\n style: 'secondary',\r\n type: 'contained',\r\n // classNames: 'btnWrap',\r\n // icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(detailMessagePopup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n detailBtnWrap.appendChild(alertokBtn);\r\n detailBtnWrap.appendChild(displayGeneralBtn);\r\n closeBtnWrap.appendChild(closeBtn);\r\n var detailMessage = document.createElement('p');\r\n detailMessage.innerHTML = sendtoDODDResponse[0] + '

    ' + sendtoDODDResponse[1];\r\n detailMessagePopup.appendChild(detailMessage);\r\n detailMessagePopup.appendChild(detailBtnWrap);\r\n detailMessagePopup.appendChild(closeBtnWrap);\r\n POPUP.show(detailMessagePopup);\r\n }\r\n\r\n function showOKPopup() {\r\n var OKPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n hideX: true,\r\n });\r\n var OKBtnWrap = document.createElement('div');\r\n OKBtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n // icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(OKPopup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n OKBtnWrap.appendChild(alertokBtn);\r\n var OKMessage = document.createElement('p');\r\n OKMessage.innerHTML = 'Error Copied to Clipboard';\r\n OKPopup.appendChild(OKMessage);\r\n OKPopup.appendChild(OKBtnWrap);\r\n POPUP.show(OKPopup);\r\n }\r\n\r\n function sendtoDODDSuccessMessage(sendtoDODDResponse) {\r\n var sendtoDODDSuccessPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n hideX: true,\r\n });\r\n var OKBtnWrap = document.createElement('div');\r\n OKBtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n // icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(sendtoDODDSuccessPopup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n OKBtnWrap.appendChild(alertokBtn);\r\n var sendtoDODDSuccessMesssage = document.createElement('p');\r\n sendtoDODDSuccessMesssage.innerHTML = sendtoDODDResponse[0];\r\n sendtoDODDSuccessPopup.appendChild(sendtoDODDSuccessMesssage);\r\n sendtoDODDSuccessPopup.appendChild(OKBtnWrap);\r\n POPUP.show(sendtoDODDSuccessPopup);\r\n }\r\n\r\n function sendToPortalAlert(sendtoPortalResponse) {\r\n var alertPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n });\r\n var alertbtnWrap = document.createElement('div');\r\n alertbtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(alertPopup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n alertbtnWrap.appendChild(alertokBtn);\r\n var alertMessage = document.createElement('p');\r\n alertMessage.innerHTML = sendtoPortalResponse;\r\n alertPopup.appendChild(alertMessage);\r\n alertPopup.appendChild(alertbtnWrap);\r\n POPUP.show(alertPopup);\r\n }\r\n\r\n function buildMorePopupMenu() {\r\n const morepopupmenu = document.createElement('div');\r\n morepopupmenu.classList.add('moreMenuPopup__menu', 'visible');\r\n\r\n const reportBtn = button.build({\r\n text: 'Report',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['reportBtn'],\r\n });\r\n const reportBtn2 = button.build({\r\n text: 'Report with notes',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['reportBtn2'],\r\n });\r\n\r\n const reportSignatureBtn = button.build({\r\n text: 'Print Signature Page',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['reportBtn2'],\r\n callback: async () => {\r\n let isSuccess;\r\n const selectedAttachmentsPlan = {};\r\n const selectedAttachmentsWorkflow = {};\r\n const selectedAttachmentsSignature = {};\r\n let extraSpace = 'false';\r\n\r\n // build & show spinner\r\n // const spinner = PROGRESS.SPINNER.show('Building Report...');\r\n //const screenInner = reportsScreen.querySelector('.attachmentsWrap');\r\n // reportsScreen.removeChild(doneBtn);\r\n // reportsScreen.removeChild(screenInner);\r\n // reportsScreen.appendChild(spinner);\r\n // generate report\r\n const planAttachmentIds = getAttachmentIds(selectedAttachmentsPlan);\r\n const wfAttachmentIds = getAttachmentIds(selectedAttachmentsWorkflow);\r\n const sigAttachmentIds = getAttachmentIds(selectedAttachmentsSignature);\r\n isSuccess = assessment.generateReportWithAttachments(\r\n planId,\r\n '1',\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n 'false', //DODDFlag\r\n 'true', //signatureOnly\r\n 'N', // 'Y' or 'N' -- Include Important to, Important For, Skills and Abilities, and Risks in assessment\r\n );\r\n },\r\n });\r\n\r\n const reportBtn3 = button.build({\r\n text: 'Report with attachments',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['reportBtn2'],\r\n });\r\n const sendtoPortalBtn = button.build({\r\n text: 'Send To Portal',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames:\r\n planStatus === 'C' && $.session.webPermission === 'Web' ? ['sendtoPortalBtn'] : ['sendtoPortalBtn', 'disabled'],\r\n });\r\n const sendToDODDBtn = button.build({\r\n text: 'Send To DODD',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: planStatus === 'C' && $.session.sendToDODD ? ['sendToDODDBtn'] : ['sendToDODDBtn', 'disabled'],\r\n });\r\n const editDatesBtn = button.build({\r\n text: 'Change Dates',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames:\r\n planActiveStatus && $.session.planUpdate && planStatus !== 'C'\r\n ? ['editDatesBtn']\r\n : ['editDatesBtn', 'disabled'],\r\n });\r\n const statusBtn = button.build({\r\n text: 'Change Status',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: planActiveStatus && $.session.planUpdate ? ['statusBtn'] : ['statusBtn', 'disabled'],\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete Plan',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: downloadedFromSalesforce\r\n ? $.session.planDelete\r\n ? ['deleteBtn']\r\n : ['deleteBtn', 'disabled']\r\n : planStatus === 'D' && planActiveStatus && $.session.planUpdate && $.session.planDelete\r\n ? ['deleteBtn']\r\n : ['deleteBtn', 'disabled'],\r\n });\r\n const reactivateBtn = button.build({\r\n text: 'Reactivate Plan',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: downloadedFromSalesforce\r\n ? ['reactivateBtn', 'disabled']\r\n : !planActiveStatus && $.session.planUpdate\r\n ? ['reactivateBtn']\r\n : ['reactivateBtn', 'disabled'],\r\n });\r\n const changeTypeBtn = button.build({\r\n text: 'Change Plan Type',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: downloadedFromSalesforce ? ['planTypeBtn', 'disabled'] : ['planTypeBtn'],\r\n });\r\n\r\n //morepopupmenu.appendChild(addWorkflowBtn);\r\n morepopupmenu.appendChild(reportBtn);\r\n morepopupmenu.appendChild(reportBtn2);\r\n morepopupmenu.appendChild(reportSignatureBtn);\r\n morepopupmenu.appendChild(sendtoPortalBtn);\r\n\r\n if (sentToOnet !== '') {\r\n const sentToOnetPDiv = document.createElement('div');\r\n sentToOnetPDiv.classList.add('sentToOnetDateDiv');\r\n sentToOnetPDiv.innerHTML = `

    Previously sent on: ${sentToOnet}`;\r\n morepopupmenu.appendChild(sentToOnetPDiv);\r\n }\r\n\r\n morepopupmenu.appendChild(sendToDODDBtn);\r\n morepopupmenu.appendChild(editDatesBtn);\r\n morepopupmenu.appendChild(statusBtn);\r\n morepopupmenu.appendChild(deleteBtn);\r\n morepopupmenu.appendChild(reactivateBtn);\r\n morepopupmenu.appendChild(changeTypeBtn);\r\n\r\n morepopupmenu.addEventListener('click', async e => {\r\n e.target.classList.add('disabled');\r\n\r\n let targetScreen;\r\n\r\n switch (e.target) {\r\n case reportBtn:\r\n case reportBtn2: {\r\n targetScreen = 'reportsScreen';\r\n break;\r\n }\r\n case reportSignatureBtn: {\r\n //targetScreen = 'reportsScreen';\r\n break;\r\n }\r\n case reportBtn3: {\r\n // Below 'targetScreen' will be for when we need to select attatchments\r\n targetScreen = 'reportsAttachmentScreen';\r\n retrieveData = {\r\n token: $.session.Token,\r\n assessmentId: getCurrentPlanId(),\r\n };\r\n break;\r\n }\r\n case sendtoPortalBtn: {\r\n // Below 'targetScreen' will be for when we need to select attatchments\r\n targetScreen = 'portalScreen';\r\n retrieveData = {\r\n token: $.session.Token,\r\n assessmentId: getCurrentPlanId(),\r\n };\r\n //assessment.transeferPlanReportToONET(planId, '1');\r\n break;\r\n }\r\n case sendToDODDBtn: {\r\n //Nathan TODO call ajax\r\n targetScreen = 'DODDScreen';\r\n retrieveData = {\r\n token: $.session.Token,\r\n assessmentId: getCurrentPlanId(),\r\n };\r\n break;\r\n }\r\n case editDatesBtn: {\r\n targetScreen = 'editDatesScreen';\r\n break;\r\n }\r\n case statusBtn: {\r\n targetScreen = 'updateStatusScreen';\r\n break;\r\n }\r\n case deleteBtn: {\r\n targetScreen = 'deleteScreen';\r\n break;\r\n }\r\n case reactivateBtn: {\r\n targetScreen = 'reactivateScreen';\r\n break;\r\n }\r\n case changeTypeBtn: {\r\n targetScreen = 'changePlanTypeScreen';\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n e.target.classList.remove('disabled');\r\n\r\n if (targetScreen) {\r\n const targetScreenElement = document.getElementById(targetScreen);\r\n morePopupMenu.classList.remove('visible');\r\n targetScreenElement.classList.add('visible');\r\n }\r\n\r\n if (targetScreen === 'DODDScreen') {\r\n const extraSpace = e.target === sendToDODDBtn ? 'false' : 'true';\r\n // DODDScreen = buildDODDScreen();\r\n runDODDScreen(extraSpace);\r\n }\r\n\r\n if (targetScreen === 'reportsScreen') {\r\n const extraSpace = e.target === reportBtn ? 'false' : 'true';\r\n runReportScreen(extraSpace);\r\n }\r\n\r\n if (targetScreen === 'portalScreen') {\r\n const extraSpace = e.target === sendtoPortalBtn ? 'false' : 'true';\r\n runPortalScreen(extraSpace);\r\n }\r\n });\r\n\r\n return morepopupmenu;\r\n }\r\n async function showMorePopup() {\r\n //sentToOnet = await assessmentAjax.getSentToONETDate({\r\n // token: $.session.Token,\r\n // assessmentId: planId,\r\n //});\r\n //sentToOnet = sentToOnet[0].sentDate;\r\n morePopup = POPUP.build({\r\n classNames: 'moreMenuPopup',\r\n });\r\n\r\n menuInnerWrap = document.createElement('div');\r\n menuInnerWrap.classList.add('moreMenuPopup__innerWrap');\r\n\r\n morePopupMenu = buildMorePopupMenu();\r\n editDatesScreen = buildEditDatesScreen();\r\n updateStatusScreen = buildUpdateStatusScreen();\r\n deleteScreen = buildDeleteScreen();\r\n reactivateScreen = buildReactivateScreen();\r\n addWorkflowScreen = buildAddWorkflowScreen();\r\n reportsScreen = buildReportsScreen();\r\n reportsAttachmentScreen = buildReportsAttachmentsScreen();\r\n DODDScreen = buildDODDScreen();\r\n changePlanTypeScreen = buildChangePlanTypeScreen();\r\n portalScreen = buildPortalScreen();\r\n\r\n menuInnerWrap.appendChild(morePopupMenu);\r\n menuInnerWrap.appendChild(editDatesScreen);\r\n menuInnerWrap.appendChild(updateStatusScreen);\r\n menuInnerWrap.appendChild(deleteScreen);\r\n menuInnerWrap.appendChild(reactivateScreen);\r\n menuInnerWrap.appendChild(addWorkflowScreen);\r\n menuInnerWrap.appendChild(reportsScreen);\r\n menuInnerWrap.appendChild(reportsAttachmentScreen);\r\n menuInnerWrap.appendChild(DODDScreen);\r\n menuInnerWrap.appendChild(changePlanTypeScreen);\r\n menuInnerWrap.appendChild(portalScreen);\r\n\r\n morePopup.appendChild(menuInnerWrap);\r\n\r\n POPUP.show(morePopup);\r\n }\r\n\r\n //* Plan Finalization\r\n function splitStringSentence(sentence) {\r\n const splitsentence = sentence.split('||');\r\n const firstPart = splitsentence[0];\r\n const secondPart = splitsentence[1];\r\n return [firstPart, secondPart];\r\n }\r\n function handleReportStream(report) {\r\n if (!report) return;\r\n\r\n const arr = report;\r\n const byteArray = new Uint8Array(arr);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser == 'Explorer' || $.session.browser == 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n var fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n }\r\n function mapResultsObj(results) {\r\n const obj = {};\r\n\r\n results.forEach(r => {\r\n const [action, result, ...rest] = r.split(' ');\r\n obj[action] = rest && rest.length ? `${result},${rest}`.replaceAll(',', ' ') : result;\r\n });\r\n\r\n return obj;\r\n }\r\n async function showFinalizePopup() {\r\n let currScreen = 1;\r\n let checkboxesSelected = [];\r\n let finalizationResults;\r\n let includeInAssessment = 'false';\r\n\r\n const finalizePopup = POPUP.build({\r\n classNames: 'finalizePopup',\r\n });\r\n\r\n const screen1 = document.createElement('div');\r\n const screen2 = document.createElement('div');\r\n const screen3 = document.createElement('div');\r\n screen1.classList.add('finalizeSelect', 'finalizeScreen', 'visible');\r\n screen2.classList.add('finalizeAttachments', 'finalizeScreen');\r\n screen3.classList.add('screenThree', 'finalizeScreen');\r\n\r\n const heading1 = document.createElement('p');\r\n const heading2 = document.createElement('p');\r\n heading1.classList.add('finalizeheading');\r\n heading2.classList.add('finalizeheading');\r\n heading1.innerHTML = 'Please select the actions that should take place';\r\n heading2.innerHTML = 'Please select the attachment(s) that should be included with the report.';\r\n\r\n screen1.appendChild(heading1);\r\n screen2.appendChild(heading2);\r\n\r\n const actionBtn = button.build({\r\n text: 'Next',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (currScreen === 1) {\r\n if (selectedCheckboxes.selectAllCheck) {\r\n checkboxesSelected = ['selectAllCheck'];\r\n } else {\r\n checkboxesSelected = Object.entries(selectedCheckboxes)\r\n .filter(([key, value]) => {\r\n // return key === 'selectAllCheck'\r\n if (key === 'selectAllCheck') return false;\r\n if (value) return true;\r\n })\r\n .map(([key, value]) => {\r\n return key;\r\n });\r\n }\r\n\r\n currScreen = 2;\r\n screen1.classList.remove('visible');\r\n screen2.classList.add('visible');\r\n\r\n return;\r\n }\r\n\r\n if (currScreen === 2) {\r\n const spinner = PROGRESS.SPINNER.get('Finalizing Plan...');\r\n screen3.insertBefore(spinner, screen3.firstChild);\r\n\r\n currScreen = 3;\r\n actionBtn.textContent = 'done';\r\n actionBtn.style.display = 'none';\r\n screen2.classList.remove('visible');\r\n screen3.classList.add('visible');\r\n\r\n finalizationResults = await assessmentAjax.finalizationActions({\r\n token: $.session.Token,\r\n planAttachmentIds: getAttachmentIds(selectedAttachmentsPlan),\r\n wfAttachmentIds: getAttachmentIds(selectedAttachmentsWorkflow),\r\n sigAttachmentIds: getAttachmentIds(selectedAttachmentsSignature), \r\n wfAttachmentStepIds: getwfstepdocIds(selectedAttachmentsWorkflow),\r\n userId: $.session.UserId,\r\n assessmentID: planId,\r\n peopleId: selectedConsumer.id,\r\n emailAddresses: [...Object.values(selectedEmails)],\r\n checkBoxes: [...checkboxesSelected],\r\n extraSpace: 'false',\r\n toONET: false,\r\n isp: false,\r\n oneSpan: false,\r\n signatureOnly: false,\r\n include: includeInAssessment,\r\n versionID: '1',\r\n });\r\n\r\n spinner.remove();\r\n actionBtn.style.display = 'block';\r\n\r\n if (finalizationResults && selectedCheckboxes.downloadReportCheck) {\r\n handleReportStream(finalizationResults.report);\r\n }\r\n\r\n const resultsObj = mapResultsObj(finalizationResults.actions);\r\n console.log('actions', finalizationResults.actions);\r\n console.log('resultsObj', resultsObj);\r\n\r\n if (selectedCheckboxes.selectAllCheck) {\r\n screen3.appendChild(sendToDODDStatus);\r\n screen3.appendChild(sendToOhioNetStatus);\r\n screen3.appendChild(downloadReportStatus);\r\n screen3.appendChild(emailReportStatus);\r\n\r\n if ($.session.sendToDODD) {\r\n if (resultsObj.DODD !== 'Success') {\r\n sendtoDODDGeneralErrorMessage(splitStringSentence(resultsObj.DODD));\r\n }\r\n\r\n sendToDODDStatusIcon.innerHTML = resultsObj.DODD === 'Success' ? icons.checkmark : icons.close;\r\n sendToDODDStatus.classList.toggle('success', resultsObj.DODD === 'Success');\r\n }\r\n if ($.session.sendToPortal) {\r\n sendToOhioNetStatusIcon.innerHTML = resultsObj.ONET === 'Success' ? icons.checkmark : icons.close;\r\n sendToOhioNetStatus.classList.toggle('success', resultsObj.ONET === 'Success');\r\n }\r\n downloadReportStatusIcon.innerHTML = resultsObj.REPORT === 'Success' ? icons.checkmark : icons.close;\r\n downloadReportStatus.classList.toggle('success', resultsObj.REPORT === 'Success');\r\n emailReportStatusIcon.innerHTML = resultsObj.EMAIL === 'Success' ? icons.checkmark : icons.close;\r\n emailReportStatus.classList.toggle('success', resultsObj.EMAIL === 'Success');\r\n } else {\r\n if (selectedCheckboxes.sendToDODDCheck) {\r\n if (resultsObj.DODD !== 'Success') {\r\n sendtoDODDGeneralErrorMessage(splitStringSentence(resultsObj.DODD));\r\n }\r\n\r\n screen3.appendChild(sendToDODDStatus);\r\n sendToDODDStatusIcon.innerHTML = resultsObj.DODD === 'Success' ? icons.checkmark : icons.close;\r\n sendToDODDStatus.classList.toggle('success', resultsObj.DODD === 'Success');\r\n }\r\n if (selectedCheckboxes.sendToOhioNetCheck) {\r\n screen3.appendChild(sendToOhioNetStatus);\r\n sendToOhioNetStatusIcon.innerHTML = resultsObj.ONET === 'Success' ? icons.checkmark : icons.close;\r\n sendToOhioNetStatus.classList.toggle('success', resultsObj.ONET === 'Success');\r\n }\r\n if (selectedCheckboxes.downloadReportCheck) {\r\n screen3.appendChild(downloadReportStatus);\r\n downloadReportStatusIcon.innerHTML = resultsObj.REPORT === 'Success' ? icons.checkmark : icons.close;\r\n downloadReportStatus.classList.toggle('success', resultsObj.REPORT === 'Success');\r\n }\r\n if (selectedCheckboxes.emailReportCheck) {\r\n screen3.appendChild(emailReportStatus);\r\n emailReportStatusIcon.innerHTML = resultsObj.EMAIL === 'Success' ? icons.checkmark : icons.close;\r\n emailReportStatus.classList.toggle('success', resultsObj.EMAIL === 'Success');\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (currScreen === 3) {\r\n actionBtn.remove();\r\n POPUP.hide(finalizePopup);\r\n finalizeBtn.classList.remove('disabled');\r\n }\r\n },\r\n });\r\n\r\n finalizePopup.appendChild(screen1);\r\n finalizePopup.appendChild(screen2);\r\n finalizePopup.appendChild(screen3);\r\n finalizePopup.appendChild(actionBtn);\r\n\r\n //----------------------------------------------\r\n // screen 1\r\n //----------------------------------------------\r\n const selectedCheckboxes = {\r\n selectAllCheck: true,\r\n sendToDODDCheck: true,\r\n sendToOhioNetCheck: true,\r\n downloadReportCheck: true,\r\n emailReportCheck: true,\r\n };\r\n const selectedEmails = {};\r\n const emails = await assessmentAjax.getDefaultEmailsForFinalization();\r\n const checkboxWrap = document.createElement('div');\r\n checkboxWrap.classList.add('checkboxes');\r\n\r\n const selectAllCheck = input.buildCheckbox({\r\n id: 'selectAll',\r\n text: 'Select All',\r\n isChecked: true,\r\n callback: e => {\r\n selectedCheckboxes.selectAllCheck = e.target.checked;\r\n\r\n if (selectedCheckboxes.selectAllCheck) {\r\n if ($.session.sendToDODD) {\r\n sendToDODDCheck.querySelector('input').checked = true;\r\n selectedCheckboxes.sendToDODDCheck = true;\r\n }\r\n\r\n if ($.session.sendToPortal) {\r\n sendToOhioNetCheck.querySelector('input').checked = true;\r\n selectedCheckboxes.sendToOhioNetCheck = true;\r\n }\r\n\r\n downloadReportCheck.querySelector('input').checked = true;\r\n selectedCheckboxes.downloadReportCheck = true;\r\n\r\n emailReportCheck.querySelector('input').checked = true;\r\n selectedCheckboxes.emailReportCheck = true;\r\n }\r\n },\r\n });\r\n const sendToDODDCheck = input.buildCheckbox({\r\n id: 'sendToDODD',\r\n text: 'Send To DODD',\r\n isChecked: true,\r\n callback: e => {\r\n selectedCheckboxes.sendToDODDCheck = e.target.checked;\r\n\r\n if (!e.target.checked) {\r\n selectAllCheck.querySelector('input').checked = false;\r\n selectedCheckboxes.selectAllCheck = false;\r\n }\r\n },\r\n });\r\n const sendToOhioNetCheck = input.buildCheckbox({\r\n id: 'sendToOhioNet',\r\n text: 'Send to OhioDD.net',\r\n isChecked: true,\r\n callback: e => {\r\n selectedCheckboxes.sendToOhioNetCheck = e.target.checked;\r\n\r\n if (!e.target.checked) {\r\n selectAllCheck.querySelector('input').checked = false;\r\n selectedCheckboxes.selectAllCheck = false;\r\n }\r\n },\r\n });\r\n const downloadReportCheck = input.buildCheckbox({\r\n id: 'downloadReport',\r\n text: 'Download Report',\r\n isChecked: true,\r\n callback: e => {\r\n selectedCheckboxes.downloadReportCheck = e.target.checked;\r\n\r\n if (!e.target.checked) {\r\n selectAllCheck.querySelector('input').checked = false;\r\n selectedCheckboxes.selectAllCheck = false;\r\n }\r\n },\r\n });\r\n const emailReportCheck = input.buildCheckbox({\r\n id: 'emailReport',\r\n text: 'Email Report',\r\n isChecked: true,\r\n callback: e => {\r\n selectedCheckboxes.emailReportCheck = e.target.checked;\r\n\r\n if (!e.target.checked) {\r\n selectAllCheck.querySelector('input').checked = false;\r\n selectedCheckboxes.selectAllCheck = false;\r\n }\r\n },\r\n });\r\n\r\n\r\n const addEmailBtn = button.build({\r\n text: 'Add Email',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n //if (Object.values(selectedEmails).length === 5) return;\r\n\r\n const id = _UTIL.autoIncrementId(`email-${Object.values(selectedEmails).length}`);\r\n selectedEmails[id] = '';\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('emailWrap');\r\n\r\n const emailInput = input.build({\r\n label: 'Email',\r\n type: 'email',\r\n callback: e => {\r\n selectedEmails[id] = e.target.value;\r\n },\r\n });\r\n\r\n const deleteEmail = document.createElement('span');\r\n deleteEmail.innerHTML = icons.delete;\r\n deleteEmail.addEventListener('click', () => {\r\n wrap.remove();\r\n delete selectedEmails[id];\r\n addEmailBtn.classList.toggle(Object.values(selectedEmails).length === 5, 'disabled');\r\n });\r\n\r\n wrap.appendChild(emailInput);\r\n wrap.appendChild(deleteEmail);\r\n screen1.appendChild(wrap);\r\n\r\n addEmailBtn.classList.toggle(Object.values(selectedEmails).length === 5, 'disabled');\r\n },\r\n });\r\n\r\n screen1.appendChild(checkboxWrap);\r\n screen1.appendChild(addEmailBtn);\r\n checkboxWrap.appendChild(selectAllCheck);\r\n if ($.session.sendToDODD) {\r\n checkboxWrap.appendChild(sendToDODDCheck);\r\n } else {\r\n selectedCheckboxes.sendToDODDCheck = false;\r\n }\r\n if ($.session.sendToPortal) {\r\n checkboxWrap.appendChild(sendToOhioNetCheck);\r\n } else {\r\n selectedCheckboxes.sendToOhioNetCheck = false;\r\n }\r\n checkboxWrap.appendChild(downloadReportCheck);\r\n checkboxWrap.appendChild(emailReportCheck);\r\n\r\n if (emails) {\r\n emails.forEach((email, index) => {\r\n if (email.setting_value === '') {\r\n return;\r\n }\r\n\r\n const id = _UTIL.autoIncrementId(`email-${index + 1}`);\r\n selectedEmails[id] = email.setting_value;\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('emailWrap');\r\n\r\n const emailInput = input.build({\r\n label: 'Email',\r\n type: 'email',\r\n value: email.setting_value,\r\n callback: e => {\r\n selectedEmails[id] = e.target.value;\r\n },\r\n });\r\n\r\n const deleteEmail = document.createElement('span');\r\n deleteEmail.innerHTML = icons.delete;\r\n deleteEmail.addEventListener('click', () => {\r\n wrap.remove();\r\n delete selectedEmails[id];\r\n addEmailBtn.classList.toggle(Object.values(selectedEmails).length === 5, 'disabled');\r\n });\r\n\r\n wrap.appendChild(emailInput);\r\n wrap.appendChild(deleteEmail);\r\n screen1.appendChild(wrap);\r\n });\r\n }\r\n\r\n //----------------------------------------------\r\n // screen 2\r\n //----------------------------------------------\r\n const selectedAttachmentsPlan = {};\r\n const selectedAttachmentsSignature = {};\r\n const selectedAttachmentsWorkflow = {};\r\n\r\n const attachWraper = document.createElement('div');\r\n attachWraper.classList.add('attachMainWrap');\r\n\r\n const planAttBody = document.createElement('div');\r\n const workflowAttBody = document.createElement('div');\r\n const signatureAttBody = document.createElement('div');\r\n planAttBody.classList.add('attachWrap');\r\n workflowAttBody.classList.add('attachWrap');\r\n signatureAttBody.classList.add('attachWrap');\r\n const planHeading = document.createElement('h2');\r\n const workflowHeading = document.createElement('h2');\r\n const signHeading = document.createElement('h2');\r\n planHeading.innerText = 'Plan Attachments';\r\n workflowHeading.innerText = 'Workflow Attachments';\r\n signHeading.innerText = 'Signature Attachments';\r\n planAttBody.appendChild(planHeading);\r\n workflowAttBody.appendChild(workflowHeading);\r\n signatureAttBody.appendChild(signHeading);\r\n attachWraper.appendChild(planAttBody);\r\n attachWraper.appendChild(workflowAttBody);\r\n attachWraper.appendChild(signatureAttBody);\r\n\r\n screen2.appendChild(attachWraper);\r\n\r\n const attachments = await planAjax.getPlanAndWorkFlowAttachments({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n let index = 0;\r\n\r\n if (attachments) {\r\n for (const prop in attachments) {\r\n attachments[prop].order = index;\r\n const a = attachments[prop];\r\n const attachment = document.createElement('div');\r\n attachment.classList.add('attachment');\r\n const description = document.createElement('p');\r\n description.innerText = a.description;\r\n attachment.appendChild(description);\r\n\r\n attachment.addEventListener('click', () => {\r\n if (!attachment.classList.contains('selected')) {\r\n attachment.classList.add('selected');\r\n if (a.sigAttachmentId) {\r\n selectedAttachmentsSignature[a.order] = { ...a };\r\n } else if (a.whereFrom === 'Plan') {\r\n selectedAttachmentsPlan[a.order] = { ...a };\r\n } else {\r\n selectedAttachmentsWorkflow[a.order] = { ...a };\r\n }\r\n } else {\r\n attachment.classList.remove('selected');\r\n if (a.sigAttachmentId) {\r\n delete selectedAttachmentsSignature[a.order];\r\n } else if (a.whereFrom === 'Plan') {\r\n delete selectedAttachmentsPlan[a.order];\r\n } else {\r\n delete selectedAttachmentsWorkflow[a.order];\r\n }\r\n }\r\n });\r\n\r\n if (a.sigAttachmentId) {\r\n signatureAttBody.appendChild(attachment);\r\n } else if (a.whereFrom === 'Plan') {\r\n planAttBody.appendChild(attachment);\r\n } else {\r\n workflowAttBody.appendChild(attachment);\r\n }\r\n\r\n index++;\r\n }\r\n }\r\n\r\n const includeInAssessmentCheck = input.buildCheckbox({\r\n id: 'includeInAssessmentCheck',\r\n text: 'Include Important to, Important For, Skills and Abilities, and Risks in assessment',\r\n isChecked: false,\r\n callback: e => {\r\n includeInAssessment = e.target.checked ? 'true' : 'false';\r\n },\r\n });\r\n screen2.appendChild(includeInAssessmentCheck);\r\n\r\n //----------------------------------------------\r\n // screen 3\r\n //----------------------------------------------\r\n const sendToDODDStatus = document.createElement('div');\r\n const sendToOhioNetStatus = document.createElement('div');\r\n const downloadReportStatus = document.createElement('div');\r\n const emailReportStatus = document.createElement('div');\r\n sendToDODDStatus.classList.add('finalizeStatus');\r\n sendToOhioNetStatus.classList.add('finalizeStatus');\r\n downloadReportStatus.classList.add('finalizeStatus');\r\n emailReportStatus.classList.add('finalizeStatus');\r\n sendToDODDStatus.innerHTML = '

    Send to DODD

    ';\r\n sendToOhioNetStatus.innerHTML = '

    Send to OhioDD.net

    ';\r\n downloadReportStatus.innerHTML = '

    Download Report

    ';\r\n emailReportStatus.innerHTML = '

    Email Report

    ';\r\n const sendToDODDStatusIcon = document.createElement('span');\r\n const sendToOhioNetStatusIcon = document.createElement('span');\r\n const downloadReportStatusIcon = document.createElement('span');\r\n const emailReportStatusIcon = document.createElement('span');\r\n sendToDODDStatus.appendChild(sendToDODDStatusIcon);\r\n sendToOhioNetStatus.appendChild(sendToOhioNetStatusIcon);\r\n downloadReportStatus.appendChild(downloadReportStatusIcon);\r\n emailReportStatus.appendChild(emailReportStatusIcon);\r\n\r\n POPUP.show(finalizePopup);\r\n }\r\n\r\n // plan header\r\n function refreshGeneralInfo() {\r\n planHeader.removeChild(planHeaderGeneralInfoBar);\r\n\r\n planHeaderGeneralInfoBar = buildGeneralInfoBar();\r\n planHeader.insertBefore(planHeaderGeneralInfoBar, planHeaderButtons);\r\n }\r\n function getConsumerNameFromCard({ card, firstName, lastName }) {\r\n if (!card) {\r\n return `${lastName} ${firstName}`;\r\n }\r\n\r\n const firstName2 = card.querySelector('.name_first');\r\n const lastName2 = card.querySelector('.name_last');\r\n\r\n if (!firstName2 || !lastName2) return;\r\n\r\n return `${lastName2.innerText} ${firstName2.innerText}`;\r\n }\r\n function buildGeneralInfoBar() {\r\n let type;\r\n\r\n if (planType === 'r') {\r\n type = 'Revision';\r\n } else if (planType === 'a') {\r\n type = 'Annual';\r\n }\r\n\r\n const PlanStartDate = planDates.getPlanYearStartDate();\r\n const PlanEndDate = planDates.getPlanYearEndDate();\r\n const EffectiveStartDate = planDates.getEffectiveStartDate();\r\n const EffectiveEndDate = planDates.getEffectiveEndDate();\r\n\r\n const formatedDate = UTIL.formatDateFromDateObj(EffectiveStartDate);\r\n const splitFormatedDate = formatedDate.split('-');\r\n let esDate = `${splitFormatedDate[1]}/${splitFormatedDate[2]}/${splitFormatedDate[0].substring(2)}`;\r\n\r\n const formatedDate2 = UTIL.formatDateFromDateObj(EffectiveEndDate);\r\n const splitFormatedDate2 = formatedDate2.split('-');\r\n let edDate = `${splitFormatedDate2[1]}/${splitFormatedDate2[2]}/${splitFormatedDate2[0].substring(2)}`;\r\n\r\n const formatedDate3 = UTIL.formatDateFromDateObj(PlanStartDate);\r\n const splitFormatedDate3 = formatedDate3.split('-');\r\n let starDate = `${splitFormatedDate3[1]}/${splitFormatedDate3[2]}/${splitFormatedDate3[0].substring(2)}`;\r\n\r\n const formatedDate4 = UTIL.formatDateFromDateObj(PlanEndDate);\r\n const splitFormatedDate4 = formatedDate4.split('-');\r\n let endDate = `${splitFormatedDate4[1]}/${splitFormatedDate4[2]}/${splitFormatedDate4[0].substring(2)}`;\r\n\r\n generalInfoBar = document.createElement('div');\r\n generalInfoBar.classList.add('generalInfo');\r\n generalInfoBar.setAttribute('data-people-id', `${selectedConsumer.id}`);\r\n\r\n const consumerName = `

    ${getConsumerNameFromCard(selectedConsumer)}

    `;\r\n const dateSpan = `

    Span: ${starDate} - ${endDate}

    `;\r\n const dateSpanEff = `

    Eff: ${esDate} - ${edDate}

    `;\r\n const typeAndNum = revisionNumber > 0 ? `

    ${type} ${revisionNumber}

    ` : `

    ${type}

    `;\r\n\r\n generalInfoBar.innerHTML = `\r\n
    ${consumerName}${typeAndNum}
    \r\n
    ${dateSpan}${dateSpanEff}
    \r\n `;\r\n\r\n return generalInfoBar;\r\n }\r\n function buildButtonBar() {\r\n const buttonBar = document.createElement('div');\r\n buttonBar.classList.add('buttonBar');\r\n\r\n const moreBtn = button.build({\r\n text: 'More',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: showMorePopup,\r\n });\r\n finalizeBtn = button.build({\r\n text: 'Finalize Plan',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n finalizeBtn.classList.add('disabled');\r\n await showFinalizePopup();\r\n finalizeBtn.classList.remove('disabled');\r\n },\r\n });\r\n if (planStatus !== 'C') {\r\n finalizeBtn.classList.add('disabled');\r\n }\r\n\r\n const backBtn = button.build({\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n clearAllDataKeepConsumer();\r\n loadLandingPage();\r\n },\r\n });\r\n\r\n buttonBar.appendChild(moreBtn);\r\n if ($.session.applicationName === 'Gatekeeper' && $.session.planUpdate) {\r\n buttonBar.appendChild(finalizeBtn);\r\n }\r\n buttonBar.appendChild(backBtn);\r\n\r\n return buttonBar;\r\n }\r\n function buildPlanHeader() {\r\n planHeader = document.createElement('div');\r\n planHeader.classList.add('planHeader');\r\n\r\n planHeaderGeneralInfoBar = buildGeneralInfoBar();\r\n planHeaderButtons = buildButtonBar();\r\n\r\n planHeader.appendChild(planHeaderGeneralInfoBar);\r\n planHeader.appendChild(planHeaderButtons);\r\n\r\n return planHeader;\r\n }\r\n // main build\r\n async function getWorkflowMarkup() {\r\n const workflowMarkup = document.createElement('div');\r\n workflowMarkup.classList.add('planWorkflow');\r\n\r\n const processId = planWorkflow.getProcessId(planType);\r\n const workflowViewer = await WorkflowViewerComponent.get(processId, planId);\r\n const addWorkflowBtn = button.build({\r\n id: 'workflow_addWorkflowBtn',\r\n text: 'Add Workflow(s)',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['addWorkflowBtn'],\r\n callback: () => {\r\n planWorkflow.addWorkflowPopup();\r\n },\r\n });\r\n\r\n workflowMarkup.appendChild(addWorkflowBtn);\r\n workflowMarkup.appendChild(workflowViewer);\r\n\r\n return workflowMarkup;\r\n }\r\n async function buildPlanPage(loadingOrder, workflowDashboardCallback) {\r\n // loadingOrder = ['a', 'i', 'w']\r\n document.body.classList.add('planActive');\r\n\r\n const planHeading = buildPlanHeader();\r\n const loadingBar = PROGRESS.SPINNER.get('Loading Plan...');\r\n DOM.clearActionCenter();\r\n DOM.ACTIONCENTER.appendChild(planHeading);\r\n DOM.ACTIONCENTER.appendChild(loadingBar);\r\n // init data for tab sections\r\n await planData.init(planId);\r\n await planAttachment.getAttachments(planId);\r\n\r\n // build tab section wraps\r\n const assessmentWrap = document.createElement('div');\r\n const ispWrap = document.createElement('div');\r\n const workflowWrap = document.createElement('div');\r\n assessmentWrap.id = 'planAssessment';\r\n ispWrap.id = 'planISP';\r\n workflowWrap.id = 'planWorkflow';\r\n\r\n const firstToLoad = loadingOrder ? loadingOrder[0] : 'a';\r\n let defaultActiveTab = firstToLoad === 'a' ? 0 : firstToLoad === 'i' ? 1 : 2;\r\n\r\n // Build Tabs Markup\r\n const tabs = TABS.build(\r\n {\r\n navOnClick: async targetTabIndex => {\r\n if (targetTabIndex === '0') {\r\n $.loadedAppPage = 'planAssessment';\r\n TABS.toggleNavStatus(tabs, 'disable');\r\n await assessmentCard.refreshAssessmentCard({\r\n planStatus,\r\n planId,\r\n isActive: planActiveStatus,\r\n });\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n } else if (targetTabIndex === '1') {\r\n TABS.toggleNavStatus(tabs, 'disable');\r\n\r\n $.loadedAppPage = 'planISP';\r\n await ISP.refreshISP(planId);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n DOM.autosizeTextarea();\r\n } else if (targetTabIndex === '2') {\r\n TABS.toggleNavStatus(tabs, 'disable');\r\n\r\n $.loadedAppPage = 'planWorkflow';\r\n const workflowLoadingBar = PROGRESS.SPINNER.get('Loading Workflow...');\r\n workflowWrap.innerHTML = '';\r\n workflowWrap.appendChild(workflowLoadingBar);\r\n const newWorkflowMarkup = await getWorkflowMarkup();\r\n workflowWrap.innerHTML = '';\r\n workflowWrap.appendChild(newWorkflowMarkup);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n }\r\n DOM.autosizeTextarea();\r\n },\r\n active: defaultActiveTab,\r\n },\r\n [\r\n {\r\n heading: 'Assessment',\r\n markup: assessmentWrap,\r\n },\r\n {\r\n heading: 'ISP',\r\n markup: ispWrap,\r\n },\r\n {\r\n heading: 'Workflow',\r\n markup: workflowWrap,\r\n },\r\n ],\r\n );\r\n\r\n // initial load by ordering\r\n\r\n switch (firstToLoad) {\r\n case 'a': {\r\n $.loadedAppPage = 'planAssessment';\r\n defaultActiveTab = 0;\r\n\r\n const assessmentData = await assessment.getAssessmentData(planId);\r\n const assessmentMarkup = await assessmentCard.build(assessmentData, {\r\n selectedConsumer,\r\n planStatus,\r\n planId,\r\n isActive: planActiveStatus,\r\n });\r\n assessmentWrap.appendChild(assessmentMarkup);\r\n\r\n break;\r\n }\r\n case 'i': {\r\n $.loadedAppPage = 'planISP';\r\n defaultActiveTab = 1;\r\n\r\n await ISP.refreshISP(planId);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n break;\r\n }\r\n case 'w': {\r\n $.loadedAppPage = 'planWorkflow';\r\n defaultActiveTab = 2;\r\n\r\n const workflowLoadingBar = PROGRESS.SPINNER.get('Loading ISP...');\r\n workflowWrap.innerHTML = '';\r\n workflowWrap.appendChild(workflowLoadingBar);\r\n const newWorkflowMarkup = await getWorkflowMarkup();\r\n workflowWrap.innerHTML = '';\r\n workflowWrap.appendChild(newWorkflowMarkup);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n break;\r\n }\r\n }\r\n\r\n DOM.ACTIONCENTER.removeChild(loadingBar);\r\n DOM.ACTIONCENTER.appendChild(tabs);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n\r\n if (workflowDashboardCallback) workflowDashboardCallback();\r\n\r\n if (defaultActiveTab === 0) {\r\n mainAssessment.markUnansweredQuestions();\r\n tableOfContents.showUnansweredQuestionCount();\r\n }\r\n\r\n DOM.autosizeTextarea();\r\n\r\n //sentToOnet = await assessmentAjax.getSentToONETDate({\r\n // token: $.session.Token,\r\n // assessmentId: planId,\r\n //});\r\n //sentToOnet = sentToOnet[0].sentDate;\r\n }\r\n\r\n // New Plan Setup Page\r\n //---------------------------------------------\r\n function sortPreviousPlans(previousPlansData) {\r\n return [...previousPlansData].sort((a, b) => {\r\n const aStart = new Date(a.planYearStart.split(' ')[0]);\r\n const bStart = new Date(b.planYearStart.split(' ')[0]);\r\n\r\n if (aStart === bStart) return 0;\r\n\r\n return aStart > bStart ? -1 : 1;\r\n });\r\n }\r\n async function handleTypeChange(e) {\r\n const selectedOption = e.target.options[e.target.selectedIndex];\r\n planType = selectedOption.value;\r\n\r\n if (setupWrap.contains(prevPlanTable)) setupWrap.removeChild(prevPlanTable);\r\n if (setupWrap.contains(datesBoxDiv)) setupWrap.removeChild(datesBoxDiv);\r\n\r\n if (planType === 'a') {\r\n await planDates.setAnnualPlanDates(previousPlansData);\r\n plan.setPlanType('a');\r\n datesBoxDiv = planDates.buildDatesBox(isValid => {\r\n if (isValid) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n });\r\n setupWrap.insertBefore(datesBoxDiv, doneBtn);\r\n doneBtn.classList.remove('disabled');\r\n }\r\n\r\n if (planType === 'r') {\r\n prevPlanTable = buildPreviousPlansTable();\r\n plan.setPlanType('r');\r\n setupWrap.insertBefore(prevPlanTable, doneBtn);\r\n doneBtn.classList.add('disabled');\r\n }\r\n }\r\n async function handleDoneBtnClick(selectedConsumer) {\r\n if (doneBtn.classList.contains('disabled')) {\r\n return;\r\n }\r\n\r\n PROGRESS__BTN.SPINNER.show('annualRevisionDoneBtn', '', true);\r\n const processId = planWorkflow.getProcessId(planType);\r\n const wfvData = await planWorkflow.getWorkflowList(processId, 0);\r\n\r\n if (!wfvData || wfvData.length === 0) {\r\n createNewPlan(selectedConsumer, processId);\r\n return;\r\n }\r\n\r\n //const foo = async (selectedWorkflows) => {\r\n // const workflowCallback = selectedWorkflows => {\r\n const workflowCallback = async selectedWorkflows => {\r\n PROGRESS__BTN.SPINNER.show('workflowContinueBtn', '', false);\r\n // TODO 100969 -- display list of User Forms for the selected Workflows\r\n\r\n if ($.session.planFormCarryover) {\r\n let selectedwfForms = [];\r\n\r\n const wfvPopup = document.querySelector('.workflowListPopup');\r\n if (wfvPopup) {\r\n POPUP.hide(wfvPopup);\r\n }\r\n\r\n // *********FAKE DATA for Step Docs in a Workflow*****Albert Annual 6/23******Annual -- 279, Antnio -- 934*******************\r\n // const wfFormsData2 = [{ docId : 6052 , description : 'Expert 15 test.pdf', WFId: 934, wfName: 'Antinono 3' },\r\n // { docId : 6053 , description : 'FORMS -- General.pdf', WFId: 934, wfName: 'Antinono 3' },\r\n // { docId : 1836 , description : 'Medication -- Med Assessment.pdf', WFId: 279, wfName: 'Annual - Waver'},\r\n /// { docId : 3201 , description : 'Signed_Plan.pdf', WFId: 279, wfName: 'Annual - Waver'} ];\r\n\r\n let thisannual_plan;\r\n // inserting a new plan based on a selected prior plan\r\n if (priorConsumerPlanId && priorConsumerPlanId !== '') {\r\n thisPreviousPlanId = priorConsumerPlanId;\r\n } else {\r\n // // inserting a new plan based on the most recent existing plan\r\n thisannual_plan = previousPlansData.filter(wf => wf.active === 'True');\r\n if (thisannual_plan && thisannual_plan.length > 0) {\r\n thisPreviousPlanId = thisannual_plan[0].consumerPlanId;\r\n }\r\n }\r\n\r\n const wfFormsData = await WorkflowViewerAjax.getWorkFlowFormsfromPreviousPlan({\r\n token: $.session.Token,\r\n selectedWFTemplateIds: selectedWorkflows.join(', '),\r\n previousPlanId: thisPreviousPlanId,\r\n });\r\n\r\n const wfFormsPopup = POPUP.build({\r\n classNames: ['wfFormsPopup'],\r\n });\r\n\r\n const title = document.createElement('h2');\r\n title.innerHTML = 'Select forms to attach.
    ';\r\n const linebr = document.createElement('div');\r\n linebr.innerHTML = '
    ';\r\n wfFormsPopup.appendChild(title);\r\n wfFormsPopup.appendChild(linebr);\r\n\r\n const doneBtn = button.build({\r\n id: 'wfFormsContinueBtn',\r\n text: 'Continue',\r\n type: 'contained',\r\n style: 'secondary',\r\n // classNames: ['copySelectedBtn', 'disabled'],\r\n classNames: 'copySelectedBtn',\r\n callback: () => {\r\n var selectedPreviousWfForms = planWorkflow.getselectedWorkFlowForms();\r\n var wf_template_selected = selectedWorkflows;\r\n\r\n POPUP.hide(wfFormsPopup);\r\n createNewPlan(selectedConsumer, processId, selectedWorkflows, selectedPreviousWfForms);\r\n },\r\n });\r\n\r\n if (wfFormsData && wfFormsData.length > 0) {\r\n const list = planWorkflow.buildWorkflowFormList(wfFormsData);\r\n wfFormsPopup.appendChild(list);\r\n wfFormsPopup.appendChild(doneBtn);\r\n POPUP.show(wfFormsPopup);\r\n } else {\r\n createNewPlan(selectedConsumer, processId, selectedWorkflows);\r\n }\r\n } else {\r\n // if ($.session.planFormCarryover\r\n createNewPlan(selectedConsumer, processId, selectedWorkflows);\r\n }\r\n };\r\n planWorkflow.showWorkflowListPopup(wfvData, workflowCallback);\r\n }\r\n function getSelectedConsumerName(selectedConsumer) {\r\n const last = selectedConsumer.card.querySelector('.name_last');\r\n const first = selectedConsumer.card.querySelector('.name_first');\r\n return `${first.innerText} ${last.innerText}`;\r\n }\r\n async function createNewPlan(selectedConsumer, processId, selectedWorkflows, selectedPreviousWfForms) {\r\n const EffectiveEndDate = planDates.getEffectiveEndDate();\r\n let edDate = UTIL.formatDateFromDateObj(EffectiveEndDate);\r\n\r\n let currentPlanId;\r\n let workflowId;\r\n let insertedSSA;\r\n const workflowIds = [];\r\n const wfDocIds = [];\r\n\r\n //var selectedConsumer = plan.getSelectedConsumer();\r\n var salesForceCaseManagerId = await consentAndSignAjax.getStateCaseManagerforConsumer({\r\n peopleId: selectedConsumer.id,\r\n });\r\n\r\n if (planType === 'a') {\r\n const planYearStartDate = planDates.getPlanYearStartDate();\r\n const planYearReviewDate = planDates.getPlanReviewDate();\r\n\r\n let returnString = await planAjax.insertAnnualPlan({\r\n token: $.session.Token,\r\n consumerId: selectedConsumer.id,\r\n planYearStart: UTIL.formatDateFromDateObj(planYearStartDate),\r\n reviewDate: UTIL.formatDateFromDateObj(planYearReviewDate),\r\n salesForceCaseManagerId: salesForceCaseManagerId,\r\n });\r\n\r\n returnString = returnString.split(',');\r\n currentPlanId = returnString[0];\r\n insertedSSA = returnString[1];\r\n } else {\r\n const EffectiveStartDate = planDates.getEffectiveStartDate();\r\n const esDate = UTIL.formatDateFromDateObj(EffectiveStartDate);\r\n const planYearReviewDate = planDates.getPlanReviewDate();\r\n\r\n let returnString = await planAjax.insertRevisedPlan({\r\n token: $.session.Token,\r\n priorConsumerPlanId,\r\n effectiveStart: esDate,\r\n effectiveEnd: edDate,\r\n reviewDate: UTIL.formatDateFromDateObj(planYearReviewDate),\r\n useLatestPlanVersion: true,\r\n salesForceCaseManagerId: salesForceCaseManagerId,\r\n });\r\n\r\n returnString = returnString.split(',');\r\n currentPlanId = returnString[0];\r\n insertedSSA = returnString[1];\r\n }\r\n // handle selected workflows\r\n if (selectedWorkflows && selectedWorkflows.length > 0) {\r\n for (i = 0; i < selectedWorkflows.length; i++) {\r\n let wftemplateId = selectedWorkflows[i];\r\n // does this have any attached WF Forms, if so then wantedFormIds: selectedPreviousWfForms, otherwise wantedFormDescriptions: \"\"\r\n let thiswfForms;\r\n\r\n // handle selected forms\r\n if (selectedPreviousWfForms && selectedPreviousWfForms.length > 0) {\r\n let thiswfFormslist = [];\r\n for (j = 0; j < selectedPreviousWfForms.length; j++) {\r\n if (wftemplateId === selectedPreviousWfForms[j].WFtemplateId) {\r\n //thiswfFormslist.push(selectedPreviousWfForms[j].description);\r\n thiswfFormslist.push(selectedPreviousWfForms[j].attachmentId);\r\n }\r\n }\r\n if (thiswfFormslist && thiswfFormslist.length > 0) {\r\n thiswfForms = thiswfFormslist.join(',');\r\n } else {\r\n thiswfForms = '';\r\n }\r\n } else {\r\n thiswfForms = '';\r\n }\r\n\r\n workflowId = await WorkflowViewerAjax.copyWorkflowtemplateToRecord({\r\n token: $.session.Token,\r\n templateId: wftemplateId,\r\n referenceId: currentPlanId,\r\n peopleId: selectedConsumer.id,\r\n wantedFormAttachmentIds: thiswfForms,\r\n priorReferenceId: thisPreviousPlanId,\r\n });\r\n workflowIds.push(workflowId);\r\n }\r\n }\r\n\r\n // START: Josh's WF ------------------\r\n const autoworkflowIds = await planAjax.insertAutomatedWorkflows({\r\n token: $.session.Token,\r\n processId,\r\n peopleId: selectedConsumer.id,\r\n referenceId: currentPlanId,\r\n priorConsumerPlanId: thisPreviousPlanId,\r\n });\r\n var autoWFIds = autoworkflowIds.split(',');\r\n workflowIds.push(...autoWFIds);\r\n // END: Josh's WF ---------------------\r\n\r\n const wfvPopup = document.querySelector('.workflowListPopup');\r\n if (wfvPopup) {\r\n // PROGRESS__BTN.SPINNER.hide('workflowContinueBtn');\r\n POPUP.hide(wfvPopup);\r\n }\r\n\r\n PROGRESS.SPINNER.show('Building Plan...');\r\n\r\n setActiveModuleSectionAttribute('plan-questionsAndAnswers-edit');\r\n\r\n planId = currentPlanId;\r\n planType = planType;\r\n planStatus = 'D';\r\n planActiveStatus = true;\r\n revisionNumber = undefined;\r\n\r\n if (salesForceCaseManagerId === '0') {\r\n // const wfvPopup = document.querySelector('.workflowListPopup');\r\n // if (wfvPopup) {\r\n // // PROGRESS__BTN.SPINNER.hide('workflowContinueBtn');\r\n // POPUP.hide(wfvPopup);\r\n // }\r\n const consumer = getSelectedConsumerName(selectedConsumer);\r\n showAddedToTeamMemberNoCasemanagerFoundPopup(consumer, () => {\r\n POPUP.hide(addedMemberNoCaseManagerPopup);\r\n planWorkflow.displayWFwithMissingResponsibleParties(workflowIds);\r\n buildPlanPage();\r\n });\r\n } else if (salesForceCaseManagerId === '-1') {\r\n // const wfvPopup = document.querySelector('.workflowListPopup');\r\n // if (wfvPopup) {\r\n // // PROGRESS__BTN.SPINNER.hide('workflowContinueBtn');\r\n // POPUP.hide(wfvPopup);\r\n // }\r\n const consumer = getSelectedConsumerName(selectedConsumer);\r\n showAddedToTeamMemberPopup(consumer, insertedSSA, () => {\r\n POPUP.hide(addedMemberPopup);\r\n planWorkflow.displayWFwithMissingResponsibleParties(workflowIds);\r\n buildPlanPage();\r\n });\r\n } else {\r\n const consumer = getSelectedConsumerName(selectedConsumer);\r\n showAddedToTeamMemberPopup(consumer, insertedSSA, () => {\r\n POPUP.hide(addedMemberPopup);\r\n planWorkflow.displayWFwithMissingResponsibleParties(workflowIds);\r\n buildPlanPage();\r\n });\r\n }\r\n }\r\n\r\n function buildPreviousPlansTable(forChangeType, callbackForChangeType) {\r\n const tableOptions = {\r\n plain: true,\r\n columnHeadings: ['Type', 'Rev #', 'PY Start', 'Eff Start', 'Review'],\r\n tableId: forChangeType ? 'previousPlanTableMoreMenu' : 'previousPlanTable',\r\n headline: 'Select a plan below for revision',\r\n };\r\n\r\n const tableData = previousPlansData\r\n .filter(prevPlan => {\r\n return prevPlan.active === 'True';\r\n })\r\n .map(prevPlan => {\r\n const type = prevPlan.planType === 'A' ? 'Ann' : 'Rev';\r\n const revisionNum = prevPlan.revisionNumber !== '0' ? prevPlan.revisionNumber : '';\r\n const start = prevPlan.planYearStart.split(' ')[0];\r\n const effectiveStart = prevPlan.effectiveStart.split(' ')[0];\r\n const reviewDate = prevPlan.reviewDate ? prevPlan.reviewDate.split(' ')[0] : 'n/a';\r\n\r\n return {\r\n values: [type, revisionNum, start, effectiveStart, reviewDate],\r\n attributes: [{ key: 'data-plan-id', value: prevPlan.consumerPlanId }],\r\n onClick: e => {\r\n if (!forChangeType) {\r\n const row = e.target;\r\n const previouslySeletedRow = prevPlanTable.querySelector('.selected');\r\n if (previouslySeletedRow) previouslySeletedRow.classList.remove('selected');\r\n\r\n row.classList.add('selected');\r\n\r\n planDates.setRevisionPlanDates(prevPlan);\r\n\r\n priorConsumerPlanId = prevPlan.consumerPlanId;\r\n\r\n if (setupWrap.contains(datesBoxDiv)) setupWrap.removeChild(datesBoxDiv);\r\n datesBoxDiv = planDates.buildDatesBox(isValid => {\r\n if (isValid) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n });\r\n setupWrap.insertBefore(datesBoxDiv, prevPlanTable);\r\n } else {\r\n callbackForChangeType(e.target, prevPlan);\r\n }\r\n },\r\n };\r\n });\r\n\r\n const previousPlansTable = table.build(tableOptions);\r\n table.populate(previousPlansTable, tableData);\r\n\r\n return previousPlansTable;\r\n }\r\n function toggleNewPlanDoneBtn(disable) {\r\n if (disable) {\r\n if (doneBtn) doneBtn.classList.add('disabled');\r\n return;\r\n }\r\n\r\n if (doneBtn) doneBtn.classList.remove('disabled');\r\n }\r\n async function buildNewPlanSetupPage(selectedConsumer) {\r\n setupWrap = document.createElement('div');\r\n setupWrap.classList.add('planSetupPage');\r\n\r\n hasPreviousPlans = previousPlansData && previousPlansData.length > 0 ? true : false;\r\n\r\n typeDropdown = dropdown.build({\r\n label: 'Type',\r\n style: 'secondary',\r\n className: 'planTypeDropdown',\r\n });\r\n\r\n let typeData;\r\n\r\n if (hasPreviousPlans) {\r\n planType = '%';\r\n typeData = [\r\n { value: '%', text: '' },\r\n { value: 'a', text: 'Annual' },\r\n { value: 'r', text: 'Revision' },\r\n ];\r\n } else {\r\n planType = 'a';\r\n typeData = [{ value: 'a', text: 'Annual' }];\r\n }\r\n\r\n dropdown.populate(typeDropdown, typeData);\r\n\r\n typeDropdown.addEventListener('change', handleTypeChange);\r\n\r\n doneBtn = button.build({\r\n id: 'annualRevisionDoneBtn',\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['setupDoneBtn', 'disabled'],\r\n callback: () => handleDoneBtnClick(selectedConsumer),\r\n });\r\n\r\n setupWrap.appendChild(typeDropdown);\r\n\r\n if (!hasPreviousPlans) {\r\n plan.setPlanType('a');\r\n await planDates.setAnnualPlanDates(previousPlansData);\r\n datesBoxDiv = planDates.buildDatesBox(isValid => {\r\n if (isValid) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n });\r\n setupWrap.appendChild(datesBoxDiv);\r\n }\r\n\r\n setupWrap.appendChild(doneBtn);\r\n\r\n return setupWrap;\r\n }\r\n\r\n // Plan Landing Page\r\n //---------------------------------------------\r\n function showInvalidSalesForceWarningPopup() {\r\n const warningPopup = POPUP.build({\r\n id: 'importRelationshipPopup',\r\n // closeCallback: () => {\r\n // POPUP.hide(warningPopup);\r\n // },\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.innerText = `This consumer does not have a Resident Number or a SalesForce ID. Please insert the Resident Number or confirm that it is a valid number in the Desktop before inserting a Plan.`;\r\n\r\n warningPopup.appendChild(message);\r\n\r\n POPUP.show(warningPopup);\r\n }\r\n function showAddedToTeamMemberPopup(consumer, ssa, callback) {\r\n addedMemberPopup = POPUP.build({\r\n id: 'importRelationshipPopup',\r\n hideX: true,\r\n });\r\n\r\n if (ssa) {\r\n addedMemberPopup.innerHTML += `

    ${consumer} and ${ssa} have been added as a Team Member to this plan.

    `;\r\n } else {\r\n addedMemberPopup.innerHTML += `

    ${consumer} has been added as a Team Member to this plan.

    `;\r\n // addedMemberPopup.innerHTML += `

    ${consumer} has been added as a Team Member to this plan.

    \r\n //

    No SSA/QIDP assigned to this consumer in Salesforce. Please assign SSA/QIDP.

    \r\n // `;\r\n }\r\n\r\n const okButton = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: callback,\r\n });\r\n\r\n addedMemberPopup.appendChild(okButton);\r\n\r\n POPUP.show(addedMemberPopup);\r\n }\r\n\r\n function showAddedToTeamMemberNoCasemanagerFoundPopup(consumer, callback) {\r\n addedMemberNoCaseManagerPopup = POPUP.build({\r\n id: 'importRelationshipPopup',\r\n hideX: true,\r\n });\r\n\r\n addedMemberNoCaseManagerPopup.innerHTML += `

    ${consumer} has been added as a Team Member to this plan.

    \r\n

    No SSA/QIDP assigned to this consumer in Salesforce. Please assign SSA/QIDP.

    `;\r\n\r\n const okButton = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: callback,\r\n });\r\n\r\n addedMemberNoCaseManagerPopup.appendChild(okButton);\r\n\r\n POPUP.show(addedMemberNoCaseManagerPopup);\r\n }\r\n\r\n function buildNewPlanBtn() {\r\n return button.build({\r\n text: 'Add New Plan',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: !$.session.planUpdate ? ['disabled'] : ['newPlanBtn'],\r\n callback: async () => {\r\n if (newPlanBtn.innerText === 'ADD NEW PLAN') {\r\n PROGRESS__BTN.SPINNER.show(newPlanBtn);\r\n\r\n if ($.session.areInSalesForce) {\r\n // validate salesforce\r\n isValidSalesforce = await consentAndSignAjax.validateConsumerForSalesForceId({\r\n consumerId: selectedConsumer.id,\r\n });\r\n if (!isValidSalesforce) {\r\n PROGRESS__BTN.SPINNER.hide(newPlanBtn);\r\n showInvalidSalesForceWarningPopup();\r\n return;\r\n }\r\n }\r\n\r\n planSetupPage = await buildNewPlanSetupPage(selectedConsumer);\r\n\r\n landingPage.removeChild(overviewTable);\r\n landingPage.appendChild(planSetupPage);\r\n\r\n PROGRESS__BTN.SPINNER.hide(newPlanBtn);\r\n newPlanBtn.innerText = 'Back';\r\n\r\n if (assignCaseLoadBtn) {\r\n assignCaseLoadBtn.style.display = 'none';\r\n }\r\n } else {\r\n landingPage.removeChild(planSetupPage);\r\n landingPage.appendChild(overviewTable);\r\n\r\n newPlanBtn.innerText = 'Add New Plan';\r\n if (assignCaseLoadBtn) {\r\n assignCaseLoadBtn.style.display = 'block';\r\n }\r\n }\r\n },\r\n });\r\n }\r\n\r\n function buildAssignCaseloadBtn() {\r\n return button.build({\r\n id: 'assign-case-load-btn',\r\n text: $.session.applicationName === 'Gatekeeper' ? 'ASSIGN CASE LOAD' : 'ASSIGN QIDP',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: !$.session.planUpdate ? ['disabled'] : ['newPlanBtn'],\r\n callback: async () => {\r\n PROGRESS__BTN.SPINNER.show(assignCaseLoadBtn);\r\n await csAssignCaseload.showAssignCaseLoadPopup();\r\n PROGRESS__BTN.SPINNER.hide(assignCaseLoadBtn);\r\n },\r\n });\r\n }\r\n\r\n function buildDownloadPlanBtn() {\r\n return button.build({\r\n text: 'DOWNLOAD PLAN',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['downloadPlanBtn'],\r\n callback: downloadPlanFromSalesforceProgress,\r\n });\r\n }\r\n\r\n async function downloadPlanFromSalesforceProgress() {\r\n pendingSave.show('Downloading Plan...');\r\n\r\n const sentStatus = await planAjax.downloadPlanFromSalesforce({\r\n token: $.session.Token,\r\n consumerId: selectedConsumer.id,\r\n userId: $.session.UserId,\r\n });\r\n\r\n if (sentStatus === 'Download complete') {\r\n success = true;\r\n } else {\r\n success = false;\r\n }\r\n\r\n const pendingSavePopup = document.querySelector('.pendingSavePopup');\r\n pendingSavePopup.style.display = 'none';\r\n\r\n // Handles popup actions based on whether the One Span delivery was successsful\r\n if (success) {\r\n pendingSave.fulfill('Download Successful!');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n overlay.hide();\r\n\r\n loadLandingPage();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to download plan, please try again.');\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n overlay.hide();\r\n }, 2000);\r\n }\r\n }\r\n\r\n function buildConsumerCard() {\r\n selectedConsumer.card.classList.remove('highlighted');\r\n\r\n const saleforceIdClass = selectedConsumer.card.querySelector('.saleforce_Id');\r\n if (saleforceIdClass != null)\r\n saleforceIdClass.style.display = 'block';\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(selectedConsumer.card);\r\n\r\n return wrap;\r\n }\r\n function buildOverviewTable() {\r\n const tableOptions = {\r\n plain: false,\r\n columnHeadings: ['Type', 'Rev #', 'Downloaded', 'PY Start', 'Eff Start', 'Review', 'Sent To DODD'],\r\n tableId: 'planOverviewTable',\r\n };\r\n\r\n const tableData = previousPlansData.map(pd => {\r\n const type = pd.planType === 'A' ? 'Annual' : 'Revision';\r\n const revisionNum = pd.revisionNumber !== '0' ? pd.revisionNumber : '';\r\n const downloadedDate = pd.downloadDate ? pd.downloadDate.split(' ')[0] : '';\r\n const startDate = pd.planYearStart.split(' ')[0];\r\n const endDate = pd.planYearEnd.split(' ')[0];\r\n const effectiveStart = pd.effectiveStart.split(' ')[0];\r\n const effectiveEnd = pd.effectiveEnd.split(' ')[0];\r\n let isActive = pd.active === 'True' ? true : false;\r\n const reviewDate = pd.reviewDate ? pd.reviewDate.split(' ')[0] : 'n/a';\r\n let sentToDODD = pd.dateSentDODD ? pd.dateSentDODD : '';\r\n sentToDODD = `${pd.userSentDODD} - ${sentToDODD}`;\r\n if (downloadedDate !== '') {\r\n downloadPlanBtn.classList.add('disabled');\r\n }\r\n\r\n return {\r\n values: [type, revisionNum, downloadedDate, startDate, effectiveStart, reviewDate, sentToDODD],\r\n attributes: [\r\n { key: 'data-plan-active', value: isActive },\r\n { key: 'data-plan-id', value: pd.consumerPlanId },\r\n ],\r\n onClick: async () => {\r\n planId = pd.consumerPlanId;\r\n planType = pd.planType.toLowerCase();\r\n planStatus = pd.planStatus ? pd.planStatus : 'D';\r\n planActiveStatus = isActive;\r\n revisionNumber = pd.revisionNumber;\r\n downloadedFromSalesforce = downloadedDate ? true : false;\r\n\r\n planDates.setReviewPlanDates({\r\n startDate: new Date(startDate),\r\n endDate: new Date(endDate),\r\n effectiveStart: new Date(effectiveStart),\r\n effectiveEnd: new Date(effectiveEnd),\r\n reviewDate: new Date(reviewDate),\r\n });\r\n\r\n buildPlanPage();\r\n },\r\n };\r\n });\r\n\r\n const oTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = oTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Type\r\n headers[1].setAttribute('data-type', 'number'); // Rev\r\n headers[2].setAttribute('data-type', 'string'); // Downloaded data\r\n headers[3].setAttribute('data-type', 'date'); // PY Start \r\n headers[4].setAttribute('data-type', 'date'); // Eff Start\r\n headers[5].setAttribute('data-type', 'date'); // Review\r\n headers[6].setAttribute('data-type', 'string'); // send to ddd\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\r\n\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n async function loadLandingPage() {\r\n DOM.clearActionCenter();\r\n\r\n landingPage = document.createElement('div');\r\n landingPage.classList.add('planLandingPage');\r\n\r\n const consumerCard = buildConsumerCard();\r\n newPlanBtn = buildNewPlanBtn();\r\n assignCaseLoadBtn = buildAssignCaseloadBtn();\r\n downloadPlanBtn = buildDownloadPlanBtn();\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('topOutcomeWrap');\r\n\r\n btnWrap.appendChild(newPlanBtn);\r\n if ($.session.planAssignCaseload) btnWrap.appendChild(assignCaseLoadBtn);\r\n\r\n if ($.session.downloadPlans && $.session.areInSalesForce) {\r\n // validate salesforce\r\n isValidSalesforce = await consentAndSignAjax.validateConsumerForSalesForceId({\r\n consumerId: selectedConsumer.id,\r\n });\r\n\r\n if (isValidSalesforce) {\r\n btnWrap.appendChild(downloadPlanBtn);\r\n }\r\n }\r\n\r\n landingPage.appendChild(consumerCard);\r\n landingPage.appendChild(btnWrap);\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Plans...');\r\n landingPage.appendChild(spinner);\r\n\r\n previousPlansData = await planAjax.getConsumerPlans({\r\n token: $.session.Token,\r\n consumerId: selectedConsumer.id,\r\n });\r\n previousPlansData.sort((a, b) => {\r\n const aDate = a.effectiveStart.split(' ')[0];\r\n const bDate = b.effectiveStart.split(' ')[0];\r\n const aDateObj = new Date(aDate);\r\n const bDateObj = new Date(bDate);\r\n\r\n return bDateObj - aDateObj;\r\n });\r\n\r\n landingPage.removeChild(spinner);\r\n\r\n overviewTable = buildOverviewTable();\r\n landingPage.appendChild(overviewTable);\r\n }\r\n\r\n async function init() {\r\n setActiveModuleAttribute('plan');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n await planAjax.checkForSalesForce();\r\n PROGRESS.init();\r\n PROGRESS.SPINNER.show('Gathering Plans...');\r\n }\r\n\r\n return {\r\n clearAllData,\r\n clearPlanId,\r\n dashHandler,\r\n getCurrentPlanId,\r\n getSelectedConsumer,\r\n getCurrentPlanType,\r\n getPlanStatus,\r\n getPlanActiveStatus,\r\n getPlanDropdownData,\r\n getWorkflowMarkup,\r\n getHasPreviousPlans,\r\n setSelectedConsumer,\r\n setRevisionNumber,\r\n getISPValidation,\r\n getAttachmentIds,\r\n setPlanType,\r\n setPlanId,\r\n setPlanStatus,\r\n setPlanActiveStatus,\r\n toggleNewPlanDoneBtn,\r\n handleActionNavEvent,\r\n buildPlanPage,\r\n buildPreviousPlansTable,\r\n loadLanding: loadLandingPage,\r\n init,\r\n };\r\n})();\r\n","const planAjax = (function () {\r\n // GET\r\n //------------------------------------\r\n async function getConsumerPlans(retrieveData) {\r\n // token, consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerPlans/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getConsumerPlansResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function getConsumerPlanYearInfo(retrieveData) {\r\n //token, answerObj array\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerPlanYearInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getConsumerPlanYearInfoResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function getPlanDropdownData(retrieveData) {\r\n // TODO: this function can be removed, it lives in planData now\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceAndSupportsData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return {\r\n ...data.getServiceAndSupportsDataResult,\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getPlanAndWorkFlowAttachments(retrieveData) {\r\n //string token, string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanAndWorkFlowAttachments/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return {\r\n ...data.getPlanAndWorkFlowAttachmentsResult,\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // INSERT\r\n //------------------------------------\r\n async function insertAnnualPlan(retrieveData) {\r\n // token, consumerId, planYearStart\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertConsumerPlanAnnual/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n const planId = data.insertConsumerPlanAnnualResult;\r\n plan.setPlanId(planId);\r\n return planId;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function insertRevisedPlan(retrieveData) {\r\n // priorConsumerPlanId, effectiveStart, effectiveEnd, useLatestAssessmentVersion\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertConsumerPlanRevision/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n const planId = data.insertConsumerPlanRevisionResult;\r\n plan.setPlanId(planId);\r\n return planId;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function insertAutomatedWorkflows(retrieveData) {\r\n // token, processId, peopleId, referenceId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertAutomatedWorkflows/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.insertAutomatedWorkflowsResult;\r\n } catch (error) {\r\n console.log(error.responseText);//\r\n }\r\n }\r\n async function addSelectedAttachmentsToReport(retrieveData) {\r\n // string token, string[] attachmentIds, string userId, string assessmentID,,\r\n // string versionID, string extraSpace, bool isp\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addSelectedAttachmentsToReport/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.addSelectedAttachmentsToReportResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n // UPDATE\r\n //------------------------------------\r\n async function updateConsumerPlanReactivate(retrieveData) {\r\n // token, consumerPlanId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanReactivate/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanReactivateResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updateConsumerPlanSetStatus(retrieveData) {\r\n // token, consumerPlanId, status\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanSetStatus/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanSetStatusResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n return { hasError: true, message: error.statusText };\r\n }\r\n }\r\n async function updateConsumerPlanSetAnnualDates(retrieveData) {\r\n // token, consumerPlanId, newPlanYearStart\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanSetAnnualDates/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanSetAnnualDatesResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updateConsumerPlanSetRevisionEffectiveDates(retrieveData) {\r\n // token, consumerPlanId, newEffectiveStart, newEffectiveEnd\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanSetRevisionEffectiveDates/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanSetRevisionEffectiveDatesResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updateConsumerPlanReviewDate(retrieveData) {\r\n // token, reviewDate, planId (make a integer)\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanReviewDate/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanReviewDateResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function uploadPlanToDODD(retrieveData) {\r\n // consumerId(peopleId), planId)\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/uploadPlanToDODD/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.uploadPlanToDODDResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updatePlanType(retrieveData) {\r\n //string token, string consumerPlanId, string planType, string planYearStart, string planYearEnd, \r\n //string effectiveStartDate, string effectiveEndDate, string reviewDate, string prevPlanId\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/switchPlanType/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.switchPlanTypeResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // DELETE\r\n //------------------------------------\r\n async function deletePlan(retrieveData) {\r\n // token, consumerPlanId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteConsumerPlan/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n mainAssessment.clearData();\r\n plan.clearPlanId();\r\n return data.deleteConsumerPlanResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // ATTACHMENTS\r\n // ----------------------------------\r\n function viewPlanAttachment(attachmentId, section) {\r\n data = {\r\n attachmentId: attachmentId,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewPlanAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', attachmentId);\r\n attachmentInput.id = 'attachmentId';\r\n var sectionInput = document.createElement('input');\r\n sectionInput.setAttribute('name', 'section');\r\n sectionInput.setAttribute('value', section);\r\n sectionInput.id = 'section';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.appendChild(sectionInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n form.remove();\r\n }\r\n\r\n async function addPlanAttachment(retrieveData) {\r\n // let abString = btoa(String.fromCharCode.apply(null, new Uint8Array(buf)))\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(retrieveData.attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n retrieveData.attachment = abString;\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addPlanAttachment/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.addPlanAttachmentResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n function deletePlanAttachment(planId, attachmentId) {\r\n data = {\r\n token: $.session.Token,\r\n planId: planId, //long\r\n attachmentId: attachmentId, //long\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanAttachment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.deletePlanAttachmentResult;\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n async function getPlanAttachmentsList(retrieveData) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanAttachmentsList/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getPlanAttachmentsListResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // OTHER\r\n // ----------------------------------\r\n async function getConsumerPeopleId(consumerId, callback) {\r\n await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerPeopleId/',\r\n data: '{\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerPeopleIdResult;\r\n return callback(res);\r\n },\r\n });\r\n }\r\n async function getConsumerPeopleIdAsync(consumerId, callback) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerPeopleId/',\r\n data: JSON.stringify({ consumerId: consumerId }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getConsumerPeopleIdResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updatePlanSectionApplicable(retrieveData) {\r\n // string token, long planId, long sectionId, string applicable)\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanSectionApplicable/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanSectionApplicableResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function checkForSalesForce() {\r\n $.session.areInSalesForce = true;\r\n }\r\n async function runReOrderSQL() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/runReOrderSQL/',\r\n data: JSON.stringify({}),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.runReOrderSQLResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function downloadPlanFromSalesforce(retrieveData) {\r\n // string token, string userId, string consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/downloadPlanFromSalesforce/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.downloadPlanFromSalesforceResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getConsumerPlans,\r\n getConsumerPlanYearInfo,\r\n getPlanDropdownData,\r\n getPlanAndWorkFlowAttachments,\r\n insertAnnualPlan,\r\n insertRevisedPlan,\r\n insertAutomatedWorkflows,\r\n addSelectedAttachmentsToReport,\r\n updateConsumerPlanReactivate,\r\n updateConsumerPlanSetStatus,\r\n updateConsumerPlanSetAnnualDates,\r\n updateConsumerPlanSetRevisionEffectiveDates,\r\n updateConsumerPlanReviewDate,\r\n updatePlanSectionApplicable,\r\n updatePlanType,\r\n deletePlan,\r\n viewPlanAttachment,\r\n addPlanAttachment,\r\n deletePlanAttachment,\r\n getPlanAttachmentsList,\r\n uploadPlanToDODD,\r\n checkForSalesForce,\r\n getConsumerPeopleId,\r\n getConsumerPeopleIdAsync,\r\n runReOrderSQL,\r\n downloadPlanFromSalesforce\r\n };\r\n})();\r\n","const planAttachment = (() => {\r\n let attachments;\r\n let planId;\r\n\r\n /** Class for attachments in Plan Module */\r\n class PlanAttachment {\r\n /**\r\n * Create a new attachment instance\r\n * @param {[string]} header Header for Attachment Popup\r\n * @param {string} questionId question ID the attachment button is assoicated with\r\n * @param {string} assessmentId Assessment ID\r\n */\r\n constructor(header, questionId, assessmentId) {\r\n this.attachmentsForQuestion = [];\r\n this.header = header;\r\n this.questionId = questionId;\r\n this.assessmentId = assessmentId;\r\n }\r\n\r\n buildAttachmentButton() {\r\n if (attachments.has(this.questionId))\r\n this.attachmentsForQuestion = attachments.get(this.questionId);\r\n\r\n const attachmentButton = button.build({\r\n id: `attach-${this.questionId}`,\r\n text: `ATTACHMENTS (${this.attachmentsForQuestion.length})`,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n this.attachmentPopup();\r\n },\r\n });\r\n\r\n attachmentButton.classList.add('attachmentBtn');\r\n if (this.attachmentsForQuestion.length > 0) attachmentButton.classList.add('hasAttachments');\r\n\r\n return attachmentButton;\r\n }\r\n\r\n attachmentPopup() {\r\n const questionId = this.questionId;\r\n const assessmentId = this.assessmentId;\r\n const attachmentsForQuestion = this.attachmentsForQuestion;\r\n const attachmentsToDelete = [];\r\n const attachmentsAdded = [];\r\n // PERMISSIONS\r\n let ro;\r\n const planStatus = plan.getPlanStatus();\r\n const planActiveStatus = plan.getPlanActiveStatus();\r\n\r\n if (planActiveStatus && planStatus === 'D' && $.session.planUpdate) {\r\n ro = false;\r\n } else {\r\n ro = true;\r\n }\r\n // =========================\r\n // UTIL FUNCTIONS\r\n // =============================\r\n // Adds attachments to the existing attachments section in popup\r\n function populateExistingAttachments() {\r\n const header = document.createElement('h5');\r\n header.innerText = 'Existing Attachments:';\r\n reviewAttachmentList.appendChild(header);\r\n\r\n attachmentsForQuestion.forEach(attachment => {\r\n const fileContainer = document.createElement('div');\r\n fileContainer.classList.add('reviewAttachmentContainer');\r\n fileContainer.setAttribute('id', attachment.planAttachmentId);\r\n fileContainer.setAttribute('delete', false);\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n callback: event => addRemoveAttachmentToDeleteList(event.target.parentElement),\r\n });\r\n const file = document.createElement('p');\r\n file.innerText = attachment.description;\r\n if (!ro) fileContainer.appendChild(removeAttachmentBtn);\r\n fileContainer.appendChild(file);\r\n file.addEventListener('click', event => {\r\n const attachmentId = event.target.parentElement.id;\r\n planAjax.viewPlanAttachment(attachmentId, '');\r\n });\r\n reviewAttachmentList.appendChild(fileContainer);\r\n });\r\n }\r\n // CB for clicking the delete button on attachments in existing attachment section\r\n function addRemoveAttachmentToDeleteList(attachmentElement) {\r\n const currentDeleteStatus = attachmentElement.getAttribute('delete');\r\n const attachmentId = attachmentElement.getAttribute('id');\r\n switch (currentDeleteStatus) {\r\n case 'false':\r\n attachmentElement.classList.add('deleteAttachment');\r\n attachmentsToDelete.push(attachmentId);\r\n attachmentElement.setAttribute('delete', true);\r\n break;\r\n case 'true':\r\n attachmentElement.classList.remove('deleteAttachment');\r\n attachmentsToDelete = attachmentsToDelete.filter(\r\n attachment => attachment !== attachmentId,\r\n );\r\n attachmentElement.setAttribute('delete', false);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n // checks file is a valid type\r\n function fileValidation(target) {\r\n const fileType = target.files[0].type;\r\n const reFileTypeTest = new RegExp('(audio/)|(video/)');\r\n if (reFileTypeTest.test(fileType)) {\r\n alert('Anywhere currently does not accept audio or video files');\r\n target.value = '';\r\n return false;\r\n }\r\n }\r\n // CB for clicking the add attachment button. doesn't do anything if they haven't yet chosen an\r\n // attachment for existing add attachment input.\r\n function addNewAttachment() {\r\n function addRemoveAttachmentEventListener(btn) {\r\n btn.addEventListener('click', event => {\r\n const fileInput = event.target.parentElement.getElementsByTagName('input')[0];\r\n if (fileInput !== '') {\r\n event.target.parentElement.remove();\r\n }\r\n });\r\n }\r\n // Don't add new attachment input if the last attachment is empty\r\n const form = document.getElementById('attachmentForm');\r\n const lastAttachment = form.lastChild;\r\n if (lastAttachment && lastAttachment.querySelector('.attachmentInput').value === '') {\r\n return;\r\n }\r\n const newFileContainer = attachmentContainer.cloneNode(true);\r\n newFileContainer.getElementsByTagName('input')[0].value = ''; //remove file for new container\r\n newFileContainer\r\n .getElementsByTagName('input')[0]\r\n .addEventListener('change', evt => fileValidation(evt.target));\r\n attachmentList.appendChild(newFileContainer);\r\n addRemoveAttachmentEventListener(newFileContainer.firstElementChild);\r\n attachmentContainer = newFileContainer;\r\n }\r\n\r\n // CB for Done Button\r\n async function saveAction() {\r\n async function saveAttachmentsToDB() {\r\n const attachmentSaveArray = [];\r\n if (attachmentArray.length === 0) return;\r\n\r\n attachmentArray.forEach(attachment => {\r\n const saveProm = new Promise(resolve => {\r\n const saveData = {\r\n token: $.session.Token,\r\n assessmentId: assessmentId,\r\n description: attachment.description,\r\n attachmentType: attachment.type,\r\n attachment: attachment.arrayBuffer,\r\n section: '',\r\n questionId: questionId,\r\n };\r\n planAjax.addPlanAttachment(saveData).then(res => resolve(res));\r\n });\r\n attachmentSaveArray.push(saveProm);\r\n });\r\n\r\n const attSaveRes = await Promise.all(attachmentSaveArray);\r\n attSaveRes.forEach(att => {\r\n attachmentsAdded.push(att[0]);\r\n });\r\n }\r\n // DELETE ATTACHMENTS\r\n attachmentsToDelete.forEach(attachment => {\r\n planAjax.deletePlanAttachment(assessmentId, attachment);\r\n });\r\n\r\n // ADD ATTACHMENTS\r\n const attachmentInputs = document.querySelectorAll('.attachmentInput');\r\n if (attachmentInputs.length === 0) {\r\n console.log('no attachments to add');\r\n return;\r\n }\r\n\r\n let attachmentProms = [];\r\n let attachmentArray = [];\r\n attachmentInputs.forEach(inputElement => {\r\n if (inputElement.value === '') {\r\n return;\r\n }\r\n const attPromise = new Promise(resolve => {\r\n const attachmentObj = {};\r\n const attachmentFile = inputElement.files.item(0);\r\n const attachmentName = attachmentFile.name;\r\n const attachmentType = attachmentFile.name.split('.').pop();\r\n attachmentObj.description = attachmentName;\r\n attachmentObj.type = attachmentType;\r\n // new Response(file) was added for Safari compatibility\r\n new Response(attachmentFile).arrayBuffer().then(res => {\r\n attachmentObj.arrayBuffer = res;\r\n attachmentArray.push(attachmentObj);\r\n resolve();\r\n });\r\n });\r\n\r\n attachmentProms.push(attPromise);\r\n });\r\n\r\n await Promise.all(attachmentProms);\r\n await saveAttachmentsToDB();\r\n }\r\n //===========================================\r\n //===========================================\r\n\r\n const popup = POPUP.build({\r\n header: this.header,\r\n id: 'planAttachmentPopup',\r\n });\r\n\r\n const addAttachmentBtn = button.build({\r\n text: 'Add Attachment',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'add',\r\n callback: () => addNewAttachment(),\r\n });\r\n addAttachmentBtn.type = 'button';\r\n\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n });\r\n removeAttachmentBtn.type = 'button';\r\n\r\n const saveBtn = button.build({\r\n id: 'attachmentSave',\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n try {\r\n popup.style.display = 'none';\r\n pendingSave.show('Saving Attachment Changes');\r\n await saveAction();\r\n await this.cleanAttachmentLists(attachmentsAdded, attachmentsToDelete);\r\n pendingSave.fulfill('Saved');\r\n setTimeout(async () => {\r\n successfulSave.hide(false);\r\n // popup.remove();\r\n POPUP.hide(popup);\r\n // refresh attachments\r\n attachments = new Map();\r\n const res = await planAjax.getPlanAttachmentsList({\r\n token: $.session.Token,\r\n planId,\r\n section: '',\r\n });\r\n res.forEach(attachment => {\r\n let attArray = [];\r\n if (attachments.has(attachment.questionId)) {\r\n attArray = attachments.get(attachment.questionId);\r\n }\r\n attArray.push(attachment);\r\n attachments.set(attachment.questionId, attArray);\r\n });\r\n // build new button\r\n // const newAttachmentBtn = this.buildAttachmentButton();\r\n // const oldAttachmentBtn = document.getElementById(`attach-${this.questionId}`);\r\n // const attachmentParent = oldAttachmentBtn.parentElement;\r\n // attachmentParent.removeChild(oldAttachmentBtn);\r\n // attachmentParent.appendChild(newAttachmentBtn);\r\n }, 2000);\r\n } catch (error) {\r\n pendingSave.reject('Error saving attachment changes');\r\n setTimeout(() => {\r\n failSave.hide(false);\r\n popup.style.removeProperty('display');\r\n }, 2000);\r\n console.error(error);\r\n }\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n id: 'attachmentCancel',\r\n text: ro ? 'close' : 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n const reviewAttachmentList = document.createElement('div');\r\n reviewAttachmentList.classList.add('reviewAttachmentList');\r\n const newAttachmentList = document.createElement('div');\r\n newAttachmentList.classList.add('newAttachmentList');\r\n const newAttachmentsHeader = document.createElement('h5');\r\n newAttachmentsHeader.innerText = 'Attachments to be added:';\r\n newAttachmentList.appendChild(newAttachmentsHeader);\r\n\r\n const attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.classList.add('input-field__input', 'attachmentInput');\r\n attachmentInput.addEventListener('change', evt => fileValidation(evt.target));\r\n\r\n let attachmentContainer = document.createElement('div');\r\n attachmentContainer.classList.add('attachmentContainer');\r\n const attachmentList = document.createElement('form');\r\n attachmentList.setAttribute('id', 'attachmentForm');\r\n attachmentList.appendChild(attachmentContainer);\r\n attachmentContainer.appendChild(removeAttachmentBtn);\r\n attachmentContainer.appendChild(attachmentInput);\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n popup.appendChild(reviewAttachmentList);\r\n if (!ro) {\r\n popup.appendChild(newAttachmentList);\r\n popup.appendChild(attachmentList);\r\n popup.appendChild(addAttachmentBtn);\r\n btnWrap.appendChild(saveBtn);\r\n }\r\n\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n if (attachmentsForQuestion.length > 0) populateExistingAttachments();\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n /**\r\n * Gets the attachment button element\r\n * @return {HTMLButtonElement} Attachment Button Element\r\n */\r\n get attachmentButton() {\r\n return this.buildAttachmentButton();\r\n }\r\n\r\n cleanAttachmentLists(attachmentsToAdd, attachmentsToRemove) {\r\n attachmentsToRemove.forEach(attachmentId => {\r\n let list = attachments.get(this.questionId);\r\n let newList = list.filter(a => a.planAttachmentId !== attachmentId);\r\n attachments.set(this.questionId, newList);\r\n });\r\n attachmentsToAdd.forEach(attachment => {\r\n let list = [];\r\n if (attachments.has(this.questionId)) {\r\n list = attachments.get(this.questionId);\r\n }\r\n list.push(attachment);\r\n attachments.set(this.questionId, list);\r\n });\r\n if (attachments.has(this.questionId)) {\r\n this.attachmentsForQuestion = attachments.get(this.questionId);\r\n } else {\r\n this.attachmentsForQuestion = [];\r\n }\r\n\r\n const attachmentBtn = document.getElementById(`attach-${this.questionId}`);\r\n attachmentBtn.innerText = `ATTACHMENTS (${this.attachmentsForQuestion.length})`;\r\n\r\n const relativeCheckbox = attachmentBtn.parentElement.querySelector('.input-field__input');\r\n\r\n if (this.attachmentsForQuestion.length > 0) {\r\n attachmentBtn.classList.add('hasAttachments');\r\n attachmentBtn.classList.remove('error');\r\n } else {\r\n attachmentBtn.classList.remove('hasAttachments');\r\n if (relativeCheckbox.checked) {\r\n attachmentBtn.classList.add('error');\r\n } else {\r\n attachmentBtn.classList.remove('error');\r\n }\r\n }\r\n }\r\n }\r\n\r\n async function getAttachments(planID) {\r\n planId = planID;\r\n attachments = new Map();\r\n\r\n const retData = {\r\n token: $.session.Token,\r\n planId,\r\n section: '',\r\n };\r\n const res = await planAjax.getPlanAttachmentsList(retData);\r\n res.forEach(attachment => {\r\n let attArray = [];\r\n if (attachments.has(attachment.questionId)) {\r\n attArray = attachments.get(attachment.questionId);\r\n }\r\n attArray.push(attachment);\r\n attachments.set(attachment.questionId, attArray);\r\n });\r\n }\r\n\r\n return {\r\n PlanAttachment,\r\n getAttachments,\r\n };\r\n})();\r\n","const planData = (() => {\r\n let planId;\r\n let ispData;\r\n let dropdowns;\r\n\r\n // CHARACTER LIMITS\r\n //-----------------------------------------\r\n const characterLimits = {\r\n assessment: {},\r\n isp: {\r\n consentAndSign: {\r\n dissentAreaDisagree: 2500,\r\n dissentHowToAddress: 2500,\r\n },\r\n contactInfo: {\r\n moreDetail: 10000,\r\n },\r\n restrictiveMeasures: {\r\n rmKeepSelfSafe: 2500,\r\n rmFadeRestriction: 10000,\r\n rmWhatCouldHappenGood: 2500,\r\n rmWhatCouldHappenBad: 2500,\r\n rmOtherWayHelpGood: 2500,\r\n rmOtherWayHelpBad: 2500,\r\n },\r\n introduction: {\r\n likeAdmire: 2464,\r\n thingsImportantTo: 2464,\r\n thingsImportantFor: 2464,\r\n howToSupport: 2464,\r\n },\r\n outcomes: {\r\n description: 2500,\r\n details: 2500,\r\n history: 2500,\r\n carryOverReason: 255,\r\n whatNeedsToHappen: 2500, // exp\r\n howItShouldHappen: 2500, // exp\r\n whenHowOften: 255, // exp\r\n whenHowOftenOther: 255, // exp\r\n whatWillHappen: 2500, // rev\r\n whenToCheckIn: 2500, // rev\r\n },\r\n servicesSupports: {\r\n scopeOfService: 10000, // paid supp\r\n fundingSourceOther: 2500, // paid supp\r\n howOftenHowMuch: 255, // paid supp\r\n howOftenOther: 2500, // paid supp\r\n whatSupportLooksLike: 2500, // add supp\r\n whenHowOften: 2500, // add supp\r\n whenHowOftenOther: 2500, // add supp\r\n reasonForReferral: 2500, // prof ref\r\n },\r\n summary: {\r\n aloneTime: 10000,\r\n importantTo: 10000,\r\n importantFor: 10000,\r\n skillsAndAbilities: 10000,\r\n whatIsRisk: 10000,\r\n whatSupportLooksLike: 10000,\r\n },\r\n },\r\n };\r\n function getISPCharacterLimits(section) {\r\n return characterLimits.isp[section];\r\n }\r\n function getAllISPcharacterLimts() {\r\n return characterLimits.isp;\r\n }\r\n function getAssessmentCharacterLimits(section) {\r\n return characterLimits.assessment[section];\r\n }\r\n\r\n // DROPDOWN DATA\r\n //-----------------------------------------\r\n const removeDupRelationships = relationships => {\r\n const unique = [];\r\n const flag = {};\r\n relationships.forEach(el => {\r\n if (!flag[el.peopleId]) {\r\n flag[el.peopleId] = true;\r\n el.lastName = el.lastName.split('|')[0];\r\n unique.push(el);\r\n }\r\n });\r\n return unique;\r\n };\r\n const removeDups = data => {\r\n const flag = {};\r\n const flagN = {};\r\n const unique = [];\r\n data.forEach(el => {\r\n if (!flag[el.value] && !flagN[el.text]) {\r\n flag[el.value] = true;\r\n flagN[el.text] = true;\r\n unique.push(el);\r\n }\r\n });\r\n return unique;\r\n };\r\n async function setDropdownData() {\r\n /**\r\n * -- Service Type changes for Ticket 66872 --\r\n * Service Types no longer populate from GK, but instead are static,\r\n * and are also tied to a specific funding source. Some service types\r\n * only show with specific funding sources\r\n * Show with '%' displays with all funding sources\r\n * DON'T CHANGE VALUE!\r\n */\r\n const defaultDropdowns = {\r\n fundingSource: [\r\n { value: '%', text: '' },\r\n { value: '1', text: 'HCBS Individual Options Waiver' },\r\n { value: '2', text: 'HCBS Level One Waiver' },\r\n { value: '3', text: 'HCBS SELF Waiver' },\r\n { value: '4', text: 'ICF' },\r\n { value: '5', text: 'State Plan Services' },\r\n { value: '6', text: 'Local Funds' },\r\n { value: '7', text: 'Local Funds--Contracted with Ohio Department of Aging' },\r\n { value: '8', text: 'Other' },\r\n ],\r\n serviceTypes: [\r\n {\r\n value: '1',\r\n text: 'Adult Day Support - Community',\r\n showWith: ['1', '2', '3', '6', '7', '8'],\r\n },\r\n {\r\n value: '2',\r\n text: 'Adult Day Support - Facility',\r\n showWith: ['1', '2', '3', '6', '7', '8'],\r\n },\r\n {\r\n value: '51',\r\n text: 'Adult Day Support - Virtual',\r\n showWith: ['1', '2', '3', '6', '7'],\r\n },\r\n {\r\n value: '3',\r\n text: 'Assistive Technology Consultation & Supports',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n {\r\n value: '4',\r\n text: 'Assistive Technology Equipment & Supports',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n { value: '5', text: 'Career Planning', showWith: ['1', '2', '3', '6', '8'] },\r\n {\r\n value: '6',\r\n text: 'Career Planning--Benefits Education and Analysis',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n {\r\n value: '7',\r\n text: 'Career Planning--Worksite Accessibility',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n { value: '8', text: 'Community Respite', showWith: ['1', '2', '3', '8'] },\r\n { value: '9', text: 'Community Transition', showWith: ['1', '8'] },\r\n {\r\n value: '10',\r\n text: 'CTI--Clinical/Therapeutic Interventionist (SELF Service)',\r\n showWith: ['2', '3', '8'],\r\n },\r\n {\r\n value: '11',\r\n text: 'CTI--Senior Level Specialized Clinical/Therapeutic Interventionist (SELF Service)',\r\n showWith: ['3', '8'],\r\n },\r\n {\r\n value: '12',\r\n text: 'CTI--Specialized Clinical/Therapeutic Interventionist (SELF Service)',\r\n showWith: ['3', '8'],\r\n },\r\n { value: '13', text: 'DD Waiver Nursing', showWith: ['1', '8'] },\r\n { value: '14', text: 'Environmental Accessibility Adaptations', showWith: ['1', '2', '8'] },\r\n {\r\n value: '15',\r\n text: 'Functional Behavioral Assessment (SELF Service)',\r\n showWith: ['3', '8'],\r\n },\r\n { value: '16', text: 'Group Employment Supports', showWith: ['1', '2', '3', '6', '8'] },\r\n { value: '17', text: 'Home Delivered Meals', showWith: ['1', '2', '3', '8'] },\r\n { value: '18', text: 'Homemaker Personal Care', showWith: ['1', '2', '8'] },\r\n {\r\n value: '19',\r\n text: 'Homemaker Personal Care (HPC) Transportation',\r\n showWith: ['1', '2', '3', '8'],\r\n },\r\n { value: '20', text: 'HPC Transportation (Commercial)', showWith: ['1', '2', '8'] },\r\n {\r\n value: '21',\r\n text: 'Individual Employment Supports',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n { value: '22', text: 'Informal Respite--Family Only', showWith: ['2', '8'] },\r\n { value: '23', text: 'Informal Respite--Non-Family Only', showWith: ['2', '8'] },\r\n { value: '24', text: 'Intermediate Care Facility', showWith: ['4', '8'] },\r\n { value: '25', text: 'Interpreter Services', showWith: ['1', '8'] },\r\n { value: '26', text: 'Money Management', showWith: ['1', '2', '8'] },\r\n {\r\n value: '27',\r\n text: 'Non-Medical Transportation - Commercial (CNMT)',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n {\r\n value: '28',\r\n text: 'Non-Medical Transportation (NMT)',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n { value: '29', text: 'Nutritional Services', showWith: ['1', '8'] },\r\n { value: '30', text: 'Participant Directed HPC', showWith: ['1', '2', '3', '8'] },\r\n { value: '31', text: 'Participant Directed Goods and Services', showWith: ['2', '3', '8'] },\r\n {\r\n value: '32',\r\n text: 'Participant/Family Stability Assistance--Counseling (SELF Service)',\r\n showWith: ['3', '8'],\r\n },\r\n {\r\n value: '33',\r\n text: 'Participant/Family Stability Assistance--Training (SELF Service)',\r\n showWith: ['2', '3', '8'],\r\n },\r\n { value: '34', text: 'Remote Supports', showWith: ['1', '2', '3', '6', '8'] },\r\n { value: '35', text: 'Residential Respite', showWith: ['1', '2', '3', '8'] },\r\n { value: '36', text: 'Shared Living', showWith: ['1', '8'] },\r\n { value: '37', text: 'Social Work', showWith: ['1', '8'] },\r\n {\r\n value: '38',\r\n text: 'Specialized Medical Equipment (Adaptive Assistive Equipment)',\r\n showWith: ['1', '2', '8'],\r\n },\r\n { value: '39', text: 'Support Brokerage (SELF Service)', showWith: ['3', '8'] },\r\n { value: '40', text: 'Support Brokerage--Unpaid (SELF Service)', showWith: ['3', '8'] },\r\n { value: '41', text: 'Supported Living', showWith: ['8'] },\r\n { value: '42', text: 'Targeted Case Management', showWith: ['8'] },\r\n {\r\n value: '43',\r\n text: 'Vocational Habilitation - Community',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n {\r\n value: '44',\r\n text: 'Vocational Habilitation - Facility',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n { value: '45', text: 'Waiver Facility Licensee Only', showWith: ['8'] },\r\n { value: '46', text: 'Waiver Nursing Delegation (WND)', showWith: ['1', '2', '3', '8'] },\r\n { value: '47', text: 'Other (please specify)', showWith: ['5', '6'] },\r\n { value: '48', text: 'Self Directed Transportation', showWith: ['1', '2', '3'] },\r\n { value: '49', text: 'Adult Day Support - Both', showWith: ['1', '2', '3', '6', '7', '8'] },\r\n {\r\n value: '50',\r\n text: 'Vocational Habilitation - Both',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n {\r\n value: '52',\r\n text: 'Vocational Habilitation - Virtual',\r\n showWith: ['1', '2', '3', '6'],\r\n },\r\n {\r\n value: '53',\r\n text: 'Health Care Assessment',\r\n showWith: ['1', '2', '3'],\r\n },\r\n ],\r\n newOrExisting: [\r\n { value: '%', text: '' },\r\n { value: '1', text: 'New' },//\r\n { value: '2', text: 'Existing' },\r\n ],\r\n howOftenHowMuchFrequency: [\r\n { value: '%', text: '' },\r\n { value: '1', text: 'Daily' },\r\n { value: '2', text: 'Weekly' },\r\n { value: '3', text: 'Monthly' },\r\n { value: '4', text: 'Miles' },\r\n { value: '5', text: 'Other' },\r\n ],\r\n whenHowOftenFrequency: [\r\n { value: '%', text: '' },\r\n { value: '1', text: 'Daily' },\r\n { value: '2', text: 'Weekly' },\r\n { value: '3', text: 'Monthly' },\r\n { value: '4', text: 'Other' },\r\n ],\r\n howOFtenExperiences: [\r\n { value: '%', text: '' },\r\n { value: '1', text: 'Weekly' },\r\n { value: '2', text: 'Monthly' },\r\n { value: '3', text: 'Other' },\r\n ],\r\n communicationType: [\r\n // { value: '%', text: '' },\r\n { value: '1', text: 'Letter / Mail.' },\r\n { value: '2', text: 'Phone Call.' },\r\n { value: '3', text: 'Text.' },\r\n { value: '4', text: 'Email.' },\r\n { value: '5', text: 'Social Media.' },\r\n { value: '6', text: 'Video Meeting.' },\r\n { value: '7', text: 'Other.' },\r\n ],\r\n dailyLifeDropdownType: [\r\n { value: '%', text: '' },\r\n {\r\n value: '1',\r\n text: '1 Person has a job, may be interested in a different one or moving up.',\r\n },\r\n { value: '2', text: '2 Person wants a job and needs help to find one.' },\r\n {\r\n value: '3',\r\n text: `3 Person isn't sure about work and may need to learn more.`,\r\n },\r\n {\r\n value: '4',\r\n text: `4 Person doesn't think they want to work, but may not know enough about it.`,\r\n },\r\n ],\r\n levelsOfSupervision: [\r\n { value: '%', text: '' },\r\n { value: '1', text: 'No Paid Supports' },\r\n { value: '2', text: 'General' },\r\n { value: '3', text: 'Auditory' },\r\n { value: '4', text: 'Visual' },\r\n { value: '5', text: 'Close & Constant' },\r\n { value: '6', text: 'Technology' },\r\n ],\r\n outcomeStatus: [\r\n { value: '0', text: 'In Progress' },\r\n { value: '1', text: 'Complete' },\r\n ],\r\n };\r\n\r\n const retrieveData = {\r\n token: $.session.Token,\r\n effectiveStartDate: UTIL.getFormattedDateFromDate(planDates.getEffectiveStartDate(), {\r\n format: 'iso',\r\n }),\r\n effectiveEndDate: UTIL.getFormattedDateFromDate(planDates.getEffectiveEndDate(), {\r\n format: 'iso',\r\n }),\r\n consumerId: plan.getSelectedConsumer().id,\r\n areInSalesForce: $.session.areInSalesForce,\r\n planId,\r\n };\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceAndSupportsData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n dropdowns = {\r\n ...data.getServiceAndSupportsDataResult,\r\n ...defaultDropdowns,\r\n };\r\n\r\n dropdowns.relationshipsWithDups = dropdowns.relationships;\r\n dropdowns.relationships = removeDupRelationships(dropdowns.relationships);\r\n } catch (error) {\r\n console.log(error);\r\n\r\n dropdowns = {\r\n ...defaultDropdowns,\r\n };\r\n }\r\n }\r\n function getDropdownData() {\r\n return dropdowns;\r\n }\r\n async function refreshDropdownData() {\r\n await setDropdownData();\r\n planSummary.refreshDropdownData(dropdowns);\r\n planOutcomes.refreshDropdownData(dropdowns);\r\n servicesSupports.refreshDropdownData(dropdowns);\r\n contactInformation.refreshDropdownData(dropdowns);\r\n }\r\n function getRelationshipNameById(contactId) {\r\n if (!contactId) return '';\r\n\r\n if (contactId.endsWith('V')) {\r\n const supportData = servicesSupports.getSelectedVendors();\r\n const filteredService = supportData.filter(dd => `${dd.providerId}V` === contactId);\r\n if (filteredService.length > 0) {\r\n return `${filteredService[0].providerName}`;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n const filteredService = dropdowns.relationships.filter(dd => dd.contactId === contactId);\r\n if (filteredService.length > 0) {\r\n if (!filteredService[0].lastName || !filteredService[0].firstName) return '';\r\n return `${filteredService[0].lastName}, ${filteredService[0].firstName}`;\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n function populateRelationshipDropdown(dropdownEle, defaultValue, includeSupports = false) {\r\n //if ($.session.areInSalesForce) {\r\n // group populate\r\n const teamMemberGroup = {\r\n groupLabel: 'Plan Team Member',\r\n groupId: 'teamMemberGroup',\r\n dropdownValues: [],\r\n };\r\n const nonTeamMemberGroup = {\r\n groupLabel: 'Not a Team Member on this Plan',\r\n groupId: 'nonTeamMemberGroup',\r\n dropdownValues: [],\r\n };\r\n const paidSupportsGroup = {\r\n groupLabel: 'Providers on this Plan',\r\n groupId: 'paidSupportsGroup',\r\n dropdownValues: [],\r\n };\r\n\r\n dropdowns.relationships.forEach(dd => {\r\n if (dd.signatureId) {\r\n teamMemberGroup.dropdownValues.push({\r\n value: dd.contactId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n });\r\n } else {\r\n nonTeamMemberGroup.dropdownValues.push({\r\n value: dd.contactId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n });\r\n }\r\n });\r\n\r\n teamMemberGroup.dropdownValues = removeDups(teamMemberGroup.dropdownValues);\r\n nonTeamMemberGroup.dropdownValues = removeDups(nonTeamMemberGroup.dropdownValues);\r\n\r\n teamMemberGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n nonTeamMemberGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n const groupDropdownData = [];\r\n groupDropdownData.push(teamMemberGroup);\r\n groupDropdownData.push(nonTeamMemberGroup);\r\n\r\n if (includeSupports) {\r\n const supportData = servicesSupports.getSelectedVendors();\r\n paidSupportsGroup.dropdownValues = supportData.map(ps => {\r\n return {\r\n value: `${ps.providerId}V`,\r\n text: ps.providerName,\r\n };\r\n });\r\n\r\n paidSupportsGroup.dropdownValues = removeDups(paidSupportsGroup.dropdownValues);\r\n paidSupportsGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n groupDropdownData.push(paidSupportsGroup);\r\n }\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: dropdownEle,\r\n data: groupDropdownData,\r\n nonGroupedData: [{ value: '', text: '' }],\r\n defaultVal: defaultValue,\r\n });\r\n // } else {\r\n // let data;\r\n // // normal populate\r\n // const data1 = dropdowns.relationships.map(dd => {\r\n // return {\r\n // value: dd.contactId,\r\n // text: `${dd.lastName}, ${dd.firstName}`,\r\n // };\r\n // });\r\n\r\n // if (includeSupports) {\r\n // const supportData = servicesSupports.getSelectedVendors();\r\n // const data2 = supportData.map(ps => {\r\n // return {\r\n // value: `${ps.providerId}V`,\r\n // text: ps.providerName,\r\n // };\r\n // });\r\n\r\n // data = [...data1, ...data2];\r\n // } else {\r\n // data = data1;\r\n // }\r\n\r\n // data.sort((a, b) => {\r\n // const textA = a.text.toUpperCase();\r\n // const textB = b.text.toUpperCase();\r\n // return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n // });\r\n // data.unshift({ value: '', text: '' });\r\n\r\n // dropdown.populate(dropdownEle, removeDups(data), defaultValue);\r\n // }\r\n }\r\n\r\n async function populateOutcomesReviewWhoDropdown(dropdownEle, defaultValue) {\r\n //if ($.session.areInSalesForce) {\r\n // group populate\r\n const teamMemberGroup = {\r\n groupLabel: 'Plan Team Member',\r\n groupId: 'teamMemberGroup',\r\n dropdownValues: [],\r\n };\r\n const nonTeamMemberGroup = {\r\n groupLabel: 'Not a Team Member on this Plan',\r\n groupId: 'nonTeamMemberGroup',\r\n dropdownValues: [],\r\n };\r\n const paidSupportsGroup = {\r\n groupLabel: 'Providers on this Plan',\r\n groupId: 'paidSupportsGroup',\r\n dropdownValues: [],\r\n };\r\n const locationsGroup = {\r\n groupLabel: 'Facilities on this Plan ',\r\n groupId: 'locationsGroup',\r\n dropdownValues: [],\r\n };\r\n\r\n dropdowns.relationships.forEach(dd => {\r\n if (dd.signatureId) {\r\n teamMemberGroup.dropdownValues.push({\r\n value: dd.contactId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n });\r\n } else {\r\n nonTeamMemberGroup.dropdownValues.push({\r\n value: dd.contactId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n });\r\n }\r\n });\r\n\r\n teamMemberGroup.dropdownValues = removeDups(teamMemberGroup.dropdownValues);\r\n nonTeamMemberGroup.dropdownValues = removeDups(nonTeamMemberGroup.dropdownValues);\r\n\r\n teamMemberGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n nonTeamMemberGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n const groupDropdownData = [];\r\n groupDropdownData.push(teamMemberGroup);\r\n groupDropdownData.push(nonTeamMemberGroup);\r\n\r\n const teamMemberData = await consentAndSignAjax.getConsentAndSignData({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n // var theseVendors = teamMemberData.filter(vendor => vendor.vendorId !== '' && vendor.salesForceId !== '');\r\n var theseVendors = teamMemberData.filter(member => member.vendorId !== '');\r\n paidSupportsGroup.dropdownValues = theseVendors.map(ps => {\r\n return {\r\n value: `${ps.vendorId}V`,\r\n text: ps.name,\r\n };\r\n });\r\n\r\n paidSupportsGroup.dropdownValues = removeDups(paidSupportsGroup.dropdownValues);\r\n paidSupportsGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n if (theseVendors.length > 0) groupDropdownData.push(paidSupportsGroup);\r\n\r\n if ($.session.applicationName !== 'Gatekeeper') { \r\n var theseLocations = teamMemberData.filter(member => member.locationId !== '');\r\n //var theseLocations = teamMemberData.filter(member => member.locationId !== '');\r\n locationsGroup.dropdownValues = theseLocations.map(ps => {\r\n return {\r\n value: `${ps.locationId}L`,\r\n text: ps.name,\r\n };\r\n });\r\n\r\n locationsGroup.dropdownValues = removeDups(locationsGroup.dropdownValues);\r\n locationsGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n if (theseLocations.length > 0) groupDropdownData.push(locationsGroup);\r\n }\r\n // }\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: dropdownEle,\r\n data: groupDropdownData,\r\n nonGroupedData: [{ value: '', text: '' }],\r\n defaultVal: defaultValue,\r\n });\r\n \r\n }\r\n\r\n async function init(planID) {\r\n planId = planID;\r\n await setDropdownData();\r\n await planValidation.init(planId);\r\n }\r\n\r\n return {\r\n init,\r\n getDropdownData,\r\n getRelationshipNameById,\r\n getISPCharacterLimits,\r\n getAllISPcharacterLimts,\r\n getAssessmentCharacterLimits,\r\n populateRelationshipDropdown,\r\n populateOutcomesReviewWhoDropdown,\r\n refreshDropdownData,\r\n };\r\n})();\r\n","const planDates = (function () {\r\n // DOM\r\n let datesBoxDiv;\r\n let startDateInput;\r\n let endDateInput;\r\n let effectiveStartDateInput;\r\n let effectiveEndDateInput;\r\n let reviewDateInput;\r\n let dateErrorMessage;\r\n // Data\r\n let planYearInfo;\r\n let selectedConsumer;\r\n // Values\r\n let planYearStartDate;\r\n let planYearEndDate;\r\n let effectiveStartDate;\r\n let effectiveEndDate;\r\n let planReviewDate;\r\n // values changed?\r\n let dateChanged;\r\n let reviewDateChanged;\r\n // cahced dated vals\r\n let origPlanYearStartDate;\r\n let origPlanYearEndDate;\r\n let origEffectiveStartDate;\r\n let origEffectiveEndDate;\r\n let origPlanReviewDate;\r\n // prior plan data\r\n let priorPlanYearEndDate;\r\n let priorPlanYearStartDate;\r\n let priorEffectiveStartDate;\r\n let reviewDateOpts;\r\n\r\n let onChangeCallback;\r\n\r\n function clearData() {\r\n datesBoxDiv = undefined;\r\n startDateInput = undefined;\r\n endDateInput = undefined;\r\n effectiveStartDateInput = undefined;\r\n effectiveEndDateInput = undefined;\r\n\r\n planYearInfo = undefined;\r\n selectedConsumer = undefined;\r\n planYearStartDate = undefined;\r\n planYearEndDate = undefined;\r\n effectiveStartDate = undefined;\r\n effectiveEndDate = undefined;\r\n planReviewDate = undefined;\r\n priorPlanYearEndDate = undefined;\r\n priorEffectiveStartDate = undefined;\r\n priorPlanYearStartDate = undefined;\r\n origEffectiveEndDate = undefined;\r\n origEffectiveStartDate = undefined;\r\n origPlanReviewDate = undefined;\r\n origPlanYearEndDate = undefined;\r\n origPlanYearStartDate = undefined;\r\n }\r\n function showReviewDateWarningPopup() {\r\n const warningPop = POPUP.build({\r\n id: 'reviewDateWraningPopup',\r\n hideX: true,\r\n });\r\n const message = document.createElement('p');\r\n message.innerText = `Review date must fall between effective start date and effective end date.`;\r\n\r\n const okBtn = button.build({\r\n text: 'ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(warningPop);\r\n },\r\n });\r\n\r\n warningPop.appendChild(message);\r\n warningPop.appendChild(okBtn);\r\n\r\n POPUP.show(warningPop);\r\n }\r\n\r\n // Dates\r\n //------------------------------------\r\n function resetPlanDatesFromChangeTypeMenu(cachedDates) {\r\n cachedDates.planYearStartDate = planYearStartDate;\r\n cachedDates.planYearEndDate = planYearEndDate;\r\n cachedDates.effectiveStartDate = effectiveStartDate;\r\n cachedDates.effectiveEndDate = effectiveEndDate;\r\n cachedDates.planReviewDate = planReviewDate;\r\n }\r\n function setRevisionPlanDates(planDates) {\r\n // cache dates\r\n const cahce = {\r\n planYearStartDate,\r\n planYearEndDate,\r\n effectiveStartDate,\r\n effectiveEndDate,\r\n planReviewDate,\r\n };\r\n\r\n let { effectiveEnd, effectiveStart, planYearStart, planYearEnd, reviewDate } = planDates;\r\n const today = UTIL.getTodaysDate(true);\r\n today.setHours(0, 0, 0, 0);\r\n\r\n // split dates and get obj\r\n effectiveStart = effectiveStart.split(' ')[0];\r\n effectiveEnd = effectiveEnd.split(' ')[0];\r\n planYearStart = planYearStart.split(' ')[0];\r\n planYearEnd = planYearEnd.split(' ')[0];\r\n reviewDate = reviewDate.split(' ')[0];\r\n\r\n effectiveStartDate = today;\r\n effectiveEndDate = new Date(effectiveEnd);\r\n planYearStartDate = new Date(planYearStart);\r\n planYearEndDate = new Date(planYearEnd);\r\n planReviewDate = dates.addMonths(effectiveEndDate, -1);\r\n\r\n priorPlanYearEndDate = planYearEndDate;\r\n priorPlanYearStartDate = planYearStartDate;\r\n priorEffectiveStartDate = new Date(effectiveStart);\r\n\r\n return cahce;\r\n }\r\n async function setAnnualPlanDates(previousPlans) {\r\n selectedConsumer = plan.getSelectedConsumer();\r\n\r\n if (!planYearInfo) {\r\n planYearInfo = await planAjax.getConsumerPlanYearInfo({\r\n token: $.session.Token,\r\n consumerId: selectedConsumer.id,\r\n });\r\n }\r\n\r\n const { startDay, startMonth } = planYearInfo;\r\n let latestActivePlan;\r\n let previousPlanStartDate;\r\n let previousPlanCreatedOnDate;\r\n let planStartDate;\r\n let planEndDate;\r\n let newReviewDate;\r\n\r\n if (previousPlans && previousPlans.length > 0) {\r\n const activeConsumerPlans = previousPlans.filter(p => p.active === 'True');\r\n latestActivePlan = activeConsumerPlans.reduce((a, b) => {\r\n return new Date(a.planYearStart) > new Date(b.planYearStart) ? a : b;\r\n });\r\n\r\n previousPlanStartDate = new Date(latestActivePlan.planYearStart);\r\n previousPlanCreatedOnDate = new Date(latestActivePlan.createdOn);\r\n }\r\n\r\n if (previousPlanStartDate) {\r\n planStartDate = dates.addYears(previousPlanStartDate, 1);\r\n const today = new Date();\r\n //newReviewDate = dates.addMonths(today, 1);\r\n } else {\r\n const today = new Date();\r\n\r\n if (!startDay || !startMonth) {\r\n planStartDate = today;\r\n } else {\r\n const currentYear = today.getFullYear();\r\n planStartDate = new Date(currentYear, startMonth - 1, startDay, 0);\r\n }\r\n\r\n //newReviewDate = dates.addYears(today, 1);\r\n }\r\n\r\n planEndDate = dates.addYears(planStartDate, 1);\r\n planEndDate = dates.subDays(planEndDate, 1);\r\n\r\n newReviewDate = dates.addMonths(planEndDate, -1);\r\n\r\n planYearStartDate = planStartDate;\r\n planYearEndDate = planEndDate;\r\n effectiveStartDate = planYearStartDate;\r\n effectiveEndDate = planYearEndDate;\r\n planReviewDate = newReviewDate;\r\n }\r\n function setReviewPlanDates(dates) {\r\n const { startDate, endDate, effectiveStart, effectiveEnd, reviewDate } = dates;\r\n\r\n planYearStartDate = startDate;\r\n planYearEndDate = endDate;\r\n effectiveStartDate = effectiveStart;\r\n effectiveEndDate = effectiveEnd;\r\n planReviewDate = reviewDate;\r\n\r\n origPlanYearStartDate = startDate;\r\n origPlanYearEndDate = endDate;\r\n origEffectiveStartDate = effectiveStart;\r\n origEffectiveEndDate = effectiveEnd;\r\n origPlanReviewDate = reviewDate;\r\n }\r\n async function updatePlanDates(planId, planType) {\r\n let success;\r\n\r\n if (reviewDateChanged) {\r\n const newPlanReviewDate = UTIL.formatDateFromDateObj(planReviewDate);\r\n await planAjax.updateConsumerPlanReviewDate({\r\n token: $.session.Token,\r\n planId: parseInt(planId),\r\n reviewDate: newPlanReviewDate,\r\n });\r\n origPlanReviewDate = planReviewDate;\r\n }\r\n\r\n if ((planType === 'Annual' || planType === 'a') && dateChanged) {\r\n const newPlanYearStartDate = UTIL.formatDateFromDateObj(planYearStartDate);\r\n success = await planAjax.updateConsumerPlanSetAnnualDates({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n newPlanYearStart: newPlanYearStartDate,\r\n });\r\n origPlanYearStartDate = planYearStartDate;\r\n // let cache13 = {eventTypeId : planId, eventType : \"plan\", eventId : 13};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache13);\r\n // let cache20 = {eventTypeId : planId, eventType : \"plan\", eventId : 20};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache20);\r\n // let cache17 = {eventTypeId : planId, eventType : \"plan\", eventId : 17};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache17);\r\n } else if ((planType === 'Revision' || planType === 'r') && dateChanged) {\r\n const newEffectiveStartDate = UTIL.formatDateFromDateObj(effectiveStartDate);\r\n const newEffectiveEndDate = UTIL.formatDateFromDateObj(effectiveEndDate);\r\n success = await planAjax.updateConsumerPlanSetRevisionEffectiveDates({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n newEffectiveStart: newEffectiveStartDate,\r\n newEffectiveEnd: newEffectiveEndDate,\r\n });\r\n origEffectiveStartDate = effectiveStartDate;\r\n origEffectiveEndDate = effectiveEndDate;\r\n // let cache14 = {eventTypeId : planId, eventType : \"plan\", eventId : 14};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache14);\r\n // let cache19 = {eventTypeId : planId, eventType : \"plan\", eventId : 19};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache19);\r\n // let cache18 = {eventTypeId : planId, eventType : \"plan\", eventId : 18};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache18);\r\n }\r\n\r\n dateChanged = false;\r\n reviewDateChanged = false;\r\n\r\n return success;\r\n }\r\n function resetPlanDatesToOriginal() {\r\n planYearStartDate = origPlanYearStartDate;\r\n planYearEndDate = origPlanYearEndDate;\r\n effectiveStartDate = origEffectiveStartDate;\r\n effectiveEndDate = origEffectiveEndDate;\r\n planReviewDate = origPlanReviewDate;\r\n\r\n dateChanged = false;\r\n reviewDateChanged = false;\r\n }\r\n function getPlanYearStartDate() {\r\n return planYearStartDate;\r\n }\r\n function getPlanYearEndDate() {\r\n return planYearEndDate;\r\n }\r\n function getEffectiveStartDate() {\r\n return effectiveStartDate;\r\n }\r\n function getEffectiveEndDate() {\r\n return effectiveEndDate;\r\n }\r\n function getPlanReviewDate() {\r\n return planReviewDate;\r\n }\r\n\r\n function dashHandler(dates) {\r\n planYearStartDate = dates.planYearStartDate;\r\n planYearEndDate = dates.planYearEndDate;\r\n effectiveStartDate = dates.effectiveStartDate;\r\n effectiveEndDate = dates.effectiveEndDate;\r\n planReviewDate = dates.planReviewDate;\r\n }\r\n\r\n // Date Box\r\n //------------------------------------\r\n function toggleDateInputDisable(forMoreMenu) {\r\n let startInput = startDateInput.querySelector('input');\r\n let endInput = endDateInput.querySelector('input');\r\n let effectiveStartInput = effectiveStartDateInput.querySelector('input');\r\n let effectiveEndInput = effectiveEndDateInput.querySelector('input');\r\n let planType = plan.getCurrentPlanType();\r\n\r\n if (forMoreMenu) {\r\n //startDateInput.classList.add('disabled');\r\n //endDateInput.classList.add('disabled');\r\n\r\n effectiveStartDateInput.classList.remove('disabled');\r\n effectiveEndDateInput.classList.remove('disabled');\r\n\r\n startInput.setAttribute('tabIndex', '-1');\r\n endInput.setAttribute('tabIndex', '-1');\r\n effectiveStartInput.setAttribute('tabIndex', '0');\r\n effectiveEndInput.setAttribute('tabIndex', '0');\r\n return;\r\n }\r\n\r\n if (!planType) {\r\n startDateInput.classList.add('disabled');\r\n endDateInput.classList.add('disabled');\r\n effectiveStartDateInput.classList.add('disabled');\r\n effectiveEndDateInput.classList.add('disabled');\r\n\r\n startInput.setAttribute('tabIndex', '-1');\r\n endInput.setAttribute('tabIndex', '-1');\r\n effectiveStartInput.setAttribute('tabIndex', '-1');\r\n effectiveEndInput.setAttribute('tabIndex', '-1');\r\n return;\r\n }\r\n\r\n if (planType === 'a') {\r\n startDateInput.classList.remove('disabled');\r\n\r\n endDateInput.classList.add('disabled');\r\n effectiveStartDateInput.classList.add('disabled');\r\n effectiveEndDateInput.classList.add('disabled');\r\n\r\n startInput.setAttribute('tabIndex', '0');\r\n endInput.setAttribute('tabIndex', '-1');\r\n effectiveStartInput.setAttribute('tabIndex', '-1');\r\n effectiveEndInput.setAttribute('tabIndex', '-1');\r\n return;\r\n }\r\n\r\n if (planType === 'r') {\r\n startDateInput.classList.add('disabled');\r\n endDateInput.classList.add('disabled');\r\n\r\n effectiveStartDateInput.classList.remove('disabled');\r\n effectiveEndDateInput.classList.remove('disabled');\r\n\r\n startInput.setAttribute('tabIndex', '-1');\r\n endInput.setAttribute('tabIndex', '-1');\r\n effectiveStartInput.setAttribute('tabIndex', '0');\r\n effectiveEndInput.setAttribute('tabIndex', '0');\r\n return;\r\n }\r\n }\r\n function validateAnnualDates() {\r\n const startInput = startDateInput.querySelector('input');\r\n const planStartTime = planYearStartDate.getTime();\r\n const templateStartDate = new Date('2020', '0', '1', 0).getTime();\r\n\r\n if (startInput.value === '' || planStartTime < templateStartDate) {\r\n startDateInput.classList.add('error');\r\n plan.toggleNewPlanDoneBtn(true);\r\n return 'error';\r\n } else {\r\n startDateInput.classList.remove('error');\r\n plan.toggleNewPlanDoneBtn();\r\n return 'success';\r\n }\r\n }\r\n function validateRevisionDates() {\r\n const effectiveStartInput = effectiveStartDateInput.querySelector('input');\r\n const effectiveEndInput = effectiveEndDateInput.querySelector('input');\r\n const priorEffectiveStartTime = priorEffectiveStartDate && priorEffectiveStartDate.getTime();\r\n const planStartTime = planYearStartDate.getTime();\r\n const priorStartTime = priorPlanYearStartDate && priorPlanYearStartDate.getTime();\r\n const planEndTime = planYearEndDate.getTime();\r\n const effectiveStartTime = effectiveStartDate.getTime();\r\n const effectiveEndTime = effectiveEndDate.getTime();\r\n\r\n let startTimeError;\r\n let endTimeError;\r\n\r\n if (priorEffectiveStartTime && effectiveStartTime <= priorEffectiveStartTime) {\r\n startTimeError = true;\r\n }\r\n if (effectiveStartTime < planStartTime) {\r\n startTimeError = true;\r\n }\r\n if (effectiveStartTime > planEndTime) {\r\n startTimeError = true;\r\n }\r\n if (priorStartTime && effectiveStartTime <= priorStartTime) {\r\n startTimeError = true;\r\n }\r\n if (effectiveEndTime < effectiveStartTime) {\r\n endTimeError = true;\r\n }\r\n if (effectiveEndTime > planEndTime) {\r\n endTimeError = true;\r\n }\r\n\r\n if (startTimeError) {\r\n effectiveStartInput.classList.add('error');\r\n } else {\r\n effectiveStartInput.classList.remove('error');\r\n }\r\n\r\n if (endTimeError) {\r\n effectiveEndInput.classList.add('error');\r\n } else {\r\n effectiveEndInput.classList.remove('error');\r\n }\r\n\r\n if (startTimeError || endTimeError) {\r\n plan.toggleNewPlanDoneBtn(true);\r\n return 'error';\r\n } else {\r\n plan.toggleNewPlanDoneBtn();\r\n return 'success';\r\n }\r\n }\r\n function checkRequiredFields() {\r\n if (!datesBoxDiv) return;\r\n\r\n let planType = plan.getCurrentPlanType();\r\n\r\n if (!planType || planType === '%') {\r\n plan.toggleNewPlanDoneBtn(true);\r\n return 'error';\r\n }\r\n\r\n if (planType === 'a') {\r\n return validateAnnualDates(planType);\r\n }\r\n\r\n return validateRevisionDates(planType);\r\n }\r\n function handleDateBoxChange(e) {\r\n const target = e.target.parentElement;\r\n\r\n const isValidDate = UTIL.validateDateFromInput(e.target.value);\r\n let planType = plan.getCurrentPlanType();\r\n let hasError = false;\r\n\r\n switch (target) {\r\n case startDateInput: {\r\n if (e.target.value && planType === 'a') {\r\n if (!isValidDate) {\r\n startDateInput.classList.add('error');\r\n hasError = true;\r\n return;\r\n } else {\r\n startDateInput.classList.remove('error');\r\n }\r\n\r\n let newStartDate = e.target.value.split('-');\r\n newStartDate = new Date(newStartDate[0], newStartDate[1] - 1, newStartDate[2], 0);\r\n\r\n let newEndDate = dates.addYears(newStartDate, 1);\r\n newEndDate = dates.subDays(newEndDate, 1);\r\n\r\n // set new dates\r\n planYearStartDate = newStartDate;\r\n planYearEndDate = newEndDate;\r\n effectiveStartDate = planYearStartDate;\r\n effectiveEndDate = planYearEndDate;\r\n\r\n // check review date\r\n // const isBeforeEnd = dates.isBefore(planReviewDate, effectiveEndDate);\r\n // const isAfterStart = dates.isAfter(planReviewDate, effectiveStartDate);\r\n // if (!isBeforeEnd || !isAfterStart) {\r\n // showReviewDateWarningPopup();\r\n // reviewDateInput.classList.add('error');\r\n // hasError = true;\r\n // // use below if we want to reset date for them to orig requirements\r\n // //planReviewDate = dates.addMonths(effectiveEndDate, -1);\r\n // }\r\n\r\n const endInput = endDateInput.querySelector('input');\r\n const effectiveEndInput = effectiveEndDateInput.querySelector('input');\r\n const effectiveStartInput = effectiveStartDateInput.querySelector('input');\r\n\r\n endInput.value = UTIL.formatDateFromDateObj(newEndDate);\r\n effectiveEndInput.value = UTIL.formatDateFromDateObj(newEndDate);\r\n effectiveStartInput.value = UTIL.formatDateFromDateObj(newStartDate);\r\n\r\n dateChanged = true;\r\n }\r\n break;\r\n }\r\n case effectiveStartDateInput: {\r\n if (!isValidDate) {\r\n const effectiveStartInput = effectiveStartDateInput.querySelector('input');\r\n effectiveStartInput.classList.add('error');\r\n if (onChangeCallback) onChangeCallback(false);\r\n hasError = true;\r\n return;\r\n }\r\n const newEffectiveStartDate = e.target.value.split('-');\r\n effectiveStartDate = new Date(\r\n newEffectiveStartDate[0],\r\n newEffectiveStartDate[1] - 1,\r\n newEffectiveStartDate[2],\r\n 0,\r\n );\r\n\r\n dateChanged = true;\r\n\r\n break;\r\n }\r\n case effectiveEndDateInput: {\r\n if (!isValidDate) {\r\n const effectiveEndInput = effectiveEndDateInput.querySelector('input');\r\n effectiveEndInput.classList.add('error');\r\n if (onChangeCallback) onChangeCallback(false);\r\n hasError = true;\r\n return;\r\n }\r\n const newEffectiveEndDate = e.target.value.split('-');\r\n effectiveEndDate = new Date(\r\n newEffectiveEndDate[0],\r\n newEffectiveEndDate[1] - 1,\r\n newEffectiveEndDate[2],\r\n 0,\r\n );\r\n\r\n dateChanged = true;\r\n\r\n break;\r\n }\r\n case reviewDateInput: {\r\n // effectiveStartDate = planYearStartDate;\r\n // effectiveEndDate = planYearEndDate;\r\n if (!isValidDate) {\r\n dateErrorMessage.innerText = `Review date must fall between effective start date and effective end date.`;\r\n dateErrorMessage.classList.remove('hidden');\r\n reviewDateInput.classList.add('error');\r\n hasError = true;\r\n break;\r\n }\r\n\r\n let newReviewDate = e.target.value.split('-');\r\n newReviewDate = new Date(newReviewDate[0], newReviewDate[1] - 1, newReviewDate[2], 0);\r\n\r\n // make sure review date falls between effective start and effective end dates\r\n const isBeforeEnd = dates.isBefore(newReviewDate, effectiveEndDate);\r\n const isAfterStart = dates.isAfter(newReviewDate, effectiveStartDate);\r\n if (!isBeforeEnd || !isAfterStart) {\r\n dateErrorMessage.innerText = `Review date must fall between effective start date and effective end date.`;\r\n dateErrorMessage.classList.remove('hidden');\r\n reviewDateInput.classList.add('error');\r\n hasError = true;\r\n break;\r\n } else {\r\n reviewDateInput.classList.remove('error');\r\n dateErrorMessage.innerText = '';\r\n dateErrorMessage.classList.add('hidden');\r\n }\r\n\r\n // cache original date\r\n //origPlanReviewDate = planReviewDate;\r\n // set new date\r\n planReviewDate = newReviewDate;\r\n\r\n const reviewInput = reviewDateInput.querySelector('input');\r\n reviewInput.value = UTIL.formatDateFromDateObj(newReviewDate);\r\n reviewDateChanged = true;\r\n }\r\n }\r\n\r\n const fieldsValid = checkRequiredFields();\r\n const isValid = fieldsValid === 'error' || hasError ? false : true;\r\n if (onChangeCallback) onChangeCallback(isValid);\r\n }\r\n function buildDatesBox(callback, forMoreMenu) {\r\n datesBoxDiv = document.createElement('div');\r\n datesBoxDiv.classList.add('planSetupDates');\r\n if (callback) onChangeCallback = callback;\r\n\r\n let startDateOpts = {\r\n label: 'Plan Start',\r\n type: 'date',\r\n attributes: [{ key: 'data-plan-date-input', value: 'startDateInput' }],\r\n };\r\n let endDateOpts = {\r\n label: 'Plan End',\r\n type: 'date',\r\n attributes: [{ key: 'data-plan-date-input', value: 'endDateInput' }],\r\n };\r\n let effectiveStartDateOpts = {\r\n label: 'Effective Start',\r\n type: 'date',\r\n attributes: [{ key: 'data-plan-date-input', value: 'effectiveStartDateInput' }],\r\n };\r\n let effectiveEndDateOpts = {\r\n label: 'Effective End',\r\n type: 'date',\r\n attributes: [{ key: 'data-plan-date-input', value: 'effectiveEndDateInput' }],\r\n };\r\n reviewDateOpts = {\r\n label: 'Review',\r\n type: 'date',\r\n attributes: [{ key: 'data-plan-date-input', value: 'reviewDateInput' }],\r\n };\r\n\r\n if (planYearStartDate) {\r\n let formatedSD = UTIL.formatDateFromDateObj(planYearStartDate);\r\n // if (origPlanYearStartDate) {\r\n // formatedSD = UTIL.formatDateFromDateObj(origPlanYearStartDate);\r\n // }\r\n startDateOpts.value = formatedSD;\r\n }\r\n if (effectiveStartDate) {\r\n let formatedESD = UTIL.formatDateFromDateObj(effectiveStartDate);\r\n // if (origEffectiveStartDate) {\r\n // formatedESD = UTIL.formatDateFromDateObj(origEffectiveStartDate);\r\n // }\r\n effectiveStartDateOpts.value = formatedESD;\r\n }\r\n if (planYearEndDate) {\r\n let formatedED = UTIL.formatDateFromDateObj(planYearEndDate);\r\n // if (origPlanYearEndDate) {\r\n // formatedED = UTIL.formatDateFromDateObj(origPlanYearEndDate);\r\n // }\r\n endDateOpts.value = formatedED;\r\n }\r\n if (effectiveEndDate) {\r\n let formatedEED = UTIL.formatDateFromDateObj(effectiveEndDate);\r\n // if (origEffectiveEndDate) {\r\n // formatedEED = UTIL.formatDateFromDateObj(origEffectiveEndDate);\r\n // }\r\n effectiveEndDateOpts.value = formatedEED;\r\n }\r\n if (planReviewDate) {\r\n let formatedRD = UTIL.formatDateFromDateObj(planReviewDate);\r\n // if (origPlanReviewDate) {\r\n // formatedRD = UTIL.formatDateFromDateObj(origPlanReviewDate);\r\n // }\r\n reviewDateOpts.value = formatedRD;\r\n }\r\n\r\n startDateInput = input.build(startDateOpts);\r\n endDateInput = input.build(endDateOpts);\r\n effectiveStartDateInput = input.build(effectiveStartDateOpts);\r\n effectiveEndDateInput = input.build(effectiveEndDateOpts);\r\n reviewDateInput = input.build(reviewDateOpts);\r\n dateErrorMessage = document.createElement('p');\r\n dateErrorMessage.classList.add('dateErrorMessage', 'hidden');\r\n\r\n if (!forMoreMenu) {\r\n datesBoxDiv.appendChild(startDateInput);\r\n datesBoxDiv.appendChild(endDateInput);\r\n }\r\n\r\n datesBoxDiv.appendChild(effectiveStartDateInput);\r\n datesBoxDiv.appendChild(effectiveEndDateInput);\r\n datesBoxDiv.appendChild(reviewDateInput);\r\n datesBoxDiv.appendChild(dateErrorMessage);\r\n\r\n toggleDateInputDisable(forMoreMenu);\r\n checkRequiredFields();\r\n\r\n datesBoxDiv.addEventListener('change', handleDateBoxChange);\r\n\r\n return datesBoxDiv;\r\n }\r\n\r\n function updateBoxDateValues() {\r\n const startDateInput = document.querySelector('[data-plan-date-input=\"startDateInput\"]');\r\n const formatedSD = UTIL.formatDateFromDateObj(origPlanYearStartDate);\r\n startDateInput.value = formatedSD;\r\n\r\n const endDateIinput = document.querySelector('[data-plan-date-input=\"endDateInput\"]');\r\n const formatedED = UTIL.formatDateFromDateObj(origPlanYearEndDate);\r\n endDateIinput.value = formatedED;\r\n\r\n const effectiveStartDateInput = document.querySelector(\r\n '[data-plan-date-input=\"effectiveStartDateInput\"]',\r\n );\r\n const formatedESD = UTIL.formatDateFromDateObj(origEffectiveStartDate);\r\n effectiveStartDateInput.value = formatedESD;\r\n\r\n const effectiveEndDateInput = document.querySelector(\r\n '[data-plan-date-input=\"effectiveEndDateInput\"]',\r\n );\r\n const formatedEED = UTIL.formatDateFromDateObj(origEffectiveEndDate);\r\n effectiveEndDateInput.value = formatedEED;\r\n\r\n const reviewDateInput = document.querySelector('[data-plan-date-input=\"reviewDateInput\"]');\r\n const formatedRD = UTIL.formatDateFromDateObj(origPlanReviewDate);\r\n reviewDateInput.value = formatedRD;\r\n }\r\n\r\n return {\r\n buildDatesBox,\r\n updateBoxDateValues,\r\n clearData,\r\n checkRequiredFields,\r\n dashHandler,\r\n getPlanYearStartDate,\r\n getPlanYearEndDate,\r\n getEffectiveStartDate,\r\n getEffectiveEndDate,\r\n getPlanReviewDate,\r\n setAnnualPlanDates,\r\n setRevisionPlanDates,\r\n setReviewPlanDates,\r\n resetPlanDatesToOriginal,\r\n resetPlanDatesFromChangeTypeMenu,\r\n toggleDateInputDisable,\r\n updatePlanDates,\r\n validateAnnualDates,\r\n validateRevisionDates,\r\n };\r\n})();\r\n","const generateReports = (() => {\r\n let reportRunning = false;\r\n\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: function () {\r\n showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n\r\n function passFilterValuesForReport(reportType, filterValues) {\r\n generateReportsAjax.generateReport(reportType, filterValues, checkIfReportIsReadyInterval);\r\n }\r\n\r\n // Helper function to create report buttons\r\n function createIndividualReportButton(text, filterValues) {\r\n return button.build({\r\n text,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n //Hide the popup after it is clicked\r\n let popup = document.getElementById('generateReportsPopup');\r\n POPUP.hide(popup);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n\r\n // set report running to true to stop mulitple reports being ran, run report, then show popup while report runs in background\r\n reportRunning = true;\r\n passFilterValuesForReport(text, filterValues); \r\n showWarningPopup(text, filterValues);\r\n },\r\n });\r\n }\r\n\r\n function showReportsPopup(buttonsData) {\r\n // Popup\r\n const popup = POPUP.build({\r\n id: `generateReportsPopup`,\r\n hideX: true,\r\n classNames: ['popup',\r\n 'visible',\r\n 'popup--filter',\r\n buttonsData.text,\r\n 'generateReportsPopup']\r\n });\r\n\r\n popup.setAttribute('data-popup', 'true');\r\n\r\n // Header\r\n const header = document.createElement('h5');\r\n header.innerHTML = 'Select A Report To View';\r\n\r\n // Create buttons dynamically using the helper function\r\n // example: [{ text: 'Detail Report', callback: passFilterValuesForDetailReport },{ text: 'Time Analysis Report', callback: passFilterValuesForTimeEntryReport }];\r\n const buttons = buttonsData.map(({ text, filterValues }) =>\r\n createIndividualReportButton(text, filterValues),\r\n );\r\n\r\n // Disable buttons if the report is running\r\n if (reportRunning) {\r\n buttons.forEach(button => {\r\n button.disabled = true;\r\n button.classList.add('disabled');\r\n });\r\n }\r\n\r\n popup.appendChild(header);\r\n buttons.forEach(button => {\r\n popup.appendChild(button);\r\n });\r\n\r\n // Append to DOM\r\n bodyScrollLock.disableBodyScroll(popup);\r\n overlay.show();\r\n actioncenter.appendChild(popup);\r\n }\r\n\r\n // Function to generate the warning popup\r\n function showWarningPopup(reportType) {\r\n const reportWarningPopup = POPUP.build({\r\n id: `reportWarningPopup${reportType}`,\r\n hideX: true,\r\n classNames: 'warning',\r\n });\r\n\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = `Your ${reportType} report is being generated and will be downloaded when finished, in the meantime you may continue with your work.`;\r\n\r\n const acceptBtn = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(reportWarningPopup);\r\n overlay.hide();\r\n\r\n let popup = document.querySelector('.generateReportsPopup');\r\n\r\n bodyScrollLock.enableBodyScroll(popup);\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(acceptBtn);\r\n\r\n reportWarningPopup.appendChild(warningMessage);\r\n reportWarningPopup.appendChild(btnWrap);\r\n POPUP.show(reportWarningPopup);\r\n }\r\n\r\n function checkIfReportIsReadyInterval(res) {\r\n // Get the interval in seconds from the session and convert it to milliseconds\r\n seconds = parseInt($.session.reportSeconds);\r\n intSeconds = seconds * 250;\r\n\r\n // Set up an interval to execute the checkCNReportExists function periodically\r\n interval = setInterval(async () => {\r\n await checkIfReportExists(res); // Call the function to check if the report exists\r\n }, intSeconds); // The interval in milliseconds between checks\r\n }\r\n\r\n\r\n // Async function to check if a report exists\r\n async function checkIfReportExists(res) {\r\n // Call function to check if the report exists\r\n // Once the promise is resolved, the callReport function will handle the result.\r\n await generateReportsAjax.checkIfReportExists(res, callReport);\r\n }\r\n\r\n function callReport(res, reportScheduleId) {\r\n if (res.indexOf('1') === -1) {\r\n //do nothing\r\n } else {\r\n generateReportsAjax.viewReport(reportScheduleId);\r\n clearInterval(interval);\r\n reportRunning = false;\r\n }\r\n }\r\n\r\n return {\r\n createMainReportButton,\r\n passFilterValuesForReport,\r\n showReportsPopup,\r\n createIndividualReportButton,\r\n checkIfReportIsReadyInterval,\r\n checkIfReportExists,\r\n callReport,\r\n showWarningPopup,\r\n };\r\n})();\r\n","var generateReportsAjax = (function () {\r\n function generateReport(reportType, reportData, callback) {\r\n data = {\r\n token: $.session.Token,\r\n reportType, \r\n reportData\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/generateReport/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.generateReportResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function checkIfReportExists(res, callback) {\r\n data = {\r\n token: $.session.Token,\r\n reportScheduleId: res[0].reportScheduleId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkIfReportExists/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.checkIfReportExistsResult;\r\n callback(res, data.reportScheduleId);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function viewReport(reportScheduleId) {\r\n data = {\r\n reportScheduleId: reportScheduleId,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewReport/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n \r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'reportScheduleId');\r\n attachmentInput.setAttribute('value', reportScheduleId);\r\n attachmentInput.id = 'reportScheduleId';\r\n \r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n \r\n form.submit();\r\n }\r\n\r\n return {\r\n generateReport,\r\n checkIfReportExists,\r\n viewReport\r\n };\r\n })();\r\n ","const roster2 = (function () {\r\n // CAHCED DATA\r\n let rosterLocations; // cached roster locations\r\n let rosterGroups; // cached roster groups\r\n let rosterConsumers; // cached list of consumers\r\n let groupedRosterConsumers; // cached list of consumers\r\n let absentConsumers;\r\n let consumersWithUnreadNotes;\r\n let locationsWithUnreadNotes; //\r\n // DOM\r\n let ROSTER_LIST;\r\n let ROSTER_WRAP;\r\n let ROSTER_SPINNER;\r\n let LOAD_MORE_BTN;\r\n let FILTER_BTN;\r\n let SEARCH_WRAP;\r\n let SEARCH_BTN;\r\n let SEARCH_INPUT;\r\n let SELECT_ALL_BTN;\r\n let DESELECT_ALL_BTN;\r\n let LOCATION_NOTES_BTN;\r\n let MASS_ABSENT_BTN;\r\n var FILTER_POPUP;\r\n let loadingRosterWrap;\r\n let loadRosterSpinner;\r\n // DOM - MINI ROSTER\r\n let MINI_ROSTER_BTN;\r\n let MINI_ROSTER_POPUP;\r\n let MINI_ROSTER_DONE;\r\n let MINI_ROSTER_CANCEL;\r\n // filtering\r\n let selectedDate;\r\n let selectedLocationName;\r\n let selectedLocationId;\r\n let selectedGroupCode;\r\n let selectedGroupId;\r\n let selectedGroupName;\r\n let hideDateFilter;\r\n let selectedActive;\r\n\r\n let btnWrap;\r\n let filteredDateBtnWrap;\r\n let selectedLocationNameBtnWrap;\r\n let selectedActiveBtnWrap;\r\n let selectedGroupNameBtnWrap;\r\n let totalConsumerCountBtnWrap;\r\n var filteredDate;\r\n // VALUES\r\n let rosterListSelectable;\r\n let selectedConsumers = [];\r\n let selectedConsumerCache = [];\r\n let activeConsumers = [];\r\n let allowedConsumerIds;\r\n let consumersWithAlerts;\r\n let totalConsumerCount = 0;\r\n // Roster Groups/Pagination\r\n let rosterGroupCount;\r\n let activeGroup;\r\n let islocationDisabled = false;\r\n // Mass Absent Selection\r\n let MASS_SELECT_ALL_BTN;\r\n let MASS_DESELECT_ALL_BTN;\r\n\r\n var locationHasUnreadNote;\r\n let isCaseLoad = false;\r\n // Selected & Active Consumers\r\n //---------------------------------------------\r\n function selectedConsumersToActiveList() {\r\n selectedConsumers.forEach(sc => sc.card.classList.remove('highlighted'));\r\n activeConsumers = [...activeConsumers, ...selectedConsumers];\r\n selectedConsumerCache = selectedConsumers;\r\n selectedConsumers = [];\r\n }\r\n // Selected*\r\n function addConsumerToSelectedConsumers(consumer) {\r\n selectedConsumers.push({\r\n id: consumer.dataset.consumerId,\r\n card: consumer,\r\n });\r\n }\r\n function removeConsumerFromSelectedConsumers(consumerId) {\r\n selectedConsumers = selectedConsumers.filter(c => c.id !== consumerId);\r\n }\r\n function getSelectedConsumers() {\r\n return [...selectedConsumers];\r\n }\r\n function getSelectedConsumersCache() {\r\n return [...selectedConsumerCache];\r\n }\r\n /*\r\n I created selected consumers miniroster to have a function\r\n that gives you only the consumers that were selected in the mini roster\r\n GetActiveConsumers gives you the active consumers on the roster, even if they\r\n werent just selected\r\n */\r\n function getSelectedConsumersMiniRoster() {\r\n return [...selectedConsumerCache];\r\n }\r\n /**\r\n * Returns all roster consumers.\r\n *\r\n * @async\r\n * @returns {Object[]} Returns Array of consumer objects\r\n * -- FN: First Name\r\n * -- IDa: ?\r\n * -- LId: service location id's seperated by |\r\n * -- LN: Last Name\r\n * -- MN: Middle Name\r\n * -- SD: ?\r\n * -- conL: primary location id\r\n * -- id: consumer id\r\n */\r\n async function getAllRosterConsumers() {\r\n if (rosterConsumers) {\r\n return [...rosterConsumers];\r\n } else {\r\n await getRosterData();\r\n await getRosterConsumersData();\r\n return [...rosterConsumers];\r\n }\r\n }\r\n function clearSelectedConsumers() {\r\n selectedConsumers = [];\r\n // clearHighlightedConsumers();\r\n return selectedConsumers;\r\n }\r\n // Active*\r\n function addConsumerToActiveConsumers(consumer) {\r\n activeConsumers.push({\r\n id: consumer.dataset.consumerId,\r\n card: consumer,\r\n });\r\n }\r\n function removeConsumerFromActiveConsumers(consumerId) {\r\n activeConsumers = activeConsumers.filter(c => c.id !== consumerId);\r\n }\r\n function getActiveConsumers() {\r\n return [...activeConsumers];\r\n }\r\n function clearActiveConsumers() {\r\n activeConsumers = [];\r\n return activeConsumers;\r\n }\r\n\r\n // Util\r\n //---------------------------------------------\r\n function clearHighlightedConsumers() {\r\n if (!ROSTER_LIST) return;\r\n var consumers = [].slice.call(ROSTER_WRAP.querySelectorAll('.consumerCard.highlighted'));\r\n if (consumers.length > 1) {\r\n consumers.forEach(c => {\r\n c.classList.remove('consumer-selected', 'highlighted');\r\n });\r\n }\r\n }\r\n function selectNoneHighlightedConsumers() {\r\n if (!ROSTER_LIST) return;\r\n var consumers = [].slice.call(ROSTER_WRAP.querySelectorAll('.consumerCard.highlighted'));\r\n if (consumers.length > 0) {\r\n consumers.forEach(c => {\r\n c.classList.remove('consumer-selected', 'highlighted');\r\n });\r\n }\r\n }\r\n function removeMiniRosterBtn() {\r\n var miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) {\r\n document.body.removeChild(miniRosterBtn);\r\n }\r\n }\r\n function getSelectedLocationObj() {\r\n return {\r\n locationName: selectedLocationName,\r\n locationId: selectedLocationId,\r\n };\r\n }\r\n function getSelectedDate() {\r\n return selectedDate;\r\n }\r\n function getRosterLocations() {\r\n return rosterLocations;\r\n }\r\n function getConsumersWithUnreadNotes() {\r\n return consumersWithUnreadNotes;\r\n }\r\n function updateSelectedDate(date) {\r\n selectedDate = date;\r\n }\r\n function updateSelectedLocationId(locationId, locationName) {\r\n selectedLocationId = locationId;\r\n selectedGroupId = locationId;\r\n selectedLocationName = locationName;\r\n }\r\n function setRosterGroups(rosterData) {\r\n rosterGroups = rosterData;\r\n selectedGroupCode = rosterData[0].GroupCode;\r\n selectedGroupId = rosterData[0].RetrieveID;\r\n // selectedGroupName = rosterData[0].GroupName;\r\n if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n selectedGroupName = 'Caseload';\r\n } else {\r\n selectedGroupName = selectedGroupName = rosterData[0].GroupName;\r\n }\r\n }\r\n function setSelectedGroupData() {\r\n var defaultRosterGroup = defaults.getLocation('rosterGroup').split('-');\r\n var defaultRosterGroupCode = defaultRosterGroup[0];\r\n var defaultRosterGroupID = defaultRosterGroup[1];\r\n\r\n rosterGroups.forEach(g => {\r\n if (g.GroupCode === defaultRosterGroupCode && g.RetrieveID === defaultRosterGroupID) {\r\n selectedGroupCode = g.GroupCode;\r\n selectedGroupId = g.RetrieveID;\r\n // selectedGroupName = g.GroupName;\r\n if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n selectedGroupName = 'Caseload';\r\n } else {\r\n selectedGroupName = g.GroupName;\r\n }\r\n }\r\n });\r\n\r\n if (!selectedGroupName) {\r\n selectedGroupCode = rosterGroups[0].GroupCode;\r\n selectedGroupId = rosterGroups[0].RetrieveID;\r\n selectedGroupName = rosterGroups[0].GroupName;\r\n }\r\n\r\n if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n selectedGroupName = 'Caseload';\r\n }\r\n }\r\n function setSelectedLocationData() {\r\n if (defaults.getLocation('roster') !== '') {\r\n selectedLocationId = defaults.getLocation('roster');\r\n\r\n var selectedLocationObj = rosterLocations.filter(loc => {\r\n return selectedLocationId === loc.ID;\r\n });\r\n\r\n selectedLocationName = selectedLocationObj[0].Name;\r\n $.session.selectedLocation = [selectedLocationId, selectedLocationName];\r\n }\r\n\r\n if (!selectedLocationId) {\r\n selectedLocationId = '0';\r\n selectedLocationName = 'All';\r\n }\r\n }\r\n function setCustomDefaultLocationData({ locationId, locationName }) {\r\n selectedLocationName = locationName;\r\n selectedLocationId = locationId;\r\n }\r\n function setAllowedConsumers(idArray) {\r\n // Allowed Consumers *Per Module\r\n allowedConsumerIds = [];\r\n consumersWithAlerts = [];\r\n\r\n if (idArray[0] === '%') {\r\n allowedConsumerIds = ['%'];\r\n return;\r\n }\r\n\r\n idArray.forEach(r => {\r\n const id = r.consumer_id ? r.consumer_id : r;\r\n allowedConsumerIds.push(id);\r\n if (r.showAlertIcon) consumersWithAlerts.push(id);\r\n });\r\n }\r\n\r\n // Search\r\n //---------------------------------------------\r\n function searchRoster(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n const consumers = rosterConsumers.filter(rc => {\r\n var firstName = rc.FN.toLowerCase();\r\n var lastName = rc.LN.toLowerCase();\r\n var middleName = rc.MN.toLowerCase(); //\r\n var fullName = `${lastName}, ${middleName} ${firstName}`;\r\n var fullNameReversed = `${lastName}, ${firstName} ${middleName}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n var matchesNameReverse = fullNameReversed.indexOf(searchValue);\r\n\r\n return matchesName !== -1 || matchesNameReverse !== -1;\r\n });\r\n\r\n const rosterlists = [...ROSTER_WRAP.querySelectorAll('.roster__list')];\r\n rosterlists && rosterlists.forEach(rl => ROSTER_WRAP.removeChild(rl));\r\n groupRosterConsumers(consumers);\r\n populateRoster();\r\n totalConsumerCount = consumers.length;\r\n updateTotalConsumerCount();\r\n }\r\n // Filtering\r\n //---------------------------------------------\r\n function updateTotalConsumerCount() {\r\n if (document.getElementById('totalConsumerCountBtn') != null)\r\n document.getElementById('totalConsumerCountBtn').innerHTML = 'Total Consumer Count: ' + totalConsumerCount;\r\n }\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.widgetFilteredBy');\r\n\r\n var splitDate = selectedDate.split('-');\r\n filteredDate = `${UTIL.leadingZero(splitDate[1])}/${UTIL.leadingZero(splitDate[2])}/${splitDate[0].slice(2, 4)}`;\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n filteredBy1 = document.createElement('div');\r\n filteredBy1.classList.add('filteredByData');\r\n filterButtonSet();\r\n filteredBy1.appendChild(btnWrap);\r\n filteredBy.appendChild(filteredBy1);\r\n }\r\n\r\n if (document.getElementById('filteredDateBtn') != null)\r\n document.getElementById('filteredDateBtn').innerHTML = 'Date: ' + filteredDate;\r\n\r\n if (hideDateFilter) {\r\n btnWrap.removeChild(filteredDateBtnWrap);\r\n }\r\n\r\n if (selectedLocationName === '%' || selectedLocationName === 'All') {\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n btnWrap.removeChild(selectedLocationNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n if (document.getElementById('selectedLocationNameBtn') != null)\r\n document.getElementById('selectedLocationNameBtn').innerHTML = 'Location: ' + selectedLocationName;\r\n }\r\n\r\n if (selectedGroupName === '%' || selectedGroupName === 'Everyone') {\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n btnWrap.removeChild(selectedGroupNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n if (document.getElementById('selectedGroupNameBtn') != null)\r\n document.getElementById('selectedGroupNameBtn').innerHTML = 'Group: ' + selectedGroupName;\r\n }\r\n\r\n if ($.session.applicationName == 'Gatekeeper' && ($.loadedApp === 'roster' || $.loadedApp === 'casenotes')) {\r\n btnWrap.appendChild(selectedActiveBtnWrap);\r\n if (document.getElementById('selectedActiveBtn') != null)\r\n document.getElementById('selectedActiveBtn').innerHTML = 'Show Inactives: ' + selectedActive;\r\n }\r\n\r\n if (document.getElementById('totalConsumerCountBtn') != null)\r\n document.getElementById('totalConsumerCountBtn').innerHTML = 'Total Consumer Count: ' + totalConsumerCount;\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filteredDateBtn = button.build({\r\n id: 'filteredDateBtn',\r\n text: 'Date: ' + filteredDate,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopup('filteredDateBtn');\r\n },\r\n });\r\n\r\n selectedLocationNameBtn = button.build({\r\n id: 'selectedLocationNameBtn',\r\n text: 'Location: ' + selectedLocationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopup('selectedLocationNameBtn');\r\n },\r\n });\r\n selectedLocationNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n if (!islocationDisabled)\r\n closeFilter('selectedLocationNameBtn');\r\n },\r\n });\r\n\r\n selectedGroupNameBtn = button.build({\r\n id: 'selectedGroupNameBtn',\r\n text: 'Group: ' + selectedGroupName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopup('selectedGroupNameBtn');\r\n },\r\n });\r\n selectedGroupNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('selectedGroupNameBtn');\r\n },\r\n });\r\n\r\n selectedActiveBtn = button.build({\r\n id: 'selectedActiveBtn',\r\n text: 'Show Inactives: ' + selectedActive,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopup('selectedActiveBtn');\r\n },\r\n });\r\n\r\n totalConsumerCountBtn = button.build({\r\n id: 'totalConsumerCountBtn',\r\n text: 'Total Consumer Count: ' + totalConsumerCount,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n\r\n filteredDateBtnWrap = document.createElement('div');\r\n filteredDateBtnWrap.classList.add('filterSelectionFirstBtnWrap');\r\n filteredDateBtnWrap.appendChild(filteredDateBtn);\r\n btnWrap.appendChild(filteredDateBtnWrap);\r\n\r\n selectedLocationNameBtnWrap = document.createElement('div');\r\n selectedLocationNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedLocationNameBtnWrap.appendChild(selectedLocationNameBtn);\r\n selectedLocationNameBtnWrap.appendChild(selectedLocationNameCloseBtn);\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n\r\n selectedGroupNameBtnWrap = document.createElement('div');\r\n selectedGroupNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedGroupNameBtnWrap.appendChild(selectedGroupNameBtn);\r\n if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) { }\r\n else {\r\n selectedGroupNameBtnWrap.appendChild(selectedGroupNameCloseBtn);\r\n }\r\n\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n\r\n if ($.session.applicationName == 'Gatekeeper' && ($.loadedApp === 'roster' || $.loadedApp === 'casenotes')) {\r\n selectedActiveBtnWrap = document.createElement('div');\r\n selectedActiveBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedActiveBtnWrap.appendChild(selectedActiveBtn);\r\n btnWrap.appendChild(selectedActiveBtnWrap);\r\n }\r\n\r\n totalConsumerCountBtnWrap = document.createElement('div');\r\n totalConsumerCountBtnWrap.classList.add('filterSelectionBtnWrap');\r\n totalConsumerCountBtnWrap.appendChild(totalConsumerCountBtn);\r\n btnWrap.appendChild(totalConsumerCountBtnWrap);\r\n }\r\n\r\n async function closeFilter(closeFilter) {\r\n if (closeFilter == 'selectedLocationNameBtn') {\r\n selectedLocationName = 'All';\r\n selectedLocationId = '0';\r\n\r\n if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n selectedGroupName = 'Caseload';\r\n selectedGroupCode = 'CAS';\r\n } else {\r\n selectedGroupName = 'Everyone';\r\n selectedGroupCode = 'ALL';\r\n }\r\n\r\n btnWrap.removeChild(selectedLocationNameBtnWrap);\r\n const groupResults = await getConsumerGroupsData(selectedLocationId);\r\n rosterGroups = groupResults;\r\n $.session.selectedLocation = [selectedLocationId, selectedLocationName];\r\n }\r\n if (closeFilter == 'selectedGroupNameBtn') {\r\n selectedGroupName = 'Everyone';\r\n selectedGroupCode = 'ALL';\r\n btnWrap.removeChild(selectedGroupNameBtnWrap);\r\n }\r\n\r\n toggleMassAbsentBtn();\r\n filterApply();\r\n }\r\n\r\n function buildDateInput() {\r\n var defaultVal = selectedDate ? selectedDate : UTIL.getTodaysDate();\r\n var date = input.build({\r\n type: 'date',\r\n label: 'Date',\r\n style: 'secondary',\r\n value: defaultVal,\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n\r\n return date;\r\n }\r\n function buildLocationDropdown() {\r\n var locationDropdown = dropdown.build({\r\n dropdownId: 'rosterLocationDropdown',\r\n label: 'Locations',\r\n style: 'secondary',\r\n });\r\n\r\n return locationDropdown;\r\n }\r\n function buildGroupDropdown() {\r\n var isDisabld = false;\r\n if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n isDisabld = true;\r\n }\r\n var groupDropdown = dropdown.build({\r\n dropdownId: 'rosterGroupDropdown',\r\n label: 'Groups',\r\n style: 'secondary',\r\n readonly: isDisabld,\r\n });\r\n\r\n return groupDropdown;\r\n }\r\n function buildActiveDropdown() {\r\n var activeDropdown = dropdown.build({\r\n dropdownId: 'rosterActiveDropdown',\r\n label: 'Show Inactive?',\r\n style: 'secondary',\r\n });\r\n\r\n return activeDropdown;\r\n }\r\n function buildFilterPopup(IsShow) {\r\n // popup\r\n FILTER_POPUP = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n // dropdowns & inputs\r\n DATE_INPUT = buildDateInput();\r\n LOCATION_DROPDOWN = buildLocationDropdown();\r\n GROUP_DROPDOWN = buildGroupDropdown();\r\n ACTIVE_DROPDOWN = buildActiveDropdown();\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n // build popup\r\n if (!hideDateFilter) {\r\n if (IsShow == 'ALL' || IsShow == 'filteredDateBtn') FILTER_POPUP.appendChild(DATE_INPUT);\r\n }\r\n if (IsShow == 'ALL' || IsShow == 'selectedLocationNameBtn') FILTER_POPUP.appendChild(LOCATION_DROPDOWN);\r\n if (IsShow == 'ALL' || IsShow == 'selectedGroupNameBtn') FILTER_POPUP.appendChild(GROUP_DROPDOWN);\r\n if ($.session.applicationName == 'Gatekeeper' && ($.loadedApp === 'roster' || $.loadedApp === 'casenotes')) {\r\n if (IsShow == 'ALL' || IsShow == 'selectedActiveBtn') FILTER_POPUP.appendChild(ACTIVE_DROPDOWN);\r\n }\r\n FILTER_POPUP.appendChild(btnWrap);\r\n\r\n setupFilterEvent();\r\n\r\n POPUP.show(FILTER_POPUP);\r\n\r\n populateLocationDropdown();\r\n populateGroupDropdown();\r\n populateActiveDropdown();\r\n\r\n if (islocationDisabled)\r\n LOCATION_DROPDOWN.classList.add('disabled');\r\n }\r\n // filter dropdowns\r\n function populateLocationDropdown() {\r\n var defaultVal = selectedLocationId ? selectedLocationId : defaults.getLocation('roster');\r\n var defaultValName;\r\n var data = rosterLocations.map(r => {\r\n var attributes = [{ key: 'data-residence', value: r.Residence }];\r\n\r\n var hasUnreadLocationNote = locationsWithUnreadNotes.filter(loc => loc.loc_id === r.ID);\r\n hasUnreadLocationNote = hasUnreadLocationNote.length > 0 ? true : false;\r\n\r\n if (r.ID === defaultVal) {\r\n defaultValName = r.Name;\r\n if (hasUnreadLocationNote) {\r\n LOCATION_NOTES_BTN.classList.add('attention');\r\n } else {\r\n LOCATION_NOTES_BTN.classList.remove('attention');\r\n }\r\n }\r\n\r\n if (hasUnreadLocationNote) {\r\n attributes.push({ key: 'data-hasUnreadNote', value: 'true' });\r\n } else {\r\n attributes.push({ key: 'data-hasUnreadNote', value: 'false' });\r\n }\r\n\r\n return {\r\n id: r.ID,\r\n value: r.ID,\r\n text: r.Name,\r\n attributes,\r\n };\r\n });\r\n var allOpt = {\r\n value: '0',\r\n text: 'All',\r\n };\r\n\r\n data.unshift(allOpt);\r\n\r\n dropdown.populate(LOCATION_DROPDOWN, data, defaultVal);\r\n\r\n selectedLocationId = defaultVal;\r\n if (selectedLocationId === '0') {\r\n selectedLocationName = 'All';\r\n } else {\r\n selectedLocationName = defaultValName;\r\n }\r\n }\r\n function populateGroupDropdown() {\r\n var locId = selectedLocationId === '0' ? '0' : selectedLocationId;\r\n var defaultVal;\r\n if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n defaultVal = `CAS-${locId}`;\r\n selectedGroupCode = 'CAS';\r\n } else {\r\n defaultVal = selectedGroupCode\r\n ? selectedGroupCode === 'ALL'\r\n ? `${selectedGroupCode}-${locId}`\r\n : `${selectedGroupCode}-${selectedGroupId}`\r\n : '';\r\n }\r\n\r\n groupCodeObj = {};\r\n\r\n var data = rosterGroups.map(r => {\r\n // dataObj for quick lookup\r\n if (!groupCodeObj[r.GroupCode]) {\r\n groupCodeObj[r.GroupCode] = {\r\n groupCode: r.GroupCode,\r\n groupName: r.GroupName,\r\n members: r.Members ? r.Members.split('|') : r.Members,\r\n };\r\n }\r\n\r\n return {\r\n value: `${r.GroupCode}-${r.RetrieveID}`,\r\n text: r.GroupName,\r\n attributes: [{ key: 'data-retrieveId', value: r.RetrieveID }],\r\n };\r\n });\r\n\r\n dropdown.populate('rosterGroupDropdown', data, defaultVal);\r\n\r\n if (!selectedGroupName) {\r\n selectedGroupCode = data[0].value;\r\n selectedGroupName = data[0].text;\r\n selectedGroupId = data[0].attributes[0].value;\r\n }\r\n }\r\n\r\n function populateActiveDropdown() {\r\n const activeDropdownData = ([\r\n { id: 1, value: 'Yes', text: 'Yes' },\r\n { id: 2, value: 'No', text: 'No' },\r\n ]);\r\n dropdown.populate(\"rosterActiveDropdown\", activeDropdownData, selectedActive);\r\n }\r\n // filter events\r\n function setupFilterEvent() {\r\n var oldDate;\r\n var oldLocationName;\r\n var oldLocationId;\r\n var oldGroupCode;\r\n var oldGroupId;\r\n var oldGroupName;\r\n var oldRosterGroups;\r\n\r\n var locationHasUnreadNote;\r\n\r\n DATE_INPUT.addEventListener('change', event => {\r\n oldDate = selectedDate;\r\n selectedDate = event.target.value;\r\n });\r\n LOCATION_DROPDOWN.addEventListener('change', event => locationDropdownEvent(event));\r\n async function locationDropdownEvent(event) {\r\n if (islocationDisabled)\r\n return;\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n oldLocationId = selectedLocationId;\r\n oldLocationName = selectedLocationName;\r\n selectedLocationId = selectedOption.value;\r\n selectedLocationName = selectedOption.innerHTML;\r\n $.session.selectedLocation = [selectedLocationId, selectedLocationName];\r\n toggleMassAbsentBtn();\r\n toggleLocationNotesBtn();\r\n\r\n const hasUnreadNote = selectedOption.dataset.hasunreadnote === 'true' ? true : false;\r\n locationHasUnreadNote = hasUnreadNote;\r\n\r\n const groupResults = await getConsumerGroupsData(selectedLocationId);\r\n\r\n oldRosterGroups = rosterGroups;\r\n oldGroupId = selectedGroupId;\r\n oldGroupCode = selectedGroupCode;\r\n oldGroupName = selectedGroupName;\r\n\r\n rosterGroups = groupResults;\r\n selectedGroupId = groupResults[0].RetrieveID;\r\n selectedGroupCode = groupResults[0].GroupCode;\r\n // selectedGroupName = groupResults[0].GroupName;\r\n if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n selectedGroupName = 'Caseload';\r\n } else {\r\n selectedGroupName = groupResults[0].GroupName;\r\n }\r\n //selectedLocationId = tmpLocationId;\r\n populateGroupDropdown();\r\n }\r\n GROUP_DROPDOWN.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldGroupId = selectedGroupId;\r\n oldGroupCode = selectedGroupCode;\r\n oldGroupName = selectedGroupName;\r\n\r\n selectedGroupCode = selectedOption.value.split('-')[0];\r\n selectedGroupId = selectedOption.dataset.retrieveid;\r\n selectedGroupName = selectedOption.innerHTML;\r\n });\r\n ACTIVE_DROPDOWN.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedActive = selectedOption.value;\r\n });\r\n APPLY_BTN.addEventListener('click', async () => {\r\n POPUP.hide(FILTER_POPUP);\r\n filterApply();\r\n });\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(FILTER_POPUP);\r\n\r\n if (oldDate) selectedDate = oldDate;\r\n if (oldLocationId) selectedLocationId = oldLocationId;\r\n if (oldLocationName) selectedLocationName = oldLocationName;\r\n if (oldGroupId) selectedGroupId = oldGroupId;\r\n if (oldGroupCode) selectedGroupCode = oldGroupCode;\r\n if (oldGroupName) selectedGroupName = oldGroupName;\r\n if (oldRosterGroups) rosterGroups = oldRosterGroups;\r\n });\r\n }\r\n\r\n function filterUpdateDisplay() {\r\n if (selectedDate === '') {\r\n selectedDate = UTIL.getTodaysDate();\r\n }\r\n var splitDate = selectedDate.split('-');\r\n filteredDate = `${UTIL.leadingZero(splitDate[1])}/${UTIL.leadingZero(splitDate[2])}/${splitDate[0].slice(2, 4)}`;\r\n\r\n if (document.getElementById('filteredDateBtn') != null)\r\n document.getElementById('filteredDateBtn').innerHTML = 'Date: ' + filteredDate;\r\n\r\n if (selectedLocationName === '%' || selectedLocationName === 'All') {\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n btnWrap.removeChild(selectedLocationNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n document.getElementById('selectedLocationNameBtn').innerHTML = 'Location: ' + selectedLocationName;\r\n }\r\n\r\n if (selectedGroupName === '%' || selectedGroupName === 'Everyone') {\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n btnWrap.removeChild(selectedGroupNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n document.getElementById('selectedGroupNameBtn').innerHTML = 'Group: ' + selectedGroupName;\r\n }\r\n if (document.getElementById('totalConsumerCountBtn') != null)\r\n document.getElementById('totalConsumerCountBtn').innerHTML = 'Total Consumer Count: ' + totalConsumerCount;\r\n\r\n if ($.session.applicationName == 'Gatekeeper' && ($.loadedApp === 'roster' || $.loadedApp === 'casenotes')) {\r\n btnWrap.appendChild(selectedActiveBtnWrap);\r\n if (document.getElementById('selectedActiveBtn') != null)\r\n document.getElementById('selectedActiveBtn').innerHTML = 'Show Inactives: ' + selectedActive;\r\n }\r\n\r\n if (!rosterListSelectable) {\r\n consumerInfo.toggleHideShowAbsentMenuSection(selectedLocationId);\r\n }\r\n\r\n if (selectedLocationId !== '000') {\r\n if (defaults.rememberLastLocation('roster')) defaults.setLocation('roster', selectedLocationId);\r\n }\r\n\r\n if ($.loadedApp === 'ConsumerFinances' || $.loadedApp === 'CFEditAccount') {\r\n if (defaults.rememberLastLocation('moneyManagement')) defaults.setLocation('moneyManagement', selectedLocationId);\r\n }\r\n }\r\n async function filterApply() {\r\n customGroups.init(rosterGroups);\r\n\r\n if (locationHasUnreadNote) {\r\n LOCATION_NOTES_BTN.classList.add('attention');\r\n } else {\r\n LOCATION_NOTES_BTN.classList.remove('attention');\r\n }\r\n\r\n const rosterlists = [...ROSTER_WRAP.querySelectorAll('.roster__list')];\r\n rosterlists.forEach(rl => ROSTER_WRAP.removeChild(rl));\r\n\r\n ROSTER_SPINNER = PROGRESS.SPINNER.get('Please wait while we gather everyone up...');\r\n ROSTER_WRAP.insertBefore(ROSTER_SPINNER, ROSTER_WRAP.lastChild);\r\n totalConsumerCount = 0;\r\n await getRosterConsumersData(true);\r\n //Ugly... should be re-done to be able to pass a custom apply action for the filter if needed\r\n // but I'm running out of thime for this release. THis is needed to reset the set allowed consumers\r\n //when filtering on a location or group.\r\n if ($.loadedApp === 'timeEntry') {\r\n await timeEntryCard.customRosterApplyFilterEvent();\r\n }\r\n populateRoster();\r\n filterUpdateDisplay();\r\n }\r\n // Top Nav\r\n //---------------------------------------------\r\n function toggleLocationNotesBtn() {\r\n if (selectedLocationId === '0' || selectedLocationName === 'All' || $.session.useProgressNotes === 'N') {\r\n LOCATION_NOTES_BTN.classList.add('disabled');\r\n LOCATION_NOTES_BTN.classList.remove('attention');\r\n } else {\r\n LOCATION_NOTES_BTN.classList.remove('disabled');\r\n }\r\n }\r\n function toggleMassAbsentBtn() {\r\n var useAbsent = $.session.useAbsentFeature === 'Y' ? true : false;\r\n\r\n if (!useAbsent || selectedLocationId === '0' || selectedLocationName === 'All') {\r\n MASS_ABSENT_BTN.classList.add('disabled');\r\n } else {\r\n MASS_ABSENT_BTN.classList.remove('disabled');\r\n }\r\n }\r\n function buildFilterBtn() {\r\n return button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtn',\r\n });\r\n }\r\n function buildSearchBtn() {\r\n return button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['searchBtn'],\r\n });\r\n }\r\n function buildSelectAllBtn() {\r\n return button.build({\r\n icon: 'selectAll',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'selectAllBtn',\r\n });\r\n }\r\n function buildDeSelectAllBtn() {\r\n return button.build({\r\n icon: 'deSelectAll',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'deselectAllBtn',\r\n });\r\n }\r\n function buildLocationNotesBtn() {\r\n var hasUnreadLocationNote =\r\n locationsWithUnreadNotes && locationsWithUnreadNotes.filter(loc => loc.loc_id === selectedLocationId);\r\n hasUnreadLocationNote = hasUnreadLocationNote.length > 0 ? true : false;\r\n\r\n const locationNotesBtnClassNames = ['locationNotesBtn'];\r\n\r\n if (selectedLocationId === '0' || selectedLocationName === 'All' || $.session.useProgressNotes === 'N') {\r\n locationNotesBtnClassNames.push('disabled');\r\n }\r\n if (hasUnreadLocationNote && $.session.useProgressNotes === 'Y') {\r\n locationNotesBtnClassNames.push('attention');\r\n }\r\n\r\n return button.build({\r\n text: 'Location Notes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'note',\r\n classNames: locationNotesBtnClassNames,\r\n });\r\n }\r\n\r\n function buildMassAbsentSelectAllBtn() {\r\n return button.build({\r\n id: 'massAbsentSelectAllBtn',\r\n text: 'Select All',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'selectAllBtn',\r\n });\r\n }\r\n function buildMassAbsentDeselectAllBtn() {\r\n return button.build({\r\n id: 'massAbsentDeselectAllBtn',\r\n text: 'Select None',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'selectAllBtn',\r\n });\r\n }\r\n function buildMassAbsentBtn() {\r\n var useAbsent = $.session.useAbsentFeature === 'Y' ? true : false;\r\n\r\n return button.build({\r\n text: 'Mass Absent',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'no',\r\n classNames:\r\n selectedLocationId === '0' || selectedLocationName === 'All' || !useAbsent\r\n ? ['massAbsentBtn', 'disabled']\r\n : ['massAbsentBtn'],\r\n toggle: true,\r\n });\r\n }\r\n function buildManageGroupsBtn() {\r\n return button.build({\r\n text: 'Manage Groups',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'people',\r\n });\r\n }\r\n function buildRosterTopNav() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('roster-top-nav');\r\n\r\n FILTER_BTN = buildFilterBtn();\r\n SEARCH_BTN = buildSearchBtn();\r\n SELECT_ALL_BTN = buildSelectAllBtn();\r\n DESELECT_ALL_BTN = buildDeSelectAllBtn();\r\n LOCATION_NOTES_BTN = buildLocationNotesBtn();\r\n MASS_ABSENT_BTN = buildMassAbsentBtn();\r\n MANAGE_GROUPS_BTN = buildManageGroupsBtn();\r\n\r\n MASS_SELECT_ALL_BTN = buildMassAbsentSelectAllBtn();\r\n MASS_DESELECT_ALL_BTN = buildMassAbsentDeselectAllBtn();\r\n MASS_SELECT_ALL_BTN.classList.add('marginRight10px');\r\n MASS_DESELECT_ALL_BTN.classList.add('marginRight10px');\r\n // custom search stuff\r\n SEARCH_WRAP = document.createElement('div');\r\n // SEARCH_WRAP.classList.add('rosterSearch', 'searchOpen');\r\n SEARCH_WRAP.classList.add('rosterSearch');\r\n SEARCH_INPUT = document.createElement('input');\r\n SEARCH_INPUT.setAttribute('placeholder', 'search consumers');\r\n SEARCH_WRAP.appendChild(SEARCH_BTN);\r\n SEARCH_WRAP.appendChild(SEARCH_INPUT);\r\n\r\n if (rosterListSelectable) {\r\n var wrap1 = document.createElement('div');\r\n var wrap2 = document.createElement('div');\r\n wrap1.classList.add('btnWrap');\r\n wrap2.classList.add('btnWrap');\r\n // btns to show => selectAll, deselectAll\r\n wrap1.appendChild(SEARCH_WRAP);\r\n wrap2.appendChild(FILTER_BTN);\r\n wrap2.appendChild(SELECT_ALL_BTN);\r\n wrap2.appendChild(DESELECT_ALL_BTN);\r\n\r\n btnWrap.appendChild(wrap1);\r\n btnWrap.appendChild(wrap2);\r\n } else {\r\n var wrap1 = document.createElement('div');\r\n var wrap2 = document.createElement('div');\r\n var wrap3 = document.createElement('div');\r\n wrap1.classList.add('btnWrap');\r\n wrap2.classList.add('btnWrap');\r\n wrap2.classList.add('rosterNotesAbsentGroups');\r\n wrap3.classList.add('massSelectbtnWrap');\r\n // btns to show => search, notes, absent, groups\r\n wrap1.appendChild(FILTER_BTN);\r\n wrap1.appendChild(SEARCH_WRAP);\r\n\r\n wrap2.appendChild(LOCATION_NOTES_BTN);\r\n wrap2.appendChild(MASS_ABSENT_BTN);\r\n wrap2.appendChild(MANAGE_GROUPS_BTN);\r\n\r\n wrap3.appendChild(MASS_SELECT_ALL_BTN);\r\n wrap3.appendChild(MASS_DESELECT_ALL_BTN);\r\n\r\n btnWrap.appendChild(wrap1);\r\n btnWrap.appendChild(wrap2);\r\n btnWrap.appendChild(wrap3);\r\n }\r\n\r\n if ($.session.isPSI && $.session.activeModule === 'plan') {\r\n const updateSalesforceIds = button.build({\r\n text: 'Update Salesforce Ids',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n pendingSave.show('Updating Database...');\r\n const data = await _UTIL.fetchData('updateSalesforceIdsScriptOneTimeUse', {applicationName: $.session.applicationName});\r\n pendingSave.fulfill('Update Complete')\r\n await new Promise(resolve => setTimeout(resolve, 2000));\r\n const successfulSavePopup = document.querySelector('.successfulSavePopup');\r\n successfulSavePopup.style.display = 'none';\r\n pendingSave.hide();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(updateSalesforceIds);\r\n }\r\n\r\n return btnWrap;\r\n }\r\n\r\n // Roster Consumers\r\n //---------------------------------------------\r\n function populateConsumerCardPortraits() {\r\n const consumerCards = [...document.querySelectorAll('.consumerCard')];\r\n consumerCards.forEach(card => {\r\n const id = card.dataset.consumerId;\r\n const portrait = card.querySelector('.portrait');\r\n portrait.innerHTML = `\r\n `;\r\n });\r\n }\r\n function buildConsumerCard(consumerData) {\r\n const fName = consumerData.FN ? consumerData.FN.trim() : '';\r\n const lName = consumerData.LN ? consumerData.LN.trim() : '';\r\n const mName = consumerData.MN ? consumerData.MN.trim() : '';\r\n const id = consumerData.id;\r\n const serviceLocations = consumerData.LId;\r\n const primaryLocation = consumerData.conL;\r\n const hasUnreadNote = consumersWithUnreadNotes && consumersWithUnreadNotes[consumerData.id] ? true : false;\r\n const isAbsent = absentConsumers && absentConsumers[consumerData.id] ? true : false;\r\n const isActive = activeConsumers && activeConsumers.filter(ac => ac.id === consumerData.id);\r\n const isSelected = selectedConsumers && selectedConsumers.filter(sc => sc.id === consumerData.id);\r\n const hasAlert = consumersWithAlerts && consumersWithAlerts.filter(cwa => cwa === consumerData.id);\r\n const showAlert = hasAlert && hasAlert.length !== 0 ? true : false;\r\n const dateOfBirth = consumerData.dob ? consumerData.dob.split(' ')[0] : ''; \r\n const SalesforceID = consumerData.SalesforceID ? consumerData.SalesforceID : ''; \r\n\r\n var isInactive = false;\r\n if ($.session.applicationName === 'Advisor') {\r\n if (consumerData.IDa != undefined && consumerData.IDa != '' && UTIL.formatDateToIso(consumerData.IDa.split(' ')[0]) <= selectedDate) {\r\n isInactive = true;\r\n }\r\n\r\n } else if ($.session.applicationName === 'Gatekeeper') {\r\n if (consumerData.statusCode == 'I' && consumerData.IDa != undefined && consumerData.IDa != '' && UTIL.formatDateToIso(consumerData.IDa.split(' ')[0]) <= selectedDate) {\r\n isInactive = true;\r\n }\r\n }\r\n let isAllowed;\r\n if (!allowedConsumerIds) {\r\n isAllowed = true;\r\n } else if (allowedConsumerIds[0] === '%') {\r\n isAllowed = true;\r\n } else {\r\n isAllowed = allowedConsumerIds.filter(consumerId => consumerId === id);\r\n isAllowed = isAllowed.length === 0 ? false : true;\r\n }\r\n\r\n const consumerCard = document.createElement('div');\r\n consumerCard.classList.add('consumerCard');\r\n consumerCard.setAttribute('data-consumer-id', id);\r\n consumerCard.setAttribute('data-dob', dateOfBirth);\r\n\r\n if (serviceLocations) {\r\n consumerCard.setAttribute('data-service-locations', serviceLocations);\r\n }\r\n if (primaryLocation && $.session.applicationName === 'Advisor') {\r\n consumerCard.setAttribute('data-primary-location', primaryLocation);\r\n }\r\n if (hasUnreadNote) {\r\n consumerCard.setAttribute('data-unreadnote', 'true');\r\n } else {\r\n consumerCard.setAttribute('data-unreadnote', 'false');\r\n }\r\n\r\n if (isSelected.length > 0 && rosterListSelectable) {\r\n consumerCard.classList.add('highlighted', 'consumer-selected');\r\n }\r\n\r\n\r\n if ((isActive && isActive.length >= 1) || !isAllowed) {\r\n if ($.loadedApp === 'outcomes') {\r\n consumerCard.classList.remove('disabled');\r\n consumerCard.classList.add('disabledClickable');\r\n } else {\r\n consumerCard.classList.add('disabled');\r\n }\r\n } else {\r\n consumerCard.classList.remove('disabled');\r\n }\r\n\r\n const portrait = document.createElement('div');\r\n const details = document.createElement('div');\r\n const alertIcons = document.createElement('div');\r\n const d = new Date();\r\n const time = d.getTime();\r\n portrait.classList.add('portrait');\r\n if (isInactive)\r\n details.classList.add('inactiveDetails');\r\n else\r\n details.classList.add('details');\r\n alertIcons.classList.add('icons');\r\n portrait.innerHTML = `''`;\r\n portrait.innerHTML = `\r\n `;\r\n\r\n if ($.loadedApp === 'plan')\r\n details.innerHTML = `\r\n
    \r\n

    ${lName},

    \r\n\t\t

    ${fName} ${mName}

    Salesforce ID: ${SalesforceID}

    \r\n
    `;\r\n else\r\n details.innerHTML = `\r\n
    \r\n

    ${lName},

    \r\n\t\t

    ${fName} ${mName}

    \r\n
    `;\r\n alertIcons.innerHTML = `\r\n ${isAbsent ? `A` : ''}\r\n ${!rosterListSelectable ? (hasUnreadNote ? `${icons['bell']}` : '') : ''}\r\n\t\t`;\r\n\r\n consumerCard.appendChild(portrait);\r\n consumerCard.appendChild(details);\r\n consumerCard.appendChild(alertIcons);\r\n\r\n if (showAlert) {\r\n var ICONS = consumerCard.querySelector('.icons');\r\n var iconsSVG = ICONS.querySelector('.alertIcon');\r\n var iconSVG = document.createElement('p');\r\n iconSVG.classList.add('alertIcon');\r\n iconSVG.innerHTML = icons['error'];\r\n if (ICONS) {\r\n if (!iconsSVG) {\r\n ICONS.appendChild(iconSVG);\r\n }\r\n }\r\n }\r\n\r\n return consumerCard;\r\n }\r\n\r\n // Mini Roster Popup\r\n //---------------------------------------------\r\n function toggleActionCenterChildrenVisiblity(hideOrShow) {\r\n const actionCenterChildren = [...DOM.ACTIONCENTER.children];\r\n actionCenterChildren.forEach(child => {\r\n if (hideOrShow === 'hide') {\r\n child.style.display = 'none';\r\n return;\r\n }\r\n child.removeAttribute('style');\r\n });\r\n }\r\n function actionNavCallback(e) {\r\n SELECT_ALL_BTN.classList.remove('disabled');\r\n DESELECT_ALL_BTN.classList.remove('disabled');\r\n\r\n if (MINI_ROSTER_BTN) MINI_ROSTER_BTN.classList.remove('disabled');\r\n\r\n DOM.ACTIONCENTER.removeChild(MINI_ROSTER_POPUP);\r\n toggleActionCenterChildrenVisiblity('show');\r\n\r\n if (e.target === MINI_ROSTER_DONE) {\r\n roster2.selectedConsumersToActiveList();\r\n }\r\n }\r\n function buildActioNav() {\r\n MINI_ROSTER_DONE = button.build({\r\n text: 'Done',\r\n icon: 'checkmark',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-action-nav', value: 'miniRosterDone' }],\r\n classNames: ['disabled'],\r\n callback: actionNavCallback,\r\n });\r\n MINI_ROSTER_CANCEL = button.build({\r\n text: 'Cancel',\r\n icon: 'close',\r\n style: 'secondary',\r\n type: 'outlined',\r\n attributes: [{ key: 'data-action-nav', value: 'miniRosterCancel' }],\r\n callback: actionNavCallback,\r\n });\r\n\r\n ACTION_NAV.populate([MINI_ROSTER_DONE, MINI_ROSTER_CANCEL]);\r\n }\r\n function getMiniRosterHeadline(consumercount) {\r\n switch ($.loadedApp) {\r\n case 'incidenttracking': {\r\n if (!consumercount) return `Select consumer(s) below`;\r\n return `Select consumer(s) below to add them to this incident. Total Consumer Count: ${consumercount}`;\r\n break;\r\n }\r\n case 'timeEntry': {\r\n if (!consumercount) return `Select consumer(s) below`;\r\n return `Select consumer(s) below to add them to this entry. Total Consumer Count: ${consumercount}`;\r\n break;\r\n }\r\n case 'workshop': {\r\n if (!consumercount) return `Select consumer(s) below`;\r\n return `Select consumer(s) below to clock them in or out. Total Consumer Count: ${consumercount}`;\r\n break;\r\n }\r\n case 'plan': {\r\n return `Select a consumer below`;\r\n }\r\n default: {\r\n if (!consumercount) return `Select consumer(s) below`;\r\n return `Select consumer(s) below Total Consumer Count: ${consumercount}`;\r\n break;\r\n }\r\n }\r\n }\r\n function buildMiniRosterPopup(rosterMarkup) {\r\n const miniRosterWrap = document.createElement('div');\r\n miniRosterWrap.classList.add('enabledConsumers', 'miniRoster');\r\n miniRosterWrap.setAttribute('data-roster', 'enabled');\r\n\r\n var headline = document.createElement('h3');\r\n headline.classList.add('miniRosterHeadline');\r\n headline.innerHTML = getMiniRosterHeadline();\r\n\r\n // miniRosterWrap.appendChild(headline);\r\n rosterMarkup.insertBefore(headline, rosterMarkup.firstChild.nextSibling);\r\n miniRosterWrap.appendChild(rosterMarkup);\r\n\r\n return miniRosterWrap;\r\n }\r\n function showMiniRosterPopup(rosterMarkup) {\r\n if (MINI_ROSTER_BTN) MINI_ROSTER_BTN.classList.add('disabled');\r\n\r\n const activeSection = DOM.ACTIONCENTER.dataset.activeSection;\r\n //buttons need to be disabled. This will need to\r\n // be modified if more modules need these buttons disabled\r\n\r\n toggleActionCenterChildrenVisiblity('hide');\r\n\r\n MINI_ROSTER_POPUP = buildMiniRosterPopup(rosterMarkup);\r\n DOM.ACTIONCENTER.appendChild(MINI_ROSTER_POPUP);\r\n buildActioNav();\r\n if (\r\n $.loadedApp === 'outcomes' ||\r\n $.loadedApp === 'plan' ||\r\n $.loadedApp === 'ConsumerFinances' ||\r\n $.loadedApp === 'CFEditAccount' ||\r\n $.loadedApp === 'employment' ||\r\n $.loadedApp === 'fSS' ||\r\n $.loadedApp === 'covid' ||\r\n $.loadedApp === 'forms' ||\r\n $.loadedApp === 'assessmentHistory' ||\r\n activeSection === 'caseNotesSSA-new' ||\r\n activeSection === 'caseNotes-new' ||\r\n $.loadedApp === 'authorizations'\r\n ) {\r\n SELECT_ALL_BTN.classList.add('disabled');\r\n DESELECT_ALL_BTN.classList.add('disabled');\r\n MINI_ROSTER_DONE.style.display = 'none';\r\n MINI_ROSTER_CANCEL.style.display = 'none';\r\n }\r\n }\r\n /**\r\n * Initializes the mini roster. Removes the mini roster button, and re-adds it with new settings.\r\n * @param {Object} locationData - Location information Object. Only use if you need to bypass the roster's default location.\r\n * @param {string} locationData.locationId - The Location ID\r\n * @param {string} locationData.locationName - The Location Name. If location name is not known, pass an empty string.\r\n * @param {Object} rosterOptions - Options for customizing the mini roster\r\n * @param {boolean} rosterOptions.hideDate - true = hide date selection. For example, SE has pay period date restrictions.\r\n * someone could change the date on the roster outside of the payperiod and choose someone who may be inactive. Removing this option alltogether prevents this.\r\n * !IMPORTANT! If setting this to true, you must update the roster date when they change the date within the module using roster2.updateSelectedDate()\r\n */\r\n async function miniRosterinit(locationData, rosterOptions) {\r\n removeMiniRosterBtn();\r\n // Reset date from moving between modules:\r\n selectedDate = UTIL.getTodaysDate();\r\n if (locationData) {\r\n const { locationId, locationName } = locationData;\r\n if (locationName && locationId) {\r\n selectedLocationName = locationName;\r\n selectedLocationId = locationId;\r\n } else if (locationName === '') {\r\n if (locationId === '0') {\r\n selectedLocationName = 'All';\r\n selectedLocationId = locationId;\r\n } else {\r\n rosterLocations = rosterLocations ?? (await getRosterLocationsData());\r\n const selectedLocationObj = rosterLocations.filter(loc => locationId === loc.ID);\r\n selectedLocationName = selectedLocationObj[0].Name;\r\n selectedLocationId = locationId;\r\n }\r\n }\r\n // reset group when custom location is passed:\r\n selectedGroupId = selectedLocationId;\r\n selectedGroupCode = 'ALL';\r\n selectedGroupName = 'Everyone';\r\n }\r\n MINI_ROSTER_BTN = button.build({\r\n icon: 'people',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: 'mini_roster',\r\n // classNames: ['floatingActionBtn', 'consumerListBtn', 'disabled'],\r\n classNames: ['floatingActionBtn', 'consumerListBtn'],\r\n callback: async () => {\r\n if (\r\n $.loadedApp === 'ConsumerFinances' ||\r\n $.loadedApp === 'CFEditAccount' ||\r\n $.loadedApp === 'employment' ||\r\n $.loadedApp === 'fSS' ||\r\n $.loadedApp === 'assessmentHistory' ||\r\n $.loadedApp === 'OOD'\r\n ) {\r\n clearSelectedConsumers();\r\n clearActiveConsumers();\r\n }\r\n MINI_ROSTER_BTN.classList.add('disabled');\r\n await showMiniRoster(rosterOptions);\r\n MINI_ROSTER_BTN.classList.remove('disabled');\r\n },\r\n });\r\n\r\n document.body.appendChild(MINI_ROSTER_BTN);\r\n DOM.toggleNavLayout();\r\n }\r\n\r\n async function showMiniRoster(\r\n rosterOptions = {\r\n hideDate: false,\r\n locationDisabled: false\r\n },\r\n ) {\r\n const rosterMarkup = await buildRoster({\r\n selectable: true,\r\n hideDateFilter: rosterOptions.hideDate ? true : false,\r\n disabledLocation: rosterOptions.locationDisabled ? true : false,\r\n });\r\n showMiniRosterPopup(rosterMarkup);\r\n totalConsumerCount = 0;\r\n selectedActive = 'No';\r\n await getRosterConsumersData();\r\n populateRoster();\r\n document.getElementById('searchBtn').click();\r\n //filterApply(); \r\n filterUpdateDisplay();\r\n }\r\n /**\r\n * Enables or disables the mini roster button.\r\n * @param {boolean} showBtn - True = enable the mini roster button\r\n */\r\n function toggleMiniRosterBtnVisible(showBtn) {\r\n if (showBtn) {\r\n MINI_ROSTER_BTN.classList.remove('disabled');\r\n } else {\r\n MINI_ROSTER_BTN.classList.add('disabled');\r\n }\r\n }\r\n // Roster Data\r\n //---------------------------------------------\r\n async function getRosterLocationsData() {\r\n try {\r\n const data = (await rosterAjax.getRosterLocations()).getLocationsJSONResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumerGroupsData() {\r\n try {\r\n const data = (await customGroupsAjax.getConsumerGroups(selectedLocationId)).getConsumerGroupsJSONResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getLocationsWithUnreadNotesData() {\r\n try {\r\n const data = (await locationNotesAjax.getLocationsWithUnreadNotes()).getLocationsWithUnreadNotesResult;\r\n return JSON.parse(data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumersByGroupData(getConsumerByGroupData) {\r\n try {\r\n const data = (await rosterAjax.getConsumersByGroup(getConsumerByGroupData)).getConsumersByGroupJSONResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumersWithUnreadNotesByEmployeeAndLocationData(selectedLocationId) {\r\n try {\r\n const data = (await progressNotesAjax.getConsumersWithUnreadNotesByEmployeeAndLocation(selectedLocationId))\r\n .getConsumersWithUnreadNotesByEmployeeAndLocationResult;\r\n return JSON.parse(data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getRosterConsumersData(forceGroupFilter) {\r\n if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n selectedGroupCode = 'CAS';\r\n isCaseLoad = true;\r\n }\r\n const getConsumerByGroupData = {\r\n selectedGroupCode,\r\n selectedGroupId,\r\n selectedLocationId,\r\n selectedDate,\r\n selectedActive,\r\n isCaseLoad\r\n };\r\n\r\n if (!rosterConsumers || rosterConsumers.length === 0 || forceGroupFilter) {\r\n rosterConsumers = await getConsumersByGroupData(getConsumerByGroupData);\r\n }\r\n\r\n // I am not sure why consumer location was being set to the selected location ID?\r\n const seenIds = {};\r\n\r\n rosterConsumers = rosterConsumers.filter(consumer => {\r\n if (seenIds[consumer.id]) {\r\n return false;\r\n } else {\r\n seenIds[consumer.id] = true;\r\n return true;\r\n }\r\n });\r\n groupRosterConsumers();\r\n\r\n if (selectedLocationId !== '0') {\r\n const consumersWithUnreadNotesResults = await getConsumersWithUnreadNotesByEmployeeAndLocationData(\r\n selectedLocationId,\r\n );\r\n consumersWithUnreadNotes = progressNotes.createConsumersWithUnreadNotesObj(consumersWithUnreadNotesResults);\r\n } else {\r\n consumersWithUnreadNotes = {};\r\n }\r\n\r\n absentConsumers = await rosterAbsent.getAbsentConsumers(selectedLocationId, selectedDate);\r\n }\r\n async function getRosterData() {\r\n if (!selectedDate) selectedDate = UTIL.getTodaysDate();\r\n\r\n rosterLocations = await getRosterLocationsData();\r\n if (!selectedLocationId || rosterLocations.filter(loc => loc.ID === selectedLocationId).length === 0) {\r\n if (selectedLocationId !== '0') setSelectedLocationData();\r\n }\r\n\r\n rosterGroups = await getConsumerGroupsData(selectedLocationId);\r\n if (!selectedGroupName\r\n || ($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n setSelectedGroupData();\r\n }\r\n\r\n locationsWithUnreadNotes = await getLocationsWithUnreadNotesData();\r\n }\r\n\r\n // Roster List\r\n //---------------------------------------------\r\n function buildLoadMoreBtn() {\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('loadMoreConsumersBtn');\r\n\r\n const btn = button.build({\r\n text: 'Load More...',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n activeGroup++;\r\n populateRoster(true);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(btn);\r\n\r\n return btnWrap;\r\n }\r\n function toggleRosterListLockdown(lockItDown) {\r\n if (lockItDown) {\r\n ROSTER_WRAP.classList.add('disabled');\r\n } else {\r\n ROSTER_WRAP.classList.remove('disabled');\r\n }\r\n }\r\n async function refreshRosterList() {\r\n rosterListSelectable = false;\r\n setActiveModuleSectionAttribute('roster-info');\r\n\r\n const rosterlists = [...ROSTER_WRAP.querySelectorAll('.roster__list')];\r\n rosterlists && rosterlists.forEach(rl => ROSTER_WRAP.removeChild(rl));\r\n totalConsumerCount = 0;\r\n\r\n await getRosterData();\r\n await getRosterConsumersData(true);\r\n populateRoster();\r\n }\r\n function rosterEventSetup() {\r\n ROSTER_WRAP.addEventListener('click', e => {\r\n const isConsumer = event.target.classList.contains('consumerCard');\r\n if (!isConsumer) return;\r\n const consumer = event.target;\r\n const consumerId = event.target.dataset.consumerId;\r\n\r\n const activeSection = DOM.ACTIONCENTER.dataset.activeSection;\r\n\r\n if (activeSection === 'roster-info') {\r\n toggleRosterListLockdown(true);\r\n DOM.scrollToTopOfPage();\r\n consumerInfo.showCard(consumer);\r\n return;\r\n }\r\n\r\n const isConsumerSelected = consumer.classList.contains('consumer-selected');\r\n // var activeSection = actioncenter.dataset.activeSection;\r\n\r\n if (\r\n $.loadedApp === 'outcomes' ||\r\n $.loadedApp === 'plan' ||\r\n $.loadedApp === 'authorizations' ||\r\n $.loadedApp === 'ConsumerFinances' ||\r\n $.loadedApp === 'CFEditAccount' ||\r\n $.loadedApp === 'employment' ||\r\n $.loadedApp === 'fSS' ||\r\n $.loadedApp === 'covid' ||\r\n $.loadedApp === 'forms' ||\r\n $.loadedApp === 'assessmentHistory' ||\r\n $.loadedApp === 'OOD' ||\r\n activeSection === 'caseNotesSSA-new' ||\r\n activeSection === 'caseNotes-new'\r\n ) {\r\n // add modules that only allow one consumer\r\n if (isConsumerSelected) {\r\n consumer.classList.remove('consumer-selected');\r\n consumer.classList.remove('highlighted');\r\n removeConsumerFromSelectedConsumers(consumerId);\r\n } else {\r\n const currentlySelectedConsumer = ROSTER_WRAP.querySelector('.consumer-selected');\r\n if (currentlySelectedConsumer) {\r\n const currentlySelectedConsumerId = currentlySelectedConsumer.dataset.consumerId;\r\n currentlySelectedConsumer.classList.remove('highlighted');\r\n currentlySelectedConsumer.classList.remove('consumer-selected');\r\n removeConsumerFromSelectedConsumers(currentlySelectedConsumerId);\r\n }\r\n consumer.classList.add('consumer-selected');\r\n consumer.classList.add('highlighted');\r\n addConsumerToSelectedConsumers(consumer);\r\n }\r\n\r\n // only one consumer selection page rediret to main page without done button\r\n MINI_ROSTER_DONE.setAttribute('data-action-nav', 'miniRosterDone');\r\n MINI_ROSTER_DONE.click();\r\n } else {\r\n if (!isConsumerSelected) {\r\n addConsumerToSelectedConsumers(consumer);\r\n consumer.classList.add('consumer-selected');\r\n consumer.classList.add('highlighted');\r\n } else {\r\n consumer.classList.remove('consumer-selected');\r\n consumer.classList.remove('highlighted');\r\n removeConsumerFromSelectedConsumers(consumerId);\r\n }\r\n }\r\n\r\n if (activeSection === 'roster-absent') {\r\n const doneBtn = document.getElementById('absentDone');\r\n if (selectedConsumers.length > 0) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n return;\r\n }\r\n\r\n if (selectedConsumers.length > 0) {\r\n MINI_ROSTER_DONE.classList.remove('disabled');\r\n } else {\r\n MINI_ROSTER_DONE.classList.add('disabled');\r\n }\r\n });\r\n\r\n SELECT_ALL_BTN.addEventListener('click', event => {\r\n var consumers = [].slice.call(ROSTER_WRAP.querySelectorAll('.consumerCard:not(.highlighted)'));\r\n consumers.forEach(c => {\r\n if (c.classList.contains('disabled')) return;\r\n var consumer = c.cloneNode(true);\r\n addConsumerToSelectedConsumers(consumer);\r\n c.classList.add('consumer-selected', 'highlighted');\r\n });\r\n\r\n const groupCount = Object.keys(groupedRosterConsumers).length;\r\n const nextGroup = activeGroup + 1;\r\n for (let i = nextGroup; i <= groupCount; i++) {\r\n if (groupedRosterConsumers[i]) {\r\n groupedRosterConsumers[i].forEach(c => {\r\n var consumer = buildConsumerCard(c);\r\n if (consumer.classList.contains('disabled')) return;\r\n addConsumerToSelectedConsumers(consumer);\r\n });\r\n }\r\n }\r\n\r\n console.table(selectedConsumers);\r\n\r\n if (selectedConsumers.length > 0) {\r\n MINI_ROSTER_DONE.classList.remove('disabled');\r\n } else {\r\n MINI_ROSTER_DONE.classList.add('disabled');\r\n }\r\n });\r\n\r\n DESELECT_ALL_BTN.addEventListener('click', event => {\r\n clearHighlightedConsumers();\r\n clearSelectedConsumers();\r\n\r\n console.table(selectedConsumers);\r\n\r\n if (selectedConsumers.length > 0) {\r\n MINI_ROSTER_DONE.classList.remove('disabled');\r\n } else {\r\n MINI_ROSTER_DONE.classList.add('disabled');\r\n }\r\n });\r\n\r\n MASS_SELECT_ALL_BTN.addEventListener('click', event => {\r\n var consumers = [].slice.call(ROSTER_WRAP.querySelectorAll('.consumerCard:not(.highlighted)'));\r\n consumers.forEach(c => {\r\n if (c.classList.contains('disabled')) return;\r\n var consumer = c.cloneNode(true);\r\n addConsumerToSelectedConsumers(consumer);\r\n c.classList.add('consumer-selected', 'highlighted');\r\n });\r\n\r\n const groupCount = Object.keys(groupedRosterConsumers).length;\r\n const nextGroup = activeGroup + 1;\r\n for (let i = nextGroup; i <= groupCount; i++) {\r\n if (groupedRosterConsumers[i]) {\r\n groupedRosterConsumers[i].forEach(c => {\r\n var consumer = buildConsumerCard(c);\r\n if (consumer.classList.contains('disabled')) return;\r\n addConsumerToSelectedConsumers(consumer);\r\n });\r\n }\r\n }\r\n\r\n console.table(selectedConsumers);\r\n\r\n const doneBtn = document.getElementById('absentDone');\r\n if (selectedConsumers.length > 0) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n\r\n });\r\n\r\n MASS_DESELECT_ALL_BTN.addEventListener('click', event => {\r\n selectNoneHighlightedConsumers();\r\n clearSelectedConsumers();\r\n\r\n console.table(selectedConsumers);\r\n\r\n const doneBtn = document.getElementById('absentDone');\r\n if (selectedConsumers.length > 0) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n });\r\n\r\n FILTER_BTN.addEventListener('click', event => {\r\n buildFilterPopup('ALL');\r\n });\r\n\r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n if (event.keyCode === 13) {\r\n searchRoster(event.target.value);\r\n }\r\n });\r\n\r\n MASS_ABSENT_BTN.addEventListener('click', event => {\r\n if (event.target.dataset.toggled === 'true') {\r\n rosterListSelectable = true;\r\n rosterAbsent.initMassAbsent();\r\n setActiveModuleSectionAttribute('roster-absent');\r\n MASS_DESELECT_ALL_BTN.style.display = 'block';\r\n MASS_SELECT_ALL_BTN.style.display = 'block';\r\n } else {\r\n rosterListSelectable = false;\r\n ACTION_NAV.hide();\r\n setActiveModuleSectionAttribute('roster-info');\r\n MASS_DESELECT_ALL_BTN.style.display = 'none';\r\n MASS_SELECT_ALL_BTN.style.display = 'none';\r\n selectNoneHighlightedConsumers();\r\n clearSelectedConsumers();\r\n }\r\n });\r\n\r\n MANAGE_GROUPS_BTN.addEventListener('click', event => {\r\n customGroups.loadManageGroupsPage();\r\n });\r\n\r\n LOCATION_NOTES_BTN.addEventListener('click', event => {\r\n locationNotes.loadAllNotesPage();\r\n });\r\n }\r\n function populateRoster(loadingMore) {\r\n if (!rosterConsumers) return;\r\n\r\n ROSTER_LIST = document.createElement('div');\r\n ROSTER_LIST.classList.add('roster__list');\r\n\r\n if (groupedRosterConsumers[activeGroup]) {\r\n groupedRosterConsumers[activeGroup].forEach(c => ROSTER_LIST.appendChild(buildConsumerCard(c)));\r\n totalConsumerCount = rosterConsumers.length;\r\n }\r\n\r\n if (ROSTER_WRAP.contains(ROSTER_SPINNER)) ROSTER_WRAP.removeChild(ROSTER_SPINNER);\r\n if (!ROSTER_WRAP.contains(LOAD_MORE_BTN)) {\r\n LOAD_MORE_BTN = buildLoadMoreBtn();\r\n ROSTER_WRAP.appendChild(LOAD_MORE_BTN);\r\n }\r\n ROSTER_WRAP.insertBefore(ROSTER_LIST, LOAD_MORE_BTN);\r\n // if (!loadingMore) SEARCH_INPUT.focus();\r\n const nextGroup = activeGroup + 1;\r\n if (!groupedRosterConsumers[nextGroup]) {\r\n ROSTER_WRAP.removeChild(LOAD_MORE_BTN);\r\n }\r\n\r\n updateTotalConsumerCount();\r\n // populateConsumerCardPortraits();\r\n }\r\n function groupRosterConsumers(consumers) {\r\n const chunkBy = 50;\r\n const chunkedArray = consumers ? UTIL.chunkArray(consumers, chunkBy) : UTIL.chunkArray(rosterConsumers, chunkBy);\r\n groupedRosterConsumers = {};\r\n chunkedArray.forEach((a, index) => (groupedRosterConsumers[index] = a));\r\n\r\n const rosterGroupKeys = Object.keys(groupedRosterConsumers);\r\n rosterGroupCount = rosterGroupKeys && rosterGroupKeys.length;\r\n activeGroup = 0;\r\n }\r\n /**\r\n *\r\n * @param {Object} param0\r\n * @param {boolean} param0.hideDateFilter - True = hide Date filter.\r\n *\r\n */\r\n async function buildRoster({ selectable, ...otherOpts }, callback) {\r\n rosterConsumers = [];\r\n\r\n rosterListSelectable = selectable;\r\n hideDateFilter = otherOpts.hideDateFilter;\r\n islocationDisabled = otherOpts.disabledLocation ? true : false;\r\n selectedActive = 'No';\r\n await getRosterData();\r\n\r\n // roster\r\n ROSTER_WRAP = document.createElement('div');\r\n ROSTER_WRAP.classList.add('roster');\r\n // roster topNav\r\n const topNav = buildRosterTopNav();\r\n const filteredBy = buildFilteredBy();\r\n // build roster\r\n ROSTER_SPINNER = PROGRESS.SPINNER.get('Please wait while we gather everyone up...');\r\n ROSTER_WRAP.appendChild(topNav);\r\n ROSTER_WRAP.appendChild(filteredBy);\r\n ROSTER_WRAP.appendChild(ROSTER_SPINNER);\r\n // setup event listener\r\n rosterEventSetup();\r\n\r\n MASS_DESELECT_ALL_BTN.style.display = 'none';\r\n MASS_SELECT_ALL_BTN.style.display = 'none';\r\n\r\n return ROSTER_WRAP;\r\n }\r\n\r\n // Main Module\r\n //---------------------------------------------\r\n async function loadRosterInfo() {\r\n //reset date\r\n selectedDate = UTIL.getTodaysDate();\r\n // clear out roster location and group so it will set back to default roster location (as per ticket 47820)\r\n selectedLocationId = null;\r\n selectedGroupName = null;\r\n\r\n PROGRESS.SPINNER.show('Loading Roster...');\r\n\r\n const rosterMarkup = await buildRoster({\r\n selectable: false,\r\n showActionNavCancel: false,\r\n forMiniRoster: false,\r\n hideDateFilter: false,\r\n });\r\n\r\n setActiveModuleSectionAttribute('roster-info');\r\n DOM.clearActionCenter();\r\n\r\n var consumerInfoCard = consumerInfo.buildCard();\r\n DOM.ACTIONCENTER.appendChild(rosterMarkup);\r\n DOM.ACTIONCENTER.appendChild(consumerInfoCard);\r\n consumerInfo.toggleHideShowAbsentMenuSection(selectedLocationId);\r\n\r\n customGroups.init(rosterGroups);\r\n rosterAbsent.init();\r\n\r\n totalConsumerCount = 0;\r\n selectedActive = 'No';\r\n await getRosterConsumersData();\r\n populateRoster();\r\n document.getElementById('searchBtn').click();\r\n filterUpdateDisplay();\r\n }\r\n\r\n return {\r\n addConsumerToActiveConsumers,\r\n buildRoster,\r\n buildConsumerCard,\r\n clearActiveConsumers,\r\n clearSelectedConsumers,\r\n getActiveConsumers,\r\n getSelectedConsumers,\r\n getSelectedConsumersCache,\r\n getSelectedConsumersMiniRoster,\r\n getSelectedLocationObj,\r\n getSelectedDate,\r\n getRosterLocations,\r\n getAllRosterConsumers,\r\n getConsumersWithUnreadNotes,\r\n getConsumerGroupsData,\r\n loadRosterInfo,\r\n miniRosterinit,\r\n populateRoster,\r\n refreshRosterList,\r\n removeConsumerFromActiveConsumers,\r\n removeMiniRosterBtn,\r\n selectedConsumersToActiveList,\r\n setAllowedConsumers,\r\n setRosterGroups,\r\n setCustomDefaultLocationData,\r\n showMiniRoster,\r\n toggleRosterListLockdown,\r\n toggleMiniRosterBtnVisible,\r\n toggleActionCenterChildrenVisiblity,\r\n updateSelectedDate,\r\n updateSelectedLocationId,\r\n selectNoneHighlightedConsumers,\r\n };\r\n})();\r\n","const rosterAjax = (function () {\r\n function getRosterLocations(callback) {\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getConsumersByGroup(data, callback) {\r\n // data = {selectedGroupCode, selectedGroupId, selectedLocationId, selectedDate}\r\n var groupCode = data.selectedGroupCode;\r\n var retrieveId =\r\n groupCode === 'CST' || groupCode === 'TRA' || groupCode === 'NAT' \r\n ? data.selectedGroupId\r\n : data.selectedLocationId; \r\n \r\n var date = data.selectedDate;\r\n var daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\r\n date = date ? date : UTIL.getTodaysDate();\r\n var selectedActive = data.selectedActive == undefined ? 'No' : data.selectedActive;\r\n\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumersByGroupJSON/',\r\n data:\r\n '{\"groupCode\":\"' +\r\n groupCode +\r\n '\", \"retrieveId\":\"' +\r\n retrieveId +\r\n '\", \"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n date +\r\n '\", \"daysBackDate\":\"' +\r\n daysBackDate +\r\n '\", \"isActive\":\"' +\r\n selectedActive +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getIndividualAbsentData(data, callback) {\r\n //token, locationId, consumerId, checkDate\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkForIndividualAbsentJSON/',\r\n //data: '{\"token\":\"' + $.session.Token + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n try {\r\n var res = response.checkForIndividualAbsentJSONResult;\r\n } catch (e) {\r\n callback('There was a problem parsing checkForIndividualAbsentResult');\r\n }\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getAllAttachments(data, callback) {\r\n //data = {token, locationId, consumerId, checkDate}\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAllAttachments/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n try {\r\n var res = response.getAllAttachmentsResult;\r\n callback(res);\r\n } catch (e) {\r\n callback('There was a problem parsing checkForIndividualAbsentResult');\r\n }\r\n },\r\n });\r\n }\r\n function getConsumerDemographics(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerDemographicsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerDemographicsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getConsumerRelationships(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerRelationshipsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerRelationshipsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getDemographicsNotes(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDemographicsNotesJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getDemographicsNotesJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getConsumerScheduleLocation(consumerId, callback) {\r\n data = {\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerScheduleLocation/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n data = response.getConsumerScheduleLocationResult;\r\n callback(data);\r\n },\r\n });\r\n }\r\n function getConsumerSchedule(locationId, consumerId, callback) {\r\n data = {\r\n token: $.session.Token,\r\n locationId: locationId,\r\n consumerId: consumerId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/populateConsumerSchedule/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n scheduleData = response.populateConsumerScheduleResult;\r\n callback(scheduleData);\r\n },\r\n });\r\n }\r\n async function updatePortrait(imageFile, id, portraitPath, callback) {\r\n await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePortrait/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"employeeUserName\":\"' +\r\n $.session.UserId +\r\n '\",\"imageFile\":\"' +\r\n imageFile +\r\n '\",\"id\":\"' +\r\n id +\r\n '\",\"portraitPath\":\"' +\r\n portraitPath +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n },\r\n error: function (xhr, status, error) {\r\n console.log(status);\r\n console.log(error);\r\n console.log(xhr.responseText);\r\n },\r\n });\r\n }\r\n function getPSIUserOptionList(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPSIUserOptionListJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getPSIUserOptionListJSONResult;\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n async function updateConsumerDemographics(retrieveData) {\r\n //type, value, consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateDemographicsRecord/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return {\r\n ...data.updateDemographicsRecordResult,\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function removeConsumerPhoto(retrieveData) {\r\n // consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/removeConsumerPhoto/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return {\r\n ...data.removeConsumerPhotoResult,\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function verifyDefaultEmailClient() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/verifyDefaultEmailClient/',\r\n data: JSON.stringify(),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getEditConsumerRelationships(consumerId, isActive) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEditConsumerRelationshipsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"consumerId\":\"' + consumerId + '\",\"isActive\":\"' + isActive + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getRelationshipsType() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getRelationshipsTypeJSON/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getRelationshipsName() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getRelationshipsNameJSON/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getRelationshipsNameByID(selectedValue) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getRelationshipsNameByIDJSON/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n relationType: selectedValue,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertEditRelationship(consumerRelationshipsNew, consumerRelationships, consumerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertEditRelationship/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n consumerRelationshipsNewList: consumerRelationshipsNew,\r\n consumerRelationshipsList: consumerRelationships,\r\n consumerId: consumerId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getRosterLocations,\r\n getConsumersByGroup,\r\n getIndividualAbsentData,\r\n getAllAttachments,\r\n getConsumerDemographics,\r\n getDemographicsNotes,\r\n getConsumerScheduleLocation,\r\n getConsumerSchedule,\r\n updatePortrait,\r\n getConsumerRelationships,\r\n getPSIUserOptionList,\r\n updateConsumerDemographics,\r\n removeConsumerPhoto,\r\n verifyDefaultEmailClient,\r\n getEditConsumerRelationships,\r\n getRelationshipsType,\r\n getRelationshipsName,\r\n insertEditRelationship,\r\n getRelationshipsNameByID\r\n };\r\n})();\r\n","const rosterWorkflow = (() => {\r\n let selectedConsumerId;\r\n\r\n async function displayWFwithMissingResponsibleParties(workflowIds) {\r\n if (workflowIds.length == 0) return false;\r\n\r\n let strWorkflowIds = workflowIds.toString();\r\n const convertedstrWorkFlowIds = strWorkflowIds.replaceAll(',', '|');\r\n // convertedstrWorkFlowIds += '|';\r\n\r\n async function getWFwithMissingResponsibleParties(constrWorkFlowIds) {\r\n let responsibleData = await WorkflowViewerAjax.getWFwithMissingResponsibleParties({\r\n workflowIds: constrWorkFlowIds.toString(),\r\n });\r\n\r\n return responsibleData;\r\n }\r\n\r\n let responsibleData = await getWFwithMissingResponsibleParties(convertedstrWorkFlowIds);\r\n\r\n const workflowNames = [];\r\n if (responsibleData.length > 0) {\r\n for (let i = 0; i < responsibleData.length; i++) {\r\n workflowNames.push(responsibleData[i].name);\r\n }\r\n var strWorkflowNames = workflowNames.join(', ');\r\n missingResponsiblePartyAlert(strWorkflowNames);\r\n }\r\n }\r\n function missingResponsiblePartyAlert(workflowNames) {\r\n var alertPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n });\r\n var alertbtnWrap = document.createElement('div');\r\n alertbtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(alertPopup);\r\n },\r\n });\r\n\r\n alertbtnWrap.appendChild(alertokBtn);\r\n var alertMessage = document.createElement('p');\r\n alertMessage.innerHTML =\r\n 'There are missing responsible party relationship assignments for the following new workflows: ' + workflowNames;\r\n alertPopup.appendChild(alertMessage);\r\n alertPopup.appendChild(alertbtnWrap);\r\n POPUP.show(alertPopup);\r\n }\r\n\r\n async function showAddWorkflowPopup() {\r\n let selectedWorkflows = [];\r\n\r\n const wfPopup = POPUP.build({\r\n header: 'Select workflow(s) to attach.',\r\n id: 'workflow_addWorkflowPopup',\r\n });\r\n\r\n // Workflow List\r\n //-----------------------\r\n const wfvData = await WorkflowViewerAjax.getManualWorkflowList({\r\n token: $.session.Token,\r\n processId: 4,\r\n referenceId: selectedConsumerId,\r\n notPlan: 't'\r\n });\r\n\r\n const workflowList = document.createElement('div');\r\n workflowList.classList.add('workflowList');\r\n\r\n wfvData.forEach(obj => {\r\n const wfvItem = document.createElement('div');\r\n wfvItem.classList.add('workflowListItem');\r\n wfvItem.setAttribute('data-template-id', obj.workflowTemplateId);\r\n wfvItem.innerHTML = `

    ${obj.templateName}

    ${obj.description}

    `;\r\n workflowList.appendChild(wfvItem);\r\n });\r\n \r\n workflowList.addEventListener('click', e => {\r\n if (e.target.classList.contains('workflowListItem')) {\r\n const templateID = e.target.dataset.templateId;\r\n\r\n if (!e.target.classList.contains('selected')) {\r\n e.target.classList.add('selected');\r\n selectedWorkflows.push(templateID);\r\n } else {\r\n e.target.classList.remove('selected');\r\n selectedWorkflows = selectedWorkflows.filter(wf => wf !== templateID);\r\n }\r\n\r\n selectedWorkflows.length > 0 ? doneBtn.classList.remove('disabled') : doneBtn.classList.add('disabled');\r\n }\r\n });\r\n\r\n // Buttons\r\n //-----------------------\r\n const doneBtn = button.build({\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: async () => {\r\n const workflowIds = [];\r\n\r\n if (selectedWorkflows && selectedWorkflows.length > 0) {\r\n try {\r\n for (i = 0; i < selectedWorkflows.length; i++) {\r\n let wftemplateId = selectedWorkflows[i];\r\n let workflowId = await WorkflowViewerAjax.copyWorkflowtemplateToRecord({\r\n token: $.session.Token,\r\n templateId: wftemplateId,\r\n referenceId: selectedConsumerId,\r\n peopleId: selectedConsumerId,\r\n });\r\n workflowIds.push(workflowId);\r\n }\r\n\r\n const newScreen = await buildWorkflowScreen();\r\n onResetViewer(newScreen);\r\n } catch (error) {\r\n console.error('error inserting workflows');\r\n }\r\n\r\n await displayWFwithMissingResponsibleParties(workflowIds);\r\n }\r\n\r\n POPUP.hide(wfPopup);\r\n }\r\n });\r\n const cancelBtn = button.build({\r\n id: 'addWorkflowCancelBtn',\r\n text: 'CANCEL',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => POPUP.hide(wfPopup),\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n\r\n wfPopup.appendChild(workflowList);\r\n wfPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(wfPopup);\r\n }\r\n \r\n async function buildWorkflowScreen() {\r\n const workflowViewer = await WorkflowViewerComponent.get(4, selectedConsumerId, true);\r\n\r\n const addWorkflowBtn = button.build({\r\n text: 'Add Workflow(s)',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n showAddWorkflowPopup();\r\n },\r\n });\r\n\r\n return {workflowViewer, addWorkflowBtn};\r\n }\r\n\r\n async function getWorkflowScreen() {\r\n const newScreen = await buildWorkflowScreen();\r\n\r\n return newScreen\r\n }\r\n\r\n function init(consumerId, consumerName, onResetViewerFunc) {\r\n onResetViewer = onResetViewerFunc;\r\n selectedConsumerId = consumerId;\r\n $.workflowConsumerId = selectedConsumerId;\r\n $.workflowConsumerName = consumerName;\r\n }\r\n\r\n return {\r\n init,\r\n getWorkflowScreen,\r\n showAddWorkflowPopup\r\n }\r\n})();\r\n","var scheduling = (function () {\r\n function loadSchedulingLanding() {\r\n let schedulingCalendarBtn = button.build({\r\n text: 'View Calendar',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n setActiveModuleSectionAttribute('scheduling-calendar');\r\n PROGRESS.SPINNER.show('Loading Schedule...');\r\n schedulingCalendar.init();\r\n },\r\n });\r\n let schedulingRequestTimeOffBtn = button.build({\r\n text: 'Request Time Off',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n setActiveModuleSectionAttribute('scheduling-requestTimeOff');\r\n PROGRESS.SPINNER.show('Loading...');\r\n schedulingRequestTimeOff.init();\r\n },\r\n });\r\n let schedulingApproveRequestBtn = button.build({\r\n text: 'Approve Requests',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n setActiveModuleSectionAttribute('scheduling-approveRequests');\r\n PROGRESS.SPINNER.show('Loading...');\r\n schedulingApproveRequest.init();\r\n },\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n\r\n btnWrap.appendChild(schedulingCalendarBtn);\r\n\r\n if ($.session.schedulingView === true && $.session.schedulingUpdate === false) {\r\n } else {\r\n btnWrap.appendChild(schedulingRequestTimeOffBtn);\r\n btnWrap.appendChild(schedulingApproveRequestBtn);\r\n }\r\n\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n\r\n function init() {\r\n //PERMISSION = SCHEDULE VIEW ONLY\r\n if (!$.session.schedulingUpdate) {\r\n setActiveModuleSectionAttribute('scheduling-calendar');\r\n schedulingCalendar.init();\r\n } else {\r\n loadSchedulingLanding();\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var schedulingAjax = (function () {\r\n function getLocationDropdownForSchedulingAjax(cb) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getLocationDropdownForScheduling/\",\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getLocationDropdownForSchedulingResult; \r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n //When using this call:\r\n //Pass a '%' for the personId and the locationId from the dropdown to get all schedules for a location\r\n //Pass a '%' for the locationId and the users personId to get all of that pesons schedules\r\n function getSchedulesForSchedulingModuleAjax(locationId, personId, cb) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getSchedulesForSchedulingModule/\",\r\n data: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\", \"personId\":\"' + personId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getSchedulesForSchedulingModuleResult;\r\n cb(res, locationId);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n async function requestDaysOffSchedulingAjax(insertData) {\r\n //insertData must include token, personId, dates, fromTime, toTime, reason, employeeNotifiedId, status\r\n try {\r\n const result = await $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/requestDaysOffScheduling/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n });\r\n return result\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n function getCallOffDropdownReasonsAjax(cb) {\r\n //insertData must include token, toPersonId, reasonId, notification\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getCallOffDropdownReasons/\",\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getCallOffDropdownReasonsResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function getCallOffDropdownEmployeesAjax(shiftDate, locationId, cb) {\r\n //insertData must include token, locationId\r\n shiftDate = UTIL.formatDateToIso(shiftDate);\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getCallOffDropdownEmployees/\",\r\n data: '{\"token\":\"' + $.session.Token + '\",\"shiftDate\":\"' + shiftDate + '\",\"locationId\":\"' + locationId+ '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getCallOffDropdownEmployeesResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function getRequestTimeOffDropdownEmployees(cb) {\r\n //insertData must include token\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getRequestTimeOffDropdownEmployees/\",\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getRequestTimeOffDropdownEmployeesResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function saveSchedulingCallOffRequestAjax(insertData) {\r\n //insertData must include token, shiftId, personId, reasonId, note, status, notifiedEmployeeId\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/saveSchedulingCallOffRequest/\",\r\n //data: '{\"token\":\"' + $.session.Token + '\"}',\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.saveSchedulingCallOffRequestResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function getDayOfWeekScheduleAjax(cb) {\r\n //insertData must include token, shiftId, personId, reasonId, note, status, notifiedEmployeeId\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getDayOfWeekSchedule/\",\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getDayOfWeekScheduleResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function getScheduleApptInformationAjax(locationId, cb) {//Added locationId from dropdown on all schedule view\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getScheduleApptInformation/\",\r\n data: '{\"token\":\"' + $.session.Token + '\",\"locationId\":\"' + locationId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getScheduleApptInformationResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function saveOpenShiftRequestSchedulingAjax(insertData) {//token, shiftId, personId, status, notifiedEmployeeId)\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/saveOpenShiftRequestScheduling/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.saveOpenShiftRequestSchedulingResult;\r\n //cb(res, schedules);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n async function getOverlapStatusforSelectedShiftAjax(shiftId, personId) {\r\n try {\r\n const result = await $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getOverlapStatusforSelectedShift/\",\r\n data: '{\"token\":\"' + $.session.Token + '\",\"shiftId\":\"' + shiftId + '\",\"personId\":\"' + personId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n}\r\n\r\nasync function getOverlapDataforSelectedShiftAjax(shiftId, personId) {\r\n try {\r\n const result = await $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getOverlapDataforSelectedShift/\",\r\n data: '{\"token\":\"' + $.session.Token + '\",\"shiftId\":\"' + shiftId + '\",\"personId\":\"' + personId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n}\r\n\r\n function cancelRequestOpenShiftSchedulingAjax(requestShiftId) {//token, requestShiftId)\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/cancelRequestOpenShiftScheduling/\",\r\n data: '{\"token\":\"' + $.session.Token + '\",\"requestShiftId\":\"' + requestShiftId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.cancelRequestOpenShiftSchedulingResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function approveDenyOpenShiftRequestSchedulingAjax(insertData) {//token, requestedShiftId, decision)\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/approveDenyOpenShiftRequestScheduling/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.approveDenyOpenShiftRequestSchedulingResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function approveDenyCallOffRequestSchedulingAjax(insertData) {//token, callOffShiftId, decision)\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/approveDenyCallOffRequestScheduling/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.approveDenyCallOffRequestSchedulingResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n async function approveDenyDaysOffRequestSchedulingAjax(insertData) {//token, daysOffIdString(comma separated), decision, dateTime)\r\n try { \r\n const result = await $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/approveDenyDaysOffRequestScheduling/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n });\r\n return result.approveDenyDaysOffRequestSchedulingResult;\r\n\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n}\r\n\r\n function getScheduleMyApprovalDataAjax(insertData, cb) {//token, personId\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getScheduleMyApprovalData/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getScheduleMyApprovalDataResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n getSchedulesForSchedulingModuleAjax: getSchedulesForSchedulingModuleAjax,\r\n getLocationDropdownForSchedulingAjax: getLocationDropdownForSchedulingAjax,\r\n requestDaysOffSchedulingAjax: requestDaysOffSchedulingAjax,\r\n getCallOffDropdownReasonsAjax: getCallOffDropdownReasonsAjax,\r\n getCallOffDropdownEmployeesAjax: getCallOffDropdownEmployeesAjax,\r\n saveSchedulingCallOffRequestAjax: saveSchedulingCallOffRequestAjax,\r\n getDayOfWeekScheduleAjax: getDayOfWeekScheduleAjax,\r\n getScheduleApptInformationAjax: getScheduleApptInformationAjax,\r\n cancelRequestOpenShiftSchedulingAjax: cancelRequestOpenShiftSchedulingAjax,\r\n saveOpenShiftRequestSchedulingAjax: saveOpenShiftRequestSchedulingAjax,\r\n getOverlapStatusforSelectedShiftAjax: getOverlapStatusforSelectedShiftAjax,\r\n getOverlapDataforSelectedShiftAjax: getOverlapDataforSelectedShiftAjax,\r\n approveDenyOpenShiftRequestSchedulingAjax: approveDenyOpenShiftRequestSchedulingAjax,\r\n approveDenyCallOffRequestSchedulingAjax: approveDenyCallOffRequestSchedulingAjax,\r\n approveDenyDaysOffRequestSchedulingAjax: approveDenyDaysOffRequestSchedulingAjax,\r\n getScheduleMyApprovalDataAjax: getScheduleMyApprovalDataAjax,\r\n getRequestTimeOffDropdownEmployees: getRequestTimeOffDropdownEmployees\r\n };\r\n\r\n})();","var defaults = (function () {\r\n // dom\r\n var rosterLocationDropdown;\r\n var rosterGroupDropdown;\r\n var dayServicesLocationDropdown;\r\n var timeClockLocationDropdown;\r\n var WorkshopLocationDropdown;\r\n var moneyManagementLocationDropdown;\r\n var rosterRLLCheckBox;\r\n var dayServicesRLLCheckBox;\r\n var timeClockRLLCheckBox;\r\n var WorkshopRLLCheckBox;\r\n var moneyManagementRLLCheckBox;\r\n var itDaysBackInput;\r\n var caseNotesDaysBackInput;\r\n var progressNotesDaysBackInput;\r\n\r\n // values\r\n var todaysDate = UTIL.getTodaysDate();\r\n var rosterLocation;\r\n var rosterGroup;\r\n var rosterGroupName;\r\n var dayServicesLocation;\r\n var timeClockLocation;\r\n var WorkshopLocation;\r\n var moneyManagementLocation;\r\n var rosterRLL;\r\n var dayServicesRLL;\r\n var timeClockRLL;\r\n var workshopRLL;\r\n var moneyManagementRLL;\r\n\r\n var defaultRosterLocationFixed;\r\n //dropdown data\r\n var dayServiceDropdownData;\r\n var workshopDropdownData;\r\n var moneyManagementDropdownData;\r\n var timeClockDropdownData;\r\n var rosterLocDropdownData;\r\n var rosterGroupDropdownData;\r\n\r\n function getLocation(module) {\r\n // module ex.. 'roster', 'dayServices'\r\n switch (module) {\r\n case 'roster': {\r\n return $.session.defaultRosterLocation === 'null' ||\r\n $.session.defaultRosterLocation === '0'\r\n ? ''\r\n : $.session.defaultRosterLocation;\r\n break;\r\n }\r\n case 'rosterGroup': {\r\n return $.session.defaultRosterGroupValue;\r\n break;\r\n }\r\n case 'dayServices': {\r\n return $.session.defaultDayServiceLocation;\r\n break;\r\n }\r\n case 'timeClock': {\r\n return $.session.defaultDSTimeClockValue;\r\n break;\r\n }\r\n case 'workshop': {\r\n return $.session.defaultWorkshopLocationValue;\r\n break;\r\n }\r\n case 'moneyManagement': {\r\n return $.session.defaultMoneyManagementLocationValue;\r\n break;\r\n }\r\n default: {\r\n return null;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function setLocation(module, value, name) {\r\n // only called from within defaults page\r\n switch (module) {\r\n case 'roster': {\r\n rosterLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('2', rosterLocation);\r\n //reset session var for the current session\r\n $.session.defaultRosterLocation = rosterLocation;\r\n break;\r\n }\r\n case 'rosterGroup': {\r\n rosterGroup = value;\r\n defaultsAjax.saveDefaultLocationValue('6', rosterGroup, rosterGroupName);\r\n //reset session var for the current session\r\n $.session.defaultRosterGroupValue = rosterGroup;\r\n break;\r\n }\r\n case 'dayServices': {\r\n dayServicesLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('3', dayServicesLocation);\r\n //reset session var for the current session\r\n $.session.defaultDayServiceLocation = dayServicesLocation;\r\n break;\r\n }\r\n case 'timeClock': {\r\n timeClockLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('4', timeClockLocation);\r\n //reset session var for the current session\r\n $.session.defaultDSTimeClockValue = timeClockLocation;\r\n break;\r\n }\r\n case 'workshop': {\r\n WorkshopLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('5', WorkshopLocation);\r\n //reset session var for the current session\r\n $.session.defaultWorkshopLocationValue = WorkshopLocation;\r\n break;\r\n }\r\n case 'moneyManagement': {\r\n moneyManagementLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('7', moneyManagementLocation);\r\n //reset session var for the current session\r\n $.session.defaultMoneyManagementLocationValue = moneyManagementLocation;\r\n break;\r\n }\r\n default: {\r\n return null;\r\n break;\r\n }\r\n }\r\n\r\n // defaultsAjax.setDefaultValue();\r\n }\r\n\r\n function setRememberLastLocation(module) {\r\n // only called from within defaults page\r\n switch (module) {\r\n case 'roster': {\r\n if (rosterRLL) {\r\n defaultsAjax.saveDefaultLocationName('2', 'Remember Last Location');\r\n $.session.defaultRosterLocationName = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('2', '');\r\n $.session.defaultRosterLocationName = '';\r\n }\r\n break;\r\n }\r\n case 'dayServices': {\r\n if (dayServicesRLL) {\r\n defaultsAjax.saveDefaultLocationName('3', 'Remember Last Location');\r\n $.session.defaultDayServiceLocationName = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('3', '');\r\n $.session.defaultDayServiceLocationName = '';\r\n }\r\n break;\r\n }\r\n case 'timeClock': {\r\n if (timeClockRLL) {\r\n defaultsAjax.saveDefaultLocationName('4', 'Remember Last Location');\r\n $.session.defaultDSTimeClockName = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('4', '');\r\n $.session.defaultDSTimeClockName = '';\r\n }\r\n break;\r\n }\r\n case 'workshop': {\r\n if (workshopRLL) {\r\n defaultsAjax.saveDefaultLocationName('5', 'Remember Last Location');\r\n $.session.defaultWorkshopLocation = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('5', '');\r\n $.session.defaultWorkshopLocation = '';\r\n }\r\n break;\r\n }\r\n case 'moneyManagement': {\r\n if (moneyManagementRLL) {\r\n defaultsAjax.saveDefaultLocationName('7', 'Remember Last Location');\r\n $.session.defaultMoneyManagementLocation = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('7', '');\r\n $.session.defaultMoneyManagementLocation = '';\r\n }\r\n break;\r\n }\r\n default: {\r\n return null;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // function updateRememberLastLocation() {\r\n // defaultsAjax.saveDefaultLocationValue();\r\n // }\r\n\r\n function getGroup(module) {\r\n switch (module) {\r\n case 'roster': {\r\n return rosterGroup;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function setGroup(module, newGroup) {\r\n // only called from within defaults page\r\n switch (module) {\r\n case 'roster': {\r\n rosterGroup = newGroup;\r\n break;\r\n }\r\n }\r\n\r\n defaultsAjax.setDefaultValue();\r\n }\r\n\r\n function dropdownData() {\r\n var dayServiceLocationPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getDayServiceLocations(todaysDate, loc => {\r\n dayServiceDropdownData = loc.map(loc => {\r\n var id = `ds-${loc.locationId}`;\r\n var value = loc.locationId;\r\n var text = loc.Name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n if (getLocation('dayServices') === '')\r\n dayServiceDropdownData.unshift({\r\n id: 'ds-0',\r\n value: null,\r\n text: 'SELECT A LOCATION',\r\n });\r\n resolve('success');\r\n });\r\n });\r\n\r\n var workshopLocationPromise = new Promise(function (resolve, reject) {\r\n workshopAjax.WorkshopLocations(todaysDate, r => {\r\n workshopDropdownData = r.map(loc => {\r\n var id = `ws-${loc.id}`;\r\n var value = loc.id;\r\n var text = loc.name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n if (getLocation('workshop') === '' || getLocation('workshop') === '0')\r\n workshopDropdownData.unshift({ id: 'ws-0', value: '0', text: 'ALL' });\r\n resolve('success');\r\n });\r\n });\r\n\r\n var timeClockLocationPromise = new Promise(function (resolve, reject) {\r\n timeClockDropdownData = $.session.locations.map((location, index) => {\r\n var id = `tc-${$.session.locationids[index]}`;\r\n var value = $.session.locationids[index];\r\n var text = location;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n if (getLocation('timeClock') === '') {\r\n timeClockDropdownData.unshift({ id: 'tc-0', value: null, text: 'SELECT A LOCATION' });\r\n }\r\n resolve('success');\r\n });\r\n\r\n var rosterLocPromise = new Promise(function (resolve, reject) {\r\n defaultsAjax.getRosterLocations(loc => {\r\n rosterLocDropdownData = loc.map(loc => {\r\n var id = `ros-${loc.ID}`;\r\n var value = loc.ID;\r\n var text = loc.Name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n if (getLocation('roster') === '')\r\n rosterLocDropdownData.unshift({ id: 'ros-0', value: null, text: 'ALL' });\r\n resolve('success');\r\n });\r\n });\r\n\r\n var rosterGroupPromise = new Promise(function (resolve, reject) {\r\n defaultsAjax.getConsumerGroups(\r\n $.session.defaultRosterLocation === 'null' ? '' : $.session.defaultRosterLocation,\r\n res => {\r\n rosterGroupDropdownData = res.map(group => {\r\n var id = `rosGr-${group.GroupCode}-${group.RetrieveID}`;\r\n var value = `${group.GroupCode}-${group.RetrieveID}`;\r\n var text = group.GroupName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n // if (getLocation(\"rosterGroup\") === \"\") rosterGroupDropdownData.unshift({ id: \"rosGr-0\", value: null, text: \"SELECT A GROUP\" });\r\n resolve('success');\r\n },\r\n );\r\n });\r\n\r\n var moneyManagementLocationPromise = new Promise(function (resolve, reject) {\r\n defaultsAjax.getRosterLocations(loc => {\r\n moneyManagementDropdownData = loc.map(loc => {\r\n var id = `ros-${loc.ID}`;\r\n var value = loc.ID;\r\n var text = loc.Name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n moneyManagementDropdownData.unshift({ id: 'ros-0', value: '0', text: 'ALL' });\r\n resolve('success'); \r\n });\r\n });\r\n\r\n Promise.all([\r\n dayServiceLocationPromise,\r\n workshopLocationPromise,\r\n timeClockLocationPromise,\r\n rosterLocPromise,\r\n rosterGroupPromise,\r\n moneyManagementLocationPromise,\r\n ]).then(() => {\r\n buildPage();\r\n });\r\n }\r\n\r\n function rememberLastLocation(module) {\r\n switch (module) {\r\n case 'roster': {\r\n if ($.session.defaultRosterLocationName === 'Remember Last Location') return true;\r\n else return false;\r\n break;\r\n }\r\n case 'dayServices': {\r\n if ($.session.defaultDayServiceLocationName === 'Remember Last Location')\r\n return true;\r\n else return false;\r\n break;\r\n }\r\n case 'timeClock': {\r\n if ($.session.defaultDSTimeClockName === 'Remember Last Location') return true;\r\n else return false;\r\n break;\r\n }\r\n case 'workshop': {\r\n if ($.session.defaultWorkshopLocation === 'Remember Last Location') return true;\r\n else return false;\r\n break;\r\n }\r\n case 'moneyManagement': {\r\n if ($.session.defaultMoneyManagementLocation === 'Remember Last Location') return true;\r\n else return false;\r\n break;\r\n }\r\n default: {\r\n return null;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function repopulateRosterGroupDropdown(loc) {\r\n rosterGroupDropdown.classList.add('disabled');\r\n rosterGroupDropdownData = null;\r\n defaultsAjax.getConsumerGroups(loc, res => {\r\n rosterGroupDropdownData = res.map(group => {\r\n var id = `rosGr-${group.GroupCode}-${group.RetrieveID}`;\r\n var value = `${group.GroupCode}-${group.RetrieveID}`;\r\n var text = group.GroupName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n // if (getLocation(\"rosterGroup\") === \"\") rosterGroupDropdownData.unshift({ id: \"rosGr-0\", value: null, text: \"SELECT A GROUP\" });\r\n setLocation('rosterGroup', `ALL-${loc}`);\r\n dropdown.populate(rosterGroupDropdown, rosterGroupDropdownData, `CAS-${loc}`);\r\n rosterGroupDropdown.classList.remove('disabled');\r\n });\r\n }\r\n\r\n function buildPage() {\r\n var defaultsPage = document.querySelector('.util-menu__defaults');\r\n defaultsPage.innerHTML = '';\r\n\r\n const currMenu = document.createElement('p');\r\n currMenu.innerText = 'Defaults';\r\n currMenu.classList.add('menuTopDisplay');\r\n\r\n var rosterSection = document.createElement('div');\r\n var rosterSectionHeader = document.createElement('h3');\r\n rosterSection.classList.add('settingMenuCard');\r\n rosterSectionHeader.classList.add('header');\r\n rosterSectionHeader.innerHTML = 'Roster';\r\n\r\n var dayServiceSection = document.createElement('div');\r\n var dayServiceSectionHeader = document.createElement('h3');\r\n dayServiceSection.classList.add('settingMenuCard');\r\n dayServiceSectionHeader.classList.add('header');\r\n dayServiceSectionHeader.innerHTML = 'Day Services';\r\n\r\n var timeClockSection = document.createElement('div');\r\n var timeClockSectionHeader = document.createElement('h3');\r\n timeClockSection.classList.add('settingMenuCard');\r\n timeClockSectionHeader.classList.add('header');\r\n timeClockSectionHeader.innerHTML = 'Day Services Time Clock';\r\n\r\n var WorkshopSection = document.createElement('div');\r\n var WorkshopSectionHeader = document.createElement('h3');\r\n WorkshopSection.classList.add('settingMenuCard');\r\n WorkshopSectionHeader.classList.add('header');\r\n WorkshopSectionHeader.innerHTML = 'Workshop';\r\n\r\n var incidentTrackingSection = document.createElement('div');\r\n var incidentTrackingSectionHeader = document.createElement('h3');\r\n incidentTrackingSection.classList.add('settingMenuCard');\r\n incidentTrackingSectionHeader.classList.add('header');\r\n incidentTrackingSectionHeader.innerHTML = 'Incident Tracking';\r\n\r\n var moneyManagementSection = document.createElement('div');\r\n var moneyManagementSectionHeader = document.createElement('h3');\r\n moneyManagementSection.classList.add('settingMenuCard');\r\n moneyManagementSectionHeader.classList.add('header');\r\n moneyManagementSectionHeader.innerHTML = 'Money Management';\r\n\r\n var caseNotesSection = document.createElement('div');\r\n var caseNotesSectionHeader = document.createElement('h3');\r\n caseNotesSection.classList.add('settingMenuCard');\r\n caseNotesSectionHeader.classList.add('header');\r\n caseNotesSectionHeader.innerHTML = 'Case Notes';\r\n\r\n rosterLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultRosterLocation',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n rosterRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: rosterRLL,\r\n });\r\n rosterGroupDropdown = dropdown.build({\r\n dropdownId: 'defaultRosterGroup',\r\n label: 'Default Group',\r\n style: 'secondary',\r\n });\r\n dayServicesLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultDayServicesLocation',\r\n className: 'defaultLocationDD',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n dayServicesRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: dayServicesRLL,\r\n });\r\n timeClockLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultTimeClockLocation',\r\n className: 'defaultLocationDD',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n timeClockRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: timeClockRLL,\r\n });\r\n WorkshopLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultWorkshopLocation',\r\n className: 'defaultLocationDD',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n WorkshopRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: workshopRLL,\r\n });\r\n moneyManagementLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultMoneyManagementLocation',\r\n className: 'defaultLocationDD',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n moneyManagementRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: moneyManagementRLL,\r\n });\r\n\r\n var backButton = button.build({\r\n text: 'Back',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n attributes: [{ key: 'data-action', value: 'back' }],\r\n });\r\n\r\n itDaysBackInput = input.build({\r\n id: 'itDaysBack',\r\n label: 'Days Back (max: 365)',\r\n type: 'number',\r\n style: 'secondary',\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '365' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n value: $.session.defaultIncidentTrackingDaysBack,\r\n });\r\n\r\n caseNotesDaysBackInput = input.build({\r\n id: 'cnDaysBack',\r\n label: 'Days Back (max: 99)',\r\n type: 'number',\r\n style: 'secondary',\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '99' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n value: $.session.defaultCaseNoteReviewDays,\r\n });\r\n\r\n progressNotesDaysBackInput = input.build({\r\n id: 'progNotesDaysBack',\r\n label: 'Progress Notes Days Back (max: 99)',\r\n type: 'number',\r\n style: 'secondary',\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '999' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n value: $.session.defaultProgressNoteReviewDays,\r\n });\r\n\r\n //Display for current menu\r\n defaultsPage.appendChild(currMenu);\r\n\r\n //if remember last location is enabled, disable the location dropdown\r\n if (rosterRLL) rosterLocationDropdown.classList.add('disabled');\r\n if (rosterRLL) rosterGroupDropdown.classList.add('disabled');\r\n if (dayServicesRLL) dayServicesLocationDropdown.classList.add('disabled');\r\n if (timeClockRLL) timeClockLocationDropdown.classList.add('disabled');\r\n if (workshopRLL) WorkshopLocationDropdown.classList.add('disabled');\r\n if (moneyManagementRLL) moneyManagementLocationDropdown.classList.add('disabled');\r\n\r\n //checkbox div and wraper for right justification\r\n rosterChecboxDiv = document.createElement('div');\r\n dayServicesChecboxDiv = document.createElement('div');\r\n timeClockChecboxDiv = document.createElement('div');\r\n workshopChecboxDiv = document.createElement('div');\r\n moneyManagementChecboxDiv = document.createElement('div');\r\n rosterChecboxDiv.classList.add('checkboxWrap');\r\n dayServicesChecboxDiv.classList.add('checkboxWrap');\r\n timeClockChecboxDiv.classList.add('checkboxWrap');\r\n workshopChecboxDiv.classList.add('checkboxWrap');\r\n moneyManagementChecboxDiv.classList.add('checkboxWrap');\r\n\r\n rosterChecboxDiv.appendChild(rosterRLLCheckBox);\r\n dayServicesChecboxDiv.appendChild(dayServicesRLLCheckBox);\r\n timeClockChecboxDiv.appendChild(timeClockRLLCheckBox);\r\n workshopChecboxDiv.appendChild(WorkshopRLLCheckBox);\r\n moneyManagementChecboxDiv.appendChild(moneyManagementRLLCheckBox);\r\n\r\n //roster settigns\r\n rosterSection.appendChild(rosterSectionHeader);\r\n rosterSection.appendChild(rosterLocationDropdown);\r\n rosterSection.appendChild(rosterChecboxDiv);\r\n rosterSection.appendChild(rosterGroupDropdown);\r\n rosterSection.appendChild(progressNotesDaysBackInput);\r\n\r\n // day service settings\r\n dayServiceSection.appendChild(dayServiceSectionHeader);\r\n dayServiceSection.appendChild(dayServicesLocationDropdown);\r\n dayServiceSection.appendChild(dayServicesChecboxDiv);\r\n\r\n //time clock settings\r\n timeClockSection.appendChild(timeClockSectionHeader);\r\n timeClockSection.appendChild(timeClockLocationDropdown);\r\n timeClockSection.appendChild(timeClockChecboxDiv);\r\n\r\n //workshop settings\r\n if ($.session.applicationName === 'Advisor') {\r\n WorkshopSection.appendChild(WorkshopSectionHeader);\r\n WorkshopSection.appendChild(WorkshopLocationDropdown);\r\n WorkshopSection.appendChild(workshopChecboxDiv);\r\n }\r\n\r\n //Incitent Tracking Settings\r\n if ($.session.applicationName === 'Advisor') {\r\n incidentTrackingSection.appendChild(incidentTrackingSectionHeader);\r\n incidentTrackingSection.appendChild(itDaysBackInput);\r\n }\r\n\r\n //moneyManagement settings\r\n if ($.session.applicationName === 'Advisor') {\r\n moneyManagementSection.appendChild(moneyManagementSectionHeader);\r\n moneyManagementSection.appendChild(moneyManagementLocationDropdown);\r\n moneyManagementSection.appendChild(moneyManagementChecboxDiv);\r\n }\r\n\r\n //case notes settings\r\n caseNotesSection.appendChild(caseNotesSectionHeader);\r\n caseNotesSection.appendChild(caseNotesDaysBackInput);\r\n\r\n defaultsPage.appendChild(backButton);\r\n defaultsPage.appendChild(rosterSection);\r\n defaultsPage.appendChild(dayServiceSection);\r\n defaultsPage.appendChild(caseNotesSection);\r\n if ($.session.dsCertified) defaultsPage.appendChild(timeClockSection);\r\n if ($.session.applicationName === 'Advisor')\r\n defaultsPage.appendChild(WorkshopSection);\r\n if ($.session.applicationName === 'Advisor')\r\n defaultsPage.appendChild(incidentTrackingSection);\r\n if ($.session.applicationName === 'Advisor')\r\n defaultsPage.appendChild(moneyManagementSection);\r\n\r\n rosterLocationDropdown.classList.add('defaultLocationDD');\r\n dayServicesLocationDropdown.classList.add('defaultLocationDD');\r\n timeClockLocationDropdown.classList.add('defaultLocationDD');\r\n WorkshopLocationDropdown.classList.add('defaultLocationDD');\r\n moneyManagementLocationDropdown.classList.add('defaultLocationDD');\r\n\r\n //RESET roster group to all if they have roster remember last location enabled. this is incase they change location but their selected default group is not in that location\r\n if (rosterRLL && $.session.defaultRosterGroupValue !== 'ALL')\r\n setLocation('rosterGroup', 'ALL');\r\n\r\n //populate\r\n //\r\n dropdown.populate(\r\n rosterLocationDropdown,\r\n rosterLocDropdownData,\r\n $.session.defaultRosterLocation === 'null' ? '' : $.session.defaultRosterLocation,\r\n );\r\n\r\n dropdown.populate(\r\n rosterGroupDropdown,\r\n rosterGroupDropdownData,\r\n $.session.defaultRosterGroupValue,\r\n );\r\n\r\n dropdown.populate(\r\n dayServicesLocationDropdown,\r\n dayServiceDropdownData,\r\n $.session.defaultDayServiceLocation,\r\n );\r\n\r\n dropdown.populate(\r\n WorkshopLocationDropdown,\r\n workshopDropdownData,\r\n $.session.defaultWorkshopLocationValue,\r\n );\r\n\r\n dropdown.populate(\r\n moneyManagementLocationDropdown,\r\n moneyManagementDropdownData,\r\n $.session.defaultMoneyManagementLocationValue,\r\n );\r\n if ($.session.dsCertified)\r\n dropdown.populate(\r\n timeClockLocationDropdown,\r\n timeClockDropdownData,\r\n $.session.defaultDSTimeClockValue,\r\n );\r\n addEventListeners();\r\n }\r\n\r\n function checkInitialRememberLastLocation() {\r\n rosterRLL = rememberLastLocation('roster');\r\n dayServicesRLL = rememberLastLocation('dayServices');\r\n timeClockRLL = rememberLastLocation('timeClock');\r\n workshopRLL = rememberLastLocation('workshop');\r\n moneyManagementRLL = rememberLastLocation('moneyManagement');\r\n }\r\n\r\n function addEventListeners() {\r\n //=====\r\n //ROSTER\r\n progressNotesDaysBackInput.addEventListener('change', () => {\r\n let newVal = parseInt(event.target.value);\r\n if (newVal <= 999 && newVal >= 1) {\r\n defaultsAjax.updateConsumerNotesDaysBack(newVal);\r\n }\r\n });\r\n rosterLocationDropdown.addEventListener('change', () => {\r\n setLocation('roster', event.target.options[event.target.selectedIndex].value);\r\n repopulateRosterGroupDropdown(\r\n event.target.options[event.target.selectedIndex].value,\r\n );\r\n //Reset roster group to all\r\n setLocation('rosterGroup', 'ALL', 'Everyone');\r\n });\r\n rosterRLLCheckBox.addEventListener('change', () => {\r\n rosterRLL = !rosterRLL;\r\n setRememberLastLocation('roster');\r\n\r\n if (rosterRLL) {\r\n groupDropdownOptions = document.getElementById('defaultRosterGroup');\r\n rosterLocationDropdown.classList.add('disabled');\r\n rosterGroupDropdown.classList.add('disabled');\r\n groupDropdownOptions.selectedIndex = 'ALL';\r\n setLocation('rosterGroup', 'ALL', 'Everyone');\r\n } else {\r\n rosterLocationDropdown.classList.remove('disabled');\r\n rosterGroupDropdown.classList.remove('disabled');\r\n }\r\n });\r\n rosterGroupDropdown.addEventListener('change', () => {\r\n setLocation(\r\n 'rosterGroup',\r\n event.target.options[event.target.selectedIndex].value,\r\n event.target.options[event.target.selectedIndex].innerHTML,\r\n );\r\n });\r\n //=====\r\n //WORKSHOP\r\n WorkshopLocationDropdown.addEventListener('change', () => {\r\n setLocation('workshop', event.target.options[event.target.selectedIndex].value);\r\n });\r\n WorkshopRLLCheckBox.addEventListener('change', () => {\r\n workshopRLL = !workshopRLL;\r\n setRememberLastLocation('workshop');\r\n if (workshopRLL) WorkshopLocationDropdown.classList.add('disabled');\r\n else WorkshopLocationDropdown.classList.remove('disabled');\r\n });\r\n //=====\r\n //MONEY MANAGEMENT\r\n moneyManagementLocationDropdown.addEventListener('change', () => {\r\n if (!moneyManagementLocationDropdown.classList.contains('disabled')) {\r\n setLocation('moneyManagement', event.target.options[event.target.selectedIndex].value);\r\n }\r\n else { \r\n document.getElementById('defaultMoneyManagementLocation').value = $.session.defaultMoneyManagementLocationValue;\r\n }\r\n }); \r\n moneyManagementRLLCheckBox.addEventListener('change', () => {\r\n moneyManagementRLL = !moneyManagementRLL;\r\n setRememberLastLocation('moneyManagement');\r\n if (moneyManagementRLL) moneyManagementLocationDropdown.classList.add('disabled');\r\n else moneyManagementLocationDropdown.classList.remove('disabled');\r\n });\r\n //=====\r\n // DAY SERVICES\r\n dayServicesLocationDropdown.addEventListener('change', () => {\r\n setLocation('dayServices', event.target.options[event.target.selectedIndex].value);\r\n });\r\n\r\n dayServicesRLLCheckBox.addEventListener('change', () => {\r\n dayServicesRLL = !dayServicesRLL;\r\n setRememberLastLocation('dayServices');\r\n if (dayServicesRLL) dayServicesLocationDropdown.classList.add('disabled');\r\n else dayServicesLocationDropdown.classList.remove('disabled');\r\n });\r\n //=====\r\n //INCIDENT TRACKING\r\n itDaysBackInput.addEventListener('change', () => {\r\n let newVal = parseInt(event.target.value);\r\n if (newVal <= 365 && newVal >= 1) {\r\n $.session.defaultIncidentTrackingDaysBack = newVal;\r\n defaultsAjax.updateIncidentTrackingDaysBack(newVal);\r\n }\r\n });\r\n //=====\r\n //CASE NOTES\r\n caseNotesDaysBackInput.addEventListener('change', () => {\r\n let newVal = parseInt(event.target.value);\r\n if (newVal <= 99 && newVal >= 1) {\r\n $.session.defaultCaseNoteReviewDays = newVal;\r\n defaultsAjax.updateCaseNotesDaysBack(newVal);\r\n }\r\n });\r\n\r\n //=====\r\n //DS TIME CLOCK (NEED TO BE DAY SERVICE CERTIFIED TO USE)\r\n if ($.session.dsCertified) {\r\n timeClockLocationDropdown.addEventListener('change', () => {\r\n setLocation('timeClock', event.target.options[event.target.selectedIndex].value);\r\n });\r\n timeClockRLLCheckBox.addEventListener('change', () => {\r\n timeClockRLL = !timeClockRLL;\r\n setRememberLastLocation('timeClock');\r\n if (timeClockRLL) timeClockLocationDropdown.classList.add('disabled');\r\n else timeClockLocationDropdown.classList.remove('disabled');\r\n });\r\n }\r\n }\r\n // Checks DB for any default locations that have been inactivated\r\n // Resets those locations back to null, and displays a message with locations that were reset\r\n async function getInvalidDefaultLocations() {\r\n const invalidDefaults = await defaultsAjax.getInvalidDefaults();\r\n\r\n if (invalidDefaults.length === 0) return;\r\n\r\n // BUILD POPUP\r\n const invalidDefaultNotificationPopup = POPUP.build({\r\n id: 'invalidDefaultPopup',\r\n });\r\n\r\n const continueBtn = button.build({\r\n id: 'invalidDefaultContinueBtn',\r\n text: 'Continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(invalidDefaultNotificationPopup);\r\n },\r\n });\r\n\r\n continueBtn.style.width = '100%';\r\n\r\n // MAIN MESSAGE\r\n const message = document.createElement('div');\r\n message.classList.add('invalidDefaultMessage');\r\n message.innerHTML = `

    \r\n Some of your default locations are no longer available to view in Anywhere.

    \r\n Go to ${icons.ellipsis} > Set Defaults to select a new default location.


    \r\n

    `;\r\n\r\n const listHeader = document.createElement('p');\r\n listHeader.innerText = 'Locations that were reset:';\r\n listHeader.classList.add('invalidDefaultListHeader');\r\n\r\n // LIST OF INVALID LOCATIONS\r\n const list = document.createElement('ul');\r\n list.classList.add('invalidDefaultList');\r\n\r\n invalidDefaults.forEach(def => {\r\n const listItem = document.createElement('li');\r\n listItem.innerHTML = `Location Name: ${def.locationName}
    As Your: ${def.moduleDefault}`;\r\n list.appendChild(listItem);\r\n });\r\n\r\n // APPEND AND SHOW POPUP\r\n invalidDefaultNotificationPopup.appendChild(message);\r\n invalidDefaultNotificationPopup.appendChild(listHeader);\r\n invalidDefaultNotificationPopup.appendChild(list);\r\n invalidDefaultNotificationPopup.appendChild(continueBtn);\r\n\r\n POPUP.show(invalidDefaultNotificationPopup);\r\n\r\n //RESET VALUES\r\n invalidDefaults.forEach(def => {\r\n switch (def.moduleDefault) {\r\n case 'Default Roster Location':\r\n setLocation('roster', '');\r\n setLocation('rosterGroup', '');\r\n break;\r\n case 'Default Day Services Location':\r\n setLocation('dayServices', '');\r\n break;\r\n case 'Default Time Clock Location':\r\n setLocation('timeClock', '');\r\n break;\r\n case 'Default Workshop Location':\r\n setLocation('workshop', '');\r\n break;\r\n case 'Default MoneyManagement Location':\r\n setLocation('moneyManagement', '');\r\n break;\r\n default:\r\n console.warn(`couldn't reset a default location`);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n function init() {\r\n checkInitialRememberLastLocation();\r\n dropdownData();\r\n }\r\n\r\n return {\r\n init,\r\n buildPage,\r\n getLocation,\r\n getGroup,\r\n getInvalidDefaultLocations,\r\n setLocation,\r\n setGroup,\r\n rememberLastLocation,\r\n };\r\n})();\r\n","var defaultsAjax = (function () {\r\n function setDefaultValue(type, value, name) { \r\n var typeName = \"\";\r\n var switchCase = 0;\r\n switch (type) {\r\n case 1:\r\n typeName = \"Default Staff Location\";\r\n break;\r\n case 2:\r\n typeName = \"Default Roster Location\";\r\n createCookie(\"defaultRosterGroupName\", \"Everyone\", 7);\r\n createCookie(\"defaultRosterGroupValue\", \"ALL\", 7);\r\n saveDefaultLocationNameAjax(\"6\", \"Everyone\");\r\n saveDefaultLocationValueAjax(\"6\", \"ALL\");\r\n $(\"#rostergroup6\").text(\"Everyone\");\r\n if (value != 0 && name != null) {\r\n getConsumerGroups(value, name);\r\n $.session.defaultRosterLocation = value;\r\n createCookie(\"defaultRosterLocationName\", name, 7);\r\n saveDefaultLocationNameAjax(\"2\", name);\r\n } else {\r\n createCookie(\r\n \"defaultRosterLocationName\",\r\n \"Remember Last Location\",\r\n 7\r\n );\r\n saveDefaultLocationNameAjax(\"2\", \"Remember Last Location\");\r\n }\r\n break;\r\n case 3:\r\n typeName = \"Default Day Service Location\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultDayServiceLocationName\", name, 7);\r\n createCookie(\"defaultDayServiceLocationNameValue\", value, 7);\r\n createCookie(\"defaultDayServiceLocationFlag\", false, 7);\r\n saveDefaultLocationNameAjax(\"3\", name);\r\n saveDefaultLocationValueAjax(\"3\", value);\r\n $.session.defaultDayServiceLocationFlag = \"false\";\r\n $.session.dsLocationHistoryFlag = false;\r\n } else {\r\n var test = $(this).text();\r\n saveDefaultLocationNameAjax(\"3\", \"Remember Last Location\");\r\n if (name == null) {\r\n createCookie(\"defaultDayServiceLocationFlag\", true, 7);\r\n $.session.defaultDayServiceLocationFlag = \"true\";\r\n }\r\n }\r\n break;\r\n case 4:\r\n typeName = \"Default Time Clock Location\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultTimeClockLocationName\", name, 7);\r\n createCookie(\"defaultTimeClockLocationValue\", value, 7);\r\n saveDefaultLocationNameAjax(\"4\", name);\r\n saveDefaultLocationValueAjax(\"4\", value);\r\n } else {\r\n }\r\n //New way to save to the database\r\n switchCase = \"4\";\r\n saveDefaultLocationValueAjax(switchCase, value);\r\n break;\r\n case 5:\r\n typeName = \"Default Workshop Location\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultWorkshopLocationName\", name, 7);\r\n createCookie(\"defaultWorkshopLocationValue\", value, 7);\r\n saveDefaultLocationNameAjax(\"5\", name);\r\n saveDefaultLocationValueAjax(\"5\", value);\r\n } else {\r\n createCookie(\r\n \"defaultWorkshopLocationName\",\r\n \"Remember Last Location\",\r\n 7\r\n );\r\n saveDefaultLocationNameAjax(\"5\", \"Remember Last Location\");\r\n }\r\n break;\r\n case 6:\r\n typeName = \"Default Roster Group\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultRosterGroupName\", name, 7);\r\n createCookie(\"defaultRosterGroupValue\", value, 7);\r\n saveDefaultLocationNameAjax(\"6\", name);\r\n saveDefaultLocationValueAjax(\"6\", value);\r\n } else {\r\n createCookie(\"defaultRosterGroupName\", \"Everyone\", 7);\r\n saveDefaultLocationNameAjax(\"6\", \"Everyone\");\r\n }\r\n break;\r\n case 7:\r\n typeName = \"Default MoneyManagement Location\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultMoneyManagementLocationName\", name, 7);\r\n createCookie(\"defaultMoneyManagementLocationValue\", value, 7);\r\n saveDefaultLocationNameAjax(\"7\", name);\r\n saveDefaultLocationValueAjax(\"7\", value);\r\n } else {\r\n createCookie(\r\n \"defaultMoneyManagementLocationName\",\r\n \"Remember Last Location\",\r\n 7\r\n );\r\n saveDefaultLocationNameAjax(\"7\", \"Remember Last Location\");\r\n }\r\n break;\r\n }\r\n\r\n setDefaultLoc(type, value);\r\n }\r\n\r\n async function getInvalidDefaults() {\r\n // string token\r\n const retrieveData = {\r\n token: $.session.Token\r\n }\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInvalidDefaults/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getInvalidDefaultsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function saveDefaultLocationValue(switchCase, locationId) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/saveDefaultLocationValue/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"switchCase\":\"' +\r\n switchCase +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n }\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n }\r\n\r\n function saveDefaultLocationName(switchCase, locationName) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/saveDefaultLocationName/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"switchCase\":\"' + switchCase + '\", \"locationName\":\"' + locationName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n }\r\n\r\n function updateConsumerNotesDaysBack(updatedReviewDays) {\r\n $.session.defaultProgressNoteReviewDays = updatedReviewDays;\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/updateConsumerNotesDaysBack/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"updatedReviewDays\":\"' +\r\n updatedReviewDays +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function updateConsumerNotesChecklistDaysBack() {\r\n updatedChecklistDays = $(\"#progressnoteschecklistdaysback\").val();\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/updateConsumerNotesChecklistDaysBack/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"updatedChecklistDays\":\"' +\r\n updatedChecklistDays +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n //Days back\r\n function updateIncidentTrackingDaysBack(updatedReviewDays) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateIncidentTrackingDaysBack/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"updatedReviewDays\":\"' + updatedReviewDays + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.updateIncidentTrackingDaysBackResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Case Note Review Days\r\n function updateCaseNotesDaysBack(updatedDaysBack) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateCaseNotesReviewDays/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"updatedReviewDays\":\"' + updatedDaysBack + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.updateCaseNotesReviewDaysResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n // Roster ---\r\n // -----------\r\n\r\n function getRosterLocations(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getLocationsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getConsumerGroups(locationId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol + \"://\" +\r\n $.webServer.address + \":\" +\r\n $.webServer.port + \"/\" +\r\n $.webServer.serviceName + \"/getConsumerGroupsJSON/\",\r\n data: '{\"locationId\":\"' + locationId + '\", \"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerGroupsJSONResult;\r\n callback(res);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n setDefaultValue,\r\n updateConsumerNotesDaysBack,\r\n updateConsumerNotesChecklistDaysBack,\r\n saveDefaultLocationValue,\r\n saveDefaultLocationName,\r\n updateIncidentTrackingDaysBack,\r\n updateCaseNotesDaysBack,\r\n getConsumerGroups,\r\n getRosterLocations,\r\n getInvalidDefaults\r\n };\r\n})();\r\n","var help = (function() {\r\n\r\n function buildPage() {\r\n var helpPage = document.querySelector(\".util-menu__help\");\r\n helpPage.innerHTML = \"\";\r\n\r\n var backButton = button.build({\r\n text: \"Back\",\r\n icon: \"arrowBack\",\r\n type: \"text\",\r\n attributes: [{ key: \"data-action\", value: \"back\" }]\r\n });\r\n var linkButton = button.build({\r\n text: \"DOCUMENTATION LIBRARY\",\r\n icon: \"openNew\",\r\n type: \"text\",\r\n attributes: [{ key: \"data-action\", value: \"trainingVideos\" }]\r\n });\r\n\r\n helpPage.appendChild(backButton);\r\n helpPage.appendChild(linkButton);\r\n }\r\n return {\r\n buildPage\r\n };\r\n})();\r\n","const information = (function () {\r\n let demographicInfo;\r\n let updateData;\r\n let mobileCarriersData;\r\n let emailError = false;\r\n // DOM\r\n let infoPage;\r\n let address1Input;\r\n let address2Input;\r\n let cityInput;\r\n let stateInput;\r\n let zipInput;\r\n let phoneInput;\r\n let carrierDropdown;\r\n let emailInput;\r\n\r\n async function getStaffDemographicInformation() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/GetDemographicInformation/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.GetDemographicInformationResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateStaffDemographicInformation() {\r\n const mergeUpdateWithDemo = { ...demographicInfo, ...updateData };\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/UpdateDemographicInformation/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n ...mergeUpdateWithDemo,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.UpdateDemographicInformationResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getMobileCarrierDropdown() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getMobileCarrierDropdown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getMobileCarrierDropdownResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function updateInformationData() {\r\n const newDemoInfo = await getStaffDemographicInformation();\r\n\r\n if (updateData.email && updateData.email !== newDemoInfo.email && !emailError) {\r\n emailError = true;\r\n // show error by email\r\n const emailSectionBody = document.querySelector('.emailSection .informationSection__body');\r\n const errorEle = document.createElement('p');\r\n errorEle.innerText = 'Unable to update email due to eMAR';\r\n emailSectionBody.appendChild(errorEle);\r\n input.disableInputField(emailInput);\r\n }\r\n\r\n const updatedKeys = Object.keys(updateData);\r\n if (updatedKeys.length === 1 && updatedKeys[0] === 'email' && emailError) {\r\n // do nothing\r\n } else {\r\n const saveEle = successfulSave.get('Information Updated.', true);\r\n infoPage.appendChild(saveEle);\r\n setTimeout(() => {\r\n infoPage.removeChild(saveEle);\r\n }, 1000);\r\n }\r\n\r\n demographicInfo = newDemoInfo;\r\n updateData = {};\r\n\r\n address1Input.querySelector('input').value = demographicInfo.addressOne;\r\n address2Input.querySelector('input').value = demographicInfo.addressTwo;\r\n cityInput.querySelector('input').value = demographicInfo.city;\r\n stateInput.querySelector('input').value = demographicInfo.state;\r\n zipInput.querySelector('input').value = demographicInfo.zipCode;\r\n phoneInput.querySelector('input').value = formatPhoneNumber(demographicInfo.mobilePhone);\r\n emailInput.querySelector('input').value = demographicInfo.email;\r\n }\r\n\r\n async function getValidateEmailInformation() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/GetValidateEmailInformation/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n email: updateData.email,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.GetValidateEmailInformationResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function emailValidation() {\r\n const result = await getValidateEmailInformation();\r\n if (result.isEmailExist == 0 || result.isEmailExist == '0') {\r\n await updateStaffDemographicInformation();\r\n await updateInformationData();\r\n }\r\n else {\r\n emailDuplicationPopUp();\r\n }\r\n }\r\n\r\n\r\n function emailDuplicationPopUp() {\r\n const emailDuplicationPOPUP = POPUP.build({\r\n hideX: true,\r\n });\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(emailDuplicationPOPUP);\r\n },\r\n });\r\n okBtn.style.width = '100%';\r\n const heading = document.createElement('h3');\r\n heading.style.marginTop = '-20px';\r\n heading.style.marginBottom = '20px';\r\n heading.innerText = 'Duplicate email address'; \r\n\r\n\r\n const message = document.createElement('p');\r\n message.innerText = 'This email address is already in use, please enter a unique address to save.';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n emailDuplicationPOPUP.appendChild(heading);\r\n emailDuplicationPOPUP.appendChild(message);\r\n emailDuplicationPOPUP.appendChild(okBtn);\r\n okBtn.focus();\r\n POPUP.show(emailDuplicationPOPUP);\r\n }\r\n\r\n function formatPhoneNumber(number) {\r\n if (!number) return '';\r\n\r\n const splitNumber = number\r\n .replace(/[^\\w\\s]/gi, '')\r\n .replaceAll(' ', '')\r\n .replaceAll('x', '');\r\n\r\n const phoneNumber = UTIL.formatPhoneNumber(splitNumber.substr(0, 10));\r\n const phoneExt = splitNumber.substr(10);\r\n\r\n const phone = phoneExt ? `${phoneNumber} (${phoneExt})` : `${phoneNumber}`;\r\n\r\n return phone;\r\n }\r\n function formatZipCode(zipCode) {\r\n const zip = zipCode.replace(/[^\\w\\s]/gi, '').replaceAll(' ', '');\r\n if (zip.length <= 5) {\r\n return zip;\r\n } else {\r\n return zip.slice(0, 5) + '-' + zip.slice(5);\r\n }\r\n }\r\n function setCaretPosition(elem, caretPos) {\r\n if (elem != null) {\r\n if (elem.createTextRange) {\r\n var range = elem.createTextRange();\r\n range.move('character', caretPos);\r\n range.select();\r\n } else {\r\n if (elem.selectionStart) {\r\n elem.focus();\r\n elem.setSelectionRange(caretPos, caretPos);\r\n } else elem.focus();\r\n }\r\n }\r\n }\r\n function stringAdd(string, start, newSubStr) {\r\n return string.slice(0, start) + newSubStr + string.slice(start);\r\n }\r\n\r\n function populateCarrierDropdown(dropdownEle) {\r\n const data = mobileCarriersData.map(carrier => {\r\n return {\r\n value: carrier.carrierId,\r\n text: carrier.carrierName,\r\n };\r\n });\r\n data.sort((a, b) => (a.text < b.text ? -1 : 1));\r\n data.unshift({\r\n value: '',\r\n text: '',\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, demographicInfo.carrier);\r\n }\r\n\r\n function buildAddressSection() {\r\n const addressSection = document.createElement('div');\r\n addressSection.classList.add('addressSection', 'informationSection');\r\n\r\n const heading = document.createElement('p');\r\n heading.innerText = 'Address';\r\n\r\n const body = document.createElement('div');\r\n body.classList.add('informationSection__body');\r\n\r\n address1Input = input.build({\r\n label: 'Address 1',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['address1'],\r\n attributes: [{ key: 'maxlength', value: '50' }],\r\n value: demographicInfo.addressOne,\r\n callback: e => {\r\n updateData.addressOne = e.target.value;\r\n },\r\n });\r\n address2Input = input.build({\r\n label: 'Address 2',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['address2'],\r\n attributes: [{ key: 'maxlength', value: '50' }],\r\n value: demographicInfo.addressTwo,\r\n callback: e => {\r\n updateData.addressTwo = e.target.value;\r\n },\r\n });\r\n cityInput = input.build({\r\n label: 'City',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['city'],\r\n attributes: [{ key: 'maxlength', value: '27' }],\r\n value: demographicInfo.city,\r\n callback: e => {\r\n updateData.city = e.target.value;\r\n },\r\n });\r\n stateInput = input.build({\r\n label: 'State',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['state'],\r\n attributes: [{ key: 'maxlength', value: '2' }],\r\n value: demographicInfo.state,\r\n callback: e => {\r\n updateData.state = e.target.value;\r\n },\r\n });\r\n zipInput = input.build({\r\n label: 'Zip Code',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['zip'],\r\n attributes: [{ key: 'maxlength', value: '9' }],\r\n value: formatZipCode(demographicInfo.zipCode),\r\n callback: e => {\r\n updateData.zipCode = e.target.value;\r\n },\r\n });\r\n\r\n if (!$.session.UpdateMyInformation) {\r\n input.disableInputField(address1Input);\r\n input.disableInputField(address2Input);\r\n input.disableInputField(cityInput);\r\n input.disableInputField(stateInput);\r\n input.disableInputField(zipInput);\r\n }\r\n\r\n const stateZipWrap = document.createElement('div');\r\n stateZipWrap.classList.add('stateZipWrap');\r\n stateZipWrap.appendChild(stateInput);\r\n stateZipWrap.appendChild(zipInput);\r\n\r\n body.appendChild(address1Input);\r\n body.appendChild(address2Input);\r\n body.appendChild(cityInput);\r\n body.appendChild(stateZipWrap);\r\n\r\n addressSection.appendChild(heading);\r\n addressSection.appendChild(body);\r\n\r\n return addressSection;\r\n }\r\n function buildNumbersSection() {\r\n let validPhone = false;\r\n\r\n const numberSection = document.createElement('div');\r\n numberSection.classList.add('numberSection', 'informationSection');\r\n\r\n const heading = document.createElement('p');\r\n heading.innerText = 'Phone Numbers';\r\n\r\n const body = document.createElement('div');\r\n body.classList.add('informationSection__body');\r\n\r\n phoneInput = input.build({\r\n label: 'Mobile',\r\n type: 'tel',\r\n style: 'secondary',\r\n classNames: ['phone'],\r\n value: formatPhoneNumber(demographicInfo.mobilePhone),\r\n callback: e => {\r\n if (e.target.value === '' || !validPhone) {\r\n updateData.mobilePhone = '';\r\n return;\r\n }\r\n\r\n let splitNumber = e.target.value.split(' ');\r\n\r\n let phoneNumber = splitNumber[0].replace(/[^\\w\\s]/gi, '');\r\n let phoneExt = splitNumber[1] ? splitNumber[1].replace('(', '').replace(')', '') : '';\r\n\r\n saveValue = phoneExt ? `${phoneNumber}${phoneExt}` : `${phoneNumber}`;\r\n\r\n updateData.mobilePhone = saveValue;\r\n },\r\n });\r\n phoneInput.addEventListener('keyup', e => {\r\n if (e.code === 'Backspace') return;\r\n\r\n let value = e.target.value\r\n .replace(/[^\\w\\s]/gi, '')\r\n .replaceAll(' ', '')\r\n .slice(0, 14);\r\n\r\n let phoneNumber;\r\n\r\n if (value.length === 0) {\r\n validPhone = true;\r\n return;\r\n }\r\n if (value.length >= 4 && value.length <= 6) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n e.target.value = phoneNumber;\r\n }\r\n if (value.length >= 7 && value.length < 10) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n phoneNumber = stringAdd(phoneNumber, 7, '-');\r\n e.target.value = phoneNumber;\r\n }\r\n if (value.length >= 10) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n phoneNumber = stringAdd(phoneNumber, 7, '-');\r\n phoneNumber = stringAdd(phoneNumber, 12, ' (');\r\n phoneNumber = stringAdd(phoneNumber, phoneNumber.length + 1, ')');\r\n e.target.value = phoneNumber;\r\n\r\n setCaretPosition(e.target, phoneNumber.length - 1);\r\n\r\n validPhone = true;\r\n }\r\n if (!validPhone) {\r\n phoneInput.classList.add('error');\r\n } else {\r\n phoneInput.classList.remove('error');\r\n }\r\n });\r\n\r\n carrierDropdown = dropdown.build({\r\n dropdownId: 'carrierDropdown',\r\n label: 'Carrier',\r\n style: 'secondary',\r\n callback: e => {\r\n const selectedOption = e.target.options[e.target.selectedIndex];\r\n updateData.carrier = selectedOption.value;\r\n },\r\n });\r\n\r\n if (!$.session.UpdateMyInformation) {\r\n input.disableInputField(phoneInput);\r\n input.disableInputField(carrierDropdown);\r\n }\r\n\r\n populateCarrierDropdown(carrierDropdown);\r\n\r\n body.appendChild(phoneInput);\r\n body.appendChild(carrierDropdown);\r\n\r\n numberSection.appendChild(heading);\r\n numberSection.appendChild(body);\r\n\r\n return numberSection;\r\n }\r\n function buildEmailSection() {\r\n const emailSection = document.createElement('div');\r\n emailSection.classList.add('emailSection', 'informationSection');\r\n\r\n const heading = document.createElement('p');\r\n heading.innerText = 'Email Address';\r\n\r\n const body = document.createElement('div');\r\n body.classList.add('informationSection__body');\r\n\r\n emailInput = input.build({\r\n label: 'Email',\r\n type: 'email',\r\n style: 'secondary',\r\n value: demographicInfo.email,\r\n callback: e => {\r\n updateData.email = e.target.value;\r\n },\r\n });\r\n if (!$.session.UpdateMyInformation) {\r\n input.disableInputField(emailInput);\r\n }\r\n\r\n body.appendChild(emailInput);\r\n\r\n emailSection.appendChild(heading);\r\n emailSection.appendChild(body);\r\n\r\n return emailSection;\r\n }\r\n\r\n function buildPage() {\r\n infoPage = document.querySelector('.util-menu__info');\r\n infoPage.innerHTML = '';\r\n\r\n const currMenu = document.createElement('p');\r\n currMenu.innerText = 'My Information';\r\n currMenu.classList.add('menuTopDisplay');\r\n\r\n const backButton = button.build({\r\n text: 'Back',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n attributes: [{ key: 'data-action', value: 'back' }],\r\n });\r\n\r\n const updateButton = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'updateInformationBtn',\r\n //callback: async () => {\r\n // await updateStaffDemographicInformation();\r\n // await updateInformationData();\r\n //},\r\n callback: async () => { await emailValidation(); },\r\n\r\n });\r\n\r\n const phoneNumberSection = buildNumbersSection();\r\n const emailSection = buildEmailSection();\r\n\r\n infoPage.appendChild(currMenu);\r\n infoPage.appendChild(backButton);\r\n if ($.session.UpdateMyInformation) {\r\n infoPage.appendChild(updateButton);\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n const addressSection = buildAddressSection();\r\n infoPage.appendChild(addressSection);\r\n }\r\n\r\n infoPage.appendChild(phoneNumberSection);\r\n infoPage.appendChild(emailSection);\r\n }\r\n\r\n async function init() {\r\n demographicInfo = await getStaffDemographicInformation();\r\n mobileCarriersData = await getMobileCarrierDropdown();\r\n updateData = {};\r\n if (!demographicInfo) {\r\n demographicInfo = {\r\n addressOne: '',\r\n addressTwo: '',\r\n city: '',\r\n state: '',\r\n zipCode: '',\r\n mobilePhone: '',\r\n carrier: '',\r\n email: '',\r\n };\r\n }\r\n buildPage();\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var timeEntry = (function () {\r\n var adminPayPeriods = [];\r\n var payPeriods = [];\r\n var currentAdminPayPeriod;\r\n var currentPayPeriod;\r\n var currentAdminDate;\r\n var currentDate;\r\n var locations;\r\n var residenceLocations;\r\n var workCodes;\r\n var evvReasonCodes;\r\n var crossmidnightisadminedit;\r\n var crossmidnightpayperiod;\r\n let saveAndSubmit;\r\n // required fields\r\n var requiredFields = {\r\n isDestinationRequired: '',\r\n isNoteRequired: '',\r\n isOdometerRequired: '',\r\n isLicensePlateRequired: '',\r\n isReasonRequired: '',\r\n supervisorApproval: '',\r\n reconfigImportFile: '',\r\n useFiveCharWorkCode: '',\r\n };\r\n\r\n // overlapping locations variables\r\n let overlapLocationsPopup;\r\n let overlapLocationsDropdown;\r\n let overlapLocationsDoneBtn;\r\n //let locationId = '';\r\n let duplicateconsumerIds;\r\n let consumerswithUniqueLocations;\r\n let consumerswithMultipleLocations;\r\n let overlapconsumerlocationdata;\r\n let selectedOverlapLocIds = {};\r\n\r\n // Save, Update, Delete\r\n //------------------------------------\r\n function getEntryData(keyStartStop, saveAndSubmitBool) {\r\n saveAndSubmit = saveAndSubmitBool;\r\n if (keyStartStop === 'Y') {\r\n var overlapData = timeEntryCard.getOverlapData();\r\n singleEntryAjax.singleEntryOverlapCheck(overlapData, function (results) {\r\n if (results.length > 0) {\r\n showOverlapPopup();\r\n } else {\r\n $.session.singleEntrycrossMidnight\r\n ? showMultipleEntriesPopup()\r\n : getEntryData('', saveAndSubmit);\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n let saveData = timeEntryCard.getSaveUpdateData();\r\n\r\n if ($.session.singleEntrycrossMidnight === false || !saveData.endTime) {\r\n saveEntryData(saveData);\r\n } else {\r\n // entry crosses midnight, meaning two entries need tp be saved to DB\r\n\r\n // first day entry in the database\r\n let saveData1 = timeEntryCard.getSaveUpdateData();\r\n saveData1.checkHours = saveData1.crossMidnightCheckHours[0].day1TotalHours;\r\n saveData1.endTime = '00:00';\r\n\r\n if (!saveData1.defaultStartTimeChanged) {\r\n saveData1.evvReason = '';\r\n checkDeviceType() === 'Mobile'\r\n ? (saveData1.deviceType = 'Mobile')\r\n : (saveData1.deviceType = 'Other');\r\n }\r\n\r\n //saveEntryData(saveData1);\r\n\r\n // second day entry in the database\r\n let saveData2 = timeEntryCard.getSaveUpdateData();\r\n saveData2.checkHours = saveData2.crossMidnightCheckHours[1].day2TotalHours;\r\n saveData2.startTime = '00:00';\r\n\r\n // transportation only saved with the first day entry\r\n saveData2.destination = '';\r\n saveData2.licensePlateNumber = '';\r\n saveData2.odometerEnd = '';\r\n saveData2.odometerStart = '';\r\n saveData2.reason = '';\r\n saveData2.transportationReimbursable = '';\r\n saveData2.transportationUnits = 0;\r\n\r\n // * Date Constructor Doc: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date\r\n // * Note on constructing date on date string is highly discouraged due to browser differences and inconsistencies.\r\n // * This was the issue for the crossing over midnight issue in older versions of safari.\r\n const year = parseInt(saveData2.dateOfService.split('-')[0]);\r\n const month = parseInt(saveData2.dateOfService.split('-')[1]);\r\n const day = parseInt(saveData2.dateOfService.split('-')[2]);\r\n var nextDay = new Date(year, month - 1, day);\r\n nextDay.setDate(nextDay.getDate() + 1);\r\n\r\n var dd = ('0' + nextDay.getDate()).slice(-2);\r\n var mm = ('0' + (nextDay.getMonth() + 1)).slice(-2);\r\n var yyyy = nextDay.getFullYear();\r\n\r\n saveData2.dateOfService = yyyy + '-' + mm + '-' + dd;\r\n\r\n if (!saveData2.defaultEndTimeChanged) {\r\n saveData2.evvReason = '';\r\n checkDeviceType() === 'Mobile'\r\n ? (saveData2.deviceType = 'Mobile')\r\n : (saveData2.deviceType = 'Other');\r\n }\r\n\r\n saveEntryData(saveData1, saveData2);\r\n }\r\n }\r\n function saveEntryData(saveData, saveData2) {\r\n if (saveData.locationId !== '' || saveData.consumerId === '') {\r\n if (saveAndSubmit) {\r\n var warningMessage = `By clicking Yes, you are confirming that you have reviewed this entry and it is correct to the best of your knowledge.`;\r\n\r\n showWarningPopup(warningMessage, () => {\r\n singleEntryAjax.insertSingleEntryNew(saveData, function (results) {\r\n const entryId = results[1].replace(' {\r\n // 1. Grab the consumer/location data\r\n singleEntryAjax.getSelectedConsumerLocations(saveData, function (results) {\r\n overlapconsumerlocationdata = results;\r\n // no location overlaps for any selected consumer\r\n if (overlapconsumerlocationdata.length === 0) {\r\n singleEntryAjax.preInsertSingleEntry(saveData, function (results) {\r\n const idArray = results.map(r => r.singleEntryId);\r\n const updateObj = {\r\n token: $.session.Token,\r\n singleEntryIdString: idArray.join(','),\r\n newStatus: 'S',\r\n };\r\n\r\n singleEntryAjax.updateSingleEntryStatus(updateObj, function () {\r\n if (!saveData2) {\r\n successfulSave.show('SAVED & SUBMITTED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n newTimeEntry.init();\r\n }, 1000);\r\n } else {\r\n singleEntryAjax.preInsertSingleEntry(saveData2, function (results2) {\r\n const idArray = results2.map(r => r.singleEntryId);\r\n const updateObj2 = {\r\n token: $.session.Token,\r\n singleEntryIdString: idArray.join(','),\r\n newStatus: 'S',\r\n };\r\n\r\n singleEntryAjax.updateSingleEntryStatus(updateObj2, function () {\r\n successfulSave.show('SAVED & SUBMITTED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n newTimeEntry.init();\r\n }, 1000);\r\n });\r\n });\r\n }\r\n });\r\n });\r\n } else {\r\n // location overlaps exist for a selected consumer\r\n displayOverlapLocationsPopup(results);\r\n }\r\n });\r\n });\r\n } else {\r\n // Just the save BTN -- if (saveData.locationId !== '' || saveData.consumerId === '')\r\n\r\n // 1. Grab the consumer/location data\r\n singleEntryAjax.getSelectedConsumerLocations(saveData, function (results) {\r\n overlapconsumerlocationdata = results;\r\n\r\n // no location overlaps for any selected consumer\r\n if (overlapconsumerlocationdata.length === 0) {\r\n singleEntryAjax.preInsertSingleEntry(saveData, function (results) {\r\n if (!saveData2) {\r\n successfulSave.show('SAVED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n newTimeEntry.init();\r\n }, 1000);\r\n } else {\r\n singleEntryAjax.preInsertSingleEntry(saveData2, function (results) {\r\n successfulSave.show('SAVED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n newTimeEntry.init();\r\n }, 1000);\r\n });\r\n }\r\n });\r\n } else {\r\n // location overlaps exist for a selected consumer\r\n displayOverlapLocationsPopup(results);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n function updateSingleEntry(isAdminEdit, payPeriod, updateData) {\r\n singleEntryAjax.updateSingleEntry(updateData, function (results) {\r\n if (!saveAndSubmit) {\r\n // Orig Update\r\n if (!$.session.singleEntrycrossMidnight) {\r\n successfulSave.show('UPDATED');\r\n }\r\n setTimeout(function () {\r\n if (!$.session.singleEntrycrossMidnight) {\r\n successfulSave.hide();\r\n }\r\n roster2.clearActiveConsumers();\r\n timeEntryCard.clearAllGlobalVariables();\r\n\r\n if (isAdminEdit) {\r\n timeApproval.refreshPage(payPeriod);\r\n } else {\r\n timeEntryReview.refreshPage(payPeriod);\r\n }\r\n }, 1000);\r\n } else {\r\n // Update w/Submit\r\n var updateObj = {\r\n token: $.session.Token,\r\n singleEntryIdString: updateData.singleEntryId,\r\n newStatus: 'S',\r\n };\r\n var warningMessage = `By clicking Yes, you are confirming that you have reviewed this entry and it is correct to the best of your knowledge.`;\r\n\r\n showWarningPopup(warningMessage, () => {\r\n singleEntryAjax.updateSingleEntryStatus(updateObj, () => {\r\n if (!$.session.singleEntrycrossMidnight) {\r\n successfulSave.show('UPDATED & SUBMITTED');\r\n }\r\n setTimeout(function () {\r\n if (!$.session.singleEntrycrossMidnight) {\r\n successfulSave.hide();\r\n }\r\n roster2.clearActiveConsumers();\r\n timeEntryCard.clearAllGlobalVariables();\r\n\r\n if (isAdminEdit) {\r\n timeApproval.refreshPage(payPeriod);\r\n } else {\r\n timeEntryReview.refreshPage(payPeriod);\r\n }\r\n }, 1000);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n function saveAndUpdateEntryForMidnightCross(saveData, updateData, isAdminEdit, payPeriod) {\r\n singleEntryAjax.updateSingleEntry(updateData, updateResults => {\r\n // Update w/Submit\r\n const updateObj1 = {\r\n token: $.session.Token,\r\n singleEntryIdString: updateData.singleEntryId,\r\n newStatus: 'S',\r\n };\r\n singleEntryAjax.insertSingleEntryNew(saveData, saveResults => {\r\n const updateObj2 = {\r\n token: $.session.Token,\r\n singleEntryIdString: saveResults[1].replace(' {\r\n singleEntryAjax.updateSingleEntryStatus(updateObj1, () => {\r\n singleEntryAjax.updateSingleEntryStatus(updateObj2, () => {\r\n successfulSave.show('UPDATED & SUBMITTED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n\r\n if (isAdminEdit) {\r\n timeApproval.refreshPage(payPeriod);\r\n } else {\r\n timeEntryReview.refreshPage(payPeriod);\r\n }\r\n }, 1000);\r\n });\r\n });\r\n });\r\n } else {\r\n successfulSave.show('UPDATED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n\r\n if (isAdminEdit) {\r\n timeApproval.refreshPage(payPeriod);\r\n } else {\r\n timeEntryReview.refreshPage(payPeriod);\r\n }\r\n }, 1000);\r\n }\r\n });\r\n });\r\n }\r\n function updateEntry(isAdminEdit, payPeriod, keyStartStop, saveAndSubmitBool) {\r\n saveAndSubmit = saveAndSubmitBool;\r\n\r\n if (keyStartStop === 'Y') {\r\n if ($.session.singleEntrycrossMidnight) {\r\n crossmidnightisadminedit = isAdminEdit;\r\n crossmidnightpayperiod = payPeriod;\r\n showMultipleEntriesPopup('update');\r\n return;\r\n }\r\n }\r\n\r\n var saveData = timeEntryCard.getSaveUpdateData('Save');\r\n var updateData = timeEntryCard.getSaveUpdateData('Update');\r\n // update an entry that crosses midnight, results in update of original entry and a save of the new entry\r\n if ($.session.singleEntrycrossMidnight) {\r\n // may need overlapcheck on crossmidnight Update because saved record (2nd entry) may overlap with previous edits\r\n // if (keyStartStop === 'Y') {\r\n // \tvar overlapData = timeEntryCard.getOverlapData();\r\n // \tsingleEntryAjax.singleEntryOverlapCheck(overlapData, function(results) {\r\n // \t\tif (results.length > 0) {\r\n // \t\t\tshowOverlapPopup('update');\r\n // \t\t}\r\n // \t});\r\n // \treturn;\r\n // }\r\n\r\n // second day entry in the database -- SAVE\r\n saveData.checkHours = saveData.crossMidnightCheckHours[1].day2TotalHours;\r\n saveData.startTime = '00:00';\r\n\r\n // transportation only saved with the first day entry\r\n saveData.destination = '';\r\n saveData.licensePlateNumber = '';\r\n saveData.odometerEnd = '';\r\n saveData.odometerStart = '';\r\n saveData.reason = '';\r\n saveData.transportationReimbursable = '';\r\n saveData.transportationUnits = 0;\r\n\r\n if (!saveData.defaultEndTimeChanged) {\r\n saveData.evvReason = '';\r\n checkDeviceType() === 'Mobile'\r\n ? (saveData.deviceType = 'Mobile')\r\n : (saveData.deviceType = 'Other');\r\n }\r\n // * Date Constructor Doc: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date\r\n // * Note on constructing date on date string is highly discouraged due to browser differences and inconsistencies.\r\n // * This was the issue for the crossing over midnight issue in older versions of safari.\r\n const year = parseInt(saveData.dateOfService.split('-')[0]);\r\n const month = parseInt(saveData.dateOfService.split('-')[1]);\r\n const day = parseInt(saveData.dateOfService.split('-')[2]);\r\n var nextDay = new Date(year, month - 1, day);\r\n nextDay.setDate(nextDay.getDate() + 1);\r\n\r\n var dd = ('0' + nextDay.getDate()).slice(-2);\r\n var mm = ('0' + (nextDay.getMonth() + 1)).slice(-2);\r\n var yyyy = nextDay.getFullYear();\r\n\r\n saveData.dateOfService = yyyy + '-' + mm + '-' + dd;\r\n\r\n // first day entry in the database -- UPDATE\r\n updateData.checkHours = saveData.crossMidnightCheckHours[0].day1TotalHours;\r\n updateData.endTime = '00:00';\r\n\r\n saveAndUpdateEntryForMidnightCross(\r\n saveData,\r\n updateData,\r\n crossmidnightisadminedit,\r\n crossmidnightpayperiod,\r\n );\r\n } else {\r\n updateSingleEntry(isAdminEdit, payPeriod, updateData);\r\n }\r\n }\r\n function deleteEntry(entryId, isAdminEdit, payPeriod) {\r\n if (!entryId) return;\r\n\r\n singleEntryAjax.deleteSingleEntryRecord(entryId, function (results) {\r\n successfulSave.show('DELETED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (isAdminEdit) {\r\n timeApproval.refreshPage(payPeriod);\r\n } else {\r\n timeEntryReview.refreshPage(payPeriod); \r\n }\r\n }, 1000);\r\n });\r\n }\r\n\r\n function showOverlapPopup(updateorsave = 'save') {\r\n var popup = POPUP.build({});\r\n var message = document.createElement('p');\r\n message.style.marginBottom = '2em';\r\n message.innerHTML = `There is an overlap with an existing Time Entry record. Do you wish to proceed?`;\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n if ($.session.singleEntrycrossMidnight && updateorsave === 'save') {\r\n showMultipleEntriesPopup();\r\n }\r\n if (!$.session.singleEntrycrossMidnight && updateorsave === 'save') {\r\n getEntryData('', saveAndSubmit);\r\n }\r\n if ($.session.singleEntrycrossMidnight && updateorsave === 'update') {\r\n showMultipleEntriesPopup('update');\r\n }\r\n if (!$.session.singleEntrycrossMidnight && updateorsave === 'update') {\r\n updateEntry('', '', '', saveAndSubmit);\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n popup.appendChild(message);\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n POPUP.show(popup);\r\n }\r\n function showWarningPopup(messageText, callback) {\r\n var popup = POPUP.build({ classNames: ['warning'], hideX: true });\r\n var message = document.createElement('p');\r\n message.innerHTML = messageText;\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n callback();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n timeEntryCard.enableSaveButtons();\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n popup.appendChild(message);\r\n popup.appendChild(btnWrap);\r\n\r\n POPUP.show(popup);\r\n }\r\n function showMultipleEntriesPopup(updateorsave = 'save') {\r\n var popup2 = POPUP.build({});\r\n var message2 = document.createElement('p');\r\n message2.innerHTML = `You have entered an End Time that crosses over midnight. Two separate entries will be created when this record is saved. Do you wish to proceed?`;\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn2 = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup2);\r\n updateorsave === 'save'\r\n ? getEntryData('', saveAndSubmit)\r\n : updateEntry('', '', '', saveAndSubmit);\r\n },\r\n });\r\n var noBtn2 = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup2);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn2);\r\n btnWrap.appendChild(noBtn2);\r\n popup2.appendChild(message2);\r\n popup2.appendChild(btnWrap);\r\n //\tpopup2.appendChild(noBtn2);\r\n\r\n POPUP.show(popup2);\r\n }\r\n\r\n // Overlapping Locations\r\n function getConsumerswithOverlappingLocations(consumerlocatons) {\r\n // get list of consumerIds that are listed more than once (ie, consumers with overlappng locations)\r\n duplicateconsumerIds = consumerlocatons.reduce((a, e) => {\r\n a[e.consumerId] = ++a[e.consumerId] || 0;\r\n return a;\r\n }, {});\r\n\r\n // get list of consumer/locations that DO NOT have overlapping locations\r\n consumerswithUniqueLocations = consumerlocatons.filter(\r\n e => !duplicateconsumerIds[e.consumerId],\r\n );\r\n\r\n // get list of consumer/locations that DO have overlapping locations\r\n consumerswithMultipleLocations = consumerlocatons.filter(\r\n e => duplicateconsumerIds[e.consumerId],\r\n );\r\n }\r\n function checkOverlapPopupForErrors() {\r\n const erros = [...overlapLocationsPopup.querySelectorAll('.error')];\r\n\r\n if (erros.length > 0) {\r\n overlapLocationsDoneBtn.classList.add('disabled');\r\n } else {\r\n overlapLocationsDoneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function populateOverlapLocationsDropdown(locDrop, consumer) {\r\n let thisconsumersLocations = consumerswithMultipleLocations.filter(\r\n val => val.consumerId === consumer.consumerId,\r\n );\r\n\r\n let data = thisconsumersLocations.map(location => ({\r\n id: location.consumerId,\r\n value: location.locationId,\r\n text: location.locationName,\r\n }));\r\n data.unshift({ id: '', value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate(locDrop, data);\r\n }\r\n function buildOverlapLocationsDropdown(consumer, index) {\r\n const wrap = document.createElement('div');\r\n\r\n const overlappedLocationsEntriesMessage = document.createElement('p');\r\n overlappedLocationsEntriesMessage.innerHTML = `${consumer.consumerName}
    `;\r\n\r\n const overlapLocationsDropdown = dropdown.build({\r\n label: 'Locations',\r\n dropdownId: `overlapLocationsDropdown${index}`,\r\n });\r\n\r\n overlapLocationsDropdown.classList.add('error');\r\n\r\n overlapLocationsDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n const seletedOverlapLocId = selectedOption.value;\r\n selectedOverlapLocIds[consumer.consumerId] = seletedOverlapLocId;\r\n // selectedOverlapConsumerId\r\n if (!seletedOverlapLocId || seletedOverlapLocId === 'SELECT') {\r\n overlapLocationsDropdown.classList.add('error');\r\n } else {\r\n overlapLocationsDropdown.classList.remove('error');\r\n }\r\n checkOverlapPopupForErrors();\r\n });\r\n\r\n populateOverlapLocationsDropdown(overlapLocationsDropdown, consumer);\r\n\r\n wrap.appendChild(overlappedLocationsEntriesMessage);\r\n wrap.appendChild(overlapLocationsDropdown);\r\n\r\n return wrap;\r\n }\r\n function displayOverlapLocationsPopup(results) {\r\n getConsumerswithOverlappingLocations(results);\r\n\r\n // build overlapLocation Popup\r\n overlapLocationsPopup = POPUP.build({\r\n header: `Overlapping locations for selected consumer(s).`,\r\n hideX: false,\r\n id: 'overlapLocationsPopup',\r\n });\r\n\r\n let overlappedLocationsEntriesMessage = document.createElement('p');\r\n overlappedLocationsEntriesMessage.innerHTML = `Consumers listed below have multiple locations for the selected date. For each consumer, please select the location where these services are being provided.

    `;\r\n\r\n overlapLocationsPopup.appendChild(overlappedLocationsEntriesMessage);\r\n\r\n // reduce the list of consumer/locations with overlapping locations (ie, consumerswithMultipleLocations) to a single/unique record representing each consumer/location pair\r\n let overlapConsumerlist = consumerswithMultipleLocations\r\n .map(item => ({ consumerId: item.consumerId, consumerName: item.consumerName }))\r\n .filter((value, index, self) => self.indexOf(value) === index);\r\n\r\n // consumerNames in OverlapConsumerlist LastName, FirstName\r\n for (const consumer of overlapConsumerlist) {\r\n let firstName = consumer.consumerName.split(' ').slice(0, -1).join(' ');\r\n let lastName = consumer.consumerName.split(' ').slice(-1).join(' ');\r\n consumer.consumerName = lastName + ', ' + firstName;\r\n }\r\n // a single/unique record representing each consumer/location pair\r\n overlapConsumerlist = overlapConsumerlist.filter(\r\n (value, index, self) =>\r\n index ===\r\n self.findIndex(\r\n t => t.consumerId === value.consumerId && t.consumerName === value.consumerName,\r\n ),\r\n );\r\n //alphabatize\r\n // overlapConsumerlist = overlapConsumerlist.sort();\r\n overlapConsumerlist.sort(function (a, b) {\r\n var textA = a.consumerName.toUpperCase();\r\n var textB = b.consumerName.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n // cycle through each consumer/location pair to build a dropdown for each unique pair\r\n overlapConsumerlist.forEach((consumer, index) => {\r\n const markup = buildOverlapLocationsDropdown(consumer, index);\r\n overlapLocationsPopup.appendChild(markup);\r\n });\r\n\r\n overlapLocationsDoneBtn = button.build({\r\n id: 'overlapLocationsDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n callback: async () => {\r\n if (saveAndSubmit) {\r\n // SAve and Submit BTN clicked\r\n\r\n POPUP.hide(overlapLocationsPopup);\r\n var listofSingleEntryIdsSaved = await saveSingleEntrywithLocationOverlaps();\r\n var test = listofSingleEntryIdsSaved;\r\n var updateObj = {\r\n token: $.session.Token,\r\n singleEntryIdString: listofSingleEntryIdsSaved.join(','),\r\n newStatus: 'S',\r\n };\r\n\r\n singleEntryAjax.updateSingleEntryStatus(updateObj, function () {\r\n successfulSave.show('SAVED & SUBMITTED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n newTimeEntry.init(true);\r\n }, 1000);\r\n }); // end -- singleEntryAjax.updateSingleEntryStatus\r\n\r\n selectedOverlapLocIds = {};\r\n } else {\r\n // Save BTN clicked\r\n\r\n var listofSingleEntryIdsSaved = await saveSingleEntrywithLocationOverlaps();\r\n var test = listofSingleEntryIdsSaved;\r\n\r\n POPUP.hide(overlapLocationsPopup);\r\n successfulSave.show('SAVED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n newTimeEntry.init();\r\n }, 1000);\r\n\r\n selectedOverlapLocIds = {};\r\n }\r\n },\r\n });\r\n this.doneButton = overlapLocationsDoneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: 'overlapLocationsCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: () => {\r\n selectedOverlapLocIds = {};\r\n\r\n POPUP.hide(overlapLocationsPopup);\r\n\r\n if (saveAndSubmit) {\r\n timeEntryCard.enableSaveButtons();\r\n } else {\r\n timeEntryCard.enableSaveButton();\r\n }\r\n },\r\n });\r\n\r\n selectedOverlapConsumerId = consumerswithMultipleLocations[0].consumerId;\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(overlapLocationsDoneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n overlapLocationsPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(overlapLocationsPopup);\r\n }\r\n async function saveSingleEntrywithLocationOverlaps() {\r\n let savedLocationsSingleEntryPairs = [];\r\n let overlapSavedLocationsSingleEntryPairs = [];\r\n\r\n // ****************// FIRST SAVE SECTION -- SAVING Consumers with NON-Overlapping Locations -- SAVED IN GROUPS OF CONSUMERS WHO SHARE A LOCATIONID\r\n var duplocationIds = consumerswithUniqueLocations.reduce((a, e) => {\r\n a[e.locationId] = ++a[e.locationId] || 0;\r\n return a;\r\n }, {});\r\n\r\n // filtering the consumers with non-overlapping locationsIds (consumerswithUniqueLocations)\r\n // cycle through each duplicate location Id record to get list of LocationIds that have more than one record (ie, duplicates)\r\n var listofDuplicateLocationIds = [];\r\n for (prop in duplocationIds) {\r\n if (duplocationIds[prop] !== 0) {\r\n listofDuplicateLocationIds.push(prop);\r\n }\r\n }\r\n\r\n if (listofDuplicateLocationIds.length > 0) {\r\n for (const duplocatId of listofDuplicateLocationIds) {\r\n // create a subset of records for each duplicate location Id\r\n var nonoverlapconsumerswithsamelocation;\r\n nonoverlapconsumerswithsamelocation = consumerswithUniqueLocations.filter(e => {\r\n return e.locationId === duplocatId;\r\n });\r\n\r\n if (nonoverlapconsumerswithsamelocation.length > 0) {\r\n var strConsumerIds = '';\r\n var locationid;\r\n // putting together list of consumerIds with a shared locationID\r\n nonoverlapconsumerswithsamelocation.forEach(function (item) {\r\n strConsumerIds = strConsumerIds + item.consumerId + ',';\r\n locationid = item.locationId;\r\n });\r\n\r\n strConsumerIds = strConsumerIds.slice(0, -1);\r\n\r\n saveData = timeEntryCard.getSaveUpdateData();\r\n saveData.locationId = locationid;\r\n saveData.consumerId = strConsumerIds;\r\n\r\n // NON-Overlapping Location SAVE -- saving the SingleEntry that has multiple consumers who share a single location\r\n // SAVED -- one record in the AA_Single_Entry Table and multiple records in the AA_Consumers_Present table\r\n let singleentryid;\r\n await singleEntryAjax.insertSingleEntryNew(saveData, function (results) {\r\n singleentryid = results[1].slice(0, -2);\r\n });\r\n savedLocationsSingleEntryPairs.push({\r\n locationId: saveData.locationId,\r\n singleEntryId: singleentryid,\r\n });\r\n } // end if -- if (nonoverlapconsumerswithsamelocation.length > 0)\r\n } // end for -- for (const duplocatId of listofDuplicateLocationIds)\r\n } // end if -- if (listofDuplicateLocationIds.length > 0)\r\n\r\n // ****************// SECOND SAVE SECTION -- SAVING Consumers with NON-Overlapping Locations -- SAVED CONSUMERS WHO HAVE UNIQUE LOCATIONID\r\n // filtering Entries that are non-overlapping (consumerswithUniqueLocations) and have a unique location per unique consumer\r\n var nonoverlapconsumerswithUniqueLocations;\r\n nonoverlapconsumerswithUniqueLocations = consumerswithUniqueLocations.filter(\r\n e => !duplocationIds[e.locationId],\r\n );\r\n\r\n // NON-Overlapping Location SAVE -- saving the SingleEntry that has a single location with an associated single consumer\r\n // SAVED -- one record in the SingleEntr Table and assocciated Single record in the AA_Consumers_Present table\r\n if (nonoverlapconsumerswithUniqueLocations.length > 0) {\r\n for (const item of nonoverlapconsumerswithUniqueLocations) {\r\n saveData = timeEntryCard.getSaveUpdateData();\r\n saveData.locationId = item.locationId;\r\n saveData.consumerId = item.consumerId;\r\n let singleentryid;\r\n await singleEntryAjax.insertSingleEntryNew(saveData, function (results) {\r\n singleentryid = results[1].slice(0, -2);\r\n });\r\n savedLocationsSingleEntryPairs.push({\r\n locationId: saveData.locationId,\r\n singleEntryId: singleentryid,\r\n });\r\n }\r\n }\r\n // ****************// THIRD SAVE SECTION -- SAVING Consumers with Overlapping Locations **************************************************************\r\n // if any non-overlapping locations were saved, then we need to determine how to save the overlapping locations\r\n if (\r\n savedLocationsSingleEntryPairs.length > 0 ||\r\n overlapSavedLocationsSingleEntryPairs.length > 0 ||\r\n Object.values(selectedOverlapLocIds).length !== 0\r\n ) {\r\n // loop through all the selected locations for the overlapping locations\r\n for (prop in selectedOverlapLocIds) {\r\n let foundlocation = false;\r\n let seletedOverlapLocationId = selectedOverlapLocIds[prop];\r\n let selectedOverlapConsumerId = prop;\r\n\r\n if (overlapSavedLocationsSingleEntryPairs.length > 0) {\r\n // loop through all the SAVED 'Overlapping location\" Single Entries (all the overlapping location saves)\r\n for (const item of overlapSavedLocationsSingleEntryPairs) {\r\n // if the current location has already been saved, then just save the Consumer in the AA_Consumers_Present table\r\n if (item.locationId === seletedOverlapLocationId) {\r\n foundlocation = true;\r\n let saveData = timeEntryCard.getSaveUpdateData();\r\n consumerData = {\r\n token: $.session.Token,\r\n singleEntryId: item.singleEntryId,\r\n consumerId: selectedOverlapConsumerId,\r\n deviceType: saveData.deviceType,\r\n evvReason: saveData.evvReason,\r\n };\r\n // Single Entry Record already exists for this location so just save to the AA_Consumers_Present table\r\n await singleEntryAjax.insertConsumerforSavedSingleEntry(\r\n consumerData,\r\n function (res) {},\r\n );\r\n } // end if (item.locationId === seletedOverlapLocationId)\r\n } // end for -- all the saved Single Entries (all the non-overlapping location saves)\r\n } else {\r\n // overlapSavedLocationsSingleEntryPairs.length = 0\r\n\r\n // loop through all the SAVED Single Entries (all the NON-overlapping location saves)\r\n for (const item of savedLocationsSingleEntryPairs) {\r\n // if the current location has already been saved, then just save the Consumer in the AA_Consumers_Present table\r\n if (item.locationId === seletedOverlapLocationId) {\r\n foundlocation = true;\r\n let saveData = timeEntryCard.getSaveUpdateData();\r\n consumerData = {\r\n token: $.session.Token,\r\n singleEntryId: item.singleEntryId,\r\n consumerId: selectedOverlapConsumerId,\r\n deviceType: saveData.deviceType,\r\n evvReason: saveData.evvReason,\r\n };\r\n // Single Entry Record already exists for this location so just save to the AA_Consumers_Present table\r\n await singleEntryAjax.insertConsumerforSavedSingleEntry(\r\n consumerData,\r\n function (res) {},\r\n );\r\n } // end -- if (item.locationId === seletedOverlapLocationId)\r\n } // end for -- all the saved Single Entries (all the non-overlapping location saves)\r\n } // end if/else -- overlapSavedLocationsSingleEntryPairs.length > 0\r\n\r\n // if the location has NOT already been Saved, just save the overlapping location\r\n if (!foundlocation) await saveOverlapLocationasSingleEntry(prop);\r\n } // end for -- the selected locations for the overlapping locations\r\n } else {\r\n // there were NO locations saved in any of the sections above, so just save the overlapping location\r\n\r\n await saveOverlapLocationasSingleEntry(prop);\r\n }\r\n // ****************// ALL SAVES ARE NOW COMPLETE //**************************************************************\r\n\r\n // NESTED/Child FUNCTION inside ==> function saveSingleEntrywithLocationOverlaps() -- handles each new Single Entry Insert from the Parent function\r\n async function saveOverlapLocationasSingleEntry(prop) {\r\n saveData = timeEntryCard.getSaveUpdateData();\r\n\r\n let singleentryid;\r\n const seletedOverlapLocationId = selectedOverlapLocIds[prop];\r\n const selectedOverlapConsumerId = prop;\r\n saveData.locationId = seletedOverlapLocationId;\r\n saveData.consumerId = selectedOverlapConsumerId;\r\n\r\n await singleEntryAjax.insertSingleEntryNew(saveData, function (results) {\r\n singleentryid = results[1].slice(0, -2);\r\n overlapSavedLocationsSingleEntryPairs.push({\r\n locationId: saveData.locationId,\r\n singleEntryId: singleentryid,\r\n });\r\n });\r\n } // end of nested function -- async function saveOverlapLocationasSingleEntry()\r\n\r\n // put together full list of new Single Entry SAVES\r\n var concatsavedLocationsSingleEntryPairs = savedLocationsSingleEntryPairs.concat(\r\n overlapSavedLocationsSingleEntryPairs,\r\n );\r\n\r\n //After all Single Entries have been saved, go get the Consumers Present and update the AA_Single_Entry Table\r\n // let saveData = timeEntryCard.getSaveUpdateData();\r\n for (const item of concatsavedLocationsSingleEntryPairs) {\r\n await singleEntryAjax.getSingleEntryConsumersPresentAsync(item.singleEntryId, function (res) {\r\n saveData.singleEntryId = item.singleEntryId;\r\n saveData.locationId = item.locationId;\r\n saveData.numberOfConsumersPresent = res.length;\r\n });\r\n await singleEntryAjax.updateSingleEntry(saveData, function (results) {});\r\n }\r\n // return list of newly created singleEntryIds (from all the AA_Single_Entry saves/inserts from ALL the SAVES above)\r\n const singleEntryIdArray = concatsavedLocationsSingleEntryPairs.map(r => r.singleEntryId);\r\n\r\n return singleEntryIdArray;\r\n } // end of Parent/containing function -- function populateOverlapLocationsDropdown(locDrop, consumer)\r\n\r\n // Util/CRUD\r\n //------------------------------------\r\n function checkDeviceType() {\r\n if ($.session.OS === 'iPhone/iPod' || $.session.OS === 'Linux') {\r\n return 'Mobile';\r\n } else return 'Other';\r\n }\r\n function setRequiredFields(results) {\r\n var res = results[0];\r\n\r\n requiredFields.isDestinationRequired = res.destinationrequired;\r\n requiredFields.isNoteRequired = res.noterequired;\r\n requiredFields.isOdometerRequired = res.odometerrequired;\r\n requiredFields.isLicensePlateRequired = res.licenseplaterequired;\r\n requiredFields.isReasonRequired = res.reasonrequired;\r\n requiredFields.supervisorApproval = res.supervisorapproval;\r\n requiredFields.reconfigImportFile = res.reconfigimportfile;\r\n requiredFields.useFiveCharWorkCode = res.use5characterworkcode;\r\n }\r\n function setSelectedPayPeriod(dirtyStart, dirtyEnd, dateString) {\r\n // start and end format must be YYYY-MM-DD\r\n var tmpStart = dirtyStart;\r\n var tmpEnd = dirtyEnd;\r\n\r\n return {\r\n start: tmpStart,\r\n end: tmpEnd,\r\n dateString,\r\n };\r\n }\r\n function sortPayPeriods(results) {\r\n var adminDatesSet = false;\r\n var datesSet = false;\r\n var adminDefaultDates;\r\n var defaultDates;\r\n var now = new Date();\r\n now.setHours(0, 0, 0, 0);\r\n\r\n results.forEach((r, i) => {\r\n var anywhereClosed = r.anywhereclosed;\r\n var sendEvvData = r.sendevvdata;\r\n var startDate = r.startdate.split(' ')[0]; // MM/DD/YYYY\r\n var endDate = r.enddate.split(' ')[0]; // MM/DD/YYYY\r\n var startDateIso = UTIL.formatDateToIso(startDate); // YYYY-MM-DD\r\n var endDateIso = UTIL.formatDateToIso(endDate); // YYYY-MM-DD\r\n\r\n var dateString = `${startDate} - ${endDate}`; // for dropdown text only\r\n var newObj = {\r\n start: startDateIso,\r\n end: endDateIso,\r\n dateString,\r\n sendEvvData: sendEvvData,\r\n };\r\n\r\n var startDateObj = new Date(startDate);\r\n var endDateObj = new Date(endDate);\r\n\r\n if (i === 0) {\r\n adminDefaultDates = setSelectedPayPeriod(startDateIso, endDateIso, dateString);\r\n }\r\n if (anywhereClosed === 'False' && !defaultDates) {\r\n defaultDates = setSelectedPayPeriod(startDateIso, endDateIso, dateString);\r\n }\r\n\r\n // getting the current date & pay period\r\n if (now >= startDateObj && now <= endDateObj) {\r\n currentAdminDate = UTIL.formatDateToIso(\r\n `${now.getMonth() + 1}/${now.getDate()}/${now.getFullYear()}`,\r\n );\r\n currentAdminPayPeriod = setSelectedPayPeriod(startDateIso, endDateIso, dateString);\r\n adminDatesSet = true;\r\n\r\n if (anywhereClosed === 'False') {\r\n currentDate = UTIL.formatDateToIso(\r\n `${now.getMonth() + 1}/${now.getDate()}/${now.getFullYear()}`,\r\n );\r\n currentPayPeriod = setSelectedPayPeriod(startDateIso, endDateIso, dateString);\r\n datesSet = true;\r\n }\r\n }\r\n // sorting pay periods\r\n adminPayPeriods.push(newObj);\r\n if (anywhereClosed === 'False') {\r\n payPeriods.push(newObj);\r\n }\r\n });\r\n\r\n if (!adminDatesSet) {\r\n currentAdminDate = adminDefaultDates.start;\r\n currentAdminPayPeriod = adminDefaultDates;\r\n }\r\n if (!datesSet && defaultDates) {\r\n currentDate = defaultDates.start;\r\n currentPayPeriod = defaultDates;\r\n }\r\n }\r\n function getPayPeriods(admin) {\r\n if (admin) {\r\n return [...adminPayPeriods];\r\n } else {\r\n return [...payPeriods];\r\n }\r\n }\r\n function getCurrentPayPeriod(admin) {\r\n if (admin) {\r\n return UTIL.iterationCopy(currentAdminPayPeriod);\r\n } else {\r\n return UTIL.iterationCopy(currentPayPeriod);\r\n }\r\n }\r\n function getCurrentDate(admin) {\r\n if (admin) {\r\n return currentAdminDate;\r\n } else {\r\n return currentDate;\r\n }\r\n }\r\n function getLocations() {\r\n return [...locations];\r\n }\r\n function getEvvReasonCodes() {\r\n return [...evvReasonCodes];\r\n }\r\n function getResidenceLocations() {\r\n if (!residenceLocations) return [];\r\n return [...residenceLocations];\r\n }\r\n async function getWorkCodes(useAllWorkCodes) {\r\n if (!useAllWorkCodes) {\r\n return [...workCodes];\r\n }\r\n\r\n const allWorkCodes = await singleEntryAjax.getWorkCodesAsync(useAllWorkCodes);\r\n\r\n return [...allWorkCodes];\r\n }\r\n function getRequiredFields() {\r\n return UTIL.iterationCopy(requiredFields);\r\n }\r\n function getInitialData(callback) {\r\n if (\r\n payPeriods.length === 0 ||\r\n adminPayPeriods.length === 0 ||\r\n !locations ||\r\n !workCodes ||\r\n !evvReasonCodes\r\n ) {\r\n let promises = [];\r\n\r\n const getSingleEntryPayPeriods = new Promise((resolve, reject) => {\r\n singleEntryAjax.getSingleEntryPayPeriods(results => {\r\n sortPayPeriods(results);\r\n resolve('getSingleEntryPayPeriods DONE');\r\n });\r\n });\r\n promises.push(getSingleEntryPayPeriods);\r\n\r\n const getSingleEntryLocations = new Promise((resolve, reject) => {\r\n singleEntryAjax.getSingleEntryLocations(results => {\r\n locations = results;\r\n resolve('getSingleEntryLocations DONE');\r\n });\r\n });\r\n promises.push(getSingleEntryLocations);\r\n\r\n const getRequiredSingleEntryFields = new Promise((resolve, reject) => {\r\n singleEntryAjax.getRequiredSingleEntryFields(results => {\r\n setRequiredFields(results);\r\n resolve('getRequiredSingleEntryFields DONE');\r\n });\r\n });\r\n promises.push(getRequiredSingleEntryFields);\r\n\r\n const getWorkCodes = new Promise((resolve, reject) => {\r\n singleEntryAjax.getWorkCodes(results => {\r\n workCodes = results;\r\n resolve('getWorkCodes DONE');\r\n });\r\n });\r\n promises.push(getWorkCodes);\r\n\r\n const getLocationsAndResidences = new Promise((resolve, reject) => {\r\n singleEntryAjax.getLocationsAndResidences(results => {\r\n residenceLocations = results;\r\n resolve('getWorkCodes DONE');\r\n });\r\n });\r\n promises.push(getLocationsAndResidences);\r\n\r\n const getEvvReasonCodes = new Promise((resolve, reject) => {\r\n singleEntryAjax.getEvvReasonCodes(results => {\r\n evvReasonCodes = results;\r\n resolve('getEvvReasonCodes DONE');\r\n });\r\n });\r\n promises.push(getEvvReasonCodes);\r\n\r\n Promise.all(promises).then(() => {\r\n callback();\r\n });\r\n\r\n // singleEntryAjax.getSingleEntryPayPeriods(function getSingleEntryPayPeriods(results) {\r\n // \tsortPayPeriods(results);\r\n\r\n // \tsingleEntryAjax.getSingleEntryLocations(function getSingleEntryLocations(results) {\r\n // \t\tlocations = results;\r\n\r\n // \t\tsingleEntryAjax.getRequiredSingleEntryFields(function getRequiredSingleEntryFields(results) {\r\n // \t\t\tsetRequiredFields(results);\r\n\r\n // \t\t\tsingleEntryAjax.getWorkCodes(function getWorkCodes(results) {\r\n // workCodes = results;\r\n\r\n // singleEntryAjax.getLocationsAndResidences(function getLocationsAndResidence(results) {\r\n // residenceLocations = results;\r\n // callback();\r\n // });\r\n // \t\t\t});\r\n // \t\t});\r\n // \t});\r\n // });\r\n } else {\r\n callback();\r\n }\r\n }\r\n\r\n function checkLocationServicesEnabled() {\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n function (position) {\r\n // if location services are on, continue with normal functionality\r\n $.session.singleEntrycrossMidnight = false;\r\n newTimeEntry.init();\r\n },\r\n function (error) {\r\n // If location services are off, show popup\r\n const locationsWarningpopup = POPUP.build({\r\n id: 'warningPopup',\r\n hideX: false,\r\n classNames: 'warning',\r\n });\r\n\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(locationsWarningpopup);\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(okBtn);\r\n\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML =\r\n \"Location services must be enabled on this device to save a new time entry record. Please contact your company's IT team for assistance.\";\r\n locationsWarningpopup.appendChild(warningMessage);\r\n locationsWarningpopup.appendChild(btnWrap);\r\n POPUP.show(locationsWarningpopup);\r\n },\r\n );\r\n } else {\r\n // If location services are not supported, show popup\r\n const locationsWarningpopup = POPUP.build({\r\n id: 'warningPopup',\r\n hideX: false,\r\n classNames: 'warning',\r\n });\r\n\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(locationsWarningpopup);\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(okBtn);\r\n\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML =\r\n \"Location services must be enabled on this device to save a new time entry record. Please contact your company's IT team for assistance.\";\r\n locationsWarningpopup.appendChild(warningMessage);\r\n locationsWarningpopup.appendChild(btnWrap);\r\n POPUP.show(locationsWarningpopup);\r\n }\r\n }\r\n\r\n // Landing Page\r\n //------------------------------------\r\n async function loadNewTimeEntryPage() {\r\n if ($.session.singleEntryLocationRequired === 'Y') {\r\n // If location settings are required, check location settings\r\n checkLocationServicesEnabled();\r\n } else {\r\n // If location settings are not required, resume normal funcionality\r\n const result = await singleEntryAjax.getExistingTimeEntry();\r\n const { getExistingTimeEntryResult } = result;\r\n if (getExistingTimeEntryResult.length > 0 && $.session.anyRequireEndTime == 'Y') {\r\n newTimeEntry.endDateWarningPopup(getExistingTimeEntryResult); \r\n }\r\n else {\r\n $.session.singleEntrycrossMidnight = false;\r\n newTimeEntry.init();\r\n } \r\n }\r\n }\r\n function loadTimeEntryReviewPage() {\r\n $.session.singleEntrycrossMidnight = false;\r\n setActiveModuleSectionAttribute('timeEntry-review');\r\n timeEntryReview.init();\r\n }\r\n function loadTimeEntryApprovalPage() {\r\n setActiveModuleSectionAttribute('timeEntry-approval');\r\n timeApproval.init();\r\n }\r\n function loadSingleEntryLanding() {\r\n var timeEntryBtn = button.build({\r\n text: 'New Entry',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: loadNewTimeEntryPage,\r\n });\r\n var timeReviewBtn = button.build({\r\n text: 'Time Review',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: loadTimeEntryReviewPage,\r\n });\r\n var timeApprovalBtn = button.build({\r\n text: 'Time Approval',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: loadTimeEntryApprovalPage,\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n\r\n btnWrap.appendChild(timeEntryBtn);\r\n btnWrap.appendChild(timeReviewBtn);\r\n if ($.session.ViewAdminSingleEntry && $.session.SEViewAdminWidget) {\r\n btnWrap.appendChild(timeApprovalBtn);\r\n }\r\n\r\n DOM.clearActionCenter();\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n function init() {\r\n DOM.clearActionCenter();\r\n PROGRESS.SPINNER.show('Loading Time Entry...');\r\n getInitialData(loadSingleEntryLanding);\r\n }\r\n\r\n return {\r\n setSelectedPayPeriod,\r\n getPayPeriods,\r\n getCurrentPayPeriod,\r\n getCurrentDate,\r\n getLocations,\r\n getResidenceLocations,\r\n getWorkCodes,\r\n getRequiredFields,\r\n getInitialData,\r\n getEvvReasonCodes,\r\n getEntryData,\r\n updateEntry,\r\n deleteEntry,\r\n init,\r\n };\r\n})();\r\n","var singleEntryAjax = (function () {\r\n // deletes se record from review table\r\n function deleteSingleEntryRecord(singleEntryId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteSingleEntryRecord/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"singleEntryId\":\"' + singleEntryId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n\r\n // gets consumers allowed on card\r\n function getSingleEntryConsumersPresent(singleEntryId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryConsumersPresentJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"singleEntryId\":\"' + singleEntryId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryConsumersPresentJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n\r\n // gets consumers allowed on card\r\n async function getSingleEntryConsumersPresentAsync(singleEntryId, callback) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryConsumersPresentJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"singleEntryId\":\"' + singleEntryId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n var res = data.getSingleEntryConsumersPresentJSONResult;\r\n callback(res);\r\n\r\n // return data.getSingleEntryConsumersPresentJSONResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n function getSubEmployeeListAndCountInfo(supervisorId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSubEmployeeListAndCountInfoJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"supervisorId\":\"' + supervisorId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSubEmployeeListAndCountInfoJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getSingleEntryPayPeriods(callback) {\r\n //If has value true use in admin only. If has value false use in both dropdowns\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryPayPeriodsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n beforeSend: function () {},\r\n complete: function () {},\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryPayPeriodsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getRequiredSingleEntryFields(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getRequiredSingleEntryFieldsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getRequiredSingleEntryFieldsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getWorkCodes(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkCodesJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getWorkCodesJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n async function getWorkCodesAsync(getAllWorkCodes) {\r\n const retrieveData = {\r\n token: $.session.Token,\r\n getAllWorkCodes: !getAllWorkCodes ? 'N' : 'Y',\r\n };\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkCodesJSON/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n console.log(data.getWorkCodesJSONResult);\r\n\r\n return data.getWorkCodesJSONResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n function getSingleEntryLocations(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n beforeSend: function () {},\r\n complete: function () {},\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryLocationsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n // called when location dropdown is changed on se card\r\n function getSingleEntryUsersByLocation(locationId, seDate) {\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryUsersByLocationJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\", \"seDate\":\"' +\r\n seDate +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n // $.ajax({\r\n // \ttype: 'POST',\r\n // \turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getSingleEntryUsersByLocationJSON/',\r\n // \tdata: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\", \"seDate\":\"' + seDate + '\"}',\r\n // \tcontentType: 'application/json; charset=utf-8',\r\n // \tdataType: 'json',\r\n // \tsuccess: function(response, status, xhr) {\r\n // \t\tvar res = response.getSingleEntryUsersByLocationJSONResult;\r\n // \t\tcallback(res);\r\n // \t},\r\n // \terror: function(xhr, status, error) {\r\n // \t\tcallback(null);\r\n // \t},\r\n // });\r\n }\r\n // called before buliding review table\r\n function getSingleEntryByDate(dataObj, callback) {\r\n // dataObj = {userId, startDate, endDate, locationId, statusIn}\r\n // This gets data for time entry review page to populate the table\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryByDateJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"userId\":\"' +\r\n dataObj.userId +\r\n '\", \"startDate\":\"' +\r\n dataObj.startDate +\r\n '\", \"endDate\":\"' +\r\n dataObj.endDate +\r\n '\", \"locationId\":\"' +\r\n dataObj.locationId +\r\n '\",\"statusIn\":\"' +\r\n dataObj.statusIn +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryByDateJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n // gets se record by id, used when clicked on row in review table\r\n function getSingleEntryById(singleEntryId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryByIdJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"singleEntryId\":\"' + singleEntryId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryByIdJSONResult;\r\n signatureAjax.getConsumersSignaturesAndNotes(singleEntryId);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n // called when saving new entry, after overlap check has ran\r\n async function insertSingleEntryNew(data, callback) {\r\n await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertSingleEntry/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n res = res.split('@singleEntryRecordID>');\r\n var savedSingleEntryId = res[1].slice(0, -2);\r\n saveSignatureAndNote(savedSingleEntryId);\r\n callback(res);\r\n },\r\n });\r\n }\r\n\r\n async function insertConsumerforSavedSingleEntry(consumerData, callback) {\r\n await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertConsumerforSavedSingleEntry/',\r\n data: JSON.stringify(consumerData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n //clearSavedSignaturesAndNotes();\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n // only called for when there is no locationId and has consumers\r\n function preInsertSingleEntry(insertData, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/preInsertSingleEntry/',\r\n data: JSON.stringify(insertData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var results = response.preInsertSingleEntryResult;\r\n var savedSingleEntryId = results[0].singleEntryId;\r\n var consumersWithLocIdZero = '';\r\n var filteredResults = results.filter(res => {\r\n if (res.singleEntryId != null) return true;\r\n });\r\n saveSignatureAndNote(filteredResults);\r\n results.forEach(result => {\r\n if (result.locationId === '' || result.locationId === '0') {\r\n consumersWithLocIdZero = consumersWithLocIdZero + result.consumerId + ', ';\r\n }\r\n });\r\n if (consumersWithLocIdZero != '') {\r\n alert(\r\n \"Please contact Primary Solutions, the following consumerId's were saved with a location id of '0'; \" +\r\n consumersWithLocIdZero,\r\n );\r\n }\r\n\r\n callback(results);\r\n },\r\n });\r\n }\r\n\r\n // called for when there is no locationId and has consumers\r\n // if a selected consumer has overlapping locations, this function returns all selected consumers and their locations to be processed\r\n function getSelectedConsumerLocations(insertData, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSelectedConsumerLocations/',\r\n data: JSON.stringify(insertData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var results = response.getSelectedConsumerLocationsResult;\r\n callback(results);\r\n },\r\n });\r\n }\r\n\r\n // called when saving new entry\r\n function singleEntryOverlapCheck(overlapData, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/singleEntryOverlapCheckJSON/',\r\n data: JSON.stringify(overlapData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.singleEntryOverlapCheckJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n // updates se record from review table\r\n function updateSingleEntryStatus(statusData, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateSingleEntryStatus/',\r\n data: JSON.stringify(statusData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n if (callback) callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n // called when updating entry\r\n function updateSingleEntry(updateData, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateSingleEntry/',\r\n data: JSON.stringify(updateData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n saveSignatureAndNote(updateData.singleEntryId);\r\n\r\n if (response.updateSingleEntryResult.match('Error ')) {\r\n callback('Your time record cannot be saved. Please contact Primary Solutions.');\r\n return;\r\n }\r\n\r\n callback('Time record has been saved.');\r\n },\r\n error: function (xhr, status, error) {\r\n callback('Your time record cannot be saved. Please contact Primary Solutions.');\r\n },\r\n });\r\n }\r\n\r\n // SE ADMIN AJAX CALLS\r\n //-------------------------------------\r\n function adminUpdateSingleEntryStatus(adminStatusData, callback) {\r\n //(string token, string singleEntryIdString, string newStatus, string userID)\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/adminUpdateSingleEntryStatus/',\r\n data: JSON.stringify(adminStatusData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n if (callback) callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function approveSingleEntryRecord(singleEntryId) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/approveSingleEntryRecord/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"singleEntryId\":\"' + singleEntryId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n loadApp('singleentry');\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function getSingleEntryEmployees(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntrySupervisorsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getSingleEntrySupervisorsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getSingleEntrySupervisors(supervisorId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeeListAndCountInfoJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"supervisorId\":\"' + supervisorId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getEmployeeListAndCountInfoJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getAdminSingleEntryLocations(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAdminSingleEntryLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n beforeSend: function () {},\r\n complete: function () {},\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getAdminSingleEntryLocationsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function singleEntryFilterAdminList(filterData, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/singleEntryFilterAdminListJSON/',\r\n data: JSON.stringify(filterData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.singleEntryFilterAdminListJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getAddressByLatLong(lat, lng, callback) {\r\n $.ajax({\r\n type: 'GET',\r\n url:\r\n 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' +\r\n lat +\r\n ',' +\r\n lng +\r\n '&key=' +\r\n $.googleMapAPI,\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n if (\r\n response &&\r\n response.results &&\r\n response.results[0] &&\r\n response.results[0].formatted_address\r\n ) {\r\n callback(response.results[0].formatted_address);\r\n } else callback('');\r\n },\r\n error: function (xhr, status, error) {\r\n callback('');\r\n },\r\n });\r\n }\r\n function getUserSingleEntryLocationsForPayPeriod(data, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getUserSingleEntryLocationsForPayPeriod/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function getSingleEntryUsersWC(getUserData, callback) {\r\n //getUserdata must contain token and date from single entry page\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryUsersWCJSON/',\r\n data: JSON.stringify(getUserData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryUsersWCJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n\r\n function getLocationsAndResidences(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLocationsAndResidencesJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n beforeSend: function () {},\r\n complete: function () {},\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getLocationsAndResidencesJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getEvvReasonCodes(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryEvvReasonCodesJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n beforeSend: function () {},\r\n complete: function () {},\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryEvvReasonCodesJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n\r\n function getEvvEligibility(consumerId, entryDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryEvvEligibilityJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\" , \"entryDate\":\"' +\r\n entryDate +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n beforeSend: function () {},\r\n complete: function () {},\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryEvvEligibilityJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n\r\n async function getEvvEligibilityAsync(consumerId, entryDate) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryEvvEligibilityJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\" , \"entryDate\":\"' +\r\n entryDate +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getSingleEntryEvvEligibilityJSONResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getExistingTimeEntry() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getExistingTimeEntry/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n deleteSingleEntryRecord,\r\n getSingleEntryConsumersPresent,\r\n getSingleEntryConsumersPresentAsync,\r\n getSubEmployeeListAndCountInfo,\r\n getSingleEntryPayPeriods,\r\n getRequiredSingleEntryFields,\r\n getWorkCodes,\r\n getWorkCodesAsync,\r\n getSingleEntryLocations,\r\n getSingleEntryUsersByLocation,\r\n getSingleEntryByDate,\r\n getSingleEntryById,\r\n insertSingleEntryNew,\r\n insertConsumerforSavedSingleEntry,\r\n preInsertSingleEntry,\r\n getSelectedConsumerLocations,\r\n singleEntryOverlapCheck,\r\n updateSingleEntryStatus,\r\n updateSingleEntry,\r\n // ADMIN SE FUNCTIONS\r\n approveSingleEntryRecord,\r\n adminUpdateSingleEntryStatus,\r\n getSingleEntryEmployees,\r\n getSingleEntrySupervisors,\r\n //getSingleEntryPayPeriodsAdminAjax,\r\n getAdminSingleEntryLocations,\r\n singleEntryFilterAdminList,\r\n getAddressByLatLong,\r\n getUserSingleEntryLocationsForPayPeriod,\r\n getSingleEntryUsersWC,\r\n getLocationsAndResidences,\r\n getEvvReasonCodes,\r\n getEvvEligibility,\r\n getEvvEligibilityAsync,\r\n getExistingTimeEntry\r\n };\r\n})();\r\n","const timeEntryDetailsPopup = (function() {\r\n let consumerSection;\r\n let loadingSection;\r\n let transportationSection;\r\n\r\n function buildConsumerSection(consumers) {\r\n consumerSection.innerHTML = '
    Consumers
    '\r\n let consumerArr = []\r\n consumers.forEach(consumer => {\r\n const lastName = consumer.consumername.split(\",\")[1];\r\n const firstName = consumer.consumername.split(\",\")[0];\r\n let consumerString = `${lastName}, ${firstName}`;\r\n consumerString = consumerString.trim();\r\n consumerArr.push(consumerString);\r\n });\r\n consumerArr.sort(function (a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n consumerArr.forEach(consumer => {\r\n const consumerDiv = document.createElement('div');\r\n consumerDiv.classList.add('consumerRow');\r\n consumerDiv.innerHTML = consumer;\r\n consumerSection.appendChild(consumerDiv)\r\n })\r\n }\r\n\r\n function buildTransportationSection(ed) {\r\n entryData = ed[0]\r\n transportationSection.innerHTML = ''\r\n if (entryData.Transportation_Units === '' && entryData.licensePlateNumber === '') return;\r\n let trans_type = entryData.Transportation_reimbursable === \"N\" ? \"Company\" : \"Personal\";\r\n let trans_milage = entryData.Transportation_Units;\r\n let trans_odStart = entryData.odometerstart;\r\n let trans_odEnd = entryData.odometerend;\r\n let trans_destination = entryData.destination;\r\n let trans_licenseplate = entryData.licensePlateNumber;\r\n let trans_reason = entryData.reason;\r\n\r\n transportationSection.innerHTML = `\r\n
    Transportation
    \r\n
    Transportation Type: ${trans_type}
    \r\n ${trans_odStart !== \"\" ? `
    Odometer Start: ${trans_odStart}
    ` : \"\"}\r\n ${trans_odEnd !== \"\" ? `
    Odometer End: ${trans_odEnd}
    ` : \"\"}\r\n
    Total Miles: ${trans_milage}
    \r\n ${trans_licenseplate !== \"\" ? `
    License Plate: ${trans_licenseplate}
    ` : \"\"}\r\n ${trans_destination !== \"\" ? `
    Destination: ${trans_destination}
    ` : \"\"}\r\n ${trans_reason !== \"\" ? `
    Reason: ${trans_reason}
    ` : \"\"}\r\n `\r\n }\r\n\r\n function init(entryId, consumersPresent) {\r\n consumerSection = document.getElementById(\"consumerDisplay\")\r\n loadingSection = document.getElementById(\"loadingDisplay\")\r\n transportationSection = document.getElementById(\"transportationDisplay\")\r\n let entryData = null\r\n let consumers = null\r\n\r\n PROGRESS__ANYWHERE.init()\r\n PROGRESS__ANYWHERE.SPINNER.show(loadingSection, \"Gathering Additional Information...\")\r\n let promises = [];\r\n\r\n const getSEData = new Promise((resolve, reject) => {\r\n singleEntryAjax.getSingleEntryById(entryId, results => {\r\n entryData = results;\r\n resolve(\"gotSEData\");\r\n });\r\n });\r\n promises.push(getSEData);\r\n const getSEConsumers = new Promise((resolve, reject) => {\r\n singleEntryAjax.getSingleEntryConsumersPresent(entryId, resConsumers => {\r\n consumers = resConsumers;\r\n resolve(\"gotConsumers\");\r\n });\r\n });\r\n if (consumersPresent !== \"0\") promises.push(getSEConsumers);\r\n\r\n Promise.all(promises).then(() => {\r\n PROGRESS__ANYWHERE.SPINNER.hide()\r\n buildTransportationSection(entryData, consumers)\r\n if (consumersPresent !== \"0\") buildConsumerSection(consumers)\r\n });\r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();\r\n","var simpleMar = (function () {\r\n let simpleMarModuleButton;\r\n\r\n function showEMARfailurePopup() {\r\n const signOnFailerPop = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: ['emarSignOnFailerPop', 'warning'],\r\n hideX: true,\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.innerText = 'Single sign-on failed. Please contact your system administrator.';\r\n\r\n const okBtn = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: e => {\r\n POPUP.hide(signOnFailerPop);\r\n simpleMarModuleButton.classList.remove('disabled');\r\n },\r\n });\r\n\r\n signOnFailerPop.appendChild(message);\r\n signOnFailerPop.appendChild(okBtn);\r\n\r\n POPUP.show(signOnFailerPop);\r\n }\r\n\r\n async function simpleMarLogin() {\r\n simpleMarModuleButton = document.getElementById('emarButton');\r\n simpleMarModuleButton.classList.add('disabled');\r\n\r\n try {\r\n const success = await simpleMarAjax.simpleMarLogin();\r\n simpleMarModuleButton.classList.remove('disabled');\r\n } catch (error) {\r\n showEMARfailurePopup();\r\n }\r\n }\r\n\r\n return {\r\n simpleMarLogin,\r\n showEMARfailurePopup,\r\n };\r\n})();\r\n","var simpleMarAjax = (function () {\r\n async function simpleMarLogin() {\r\n retrieveData = {\r\n token: $.session.Token,\r\n };\r\n try {\r\n let data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/simpleMarLogin/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/simpleMarLogin/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n loginURL = data.simpleMarLoginResult;\r\n window.open(loginURL, '_blank');\r\n } catch (error) {\r\n console.log(error.responseText);\r\n simpleMar.showEMARfailurePopup();\r\n }\r\n }\r\n\r\n return {\r\n simpleMarLogin,\r\n };\r\n})();\r\n","const TRANS_mainLanding = (function() {\r\n //TRANSPORTATION SHARED DATA\r\n let drivers, inspectionCategories, vehicles, locations, altAddresses;\r\n\r\n function loadTransportationLanding(params) {\r\n const myRoutesBtn = button.build({\r\n text: 'MY ROUTES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n TRANS_myRoute.init()\r\n }\r\n })\r\n const manageRoutesBtn = button.build({\r\n text: 'MANAGE ROUTES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => TRANS_manageRoutes.init()\r\n })\r\n const newRouteBtn = button.build({\r\n text: 'ADD NEW ROUTE',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => TRANS_addRoute.init()\r\n })\r\n const vehicleInspectionBtn = button.build({\r\n text: 'VEHICLE INSPECTION',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => TRANS_vehicleInspectionLanding.init()\r\n })\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n btnWrap.appendChild(myRoutesBtn);\r\n if ($.session.transportationManageRoute === true ) btnWrap.appendChild(manageRoutesBtn);\r\n if ($.session.transportationAddRoute === true ) btnWrap.appendChild(newRouteBtn);\r\n btnWrap.appendChild(vehicleInspectionBtn);\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n\r\n function getCategories() {\r\n return inspectionCategories\r\n }\r\n function getVehicles() {\r\n return new Map([...vehicles].filter(([k,v]) => v.Active === 'Y'))\r\n }\r\n function getLocations() {\r\n return locations\r\n }\r\n function getAlternateAddress(consumerId) {\r\n return altAddresses.get(consumerId)\r\n }\r\n\r\n function updateAltAddress() {\r\n TRANS_mainLandingAjax.getAltAddresses().then(res => {\r\n const tempAltAddresses = res.getAlternateAddressesResult\r\n let tempAltAddressesMap = new Map();\r\n tempAltAddresses.forEach(address => {\r\n if (tempAltAddressesMap.has(address.consumerId)) {\r\n const addArr = tempAltAddressesMap.get(address.consumerId);\r\n addArr.push(address);\r\n tempAltAddressesMap.set(address.consumerId, addArr)\r\n } else {\r\n tempAltAddressesMap.set(address.consumerId, [address]);\r\n }\r\n })\r\n altAddresses = tempAltAddressesMap;\r\n })\r\n }\r\n\r\n function getAllDrivers(filteredDate) {\r\n // Pass Date Object as filtered Date\r\n if (!filteredDate) filteredDate = UTIL.getTodaysDate(true)\r\n return new Map(\r\n [...drivers].filter(([k,v]) => {\r\n const catEndDate = new Date(v.catEndDate)\r\n const catStartDate = new Date(v.catStartDate)\r\n const termDate = new Date(v.termDate)\r\n return (\r\n (catEndDate >= filteredDate || v.catEndDate === \"\") &&\r\n (termDate >= filteredDate || v.termDate === \"\") && \r\n (catStartDate <= filteredDate)\r\n )\r\n })\r\n )\r\n }\r\n\r\n function driverLookup(id) {\r\n return drivers.get(id)\r\n }\r\n function vehicleLookup(id) {\r\n const ret = vehicles.has(id) ? vehicles.get(id) : 'Non-Existant Vehicle!';\r\n if (ret === 'Non-Existant Vehicle!' && id !== '%') console.error(`Vehicle ID: ${id} does not exist in the database!`)\r\n return ret\r\n }\r\n function locationLookup(id) {\r\n return locations.get(id)\r\n }\r\n function vehicleFilteredLookup(id) {\r\n return vehicles.get(id)\r\n }\r\n\r\n async function getData() {\r\n PROGRESS.init()\r\n PROGRESS.SPINNER.show('Gathering Data...')\r\n function gatherComplete(res) {\r\n const tmpDrivers = res[0].getDriversResult\r\n const tempCategories = res[1].getInspectionCategoriesResult\r\n const tempVehicles = res[2].getVehicleDropdownResult\r\n const tempLocations = res[3].getLocationsJSONResult\r\n const tempAltAddresses = res[4].getAlternateAddressesResult\r\n\r\n let tmpDriversMap = new Map();\r\n let tempCategoriesMap = new Map();\r\n let tempVehiclesMap = new Map();\r\n let tempLocationsMap = new Map();\r\n let tempAltAddressesMap = new Map();\r\n\r\n tmpDrivers.forEach(driver => {\r\n tmpDriversMap.set(driver.Person_ID, driver);\r\n })\r\n tempCategories.forEach(category => {\r\n tempCategoriesMap.set(category.categoryID, {desc: category.description, allowNA: category.allowNA});\r\n })\r\n tempVehicles.forEach(vehicle => {\r\n tempVehiclesMap.set(vehicle.vehicleInformationId, vehicle);\r\n })\r\n tempLocations.forEach(location => {\r\n // Only N residence locaitons\r\n if (location.Residence === 'N') tempLocationsMap.set(location.ID, location);\r\n })\r\n tempAltAddresses.forEach(address => {\r\n if (tempAltAddressesMap.has(address.consumerId)) {\r\n const addArr = tempAltAddressesMap.get(address.consumerId);\r\n addArr.push(address);\r\n tempAltAddressesMap.set(address.consumerId, addArr)\r\n } else {\r\n tempAltAddressesMap.set(address.consumerId, [address]);\r\n }\r\n })\r\n\r\n drivers = tmpDriversMap;\r\n inspectionCategories = tempCategoriesMap;\r\n vehicles = tempVehiclesMap;\r\n locations = tempLocationsMap;\r\n altAddresses = tempAltAddressesMap;\r\n }\r\n\r\n const promises = []\r\n\r\n const driversProm = TRANS_mainLandingAjax.getDrivers()\r\n promises.push(driversProm)\r\n const categoryProm = TRANS_vehicleInspectionAjax.getInspectionCategories()\r\n promises.push(categoryProm)\r\n const vehicleProm = TRANS_mainLandingAjax.getVehicles()\r\n promises.push(vehicleProm);\r\n const locationProm = rosterAjax.getRosterLocations()\r\n promises.push(locationProm)\r\n const altAddressProm = TRANS_mainLandingAjax.getAltAddresses()\r\n promises.push(altAddressProm)\r\n\r\n await Promise.all(promises)\r\n .then(res => gatherComplete(res))\r\n .catch(err => console.error('ERROR GATHERING DATA! MODULE WILL NOT WORK PROPERLY: ' + err))\r\n }\r\n\r\n async function init() {\r\n if (!drivers || !vehicles || !inspectionCategories) {\r\n await getData()\r\n }\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n const miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) {\r\n miniRosterBtn.remove();\r\n DOM.toggleNavLayout();\r\n }\r\n loadTransportationLanding()\r\n if ($.session.transportationUpdate === false) console.info('User does not have update permissions. My Route and Vehicle Inspections will be read only')\r\n }\r\n return {\r\n init,\r\n getAllDrivers,\r\n driverLookup,\r\n getCategories,\r\n getVehicles,\r\n vehicleLookup,\r\n getLocations,\r\n getAlternateAddress,\r\n locationLookup,\r\n vehicleFilteredLookup,\r\n updateAltAddress\r\n }\r\n})();","const TRANS_mainLandingAjax = (function() {\r\n\r\n function getDrivers() {\r\n const data = {\r\n token: $.session.Token\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getDrivers/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n function getVehicles() {\r\n const data = {\r\n token: $.session.Token,\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getVehicleDropdown/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function getAltAddresses() {\r\n const data = {\r\n token: $.session.Token,\r\n consumerId: \"%\"\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getAlternateAddresses/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n return {\r\n getDrivers,\r\n getVehicles,\r\n getAltAddresses\r\n }\r\n})();","const WaitingList = (() => {\r\n function unload() {\r\n _DOM.ACTIONCENTER.removeAttribute('data-ui');\r\n WaitingListAssessment.unload();\r\n }\r\n\r\n async function load() {\r\n _DOM.ACTIONCENTER.innerHTML = '';\r\n _DOM.ACTIONCENTER.setAttribute('data-UI', true);\r\n _DOM.setActiveModuleAttribute('waitingList');\r\n\r\n moduleWrapEle = _DOM.createElement('div', { class: 'waitingList' });\r\n moduleHeaderEle = _DOM.createElement('div', { class: 'waitingList__header' });\r\n moduleBodyEle = _DOM.createElement('div', { class: 'waitingList__body' });\r\n\r\n moduleWrapEle.appendChild(moduleHeaderEle);\r\n moduleWrapEle.appendChild(moduleBodyEle);\r\n _DOM.ACTIONCENTER.appendChild(moduleWrapEle);\r\n\r\n WaitingListOverview.init({ moduleHeader: moduleHeaderEle, moduleBody: moduleBodyEle });\r\n }\r\n\r\n return {\r\n init: load,\r\n unload,\r\n };\r\n})();\r\n","const WaitingListAssessment = (() => {\r\n //--------------------------\r\n // SESSION DATA\r\n //--------------------------\r\n let isNewAssessment = true;\r\n let selectedConsumer;\r\n let wlData;\r\n let wlLinkID;\r\n let wlCircID;\r\n let wlNeedID;\r\n let wlDocuments;\r\n let wlParticipants;\r\n let maxQueueSize = 5;\r\n let isFormComplete;\r\n let isAssessmentComplete;\r\n //--------------------------\r\n // DOM\r\n //--------------------------\r\n let assessmentWrap;\r\n let tableOfContents;\r\n let contributingCircumstancesWrap;\r\n let needsWrap;\r\n let tocLinks;\r\n let doucmentsList;\r\n //--------------------------\r\n // UI INSTANCES\r\n //--------------------------\r\n let updateQueue;\r\n let backButton;\r\n let consumerCard;\r\n let wlForms;\r\n let participantsTable;\r\n let sendEmailButton;\r\n let sendEmailPopup;\r\n let sendEmailForm;\r\n let documentsButton;\r\n let documentsForm;\r\n let documentsPopup;\r\n\r\n const sections = {\r\n waitingListInfo: {\r\n name: 'Waiting List Information',\r\n dbtable: 'WLA_Waiting_List_Information',\r\n enabled: true,\r\n formElements: [\r\n {\r\n id: 'interviewDate',\r\n type: 'date',\r\n label: 'Interview Date',\r\n required: true,\r\n },\r\n {\r\n id: 'personCompleting',\r\n label: 'Name of person completing assessment',\r\n type: 'text',\r\n required: true,\r\n },\r\n {\r\n id: 'personCompletingTitle',\r\n label: 'Title of person completing assessment',\r\n type: 'text',\r\n required: true,\r\n },\r\n {\r\n id: 'currentLivingArrangement',\r\n label: 'Describe the current living arrangement',\r\n type: 'select',\r\n required: true,\r\n data: [\r\n { value: '', text: '' },\r\n { value: 'Lives Alone', text: 'Lives Alone' },\r\n { value: 'Lives with Family or Other Caregivers', text: 'Lives with Family or Other Caregivers' },\r\n { value: 'Lives With Others Who Are Not Caregivers', text: 'Lives With Others Who Are Not Caregivers' },\r\n { value: 'Lives in an Intermediate Care Facility', text: 'Lives in an Intermediate Care Facility' },\r\n { value: 'Lives in a Nursing Facility', text: 'Lives in a Nursing Facility' },\r\n { value: 'Other', text: 'Other' },\r\n ],\r\n },\r\n {\r\n id: 'livingArrangementOther',\r\n label: 'Describe Other Living Arrangement',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n id: 'areasPersonNeedsHelp',\r\n label: 'In what areas does person report needing help?',\r\n fullscreen: true,\r\n type: 'textarea',\r\n required: true,\r\n },\r\n ],\r\n },\r\n participants: {\r\n name: 'Participants',\r\n enabled: true,\r\n },\r\n conditions: {\r\n name: 'Conditions',\r\n dbtable: 'WLA_Conditions',\r\n enabled: true,\r\n formElements: [\r\n {\r\n id: 'otherThanMentalHealth',\r\n type: 'radiogroup',\r\n required: true,\r\n groupLabel: `Does this person have a condition that is attributable to a mental or physical impairment or combination of mental and physical impairments, other than an impairment caused solely by mental illness?`,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'otherThanMentalHealthyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'otherThanMentalHealthno' },\r\n ],\r\n },\r\n {\r\n id: 'before22',\r\n type: 'radiogroup',\r\n required: true,\r\n groupLabel: `Was the condition present before age 22?`,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'before22yes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'before22no' },\r\n ],\r\n },\r\n {\r\n id: 'isConditionIndefinite',\r\n type: 'radiogroup',\r\n required: true,\r\n groupLabel: `Is the condition likely to continue indefinitely?`,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isConditionIndefiniteyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isConditionIndefiniteno' },\r\n ],\r\n },\r\n ],\r\n },\r\n currentAvailableServices: {\r\n name: 'Current/Available Services',\r\n dbtable: 'WLA_Active_Services',\r\n enabled: false,\r\n formElements: [\r\n {\r\n type: 'radiogroup',\r\n id: 'isCountyBoardFunding',\r\n groupLabel: 'County Board services / funding',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isCountyBoardFundingyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isCountyBoardFundingno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isOhioEarlyInterventionService',\r\n groupLabel: 'Help Me Grow / Ohio Early Intervention',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isOhioEarlyInterventionServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isOhioEarlyInterventionServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isBCMHService',\r\n groupLabel: 'Bureau for Children with Medical Handicaps',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isBCMHServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isBCMHServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isFCFCService',\r\n groupLabel: 'Family and Children First Council',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isFCFCServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isFCFCServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isODEService',\r\n groupLabel: 'Ohio Department of Education',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isODEServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isODEServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isOODService',\r\n groupLabel: 'Vocational Rehabilitation / Opportunities for Ohioans with Disabilities',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isOODServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isOODServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isChildrenServices',\r\n groupLabel: 'Children Services',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isChildrenServicesyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isChildrenServicesno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isMedicaidStatePlanHomeHealthAideservice',\r\n groupLabel: 'Medicaid State Plan Home Health Aide',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isMedicaidStatePlanHomeHealthAideserviceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isMedicaidStatePlanHomeHealthAideserviceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isMedicaidStatePlanHomeHealthNursingService',\r\n groupLabel: 'Medicaid State Plan Home Health Nursing',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isMedicaidStatePlanHomeHealthNursingServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isMedicaidStatePlanHomeHealthNursingServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isMedicaidStatePlanService',\r\n groupLabel: 'Medicaid State Plan Private Duty Nursing',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isMedicaidStatePlanServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isMedicaidStatePlanServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isOhioHomeCareWaiverservice',\r\n groupLabel: 'Ohio Home Care Waiver',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isOhioHomeCareWaiverserviceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isOhioHomeCareWaiverserviceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isPassportWaiverService',\r\n groupLabel: 'PASSPORT Waiver',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isPassportWaiverServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isPassportWaiverServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isAssistedLivingWaiverService',\r\n groupLabel: 'Assisted Living Waiver',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isAssistedLivingWaiverServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isAssistedLivingWaiverServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isMYCarewaiverService',\r\n groupLabel: 'MyCare Waiver',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isMYCarewaiverServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isMYCarewaiverServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isSelfWaiverService',\r\n groupLabel: 'Self-Empowered Life Funding Waiver',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isSelfWaiverServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isSelfWaiverServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isLevelOneWaiverService',\r\n groupLabel: 'Level One Waiver',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isLevelOneWaiverServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isLevelOneWaiverServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isOtherService',\r\n groupLabel: 'Other',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isOtherServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isOtherServiceno' },\r\n ],\r\n },\r\n {\r\n label: 'Other:',\r\n id: 'otherDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n contributingCircumstances: {\r\n name: 'Contributing Circumstances',\r\n enabled: false,\r\n children: [\r\n 'primaryCaregiver',\r\n 'needs',\r\n 'riskMitigation',\r\n 'icfDischarge',\r\n 'intermittentSupports',\r\n 'childProtectionAgency',\r\n 'adultDayEmployment',\r\n 'dischargePlan',\r\n ],\r\n },\r\n primaryCaregiver: {\r\n name: 'Primary Caregiver',\r\n dbtable: 'WLA_Primary_Caregivers',\r\n enabled: false,\r\n formElements: [\r\n {\r\n type: 'radiogroup',\r\n id: 'isPrimaryCaregiverUnavailable',\r\n required: true,\r\n groupLabel:\r\n 'Is there evidence that the primary caregiver has a declining or chronic condition or is facing other unforeseen circumstances that will limit his or her ability to care for the individual?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isPrimaryCaregiverUnavailableyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isPrimaryCaregiverUnavailableno' },\r\n ],\r\n },\r\n {\r\n label:\r\n 'List documentation used to verify presence of declining or chronic condition or unforeseen circumstances.',\r\n id: 'unavailableDocumentation',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isActionRequiredIn30Days',\r\n groupLabel: `Is action required within the next 30 days due to the caregiver's inability to care for the individual?`,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isActionRequiredIn30Daysyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isActionRequiredIn30Daysno' },\r\n ],\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n label: 'Describe the action required:',\r\n id: 'actionRequiredDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isIndividualSkillsDeclined',\r\n groupLabel: `Is there evidence of declining skills the individual has experienced as a result of either the caregiver's condition or insufficient caregivers to meet the individual's current needs?`,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isIndividualSkillsDeclinedyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isIndividualSkillsDeclinedno' },\r\n ],\r\n disabled: true,\r\n },\r\n {\r\n label: `List documentation used to verify presence of caregiver's condition, if not already described above: `,\r\n id: 'declinedSkillsDocumentation',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n label: 'Describe decline:',\r\n id: 'declinedSkillsDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n label: 'Additional comments:',\r\n id: 'additionalCommentsForUnavailable',\r\n fullscreen: true,\r\n type: 'textarea',\r\n },\r\n ],\r\n },\r\n needs: {\r\n name: 'Needs',\r\n enabled: false,\r\n },\r\n behavioral: {\r\n name: 'Behavioral',\r\n dbtable: 'WLA_Risks',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'risksIsRiskToSelf',\r\n groupLabel:\r\n 'Is the individual a child / adult currently engaging in a pattern of behavior that creates a substantial risk to self / others?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'risksIsRiskToSelfyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'risksIsRiskToSelfno' },\r\n ],\r\n },\r\n {\r\n type: 'checkboxgroup',\r\n id: 'risksIs',\r\n groupLabel: 'Check all that apply:',\r\n fields: [\r\n {\r\n type: 'checkbox',\r\n label: 'Not applicable; there is currently no pattern of behavior that creates a substantial risk.',\r\n id: 'risksIsNone',\r\n },\r\n { type: 'checkbox', label: 'Physical Aggression', id: 'risksIsPhysicalAggression' },\r\n { type: 'checkbox', label: 'Self-Injury', id: 'risksIsSelfInjury' },\r\n { type: 'checkbox', label: 'Fire-setting', id: 'risksIsFireSetting' },\r\n { type: 'checkbox', label: 'Elopement', id: 'risksIsElopement' },\r\n { type: 'checkbox', label: 'Sexual Offending', id: 'risksIsSexualOffending' },\r\n { type: 'checkbox', label: 'Other', id: 'risksIsOther' },\r\n ],\r\n required: true,\r\n },\r\n {\r\n label: 'Describe type, frequency, and intensity of behavioral needs:',\r\n id: 'risksFrequencyDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n type: 'checkboxgroup',\r\n id: 'risksHas',\r\n groupLabel: 'Documentation available (Select at least one):',\r\n fields: [\r\n {\r\n type: 'checkbox',\r\n label: 'Not applicable; there is currently no pattern of behavior that creats a substantial risk',\r\n id: 'risksHasNoDocument',\r\n },\r\n { type: 'checkbox', label: 'Police Report(s)', id: 'risksHasPoliceReport' },\r\n { type: 'checkbox', label: 'Incident Report(s)', id: 'risksHasIncidentReport' },\r\n { type: 'checkbox', label: 'Behavior Tracking Sheets(s)', id: 'risksHasBehaviorTracking' },\r\n { type: 'checkbox', label: 'Psychological Assessment', id: 'risksHasPsychologicalAssessment' },\r\n { type: 'checkbox', label: 'Other', id: 'risksHasOtherDocument' },\r\n ],\r\n required: true,\r\n },\r\n {\r\n label: 'Other:',\r\n id: 'risksOtherDocumentDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n physical: {\r\n name: 'Physical',\r\n dbtable: 'WLA_Physical_Needs',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'physicalNeedsIsPhysicalCareNeeded',\r\n groupLabel: 'Is the individual a child / adult with significant physical care needs?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'physicalNeedsIsPhysicalCareNeededyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'physicalNeedsIsPhysicalCareNeededno' },\r\n ],\r\n },\r\n {\r\n type: 'checkboxgroup',\r\n id: 'physicalNeeds',\r\n groupLabel: 'Check all that apply:',\r\n fields: [\r\n {\r\n type: 'checkbox',\r\n label: 'Not applicable; there are no significant physical care needs',\r\n id: 'physicalNeedsIsNone',\r\n },\r\n {\r\n type: 'checkbox',\r\n label: 'Frequent hands-on support required with activities of daily living throughout the day and night',\r\n id: 'physicalNeedsIsPersonalCareNeeded',\r\n },\r\n {\r\n type: 'checkbox',\r\n label: 'Size / Condition of the individual creates a risk of injury during physical care',\r\n id: 'physicalNeedsIsRiskDuringPhysicalCare',\r\n },\r\n { type: 'checkbox', label: 'Other', id: 'physicalNeedsIsOther' },\r\n ],\r\n required: true,\r\n },\r\n {\r\n label: 'Describe type, frequency, and intensity of physical care needs:',\r\n id: 'physicalNeedsDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n medical: {\r\n name: 'Medical',\r\n dbtable: 'WLA_Medical_Needs',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'medicalNeedsIsLifeThreatening',\r\n groupLabel: 'Is the individual a child / adult with significant or life-threatening medical needs?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'medicalNeedsIsLifeThreateningyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'medicalNeedsIsLifeThreateningno' },\r\n ],\r\n },\r\n {\r\n type: 'checkboxgroup',\r\n id: 'medicalNeeds',\r\n required: true,\r\n groupLabel: ' (Check all that apply)',\r\n fields: [\r\n {\r\n type: 'checkbox',\r\n label: 'Not applicable; there are no significant or life-threatening medical needs',\r\n id: 'medicalNeedsIsNone',\r\n },\r\n {\r\n type: 'checkbox',\r\n label: 'Frequent hospitalizations or emergency room visits for life-sustaining treatment',\r\n id: 'medicalNeedsIsFrequentEmergencyVisit',\r\n },\r\n {\r\n type: 'checkbox',\r\n label:\r\n 'Ongoing medical care provided by caregivers to prevent hospitalization or emergency room intervention',\r\n id: 'medicalNeedsIsOngoingMedicalCare',\r\n },\r\n {\r\n type: 'checkbox',\r\n label: 'Need for specialized training of caregivers to prevent emergency medical intervention',\r\n id: 'medicalNeedsIsSpecializedCareGiveNeeded',\r\n },\r\n { type: 'checkbox', label: 'Other', id: 'medicalNeedsIsOther' },\r\n ],\r\n },\r\n {\r\n label: 'Describe type, frequency, and intensity of medical needs:',\r\n id: 'medicalNeedsDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n other: {\r\n name: 'Other',\r\n dbtable: 'WLA_Needs',\r\n enabled: false,\r\n formElements: [\r\n {\r\n type: 'radiogroup',\r\n id: 'needsIsActionRequiredRequiredIn30Days',\r\n groupLabel:\r\n 'Is action required within the next 30 days to reduce the risk(s) presented by the behavioral, physical, and / or medical needs?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'needsIsActionRequiredRequiredIn30Daysyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'needsIsActionRequiredRequiredIn30Daysno' },\r\n ],\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'needsIsContinuousSupportRequired',\r\n groupLabel:\r\n 'If No, do the significant behavioral, physical care, and / or medical needs identified require continuous support to reduce risk?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'needsIsContinuousSupportRequiredyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'needsIsContinuousSupportRequiredno' },\r\n ],\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n riskMitigation: {\r\n name: 'Risk Mitigation',\r\n dbtable: 'WLA_Risk_Mitigations',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'rMIsSupportNeeded',\r\n groupLabel:\r\n 'Is the individual an adult who has been subjected to abuse, neglect, or exploitation and requires support to reduce risk?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'rMIsSupportNeededyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'rMIsSupportNeededno' },\r\n ],\r\n },\r\n {\r\n type: 'checkboxgroup',\r\n id: 'rMIs',\r\n required: true,\r\n groupLabel: 'There is currently an open investigation with: (Check all that apply):',\r\n fields: [\r\n { type: 'checkbox', label: 'Not applicable; there is currently no open investigation', id: 'rMIsNone' },\r\n { type: 'checkbox', label: 'Adult Protective Services', id: 'rMIsAdultProtectiveServiceInvestigation' },\r\n { type: 'checkbox', label: 'County Board', id: 'rMIsCountyBoardInvestigation' },\r\n { type: 'checkbox', label: 'Law Enforcement', id: 'rMIsLawEnforcementInvestigation' },\r\n { type: 'checkbox', label: 'Other', id: 'rMIsOtherInvestigation' },\r\n ],\r\n },\r\n {\r\n label: 'Describe incident under investigation and supports needed to reduce the risk:',\r\n id: 'rMdescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'rMIsActionRequiredIn3oDays',\r\n groupLabel: 'Is action required within the next 30 days to reduce risk?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'rMIsActionRequiredIn3oDaysyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'rMIsActionRequiredIn3oDaysno' },\r\n ],\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n icfDischarge: {\r\n name: 'ICF Discharge',\r\n dbtable: 'WLA_ICF_Discharges',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'icfDetermination',\r\n groupLabel:\r\n 'Is the individual a resident of an ICFIID or Nursing Facility who has either been issued a 30-day notice of intent to discharge or received an adverse Resident Review determination?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'icfDeterminationyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'icfDeterminationno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'icfIsICFResident',\r\n required: true,\r\n groupLabel: 'Is the individual currently a resident of an ICFIID or Nursing Facility?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'icfIsICFResidentyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'icfIsICFResidentno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'icfIsNoticeIssued',\r\n required: true,\r\n groupLabel:\r\n 'Has the individual been issued a 30-day notice of intent to discharge or received an adverse Resident Review determination?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'icfIsNoticeIssuedyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'icfIsNoticeIssuedno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'icfIsActionRequiredIn30Days',\r\n required: true,\r\n groupLabel: 'Is action required with the next 30 days to reduce the risk?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'icfIsActionRequiredIn30Daysyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'icfIsActionRequiredIn30Daysno' },\r\n ],\r\n },\r\n ],\r\n },\r\n intermittentSupports: {\r\n name: 'Intermittent Supports',\r\n dbtable: 'WLA_Intermitent_Supports',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'intSupDetermination',\r\n groupLabel:\r\n 'Does the individual have an ongoing need for limited / intermittent supports to address behavioral, physical, or medical needs in order to sustain existing caregivers and remain in the current living with.',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'intSupDeterminationyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'intSupDeterminationno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'intSupIsSupportNeededIn12Months',\r\n required: true,\r\n groupLabel: 'Does the individual have a need for limited or intermittent supports within the next 12 months?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'intSupIsSupportNeededIn12Monthsyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'intSupIsSupportNeededIn12Monthsno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'intSupIsStayingLivingArrangement',\r\n required: true,\r\n groupLabel: 'Does the individual desire to remain in the current living environment?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'intSupIsStayingLivingArrangementyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'intSupIsStayingLivingArrangementno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'intSupIsActionRequiredIn30Days',\r\n required: true,\r\n groupLabel:\r\n 'Are existing caregivers willing AND able to continue to provide supports, if some relief were provided?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'intSupIsActionRequiredIn30Daysyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'intSupIsActionRequiredIn30Daysno' },\r\n ],\r\n },\r\n ],\r\n },\r\n childProtectionAgency: {\r\n name: 'Child Protection Agency',\r\n dbtable: 'WLA_Child_Protection_Agencies',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'cpaDetermination',\r\n groupLabel:\r\n 'Is the individual reaching the age of majority and being released from the custody of a child protective agency within the next 12 months and has needs that cannot be addressed through alternative services?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'cpaDeterminationyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'cpaDeterminationno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'cpaIsReleasedNext12Months',\r\n required: true,\r\n groupLabel:\r\n 'Is the individual being released from the custody of a child protective agency within the next 12 months? ',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'cpaIsReleasedNext12Monthsyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'cpaIsReleasedNext12Monthsno' },\r\n ],\r\n },\r\n {\r\n id: 'cpaAnticipateDate',\r\n type: 'date',\r\n label: 'Anticipated Date',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'cpaHasUnaddressableNeeds',\r\n required: true,\r\n groupLabel: 'Does the individual have needs that cannot be addressed through alternative services?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'cpaHasUnaddressableNeedsyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'cpaHasUnaddressableNeedsno' },\r\n ],\r\n },\r\n ],\r\n },\r\n adultDayEmployment: {\r\n name: 'Adult Day/Employment',\r\n dbtable: 'WLA_Require_Waiver_Fundings',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'rwfWaiverFundingRequired',\r\n groupLabel: 'Does the individual require waiver funding for adult day or employment-related services?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'rwfWaiverFundingRequiredyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'rwfWaiverFundingRequiredno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'rwfNeedsMoreFrequency',\r\n required: true,\r\n groupLabel:\r\n 'Are the needed services required at a level or frequency that exceeds what is able to be sustained through local County Board resources',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'rwfNeedsMoreFrequencyyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'rwfNeedsMoreFrequencyno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'rwfNeedsServiceNotMetIDEA',\r\n required: true,\r\n groupLabel:\r\n 'Are the needed services beyond what is available to the individual through the local school district / Individuals with Disabilities Education Act?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'rwfNeedsServiceNotMetIDEAyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'rwfNeedsServiceNotMetIDEAno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'rwfNeedsServicesNotMetOOD',\r\n required: true,\r\n groupLabel:\r\n 'Are the needed services beyond what is available to the individual through Vocational Rehabilitation / Opportunities for Ohioans with Disabilities or other resources?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'rwfNeedsServicesNotMetOODyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'rwfNeedsServicesNotMetOODno' },\r\n ],\r\n },\r\n ],\r\n },\r\n dischargePlan: {\r\n name: 'Discharge Plan',\r\n dbtable: 'WLA_Discharge_Plans',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'dischargeDetermination',\r\n groupLabel:\r\n 'Does the individual have a viable discharge plan from the current facility in which he / she resides?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'dischargeDeterminationyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'dischargeDeterminationno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'dischargeIsICFResident',\r\n required: true,\r\n groupLabel: 'Is the individual currently a resident of an ICFIID or Nursing Facility?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'dischargeIsICFResidentyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'dischargeIsICFResidentno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'dischargeIsInterestedInMoving',\r\n required: true,\r\n groupLabel:\r\n 'Has the individual / guardian expressed an interest in moving to a community-based setting within the next 12 months?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'dischargeIsInterestedInMovingyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'dischargeIsInterestedInMovingno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'dischargeHasDischargePlan',\r\n required: true,\r\n groupLabel: `Is the individual's team developing a discharge plan that addresses barries to community living, such as housing and availability of providers?`,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'dischargeHasDischargePlanyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'dischargeHasDischargePlanno' },\r\n ],\r\n },\r\n ],\r\n },\r\n immediateNeeds: {\r\n name: 'Immediate Needs',\r\n dbtable: 'WLA_Immediate_Needs',\r\n enabled: false,\r\n formElements: [\r\n {\r\n type: 'radiogroup',\r\n id: 'immNeedsRequired',\r\n required: true,\r\n groupLabel: `Is there an immediate need identified that requires an action plan with 30 days to reduce the risk?`,\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'immNeedsRequiredyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'immNeedsRequiredno' },\r\n ],\r\n disabled: true,\r\n },\r\n {\r\n label: `if \"Yes\", describe the immediate need:`,\r\n id: 'immNeedsDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n required: true,\r\n disabled: true,\r\n },\r\n ],\r\n },\r\n currentNeeds: {\r\n name: 'Current Needs',\r\n dbtable: 'WLA_Unmet_Needs',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'unmetNeedsHas',\r\n groupLabel: 'Does the individual have an identified need?',\r\n note: 'This will be selected automatically as the information above is entered.',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'unmetNeedsHasyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'unmetNeedsHasno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'unmetNeedsSupports',\r\n groupLabel: `If \"Yes\", will any of those needs be unmet by existing supports / resources within the next 12 months?`,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'unmetNeedsSupportsyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'unmetNeedsSupportsno' },\r\n ],\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n label: `if \"Yes\", describe the unmet need:`,\r\n id: 'unmetNeedsDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n waiverEnrollment: {\r\n name: 'Waiver Enrollment',\r\n dbtable: 'WLA_Waiver_Enrollments',\r\n enabled: false,\r\n formElements: [\r\n {\r\n type: 'radiogroup',\r\n id: 'waivEnrollWaiverEnrollmentIsRequired',\r\n required: true,\r\n groupLabel:\r\n 'Will the unmet immediate need or unmet current need require enrollment in a waiver due to the lack of community-based alternative services to address the need?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'waivEnrollWaiverEnrollmentIsRequiredyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'waivEnrollWaiverEnrollmentIsRequiredno' },\r\n ],\r\n },\r\n {\r\n label: `If \"No\", describe the community-based alternative services that can address the unmet need:`,\r\n id: 'waivEnrollWaiverEnrollmentDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n conclusion: {\r\n name: 'Conclusion',\r\n enabled: true,\r\n formElements: [\r\n {\r\n type: 'checkboxgroup',\r\n id: 'conclusions',\r\n groupLabel:\r\n 'The options below are selected automatically based on answers provided throughout the assessment.',\r\n disabled: true,\r\n fields: [\r\n {\r\n type: 'checkbox',\r\n label:\r\n 'The individual has unmet needs that require enrollment in a waiver at this time to address circumstances presenting an immediate risk of harm',\r\n id: 'conclusionUnmetNeeds',\r\n },\r\n {\r\n type: 'checkbox',\r\n label:\r\n 'The individual has needs that are likely to require waiver-funded supports within the next 12 months and will be placed on the waiting list for Home and Community-Based Services at this time.',\r\n id: 'conclusionWaiverFunded12Months',\r\n },\r\n {\r\n type: 'checkbox',\r\n label:\r\n 'The individual does not require waiver enrollment or placement on the waiting list for Home and Community-Based Services as either there are no assessed needs or alternate services are available to meet assessed needs.',\r\n id: 'conclusionDoesNotRequireWaiver',\r\n },\r\n {\r\n type: 'checkbox',\r\n label:\r\n 'The individual is not eligible for waiver enrollment or placement on the Waiting List for Home and Community-Based Services, as he/she has no qualifying condition.',\r\n id: 'conclusionNotEligibleForWaiver',\r\n },\r\n ],\r\n },\r\n {\r\n type: 'text',\r\n id: 'conclussionDeterminedBy',\r\n label: 'Name of person determining conclusion:',\r\n required: true,\r\n },\r\n {\r\n type: 'text',\r\n id: 'conclusionDeterminedByTitle',\r\n label: 'Title of person determining conclusion:',\r\n required: true,\r\n },\r\n {\r\n id: 'conclusionDeterminedOn',\r\n type: 'date',\r\n label: 'Date conclusion determined:',\r\n },\r\n {\r\n label: 'Anticipated Waiver Type',\r\n id: 'fundingSourceId',\r\n type: 'select',\r\n includeBlankOption: true,\r\n },\r\n ],\r\n },\r\n };\r\n const sectionResets = {\r\n currentAvailableServices: () => {\r\n wlForms['currentAvailableServices'].clear();\r\n\r\n wlForms['currentAvailableServices'].inputs['otherDescription'].toggleDisabled(true);\r\n },\r\n primaryCaregiver: () => {\r\n wlForms['primaryCaregiver'].clear();\r\n\r\n wlForms['primaryCaregiver'].inputs['unavailableDocumentation'].toggleDisabled(true);\r\n wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].toggleDisabled(true);\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].toggleDisabled(true);\r\n wlForms['primaryCaregiver'].inputs['actionRequiredDescription'].toggleDisabled(true);\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDocumentation'].toggleDisabled(true);\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDescription'].toggleDisabled(true);\r\n },\r\n behavioral: () => {\r\n wlForms['behavioral'].clear();\r\n\r\n wlForms['behavioral'].inputs['risksFrequencyDescription'].toggleDisabled(true);\r\n wlForms['behavioral'].inputs['risksOtherDocumentDescription'].toggleDisabled(true);\r\n\r\n // checkboxes set 1\r\n wlForms['behavioral'].inputs['risksIsNone'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksIsPhysicalAggression'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksIsSelfInjury'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksIsFireSetting'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksIsElopement'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksIsSexualOffending'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksIsOther'].toggleDisabled(false);\r\n //\r\n wlForms['behavioral'].inputs['risksIsNone'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksIsPhysicalAggression'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksIsSelfInjury'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksIsFireSetting'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksIsElopement'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksIsSexualOffending'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksIsOther'].toggleRequired(true);\r\n // checkbox set 2\r\n wlForms['behavioral'].inputs['risksHasNoDocument'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksHasPoliceReport'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksHasIncidentReport'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksHasBehaviorTracking'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksHasPsychologicalAssessment'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksHasOtherDocument'].toggleDisabled(false);\r\n //\r\n wlForms['behavioral'].inputs['risksHasNoDocument'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksHasPoliceReport'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksHasIncidentReport'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksHasBehaviorTracking'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksHasPsychologicalAssessment'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksHasOtherDocument'].toggleRequired(true);\r\n },\r\n physical: () => {\r\n wlForms['physical'].clear();\r\n\r\n wlForms['physical'].inputs['physicalNeedsDescription'].toggleDisabled(true);\r\n\r\n // checkboxes\r\n wlForms['physical'].inputs['physicalNeedsIsNone'].toggleDisabled(false);\r\n wlForms['physical'].inputs['physicalNeedsIsPersonalCareNeeded'].toggleDisabled(false);\r\n wlForms['physical'].inputs['physicalNeedsIsRiskDuringPhysicalCare'].toggleDisabled(false);\r\n wlForms['physical'].inputs['physicalNeedsIsOther'].toggleDisabled(false);\r\n //\r\n wlForms['physical'].inputs['physicalNeedsIsNone'].toggleRequired(true);\r\n wlForms['physical'].inputs['physicalNeedsIsPersonalCareNeeded'].toggleRequired(true);\r\n wlForms['physical'].inputs['physicalNeedsIsRiskDuringPhysicalCare'].toggleRequired(true);\r\n wlForms['physical'].inputs['physicalNeedsIsOther'].toggleRequired(true);\r\n },\r\n medical: () => {\r\n wlForms['medical'].clear();\r\n\r\n wlForms['medical'].inputs['medicalNeedsDescription'].toggleDisabled(true);\r\n\r\n // checkboxes\r\n wlForms['medical'].inputs['medicalNeedsIsNone'].toggleDisabled(false);\r\n wlForms['medical'].inputs['medicalNeedsIsFrequentEmergencyVisit'].toggleDisabled(false);\r\n wlForms['medical'].inputs['medicalNeedsIsOngoingMedicalCare'].toggleDisabled(false);\r\n wlForms['medical'].inputs['medicalNeedsIsSpecializedCareGiveNeeded'].toggleDisabled(false);\r\n wlForms['medical'].inputs['medicalNeedsIsOther'].toggleDisabled(false);\r\n //\r\n wlForms['medical'].inputs['medicalNeedsIsNone'].toggleRequired(true);\r\n wlForms['medical'].inputs['medicalNeedsIsFrequentEmergencyVisit'].toggleRequired(true);\r\n wlForms['medical'].inputs['medicalNeedsIsOngoingMedicalCare'].toggleRequired(true);\r\n wlForms['medical'].inputs['medicalNeedsIsSpecializedCareGiveNeeded'].toggleRequired(true);\r\n wlForms['medical'].inputs['medicalNeedsIsOther'].toggleRequired(true);\r\n },\r\n other: () => {\r\n wlForms['other'].clear();\r\n\r\n wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].toggleDisabled(true);\r\n wlForms['other'].inputs['needsIsContinuousSupportRequired'].toggleDisabled(true);\r\n },\r\n riskMitigation: () => {\r\n wlForms['riskMitigation'].clear();\r\n\r\n wlForms['riskMitigation'].inputs['rMdescription'].toggleDisabled(true);\r\n wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].toggleDisabled(true);\r\n\r\n // checkboxes\r\n wlForms['riskMitigation'].inputs['rMIsNone'].toggleDisabled(false);\r\n wlForms['riskMitigation'].inputs['rMIsAdultProtectiveServiceInvestigation'].toggleDisabled(false);\r\n wlForms['riskMitigation'].inputs['rMIsCountyBoardInvestigation'].toggleDisabled(false);\r\n wlForms['riskMitigation'].inputs['rMIsLawEnforcementInvestigation'].toggleDisabled(false);\r\n wlForms['riskMitigation'].inputs['rMIsOtherInvestigation'].toggleDisabled(false);\r\n //\r\n wlForms['riskMitigation'].inputs['rMIsNone'].toggleRequired(true);\r\n wlForms['riskMitigation'].inputs['rMIsAdultProtectiveServiceInvestigation'].toggleRequired(true);\r\n wlForms['riskMitigation'].inputs['rMIsCountyBoardInvestigation'].toggleRequired(true);\r\n wlForms['riskMitigation'].inputs['rMIsLawEnforcementInvestigation'].toggleRequired(true);\r\n wlForms['riskMitigation'].inputs['rMIsOtherInvestigation'].toggleRequired(true);\r\n },\r\n icfDischarge: () => {\r\n wlForms['icfDischarge'].clear();\r\n },\r\n intermittentSupports: () => {\r\n wlForms['intermittentSupports'].clear();\r\n },\r\n childProtectionAgency: () => {\r\n wlForms['childProtectionAgency'].clear();\r\n\r\n wlForms['childProtectionAgency'].inputs['cpaAnticipateDate'].toggleDisabled(true);\r\n },\r\n adultDayEmployment: () => {\r\n wlForms['adultDayEmployment'].clear();\r\n },\r\n dischargePlan: () => {\r\n wlForms['dischargePlan'].clear();\r\n },\r\n immediateNeeds: () => {\r\n wlForms['immediateNeeds'].clear();\r\n\r\n wlForms['immediateNeeds'].inputs['immNeedsDescription'].toggleDisabled(true);\r\n },\r\n currentNeeds: () => {\r\n wlForms['currentNeeds'].clear();\r\n\r\n wlForms['currentNeeds'].inputs['unmetNeedsSupports'].toggleDisabled(true);\r\n wlForms['currentNeeds'].inputs['unmetNeedsDescription'].toggleDisabled(true);\r\n },\r\n waiverEnrollment: () => {\r\n wlForms['waiverEnrollment'].clear();\r\n\r\n wlForms['waiverEnrollment'].inputs['waivEnrollWaiverEnrollmentDescription'].toggleDisabled(true);\r\n },\r\n };\r\n\r\n // UTILS\r\n //--------------------------------------------------\r\n async function unload() {\r\n await updateQueue.forceSendUpdates();\r\n\r\n selectedConsumer = undefined;\r\n wlData = undefined;\r\n wlLinkID = undefined;\r\n wlCircID = undefined;\r\n wlNeedID = undefined;\r\n wlDocuments = undefined;\r\n wlParticipants = undefined;\r\n }\r\n function findFieldTypeById(formElements, targetId) {\r\n let fieldtype;\r\n\r\n for (const element of formElements) {\r\n if (element.id === targetId) {\r\n fieldtype = element.type;\r\n break;\r\n }\r\n if (element.type === 'checkboxgroup') {\r\n if (element.fields.some(f => f.id === targetId)) {\r\n fieldtype = 'checkboxgroup';\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return fieldtype;\r\n }\r\n function addNewDocumentToList({ documentId, fileName }) {\r\n const documentItem = _DOM.createElement('p', { class: 'docList__Item', text: fileName });\r\n const deleteIcon = Icon.getIcon('delete');\r\n documentItem.appendChild(deleteIcon);\r\n\r\n documentItem.addEventListener('click', async e => {\r\n if (e.target === deleteIcon) {\r\n await _UTIL.fetchData('deleteSupportingDocument', { attachmentId: documentId });\r\n return;\r\n }\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute(\r\n 'action',\r\n `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewWaitingListAttachment/`,\r\n );\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', () => {});\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', documentId);\r\n attachmentInput.id = 'attachmentId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n });\r\n\r\n doucmentsList.appendChild(documentItem);\r\n }\r\n function toggleTocLinksDisabledStatus(links, disable) {\r\n links.forEach(link => {\r\n tocLinks[link].classList.toggle('hiddenPage', disable);\r\n });\r\n }\r\n function updateFormCompletionStatus(formName) {\r\n const requiredInputs = [\r\n ...wlForms[formName].form.querySelectorAll(\r\n 'input:required:not([disabled]), select:required:not([disabled]), textarea:required:not([disabled])',\r\n ),\r\n ];\r\n\r\n isFormComplete = true;\r\n if (requiredInputs.length) {\r\n isFormComplete = requiredInputs.map(input => input.checkValidity()).every(isValid => isValid);\r\n }\r\n\r\n tocLinks[formName].classList.toggle('formComplete', isFormComplete);\r\n }\r\n function checkIsAssessmentComplete() {\r\n const incompleteSections = Object.values(tocLinks).filter(link => {\r\n return (\r\n !link.classList.contains('hiddenPage') &&\r\n !link.classList.contains('formComplete') &&\r\n !link.classList.contains('parent') &&\r\n !link.classList.contains('conclusion')\r\n );\r\n });\r\n\r\n isAssessmentComplete = incompleteSections.length > 0 ? false : true;\r\n }\r\n function toggleSendEmailDisabledStatus() {\r\n // refactor to use the new variable isAssessmentComplete\r\n const incompleteSections = Object.values(tocLinks).filter(link => {\r\n return (\r\n !link.classList.contains('hiddenPage') &&\r\n !link.classList.contains('formComplete') &&\r\n !link.classList.contains('parent')\r\n );\r\n });\r\n\r\n if (!$.session.waitingListUpdate) {\r\n sendEmailButton.toggleDisabled(true);\r\n return;\r\n }\r\n\r\n sendEmailButton.toggleDisabled(incompleteSections.length > 0 && !$.session.sendWaitingListEmail);\r\n }\r\n\r\n // DATA\r\n //--------------------------------------------------\r\n function setAnswerValueForInsertUpdate(value, type) {\r\n if (value === '') return value;\r\n\r\n if (type === 'radio' || type === 'checkbox') {\r\n return value === 'yes' || value === 'on' ? 1 : 0;\r\n }\r\n\r\n return value;\r\n }\r\n function getLinkIdForInsertUpdate(formName, updateOrInsert) {\r\n if (['waitingListInfo', 'conclusion'].includes(formName)) {\r\n return updateOrInsert === 'U' ? 0 : wlLinkID;\r\n }\r\n\r\n if (['behavioral', 'physical', 'medical'].includes(formName)) {\r\n return wlNeedID;\r\n }\r\n\r\n if (\r\n [\r\n 'primaryCaregiver',\r\n 'riskMitigation',\r\n 'icfDischarge',\r\n 'intermittentSupports',\r\n 'childProtectionAgency',\r\n 'adultDayEmployment',\r\n 'dischargePlan',\r\n 'other',\r\n ].includes(formName)\r\n ) {\r\n return wlCircID;\r\n }\r\n\r\n return wlLinkID;\r\n }\r\n async function getFundingSources() {\r\n const resp = await _UTIL.fetchData('getWaitingListFundingSources');\r\n const fundingSources = resp.getWaitingListFundingSourcesResult;\r\n return fundingSources.map(fs => {\r\n return {\r\n value: fs.fundingSourceId,\r\n text: fs.description,\r\n };\r\n });\r\n }\r\n async function saveDocument(attachDetails) {\r\n const resp = await _UTIL.fetchData('addWlSupportingDocument', {\r\n waitingListInformationId: wlLinkID,\r\n description: attachDetails.description,\r\n includeOnEmail: data['email'] === 'on' ? 'Y' : 'N',\r\n attachmentType: attachDetails.type,\r\n attachment: attachDetails.attachment,\r\n });\r\n return resp.addWLSupportingDocumentResult[0].supportingDocumentId;\r\n }\r\n //--------------------------------------------------\r\n async function insertNewWaitingListAssessment(consumerId) {\r\n const data = await _UTIL.fetchData('insertUpdateWaitingListValue', {\r\n id: 0,\r\n linkId: 0,\r\n propertyName: 'consumerId',\r\n value: consumerId,\r\n valueTwo: '',\r\n insertOrUpdate: 'I',\r\n });\r\n\r\n return JSON.parse(data.insertUpdateWaitingListValueResult);\r\n }\r\n async function updateAssessmentData({ id, linkId = 0, propertyName, value, valueTwo = '' }) {\r\n const data = await _UTIL.fetchData('insertUpdateWaitingListValue', {\r\n id,\r\n linkId,\r\n propertyName,\r\n value,\r\n valueTwo,\r\n insertOrUpdate: 'U',\r\n });\r\n\r\n return data.insertUpdateWaitingListValueResult;\r\n }\r\n async function insertAssessmentData({ id, linkId, propertyName, value, valueTwo = '' }) {\r\n const data = await _UTIL.fetchData('insertUpdateWaitingListValue', {\r\n id,\r\n linkId,\r\n propertyName,\r\n value,\r\n valueTwo,\r\n insertOrUpdate: 'I',\r\n });\r\n\r\n return JSON.parse(data.insertUpdateWaitingListValueResult);\r\n }\r\n async function insertUpdateAssessmentData({ name, formName, type, value }) {\r\n if (!wlFormInfo[formName].id) {\r\n const resp = await insertAssessmentData({\r\n id: 0,\r\n linkId: getLinkIdForInsertUpdate(formName, 'I'),\r\n propertyName: name,\r\n value: setAnswerValueForInsertUpdate(value, type),\r\n });\r\n\r\n wlFormInfo[formName].id = resp[0].newRecordId;\r\n return;\r\n }\r\n\r\n updateQueue.addUpdate({\r\n id: name,\r\n data: {\r\n id: formName === 'other' ? wlNeedID : wlFormInfo[formName].id,\r\n linkId: getLinkIdForInsertUpdate(formName, 'U'),\r\n propertyName: name,\r\n value: setAnswerValueForInsertUpdate(value, type),\r\n valueTwo: '',\r\n insertOrUpdate: 'U',\r\n },\r\n });\r\n }\r\n\r\n // REVIEW / EDIT\r\n //--------------------------------------------------\r\n function mapDataBySection(assessmentData) {\r\n if (!assessmentData) return '';\r\n\r\n wlLinkID = assessmentData.wlInfoId;\r\n wlCircID = assessmentData.circumstanceId;\r\n wlNeedID = assessmentData.needId;\r\n\r\n wlParticipants = {};\r\n if (assessmentData.participants) {\r\n for (const participantData of assessmentData.participants.split('||')) {\r\n const particpant = participantData.split('|');\r\n wlParticipants[particpant[2]] = {\r\n id: particpant[2],\r\n values: [particpant[0], particpant[1]],\r\n };\r\n }\r\n }\r\n\r\n wlFormInfo['waitingListInfo'].id = wlLinkID;\r\n wlFormInfo['conditions'].id = assessmentData.conditionId;\r\n wlFormInfo['currentAvailableServices'].id = assessmentData.activeServiceId;\r\n wlFormInfo['primaryCaregiver'].id = assessmentData.primaryCaregiverId;\r\n wlFormInfo['behavioral'].id = assessmentData.riskId;\r\n wlFormInfo['physical'].id = assessmentData.physicalNeedId;\r\n wlFormInfo['medical'].id = assessmentData.medicalNeedId;\r\n wlFormInfo['other'].id = wlNeedID;\r\n wlFormInfo['riskMitigation'].id = assessmentData.riskMitigationId;\r\n wlFormInfo['icfDischarge'].id = assessmentData.icfDischargeId;\r\n wlFormInfo['intermittentSupports'].id = assessmentData.intermitentSupportsId;\r\n wlFormInfo['childProtectionAgency'].id = assessmentData.childProtectionId;\r\n wlFormInfo['adultDayEmployment'].id = assessmentData.requireWaiverFundingId;\r\n wlFormInfo['dischargePlan'].id = assessmentData.dischargePlanId;\r\n wlFormInfo['immediateNeeds'].id = assessmentData.immediateNeedId;\r\n wlFormInfo['currentNeeds'].id = assessmentData.unmetNeedId;\r\n wlFormInfo['waiverEnrollment'].id = assessmentData.waiverEnrollmentId;\r\n wlFormInfo['conclusion'].id = wlLinkID;\r\n\r\n const data = {\r\n waitingListInfo: {\r\n personCompleting: assessmentData.personCompleting,\r\n personCompletingTitle: assessmentData.personCompletingTitle,\r\n currentLivingArrangement: assessmentData.currentLivingArrangement,\r\n livingArrangementOther: assessmentData.livingArrangementOther,\r\n areasPersonNeedsHelp: assessmentData.areasPersonNeedsHelp,\r\n interviewDate: assessmentData.interviewDate,\r\n },\r\n conditions: {\r\n otherThanMentalHealth: assessmentData.otherThanMentalHealth,\r\n before22: assessmentData.before22,\r\n isConditionIndefinite: assessmentData.isConditionIndefinite,\r\n },\r\n currentAvailableServices: {\r\n isCountyBoardFunding: assessmentData.isCountyBoardFunding,\r\n isOhioEarlyInterventionService: assessmentData.isOhioEarlyInterventionService,\r\n isBCMHService: assessmentData.isBCMHService,\r\n isFCFCService: assessmentData.isFCFCService,\r\n isODEService: assessmentData.isODEService,\r\n isOODService: assessmentData.isOODService,\r\n isChildrenServices: assessmentData.isChildrenServices,\r\n isMedicaidStatePlanHomeHealthAideservice: assessmentData.isMedicaidStatePlanHomeHealthAideservice,\r\n isMedicaidStatePlanHomeHealthNursingService: assessmentData.isMedicaidStatePlanHomeHealthNursingService,\r\n isMedicaidStatePlanService: assessmentData.isMedicaidStatePlanService,\r\n isOhioHomeCareWaiverservice: assessmentData.isOhioHomeCareWaiverservice,\r\n isPassportWaiverService: assessmentData.isPassportWaiverService,\r\n isAssistedLivingWaiverService: assessmentData.isAssistedLivingWaiverService,\r\n isMYCarewaiverService: assessmentData.isMYCarewaiverService,\r\n isSelfWaiverService: assessmentData.isSelfWaiverService,\r\n isLevelOneWaiverService: assessmentData.isLevelOneWaiverService,\r\n isOtherService: assessmentData.isOtherService,\r\n otherDescription: assessmentData.otherDescription,\r\n },\r\n primaryCaregiver: {\r\n isPrimaryCaregiverUnavailable: assessmentData.isPrimaryCaregiverUnavailable,\r\n unavailableDocumentation: assessmentData.unavailableDocumentation,\r\n isActionRequiredIn30Days: assessmentData.isActionRequiredIn30Days,\r\n actionRequiredDescription: assessmentData.actionRequiredDescription,\r\n isIndividualSkillsDeclined: assessmentData.isIndividualSkillsDeclined,\r\n declinedSkillsDocumentation: assessmentData.declinedSkillsDocumentation,\r\n declinedSkillsDescription: assessmentData.declinedSkillsDescription,\r\n additionalCommentsForUnavailable: assessmentData.additionalCommentsForUnavailable,\r\n },\r\n behavioral: {\r\n risksIsNone: assessmentData.risksIsNone,\r\n risksIsRiskToSelf: assessmentData.risksIsRiskToSelf,\r\n risksIsPhysicalAggression: assessmentData.risksIsPhysicalAggression,\r\n risksIsSelfInjury: assessmentData.risksIsSelfInjury,\r\n risksIsFireSetting: assessmentData.risksIsFireSetting,\r\n risksIsElopement: assessmentData.risksIsElopement,\r\n risksIsSexualOffending: assessmentData.risksIsSexualOffending,\r\n risksIsOther: assessmentData.risksIsOther,\r\n risksFrequencyDescription: assessmentData.risksFrequencyDescription,\r\n risksHasNoDocument: assessmentData.risksHasNoDocument,\r\n risksHasPoliceReport: assessmentData.risksHasPoliceReport,\r\n risksHasIncidentReport: assessmentData.risksHasIncidentReport,\r\n risksHasBehaviorTracking: assessmentData.risksHasBehaviorTracking,\r\n risksHasPsychologicalAssessment: assessmentData.risksHasPsychologicalAssessment,\r\n risksHasOtherDocument: assessmentData.risksHasOtherDocument,\r\n risksOtherDocumentDescription: assessmentData.risksOtherDocumentDescription,\r\n },\r\n physical: {\r\n physicalNeedsIsPhysicalCareNeeded: assessmentData.physicalNeedsIsPhysicalCareNeeded,\r\n physicalNeedsIsNone: assessmentData.physicalNeedsIsNone,\r\n physicalNeedsIsPersonalCareNeeded: assessmentData.physicalNeedsIsPersonalCareNeeded,\r\n physicalNeedsIsRiskDuringPhysicalCare: assessmentData.physicalNeedsIsRiskDuringPhysicalCare,\r\n physicalNeedsIsOther: assessmentData.physicalNeedsIsOther,\r\n physicalNeedsDescription: assessmentData.physicalNeedsDescription,\r\n },\r\n medical: {\r\n medicalNeedsIsLifeThreatening: assessmentData.medicalNeedsIsLifeThreatening,\r\n medicalNeedsIsNone: assessmentData.medicalNeedsIsNone,\r\n medicalNeedsIsFrequentEmergencyVisit: assessmentData.medicalNeedsIsFrequentEmergencyVisit,\r\n medicalNeedsIsOngoingMedicalCare: assessmentData.medicalNeedsIsOngoingMedicalCare,\r\n medicalNeedsIsSpecializedCareGiveNeeded: assessmentData.medicalNeedsIsSpecializedCareGiveNeeded,\r\n medicalNeedsIsOther: assessmentData.medicalNeedsIsOther,\r\n medicalNeedsDescription: assessmentData.medicalNeedsDescription,\r\n },\r\n other: {\r\n needsIsActionRequiredRequiredIn30Days: assessmentData.needsIsActionRequiredRequiredIn30Days,\r\n needsIsContinuousSupportRequired: assessmentData.needsIsContinuousSupportRequired,\r\n },\r\n riskMitigation: {\r\n rMIsSupportNeeded: assessmentData.rMIsSupportNeeded,\r\n rMIsNone: assessmentData.rMIsNone,\r\n rMIsAdultProtectiveServiceInvestigation: assessmentData.rMIsAdultProtectiveServiceInvestigation,\r\n rMIsCountyBoardInvestigation: assessmentData.rMIsCountyBoardInvestigation,\r\n rMIsLawEnforcementInvestigation: assessmentData.rMIsLawEnforcementInvestigation,\r\n rMIsOtherInvestigation: assessmentData.rMIsOtherInvestigation,\r\n rMdescription: assessmentData.rMdescription,\r\n rMIsActionRequiredIn3oDays: assessmentData.rMIsActionRequiredIn3oDays,\r\n },\r\n icfDischarge: {\r\n icfDetermination: assessmentData.icfDetermination,\r\n icfIsICFResident: assessmentData.icfIsICFResident,\r\n icfIsNoticeIssued: assessmentData.icfIsNoticeIssued,\r\n icfIsActionRequiredIn30Days: assessmentData.icfIsActionRequiredIn30Days,\r\n },\r\n intermittentSupports: {\r\n intSupDetermination: assessmentData.intSupDetermination,\r\n intSupIsSupportNeededIn12Months: assessmentData.intSupIsSupportNeededIn12Months,\r\n intSupIsStayingLivingArrangement: assessmentData.intSupIsStayingLivingArrangement,\r\n intSupIsActionRequiredIn30Days: assessmentData.intSupIsActionRequiredIn30Days,\r\n },\r\n childProtectionAgency: {\r\n cpaDetermination: assessmentData.cpaDetermination,\r\n cpaIsReleasedNext12Months: assessmentData.cpaIsReleasedNext12Months,\r\n cpaAnticipateDate: assessmentData.cpaAnticipateDate ? assessmentData.cpaAnticipateDate.split(' ')[0] : '',\r\n cpaHasUnaddressableNeeds: assessmentData.cpaHasUnaddressableNeeds,\r\n },\r\n adultDayEmployment: {\r\n rwfWaiverFundingRequired: assessmentData.rwfWaiverFundingRequired,\r\n rwfNeedsMoreFrequency: assessmentData.rwfNeedsMoreFrequency,\r\n rwfNeedsServiceNotMetIDEA: assessmentData.rwfNeedsServiceNotMetIDEA,\r\n rwfNeedsServicesNotMetOOD: assessmentData.rwfNeedsServicesNotMetOOD,\r\n },\r\n dischargePlan: {\r\n dischargeDetermination: assessmentData.dischargeDetermination,\r\n dischargeIsICFResident: assessmentData.dischargeIsICFResident,\r\n dischargeIsInterestedInMoving: assessmentData.dischargeIsInterestedInMoving,\r\n dischargeHasDischargePlan: assessmentData.dischargeHasDischargePlan,\r\n },\r\n immediateNeeds: {\r\n immNeedsRequired: assessmentData.immNeedsRequired,\r\n immNeedsDescription: assessmentData.immNeedsDescription,\r\n },\r\n currentNeeds: {\r\n unmetNeedsHas: assessmentData.unmetNeedsHas,\r\n unmetNeedsSupports: assessmentData.unmetNeedsSupports,\r\n unmetNeedsDescription: assessmentData.unmetNeedsDescription,\r\n },\r\n waiverEnrollment: {\r\n waivEnrollWaiverEnrollmentIsRequired: assessmentData.waivEnrollWaiverEnrollmentIsRequired,\r\n waivEnrollWaiverEnrollmentDescription: assessmentData.waivEnrollWaiverEnrollmentDescription,\r\n },\r\n conclusion: {\r\n conclusionUnmetNeeds: assessmentData.conclusionResult === '1' ? '1' : '0',\r\n conclusionWaiverFunded12Months: assessmentData.conclusionResult === '2' ? '1' : '0',\r\n conclusionDoesNotRequireWaiver: assessmentData.conclusionResult === '3' ? '1' : '0',\r\n conclusionNotEligibleForWaiver: assessmentData.conclusionResult === '0' ? '1' : '0',\r\n //\r\n conclussionDeterminedBy: assessmentData.conclussionDeterminedBy,\r\n conclusionDeterminedByTitle: assessmentData.conclusionDeterminedByTitle,\r\n conclusionDeterminedOn: assessmentData.conclusionDeterminedOn,\r\n fundingSourceId: assessmentData.fundingSourceId,\r\n },\r\n };\r\n\r\n for (d in data) {\r\n for (dd in data[d]) {\r\n const fieldType = findFieldTypeById(sections[d].formElements, dd);\r\n\r\n if (fieldType === 'radiogroup') {\r\n if (data[d][dd] === '0') {\r\n data[d][dd] = `${dd}no`;\r\n }\r\n\r\n if (data[d][dd] === '1') {\r\n data[d][dd] = `${dd}yes`;\r\n }\r\n }\r\n\r\n if (fieldType === 'checkboxgroup') {\r\n if (data[d][dd] === '' || data[d][dd] === '0') {\r\n data[d][dd] = false;\r\n }\r\n\r\n if (data[d][dd] === '1') {\r\n data[d][dd] = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return data;\r\n }\r\n function enableSectionsForReview() {\r\n const isOtherThanMentalHealthYes = wlData.conditions.otherThanMentalHealth.includes('yes');\r\n const isBefore22Yes = wlData.conditions.before22.includes('yes');\r\n const isConditionIndefiniteYes = wlData.conditions.isConditionIndefinite.includes('yes');\r\n\r\n if (!isOtherThanMentalHealthYes || !isBefore22Yes || !isConditionIndefiniteYes) {\r\n return;\r\n }\r\n\r\n contributingCircumstancesWrap.classList.remove('hiddenPage');\r\n wlForms['primaryCaregiver'].form.parentElement.classList.remove('hiddenPage');\r\n wlForms['waiverEnrollment'].form.parentElement.classList.remove('hiddenPage');\r\n wlForms['currentAvailableServices'].form.parentElement.classList.remove('hiddenPage');\r\n\r\n tocLinks['contributingCircumstances'].classList.remove('hiddenPage');\r\n tocLinks['primaryCaregiver'].classList.remove('hiddenPage');\r\n tocLinks['waiverEnrollment'].classList.remove('hiddenPage');\r\n tocLinks['currentAvailableServices'].classList.remove('hiddenPage');\r\n\r\n const pgActionRequiredIn30Days = wlData.primaryCaregiver.isActionRequiredIn30Days;\r\n const pgUnavailable = wlData.primaryCaregiver.isPrimaryCaregiverUnavailable;\r\n const needOtherActionRequired = wlData.other.needsIsActionRequiredRequiredIn30Days;\r\n const rmActionRequired = wlData.riskMitigation.rMIsActionRequiredIn3oDays;\r\n const icfIsICFResident = wlData.icfDischarge.icfIsICFResident;\r\n const icfIsNoticeIssued = wlData.icfDischarge.icfIsNoticeIssued;\r\n const icfIsActionRequiredIn30Days = wlData.icfDischarge.icfIsActionRequiredIn30Days;\r\n const isAdultProtectiveServiceInvestigationChecked = wlData.riskMitigation.rMIsAdultProtectiveServiceInvestigation;\r\n const isCountyBoardInvestigationChecked = wlData.riskMitigation.rMIsCountyBoardInvestigation;\r\n const isLawEnforcementInvestigationChecked = wlData.riskMitigation.rMIsLawEnforcementInvestigation;\r\n const isOtherInvestigationChecked = wlData.riskMitigation.rMIsOtherInvestigation;\r\n\r\n if (\r\n pgActionRequiredIn30Days.includes('no') ||\r\n (pgActionRequiredIn30Days.includes('yes') && pgUnavailable.includes('no'))\r\n ) {\r\n needsWrap.classList.remove('hiddenPage');\r\n wlForms['behavioral'].form.parentElement.classList.remove('hiddenPage');\r\n wlForms['physical'].form.parentElement.classList.remove('hiddenPage');\r\n wlForms['medical'].form.parentElement.classList.remove('hiddenPage');\r\n tocLinks['needs'].classList.remove('hiddenPage');\r\n tocLinks['behavioral'].classList.remove('hiddenPage');\r\n tocLinks['physical'].classList.remove('hiddenPage');\r\n tocLinks['medical'].classList.remove('hiddenPage');\r\n }\r\n\r\n if (needOtherActionRequired.includes('no')) {\r\n wlForms['riskMitigation'].form.parentElement.classList.remove('hiddenPage');\r\n tocLinks['riskMitigation'].classList.remove('hiddenPage');\r\n }\r\n\r\n if (rmActionRequired.includes('no')) {\r\n wlForms['icfDischarge'].form.parentElement.classList.remove('hiddenPage');\r\n tocLinks['icfDischarge'].classList.remove('hiddenPage');\r\n }\r\n\r\n if (\r\n rmActionRequired.includes('no') &&\r\n wlData.riskMitigation.rMIsActionRequiredIn3oDays !== '' &&\r\n needOtherActionRequired.includes('no') &&\r\n wlData.other.needsIsActionRequiredRequiredIn30Days !== ''\r\n ) {\r\n wlForms['currentNeeds'].form.parentElement.classList.remove('hiddenPage');\r\n tocLinks['currentNeeds'].classList.remove('hiddenPage');\r\n }\r\n\r\n if (\r\n ((isAdultProtectiveServiceInvestigationChecked ||\r\n isCountyBoardInvestigationChecked ||\r\n isLawEnforcementInvestigationChecked ||\r\n isOtherInvestigationChecked) &&\r\n rmActionRequired.includes('yes')) ||\r\n needOtherActionRequired.includes('yes') ||\r\n pgActionRequiredIn30Days.includes('yes')\r\n ) {\r\n wlForms['immediateNeeds'].form.parentElement.classList.remove('hiddenPage');\r\n tocLinks['immediateNeeds'].classList.remove('hiddenPage');\r\n }\r\n\r\n if (\r\n icfIsICFResident.includes('no') ||\r\n icfIsNoticeIssued.includes('no') ||\r\n icfIsActionRequiredIn30Days.includes('no')\r\n ) {\r\n ['intermittentSupports', 'childProtectionAgency', 'adultDayEmployment', 'dischargePlan'].forEach(page => {\r\n wlForms[page].form.parentElement.classList.remove('hiddenPage');\r\n tocLinks[page].classList.remove('hiddenPage');\r\n });\r\n }\r\n }\r\n function enableInputsForReview() {\r\n // waitingListInfo\r\n //-------------------------------\r\n if (wlData.waitingListInfo.currentLivingArrangement === 'Other') {\r\n wlForms.waitingListInfo.inputs['livingArrangementOther'].toggleDisabled(false);\r\n }\r\n\r\n // currentAvailableServices\r\n //-------------------------------\r\n if (wlData.currentAvailableServices.isOtherService.includes('yes')) {\r\n wlForms['currentAvailableServices'].inputs['otherDescription'].toggleDisabled(false);\r\n }\r\n\r\n // primaryCaregiver\r\n //-------------------------------\r\n if (wlData.primaryCaregiver.isPrimaryCaregiverUnavailable.includes('yes')) {\r\n wlForms['primaryCaregiver'].inputs['unavailableDocumentation'].toggleDisabled(false);\r\n wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].toggleDisabled(false);\r\n } else {\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].toggleDisabled(false);\r\n }\r\n if (wlData.primaryCaregiver.isActionRequiredIn30Days.includes('yes')) {\r\n wlForms['primaryCaregiver'].inputs['actionRequiredDescription'].toggleDisabled(false);\r\n }\r\n if (wlData.primaryCaregiver.isIndividualSkillsDeclined.includes('yes')) {\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDocumentation'].toggleDisabled(false);\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDescription'].toggleDisabled(false);\r\n }\r\n\r\n // needs\r\n //-------------------------------\r\n const hasCheckBehavioral = [\r\n wlData.behavioral.risksIsNone,\r\n wlData.behavioral.risksIsPhysicalAggression,\r\n wlData.behavioral.risksIsSelfInjury,\r\n wlData.behavioral.risksIsFireSetting,\r\n wlData.behavioral.risksIsElopement,\r\n wlData.behavioral.risksIsSexualOffending,\r\n wlData.behavioral.risksIsOther,\r\n ].some(value => value === true);\r\n const hasCheckBehavioralDocs = [\r\n wlData.behavioral.risksHasNoDocument,\r\n wlData.behavioral.risksHasPoliceReport,\r\n wlData.behavioral.risksHasIncidentReport,\r\n wlData.behavioral.risksHasBehaviorTracking,\r\n wlData.behavioral.risksHasPsychologicalAssessment,\r\n wlData.behavioral.risksHasOtherDocument,\r\n ].some(value => value === true);\r\n const hasCheckPhysical = [\r\n wlData.physical.physicalNeedsIsNone,\r\n wlData.physical.physicalNeedsIsPersonalCareNeeded,\r\n wlData.physical.physicalNeedsIsRiskDuringPhysicalCare,\r\n wlData.physical.physicalNeedsIsOther,\r\n ].some(value => value === true);\r\n const hasCheckMedical = [\r\n wlData.medical.medicalNeedsIsNone,\r\n wlData.medical.medicalNeedsIsFrequentEmergencyVisit,\r\n wlData.medical.medicalNeedsIsOngoingMedicalCare,\r\n wlData.medical.medicalNeedsIsSpecializedCareGiveNeeded,\r\n wlData.medical.medicalNeedsIsOther,\r\n ].some(value => value === true);\r\n\r\n if (hasCheckBehavioral) {\r\n wlForms['behavioral'].inputs['risksFrequencyDescription'].toggleDisabled(wlData.behavioral.risksIsNone);\r\n\r\n wlForms['behavioral'].inputs['risksIsNone'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksIsPhysicalAggression'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksIsSelfInjury'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksIsFireSetting'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksIsElopement'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksIsSexualOffending'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksIsOther'].toggleRequired(false);\r\n }\r\n if (hasCheckBehavioralDocs) {\r\n wlForms['behavioral'].inputs['risksHasNoDocument'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksHasPoliceReport'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksHasIncidentReport'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksHasBehaviorTracking'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksHasPsychologicalAssessment'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksHasOtherDocument'].toggleRequired(false);\r\n }\r\n if (hasCheckPhysical) {\r\n wlForms['physical'].inputs['physicalNeedsDescription'].toggleDisabled(wlData.physical.physicalNeedsIsNone);\r\n\r\n wlForms['physical'].inputs['physicalNeedsIsNone'].toggleRequired(false);\r\n wlForms['physical'].inputs['physicalNeedsIsPersonalCareNeeded'].toggleRequired(false);\r\n wlForms['physical'].inputs['physicalNeedsIsRiskDuringPhysicalCare'].toggleRequired(false);\r\n wlForms['physical'].inputs['physicalNeedsIsOther'].toggleRequired(false);\r\n }\r\n if (hasCheckMedical) {\r\n wlForms['medical'].inputs['medicalNeedsDescription'].toggleDisabled(wlData.medical.medicalNeedsIsNone);\r\n\r\n wlForms['medical'].inputs['medicalNeedsIsNone'].toggleRequired(false);\r\n wlForms['medical'].inputs['medicalNeedsIsFrequentEmergencyVisit'].toggleRequired(false);\r\n wlForms['medical'].inputs['medicalNeedsIsOngoingMedicalCare'].toggleRequired(false);\r\n wlForms['medical'].inputs['medicalNeedsIsSpecializedCareGiveNeeded'].toggleRequired(false);\r\n wlForms['medical'].inputs['medicalNeedsIsOther'].toggleRequired(false);\r\n }\r\n if ((hasCheckBehavioral && hasCheckBehavioralDocs) || hasCheckPhysical || hasCheckMedical) {\r\n tocLinks['other'].classList.remove('hiddenPage');\r\n wlForms['other'].form.parentElement.classList.remove('hiddenPage');\r\n wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].toggleDisabled(false);\r\n }\r\n\r\n if (wlData.behavioral.risksHasOtherDocument) {\r\n wlForms['behavioral'].inputs['risksOtherDocumentDescription'].toggleDisabled(false);\r\n }\r\n if (wlData.other.needsIsActionRequiredRequiredIn30Days.includes('no')) {\r\n wlForms['other'].inputs['needsIsContinuousSupportRequired'].toggleDisabled(false);\r\n }\r\n\r\n // riskMitigation\r\n //-------------------------------\r\n const hasCheckRisksMitigation = [\r\n wlData.riskMitigation.rMIsNone,\r\n wlData.riskMitigation.rMIsAdultProtectiveServiceInvestigation,\r\n wlData.riskMitigation.rMIsCountyBoardInvestigation,\r\n wlData.riskMitigation.rMIsLawEnforcementInvestigation,\r\n wlData.riskMitigation.rMIsOtherInvestigation,\r\n ].some(value => value === true);\r\n\r\n if (hasCheckRisksMitigation) {\r\n wlForms['riskMitigation'].inputs['rMdescription'].toggleDisabled(wlData.riskMitigation.rMIsNone);\r\n wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].toggleDisabled(wlData.riskMitigation.rMIsNone);\r\n\r\n wlForms['riskMitigation'].inputs['rMIsNone'].toggleRequired(false);\r\n wlForms['riskMitigation'].inputs['rMIsAdultProtectiveServiceInvestigation'].toggleRequired(false);\r\n wlForms['riskMitigation'].inputs['rMIsCountyBoardInvestigation'].toggleRequired(false);\r\n wlForms['riskMitigation'].inputs['rMIsLawEnforcementInvestigation'].toggleRequired(false);\r\n wlForms['riskMitigation'].inputs['rMIsOtherInvestigation'].toggleRequired(false);\r\n }\r\n\r\n // childProtectionAgency\r\n //-------------------------------\r\n if (wlData.childProtectionAgency.cpaIsReleasedNext12Months.includes('yes')) {\r\n wlForms['childProtectionAgency'].inputs['cpaAnticipateDate'].toggleDisabled(false);\r\n }\r\n\r\n // currentNeeds\r\n //-------------------------------\r\n if (wlData.currentNeeds.unmetNeedsHas.includes('yes')) {\r\n wlForms['currentNeeds'].inputs['unmetNeedsSupports'].toggleDisabled(false);\r\n }\r\n if (wlData.currentNeeds.unmetNeedsSupports.includes('yes')) {\r\n wlForms['currentNeeds'].inputs['unmetNeedsDescription'].toggleDisabled(false);\r\n }\r\n\r\n // immediateNeeds\r\n //-------------------------------\r\n if (wlData.immediateNeeds.immNeedsRequired.includes('yes')) {\r\n wlForms['immediateNeeds'].inputs['immNeedsDescription'].toggleDisabled(false);\r\n }\r\n\r\n // waiverEnrollment\r\n //-------------------------------\r\n if (wlData.waiverEnrollment.waivEnrollWaiverEnrollmentIsRequired.includes('no')) {\r\n wlForms['waiverEnrollment'].inputs['waivEnrollWaiverEnrollmentDescription'].toggleDisabled(false);\r\n }\r\n }\r\n\r\n // EVENTS\r\n //--------------------------------------------------\r\n async function showHideNeedsPages() {\r\n const isPrimaryCaregiverUnavailable =\r\n wlForms['primaryCaregiver'].inputs['isPrimaryCaregiverUnavailable'].getValue();\r\n const isActionRequiredIn30Days = wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].getValue();\r\n const showPages = isPrimaryCaregiverUnavailable.includes('no')\r\n ? true\r\n : isPrimaryCaregiverUnavailable.includes('yes') && isActionRequiredIn30Days.includes('no')\r\n ? true\r\n : false;\r\n\r\n needsWrap.classList.toggle('hiddenPage', !showPages);\r\n tocLinks['needs'].classList.toggle('hiddenPage', !showPages);\r\n\r\n ['behavioral', 'physical', 'medical'].forEach(async page => {\r\n wlForms[page].form.parentElement.classList.toggle('hiddenPage', !showPages);\r\n tocLinks[page].classList.toggle('hiddenPage', !showPages);\r\n\r\n if (!showPages) {\r\n sectionResets[page]();\r\n } else {\r\n updateFormCompletionStatus(page);\r\n }\r\n });\r\n\r\n if (!showPages) {\r\n _UTIL.fetchData('deleteFromWaitingList', {\r\n properties: [\r\n `${wlFormInfo['behavioral'].id}|${wlFormInfo['behavioral'].dbtable}`,\r\n `${wlFormInfo['physical'].id}|${wlFormInfo['physical'].dbtable}`,\r\n `${wlFormInfo['medical'].id}|${wlFormInfo['medical'].dbtable}`,\r\n ],\r\n });\r\n }\r\n }\r\n async function showHideRiskMitigation() {\r\n const isNeedsActionRequired = wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].getValue();\r\n const showRM = isNeedsActionRequired.includes('no');\r\n\r\n wlForms['riskMitigation'].form.parentElement.classList.toggle('hiddenPage', !showRM);\r\n tocLinks['riskMitigation'].classList.toggle('hiddenPage', !showRM);\r\n\r\n if (!showRM) {\r\n sectionResets['riskMitigation']();\r\n _UTIL.fetchData('deleteFromWaitingList', {\r\n properties: [`${wlFormInfo['riskMitigation'].id}|${wlFormInfo['riskMitigation'].dbtable}`],\r\n });\r\n }\r\n }\r\n async function showHidePagesRelatedToICF() {\r\n const icfIsNoticeIssued = wlForms['icfDischarge'].inputs['icfIsNoticeIssued'].getValue();\r\n const icfIsICFResident = wlForms['icfDischarge'].inputs['icfIsICFResident'].getValue();\r\n const icfIsActionRequiredIn30Days = wlForms['icfDischarge'].inputs['icfIsActionRequiredIn30Days'].getValue();\r\n\r\n const icfAnyNo = [icfIsNoticeIssued, icfIsICFResident, icfIsActionRequiredIn30Days].some(answer =>\r\n answer.includes('no'),\r\n );\r\n\r\n ['intermittentSupports', 'childProtectionAgency', 'adultDayEmployment', 'dischargePlan'].forEach(page => {\r\n wlForms[page].form.parentElement.classList.toggle('hiddenPage', !icfAnyNo);\r\n tocLinks[page].classList.toggle('hiddenPage', !icfAnyNo);\r\n\r\n if (!icfAnyNo) {\r\n sectionResets[page]();\r\n } else {\r\n updateFormCompletionStatus(page);\r\n }\r\n });\r\n\r\n if (!icfAnyNo) {\r\n _UTIL.fetchData('deleteFromWaitingList', {\r\n properties: [\r\n `${wlFormInfo['intermittentSupports'].id}|${wlFormInfo['intermittentSupports'].dbtable}`,\r\n `${wlFormInfo['childProtectionAgency'].id}|${wlFormInfo['childProtectionAgency'].dbtable}`,\r\n `${wlFormInfo['adultDayEmployment'].id}|${wlFormInfo['adultDayEmployment'].dbtable}`,\r\n `${wlFormInfo['dischargePlan'].id}|${wlFormInfo['dischargePlan'].dbtable}`,\r\n ],\r\n });\r\n }\r\n }\r\n async function showHideICFDischarge() {\r\n const isRisksActionRequired = wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].getValue();\r\n const showICF = isRisksActionRequired.includes('no');\r\n\r\n wlForms['icfDischarge'].form.parentElement.classList.toggle('hiddenPage', !showICF);\r\n tocLinks['icfDischarge'].classList.toggle('hiddenPage', !showICF);\r\n\r\n if (!showICF) {\r\n sectionResets['icfDischarge']();\r\n _UTIL.fetchData('deleteFromWaitingList', {\r\n properties: [`${wlFormInfo['icfDischarge'].id}|${wlFormInfo['icfDischarge'].dbtable}`],\r\n });\r\n }\r\n }\r\n async function showHideImmediateNeeds() {\r\n const isRMChecked = isAnyCheckboxCheckedRiskMitigation();\r\n const isActionRequiredRM = wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].getValue();\r\n const isActionRequiredOther = wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].getValue();\r\n const isPGActionRequiredIn30Days = wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].getValue();\r\n const noticeIssuedICF = wlForms['icfDischarge'].inputs['icfIsNoticeIssued'].getValue();\r\n const isActionRequiredICF = wlForms['icfDischarge'].inputs['icfIsActionRequiredIn30Days'].getValue();\r\n const isResidentICF = wlForms['icfDischarge'].inputs['icfIsICFResident'].getValue();\r\n\r\n const isAllYesICF =\r\n noticeIssuedICF.includes('yes') && isActionRequiredICF.includes('yes') && isResidentICF.includes('yes');\r\n\r\n const showImmediateNeeds =\r\n isActionRequiredOther.includes('yes') ||\r\n (isActionRequiredRM.includes('yes') && isRMChecked) ||\r\n isPGActionRequiredIn30Days.includes('yes') ||\r\n isAllYesICF;\r\n\r\n wlForms['immediateNeeds'].form.parentElement.classList.toggle('hiddenPage', !showImmediateNeeds);\r\n tocLinks['immediateNeeds'].classList.toggle('hiddenPage', !showImmediateNeeds);\r\n wlForms['immediateNeeds'].inputs['immNeedsDescription'].toggleDisabled(!showImmediateNeeds);\r\n\r\n if (showImmediateNeeds) {\r\n wlForms['immediateNeeds'].inputs['immNeedsRequired'].setValue('immNeedsRequiredyes');\r\n await insertUpdateAssessmentData({\r\n value: 'yes',\r\n name: 'immNeedsRequired',\r\n type: 'radio',\r\n formName: 'immediateNeeds',\r\n });\r\n } else {\r\n sectionResets['immediateNeeds']();\r\n _UTIL.fetchData('deleteFromWaitingList', {\r\n properties: [`${wlFormInfo['immediateNeeds'].id}|${wlFormInfo['immediateNeeds'].dbtable}`],\r\n });\r\n }\r\n }\r\n async function showHideCurrentNeeds() {\r\n const isNeedsActionRequired = wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].getValue();\r\n const isRisksActionRequired = wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].getValue();\r\n const noticeIssuedICF = wlForms['icfDischarge'].inputs['icfIsNoticeIssued'].getValue();\r\n const isActionRequiredICF = wlForms['icfDischarge'].inputs['icfIsActionRequiredIn30Days'].getValue();\r\n const isResidentICF = wlForms['icfDischarge'].inputs['icfIsICFResident'].getValue();\r\n\r\n const isAnyNoICF =\r\n noticeIssuedICF.includes('no') || isActionRequiredICF.includes('no') || isResidentICF.includes('no');\r\n const isAllYesICF = noticeIssuedICF.includes('yes') && isActionRequiredICF.includes('yes') && isResidentICF.includes('yes');\r\n let showCurrentNeeds;\r\n\r\n if (isAllYesICF) {\r\n showCurrentNeeds = false;\r\n } else if (isAnyNoICF) {\r\n showCurrentNeeds = true;\r\n } else {\r\n showCurrentNeeds = isNeedsActionRequired.includes('no') && isRisksActionRequired.includes('no');\r\n }\r\n\r\n wlForms['currentNeeds'].form.parentElement.classList.toggle('hiddenPage', !showCurrentNeeds);\r\n tocLinks['currentNeeds'].classList.toggle('hiddenPage', !showCurrentNeeds);\r\n\r\n if (!showCurrentNeeds) {\r\n sectionResets['currentNeeds']();\r\n _UTIL.fetchData('deleteFromWaitingList', {\r\n properties: [`${wlFormInfo['currentNeeds'].id}|${wlFormInfo['currentNeeds'].dbtable}`],\r\n });\r\n }\r\n }\r\n //--------------------------------------------------\r\n function isConditionInputsAllYes() {\r\n return [\r\n wlForms['conditions'].inputs['otherThanMentalHealth'].getValue('otherThanMentalHealthyes'),\r\n wlForms['conditions'].inputs['before22'].getValue('before22yes'),\r\n wlForms['conditions'].inputs['isConditionIndefinite'].getValue('isConditionIndefiniteyes'),\r\n ].every(element => element === true);\r\n }\r\n function isAnyCheckboxCheckedRiskMitigation() {\r\n return [\r\n wlForms['riskMitigation'].inputs['rMIsAdultProtectiveServiceInvestigation'].getValue(),\r\n wlForms['riskMitigation'].inputs['rMIsCountyBoardInvestigation'].getValue(),\r\n wlForms['riskMitigation'].inputs['rMIsLawEnforcementInvestigation'].getValue(),\r\n wlForms['riskMitigation'].inputs['rMIsOtherInvestigation'].getValue(),\r\n ].some(element => element === true);\r\n }\r\n function isAnyCheckboxCheckedBehaviors() {\r\n return [\r\n wlForms['behavioral'].inputs['risksIsPhysicalAggression'].getValue(),\r\n wlForms['behavioral'].inputs['risksIsSelfInjury'].getValue(),\r\n wlForms['behavioral'].inputs['risksIsFireSetting'].getValue(),\r\n wlForms['behavioral'].inputs['risksIsElopement'].getValue(),\r\n wlForms['behavioral'].inputs['risksIsSexualOffending'].getValue(),\r\n wlForms['behavioral'].inputs['risksIsOther'].getValue(),\r\n ].some(element => element === true);\r\n }\r\n function isAnyCheckboxCheckedBehaviorsDocs() {\r\n return [\r\n wlForms['behavioral'].inputs['risksHasPoliceReport'].getValue(),\r\n wlForms['behavioral'].inputs['risksHasIncidentReport'].getValue(),\r\n wlForms['behavioral'].inputs['risksHasBehaviorTracking'].getValue(),\r\n wlForms['behavioral'].inputs['risksHasPsychologicalAssessment'].getValue(),\r\n wlForms['behavioral'].inputs['risksHasOtherDocument'].getValue(),\r\n ].some(element => element === true);\r\n }\r\n function isAnyCheckboxCheckedPhysical() {\r\n return [\r\n wlForms['physical'].inputs['physicalNeedsIsPersonalCareNeeded'].getValue(),\r\n wlForms['physical'].inputs['physicalNeedsIsRiskDuringPhysicalCare'].getValue(),\r\n wlForms['physical'].inputs['physicalNeedsIsOther'].getValue(),\r\n ].some(element => element === true);\r\n }\r\n function isAnyCheckboxCheckedMedical() {\r\n return [\r\n wlForms['medical'].inputs['medicalNeedsIsFrequentEmergencyVisit'].getValue(),\r\n wlForms['medical'].inputs['medicalNeedsIsOngoingMedicalCare'].getValue(),\r\n wlForms['medical'].inputs['medicalNeedsIsSpecializedCareGiveNeeded'].getValue(),\r\n wlForms['medical'].inputs['medicalNeedsIsOther'].getValue(),\r\n ].some(element => element === true);\r\n }\r\n //--------------------------------------------------\r\n async function needsOtherCheck() {\r\n const hasCheckBehaviorOne = isAnyCheckboxCheckedBehaviors();\r\n const hasCheckBehaviorTwo = isAnyCheckboxCheckedBehaviorsDocs();\r\n const hasCheckPhysical = isAnyCheckboxCheckedPhysical();\r\n const hasCheckMedical = isAnyCheckboxCheckedMedical();\r\n\r\n const needsIsActionEnabled = (hasCheckBehaviorOne && hasCheckBehaviorTwo) || hasCheckPhysical || hasCheckMedical;\r\n\r\n wlForms['other'].form.parentElement.classList.toggle('hiddenPage', !needsIsActionEnabled);\r\n tocLinks['other'].classList.toggle('hiddenPage', !needsIsActionEnabled);\r\n wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].toggleDisabled(needsIsActionEnabled === false);\r\n\r\n if (!needsIsActionEnabled) {\r\n wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].setValue('');\r\n wlForms['other'].inputs['needsIsContinuousSupportRequired'].setValue('');\r\n wlForms['other'].inputs['needsIsContinuousSupportRequired'].toggleDisabled(true);\r\n }\r\n\r\n updateFormCompletionStatus('other');\r\n\r\n if (!needsIsActionEnabled) {\r\n _UTIL.fetchData('deleteFromWaitingList', {\r\n properties: [`${wlFormInfo['other'].id}|${wlFormInfo['other'].dbtable}`],\r\n });\r\n }\r\n }\r\n //--------------------------------------------------\r\n async function intermittentSupportsDetermination() {\r\n const data = [\r\n wlForms['intermittentSupports'].inputs['intSupIsSupportNeededIn12Months'].getValue(\r\n 'intSupIsSupportNeededIn12Monthsyes',\r\n ),\r\n wlForms['intermittentSupports'].inputs['intSupIsStayingLivingArrangement'].getValue(\r\n 'intSupIsStayingLivingArrangementyes',\r\n ),\r\n wlForms['intermittentSupports'].inputs['intSupIsActionRequiredIn30Days'].getValue(\r\n 'intSupIsActionRequiredIn30Daysyes',\r\n ),\r\n ];\r\n\r\n const allHaveCheck = data.every(element => element === true);\r\n const inputId = allHaveCheck ? 'intSupDeterminationyes' : 'intSupDeterminationno';\r\n\r\n wlForms['intermittentSupports'].inputs['intSupDetermination'].setValue(inputId);\r\n await insertUpdateAssessmentData({\r\n value: allHaveCheck ? 'yes' : 'no',\r\n name: 'intSupDetermination',\r\n type: 'radio',\r\n formName: 'intermittentSupports',\r\n });\r\n\r\n await currentNeedsDetermination();\r\n }\r\n async function icfDischargeDetermination() {\r\n const data = [\r\n wlForms['icfDischarge'].inputs['icfIsICFResident'].getValue('icfIsICFResidentyes'),\r\n wlForms['icfDischarge'].inputs['icfIsNoticeIssued'].getValue('icfIsNoticeIssuedyes'),\r\n wlForms['icfDischarge'].inputs['icfIsActionRequiredIn30Days'].getValue('icfIsActionRequiredIn30Daysyes'),\r\n ];\r\n\r\n const allHaveCheck = data.every(element => element === true);\r\n const inputId = allHaveCheck ? 'icfDeterminationyes' : 'icfDeterminationno';\r\n\r\n wlForms['icfDischarge'].inputs['icfDetermination'].setValue(inputId);\r\n await insertUpdateAssessmentData({\r\n value: allHaveCheck ? 'yes' : 'no',\r\n name: 'icfDetermination',\r\n type: 'radio',\r\n formName: 'icfDischarge',\r\n });\r\n }\r\n async function childProtectionAgencyDetermination() {\r\n const data = [\r\n wlForms['childProtectionAgency'].inputs['cpaIsReleasedNext12Months'].getValue('cpaIsReleasedNext12Monthsyes'),\r\n wlForms['childProtectionAgency'].inputs['cpaHasUnaddressableNeeds'].getValue('cpaHasUnaddressableNeedsyes'),\r\n ];\r\n\r\n const allHaveCheck = data.every(element => element === true);\r\n const inputId = allHaveCheck ? 'cpaDeterminationyes' : 'cpaDeterminationno';\r\n\r\n wlForms['childProtectionAgency'].inputs['cpaDetermination'].setValue(inputId);\r\n\r\n await insertUpdateAssessmentData({\r\n value: allHaveCheck ? 'yes' : 'no',\r\n name: 'cpaDetermination',\r\n type: 'radio',\r\n formName: 'childProtectionAgency',\r\n });\r\n\r\n await currentNeedsDetermination();\r\n }\r\n async function adultDayEmploymentDetermination() {\r\n const data = [\r\n wlForms['adultDayEmployment'].inputs['rwfNeedsMoreFrequency'].getValue('rwfNeedsMoreFrequencyyes'),\r\n wlForms['adultDayEmployment'].inputs['rwfNeedsServiceNotMetIDEA'].getValue('rwfNeedsServiceNotMetIDEAyes'),\r\n wlForms['adultDayEmployment'].inputs['rwfNeedsServicesNotMetOOD'].getValue('rwfNeedsServicesNotMetOODyes'),\r\n ];\r\n\r\n const allHaveCheck = data.every(element => element === true);\r\n const inputId = allHaveCheck ? 'rwfWaiverFundingRequiredyes' : 'rwfWaiverFundingRequiredno';\r\n\r\n wlForms['adultDayEmployment'].inputs['rwfWaiverFundingRequired'].setValue(inputId);\r\n\r\n await insertUpdateAssessmentData({\r\n value: allHaveCheck ? 'yes' : 'no',\r\n name: 'rwfWaiverFundingRequired',\r\n type: 'radio',\r\n formName: 'adultDayEmployment',\r\n });\r\n\r\n await currentNeedsDetermination();\r\n }\r\n async function dischargePlanDetermination() {\r\n const data = [\r\n wlForms['dischargePlan'].inputs['dischargeIsICFResident'].getValue('dischargeIsICFResidentyes'),\r\n wlForms['dischargePlan'].inputs['dischargeIsInterestedInMoving'].getValue('dischargeIsInterestedInMovingyes'),\r\n wlForms['dischargePlan'].inputs['dischargeHasDischargePlan'].getValue('dischargeHasDischargePlanyes'),\r\n ];\r\n\r\n const allHaveCheck = data.every(element => element === true);\r\n const inputId = allHaveCheck ? 'dischargeDeterminationyes' : 'dischargeDeterminationno';\r\n\r\n wlForms['dischargePlan'].inputs['dischargeDetermination'].setValue(inputId);\r\n\r\n await insertUpdateAssessmentData({\r\n value: allHaveCheck ? 'yes' : 'no',\r\n name: 'dischargeDetermination',\r\n type: 'radio',\r\n formName: 'dischargePlan',\r\n });\r\n\r\n await currentNeedsDetermination();\r\n }\r\n async function currentNeedsDetermination() {\r\n if (tocLinks['currentNeeds'].classList.contains('hiddenPage')) return;\r\n\r\n const isPrimaryCaregiverUnavailable =\r\n wlForms['primaryCaregiver'].inputs['isPrimaryCaregiverUnavailable'].getValue();\r\n const isActionRequiredIn30Days = wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].getValue();\r\n const isIndividualSkillsDeclined = wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].getValue();\r\n const risksIsRiskToSelf = wlForms['behavioral'].inputs['risksIsRiskToSelf'].getValue();\r\n const physicalNeedsIsPhysicalCareNeeded =\r\n wlForms['physical'].inputs['physicalNeedsIsPhysicalCareNeeded'].getValue();\r\n const medicalNeedsIsLifeThreatening = wlForms['medical'].inputs['medicalNeedsIsLifeThreatening'].getValue();\r\n const needsIsContinuousSupportRequired = wlForms['other'].inputs['needsIsContinuousSupportRequired'].getValue();\r\n const intSupDetermination = wlForms['intermittentSupports'].inputs['intSupDetermination'].getValue();\r\n const cpaDetermination = wlForms['childProtectionAgency'].inputs['cpaDetermination'].getValue();\r\n const rwfWaiverFundingRequired = wlForms['adultDayEmployment'].inputs['rwfWaiverFundingRequired'].getValue();\r\n const dischargeDetermination = wlForms['dischargePlan'].inputs['dischargeDetermination'].getValue();\r\n\r\n const conditions = [\r\n isPrimaryCaregiverUnavailable.includes('yes') && isActionRequiredIn30Days.includes('no'),\r\n isPrimaryCaregiverUnavailable.includes('no') && isIndividualSkillsDeclined.includes('yes'),\r\n risksIsRiskToSelf.includes('yes'),\r\n physicalNeedsIsPhysicalCareNeeded.includes('yes'),\r\n medicalNeedsIsLifeThreatening.includes('yes') && needsIsContinuousSupportRequired.includes('yes'),\r\n intSupDetermination.includes('yes'),\r\n cpaDetermination.includes('yes'),\r\n rwfWaiverFundingRequired.includes('yes'),\r\n dischargeDetermination.includes('yes'),\r\n ];\r\n\r\n let updateTo = 'no';\r\n\r\n for (const condition of conditions) {\r\n if (condition) {\r\n updateTo = 'yes';\r\n }\r\n }\r\n\r\n wlForms['currentNeeds'].inputs['unmetNeedsHas'].setValue(`unmetNeedsHas${updateTo}`);\r\n wlForms['currentNeeds'].inputs['unmetNeedsSupports'].toggleDisabled(updateTo === 'yes' ? false : true);\r\n\r\n if (updateTo === 'no') {\r\n wlForms['currentNeeds'].inputs['unmetNeedsSupports'].setValue('');\r\n wlForms['currentNeeds'].inputs['unmetNeedsDescription'].toggleDisabled(true);\r\n wlForms['currentNeeds'].inputs['unmetNeedsDescription'].setValue('');\r\n\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: 'unmetNeedsSupports',\r\n type: 'radio',\r\n formName: 'currentNeeds',\r\n });\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'unmetNeedsDescription',\r\n type: 'text',\r\n formName: 'currentNeeds',\r\n });\r\n }\r\n\r\n await insertUpdateAssessmentData({\r\n value: updateTo,\r\n name: 'unmetNeedsHas',\r\n type: 'radio',\r\n formName: 'currentNeeds',\r\n });\r\n\r\n updateFormCompletionStatus('currentNeeds');\r\n }\r\n async function immediateNeedsDetermination() {\r\n // immNeedsRequired\r\n }\r\n //--------------------------------------------------\r\n function setConclusion() {\r\n if (!isAssessmentComplete) return;\r\n\r\n const conditionPageAllYes = isConditionInputsAllYes();\r\n\r\n const immNeedsRequired = wlForms['immediateNeeds'].inputs['immNeedsRequired'].getValue();\r\n const waiverEnrollRequired = wlForms['waiverEnrollment'].inputs['waivEnrollWaiverEnrollmentIsRequired'].getValue();\r\n const unmetNeedsHas = wlForms['currentNeeds'].inputs['unmetNeedsHas'].getValue();\r\n const unmetNeedsSupports = wlForms['currentNeeds'].inputs['unmetNeedsSupports'].getValue();\r\n\r\n wlForms['conclusion'].inputs['conclusionUnmetNeeds'].setValue(false);\r\n wlForms['conclusion'].inputs['conclusionNotEligibleForWaiver'].setValue(false);\r\n wlForms['conclusion'].inputs['conclusionDoesNotRequireWaiver'].setValue(false);\r\n wlForms['conclusion'].inputs['conclusionWaiverFunded12Months'].setValue(false);\r\n\r\n if (!conditionPageAllYes) {\r\n wlForms['conclusion'].inputs['conclusionNotEligibleForWaiver'].setValue(true);\r\n insertUpdateAssessmentData({\r\n name: 'conclusionResult',\r\n formName: 'waitingListInfo',\r\n type: 'custom',\r\n value: 0,\r\n });\r\n return;\r\n }\r\n\r\n if (waiverEnrollRequired.includes('no')) {\r\n wlForms['conclusion'].inputs['conclusionDoesNotRequireWaiver'].setValue(true);\r\n insertUpdateAssessmentData({\r\n name: 'conclusionResult',\r\n formName: 'waitingListInfo',\r\n type: 'custom',\r\n value: 3,\r\n });\r\n return;\r\n }\r\n\r\n if (!tocLinks['immediateNeeds'].classList.contains('hiddenPage') && immNeedsRequired.includes('yes')) {\r\n wlForms['conclusion'].inputs['conclusionUnmetNeeds'].setValue(true);\r\n insertUpdateAssessmentData({\r\n name: 'conclusionResult',\r\n formName: 'waitingListInfo',\r\n type: 'custom',\r\n value: 1,\r\n });\r\n return;\r\n }\r\n\r\n if (!tocLinks['currentNeeds'].classList.contains('hiddenPage')) {\r\n if (unmetNeedsHas.includes('yes') && unmetNeedsSupports.includes('yes')) {\r\n wlForms['conclusion'].inputs['conclusionWaiverFunded12Months'].setValue(true);\r\n insertUpdateAssessmentData({\r\n name: 'conclusionResult',\r\n formName: 'waitingListInfo',\r\n type: 'custom',\r\n value: 2,\r\n });\r\n }\r\n if (unmetNeedsHas.includes('no') || unmetNeedsSupports.includes('no')) {\r\n wlForms['conclusion'].inputs['conclusionDoesNotRequireWaiver'].setValue(true);\r\n insertUpdateAssessmentData({\r\n name: 'conclusionResult',\r\n formName: 'waitingListInfo',\r\n type: 'custom',\r\n value: 3,\r\n });\r\n }\r\n }\r\n }\r\n //--------------------------------------------------\r\n const onChangeCallbacks = {\r\n //* waitingListInfo\r\n currentLivingArrangement: async ({ value }) => {\r\n wlForms['waitingListInfo'].inputs['livingArrangementOther'].toggleDisabled(value !== 'Other');\r\n\r\n if (value !== 'Other' && wlForms['waitingListInfo'].inputs['livingArrangementOther'].getValue() !== '') {\r\n wlForms['waitingListInfo'].inputs['livingArrangementOther'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'livingArrangementOther',\r\n type: 'text',\r\n formName: 'waitingListInfo',\r\n });\r\n }\r\n },\r\n //* currentAvailableServices\r\n isOtherService: async ({ value }) => {\r\n wlForms['currentAvailableServices'].inputs['otherDescription'].toggleDisabled(value === 'yes' ? false : true);\r\n\r\n if (value !== 'yes') {\r\n wlForms['currentAvailableServices'].inputs['otherDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'otherDescription',\r\n type: 'text',\r\n formName: 'currentAvailableServices',\r\n });\r\n }\r\n },\r\n //* primaryCaregiver\r\n isPrimaryCaregiverUnavailable: async ({ value }) => {\r\n const isActionRequiredIn30Days = wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].getValue();\r\n const enableIsIndividualSkillsDeclined =\r\n value === 'no' ? true : isActionRequiredIn30Days.includes('no') ? true : false;\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].toggleDisabled(\r\n !enableIsIndividualSkillsDeclined,\r\n );\r\n if (!enableIsIndividualSkillsDeclined) {\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].setValue('');\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'isIndividualSkillsDeclined',\r\n type: 'radio',\r\n formName: 'primaryCaregiver',\r\n });\r\n }\r\n\r\n wlForms['primaryCaregiver'].inputs['unavailableDocumentation'].toggleDisabled(value === 'yes' ? false : true);\r\n wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].toggleDisabled(value === 'yes' ? false : true);\r\n\r\n if (value !== 'yes') {\r\n wlForms['primaryCaregiver'].inputs['unavailableDocumentation'].setValue('');\r\n wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].setValue('');\r\n wlForms['primaryCaregiver'].inputs['actionRequiredDescription'].setValue('');\r\n wlForms['primaryCaregiver'].inputs['actionRequiredDescription'].toggleDisabled(true);\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'unavailableDocumentation',\r\n type: 'text',\r\n formName: 'primaryCaregiver',\r\n });\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'isActionRequiredIn30Days',\r\n type: 'radio',\r\n formName: 'primaryCaregiver',\r\n });\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'actionRequiredDescription',\r\n type: 'text',\r\n formName: 'primaryCaregiver',\r\n });\r\n } else {\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDocumentation'].setValue('');\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDescription'].setValue('');\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDocumentation'].toggleDisabled(true);\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDescription'].toggleDisabled(true);\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'declinedSkillsDocumentation',\r\n type: 'text',\r\n formName: 'primaryCaregiver',\r\n });\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'declinedSkillsDescription',\r\n type: 'text',\r\n formName: 'primaryCaregiver',\r\n });\r\n }\r\n\r\n await showHideNeedsPages();\r\n await showHideImmediateNeeds();\r\n await currentNeedsDetermination();\r\n },\r\n isActionRequiredIn30Days: async ({ value }) => {\r\n const isPrimaryCaregiverUnavailable =\r\n wlForms['primaryCaregiver'].inputs['isPrimaryCaregiverUnavailable'].getValue();\r\n const enableIsIndividualSkillsDeclined = isPrimaryCaregiverUnavailable.includes('no')\r\n ? true\r\n : value === 'no'\r\n ? true\r\n : false;\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].toggleDisabled(\r\n !enableIsIndividualSkillsDeclined,\r\n );\r\n if (!enableIsIndividualSkillsDeclined) {\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].setValue('');\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'isIndividualSkillsDeclined',\r\n type: 'radio',\r\n formName: 'primaryCaregiver',\r\n });\r\n }\r\n\r\n wlForms['primaryCaregiver'].inputs['actionRequiredDescription'].toggleDisabled(value === 'yes' ? false : true);\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].toggleDisabled(value === 'no' ? false : true);\r\n\r\n if (value !== 'yes') {\r\n wlForms['primaryCaregiver'].inputs['actionRequiredDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'actionRequiredDescription',\r\n type: 'text',\r\n formName: 'primaryCaregiver',\r\n });\r\n } else {\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: 'no',\r\n name: 'isIndividualSkillsDeclined',\r\n type: 'radio',\r\n formName: 'primaryCaregiver',\r\n });\r\n }\r\n\r\n await showHideNeedsPages();\r\n await showHideImmediateNeeds();\r\n await currentNeedsDetermination();\r\n },\r\n isIndividualSkillsDeclined: async ({ value }) => {\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDocumentation'].toggleDisabled(value === 'yes' ? false : true);\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDescription'].toggleDisabled(value === 'yes' ? false : true);\r\n\r\n if (value !== 'yes') {\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDocumentation'].setValue('');\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDescription'].setValue('');\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'declinedSkillsDocumentation',\r\n type: 'text',\r\n formName: 'primaryCaregiver',\r\n });\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'declinedSkillsDescription',\r\n type: 'text',\r\n formName: 'primaryCaregiver',\r\n });\r\n }\r\n\r\n await currentNeedsDetermination();\r\n },\r\n //* behavioral\r\n risksIs: async ({ name, value }) => {\r\n const isNotAppChecked = name === 'risksIsNone' && value === 'on';\r\n const hasCheck = isNotAppChecked ? false : isAnyCheckboxCheckedBehaviors();\r\n const hasCheckDocs = isAnyCheckboxCheckedBehaviorsDocs();\r\n const risksIsRiskToSelfInputId = hasCheck && hasCheckDocs ? 'risksIsRiskToSelfyes' : 'risksIsRiskToSelfno';\r\n\r\n wlForms['behavioral'].inputs['risksFrequencyDescription'].toggleDisabled(!hasCheck);\r\n if (!hasCheck) {\r\n wlForms['behavioral'].inputs['risksFrequencyDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'risksFrequencyDescription',\r\n type: 'text',\r\n formName: 'behavioral',\r\n });\r\n }\r\n\r\n wlForms['behavioral'].inputs['risksIsRiskToSelf'].setValue(risksIsRiskToSelfInputId);\r\n await insertUpdateAssessmentData({\r\n value: hasCheck && hasCheckDocs ? 'yes' : 'no',\r\n name: 'risksIsRiskToSelf',\r\n type: 'radio',\r\n formName: 'behavioral',\r\n });\r\n\r\n [\r\n 'risksIsNone',\r\n 'risksIsPhysicalAggression',\r\n 'risksIsSelfInjury',\r\n 'risksIsFireSetting',\r\n 'risksIsElopement',\r\n 'risksIsSexualOffending',\r\n 'risksIsOther',\r\n ].forEach(async inputId => {\r\n wlForms['behavioral'].inputs[inputId].toggleRequired(hasCheck || isNotAppChecked ? false : true);\r\n\r\n if (wlForms['behavioral'].inputs[inputId].getValue()) {\r\n if (inputId === 'risksIsNone' && hasCheck) {\r\n wlForms['behavioral'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'behavioral',\r\n });\r\n } else if (isNotAppChecked && inputId !== 'risksIsNone') {\r\n wlForms['behavioral'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'behavioral',\r\n });\r\n }\r\n }\r\n });\r\n\r\n await currentNeedsDetermination();\r\n await needsOtherCheck();\r\n },\r\n risksHas: async ({ name, value }) => {\r\n const isNotAppChecked = name === 'risksHasNoDocument' && value === 'on';\r\n const hasCheck = isAnyCheckboxCheckedBehaviors();\r\n const hasCheckDocs = isNotAppChecked ? false : isAnyCheckboxCheckedBehaviorsDocs();\r\n const risksIsRiskToSelfInputId = hasCheck && hasCheckDocs ? 'risksIsRiskToSelfyes' : 'risksIsRiskToSelfno';\r\n\r\n wlForms['behavioral'].inputs['risksIsRiskToSelf'].setValue(risksIsRiskToSelfInputId);\r\n await insertUpdateAssessmentData({\r\n value: hasCheck && hasCheckDocs ? 'yes' : 'no',\r\n name: 'risksIsRiskToSelf',\r\n type: 'radio',\r\n formName: 'behavioral',\r\n });\r\n [\r\n 'risksHasNoDocument',\r\n 'risksHasPoliceReport',\r\n 'risksHasIncidentReport',\r\n 'risksHasBehaviorTracking',\r\n 'risksHasPsychologicalAssessment',\r\n 'risksHasOtherDocument',\r\n ].forEach(async inputId => {\r\n wlForms['behavioral'].inputs[inputId].toggleRequired(hasCheckDocs || isNotAppChecked ? false : true);\r\n\r\n if (wlForms['behavioral'].inputs[inputId].getValue()) {\r\n if (hasCheckDocs && inputId === 'risksHasNoDocument') {\r\n wlForms['behavioral'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'behavioral',\r\n });\r\n } else if (isNotAppChecked && inputId !== 'risksHasNoDocument') {\r\n wlForms['behavioral'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'behavioral',\r\n });\r\n }\r\n }\r\n });\r\n\r\n await currentNeedsDetermination();\r\n await needsOtherCheck();\r\n },\r\n risksHasOtherDocument: async ({ name, value }) => {\r\n wlForms['behavioral'].inputs['risksOtherDocumentDescription'].toggleDisabled(value === 'on' ? false : true);\r\n\r\n if (value !== 'on') {\r\n wlForms['behavioral'].inputs['risksOtherDocumentDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: 'risksOtherDocumentDescription',\r\n type: 'text',\r\n formName: 'behavioral',\r\n });\r\n }\r\n },\r\n //* physical\r\n physicalNeeds: async ({ name, value }) => {\r\n const isNotAppChecked = name === 'physicalNeedsIsNone' && value === 'on';\r\n const hasCheck = isNotAppChecked ? false : isAnyCheckboxCheckedPhysical();\r\n const isPhysicalCareNeededInputId = hasCheck\r\n ? 'physicalNeedsIsPhysicalCareNeededyes'\r\n : 'physicalNeedsIsPhysicalCareNeededno';\r\n\r\n wlForms['physical'].inputs['physicalNeedsDescription'].toggleDisabled(!hasCheck);\r\n if (!hasCheck) {\r\n wlForms['physical'].inputs['physicalNeedsDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'physicalNeedsDescription',\r\n type: 'text',\r\n formName: 'physical',\r\n });\r\n }\r\n\r\n wlForms['physical'].inputs['physicalNeedsIsPhysicalCareNeeded'].setValue(isPhysicalCareNeededInputId);\r\n await insertUpdateAssessmentData({\r\n value: hasCheck ? 'yes' : 'no',\r\n name: 'physicalNeedsIsPhysicalCareNeeded',\r\n type: 'radio',\r\n formName: 'physical',\r\n });\r\n [\r\n 'physicalNeedsIsNone',\r\n 'physicalNeedsIsPersonalCareNeeded',\r\n 'physicalNeedsIsRiskDuringPhysicalCare',\r\n 'physicalNeedsIsOther',\r\n ].forEach(async inputId => {\r\n wlForms['physical'].inputs[inputId].toggleRequired(hasCheck || isNotAppChecked ? false : true);\r\n\r\n if (wlForms['physical'].inputs[inputId].getValue()) {\r\n if (hasCheck && inputId === 'physicalNeedsIsNone') {\r\n wlForms['physical'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'physical',\r\n });\r\n } else if (isNotAppChecked && inputId !== 'physicalNeedsIsNone') {\r\n wlForms['physical'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'physical',\r\n });\r\n }\r\n }\r\n });\r\n\r\n await currentNeedsDetermination();\r\n await needsOtherCheck();\r\n },\r\n //* medical\r\n medicalNeeds: async ({ name, value }) => {\r\n const isNotAppChecked = name === 'medicalNeedsIsNone' && value === 'on';\r\n const hasCheck = isNotAppChecked ? false : isAnyCheckboxCheckedMedical();\r\n const inputId = hasCheck ? 'medicalNeedsIsLifeThreateningyes' : 'medicalNeedsIsLifeThreateningno';\r\n\r\n wlForms['medical'].inputs['medicalNeedsDescription'].toggleDisabled(!hasCheck);\r\n if (!hasCheck) {\r\n wlForms['medical'].inputs['medicalNeedsDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'medicalNeedsDescription',\r\n type: 'text',\r\n formName: 'medical',\r\n });\r\n }\r\n\r\n wlForms['medical'].inputs['medicalNeedsIsLifeThreatening'].setValue(inputId);\r\n await insertUpdateAssessmentData({\r\n value: hasCheck ? 'yes' : 'no',\r\n name: 'medicalNeedsIsLifeThreatening',\r\n type: 'radio',\r\n formName: 'medical',\r\n });\r\n\r\n [\r\n 'medicalNeedsIsNone',\r\n 'medicalNeedsIsFrequentEmergencyVisit',\r\n 'medicalNeedsIsOngoingMedicalCare',\r\n 'medicalNeedsIsSpecializedCareGiveNeeded',\r\n 'medicalNeedsIsOther',\r\n ].forEach(async inputId => {\r\n wlForms['medical'].inputs[inputId].toggleRequired(hasCheck || isNotAppChecked ? false : true);\r\n\r\n if (wlForms['medical'].inputs[inputId].getValue()) {\r\n if (hasCheck && inputId === 'medicalNeedsIsNone') {\r\n wlForms['medical'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'medical',\r\n });\r\n } else if (isNotAppChecked && inputId !== 'medicalNeedsIsNone') {\r\n wlForms['medical'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'medical',\r\n });\r\n }\r\n }\r\n });\r\n\r\n await currentNeedsDetermination();\r\n await needsOtherCheck();\r\n },\r\n //* other\r\n needsIsActionRequiredRequiredIn30Days: async ({ value }) => {\r\n const isNeedsActionRequiredYes = value === 'yes';\r\n\r\n wlForms['other'].inputs['needsIsContinuousSupportRequired'].toggleDisabled(isNeedsActionRequiredYes);\r\n\r\n if (isNeedsActionRequiredYes) {\r\n wlForms['other'].inputs['needsIsContinuousSupportRequired'].setValue('');\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'needsIsContinuousSupportRequired',\r\n type: 'radio',\r\n formName: 'other',\r\n });\r\n }\r\n\r\n await showHideRiskMitigation();\r\n await showHideImmediateNeeds();\r\n await showHideCurrentNeeds();\r\n },\r\n needsIsContinuousSupportRequired: async () => {\r\n await currentNeedsDetermination();\r\n },\r\n //* riskMitigation\r\n rMIs: async ({ name, value }) => {\r\n let cleardNotApp = false;\r\n let hasOtherCheck = isAnyCheckboxCheckedRiskMitigation();\r\n\r\n [\r\n 'rMIsNone',\r\n 'rMIsAdultProtectiveServiceInvestigation',\r\n 'rMIsCountyBoardInvestigation',\r\n 'rMIsLawEnforcementInvestigation',\r\n 'rMIsOtherInvestigation',\r\n ].forEach(async inputId => {\r\n const isRequired = hasOtherCheck || (name === 'rMIsNone' && value === 'on') ? false : true\r\n wlForms['riskMitigation'].inputs[inputId].toggleRequired(isRequired);\r\n\r\n if (wlForms['riskMitigation'].inputs[inputId].getValue()) {\r\n if (name === 'rMIsNone' && inputId !== 'rMIsNone') {\r\n wlForms['riskMitigation'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'riskMitigation',\r\n });\r\n } else if (hasOtherCheck && inputId === 'rMIsNone') {\r\n cleardNotApp = true;\r\n wlForms['riskMitigation'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'riskMitigation',\r\n });\r\n }\r\n }\r\n });\r\n\r\n hasOtherCheck = isAnyCheckboxCheckedRiskMitigation();\r\n\r\n wlForms['riskMitigation'].inputs['rMdescription'].toggleDisabled(!hasOtherCheck);\r\n wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].toggleDisabled(!hasOtherCheck);\r\n\r\n const isNotAppChecked = wlForms['riskMitigation'].inputs['rMIsNone'].getValue();\r\n\r\n if (isNotAppChecked) {\r\n wlForms['riskMitigation'].inputs['rMdescription'].setValue('');\r\n wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].setValue('rMIsActionRequiredIn3oDaysno');\r\n wlForms['riskMitigation'].inputs['rMIsSupportNeeded'].setValue('rMIsSupportNeededno');\r\n\r\n await insertUpdateAssessmentData({\r\n value: 'no',\r\n name: 'rMIsActionRequiredIn3oDays',\r\n type: 'radio',\r\n formName: 'riskMitigation',\r\n });\r\n await insertUpdateAssessmentData({\r\n value: 'no',\r\n name: 'rMIsSupportNeeded',\r\n type: 'radio',\r\n formName: 'riskMitigation',\r\n });\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'rMdescription',\r\n type: 'text',\r\n formName: 'riskMitigation',\r\n });\r\n } else if (cleardNotApp) {\r\n wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].setValue('');\r\n wlForms['riskMitigation'].inputs['rMIsSupportNeeded'].setValue('');\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'rMIsActionRequiredIn3oDays',\r\n type: 'radio',\r\n formName: 'riskMitigation',\r\n });\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'rMIsSupportNeeded',\r\n type: 'radio',\r\n formName: 'riskMitigation',\r\n });\r\n }\r\n\r\n await showHideICFDischarge();\r\n await showHideImmediateNeeds();\r\n await showHideCurrentNeeds();\r\n },\r\n rMIsActionRequiredIn3oDays: async ({ value }) => {\r\n const isRisksActionRequired = value;\r\n const inputId = isRisksActionRequired === 'yes' ? 'rMIsSupportNeededyes' : 'rMIsSupportNeededno';\r\n\r\n // Set Input\r\n wlForms['riskMitigation'].inputs['rMIsSupportNeeded'].setValue(inputId);\r\n await insertUpdateAssessmentData({\r\n value: isRisksActionRequired === 'yes' ? 'yes' : 'no',\r\n name: 'rMIsSupportNeeded',\r\n type: 'radio',\r\n formName: 'riskMitigation',\r\n });\r\n\r\n await showHideICFDischarge();\r\n await showHideImmediateNeeds();\r\n await showHideCurrentNeeds();\r\n },\r\n //* icfDischarge\r\n icfIsICFResident: async ({ value }) => {\r\n await showHideImmediateNeeds();\r\n await showHideCurrentNeeds();\r\n await showHidePagesRelatedToICF();\r\n await icfDischargeDetermination();\r\n },\r\n icfIsNoticeIssued: async ({ value }) => {\r\n await showHideImmediateNeeds();\r\n await showHideCurrentNeeds();\r\n await showHidePagesRelatedToICF();\r\n await icfDischargeDetermination();\r\n },\r\n icfIsActionRequiredIn30Days: async ({ value }) => {\r\n await showHideImmediateNeeds();\r\n await showHideCurrentNeeds();\r\n await showHidePagesRelatedToICF();\r\n await icfDischargeDetermination();\r\n },\r\n //* intermittentSupports\r\n intSupIsSupportNeededIn12Months: intermittentSupportsDetermination,\r\n intSupIsStayingLivingArrangement: intermittentSupportsDetermination,\r\n intSupIsActionRequiredIn30Days: intermittentSupportsDetermination,\r\n //* childProtectionAgency\r\n cpaIsReleasedNext12Months: async ({ value }) => {\r\n wlForms['childProtectionAgency'].inputs['cpaAnticipateDate'].toggleDisabled(value === 'yes' ? false : true);\r\n\r\n if (value !== 'yes') {\r\n wlForms['childProtectionAgency'].inputs['cpaAnticipateDate'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'cpaAnticipateDate',\r\n type: 'date',\r\n formName: 'childProtectionAgency',\r\n });\r\n }\r\n\r\n await childProtectionAgencyDetermination();\r\n },\r\n cpaHasUnaddressableNeeds: childProtectionAgencyDetermination,\r\n //* adultDayEmployment\r\n rwfNeedsMoreFrequency: adultDayEmploymentDetermination,\r\n rwfNeedsServiceNotMetIDEA: adultDayEmploymentDetermination,\r\n rwfNeedsServicesNotMetOOD: adultDayEmploymentDetermination,\r\n //* dischargePlan\r\n dischargeIsICFResident: dischargePlanDetermination,\r\n dischargeIsInterestedInMoving: dischargePlanDetermination,\r\n dischargeHasDischargePlan: dischargePlanDetermination,\r\n //* currentNeeds\r\n unmetNeedsSupports: async ({ value }) => {\r\n wlForms['currentNeeds'].inputs['unmetNeedsDescription'].toggleDisabled(value === 'yes' ? false : true);\r\n\r\n if (value !== 'yes') {\r\n wlForms['currentNeeds'].inputs['unmetNeedsDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'unmetNeedsDescription',\r\n type: 'text',\r\n formName: 'currentNeeds',\r\n });\r\n }\r\n },\r\n //* waiverEnrollment\r\n waivEnrollWaiverEnrollmentIsRequired: async ({ value }) => {\r\n wlForms['waiverEnrollment'].inputs['waivEnrollWaiverEnrollmentDescription'].toggleDisabled(\r\n value === 'no' ? false : true,\r\n );\r\n\r\n if (value !== 'no') {\r\n wlForms['waiverEnrollment'].inputs['waivEnrollWaiverEnrollmentDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'waivEnrollWaiverEnrollmentDescription',\r\n type: 'text',\r\n formName: 'waiverEnrollment',\r\n });\r\n }\r\n },\r\n };\r\n const onChangeCallbacksFormWatch = {\r\n conditions: async ({ name, value }) => {\r\n const conditionPageAllYes = isConditionInputsAllYes();\r\n\r\n if (!conditionPageAllYes) {\r\n let formsToDelete = [];\r\n\r\n [\r\n 'behavioral',\r\n 'physical',\r\n 'medical',\r\n 'other',\r\n 'waiverEnrollment',\r\n 'riskMitigation',\r\n 'icfDischarge',\r\n 'intermittentSupports',\r\n 'childProtectionAgency',\r\n 'adultDayEmployment',\r\n 'dischargePlan',\r\n 'immediateNeeds',\r\n 'currentNeeds',\r\n 'currentAvailableServices',\r\n 'primaryCaregiver',\r\n ].forEach(formName => {\r\n wlForms[formName].form.parentElement.classList.add('hiddenPage');\r\n tocLinks[formName].classList.add('hiddenPage');\r\n wlForms[formName].clear();\r\n tocLinks[formName].classList.remove('formComplete');\r\n if (sectionResets[formName]) {\r\n sectionResets[formName]();\r\n }\r\n\r\n if (wlFormInfo[formName].id) {\r\n formsToDelete.push(`${wlFormInfo[formName].id}|${wlFormInfo[formName].dbtable}`);\r\n wlFormInfo[formName].id = '';\r\n }\r\n });\r\n\r\n contributingCircumstancesWrap.classList.add('hiddenPage');\r\n needsWrap.classList.add('hiddenPage');\r\n\r\n toggleTocLinksDisabledStatus(['contributingCircumstances', 'needs'], true);\r\n\r\n if (formsToDelete.length) {\r\n _UTIL.fetchData('deleteFromWaitingList', { properties: formsToDelete });\r\n wlCircID = '';\r\n wlNeedID = '';\r\n }\r\n\r\n return;\r\n }\r\n\r\n contributingCircumstancesWrap.classList.remove('hiddenPage');\r\n wlForms['primaryCaregiver'].form.parentElement.classList.remove('hiddenPage');\r\n wlForms['waiverEnrollment'].form.parentElement.classList.remove('hiddenPage');\r\n wlForms['currentAvailableServices'].form.parentElement.classList.remove('hiddenPage');\r\n\r\n toggleTocLinksDisabledStatus(\r\n ['contributingCircumstances', 'primaryCaregiver', 'waiverEnrollment', 'currentAvailableServices'],\r\n false,\r\n );\r\n\r\n // get circumstance id\r\n if (!wlCircID) {\r\n const resp = await insertAssessmentData({\r\n id: 0,\r\n linkId: wlLinkID,\r\n propertyName: 'getCircumstanceId',\r\n value: '',\r\n });\r\n\r\n wlCircID = resp[0].newRecordId;\r\n }\r\n // get needs id\r\n if (!wlNeedID && wlCircID) {\r\n const resp = await insertAssessmentData({\r\n id: 0,\r\n linkId: wlCircID,\r\n propertyName: 'needsIsActionRequiredRequiredIn30Days',\r\n value: '',\r\n });\r\n wlNeedID = resp[0].newRecordId;\r\n wlFormInfo['other'].id = wlNeedID;\r\n }\r\n },\r\n };\r\n async function onFormChange(event) {\r\n const type = event.target.type;\r\n const name = event.target.name;\r\n const id = event.target.id;\r\n const formName = event.target.form.name;\r\n let value = event.target.value;\r\n let checkboxGroupId;\r\n\r\n if (type === 'checkbox') {\r\n value = event.target.checked ? 'on' : 'off';\r\n checkboxGroupId = event.target.closest('fieldset')?.id;\r\n }\r\n\r\n await insertUpdateAssessmentData({ value, name, type, formName });\r\n\r\n if (onChangeCallbacks[name]) {\r\n await onChangeCallbacks[name]({ value, name });\r\n }\r\n\r\n if (onChangeCallbacks[checkboxGroupId]) {\r\n await onChangeCallbacks[checkboxGroupId]({ value, name });\r\n }\r\n\r\n if (onChangeCallbacksFormWatch[formName]) {\r\n await onChangeCallbacksFormWatch[formName]({\r\n value,\r\n name,\r\n formName,\r\n });\r\n }\r\n\r\n updateFormCompletionStatus(formName);\r\n checkIsAssessmentComplete();\r\n setConclusion();\r\n toggleSendEmailDisabledStatus();\r\n }\r\n\r\n // MAIN\r\n //--------------------------------------------------\r\n function attachEvents() {\r\n sendEmailButton.onClick(async () => {\r\n sendEmailPopup.show();\r\n await updateQueue.forceSendUpdates();\r\n });\r\n sendEmailForm.onSubmit(async (data, submitter) => {\r\n let resp = await _UTIL.fetchData('generateWaitingListAssessmentReport', {\r\n waitingListId: wlLinkID,\r\n });\r\n resp = resp.generateWaitingListAssessmentReportResult;\r\n\r\n function checkIfReportIsReadyInterval(res) {\r\n // Get the interval in seconds from the session and convert it to milliseconds\r\n const intervalSeconds = parseInt($.session.reportSeconds);\r\n const intervalMilliseconds = intervalSeconds * 250;\r\n\r\n // Set up an interval to execute the checkIfReportExists function periodically\r\n const interval = setInterval(async () => {\r\n const reportExists = await checkIfReportExists(res);\r\n if (reportExists) {\r\n clearInterval(interval);\r\n const resp2 = await _UTIL.fetchData('sendWaitingListAssessmentReport', {\r\n header: data['emailHeader'],\r\n body: data['emailBody'],\r\n reportScheduleId: res,\r\n waitingListId: wlLinkID,\r\n });\r\n }\r\n }, intervalMilliseconds);\r\n }\r\n\r\n async function checkIfReportExists(res) {\r\n const data = {\r\n token: $.session.Token,\r\n reportScheduleId: res[0].reportScheduleId,\r\n };\r\n\r\n try {\r\n const response = await $.ajax({\r\n type: 'POST',\r\n url: `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/checkIfReportExists/`,\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return response.checkIfReportExistsResult.indexOf('1') !== -1;\r\n } catch (error) {\r\n console.error('Error:', error);\r\n return false;\r\n }\r\n }\r\n\r\n checkIfReportIsReadyInterval(resp);\r\n\r\n sendEmailPopup.close();\r\n });\r\n sendEmailForm.onReset(() => {\r\n sendEmailPopup.close();\r\n });\r\n\r\n documentsButton.onClick(async () => {\r\n documentsPopup.show();\r\n await updateQueue.forceSendUpdates();\r\n });\r\n documentsForm.onSubmit(async (data, submitter, formId) => {\r\n const attachDetails = await _DOM.getAttachmentDetails(data['test']);\r\n\r\n const documentId = await saveDocument(attachDetails);\r\n\r\n const fileName = _UTIL.truncateFilename(attachDetails.description, 10);\r\n wlDocuments[documentId] = {\r\n id: documentId,\r\n values: [fileName, attachDetails.type],\r\n };\r\n\r\n addNewDocumentToList({ documentId, fileName });\r\n\r\n documentsForm.clear();\r\n });\r\n documentsForm.onReset(() => {\r\n documentsPopup.close();\r\n });\r\n\r\n participantsForm.onSubmit(async (data, submitter, formId) => {\r\n if (formId) {\r\n await updateAssessmentData({\r\n id: formId,\r\n linkId: wlLinkID,\r\n propertyName: 'participants',\r\n value: data.participantName,\r\n valueTwo: data.participantRelationship,\r\n });\r\n wlParticipants[formId].values = [data.participantName, data.participantRelationship];\r\n } else {\r\n const resp = await insertAssessmentData({\r\n id: 0,\r\n linkId: wlLinkID,\r\n propertyName: 'participants',\r\n value: data.participantName,\r\n valueTwo: data.participantRelationship,\r\n });\r\n const participantId = resp[0].newRecordId;\r\n\r\n wlParticipants[participantId] = {\r\n id: participantId,\r\n values: [data.participantName, data.participantRelationship],\r\n };\r\n }\r\n\r\n // clear form\r\n participantsForm.clear();\r\n\r\n // repop table\r\n participantsTable.populate(Object.values(wlParticipants));\r\n\r\n tocLinks['participants'].classList.toggle('formComplete', Object.values(wlParticipants).length);\r\n });\r\n participantsTable.onRowClick(rowId => {\r\n if (!$.session.waitingListUpdate) return;\r\n\r\n const rowData = wlParticipants[rowId];\r\n participantsForm.populate(\r\n {\r\n participantName: rowData.values[0],\r\n participantRelationship: rowData.values[1],\r\n },\r\n rowId,\r\n );\r\n });\r\n participantsTable.onRowDelete(async (row, rowId) => {\r\n if (!$.session.waitingListUpdate) return;\r\n\r\n await _UTIL.fetchData('deleteWaitingListParticipant', {\r\n participantId: parseInt(rowId),\r\n });\r\n\r\n delete wlParticipants[rowId];\r\n\r\n participantsTable.populate(Object.values(wlParticipants));\r\n\r\n tocLinks['participants'].classList.toggle('formComplete', Object.values(wlParticipants).length);\r\n });\r\n\r\n backButton.onClick(async () => {\r\n await updateQueue.forceSendUpdates();\r\n WaitingListOverview.init({ moduleHeader, moduleBody, selectedConsumer });\r\n });\r\n }\r\n function loadPage() {\r\n // Header\r\n consumerCard.renderTo(moduleHeader);\r\n const primaryButtonWrap = _DOM.createElement('div');\r\n backButton.renderTo(primaryButtonWrap);\r\n sendEmailButton.renderTo(primaryButtonWrap);\r\n documentsButton.renderTo(primaryButtonWrap);\r\n moduleHeader.appendChild(primaryButtonWrap);\r\n\r\n sendEmailForm.renderTo(sendEmailPopup.dialog);\r\n sendEmailPopup.renderTo(_DOM.ACTIONCENTER);\r\n\r\n doucmentsList = _DOM.createElement('div', { class: 'docList' });\r\n documentsPopup.dialog.appendChild(doucmentsList);\r\n documentsForm.renderTo(documentsPopup.dialog);\r\n documentsPopup.renderTo(_DOM.ACTIONCENTER);\r\n\r\n // Assessment\r\n for (section in sections) {\r\n const isContributingCircumstancesSubSection = [\r\n 'needs',\r\n 'primaryCaregiver',\r\n 'riskMitigation',\r\n 'icfDischarge',\r\n 'intermittentSupports',\r\n 'childProtectionAgency',\r\n 'adultDayEmployment',\r\n 'dischargePlan',\r\n ].includes(section);\r\n const isNeedsSubSection = ['behavioral', 'physical', 'medical', 'other'].includes(section);\r\n\r\n // Build TOC\r\n const className = isContributingCircumstancesSubSection || isNeedsSubSection ? 'subsection' : 'section';\r\n const tocSection = _DOM.createElement('p', { class: [className, section] });\r\n const tocSectionLink = _DOM.createElement('a', { href: `#${section}`, text: sections[section].name });\r\n const statusIcon = Icon.getIcon('error');\r\n tocSection.appendChild(tocSectionLink);\r\n tocSection.appendChild(statusIcon);\r\n tableOfContents.appendChild(tocSection);\r\n tocSection.classList.toggle('hiddenPage', !sections[section].enabled);\r\n tocLinks[section] = tocSection;\r\n\r\n // Build Form\r\n const sectionWrap = _DOM.createElement('div', { id: section, class: 'wlPage' });\r\n const sectionHeader = _DOM.createElement('h2', {\r\n text: section === 'icfDischarge' ? 'ICF Discharge' : _UTIL.convertCamelCaseToTitle(section),\r\n });\r\n sectionWrap.appendChild(sectionHeader);\r\n sectionWrap.classList.toggle('hiddenPage', !sections[section].enabled);\r\n\r\n if (section === 'participants') {\r\n participantsTable.renderTo(sectionWrap);\r\n participantsForm.renderTo(sectionWrap);\r\n assessmentWrap.appendChild(sectionWrap);\r\n continue;\r\n }\r\n\r\n if (section === 'contributingCircumstances') {\r\n contributingCircumstancesWrap = sectionWrap;\r\n tocSection.classList.add('parent');\r\n }\r\n if (section === 'needs') {\r\n needsWrap = sectionWrap;\r\n tocSection.classList.add('parent');\r\n }\r\n\r\n if (sections[section].formElements) {\r\n wlForms[section] = new Form({\r\n hideAllButtons: true,\r\n fields: sections[section].formElements,\r\n formName: section,\r\n });\r\n\r\n wlForms[section].renderTo(sectionWrap);\r\n wlForms[section].onChange(onFormChange);\r\n }\r\n\r\n if (isContributingCircumstancesSubSection) {\r\n contributingCircumstancesWrap.appendChild(sectionWrap);\r\n } else if (isNeedsSubSection) {\r\n needsWrap.appendChild(sectionWrap);\r\n } else {\r\n assessmentWrap.appendChild(sectionWrap);\r\n }\r\n }\r\n }\r\n function loadPageSkeleton() {\r\n moduleBody.innerHTML = '';\r\n moduleHeader.innerHTML = '';\r\n\r\n tableOfContents = _DOM.createElement('div', { class: 'waitingListTableOFContents' });\r\n assessmentWrap = _DOM.createElement('div', { class: 'waitingListAssessment' });\r\n\r\n moduleBody.appendChild(tableOfContents);\r\n moduleBody.appendChild(assessmentWrap);\r\n }\r\n\r\n // INIT (data & defaults)\r\n //--------------------------------------------------\r\n function initFormInfo() {\r\n return {\r\n waitingListInfo: { dbtable: 'WLA_Waiting_List_Information' },\r\n conditions: { dbtable: 'WLA_Conditions' },\r\n primaryCaregiver: { dbtable: 'WLA_Primary_Caregivers' },\r\n adultDayEmployment: { dbtable: 'WLA_Require_Waiver_Fundings' },\r\n childProtectionAgency: { dbtable: 'WLA_Child_Protection_Agencies' },\r\n currentAvailableServices: { dbtable: 'WLA_Active_Services' },\r\n currentNeeds: { dbtable: 'WLA_Unmet_Needs' },\r\n dischargePlan: { dbtable: 'WLA_Discharge_Plans' },\r\n icfDischarge: { dbtable: 'WLA_ICF_Discharges' },\r\n intermittentSupports: { dbtable: 'WLA_Intermitent_Supports' },\r\n immediateNeeds: { dbtable: 'WLA_Immediate_Needs' },\r\n riskMitigation: { dbtable: 'WLA_Risk_Mitigations' },\r\n waiverEnrollment: { dbtable: 'WLA_Waiver_Enrollments' },\r\n behavioral: { dbtable: 'WLA_Risks' },\r\n physical: { dbtable: 'WLA_Physical_Needs' },\r\n medical: { dbtable: 'WLA_Medical_Needs' },\r\n other: { dbtable: 'WLA_Needs' },\r\n conclusion: { dbtable: 'WLA_Waiting_List_Information' },\r\n };\r\n }\r\n function initComponents() {\r\n // Participants\r\n participantsTable = new Table({\r\n columnSortable: true,\r\n allowDelete: true,\r\n headings: [\r\n {\r\n text: 'Name of Participant',\r\n type: 'string',\r\n },\r\n {\r\n text: 'Relationship to Individual',\r\n type: 'string',\r\n },\r\n ],\r\n });\r\n participantsForm = new Form({\r\n fields: [\r\n {\r\n type: 'text',\r\n label: 'Name of Participant',\r\n id: 'participantName',\r\n //required: true,\r\n },\r\n {\r\n type: 'text',\r\n label: 'Relationship to Individual',\r\n id: 'participantRelationship',\r\n //required: true,\r\n },\r\n ],\r\n });\r\n\r\n // Reports\r\n sendEmailButton = new Button({\r\n text: 'Send Report',\r\n style: 'primary',\r\n styleType: 'contained',\r\n disabled: true,\r\n });\r\n sendEmailForm = new Form({\r\n fields: [\r\n {\r\n type: 'text',\r\n label: 'Email Header',\r\n id: 'emailHeader',\r\n value: 'Waiting List Assessment',\r\n },\r\n {\r\n type: 'text',\r\n label: 'Email Body',\r\n id: 'emailBody',\r\n value: `Waiting list assessment for ${selectedConsumer.firstName} ${selectedConsumer.middleName} ${selectedConsumer.lastName} attached`,\r\n },\r\n ],\r\n });\r\n sendEmailPopup = new Dialog({ className: 'wlEmailPopup' });\r\n\r\n // Documents\r\n documentsButton = new Button({\r\n text: 'Add New Documentation',\r\n style: 'primary',\r\n styleType: 'contained',\r\n disabled: !$.session.waitingListUpdate,\r\n });\r\n documentsForm = new Form({\r\n fields: [\r\n { type: 'file', id: 'test', label: 'Document Upload' },\r\n { type: 'checkbox', id: 'email', label: 'Include in email?' },\r\n ],\r\n });\r\n documentsPopup = new Dialog({ className: 'wlDocumentPopup' });\r\n\r\n // Back to overview\r\n backButton = new Button({\r\n text: 'Back',\r\n style: 'primary',\r\n styleType: 'outlined',\r\n });\r\n\r\n // consumer card\r\n consumerCard = new RosterCard({\r\n consumerId: selectedConsumer.id,\r\n firstName: selectedConsumer.firstName,\r\n middleName: selectedConsumer.middleName,\r\n lastName: selectedConsumer.lastName,\r\n });\r\n\r\n // Save/Update Queue\r\n updateQueue = new _UTIL.AsyncQueue('insertUpdateWaitingListValue', maxQueueSize, responses => {});\r\n }\r\n\r\n async function init(opts) {\r\n wlCircID = '';\r\n wlNeedID = '';\r\n wlForms = {};\r\n tocLinks = {};\r\n wlDocuments = [];\r\n wlParticipants = {};\r\n wlFormInfo = initFormInfo();\r\n wlData = mapDataBySection(opts.wlData);\r\n selectedConsumer = opts.selectedConsumer;\r\n moduleHeader = opts.moduleHeader;\r\n moduleBody = opts.moduleBody;\r\n\r\n loadPageSkeleton();\r\n initComponents();\r\n loadPage();\r\n attachEvents();\r\n\r\n const fundingSources = await getFundingSources();\r\n\r\n if (!wlData) {\r\n const resp = await insertNewWaitingListAssessment(selectedConsumer.id);\r\n wlLinkID = resp[0].newRecordId;\r\n wlFormInfo['waitingListInfo'].id = wlLinkID;\r\n wlFormInfo['conclusion'].id = wlLinkID;\r\n wlForms['conclusion'].inputs['fundingSourceId'].populate(fundingSources);\r\n\r\n return;\r\n }\r\n\r\n isNewAssessment = false;\r\n enableSectionsForReview();\r\n enableInputsForReview();\r\n\r\n for (section in wlData) {\r\n wlForms[section].populate(wlData[section]);\r\n updateFormCompletionStatus(section);\r\n if (!$.session.waitingListUpdate) {\r\n wlForms[section].disableFormInputs(true);\r\n }\r\n }\r\n\r\n if (!$.session.waitingListUpdate) {\r\n participantsForm.disableFormInputs(true);\r\n }\r\n\r\n participantsTable.populate(Object.values(wlParticipants));\r\n\r\n tocLinks['participants'].classList.toggle('formComplete', Object.values(wlParticipants).length);\r\n\r\n wlForms['conclusion'].inputs['fundingSourceId'].populate(fundingSources, wlData['conclusion'].fundingSourceId);\r\n if (!$.session.waitingListUpdate) {\r\n wlForms['conclusion'].inputs['fundingSourceId'].toggleDisabled(true);\r\n }\r\n\r\n toggleSendEmailDisabledStatus();\r\n\r\n const docResp = await _UTIL.fetchData('getWLSupportingDocumentList', { waitingListInformationId: wlLinkID });\r\n for (const doc of docResp.getWLSupportingDocumentListResult) {\r\n const fileName = _UTIL.truncateFilename(doc.description, 10);\r\n wlDocuments[doc.supportingDocumentId] = {\r\n id: doc.supportingDocumentId,\r\n values: [fileName, doc.type],\r\n };\r\n\r\n addNewDocumentToList({ documentId: doc.supportingDocumentId, fileName });\r\n }\r\n }\r\n\r\n return { init, unload };\r\n})();\r\n","(function (global, factory) {\r\n global.WaitingListData = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Constructor function\r\n *\r\n * @constructor\r\n * @returns {WaitingListData}\r\n */\r\n function WaitingListData() {}\r\n\r\n //getWaitingListFundingSources\r\n\r\n WaitingListData.prototype.insertWaitingListAssessment = async function (consumerId) {\r\n const data = await _UTIL.fetchData('insertUpdateWaitingListValue', {\r\n id: 0,\r\n linkId: 0,\r\n propertyName: 'consumerId',\r\n value: consumerId,\r\n valueTwo: '',\r\n insertOrUpdate: 'I',\r\n });\r\n\r\n return JSON.parse(data.insertUpdateWaitingListValueResult);\r\n };\r\n\r\n WaitingListData.prototype.insertAssessmentData = async function ({ id, linkId, propertyName, value, valueTwo = '' }) {\r\n const data = await _UTIL.fetchData('insertUpdateWaitingListValue', {\r\n id,\r\n linkId,\r\n propertyName,\r\n value,\r\n valueTwo,\r\n insertOrUpdate: 'I',\r\n });\r\n\r\n return JSON.parse(data.insertUpdateWaitingListValueResult);\r\n };\r\n\r\n WaitingListData.prototype.updateAssessmentData = async function ({\r\n id,\r\n linkId = 0,\r\n propertyName,\r\n value,\r\n valueTwo = '',\r\n }) {\r\n const data = await _UTIL.fetchData('insertUpdateWaitingListValue', {\r\n id,\r\n linkId,\r\n propertyName,\r\n value,\r\n valueTwo,\r\n insertOrUpdate: 'U',\r\n });\r\n\r\n return data.insertUpdateWaitingListValueResult;\r\n };\r\n\r\n WaitingListData.prototype.getReviewDataByConsumer = async function (consumerId) {\r\n const data = await _UTIL.fetchData('getLandingPageForConsumer', {\r\n consumerId,\r\n });\r\n\r\n // string wlInfoId\r\n // string interviewDate\r\n // string conclusionResult\r\n // string conclusionDate\r\n // string sentToDODD\r\n\r\n // TODO-ASH: replace conclusionResult id with name, get from dropdown data\r\n return data.getLandingPageForConsumerResult.map(\r\n ({ wlInfoId, interviewDate, conclusionResult, conclusionDate, sentToDODD }) => {\r\n return {\r\n id: wlInfoId,\r\n values: [\r\n UTIL.formatDateToIso(interviewDate.split(' ')[0]),\r\n conclusionResult,\r\n conclusionDate,\r\n UTIL.formatDateToIso(sentToDODD.split(' ')[0]),\r\n ],\r\n };\r\n },\r\n );\r\n };\r\n\r\n return WaitingListData;\r\n});\r\n","const WaitingListOverview = (() => {\r\n let selectedRow, selectedRowId;\r\n // UI Instances\r\n let selectedConsumer;\r\n let overviewWrap;\r\n let wlReviewTable;\r\n let deleteWarningPopup;\r\n\r\n // DATA\r\n //--------------------------------------------------\r\n async function getReviewDataByConsumer(consumerId) {\r\n const data = await _UTIL.fetchData('getLandingPageForConsumer', {\r\n consumerId,\r\n });\r\n\r\n // string wlInfoId\r\n // string interviewDate\r\n // string conclusionResult\r\n // string conclusionDate\r\n // string sentToDODD\r\n\r\n const conclusionResults = {\r\n 0: 'No qualifying condition',\r\n 1: 'Immediate Need',\r\n 2: 'Current Need',\r\n 3: 'Neither Immediate Need nor Current Need',\r\n };\r\n\r\n let alreadyHasAssessmentForToday = false;\r\n\r\n const tableData = data.getLandingPageForConsumerResult\r\n .map(({ wlInfoId, interviewDate, conclusionResult, conclusionDate, sentToDODD }) => {\r\n const isToday = new Date().setHours(0, 0, 0, 0) === new Date(interviewDate).setHours(0, 0, 0, 0);\r\n if (isToday) alreadyHasAssessmentForToday = true;\r\n\r\n return {\r\n id: wlInfoId,\r\n values: [\r\n UTIL.formatDateToIso(interviewDate.split(' ')[0]),\r\n conclusionResults[conclusionResult],\r\n UTIL.formatDateToIso(conclusionDate.split(' ')[0]),\r\n UTIL.formatDateToIso(sentToDODD.split(' ')[0]),\r\n ],\r\n };\r\n })\r\n .sort((a, b) => {\r\n const dateA = new Date(a.values[0]).getTime();\r\n const dateB = new Date(b.values[0]).getTime();\r\n\r\n if (dateA > dateB) {\r\n return -1;\r\n } else if (dateA < dateB) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n\r\n return { tableData, alreadyHasAssessmentForToday };\r\n }\r\n\r\n // EVENTS\r\n //--------------------------------------------------\r\n async function populateReviewTable() {\r\n wlReviewTable.clear();\r\n\r\n if (!selectedConsumer) {\r\n newAssessmentBtn.toggleDisabled(true);\r\n return;\r\n };\r\n\r\n const { tableData, alreadyHasAssessmentForToday } = await getReviewDataByConsumer(selectedConsumer.id);\r\n wlReviewTable.populate(tableData);\r\n const isNewAssessmentBtnDisabled = alreadyHasAssessmentForToday || !$.session.waitingListInsert;\r\n newAssessmentBtn.toggleDisabled(isNewAssessmentBtnDisabled);\r\n }\r\n function attachEvents() {\r\n newAssessmentBtn.onClick(() => {\r\n WaitingListAssessment.init({ selectedConsumer, moduleHeader, moduleBody }, true);\r\n });\r\n\r\n rosterPicker.onConsumerSelect(\r\n data => {\r\n selectedConsumer = Object.values(data)[0];\r\n populateReviewTable();\r\n },\r\n { idkyet: true },\r\n );\r\n\r\n wlReviewTable.onRowClick(async rowId => {\r\n if (!$.session.waitingListView) return;\r\n const resp = await _UTIL.fetchData('getWaitingListAssessment', { waitingListAssessmentId: parseInt(rowId) });\r\n WaitingListAssessment.init({\r\n wlData: resp.getWaitingListAssessmentResult[0],\r\n selectedConsumer: selectedConsumer,\r\n moduleHeader,\r\n moduleBody,\r\n });\r\n });\r\n wlReviewTable.onRowDelete(async (row, rowId) => {\r\n selectedRow = row;\r\n selectedRowId = rowId;\r\n\r\n deleteWarningPopup.show();\r\n });\r\n }\r\n\r\n // MAIN\r\n //--------------------------------------------------\r\n function populateDeleteWarningPopup() {\r\n const messageEle = _DOM.createElement('p', {\r\n class: 'confirmation__message',\r\n text: 'Are you sure you want to delete this assessment?'\r\n });\r\n\r\n const btnWrap = _DOM.createElement('div', { class: 'button-wrap' });\r\n const confirmButton = new Button({\r\n text: 'Yes',\r\n name: 'confirm',\r\n //icon: 'checkmark', \r\n });\r\n const cancelButton = new Button({\r\n text: 'No',\r\n name: 'cancel',\r\n //icon: 'close',\r\n });\r\n\r\n confirmButton.onClick(async () => {\r\n const resp = await _UTIL.fetchData('deleteWaitingListAssessment', {\r\n waitingListId: parseInt(selectedRowId),\r\n });\r\n\r\n wlReviewTable.removeRow(selectedRow);\r\n\r\n deleteWarningPopup.close();\r\n\r\n selectedRow = null;\r\n selectedRowId = null;\r\n });\r\n cancelButton.onClick(() => {\r\n deleteWarningPopup.close();\r\n });\r\n\r\n confirmButton.renderTo(btnWrap);\r\n cancelButton.renderTo(btnWrap);\r\n\r\n deleteWarningPopup.dialog.appendChild(messageEle);\r\n deleteWarningPopup.dialog.appendChild(btnWrap);\r\n }\r\n async function loadPage() {\r\n await rosterPicker.fetchConsumers();\r\n rosterPicker.populate();\r\n\r\n deleteWarningPopup.renderTo(_DOM.ACTIONCENTER);\r\n populateDeleteWarningPopup();\r\n }\r\n function loadPageSkeleton() {\r\n moduleBody.innerHTML = '';\r\n moduleHeader.innerHTML = '';\r\n\r\n overviewWrap = _DOM.createElement('div', { class: 'waitingListOverview' });\r\n\r\n moduleBody.appendChild(overviewWrap);\r\n\r\n wlReviewTable.renderTo(overviewWrap);\r\n rosterPicker.renderTo(overviewWrap);\r\n newAssessmentBtn.renderTo(moduleHeader);\r\n }\r\n\r\n // INIT (data & defaults)\r\n //--------------------------------------------------\r\n function initComponents() {\r\n wlReviewTable = new Table({\r\n columnSortable: true,\r\n allowDelete: $.session.waitingListDelete,\r\n headings: [\r\n {\r\n text: 'Interview Date',\r\n type: 'date',\r\n },\r\n {\r\n text: 'Conclusion',\r\n type: 'string',\r\n },\r\n {\r\n text: 'Conclusion Date',\r\n type: 'date',\r\n },\r\n {\r\n text: 'Sent To DODD',\r\n type: 'date',\r\n },\r\n ],\r\n });\r\n\r\n rosterPicker = new RosterPicker({\r\n allowMultiSelect: false,\r\n consumerRequired: true,\r\n });\r\n\r\n newAssessmentBtn = new Button({\r\n text: 'New Assessment',\r\n style: 'primary',\r\n styleType: 'contained',\r\n disabled: true,\r\n });\r\n\r\n deleteWarningPopup = new Dialog({ className: 'wlDeleteWarningPopup' });\r\n }\r\n async function reload() {\r\n loadPageSkeleton();\r\n await loadPage();\r\n attachEvents();\r\n }\r\n async function init(opts) {\r\n moduleHeader = opts.moduleHeader;\r\n moduleBody = opts.moduleBody;\r\n selectedConsumer = opts.selectedConsumer;\r\n\r\n initComponents();\r\n loadPageSkeleton();\r\n await loadPage();\r\n attachEvents();\r\n\r\n if (selectedConsumer) {\r\n populateReviewTable();\r\n rosterPicker.setSelectedConsumers([selectedConsumer.id]);\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n reload,\r\n };\r\n})();\r\n","$.session.defaultWorkshopLocationId \r\n// if this session varaible is an null, sets 'defaultLocation' to a generic location object {id: 0, text: \"Location\"}.\r\n// Otherwise, sets 'defaultLocation' to object {id: 'defaultWorkshopLocaitonID', text: \"\"}.\r\n// ALSO if this session variable is NOT Null, it assigns a variable 'nullLocation to a generic location object {id: 0, text: \"Location\"}.\r\n\r\n$.session.workshopBatchId\r\n// Used in displaySelectBatch ajax call. THis call creates a list of the 'data' that is passed into it. The session variable is being set to 'data.id' of\r\n// the element that is clicked??\r\n","var workshop = (function () {\r\n //DOM ELEMENTS\r\n var locationDropdown;\r\n var jobDropdown;\r\n var supervisorDropdown;\r\n var multiSelectBtn;\r\n var clockOutNavBtn;\r\n var consumerListBtn;\r\n var filterBtn;\r\n //DROPDOWN DATA\r\n var locationDropdownData;\r\n var locationFilterDropdownData;\r\n var jobDropdownData;\r\n var updateJobFilterDropdownData;\r\n var jobFilterDropdownData;\r\n var supervisorDropdownData;\r\n\r\n var enableMultiEdit = false;\r\n //Values\r\n var locationID;\r\n var selectedBatchId;\r\n var enabledConsumers;\r\n var selectedConsumers = [];\r\n var multiConsumerSelect = [];\r\n var minStart;\r\n var minDateIso;\r\n var maxDateIso;\r\n var maxEnd;\r\n var displayDateIso;\r\n var workshopFilterListData = {\r\n token: \"\",\r\n selectedDate: \"\",\r\n consumerIds: enabledConsumers,\r\n locationId: 0,\r\n jobStepId: 0,\r\n application: \"\",\r\n batchId: selectedBatchId,\r\n locationName: \"\"\r\n };\r\n var filterCache = {\r\n locationSelectedOpt: 0,\r\n jobStepSelectedOpt: 0\r\n };\r\n var mainTableData = {};\r\n var mainJobData = {};\r\n var mainLocationData = {};\r\n let initalRosterLoad\r\n let activeModulesConsumers = []\r\n\r\n let btnWrap;\r\n let locationBtnWrap;\r\n let jobStepBtnWrap;\r\n let serviceDateBtnWrap;\r\n\r\n\r\n //UTIL =====================================\r\n function compareSupList(a, b) {\r\n const nameA = a.text.toUpperCase();\r\n const nameB = b.text.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (nameA > nameB) {\r\n comparison = 1;\r\n } else if (nameA < nameB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n function checkRequiredFields(btn) {\r\n var hasErrors = [].slice.call(document.querySelectorAll(\".error\"));\r\n if (hasErrors.length === 0) {\r\n btn.classList.remove(\"disabled\");\r\n } else {\r\n btn.classList.add(\"disabled\");\r\n }\r\n }\r\n\r\n // ERROR POPUPS\r\n var errorPopup = POPUP.build({\r\n header: \"ERROR\",\r\n id: \"errorPopup\",\r\n classNames: \"error\"\r\n });\r\n var errorPopupText = document.createElement(\"p\");\r\n errorPopupText.classList.add(\"errorTextArea\");\r\n errorPopup.appendChild(errorPopupText);\r\n //=============================================\r\n\r\n // Action Nav\r\n //------------------------------------\r\n function setupActionNav() {\r\n // show clockout button\r\n clockOutNavBtn = button.build({\r\n text: \"Clock Out\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n classNames: \"disabled\",\r\n callback: function () {\r\n multiConsumerSelect.forEach(consumer => {\r\n let obj = {};\r\n obj[\"id\"] = consumer;\r\n selectedConsumers.push(obj);\r\n });\r\n clockInOutActionPopup(\"out\");\r\n //Reset Stuff\r\n consumerListBtn = document.querySelector(\".consumerListBtn\");\r\n ACTION_NAV.hide();\r\n enableMultiEdit = false;\r\n multiConsumerSelect = [];\r\n filterBtn.classList.remove(\"disabled\");\r\n multiSelectBtn.classList.remove(\"enabled\");\r\n consumerListBtn.classList.remove(\"disabled\");\r\n //Un-select elements\r\n var selectedElms = document.querySelectorAll(\".selected\");\r\n [].forEach.call(selectedElms, function (el) {\r\n el.classList.remove(\"selected\");\r\n });\r\n }\r\n });\r\n\r\n ACTION_NAV.clear();\r\n ACTION_NAV.populate([clockOutNavBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n\r\n function checkOpenBatches() {\r\n workshopAjax.WorkshopPreBatchLoad(d => {\r\n var openBatches;\r\n openBatches = d;\r\n let batchPickerPopup = document.createElement(\"div\");\r\n batchPickerPopup.classList.add(\"popup\", \"visable\", \"batchPicker\");\r\n\r\n let header = document.createElement(\"h2\");\r\n header.classList.add(\"popupHeader\");\r\n batchPickerPopup.appendChild(header);\r\n\r\n if (openBatches.length == 1) {\r\n selectedBatchId = openBatches[0].id;\r\n minStart = openBatches[0].startdate;\r\n maxEnd = openBatches[0].enddate;\r\n initPageLoad();\r\n } else if (openBatches.length > 1) {\r\n header.innerHTML = \"Please Select A Batch\";\r\n let applyBtn = button.build({\r\n id: \"apply\",\r\n text: \"Apply\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"checkmark\",\r\n callback: function () {\r\n selectedBatchId =\r\n selectedBatchId === \"\" ? openBatches[0].id : selectedBatchId;\r\n for (var x = 0; x < openBatches.length; x++) {\r\n if (openBatches[x].id === selectedBatchId) {\r\n minStart = openBatches[x].startdate;\r\n maxEnd = openBatches[x].enddate;\r\n }\r\n }\r\n DOM.ACTIONCENTER.removeChild(batchPickerPopup);\r\n overlay.hide();\r\n initPageLoad();\r\n }\r\n });\r\n\r\n let batchDropdown = dropdown.build({\r\n dropdownId: \"batchDropdown\",\r\n label: \"Batch\",\r\n style: \"secondary\"\r\n });\r\n let today = UTIL.getTodaysDate();\r\n let defaultId = 0;\r\n today = new Date(today.replace(/-/g, '\\/'));\r\n openBatches.forEach(findCorrectDates);\r\n function findCorrectDates(ele) {\r\n let startDate = new Date(ele.startdate);\r\n let endDate = new Date(ele.enddate);\r\n if (today >= startDate && today <= endDate) {\r\n defaultId = ele.id;\r\n openBatches.splice(openBatches.indexOf(ele), 1);\r\n openBatches.unshift(ele);\r\n }\r\n }\r\n let dropdownData = openBatches.map(b => {\r\n var id = b.id;\r\n var value = b.id;\r\n var text = b.name;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n\r\n batchPickerPopup.appendChild(batchDropdown);\r\n batchPickerPopup.appendChild(applyBtn);\r\n DOM.ACTIONCENTER.appendChild(batchPickerPopup);\r\n dropdown.populate(\"batchDropdown\", dropdownData);\r\n batchDropdown.addEventListener(\"change\", () => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedBatchId = selectedOption.id;\r\n selectedBatchId = parseInt(selectedBatchId);\r\n });\r\n overlay.show();\r\n } else {\r\n header.innerHTML =\r\n \"There are no batches available for this date. Please contact your workshop administrator.\";\r\n let exitBtn = button.build({\r\n id: \"exit\",\r\n text: \"Exit\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n DOM.ACTIONCENTER.removeChild(batchPickerPopup);\r\n overlay.hide();\r\n loadApp('home')\r\n }\r\n });\r\n overlay.show();\r\n batchPickerPopup.appendChild(exitBtn);\r\n DOM.ACTIONCENTER.appendChild(batchPickerPopup);\r\n }\r\n });\r\n }\r\n\r\n function breakDownConsumerList(consumerArray) {\r\n var consumerIdList = consumerArray.map(c => c.id).join(\",\");\r\n return consumerIdList;\r\n }\r\n\r\n function buildSelectionFields() {\r\n minDateIso = UTIL.formatDateToIso(minStart.split(\" \")[0]);\r\n maxDateIso = UTIL.formatDateToIso(maxEnd.split(\" \")[0]);\r\n let today = UTIL.getTodaysDate();\r\n\r\n if (today < minDateIso || today > maxDateIso) {\r\n displayDateIso = minDateIso;\r\n } else {\r\n displayDateIso = today;\r\n }\r\n //dropdown supervisor\r\n supervisorDropdown = dropdown.build({\r\n dropdownId: \"supervisorDropdown\",\r\n label: \"Supervisor\",\r\n style: \"secondary\"\r\n });\r\n dateSelection = input.build({\r\n id: \"date\",\r\n label: \"Date\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: displayDateIso,\r\n attributes: [\r\n { key: \"min\", value: minDateIso },\r\n { key: \"max\", value: maxDateIso }\r\n ]\r\n });\r\n\r\n dateSelection.addEventListener(\"keydown\", event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n })\r\n\r\n dateSelection.addEventListener(\"change\", event => {\r\n workshopFilterListData.selectedDate = event.target.value;\r\n })\r\n\r\n }\r\n\r\n function initialData() {\r\n // Initial Date: if todays date is in the current batch, initial date is today.\r\n // else, Initial date is the first day of the batch(minStart).\r\n minDateIso = UTIL.formatDateToIso(minStart.split(\" \")[0]);\r\n maxDateIso = UTIL.formatDateToIso(maxEnd.split(\" \")[0]);\r\n let today = UTIL.getTodaysDate();\r\n let defaultWorkshopLocation = defaults.getLocation(\"workshop\");\r\n if (defaultWorkshopLocation === \"\") defaultWorkshopLocation = 0;\r\n locationID = defaultWorkshopLocation;\r\n if (today < minDateIso || today > maxDateIso) {\r\n displayDateIso = minDateIso;\r\n } else {\r\n displayDateIso = today;\r\n }\r\n roster2.updateSelectedDate(displayDateIso)\r\n workshopFilterListData.selectedDate = displayDateIso;\r\n workshopFilterListData.batchId = selectedBatchId;\r\n workshopFilterListData.token = $.session.Token;\r\n workshopFilterListData.application = $.session.applicationName;\r\n workshopFilterListData.consumerIds = breakDownConsumerList(\r\n activeModulesConsumers\r\n );\r\n //Only allow enabled consumers - Date, LocaitonID, returns consumers (called employee_id).\r\n workshopAjax.getEnabledConsumersForWorkshop(\r\n displayDateIso,\r\n defaultWorkshopLocation,\r\n res => {\r\n const allowedConsumers = []\r\n res.forEach(r => {\r\n var consumer_id = r.employee_id;\r\n const filteredConsumer = activeModulesConsumers.filter(consumer => consumer.id === consumer_id);\r\n if (filteredConsumer.length !== 0) allowedConsumers.push({ 'consumer_id': consumer_id })\r\n });\r\n roster2.setAllowedConsumers(allowedConsumers);\r\n }\r\n );\r\n\r\n workshopAjax.WorkshopLocations(displayDateIso, r => {\r\n r.forEach(r => {\r\n if (!mainLocationData[r.id]) {\r\n obj = {\r\n locName: r.name\r\n };\r\n mainLocationData[r.id] = obj;\r\n }\r\n });\r\n\r\n locationDropdownData = r.map(r => {\r\n var id = `loc${r.id}`;\r\n var value = r.id;\r\n var text = r.name;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n locationFilterDropdownData = [...locationDropdownData];\r\n locationFilterDropdownData.unshift({ id: \"loc0\", value: 0, text: \"All\" });\r\n locationDropdownData.unshift({ id: \"loc0\", value: 0, text: \"\" });\r\n });\r\n\r\n workshopAjax.WorkshopGetSupervisors(displayDateIso, r => {\r\n supervisorDropdownData = r.map(r => {\r\n var id = `sup${r.id}`;\r\n var value = r.id;\r\n var text = r.name;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n supervisorDropdownData.sort(compareSupList);\r\n supervisorDropdownData.unshift({ id: \"sup0\", value: 0, text: \"\" });\r\n });\r\n\r\n workshopAjax.WorkshopGetJobCode(displayDateIso, 0, r => {\r\n r.forEach(r => {\r\n if (!mainJobData[r.jobstepid]) {\r\n obj = {\r\n activityType: r.activitytype,\r\n jobStepId: r.jobstepid,\r\n jobString: r.shortdescription\r\n };\r\n mainJobData[r.jobstepid] = obj;\r\n }\r\n });\r\n\r\n jobDropdownData = r.map(r => {\r\n var id = `job${r.jobstepid}`;\r\n var value = r.jobstepid;\r\n var text = `${r.customercode} - ${r.jobcode} - ${r.jobstep} - ${r.shortdescription}`;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n jobFilterDropdownData = [...jobDropdownData];\r\n jobFilterDropdownData.unshift({ id: \"job0\", value: 0, text: \"All\" });\r\n jobDropdownData.unshift({ id: \"job0\", value: \"%\", text: \"\" });\r\n });\r\n }\r\n\r\n function updateJobDropdown(locationId, forFilter) {\r\n workshopAjax.WorkshopGetJobCode(displayDateIso, locationId, r => {\r\n if (forFilter) {\r\n updateJobFilterDropdownData = r.map(r => {\r\n var id = `job${r.jobstepid}`;\r\n var value = r.jobstepid;\r\n var text = `${r.customercode} - ${r.jobcode} - ${r.jobstep} - ${r.shortdescription}`;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n updateJobFilterDropdownData.unshift({\r\n id: \"job0\",\r\n value: 0,\r\n text: \"All\"\r\n });\r\n dropdown.populate(\"filterJobDropdown\", updateJobFilterDropdownData);\r\n } else {\r\n var updateJobDropdownData = r.map(r => {\r\n var id = `job${r.jobstepid}`;\r\n var value = r.jobstepid;\r\n var text = `${r.customercode} - ${r.jobcode} - ${r.jobstep} - ${r.shortdescription}`;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n updateJobDropdownData.unshift({ id: \"job0\", value: \"%\", text: \"\" });\r\n dropdown.populate(\"timeClockJobDropdown\", updateJobDropdownData);\r\n }\r\n });\r\n }\r\n\r\n function buildWorkshopTable(data, callback) {\r\n var tableData = data;\r\n\r\n multiSelectBtn = button.build({\r\n id: \"multiSelect\",\r\n text: \"Multi select\",\r\n icon: \"multiSelect\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n classNames: \"multiSelectBtn\",\r\n callback: function () {\r\n enableMultiEditRows(multiSelectBtn);\r\n filterBtn.classList.toggle(\"disabled\");\r\n }\r\n });\r\n\r\n function getFilterValues() {\r\n return (filterValues = {\r\n workshopLocation: workshopFilterListData.locationId,\r\n workshopJob: workshopFilterListData.jobStepId,\r\n workshopDate: workshopFilterListData.selectedDate,\r\n workshopStartDate: minDateIso,\r\n workshopEndDate: maxDateIso\r\n });\r\n }\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: function () {\r\n // Iterate through each item in the buttonsData array\r\n buttonsData.forEach(function (buttonData) {\r\n buttonData.filterValues = getFilterValues();\r\n });\r\n\r\n generateReports.showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n\r\n reportsBtn = createMainReportButton([{ text: 'Job Activity Detail Report by Employee and Job' }])\r\n\r\n var workshopTableOpts = {\r\n headline: `Batch Period: ${UTIL.formatDateFromIso(\r\n minDateIso\r\n )} - ${UTIL.formatDateFromIso(\r\n maxDateIso\r\n )}
    Date: ${UTIL.formatDateFromIso(displayDateIso)}`,\r\n columnHeadings: [\r\n \"Consumer\",\r\n \"Start Time\",\r\n \"End Time\",\r\n \"Job Code\",\r\n \"Job Step\",\r\n \"Hours\",\r\n \"Quantity\",\r\n \"Supervisor\"\r\n ],\r\n tableId: \"workshopTable\",\r\n // callback: handleWorkshopTableEvents\r\n };\r\n\r\n data.forEach(d => {\r\n if (!mainTableData[d.jobactid]) {\r\n obj = {\r\n startTime: d.starttime,\r\n endTime: d.endtime,\r\n quantity: d.quantity,\r\n consumer: d.name,\r\n consumerid: d.consumerid,\r\n isPieceRate: d.activitytype === \"P\" ? true : false\r\n };\r\n mainTableData[d.jobactid] = obj;\r\n }\r\n });\r\n\r\n tableData = data.map(d => {\r\n consumerName = `${d.name.split(\" \")[1]}, ${d.name.split(\" \")[0]}`;\r\n trimedHour = d.hours.slice(0, -2);\r\n if (d.hours !== \"\") {\r\n trimedHour = Number(trimedHour);\r\n }\r\n //if ($.session.WorkshopUpdate) {\r\n return {\r\n values: [\r\n consumerName,\r\n UTIL.convertFromMilitary(d.starttime),\r\n d.endtime === \"\" ? icons.error : UTIL.convertFromMilitary(d.endtime),\r\n d.jobcode,\r\n d.jobstep,\r\n trimedHour === \"\" ? \"-\" : trimedHour,\r\n d.activitytype !== \"P\"\r\n ? \"-\"\r\n : d.quantity === \"\" || d.quantity === \"0\"\r\n ? icons.error\r\n : d.quantity,\r\n d.supervisor === \" \" ? \"-\" : d.supervisor\r\n ],\r\n id: `jobAct${d.jobactid}`,\r\n attributes: [{ key: \"data-job-activity\", value: d.jobactid }],\r\n onClick: handleWorkshopTableEvents\r\n // }\r\n //}\r\n // else {\r\n // return {\r\n // values: [\r\n // consumerName,\r\n // UTIL.convertFromMilitary(d.starttime),\r\n // d.endtime === \"\" ? icons.error : UTIL.convertFromMilitary(d.endtime),\r\n // d.jobcode,\r\n // d.jobstep,\r\n // trimedHour === \"\" ? \"-\" : trimedHour,\r\n // d.activitytype !== \"P\"\r\n // ? \"-\"\r\n // : d.quantity === \"\" || d.quantity === \"0\"\r\n // ? icons.error\r\n // : d.quantity,\r\n // d.supervisor === \" \" ? \"-\" : d.supervisor\r\n // ],\r\n // id: `jobAct${d.jobactid}` \r\n // // attributes: [{ key: \"data-job-activity\", value: d.jobactid }],\r\n // // onClick: handleWorkshopTableEvents\r\n // }\r\n }\r\n });\r\n\r\n DOM.clearActionCenter();\r\n\r\n filterSelectReportBtnWrap = document.createElement(\"div\");\r\n filterSelectReportBtnWrap.classList.add(\"btnWrap\", \"filterSelectReportBtnWrap\");\r\n\r\n filterSelectReportBtnWrap.appendChild(multiSelectBtn);\r\n filterSelectReportBtnWrap.appendChild(reportsBtn);\r\n\r\n DOM.ACTIONCENTER.appendChild(filterSelectReportBtnWrap);\r\n\r\n const filteredBy = updateCurrentFilterDisplay();\r\n DOM.ACTIONCENTER.appendChild(filteredBy);\r\n var workshopTable = table.build(workshopTableOpts);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = workshopTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Consumer\r\n headers[1].setAttribute('data-type', 'date'); // Start Time\r\n headers[2].setAttribute('data-type', 'date'); // End Time\r\n headers[3].setAttribute('data-type', 'string'); // Job Code\r\n headers[4].setAttribute('data-type', 'string'); // Job Step \r\n headers[5].setAttribute('data-type', 'number'); // Hours\r\n headers[6].setAttribute('data-type', 'number'); // Quantity\r\n headers[7].setAttribute('data-type', 'string'); // Supervisor \r\n\r\n\r\n DOM.ACTIONCENTER.appendChild(workshopTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(workshopTable); \r\n\r\n table.populate(\"workshopTable\", tableData);\r\n\r\n // //permission\r\n if (!$.session.WorkshopUpdate) {\r\n multiSelectBtn.classList.add(\"disabled\")\r\n multiSelectBtn.classList.remove(\"enabled\")\r\n toggleMiniRosterBtnVisible(false)\r\n }\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n\r\n function handleWorkshopTableEvents(event) {\r\n var isRow = event.target.classList.contains(\"table__row\");\r\n var jobAct = event.target.dataset.jobActivity;\r\n if (!isRow) return; // if not row return\r\n if (!$.session.WorkshopUpdate) return; // \r\n\r\n if (enableMultiEdit) {\r\n if (mainTableData[jobAct].endTime) return; // If they already clocked out, do nothing\r\n event.target.classList.toggle(\"selected\");\r\n //Add if row is being selected\r\n if (event.target.classList.contains(\"selected\")) {\r\n //and if it doesn't exist in the array\r\n if (!multiConsumerSelect.includes(mainTableData[jobAct].consumerid)) {\r\n multiConsumerSelect.push(mainTableData[jobAct].consumerid);\r\n }\r\n } else {\r\n //Remove the consumer id if it is being deselected\r\n multiConsumerSelect.splice(\r\n multiConsumerSelect.indexOf(mainTableData[jobAct].consumerid),\r\n 1\r\n );\r\n }\r\n //disable clock out button if nothing is selected\r\n if (multiConsumerSelect.length === 0) {\r\n clockOutNavBtn.classList.add(\"disabled\");\r\n } else {\r\n clockOutNavBtn.classList.remove(\"disabled\");\r\n }\r\n } else if (!enableMultiEdit) {\r\n tableRowPopup(event.target);\r\n }\r\n }\r\n\r\n function enableMultiEditRows(multiBtn) {\r\n setupActionNav();\r\n miniRosterBtn = document.querySelector(\".consumerListBtn\");\r\n enableMultiEdit = !enableMultiEdit;\r\n multiBtn.classList.toggle(\"enabled\");\r\n miniRosterBtn.classList.toggle(\"disabled\");\r\n\r\n if (enableMultiEdit) {\r\n ACTION_NAV.show();\r\n } else {\r\n selectedConsumers = [];\r\n ACTION_NAV.hide();\r\n }\r\n\r\n var highlightedRows = [].slice.call(\r\n document.querySelectorAll(\".table__row.selected\")\r\n );\r\n highlightedRows.forEach(row => row.classList.remove(\"selected\"));\r\n }\r\n\r\n function tableRowPopup(row) {\r\n // var isPieceRate = row.dataset.pieceRate == \"true\";\r\n jobActivity = row.dataset.jobActivity;\r\n jobActivity = parseInt(jobActivity);\r\n var isPieceRate = mainTableData[jobActivity].isPieceRate;\r\n let rowPopup = POPUP.build({\r\n classNames: \"workshopTableRowPopup\",\r\n header: mainTableData[jobActivity].consumer,\r\n id: `jobAct${jobActivity}`\r\n });\r\n\r\n let startTimeField = input.build({\r\n id: \"startTime\",\r\n label: \"Start Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n value: mainTableData[jobActivity].startTime\r\n });\r\n\r\n let endTimeField = input.build({\r\n id: \"endTime\",\r\n label: \"End Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n value: mainTableData[jobActivity].endTime\r\n });\r\n\r\n //only show if they have piece rate\r\n let quantityField = input.build({\r\n id: \"pieceRateQuantity\",\r\n label: \"Quantity\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"90000\" },\r\n { key: \"onkeypress\", value: \"return event.charCode >= 48 && event.charCode <= 57\" }\r\n ],\r\n value: mainTableData[jobActivity].quantity\r\n });\r\n //enable when there are changes to apply\r\n let saveBtn = button.build({\r\n id: \"save\",\r\n text: \"Save\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"save\",\r\n // classNames: 'disabled',\r\n callback: function () {\r\n tableRowApplyChange(jobActivity, row, rowPopup);\r\n }\r\n });\r\n\r\n let deleteEntryBtn = button.build({\r\n id: \"deleteEntry\",\r\n text: \"Delete Entry\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n icon: \"delete\",\r\n callback: function () {\r\n deleteConfirmation(\r\n rowPopup,\r\n (res = () => {\r\n if (res) {\r\n workshopAjax.deleteWorkshopEntry(jobActivity);\r\n var parent = row.parentElement;\r\n parent.removeChild(row);\r\n }\r\n })\r\n );\r\n }\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"rowPopupBtnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(deleteEntryBtn);\r\n\r\n rowPopup.appendChild(startTimeField);\r\n rowPopup.appendChild(endTimeField);\r\n if (isPieceRate) rowPopup.appendChild(quantityField);\r\n rowPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(rowPopup);\r\n }\r\n\r\n function deleteConfirmation(rowPopup, callback) {\r\n POPUP.hide(rowPopup);\r\n var confPopup = POPUP.build({\r\n classNames: \"warning\"\r\n });\r\n var cancelBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"no\",\r\n callback: function () {\r\n POPUP.hide(confPopup);\r\n POPUP.show(rowPopup);\r\n callback((res = false));\r\n }\r\n });\r\n var confirmBtn = button.build({\r\n text: \"Delete Entry\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n id: \"confDeleteBtn\",\r\n icon: \"delete\",\r\n callback: function () {\r\n POPUP.hide(confPopup);\r\n callback((res = true));\r\n }\r\n });\r\n var btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(cancelBtn);\r\n btnWrap.appendChild(confirmBtn);\r\n\r\n var textArea = document.createElement(\"p\");\r\n textArea.classList.add(\"warningTextArea\");\r\n textArea.innerHTML = \"Are you sure you want to delete this record?\";\r\n confPopup.appendChild(textArea);\r\n confPopup.appendChild(btnWrap);\r\n POPUP.show(confPopup);\r\n }\r\n\r\n function tableRowApplyChange(jobActivity, row, popup) {\r\n //get time out if exists\r\n //get time in\r\n //get quantity if exists\r\n //clock out if time out exists and is different from previous clockout\r\n //update clock in if time is is different from previous clockin\r\n //update quantity if exists and is different\r\n\r\n var changedStartTime = document.getElementById(\"startTime\").value;\r\n var startTime = mainTableData[jobActivity].startTime;\r\n var endTimeField = document.getElementById(\"endTime\");\r\n var quantityField = document.getElementById(\"pieceRateQuantity\");\r\n\r\n if (endTimeField.value) {\r\n var enteredEndTime = endTimeField.value;\r\n if (enteredEndTime.length < 8) {\r\n enteredEndTime += \":00\";\r\n }\r\n }\r\n if (quantityField) {\r\n if (quantityField.value) { var quantity = quantityField.value; }\r\n else var quantity = \"0\";\r\n }\r\n\r\n if (changedStartTime === enteredEndTime) {\r\n POPUP.hide(popup);\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"Start Time cannot be the same as End Time.\";\r\n return;\r\n }\r\n\r\n //UPDATE CLOCKIN TIME IF IT HAS CHANGED\r\n //workshopajax.updateworkshopclockin\r\n if (startTime !== document.getElementById(\"startTime\").value) {\r\n var changedStartTime = document.getElementById(\"startTime\").value;\r\n if (changedStartTime.length < 8) {\r\n changedStartTime += \":00\";\r\n }\r\n if (!enteredEndTime || changedStartTime < enteredEndTime) {\r\n workshopAjax.updateWorkshopClockIn(\r\n jobActivity,\r\n changedStartTime,\r\n res => {\r\n try {\r\n if (res.indexOf(\"Start Overlap\") != -1) {\r\n throw \"OverlapError\";\r\n }\r\n mainTableData[jobActivity].startTime = changedStartTime;\r\n let changedStartTimeDISPLAY = UTIL.convertFromMilitary(\r\n changedStartTime\r\n );\r\n row.children[1].innerHTML = changedStartTimeDISPLAY;\r\n row.classList.remove(\"overlapError\"); //If they are saving from Overlap\r\n hours = Number(\r\n UTIL.calculateTotalHours(\r\n mainTableData[jobActivity].startTime,\r\n mainTableData[jobActivity].endTime\r\n )\r\n );\r\n row.children[5].innerHTML = hours;\r\n } catch (e) {\r\n if (e === \"OverlapError\") {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML =\r\n \"Changes overlap with existing record\";\r\n }\r\n }\r\n }\r\n );\r\n } else {\r\n POPUP.hide(popup);\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"Start Time cannot be set after End Time\";\r\n return;\r\n }\r\n }\r\n\r\n //CLOCK OUT/UPDATE CLOCK OUT TIME\r\n if (enteredEndTime) {\r\n if (\r\n enteredEndTime > mainTableData[jobActivity].startTime &&\r\n enteredEndTime !== mainTableData[jobActivity].endTime\r\n ) {\r\n mainTableData[jobActivity].endTime = enteredEndTime;\r\n workshopAjax.clockoutWorkshopSingle(\r\n jobActivity,\r\n enteredEndTime,\r\n res => {\r\n try {\r\n if (res.indexOf(\"End Overlap\") != -1) {\r\n throw \"OverlapError\";\r\n }\r\n enteredEndTimeDISPLAY = UTIL.convertFromMilitary(enteredEndTime);\r\n row.children[2].innerHTML = enteredEndTimeDISPLAY;\r\n row.classList.remove(\"overlapError\"); //If they are saving from Overlap\r\n hours = Number(\r\n UTIL.calculateTotalHours(\r\n mainTableData[jobActivity].startTime,\r\n mainTableData[jobActivity].endTime\r\n )\r\n );\r\n row.children[5].innerHTML = hours;\r\n } catch (e) {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"Changes overlap with existing record\";\r\n }\r\n }\r\n );\r\n } else if (enteredEndTime < startTime) {\r\n POPUP.hide(popup);\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"End Time cannot be set before Start Time\";\r\n return;\r\n }\r\n }\r\n\r\n //UPDATE QUANTITY\r\n if (quantity && quantity !== mainTableData[jobActivity].quantity) {\r\n mainTableData[jobActivity].quantity = quantity;\r\n workshopAjax.updateWorkshopQuantity(quantity, jobActivity);\r\n row.children[6].innerHTML = quantity === \"0\" ? icons.error : quantity;\r\n }\r\n POPUP.hide(popup);\r\n }\r\n\r\n function tableFilterPopup(IsShow) {\r\n var filterPopup = POPUP.build({\r\n header: \"Table Filter\",\r\n id: \"workhshopFilterTablePopup\"\r\n });\r\n\r\n //dropdown location (needs the selected date)\r\n locationDropdown = dropdown.build({\r\n dropdownId: \"locationDropdown\",\r\n label: \"Location\",\r\n style: \"secondary\"\r\n });\r\n\r\n locationDropdown.addEventListener(\"change\", () => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n locationID = selectedOption.value;\r\n filterCache.locationSelectedOpt = event.target.selectedIndex;\r\n workshopFilterListData.locationName = selectedOption.innerHTML;\r\n updateJobDropdown(locationID, true);\r\n });\r\n\r\n //dropdown job\r\n jobDropdown = dropdown.build({\r\n dropdownId: \"filterJobDropdown\",\r\n label: \"Job\",\r\n style: \"secondary\"\r\n });\r\n\r\n let filterApplyBtn = button.build({\r\n id: \"filterApply\",\r\n text: \"Apply\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"checkmark\",\r\n callback: function () {\r\n filterApplyAction();\r\n POPUP.hide(filterPopup);\r\n }\r\n });\r\n\r\n if (IsShow == 'ALL' || IsShow == 'locationBtn')\r\n filterPopup.appendChild(locationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'jobStepBtn')\r\n filterPopup.appendChild(jobDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'serviceDateBtn')\r\n filterPopup.appendChild(dateSelection);\r\n filterPopup.appendChild(filterApplyBtn);\r\n POPUP.show(filterPopup);\r\n updateJobDropdown(locationID, true);\r\n\r\n locationDropdownSelect = document.getElementById(\"locationDropdown\");\r\n jobDropdownSelect = document.getElementById(\"filterJobDropdown\");\r\n\r\n //Populate Dropdowns and Cache the selection\r\n dropdown.populate(\r\n \"locationDropdown\",\r\n locationFilterDropdownData,\r\n locationID\r\n );\r\n // locationDropdownSelect.options.selectedIndex =\r\n // filterCache.locationSelectedOpt;\r\n jobFilterDropdownData[0].text = \"All\";\r\n jobFilterDropdownData[0].value = 0;\r\n updateJobFilterDropdownData\r\n ? dropdown.populate(\"filterJobDropdown\", updateJobFilterDropdownData)\r\n : dropdown.populate(\"filterJobDropdown\", jobFilterDropdownData);\r\n jobDropdownSelect.options.selectedIndex = filterCache.jobStepSelectedOpt;\r\n }\r\n\r\n function filterApplyAction() {\r\n if (document.getElementById(\"date\") != null) {\r\n displayDateIso = document.getElementById(\"date\").value;\r\n workshopFilterListData.selectedDate = displayDateIso;\r\n }\r\n\r\n if (document.getElementById(\"filterJobDropdown\") != null) {\r\n jobDropdown = document.getElementById(\"filterJobDropdown\");\r\n workshopFilterListData.jobStepId = jobDropdown.options[jobDropdown.selectedIndex].value;\r\n filterCache.jobStepSelectedOpt = jobDropdown.selectedIndex;\r\n }\r\n if (document.getElementById(\"locationDropdown\") != null) {\r\n locationDropdown = document.getElementById(\"locationDropdown\");\r\n workshopFilterListData.locationId = locationDropdown.options[locationDropdown.selectedIndex].value;\r\n locationID = locationDropdown.options[locationDropdown.selectedIndex].value;\r\n filterCache.locationSelectedOpt = locationDropdown.selectedIndex;\r\n }\r\n else {\r\n workshopFilterListData.locationId = locationID;\r\n }\r\n\r\n if (defaults.rememberLastLocation(\"workshop\"))\r\n defaults.setLocation(\"workshop\", locationID);\r\n\r\n //Refresh roster date:\r\n roster2.updateSelectedDate(displayDateIso)\r\n //Update active Consumers based on filter - Date, LocaitonID, returns consumers (called employee_id).\r\n workshopAjax.getEnabledConsumersForWorkshop(\r\n displayDateIso,\r\n workshopFilterListData.locationId,\r\n res => {\r\n const allowedConsumers = []\r\n res.forEach(r => {\r\n var consumer_id = r.employee_id;\r\n const filteredConsumer = activeModulesConsumers.filter(consumer => consumer.id === consumer_id);\r\n if (filteredConsumer.length !== 0) allowedConsumers.push({ 'consumer_id': consumer_id })\r\n });\r\n roster2.setAllowedConsumers(allowedConsumers);\r\n }\r\n );\r\n workshopAjax.WorkshopFilterList(workshopFilterListData, buildWorkshopTable);\r\n updateCurrentFilterDisplay();\r\n }\r\n\r\n function updateCurrentFilterDisplay() {\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n if (!currentFilterDisplay) {\r\n workshopFilterListData.locationName = locationID == 0 ? \"All\" : mainLocationData[locationID].locName;\r\n workshopFilterListData.locationId = locationID;\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n filterButtonSet();\r\n currentFilterDisplay.appendChild(btnWrap);\r\n }\r\n\r\n currentFilterDisplay.style.maxWidth = '100%';\r\n\r\n if (workshopFilterListData.locationId == '0') {\r\n btnWrap.appendChild(locationBtnWrap);\r\n btnWrap.removeChild(locationBtnWrap);\r\n } else {\r\n if (document.getElementById('locationBtn') != null)\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + workshopFilterListData.locationName;\r\n btnWrap.appendChild(locationBtnWrap);\r\n }\r\n\r\n if (workshopFilterListData.jobStepId === '0' || workshopFilterListData.jobStepId === 0) {\r\n btnWrap.appendChild(jobStepBtnWrap);\r\n btnWrap.removeChild(jobStepBtnWrap);\r\n } else {\r\n if (document.getElementById('jobStepBtn') != null)\r\n document.getElementById('jobStepBtn').innerHTML = workshopFilterListData.jobStepId == '0' ? 'Job: All' : 'Job: ' + mainJobData[workshopFilterListData.jobStepId].jobString;\r\n btnWrap.appendChild(jobStepBtnWrap);\r\n }\r\n\r\n if (document.getElementById('serviceDateBtn') != null)\r\n document.getElementById('serviceDateBtn').innerHTML = 'Date: ' + workshopFilterListData.selectedDate;\r\n\r\n\r\n return currentFilterDisplay;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { tableFilterPopup('ALL') },\r\n });\r\n\r\n locationBtn = button.build({\r\n id: 'locationBtn',\r\n text: 'Location: ' + workshopFilterListData.locationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { tableFilterPopup('locationBtn') },\r\n });\r\n locationCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('locationBtn') },\r\n });\r\n\r\n jobStepBtn = button.build({\r\n id: 'jobStepBtn',\r\n text: workshopFilterListData.jobStepId == '0' || workshopFilterListData.jobStepId === 0 ? 'Job: All' : 'Job: ' + mainJobData[workshopFilterListData.jobStepId].jobString,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { tableFilterPopup('jobStepBtn') },\r\n });\r\n jobStepCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('jobStepBtn') },\r\n });\r\n\r\n serviceDateBtn = button.build({\r\n id: 'serviceDateBtn',\r\n text: 'Date: ' + workshopFilterListData.selectedDate,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { tableFilterPopup('serviceDateBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n locationBtnWrap = document.createElement('div');\r\n locationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationBtnWrap.appendChild(locationBtn);\r\n locationBtnWrap.appendChild(locationCloseBtn);\r\n btnWrap.appendChild(locationBtnWrap);\r\n\r\n jobStepBtnWrap = document.createElement('div');\r\n jobStepBtnWrap.classList.add('filterSelectionBtnWrap');\r\n jobStepBtnWrap.appendChild(jobStepBtn);\r\n jobStepBtnWrap.appendChild(jobStepCloseBtn);\r\n btnWrap.appendChild(jobStepBtnWrap);\r\n\r\n serviceDateBtnWrap = document.createElement('div');\r\n serviceDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceDateBtnWrap.appendChild(serviceDateBtn);\r\n btnWrap.appendChild(serviceDateBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) { \r\n if (closeFilter == 'jobStepBtn') {\r\n workshopFilterListData.jobStepId = 0; \r\n }\r\n if (closeFilter == 'locationBtn') {\r\n locationID = '0'; \r\n workshopFilterListData.locationId = '0'; \r\n }\r\n filterApplyAction();\r\n }\r\n\r\n function clockInOutChoicePopup() {\r\n let popup = POPUP.build({\r\n header: \"Please Choose an Option\",\r\n id: \"clockInOutChoicePopup\"\r\n });\r\n\r\n let clockInBtn = button.build({\r\n text: \"Clock In\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n POPUP.hide(popup);\r\n clockInOutActionPopup(\"in\");\r\n }\r\n });\r\n let clockOutBtn = button.build({\r\n text: \"Clock Out\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n POPUP.hide(popup);\r\n clockInOutActionPopup(\"out\");\r\n }\r\n });\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"choiceBtnWrap\");\r\n btnWrap.appendChild(clockInBtn);\r\n btnWrap.appendChild(clockOutBtn);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function clockInOutActionPopup(choice) {\r\n //Display the Date and Location that were selected from the Filter.\r\n let locationDisplay = document.createElement(\"h4\");\r\n locationDisplay.innerHTML = `Location: ${locationID == 0\r\n ? \"No location specified\"\r\n : mainLocationData[locationID].locName\r\n }`;\r\n // locationDisplay.innerHTML = `Location: ${\r\n // workshopFilterListData.locationId == 0\r\n // ? \"No location specified\"\r\n // : mainLocationData[workshopFilterListData.locationId].locName\r\n // }`;\r\n let dateDisplay = document.createElement(\"h4\");\r\n dateDisplay.innerHTML = `Selected Date: ${UTIL.formatDateFromIso(\r\n displayDateIso\r\n )}`;\r\n\r\n timeClockJobDropdown = dropdown.build({\r\n dropdownId: \"timeClockJobDropdown\",\r\n label: \"Job\",\r\n style: \"secondary\"\r\n });\r\n\r\n timeClockLocationDropdown = dropdown.build({\r\n dropdownId: \"timeClockLocationDropdown\",\r\n label: \"Location\",\r\n style: \"secondary\"\r\n });\r\n\r\n let inPopup = POPUP.build({\r\n header: \"Clock In\",\r\n id: \"clockInOutPopup\"\r\n });\r\n\r\n let outPopup = POPUP.build({\r\n header: \"Clock Out\",\r\n id: \"clockInOutPopup\"\r\n });\r\n\r\n let timeInField = input.build({\r\n id: \"inTime\",\r\n label: \"In Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n callback: function () { }\r\n });\r\n timeInField.classList.add(\"error\");\r\n\r\n let timeOutField = input.build({\r\n id: \"outTime\",\r\n label: \"Out Time\",\r\n type: \"time\",\r\n style: \"secondary\"\r\n });\r\n timeOutField.classList.add(\"error\");\r\n\r\n let clockInBtn = button.build({\r\n text: \"Clock In\",\r\n style: \"secondary\",\r\n classNames: \"disabled\",\r\n type: \"contained\",\r\n id: \"clockInBtn\",\r\n callback: function () {\r\n clockIn();\r\n POPUP.hide(inPopup);\r\n //Clock in function\r\n }\r\n });\r\n\r\n let clockOutBtn = button.build({\r\n text: \"Clock Out\",\r\n style: \"secondary\",\r\n classNames: \"disabled\",\r\n type: \"contained\",\r\n callback: function () {\r\n clockOut();\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(outPopup);\r\n //clock out function\r\n }\r\n });\r\n\r\n let inCancelBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n callback: function () {\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(inPopup);\r\n }\r\n });\r\n\r\n let outCancelBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n callback: function () {\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(outPopup);\r\n }\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n\r\n timeInField.addEventListener(\"change\", function () {\r\n let inTimeField = document.getElementById(\"inTime\");\r\n if (inTimeField.value === \"\") {\r\n timeInField.classList.add(\"error\");\r\n } else {\r\n timeInField.classList.remove(\"error\");\r\n }\r\n checkRequiredFields(clockInBtn);\r\n });\r\n timeOutField.addEventListener(\"change\", function () {\r\n let outTimeField = document.getElementById(\"outTime\");\r\n if (outTimeField.value === \"\") {\r\n timeOutField.classList.add(\"error\");\r\n } else {\r\n timeOutField.classList.remove(\"error\");\r\n }\r\n checkRequiredFields(clockOutBtn);\r\n });\r\n timeClockJobDropdown.classList.add(\"error\");\r\n timeClockJobDropdown.addEventListener(\"change\", function () {\r\n let timeClockJobDropdownField = document.getElementById(\r\n \"timeClockJobDropdown\"\r\n );\r\n if (\r\n timeClockJobDropdownField.options[\r\n timeClockJobDropdownField.selectedIndex\r\n ].value === \"%\"\r\n ) {\r\n timeClockJobDropdown.classList.add(\"error\");\r\n } else {\r\n timeClockJobDropdown.classList.remove(\"error\");\r\n }\r\n checkRequiredFields(clockInBtn);\r\n });\r\n\r\n switch (choice) {\r\n case \"in\": {\r\n inPopup.appendChild(dateDisplay);\r\n inPopup.appendChild(locationDisplay);\r\n inPopup.appendChild(timeClockJobDropdown);\r\n inPopup.appendChild(supervisorDropdown);\r\n inPopup.appendChild(timeInField);\r\n btnWrap.appendChild(clockInBtn);\r\n btnWrap.appendChild(inCancelBtn);\r\n inPopup.appendChild(btnWrap);\r\n POPUP.show(inPopup);\r\n\r\n updateJobDropdown(locationID, false);\r\n // updateJobDropdown(workshopFilterListData.locationId, false);\r\n\r\n // jobFilterDropdownData[0].text = \"\";\r\n // jobFilterDropdownData[0].value = \"%\";\r\n\r\n dropdown.populate(\"timeClockJobDropdown\", jobFilterDropdownData);\r\n dropdown.populate(\r\n \"supervisorDropdown\",\r\n supervisorDropdownData,\r\n $.session.PeopleId\r\n ); // default supervisor to the clocked in user (if supervisor)\r\n break;\r\n }\r\n case \"out\": {\r\n outPopup.appendChild(timeOutField);\r\n btnWrap.appendChild(clockOutBtn);\r\n btnWrap.appendChild(outCancelBtn);\r\n outPopup.appendChild(btnWrap);\r\n POPUP.show(outPopup);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function clockIn() {\r\n var supervisorID;\r\n let jobDropdownSelect = document.getElementById(\"timeClockJobDropdown\");\r\n let jobStepIdInt = parseInt(\r\n jobDropdownSelect.options[jobDropdownSelect.selectedIndex].value\r\n );\r\n // let locationID = workshopFilterListData.locationId;\r\n let supervisorSelect = document.getElementById(\"supervisorDropdown\");\r\n let supSelectedIndex = supervisorSelect.selectedIndex;\r\n if (supSelectedIndex !== -1) {\r\n supervisorID =\r\n supervisorSelect.options[supervisorSelect.selectedIndex].value;\r\n } else {\r\n supervisorID = \"0\";\r\n }\r\n let inTimeField = document.getElementById(\"inTime\");\r\n let inTime = inTimeField.value + \":00\";\r\n\r\n inData = {\r\n batchId: selectedBatchId,\r\n consumerids: selectedConsumers.map(e => e.id).join(\"|\"),\r\n jobActType: mainJobData[jobStepIdInt].activityType,\r\n jobStepId: mainJobData[jobStepIdInt].jobStepId,\r\n jobString: mainJobData[jobStepIdInt].jobString,\r\n location: locationID,\r\n selectedDate: displayDateIso,\r\n startOrEnd: \"Start\",\r\n supervisor: supervisorID,\r\n time: inTime,\r\n token: $.session.Token\r\n };\r\n\r\n workshopFilterListData.jobStepId = 0;\r\n\r\n workshopAjax.WorkshopClockIn(inData, res => {\r\n if (res.length > 0) {\r\n // There are overlaps\r\n overlapErrorPopup(res, \"in\");\r\n } else {\r\n selectedConsumers = [];\r\n mainTableData = {};\r\n workshopAjax.WorkshopFilterList(\r\n workshopFilterListData,\r\n buildWorkshopTable\r\n );\r\n }\r\n\r\n roster2.clearActiveConsumers();\r\n });\r\n }\r\n\r\n function clockOut() {\r\n let outTimeField = document.getElementById(\"outTime\");\r\n let outTime = outTimeField.value + \":00\";\r\n outData = {\r\n batchId: selectedBatchId,\r\n consumerids: selectedConsumers.map(e => e.id).join(\"|\"),\r\n jobActType: \"\",\r\n jobStepId: \"0\",\r\n jobString: \"\",\r\n location: \"0\",\r\n selectedDate: displayDateIso,\r\n startOrEnd: \"End\",\r\n supervisor: \"0\",\r\n time: outTime,\r\n token: $.session.Token\r\n };\r\n\r\n workshopFilterListData.jobStepId = 0;\r\n\r\n workshopAjax.WorkshopClockOut(outData, res => {\r\n if (res.length > 0) {\r\n overlapErrorPopup(res, \"out\");\r\n } else {\r\n selectedConsumers = [];\r\n mainTableData = {};\r\n workshopAjax.WorkshopFilterList(\r\n workshopFilterListData,\r\n buildWorkshopTable\r\n );\r\n }\r\n });\r\n }\r\n\r\n function overlapErrorPopup(overlapRecords, inOutString) {\r\n let clockedInConsumers = selectedConsumers.length - overlapRecords.length;\r\n\r\n let overlapErrorPopup = POPUP.build({\r\n header: `\r\n ${clockedInConsumers} ${clockedInConsumers !== 1 ? \"consumers\" : \"consumer\"\r\n } clocked ${inOutString}. \r\n There ${overlapRecords.length === 1 ? \"Is\" : \"Are\"} ${overlapRecords.length\r\n } ${overlapRecords.length === 1 ? \"Overlap.\" : \"Overlaps.\"}\r\n `,\r\n id: \"overlapErrorPopup\"\r\n });\r\n\r\n let overlapDescriptionWrap = document.createElement(\"div\");\r\n\r\n overlapRecords.forEach(r => {\r\n let overlapRecord = document.createElement(\"p\");\r\n overlapRecord.innerHTML = `

    ${mainTableData[r].consumer}


    \r\n Time in: ${UTIL.convertFromMilitary(mainTableData[r].startTime)} -\r\n Time out: ${UTIL.convertFromMilitary(mainTableData[r].endTime)}

    \r\n `;\r\n overlapDescriptionWrap.appendChild(overlapRecord);\r\n });\r\n\r\n let correctBtn = button.build({\r\n text: \"Correct Overlaps\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n POPUP.hide(overlapErrorPopup);\r\n overlapCorrection(overlapRecords);\r\n }\r\n });\r\n let continueBtn = button.build({\r\n text: \"Continue\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n mainTableData = {};\r\n workshopAjax.WorkshopFilterList(\r\n workshopFilterListData,\r\n buildWorkshopTable\r\n );\r\n POPUP.hide(overlapErrorPopup);\r\n }\r\n });\r\n selectedConsumers = [];\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(correctBtn);\r\n btnWrap.appendChild(continueBtn);\r\n overlapErrorPopup.appendChild(overlapDescriptionWrap);\r\n overlapErrorPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(overlapErrorPopup);\r\n }\r\n\r\n function overlapCorrection(overlapRecords) {\r\n workshopFilterListData.consumerIds = overlapRecords\r\n .map(r => mainTableData[r].consumerid)\r\n .join(\",\");\r\n\r\n workshopAjax.WorkshopFilterList(workshopFilterListData, res => {\r\n workshopFilterListData.consumerIds = breakDownConsumerList(\r\n activeModulesConsumers\r\n );\r\n buildWorkshopTable(res, callback => {\r\n overlapRecords.forEach(r => {\r\n row = document.getElementById(`jobAct${r}`);\r\n row.classList.add(\"overlapError\");\r\n });\r\n });\r\n });\r\n }\r\n\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n var miniRoster = document.querySelector('[data-roster=\"waiting\"]');\r\n var consumerList = document.querySelector('[data-roster=\"enabled\"]');\r\n consumerListBtn = document.querySelector(\".consumerListBtn\");\r\n\r\n switch (targetAction) {\r\n // case \"rosterDone\": {\r\n // roster.selectedConsumersToEnabledList();\r\n // checkOpenBatches();\r\n // enabledConsumers = roster.getEnabledConsumers();\r\n // workshopFilterListData.consumerIds = breakDownConsumerList(\r\n // enabledConsumers\r\n // );\r\n // break;\r\n // }\r\n // case \"rosterCancel\": {\r\n // unloadApp($.loadedApp);\r\n // setActiveModuleAttribute(\"home\");\r\n // DOM.clearActionCenter();\r\n // DOM.ACTIONCENTER.removeAttribute(\"data-active-section\");\r\n // dashboard.load();\r\n // break;\r\n // }\r\n case \"miniRosterDone\": {\r\n if (initalRosterLoad) {\r\n activeModulesConsumers = roster2.getActiveConsumers();\r\n initalRosterLoad = false\r\n setActiveModuleSectionAttribute(\"workshop\");\r\n DOM.toggleNavLayout();\r\n roster2.clearActiveConsumers();\r\n workshopFilterListData.consumerIds = breakDownConsumerList(\r\n activeModulesConsumers\r\n );\r\n checkOpenBatches();\r\n } else {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n DOM.toggleNavLayout();\r\n clockInOutChoicePopup();\r\n roster2.clearActiveConsumers();\r\n }\r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n if (initalRosterLoad) {\r\n loadApp('home')\r\n } else {\r\n DOM.toggleNavLayout();\r\n roster2.clearActiveConsumers();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function initPageLoad() {\r\n DOM.clearActionCenter();\r\n PROGRESS.init();\r\n PROGRESS.SPINNER.init();\r\n PROGRESS.SPINNER.show(\"Gathering Data\");\r\n\r\n buildSelectionFields();\r\n initialData();\r\n workshopAjax.WorkshopFilterList(workshopFilterListData, buildWorkshopTable);\r\n }\r\n\r\n function init() {\r\n //RESET FILTERS\r\n filterCache = {\r\n locationSelectedOpt: 0,\r\n jobStepSelectedOpt: 0\r\n };\r\n workshopFilterListData.jobStepId = 0;\r\n selectedBatchId = \"\";\r\n enableMultiEdit = false;\r\n //--------\r\n let defaultWorkshopLocation = defaults.getLocation('workshop');\r\n if (defaultWorkshopLocation === '') {\r\n defaults.setLocation('workshop', 0);\r\n defaultWorkshopLocation = \"0\";\r\n }\r\n roster2.miniRosterinit({\r\n locationId: defaultWorkshopLocation,\r\n locationName: '',\r\n }, {\r\n hideDate: true,\r\n });\r\n\r\n initalRosterLoad = true\r\n sitenav = document.querySelector(\".nav\");\r\n setActiveModuleSectionAttribute(\"workshop\");\r\n\r\n roster2.showMiniRoster({ hideDate: true })\r\n\r\n\r\n\r\n // enabledConsumers = roster.getEnabledConsumers();\r\n\r\n // if (enabledConsumers.length === 0) {\r\n // // display mini roster for consumer selection\r\n // roster.buildRoster(true, false, function appendMiniRoster(miniRoster) {\r\n // DOM.ACTIONCENTER.appendChild(miniRoster);\r\n // }, true);\r\n // } else {\r\n // checkOpenBatches();\r\n // }\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent\r\n };\r\n})();\r\n","var workshopAjax = (function() {\r\n function clockoutWorkshopSingle(jobActid, timeEntered, callback) {\r\n singleClockOutData = {\r\n token: $.session.Token,\r\n jobActivityId: jobActid,\r\n timeEntered: timeEntered\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/ClockoutWorkshopSingle/\",\r\n data: JSON.stringify(singleClockOutData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n // if (res.indexOf(\"End Overlap\") !== -1) {\r\n // timeOverlapPopup(\"End time overlaps with existing record.\");\r\n // } else {\r\n // endTime = formatTimeFromDB(singleClockOutData.timeEntered);\r\n // $(\"#\" + singleClockOutData.jobActivityId + \" td:nth-child(3)\").text(\r\n // endTime\r\n // );\r\n\r\n // // this works now just need to send over the endtime and not starttime input - Ash\r\n // var clockoutEndtime = Array.from(\r\n // $(\"#\" + singleClockOutData.jobActivityId + \" td:nth-child(3)\")\r\n // );\r\n // validateEndTime(clockoutEndtime[0]);\r\n // filterSetup();\r\n // }\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function deleteWorkshopEntry(jobActId, callback) {\r\n deleteData = {\r\n token: $.session.Token,\r\n jobActivityId: jobActId\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/DeleteWorkshopEntry/\",\r\n data: JSON.stringify(deleteData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getDeleteWorkshopEntryResult;\r\n callback();\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n //Call to popuate list based on drop down values\r\n function getWorkshopBatchById(data, callback) {\r\n callback();\r\n }\r\n\r\n function getEnabledConsumersForWorkshop(selectedDate, selectedLocation, callback) {\r\n // var selectedDate = $(\"#workshopdateboxinside\").html();\r\n // selectedDate = formatDateForDatabaseSave(selectedDate);\r\n // var selectedLocation = $(\"#workshoplocationname\").attr(\"locationid\");\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getEnabledConsumersForWorkshop/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"selectedDate\":\"' +\r\n selectedDate +\r\n '\", \"selectedLocation\":\"' +\r\n selectedLocation +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n var res = JSON.parse(response.getEnabledConsumersForWorkshopResult);\r\n callback(res);\r\n // disableNonWorkshopConsumers(res);\r\n },\r\n error: function(xhr, status, error) {}\r\n });\r\n }\r\n\r\n function updateWorkshopClockIn(jobActid, timeEntered, callback) {\r\n updateClockInData = {\r\n token: $.session.Token,\r\n jobActivityId: jobActid,\r\n timeEntered: timeEntered\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/UpdateWorkshopClockIn/\",\r\n data: JSON.stringify(updateClockInData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n // if (res.indexOf(\"Start Overlap\") != -1) {\r\n // //Show pop up with error message saying start time can not be after end time.\r\n // timeOverlapPopup(\"Start time can not be set after end time.\");\r\n // } else {\r\n // startTime = formatTimeFromDB(updateClockInData.timeEntered);\r\n // $(\"#\" + updateClockInData.jobActivityId + \" td:nth-child(2)\").text(\r\n // startTime\r\n // );\r\n // filterSetup();\r\n // $(\"*\").removeClass(\"waitingCursor\");\r\n // }\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function updateWorkshopQuantity(quantity, jobActId) {\r\n insertData = {\r\n token: $.session.Token,\r\n quantity: quantity,\r\n jobActivityId: jobActId\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/UpdateWorkshopQuantity/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getUpdateWorkshopQuantityResult;\r\n \r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopPreBatchLoad(callback) {\r\n var newDate = new Date();\r\n absenceDate =\r\n newDate.getFullYear() +\r\n \"-\" +\r\n (newDate.getMonth() + 1) +\r\n \"-\" +\r\n newDate.getDate();\r\n $.session.workshopBatchId = \"\";\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/WorkshopPreBatchLoad/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"absenceDate\":\"' +\r\n absenceDate +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n data = response.WorkshopPreBatchLoadResult;\r\n callback(data);\r\n // if (data.length > 1) {\r\n // \tdisplaySelectBatch(data, callback);\r\n // } else if (data.length == 1) {\r\n // \t$.session.workshopBatchId = data[0].id;\r\n // \tcallback(data);\r\n // } else {\r\n // \tdisplayNoBatch();\r\n // \t$('#roostertoolbar').hide();\r\n // \t$('*').removeClass('waitingCursor');\r\n // \tdata = null;\r\n // \tcallback(data);\r\n // }\r\n },\r\n error: function(xhr, status, error) {\r\n callback(error, null);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopLocations(dateSelected, callback) {\r\n // var selectedDate = $(\"#workshopdateboxinside\").html();\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/WorkshopLocations/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n dateSelected +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.WorkshopLocationsResult;\r\n callback(data);\r\n // populateLocations(null, data);\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopGetSupervisors(date, callback) {\r\n // var selectedDate = $(\"#workshopdateboxinside\").html();\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getWorkshopSupervisors/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"selectedDate\":\"' +\r\n date +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getWorkshopSupervisorsResult;\r\n callback(data);\r\n // populateSupervisors(null, data);\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {}\r\n });\r\n }\r\n\r\n function WorkshopGetJobCode(date, location, callback) {\r\n // var selectedDate = $(\"#workshopdateboxinside\").html();\r\n // var location = $(\"#workshoplocationname\").attr(\"locationid\");\r\n queryData = {\r\n token: $.session.Token,\r\n selectedDate: date,\r\n location: location\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getWorkshopJobCode/\",\r\n data: JSON.stringify(queryData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getWorkshopJobCodeResult;\r\n callback(data);\r\n // populateWorkCodes(null, data);\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {}\r\n });\r\n }\r\n\r\n function WorkshopFilterList(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getWorkshopFilterListData/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getWorkshopFilterListDataResult;\r\n callback(data)\r\n // preFilterListDataSetup(null, data, overlapData);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopClockIn(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/GetWorkshopOverlaps/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n //Returns ConsumerIds of people that already have a record\r\n res = response.GetWorkshopOverlapsResult;\r\n callback(res);\r\n } catch (e) {\r\n callback(e, null);\r\n }\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopClockOut(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/GetWorkshopOverlaps/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n res = response.GetWorkshopOverlapsResult;\r\n callback(res);\r\n } catch (e) {\r\n callback(e, null);\r\n }\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n clockoutWorkshopSingle,\r\n deleteWorkshopEntry,\r\n getWorkshopBatchById,\r\n getEnabledConsumersForWorkshop,\r\n updateWorkshopClockIn,\r\n updateWorkshopQuantity,\r\n WorkshopPreBatchLoad,\r\n WorkshopLocations,\r\n WorkshopGetSupervisors,\r\n WorkshopGetJobCode,\r\n WorkshopFilterList,\r\n WorkshopClockIn,\r\n WorkshopClockOut\r\n };\r\n})();\r\n","const workflow = (\r\n function() {\r\n \r\n function init(){ \r\n\r\n \r\n // PRETEND TO BE THE PLAN MODULE \r\n const viewerBtnOpts = {\r\n text: 'Launch Viewer',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => WorkflowViewerComponent.open(WorkflowProcess.CONSUMER_PLAN_ANNUAL, '686614946775502')\r\n };\r\n const viewerBtn = button.build(viewerBtnOpts);\r\n viewerBtn.style = \"margin: 20px\";\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n\r\n btnWrap.appendChild(viewerBtn);\r\n\r\n DOM.clearActionCenter();\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n \r\n } \r\n\r\n return {\r\n init\r\n }\r\n\r\n }\r\n)();","(function (global, factory) {\r\n global.Notifications = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {};\r\n\r\n /**\r\n * Notifcations builds and stores notification elements,\r\n * this will build multiple different styles of notifications\r\n * depending on the options you pass\r\n *\r\n * @constructor\r\n */\r\n function Notifications(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.notifications = {};\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n Notifications.prototype._build = function () {\r\n this.rootElement = _DOM.createElement('div', { class: 'notifications' });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Notifications.prototype.show = function () {\r\n if (this.notifications) {\r\n }\r\n\r\n const itemEle = _DOM.createElement('div', { class: ['validationMessage'] });\r\n\r\n return this;\r\n };\r\n\r\n return Notifications;\r\n});\r\n","(function (global, factory) {\r\n global.Tutorial = factory();\r\n})(this, function () {\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {};\r\n\r\n /**\r\n * Merge default options with user options\r\n *\r\n * @function\r\n * @param {Object} userOptions - User defined options object\r\n * @return {Object} - Merged options object\r\n */\r\n const mergOptionsWithDefaults = userOptions => {\r\n return Object.assign({}, DEFAULT_OPTIONS, userOptions);\r\n };\r\n\r\n //=========================\r\n // TUTORIAL SATE\r\n //-------------------------\r\n /**\r\n * Represents the state management system for the tutorial.\r\n * Initializes with default state values if no initial state is provided.\r\n * @constructor\r\n * @param {Object} [initialState] - The initial state of the tutorial.\r\n * @param {number} [initialState.currentStep=1] - The current step of the tutorial.\r\n * @param {number} [initialState.totalSteps=5] - The total number of steps in the tutorial.\r\n */\r\n function TutorialState(initialState = { currentStep: 1, totalSteps: 5 }) {\r\n this.currentStep = initialState.currentStep;\r\n this.totalSteps = initialState.totalSteps;\r\n this.observers = [];\r\n }\r\n\r\n /**\r\n * Subscribe a new observer function.\r\n *\r\n * @param {Function} observerFunction - The function to notify when the state changes.\r\n */\r\n TutorialState.prototype.subscribe = function (observerFunction) {\r\n this.observers.push(observerFunction);\r\n };\r\n\r\n /**\r\n * Unsubscribe an existing observer function.\r\n *\r\n * @param {Function} observerFunction - The function to remove from the observer list.\r\n */\r\n TutorialState.prototype.unsubscribe = function (observerFunction) {\r\n const index = this.observers.indexOf(observerFunction);\r\n if (index > -1) {\r\n this.observers.splice(index, 1);\r\n }\r\n };\r\n\r\n /**\r\n * Update the tutorial state and notify all observers.\r\n * @param {Object} newState - The new state to merge with the current state.\r\n */\r\n TutorialState.prototype.setState = function (newState) {\r\n Object.assign(this, newState);\r\n this.observers.forEach(observerFunction => observerFunction(this));\r\n };\r\n\r\n /**\r\n * Move to the next step in the tutorial if not at the last step.\r\n */\r\n TutorialState.prototype.next = function () {\r\n if (this.currentStep < this.totalSteps) {\r\n this.setState({ currentStep: this.currentStep + 1 });\r\n }\r\n };\r\n\r\n /**\r\n * Move to the previous step in the tutorial if not at the first step.\r\n */\r\n TutorialState.prototype.back = function () {\r\n if (this.currentStep > 1) {\r\n this.setState({ currentStep: this.currentStep - 1 });\r\n }\r\n };\r\n\r\n //=========================\r\n // MAIN LIB\r\n //-------------------------\r\n\r\n /**\r\n * @constructor\r\n * @param {Object} options\r\n */\r\n function Tutorial(options) {\r\n // Data Init\r\n this.options = mergOptionsWithDefaults(options);\r\n this.initialState = { currentStep: 1, totalSteps: 5 };\r\n this.tutorialState = new TutorialState(initialState);\r\n\r\n // DOM Ref\r\n this.tutorial = null;\r\n }\r\n\r\n /**\r\n * Builds the Tutorial element structure\r\n *\r\n * @function\r\n * @returns {Tutorial} - Returns the current instances for chaining\r\n */\r\n Tutorial.prototype.build = function () {\r\n this.tutorial = _DOM.createElement('div');\r\n\r\n // Subscribe to state changes\r\n this.tutorialState.subscribe(function render(state) {\r\n // Logic to render the current popup based on `state.currentStep`\r\n });\r\n\r\n // Event listeners for Next and Back buttons\r\n // this.nextButton.onClick = tutorialState.next();\r\n // this.backButton.onClick = tutorialState.back();\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Renders the built Tutorial element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node - DOM node to render the tutorial to\r\n * @returns {Tutorial} - Returns the current instances for chaining\r\n */\r\n Tutorial.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.tutorial);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Tutorial;\r\n});\r\n","(function (global, factory) {\r\n global.VallidationController = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Validation center is used for grouping error and warning messages together,\r\n * should not be used for Form Input validation, form will handle that for you.\r\n *\r\n * @constructor\r\n */\r\n function VallidationController(options) {\r\n // Data Init\r\n this.options = { ...options };\r\n this.items = {};\r\n // DOM Ref\r\n this.validationWrap = null;\r\n this.errorsWrap = null;\r\n this.warningsWrap = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n VallidationController.prototype._build = function () {\r\n this.validationWrap = _DOM.createElement('div', { class: 'validations' });\r\n\r\n this.errorsWrap = _DOM.createElement('div', { class: 'validationErros' });\r\n\r\n this.warningsWrap = _DOM.createElement('div', { class: 'validationWarnings' });\r\n\r\n this.validationWrap.appendChild(this.errorsWrap);\r\n this.validationWrap.appendChild(this.warningsWrap);\r\n };\r\n /**\r\n * Builds warning message markup, this will auto show\r\n *\r\n * @function\r\n */\r\n VallidationController.prototype.addWarning = function ({ name, message }) {\r\n if (this.items[name]) {\r\n console.error(`name: ${name}, is already being used by another error/warning message`);\r\n }\r\n\r\n const itemInstance = new ValidationMessage({\r\n name,\r\n message,\r\n type: 'warning',\r\n });\r\n\r\n itemInstance.renderTo(this.warningsWrap);\r\n\r\n this.items[name] = itemInstance;\r\n };\r\n /**\r\n * Shows warning message\r\n *\r\n * @function\r\n */\r\n VallidationController.prototype.showWarning = function ({ name, ...rest }) {\r\n if (!this.items[name]) {\r\n this.addWarning({ name, ...rest });\r\n }\r\n\r\n this.items[name].itemEle.classList.remove('hidden');\r\n };\r\n /**\r\n * Builds error message markup, this will auto show\r\n *\r\n * @function\r\n */\r\n VallidationController.prototype.addError = function ({ name, message }) {\r\n if (this.items[name]) {\r\n console.error(`name: ${name}, is already being used by another error/warning message`);\r\n }\r\n\r\n const itemInstance = new ValidationMessage({\r\n name,\r\n message,\r\n type: 'error',\r\n });\r\n\r\n itemInstance.renderTo(this.errorsWrap);\r\n\r\n this.items[name] = itemInstance;\r\n };\r\n /**\r\n * Shows error message\r\n *\r\n * @function\r\n */\r\n VallidationController.prototype.showError = function ({ name, ...rest }) {\r\n if (!this.items[name]) {\r\n this.addError({ name, ...rest });\r\n }\r\n\r\n this.items[name].itemEle.classList.remove('hidden');\r\n };\r\n /**\r\n * Hides warning/error message\r\n *\r\n * @function\r\n */\r\n VallidationController.prototype.hide = function (name) {\r\n if (!this.items[name]) return;\r\n this.items[name].itemEle.classList.add('hidden');\r\n };\r\n /**\r\n * Sets the status of the error to valid/invalid\r\n *\r\n * @function\r\n */\r\n VallidationController.prototype.toggleErrorStatus = function (name, isError) {\r\n if (isError) {\r\n this.items[name].itemEle.classList.remove('valid');\r\n } else {\r\n this.items[name].itemEle.classList.add('valid');\r\n }\r\n };\r\n\r\n /**\r\n * Renders VallidationController markup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node - DOM node to render case notes feedback to\r\n * @returns {VallidationController} - Returns the current instances for chaining\r\n */\r\n VallidationController.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.validationWrap);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return VallidationController;\r\n});\r\n","(function (global, factory) {\r\n global.ConfirmationPopup = factory();\r\n})(this, function () {\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n className: null,\r\n };\r\n\r\n function ConfirmationPopup(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.displayStatus = null;\r\n\r\n // DOM Ref\r\n this.dialog = null;\r\n this.messageEle = null;\r\n this.confirmButton = null;\r\n this.cancelButton = null;\r\n\r\n this._build();\r\n }\r\n\r\n ConfirmationPopup.prototype._build = function () {\r\n this.dialog = new Dialog({ className: this.options.className });\r\n\r\n this.messageEle = _DOM.createElement('p', {\r\n class: 'confirmation__message',\r\n });\r\n\r\n const btnWrap = _DOM.createElement('div', { class: 'button-wrap' });\r\n this.confirmButton = new Button({\r\n text: 'Ok',\r\n name: 'confirm',\r\n });\r\n this.cancelButton = new Button({\r\n text: 'Cancel',\r\n styleType: 'outlined',\r\n name: 'cancel',\r\n });\r\n\r\n this.confirmButton.renderTo(btnWrap);\r\n this.cancelButton.renderTo(btnWrap);\r\n\r\n this.dialog.dialog.appendChild(this.messageEle);\r\n this.dialog.dialog.appendChild(btnWrap);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n ConfirmationPopup.prototype._setupEvents = function (cbFunc) {\r\n this.dialog.dialog.addEventListener('click', e => {\r\n // e.target is confirm or cancel?\r\n cbFunc();\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n ConfirmationPopup.prototype.show = function (message) {\r\n if (this.displayStatus === 'open') return;\r\n\r\n if (message) this.messageEle.innerText = message;\r\n this.dialog.show();\r\n this.displayStatus = 'open';\r\n\r\n return new Promise((resolve, reject) => {\r\n const callbackFunction = e => {\r\n // e.target is confirm or cancel?\r\n this.dialog.dialog.removeEventListener('click', callbackFunction);\r\n this.close();\r\n resolve(e.target.name);\r\n };\r\n\r\n this.dialog.dialog.addEventListener('click', callbackFunction);\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n ConfirmationPopup.prototype.close = function () {\r\n this.dialog.close();\r\n this.displayStatus = 'closed';\r\n };\r\n\r\n /**\r\n * Renders the built Confirmation Popup element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Confirmation Popup to\r\n * @returns {ConfirmationPopup} Returns the current instances for chaining\r\n */\r\n ConfirmationPopup.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return ConfirmationPopup;\r\n});\r\n","(function (global, factory) {\r\n global.DateNavigation = factory();\r\n})(this, function () {\r\n const DAYS = {\r\n 0: 'sun',\r\n 1: 'mon',\r\n 2: 'tue',\r\n 3: 'wed',\r\n 4: 'thu',\r\n 5: 'fri',\r\n 6: 'sat',\r\n };\r\n\r\n //=======================================\r\n // CUSTOM DATE PICKER\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating a Date Picker component.\r\n *\r\n * @constructor\r\n * @returns {DatePicker}\r\n */\r\n function DatePicker() {\r\n this.parentEle = null;\r\n this.input = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * Builds the DatePicker component HTML\r\n *\r\n * @function\r\n */\r\n DatePicker.prototype.build = function () {\r\n // INPUT WRAP\r\n this.parentEle = _DOM.createElement('div', {\r\n class: 'datePicker',\r\n });\r\n\r\n // INPUT & LABEL\r\n this.input = _DOM.createElement('input', {\r\n id: 'datePicker',\r\n type: 'date',\r\n name: 'datePicker',\r\n });\r\n const labelEle = _DOM.createElement('label', {\r\n node: Icon.getIcon('calendar'),\r\n for: 'datePicker',\r\n });\r\n labelEle.addEventListener('click', e => {\r\n this.input.showPicker();\r\n });\r\n\r\n this.parentEle.appendChild(this.input);\r\n this.parentEle.appendChild(labelEle);\r\n };\r\n\r\n /**\r\n * On date change method\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n DatePicker.prototype.onDateChange = function (cbFunc) {\r\n this.input.addEventListener('change', e => {\r\n cbFunc(e.target.value);\r\n });\r\n };\r\n\r\n /**\r\n * Renders the built DatePicker element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the input to\r\n * @returns {DatePicker} Returns the current instances for chaining\r\n */\r\n DatePicker.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.parentEle);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n selectedDate: dates.getTodaysDateObj(),\r\n allowFutureDate: true,\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Date Navigation component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {Date} [options.selectedDate] Initial date for date nav\r\n * @param {Boolean} [options.allowFutureDate] Whether toallow future dates to be selected\r\n * @returns {DateNavigation}\r\n */\r\n function DateNavigation(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n //? by default selectedDate, weekStart, weekEnd and eachDayoFWeek\r\n //? will be the most current week of calandar year\r\n this.weekStart = dates.startDayOfWeek(this.options.selectedDate);\r\n this.weekEnd = dates.endOfWeek(this.options.selectedDate);\r\n this.eachDayOfWeek = dates.eachDayOfInterval({\r\n start: this.weekStart,\r\n end: this.weekEnd,\r\n });\r\n\r\n this.isCurrentWeek = dates.isDateInCurrentWeek(this.options.selectedDate);\r\n\r\n if (!this.options.allowFutureDate && dates.isDateInFuture(this.options.selectedDate)) {\r\n throw new Error('Selected date option can not be in future if allow future date option is set to false');\r\n }\r\n\r\n // DOM\r\n this.navigationEle = null;\r\n this.weekWrapEle = null;\r\n this.prevWeekNavBtn = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * Builds the Navigation component HTML\r\n *\r\n * @function\r\n */\r\n DateNavigation.prototype.build = function () {\r\n this.navigationEle = _DOM.createElement('div', { class: 'dateNavigation' });\r\n this.weekWrapEle = _DOM.createElement('div', { class: 'week' });\r\n\r\n this.prevWeekNavBtn = _DOM.createElement('div', {\r\n class: 'navButtons',\r\n node: Icon.getIcon('arrowLeft'),\r\n });\r\n this.nextWeekNavBtn = _DOM.createElement('div', {\r\n class: this.isCurrentWeek ? ['navButtons', 'disabled'] : 'navButtons',\r\n node: Icon.getIcon('arrowRight'),\r\n });\r\n this.customDatePicker = new DatePicker();\r\n\r\n this.navigationEle.appendChild(this.customDatePicker.parentEle);\r\n this.navigationEle.appendChild(this.prevWeekNavBtn);\r\n this.navigationEle.appendChild(this.weekWrapEle);\r\n this.navigationEle.appendChild(this.nextWeekNavBtn);\r\n\r\n this.populate();\r\n this.setupEvents();\r\n };\r\n\r\n /**\r\n * Populates the navigation with the dates for the selected week range\r\n *\r\n * @function\r\n */\r\n DateNavigation.prototype.populate = function () {\r\n this.weekWrapEle.innerHTML = '';\r\n\r\n this.eachDayOfWeek.forEach(date => {\r\n const isDateCurrentlySelected = date.getTime() === this.options.selectedDate.getTime() ? true : false;\r\n const isDateInFuture = dates.isDateInFuture(date);\r\n\r\n const dayOfWeek = date.getDay();\r\n const month = date.getMonth() + 1;\r\n const day = date.getDate();\r\n\r\n const classArray = ['day'];\r\n if (isDateCurrentlySelected) classArray.push('selected');\r\n if (isDateInFuture && !this.options.allowFutureDate) classArray.push('disabled');\r\n\r\n const dateWrapEle = _DOM.createElement('div', {\r\n class: classArray,\r\n 'data-date': date.toDateString(),\r\n 'data-target': 'date',\r\n });\r\n const dayOfWeekEle = _DOM.createElement('p', { text: DAYS[dayOfWeek], class: 'weekday' });\r\n const dateEle = _DOM.createElement('p', { text: `${month}/${day}`, class: 'date' });\r\n\r\n dateWrapEle.appendChild(dateEle);\r\n dateWrapEle.appendChild(dayOfWeekEle);\r\n\r\n this.weekWrapEle.appendChild(dateWrapEle);\r\n });\r\n };\r\n\r\n /**\r\n * Sets up events for navigation\r\n *\r\n * @function\r\n */\r\n DateNavigation.prototype.setupEvents = function () {\r\n this.prevWeekNavBtn.addEventListener('click', e => {\r\n this.weekStart = dates.subWeeks(this.weekStart, 1);\r\n this.weekEnd = dates.subWeeks(this.weekEnd, 1);\r\n this.eachDayOfWeek = dates.eachDayOfInterval({\r\n start: this.weekStart,\r\n end: this.weekEnd,\r\n });\r\n\r\n this.options.selectedDate = this.eachDayOfWeek[1];\r\n this.isCurrentWeek = dates.isDateInCurrentWeek(this.options.selectedDate);\r\n this.nextWeekNavBtn.classList.toggle('disabled', this.isCurrentWeek);\r\n\r\n this.populate();\r\n\r\n const customEvent = new CustomEvent('onDateChange');\r\n this.weekWrapEle.dispatchEvent(customEvent);\r\n });\r\n\r\n this.nextWeekNavBtn.addEventListener('click', e => {\r\n this.weekStart = dates.addWeeks(this.weekStart, 1);\r\n this.weekEnd = dates.addWeeks(this.weekEnd, 1);\r\n this.eachDayOfWeek = dates.eachDayOfInterval({\r\n start: this.weekStart,\r\n end: this.weekEnd,\r\n });\r\n\r\n this.options.selectedDate = this.eachDayOfWeek[1];\r\n this.isCurrentWeek = dates.isDateInCurrentWeek(this.options.selectedDate);\r\n this.nextWeekNavBtn.classList.toggle('disabled', this.isCurrentWeek);\r\n\r\n this.populate();\r\n\r\n const customEvent = new CustomEvent('onDateChange');\r\n this.weekWrapEle.dispatchEvent(customEvent);\r\n });\r\n\r\n this.weekWrapEle.addEventListener('click', e => {\r\n if (e.target.dataset.target === 'date') {\r\n const currentSelectedDate = this.weekWrapEle.querySelector('.selected');\r\n if (currentSelectedDate) {\r\n currentSelectedDate.classList.remove('selected');\r\n }\r\n\r\n this.options.selectedDate = new Date(e.target.dataset.date);\r\n e.target.classList.add('selected');\r\n\r\n const customEvent = new CustomEvent('onDateChange');\r\n this.weekWrapEle.dispatchEvent(customEvent);\r\n\r\n return;\r\n }\r\n });\r\n\r\n this.customDatePicker.onDateChange(newDate => {\r\n const newDateValue = new Date(`${newDate}T00:00:00`);\r\n\r\n if (!this.options.allowFutureDate) {\r\n if (dates.isDateInFuture(newDateValue)) {\r\n return;\r\n }\r\n }\r\n\r\n this.options.selectedDate = newDateValue;\r\n this.isCurrentWeek = dates.isDateInCurrentWeek(this.options.selectedDate);\r\n this.weekStart = dates.startDayOfWeek(this.options.selectedDate);\r\n this.weekEnd = dates.endOfWeek(this.options.selectedDate);\r\n this.eachDayOfWeek = dates.eachDayOfInterval({\r\n start: this.weekStart,\r\n end: this.weekEnd,\r\n });\r\n\r\n this.nextWeekNavBtn.classList.toggle('disabled', this.isCurrentWeek);\r\n\r\n this.populate();\r\n\r\n const customEvent = new CustomEvent('onDateChange');\r\n this.weekWrapEle.dispatchEvent(customEvent);\r\n });\r\n };\r\n\r\n /**\r\n * On date change method\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n DateNavigation.prototype.onDateChange = function (cbFunc) {\r\n this.weekWrapEle.addEventListener('onDateChange', () => {\r\n cbFunc(this.options.selectedDate);\r\n });\r\n };\r\n\r\n /**\r\n * Renders the built Date Navigation element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the navigation to\r\n * @returns {DateNavigation} Returns the current instances for chaining\r\n */\r\n DateNavigation.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.navigationEle);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return DateNavigation;\r\n});\r\n","(function (global, factory) {\r\n global.AsyncRequestVisualizer = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n * @param {Number} [options.duration] how long to show popup after success/error\r\n * @param {String} [options.messagePending] message while you wait\r\n * @param {String} [options.messageSuccess] message on success\r\n * @param {String} [options.messageError] message on error\r\n */\r\n const DEFAULT_OPTIONS = {\r\n messagePending: 'Loading...',\r\n messageSuccess: 'Success!',\r\n messageError: 'Error :(',\r\n duration: 2000,\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Async Request Visualizer component.\r\n *\r\n * @constructor\r\n * @returns {AsyncRequestVisualizer}\r\n */\r\n function AsyncRequestVisualizer(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n\r\n // Instance Ref\r\n this.dialog = null;\r\n this.spinner = null;\r\n\r\n // DOM Ref\r\n this.iconWrap = null;\r\n this.messageEle = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * Builds the AsyncRequestVisualizer component HTML\r\n *\r\n * @function\r\n */\r\n AsyncRequestVisualizer.prototype.build = function () {\r\n this.dialog = new Dialog({\r\n clickOutToClose: false,\r\n className: 'asyncRequestVisualizer',\r\n });\r\n\r\n this.iconWrap = _DOM.createElement('div', { class: 'iconWrap' });\r\n this.dialog.dialog.appendChild(this.iconWrap);\r\n\r\n this.spinner = new Spinner();\r\n this.spinner.renderTo(this.iconWrap);\r\n\r\n this.messageEle = _DOM.createElement('p');\r\n this.dialog.dialog.appendChild(this.messageEle);\r\n };\r\n\r\n /**\r\n * Default function for showing visualizer, use showPending to chain saves\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n AsyncRequestVisualizer.prototype.show = function (message) {\r\n this.messageEle.innerText = message;\r\n this.dialog.show();\r\n };\r\n\r\n /**\r\n * Shows pending message, shows spinner\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n AsyncRequestVisualizer.prototype.showPending = function (message) {\r\n this.messageEle.innerText = message;\r\n this.iconWrap.childNodes[0].remove();\r\n this.iconWrap.appendChild(this.spinner.spinnerWrap);\r\n };\r\n\r\n /**\r\n * Shows success message/icon but leaves dialog open for chaining saves\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n AsyncRequestVisualizer.prototype.showSuccess = async function (message, duration = 2000) {\r\n this.messageEle.innerText = message;\r\n this.spinner.replaceWith(Icon.getIcon('checkmark'));\r\n\r\n this.iconWrap.classList.remove('error');\r\n\r\n await _UTIL.asyncSetTimeout(() => {}, duration);\r\n };\r\n\r\n /**\r\n * Shows error message/icon\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n AsyncRequestVisualizer.prototype.showError = function (message) {\r\n this.messageEle.innerText = message;\r\n this.spinner.replaceWith(Icon.getIcon('error'));\r\n this.iconWrap.classList.add('error');\r\n };\r\n\r\n /**\r\n * Handle async request completion\r\n *\r\n * @function\r\n * @param {Boolean} isSuccess\r\n * @param {String} message\r\n */\r\n AsyncRequestVisualizer.prototype.fullfill = async function (status, message, duration = 2000) {\r\n // set icon and message\r\n if (status === 'success') {\r\n this.showSuccess(message);\r\n } else {\r\n this.showError(message);\r\n }\r\n\r\n await _UTIL.asyncSetTimeout(() => {\r\n this.dialog.close();\r\n this.iconWrap.childNodes[0].remove();\r\n this.iconWrap.appendChild(this.spinner.spinnerWrap);\r\n }, duration);\r\n };\r\n\r\n /**\r\n * Renders the built AsyncRequestVisualizer to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the AsyncRequestVisualizer to\r\n * @returns {AsyncRequestVisualizer} Returns the current instances for chaining\r\n */\r\n AsyncRequestVisualizer.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return AsyncRequestVisualizer;\r\n});\r\n","(function (global, factory) {\r\n global.RosterCard = factory();\r\n})(this, function () {\r\n /**\r\n * Constructor function for creating a Roster Card component.\r\n *\r\n * @constructor\r\n * @returns {RosterCard}\r\n */\r\n function RosterCard(options) {\r\n this.consumerId = options.consumerId;\r\n this.firstName = options.firstName;\r\n this.middleName = options.middleName;\r\n this.lastName = options.lastName;\r\n this.isInactive = options.isInactive;\r\n this.rootElement = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * Builds the Roster Card component HTML\r\n *\r\n * @function\r\n */\r\n RosterCard.prototype.build = function () {\r\n this.rootElement = _DOM.createElement('div', {\r\n class: 'rosterCard',\r\n 'data-id': this.consumerId,\r\n 'data-target': 'rosterCard',\r\n });\r\n\r\n // PORTRAIT\r\n const portrait = new Portrait(this.consumerId);\r\n\r\n // DETAILS\r\n const firstName = _DOM.createElement('p', {\r\n text: `${this.firstName.trim()} ${this.middleName?.trim() || ''}`.trim(),\r\n });\r\n const lastName = _DOM.createElement('p', { text: `${this.lastName.trim()},` });\r\n\r\n const fragment = new DocumentFragment();\r\n fragment.append(lastName, firstName);\r\n\r\n\r\n const details = this.isInactive == true ? _DOM.createElement('div', { class: 'inactiveDetails', node: fragment }) : _DOM.createElement('div', { class: 'details', node: fragment });\r\n\r\n // BUILD\r\n portrait.renderTo(this.rootElement);\r\n this.rootElement.appendChild(details);\r\n };\r\n\r\n /**\r\n * Renders the built Roster Card component to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the roster card to\r\n * @returns {RosterCard} Returns the current instances for chaining\r\n */\r\n RosterCard.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return RosterCard;\r\n});\r\n","(function (global, factory) {\r\n global.RosterPicker = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n allowMultiSelect: false,\r\n consumerRequired: false,\r\n isReadOnly: false,\r\n };\r\n let selectionDate;\r\n let selectedActive = 'No';\r\n let filterDate;\r\n let isCaseLoadDisabled;\r\n /**\r\n * Constructor function for creating a Roster Picker component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {Boolean} [options.allowMultiSelect]\r\n * @param {Boolean} [options.consumerRequired]\r\n * @returns {RosterPicker}\r\n */\r\n function RosterPicker(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.consumers = {};\r\n this.selectedConsumers = {};\r\n this.failedImageCache = new Set();\r\n this.groupCode = 'ALL';\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.rosterWrapEle = null;\r\n this.rosterSearchInput = null;\r\n this.rosterCaseLoadInput = null;\r\n this.rosterInActiveInput = null;\r\n this.consumerCards = null;\r\n\r\n this._build();\r\n this._setupEvents();\r\n }\r\n\r\n /**\r\n * Builds the Roster Picker component HTML\r\n *\r\n * @function\r\n */\r\n RosterPicker.prototype._build = function () {\r\n this.rootElement = _DOM.createElement('div', { class: 'rosterPicker' });\r\n this.rosterWrapEle = _DOM.createElement('div', { class: 'rosterPicker__cardsWrap' });\r\n selectionDate = this.options.selectionDate;\r\n this.messageEleIcon = this.options.consumerRequired ? Icon.getIcon('error') : '';\r\n this.messageEle = _DOM.createElement('p', {\r\n class: 'rosterPicker__message',\r\n node: this.messageEleIcon,\r\n text: this.options.consumerRequired\r\n ? this.options.allowMultiSelect\r\n ? 'Consumer(s) is required'\r\n : 'Consumer is required'\r\n : 'Please select a consumer',\r\n });\r\n this.messageEle.classList.toggle(\r\n 'error',\r\n this.options.consumerRequired && !Object.keys(this.selectedConsumers).length,\r\n );\r\n\r\n this.rosterSearchInput = new Input({\r\n type: 'search',\r\n id: 'rosterPickerSearch',\r\n name: 'rosterPickerSearch',\r\n placeholder: 'Search...',\r\n });\r\n\r\n if (($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')) {\r\n isCaseLoadDisabled = true;\r\n this.groupCode = 'CAS';\r\n } else {\r\n isCaseLoadDisabled = false;\r\n this.groupCode = 'ALL'; \r\n }\r\n\r\n this.rosterCaseLoadInput = new Checkbox({\r\n label: 'Only show caseload',\r\n id: 'caseloadtoggle',\r\n name: 'caseload',\r\n checked: isCaseLoadDisabled,\r\n disabled: isCaseLoadDisabled,\r\n });\r\n\r\n this.rosterInActiveInput = new Checkbox({\r\n label: 'Show inactive individuals',\r\n id: 'inactivetoggle',\r\n name: 'inactive',\r\n checked: false,\r\n hidden: $.session.applicationName === 'Advisor',\r\n });\r\n\r\n this.rootElement.append(\r\n this.messageEle,\r\n this.rosterSearchInput.rootElement,\r\n this.rosterCaseLoadInput.rootElement,\r\n this.rosterInActiveInput.rootElement,\r\n this.rosterWrapEle,\r\n );\r\n };\r\n\r\n RosterPicker.prototype._buildMobileButton = function () {\r\n this.mobileRosterBtn = new Button({\r\n icon: 'peopleGroup',\r\n class: ['mobileRosterBtn'],\r\n });\r\n };\r\n\r\n /**\r\n * Sets up events for roster picker\r\n *\r\n * @function\r\n */\r\n RosterPicker.prototype._setupEvents = function () {\r\n this.rosterWrapEle.addEventListener('click', e => {\r\n if (e.target.dataset.target === 'pinCardIcon') {\r\n if (!e.target.parentNode.parentNode.classList.contains('pinned')) {\r\n e.target.parentNode.parentNode.classList.add('pinned');\r\n } else {\r\n e.target.parentNode.parentNode.classList.remove('pinned');\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (e.target.dataset.target === 'rosterCard') {\r\n if (e.target.parentNode.classList.contains('selected')) {\r\n e.target.parentNode.classList.remove('selected');\r\n delete this.selectedConsumers[e.target.dataset.id];\r\n } else {\r\n if (!this.options.allowMultiSelect) this.clearSelectedConsumers();\r\n\r\n e.target.parentNode.classList.add('selected');\r\n this.selectedConsumers[e.target.dataset.id] = e.target;\r\n }\r\n\r\n this._updateMessage();\r\n\r\n const customEvent = new CustomEvent('onConsumerSelect');\r\n this.rosterWrapEle.dispatchEvent(customEvent);\r\n\r\n return;\r\n }\r\n });\r\n\r\n this.rosterWrapEle.addEventListener('error', e => {\r\n if (e.target.tagName === 'IMG') {\r\n this.failedImageCache.add(e.target.src);\r\n }\r\n });\r\n\r\n this.rosterSearchInput.onKeyup(\r\n _UTIL.debounce(e => {\r\n this._filterConsumersOnSearch(e);\r\n }, 500),\r\n );\r\n\r\n this.rosterSearchInput.onChange(e => {\r\n this._filterConsumersOnSearch(e);\r\n });\r\n this.rosterSearchInput.onClick(e => {\r\n console.log(e);\r\n // this._filterConsumersOnSearch(e);\r\n });\r\n\r\n this.rosterCaseLoadInput.onChange(async e => {\r\n this.groupCode = e.target.checked ? 'CAS' : 'ALL';\r\n await this.fetchConsumers();\r\n this.populate();\r\n });\r\n\r\n this.rosterInActiveInput.onChange(async e => {\r\n selectedActive = e.target.checked ? 'Yes' : 'No';\r\n await this.fetchConsumers();\r\n this.populate();\r\n });\r\n };\r\n\r\n /**\r\n * Filters roster picker on search\r\n *\r\n * @function\r\n * @param {Event} e\r\n */\r\n RosterPicker.prototype._filterConsumersOnSearch = function (e) {\r\n for (consumerID in this.consumers) {\r\n const firstName = this.consumers[consumerID].FN.toLowerCase().trim();\r\n const middleName = this.consumers[consumerID].MN.toLowerCase().trim();\r\n const lastName = this.consumers[consumerID].LN.toLowerCase().trim();\r\n\r\n const nameCombinations = [\r\n `${firstName} ${middleName} ${lastName}`,\r\n `${lastName}, ${firstName} ${middleName}`,\r\n `${firstName} ${lastName}`,\r\n `${lastName}, ${firstName}`,\r\n `${firstName} ${middleName}`,\r\n `${middleName} ${lastName}`,\r\n ];\r\n\r\n const isMatch = nameCombinations.some(combo => combo.indexOf(e.target.value.toLowerCase()) !== -1);\r\n if (isMatch) {\r\n this.consumers[consumerID].cardEle.parentNode.classList.remove('isClosed');\r\n } else {\r\n this.consumers[consumerID].cardEle.parentNode.classList.add('isClosed');\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n RosterPicker.prototype._scrollToTop = function () {\r\n this.rosterWrapEle.scrollTop = 0;\r\n };\r\n\r\n /**\r\n * Updates the status of the message element\r\n */\r\n RosterPicker.prototype._updateMessage = function () {\r\n let newIcon;\r\n\r\n if (this.options.consumerRequired && !Object.keys(this.selectedConsumers).length) {\r\n newIcon = Icon.getIcon('error');\r\n this.messageEle.classList.add('error');\r\n } else {\r\n newIcon = Icon.getIcon('checkmark');\r\n this.messageEle.classList.remove('error');\r\n }\r\n\r\n this.messageEle.replaceChild(newIcon, this.messageEleIcon);\r\n this.messageEleIcon = newIcon;\r\n };\r\n\r\n /**\r\n * Fetches consumers data by date, group and location\r\n *\r\n * @function\r\n * @param {Object} retrieveData\r\n */\r\n RosterPicker.prototype.fetchConsumers = async function () {\r\n try {\r\n const todaysDate = selectionDate == undefined ? dates.getTodaysDateObj() : selectionDate;\r\n todaysDate.setHours(0, 0, 0, 0);\r\n filterDate = dates.formatISO(todaysDate, { representation: 'date' });\r\n let daysBackDate = dates.subDays(todaysDate, $.session.defaultProgressNoteReviewDays);\r\n\r\n const data = await _UTIL.fetchData('getConsumersByGroupJSON', {\r\n groupCode: this.groupCode,\r\n retrieveId: '0',\r\n serviceDate: filterDate,\r\n daysBackDate: dates.formatISO(daysBackDate, { representation: 'date' }),\r\n isActive: selectedActive,\r\n });\r\n this.consumers = data.getConsumersByGroupJSONResult.reduce((acc, cv) => {\r\n acc[cv.id] = cv;\r\n return acc;\r\n }, {});\r\n } catch (error) {\r\n console.log('uh oh something went horribly wrong :(', error.message);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Populate consumer roster cards\r\n *\r\n * @function\r\n */\r\n RosterPicker.prototype.populate = function () {\r\n this.rosterWrapEle.innerHTML = '';\r\n\r\n Object.values(this.consumers)\r\n .sort((a, b) => {\r\n if (a.LN < b.LN) return -1;\r\n if (a.LN > b.LN) return 1;\r\n\r\n if (a.FN < b.FN) return -1;\r\n if (a.FN > b.FN) return 1;\r\n\r\n return 0;\r\n })\r\n .forEach(consumer => {\r\n // ROSTER CARD\r\n const gridAnimationWrapper = _DOM.createElement('div', { class: 'rosterCardWrap' });\r\n var inActive = false;\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n if (consumer.statusCode == 'I' && consumer.IDa != undefined && consumer.IDa != '' && UTIL.formatDateToIso(consumer.IDa.split(' ')[0]) <= filterDate) {\r\n inActive = true;\r\n }\r\n }\r\n const rosterCard = new RosterCard({\r\n consumerId: consumer.id,\r\n firstName: consumer.FN,\r\n middleName: consumer.MN,\r\n lastName: consumer.LN,\r\n isInactive: inActive,\r\n });\r\n rosterCard.renderTo(gridAnimationWrapper);\r\n\r\n // PIN ICON\r\n const pinCardIcon = Icon.getIcon('pin');\r\n pinCardIcon.setAttribute('data-target', 'pinCardIcon');\r\n rosterCard.rootElement.appendChild(pinCardIcon);\r\n\r\n // BUILD\r\n this.rosterWrapEle.appendChild(gridAnimationWrapper);\r\n\r\n // SET REFERENCE TO DOM NODE ON DATA OBJ\r\n consumer.cardEle = rosterCard.rootElement;\r\n });\r\n };\r\n\r\n /**\r\n * On consumer select method\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n RosterPicker.prototype.onConsumerSelect = function (cbFunc, opts = {}) {\r\n this.rosterWrapEle.addEventListener('onConsumerSelect', () => {\r\n if (opts.idkyet) {\r\n const selectedConsumers = Object.keys(this.selectedConsumers).reduce((acc, cv) => {\r\n const consumer = this.consumers[cv];\r\n acc[cv] = {\r\n id: cv,\r\n firstName: consumer.FN,\r\n middleName: consumer.MN,\r\n lastName: consumer.LN,\r\n };\r\n return acc;\r\n }, {});\r\n\r\n cbFunc(selectedConsumers);\r\n return;\r\n }\r\n\r\n cbFunc(Object.keys(this.selectedConsumers));\r\n });\r\n };\r\n\r\n /**\r\n *\r\n * @function\r\n * @param {Boolean} isDisabled\r\n * @param {Boolean} [forceAll]\r\n */\r\n RosterPicker.prototype.toggleRosterDisabled = function (isDisabled, forceAll = false) {\r\n for (consumers in this.consumers) {\r\n if (!isDisabled) {\r\n this.consumers[consumers].cardEle.parentNode.classList.remove('disabled');\r\n continue;\r\n }\r\n\r\n if (forceAll) {\r\n this.consumers[consumers].cardEle.parentNode.classList.add('disabled');\r\n continue;\r\n }\r\n\r\n const isSelected = this.consumers[consumers].cardEle.parentNode.classList.contains('selected');\r\n const isLocked = this.consumers[consumers].cardEle.parentNode.classList.contains('locked');\r\n\r\n if (!isSelected && !isLocked) {\r\n this.consumers[consumers].cardEle.parentNode.classList.add('disabled');\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Updates the allowMultiSelect option property with given value\r\n *\r\n * @function\r\n * @param {Boolean} allowMultiSelect\r\n */\r\n RosterPicker.prototype.toggleMultiSelectOption = function (allowMultiSelect) {\r\n this.options.allowMultiSelect = allowMultiSelect;\r\n\r\n if (this.options.allowMultiSelect) {\r\n // clear selected consumers except locked consumers\r\n for (consumerID in this.selectedConsumers) {\r\n if (!this.selectedConsumers[consumerID].parentNode.classList.contains('locked')) {\r\n this.selectedConsumers[consumerID].parentNode.classList.remove('selected');\r\n delete this.selectedConsumers[consumerID];\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Removes selected consumer\r\n *\r\n * @function\r\n */\r\n RosterPicker.prototype.clearSelectedConsumers = function () {\r\n for (consumerID in this.selectedConsumers) {\r\n this.selectedConsumers[consumerID].parentNode.classList.remove('selected');\r\n this.selectedConsumers[consumerID].parentNode.classList.remove('locked');\r\n this.selectedConsumers[consumerID].parentNode.classList.remove('disabled');\r\n delete this.selectedConsumers[consumerID];\r\n }\r\n };\r\n\r\n /**\r\n * Selects consumer(s) in roster picker\r\n *\r\n * @function\r\n * @param {Array} consumerIds\r\n */\r\n RosterPicker.prototype.setSelectedConsumers = function (consumerIds, lockdown = false) {\r\n this.clearSelectedConsumers();\r\n\r\n consumerIds.forEach(cid => {\r\n this.selectedConsumers[cid] = this.consumers[cid].cardEle;\r\n this.consumers[cid].cardEle.parentNode.classList.add('selected');\r\n\r\n if (lockdown) {\r\n this.consumers[cid].cardEle.parentNode.classList.add('locked');\r\n }\r\n });\r\n\r\n this._updateMessage();\r\n\r\n this._scrollToTop();\r\n };\r\n\r\n /**\r\n * Renders the built Roster Picker component to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the roster picker to\r\n * @returns {RosterPicker} Returns the current instances for chaining\r\n */\r\n RosterPicker.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return RosterPicker;\r\n});\r\n","(function (global, factory) {\r\n global.WarningPopup = factory();\r\n})(this, function () {\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n className: null,\r\n };\r\n\r\n function WarningPopup(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.displayStatus = null;\r\n\r\n // DOM Ref\r\n this.dialog = null;\r\n this.messageEle = null;\r\n this.confirmButton = null;\r\n this.cancelButton = null;\r\n\r\n this._build();\r\n }\r\n\r\n WarningPopup.prototype._build = function () {\r\n this.dialog = new Dialog({ hideX: false, className: this.options.className }); \r\n\r\n this.messageEle = _DOM.createElement('p', {\r\n class: 'confirmation__message',\r\n });\r\n\r\n const btnWrap = _DOM.createElement('div', { class: 'button-wrap' });\r\n this.confirmButton = new Button({\r\n text: 'Yes',\r\n name: 'confirm',\r\n icon: 'checkmark', \r\n });\r\n this.cancelButton = new Button({\r\n text: 'No',\r\n name: 'cancel',\r\n icon: 'close',\r\n });\r\n\r\n this.confirmButton.renderTo(btnWrap);\r\n this.cancelButton.renderTo(btnWrap);\r\n\r\n this.dialog.dialog.appendChild(this.messageEle);\r\n this.dialog.dialog.appendChild(btnWrap);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n WarningPopup.prototype._setupEvents = function (cbFunc) {\r\n this.dialog.dialog.addEventListener('click', e => {\r\n console.log(e.target);\r\n cbFunc();\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n WarningPopup.prototype.show = function (message) {\r\n if (this.displayStatus === 'open') return;\r\n\r\n if (message) this.messageEle.innerText = message;\r\n this.dialog.show();\r\n this.displayStatus = 'open';\r\n\r\n return new Promise((resolve, reject) => {\r\n const callbackFunction = e => {\r\n // e.target is confirm or cancel?\r\n this.dialog.dialog.removeEventListener('click', callbackFunction);\r\n this.close();\r\n resolve(e.target.name);\r\n };\r\n\r\n this.dialog.dialog.addEventListener('click', callbackFunction);\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n WarningPopup.prototype.close = function () {\r\n this.dialog.close();\r\n this.displayStatus = 'closed';\r\n };\r\n\r\n /**\r\n * Renders the built Confirmation Popup element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Confirmation Popup to\r\n * @returns {WarningPopup} Returns the current instances for chaining\r\n */\r\n WarningPopup.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return WarningPopup;\r\n});\r\n","(function (global, factory) {\r\n global.Attachments = factory();\r\n})(this, function () {\r\n /**\r\n * @constructor\r\n * @param {Object} options\r\n * @param {String} options.id Id for input, use to link it with label. Also used for name attribute.\r\n * @param {String} options.type HTML Input type\r\n * @param {String} options.label Text for label input\r\n * @param {Boolean} [options.hidden] Whether to show or hide the input\r\n */\r\n function File(options) {\r\n // Data Init\r\n this.options = _DOM.separateHTMLAttribrutes(options);\r\n this.options.attributes.name = this.options.attributes.id;\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.input = null;\r\n this.labelEle = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n File.prototype._build = function () {\r\n // INPUT WRAP\r\n const classArray = ['inputGroup', 'file', `${this.options.attributes.id}`];\r\n const inputGroup = _DOM.createElement('div', {\r\n class: this.options.hidden ? [...classArray, 'inputGroup--hidden'] : classArray,\r\n });\r\n\r\n // INPUT & LABEL\r\n this.input = _DOM.createElement('input', { ...this.options.attributes });\r\n this.labelEle = _DOM.createElement('label', {\r\n text: this.options.label,\r\n for: this.options.attributes.id,\r\n });\r\n\r\n inputGroup.append(this.labelEle, this.input);\r\n\r\n this.rootElement = inputGroup;\r\n };\r\n\r\n /**\r\n * Renders the built File Input element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the input to\r\n * @returns {Input} Returns the current instances for chaining\r\n */\r\n File.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * @constructor\r\n */\r\n function Attachments(options) {\r\n // Data Init\r\n this.options = options;\r\n this.options.type = 'file';\r\n this.inputs = {};\r\n this.filenamelength = 14;\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n\r\n this._build();\r\n this._setupEvents();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n Attachments.prototype._build = function () {\r\n this.rootElement = _DOM.createElement('div', { class: 'attachments' });\r\n\r\n const input = new File({ ...this.options });\r\n\r\n input.renderTo(this.rootElement);\r\n\r\n this.inputs[this.options.id] = input;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Attachments.prototype._setupEvents = function (cbFunc) {\r\n this.rootElement.addEventListener('change', e => {\r\n const targetID = e.target.id;\r\n\r\n // check file type\r\n const forbiddenTypes = new RegExp('(audio/)|(video/)');\r\n const isFileTypeValid = _UTIL.validateFileType(e, forbiddenTypes);\r\n if (!isFileTypeValid) return;\r\n\r\n // NEW INPUT\r\n const newInputId = _UTIL.autoIncrementId(targetID);\r\n const newInputInstance = new File({\r\n type: 'file',\r\n label: 'Add Attachment',\r\n id: newInputId,\r\n });\r\n this.inputs[newInputId] = newInputInstance;\r\n this.inputs[targetID].rootElement.insertAdjacentElement('beforebegin', newInputInstance.rootElement);\r\n\r\n // update target attachment\r\n this.inputs[targetID].rootElement.classList.add('hasFile');\r\n this.inputs[targetID].labelEle.innerText = _UTIL.truncateFilename(e.target.files[0].name, this.filenamelength);\r\n const deleteIcon = Icon.getIcon('delete');\r\n this.inputs[targetID].labelEle.insertBefore(deleteIcon, this.inputs[targetID].labelEle.firstChild);\r\n deleteIcon.addEventListener('click', e => {\r\n e.stopPropagation();\r\n this.inputs[targetID].rootElement.remove();\r\n delete this.inputs[targetID];\r\n // const customEvent = new CustomEvent('fileDelete', { bubbles: true });\r\n // this.rootElement.dispatchEvent(customEvent);\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Attachments.prototype._viewAttachment = function (attachmentId) {\r\n const action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewCaseNoteAttachment/`;\r\n\r\n const form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', res => JSON.stringify(res));\r\n\r\n const tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n const attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', attachmentId);\r\n attachmentInput.id = 'attachmentId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n };\r\n\r\n /**\r\n * This does not add a file input, rather a view only attachment\r\n *\r\n * @function\r\n * @param {Object} newAttachments\r\n */\r\n Attachments.prototype.addAttachments = function (newAttachments) {\r\n newAttachments.forEach(newAttachment => {\r\n const inputGroup = _DOM.createElement('div', { class: ['file', 'hasFile'] });\r\n\r\n const label = _DOM.createElement('div', {\r\n class: 'fakelabel',\r\n text: _UTIL.truncateFilename(newAttachment.description, this.filenamelength),\r\n });\r\n\r\n const deleteIcon = Icon.getIcon('delete');\r\n\r\n label.insertBefore(deleteIcon, label.firstChild);\r\n inputGroup.append(label);\r\n\r\n inputGroup.addEventListener('click', e => {\r\n if (e.target === deleteIcon) {\r\n const customEvent = new CustomEvent('fileDelete', {\r\n bubbles: true,\r\n detail: newAttachment.attachmentId,\r\n });\r\n this.rootElement.dispatchEvent(customEvent);\r\n return;\r\n } else {\r\n //this._viewAttachment(newAttachment.attachmentId);\r\n caseNotesAjax.viewCaseNoteAttachment(newAttachment.attachmentId);\r\n }\r\n });\r\n\r\n this.rootElement.append(inputGroup);\r\n });\r\n };\r\n\r\n /**\r\n * Clears out all attachments, does not delete them\r\n *\r\n * @function\r\n */\r\n Attachments.prototype.clear = function () {\r\n this.inputs = {};\r\n\r\n this.rootElement.innerHTML = '';\r\n\r\n const input = new File({ ...this.options });\r\n input.renderTo(this.rootElement);\r\n this.inputs[this.options.id] = input;\r\n };\r\n\r\n return Attachments;\r\n});\r\n","(function (global, factory) {\r\n global.Button = factory();\r\n})(this, function () {\r\n //=========================\r\n // MAIN LIB\r\n //-------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n text: null,\r\n type: 'button',\r\n icon: null,\r\n style: 'primary',\r\n styleType: 'contained',\r\n disabled: false,\r\n class: [],\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Button component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {String} options.type submit or button (don't use reset)\r\n * @param {String} [options.text] button text\r\n * @param {String} [options.name] button name\r\n * @param {String} [options.value] button value\r\n * @param {String} [options.icon] icon to include\r\n * @param {String} [options.style] primary(blue), secondary(green), danger(red), warning(yellow)\r\n * @param {String} [options.styleType] contained(filled), outlined(border, no fill), text(no fill/border)\r\n * @param {Array} [options.class] additional css classes to add ['class1', 'class2']\r\n * @returns {Button}\r\n *\r\n * @example\r\n * const saveButton = new Button({\r\n * text: 'save',\r\n * });\r\n */\r\n function Button(options) {\r\n // Data Init\r\n this.options = _DOM.separateHTMLAttribrutes(_UTIL.mergeObjects(DEFAULT_OPTIONS, options));\r\n\r\n // DOM Ref\r\n this.button = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * Builds the Button element component HTML\r\n *\r\n * @function\r\n */\r\n Button.prototype._build = function () {\r\n const classes = ['button', this.options.style, this.options.styleType, ...this.options.class];\r\n this.button = _DOM.createElement('button', {\r\n class: this.options.hidden ? [...classes, 'button--hidden'] : classes,\r\n type: this.options.attributes.type,\r\n name: this.options.attributes.name,\r\n value: this.options.attributes.value,\r\n disabled: this.options.attributes.disabled,\r\n });\r\n\r\n if (this.options.icon) {\r\n if (this.options.text) {\r\n const textNode = document.createTextNode(this.options.text);\r\n this.button.append(Icon.getIcon(this.options.icon), textNode);\r\n this.button.classList.add('button--icon');\r\n } else {\r\n this.button.appendChild(Icon.getIcon(this.options.icon));\r\n this.button.classList.add('button--icon-only');\r\n }\r\n } else {\r\n this.button.innerText = this.options.text;\r\n }\r\n };\r\n\r\n /**\r\n * Handles button click event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Button.prototype.onClick = function (cbFunc) {\r\n this.button.addEventListener('click', e => {\r\n e.preventDefault();\r\n if (cbFunc) cbFunc(e);\r\n });\r\n };\r\n\r\n /**\r\n * Toggles button disabled state, if true input is disabled\r\n *\r\n * @function\r\n * @param {Boolean} isDisbled\r\n */\r\n Button.prototype.toggleDisabled = function (isDisbled) {\r\n this.button.disabled = isDisbled;\r\n };\r\n\r\n /**\r\n * Toggles button visibility state, if true input is hidden\r\n *\r\n * @function\r\n * @param {Boolean} isHidden\r\n */\r\n Button.prototype.toggleVisibility = function (isHidden) {\r\n this.button.classList.toggle('button--hidden', isHidden);\r\n };\r\n\r\n Button.prototype.updateText = function (newText) {\r\n this.button.innerText = '';\r\n\r\n const textNode = document.createTextNode(newText);\r\n\r\n if (this.options.icon) {\r\n this.button.append(Icon.getIcon(this.options.icon));\r\n }\r\n\r\n this.button.append(textNode);\r\n };\r\n\r\n /**\r\n * Renders the built Button element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Button to\r\n * @returns {Button} Returns the current instances for chaining\r\n */\r\n Button.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.button);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Button;\r\n});\r\n","(function (global, factory) {\r\n global.Checkbox = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n note: null,\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Checkbox component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {String} options.id Id for input, use to link it with label. Also used for name attribute.\r\n * @param {String} options.label Text for label input\r\n * @param {Boolean} [options.required] Whether input is required for submission\r\n * @param {String} [options.note] Text for input note/message, displayed underneath input field\r\n * @param {Boolean} [options.hidden] Whether to show or hide the input\r\n * @param {Boolean} [options.toggle] *Checkbox only (instead of checkbox you will get a toggle button)\r\n * @returns {Checkbox}\r\n *\r\n * @example\r\n * const fnInput = new Checkbox({\r\n * label: 'First Name',\r\n * id: 'firstName'\r\n * });\r\n */\r\n function Checkbox(options) {\r\n // Data Init\r\n this.options = _DOM.separateHTMLAttribrutes(_UTIL.mergeObjects(DEFAULT_OPTIONS, options));\r\n this.options.attributes.name = this.options.attributes.id;\r\n this.options.attributes.type = 'checkbox';\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.inputWrap = null;\r\n this.input = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * Builds the checkbox component HTML\r\n *\r\n * @function\r\n * @returns {Checkbox} Current instances for chaining\r\n */\r\n Checkbox.prototype._build = function () {\r\n // CHECKBOX WRAP\r\n const classArray = ['inputGroup', `${this.options.attributes.id}`];\r\n this.options.toggle ? classArray.push('checkbox_toggle') : classArray.push('checkbox');\r\n this.rootElement = _DOM.createElement('div', {\r\n class: this.options.hidden ? [...classArray, 'inputGroup--hidden'] : classArray,\r\n });\r\n\r\n // CHECKBOX & LABEL\r\n this.input = _DOM.createElement('input', { ...this.options.attributes });\r\n this.labelEle = _DOM.createElement('label', {\r\n text: this.options.label,\r\n for: this.options.attributes.id,\r\n });\r\n this.rootElement.appendChild(this.input);\r\n this.rootElement.appendChild(this.labelEle);\r\n\r\n // CHECKBOX NOTE\r\n if (this.options.note) {\r\n const inputNote = _DOM.createElement('div', { class: 'inputGroup__note', text: this.options.note });\r\n this.rootElement.appendChild(inputNote);\r\n }\r\n };\r\n\r\n /**\r\n * Sets value of checkbox\r\n *\r\n * @function\r\n * @param {String | Number} value\r\n */\r\n Checkbox.prototype.setValue = function (value) {\r\n if (value === '') return;\r\n \r\n this.input.checked = value;\r\n };\r\n\r\n /**\r\n * Returns value of checkbox\r\n *\r\n * @function\r\n * @returns {String} Value of checkbox\r\n */\r\n Checkbox.prototype.getValue = function () {\r\n return this.input.checked;\r\n };\r\n\r\n /**\r\n * Clears checkbox value, sets it to ''\r\n *\r\n * @function\r\n */\r\n Checkbox.prototype.clear = function () {\r\n this.input.checked = false;\r\n };\r\n\r\n /**\r\n * Toggles inputs required state, if true input is required\r\n *\r\n * @function\r\n * @param {Boolean} isRequired\r\n */\r\n Checkbox.prototype.toggleRequired = function (isRequired) {\r\n this.input.required = isRequired;\r\n };\r\n\r\n /**\r\n * Toggles checkbox disabled state, if true checkbox is disabled\r\n *\r\n * @function\r\n * @param {Boolean} isDisbled\r\n */\r\n Checkbox.prototype.toggleDisabled = function (isDisbled) {\r\n this.input.disabled = isDisbled;\r\n this.input.readOnly = isDisbled;\r\n };\r\n\r\n /**\r\n * Sets Custom Validity on checkbox\r\n *\r\n * @function\r\n * @param {String} message Empty string will unset invalid status\r\n */\r\n Checkbox.prototype.setValidtyError = function (message) {\r\n this.input.setCustomValidity(message);\r\n };\r\n\r\n /**\r\n * Handles checkbox change event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Checkbox.prototype.onChange = function (cbFunc) {\r\n this.input.addEventListener('input', e => {\r\n if (this.options.toggle) e.preventDefault();\r\n if (cbFunc) cbFunc(e);\r\n });\r\n };\r\n\r\n /**\r\n * Updates the text inside label element\r\n *\r\n * @param {String} newValue\r\n */\r\n Checkbox.prototype.updateLableValue = function (newValue) {\r\n if (_DOM.stringContainsHTML(newValue)) {\r\n this.labelEle.innerHTML = newValue;\r\n\r\n return;\r\n }\r\n\r\n this.labelEle.innerText = newValue;\r\n };\r\n\r\n /**\r\n * Renders the built checkbox element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the input to\r\n * @returns {Checkbox} Returns the current instances for chaining\r\n */\r\n Checkbox.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Checkbox;\r\n});\r\n","(function (global, factory) {\r\n global.CheckboxGroup = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n groupLabel: null,\r\n fields: null,\r\n };\r\n\r\n /**\r\n * Constructor function for creating a CheckboxGroup component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {Boolean} [options.disabled]\r\n * @param {Boolean} [options.required]\r\n * @returns {CheckboxGroup}\r\n */\r\n function CheckboxGroup(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.inputs = {};\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.groupLabelEle = null;\r\n\r\n this._build();\r\n }\r\n\r\n CheckboxGroup.prototype._build = function () {\r\n this.rootElement = _DOM.createElement('fieldset', { id: this.options.id });\r\n this.groupLabelEle = _DOM.createElement('legend', { text: this.options.groupLabel });\r\n this.rootElement.appendChild(this.groupLabelEle);\r\n\r\n this.options.fields.forEach(field => {\r\n let inputInstance = new Checkbox({ ...field, disabled: this.options.disabled, required: this.options.required });\r\n this.rootElement.appendChild(inputInstance.rootElement);\r\n this.inputs[field.id] = inputInstance;\r\n });\r\n };\r\n\r\n return CheckboxGroup;\r\n});\r\n","(function (global, factory) {\r\n global.Dialog = factory();\r\n})(this, function () {\r\n function Confirmation() {}\r\n\r\n function Alert() {}\r\n\r\n //=========================\r\n // MAIN LIB\r\n //-------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n clickOutToClose: true,\r\n className: null,\r\n isModal: true,\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Dialog component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {Boolean} [options.isModal] Whether to display as basic dialog or modal dialog\r\n * @param {String} [options.className] Class name for Element\r\n * @param {Boolean} [options.clickOutToClose] Whether modal closes with backdrop click\r\n * @returns {Dialog}\r\n *\r\n * @example\r\n * const popup = new Dialog();\r\n */\r\n function Dialog(options) {\r\n this.options = _DOM.separateHTMLAttribrutes(_UTIL.mergeObjects(DEFAULT_OPTIONS, options));\r\n\r\n // Instance Ref\r\n this.dialog = null;\r\n\r\n this._build();\r\n this._setupEvents();\r\n }\r\n\r\n /**\r\n * Builds the Dialog element component HTML\r\n *\r\n * @function\r\n * @returns {Dialog} Returns the current instances for chaining\r\n */\r\n Dialog.prototype._build = function () {\r\n let classArray = ['dialog'];\r\n if (this.options.isModal) classArray.push('modal');\r\n if (this.options.className) classArray.push(this.options.className);\r\n\r\n this.dialog = _DOM.createElement('dialog', {\r\n class: classArray,\r\n });\r\n };\r\n\r\n /**\r\n * Sets up events for Dialog Box\r\n *\r\n * @function\r\n */\r\n Dialog.prototype._setupEvents = function () {\r\n if (this.options.clickOutToClose) {\r\n this.dialog.addEventListener('click', e => {\r\n const dialogDimensions = this.dialog.getBoundingClientRect();\r\n\r\n if (\r\n e.clientX < dialogDimensions.left ||\r\n e.clientX > dialogDimensions.right ||\r\n e.clientY < dialogDimensions.top ||\r\n e.clientY > dialogDimensions.bottom\r\n ) {\r\n this.close();\r\n\r\n const customEvent = new CustomEvent('onClose');\r\n this.dialog.dispatchEvent(customEvent);\r\n }\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Dialog.prototype.onClose = function (cbFunc) {\r\n this.dialog.addEventListener('onClose', e => {\r\n cbFunc();\r\n });\r\n };\r\n\r\n /**\r\n * Shows dialog element\r\n *\r\n * @function\r\n */\r\n Dialog.prototype.show = function () {\r\n if (this.options.isModal) {\r\n this.dialog.showModal();\r\n } else {\r\n this.dialog.show();\r\n }\r\n };\r\n\r\n /**\r\n * Closes dialog element\r\n *\r\n * @function\r\n */\r\n Dialog.prototype.close = function () {\r\n this.dialog.close();\r\n };\r\n\r\n /**\r\n * Renders the built Dialog element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the dialog to\r\n * @returns {Dialog} Returns the current instances for chaining\r\n */\r\n Dialog.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Dialog;\r\n});\r\n","/** DO NOT TOUCH ANY OF THIS CODE PLEASE */\r\n\r\n(function (global, factory) {\r\n global.Form = factory();\r\n})(this, function () {\r\n //=========================\r\n // MAIN LIB\r\n //-------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n isReadOnly: false,\r\n hideAllButtons: false,\r\n formName: '',\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Form component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @returns {Form}\r\n *\r\n * @example\r\n * const myForm = new Form({\r\n * elements: [],\r\n * buttons: []\r\n * })\r\n */\r\n function Form(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.inputs = {};\r\n this.buttons = {};\r\n this.formData = null;\r\n this.formId = null;\r\n\r\n // DOM Ref\r\n this.form = null;\r\n\r\n this._build();\r\n this._setupEvents();\r\n }\r\n\r\n /**\r\n * Builds the Form element HTML\r\n *\r\n * @function\r\n */\r\n Form.prototype._build = function () {\r\n this.form = _DOM.createElement('form', { name: this.options.formName });\r\n\r\n // Build form input fields\r\n this.options.fields.forEach(ele => {\r\n const fieldType = ele.type.toLowerCase();\r\n let inputInstance;\r\n\r\n switch (fieldType) {\r\n case 'radiogroup': {\r\n inputInstance = new RadioGroup({ ...ele });\r\n break;\r\n }\r\n case 'checkbox': {\r\n inputInstance = new Checkbox({ ...ele });\r\n break;\r\n }\r\n case 'checkboxgroup': {\r\n inputInstance = new CheckboxGroup({ ...ele });\r\n break;\r\n }\r\n case 'select': {\r\n const tmpFix = { ...ele };\r\n delete tmpFix.type; // only needed for Form\r\n\r\n inputInstance = new Select({ ...tmpFix });\r\n break;\r\n }\r\n case 'textarea': {\r\n const tmpFix = { ...ele };\r\n delete tmpFix.type; // only needed for Form\r\n inputInstance = new Textarea({ ...tmpFix });\r\n break;\r\n }\r\n case 'attachment': {\r\n const tmpFix = { ...ele };\r\n delete tmpFix.type; // only needed for Form\r\n inputInstance = new Attachments({ ...tmpFix });\r\n break;\r\n }\r\n default: {\r\n inputInstance = new Input({ ...ele });\r\n }\r\n }\r\n\r\n if (typeof this.options.onChange === 'function') {\r\n // this ties together the change events between form and inputs\r\n inputInstance.onChange(this.options.onChange);\r\n }\r\n\r\n this.form.appendChild(inputInstance.rootElement);\r\n\r\n if (fieldType === 'checkboxgroup') {\r\n this.inputs = { ...this.inputs, ...inputInstance.inputs };\r\n } else {\r\n this.inputs[ele.id] = inputInstance;\r\n }\r\n });\r\n\r\n if (!this.options.hideAllButtons) {\r\n const btnWrap = _DOM.createElement('div', { class: 'formButtons' });\r\n // Add default save button for all forms\r\n const submitButton = new Button({\r\n type: 'submit',\r\n text: 'Save',\r\n name: 'save',\r\n icon: 'save',\r\n }).renderTo(btnWrap);\r\n this.buttons['submit'] = submitButton;\r\n\r\n // Add additional form buttons\r\n if (this.options.buttons) {\r\n this.options.buttons.forEach(button => {\r\n const newButton = new Button({ ...button }).renderTo(btnWrap);\r\n if (button.name) {\r\n this.buttons[button.name] = newButton;\r\n }\r\n });\r\n }\r\n\r\n // Add default delete button for all forms (hidden by default)\r\n const deleteButton = new Button({\r\n type: 'button',\r\n text: 'Delete',\r\n name: 'delete',\r\n icon: 'delete',\r\n style: 'danger',\r\n styleType: 'outlined',\r\n hidden: true,\r\n }).renderTo(btnWrap);\r\n this.buttons['delete'] = deleteButton;\r\n\r\n // Add default cancel button for all forms\r\n const cancelButton = new Button({\r\n type: 'reset',\r\n text: 'Cancel',\r\n name: 'cancel',\r\n style: 'primary',\r\n styleType: 'outlined',\r\n }).renderTo(btnWrap);\r\n this.buttons['cancel'] = cancelButton;\r\n\r\n this.form.appendChild(btnWrap);\r\n }\r\n\r\n // if (this.options.isReadOnly) {\r\n // this.disableFormInputs();\r\n // }\r\n };\r\n\r\n Form.prototype._setupEvents = function () {\r\n this.form.addEventListener('change', e => {\r\n const customEvent = new CustomEvent('onChange', { detail: e });\r\n this.form.dispatchEvent(customEvent);\r\n });\r\n\r\n this.form.addEventListener(\r\n 'keyup',\r\n _UTIL.debounce(e => {\r\n const customEvent = new CustomEvent('onKeyup', { detail: e });\r\n this.form.dispatchEvent(customEvent);\r\n }, 100),\r\n );\r\n\r\n if (this.buttons['delete']) {\r\n this.buttons['delete'].onClick(e => {\r\n const customEvent = new CustomEvent('onDelete', { detail: e });\r\n this.form.dispatchEvent(customEvent);\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Handles change event on form inputs\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Form.prototype.onSubmit = function (cbFunc) {\r\n this.form.addEventListener('submit', e => {\r\n e.preventDefault();\r\n\r\n const formData = new FormData(this.form);\r\n const entries = formData.entries();\r\n const data = Object.fromEntries(entries);\r\n\r\n cbFunc(data, e.submitter, this.formId);\r\n });\r\n };\r\n\r\n /**\r\n * Handles reset event on form\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Form.prototype.onReset = function (cbFunc) {\r\n this.form.addEventListener('reset', e => {\r\n e.preventDefault();\r\n\r\n this.clear();\r\n\r\n cbFunc();\r\n });\r\n };\r\n\r\n /**\r\n * Handles delete event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Form.prototype.onDelete = function (cbFunc) {\r\n this.form.addEventListener('onDelete', e => {\r\n e.preventDefault(); \r\n\r\n cbFunc(data, e.submitter);\r\n });\r\n };\r\n\r\n /**\r\n * Handles change event on form inputs\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Form.prototype.onChange = function (cbFunc) {\r\n this.form.addEventListener('onChange', e => {\r\n cbFunc(e.detail, this.formId);\r\n });\r\n };\r\n\r\n /**\r\n * Handles keyup event on form inputs\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Form.prototype.onKeyup = function (cbFunc) {\r\n this.form.addEventListener(\r\n 'onKeyup',\r\n _UTIL.debounce(e => {\r\n cbFunc(e.detail);\r\n }, 100),\r\n );\r\n };\r\n\r\n /**\r\n * Handles file delete event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Form.prototype.onFileDelete = function (cbFunc) {\r\n this.form.addEventListener('fileDelete', e => {\r\n cbFunc(e);\r\n });\r\n };\r\n\r\n /**\r\n * Clears value from all inputs within form\r\n *\r\n * @function\r\n */\r\n Form.prototype.clear = function () {\r\n this.formData = null;\r\n this.formId = null;\r\n\r\n // clear all values from form inputs\r\n for (inputName in this.inputs) {\r\n this.inputs[inputName].clear();\r\n }\r\n };\r\n\r\n /**\r\n * Disables all inputs within form\r\n *\r\n * @function\r\n */\r\n Form.prototype.disableFormInputs = function (disable = true) {\r\n for (inputName in this.inputs) {\r\n this.inputs[inputName].toggleDisabled(disable);\r\n }\r\n };\r\n\r\n /**\r\n * Populates form fields with given data\r\n *\r\n * @function\r\n * @param {Object} data\r\n */\r\n Form.prototype.populate = function (data, formId) {\r\n this.clear();\r\n\r\n this.formData = data;\r\n this.formId = formId;\r\n\r\n for (inputName in data) {\r\n this.inputs[inputName].setValue(data[inputName]);\r\n }\r\n };\r\n\r\n /**\r\n * Renders the built Form element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the form to\r\n * @returns {Form} Returns the current instances for chaining\r\n */\r\n Form.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.form);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Form;\r\n});\r\n","(function (global, factory) {\r\n global.Icon = factory();\r\n})(this, function () {\r\n const svg = {\r\n add: `\r\n \r\n \r\n \r\n `,\r\n attachment: `\r\n \r\n \r\n \r\n `,\r\n arrowRight: `\r\n \r\n \r\n \r\n `,\r\n arrowLeft: `\r\n \r\n \r\n \r\n `,\r\n cancel: `\r\n \r\n \r\n \r\n `,\r\n calendar: `\r\n \r\n \r\n \r\n `,\r\n checkmark: `\r\n \r\n \r\n \r\n `,\r\n chevron: `\r\n \r\n \r\n \r\n `,\r\n close: `\r\n \r\n \r\n \r\n `,\r\n densitySmall: `\r\n \r\n \r\n \r\n `,\r\n densityMedium: `\r\n \r\n \r\n \r\n `,\r\n delete: `\r\n \r\n \r\n \r\n `,\r\n edit: `\r\n \r\n \r\n \r\n `,\r\n error: `\r\n \r\n \r\n \r\n `,\r\n exitFullScreen: `\r\n \r\n \r\n \r\n `,\r\n openFullScreen: `\r\n \r\n \r\n \r\n `,\r\n lock: `\r\n \r\n \r\n \r\n `,\r\n micOn: `\r\n \r\n \r\n \r\n `,\r\n micOff: `\r\n \r\n \r\n \r\n `,\r\n peopleGroup: `\r\n \r\n \r\n \r\n `,\r\n pin: `\r\n \r\n \r\n \r\n `,\r\n play: `\r\n \r\n \r\n \r\n `,\r\n save: `\r\n \r\n \r\n \r\n `,\r\n stop: `\r\n \r\n \r\n \r\n `,\r\n warning: `\r\n \r\n \r\n \r\n `,\r\n };\r\n\r\n const getIcon = name => {\r\n return _DOM.createElement('span', { html: svg[name], class: 'svgIcon' });\r\n };\r\n\r\n const getIconButton = name => {\r\n return _DOM.createElement('div', { html: `${svg[name]}`, class: 'iconButton' });\r\n };\r\n\r\n return {\r\n getIcon,\r\n getIconButton,\r\n };\r\n});\r\n","(function (global, factory) {\r\n global.Input = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n showcount: false,\r\n note: null,\r\n value: null,\r\n };\r\n\r\n /**\r\n * Constructor function for creating an Input component.\r\n *\r\n * Use for text, number, date, time\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {String} options.id Id for input, use to link it with label. Also used for name attribute.\r\n * @param {String} options.type HTML Input type\r\n * @param {String} options.label Text for label input\r\n * @param {Boolean} [options.required] Whether input is required for submission\r\n * @param {String} [options.note] Text for input note/message, displayed underneath input field\r\n * @param {Boolean} [options.showCount] Whether to show char count or not\r\n * @param {String} [options.minlength] Min char count\r\n * @param {String} [options.maxlength] Max char count\r\n * @param {Boolean} [options.hidden] Whether to show or hide the input\r\n * @returns {Input}\r\n *\r\n * @example\r\n * const fnInput = new Input({\r\n * type: 'text',\r\n * label: 'First Name',\r\n * id: 'firstName'\r\n * });\r\n */\r\n function Input(options) {\r\n // Data Init\r\n this.options = _DOM.separateHTMLAttribrutes(_UTIL.mergeObjects(DEFAULT_OPTIONS, options));\r\n this.options.attributes.name = this.options.attributes.id;\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.input = null;\r\n this.labelEle = null;\r\n this.inputNote = null;\r\n\r\n this._build();\r\n\r\n if (this.options.value) {\r\n this.setValue(this.options.value);\r\n }\r\n }\r\n\r\n /**\r\n * Builds the Input component HTML\r\n *\r\n * @function\r\n * @returns {Input} Current instances for chaining\r\n */\r\n Input.prototype._build = function () {\r\n // INPUT WRAP\r\n const classArray = ['inputGroup', `${this.options.attributes.type}`, `${this.options.attributes.id}`];\r\n const inputGroup = _DOM.createElement('div', {\r\n class: this.options.hidden ? [...classArray, 'inputGroup--hidden'] : classArray,\r\n });\r\n\r\n // INPUT & LABEL\r\n const inputWrap = _DOM.createElement('div', { class: 'inputGroup__inputWrap' });\r\n this.input = _DOM.createElement('input', { ...this.options.attributes });\r\n this.labelEle = _DOM.createElement('label', {\r\n text: this.options.label,\r\n for: this.options.attributes.id,\r\n });\r\n inputWrap.append(this.input);\r\n\r\n inputGroup.append(this.labelEle, inputWrap);\r\n\r\n // INPUT NOTE\r\n this.inputNote = _DOM.createElement('div', { class: 'inputGroup__note', text: this.options.note ?? '' });\r\n inputGroup.append(this.inputNote);\r\n\r\n // CHAR COUNTER\r\n if (this.options.showcount) {\r\n const countMarkup = this.options.attributes.maxlength\r\n ? { html: `${0}/${this.options.attributes.maxlength}` }\r\n : { text: '0' };\r\n const inputCount = _DOM.createElement('div', { class: 'inputGroup__charCount', ...countMarkup });\r\n inputGroup.append(inputCount);\r\n }\r\n\r\n this.rootElement = inputGroup;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Sets value of input\r\n *\r\n * @function\r\n * @param {String | Number} value\r\n */\r\n Input.prototype.setValue = function (value) {\r\n if (this.options.attributes.type === 'date') {\r\n if (!value) {\r\n this.input.value = '';\r\n return;\r\n }\r\n\r\n value = value.split(' ')[0];\r\n\r\n const dateformat = dates.checkFormat(value);\r\n if (dateformat === 'standard') {\r\n value = dates.formateToISO(value);\r\n }\r\n }\r\n\r\n this.input.value = value;\r\n };\r\n\r\n /**\r\n * Returns value of input\r\n *\r\n * @function\r\n * @returns {*} Value of input\r\n */\r\n Input.prototype.getValue = function () {\r\n return this.input.value;\r\n };\r\n\r\n /**\r\n * Clears input value, sets it to ''\r\n *\r\n * @function\r\n */\r\n Input.prototype.clear = function () {\r\n this.input.value = '';\r\n };\r\n\r\n /**\r\n * Toggles inputs required state, if true input is required\r\n *\r\n * @function\r\n * @param {Boolean} isRequired\r\n */\r\n Input.prototype.toggleRequired = function (isRequired) {\r\n this.input.required = isRequired;\r\n };\r\n\r\n /**\r\n * Toggles inputs disabled state, if true input is disabled\r\n *\r\n * @function\r\n * @param {Boolean} isDisbled\r\n */\r\n Input.prototype.toggleDisabled = function (isDisbled) {\r\n this.input.disabled = isDisbled;\r\n this.input.readOnly = isDisbled;\r\n };\r\n\r\n /**\r\n * Sets Custom Validity on input\r\n *\r\n * @function\r\n * @param {String} message Empty string will unset invalid status\r\n */\r\n Input.prototype.setValidtyError = function (message) {\r\n this.input.setCustomValidity(message);\r\n };\r\n\r\n /**\r\n * Adds error icon to end of input and updates note text with given error message\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n Input.prototype.showError = function (message) {\r\n this.inputNote.innerHTML = message;\r\n //this.inputNote.append(Icon.getIcon('error'), message);\r\n };\r\n\r\n /**\r\n * Adds warning icon to end of input and updates note text with given warning message\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n Input.prototype.showWarning = function (message) {\r\n this.inputNote.innerHTML = message;\r\n //this.inputNote.append(Icon.getIcon('warning'), message);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Input.prototype.clearErrorOrWarning = function () {\r\n this.inputNote.innerText = this.options.note;\r\n };\r\n\r\n /**\r\n * Handles input change event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Input.prototype.onChange = function (cbFunc) {\r\n this.input.addEventListener('onchange', e => {\r\n if (cbFunc) cbFunc(e);\r\n });\r\n };\r\n\r\n /**\r\n * Handles input keyup event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Input.prototype.onKeyup = function (cbFunc) {\r\n this.input.addEventListener('keyup', e => {\r\n if (cbFunc) cbFunc(e);\r\n });\r\n };\r\n\r\n /**\r\n * Handles input click event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Input.prototype.onClick = function (cbFunc) {\r\n this.input.addEventListener('click', e => {\r\n if (cbFunc) cbFunc(e);\r\n });\r\n };\r\n\r\n /**\r\n * Updates the text inside label element\r\n *\r\n * @param {String} newValue\r\n */\r\n Input.prototype.updateLableValue = function (newValue) {\r\n if (_DOM.stringContainsHTML(newValue)) {\r\n this.labelEle.innerHTML = newValue;\r\n\r\n return;\r\n }\r\n\r\n this.labelEle.innerText = newValue;\r\n };\r\n\r\n /**\r\n * Renders the built Input element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the input to\r\n * @returns {Input} Returns the current instances for chaining\r\n */\r\n Input.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Input;\r\n});\r\n","(function (global, factory) {\r\n global.Portrait = factory();\r\n})(this, function () {\r\n /**\r\n * Constructor function for creating a Portrait component.\r\n *\r\n * @constructor\r\n * @returns {RosterCard}\r\n */\r\n function Portrait(consumerId) {\r\n this.consumerId = consumerId;\r\n\r\n this.rootElement = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * Builds the Portrait component HTML\r\n *\r\n * @function\r\n */\r\n Portrait.prototype.build = function () {\r\n const imgSource = `./images/portraits/${this.consumerId}.png?${new Date().setHours(0, 0, 0, 0)}`;\r\n const defaultImgSource = `this.src='./images/new-icons/default.jpg'`;\r\n\r\n const image = _DOM.createElement('img', {\r\n src: imgSource,\r\n onerror: defaultImgSource,\r\n loading: 'lazy',\r\n });\r\n\r\n this.rootElement = _DOM.createElement('div', { class: 'portrait', node: image });\r\n };\r\n\r\n /**\r\n * Renders the built Portrait component to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the portrait to\r\n * @returns {RosterCard} Returns the current instances for chaining\r\n */\r\n Portrait.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Portrait;\r\n});\r\n","(function (global, factory) {\r\n global.RadioGroup = factory();\r\n})(this, function () {\r\n /**\r\n * Default configuration\r\n * @typ {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n disabled: false,\r\n required: false,\r\n };\r\n\r\n /**\r\n * @constructor\r\n * @param {String} id\r\n * @param {String} type\r\n * @param {String} label\r\n * @param {Boolean} [options.disabled]\r\n * @param {Boolean} [options.required]\r\n */\r\n function Radio(options) {\r\n // Data Init\r\n this.options = _DOM.separateHTMLAttribrutes(_UTIL.mergeObjects(DEFAULT_OPTIONS, options));\r\n this.options.attributes.type = 'radio';\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.input = null;\r\n this.labelEle = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * Builds the Radio element structure\r\n *\r\n * @function\r\n */\r\n Radio.prototype._build = function () {\r\n // RADIO WRAP\r\n const classArray = ['inputGroup', 'radio', `${this.options.attributes.id}`];\r\n this.rootElement = _DOM.createElement('div', {\r\n class: classArray,\r\n });\r\n\r\n // RADIO & LABEL\r\n this.input = _DOM.createElement('input', { ...this.options.attributes });\r\n this.labelEle = _DOM.createElement('label', {\r\n text: this.options.label,\r\n for: this.options.attributes.id,\r\n });\r\n this.rootElement.appendChild(this.input);\r\n this.rootElement.appendChild(this.labelEle);\r\n };\r\n\r\n /**\r\n * Sets value of radio\r\n *\r\n * @function\r\n * @param {String | Number} value\r\n */\r\n Radio.prototype.setValue = function (value) {\r\n this.input.checked = value;\r\n };\r\n\r\n /**\r\n * Returns value of radio\r\n *\r\n * @function\r\n * @returns {*} Value of radio\r\n */\r\n Radio.prototype.getValue = function () {\r\n return this.input.checked;\r\n };\r\n\r\n /**\r\n * Renders the built Radio element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node - DOM node to render the radio to\r\n * @returns {Radio} - Returns the current instances for chaining\r\n */\r\n Radio.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n //=========================\r\n // MAIN LIB\r\n //-------------------------\r\n /**\r\n * Default configuration\r\n * @typ {Object}\r\n */\r\n const DEFAULT_OPTIONS_2 = {\r\n disabled: false,\r\n required: false,\r\n };\r\n\r\n /**\r\n * @constructor\r\n * @param {Object} options\r\n * @param {String} options.id - Id for inputs\r\n * @param {String} options.groupLabel - Text for label input\r\n * @param {Array} options.fields - Radio inputs\r\n * @param {Boolean} [options.disabled]\r\n * @param {Boolean} [options.required]\r\n */\r\n function RadioGroup(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS_2, options);\r\n this.inputs = {};\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.groupLabelEle = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * Builds the Radio element structure\r\n *\r\n * @function\r\n */\r\n RadioGroup.prototype._build = function () {\r\n this.rootElement = _DOM.createElement('fieldset');\r\n this.groupLabelEle = _DOM.createElement('legend', { text: this.options.groupLabel });\r\n this.rootElement.appendChild(this.groupLabelEle);\r\n\r\n this.options.fields.forEach(field => {\r\n const inputInstance = new Radio({\r\n ...field,\r\n name: this.options.id,\r\n disabled: this.options.disabled,\r\n required: this.options.required,\r\n });\r\n this.rootElement.appendChild(inputInstance.rootElement);\r\n this.inputs[field.id] = inputInstance;\r\n });\r\n\r\n this.inputNote = _DOM.createElement('div', { class: 'inputGroup__note', text: this.options.note ?? '' });\r\n this.rootElement.append(this.inputNote);\r\n };\r\n\r\n /**\r\n * Set radio input checked status by id\r\n *\r\n * @function\r\n * @param {String | Number} value\r\n */\r\n RadioGroup.prototype.setValue = function (inputId) {\r\n if (!inputId || inputId === '') {\r\n this.clear();\r\n return;\r\n }\r\n\r\n if (!this.inputs[inputId]) {\r\n debugger;\r\n }\r\n\r\n this.inputs[inputId].setValue(true);\r\n };\r\n\r\n /**\r\n * Get radio input checked status by id\r\n *\r\n * @function\r\n * @param {String} [inputId]\r\n */\r\n RadioGroup.prototype.getValue = function (inputId) {\r\n if (!inputId) {\r\n let checkedInputId;\r\n\r\n for (inputId in this.inputs) {\r\n if (this.inputs[inputId].getValue()) {\r\n checkedInputId = this.inputs[inputId].input.id;\r\n }\r\n }\r\n\r\n return checkedInputId ? checkedInputId : '';\r\n }\r\n\r\n return this.inputs[inputId].getValue();\r\n };\r\n\r\n RadioGroup.prototype.clear = function () {\r\n for (inputId in this.inputs) {\r\n this.inputs[inputId].setValue(false);\r\n }\r\n };\r\n\r\n /**\r\n * Toggles inputs disabled state, if true input is disabled\r\n *\r\n * @function\r\n * @param {Boolean} isDisbled\r\n */\r\n RadioGroup.prototype.toggleDisabled = function (isDisbled) {\r\n for (inputId in this.inputs) {\r\n this.inputs[inputId].input.disabled = isDisbled;\r\n this.inputs[inputId].input.readOnly = isDisbled;\r\n }\r\n };\r\n\r\n return RadioGroup;\r\n});\r\n","(function (global, factory) {\r\n global.Select = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @typ {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n data: [],\r\n hidden: false,\r\n note: null,\r\n required: false,\r\n includeBlankOption: false,\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Select component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {String} options.id Id for input, use to link it with label. Also used for name attribute.\r\n * @param {String} options.label Text for label select\r\n * @param {Boolean} [options.required] Whether select is required for submission\r\n * @param {String} [options.note] Text for select note/message, displayed underneath select field\r\n * @param {Boolean} [options.hidden] Whether to show or hide the select\r\n * @param {Boolean} [options.includeBlankOption]\r\n * @returns {Select}\r\n *\r\n * @example\r\n * const dropdown = new Select({\r\n * label: 'Locations',\r\n * id: 'locations'\r\n * });\r\n */\r\n function Select(options) {\r\n // Data Init\r\n this.options = _DOM.separateHTMLAttribrutes(_UTIL.mergeObjects(DEFAULT_OPTIONS, options));\r\n this.options.attributes.name = this.options.attributes.id;\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.inputWrap = null;\r\n this.select = null;\r\n this.inputNote = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * Builds the Select component HTML\r\n *\r\n * @function\r\n */\r\n Select.prototype._build = function () {\r\n const classArray = ['inputGroup', 'select', `${this.options.attributes.id}`];\r\n this.rootElement = _DOM.createElement('div', {\r\n class: this.options.hidden ? [...classArray, 'inputGroup--hidden'] : classArray,\r\n });\r\n\r\n this.inputWrap = _DOM.createElement('div', { class: 'inputGroup__inputWrap' });\r\n this.select = _DOM.createElement('select', { ...this.options.attributes });\r\n const labelEle = _DOM.createElement('label', {\r\n text: this.options.label,\r\n for: this.options.attributes.id,\r\n });\r\n\r\n this.inputWrap.appendChild(this.select);\r\n this.inputWrap.appendChild(Icon.getIcon('chevron'));\r\n\r\n this.rootElement.appendChild(labelEle);\r\n this.rootElement.appendChild(this.inputWrap);\r\n\r\n this.inputNote = _DOM.createElement('div', { class: 'inputGroup__note', text: this.options.note ?? '' });\r\n this.rootElement.appendChild(this.inputNote);\r\n\r\n this.populate();\r\n };\r\n\r\n /**\r\n * Populates the select with \r\n *\r\n * @function\r\n * @param {Array} [data] Data to populate select with\r\n */\r\n Select.prototype.populate = function (data, defaultValue) {\r\n if (data && Array.isArray(data)) this.options.data = [...data];\r\n\r\n this.select.innerHTML = '';\r\n\r\n if (this.options.data.length > 0) {\r\n if (this.options.includeBlankOption) {\r\n this.options.data.unshift({ value: '', text: '' });\r\n }\r\n\r\n this.options.data.sort(_UTIL.sortByProperty('text')).forEach(d => {\r\n const optionEle = _DOM.createElement('option', { value: d.value, text: d.text });\r\n this.select.appendChild(optionEle);\r\n });\r\n }\r\n\r\n //! If data is emtpy we set dropdown to disabled\r\n if (!this.options.data || this.options.data.length === 0) {\r\n this.toggleDisabled(true);\r\n } else {\r\n this.toggleDisabled(false);\r\n }\r\n\r\n const dv = defaultValue ? defaultValue : this.options.defaultValue;\r\n this.select.value = dv;\r\n };\r\n\r\n /**\r\n * Sets value of select\r\n *\r\n * @function\r\n * @param {String} Value\r\n */\r\n Select.prototype.setValue = function (value) {\r\n this.select.value = value;\r\n };\r\n\r\n /**\r\n * Gets value of select\r\n *\r\n * @function\r\n * @returns {*} Value of select\r\n */\r\n Select.prototype.getValue = function () {\r\n return this.select.value;\r\n };\r\n\r\n /**\r\n * Clears select value, sets it to ''\r\n *\r\n * @function\r\n */\r\n Select.prototype.clear = function () {\r\n this.select.value = '';\r\n };\r\n\r\n /**\r\n * Sets Custom Validity on select\r\n *\r\n * @function\r\n * @param {String} message Empty string will unset invalid status\r\n */\r\n Select.prototype.setValidtyError = function (message) {\r\n this.select.setCustomValidity(message);\r\n };\r\n\r\n /**\r\n * Adds error icon to end of select and updates note text with given error message\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n Input.prototype.showError = function (message) {\r\n this.inputNote.innerHTML = message;\r\n //this.inputNote.append(Icon.getIcon('error'), message);\r\n };\r\n\r\n /**\r\n * Adds warning icon to end of select and updates note text with given warning message\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n Input.prototype.showWarning = function (message) {\r\n this.inputNote.innerHTML = message;\r\n //this.inputNote.append(Icon.getIcon('warning'), message);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Input.prototype.clearErrorOrWarning = function () {\r\n this.inputNote.innerText = this.options.note ?? '';\r\n };\r\n\r\n /**\r\n * Toggles select required state, if true input is required\r\n *\r\n * @function\r\n * @param {Boolean} onOff\r\n */\r\n Select.prototype.toggleRequired = function (onOff) {\r\n this.select.required = onOff;\r\n };\r\n\r\n /**\r\n * Toggles select disabled state, if true input is disabled\r\n *\r\n * @function\r\n * @param {Boolean} isDisbled\r\n */\r\n Select.prototype.toggleDisabled = function (isDisbled) {\r\n this.select.disabled = isDisbled;\r\n this.select.readOnly = isDisbled;\r\n };\r\n\r\n /**\r\n * Handles select change event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Select.prototype.onChange = function (cbFunc) {\r\n this.select.addEventListener('change', e => {\r\n cbFunc(e);\r\n });\r\n };\r\n\r\n /**\r\n * Renders the built Select element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the select to\r\n * @returns {Select} Returns the current instances for chaining\r\n */\r\n Select.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Select;\r\n});\r\n","(function (global, factory) {\r\n global.Spinner = factory();\r\n})(this, function () {\r\n //TODO-ASH: bring in web animation api for more control\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n speed: 'normal',\r\n size: 'large',\r\n };\r\n\r\n /**\r\n * Constructor function for creating a spinner UI component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {Number} [options.speed] - The speed ms, spin speed in milliseconds\r\n * @param {String} [options.size] - The size of spinner\r\n * @returns {Spinner}\r\n *\r\n * @example\r\n * var mySpinner = new Spinner();\r\n */\r\n function Spinner(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n\r\n // DOM Ref\r\n this.spinnerWrap = null;\r\n this.spinner = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * Builds the Spinner component HTML\r\n *\r\n * @function\r\n */\r\n Spinner.prototype.build = function () {\r\n this.spinnerWrap = _DOM.createElement('div', { class: 'loadingSpinner' });\r\n this.spinner = _DOM.createElement('div', { class: 'loadingSpinner__bar' });\r\n\r\n this.spinnerWrap.appendChild(this.spinner);\r\n };\r\n\r\n /**\r\n * Removes Element From DOM\r\n *\r\n * @function\r\n */\r\n Spinner.prototype.removeElement = function () {\r\n this.spinnerWrap.remove();\r\n };\r\n\r\n /**\r\n * Replaces Element with new one\r\n *\r\n * @function\r\n * @param {Node} node DOM node to replace element with\r\n */\r\n Spinner.prototype.replaceWith = function (node) {\r\n this.spinnerWrap.replaceWith(node);\r\n };\r\n\r\n /**\r\n * Renders the built Spinner element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Loading Animation to\r\n * @returns {Spinner} Returns the current instances for chaining\r\n */\r\n Spinner.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.spinnerWrap);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Spinner;\r\n});\r\n","//? table filtering\r\n//? custom visible columns\r\n//? row styles: grid, horizontal, free form,\r\n//? row subtext, cell subtext? aka row note\r\n//? pagination\r\n//? allow table to go fullscreen\r\n\r\n//TODO-ASH: multiselect rows w/bulk actions\r\n//TODO-ASH: clickable end row icons\r\n//TODO-ASH: table headline \r\n//TODO-ASH: row density control\r\n\r\n(function (global, factory) {\r\n global = global || self;\r\n global.Table = factory();\r\n})(this, function () {\r\n /**\r\n * Get the index of node related to sibilings\r\n * @param {HTMLElement} node\r\n * @returns {Number}\r\n */\r\n const getNodeIndex = node => {\r\n return Array.from(node.parentNode.children).indexOf(node);\r\n };\r\n\r\n function checkDateFormat(dateString) {\r\n // Regex pattern for ISO date format (YYYY-MM-DD)\r\n const isoFormatPattern = /^\\d{4}-\\d{2}-\\d{2}$/;\r\n // Regex pattern for Standard format (MM/DD/YYYY)\r\n const standardFormatPattern = /^\\d{2}\\/\\d{2}\\/\\d{4}$/;\r\n\r\n if (isoFormatPattern.test(dateString)) {\r\n return 'ISO';\r\n } else if (standardFormatPattern.test(dateString)) {\r\n return 'Standard';\r\n } else {\r\n return 'Unknown format';\r\n }\r\n }\r\n\r\n /**\r\n * Formats the date for table view\r\n * @param {String} dateString dateString format must be ISO YYYY-MM-DD\r\n */\r\n const formatDate = dateString => {\r\n if (!dateString) return '';\r\n if (checkDateFormat(dateString) !== 'ISO') return '';\r\n const date = new Date(`${dateString}T00:00`);\r\n return new Intl.DateTimeFormat('en-US').format(date);\r\n };\r\n\r\n //=========================\r\n // MAIN LIB\r\n //-------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n style: 'default',\r\n rowSortable: false,\r\n columnSortable: false,\r\n allowCopy: false,\r\n allowDelete: false,\r\n };\r\n\r\n /**\r\n * @class Table\r\n * @param {Object} options\r\n * @param {Array} options.headings\r\n * @param {String} [options.style] Table style\r\n * @param {Boolean} [options.rowSortable] Row re ordering\r\n * @param {Boolean} [options.columnSortable] Column sorting by header\r\n * @param {Boolean} [options.allowCopy] Row's can be duplicated by copy\r\n * @param {Boolean} [options.allowDelete] Row's can be duplicated by copy\r\n */\r\n function Table(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.rows = {};\r\n this.selectedRows = {};\r\n\r\n this.rootElement = null;\r\n this.table = null;\r\n\r\n this._build();\r\n this._setupEvents();\r\n\r\n // this.table = table ref\r\n // this.table.tHead = table header\r\n // this.table.tFoot = table footer\r\n // this.table.tBodies = html collection of table bodies\r\n // this.table.rows = html collection\r\n // this.table[rowID] = row ref\r\n // this.table.caption = table caption\r\n }\r\n\r\n /**\r\n * Builds & Populates Table\r\n */\r\n Table.prototype._build = function () {\r\n //* create table\r\n this.rootElement = _DOM.createElement('div', { class: 'ui_table' });\r\n const tableNav = _DOM.createElement('div', { class: 'ui-table__nav' });\r\n this.table = _DOM.createElement('table');\r\n const tableBody = _DOM.createElement('tbody');\r\n const tableHeader = _DOM.createElement('thead', { node: _DOM.createElement('tr') });\r\n\r\n this.table.appendChild(tableHeader);\r\n this.table.appendChild(tableBody);\r\n\r\n this.rootElement.appendChild(tableNav);\r\n this.rootElement.appendChild(this.table);\r\n\r\n //* populate table header\r\n this.options.headings.forEach(heading => {\r\n const cell = _DOM.createElement('th', {\r\n text: heading.text,\r\n class: this.options.columnSortable ? 'sortable' : '',\r\n 'data-type': heading.type,\r\n });\r\n tableHeader.rows[0].appendChild(cell);\r\n });\r\n\r\n //* add col for delete\r\n if (this.options.allowDelete) {\r\n const cell = _DOM.createElement('th', {\r\n 'data-type': 'deleteRow',\r\n });\r\n tableHeader.rows[0].appendChild(cell);\r\n }\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Table.prototype._setupEvents = function () {\r\n this.table.tBodies[0].addEventListener('click', e => {\r\n if (e.target.dataset.type === 'deleteRow') {\r\n const customEvent = new CustomEvent('onRowDelete', { detail: e.target.closest('tr') });\r\n this.table.tBodies[0].dispatchEvent(customEvent);\r\n return;\r\n }\r\n\r\n const customEvent = new CustomEvent('onRowClick', { detail: e.target.closest('tr') });\r\n this.table.tBodies[0].dispatchEvent(customEvent);\r\n });\r\n };\r\n\r\n /**\r\n * Multi select rows w/bulk actions\r\n */\r\n Table.prototype._multiSelect = function () {\r\n //TODO add bulk action dropdown/list\r\n\r\n // add checkbox to header\r\n const newCheckbox = new Input({\r\n id: 'headerCheckbox',\r\n type: 'checkbox',\r\n label: '',\r\n });\r\n const checkboxInput = newCheckbox.rootElement;\r\n checkboxInput.addEventListener('change', e => {\r\n console.log('I was selected');\r\n });\r\n const th = _DOM.createElement('th', { node: checkboxInput });\r\n this.table.tHead.rows[0].insertBefore(th, this.table.tHead.rows[0].cells[0]);\r\n\r\n // add checkbox to each tbody row\r\n const rows = Array.from(this.table.tBodies[0].rows);\r\n rows.forEach(row => {\r\n const newCheckbox = new Input({\r\n id: `${row.id}checkbox`,\r\n type: 'checkbox',\r\n label: '',\r\n });\r\n const checkboxInput = newCheckbox.rootElement;\r\n checkboxInput.addEventListener('change', e => {\r\n console.log('I was selected', row);\r\n });\r\n const td = _DOM.createElement('td', { node: checkboxInput });\r\n row.insertBefore(td, row.cells[0]);\r\n });\r\n\r\n this.table.addEventListener('click', e => {\r\n console.log(e.target, 'i was clicked');\r\n });\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Sort by column header\r\n */\r\n Table.prototype._columnSort = function () {\r\n this.table.classList.add('colSort');\r\n\r\n this.table.tHead.addEventListener('click', e => {\r\n if (e.target.nodeName !== 'TH') return;\r\n\r\n const colIndex = getNodeIndex(e.target);\r\n const rows = Array.from(this.table.tBodies[0].rows);\r\n\r\n let direction = !this.lastDirection ? 'asc' : this.lastDirection === 'asc' ? 'desc' : 'asc';\r\n let datetime;\r\n\r\n if (this.lastHeading) {\r\n this.lastHeading.classList.remove(this.lastDirection);\r\n }\r\n\r\n if (this.lastDirection) {\r\n e.target.classList.remove(this.lastDirection);\r\n }\r\n\r\n e.target.classList.add(direction);\r\n\r\n if (e.target.hasAttribute('data-type')) {\r\n if (e.target.getAttribute('data-type') === 'date') {\r\n datetime = true;\r\n }\r\n }\r\n\r\n //* sort table rows\r\n rows.sort((a, b) => {\r\n let ca = a.cells[colIndex].textContent;\r\n let cb = b.cells[colIndex].textContent;\r\n\r\n if (datetime) {\r\n ca = new Date(ca).getTime();\r\n cb = new Date(cb).getTime();\r\n } else {\r\n ca = ca.replace(/(\\$|\\,|\\s|%)/g, '');\r\n cb = cb.replace(/(\\$|\\,|\\s|%)/g, '');\r\n }\r\n\r\n ca = !isNaN(ca) ? parseInt(ca, 10) : ca;\r\n cb = !isNaN(cb) ? parseInt(cb, 10) : cb;\r\n\r\n if (direction === 'asc') {\r\n return ca > cb ? 1 : -1;\r\n } else {\r\n return ca < cb ? 1 : -1;\r\n }\r\n });\r\n\r\n this.lastHeading = e.target;\r\n this.lastDirection = direction;\r\n\r\n //* replace table rows with sorted ones\r\n const clonedTableBody = this.table.tBodies[0].cloneNode();\r\n\r\n for (let i = 0; i < rows.length; i++) {\r\n clonedTableBody.appendChild(rows[i]);\r\n }\r\n\r\n this.table.replaceChild(clonedTableBody, this.table.tBodies[0]);\r\n });\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Sort table rows (drag and drop)\r\n */\r\n Table.prototype._rowSort = function () {\r\n //* This uses sortable.js\r\n //* https://github.com/SortableJS/Sortable\r\n return new Sortable(this.tableBody, {\r\n handle: 'td:first-child',\r\n draggable: 'tbody tr',\r\n onSort: function (evt) {\r\n const newSort = {\r\n oldIndex: evt.oldIndex,\r\n newIndex: evt.newIndex,\r\n row: evt.item,\r\n };\r\n console.log(newSort);\r\n },\r\n });\r\n\r\n // add drag cell for sorting rows\r\n if (this.options.rowSortable) {\r\n const cell = _DOM.createElement('td', { html: ICONS.drag });\r\n rowEle.appendChild(cell);\r\n }\r\n\r\n // Init Row Sort\r\n if (this.options.rowSortable) {\r\n this.initRowSort();\r\n\r\n const td = _DOM.createElement('th');\r\n this.tableHeader.rows[0].insertBefore(td, this.tableHeader.rows[0].cells[0]);\r\n this.table.classList.add('sortable');\r\n }\r\n };\r\n\r\n /**\r\n * Clears table body\r\n *\r\n * @function\r\n */\r\n Table.prototype.clear = function () {\r\n this.table.tBodies[0].innerHTML = '';\r\n };\r\n\r\n /**\r\n * @function\r\n * @param {Array} data\r\n */\r\n Table.prototype.populate = function (data) {\r\n this.clear();\r\n\r\n //* populate table body\r\n data.forEach((row, i) => {\r\n const rowEle = _DOM.createElement('tr', { ...row.attributes, id: row.id });\r\n\r\n this.rows[row.id] = rowEle;\r\n\r\n // populate row\r\n row.values.forEach((rd, i) => {\r\n const dataType = this.options.headings[i]?.type ?? '';\r\n rd = dataType === 'date' ? formatDate(rd) : rd;\r\n const cell = _DOM.createElement('td', { text: rd, 'data-type': dataType });\r\n rowEle.appendChild(cell);\r\n });\r\n\r\n // add col for delete\r\n if (this.options.allowDelete) {\r\n const cell = _DOM.createElement('td', {\r\n node: Icon.getIcon('delete'),\r\n 'data-type': 'deleteRow',\r\n });\r\n rowEle.appendChild(cell);\r\n }\r\n\r\n this.table.tBodies[0].appendChild(rowEle);\r\n });\r\n };\r\n\r\n /**\r\n * Handles click event for table\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Table.prototype.onRowClick = function (cbFunc) {\r\n this.table.tBodies[0].addEventListener('onRowClick', e => {\r\n cbFunc(e.detail.id);\r\n });\r\n };\r\n\r\n /**\r\n * Handles click event for row delete\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Table.prototype.onRowDelete = function (cbFunc) {\r\n this.table.tBodies[0].addEventListener('onRowDelete', e => {\r\n cbFunc(e.detail, e.detail.id);\r\n });\r\n };\r\n\r\n Table.prototype.removeRow = function (row) {\r\n row.remove();\r\n }\r\n\r\n /**\r\n * Renders Table markup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render table to\r\n * @returns {Table} Returns the current instances for chaining\r\n */\r\n Table.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Table;\r\n});\r\n","(function (global, factory) {\r\n global.Textarea = factory();\r\n})(this, function () {\r\n //TODO-ASH: create logic to update charcount on keyup, input\r\n\r\n //=======================================\r\n // TEXT TO SPEECH\r\n //---------------------------------------\r\n\r\n /**\r\n * @constructor\r\n * @param {Instance} textareaInstance\r\n * @returns {SpeechToText}\r\n */\r\n function SpeechToText(textareaInstance) {\r\n this.textareaInstance = textareaInstance;\r\n\r\n this.speechConfig = null;\r\n this.audioConfig = null;\r\n this.isSpeechInitialized = false;\r\n this.isListening = false;\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n SpeechToText.prototype.init = function () {\r\n try {\r\n this.speechConfig = SpeechSDK.SpeechConfig.fromSubscription($.session.azureSTTApi, 'eastus');\r\n this.speechConfig.speechRecognitionLanguage = 'en-US';\r\n this.speechConfig.enableDictation();\r\n this.speechConfig.setServiceProperty(\r\n 'punctuation',\r\n 'explicit',\r\n SpeechSDK.ServicePropertyChannel.UriQueryParameter,\r\n );\r\n this.audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();\r\n this.isSpeechInitialized = true;\r\n } catch (error) {\r\n if (error.message === 'throwIfNullOrWhitespace:subscriptionKey') {\r\n const errorMessage =\r\n 'Error initalizing Speech to Text. No API Key found, or API Key has been entered incorrectly. Please contact system administrator to add Azure Speech API Key.';\r\n console.log(errorMessage);\r\n return this;\r\n }\r\n\r\n const errorMessage =\r\n 'Error initalizing Speech to Text. Please contact system administrator to make sure you have a valid Speech to Text connection.';\r\n console.log(errorMessage);\r\n }\r\n\r\n if (this.isSpeechInitialized) {\r\n this.initSpeechRecognizer();\r\n this.mutationObserver();\r\n }\r\n };\r\n\r\n /**\r\n * Builds the SpeechToText component HTML\r\n *\r\n * @function\r\n */\r\n SpeechToText.prototype.initSpeechRecognizer = function () {\r\n this.speechRecognizer = new SpeechSDK.SpeechRecognizer(this.speechConfig, this.audioConfig);\r\n\r\n this.speechRecognizer.recognized = (s, e) => {\r\n if (e.result.reason == SpeechSDK.ResultReason.RecognizedSpeech) {\r\n const currValue = this.textareaInstance.getValue();\r\n const newValue = `${currValue} ${e.result.text} `;\r\n this.textareaInstance.setValue(newValue);\r\n this.textareaInstance.input.dispatchEvent(new Event('change', { bubbles: true }));\r\n } else {\r\n console.log('NOMATCH: Speech could not be recognized.');\r\n }\r\n };\r\n this.speechRecognizer.canceled = (s, e) => {\r\n console.log(`CANCELED: Reason=${e.reason}`);\r\n\r\n if (e.reason == CancellationReason.Error) {\r\n console.log(`\"CANCELED: ErrorCode=${e.errorCode}`);\r\n console.log(`\"CANCELED: ErrorDetails=${e.errorDetails}`);\r\n console.log('CANCELED: Did you update the subscription info?');\r\n }\r\n };\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n SpeechToText.prototype.startSpeechRecognizer = function () {\r\n this.speechRecognizer.startContinuousRecognitionAsync();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n SpeechToText.prototype.stopSpeechRecognizer = function () {\r\n this.speechRecognizer.stopContinuousRecognitionAsync();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n SpeechToText.prototype.closeSpeechRecognizer = function () {\r\n this.speechRecognizer.close();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n SpeechToText.prototype.mutationObserver = function () {\r\n // Mutation Observer for leaving section to disconnect STT API Call\r\n const observer = new MutationObserver(function (mutationList, observer) {\r\n for (let mutation of mutationList) {\r\n if (mutation.type === 'attributes') {\r\n if (mutation.attributeName === 'data-active-section') {\r\n observer.disconnect();\r\n this.closeSpeechRecognizer();\r\n }\r\n }\r\n }\r\n });\r\n\r\n observer.observe(_DOM.ACTIONCENTER, { attributes: true });\r\n };\r\n\r\n //=======================================\r\n // FULLSCREEN MODE\r\n //---------------------------------------\r\n /**\r\n * Contructor function for creating fullscreen textarea component\r\n *\r\n * @constructor\r\n * @param {Textarea} textareaInstance\r\n * @returns {FullscreenTextarea}\r\n */\r\n function FullscreenTextarea(textareaInstance) {\r\n this.textareaInstance = textareaInstance;\r\n\r\n this.fullScreenDialog = null;\r\n this.fullScreenCloseBtn = null;\r\n this.textareaClone = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * Builds the FullscreenTextarea component HTML\r\n *\r\n * @function\r\n */\r\n FullscreenTextarea.prototype.build = function () {\r\n // get new Dialog\r\n this.fullScreenDialog = new Dialog({\r\n className: 'fullscreenTextarea',\r\n });\r\n this.fullScreenDialog.renderTo(_DOM.ACTIONCENTER);\r\n\r\n // clone textarea for dialog\r\n this.textareaClone = this.textareaInstance.rootElement.cloneNode(true);\r\n\r\n // build and append dialog close button to textareaClone\r\n this.fullScreenCloseBtn = _DOM.createElement('div', {\r\n class: ['fullscreenToggleBtn', 'close'],\r\n node: Icon.getIcon('exitFullScreen'),\r\n });\r\n this.textareaClone.appendChild(this.fullScreenCloseBtn);\r\n\r\n // remove showBtn from textareaClone\r\n const dupShowModalBtn = this.textareaClone.querySelector('.fullscreenToggleBtn.show');\r\n this.textareaClone.removeChild(dupShowModalBtn);\r\n\r\n // append textareaClone to dialog\r\n this.fullScreenDialog.dialog.appendChild(this.textareaClone);\r\n\r\n this.setupEvents();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n FullscreenTextarea.prototype.setupEvents = function () {\r\n this.textareaInstance.fullScreenShowBtn.addEventListener('click', e => {\r\n this.fullScreenDialog.show();\r\n });\r\n this.fullScreenCloseBtn.addEventListener('click', e => {\r\n this.fullScreenDialog.close();\r\n });\r\n this.textareaClone.addEventListener('input', e => {\r\n // update value of orig textarea\r\n this.textareaInstance.setValue(e.target.value);\r\n });\r\n this.textareaClone.addEventListener(\r\n 'keyup',\r\n _UTIL.debounce(e => {\r\n // update value of orig textarea\r\n this.textareaInstance.setValue(e.target.value);\r\n // trigger change event of orig textarea\r\n const event = new CustomEvent('keyup', {\r\n bubbles: true,\r\n cancelable: true,\r\n detail: true,\r\n });\r\n this.textareaInstance.input.dispatchEvent(event);\r\n }, 100),\r\n );\r\n this.fullScreenDialog.onClose(() => {\r\n this.textareaInstance.toggleDisabled(false);\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n FullscreenTextarea.prototype.updateCloneValue = function (value) {\r\n const inputClone = this.textareaClone.querySelector('textarea');\r\n inputClone.value = value;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n FullscreenTextarea.prototype.disableCloseButon = function (isDisbled) {\r\n this.fullScreenCloseBtn.style.pointerEvents = isDisbled ? 'none' : 'all';\r\n };\r\n\r\n FullscreenTextarea.prototype.toggleDisabled = function (isDisbled) {\r\n const input = this.textareaClone.querySelector('textarea');\r\n input.disabled = isDisbled;\r\n };\r\n FullscreenTextarea.prototype.toggleRequired = function (isRequired) {\r\n const input = this.textareaClone.querySelector('textarea');\r\n input.required = isRequired;\r\n };\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n showcount: false,\r\n note: null,\r\n fullscreen: false,\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Textarea component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {String} options.id Id for textarea, use to link it with label. Also used for name attribute.\r\n * @param {String} options.label Text for label\r\n * @param {Boolean} [options.required] Whether textarea is required for submission\r\n * @param {String} [options.note] Text for textarea note/message, displayed underneath textarea field\r\n * @param {Boolean} [options.showCount] Whether to show char count or not\r\n * @param {String} [options.minlength] Min char count\r\n * @param {String} [options.maxlength] Max char count\r\n * @param {Boolean} [options.hidden] Whether to show or hide the input\r\n * @param {Boolean} [options.fullscreen] Enables textarea to enter fullscreen mode\r\n * @param {Boolean} [options.speechToText] Enables speech to text\r\n * @returns {Textarea}\r\n *\r\n * @example\r\n * const note = new Textarea({\r\n * label: 'Note',\r\n * id: 'note'\r\n * });\r\n */\r\n function Textarea(options) {\r\n // Data Init\r\n this.options = _DOM.separateHTMLAttribrutes(_UTIL.mergeObjects(DEFAULT_OPTIONS, options));\r\n this.options.attributes.name = this.options.attributes.id;\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.inputWrap = null;\r\n this.input = null;\r\n this.fullscreen = null;\r\n this.fullScreenShowBtn = null;\r\n this.speechToTextBtn = null;\r\n\r\n this._build();\r\n this._setupEvents();\r\n }\r\n\r\n /**\r\n * Builds the Textarea component HTML\r\n *\r\n * @function\r\n */\r\n Textarea.prototype._build = function () {\r\n const classArray = ['inputGroup', 'textarea', `${this.options.attributes.id}`];\r\n this.rootElement = _DOM.createElement('div', {\r\n class: this.options.hidden ? [...classArray, 'inputGroup--hidden'] : classArray,\r\n });\r\n\r\n // INPUT & LABEL\r\n this.inputWrap = _DOM.createElement('div', { class: 'inputGroup__inputWrap' });\r\n this.input = _DOM.createElement('textarea', { ...this.options.attributes });\r\n const labelEle = _DOM.createElement('label', {\r\n text: this.options.label,\r\n for: this.options.attributes.id,\r\n });\r\n this.inputWrap.appendChild(this.input);\r\n\r\n this.rootElement.appendChild(labelEle);\r\n this.rootElement.appendChild(this.inputWrap);\r\n\r\n // INPUT NOTE\r\n if (this.options.note) {\r\n const inputNote = _DOM.createElement('div', { class: 'inputGroup__note', text: this.options.note });\r\n this.rootElement.appendChild(inputNote);\r\n }\r\n\r\n // CHAR COUNTER\r\n if (this.options.showcount) {\r\n const countMarkup = this.options.attributes.maxlength\r\n ? { html: `${0}/${this.options.attributes.maxlength}` }\r\n : { text: '0' };\r\n const inputCount = _DOM.createElement('div', { class: 'charCount', ...countMarkup });\r\n this.rootElement.appendChild(inputCount);\r\n }\r\n\r\n // FULLSCREEN MODE\r\n if (this.options.fullscreen) {\r\n this.input.classList.add('fullscreen');\r\n // add open fullscreen to orign textarea\r\n this.fullScreenShowBtn = _DOM.createElement('div', {\r\n class: ['fullscreenToggleBtn', 'show', 'iconButton'],\r\n node: Icon.getIcon('openFullScreen'),\r\n });\r\n this.rootElement.appendChild(this.fullScreenShowBtn);\r\n\r\n // build fullscreenmode\r\n this.fullscreen = new FullscreenTextarea(this);\r\n }\r\n\r\n // SPEECH TO TEXT\r\n if (this.options.speechToText) {\r\n this.input.classList.add('speechToText');\r\n this.speechToTextBtn = _DOM.createElement('div', {\r\n class: ['speechToTextBtn', 'off', 'iconButton'],\r\n node: Icon.getIcon('micOff'),\r\n });\r\n this.rootElement.appendChild(this.speechToTextBtn);\r\n\r\n // init speech to text\r\n this.speechToText = new SpeechToText(this);\r\n this.speechToText.init();\r\n }\r\n\r\n if (this.options.fullscreen || this.options.speechToText) {\r\n this.rootElement.classList.add('inputGroup--top-icons');\r\n }\r\n };\r\n\r\n /**\r\n * Sets up events for textarea\r\n *\r\n * @function\r\n */\r\n Textarea.prototype._setupEvents = function () {\r\n if (this.options.fullscreen) {\r\n this.input.addEventListener('change', e => {\r\n this.fullscreen.updateCloneValue(e.target.value);\r\n });\r\n }\r\n\r\n if (this.options.speechToText && this.speechToText.isSpeechInitialized) {\r\n this.speechToTextBtn.addEventListener('click', e => {\r\n this.speechToText.isListening = !this.speechToText.isListening;\r\n\r\n if (this.speechToText.isListening) {\r\n this.speechToText.startSpeechRecognizer(() => {\r\n // this.speechToTextBtn\r\n this.speechToTextBtn.innerHTML = '';\r\n // set icon to micOn\r\n this.speechToTextBtn.appendChild(Icon.getIcon('micOn'));\r\n // remove class 'off'\r\n this.speechToTextBtn.classList.remove('off');\r\n });\r\n } else {\r\n this.speechToText.stopSpeechRecognizer(() => {\r\n // this.speechToTextBtn\r\n this.speechToTextBtn.innerHTML = '';\r\n // set icon to micOff\r\n this.speechToTextBtn.appendChild(Icon.getIcon('micOff'));\r\n // add class 'off'\r\n this.speechToTextBtn.classList.add('off');\r\n });\r\n }\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Sets value of textarea\r\n *\r\n * @function\r\n * @param {String} value\r\n */\r\n Textarea.prototype.setValue = function (value) {\r\n this.input.value = value;\r\n if (this.options.fullscreen) {\r\n this.fullscreen.updateCloneValue(value);\r\n }\r\n };\r\n\r\n /**\r\n * Returns value of textarea\r\n *\r\n * @function\r\n * @param {String} value\r\n */\r\n Textarea.prototype.getValue = function () {\r\n return this.input.value;\r\n };\r\n\r\n /**\r\n * Clears textarea value, sets it to ''\r\n *\r\n * @function\r\n */\r\n Textarea.prototype.clear = function () {\r\n this.input.value = '';\r\n if (this.options.fullscreen) {\r\n this.fullscreen.updateCloneValue('');\r\n }\r\n };\r\n\r\n /**\r\n * Sets Custom Validity on textarea\r\n *\r\n * @function\r\n * @param {String} message Empty string will unset invalid status\r\n */\r\n Textarea.prototype.setValidtyError = function (message) {\r\n this.input.setCustomValidity(message);\r\n };\r\n\r\n /**\r\n * Sets focus to element\r\n *\r\n * @function\r\n */\r\n Textarea.prototype.setFocus = function () {\r\n this.input.focus();\r\n };\r\n\r\n /**\r\n * Toggles textarea required state, if true input is required\r\n *\r\n * @function\r\n * @param {Boolean} isRequired\r\n */\r\n Textarea.prototype.toggleRequired = function (isRequired) {\r\n this.input.required = isRequired;\r\n\r\n if (this.options.fullscreen) {\r\n this.fullscreen.toggleRequired(isRequired);\r\n }\r\n };\r\n\r\n /**\r\n * Toggles inputs disabled state, if true input is disabled\r\n *\r\n * @function\r\n * @param {Boolean} isDisbled\r\n */\r\n Textarea.prototype.toggleDisabled = function (isDisbled) {\r\n this.input.disabled = isDisbled;\r\n this.input.readOnly = isDisbled;\r\n\r\n if (this.options.fullscreen) {\r\n this.fullscreen.toggleDisabled(isDisbled);\r\n }\r\n };\r\n\r\n /**\r\n * Handles textarea change event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Textarea.prototype.onChange = function (cbFunc) {\r\n this.input.addEventListener('input', e => {\r\n if (cbFunc) cbFunc(e);\r\n\r\n if (this.options.fullscreen) {\r\n this.fullscreen.updateCloneValue(e.target.value);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Handles textarea keyup event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Textarea.prototype.onKeyup = function (cbFunc) {\r\n this.input.addEventListener('keyup', e => {\r\n if (cbFunc) cbFunc(e);\r\n\r\n if (this.options.fullscreen) {\r\n this.fullscreen.updateCloneValue(e.target.value);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Renders the built Textarea element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the textarea to\r\n * @returns {Textarea} Returns the current instances for chaining\r\n */\r\n Textarea.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Textarea;\r\n});\r\n","(function (global, factory) {\r\n global.Toast = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n autoClose: false,\r\n waitDuration: null,\r\n };\r\n\r\n /**\r\n * Constructor function for Toast Notifications.\r\n *\r\n * Toast allow you to display a message to user that will not enterfear with user workflow.\r\n * || Example usage would be to show that a report is being generated.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {Boolean} [options.autoClose] if true, toast will hide after waitDuration\r\n * @param {Number} [options.waitDuration] how long to show toast, ms\r\n * @returns {Toast}\r\n */\r\n function Toast(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.displayStatus = null;\r\n\r\n // DOM Ref\r\n this.dialog = null;\r\n this.closeToastButton = null;\r\n this.messageEle = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n Toast.prototype._build = function () {\r\n this.dialog = new Dialog({ className: 'toast', isModal: false });\r\n\r\n this.messageEle = _DOM.createElement('p', {\r\n class: 'toast__message',\r\n });\r\n\r\n this.closeToastButton = new Button({ icon: 'close', style: 'secondary', styleType: 'text' });\r\n\r\n this.dialog.dialog.appendChild(this.messageEle);\r\n this.closeToastButton.renderTo(this.dialog.dialog);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Toast.prototype.show = function (message) {\r\n if (this.displayStatus === 'open') return;\r\n\r\n if (message) this.messageEle.innerText = message;\r\n this.dialog.show();\r\n this.displayStatus = 'open';\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Toast.prototype.close = function () {\r\n this.dialog.close();\r\n this.displayStatus = 'closed';\r\n };\r\n\r\n /**\r\n * Renders the built Toast Notification element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Toast Notification to\r\n * @returns {Toast} Returns the current instances for chaining\r\n */\r\n Toast.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Toast;\r\n});\r\n","(function (global, factory) {\r\n global._DOM = factory();\r\n})(this, function () {\r\n const ACTIONCENTER = document.getElementById('actioncenter');\r\n\r\n /**\r\n * Create DOM element node and set given attributes, html/text, or nodes to append\r\n *\r\n * Examples:\r\n *\r\n * {css: 'classname'} - can be string value or an array of srings\r\n * {text: 'string of text' || 123456}\r\n * {html: '

    innerHTML

    '}\r\n * {node: elementNode} - can be a single node or an array of nodes\r\n * {[attribute]: nativeAttribute} - native HTML attributes\r\n *\r\n * @function\r\n * @param {String} tag - HTML element name\r\n * @param {Object} attributes - Attributes to be applied to element\r\n * @returns {HTMLElement} - Returns created HTML element\r\n */\r\n function createElement(tag, attributes) {\r\n const element = document.createElement(tag);\r\n const fragment = new DocumentFragment();\r\n\r\n if (attributes && typeof attributes === 'object') {\r\n let attributeName;\r\n for (attributeName in attributes) {\r\n if (!attributes[attributeName]) continue;\r\n\r\n switch (attributeName) {\r\n case 'html': {\r\n const tempDiv = document.createElement('div');\r\n tempDiv.innerHTML = attributes[attributeName];\r\n\r\n const htmlFragment = new DocumentFragment();\r\n\r\n while (tempDiv.firstChild) {\r\n htmlFragment.appendChild(tempDiv.firstChild);\r\n }\r\n\r\n fragment.append(htmlFragment);\r\n break;\r\n }\r\n case 'text': {\r\n const textNode = document.createTextNode(attributes[attributeName]);\r\n fragment.append(textNode);\r\n break;\r\n }\r\n case 'node': {\r\n if (Array.isArray(attributes[attributeName])) {\r\n attributes[attributeName].forEach(att => {\r\n fragment.append(att);\r\n });\r\n } else {\r\n fragment.append(attributes[attributeName]);\r\n }\r\n break;\r\n }\r\n case 'class': {\r\n if (Array.isArray(attributes[attributeName])) {\r\n attributes[attributeName].forEach(att => {\r\n element.classList.add(att);\r\n });\r\n } else {\r\n element.classList.add(attributes[attributeName]);\r\n }\r\n break;\r\n }\r\n default: {\r\n if (typeof attributes[attributeName] === 'boolean') {\r\n element.setAttribute(attributeName, '');\r\n } else {\r\n element.setAttribute(attributeName, attributes[attributeName]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n element.append(fragment);\r\n return element;\r\n }\r\n\r\n /**\r\n * Asynchronously fetches attachment details based on the given event object.\r\n *\r\n * @async\r\n * @param {Object} file File object\r\n * @returns {Promise} Returns a Promise that resolves to an object containing attachment details.\r\n * @returns {Object} .attachmentObj - An object containing the description and type of the attachment, as well as its ArrayBuffer.\r\n * @returns {string} .attachmentObj.description - The name of the attachment file.\r\n * @returns {string} .attachmentObj.type - The file extension of the attachment.\r\n * @returns {ArrayBuffer} .attachmentObj.arrayBuffer - The ArrayBuffer of the attachment file.\r\n * @throws {Error} Throws an error if unable to fetch attachment details.\r\n */\r\n async function getAttachmentDetails(file) {\r\n const attachmentObj = {};\r\n const attachmentFile = file;\r\n const attachmentName = attachmentFile.name;\r\n const attachmentType = attachmentFile.name.split('.').pop();\r\n\r\n attachmentObj.description = attachmentName;\r\n attachmentObj.type = attachmentType;\r\n\r\n const response = new Response(attachmentFile);\r\n const arrayBuffer = await response.arrayBuffer();\r\n\r\n // convert arrayBuffer to a base64 encoded string\r\n const bytes = new Uint8Array(arrayBuffer);\r\n const binary = Array.from(bytes).reduce((acc, byte) => {\r\n return acc + String.fromCharCode(byte);\r\n }, '');\r\n const abString = window.btoa(binary);\r\n\r\n attachmentObj.attachment = abString;\r\n\r\n return attachmentObj;\r\n }\r\n\r\n /**\r\n * Test if node is reference-free\r\n *\r\n * @function\r\n * @param {HTMLElement} node - HTML element\r\n * @returns {Boolean} - Returns whether node is reference free or not\r\n */\r\n function isReferenceFree(node) {\r\n return (document.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) === 0;\r\n }\r\n\r\n /**\r\n * Separates valid HTML attributes from options obj\r\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attributes\r\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attributes\r\n *\r\n * @function\r\n * @param {Object} options - Options object\r\n * @return {Object} - Separated options object\r\n */\r\n function separateHTMLAttribrutes(options) {\r\n const props = [\r\n 'accept',\r\n 'alt',\r\n 'autocomplete',\r\n 'checked',\r\n 'disabled',\r\n 'form',\r\n 'id',\r\n 'list',\r\n 'max',\r\n 'maxlength',\r\n 'min',\r\n 'minlength',\r\n 'multiple',\r\n 'name',\r\n 'pattern',\r\n 'placeholder',\r\n 'readonly',\r\n 'required',\r\n 'size',\r\n 'src',\r\n 'type',\r\n 'value',\r\n ];\r\n\r\n const [a, b] = Object.entries(options).reduce(\r\n ([matching, leftover], [key, value]) =>\r\n props.includes(key) || key.startsWith('data-')\r\n ? [Object.assign(matching, { [key]: value }), leftover]\r\n : [matching, Object.assign(leftover, { [key]: value })],\r\n [{}, {}],\r\n );\r\n\r\n return { ...b, attributes: { ...a } };\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n function setActiveModuleAttribute(appName) {\r\n ACTIONCENTER.setAttribute('data-active-module', appName);\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n function setActiveModuleSectionAttribute(sectionName) {\r\n ACTIONCENTER.setAttribute('data-active-section', sectionName);\r\n }\r\n\r\n /**\r\n * Checks if a given string contains HTML tags.\r\n *\r\n * @param {String} str - The string to be checked for HTML tags.\r\n * @returns {Boolean} - True if the string contains HTML tags, false otherwise.\r\n */\r\n function stringContainsHTML(str) {\r\n const regExp = /<[^>]*>/g;\r\n return regExp.test(str);\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n function scrollToTop() {\r\n window.scrollTo({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth',\r\n });\r\n }\r\n\r\n return {\r\n // DOM ref\r\n ACTIONCENTER,\r\n setActiveModuleAttribute,\r\n setActiveModuleSectionAttribute,\r\n // methods\r\n createElement,\r\n getAttachmentDetails,\r\n isReferenceFree,\r\n separateHTMLAttribrutes,\r\n stringContainsHTML,\r\n scrollToTop,\r\n };\r\n});","(function (global, factory) {\r\n global._UTIL = factory();\r\n})(this, function () {\r\n /**\r\n * Auto-increments the numeric suffix of an identifier string. If the provided string\r\n * does not end in a hyphen followed by a number, it appends '-1'. If it does end\r\n * with a number, the number is incremented by one.\r\n *\r\n * This function is useful for automatically generating incremented ID values in\r\n * scenarios where unique and sequential identifiers are needed.\r\n *\r\n * @param {string} str - The input string which may or may not end with a numeric suffix.\r\n * @returns {string} The input string\r\n *\r\n * @example\r\n * autoIncrementIdString('example');\r\n * //* returns 'example-1'\r\n *\r\n * @example\r\n * autoIncrementIdString('example-4');\r\n * //* returns 'example-5'\r\n */\r\n function autoIncrementId(str) {\r\n // Regular expression to match the pattern \"-number\" at the end of the string\r\n const regex = /-(\\d+)$/;\r\n\r\n // Check if the string matches the pattern\r\n const match = str.match(regex);\r\n\r\n if (match) {\r\n // If it matches, increment the number and return the string\r\n const number = parseInt(match[1], 10) + 1;\r\n return str.replace(regex, `-${number}`);\r\n } else {\r\n // If it doesn't match, append \"-1\" to the string\r\n return `${str}-1`;\r\n }\r\n }\r\n\r\n /**\r\n * Allows you to use async await with setTimeout\r\n *\r\n * @param {number} ms The number of milliseconds to delay.\r\n * @param {Function} callback The callback function to execute after the delay.\r\n * @returns {Promise} A promise that resolves after the specified delay.\r\n */\r\n function asyncSetTimeout(callback, ms) {\r\n let timeoutId;\r\n\r\n const promise = new Promise(resolve => {\r\n timeoutId = setTimeout(() => {\r\n callback();\r\n resolve();\r\n clearTimeout(timeoutId);\r\n }, ms);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n /**\r\n * Creates an instance of AsyncQueue for managing and sending updates asynchronously.\r\n *\r\n * @constructor\r\n * @param {string} apiEndpoint - The endpoint URL where updates will be sent.\r\n * @param {number} [maxQueueSize=10] - The maximum number of updates before automatically sending them.\r\n */\r\n function AsyncQueue(apiEndpoint, maxQueueSize = 10, onSendComplete = () => {}) {\r\n this.apiEndpoint = apiEndpoint;\r\n this.maxQueueSize = maxQueueSize;\r\n this.onSendComplete = onSendComplete;\r\n\r\n this.queue = {};\r\n this.queueLength = 0;\r\n this.failedUpdates = [];\r\n this.isSending = false;\r\n }\r\n\r\n /**\r\n * Adds an update to the queue. Automatically sends updates if the queue reaches maxQueueSize.\r\n *\r\n * @param {string} inputId - The identifier for the input being updated.\r\n * @param {any} newValue - The new value for the input.\r\n */\r\n AsyncQueue.prototype.addUpdate = function (updateData) {\r\n this.queue[updateData.id] = updateData.data;\r\n this.queueLength = Object.keys(this.queue).length;\r\n\r\n if (this.queueLength >= this.maxQueueSize) {\r\n this.sendUpdates();\r\n }\r\n };\r\n\r\n /**\r\n * Sends updates from the queue to the server endpoint. Can be forced to send all updates regardless of queue size.\r\n *\r\n * @param {boolean} [force=false] - Whether to force sending of updates regardless of the current queue size.\r\n */\r\n AsyncQueue.prototype.sendUpdates = async function (forceUpdate = false) {\r\n if (this.queueLength === 0 || (this.isSending && !forceUpdate)) {\r\n this.onSendComplete([]);\r\n return;\r\n }\r\n\r\n this.isSending = true;\r\n\r\n const updatesToSend = Object.values(this.queue);\r\n this.queue = {};\r\n this.queueLength = 0;\r\n\r\n const sendPromises = updatesToSend.map(async update => {\r\n try {\r\n const response = await _UTIL.fetchData(this.apiEndpoint, update);\r\n return { success: true, data: response, update };\r\n } catch (error) {\r\n console.error('Error sending update:', update, error);\r\n this.failedUpdates.push(update);\r\n return { success: false, error: error.message, update };\r\n }\r\n });\r\n\r\n const results = await Promise.all(sendPromises);\r\n this.isSending = false;\r\n this.onSendComplete(results);\r\n };\r\n\r\n /**\r\n * Sets the callback function to be executed when sending data is complete.\r\n *\r\n * @param {Function} callback - The callback function to be called when sending is complete.\r\n * @returns {void}\r\n */\r\n AsyncQueue.prototype.setSendCompleteCallback = function (callback) {\r\n this.onSendComplete = callback;\r\n };\r\n\r\n /**\r\n * Immediately forces sending of all updates in the queue, regardless of queue size.\r\n */\r\n AsyncQueue.prototype.forceSendUpdates = async function () {\r\n await this.sendUpdates(true);\r\n };\r\n\r\n /**\r\n * Converts a camelCase string to a title case string with spaces.\r\n *\r\n * @param {string} camelCaseStr - The camelCase string to be converted.\r\n * @returns {string} The converted string in title case with spaces.\r\n *\r\n * @example\r\n * // returns 'Hello There World'\r\n * convertCamelCaseToTitle('helloThereWorld');\r\n */\r\n function convertCamelCaseToTitle(camelCaseStr) {\r\n // Add a space before each uppercase letter and trim the result\r\n let spacedStr = camelCaseStr.replace(/([A-Z])/g, ' $1').trim();\r\n\r\n // Capitalize the first letter and concatenate with the rest of the string\r\n return spacedStr.charAt(0).toUpperCase() + spacedStr.slice(1);\r\n }\r\n\r\n function connectionWatch() {\r\n if ($.session.watchingConnection) return;\r\n\r\n const statusPopup = new Dialog({ className: 'connectionWatchStatusPopup' });\r\n const statusMessage = _DOM.createElement('p');\r\n statusPopup.dialog.appendChild(statusMessage);\r\n statusPopup.renderTo(document.body);\r\n\r\n window.addEventListener('offline', event => {\r\n statusMessage.innerText = 'The network connection has been lost.';\r\n statusPopup.show();\r\n });\r\n\r\n window.addEventListener('online', event => {\r\n statusMessage.innerText = 'You are now connected to the network.';\r\n setTimeout(() => {\r\n statusPopup.close();\r\n }, 3000)\r\n });\r\n\r\n console.clear();\r\n console.log('connection watch enabled');\r\n $.session.watchingConnection = true;\r\n }\r\n\r\n /**\r\n * Debounces a function, ensuring that it's not called until after the specified\r\n * amount of time has passed since the last time it was invoked.\r\n *\r\n * @function\r\n * @param {Function} func - The function to debounce.\r\n * @param {Number} wait - The number of milliseconds to delay the function\r\n * @returns {Function} - Returns the debounced version of the provided function\r\n */\r\n function debounce(func, wait) {\r\n let timeout;\r\n\r\n return function executedFunction(...args) {\r\n const context = this;\r\n\r\n const later = function () {\r\n timeout = null;\r\n func.apply(context, args);\r\n };\r\n\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n };\r\n }\r\n\r\n /**\r\n * Ajax call using native Fetch API\r\n *\r\n * @function\r\n * @param {String} service\r\n * @param {Object} [retrieveData]\r\n * @returns {Object}\r\n */\r\n async function fetchData(service, retrieveData) {\r\n const URL_BASE = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}`;\r\n const URL = `${URL_BASE}/${service}/`;\r\n\r\n try {\r\n let response = await fetch(URL, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({ token: $.session.Token, ...retrieveData }),\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error('Issue with network, response was not OK');\r\n }\r\n\r\n let data = await response.json();\r\n\r\n return data;\r\n } catch (error) {\r\n console.log(`There was a problem with ${service}`, error.message);\r\n throw error;\r\n }\r\n }\r\n\r\n function getDeviceType() {\r\n const ua = navigator.userAgent;\r\n\r\n // Patterns to detect mobile and tablet devices\r\n const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(ua);\r\n const isTablet = /iPad|Android/i.test(ua) && !/Mobile/i.test(ua);\r\n\r\n if (isMobile) {\r\n return isTablet ? 'TABLET' : 'MOBILE';\r\n } else {\r\n return 'DESKTOP';\r\n }\r\n }\r\n\r\n /**\r\n * Provides methods to interact with the browser's localStorage.\r\n * It allows you to get and set values while handling JSON serialization and deserialization automatically.\r\n *\r\n * @namespace localStorageHandler\r\n */\r\n const localStorageHandler = {\r\n /**\r\n * Retrieves a value from local storage\r\n *\r\n * @function\r\n * @memberof localStorageHandler\r\n * @param {String} key\r\n * @returns {Any|Null}\r\n */\r\n get(key) {\r\n try {\r\n // storedValue = {storage_key1:storage_value,storage_key2:value}\r\n const storedValue = localStorage.getItem(`anywstate_${$.session.UserId}`);\r\n if (storedValue) {\r\n try {\r\n const state = JSON.parse(storedValue);\r\n return state ? state[key] : null;\r\n } catch (error) {\r\n return storedValue;\r\n }\r\n }\r\n\r\n return null;\r\n } catch (error) {\r\n console.log('An error occurred when getting the value from local storage', error);\r\n }\r\n },\r\n /**\r\n * Sets a value to local storage\r\n *\r\n * @function\r\n * @memberof localStorageHandler\r\n * @param {String} key\r\n * @param {Any} value\r\n */\r\n set(key, value) {\r\n try {\r\n if (typeof value === 'object') {\r\n value = JSON.parse(value);\r\n }\r\n\r\n // get current ls value\r\n const storedValue = localStorage.getItem(`anywstate_${$.session.UserId}`);\r\n if (!storedValue) {\r\n storedValue = {};\r\n }\r\n // set new key/value pair\r\n storedValue[key] = value;\r\n\r\n // update with new value\r\n const updatedValue = JSON.stringify(storedValue);\r\n localStorage.setItem(`anywstate_${$.session.UserId}`, updatedValue);\r\n } catch (error) {\r\n console.log('An error occurred when setting the value to local storage', error);\r\n }\r\n },\r\n };\r\n\r\n /**\r\n * Merge two objects together, baseObject and mergeObject share same prop names they will be overridden\r\n * inside the baseObject.\r\n *\r\n * @function\r\n * @param {Object} baseObject\r\n * @param {Object} mergeObject\r\n * @return {Object} - Merged options object\r\n */\r\n function mergeObjects(baseObject, mergeObject) {\r\n return Object.assign({}, baseObject, mergeObject);\r\n }\r\n\r\n /**\r\n * Pads a number with a leading zero if it is less than 10.\r\n *\r\n * @param {number} number - The number to pad.\r\n * @return {string} - The padded number as a string.\r\n */\r\n function padNumberWithZero(number) {\r\n return number < 10 ? '0' + number : number.toString();\r\n }\r\n\r\n /**\r\n * Removes and replaces certain characters that can't be saved into the DB.\r\n * @param {string} note Text that needs to be converted to a format that will save in the DB.\r\n * @returns {string} Returns the note that can now be saved into the DB.\r\n */\r\n function removeUnsavableNoteText(note) {\r\n if (note == null) return null;\r\n if (note === '') return '';\r\n\r\n // Remove backslashes\r\n if (note.indexOf('\\\\') != -1) {\r\n note = note.replace(/\\\\/g, '');\r\n }\r\n\r\n // Replace double quotes with the same double quotes (seems unnecessary but kept for intent)\r\n if (note.indexOf('\"') != -1) {\r\n note = note.replace(/\\\"/g, '\"');\r\n }\r\n\r\n // Escape single quotes\r\n if (note.indexOf(\"'\") != -1) {\r\n note = note.replace(/'/g, \"''\");\r\n }\r\n\r\n // Remove special tab characters and actual tab characters\r\n note = note.replace(/ |\\t/g, '');\r\n\r\n return note;\r\n }\r\n\r\n /**\r\n * Sorts an Array of Objects by given property, currently property must be a string\r\n *\r\n * @function\r\n * @param {String} sortProp\r\n * @return {Function} - sort comparator function\r\n */\r\n function sortByProperty(sortProp) {\r\n return function (a, b) {\r\n const aValue = a[sortProp] || '';\r\n const bValue = b[sortProp] || '';\r\n\r\n // srings only\r\n return aValue.localeCompare(bValue);\r\n };\r\n }\r\n\r\n /**\r\n * Separate props and methods from obj\r\n *\r\n * @function\r\n * @param {Object} dirtyObj - Object to split\r\n * @param {Array} props - Object props to isolate\r\n * @return {Object} - Separated options object\r\n */\r\n function splitObjectByPropNames(dirtyObj, props) {\r\n const [a, b] = Object.entries(dirtyObj).reduce(\r\n ([matching, leftover], [key, value]) =>\r\n props.includes(key)\r\n ? [Object.assign(matching, { [key]: value }), leftover]\r\n : [matching, Object.assign(leftover, { [key]: value })],\r\n [{}, {}],\r\n );\r\n\r\n return [{ ...a }, { ...b }];\r\n }\r\n\r\n /**\r\n * Truncates a filename to a specified maximum length by removing characters from the middle.\r\n * Appends an ellipsis ('...') to indicate truncation.\r\n *\r\n * @function\r\n * @param {string} filename - The original filename to truncate.\r\n * @param {number} [maxLength=20] - The maximum length for the truncated filename. Default is 20.\r\n *\r\n * @returns {string} The truncated filename with an ellipsis in the middle.\r\n *\r\n * @example\r\n * const original = 'reallyLongfilename.png';\r\n * const truncated = truncateFilename(original, 15);\r\n */\r\n function truncateFilename(filename, maxLength = 20) {\r\n const fileExtension = filename.split('.').pop();\r\n\r\n // 3 characters are reserved for \"...\"\r\n const maxMainLength = maxLength - fileExtension.length - 3;\r\n\r\n if (filename.length > maxLength) {\r\n const firstPartLength = Math.floor(maxMainLength / 2);\r\n const secondPartLength = maxMainLength - firstPartLength;\r\n\r\n // Extract the first and last portions of the main part of the filename\r\n const firstPart = filename.substring(0, firstPartLength);\r\n const secondPart = filename.substring(\r\n filename.length - fileExtension.length - secondPartLength,\r\n filename.length - fileExtension.length,\r\n );\r\n\r\n return `${firstPart}...${secondPart}${fileExtension}`;\r\n }\r\n\r\n return filename;\r\n }\r\n\r\n /**\r\n * Watchs for the value of given variable to change\r\n *\r\n * @namespace watchVariable\r\n */\r\n function watchVariable(initialValue, callback) {\r\n let value = initialValue;\r\n\r\n return {\r\n getValue() {\r\n return value;\r\n },\r\n setValue(newValue) {\r\n if (value !== newValue) {\r\n callback(value, newValue);\r\n }\r\n value = newValue;\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Validates the file type based on the provided regular expression pattern.\r\n *\r\n * @param {Event} event - The Event object, commonly from an input element of type 'file'.\r\n * @param {RegExp} forbiddenTypesPattern - The regular expression pattern to match forbidden file types.\r\n * @returns {boolean} Returns true if the file type is valid, false otherwise.\r\n */\r\n function validateFileType(event, forbiddenTypesPattern) {\r\n const fileType = event.target.files[0]?.type;\r\n\r\n if (!fileType) {\r\n console.warn('No file selected.');\r\n return false;\r\n }\r\n\r\n if (forbiddenTypesPattern.test(fileType)) {\r\n alert('This application currently does not accept the selected file type.');\r\n event.target.value = '';\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n return {\r\n autoIncrementId,\r\n asyncSetTimeout,\r\n AsyncQueue,\r\n connectionWatch,\r\n convertCamelCaseToTitle,\r\n debounce,\r\n getDeviceType,\r\n fetchData,\r\n localStorageHandler,\r\n mergeObjects,\r\n padNumberWithZero,\r\n removeUnsavableNoteText,\r\n sortByProperty,\r\n splitObjectByPropNames,\r\n truncateFilename,\r\n watchVariable,\r\n validateFileType,\r\n };\r\n});\r\n","const cnFilters = (function () {\r\n //Filter HTML Elements\r\n let billersDropdown, consumerDropdown, billingCodeDropdown, reviewStatusDropdown, correctedDropdown;\r\n let serviceDateStartInput, serviceDateEndInput;\r\n let enteredDateStartInput, enteredDateEndInput;\r\n let applyBtn;\r\n let additionalFilterContainer;\r\n //More Options\r\n let locationFilterCbox,\r\n serviceFiltercCbox,\r\n needFiltercCbox,\r\n contactFiltercCbox,\r\n confidentialFiltercCbox,\r\n showOverlapscCbox;\r\n let billedFiltercCbox, attachmentsFiltercCbox, noteTextFiltercCbox, selectAllFilterCbox;\r\n let locationDropdown, serviceDropdown, needDropdown, contactDropdown, confidentialDropdown, outcomeServiceMonitoringDropdown;\r\n let billedDropdown, attachmentsDropdown, noteTextDropdown, noteTextInput;\r\n let activeAdditionalFilters;\r\n //Filter Values\r\n let filterValues;\r\n let btnWrap;\r\n let billerBtnWrap;\r\n let consumerBtnWrap;\r\n let billingServiceBtnWrap;\r\n let reviewStatusBtnWrap;\r\n let correctedBtnWrap;\r\n let outcomeServiceMonitoringBtnWrap;\r\n let serviceDatesBtnWrap;\r\n let createdDatesBtnWrap;\r\n let locationBtnWrap;\r\n let serviceBtnWrap;\r\n let needBtnWrap;\r\n let contactBtnWrap;\r\n let confidentialBtnWrap; \r\n let billedBtnWrap;\r\n let attachmentsBtnWrap;\r\n let showOverlapsBtnWrap;\r\n let noteTextBtnWrap;\r\n //Dropdown Data\r\n let consumerDropdownData;\r\n let serviceBillingCodes; //Billing Code === Service Code... They are the same thing\r\n let needDropdownData, serviceDropdownData, locationDropdownData, contactDropdownData;\r\n let checkOverlaps = 'N';\r\n\r\n function createFilterElements() {\r\n billersDropdown = dropdown.build({\r\n dropdownId: 'billerDropdown',\r\n label: 'Biller',\r\n style: 'secondary',\r\n });\r\n consumerDropdown = dropdown.build({\r\n dropdownId: 'consumerDropdown',\r\n label: 'Consumer',\r\n style: 'secondary',\r\n });\r\n billingCodeDropdown = dropdown.build({\r\n dropdownId: 'billingCodeDropdown',\r\n label: $.session.applicationName === 'Gatekeeper' ? 'Billing Code' : 'Service Code',\r\n style: 'secondary',\r\n });\r\n reviewStatusDropdown = dropdown.build({\r\n dropdownId: 'reviewStatusDropdown',\r\n label: 'Review Status',\r\n style: 'secondary',\r\n });\r\n correctedDropdown = dropdown.build({\r\n dropdownId: 'correctedDropdown',\r\n label: 'Corrected',\r\n style: 'secondary',\r\n });\r\n outcomeServiceMonitoringDropdown = dropdown.build({\r\n dropdownId: 'outcomeServiceMonitoringDropdown',\r\n label: 'Outcome/Service Monitoring',\r\n style: 'secondary',\r\n });\r\n serviceDateStartInput = input.build({\r\n type: 'date',\r\n label: 'Service Date Start',\r\n style: 'secondary',\r\n value: filterValues.serviceDateStart,\r\n });\r\n serviceDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Service Date End',\r\n style: 'secondary',\r\n value: filterValues.serviceDateEnd,\r\n });\r\n enteredDateStartInput = input.build({\r\n type: 'date',\r\n label: 'Created Date Start',\r\n style: 'secondary',\r\n //value: filterValues.enteredDateStart === '1900-01-01' ? '': filterValues.enteredDateStart\r\n value: filterValues.enteredDateStart,\r\n });\r\n enteredDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Created Date End',\r\n style: 'secondary',\r\n value: filterValues.enteredDateEnd,\r\n });\r\n //EXTRA FILTER OPTIONS\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n serviceDropdown = dropdown.build({\r\n dropdownId: 'serviceDropdown',\r\n label: 'Service',\r\n style: 'secondary',\r\n });\r\n needDropdown = dropdown.build({\r\n dropdownId: 'needDropdown',\r\n label: 'Need',\r\n style: 'secondary',\r\n });\r\n contactDropdown = dropdown.build({\r\n dropdownId: 'contactDropdown',\r\n label: 'Contact',\r\n style: 'secondary',\r\n });\r\n confidentialDropdown = dropdown.build({\r\n dropdownId: 'confidentialDropdown',\r\n label: 'Confidential',\r\n style: 'secondary',\r\n }); \r\n billedDropdown = dropdown.build({\r\n dropdownId: 'billedDropdown',\r\n label: 'Billed',\r\n style: 'secondary',\r\n });\r\n attachmentsDropdown = dropdown.build({\r\n dropdownId: 'attachmentsDropdown',\r\n label: 'Attachments',\r\n style: 'secondary',\r\n });\r\n noteTextDropdown = dropdown.build({\r\n dropdownId: 'noteTextDropdown',\r\n label: 'Note Text',\r\n style: 'secondary',\r\n });\r\n noteTextInput = input.build({\r\n label: 'Note Text',\r\n style: 'secondary',\r\n value: filterValues.noteText == '%' ? '' : filterValues.noteText, \r\n });\r\n }\r\n\r\n function createMoreFilterOptionElements() {\r\n selectAllFilterCbox = input.buildCheckbox({\r\n text: 'Select All',\r\n });\r\n locationFilterCbox = input.buildCheckbox({\r\n text: 'Location',\r\n isChecked: activeAdditionalFilters.location,\r\n });\r\n serviceFiltercCbox = input.buildCheckbox({\r\n text: 'Service',\r\n isChecked: activeAdditionalFilters.service,\r\n });\r\n needFiltercCbox = input.buildCheckbox({\r\n text: 'Need',\r\n isChecked: activeAdditionalFilters.need,\r\n });\r\n contactFiltercCbox = input.buildCheckbox({\r\n text: 'Contact',\r\n isChecked: activeAdditionalFilters.contact,\r\n });\r\n confidentialFiltercCbox = input.buildCheckbox({\r\n text: 'Confidential',\r\n isChecked: activeAdditionalFilters.confidential,\r\n });\r\n billedFiltercCbox = input.buildCheckbox({\r\n text: 'Billed',\r\n isChecked: activeAdditionalFilters.billed,\r\n });\r\n attachmentsFiltercCbox = input.buildCheckbox({\r\n text: 'Attachments',\r\n isChecked: activeAdditionalFilters.attachments,\r\n });\r\n showOverlapscCbox = input.buildCheckbox({\r\n className: 'checkAlign',\r\n text: 'Check For Overlaps',\r\n isChecked: checkOverlaps === 'Y' ? true : false,\r\n callback: () => setCheckForOverLaps(event.target)\r\n });\r\n showOverlapscCbox.id = 'showOverlapCheckbox';\r\n noteTextFiltercCbox = input.buildCheckbox({\r\n text: 'Note Text',\r\n isChecked: activeAdditionalFilters.noteText,\r\n });\r\n\r\n // Quick inline styles\r\n selectAllFilterCbox.style.fontSize = '18px';\r\n selectAllFilterCbox.style.marginBottom = '10px';\r\n }\r\n\r\n function buildFilterPopup(IsShow) {\r\n const popup = POPUP.build({\r\n classNames: 'caseNoteReviewFilterPopup',\r\n });\r\n\r\n applyBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n setNewFilterValues();\r\n updateCurrentFilterDisplay();\r\n POPUP.hide(popup);\r\n notesOverview.setFilterValFromPopup(filterValues);\r\n },\r\n });\r\n const moreFilterOptBtn = button.build({\r\n text: 'more filter options',\r\n style: 'secondary',\r\n type: 'text',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n moreFilterOptionPopup();\r\n },\r\n });\r\n\r\n const filterBtnWrap = document.createElement('div');\r\n additionalFilterContainer = document.createElement('div');\r\n addAdditionalFilters(IsShow);\r\n filterBtnWrap.classList.add('btnWrap');\r\n\r\n const serviceDateWrap = filterBtnWrap.cloneNode();\r\n serviceDateWrap.classList.add('filterDateWrap');\r\n const createDateWrap = filterBtnWrap.cloneNode();\r\n createDateWrap.classList.add('filterDateWrap');\r\n\r\n filterBtnWrap.appendChild(applyBtn);\r\n\r\n serviceDateWrap.appendChild(serviceDateStartInput);\r\n serviceDateWrap.appendChild(serviceDateEndInput);\r\n\r\n createDateWrap.appendChild(enteredDateStartInput);\r\n createDateWrap.appendChild(enteredDateEndInput);\r\n if (IsShow == 'ALL' || IsShow == 'showOverlapsBtn')\r\n popup.appendChild(showOverlapscCbox);\r\n if (IsShow == 'ALL' || IsShow == 'billerBtn')\r\n popup.appendChild(billersDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'consumerBtn')\r\n popup.appendChild(consumerDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'billingServiceCodeBtn')\r\n popup.appendChild(billingCodeDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'reviewStatusBtn')\r\n popup.appendChild(reviewStatusDropdown);\r\n if ($.session.applicationName === 'Gatekeeper' && (IsShow == 'ALL' || IsShow == 'correctedBtn'))\r\n popup.appendChild(correctedDropdown);\r\n if ($.session.applicationName === 'Gatekeeper' && (IsShow == 'ALL' || IsShow == 'outcomeServiceMonitoringBtn'))\r\n popup.appendChild(outcomeServiceMonitoringDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'serviceDatesBtn')\r\n popup.appendChild(serviceDateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'createdDatesBtn')\r\n popup.appendChild(createDateWrap);\r\n\r\n popup.appendChild(additionalFilterContainer);\r\n\r\n if (IsShow == 'ALL')\r\n popup.appendChild(moreFilterOptBtn);\r\n\r\n popup.appendChild(filterBtnWrap);\r\n\r\n POPUP.show(popup);\r\n addEventListeners();\r\n }\r\n\r\n function moreFilterOptionPopup() {\r\n const moreFilterPopup = POPUP.build({\r\n hideX: true,\r\n classNames: 'caseNoteReviewFilterPopup',\r\n });\r\n\r\n const applyBtn = button.build({\r\n text: 'apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n checkAdditionalFilters();\r\n POPUP.hide(moreFilterPopup);\r\n buildFilterPopup('ALL');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const cBoxContainer = document.createElement('div');\r\n cBoxContainer.classList.add('cboxContainer');\r\n\r\n cBoxContainer.appendChild(selectAllFilterCbox);\r\n cBoxContainer.appendChild(locationFilterCbox);\r\n cBoxContainer.appendChild(serviceFiltercCbox);\r\n cBoxContainer.appendChild(needFiltercCbox);\r\n cBoxContainer.appendChild(contactFiltercCbox);\r\n cBoxContainer.appendChild(confidentialFiltercCbox);\r\n cBoxContainer.appendChild(billedFiltercCbox);\r\n if ($.session.applicationName === 'Gatekeeper')\r\n cBoxContainer.appendChild(attachmentsFiltercCbox);\r\n cBoxContainer.appendChild(noteTextFiltercCbox);\r\n\r\n moreFilterPopup.appendChild(cBoxContainer);\r\n\r\n btnWrap.appendChild(applyBtn);\r\n //Quick inline style:\r\n btnWrap.style.marginTop = '10px';\r\n\r\n moreFilterPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(moreFilterPopup);\r\n }\r\n\r\n function checkAdditionalFilters() {\r\n activeAdditionalFilters.location = locationFilterCbox.firstChild.checked;\r\n activeAdditionalFilters.service = serviceFiltercCbox.firstChild.checked;\r\n activeAdditionalFilters.need = needFiltercCbox.firstChild.checked;\r\n activeAdditionalFilters.contact = contactFiltercCbox.firstChild.checked;\r\n activeAdditionalFilters.confidential = confidentialFiltercCbox.firstChild.checked;\r\n activeAdditionalFilters.billed = billedFiltercCbox.firstChild.checked;\r\n if ($.session.applicationName === 'Gatekeeper')\r\n activeAdditionalFilters.attachments = attachmentsFiltercCbox.firstChild.checked;\r\n activeAdditionalFilters.noteText = noteTextFiltercCbox.firstChild.checked;\r\n\r\n if (!activeAdditionalFilters.location) closeFilter('locationBtn');\r\n if (!activeAdditionalFilters.service) closeFilter('serviceBtn');\r\n if (!activeAdditionalFilters.need) closeFilter('needBtn');\r\n if (!activeAdditionalFilters.contact) closeFilter('contactBtn');\r\n if (!activeAdditionalFilters.confidential) closeFilter('confidentialBtn');\r\n if (!activeAdditionalFilters.billed) closeFilter('billedBtn');\r\n if ($.session.applicationName === 'Gatekeeper' && !activeAdditionalFilters.attachments) closeFilter('billedBtn')\r\n if (!activeAdditionalFilters.noteText) closeFilter('noteTextBtn');\r\n }\r\n\r\n function addAdditionalFilters(IsShow) {\r\n if (activeAdditionalFilters.location && (IsShow == 'ALL' || IsShow == 'locationBtn')) additionalFilterContainer.appendChild(locationDropdown);\r\n if (activeAdditionalFilters.service && (IsShow == 'ALL' || IsShow == 'serviceBtn')) additionalFilterContainer.appendChild(serviceDropdown);\r\n if (activeAdditionalFilters.need && (IsShow == 'ALL' || IsShow == 'needBtn')) additionalFilterContainer.appendChild(needDropdown);\r\n if (activeAdditionalFilters.contact && (IsShow == 'ALL' || IsShow == 'contactBtn')) additionalFilterContainer.appendChild(contactDropdown);\r\n if (activeAdditionalFilters.confidential && (IsShow == 'ALL' || IsShow == 'confidentialBtn'))\r\n additionalFilterContainer.appendChild(confidentialDropdown);\r\n if (activeAdditionalFilters.billed && (IsShow == 'ALL' || IsShow == 'billedBtn')) additionalFilterContainer.appendChild(billedDropdown);\r\n if ($.session.applicationName === 'Gatekeeper' && activeAdditionalFilters.attachments && (IsShow == 'ALL' || IsShow == 'attachmentsBtn'))\r\n additionalFilterContainer.appendChild(attachmentsDropdown);\r\n if (activeAdditionalFilters.noteText && (IsShow == 'ALL' || IsShow == 'noteTextBtn')) {\r\n additionalFilterContainer.appendChild(noteTextDropdown);\r\n additionalFilterContainer.appendChild(noteTextInput);\r\n if (filterValues.noteText === '%' || filterValues.noteText === '') {\r\n noteTextInput.style.display = 'none';\r\n } else {\r\n noteTextInput.querySelector('input').value = filterValues.noteText;\r\n }\r\n }\r\n }\r\n\r\n function addEventListeners() {\r\n billingCodeDropdown.addEventListener('change', event => {\r\n // Reset filter values based on service/bill code to all:\r\n filterValues.location = '%';\r\n filterValues.service = '%';\r\n filterValues.need = '%';\r\n filterValues.contact = '%';\r\n //Repopulate dropdowns\r\n getServiceDepententData(event.target.value);\r\n });\r\n noteTextDropdown.addEventListener('change', event => {\r\n if (event.target.value === 'contains') {\r\n noteTextInput.style.removeProperty('display');\r\n } else {\r\n noteTextInput.style.display = 'none';\r\n noteTextInput.firstChild.value = '';\r\n }\r\n });\r\n selectAllFilterCbox.addEventListener('change', event => {\r\n if (event.target.checked) {\r\n locationFilterCbox.firstChild.checked = true;\r\n serviceFiltercCbox.firstChild.checked = true;\r\n needFiltercCbox.firstChild.checked = true;\r\n contactFiltercCbox.firstChild.checked = true;\r\n confidentialFiltercCbox.firstChild.checked = true;\r\n billedFiltercCbox.firstChild.checked = true;\r\n if ($.session.applicationName === 'Gatekeeper')\r\n attachmentsFiltercCbox.firstChild.checked = true;\r\n noteTextFiltercCbox.firstChild.checked = true;\r\n } else {\r\n locationFilterCbox.firstChild.checked = false;\r\n serviceFiltercCbox.firstChild.checked = false;\r\n needFiltercCbox.firstChild.checked = false;\r\n contactFiltercCbox.firstChild.checked = false;\r\n confidentialFiltercCbox.firstChild.checked = false;\r\n billedFiltercCbox.firstChild.checked = false;\r\n if ($.session.applicationName === 'Gatekeeper')\r\n attachmentsFiltercCbox.firstChild.checked = false;\r\n noteTextFiltercCbox.firstChild.checked = false;\r\n }\r\n });\r\n }\r\n\r\n function setNewFilterValues() {\r\n filterValues.billerId = billersDropdown.firstChild.value;\r\n filterValues.consumer = consumerDropdown.firstChild.value;\r\n filterValues.billingCode = billingCodeDropdown.firstChild.value;\r\n filterValues.reviewStatus = reviewStatusDropdown.firstChild.value;\r\n filterValues.corrected = correctedDropdown.firstChild.value;\r\n filterValues.outcomeServiceMonitoring = outcomeServiceMonitoringDropdown.firstChild.value;\r\n filterValues.serviceDateStart = serviceDateStartInput.firstChild.value;\r\n filterValues.serviceDateEnd = serviceDateEndInput.firstChild.value;\r\n filterValues.enteredDateStart =\r\n enteredDateStartInput.firstChild.value === ''\r\n ? '1900-01-01'\r\n : enteredDateStartInput.firstChild.value;\r\n filterValues.enteredDateEnd = enteredDateEndInput.firstChild.value;\r\n filterValues.location = locationDropdown.firstChild.value;\r\n filterValues.service = serviceDropdown.firstChild.value;\r\n filterValues.need = needDropdown.firstChild.value;\r\n filterValues.contact = contactDropdown.firstChild.value;\r\n filterValues.confidential = confidentialDropdown.firstChild.value;\r\n filterValues.billed = billedDropdown.firstChild.value;\r\n if ($.session.applicationName === 'Gatekeeper')\r\n filterValues.attachments = attachmentsDropdown.firstChild.value;\r\n filterValues.overlaps = checkOverlaps;\r\n switch (noteTextDropdown.firstChild.value) {\r\n case 'contains':\r\n filterValues.noteText = noteTextInput.firstChild.value;\r\n break;\r\n case 'blank':\r\n filterValues.noteText = '';\r\n break;\r\n case '%':\r\n filterValues.noteText = '%';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function populateStaticFilters() {\r\n const reviewStatusDropdownData = [\r\n { text: 'All', value: '%' },\r\n { text: 'Not Reviewed', value: 'N' },\r\n { text: 'Passed', value: 'P' },\r\n { text: 'Rejected', value: 'R' },\r\n ];\r\n const condfidentialDropdownData = (billedDropdownData = attachmentDropdownData = correctedDropdownData = outcomeServiceMonitoringDropdownData = [\r\n { text: 'All', value: '%' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n ]);\r\n const noteTextDropdownData = [\r\n { text: 'All', value: '%' },\r\n { text: 'Blank', value: 'blank' },\r\n { text: 'Contains', value: 'contains' },\r\n ];\r\n // Note text work:\r\n let noteTextDefault;\r\n if (filterValues.noteText === '%') {\r\n noteTextDefault = filterValues.noteText;\r\n } else if (filterValues.noteText === '') {\r\n noteTextDefault = 'blank';\r\n } else {\r\n noteTextDefault = 'contains';\r\n }\r\n dropdown.populate(reviewStatusDropdown, reviewStatusDropdownData, filterValues.reviewStatus);\r\n dropdown.populate(correctedDropdown, correctedDropdownData, filterValues.corrected);\r\n dropdown.populate(confidentialDropdown, condfidentialDropdownData, filterValues.confidential);\r\n dropdown.populate(billedDropdown, billedDropdownData, filterValues.billed);\r\n dropdown.populate(outcomeServiceMonitoringDropdown, outcomeServiceMonitoringDropdownData, filterValues.outcomeServiceMonitoring);\r\n if ($.session.applicationName === 'Gatekeeper')\r\n dropdown.populate(attachmentsDropdown, attachmentDropdownData, filterValues.attachments);\r\n dropdown.populate(noteTextDropdown, noteTextDropdownData, noteTextDefault);\r\n }\r\n\r\n function populateConsumerFilter() {\r\n populateDropdownData = consumerDropdownData.map(el => {\r\n return {\r\n text: `${el.LN}, ${el.FN}`,\r\n value: el.id,\r\n };\r\n });\r\n populateDropdownData.unshift({ text: 'All', value: '%' });\r\n dropdown.populate(consumerDropdown, populateDropdownData, filterValues.consumer);\r\n }\r\n\r\n function populateBillersDropdown(billers) {\r\n var data = billers.map((b, index) => {\r\n if (index === 1) {\r\n caseManagerId = b.billerId;\r\n }\r\n return {\r\n value: b.billerId,\r\n text: b.billerName,\r\n };\r\n });\r\n data.unshift({ value: '%', text: 'All' });\r\n //If biller ID has not already been set:\r\n if (!filterValues.billerId) filterValues.billerId = $.session.PeopleId;\r\n dropdown.populate(billersDropdown, data, filterValues.billerId);\r\n }\r\n\r\n function populateDropdownsBasedOnServiceCode(selectedServiceBillCode) {\r\n serviceBillingCodes.unshift({ value: '%', text: 'All' });\r\n needDropdownData.unshift({ value: '%', text: 'All' });\r\n serviceDropdownData.unshift({ value: '%', text: 'All' });\r\n contactDropdownData.unshift({ value: '%', text: 'All' });\r\n locationDropdownData.unshift({ value: '%', text: 'All' });\r\n dropdown.populate(billingCodeDropdown, serviceBillingCodes, selectedServiceBillCode);\r\n dropdown.populate(locationDropdown, locationDropdownData, filterValues.location);\r\n dropdown.populate(serviceDropdown, serviceDropdownData, filterValues.service);\r\n dropdown.populate(needDropdown, needDropdownData, filterValues.need);\r\n dropdown.populate(contactDropdown, contactDropdownData, filterValues.contact);\r\n }\r\n\r\n async function getServiceDepententData(selectedServiceBillCode) {\r\n const rawDropdownData = (\r\n await caseNotesAjax.getCNPopulateFilterDropdowns(selectedServiceBillCode)\r\n ).getCNPopulateFilterDropdownsResult;\r\n sortRawDropdownData(rawDropdownData);\r\n populateDropdownsBasedOnServiceCode(selectedServiceBillCode);\r\n }\r\n\r\n function getConsumerDropdownData() {\r\n return new Promise((resolve, reject) => {\r\n caseNotesAjax.getConsumersForCNFilter(res => {\r\n consumerDropdownData = res;\r\n populateConsumerFilter();\r\n resolve('success');\r\n });\r\n });\r\n }\r\n\r\n function setCheckForOverLaps(input) {\r\n var isChecked = input.checked;\r\n if (isChecked) {\r\n checkOverlaps = 'Y';\r\n } else {\r\n checkOverlaps = 'N';\r\n }\r\n\r\n }\r\n\r\n function getBillersDropdownData() {\r\n return new Promise((resolve, reject) => {\r\n caseNotesAjax.getBillersListForDropDown(res => {\r\n populateBillersDropdown(res);\r\n resolve('success');\r\n });\r\n });\r\n }\r\n\r\n function sortRawDropdownData(rawDropdownData) {\r\n serviceBillingCodes = [];\r\n needDropdownData = [];\r\n serviceDropdownData = [];\r\n locationDropdownData = [];\r\n contactDropdownData = [];\r\n //Alphabetize Everything\r\n rawDropdownData.sort(function (a, b) {\r\n if (a.caption.toUpperCase() < b.caption.toUpperCase()) {\r\n return -1;\r\n }\r\n if (a.caption.toUpperCase() > b.caption.toUpperCase()) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n //Sort to proper dropdown array\r\n rawDropdownData.forEach(el => {\r\n switch (el.dropdown) {\r\n case 'ServiceCode':\r\n serviceBillingCodes.push({ text: el.caption, value: el.note_code });\r\n break;\r\n case 'Need':\r\n needDropdownData.push({ text: el.caption, value: el.note_code });\r\n break;\r\n case 'Service':\r\n serviceDropdownData.push({ text: el.caption, value: el.note_code });\r\n break;\r\n case 'Contact':\r\n contactDropdownData.push({ text: el.caption, value: el.note_code });\r\n break;\r\n case 'Location':\r\n locationDropdownData.push({ text: el.caption, value: el.note_code });\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n // filterValues = {\r\n // billerId: '',\r\n // consumer: '',\r\n // consumerName: '',\r\n // billingCode: '',\r\n // reviewStatus: '',\r\n // serviceDateStart: serviceDateStart,\r\n // serviceDateEnd: serviceDateEnd,\r\n // enteredDateStart: datesEnteredStart,\r\n // enteredDateEnd: datesEnteredEnd,\r\n // location: '',\r\n // service: '',\r\n // need: '',\r\n // contact: '',\r\n // confidential: '',\r\n // billed: '',\r\n // attachments: '',\r\n // noteText: '',\r\n // noteTextValue: '',\r\n // filterDisplayHTML: ''\r\n // }\r\n\r\n function updateCurrentFilterDisplay() {\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n const billerName =\r\n billersDropdown != undefined && billersDropdown.firstChild.options[billersDropdown.firstChild.selectedIndex] != undefined ? billersDropdown.firstChild.options[billersDropdown.firstChild.selectedIndex].innerText : 'All';\r\n if (filterValues != undefined) filterValues.billerName = billerName;\r\n const consumerName =\r\n consumerDropdown != undefined && consumerDropdown.firstChild.options[consumerDropdown.firstChild.selectedIndex] != undefined ? consumerDropdown.firstChild.options[consumerDropdown.firstChild.selectedIndex].innerText : 'All';\r\n if (filterValues != undefined) filterValues.consumerName = consumerName;\r\n const billCodeText =\r\n billingCodeDropdown != undefined && billingCodeDropdown.firstChild.options[billingCodeDropdown.firstChild.selectedIndex] != undefined ? billingCodeDropdown.firstChild.options[billingCodeDropdown.firstChild.selectedIndex]\r\n .innerText : 'All';\r\n if (filterValues != undefined) filterValues.billCodeText = billCodeText;\r\n const reviewStatusText =\r\n reviewStatusDropdown != undefined && reviewStatusDropdown.firstChild.options[reviewStatusDropdown.firstChild.selectedIndex] != undefined ? reviewStatusDropdown.firstChild.options[reviewStatusDropdown.firstChild.selectedIndex]\r\n .innerText : 'All';\r\n const correctedText =\r\n correctedDropdown != undefined && correctedDropdown.firstChild.options[correctedDropdown.firstChild.selectedIndex] != undefined ? correctedDropdown.firstChild.options[correctedDropdown.firstChild.selectedIndex]\r\n .innerText : 'All';\r\n const outcomeServiceMonitoringText =\r\n outcomeServiceMonitoringDropdown != undefined && outcomeServiceMonitoringDropdown.firstChild.options[outcomeServiceMonitoringDropdown.firstChild.selectedIndex] != undefined ? outcomeServiceMonitoringDropdown.firstChild.options[outcomeServiceMonitoringDropdown.firstChild.selectedIndex]\r\n .innerText : 'All';\r\n const locationText =\r\n locationDropdown != undefined && locationDropdown.firstChild.options[locationDropdown.firstChild.selectedIndex] != undefined ? locationDropdown.firstChild.options[locationDropdown.firstChild.selectedIndex].innerText : 'All';\r\n if (filterValues != undefined) filterValues.locationText = locationText;\r\n const serviceText =\r\n serviceDropdown != undefined && serviceDropdown.firstChild.options[serviceDropdown.firstChild.selectedIndex] != undefined ? serviceDropdown.firstChild.options[serviceDropdown.firstChild.selectedIndex].innerText : 'All';\r\n if (filterValues != undefined) filterValues.serviceText = serviceText;\r\n const needText =\r\n needDropdown != undefined && needDropdown.firstChild.options[needDropdown.firstChild.selectedIndex] != undefined ? needDropdown.firstChild.options[needDropdown.firstChild.selectedIndex].innerText : 'All';\r\n const contactText =\r\n contactDropdown != undefined && contactDropdown.firstChild.options[contactDropdown.firstChild.selectedIndex] != undefined ? contactDropdown.firstChild.options[contactDropdown.firstChild.selectedIndex].innerText : 'All';\r\n const confidentialText =\r\n confidentialDropdown != undefined && confidentialDropdown.firstChild.options[confidentialDropdown.firstChild.selectedIndex] != undefined ? confidentialDropdown.firstChild.options[confidentialDropdown.firstChild.selectedIndex]\r\n .innerText : 'All';\r\n const billedText =\r\n billedDropdown != undefined && billedDropdown.firstChild.options[billedDropdown.firstChild.selectedIndex] != undefined ? billedDropdown.firstChild.options[billedDropdown.firstChild.selectedIndex].innerText : 'All';\r\n let attachmentsText;\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n attachmentsText =\r\n attachmentsDropdown != undefined && attachmentsDropdown.firstChild.options[attachmentsDropdown.firstChild.selectedIndex] != undefined ? attachmentsDropdown.firstChild.options[attachmentsDropdown.firstChild.selectedIndex]\r\n .innerText : 'All';\r\n attachmentsText = attachmentsText ? attachmentsText : 'All';// \r\n }\r\n let showOverlapsText = 'No';\r\n if (checkOverlaps === 'N') {\r\n showOverlapsText = 'No';\r\n } else {\r\n showOverlapsText = 'Yes';\r\n }\r\n\r\n const noteTextText =\r\n noteTextDropdown != undefined && noteTextDropdown.firstChild.options[noteTextDropdown.firstChild.selectedIndex] != undefined ? noteTextDropdown.firstChild.options[noteTextDropdown.firstChild.selectedIndex].innerText ===\r\n 'Contains'\r\n ? `Contains: ${noteTextInput.firstChild.value}`\r\n : noteTextDropdown.firstChild.options[noteTextDropdown.firstChild.selectedIndex].innerText : 'All';\r\n\r\n const dispalyServiceDateStart = serviceDateStartInput != undefined && filterValues.serviceDateStart != '' ? UTIL.formatDateFromIso(filterValues.serviceDateStart) : filterValues.serviceDateStart;\r\n const dispalyServiceDateEnd = serviceDateEndInput != undefined && filterValues.serviceDateEnd != '' ? UTIL.formatDateFromIso(filterValues.serviceDateEnd) : filterValues.serviceDateEnd;\r\n const displayDateEnteredStart = enteredDateStartInput != undefined && filterValues.enteredDateStart != '' ? UTIL.formatDateFromIso(filterValues.enteredDateStart) : filterValues.enteredDateStart;\r\n const dispalyDatesEnteredEnd = enteredDateEndInput != undefined && filterValues.enteredDateEnd != '' ? UTIL.formatDateFromIso(filterValues.enteredDateEnd) : filterValues.enteredDateEnd;\r\n\r\n ShowHideFilter(billerName, consumerName, billCodeText, reviewStatusText, correctedText, dispalyServiceDateStart, dispalyServiceDateEnd, displayDateEnteredStart, dispalyDatesEnteredEnd,\r\n locationText, serviceText, needText, contactText, confidentialText, billedText, attachmentsText, showOverlapsText, noteTextText, outcomeServiceMonitoringText);\r\n\r\n }\r\n\r\n function ShowHideFilter(billerName, consumerName, billCodeText, reviewStatusText, correctedText, dispalyServiceDateStart, dispalyServiceDateEnd, displayDateEnteredStart, dispalyDatesEnteredEnd,\r\n locationText, serviceText, needText, contactText, confidentialText, billedText, attachmentsText, showOverlapsText, noteTextText, outcomeServiceMonitoringText) {\r\n\r\n if (!filterValues) {\r\n filterValues = {\r\n billerId: $.session.PeopleId,\r\n consumer: '%',\r\n consumerName: 'All',\r\n billingCode: '%',\r\n reviewStatus: '%',\r\n serviceDateStart: dispalyServiceDateStart,\r\n serviceDateEnd: dispalyServiceDateEnd,\r\n enteredDateStart: displayDateEnteredStart,\r\n enteredDateEnd: dispalyDatesEnteredEnd,\r\n location: '%',\r\n service: '%',\r\n need: '%',\r\n contact: '%',\r\n confidential: '%',\r\n corrected: '%',\r\n billed: '%',\r\n attachments: '%',\r\n overlaps: 'N',\r\n noteText: '%',\r\n noteTextValue: '',\r\n outcomeServiceMonitoring: '%',\r\n };\r\n }\r\n\r\n if (billerName === '%' || billerName === 'All') {\r\n btnWrap.appendChild(billerBtnWrap);\r\n btnWrap.removeChild(billerBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(billerBtnWrap);\r\n if (document.getElementById('billerBtn') != null)\r\n document.getElementById('billerBtn').innerHTML = 'Biller: ' + billerName;\r\n }\r\n\r\n if (consumerName === '%' || consumerName === 'All') {\r\n btnWrap.appendChild(consumerBtnWrap);\r\n btnWrap.removeChild(consumerBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(consumerBtnWrap);\r\n if (document.getElementById('consumerBtn') != null)\r\n document.getElementById('consumerBtn').innerHTML = 'Consumer: ' + consumerName;\r\n }\r\n\r\n if (billCodeText === '%' || billCodeText === 'All') {\r\n btnWrap.appendChild(billingServiceBtnWrap);\r\n btnWrap.removeChild(billingServiceBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(billingServiceBtnWrap);\r\n if (document.getElementById('billingServiceCodeBtn') != null)\r\n document.getElementById('billingServiceCodeBtn').innerHTML = $.session.applicationName === 'Gatekeeper' ? 'Billing Code: ' + billCodeText : 'Service Code: ' + billCodeText;\r\n }\r\n\r\n if (reviewStatusText === '%' || reviewStatusText === 'All') {\r\n btnWrap.appendChild(reviewStatusBtnWrap);\r\n btnWrap.removeChild(reviewStatusBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(reviewStatusBtnWrap);\r\n if (document.getElementById('reviewStatusBtn') != null)\r\n document.getElementById('reviewStatusBtn').innerHTML = 'Review Status: ' + reviewStatusText;\r\n }\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n if (correctedText === '%' || correctedText === 'All') {\r\n btnWrap.appendChild(correctedBtnWrap);\r\n btnWrap.removeChild(correctedBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(correctedBtnWrap);\r\n if (document.getElementById('correctedBtn') != null)\r\n document.getElementById('correctedBtn').innerHTML = 'Corrected: ' + correctedText;\r\n }\r\n\r\n if (outcomeServiceMonitoringText === '%' || outcomeServiceMonitoringText === 'All') {\r\n btnWrap.appendChild(outcomeServiceMonitoringBtnWrap);\r\n btnWrap.removeChild(outcomeServiceMonitoringBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(outcomeServiceMonitoringBtnWrap);\r\n if (document.getElementById('outcomeServiceMonitoringBtn') != null)\r\n document.getElementById('outcomeServiceMonitoringBtn').innerHTML = 'Outcome/Service Monitoring: ' + outcomeServiceMonitoringText;\r\n }\r\n }\r\n\r\n if (dispalyServiceDateStart === '' && dispalyServiceDateEnd === '') {\r\n btnWrap.appendChild(serviceDatesBtnWrap);\r\n btnWrap.removeChild(serviceDatesBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(serviceDatesBtnWrap);\r\n if (document.getElementById('serviceDatesBtn') != null)\r\n document.getElementById('serviceDatesBtn').innerHTML = 'Service Dates: ' + dispalyServiceDateStart + ' - ' + dispalyServiceDateEnd;\r\n }\r\n\r\n if (displayDateEnteredStart === '' && dispalyDatesEnteredEnd === '') {\r\n btnWrap.appendChild(createdDatesBtnWrap);\r\n btnWrap.removeChild(createdDatesBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(createdDatesBtnWrap);\r\n if (document.getElementById('createdDatesBtn') != null)\r\n document.getElementById('createdDatesBtn').innerHTML = 'Created Dates: ' + displayDateEnteredStart + ' - ' + dispalyDatesEnteredEnd;\r\n }\r\n\r\n if (locationText === '%' || locationText === 'All') {\r\n btnWrap.appendChild(locationBtnWrap);\r\n btnWrap.removeChild(locationBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(locationBtnWrap);\r\n if (document.getElementById('locationBtn') != null)\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + locationText;\r\n }\r\n\r\n if (serviceText === '%' || serviceText === 'All') {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n btnWrap.removeChild(serviceBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n if (document.getElementById('serviceBtn') != null)\r\n document.getElementById('serviceBtn').innerHTML = 'Service: ' + serviceText;\r\n }\r\n\r\n if (needText === '%' || needText === 'All') {\r\n btnWrap.appendChild(needBtnWrap);\r\n btnWrap.removeChild(needBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(needBtnWrap);\r\n if (document.getElementById('needBtn') != null)\r\n document.getElementById('needBtn').innerHTML = 'Need: ' + needText;\r\n }\r\n\r\n if (contactText === '%' || contactText === 'All') {\r\n btnWrap.appendChild(contactBtnWrap);\r\n btnWrap.removeChild(contactBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(contactBtnWrap);\r\n if (document.getElementById('contactBtn') != null)\r\n document.getElementById('contactBtn').innerHTML = 'Contact: ' + contactText;\r\n }\r\n\r\n if (confidentialText === '%' || confidentialText === 'All') {\r\n btnWrap.appendChild(confidentialBtnWrap);\r\n btnWrap.removeChild(confidentialBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(confidentialBtnWrap);\r\n if (document.getElementById('confidentialBtn') != null)\r\n document.getElementById('confidentialBtn').innerHTML = 'Confidential: ' + confidentialText;\r\n }\r\n\r\n if (billedText === '%' || billedText === 'All') {\r\n btnWrap.appendChild(billedBtnWrap);\r\n btnWrap.removeChild(billedBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(billedBtnWrap);\r\n if (document.getElementById('billedBtn') != null)\r\n document.getElementById('billedBtn').innerHTML = 'Billed: ' + billedText;\r\n }\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n if (attachmentsText === '%' || attachmentsText === 'All') {\r\n btnWrap.appendChild(attachmentsBtnWrap);\r\n btnWrap.removeChild(attachmentsBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(attachmentsBtnWrap);\r\n if (document.getElementById('attachmentsBtn') != null)\r\n document.getElementById('attachmentsBtn').innerHTML = 'Attachments: ' + attachmentsText;\r\n }\r\n }\r\n\r\n btnWrap.appendChild(showOverlapsBtnWrap);\r\n if (document.getElementById('showOverlapsBtn') != null)\r\n document.getElementById('showOverlapsBtn').innerHTML = 'Show Overlaps: ' + showOverlapsText;\r\n\r\n if (noteTextText === '%' || noteTextText === 'All') {\r\n btnWrap.appendChild(noteTextBtnWrap);\r\n btnWrap.removeChild(noteTextBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(noteTextBtnWrap);\r\n if (document.getElementById('noteTextBtn') != null)\r\n document.getElementById('noteTextBtn').innerHTML = 'Note Text: ' + noteTextText;\r\n }\r\n return btnWrap;\r\n }\r\n\r\n function filterButtonSet(billerName, displayConsumerName, billCodeText, reviewStatusText, correctedText, dispalyServiceDateStart, dispalyServiceDateEnd, displayDateEnteredStart, dispalyDatesEnteredEnd,\r\n locationText, serviceText, needText, contactText, confidentialText, billedText, attachmentsText, showOverlapsText, noteTextText, filterValues, outcomeServiceMonitoringText) {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { cnFilters.init(filterValues, 'ALL') },\r\n });\r\n\r\n billerBtn = button.build({\r\n id: 'billerBtn',\r\n text: 'Biller: ' + billerName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'billerBtn') },\r\n });\r\n billerCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('billerBtn') },\r\n });\r\n\r\n consumerBtn = button.build({\r\n id: 'consumerBtn',\r\n text: 'Consumer: ' + displayConsumerName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'consumerBtn') },\r\n });\r\n consumerCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('consumerBtn') },\r\n });\r\n\r\n billingServiceCodeBtn = button.build({\r\n id: 'billingServiceCodeBtn',\r\n text: $.session.applicationName === 'Gatekeeper' ? 'Billing Code: ' : 'Service Code: ' + billCodeText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'billingServiceCodeBtn') },\r\n });\r\n billingServiceCodeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('billingServiceCodeBtn') },\r\n });\r\n\r\n reviewStatusBtn = button.build({\r\n id: 'reviewStatusBtn',\r\n text: 'Review Status: ' + reviewStatusText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'reviewStatusBtn') },\r\n });\r\n reviewStatusCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('reviewStatusBtn') },\r\n });\r\n\r\n correctedBtn = button.build({\r\n id: 'correctedBtn',\r\n text: 'Corrected: ' + correctedText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'correctedBtn') },\r\n });\r\n correctedCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('correctedBtn') },\r\n });\r\n\r\n outcomeServiceMonitoringBtn = button.build({\r\n id: 'outcomeServiceMonitoringBtn',\r\n text: 'Outcome/Service Monitoring: ' + outcomeServiceMonitoringText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'outcomeServiceMonitoringBtn') },\r\n });\r\n outcomeServiceMonitoringCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('outcomeServiceMonitoringBtn') },\r\n });\r\n\r\n serviceDatesBtn = button.build({\r\n id: 'serviceDatesBtn',\r\n text: 'Service Dates: ' + dispalyServiceDateStart + ' - ' + dispalyServiceDateEnd,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'serviceDatesBtn') },\r\n });\r\n\r\n createdDatesBtn = button.build({\r\n id: 'createdDatesBtn',\r\n text: 'Created Dates: ' + displayDateEnteredStart + ' - ' + dispalyDatesEnteredEnd,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'createdDatesBtn') },\r\n });\r\n\r\n locationBtn = button.build({\r\n id: 'locationBtn',\r\n text: 'Location: ' + locationText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'locationBtn') },\r\n });\r\n locationCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('locationBtn') },\r\n });\r\n\r\n serviceBtn = button.build({\r\n id: 'serviceBtn',\r\n text: 'Service: ' + serviceText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'serviceBtn') },\r\n });\r\n serviceCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('serviceBtn') },\r\n });\r\n\r\n needBtn = button.build({\r\n id: 'needBtn',\r\n text: 'Need: ' + needText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'needBtn') },\r\n });\r\n needCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('needBtn') },\r\n });\r\n\r\n contactBtn = button.build({\r\n id: 'contactBtn',\r\n text: 'Contact: ' + contactText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'contactBtn') },\r\n });\r\n contactCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('contactBtn') },\r\n });\r\n\r\n confidentialBtn = button.build({\r\n id: 'confidentialBtn',\r\n text: 'Confidential: ' + confidentialText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'confidentialBtn') },\r\n });\r\n confidentialCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('confidentialBtn') },\r\n });\r\n\r\n attachmentsBtn = button.build({\r\n id: 'attachmentsBtn',\r\n text: 'Attachments: ' + attachmentsText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'attachmentsBtn') },\r\n });\r\n attachmentsCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('attachmentsBtn') },\r\n });\r\n\r\n billedBtn = button.build({\r\n id: 'billedBtn',\r\n text: 'Billed: ' + billedText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'billedBtn') },\r\n });\r\n billedCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('billedBtn') },\r\n });\r\n\r\n\r\n showOverlapsBtn = button.build({\r\n id: 'showOverlapsBtn',\r\n text: 'Show Overlaps: ' + showOverlapsText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'showOverlapsBtn') },\r\n });\r\n\r\n noteTextBtn = button.build({\r\n id: 'noteTextBtn',\r\n text: 'Note Text: ' + noteTextText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'noteTextBtn') },\r\n });\r\n noteTextCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('noteTextBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n billerBtnWrap = document.createElement('div');\r\n billerBtnWrap.classList.add('filterSelectionBtnWrap');\r\n billerBtnWrap.appendChild(billerBtn);\r\n billerBtnWrap.appendChild(billerCloseBtn);\r\n btnWrap.appendChild(billerBtnWrap);\r\n\r\n consumerBtnWrap = document.createElement('div');\r\n consumerBtnWrap.classList.add('filterSelectionBtnWrap');\r\n consumerBtnWrap.appendChild(consumerBtn);\r\n consumerBtnWrap.appendChild(consumerCloseBtn);\r\n btnWrap.appendChild(consumerBtnWrap);\r\n\r\n billingServiceBtnWrap = document.createElement('div');\r\n billingServiceBtnWrap.classList.add('filterSelectionBtnWrap');\r\n billingServiceBtnWrap.appendChild(billingServiceCodeBtn);\r\n billingServiceBtnWrap.appendChild(billingServiceCodeCloseBtn);\r\n btnWrap.appendChild(billingServiceBtnWrap);\r\n\r\n reviewStatusBtnWrap = document.createElement('div');\r\n reviewStatusBtnWrap.classList.add('filterSelectionBtnWrap');\r\n reviewStatusBtnWrap.appendChild(reviewStatusBtn);\r\n reviewStatusBtnWrap.appendChild(reviewStatusCloseBtn);\r\n btnWrap.appendChild(reviewStatusBtnWrap);\r\n\r\n\r\n correctedBtnWrap = document.createElement('div');\r\n correctedBtnWrap.classList.add('filterSelectionBtnWrap');\r\n correctedBtnWrap.appendChild(correctedBtn);\r\n correctedBtnWrap.appendChild(correctedCloseBtn);\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n btnWrap.appendChild(correctedBtnWrap);\r\n }\r\n\r\n outcomeServiceMonitoringBtnWrap = document.createElement('div');\r\n outcomeServiceMonitoringBtnWrap.classList.add('filterSelectionBtnWrap');\r\n outcomeServiceMonitoringBtnWrap.appendChild(outcomeServiceMonitoringBtn);\r\n outcomeServiceMonitoringBtnWrap.appendChild(outcomeServiceMonitoringCloseBtn);\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n btnWrap.appendChild(outcomeServiceMonitoringBtnWrap);\r\n }\r\n\r\n serviceDatesBtnWrap = document.createElement('div');\r\n serviceDatesBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceDatesBtnWrap.appendChild(serviceDatesBtn);\r\n btnWrap.appendChild(serviceDatesBtnWrap);\r\n\r\n createdDatesBtnWrap = document.createElement('div');\r\n createdDatesBtnWrap.classList.add('filterSelectionBtnWrap');\r\n createdDatesBtnWrap.appendChild(createdDatesBtn);\r\n btnWrap.appendChild(createdDatesBtnWrap);\r\n\r\n locationBtnWrap = document.createElement('div');\r\n locationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationBtnWrap.appendChild(locationBtn);\r\n locationBtnWrap.appendChild(locationCloseBtn);\r\n btnWrap.appendChild(locationBtnWrap);\r\n\r\n\r\n serviceBtnWrap = document.createElement('div');\r\n serviceBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceBtnWrap.appendChild(serviceBtn);\r\n serviceBtnWrap.appendChild(serviceCloseBtn);\r\n btnWrap.appendChild(serviceBtnWrap);\r\n\r\n needBtnWrap = document.createElement('div');\r\n needBtnWrap.classList.add('filterSelectionBtnWrap');\r\n needBtnWrap.appendChild(needBtn);\r\n needBtnWrap.appendChild(needCloseBtn);\r\n btnWrap.appendChild(needBtnWrap);\r\n\r\n contactBtnWrap = document.createElement('div');\r\n contactBtnWrap.classList.add('filterSelectionBtnWrap');\r\n contactBtnWrap.appendChild(contactBtn);\r\n contactBtnWrap.appendChild(contactCloseBtn);\r\n btnWrap.appendChild(contactBtnWrap);\r\n\r\n confidentialBtnWrap = document.createElement('div');\r\n confidentialBtnWrap.classList.add('filterSelectionBtnWrap');\r\n confidentialBtnWrap.appendChild(confidentialBtn);\r\n confidentialBtnWrap.appendChild(confidentialCloseBtn);\r\n btnWrap.appendChild(confidentialBtnWrap);\r\n\r\n billedBtnWrap = document.createElement('div');\r\n billedBtnWrap.classList.add('filterSelectionBtnWrap');\r\n billedBtnWrap.appendChild(billedBtn);\r\n billedBtnWrap.appendChild(billedCloseBtn);\r\n btnWrap.appendChild(billedBtnWrap);\r\n\r\n\r\n attachmentsBtnWrap = document.createElement('div');\r\n attachmentsBtnWrap.classList.add('filterSelectionBtnWrap');\r\n attachmentsBtnWrap.appendChild(attachmentsBtn);\r\n attachmentsBtnWrap.appendChild(attachmentsCloseBtn);\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n btnWrap.appendChild(attachmentsBtnWrap);\r\n }\r\n\r\n showOverlapsBtnWrap = document.createElement('div');\r\n showOverlapsBtnWrap.classList.add('filterSelectionBtnWrap');\r\n showOverlapsBtnWrap.appendChild(showOverlapsBtn);\r\n btnWrap.appendChild(showOverlapsBtnWrap);\r\n\r\n noteTextBtnWrap = document.createElement('div');\r\n noteTextBtnWrap.classList.add('filterSelectionBtnWrap');\r\n noteTextBtnWrap.appendChild(noteTextBtn);\r\n noteTextBtnWrap.appendChild(noteTextCloseBtn);\r\n btnWrap.appendChild(noteTextBtnWrap);\r\n\r\n return btnWrap;\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n\r\n if (closeFilter == 'billerBtn') {\r\n filterValues.billerId = '%';\r\n if (billersDropdown != undefined) {\r\n billersDropdown.firstChild.value = 'All';\r\n if (billersDropdown.firstChild.options[billersDropdown.firstChild.selectedIndex] != undefined)\r\n billersDropdown.firstChild.options[billersDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n\r\n }\r\n if (closeFilter == 'consumerBtn') {\r\n filterValues.consumer = '%';\r\n consumerDropdown.firstChild.value = 'All';\r\n if (consumerDropdown.firstChild.options[consumerDropdown.firstChild.selectedIndex] != undefined)\r\n consumerDropdown.firstChild.options[consumerDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n if (closeFilter == 'billingServiceCodeBtn') {\r\n filterValues.billingCode = '%';\r\n billingCodeDropdown.firstChild.value = 'All';\r\n if (billingCodeDropdown.firstChild.options[billingCodeDropdown.firstChild.selectedIndex] != undefined)\r\n billingCodeDropdown.firstChild.options[billingCodeDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n if (closeFilter == 'reviewStatusBtn') {\r\n filterValues.reviewStatus = '%';\r\n reviewStatusDropdown.firstChild.value = 'All';\r\n if (reviewStatusDropdown.firstChild.options[reviewStatusDropdown.firstChild.selectedIndex] != undefined)\r\n reviewStatusDropdown.firstChild.options[reviewStatusDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n\r\n if (closeFilter == 'correctedBtn') {\r\n filterValues.corrected = '%';\r\n correctedDropdown.firstChild.value = 'All';\r\n if (correctedDropdown.firstChild.options[correctedDropdown.firstChild.selectedIndex] != undefined)\r\n correctedDropdown.firstChild.options[correctedDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n\r\n if (closeFilter == 'outcomeServiceMonitoringBtn') {\r\n filterValues.outcomeServiceMonitoring = '%';\r\n outcomeServiceMonitoringDropdown.firstChild.value = 'All';\r\n if (outcomeServiceMonitoringDropdown.firstChild.options[outcomeServiceMonitoringDropdown.firstChild.selectedIndex] != undefined)\r\n outcomeServiceMonitoringDropdown.firstChild.options[outcomeServiceMonitoringDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n\r\n if (closeFilter == 'locationBtn') {\r\n filterValues.location = '%';\r\n locationDropdown.firstChild.value = 'All';\r\n if (locationDropdown.firstChild.options[locationDropdown.firstChild.selectedIndex] != undefined)\r\n locationDropdown.firstChild.options[locationDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n if (closeFilter == 'serviceBtn') {\r\n filterValues.service = '%';\r\n serviceDropdown.firstChild.value = 'All';\r\n if (serviceDropdown.firstChild.options[serviceDropdown.firstChild.selectedIndex] != undefined)\r\n serviceDropdown.firstChild.options[serviceDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n if (closeFilter == 'needBtn') {\r\n filterValues.need = '%';\r\n needDropdown.firstChild.value = 'All';\r\n if (needDropdown.firstChild.options[needDropdown.firstChild.selectedIndex] != undefined)\r\n needDropdown.firstChild.options[needDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n if (closeFilter == 'contactBtn') {\r\n filterValues.contact = '%';\r\n contactDropdown.firstChild.value = 'All';\r\n if (contactDropdown.firstChild.options[contactDropdown.firstChild.selectedIndex] != undefined)\r\n contactDropdown.firstChild.options[contactDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n if (closeFilter == 'confidentialBtn') {\r\n filterValues.confidential = '%';\r\n confidentialDropdown.firstChild.value = 'All';\r\n if (confidentialDropdown.firstChild.options[confidentialDropdown.firstChild.selectedIndex] != undefined)\r\n confidentialDropdown.firstChild.options[confidentialDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n if (closeFilter == 'billedBtn') {\r\n filterValues.billed = '%';\r\n billedDropdown.firstChild.value = 'All';\r\n if (billedDropdown.firstChild.options[billedDropdown.firstChild.selectedIndex] != undefined)\r\n billedDropdown.firstChild.options[billedDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n\r\n if (closeFilter == 'attachmentsBtn') {\r\n filterValues.attachments = '%';\r\n attachmentsDropdown.firstChild.value = 'All';\r\n if (attachmentsDropdown.firstChild.options[attachmentsDropdown.firstChild.selectedIndex] != undefined)\r\n attachmentsDropdown.firstChild.options[attachmentsDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n\r\n if (closeFilter == 'noteTextBtn') {\r\n filterValues.noteText = '%';\r\n noteTextDropdown.firstChild.value = 'All';\r\n if (noteTextDropdown.firstChild.options[noteTextDropdown.firstChild.selectedIndex] != undefined)\r\n noteTextDropdown.firstChild.options[noteTextDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n\r\n updateCurrentFilterDisplay();\r\n notesOverview.setFilterValFromPopup(filterValues);\r\n }\r\n\r\n function init(overviewFilterValues, IsShow) {\r\n filterValues = overviewFilterValues;\r\n if (filterValues.overlaps === 'N') {\r\n checkOverlaps = 'N';\r\n }\r\n if (!activeAdditionalFilters) {\r\n activeAdditionalFilters = {\r\n location: false,\r\n service: false,\r\n need: false,\r\n contact: false,\r\n confidential: false,\r\n billed: false,\r\n attachments: false,\r\n noteText: false,\r\n };\r\n }\r\n createFilterElements();\r\n const consumerPromise = getConsumerDropdownData();\r\n const billerPromise = getBillersDropdownData();\r\n Promise.race([consumerPromise, billerPromise]).then(() => { });\r\n getServiceDepententData(filterValues.billingCode);\r\n populateStaticFilters();\r\n createMoreFilterOptionElements();\r\n buildFilterPopup(IsShow);\r\n }\r\n\r\n return {\r\n init,\r\n filterButtonSet,\r\n ShowHideFilter,\r\n updateCurrentFilterDisplay,\r\n };\r\n})();\r\n","var notesOverview = (function () {\r\n // DOM\r\n var overviewTable; \r\n // Values & Data\r\n var billers;\r\n var caseLoadRestriction;\r\n var groups;\r\n var tableConsumers;\r\n //PERMISSIONS\r\n var viewEntered;\r\n var caseloadOnly;\r\n // Filter Values\r\n let filterValues;\r\n var billerId;\r\n var billerName;\r\n var serviceDateStart;\r\n var serviceDateEnd;\r\n var datesEnteredStart; // '1900-01-01'\r\n var datesEnteredEnd; // UTIL.getTodaysDate()\r\n let reviewConsumerId;\r\n // table load vals\r\n var selectedRosterId = '';\r\n let isSSANote;\r\n var interval = null;\r\n // id array\r\n let noteIds = [];\r\n let overLapIds = [];\r\n\r\n let reviewAttachmentList;\r\n let attachcount;\r\n\r\n let reportRunning = false;\r\n\r\n let btnWrapFilter;\r\n // UTIL\r\n //---------------------------------------------\r\n function getServiceDateDefaultValues(startOrEnd) {\r\n var dateOffset = 24 * 60 * 60 * 1000 * parseInt($.session.defaultCaseNoteReviewDays);\r\n var todaysDate = new Date();\r\n var daysBackDate = new Date();\r\n var newDate;\r\n daysBackDate.setTime(daysBackDate.getTime() - dateOffset);\r\n if (startOrEnd === 'start') {\r\n newDate =\r\n daysBackDate.getFullYear() +\r\n '-' +\r\n ('0' + (daysBackDate.getMonth() + 1)).slice(-2) +\r\n '-' +\r\n ('0' + daysBackDate.getDate()).slice(-2);\r\n } else {\r\n newDate =\r\n todaysDate.getFullYear() +\r\n '-' +\r\n ('0' + (todaysDate.getMonth() + 1)).slice(-2) +\r\n '-' +\r\n ('0' + todaysDate.getDate()).slice(-2);\r\n }\r\n\r\n return newDate;\r\n }\r\n\r\n //MutationObserver to detect when loading and unloading review table to\r\n //disable and re-enable consumer list button\r\n function buildMutationObserver() {\r\n var observNode = document.getElementById('actioncenter');\r\n var config = { attributes: true };\r\n var callback = function (mutationList, observer) {\r\n for (let mutation of mutationList) {\r\n if (mutation.type === 'attributes') {\r\n if (\r\n mutation.target.dataset.activeSection === 'caseNotes-new' ||\r\n mutation.target.dataset.activeSection === 'caseNotes-review'\r\n ) {\r\n observer.disconnect();\r\n } else if (mutation.attributeName === 'data-active-section') {\r\n observer.disconnect();\r\n miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) miniRosterBtn.classList.remove('disabled');\r\n }\r\n //Reset filter values when leaving casenotes\r\n if (mutation.target.dataset.activeModule !== 'casenotes') {\r\n resetFilterValues();\r\n }\r\n }\r\n }\r\n };\r\n const observer = new MutationObserver(callback);\r\n observer.observe(observNode, config);\r\n }\r\n\r\n function showCNReportsPopup() {\r\n // popup\r\n var popup = document.createElement('div');\r\n popup.classList.add('popup', 'visible', 'popup--filter', 'timeEntryReportsPopup');\r\n popup.setAttribute('data-popup', 'true');\r\n // header\r\n var header = document.createElement('h5');\r\n header.innerHTML = `Select A Report To View`;\r\n // reports list\r\n var reports = `\r\n
      \r\n
    \r\n `;\r\n // var detailBtn = button.build({\r\n // text: 'Detail Report',\r\n // style: 'secondary',\r\n // type: 'contained',\r\n // callback: function () {\r\n // reportRunning = true;\r\n // const notesReportWarningPopup = POPUP.build({\r\n // id: 'notesReportWarningPopup1',\r\n // hideX: false,\r\n // classNames: 'warning',\r\n // });\r\n // const warningMessage = document.createElement('p');\r\n // warningMessage.innerHTML =\r\n // 'Your report is being generated and will be downloaded when finished, in the meantime you may continue with your work.';\r\n // const acceptBtn = button.build({\r\n // text: 'Ok',\r\n // style: 'secondary',\r\n // type: 'contained',\r\n // callback: function () {\r\n // POPUP.hide(notesReportWarningPopup);\r\n // overlay.hide();\r\n // bodyScrollLock.enableBodyScroll(popup);\r\n // actioncenter.removeChild(popup);\r\n // const IDs = noteIds.join(',');\r\n // passFilterValuesForDetailReport(filterValues);\r\n // },\r\n // });\r\n // const btnWrap = document.createElement('div');\r\n // btnWrap.classList.add('btnWrap');\r\n // btnWrap.appendChild(acceptBtn);\r\n // notesReportWarningPopup.appendChild(warningMessage);\r\n // notesReportWarningPopup.appendChild(btnWrap);\r\n // POPUP.show(notesReportWarningPopup);\r\n // },\r\n // });\r\n // var timeEntryBtn = button.build({\r\n // text: 'Time Analysis Report',\r\n // style: 'secondary',\r\n // type: 'contained',\r\n // callback: function () {\r\n // reportRunning = true;\r\n // const notesReportWarningPopup = POPUP.build({\r\n // id: 'notesReportWarningPopup2',\r\n // hideX: false,\r\n // classNames: 'warning',\r\n // });\r\n // const warningMessage = document.createElement('p');\r\n // warningMessage.innerHTML =\r\n // 'Your report is being generated and will be downloaded when finished, in the meantime you may continue with your work.';\r\n // const acceptBtn = button.build({\r\n // text: 'Ok',\r\n // style: 'secondary',\r\n // type: 'contained',\r\n // callback: function () {\r\n // POPUP.hide(notesReportWarningPopup);\r\n // overlay.hide();\r\n // bodyScrollLock.enableBodyScroll(popup);\r\n // actioncenter.removeChild(popup);\r\n // passFilterValuesForTimeEntryReport(filterValues);\r\n // },\r\n // });\r\n // const btnWrap = document.createElement('div');\r\n // btnWrap.classList.add('btnWrap');\r\n // btnWrap.appendChild(acceptBtn);\r\n // notesReportWarningPopup.appendChild(warningMessage);\r\n // notesReportWarningPopup.appendChild(btnWrap);\r\n // POPUP.show(notesReportWarningPopup);\r\n // },\r\n // });\r\n\r\n if (reportRunning) {\r\n detailBtn.disabled = true;\r\n timeEntryBtn.disabled = true;\r\n }\r\n\r\n popup.appendChild(header);\r\n popup.appendChild(detailBtn);\r\n popup.appendChild(timeEntryBtn);\r\n\r\n // append to dom\r\n bodyScrollLock.disableBodyScroll(popup);\r\n overlay.show();\r\n actioncenter.appendChild(popup);\r\n }\r\n\r\n function passFilterValuesForDetailReport(filterValues) {\r\n caseNotesAjax.generateCNDetailReport(filterValues, checkIfCNReportIsReadyInterval);\r\n }\r\n\r\n function passFilterValuesForTimeEntryReport(filterValues) {\r\n caseNotesAjax.generateCNTimeAnalysisReport(filterValues, checkIfCNReportIsReadyInterval);\r\n }\r\n\r\n function checkIfCNReportIsReadyInterval(res) {\r\n seconds = parseInt($.session.reportSeconds);\r\n intSeconds = seconds * 1000;\r\n interval = setInterval(async () => {\r\n await checkCNReportExists(res);\r\n }, intSeconds);\r\n }\r\n\r\n async function checkCNReportExists(res) {\r\n await caseNotesAjax.checkIfCNReportExists(res, callCNReport);\r\n }\r\n\r\n function callCNReport(res, reportScheduleId) {\r\n if (res.indexOf('1') === -1) {\r\n //do nothing\r\n } else {\r\n caseNotesAjax.viewCaseNoteReport(reportScheduleId);\r\n clearInterval(interval);\r\n reportRunning = false;\r\n }\r\n }\r\n\r\n function initFilterDisplay() {\r\n if (!billerName) {\r\n billers.forEach(biller => {\r\n if (biller.billerId == $.session.PeopleId) {\r\n billerName = biller.billerName;\r\n }\r\n });\r\n }\r\n\r\n const displayConsumerName = filterValues.consumerName;\r\n\r\n let dispalyServiceDateStart = UTIL.formatDateFromIso(serviceDateStart);\r\n let dispalyServiceDateEnd = UTIL.formatDateFromIso(serviceDateEnd);\r\n let displayDateEnteredStart = UTIL.formatDateFromIso(datesEnteredStart);\r\n let dispalyDatesEnteredEnd = UTIL.formatDateFromIso(datesEnteredEnd);\r\n\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n if (!currentFilterDisplay) {\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n currentFilterDisplay.id = 'notesFilterDiv';\r\n btnWrapFilter = cnFilters.filterButtonSet(billerName, displayConsumerName, 'All', 'All', 'All', dispalyServiceDateStart, dispalyServiceDateEnd, displayDateEnteredStart, dispalyDatesEnteredEnd,\r\n 'All', 'All', 'All', 'All', 'All', 'All', 'All', 'No', 'All', filterValues,'All');\r\n currentFilterDisplay.appendChild(btnWrapFilter);\r\n btnWrapFilter = cnFilters.ShowHideFilter(billerName, displayConsumerName, 'All', 'All', 'All', dispalyServiceDateStart, dispalyServiceDateEnd, displayDateEnteredStart, dispalyDatesEnteredEnd,\r\n 'All', 'All', 'All', 'All', 'All', 'All', 'All', 'No', 'All','All'); \r\n currentFilterDisplay.appendChild(btnWrapFilter);\r\n }\r\n\r\n return currentFilterDisplay;\r\n }\r\n function buildTopBtns() {\r\n // custom search stuff\r\n SEARCH_BTN = button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n SEARCH_WRAP = document.createElement('div');\r\n SEARCH_WRAP.classList.add('consumerSearch');\r\n SEARCH_INPUT = document.createElement('input');\r\n SEARCH_INPUT.setAttribute('placeholder', 'search consumers');\r\n SEARCH_WRAP.appendChild(SEARCH_BTN);\r\n SEARCH_WRAP.appendChild(SEARCH_INPUT);\r\n\r\n var newNoteBtn = button.build({\r\n text: 'New Note',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n callback: function () {\r\n //reset filter values when creating new note\r\n resetFilterValues();\r\n $.session.CaseNotesSSANotes && isSSANote ? noteSSA.init('new') : note.init('new');\r\n },\r\n });\r\n // var cnReportBtn = button.build({\r\n // text: 'Reports',\r\n // style: 'secondary',\r\n // type: 'contained',\r\n // modal: true,\r\n // icon: 'add',\r\n // callback: function () {\r\n // showCNReportsPopup();\r\n // },\r\n // });\r\n\r\n var cnReportBtn = generateReports.createMainReportButton([ { text: 'Detail Report', filterValues},{ text: 'Minutes By Date', filterValues}, { text: 'Time Analysis Report', filterValues}, { text: 'TXX Case Notes', filterValues}])\r\n\r\n cnADVReportBtn = generateReports.createMainReportButton([{ text: 'Detailed Case Notes By Biller', filterValues }, { text: 'Minutes By Date', filterValues}]);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('cnbtnWrap');\r\n\r\n //PERMISSION// caseNoteUpdate === True means they have they\r\n //Can create new notes or update/delete notes.\r\n if ($.session.CaseNotesUpdate) btnWrap.appendChild(newNoteBtn);\r\n if ($.session.applicationName === 'Gatekeeper') btnWrap.appendChild(cnReportBtn);\r\n if ($.session.applicationName === 'Advisor') btnWrap.appendChild(cnADVReportBtn);\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n DOM.ACTIONCENTER.appendChild(SEARCH_WRAP); \r\n const filteredBy = initFilterDisplay();\r\n DOM.ACTIONCENTER.appendChild(filteredBy); \r\n }\r\n\r\n // Table\r\n //---------------------------------------------\r\n function handleTableEvents() {\r\n var isRow = event.target.classList.contains('table__row');\r\n if (!isRow) return;\r\n // show row details and/or go to note review\r\n var caseNoteId = event.target.id;\r\n var consumerId = event.target.dataset.consumerId;\r\n var isSSANote = event.target.dataset.isssanote;\r\n\r\n if ($.session.CaseNotesSSANotes && isSSANote === 'Y') {\r\n caseNotesAjax.getCaseNoteEdit(caseNoteId, function (results) {\r\n noteSSA.init('review', results, groups);\r\n });\r\n } else {\r\n caseNotesAjax.getCaseNoteEdit(caseNoteId, function (results) {\r\n note.init('review', results, groups);\r\n });\r\n }\r\n }\r\n\r\n function getTableData() {\r\n // const cnData = await fetchData('getConsumersThatCanHaveMileageJSON', {\r\n // applicationName: 'Advisor',\r\n // attachments: '%',\r\n // billed: '%',\r\n // billerId: '7369',\r\n // billingCode: '%',\r\n // confidential: '%',\r\n // consumerId: '%',\r\n // contact: '%',\r\n // corrected: '%',\r\n // dateEnteredEnd: '2023-10-03',\r\n // dateEnteredStart: '1900-01-01',\r\n // location: '%',\r\n // need: '%',\r\n // noteText: '%%%',\r\n // overlaps: 'N',\r\n // reviewStatus: '%',\r\n // service: '%',\r\n // serviceEndDate: '2023-10-03',\r\n // serviceStartDate: '2020-09-26',\r\n // });\r\n // var tableFilterData = {\r\n // billerId,\r\n // selectedRosterUserId: selectedRosterId,\r\n // serviceStartDate: serviceDateStart,\r\n // serviceEndDate: serviceDateEnd,\r\n // dateEnteredStart: datesEnteredStart === \"\" ? '1900-01-01': datesEnteredStart,\r\n // dateEnteredEnd: datesEnteredEnd\r\n // }\r\n caseNotesAjax.getFilteredCaseNotesList(filterValues, filteredData => {\r\n if (filteredData.length !== 0) {\r\n overLapIds = filteredData[0].overlaps;\r\n }\r\n\r\n populateTable(filteredData);\r\n groups = {};\r\n tableConsumers = [];\r\n filteredData.forEach(fd => {\r\n if (fd.numberInGroup !== '1') {\r\n const groupNoteId = fd.groupnoteid.split('.')[0];\r\n var consumerId = fd.consumerid.split('.')[0];\r\n var name = `${fd.lastname}, ${fd.firstname}`;\r\n if (!groups[groupNoteId]) {\r\n groups[groupNoteId] = { [consumerId]: name };\r\n }\r\n groups[groupNoteId][consumerId] = name;\r\n }\r\n });\r\n filteredData.forEach(fd => {\r\n var cnId = fd.casenoteid.split('.')[0];\r\n var firstName = fd.firstname;\r\n var lastName = fd.lastname;\r\n var obj = { id: cnId, FirstName: firstName, LastName: lastName };\r\n tableConsumers.push(obj);\r\n });\r\n });\r\n }\r\n function populateTable(tableData) {\r\n tableData = permissions_Table(tableData);\r\n var groupCounts = {};\r\n\r\n tableData.forEach(td => {\r\n let groupId;\r\n if (td.groupnoteid === null) {\r\n groupId = '';\r\n } else {\r\n groupId = td.groupnoteid.split('.')[0];\r\n }\r\n if (!groupCounts[groupId]) {\r\n groupCounts[groupId] = 0;\r\n }\r\n\r\n groupCounts[groupId]++;\r\n });\r\n\r\n var data = tableData.map(td => {\r\n var hasOverlap = false;\r\n var originalupdateTrim = td.originalupdate.split('T')[0];\r\n var servicedate = UTIL.formatDateFromIso(td.servicedate.split('T')[0]);\r\n var starttime = UTIL.convertFromMilitary(td.starttime);\r\n var endtime = UTIL.convertFromMilitary(td.endtime);\r\n var name = `${td.lastname}, ${td.firstname}`;\r\n var originalUpdate = UTIL.formatDateFromIso(originalupdateTrim);\r\n var lastUpdateBy = td.lastupdatedby;\r\n // var groupCount = groupCounts[td.groupnoteid] === '' ? '0' : groupCounts[td.groupnoteid];\r\n var groupCount = td.numberInGroup;\r\n var caseNoteId = td.casenoteid.split('.')[0];\r\n if (overLapIds !== null) {\r\n if (overLapIds.includes(caseNoteId)) hasOverlap = true;\r\n }\r\n var consumerId = td.consumerid.split('.')[0];\r\n isSSANote = td.isSSANote;\r\n // just for GK - JMM 3/18\r\n attachcount = td.attachcount;\r\n\r\n noteIds.push(caseNoteId);\r\n\r\n var thisendIcon;\r\n var GKendIcon =\r\n !attachcount || attachcount === ' ' || attachcount === '0'\r\n ? `

    XXX

    `\r\n : `${icons['attachment']}`;\r\n var ADVendIcon = null;\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n thisendIcon = GKendIcon;\r\n } else {\r\n thisendIcon = ADVendIcon;\r\n }\r\n\r\n return {\r\n values: [servicedate, starttime, endtime, name, originalUpdate, lastUpdateBy, groupCount],\r\n id: caseNoteId,\r\n overlap: hasOverlap,\r\n attributes: [\r\n { key: 'data-consumer-id', value: consumerId },\r\n { key: 'data-isssanote', value: isSSANote },\r\n ],\r\n endIcon: thisendIcon,\r\n endIconCallback: e => {\r\n e.stopPropagation();\r\n var isParentRow = e.target.parentNode.classList.contains('table__row');\r\n if (!isParentRow) return;\r\n // show row details and/or go to note review\r\n var caseNoteId = e.target.parentNode.id;\r\n var testNoteId = 1298784;\r\n caseNotesAjax.getCaseNoteAttachmentsList(caseNoteId, function (results) {\r\n attachmentPopup();\r\n if (results.length !== 0) populateExistingAttachments(results);\r\n\r\n //cnAttachment.init([], results, '', caseNoteId);\r\n });\r\n },\r\n onClick: handleTableEvents,\r\n };\r\n });\r\n\r\n table.populate(overviewTable, data);\r\n }\r\n\r\n function buildTable() {\r\n var thiscolumnheadings = [];\r\n var GKcolumnheadings = [\r\n 'Service Date',\r\n 'Start Time',\r\n 'End Time',\r\n 'Name',\r\n 'Date Created',\r\n 'User Updated',\r\n 'Group',\r\n 'Attach',\r\n ];\r\n var ADVcolumnheadings = ['Service Date', 'Start Time', 'End Time', 'Name', 'Date Created', 'User Updated', 'Group'];\r\n $.session.applicationName === 'Gatekeeper'\r\n ? (thiscolumnheadings = GKcolumnheadings)\r\n : (thiscolumnheadings = ADVcolumnheadings);\r\n\r\n overviewTable = table.build({\r\n tableId: 'caseNotesReviewTable',\r\n columnHeadings: thiscolumnheadings,\r\n endIcon: !attachcount || attachcount === ' ' || attachcount === '0' ? false : true,\r\n });\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = overviewTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'date'); // Service Date\r\n headers[1].setAttribute('data-type', 'date'); // Service Start\r\n headers[2].setAttribute('data-type', 'date'); // Service End\r\n headers[3].setAttribute('data-type', 'string'); // Name\r\n headers[4].setAttribute('data-type', 'date'); // Date Created\r\n headers[5].setAttribute('data-type', 'string'); // User Updated\r\n headers[6].setAttribute('data-type', 'number'); // Group\r\n // headers[7].setAttribute(\"data-type\", \"string\"); // Attach Icon\r\n\r\n // overviewTable.addEventListener('click', handleTableEvents);\r\n DOM.ACTIONCENTER.appendChild(overviewTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(overviewTable);\r\n }\r\n\r\n function tableConsumerSearch(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n // gather all names shown\r\n //reset the array containing list of consumers that are being displayed\r\n displayedConsumers = [searchValue];\r\n tableConsumers.forEach(consumer => {\r\n var firstName = consumer.FirstName.toLowerCase();\r\n var lastName = consumer.LastName.toLowerCase();\r\n var fullName = `${lastName}, ${firstName}`; \r\n var fullNameReversed = `${lastName}, ${firstName}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n var matchesNameReverse = fullNameReversed.indexOf(searchValue);\r\n var caseNote = document.getElementById(consumer.id);\r\n\r\n if (matchesName !== -1 || matchesNameReverse !== -1) {\r\n caseNote.classList.remove('hidden');\r\n displayedConsumers.push(consumer.id);\r\n } else {\r\n caseNote.classList.add('hidden');\r\n var index = displayedConsumers.indexOf(consumer.id);\r\n if (index > -1) displayedConsumers.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n function setFilterValFromPopup(newFilterValues) {\r\n filterValues = newFilterValues;\r\n getTableData();\r\n }\r\n\r\n function resetFilterValues() {\r\n filterValues = null; \r\n\r\n billerId = null;\r\n serviceDateStart = null;\r\n serviceDateEnd = null;\r\n datesEnteredStart = null;\r\n datesEnteredEnd = null;\r\n }\r\n //permissions_table are permissions that effect what case notes you can see in the table\r\n function permissions_Table(tableData) {\r\n var newTable = [];\r\n //VIEW ENTERED - can only view case notes you have entered. Can't see any other notes.\r\n //CASELOAD ONLY - Can only view consumers that are on your caseload (or any note that you entered. If you were the one to enter a note, this trumps any permission)\r\n if (viewEntered && caseloadOnly) {\r\n for (let tDi = 0; tDi < tableData.length; tDi++) {\r\n for (let cIdx = 0; cIdx < caseLoadRestriction.length; cIdx++) {\r\n if (\r\n caseLoadRestriction[cIdx].id.toUpperCase() === tableData[tDi].consumerid.split('.')[0].toUpperCase() ||\r\n tableData[tDi].enteredby.toUpperCase() === $.session.UserId.toUpperCase()\r\n ) {\r\n newTable.push(tableData[tDi]);\r\n break;\r\n }\r\n }\r\n }\r\n return newTable;\r\n } else if (viewEntered) {\r\n for (let tDi = 0; tDi < tableData.length; tDi++) {\r\n if (tableData[tDi].enteredby.toUpperCase() === $.session.UserId.toUpperCase()) {\r\n newTable.push(tableData[tDi]);\r\n }\r\n }\r\n return newTable;\r\n } else if (caseloadOnly) {\r\n for (let tDi = 0; tDi < tableData.length; tDi++) {\r\n for (let cIdx = 0; cIdx < caseLoadRestriction.length; cIdx++) {\r\n if (caseLoadRestriction[cIdx].id === tableData[tDi].consumerid.split('.')[0]) {\r\n newTable.push(tableData[tDi]);\r\n break;\r\n }\r\n }\r\n }\r\n return newTable;\r\n } else return tableData;\r\n }\r\n\r\n function mainEventListeners() {\r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n if (event.keyCode === 13) {\r\n tableConsumerSearch(event.target.value);\r\n }\r\n });\r\n }\r\n\r\n function disableMiniRosterBtn() {\r\n var btn = document.querySelector('.consumerListBtn');\r\n if (btn) btn.classList.add('disabled');\r\n }\r\n\r\n function loadPage() { \r\n if (!filterValues.billerId) filterValues.billerId = $.session.PeopleId;\r\n DOM.clearActionCenter();\r\n buildTopBtns();\r\n buildTable();\r\n getTableData();\r\n buildMutationObserver();\r\n disableMiniRosterBtn();\r\n mainEventListeners();\r\n document.getElementById('searchBtn').click(); \r\n cnFilters.updateCurrentFilterDisplay();\r\n }\r\n\r\n function initialData(callback) {\r\n const promArray = [];\r\n\r\n if (caseloadOnly) {\r\n const caseloadRestrictionPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getCaseLoadRestriction(res => {\r\n caseLoadRestriction = res;\r\n resolve('success');\r\n });\r\n });\r\n promArray.push(caseloadRestrictionPromise);\r\n }\r\n\r\n //FILTER DROPDOWN DATA\r\n //==========================\r\n //biller Dropdown\r\n const getBillersListPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getBillersListForDropDown(res => {\r\n billers = res;\r\n resolve('success');\r\n });\r\n });\r\n promArray.push(getBillersListPromise);\r\n\r\n Promise.all(promArray).then(function () {\r\n callback();\r\n });\r\n }\r\n /**\r\n * Going from Dashboard to CN Review Table, and filter based on My Case Load widget settings\r\n * @param {intiger} daysBack - Days back setting for the My Case Load Widget\r\n * @param {string} consumerId - ID for the consumer that was clicked on\r\n * @param {string} consumerName - Name of the Consumer. Needed for Filtered by display\r\n * @param {*} viewEnteredWidgetSetting\r\n */\r\n function dashHandeler(daysBack, consumerId, viewEnteredWidgetSetting, consumerName) {\r\n const daysBackDate = new Date();\r\n daysBackDate.setDate(daysBackDate.getDate() - daysBack);\r\n reviewConsumerId = consumerId;\r\n viewEntered = $.session.CaseNotesViewEntered ? viewEnteredWidgetSetting : false;\r\n caseloadOnly = $.session.CaseNotesCaseloadRestriction;\r\n setActiveModuleSectionAttribute('caseNotes-overview');\r\n //If statements are to prevent re-setting filter when moving from new note to review note back to the overview\r\n if (!serviceDateStart) serviceDateStart = UTIL.formatDateFromDateObj(daysBackDate);\r\n if (!serviceDateEnd) serviceDateEnd = getServiceDateDefaultValues('end');\r\n datesEnteredStart = '1900-01-01';\r\n if (!datesEnteredEnd) datesEnteredEnd = UTIL.getTodaysDate();\r\n filterValues = {\r\n billerId: $.session.PeopleId,\r\n billerName: '',\r\n consumer: reviewConsumerId,\r\n consumerName: consumerName,\r\n billingCode: '%',\r\n reviewStatus: '%',\r\n serviceDateStart: serviceDateStart,\r\n serviceDateEnd: serviceDateEnd,\r\n enteredDateStart: datesEnteredStart,\r\n enteredDateEnd: datesEnteredEnd,\r\n location: '%',\r\n service: '%',\r\n need: '%',\r\n contact: '%',\r\n confidential: '%',\r\n corrected: '%',\r\n billed: '%',\r\n attachments: '%',\r\n noteText: '%',\r\n noteTextValue: '',\r\n outcomeServiceMonitoring: '%', \r\n };\r\n\r\n initialData(loadPage);\r\n }\r\n\r\n function setInitFilterValues() {\r\n //If statements are to prevent re-setting filter when moving from new note to review note back to the overview\r\n if (!serviceDateStart) serviceDateStart = getServiceDateDefaultValues('start');\r\n if (!serviceDateEnd) serviceDateEnd = getServiceDateDefaultValues('end');\r\n if (!datesEnteredStart) datesEnteredStart = '1900-01-01';\r\n if (!datesEnteredEnd) datesEnteredEnd = UTIL.getTodaysDate();\r\n if (!filterValues) {\r\n filterValues = {\r\n billerId: $.session.PeopleId,\r\n consumer: '%',\r\n consumerName: 'All',\r\n billingCode: '%',\r\n reviewStatus: '%',\r\n serviceDateStart: serviceDateStart,\r\n serviceDateEnd: serviceDateEnd,\r\n enteredDateStart: datesEnteredStart,\r\n enteredDateEnd: datesEnteredEnd,\r\n location: '%',\r\n service: '%',\r\n need: '%',\r\n contact: '%',\r\n confidential: '%',\r\n corrected: '%',\r\n billed: '%',\r\n attachments: '%',\r\n overlaps: 'N',\r\n noteText: '%',\r\n noteTextValue: '',\r\n viewEntered,\r\n caseloadOnly,\r\n userId: $.session.UserId,\r\n outcomeServiceMonitoring: '%',\r\n };\r\n }\r\n }\r\n\r\n function attachmentPopup() {\r\n const popup = POPUP.build({\r\n header: 'Attachments',\r\n id: 'cnAttachmentPopup',\r\n });\r\n\r\n addAttachmentBtn = button.build({\r\n text: 'Add Attachment',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'add',\r\n // callback: addNewAttachment\r\n });\r\n addAttachmentBtn.type = 'button';\r\n removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n });\r\n removeAttachmentBtn.type = 'button';\r\n // addRemoveAttachmentEventListener(removeAttachmentBtn);\r\n const saveBtn = button.build({\r\n id: 'attachmentSave',\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n // saveAction();\r\n POPUP.hide(popup);\r\n },\r\n });\r\n // const cancelBtn = button.build({\r\n // id: \"attachmentCancel\",\r\n // text: \"cancel\",\r\n // style: \"secondary\",\r\n // type: \"outlined\",\r\n // callback: () => {\r\n // POPUP.hide(popup);\r\n // }\r\n // });\r\n\r\n reviewAttachmentList = document.createElement('div');\r\n reviewAttachmentList.classList.add('reviewAttachmentList');\r\n newAttachmentList = document.createElement('div');\r\n newAttachmentList.classList.add('newAttachmentList');\r\n const newAttachmentsHeader = document.createElement('h5');\r\n newAttachmentsHeader.innerText = 'Attachments to be added:';\r\n // if (isBatched === '' || isBatched === null) {\r\n // newAttachmentList.appendChild(newAttachmentsHeader);\r\n // }\r\n\r\n attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.classList.add('input-field__input', 'attachmentInput');\r\n attachmentInput.onchange = event => fileValidation(event.target);\r\n\r\n attachmentContainer = document.createElement('div');\r\n attachmentContainer.classList.add('attachmentContainer');\r\n attachmentList = document.createElement('form');\r\n attachmentList.setAttribute('id', 'attachmentForm');\r\n // if (isBatched === '' || isBatched === null) {\r\n // attachmentList.appendChild(attachmentContainer);\r\n // attachmentContainer.appendChild(removeAttachmentBtn);\r\n // attachmentContainer.appendChild(attachmentInput);\r\n // }\r\n // attachmentContainer.appendChild(addAttachmentBtn);\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n popup.appendChild(reviewAttachmentList);\r\n popup.appendChild(newAttachmentList);\r\n popup.appendChild(attachmentList);\r\n // if (isBatched === '' || isBatched === null) {\r\n // popup.appendChild(addAttachmentBtn);\r\n // }\r\n\r\n btnWrap.appendChild(saveBtn);\r\n // btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function populateExistingAttachments(reviewAttachments) {\r\n const header = document.createElement('h5');\r\n header.innerText = 'Select an attachment to view:';\r\n reviewAttachmentList.appendChild(header);\r\n //console.table(reviewAttachments)\r\n\r\n reviewAttachments.forEach(attachment => {\r\n const fileContainer = document.createElement('div');\r\n fileContainer.classList.add('reviewAttachmentContainer');\r\n fileContainer.setAttribute('id', attachment.attachmentId);\r\n fileContainer.setAttribute('delete', false);\r\n\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n // callback: event => addRemoveAttachmentToDeleteList(event.target.parentElement)\r\n });\r\n\r\n const file = document.createElement('p');\r\n file.innerText = attachment.description;\r\n // if (isBatched === '' || isBatched === null) {\r\n // fileContainer.appendChild(removeAttachmentBtn);\r\n // }\r\n fileContainer.appendChild(file);\r\n file.addEventListener('click', event => {\r\n const attachmentId = event.target.parentElement.id;\r\n caseNotesAjax.viewCaseNoteAttachment(attachmentId);\r\n });\r\n reviewAttachmentList.appendChild(fileContainer);\r\n });\r\n }\r\n\r\n function init() {\r\n reviewConsumerId = null;\r\n viewEntered = $.session.CaseNotesViewEntered;\r\n caseloadOnly = $.session.CaseNotesCaseloadRestriction;\r\n setActiveModuleSectionAttribute('caseNotes-overview');\r\n setInitFilterValues();\r\n initialData(loadPage);\r\n }\r\n\r\n return {\r\n init,\r\n dashHandeler,\r\n setFilterValFromPopup,\r\n permissions_Table, \r\n };\r\n})();\r\n","const cnAttachment = (function () {\r\n // Elements test\r\n let attachmentList, attachmentInput, attachmentContainer, addAttachmentBtn, removeAttachmentBtn;\r\n let reviewAttachmentList, newAttachmentList;\r\n // Data\r\n let cnId;\r\n let attachmentsToDelete, reviewAttachmentArray;\r\n\r\n let isSSANote;\r\n let isBatched;\r\n\r\n const allowedFileTypes = [];\r\n\r\n function attachmentPopup() {\r\n const popup = POPUP.build({\r\n header: 'Attachments',\r\n id: 'cnAttachmentPopup',\r\n });\r\n\r\n addAttachmentBtn = button.build({\r\n text: 'Add Attachment',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'add',\r\n callback: addNewAttachment,\r\n });\r\n addAttachmentBtn.type = 'button';\r\n removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n });\r\n removeAttachmentBtn.type = 'button';\r\n addRemoveAttachmentEventListener(removeAttachmentBtn);\r\n const saveBtn = button.build({\r\n id: 'attachmentSave',\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n saveAction();\r\n POPUP.hide(popup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n id: 'attachmentCancel',\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n reviewAttachmentList = document.createElement('div');\r\n reviewAttachmentList.classList.add('reviewAttachmentList');\r\n newAttachmentList = document.createElement('div');\r\n newAttachmentList.classList.add('newAttachmentList');\r\n const newAttachmentsHeader = document.createElement('h5');\r\n newAttachmentsHeader.innerText = 'Attachments to be added:';\r\n if (isBatched === '' || isBatched === null) {\r\n newAttachmentList.appendChild(newAttachmentsHeader);\r\n }\r\n\r\n attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.classList.add('input-field__input', 'attachmentInput');\r\n attachmentInput.onchange = event => fileValidation(event.target);\r\n\r\n attachmentContainer = document.createElement('div');\r\n attachmentContainer.classList.add('attachmentContainer');\r\n attachmentList = document.createElement('form');\r\n attachmentList.setAttribute('id', 'attachmentForm');\r\n if (isBatched === '' || isBatched === null) {\r\n attachmentList.appendChild(attachmentContainer);\r\n attachmentContainer.appendChild(removeAttachmentBtn);\r\n attachmentContainer.appendChild(attachmentInput);\r\n }\r\n // attachmentContainer.appendChild(addAttachmentBtn);\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n popup.appendChild(reviewAttachmentList);\r\n popup.appendChild(newAttachmentList);\r\n popup.appendChild(attachmentList);\r\n if (isBatched === '' || isBatched === null) {\r\n popup.appendChild(addAttachmentBtn);\r\n }\r\n\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function fileValidation(target) {\r\n const fileType = target.files[0].type;\r\n const reFileTypeTest = new RegExp('(audio/)|(video/)');\r\n if (reFileTypeTest.test(fileType)) {\r\n alert('Anywhere currently does not accept audio or video files');\r\n target.value = '';\r\n return false;\r\n }\r\n }\r\n\r\n function addNewAttachment() {\r\n // Don't add new attachment input if the last attachment is empty\r\n const form = document.getElementById('attachmentForm');\r\n const lastAttachment = form.lastChild;\r\n if (lastAttachment && lastAttachment.querySelector('.attachmentInput').value === '') {\r\n return;\r\n }\r\n const newFileContainer = attachmentContainer.cloneNode(true);\r\n newFileContainer.getElementsByTagName('input')[0].value = ''; //remove file for new container\r\n newFileContainer.getElementsByTagName('input')[0].onchange = event =>\r\n fileValidation(event.target);\r\n attachmentList.appendChild(newFileContainer);\r\n addRemoveAttachmentEventListener(newFileContainer.firstElementChild);\r\n attachmentContainer = newFileContainer;\r\n }\r\n\r\n function addRemoveAttachmentEventListener(btn) {\r\n btn.addEventListener('click', event => {\r\n const fileInput = event.target.parentElement.getElementsByTagName('input')[0];\r\n if (fileInput !== '') {\r\n event.target.parentElement.remove();\r\n }\r\n });\r\n }\r\n\r\n function saveAction() {\r\n deleteExistingAttachment();\r\n const attachmentInputs = document.querySelectorAll('.attachmentInput');\r\n if (attachmentInputs.length === 0) {\r\n return;\r\n }\r\n\r\n let attachmentProms = [];\r\n let attachmentArray = [];\r\n attachmentInputs.forEach(inputElement => {\r\n if (inputElement.value === '') {\r\n return;\r\n }\r\n const attPromise = new Promise(resolve => {\r\n const attachmentObj = {};\r\n const attachmentFile = inputElement.files.item(0);\r\n const attachmentName = attachmentFile.name;\r\n const attachmentType = attachmentFile.name.split('.').pop();\r\n attachmentObj.description = attachmentName;\r\n attachmentObj.type = attachmentType;\r\n // new Response(file) was added for Safari compatibility\r\n new Response(attachmentFile).arrayBuffer().then(res => {\r\n attachmentObj.arrayBuffer = res;\r\n attachmentArray.push(attachmentObj);\r\n resolve();\r\n });\r\n });\r\n\r\n attachmentProms.push(attPromise);\r\n });\r\n\r\n Promise.all(attachmentProms).then(res => {\r\n attachmentsToDelete.forEach(remAttachment => {\r\n reviewAttachmentArray = reviewAttachmentArray.filter(\r\n attachment => attachment.attachmentId !== remAttachment,\r\n );\r\n });\r\n //\r\n if (isSSANote) {\r\n noteSSA.addAttachmentsToCN(attachmentArray, reviewAttachmentArray);\r\n } else {\r\n note.addAttachmentsToCN(attachmentArray, reviewAttachmentArray);\r\n }\r\n });\r\n // (isSSANote) ? noteSSA.addAttachmentsToCN(attachmentArray, reviewAttachmentArray) : note.addAttachmentsToCN(attachmentArray, reviewAttachmentArray);\r\n }\r\n\r\n function addRemoveAttachmentToDeleteList(attachmentElement) {\r\n const currentDeleteStatus = attachmentElement.getAttribute('delete');\r\n const attachmentId = attachmentElement.getAttribute('id');\r\n switch (currentDeleteStatus) {\r\n case 'false':\r\n attachmentElement.classList.add('deleteAttachment');\r\n attachmentsToDelete.push(attachmentId);\r\n attachmentElement.setAttribute('delete', true);\r\n break;\r\n case 'true':\r\n attachmentElement.classList.remove('deleteAttachment');\r\n attachmentsToDelete = attachmentsToDelete.filter(attachment => attachment !== attachmentId);\r\n attachmentElement.setAttribute('delete', false);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function deleteExistingAttachment() {\r\n attachmentsToDelete.forEach(attachment => {\r\n caseNotesAjax.deleteCaseNoteAttachment(cnId, attachment);\r\n });\r\n }\r\n\r\n function populateExistingAttachments(reviewAttachments) {\r\n const header = document.createElement('h5');\r\n header.innerText = 'Existing Attachments:';\r\n reviewAttachmentList.appendChild(header);\r\n //console.table(reviewAttachments)\r\n\r\n reviewAttachments.forEach(attachment => {\r\n const fileContainer = document.createElement('div');\r\n fileContainer.classList.add('reviewAttachmentContainer');\r\n fileContainer.setAttribute('id', attachment.attachmentId);\r\n fileContainer.setAttribute('delete', false);\r\n\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n callback: event => addRemoveAttachmentToDeleteList(event.target.parentElement),\r\n });\r\n\r\n const file = document.createElement('p');\r\n file.innerText = attachment.description;\r\n if (isBatched === '' || isBatched === null) {\r\n fileContainer.appendChild(removeAttachmentBtn);\r\n }\r\n fileContainer.appendChild(file);\r\n file.addEventListener('click', event => {\r\n const attachmentId = event.target.parentElement.id;\r\n caseNotesAjax.viewCaseNoteAttachment(attachmentId);\r\n });\r\n reviewAttachmentList.appendChild(fileContainer);\r\n });\r\n }\r\n\r\n function populateNewAttachments(newAttachments) {\r\n newAttachments.forEach(attachment => {\r\n const fileContainer = document.createElement('div');\r\n fileContainer.classList.add('newAttachmentContainer');\r\n if (isSSANote) {\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n callback: event => {\r\n const attachmentName =\r\n event.target.parentElement.getElementsByTagName('p')[0].innerText;\r\n noteSSA.removeAttachmentFromTempAttachmentArray(attachmentName);\r\n event.target.parentElement.remove();\r\n },\r\n });\r\n } else {\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n callback: event => {\r\n const attachmentName =\r\n event.target.parentElement.getElementsByTagName('p')[0].innerText;\r\n note.removeAttachmentFromTempAttachmentArray(attachmentName);\r\n event.target.parentElement.remove();\r\n },\r\n });\r\n }\r\n\r\n const file = document.createElement('p');\r\n file.innerText = attachment.description;\r\n if (isBatched === '' || isBatched === null) {\r\n fileContainer.appendChild(removeAttachmentBtn);\r\n }\r\n fileContainer.appendChild(file);\r\n newAttachmentList.appendChild(fileContainer);\r\n });\r\n }\r\n\r\n function init(newAttachments, reviewAttachments, cnBatched, caseNoteId = null, SSANote = false) {\r\n isSSANote = SSANote;\r\n cnId = caseNoteId;\r\n isBatched = cnBatched;\r\n attachmentsToDelete = [];\r\n reviewAttachmentArray = reviewAttachments;\r\n attachmentPopup();\r\n if (newAttachments.length !== 0) populateNewAttachments(newAttachments);\r\n if (reviewAttachments.length !== 0) populateExistingAttachments(reviewAttachments);\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const cnInsertPhrases = (function() {\r\n //DOM\r\n let phraseDropdown;\r\n let allPhraseCheckbox;\r\n let phraseNoteTextInput;\r\n let insertPhraseBtn;\r\n const fullPhraseDisplay = document.createElement(\"p\");\r\n fullPhraseDisplay.classList.add(\"fullPhraseDisplay\")\r\n //data\r\n let customPhrases = {};\r\n let selectedPhraseId;\r\n let currentNote;\r\n let cursorSelection;\r\n let showAllPhrases;\r\n\r\n let isSSANote;\r\n\r\n function show(note, SSANote = false) {\r\n isSSANote = SSANote;\r\n currentNote = note;\r\n cursorSelection = null;\r\n selectedPhraseId = null;\r\n fullPhraseDisplay.innerHTML = \"\";\r\n switch (cn_PhraseLS.get()) {\r\n case \"true\":\r\n showAllPhrases = true;\r\n break;\r\n case \"false\":\r\n showAllPhrases = false;\r\n break;\r\n default:\r\n showAllPhrases = false;\r\n break;\r\n }\r\n createPopup();\r\n getData(populateDropdown);\r\n }\r\n\r\n function getData(cb) {\r\n showAll = showAllPhrases === true ? \"Y\" : \"N\";\r\n const getPhrases = new Promise(function(resolve, reject) {\r\n caseNotesAjax.getCustomPhrases(showAll, res => {\r\n res.forEach(phrase => {\r\n let obj = { phrase: phrase.phrase, shortcut: phrase.phrase_shortcut };\r\n customPhrases[phrase.phrase_id] = obj;\r\n });\r\n resolve(\"Done\");\r\n });\r\n });\r\n Promise.all([getPhrases]).then(function() {\r\n cb();\r\n });\r\n }\r\n\r\n function createPopup() {\r\n let phrasesPopup = POPUP.build({\r\n header: \"Phrases\",\r\n hideX: true,\r\n id: \"phrasesPopup\"\r\n });\r\n\r\n phraseDropdown = dropdown.build({\r\n label: \"Phrases\",\r\n dropdownId: \"phraseDropdown\"\r\n });\r\n\r\n phraseNoteTextInput = input.build({\r\n label: \"Note\",\r\n type: \"textarea\",\r\n style: \"secondary\",\r\n value: currentNote\r\n });\r\n\r\n insertPhraseBtn = button.build({\r\n id: \"phraseInsertBtn\",\r\n text: \"insert\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n callback: function() {\r\n insertPhrase();\r\n }\r\n });\r\n\r\n let doneBtn = button.build({\r\n id: \"phraseDoneBtn\",\r\n text: \"done\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n callback: function() {\r\n phraseDone();\r\n }\r\n });\r\n\r\n let cancelBtn = button.build({\r\n id: \"phraseCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: function() {\r\n POPUP.hide(phrasesPopup);\r\n }\r\n });\r\n\r\n let allPhraseRadioDiv = document.createElement(\"div\")\r\n allPhraseRadioDiv.classList.add(\"cn__phraseRadioDiv\")\r\n allPhraseRadioDiv.innerHTML = `\r\n
    My Phrases
    \r\n
    All Phrases
    \r\n `\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n phrasesPopup.appendChild(allPhraseRadioDiv);\r\n phrasesPopup.appendChild(phraseDropdown);\r\n phrasesPopup.appendChild(fullPhraseDisplay);\r\n phrasesPopup.appendChild(insertPhraseBtn);\r\n phrasesPopup.appendChild(phraseNoteTextInput);\r\n phrasesPopup.appendChild(btnWrap);\r\n\r\n \r\n POPUP.show(phrasesPopup);\r\n addEventListeners();\r\n initialCheckRadio()\r\n }\r\n\r\n function initialCheckRadio() {\r\n let myPhraseRadio = document.getElementById(\"myPhraseRadio\")\r\n let allPhraseRadio = document.getElementById(\"allPhraseRadio\")\r\n if (showAllPhrases) {\r\n allPhraseRadio.checked = true;\r\n } else myPhraseRadio.checked = true;\r\n }\r\n\r\n function populateDropdown() {\r\n let data = Object.keys(customPhrases).map(key => {\r\n let fullPhrase = customPhrases[key].phrase;\r\n let trimedPhrase =\r\n fullPhrase.length > 35\r\n ? fullPhrase.slice(0, 35) + \" . . .\"\r\n : fullPhrase;\r\n return {\r\n value: key,\r\n text: `${customPhrases[key].shortcut} - ${trimedPhrase}`\r\n };\r\n });\r\n data.unshift({ value: \"0\", text: \"\" }); //ADD Blank value\r\n\r\n data.sort(function(a, b) {\r\n // alphabetize\r\n if (a.text < b.text) {\r\n return -1;\r\n }\r\n if (a.text > b.text) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n dropdown.populate(phraseDropdown, data);\r\n }\r\n\r\n function addEventListeners() {\r\n phraseDropdown.addEventListener(\"change\", event => {\r\n selectedPhraseId = event.target.options[event.target.selectedIndex].value;\r\n fullPhraseDisplay.innerHTML =\r\n selectedPhraseId === \"0\" ? \"\" : customPhrases[selectedPhraseId].phrase;\r\n });\r\n phraseNoteTextInput.addEventListener(\"mouseup\", event => {\r\n cursorSelection = {\r\n start: event.target.selectionStart,\r\n end: event.target.selectionEnd\r\n };\r\n });\r\n phraseNoteTextInput.addEventListener(\"keyup\", event => {\r\n currentNote = event.target.value;\r\n cursorSelection = {\r\n start: event.target.selectionStart,\r\n end: event.target.selectionEnd\r\n };\r\n });\r\n\r\n let myPhraseRadio = document.getElementById(\"myPhraseRadio\")\r\n myPhraseRadio.addEventListener(\"change\", event => {\r\n showAllPhrases = false;\r\n cn_PhraseLS.set(showAllPhrases)\r\n customPhrases = {};\r\n selectedPhraseId = null;\r\n fullPhraseDisplay.innerHTML = \"\";\r\n getData(populateDropdown);\r\n })\r\n let allPhraseRadio = document.getElementById(\"allPhraseRadio\")\r\n allPhraseRadio.addEventListener(\"change\", event => {\r\n showAllPhrases = true;\r\n cn_PhraseLS.set(showAllPhrases)\r\n customPhrases = {};\r\n selectedPhraseId = null;\r\n fullPhraseDisplay.innerHTML = \"\";\r\n getData(populateDropdown);\r\n })\r\n }\r\n\r\n function insertPhrase() {\r\n if (selectedPhraseId === \"0\") return;\r\n let insertPoint = [];\r\n if (cursorSelection === null) {\r\n insertPoint = [currentNote.length, currentNote.length];\r\n } else {\r\n insertPoint = [cursorSelection.start, cursorSelection.end];\r\n }\r\n let noteStart = currentNote.substr(0, insertPoint[0]).trim();\r\n let noteInsert = customPhrases[selectedPhraseId].phrase.trim();\r\n let noteEnd = currentNote.substr(insertPoint[1]).trim();\r\n\r\n currentNote = `${noteStart} ${noteInsert} ${noteEnd}`.trim();\r\n phraseNoteTextInput.querySelector(\r\n \".input-field__input\"\r\n ).value = currentNote;\r\n }\r\n\r\n function phraseDone() {\r\n currentNote = phraseNoteTextInput.querySelector(\".input-field__input\")\r\n .value;\r\n POPUP.hide(phrasesPopup);\r\n let cnNoteField = document.getElementById(\"noteTextField\");\r\n cnNoteField.value = currentNote;\r\n\r\n (isSSANote) ? noteSSA.cnPhrasesDone(currentNote) : note.cnPhrasesDone(currentNote)\r\n }\r\n\r\n const cn_PhraseLS = (function() {\r\n function get() {\r\n let user = $.session.UserId\r\n return localStorage.getItem(`user:${user} cn_showAllPhrases`)\r\n }\r\n function set(showAll) {\r\n let user = $.session.UserId\r\n localStorage.setItem(`user:${user} cn_showAllPhrases`, showAll)\r\n }\r\n return {\r\n get: get,\r\n set: set\r\n }\r\n })()\r\n\r\n return {\r\n show,\r\n phraseDone\r\n };\r\n})();\r\n","var newNote = (function () {\r\n let activeConsumers;\r\n // Action Nav Event Handler\r\n // ----------------------------------------\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n var consumerList = document.querySelector('[data-roster=\"enabled\"]');\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n\r\n initPageLoad();\r\n\r\n note.moveConsumerToConsumerSection();\r\n note.enableCard();\r\n\r\n DOM.toggleNavLayout();\r\n\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('casenotes');\r\n\r\n break;\r\n }\r\n }\r\n }\r\n //Save Attachments\r\n function saveAttachments(caseNoteId, attachments, saveAndNew) {\r\n const saveAttachmentPromArray = [];\r\n attachments.forEach(attachment => {\r\n const promise = new Promise((resolve, reject) => {\r\n caseNotesAjax.addCaseNoteAttachment(\r\n caseNoteId,\r\n attachment.description,\r\n attachment.type,\r\n attachment.arrayBuffer,\r\n res => {\r\n resolve('saved');\r\n },\r\n );\r\n });\r\n saveAttachmentPromArray.push(promise);\r\n });\r\n Promise.all(saveAttachmentPromArray).then(() => {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n note.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n });\r\n }\r\n\r\n // Save Note\r\n // ----------------------------------------\r\n /**\r\n *\r\n * @param {object} saveData\r\n * @param {*} overlapData\r\n * @param {*} selectedConsumerIds\r\n * @param {boolean} saveAndNew TRUE = Do Not go to review page, build a blank casenote so user can enter another note\r\n */\r\n function saveGroup(saveData, overlapData, selectedConsumerIds, saveAndNew) {\r\n var groupSavePromises = [];\r\n selectedConsumerIds.forEach(cId => {\r\n groupSavePromises.push(\r\n new Promise(function (fulfill, reject) {\r\n overlapData.consumerId = cId;\r\n\r\n if (saveData.casenotetraveltime === 'N') {\r\n saveData.casenotetraveltime = 0;\r\n }\r\n\r\n caseNotesAjax.caseNoteOverlapCheck(overlapData, function handleOverlapCheck(results) {\r\n if (results.length > 0) {\r\n //If the warning popup is already being displayed, skip and just save the record.\r\n //This prevents a popup from being created for each consumer being saved.\r\n if (document.getElementById('warningPopup')) {\r\n saveData.consumerGroupCount = selectedConsumerIds.length;\r\n saveData.consumerId = cId;\r\n caseNotesAjax.saveGroupCaseNote(saveData, function (results) {\r\n fulfill();\r\n });\r\n return;\r\n }\r\n var uniqueConsumers = [];\r\n results.forEach(r => {\r\n if (!uniqueConsumers.includes(r.consumername)) uniqueConsumers.push(r.consumername);\r\n });\r\n var warningText = `Time Overlap(s): ${uniqueConsumers.join(', ')}`;\r\n warningPopup(warningText, function () {\r\n saveData.consumerGroupCount = selectedConsumerIds.length;\r\n saveData.consumerId = cId;\r\n caseNotesAjax.saveGroupCaseNote(saveData, function (results) {\r\n fulfill();\r\n });\r\n });\r\n } else {\r\n saveData.consumerGroupCount = selectedConsumerIds.length;\r\n saveData.consumerId = cId;\r\n caseNotesAjax.saveGroupCaseNote(saveData, function (results) {\r\n fulfill();\r\n });\r\n }\r\n });\r\n }),\r\n );\r\n });\r\n\r\n Promise.all(groupSavePromises)\r\n .then(function (res) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n note.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n /**\r\n *\r\n * @param {object} saveData GEN Save Data\r\n * @param {array} attachments\r\n * @param {boolean} saveAndNew TRUE = Do Not go to review page, build a blank casenote so user can enter another note\r\n */\r\n function saveSingle(saveData, attachments, saveAndNew) {\r\n pendingSave.show();\r\n const parser = new DOMParser();\r\n caseNotesAjax.saveSingleCaseNote(saveData, function (results) {\r\n //SKIP ATTACHMENTS FOR ADVISOR\r\n if ($.session.applicationName === 'Advisor') {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n note.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n } else {\r\n if (results !== null) {\r\n const saveResponseDoc = parser.parseFromString(results, 'text/xml');\r\n const caseNoteId = saveResponseDoc.getElementsByTagName('caseNoteId')[0].childNodes[0].nodeValue;\r\n saveAttachments(caseNoteId, attachments, saveAndNew);\r\n } else {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n note.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n }\r\n }\r\n });\r\n }\r\n /**\r\n *\r\n * @param {object} opts Save Note Options\r\n * @param {boolean} opts.saveAndNew TRUE = Do Not go to review page, build a blank casenote so user can enter another note\r\n * @param {*} attachments\r\n */\r\n function saveNote(opts, attachments) {\r\n var isGroup = opts.selectedConsumerIds.length > 1 ? true : false;\r\n\r\n if (isGroup) {\r\n caseNotesAjax.getGroupNoteId(function handleGettingGroupNoteId(results) {\r\n opts.saveData.groupNoteId = results[0].groupNoteId;\r\n saveGroup(opts.saveData, opts.overlapData, opts.selectedConsumerIds, opts.saveAndNew);\r\n });\r\n } else {\r\n opts.selectedConsumerIds.forEach(id => {\r\n opts.overlapData.consumerId = id;\r\n caseNotesAjax.caseNoteOverlapCheck(opts.overlapData, function handleOverlapCheck(results) {\r\n if (results.length > 0) {\r\n var uniqueConsumers = [];\r\n results.forEach(r => {\r\n if (!uniqueConsumers.includes(r.consumername)) uniqueConsumers.push(r.consumername);\r\n });\r\n var warningText = `Time Overlap(s): ${uniqueConsumers.join(', ')}`;\r\n warningPopup(warningText, function () {\r\n opts.saveData.consumerId = id;\r\n saveSingle(opts.saveData, attachments, opts.saveAndNew);\r\n });\r\n } else {\r\n opts.saveData.consumerId = id;\r\n saveSingle(opts.saveData, attachments, opts.saveAndNew);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n function warningPopup(text, warningBtnFunction) {\r\n var popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n });\r\n var continueBtn = button.build({\r\n text: 'continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n warningBtnFunction();\r\n POPUP.hide(popup);\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(continueBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = text;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n function checkMicError() {\r\n const NUSAI_popup = document.querySelector('.NUSAI_popupMessageContainer.error');\r\n if (NUSAI_popup) {\r\n const parent = NUSAI_popup.parentElement;\r\n parent.removeChild(NUSAI_popup);\r\n document.getElementById('NUSAI_CommandBar_Container').remove();\r\n }\r\n }\r\n\r\n // ----------------------------------------\r\n function initPageLoad(dashboardConsumer) {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n // if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n\r\n var noConsumerMessage = document.createElement('h3');\r\n noConsumerMessage.setAttribute('id', 'noConsumerMessage');\r\n noConsumerMessage.innerHTML = `Please select a consumer to get started.`;\r\n\r\n var container = document.createElement('div');\r\n container.classList.add('caseNotes');\r\n\r\n var noteCard = note.buildCaseNoteCard();\r\n var consumersList = note.buildConsumersList();\r\n\r\n container.appendChild(noConsumerMessage);\r\n container.appendChild(consumersList);\r\n container.appendChild(noteCard);\r\n DOM.ACTIONCENTER.insertBefore(container, DOM.ACTIONCENTER.childNodes[0]);\r\n\r\n note.disableCard(); // disabled until consumers are moved\r\n\r\n note.checkRequiredFields();\r\n note.setPermissions();\r\n window.setTimeout(checkMicError, 3000);\r\n }\r\n\r\n function init(dashboardConsumer) {\r\n if (dashboardConsumer) {\r\n initPageLoad(dashboardConsumer);\r\n } else {\r\n setActiveModuleSectionAttribute('caseNotes-new');\r\n roster2.setAllowedConsumers(['%']);\r\n roster2.showMiniRoster();\r\n }\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n saveNote,\r\n checkMicError,\r\n init,\r\n };\r\n})();\r\n","var newNoteSSA = (function () {\r\n let selectedConsumers;\r\n let activeConsumers;\r\n // Action Nav Event Handler\r\n // ----------------------------------------\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n var consumerList = document.querySelector('[data-roster=\"enabled\"]');\r\n var consumerListBtn = document.querySelector('.consumerListBtn');\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n activeConsumers = roster2.getActiveConsumers();\r\n\r\n if (activeConsumers.length === 1) {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n initPageLoad(activeConsumers[0].id);\r\n var isGroup = false;\r\n noteSSA.moveConsumerToConsumerSection(activeConsumers, isGroup);\r\n noteSSA.enableCard();\r\n DOM.toggleNavLayout();\r\n } else {\r\n // if user selects a consumer without deleting the previously selected consumer\r\n\r\n // 1. get currently selected consumer\r\n var selectedConsumerId = activeConsumers[activeConsumers.length - 1].id;\r\n var consumerName = activeConsumers[activeConsumers.length - 1].card.innerText.replace(\r\n /\\s/g,\r\n '',\r\n );\r\n var consumerNameArr = consumerName.split(',');\r\n var consumerFN = consumerNameArr[1];\r\n var consumerLN = consumerNameArr[0];\r\n\r\n // 2. create consumer object (with currently selected consumer)\r\n var consumerobj = null;\r\n consumerobj = roster2.buildConsumerCard({\r\n FN: consumerFN,\r\n LN: consumerLN,\r\n id: selectedConsumerId,\r\n });\r\n\r\n // 3. remove all consumers from the activeConsumers list\r\n if (activeConsumers.length > 0) {\r\n activeConsumers.forEach(consumer => {\r\n roster2.removeConsumerFromActiveConsumers(consumer.id);\r\n });\r\n }\r\n\r\n // 4. add the currently selected consumer to the list\r\n roster2.addConsumerToActiveConsumers(consumerobj);\r\n activeConsumers = roster2.getActiveConsumers();\r\n\r\n // 5. Display currently selected consumer\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter(); //\r\n // roster2.selectedConsumersToActiveList();\r\n initPageLoad(activeConsumers[0].id);\r\n var isGroup = false;\r\n noteSSA.moveConsumerToConsumerSection(activeConsumers, isGroup);\r\n noteSSA.enableCard();\r\n DOM.toggleNavLayout();\r\n }\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n // consumerListBtn.classList.add('hidden');\r\n DOM.toggleNavLayout();\r\n loadApp('casenotes');\r\n break;\r\n }\r\n }\r\n }\r\n //Save Attachments\r\n function saveAttachments(caseNoteId, attachments, saveAndNew) {\r\n const saveAttachmentPromArray = [];\r\n attachments.forEach(attachment => {\r\n const promise = new Promise((resolve, reject) => {\r\n caseNotesAjax.addCaseNoteAttachment(\r\n caseNoteId,\r\n attachment.description,\r\n attachment.type,\r\n attachment.arrayBuffer,\r\n res => {\r\n resolve('saved');\r\n },\r\n );\r\n });\r\n saveAttachmentPromArray.push(promise);\r\n });\r\n Promise.all(saveAttachmentPromArray).then(() => {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n noteSSA.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n });\r\n }\r\n\r\n // Save Note\r\n // ----------------------------------------\r\n function saveGroup(saveData, overlapData, selectedConsumerIds) {\r\n var groupSavePromises = [];\r\n selectedConsumerIds.forEach(cId => {\r\n groupSavePromises.push(\r\n new Promise(function (fulfill, reject) {\r\n overlapData.consumerId = cId;\r\n\r\n caseNotesAjax.caseNoteOverlapCheck(overlapData, function handleOverlapCheck(results) {\r\n if (results.length > 0) {\r\n //If the warning popup is already being displayed, skip and just save the record.\r\n //This prevents a popup from being created for each consumer being saved.\r\n if (document.getElementById('warningPopup')) {\r\n saveData.consumerGroupCount = selectedConsumerIds.length;\r\n saveData.consumerId = cId;\r\n caseNotesAjax.saveGroupCaseNote(saveData, function (results) {\r\n fulfill();\r\n });\r\n return;\r\n }\r\n var uniqueConsumers = [];\r\n results.forEach(r => {\r\n if (!uniqueConsumers.includes(r.consumername)) uniqueConsumers.push(r.consumername);\r\n });\r\n var warningText = `Time Overlap(s): ${uniqueConsumers.join(', ')}`;\r\n warningPopup(warningText, function () {\r\n saveData.consumerGroupCount = selectedConsumerIds.length;\r\n saveData.consumerId = cId;\r\n caseNotesAjax.saveGroupCaseNote(saveData, function (results) {\r\n fulfill();\r\n });\r\n });\r\n } else {\r\n saveData.consumerGroupCount = selectedConsumerIds.length;\r\n saveData.consumerId = cId;\r\n caseNotesAjax.saveGroupCaseNote(saveData, function (results) {\r\n fulfill();\r\n });\r\n }\r\n });\r\n }),\r\n );\r\n });\r\n\r\n Promise.all(groupSavePromises)\r\n .then(function (res) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n noteSSA.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n function saveSingle(saveData, attachments, saveAndNew) {\r\n pendingSave.show();\r\n const parser = new DOMParser();\r\n caseNotesAjax.saveSingleCaseNote(saveData, function (results) {\r\n //SKIP ATTACHMENTS FOR ADVISOR\r\n if ($.session.applicationName === 'Advisor') {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n noteSSA.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n } else {\r\n if (results !== null) {\r\n const saveResponseDoc = parser.parseFromString(results, 'text/xml');\r\n const caseNoteId = saveResponseDoc.getElementsByTagName('caseNoteId')[0].childNodes[0]\r\n .nodeValue;\r\n saveAttachments(caseNoteId, attachments, saveAndNew);\r\n } else {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n noteSSA.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n }\r\n }\r\n });\r\n }\r\n function saveNote(opts, attachments) {\r\n var isGroup = opts.selectedConsumerIds.length > 1 ? true : false;\r\n\r\n if (isGroup) {\r\n caseNotesAjax.getGroupNoteId(function handleGettingGroupNoteId(results) {\r\n opts.saveData.groupNoteId = results[0].groupNoteId;\r\n saveGroup(opts.saveData, opts.overlapData, opts.selectedConsumerIds, opts.saveAndNew);\r\n });\r\n } else {\r\n opts.selectedConsumerIds.forEach(id => {\r\n opts.overlapData.consumerId = id;\r\n caseNotesAjax.caseNoteOverlapCheck(opts.overlapData, function handleOverlapCheck(results) {\r\n if (results.length > 0) {\r\n var uniqueConsumers = [];\r\n results.forEach(r => {\r\n if (!uniqueConsumers.includes(r.consumername)) uniqueConsumers.push(r.consumername);\r\n });\r\n var warningText = `Time Overlap(s): ${uniqueConsumers.join(', ')}`;\r\n warningPopup(warningText, function () {\r\n opts.saveData.consumerId = id;\r\n saveSingle(opts.saveData, attachments, opts.saveAndNew);\r\n });\r\n } else {\r\n opts.saveData.consumerId = id;\r\n saveSingle(opts.saveData, attachments, opts.saveAndNew);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n function warningPopup(text, warningBtnFunction) {\r\n var popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n });\r\n var continueBtn = button.build({\r\n text: 'continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n warningBtnFunction();\r\n POPUP.hide(popup);\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(continueBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = text;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n function checkMicError() {\r\n const NUSAI_popup = document.querySelector('.NUSAI_popupMessageContainer.error');\r\n if (NUSAI_popup) {\r\n const parent = NUSAI_popup.parentElement;\r\n parent.removeChild(NUSAI_popup);\r\n document.getElementById('NUSAI_CommandBar_Container').remove();\r\n }\r\n }\r\n\r\n // ----------------------------------------\r\n function initPageLoad(selectedConsumerId) {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit(); // Only build miniroster if it doesn't exits yet\r\n\r\n var noConsumerMessage = document.createElement('h3');\r\n noConsumerMessage.setAttribute('id', 'noConsumerMessage');\r\n noConsumerMessage.innerHTML = `Please select a consumer to get started.`;\r\n\r\n var container = document.createElement('div');\r\n container.classList.add('caseNotes');\r\n\r\n var noteCard = noteSSA.buildCaseNoteCard(selectedConsumerId);\r\n var consumersList = noteSSA.buildConsumersList();\r\n\r\n container.appendChild(noConsumerMessage);\r\n container.appendChild(consumersList);\r\n container.appendChild(noteCard);\r\n DOM.ACTIONCENTER.insertBefore(container, DOM.ACTIONCENTER.childNodes[0]);\r\n\r\n noteSSA.disableCard(); // disabled until consumers are moved\r\n\r\n noteSSA.checkRequiredFields();\r\n // if ($.session.applicationName === \"Gatekeeper\") noteSSA.checkGKRequiredFields();\r\n noteSSA.setPermissions();\r\n window.setTimeout(checkMicError, 3000);\r\n }\r\n\r\n function init() {\r\n setActiveModuleSectionAttribute('caseNotesSSA-new');\r\n roster2.setAllowedConsumers(['%']);\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n saveNote,\r\n checkMicError,\r\n init,\r\n };\r\n})();\r\n","var note = (function () {\r\n // DOM Stuff\r\n let caseNoteCard;\r\n let serviceDateInput, startTimeInput, endTimeInput, noteTextInput, mileageInput;\r\n let serviceCodeDropdown; // billing/service code\r\n let locationDropdown,\r\n serviceDropdown,\r\n serviceLocationDropdown,\r\n needDropdown,\r\n vendorDropdown,\r\n contactDropdown;\r\n let myPhrasesBtn,\r\n deleteNoteBtn,\r\n cancelNoteBtn,\r\n timerStartBtn,\r\n timerStopBtn,\r\n consumerListBtn,\r\n attachmentsBtn,\r\n saveAndNewNoteBtn;\r\n let confidentialCheckbox;\r\n let serviceMonitoringCheckbox;\r\n let docTimeMinutesField, travelTimeMinutesField;\r\n let groupNoteDisplay;\r\n // Values & Data\r\n var selectedConsumerIds = [];\r\n var dropdownDataKeys;\r\n var dropdownData = {};\r\n var billers; // for casemanager dropdown\r\n var consumersThatCanHaveMileage;\r\n var defaultServiceCode;\r\n var pageLoaded;\r\n var timerRunning;\r\n var groupData;\r\n var lastUpdatedBy;\r\n var enteredBy;\r\n var lastUpdated;\r\n var groupConsumers;\r\n var mileage;\r\n let billerDropdownData;\r\n let fromDashboard;\r\n let dashboardConsumer;\r\n // GK Required\r\n var gkLocationRequired;\r\n var gkNeedRequired;\r\n var gkContactRequired;\r\n var gkServiceRequired;\r\n var gkAllowGroupNotes;\r\n var gkMileageRequired;\r\n // note data\r\n var noteId;\r\n var credit;\r\n var serviceCode;\r\n var locationId;\r\n var serviceId;\r\n var serviceLocationId;\r\n var needId;\r\n var vendorId;\r\n var contactId;\r\n var serviceDate;\r\n var startTime;\r\n var endTime;\r\n var noteText;\r\n var confidential;\r\n var serviceMonitoring;\r\n var reviewRequired;\r\n var documentationTime;\r\n var travelTime;\r\n //Attachment\r\n let tempAttachmentArray = [],\r\n reviewAttachmentArray = [],\r\n attachmentCount;\r\n // Revew Note Data Only\r\n var caseManagerId;\r\n var consumerId;\r\n var consumerName;\r\n var reviewData; // all the data\r\n var reviewResults;\r\n var reviewRejectReason;\r\n var correctedCheckbox;\r\n var corrected;\r\n let isGroupNote;\r\n var allowGroupNotes;\r\n var convertToGroupNote = false; //When reviewing a single note, more consumers can be added to convert it to group note.\r\n var rd;\r\n // Permisisons\r\n var viewOnly;\r\n var cnBatched;\r\n //need for required fields\r\n var gkLocationRequired = '';\r\n var gkServiceRequired = '';\r\n var gkNeedRequired = '';\r\n var gkContactRequired = '';\r\n var advLocationRequired = '';\r\n var advServiceRequired = '';\r\n var advNeedRequired = '';\r\n var advContactRequired = '';\r\n // case note inputs\r\n var isReadOnly;\r\n\r\n // Utils\r\n // ----------------------------------------\r\n function warningPopup(text, continueFunc, cancelFunc, hide_X = true) {\r\n const popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n hideX: hide_X,\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n if (continueFunc) {\r\n const continueBtn = button.build({\r\n text: 'continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n continueFunc();\r\n },\r\n });\r\n btnWrap.appendChild(continueBtn);\r\n }\r\n if (cancelFunc) {\r\n var cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n cancelFunc();\r\n },\r\n });\r\n btnWrap.appendChild(cancelBtn);\r\n }\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = text;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function validateTimesWhenDateChange() {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n // var startTime = UTIL.convertToMilitary(startInput.value);\r\n var startTime = startInput.value;\r\n // var endTime = UTIL.convertToMilitary(endInput.value);\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n let isTimeValid;\r\n isTimeValid = true;\r\n\r\n if (dateInput.value === currentDate) {\r\n isTimeValid = currentTime < startTime || currentTime < endTime ? false : true; // current date: can't have Time be future time\r\n }\r\n\r\n if (startTime >= endTime) {\r\n isTimeValid = false; // any date: startTime can't be after endTime\r\n }\r\n\r\n if (startTime === '' || endTime === '') {\r\n isTimeValid = false; // start time and end time are required\r\n }\r\n\r\n //isTimeValid = startTime >= endTime ? false : true; // any date: startTime can't be after endTime\r\n\r\n return {\r\n isValid: isTimeValid,\r\n startTime,\r\n endTime,\r\n };\r\n }\r\n function checkIfSameDates() {\r\n var dateEntered = new Date(serviceDateInput.value);\r\n var todaysDate = new Date();\r\n dateEntered = dateEntered.getMilliseconds();\r\n todaysDate = todaysDate.getMilliseconds();\r\n\r\n return dateEntered === todaysDate ? 0 : 1;\r\n }\r\n\r\n function validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n }\r\n\r\n function setNoteValues(reviewData) {\r\n if (pageLoaded === 'new') {\r\n caseManagerId = $.session.PeopleId;\r\n consumerId = '';\r\n consumerName = '';\r\n allowGroupNotes = false;\r\n\r\n noteId = 0;\r\n serviceCode = '';\r\n locationId = '';\r\n serviceId = '';\r\n serviceLocationId = '';\r\n needId = '';\r\n vendorId = '';\r\n contactId = '';\r\n serviceDate = UTIL.getTodaysDate();\r\n startTime = UTIL.getCurrentTime();\r\n endTime = '';\r\n noteText = '';\r\n confidential = 'N';\r\n serviceMonitoring = 'N'\r\n corrected = 'N';\r\n reviewRequired = '';\r\n } else {\r\n rd = reviewData[0];\r\n isGroupNote = rd.groupid === '' ? false : true;\r\n\r\n caseManagerId = rd.casemanagerid;\r\n consumerId = rd.consumerid;\r\n consumerName = rd.consumername;\r\n noteId = rd.noteid;\r\n groupNoteId = rd.groupid === '' ? 0 : rd.groupid;\r\n credit = rd.credit;\r\n serviceCode = rd.mainbillingorservicecodeid; // serv/bill code\r\n locationId = rd.locationcode;\r\n serviceId = rd.servicecode; // services\r\n serviceLocationId = rd.servicelocationid;\r\n needId = rd.serviceneedcode;\r\n vendorId = rd.vendorid;\r\n contactId = rd.contactcode;\r\n serviceDate = UTIL.formatDateToIso(rd.servicedate.split(' ')[0]);\r\n startTime = rd.starttime;\r\n endTime = rd.endtime;\r\n noteText = rd.casenote;\r\n confidential = rd.confidential;\r\n serviceMonitoring = rd.outcomeServiceMonitoring;\r\n corrected = rd.corrected;\r\n reviewRequired = rd.reviewrequired === '' ? 'N' : rd.reviewrequired;\r\n reviewResults = rd.reviewresults;\r\n reviewRejectReason = rd.rejectionreason;\r\n documentationTime = rd.totaldoctime;\r\n travelTime = rd.traveltime;\r\n lastUpdated = rd.lastupdate;\r\n enteredBy = rd.originaluserid;\r\n cnBatched = rd.batched;\r\n originalUserName = rd.originaluserfullname;\r\n mileage = rd.totalmiles;\r\n }\r\n }\r\n function checkIfBatched() {\r\n return cnBatched !== '' ? true : false;\r\n }\r\n\r\n function checkIfCredit() {\r\n return credit === 'Y' || credit === '-1' ? true : false; //ADVUNIT: '-1' and GKUNIT: 'Y'\r\n }\r\n\r\n function isCaseNoteReadOnly() {\r\n if (credit === 'Y' || credit === '-1') {\r\n isReadOnly = true;\r\n // } else if (caseManagerId !== $.session.PeopleId) {\r\n // isReadOnly = true;\r\n } else {\r\n isReadOnly = false;\r\n }\r\n }\r\n function showTimeWarningPopup(callback) {\r\n const timeWarningPop = POPUP.build({\r\n id: 'timeWarningPop',\r\n classNames: 'warning',\r\n hideX: hide_X,\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.innerText = `The times you have entered\r\n are outside the current normal working hours. Click OK to\r\n proceed or cacnel to return to the form.`;\r\n\r\n const okBtn = button.build({\r\n text: 'ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(timeWarningPop);\r\n callback();\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n POPUP.hide(timeWarningPop);\r\n },\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(okBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n timeWarningPop.appendChild(message);\r\n timeWarningPop.appendChild(btnWrap);\r\n\r\n POPUP.show(timeWarningPop);\r\n }\r\n\r\n async function noteSaveUpdate(saveAndNew) {\r\n //Remove the selected consumer from active list\r\n selectedConsumerIds.forEach(cId => {\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n var vendorInput = vendorDropdown.firstElementChild;\r\n var locationInput = locationDropdown.firstElementChild;\r\n var serviceInput = serviceDropdown.firstElementChild;\r\n var needInput = needDropdown.firstElementChild;\r\n var contactInput = contactDropdown.firstElementChild;\r\n documentationTimer.stopTimer;\r\n noteText = UTIL.removeUnsavableNoteText(noteText);\r\n // If they are converting from a single note to a group note, delete existing note and create a new note classified as a group note\r\n if (convertToGroupNote) {\r\n await singleNoteToGroupNote();\r\n }\r\n if (pageLoaded === 'new') {\r\n var overlapData = {\r\n consumerId,\r\n startTime,\r\n endTime,\r\n serviceDate,\r\n caseManagerId,\r\n noteId: 0,\r\n groupNoteId: 0,\r\n };\r\n var saveData = {\r\n caseManagerId,\r\n noteId,\r\n // dropdowns\r\n serviceOrBillingCodeId: serviceCode,\r\n locationCode: locationId,\r\n serviceCode: serviceId,\r\n needCode: needId,\r\n serviceDate,\r\n startTime,\r\n endTime,\r\n vendorId: vendorInput.value,\r\n contactCode: contactId,\r\n serviceLocationCode: serviceLocationId,\r\n caseNote: noteText, // from note input\r\n confidential, // from checkbox\r\n corrected, // from checkbox \r\n \r\n casenotemileage: String(mileage) === 'null' ? '0' : String(mileage),\r\n casenotetraveltime: String(travelTime),\r\n documentationTime: String(documentationTime),\r\n reviewRequired,\r\n serviceMonitoring, // from checkbox\r\n };\r\n newNote.saveNote(\r\n { overlapData, saveData, selectedConsumerIds, saveAndNew },\r\n tempAttachmentArray,\r\n );\r\n return;\r\n }\r\n\r\n if (pageLoaded === 'review') {\r\n // clean start time and end time:\r\n endTime = endTime.length === 8 ? endTime.substring(0, 5) : endTime;\r\n startTime = startTime.length === 8 ? startTime.substring(0, 5) : startTime;\r\n var updateOverlapData = {\r\n consumerId,\r\n startTime,\r\n endTime,\r\n serviceDate,\r\n caseManagerId,\r\n noteId,\r\n groupNoteId,\r\n };\r\n var updateData = {\r\n noteId,\r\n groupNoteId,\r\n caseManagerId,\r\n consumerId,\r\n serviceOrBillingCodeId: serviceCode,\r\n locationCode:\r\n locationInput.selectedIndex === -1\r\n ? 0\r\n : locationInput.options[locationInput.selectedIndex].value,\r\n serviceCode:\r\n serviceInput.selectedIndex === -1\r\n ? 0\r\n : serviceInput.options[serviceInput.selectedIndex].value,\r\n needCode:\r\n needInput.selectedIndex === -1 ? 0 : needInput.options[needInput.selectedIndex].value,\r\n serviceDate,\r\n startTime,\r\n endTime,\r\n vendorId,\r\n contactCode:\r\n contactInput.selectedIndex === -1\r\n ? 0\r\n : contactInput.options[contactInput.selectedIndex].value,\r\n serviceLocationCode: serviceLocationId,\r\n reviewRequired,\r\n confidential,\r\n corrected,\r\n serviceMonitoring,\r\n caseNote: noteText,\r\n casenotemileage: String(mileage) === 'null' ? '' : String(mileage),\r\n casenotetraveltime: travelTime === null ? String(0) : String(travelTime),\r\n documentationTime: documentationTime === null ? String(0) : String(documentationTime),\r\n };\r\n reviewNote.updateNote(\r\n { overlapData: updateOverlapData, updateData, selectedConsumerIds, isGroupNote },\r\n tempAttachmentArray,\r\n );\r\n }\r\n }\r\n\r\n // Dropdowns\r\n // ----------------------------------------\r\n function dealWithDropdownDataHugeString(res) {\r\n function decipherXML(res) {\r\n var xmlDoc,\r\n data = [];\r\n xmlDoc = UTIL.parseXml(\r\n '' + res.populateDropdownDataResult,\r\n );\r\n\r\n var billingCodes = [].slice.call(xmlDoc.getElementsByTagName('billingcode'));\r\n billingCodes.forEach(bc => {\r\n var tmpServiceCode = [].slice.call(bc.getElementsByTagName('codename'))[0];\r\n var tmpServiceId = [].slice.call(bc.getElementsByTagName('serviceid'))[0];\r\n var tmpServiceFunding = [].slice.call(bc.getElementsByTagName('includeinfunding'))[0];\r\n var tmpServiceRequired = [].slice.call(bc.getElementsByTagName('servicerequired'))[0];\r\n var tmpLocationRequired = [].slice.call(bc.getElementsByTagName('locationrequired'))[0];\r\n var tmpNeedRequired = [].slice.call(bc.getElementsByTagName('needrequired'))[0];\r\n var tmpContactRequired = [].slice.call(bc.getElementsByTagName('contactrequired'))[0];\r\n var tmpAllowGroupNotes = [].slice.call(bc.getElementsByTagName('allowgroupnotes'))[0];\r\n var tmpMileageRequired = [].slice.call(bc.getElementsByTagName('mileagerequired'))[0];\r\n var tmpDocTimeRequired = [].slice.call(bc.getElementsByTagName('doctimerequired'))[0];\r\n var tmpTravelTimeRequired = [].slice.call(bc.getElementsByTagName('traveltimerequired'))[0];\r\n var locations = [].slice.call(bc.getElementsByTagName('location'));\r\n var contacts = [].slice.call(bc.getElementsByTagName('contact'));\r\n var services = [].slice.call(bc.getElementsByTagName('service'));\r\n var needs = [].slice.call(bc.getElementsByTagName('need'));\r\n\r\n var tmpObject = {};\r\n tmpObject.serviceCode = tmpServiceCode ? tmpServiceCode.textContent : '';\r\n tmpObject.serviceId = tmpServiceId ? tmpServiceId.textContent : '';\r\n tmpObject.serviceFunding = tmpServiceFunding ? tmpServiceFunding.textContent : '';\r\n tmpObject.serviceRequired = tmpServiceRequired ? tmpServiceRequired.textContent : '';\r\n tmpObject.locationRequired = tmpLocationRequired ? tmpLocationRequired.textContent : '';\r\n tmpObject.needRequired = tmpNeedRequired ? tmpNeedRequired.textContent : '';\r\n tmpObject.contactRequired = tmpContactRequired ? tmpContactRequired.textContent : '';\r\n tmpObject.allowGroupNotes = tmpAllowGroupNotes ? tmpAllowGroupNotes.textContent : '';\r\n tmpObject.mileageRequired = tmpMileageRequired ? tmpMileageRequired.textContent : '';\r\n tmpObject.docTimeRequired = tmpDocTimeRequired ? tmpDocTimeRequired.textContent : '';\r\n tmpObject.travelTimeRequired = tmpTravelTimeRequired\r\n ? tmpTravelTimeRequired.textContent\r\n : '';\r\n tmpObject.locations = [];\r\n tmpObject.contacts = [];\r\n tmpObject.services = [];\r\n tmpObject.needs = [];\r\n\r\n locations.forEach(loc => {\r\n var tmpLocName = [].slice.call(loc.getElementsByTagName('locname'))[0].textContent;\r\n var tmpLocCode = [].slice.call(loc.getElementsByTagName('loccode'))[0].textContent;\r\n tmpObject.locations.push({\r\n locName: tmpLocName,\r\n locCode: tmpLocCode,\r\n });\r\n });\r\n contacts.forEach(loc => {\r\n var tmpContactName = [].slice.call(loc.getElementsByTagName('contactname'))[0]\r\n .textContent;\r\n var tmpContactCode = [].slice.call(loc.getElementsByTagName('contactcode'))[0]\r\n .textContent;\r\n tmpObject.contacts.push({\r\n contactName: tmpContactName,\r\n contactCode: tmpContactCode,\r\n });\r\n });\r\n services.forEach(loc => {\r\n var tmpServiceName = [].slice.call(loc.getElementsByTagName('servicename'))[0]\r\n .textContent;\r\n var tmpServiceCode = [].slice.call(loc.getElementsByTagName('servicecode'))[0]\r\n .textContent;\r\n tmpObject.services.push({\r\n serviceName: tmpServiceName,\r\n serviceCode: tmpServiceCode,\r\n });\r\n });\r\n needs.forEach(loc => {\r\n var tmpNeedName = [].slice.call(loc.getElementsByTagName('needname'))[0].textContent;\r\n var tmpNeedCode = [].slice.call(loc.getElementsByTagName('needcode'))[0].textContent;\r\n tmpObject.needs.push({\r\n needName: tmpNeedName,\r\n needCode: tmpNeedCode,\r\n });\r\n });\r\n\r\n data.push(tmpObject);\r\n });\r\n\r\n return data;\r\n }\r\n\r\n var beautifulObject = decipherXML(res);\r\n\r\n // create object for quick access\r\n beautifulObject.forEach(dd => {\r\n // create object for each billercode\r\n if (!dropdownData[dd.serviceId]) {\r\n dropdownData[dd.serviceId] = {\r\n serviceId: dd.serviceId,\r\n serviceCode: dd.serviceCode,\r\n serviceFunding: dd.serviceFunding,\r\n locations: [...dd.locations],\r\n contacts: [...dd.contacts],\r\n services: [...dd.services],\r\n needs: [...dd.needs],\r\n docTimeRequired: dd.docTimeRequired,\r\n travelTimeRequired: dd.travelTimeRequired,\r\n mileageRequired: dd.mileageRequired,\r\n locationRequired: dd.locationRequired,\r\n needRequired: dd.needRequired,\r\n serviceRequired: dd.serviceRequired,\r\n contactRequired: dd.contactRequired,\r\n allowGroupNotes: dd.allowGroupNotes,\r\n };\r\n }\r\n });\r\n // dropdownData[\"\"] = {\r\n // serviceId: \"\",\r\n // serviceCode: \"\",\r\n // serviceFunding: \"\",\r\n // locations: [{locName:\"\", locCode: \"\"}],\r\n // contacts: [{contactName:\"\", contactCode: \"\"}],\r\n // services: [{serviceName:\"\", serviceCode: \"\"}],\r\n // needs: [{needName:\"\", needCode: \"\"}],\r\n // docTimeRequired: \"\",\r\n // travelTimeRequired: \"\",\r\n // mileageRequired: \"\"\r\n // }\r\n dropdownDataKeys = Object.keys(dropdownData);\r\n return dropdownData;\r\n }\r\n\r\n function checkServiceFunding() {\r\n if ($.session.applicationName === 'Advisor') {\r\n if (\r\n serviceCodeDropdown.firstChild.options[\r\n serviceCodeDropdown.firstChild.selectedIndex\r\n ].getAttribute('data-service-funding') === 'N'\r\n ) {\r\n serviceLocationDropdown.classList.add('hidden');\r\n serviceLocationDropdown.classList.remove('error');\r\n serviceLocationDropdown.firstChild.selectedIndex = 0;\r\n serviceLocationId = '00';\r\n } else {\r\n serviceLocationDropdown.classList.remove('hidden');\r\n if (serviceLocationId === '' || serviceLocationId === '00')\r\n serviceLocationDropdown.classList.add('error');\r\n }\r\n }\r\n }\r\n\r\n function populateBillerDropdown() {\r\n billerDropdownData = dropdownDataKeys.map((key, index) => {\r\n if (index === 1) serviceCode = key;\r\n return {\r\n value: dropdownData[key].serviceId,\r\n text: UTIL.removeQuotes(dropdownData[key].serviceCode),\r\n attributes: [\r\n { key: 'data-service-funding', value: dropdownData[key].serviceFunding },\r\n { key: 'data-allowGroupNotes', value: dropdownData[key].allowGroupNotes },\r\n ],\r\n };\r\n });\r\n\r\n billerDropdownData.unshift({ id: '0', value: '', text: '' }); //ADD Blank value\r\n billerDropdownData.sort(function (a, b) {\r\n // alphabetize\r\n if (a.text < b.text) {\r\n return -1;\r\n }\r\n if (a.text > b.text) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n var defaultVal;\r\n\r\n defaultVal = defaultServiceCode;\r\n\r\n if (rd && rd.mainbillingorservicecodeid) {\r\n serviceCode = rd.mainbillingorservicecodeid;\r\n defaultVal = serviceCode;\r\n } else {\r\n serviceCode = defaultVal;\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n allowGroupNotes = true;\r\n } else {\r\n if (pageLoaded === 'review') {\r\n allowGroupNotes = dropdownData[defaultVal].allowGroupNotes === 'Y' ? true : false;\r\n }\r\n }\r\n\r\n dropdown.populate(serviceCodeDropdown, billerDropdownData, defaultVal);\r\n populateBillerRelatedDropdowns();\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n checkGKRequiredFields();\r\n }\r\n }\r\n function populateLocationDrodown() {\r\n var locations = dropdownData[serviceCode].locations;\r\n var data = locations.map(loc => {\r\n return {\r\n value: loc.locCode,\r\n text: loc.locName,\r\n };\r\n });\r\n\r\n data.unshift({ value: '', text: '' });\r\n\r\n var defaultVal;\r\n\r\n if (rd && rd.locationcode) {\r\n locationId = rd.locationcode;\r\n defaultVal = rd.locationcode;\r\n } else {\r\n locationId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'locationDropdwn');\r\n\r\n dropdown.populate(locationDropdown, data, defaultVal);\r\n }\r\n function populateServicesDrodown() {\r\n var services = dropdownData[serviceCode].services;\r\n var data = services.map(service => {\r\n return {\r\n value: service.serviceCode,\r\n text: service.serviceName,\r\n };\r\n });\r\n\r\n data.unshift({ value: '', text: '' });\r\n var defaultVal;\r\n\r\n if (rd && rd.servicecode) {\r\n defaultVal = rd.servicecode;\r\n } else {\r\n serviceId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'serviceDropdwn');\r\n\r\n dropdown.populate(serviceDropdown, data, defaultVal);\r\n }\r\n function populateContactsDrodown() {\r\n var contacts = dropdownData[serviceCode].contacts;\r\n\r\n //if contacts.length =\r\n\r\n var data = contacts.map(contact => {\r\n return {\r\n value: contact.contactCode,\r\n text: contact.contactName,\r\n };\r\n });\r\n data.unshift({ value: '', text: '' });\r\n var defaultVal;\r\n\r\n if (rd && rd.contactcode) {\r\n defaultVal = rd.contactcode;\r\n } else {\r\n contactId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'contactDropdwn');\r\n\r\n dropdown.populate(contactDropdown, data, defaultVal);\r\n }\r\n function populateNeedsDrodown() {\r\n var needs = dropdownData[serviceCode].needs;\r\n var data = needs.map(need => {\r\n return {\r\n value: need.needCode,\r\n text: need.needName,\r\n };\r\n });\r\n data.unshift({ value: '', text: '' });\r\n var defaultVal;\r\n\r\n if (rd && rd.serviceneedcode) {\r\n defaultVal = rd.serviceneedcode;\r\n } else {\r\n needId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'needDropdwn');\r\n\r\n dropdown.populate(needDropdown, data, defaultVal);\r\n }\r\n\r\n function dropDownDisplay(data, dropDown) {\r\n if (data.length > 1) {\r\n document.getElementById(dropDown).parentElement.style.display = '';\r\n //$(\"#needDropdwn\").show();\r\n } else {\r\n document.getElementById(dropDown).parentElement.style.display = 'none';\r\n //$(\"#needDropdwn\").hide();\r\n }\r\n }\r\n\r\n function populateBillerRelatedDropdowns() {\r\n // Skip populating dropdowns if biller doesn have a default service code. Breaks things.\r\n if (serviceCode !== '') {\r\n if (!rd) {\r\n locationId = '';\r\n serviceId = '';\r\n needId = '';\r\n contactId = '';\r\n }\r\n //Below if statement added from ticket #31039 in 2020.3. It was noticed that if the user\r\n //had a default service code that was later set as inactive, they would still\r\n // have this service code associated with them but it would break the module.\r\n //This sould be a temp fix until there are measures put in place that prevent\r\n //this in the desktop application.\r\n if (dropdownData[serviceCode]) {\r\n populateLocationDrodown();\r\n populateServicesDrodown();\r\n populateContactsDrodown();\r\n populateNeedsDrodown();\r\n } else {\r\n serviceCode = '';\r\n dropdown.populate(serviceCodeDropdown, billerDropdownData);\r\n }\r\n }\r\n if (rd) {\r\n selectedConsumerIds[0] = rd.consumerid;\r\n populateVendorDropdown();\r\n populateServiceLocations();\r\n }\r\n }\r\n function populateVendorDropdown() {\r\n caseNotesAjax.getConsumerSpecificVendors(\r\n selectedConsumerIds[0],\r\n serviceDate,\r\n function (results) {\r\n var data = results.map(r => {\r\n return {\r\n value: r.vendorId,\r\n text: r.vendorName,\r\n };\r\n });\r\n // if ($.session.applicationName === 'Gatekeeper')\r\n // data.unshift({ value: '', text: '' }); // add blank value in vendor dropdown for GK only\r\n var defaultVal;\r\n\r\n if (rd && rd.vendorid) {\r\n defaultVal = rd.vendorid;\r\n } else {\r\n vendorId = data[1] && data[1].value ? data[1].value : '';\r\n defaultVal = vendorId;\r\n }\r\n\r\n dropdown.populate(vendorDropdown, data, defaultVal);\r\n },\r\n );\r\n }\r\n function populateServiceLocations() {\r\n var serviceLocData = { serviceDate, consumerId: selectedConsumerIds[0] };\r\n caseNotesAjax.getServiceLocationsForCaseNoteDropDown(serviceLocData, function (results) {\r\n var data = results.map(r => {\r\n return {\r\n value: r.code,\r\n text: r.caption,\r\n };\r\n });\r\n data.unshift({ value: '', text: '' });\r\n var defaultVal;\r\n\r\n if (rd && rd.servicelocationid) {\r\n defaultVal = rd.servicelocationid;\r\n } else {\r\n //set to '00' if no val\r\n serviceLocationId = data[0] && data[0].value ? data[0].value : '00';\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor')\r\n dropdown.populate(serviceLocationDropdown, data, defaultVal);\r\n });\r\n }\r\n\r\n // Case Note Card\r\n // ----------------------------------------\r\n function disableCard() {\r\n // card disabled until consumers are moved over\r\n // caseNoteCard.classList.add('disabled');\r\n }\r\n function enableCard() {\r\n caseNoteCard.classList.remove('disabled');\r\n checkRequiredFields();\r\n }\r\n // Consumers\r\n function buildConsumerCard(clone) {\r\n var card = document.createElement('div');\r\n card.classList.add('caseNotes__consumer');\r\n card.appendChild(clone);\r\n return card;\r\n }\r\n\r\n function moveConsumerToConsumerSection() {\r\n //? This function just adds the consumer(s) visibly to note card\r\n\r\n const consumerList = document.querySelector('.consumers-list');\r\n let activeConsumers = roster2.getActiveConsumers();\r\n let newSelectedConsumers = roster2.getSelectedConsumersCache();\r\n\r\n //* NEW\r\n //*-----------------------------------\r\n if (pageLoaded === 'new') {\r\n //Remove the 'no consumer message' when adding a consumer. (only visible on new notes)\r\n var noConsumerMessage = document.getElementById('noConsumerMessage');\r\n noConsumerMessage.classList.add('hidden');\r\n\r\n //Will always be just 1 selected consumer for a new note\r\n const sConsumer = activeConsumers[0];\r\n //clone and build card for note\r\n var clone = sConsumer.card.cloneNode(true);\r\n var card = buildConsumerCard(clone);\r\n card.classList.remove('highlighted');\r\n consumerList.appendChild(card);\r\n\r\n //remove consumer on click\r\n card.addEventListener('click', event => {\r\n var consumerListBtn = document.querySelector('.consumerListBtn');\r\n var consumer = event.target.getAttribute('data-consumer-id');\r\n event.target.parentElement.remove();\r\n selectedConsumerIds = selectedConsumerIds.filter(item => item !== consumer);\r\n roster2.removeConsumerFromActiveConsumers(consumer);\r\n if (selectedConsumerIds.length === 0) {\r\n if (consumerListBtn) consumerListBtn.classList.remove('disabled');\r\n populateBillerRelatedDropdowns();\r\n //re show the message when there are no consumer selected\r\n if (pageLoaded === 'new') {\r\n var noConsumerMessage = document.getElementById('noConsumerMessage');\r\n noConsumerMessage.classList.remove('hidden');\r\n }\r\n }\r\n checkRequiredFields();\r\n checkConsumerForMileage();\r\n if (pageLoaded === 'review') {\r\n if (selectedConsumerIds.length === 1) {\r\n convertToGroupNote = false;\r\n }\r\n }\r\n });\r\n\r\n selectedConsumerIds.push(sConsumer.id);\r\n checkConsumerForMileage();\r\n }\r\n\r\n //* REVIEW\r\n //*-----------------------------------\r\n if (pageLoaded === 'review') {\r\n if (!allowGroupNotes) {\r\n convertToGroupNote = false;\r\n } else if (!isGroupNote && allowGroupNotes) {\r\n convertToGroupNote = true;\r\n }\r\n\r\n if (allowGroupNotes) {\r\n activeConsumers.forEach(aConsumer => {\r\n //check if consumer has already been added to note\r\n if (selectedConsumerIds.filter(id => id === aConsumer.id).length > 0) return;\r\n // only add newly selected consumers\r\n const filteredConsumers = newSelectedConsumers.filter(nsc => {\r\n const isTrue = nsc.id === aConsumer.id;\r\n return isTrue;\r\n });\r\n if (filteredConsumers.length === 0) {\r\n return;\r\n }\r\n\r\n //clone and build card for note\r\n var clone = aConsumer.card.cloneNode(true);\r\n var card = buildConsumerCard(clone);\r\n card.classList.remove('highlighted');\r\n consumerList.appendChild(card);\r\n\r\n //remove consumer on click\r\n card.addEventListener('click', event => {\r\n var consumerListBtn = document.querySelector('.consumerListBtn');\r\n var consumer = event.target.getAttribute('data-consumer-id');\r\n event.target.parentElement.remove();\r\n selectedConsumerIds = selectedConsumerIds.filter(item => item !== consumer);\r\n roster2.removeConsumerFromActiveConsumers(consumer);\r\n if (selectedConsumerIds.length === 0) {\r\n if (consumerListBtn) consumerListBtn.classList.remove('disabled');\r\n populateBillerRelatedDropdowns();\r\n //re show the message when there are no consumer selected\r\n if (pageLoaded === 'new') {\r\n var noConsumerMessage = document.getElementById('noConsumerMessage');\r\n noConsumerMessage.classList.remove('hidden');\r\n }\r\n }\r\n checkRequiredFields();\r\n checkConsumerForMileage();\r\n if (pageLoaded === 'review') {\r\n if (selectedConsumerIds.length === 1) {\r\n convertToGroupNote = false;\r\n }\r\n }\r\n });\r\n\r\n selectedConsumerIds.push(aConsumer.id);\r\n checkConsumerForMileage();\r\n });\r\n } else {\r\n //* Get currently selected consumer\r\n let selectedConsumerId = activeConsumers[activeConsumers.length - 1].id;\r\n const selectedConsumerName = activeConsumers[\r\n activeConsumers.length - 1\r\n ].card.innerText.replace(/\\s/g, '');\r\n const consumerNameArr = selectedConsumerName.split(',');\r\n const consumerFN = consumerNameArr[1];\r\n const consumerLN = consumerNameArr[0];\r\n\r\n //* Create consumer object (with newly selected consumer)\r\n let consumerobj = null;\r\n consumerobj = roster2.buildConsumerCard({\r\n FN: consumerFN,\r\n LN: consumerLN,\r\n id: selectedConsumerId,\r\n });\r\n consumerobj.classList.remove('disabled');\r\n\r\n // only one consumer\r\n consumerId = selectedConsumerId;\r\n consumerName = `${consumerFN} ${consumerLN}`;\r\n\r\n // reset active/selected consumers\r\n selectedConsumerIds = [selectedConsumerId];\r\n roster2.clearActiveConsumers();\r\n roster2.addConsumerToActiveConsumers(consumerobj);\r\n\r\n // update dom with new name\r\n var cardHeader = document.querySelector('.card__header');\r\n cardHeader.innerHTML = `

    Note Review - ${consumerName}

    `;\r\n }\r\n }\r\n\r\n // consumer specific dropdowns\r\n populateVendorDropdown();\r\n if ($.session.applicationName === 'Advisor') {\r\n populateServiceLocations();\r\n } else {\r\n checkGKRequiredFields('consumerSelect');\r\n }\r\n checkRequiredFields(); //To enable save button if possible\r\n }\r\n // Details\r\n function buildDocTime() {\r\n var docTimeHeader = document.createElement('div');\r\n var docTimeHeaderText = document.createElement('h3');\r\n docTimeHeaderText.innerHTML = 'Doc Time';\r\n docTimeHeader.appendChild(docTimeHeaderText);\r\n docTimeHeader.classList.add('card__header');\r\n var docTimeBody = document.createElement('div');\r\n docTimeBody.classList.add('card__body');\r\n\r\n var docTime = document.createElement('div');\r\n docTime.id = 'docTime';\r\n docTime.classList.add('card');\r\n docTime.appendChild(docTimeHeader);\r\n docTime.appendChild(docTimeBody);\r\n\r\n DOM.ACTIONCENTER.appendChild(docTime);\r\n\r\n if (serviceId === '' || serviceId === '0') docTime.classList.add('hidden');\r\n\r\n // if default billing code requires Doc Time, display\r\n if (defaultServiceCode) {\r\n if (dropdownData[defaultServiceCode].docTimeRequired === 'Y') {\r\n docTime.classList.remove('hidden');\r\n //\tPOPUP.show(docTimePopup);\r\n }\r\n }\r\n\r\n var minutesDisplay = document.createElement('div');\r\n minutesDisplay.classList.add('inputWrap');\r\n\r\n // start/stop buttons\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap', 'cntimerbuttons');\r\n timerStartBtn = button.build({\r\n text: 'Start',\r\n id: 'cnTimerStart',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-toggled', value: 'false' }],\r\n callback: function () {\r\n // caseNotesTimer.startCaseNoteTimer();\r\n if (timerRunning === true) return;\r\n documentationTimer.startTimer(documentationTime);\r\n timerRunning = true;\r\n // if editing toggleSaveButton()\r\n },\r\n });\r\n timerStopBtn = button.build({\r\n text: 'Stop',\r\n id: 'cnTimerStop',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n // pauseTimer();\r\n if (timerRunning === false) return;\r\n documentationTime = documentationTimer.stopTimer();\r\n timerRunning = false;\r\n },\r\n });\r\n\r\n //PERMISSIONS// Doc Time minutes field is read only when $.session.UpdateCaseNotesDocTime === false\r\n var docTimeMinVal = rd\r\n ? rd.totaldoctime\r\n ? Math.round(Math.floor(parseInt(rd.totaldoctime) / 30) / 2)\r\n : 0\r\n : 0;\r\n docTimeMinutesField = input.build({\r\n label: 'Doc Time Minutes',\r\n id: 'docTimeMinutesDisplay',\r\n type: 'text',\r\n attributes: [\r\n { key: 'min', value: '0' },\r\n { key: 'maxlength', value: '5' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n readonly: $.session.UpdateCaseNotesDocTime === false ? true : false,\r\n value: String(docTimeMinVal),\r\n });\r\n\r\n travelTimeMinutesField = input.build({\r\n label: 'Travel Time Minutes',\r\n id: 'travelTimeMinutesDisplay',\r\n attributes: [\r\n { key: 'min', value: '0' },\r\n { key: 'maxlength', value: '4' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n value: rd ? (rd.traveltime ? rd.traveltime : '') : '',\r\n type: 'text',\r\n });\r\n\r\n //Time field event listeners (to prevent length that is too long)\r\n docTimeMinutesField.addEventListener('keyup', event => {\r\n if (event.target.value.length > 5) {\r\n event.target.value = event.target.value.substr(0, 5);\r\n }\r\n });\r\n travelTimeMinutesField.addEventListener('keyup', event => {\r\n if (event.target.value.length > 4) {\r\n event.target.value = event.target.value.substr(0, 4);\r\n }\r\n });\r\n\r\n minutesDisplay.appendChild(docTimeMinutesField);\r\n minutesDisplay.appendChild(travelTimeMinutesField);\r\n btnWrap.appendChild(timerStartBtn);\r\n btnWrap.appendChild(timerStopBtn);\r\n\r\n docTimeBody.appendChild(btnWrap);\r\n docTimeBody.appendChild(minutesDisplay);\r\n\r\n return docTime;\r\n }\r\n function parseSessionTimes(dirtyTime) {\r\n const isAMorPM = dirtyTime.includes('A') ? 'am' : 'pm';\r\n let time;\r\n\r\n if (isAMorPM === 'am') {\r\n time = `${dirtyTime.split('A')[0]} AM`;\r\n } else {\r\n time = `${dirtyTime.split('P')[0]} PM`;\r\n }\r\n\r\n time = UTIL.convertToMilitary(time);\r\n return time.slice(0, -3);\r\n }\r\n function checkTimesAreWithinWorkHours() {\r\n const warnStart = parseSessionTimes($.session.caseNotesWarningStartTime);\r\n const warnEnd = parseSessionTimes($.session.caseNotesWarningEndTime);\r\n\r\n if (\r\n $.session.caseNotesWarningStartTime === '00:00' ||\r\n $.session.caseNotesWarningEndTime === '00:00' ||\r\n !$.session.caseNotesWarningStartTime ||\r\n !$.session.caseNotesWarningEndTime ||\r\n $.session.caseNotesWarningStartTime === 'Null' ||\r\n $.session.caseNotesWarningEndTime === 'Null'\r\n ) {\r\n return true;\r\n }\r\n\r\n if (startTime < warnStart || startTime > warnEnd || endTime < warnStart || endTime > warnEnd) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n function buildCardDetailsSection() {\r\n async function saveBtnAction(saveAndNew) {\r\n function preSave() {\r\n if ($.session.applicationName === 'Gatekeeper' && timerRunning) {\r\n documentationTime = documentationTimer.stopTimer();\r\n timerRunning = false;\r\n }\r\n // Stop speech to text if running\r\n if ($.session.sttEnabled && document.querySelectorAll('.stt_listening').length > 0) {\r\n const listeningNodes = document.querySelectorAll('.stt_listening');\r\n listeningNodes.forEach(node => {\r\n node.dispatchEvent(new Event('click'));\r\n });\r\n }\r\n }\r\n\r\n if (\r\n (tempAttachmentArray.length > 0 || reviewAttachmentArray.length > 0) &&\r\n convertToGroupNote\r\n ) {\r\n const warningMessage = `Attachments on this case note will be lost by \r\n converting this single case note to a group case note.`;\r\n warningPopup(\r\n warningMessage,\r\n async () => {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n preSave();\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n const hoursAreWithinWorkHours = checkTimesAreWithinWorkHours();\r\n if (hoursAreWithinWorkHours) {\r\n await noteSaveUpdate(saveAndNew);\r\n } else {\r\n warningPopup(\r\n `The times you have entered are outside the current normal working hours.\r\n Click OK to proceed or cancel to return to the form.`,\r\n async () => {\r\n await noteSaveUpdate(saveAndNew);\r\n },\r\n () => {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n return;\r\n },\r\n );\r\n }\r\n } else {\r\n await noteSaveUpdate(saveAndNew);\r\n }\r\n },\r\n () => {\r\n return;\r\n },\r\n );\r\n } else {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n preSave();\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n const hoursAreWithinWorkHours = checkTimesAreWithinWorkHours();\r\n if (hoursAreWithinWorkHours) {\r\n await noteSaveUpdate(saveAndNew);\r\n } else {\r\n warningPopup(\r\n `The times you have entered are outside the current normal working hours.\r\n Click OK to proceed or cancel to return to the form.`,\r\n async () => {\r\n await noteSaveUpdate(saveAndNew);\r\n },\r\n () => {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n return;\r\n },\r\n );\r\n }\r\n } else {\r\n await noteSaveUpdate(saveAndNew);\r\n }\r\n }\r\n }\r\n //----------------------------------------------------------------------\r\n\r\n var details = document.createElement('div');\r\n details.classList.add('card__body', 'caseNoteCard__details');\r\n //Group Note info area:\r\n groupNoteDisplay = document.createElement('div');\r\n groupNoteDisplay.classList.add('groupNoteDisplay');\r\n groupNoteDisplay.innerHTML = groupConsumers;\r\n\r\n // dropdowns\r\n var style = 'secondary';\r\n\r\n isCaseNoteReadOnly();\r\n\r\n serviceCodeDropdown = dropdown.build({\r\n dropdownId: 'serviceCodeDropdown',\r\n label: $.session.applicationName === 'Gatekeeper' ? 'Bill Code:' : 'Serv. Code:',\r\n style,\r\n });\r\n // serviceCodeDropdown.id = \"serviceCodeDropdown\"\r\n\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdwn',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n serviceDropdown = dropdown.build({\r\n dropdownId: 'serviceDropdwn',\r\n label: 'Service',\r\n style: 'secondary',\r\n });\r\n if ($.session.applicationName === 'Advisor') {\r\n serviceLocationDropdown = dropdown.build({\r\n label: 'Service Location',\r\n style,\r\n });\r\n }\r\n needDropdown = dropdown.build({\r\n dropdownId: 'needDropdwn',\r\n label: 'Need',\r\n style: 'secondary',\r\n });\r\n vendorDropdown = dropdown.build({\r\n label: 'Vendor',\r\n style,\r\n });\r\n contactDropdown = dropdown.build({\r\n dropdownId: 'contactDropdwn',\r\n label: 'Contact',\r\n style: 'secondary',\r\n });\r\n // inputs\r\n serviceDateInput = input.build({\r\n label: 'Service Date',\r\n type: 'date',\r\n style,\r\n value: pageLoaded === 'review' ? serviceDate : UTIL.getTodaysDate(),\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n style,\r\n value: startTime,\r\n });\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n style,\r\n value: endTime,\r\n });\r\n mileageInput = input.build({\r\n label: 'Mileage',\r\n style,\r\n value: mileage === '0' || mileage === '0.00' ? '' : mileage,\r\n attributes: [{ key: 'min', value: '0' }],\r\n });\r\n myPhrasesBtn = button.build({\r\n id: 'myPhrasesBtn',\r\n text: 'My Phrases',\r\n type: 'contained',\r\n style,\r\n callback: function () {\r\n //pass current note input field value\r\n cnPhrasesPopup();\r\n },\r\n });\r\n noteTextInput = input.build({\r\n id: 'noteTextField',\r\n label: 'Note',\r\n type: 'textarea',\r\n style,\r\n classNames: 'autosize',\r\n value: noteText,\r\n stt: $.session.sttEnabled && !cnBatched && $.session.CaseNotesUpdate,\r\n });\r\n // checkboxes\r\n confidentialCheckbox = input.buildCheckbox({\r\n text: 'Confidential',\r\n isChecked: confidential === 'Y' ? true : false,\r\n });\r\n\r\n serviceMonitoringCheckbox = input.buildCheckbox({\r\n text: 'Outcome/Service Monitoring',\r\n isChecked: serviceMonitoring === 'Y' ? true : false,\r\n });\r\n\r\n // btns\r\n attachmentsBtn = button.build({\r\n text: `Attachments (${attachmentCount})`,\r\n style,\r\n type: 'contained',\r\n icon: 'attachment',\r\n callback: () => {\r\n cnAttachment.init(tempAttachmentArray, reviewAttachmentArray, cnBatched, noteId);\r\n },\r\n });\r\n if (attachmentCount > 0) attachmentsBtn.classList.add('hasAttachments');\r\n\r\n var text = pageLoaded === 'new' ? 'Save' : 'Update';\r\n saveNoteBtn = button.build({\r\n text,\r\n style,\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: () => saveBtnAction(false),\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style,\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: () => saveBtnAction(true),\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style,\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: function () {\r\n selectedConsumerIds.forEach(cId => {\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n if (timerRunning === true) {\r\n documentationTimer.stopTimer();\r\n timerRunning = false;\r\n }\r\n notesOverview.init();\r\n },\r\n });\r\n //DELETE ONLY ON REVIEW NOTE\r\n deleteNoteBtn = button.build({\r\n text: 'delete',\r\n style,\r\n type: 'contained',\r\n icon: 'delete',\r\n classNames: ['caseNoteDelete'],\r\n callback: deleteConfirmation,\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveNoteBtn);\r\n if (pageLoaded === 'review') {\r\n saveNoteBtn.classList.remove('disabled');\r\n btnWrap.appendChild(deleteNoteBtn);\r\n } else {\r\n btnWrap.appendChild(saveAndNewNoteBtn);\r\n }\r\n\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n //End time on new notes is empty, only add class list of error for this case\r\n if (pageLoaded === 'new') {\r\n endTimeInput.classList.add('error');\r\n }\r\n\r\n // group inputs * for desktop later\r\n var grid_col_1 = document.createElement('div');\r\n var grid_col_2 = document.createElement('div');\r\n\r\n // build details section\r\n grid_col_1.appendChild(serviceCodeDropdown);\r\n grid_col_1.appendChild(locationDropdown);\r\n grid_col_1.appendChild(serviceDropdown);\r\n grid_col_1.appendChild(needDropdown);\r\n grid_col_1.appendChild(contactDropdown);\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n grid_col_1.appendChild(serviceLocationDropdown);\r\n }\r\n grid_col_1.appendChild(vendorDropdown);\r\n\r\n grid_col_2.appendChild(serviceDateInput);\r\n grid_col_2.appendChild(startTimeInput);\r\n grid_col_2.appendChild(endTimeInput); \r\n if (!cnBatched) grid_col_2.appendChild(myPhrasesBtn);\r\n grid_col_2.appendChild(noteTextInput);\r\n grid_col_2.appendChild(mileageInput);\r\n if ($.session.applicationName === 'Gatekeeper') grid_col_2.appendChild(attachmentsBtn);\r\n grid_col_2.appendChild(confidentialCheckbox);\r\n \r\n if ($.session.applicationName === 'Gatekeeper') {\r\n grid_col_2.appendChild(serviceMonitoringCheckbox);\r\n serviceMonitoringCheckbox.classList.add('width100Per');\r\n if (cnBatched) {\r\n serviceMonitoringCheckbox.firstChild.setAttribute('disabled', true);\r\n serviceMonitoringCheckbox.classList.add('disabled');\r\n }\r\n }\r\n //Hide Mileage Input if they don't have a bill/service code\r\n if (serviceId === '' || serviceId === '0') mileageInput.classList.add('hidden');\r\n\r\n if (pageLoaded === 'review') {\r\n if (groupNoteId !== 0) grid_col_2.appendChild(groupNoteDisplay);\r\n //Last Updated by message (only on review)\r\n var lastUpdatedDisplay = document.createElement('div');\r\n lastUpdatedDisplay.classList.add('lastUpdatedDisplay');\r\n var lastUpdatedMessage = document.createElement('p');\r\n lastUpdatedMessage.innerHTML = `\r\n Last Edited On: ${lastUpdated}
    Entered By: ${enteredBy} (${originalUserName})
    `;\r\n lastUpdatedDisplay.appendChild(lastUpdatedMessage);\r\n\r\n var correctedCheckboxDiv = document.createElement('div');\r\n correctedCheckboxDiv.classList.add('correctedCheckbox');\r\n correctedCheckbox = input.buildCheckbox({\r\n text: 'Corrected',\r\n isChecked: corrected === 'Y' ? true : false,\r\n });\r\n\r\n correctedCheckboxDiv.appendChild(correctedCheckbox);\r\n\r\n //Review Required Area//////\r\n var reviewText;\r\n switch (reviewResults) {\r\n case 'N':\r\n reviewText = 'Not Reviewed';\r\n break;\r\n case 'P':\r\n reviewText = 'Passed';\r\n break;\r\n case 'R':\r\n reviewText = 'Rejected';\r\n break;\r\n default:\r\n reviewText = reviewResults;\r\n break;\r\n }\r\n\r\n if (reviewRequired === 'Y' && $.session.applicationName === 'Gatekeeper') {\r\n var reviewMessage = document.createElement('p');\r\n reviewMessage.classList.add('reviewMessage');\r\n reviewMessage.innerHTML = `\r\n
    Review Required for this Case Note
    Review Results: ${reviewText} \r\n ${reviewRejectReason === '' ? '' : `
    Rejection Reason: ${reviewRejectReason}`}`;\r\n if (reviewResults === 'R') reviewMessage.appendChild(correctedCheckboxDiv);\r\n }\r\n\r\n ////ADV does not have a rejection reason\r\n if (reviewRequired === 'Y' && $.session.applicationName === 'Advisor') {\r\n var reviewMessage = document.createElement('p');\r\n reviewMessage.classList.add('reviewMessage');\r\n reviewMessage.innerHTML = `\r\n
    Review Required for this Case Note
    Review Results: ${reviewText}`;\r\n reviewMessage.appendChild(correctedCheckboxDiv);\r\n }\r\n }\r\n\r\n grid_col_2.appendChild(btnWrap);\r\n grid_col_2.appendChild(btnWrap2);\r\n details.appendChild(grid_col_1);\r\n details.appendChild(grid_col_2);\r\n if (pageLoaded === 'review') {\r\n grid_col_2.appendChild(lastUpdatedDisplay);\r\n if (reviewRequired === 'Y') grid_col_2.appendChild(reviewMessage);\r\n }\r\n\r\n if ($.session.applicationName === 'Gatekeeper') buildDocTime();\r\n\r\n DOM.ACTIONCENTER.appendChild(details);\r\n\r\n populateBillerDropdown();\r\n //ADV check if the consumer on the note has mileage (after populating dropdowns)\r\n checkConsumerForMileage();\r\n setupCardEvents();\r\n checkServiceFunding();\r\n if ($.session.applicationName === 'Advisor') {\r\n checkADVRequiredFields();\r\n }\r\n\r\n DOM.autosizeTextarea();\r\n\r\n return details;\r\n }\r\n function buildConsumersList() {\r\n var consumerList = document.createElement('div');\r\n consumerList.classList.add('consumers-list');\r\n\r\n return consumerList;\r\n }\r\n\r\n function buildCaseNoteCard() {\r\n caseNoteCard = document.createElement('div');\r\n caseNoteCard.classList.add('card', 'caseNoteCard');\r\n\r\n var cardHeader = document.createElement('div');\r\n cardHeader.classList.add('card__header');\r\n cardHeader.innerHTML =\r\n pageLoaded === 'new' ? `

    New Note

    ` : `

    Note Review - ${consumerName}

    `;\r\n\r\n var cardDetails = buildCardDetailsSection();\r\n\r\n // note card\r\n caseNoteCard.appendChild(cardHeader);\r\n caseNoteCard.appendChild(cardDetails);\r\n\r\n return caseNoteCard;\r\n }\r\n\r\n function cnPhrasesPopup() {\r\n cnInsertPhrases.show(noteTextInput.querySelector('.input-field__input').value);\r\n }\r\n function cnPhrasesDone(note) {\r\n noteText = note;\r\n checkRequiredFields();\r\n }\r\n\r\n function docTimeRequiredPopup() {\r\n if (document.getElementById('docTimeRequiredPopup')) return; // Prevent multiple popups\r\n docTimePopup = POPUP.build({\r\n id: 'docTimeRequiredPopup',\r\n });\r\n var yesBtn = button.build({\r\n text: 'yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: 'cnTimerStart',\r\n callback: function () {\r\n documentationTimer.startTimer(documentationTime);\r\n timerRunning = true;\r\n POPUP.hide(docTimePopup);\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'no',\r\n style: 'secondary',\r\n type: 'outlined',\r\n id: 'cnTimerStop',\r\n callback: function () {\r\n POPUP.hide(docTimePopup);\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n var popupText = document.createElement('p');\r\n popupText.innerHTML =\r\n 'Documentation Time is allowed for this bill code. Would you like to start the timer now?';\r\n docTimePopup.appendChild(popupText);\r\n docTimePopup.appendChild(btnWrap);\r\n POPUP.show(docTimePopup);\r\n }\r\n\r\n function checkADVRequiredFields(calledAction) {\r\n var serviceCodeDropdownOptions = document.getElementById('serviceCodeDropdown');\r\n serviceCode =\r\n serviceCodeDropdownOptions.options[serviceCodeDropdownOptions.selectedIndex].value;\r\n if (serviceCode === '') {\r\n serviceCodeDropdown.classList.add('error');\r\n checkRequiredFields();\r\n return;\r\n } else serviceCodeDropdown.classList.remove('error');\r\n advLocationRequired = dropdownData[serviceCode].locationRequired;\r\n advNeedRequired = dropdownData[serviceCode].needRequired;\r\n advContactRequired = dropdownData[serviceCode].contactRequired;\r\n advServiceRequired = dropdownData[serviceCode].serviceRequired;\r\n\r\n var locations = dropdownData[serviceCode].locations;\r\n if (advLocationRequired === 'Y' && locations.length === 0) {\r\n locationDropdown.classList.remove('error');\r\n } else if (advLocationRequired === 'Y' && (locationId === '' || locationId === '0')) {\r\n locationDropdown.classList.add('error');\r\n } else locationDropdown.classList.remove('error');\r\n\r\n var needs = dropdownData[serviceCode].needs;\r\n if (advNeedRequired === 'Y' && needs.length === 0) {\r\n needDropdown.classList.remove('error');\r\n } else if (advNeedRequired === 'Y' && (needId === '' || needId === '0')) {\r\n needDropdown.classList.add('error');\r\n } else needDropdown.classList.remove('error');\r\n\r\n var contacts = dropdownData[serviceCode].contacts;\r\n if (advContactRequired === 'Y' && contacts.length === 0) {\r\n contactDropdown.classList.remove('error');\r\n } else if (advContactRequired === 'Y' && (contactId === '' || contactId === '0')) {\r\n contactDropdown.classList.add('error');\r\n } else contactDropdown.classList.remove('error');\r\n\r\n var services = dropdownData[serviceCode].services;\r\n if (advServiceRequired === 'Y' && services.length === 0) {\r\n serviceDropdown.classList.remove('error');\r\n } else if (advServiceRequired === 'Y' && (serviceId === '' || serviceId === '0')) {\r\n serviceDropdown.classList.add('error');\r\n } else serviceDropdown.classList.remove('error');\r\n\r\n //ADV Service Code Not Null\r\n if ($.session.applicationName === 'Advisor' && (serviceId === '' || serviceId === '0')) {\r\n serviceCodeDropdown.classList.add('error');\r\n }\r\n\r\n checkRequiredFields();\r\n }\r\n\r\n function checkGKRequiredFields(calledAction) {\r\n var serviceCodeDropdownOptions = document.getElementById('serviceCodeDropdown');\r\n var consumerListBtn = document.querySelector('.consumerListBtn');\r\n var docTimeDisplay = document.getElementById('docTime');\r\n var timerButtons = document.querySelector('.cntimerbuttons');\r\n var docTimeMinutesField = document.getElementById('docTimeMinutesDisplay');\r\n var travelTimeMinutesField = document.getElementById('travelTimeMinutesDisplay');\r\n serviceCode =\r\n serviceCodeDropdownOptions.options[serviceCodeDropdownOptions.selectedIndex].value;\r\n if (serviceCode === '') {\r\n serviceCodeDropdown.classList.add('error');\r\n checkRequiredFields();\r\n return;\r\n } else serviceCodeDropdown.classList.remove('error');\r\n var docTimeRequired = dropdownData[serviceCode].docTimeRequired;\r\n var travelTimeRequired = dropdownData[serviceCode].travelTimeRequired;\r\n gkLocationRequired = dropdownData[serviceCode].locationRequired;\r\n gkNeedRequired = dropdownData[serviceCode].needRequired;\r\n gkContactRequired = dropdownData[serviceCode].contactRequired;\r\n gkAllowGroupNotes = dropdownData[serviceCode].allowGroupNotes;\r\n gkServiceRequired = dropdownData[serviceCode].serviceRequired;\r\n gkMileageRequired = dropdownData[serviceCode].mileageRequired;\r\n\r\n //As per original specs No groups where DOC Time is allowed\r\n if (docTimeRequired === 'Y') gkAllowGroupNotes = 'N';\r\n\r\n //DOCTIME//\r\n //1) if doc time, or travel time are required, display doc time area.\r\n if (docTimeRequired === 'Y' || travelTimeRequired === 'Y') {\r\n docTimeDisplay.classList.remove('hidden');\r\n } else docTimeDisplay.classList.add('hidden');\r\n //2) if doc time required show a popup\r\n //Added calledAction to bypass calling docTimePopup when selecting consumers, only on changing bill codes\r\n //Also no popup if CN is Batched\r\n if (\r\n docTimeRequired === 'Y' &&\r\n calledAction !== 'consumerSelect' &&\r\n (cnBatched === '' || cnBatched === null)\r\n ) {\r\n //popup doctime required popup\r\n if (!isReadOnly) docTimeRequiredPopup();\r\n }\r\n switch (docTimeRequired) {\r\n case 'Y':\r\n docTimeMinutesField.parentElement.classList.remove('hidden');\r\n timerButtons.classList.remove('hidden');\r\n break;\r\n default:\r\n docTimeMinutesField.parentElement.classList.add('hidden');\r\n timerButtons.classList.add('hidden');\r\n docTimeMinutesField.value = '0';\r\n documentationTimer.stopTimer();\r\n timerRunning = false;\r\n documentationTime = '';\r\n break;\r\n }\r\n switch (travelTimeRequired) {\r\n case 'Y':\r\n travelTimeMinutesField.parentElement.classList.remove('hidden');\r\n break;\r\n default:\r\n travelTimeMinutesField.parentElement.classList.add('hidden');\r\n travelTimeMinutesField.value = '0';\r\n travelTime = '';\r\n break;\r\n }\r\n switch (gkMileageRequired) {\r\n case 'Y':\r\n mileageInput.classList.remove('hidden');\r\n break;\r\n default:\r\n mileageInput.classList.add('hidden');\r\n mileageInput.value = '';\r\n mileage = '';\r\n break;\r\n }\r\n\r\n ////////////////////////////////////\r\n\r\n var locations = dropdownData[serviceCode].locations;\r\n if (gkLocationRequired === 'Y' && locations.length === 0) {\r\n locationDropdown.classList.remove('error');\r\n } else if (gkLocationRequired === 'Y' && (locationId === '' || locationId === '0')) {\r\n locationDropdown.classList.add('error');\r\n } else locationDropdown.classList.remove('error');\r\n\r\n var needs = dropdownData[serviceCode].needs;\r\n if (gkNeedRequired === 'Y' && needs.length === 0) {\r\n needDropdown.classList.remove('error');\r\n } else if (gkNeedRequired === 'Y' && (needId === '' || needId === '0')) {\r\n needDropdown.classList.add('error');\r\n } else needDropdown.classList.remove('error');\r\n\r\n var contacts = dropdownData[serviceCode].contacts;\r\n if (gkContactRequired === 'Y' && contacts.length === 0) {\r\n contactDropdown.classList.remove('error');\r\n } else if (gkContactRequired === 'Y' && (contactId === '' || contactId === '0')) {\r\n contactDropdown.classList.add('error');\r\n } else contactDropdown.classList.remove('error');\r\n\r\n var services = dropdownData[serviceCode].services;\r\n if (gkServiceRequired === 'Y' && services.length === 0) {\r\n serviceDropdown.classList.remove('error');\r\n } else if (gkServiceRequired === 'Y' && (serviceId === '' || serviceId === '0')) {\r\n serviceDropdown.classList.add('error');\r\n } else serviceDropdown.classList.remove('error');\r\n\r\n //Mileage\r\n if (gkMileageRequired === 'Y') {\r\n mileageInput.classList.remove('hidden');\r\n } else {\r\n mileageInput.value = '';\r\n mileageInput.classList.add('hidden');\r\n }\r\n //ADV Service Code Not Null\r\n if ($.session.applicationName === 'Advisor' && (serviceId === '' || serviceId === '0')) {\r\n serviceCodeDropdown.classList.add('error');\r\n }\r\n\r\n // ALLOW GROUP NOTES// if they have a group note made up, but change to billing code that doesn't allow group notes\r\n // reset all consumers from note - They will need to re-add a consumer// As per Angie allowGroupNotes === \"\" should allow group notes\r\n if (gkAllowGroupNotes === 'N') {\r\n switch (pageLoaded) {\r\n case 'review':\r\n if (selectedConsumerIds.length > 1) {\r\n if (docTimePopup) POPUP.hide(docTimePopup);\r\n removeAllConsumersFromNote();\r\n if (consumerListBtn) consumerListBtn.classList.remove('disabled');\r\n }\r\n break;\r\n case 'new':\r\n if (selectedConsumerIds.length === 1) {\r\n } else if (selectedConsumerIds.length > 1) {\r\n removeAllConsumersFromNote();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n } else {\r\n if (consumerListBtn) consumerListBtn.classList.remove('disabled');\r\n }\r\n checkRequiredFields();\r\n }\r\n\r\n function setupCardEvents() {\r\n var tmpMileage;\r\n // dropdowns\r\n serviceCodeDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n allowGroupNotes = event.target.dataset.allowGroupNotes;\r\n serviceCode = selectedOption.value;\r\n // when this changes update following dropdowns\r\n populateBillerRelatedDropdowns();\r\n // reset biller related dropdown values when changing service/bill code:\r\n locationId = '';\r\n serviceId = '';\r\n needId = '';\r\n contactId = '';\r\n locationDropdown.firstElementChild.selectedIndex = 0;\r\n serviceDropdown.firstElementChild.selectedIndex = 0;\r\n needDropdown.firstElementChild.selectedIndex = 0;\r\n contactDropdown.firstElementChild.selectedIndex = 0;\r\n checkServiceFunding();\r\n checkRequiredFields();\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n checkGKRequiredFields();\r\n }\r\n if ($.session.applicationName === 'Advisor') {\r\n checkADVRequiredFields();\r\n }\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n locationId = selectedOption.value;\r\n //GK REQUIRED FIELDS//\r\n //if ($.session.applicationName === 'Gatekeeper' && gkLocationRequired === 'Y') {\r\n if (advLocationRequired === 'Y' || gkLocationRequired === 'Y') {\r\n if (locationId === '') {\r\n locationDropdown.classList.add('error');\r\n } else locationDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n /////\r\n });\r\n serviceDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n serviceId = selectedOption.value;\r\n //GK REQUIRED FIELDS//\r\n if (advServiceRequired === 'Y' || gkServiceRequired === 'Y') {\r\n if (serviceId === '') {\r\n serviceDropdown.classList.add('error');\r\n } else serviceDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n /////\r\n });\r\n if ($.session.applicationName === 'Advisor') {\r\n serviceLocationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n serviceLocationId = selectedOption.value;\r\n if (serviceLocationId !== '') {\r\n serviceLocationDropdown.classList.remove('error');\r\n } else serviceLocationDropdown.classList.add('error');\r\n checkRequiredFields();\r\n });\r\n }\r\n needDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n needId = selectedOption.value;\r\n //GK REQUIRED FIELDS//\r\n if (advNeedRequired === 'Y' || gkNeedRequired === 'Y') {\r\n if (needId === '') {\r\n needDropdown.classList.add('error');\r\n } else needDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n /////\r\n });\r\n vendorDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n vendorId = selectedOption.value;\r\n });\r\n contactDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n contactId = selectedOption.value;\r\n //GK REQUIRED FIELDS//\r\n if (advContactRequired === 'Y' || gkContactRequired === 'Y') {\r\n if (contactId === '') {\r\n contactDropdown.classList.add('error');\r\n } else contactDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n /////\r\n });\r\n // setup input events\r\n serviceDateInput.addEventListener('change', event => {\r\n var validObj = validateTimesWhenDateChange();\r\n var sameDate = checkIfSameDates();\r\n\r\n var tempServiceDate = serviceDate;\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validObj.isValid && sameDate) {\r\n $.session.caseNoteTimeCheck = 'pass';\r\n } else {\r\n $.session.caseNoteTimeCheck = 'fail';\r\n }\r\n\r\n serviceDate = event.target.value;\r\n if (serviceDate > UTIL.getTodaysDate() || serviceDate === '') {\r\n serviceDateInput.classList.add('error');\r\n serviceDate = tempServiceDate;\r\n } else serviceDateInput.classList.remove('error');\r\n\r\n if (sameDate && currentTime < startTime) {\r\n validObj.startTime = false;\r\n }\r\n if (sameDate && currentTime < endTime) {\r\n validObj.endTime = false;\r\n }\r\n\r\n if (validObj.isValid) {\r\n startTimeInput.classList.remove('error');\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n if (!validObj.startTime) startTimeInput.classList.add('error');\r\n if (!validObj.endTime) endTimeInput.classList.add('error');\r\n }\r\n\r\n populateVendorDropdown(); // Vendor is based off of date\r\n\r\n // toggleSaveButton\r\n checkRequiredFields();\r\n });\r\n startTimeInput.addEventListener('change', event => {\r\n var isValid = validateStartEndTimes('startCheck');\r\n startTime = event.target.value;\r\n if (!isValid) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n if (validateStartEndTimes('endCheck')) {\r\n endTimeInput.classList.remove('error');\r\n }\r\n }\r\n // toggleSaveButton\r\n checkRequiredFields();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n var isValid = validateStartEndTimes('endCheck');\r\n endTime = event.target.value;\r\n // toggleSaveButton\r\n if (!isValid) {\r\n // show error\r\n endTimeInput.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n if (validateStartEndTimes('startCheck')) {\r\n startTimeInput.classList.remove('error');\r\n }\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n mileageInput.addEventListener('keypress', event => {\r\n //In GK milage is stored to the hundredth so need to check for decimal\r\n tmpMileage = event.target.value;\r\n if (event.key === '.' && event.target.value.indexOf('.') !== -1) {\r\n // event.target.value = event.target.value.substr(0, (event.target.value.length - 1))\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n //Prevent all but numbers and dec - DEC is only for GK\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode !== 46) {\r\n event.preventDefault();\r\n return;\r\n }\r\n } else {\r\n if (event.keyCode < 48 || event.keyCode > 57) {\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n });\r\n if ($.session.applicationName === 'Advisor') {\r\n //ADV Mileage 10 numbers no dec point\r\n mileageInput.addEventListener('keyup', event => {\r\n if (event.target.value.length > 10) event.target.value = tmpMileage;\r\n mileage = event.target.value;\r\n });\r\n }\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n //GK Mileage can have dec point. 5 before dec and 2 after dec point (12345.67)\r\n mileageInput.addEventListener('keyup', event => {\r\n var splitTime = event.target.value.split('.');\r\n if (splitTime[0].length > 5) event.target.value = tmpMileage;\r\n if (splitTime[1] && splitTime[1].length > 2) event.target.value = tmpMileage;\r\n\r\n mileage = parseFloat(event.target.value).toFixed(2);\r\n });\r\n\r\n docTimeMinutesField.addEventListener('change', event => {\r\n documentationTime = parseInt(event.target.value) * 60; //Stored as seconds in DB\r\n });\r\n travelTimeMinutesField.addEventListener('change', event => {\r\n travelTime = event.target.value; //Stored as Minutes in DB\r\n });\r\n }\r\n noteTextInput.addEventListener('input', event => {\r\n noteText = event.target.value;\r\n checkRequiredFields();\r\n });\r\n // checkboxes\r\n confidentialCheckbox.addEventListener('change', event => {\r\n confidential = event.target.checked ? 'Y' : 'N';\r\n });\r\n serviceMonitoringCheckbox.addEventListener('change', event => {\r\n serviceMonitoring = event.target.checked ? 'Y' : 'N';\r\n });\r\n if (pageLoaded === 'review' && reviewRequired === 'Y' && reviewResults === 'R') {\r\n correctedCheckbox.addEventListener('change', event => {\r\n corrected = event.target.checked ? 'Y' : 'N';\r\n });\r\n }\r\n }\r\n // required fields/permissions\r\n function checkRequiredFields() {\r\n var serviceCodeDropdownOptions = document.getElementById('serviceCodeDropdown');\r\n serviceCode =\r\n serviceCodeDropdownOptions.options[serviceCodeDropdownOptions.selectedIndex].value;\r\n\r\n var noteInput = noteTextInput.querySelector('textarea');\r\n var consumers = document.querySelectorAll('.consumer-selected');\r\n\r\n if (noteInput.value === '') {\r\n noteTextInput.classList.add('error');\r\n } else {\r\n noteTextInput.classList.remove('error');\r\n }\r\n\r\n if (serviceCode === '') {\r\n serviceCodeDropdown.classList.add('error');\r\n } else {\r\n serviceCodeDropdown.classList.remove('error');\r\n }\r\n\r\n if (selectedConsumerIds.length > 1) {\r\n attachmentsBtn.classList.add('disabled');\r\n tempAttachmentArray = [];\r\n } else {\r\n attachmentsBtn.classList.remove('disabled');\r\n }\r\n\r\n var errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n } else if (selectedConsumerIds.length > 0 || pageLoaded === 'review') {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n } else {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n }\r\n\r\n if (isReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n deleteNoteBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n function checkConsumerForMileage() {\r\n if ($.session.applicationName === 'Gatekeeper') return;\r\n var mileageAllowed = false;\r\n consumersThatCanHaveMileage.forEach(c => {\r\n selectedConsumerIds.forEach(cId => {\r\n if (c === cId) {\r\n mileageAllowed = true;\r\n }\r\n });\r\n });\r\n switch (mileageAllowed) {\r\n case true:\r\n mileageInput.classList.remove('hidden');\r\n break;\r\n\r\n default:\r\n mileageInput.classList.add('hidden');\r\n mileage = '';\r\n break;\r\n }\r\n }\r\n\r\n function getTimeFromInactivity(time) {\r\n timerRunning = false;\r\n documentationTime = time;\r\n }\r\n\r\n function removeAllConsumersFromNote() {\r\n var cards = document.querySelectorAll('.consumerCard');\r\n cards.forEach(card => {\r\n var cId = card.getAttribute('data-consumer-id');\r\n selectedConsumerIds = selectedConsumerIds.filter(item => item !== cId);\r\n card.parentElement.remove();\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n populateBillerRelatedDropdowns();\r\n warningPopup(\r\n 'You have selected a bill code that does not allow group notes. Please select only one consumer.',\r\n null,\r\n null,\r\n false,\r\n );\r\n }\r\n\r\n function deleteConfirmation() {\r\n var popup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n if (timerRunning) {\r\n documentationTimer.stopTimer();\r\n timerRunning = false;\r\n }\r\n pendingSave.show('Deleting Note...');\r\n await caseNotesAjax.deleteExistingCaseNote(noteId);\r\n pendingSave.fulfill('Deleted');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n notesOverview.init();\r\n }, 1000);\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you would like to delete this case note?';\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n async function singleNoteToGroupNote() {\r\n await caseNotesAjax.deleteExistingCaseNote(noteId);\r\n pageLoaded = 'new';\r\n isGroupNote = true;\r\n noteId = 0;\r\n convertToGroupNote = null;\r\n //fix shit\r\n if (travelTime === null) travelTime = 0;\r\n if (documentationTime === null) documentationTime = 0;\r\n endTime = endTime.substring(0, 5);\r\n startTime = startTime.substring(0, 5);\r\n }\r\n\r\n function setGroupData() {\r\n //remove consumers from active list if they are part of the group\r\n groupConsumers = 'Other consumers part of this group ';\r\n for (let [id, name] of Object.entries(groupData[groupNoteId])) {\r\n var splitName = name.split(',');\r\n var consumer = roster2.buildConsumerCard({\r\n FN: splitName[1],\r\n LN: splitName[0],\r\n id: id,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n if (id !== consumerId) groupConsumers += ` | ${name} `;\r\n }\r\n }\r\n\r\n function setPermissions() {\r\n //caseNotesUpdate === True means they have view only permisison\r\n //Can't create new notes or update/delete notes.\r\n //Here View Only is the oppsite of update (update = true so viewonly = false)\r\n viewOnly = !$.session.CaseNotesUpdate;\r\n // IF view only permisisons OR the note is batched (batched notes are read only). A batched case note has the batched ID in cnBatched\r\n //if cnBatched is not \"\" it IS batched -- CHECKING IF IT IS BATCHED -- IF NOT EMPTY, THEN IT IS BATCHED\r\n if (viewOnly || (cnBatched && cnBatched !== '')) setInputstoReadOnly();\r\n\r\n // in GK Anywhere, if case note is NOT batched, then check that user has the Case Notes Update Entered permission\r\n // CHECKING IF IT IS NOT BATCHED -- EMPTY STRING IS NOT BATCHED\r\n if ($.session.applicationName === 'Gatekeeper' && (!cnBatched || cnBatched === '')) {\r\n if ($.session.CaseNotesUpdate) {\r\n if (\r\n !$.session.CaseNotesUpdateEntered ||\r\n ($.session.CaseNotesUpdateEntered && caseManagerId === $.session.PeopleId)\r\n ) {\r\n isReadOnly = false; //can edit (correct alignment of Update and UpdateEntered Case Notes permissions)\r\n } else {\r\n isReadOnly = true; //can not edit (with UpdateEntered permission, can't edit other people's case notes)\r\n }\r\n } else {\r\n isReadOnly = true; //can not edit (no overall update permission)\r\n }\r\n }\r\n\r\n if (isReadOnly) setInputstoReadOnly();\r\n\r\n //Set Permissions is the last thing that gets called. Adding Dashboard New CN Events here.\r\n if (fromDashboard) {\r\n moveConsumerToConsumerSection(dashboardConsumer);\r\n }\r\n }\r\n\r\n function setInputstoReadOnly() {\r\n //Set inputs to read only\r\n serviceDateInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n startTimeInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n endTimeInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n noteTextInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n mileageInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n //Disable Dropdowns/Checkbox\r\n serviceCodeDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n locationDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n serviceDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n if (serviceLocationDropdown)\r\n serviceLocationDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n needDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n vendorDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n contactDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n confidentialCheckbox.firstChild.setAttribute('disabled', true);\r\n if ($.session.applicationName === 'Gatekeeper') serviceMonitoringCheckbox.firstChild.setAttribute('disabled', true);\r\n\r\n if (docTimeMinutesField)\r\n docTimeMinutesField.querySelector('.input-field__input').setAttribute('readonly', true);\r\n if (travelTimeMinutesField)\r\n travelTimeMinutesField.querySelector('.input-field__input').setAttribute('readonly', true);\r\n //Remove delete and save buttons\r\n deleteNoteBtn.remove();\r\n saveNoteBtn.remove();\r\n //Remove Start and Stop Doc time buttons\r\n if (timerStopBtn) timerStopBtn.remove();\r\n if (timerStartBtn) timerStartBtn.remove();\r\n //disable consumer list button\r\n var consumerListBtn = document.querySelector('.consumerListBtn');\r\n if (consumerListBtn) {\r\n consumerListBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n function addAttachmentsToCN(attachments, reviewAttachments) {\r\n reviewAttachmentArray = reviewAttachments;\r\n attachments.forEach(attachment => {\r\n tempAttachmentArray.push(attachment);\r\n });\r\n attachmentCount = tempAttachmentArray.length + reviewAttachmentArray.length;\r\n attachmentsBtn.getElementsByTagName('span')[0].innerText = `ATTACHMENTS (${attachmentCount})`;\r\n if (attachmentCount > 0) {\r\n attachmentsBtn.classList.add('hasAttachments');\r\n } else attachmentsBtn.classList.remove('hasAttachments');\r\n }\r\n\r\n function removeAttachmentFromTempAttachmentArray(attachmentName) {\r\n tempAttachmentArray = tempAttachmentArray.filter(\r\n attachment => attachment.description !== attachmentName,\r\n );\r\n }\r\n\r\n function checkConfidential() {\r\n if (confidential === 'Y' && caseManagerId !== $.session.PeopleId) {\r\n noteTextInput.querySelector('.input-field__input').value = 'This is a confidential note.';\r\n noteTextInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n confidentialCheckbox.firstChild.setAttribute('disabled', true);\r\n }\r\n }\r\n\r\n function clearAllGlobalVariables() {\r\n mileage = null;\r\n reviewRequired = null;\r\n confidential = null;\r\n serviceMonitoring = null;\r\n corrected = null;\r\n cnBatched = null;\r\n tempAttachmentArray = [];\r\n reviewAttachmentArray = [];\r\n }\r\n\r\n function loadPage(dashConsumer) {\r\n const advPromises = [];\r\n const gkPromises = [];\r\n const dropdownDataPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getDropdownData(function (dropdownData) {\r\n dealWithDropdownDataHugeString(dropdownData);\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(dropdownDataPromise);\r\n gkPromises.push(dropdownDataPromise);\r\n\r\n const getBillersListPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getBillersListForDropDown(function (results) {\r\n billers = results;\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(getBillersListPromise);\r\n gkPromises.push(getBillersListPromise);\r\n\r\n //ADV Only\r\n if ($.session.applicationName === 'Advisor') {\r\n const getConsumersThatCanHaveMileagePromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getConsumersThatCanHaveMileage(function (results) {\r\n consumersThatCanHaveMileage = [];\r\n results.forEach(c => {\r\n consumersThatCanHaveMileage.push(c.consumerid);\r\n });\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(getConsumersThatCanHaveMileagePromise);\r\n }\r\n\r\n const getReviewRequiredForCaseManagerPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getReviewRequiredForCaseManager($.session.PeopleId, function (results) {\r\n reviewRequired = results[0].reviewrequired === '' ? 'N' : results[0].reviewrequired;\r\n defaultServiceCode = results[0].serviceid;\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(getReviewRequiredForCaseManagerPromise);\r\n gkPromises.push(getReviewRequiredForCaseManagerPromise);\r\n\r\n //GK Only - review only\r\n if ($.session.applicationName === 'Gatekeeper' && pageLoaded === 'review') {\r\n const getAttachmentsPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getCaseNoteAttachmentsList(noteId, res => {\r\n reviewAttachmentArray = res;\r\n attachmentCount = reviewAttachmentArray.length;\r\n resolve('success');\r\n });\r\n });\r\n gkPromises.push(getAttachmentsPromise);\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n Promise.all(advPromises).then(function () {\r\n if (pageLoaded === 'new') {\r\n if (dashConsumer) {\r\n const consumerName = dashConsumer.name.split(',');\r\n const consumer = roster2.buildConsumerCard({\r\n FN: consumerName[1],\r\n LN: consumerName[0],\r\n id: dashConsumer.id,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n dashboardConsumer = roster2.getActiveConsumers();\r\n newNote.init(dashConsumer);\r\n return;\r\n } else {\r\n newNote.init();\r\n return;\r\n }\r\n }\r\n if (pageLoaded === 'review') {\r\n if (groupNoteId !== 0) {\r\n setGroupData(); //Group Note\r\n } else {\r\n //Add current consumer to roster active list so they can not be re-selected\r\n var splitName = rd.consumername.split(' ');\r\n // roster2.refreshRosterList()\r\n var consumer = roster2.buildConsumerCard({\r\n FN: splitName[0],\r\n LN: splitName[1],\r\n id: consumerId,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n }\r\n reviewNote.init();\r\n return;\r\n }\r\n });\r\n } else {\r\n Promise.all(gkPromises).then(function () {\r\n if (pageLoaded === 'new') {\r\n if (dashConsumer) {\r\n const consumerName = dashConsumer.name.split(',');\r\n const consumer = roster2.buildConsumerCard({\r\n FN: consumerName[1],\r\n LN: consumerName[0],\r\n id: dashConsumer.id,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n dashboardConsumer = roster2.getActiveConsumers();\r\n newNote.init(dashConsumer);\r\n return;\r\n } else {\r\n newNote.init();\r\n return;\r\n }\r\n }\r\n if (pageLoaded === 'review') {\r\n if (groupNoteId !== 0) {\r\n setGroupData(); //Group Note\r\n } else {\r\n //Add current consumer to roster active list so they can not be re-selected\r\n var splitName = rd.consumername.split(' ');\r\n var consumer = roster2.buildConsumerCard({\r\n FN: splitName[0],\r\n LN: splitName[1],\r\n id: consumerId,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n }\r\n reviewNote.init();\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n /**\r\n * GEN init func\r\n * @param {string} pageToLoad 'new' or 'review'\r\n * @param {[object]} reviewNoteData used when page to load = review\r\n * @param {*} gd used when paget to load = review\r\n * @param {object} consumerFromDash used when loading a new note from the dashboard\r\n */\r\n function init(pageToLoad, reviewNoteData, gd, consumerFromDash) {\r\n if (consumerFromDash) {\r\n fromDashboard = true;\r\n } else fromDashboard = false;\r\n selectedConsumerIds.forEach(cId => {\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n //Below removes users from the group from the active list\r\n if (groupData && groupNoteId !== 0) {\r\n for (let [id, name] of Object.entries(groupData[groupNoteId])) {\r\n roster2.removeConsumerFromActiveConsumers(id);\r\n }\r\n }\r\n consumerListBtn = document.querySelector('.consumerListBtn');\r\n if (consumerListBtn) consumerListBtn.classList.remove('disabled');\r\n groupData = gd;\r\n rd = null;\r\n mileage = null;\r\n reviewRequired = null;\r\n confidential = null;\r\n serviceMonitoring = null;\r\n corrected = null;\r\n cnBatched = null;\r\n travelTime = 0;\r\n timerRunning = false;\r\n documentationTime = 0;\r\n selectedConsumerIds = [];\r\n tempAttachmentArray = [];\r\n reviewAttachmentArray = [];\r\n attachmentCount = 0;\r\n pageLoaded = pageToLoad;\r\n setNoteValues(reviewNoteData);\r\n loadPage(consumerFromDash);\r\n }\r\n\r\n return {\r\n checkRequiredFields,\r\n // build\r\n buildCaseNoteCard,\r\n buildConsumersList,\r\n buildDocTime,\r\n // populate\r\n populateBillerDropdown,\r\n // other\r\n disableCard,\r\n enableCard,\r\n moveConsumerToConsumerSection,\r\n checkGKRequiredFields,\r\n checkConfidential,\r\n checkIfBatched,\r\n checkIfCredit,\r\n getTimeFromInactivity,\r\n // Phrases\r\n cnPhrasesDone,\r\n //permissions\r\n setPermissions,\r\n //RESET VALS\r\n clearAllGlobalVariables,\r\n //ATTACHMENTS\r\n addAttachmentsToCN,\r\n removeAttachmentFromTempAttachmentArray,\r\n //Dropdown Data for Overview Filter\r\n dealWithDropdownDataHugeString,\r\n // init\r\n init,\r\n };\r\n})();\r\n","var noteSSA = (function () {\r\n // DOM Stuff\r\n let caseNoteCard;\r\n let serviceDateInput,\r\n startTimeInput,\r\n endTimeInput,\r\n noteTextInput,\r\n mileageInput,\r\n saveAndNewNoteBtn;\r\n let serviceCodeDropdown; // billing/service code\r\n let locationDropdown,\r\n serviceDropdown,\r\n serviceLocationDropdown,\r\n needDropdown,\r\n vendorDropdown,\r\n contactDropdown;\r\n let myPhrasesBtn,\r\n deleteNoteBtn,\r\n cancelNoteBtn,\r\n timerStartBtn,\r\n timerStopBtn,\r\n consumerListBtn,\r\n attachmentsBtn;\r\n let confidentialCheckbox;\r\n let serviceMonitoringCheckbox;\r\n let docTimeMinutesField, travelTimeMinutesField;\r\n let groupNoteDisplay;\r\n // Values & Data\r\n var selectedConsumerIds = [];\r\n var selectedConsumerID;\r\n var dropdownDataKeys;\r\n var dropdownData = {};\r\n var billers; // for casemanager dropdown\r\n var consumersThatCanHaveMileage;\r\n var defaultServiceCode;\r\n var pageLoaded;\r\n var timerRunning;\r\n var groupData;\r\n var lastUpdatedBy;\r\n var enteredBy;\r\n var lastUpdated;\r\n var groupConsumers;\r\n var mileage;\r\n let billerDropdownData;\r\n let fromDashboard;\r\n let dashboardConsumer;\r\n // GK Required\r\n var suppressDocTimePopup;\r\n var gkLocationRequired;\r\n var gkNeedRequired;\r\n var gkContactRequired;\r\n var gkServiceRequired;\r\n var gkAllowGroupNotes;\r\n var gkMileageRequired;\r\n // note data\r\n var isSSANote = true;\r\n var noteId;\r\n var credit;\r\n var serviceCode;\r\n var serviceCodeName;\r\n var locationId;\r\n var serviceId;\r\n var serviceName; // Service DDL current selected value\r\n var servicename; // Service DDL default value from Review Data (rd)\r\n var servicePersonApproved;\r\n var serviceLocationId;\r\n var needId;\r\n var vendorId;\r\n var contactId;\r\n var serviceDate;\r\n var startTime;\r\n var endTime;\r\n var noteText;\r\n var confidential;\r\n var serviceMonitoring;\r\n var reviewRequired;\r\n var documentationTime;\r\n var travelTime;\r\n //Attachment\r\n let tempAttachmentArray = [],\r\n reviewAttachmentArray = [],\r\n attachmentCount;\r\n // Revew Note Data Only\r\n var caseManagerId;\r\n var consumerId;\r\n var reviewData; // all the data\r\n var reviewResults;\r\n var reviewRejectReason;\r\n var correctedCheckbox;\r\n var corrected;\r\n var isGroupNote;\r\n var convertToGroupNote = false; //When reviewing a single note, more consumers can be added to convert it to group note.\r\n var rd;\r\n // Permisisons\r\n var viewOnly;\r\n var cnBatched;\r\n //need for required fields\r\n var gkLocationRequired = '';\r\n var gkServiceRequired = '';\r\n var gkNeedRequired = '';\r\n var gkContactRequired = '';\r\n var advLocationRequired = '';\r\n var advServiceRequired = '';\r\n var advNeedRequired = '';\r\n var advContactRequired = '';\r\n // case note inputs\r\n var isReadOnly;\r\n\r\n // Utils\r\n // ----------------------------------------\r\n function warningPopup(text, continueFunc, cancelFunc, hide_X = true) {\r\n const popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n hideX: hide_X,\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n if (continueFunc) {\r\n const continueBtn = button.build({\r\n text: 'continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n continueFunc();\r\n },\r\n });\r\n btnWrap.appendChild(continueBtn);\r\n }\r\n if (cancelFunc) {\r\n var cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n cancelFunc();\r\n },\r\n });\r\n btnWrap.appendChild(cancelBtn);\r\n }\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = text;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function validateTimesWhenDateChange() {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n // var startTime = UTIL.convertToMilitary(startInput.value);\r\n var startTime = startInput.value;\r\n // var endTime = UTIL.convertToMilitary(endInput.value);\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n let isTimeValid;\r\n isTimeValid = true;\r\n\r\n if (dateInput.value === currentDate) {\r\n isTimeValid = currentTime < startTime || currentTime < endTime ? false : true; // current date: can't have Time be future time\r\n }\r\n\r\n if (startTime >= endTime) {\r\n isTimeValid = false; // any date: startTime can't be after endTime\r\n }\r\n\r\n if (startTime === '' || endTime === '') {\r\n isTimeValid = false; // start time and end time are required\r\n }\r\n\r\n //isTimeValid = startTime >= endTime ? false : true; // any date: startTime can't be after endTime\r\n\r\n return {\r\n isValid: isTimeValid,\r\n startTime,\r\n endTime,\r\n };\r\n }\r\n function checkIfSameDates() {\r\n var dateEntered = new Date(serviceDateInput.value);\r\n var todaysDate = new Date();\r\n dateEntered = dateEntered.getMilliseconds();\r\n todaysDate = todaysDate.getMilliseconds();\r\n\r\n return dateEntered === todaysDate ? 0 : 1;\r\n }\r\n\r\n function validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n }\r\n\r\n function setNoteValues(reviewData) {\r\n if (pageLoaded === 'new') {\r\n caseManagerId = $.session.PeopleId;\r\n consumerId = '';\r\n\r\n noteId = 0;\r\n serviceCode = '';\r\n locationId = '';\r\n serviceId = '';\r\n serviceLocationId = '';\r\n needId = '';\r\n vendorId = '';\r\n contactId = '';\r\n serviceDate = UTIL.getTodaysDate();\r\n startTime = UTIL.getCurrentTime();\r\n endTime = '';\r\n noteText = '';\r\n confidential = 'N';\r\n serviceMonitoring = 'N';\r\n corrected = 'N';\r\n reviewRequired = '';\r\n } else {\r\n rd = reviewData[0];\r\n isGroupNote = rd.groupid === '' ? false : true;\r\n\r\n caseManagerId = rd.casemanagerid;\r\n consumerId = rd.consumerid;\r\n noteId = rd.noteid;\r\n groupNoteId = rd.groupid === '' ? 0 : rd.groupid;\r\n credit = rd.credit;\r\n serviceCode = rd.mainbillingorservicecodeid; // serv/bill code\r\n serviceCodeName = rd.mainbillingorservicecodename;\r\n locationId = rd.locationcode;\r\n serviceId = rd.servicecode; // services\r\n serviceName = rd.servicename;\r\n serviceLocationId = rd.servicelocationid;\r\n needId = rd.serviceneedcode;\r\n vendorId = rd.vendorid;\r\n contactId = rd.contactcode;\r\n serviceDate = UTIL.formatDateToIso(rd.servicedate.split(' ')[0]);\r\n startTime = rd.starttime;\r\n endTime = rd.endtime;\r\n noteText = rd.casenote;\r\n confidential = rd.confidential;\r\n serviceMonitoring = rd.outcomeServiceMonitoring;\r\n corrected = rd.corrected;\r\n reviewRequired = rd.reviewrequired === '' ? 'N' : rd.reviewrequired;\r\n reviewResults = rd.reviewresults;\r\n reviewRejectReason = rd.rejectionreason;\r\n documentationTime = rd.totaldoctime;\r\n travelTime = rd.traveltime;\r\n lastUpdated = rd.lastupdate;\r\n enteredBy = rd.originaluserid;\r\n originalUserName = rd.originaluserfullname;\r\n cnBatched = rd.batched;\r\n mileage = rd.totalmiles;\r\n }\r\n }\r\n function checkIfBatched() {\r\n return cnBatched !== '' ? true : false;\r\n }\r\n\r\n function checkIfCredit() {\r\n return credit === 'Y' || credit === '1' ? true : false; //ADVUNIT: 1 and GKUNIT: 'Y'\r\n }\r\n\r\n function isCaseNoteReadOnly() {\r\n if (credit === 'Y' || credit === '-1') {\r\n isReadOnly = true;\r\n // } else if (caseManagerId !== $.session.PeopleId) {\r\n // isReadOnly = true;\r\n } else {\r\n isReadOnly = false;\r\n }\r\n }\r\n\r\n function noteSaveUpdate(saveAndNew) {\r\n //Remove the selected consumer from active list\r\n selectedConsumerIds.forEach(cId => {\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n var vendorInput = vendorDropdown.firstElementChild;\r\n var locationInput = locationDropdown.firstElementChild;\r\n var serviceInput = serviceDropdown.firstElementChild;\r\n var needInput = needDropdown.firstElementChild;\r\n var contactInput = contactDropdown.firstElementChild;\r\n documentationTimer.stopTimer;\r\n noteText = UTIL.removeUnsavableNoteText(noteText);\r\n // If they are converting from a single note to a group note, delete existing note and create a new note classified as a group note\r\n if (convertToGroupNote) {\r\n singleNoteToGroupNote();\r\n }\r\n if (pageLoaded === 'new') {\r\n var overlapData = {\r\n consumerId,\r\n startTime,\r\n endTime,\r\n serviceDate,\r\n caseManagerId,\r\n noteId: 0,\r\n groupNoteId: 0,\r\n };\r\n var saveData = {\r\n caseManagerId,\r\n noteId,\r\n // dropdowns\r\n serviceOrBillingCodeId: serviceCode,\r\n locationCode: locationId,\r\n serviceCode: serviceId,\r\n needCode: needId,\r\n serviceDate,\r\n startTime,\r\n endTime,\r\n vendorId: vendorInput.options[vendorInput.selectedIndex] == undefined ? '' : vendorInput.options[vendorInput.selectedIndex].value,\r\n contactCode: contactId,\r\n serviceLocationCode: serviceLocationId,\r\n caseNote: noteText, // from note input\r\n confidential, // from checkbox\r\n corrected, // from checkbox\r\n\r\n casenotemileage: String(mileage) === 'null' ? '0' : String(mileage),\r\n casenotetraveltime: String(travelTime),\r\n documentationTime: String(documentationTime),\r\n reviewRequired,\r\n serviceMonitoring, // from checkbox\r\n };\r\n newNoteSSA.saveNote(\r\n { overlapData, saveData, selectedConsumerIds, saveAndNew },\r\n tempAttachmentArray,\r\n );\r\n return;\r\n }\r\n\r\n if (pageLoaded === 'review') {\r\n // clean start time and end time:\r\n endTime = endTime.length === 8 ? endTime.substring(0, 5) : endTime;\r\n startTime = startTime.length === 8 ? startTime.substring(0, 5) : startTime;\r\n var updateOverlapData = {\r\n consumerId,\r\n startTime,\r\n endTime,\r\n serviceDate,\r\n caseManagerId,\r\n noteId,\r\n groupNoteId,\r\n };\r\n var updateData = {\r\n noteId,\r\n groupNoteId,\r\n caseManagerId,\r\n consumerId,\r\n serviceOrBillingCodeId: serviceCode, // for Billing Code DDL\r\n locationCode:\r\n locationInput.selectedIndex === -1\r\n ? null\r\n : locationInput.options[locationInput.selectedIndex].value,\r\n serviceCode: serviceId, // for Service DDL\r\n needCode:\r\n needInput.selectedIndex === -1 ? null : needInput.options[needInput.selectedIndex].value,\r\n serviceDate,\r\n startTime,\r\n endTime,\r\n vendorId,\r\n contactCode:\r\n contactInput.selectedIndex === -1\r\n ? null\r\n : contactInput.options[contactInput.selectedIndex].value,\r\n serviceLocationCode: serviceLocationId,\r\n reviewRequired,\r\n confidential,\r\n corrected,\r\n caseNote: noteText,\r\n casenotemileage: String(mileage) === 'null' ? '' : String(mileage),\r\n casenotetraveltime: travelTime === null ? String(0) : String(travelTime),\r\n documentationTime: documentationTime === null ? String(0) : String(documentationTime),\r\n serviceMonitoring,\r\n };\r\n reviewNote.updateNote(\r\n { overlapData: updateOverlapData, updateData, selectedConsumerIds, isGroupNote },\r\n tempAttachmentArray,\r\n );\r\n }\r\n }\r\n\r\n // Dropdowns\r\n // services was left in this data set (same as note.js) but is not used to populate Service DDL\r\n function dealWithDropdownDataHugeString(res) {\r\n function decipherXML(res) {\r\n var xmlDoc,\r\n data = [];\r\n xmlDoc = UTIL.parseXml(\r\n '' + res.populateDropdownDataResult,\r\n );\r\n\r\n var billingCodes = [].slice.call(xmlDoc.getElementsByTagName('billingcode'));\r\n billingCodes.forEach(bc => {\r\n var tmpServiceCode = [].slice.call(bc.getElementsByTagName('codename'))[0];\r\n var tmpServiceId = [].slice.call(bc.getElementsByTagName('serviceid'))[0];\r\n var tmpServiceFunding = [].slice.call(bc.getElementsByTagName('includeinfunding'))[0];\r\n var tmpServiceRequired = [].slice.call(bc.getElementsByTagName('servicerequired'))[0];\r\n var tmpLocationRequired = [].slice.call(bc.getElementsByTagName('locationrequired'))[0];\r\n var tmpNeedRequired = [].slice.call(bc.getElementsByTagName('needrequired'))[0];\r\n var tmpContactRequired = [].slice.call(bc.getElementsByTagName('contactrequired'))[0];\r\n var tmpAllowGroupNotes = [].slice.call(bc.getElementsByTagName('allowgroupnotes'))[0];\r\n var tmpMileageRequired = [].slice.call(bc.getElementsByTagName('mileagerequired'))[0];\r\n var tmpDocTimeRequired = [].slice.call(bc.getElementsByTagName('doctimerequired'))[0];\r\n var tmpTravelTimeRequired = [].slice.call(bc.getElementsByTagName('traveltimerequired'))[0];\r\n var locations = [].slice.call(bc.getElementsByTagName('location'));\r\n var contacts = [].slice.call(bc.getElementsByTagName('contact'));\r\n var services = [].slice.call(bc.getElementsByTagName('service'));\r\n var needs = [].slice.call(bc.getElementsByTagName('need'));\r\n\r\n var tmpObject = {};\r\n tmpObject.serviceCode = tmpServiceCode ? tmpServiceCode.textContent : '';\r\n tmpObject.serviceId = tmpServiceId ? tmpServiceId.textContent : '';\r\n tmpObject.serviceFunding = tmpServiceFunding ? tmpServiceFunding.textContent : '';\r\n tmpObject.serviceRequired = tmpServiceRequired ? tmpServiceRequired.textContent : '';\r\n tmpObject.locationRequired = tmpLocationRequired ? tmpLocationRequired.textContent : '';\r\n tmpObject.needRequired = tmpNeedRequired ? tmpNeedRequired.textContent : '';\r\n tmpObject.contactRequired = tmpContactRequired ? tmpContactRequired.textContent : '';\r\n tmpObject.allowGroupNotes = tmpAllowGroupNotes ? tmpAllowGroupNotes.textContent : '';\r\n tmpObject.mileageRequired = tmpMileageRequired ? tmpMileageRequired.textContent : '';\r\n tmpObject.docTimeRequired = tmpDocTimeRequired ? tmpDocTimeRequired.textContent : '';\r\n tmpObject.travelTimeRequired = tmpTravelTimeRequired\r\n ? tmpTravelTimeRequired.textContent\r\n : '';\r\n tmpObject.locations = [];\r\n tmpObject.contacts = [];\r\n tmpObject.services = [];\r\n tmpObject.needs = [];\r\n\r\n locations.forEach(loc => {\r\n var tmpLocName = [].slice.call(loc.getElementsByTagName('locname'))[0].textContent;\r\n var tmpLocCode = [].slice.call(loc.getElementsByTagName('loccode'))[0].textContent;\r\n tmpObject.locations.push({\r\n locName: tmpLocName,\r\n locCode: tmpLocCode,\r\n });\r\n });\r\n contacts.forEach(loc => {\r\n var tmpContactName = [].slice.call(loc.getElementsByTagName('contactname'))[0]\r\n .textContent;\r\n var tmpContactCode = [].slice.call(loc.getElementsByTagName('contactcode'))[0]\r\n .textContent;\r\n tmpObject.contacts.push({\r\n contactName: tmpContactName,\r\n contactCode: tmpContactCode,\r\n });\r\n });\r\n services.forEach(loc => {\r\n var tmpServiceName = [].slice.call(loc.getElementsByTagName('servicename'))[0]\r\n .textContent;\r\n var tmpServiceCode = [].slice.call(loc.getElementsByTagName('servicecode'))[0]\r\n .textContent;\r\n tmpObject.services.push({\r\n serviceName: tmpServiceName,\r\n serviceCode: tmpServiceCode,\r\n });\r\n });\r\n needs.forEach(loc => {\r\n var tmpNeedName = [].slice.call(loc.getElementsByTagName('needname'))[0].textContent;\r\n var tmpNeedCode = [].slice.call(loc.getElementsByTagName('needcode'))[0].textContent;\r\n tmpObject.needs.push({\r\n needName: tmpNeedName,\r\n needCode: tmpNeedCode,\r\n });\r\n });\r\n\r\n data.push(tmpObject);\r\n });\r\n\r\n return data;\r\n }\r\n\r\n var beautifulObject = decipherXML(res);\r\n\r\n // create object for quick access\r\n beautifulObject.forEach(dd => {\r\n // create object for each billercode\r\n if (!dropdownData[dd.serviceId]) {\r\n dropdownData[dd.serviceId] = {\r\n serviceId: dd.serviceId,\r\n serviceCode: dd.serviceCode,\r\n serviceFunding: dd.serviceFunding,\r\n locations: [...dd.locations],\r\n contacts: [...dd.contacts],\r\n services: [...dd.services],\r\n needs: [...dd.needs],\r\n docTimeRequired: dd.docTimeRequired,\r\n travelTimeRequired: dd.travelTimeRequired,\r\n mileageRequired: dd.mileageRequired,\r\n locationRequired: dd.locationRequired,\r\n needRequired: dd.needRequired,\r\n serviceRequired: dd.serviceRequired,\r\n contactRequired: dd.contactRequired,\r\n allowGroupNotes: dd.allowGroupNotes,\r\n };\r\n }\r\n });\r\n\r\n dropdownDataKeys = Object.keys(dropdownData);\r\n return dropdownData;\r\n }\r\n\r\n function checkServiceFunding() {\r\n if ($.session.applicationName === 'Advisor') {\r\n if (\r\n serviceCodeDropdown.firstChild.options[\r\n serviceCodeDropdown.firstChild.selectedIndex\r\n ].getAttribute('data-service-funding') === 'N'\r\n ) {\r\n serviceLocationDropdown.classList.add('hidden');\r\n serviceLocationDropdown.classList.remove('error');\r\n serviceLocationDropdown.firstChild.selectedIndex = 0;\r\n serviceLocationId = '00';\r\n } else {\r\n serviceLocationDropdown.classList.remove('hidden');\r\n if (serviceLocationId === '' || serviceLocationId === '00')\r\n serviceLocationDropdown.classList.add('error');\r\n }\r\n }\r\n }\r\n\r\n // populate Service Code DDL on page load\r\n function populateServiceDropdown(ConsumerId) {\r\n caseNotesAjax.getSSAServiceOptionsDropdown(ConsumerId, serviceDate, function (results) {\r\n var data = results.map(r => {\r\n return {\r\n value: r.serviceCode,\r\n text: r.fullName,\r\n attributes: [{ key: 'personApproved', value: r.personApproved }],\r\n };\r\n });\r\n if ($.session.applicationName === 'Gatekeeper') data.unshift({ value: '', text: '' }); // add blank value in service dropdown for GK only\r\n\r\n var defaultVal;\r\n var defaultinlist = false;\r\n var localservicePersonApproved;\r\n\r\n // if this is a review, review data (rd) will have a value\r\n if (rd && rd.servicecode) {\r\n serviceId = rd.servicecode;\r\n defaultVal = serviceId;\r\n // does the review CN service exist in the Service DDL items\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i].value === serviceId) {\r\n servicename = data[i].text;\r\n localservicePersonApproved = data[i].attributes[0].value;\r\n defaultinlist = true;\r\n }\r\n }\r\n } else {\r\n serviceId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'serviceDropdwn');\r\n\r\n dropdown.populate(serviceDropdown, data, defaultVal);\r\n\r\n // if Service DDL has no item selected, then clear all DDLs and error condition\r\n if (!defaultVal) {\r\n serviceDropdown.classList.add('error');\r\n // clear Billing DDL (serviceCodeDropDown) and error condition\r\n var serviceCodeDDL = document.getElementById('serviceCodeDropdown');\r\n serviceCodeDDL.options[0] = null;\r\n serviceCodeDropdown.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n } else {\r\n serviceDropdown.classList.remove('error');\r\n }\r\n\r\n // if Reviewing a CN, then populate other DDLs using selected servicename (not serviceID)\r\n if (pageLoaded === 'review') {\r\n if (!defaultinlist) {\r\n serviceDropdown.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n } else {\r\n serviceDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n populateBillerDropdown(servicename, localservicePersonApproved);\r\n populateBillerRelatedDropdowns();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // autopopulate Biller Code DDL after Service Code select\r\n function populateBillerDropdown(servicename, servicepersonapproved) {\r\n caseNotesAjax.getSSABillCodesFromService(\r\n servicename,\r\n servicepersonapproved,\r\n function (results, person) {\r\n let filteredResult = results.filter(arrItem =>\r\n arrItem.noteType === person || arrItem.noteType === 'G' ? true : false,\r\n );\r\n if (filteredResult.length < 1) filteredResult = results;\r\n var data = filteredResult.map(r => {\r\n return {\r\n value: r.service_id,\r\n text: r.fullName,\r\n attributes: [{ key: 'serviceCode', value: r.serviceCode }],\r\n };\r\n });\r\n\r\n var defaultVal = defaultServiceCode;\r\n\r\n // there should always be one Billing Code (else clause is defensive coding)\r\n if (data.length === 1) {\r\n if (pageLoaded === 'review') {\r\n // when auto populating the Billing DDL\r\n // if the saved Billing value is not equal to the selected value, update Billing DDL and related DDLs\r\n if (data[0].value !== rd.mainbillingorservicecodeid) {\r\n //GROUP NOTE CODE: ADD the saved (previous) value to DDL\r\n data.unshift({\r\n id: '0',\r\n value: rd.mainbillingorservicecodeid,\r\n text: rd.mainbillingorservicecodename,\r\n });\r\n\r\n // saved service equal to selected service (initial view of a review CN)\r\n if (servicename === rd.servicename) {\r\n defaultVal = rd.mainbillingorservicecodeid;\r\n serviceCode = rd.mainbillingorservicecodeid;\r\n data.splice(1, 1); //remove unused item from serviceCodeDropDown\r\n } else {\r\n // user has selected new service\r\n defaultVal = data[1].value;\r\n serviceCode = data[1].value;\r\n data.splice(0, 1); //remove unused item from serviceCodeDropDown\r\n checkGKRequiredFields();\r\n displayDocTimeSection();\r\n }\r\n populateBillerRelatedDropdowns();\r\n\r\n //\tif saved Billing value equal to selected\r\n } else {\r\n defaultVal = data[0].value;\r\n serviceCode = data[0].value;\r\n populateBillerRelatedDropdowns();\r\n checkGKRequiredFields();\r\n if (!suppressDocTimePopup) displayDocTimeSection();\r\n }\r\n } else {\r\n //new CN\r\n defaultVal = data[0].value;\r\n serviceCode = data[0].value;\r\n populateBillerRelatedDropdowns();\r\n clearBillerRelatedDropdowns();\r\n }\r\n } else {\r\n //defensive -- should only be one item in data\r\n data.unshift({ id: '0', value: '', text: '' }); //ADD Blank value\r\n data.sort(function (a, b) {\r\n // alphabetize\r\n if (a.text < b.text) {\r\n return -1;\r\n }\r\n if (a.text > b.text) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n\r\n dropdown.populate(serviceCodeDropdown, data, defaultVal);\r\n\r\n // if Billing Code DDL has no item selected, then error condition\r\n if (defaultVal === '') {\r\n serviceCodeDropdown.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n } else {\r\n serviceCodeDropdown.classList.remove('error');\r\n // saveNoteBtn.classList.remove('disabled');\r\n checkRequiredFields();\r\n }\r\n\r\n // reset this flag\r\n suppressDocTimePopup = false;\r\n\r\n serviceCodeDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n\r\n // TCM selected on a Group NOte\r\n // if (isGroupNote && dropdownData[serviceCode].docTimeRequired === 'Y') {\r\n // \tserviceCodeDropdown.classList.add('error');\r\n // \twarningPopup('You have selected a bill code that does not allow group notes. Please select only one consumer.', null, null, false);\r\n // \tvar checkGKRequiredFields = false;\r\n // \t clearBillerRelatedDropdowns(checkGKRequiredFields);\r\n // \tcheckRequiredFields();\r\n // }\r\n },\r\n );\r\n }\r\n\r\n function alphabetizeDDL(data) {\r\n data.sort(function (a, b) {\r\n // alphabetize\r\n if (a.text < b.text) {\r\n return -1;\r\n }\r\n if (a.text > b.text) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n return data;\r\n }\r\n\r\n function populateLocationDrodown() {\r\n var locations = dropdownData[serviceCode].locations;\r\n var data = locations.map(loc => {\r\n return {\r\n value: loc.locCode,\r\n text: loc.locName,\r\n };\r\n });\r\n\r\n data = alphabetizeDDL(data);\r\n data.unshift({ value: '', text: '' });\r\n\r\n var defaultVal;\r\n\r\n if (rd && rd.locationcode) {\r\n locationId = rd.locationcode;\r\n defaultVal = rd.locationcode;\r\n } else {\r\n locationId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'locationDropdwn');\r\n\r\n dropdown.populate(locationDropdown, data, defaultVal);\r\n }\r\n\r\n function populateContactsDrodown() {\r\n var contacts = dropdownData[serviceCode].contacts;\r\n\r\n var data = contacts.map(contact => {\r\n return {\r\n value: contact.contactCode,\r\n text: contact.contactName,\r\n };\r\n });\r\n\r\n data = alphabetizeDDL(data);\r\n data.unshift({ value: '', text: '' });\r\n\r\n var defaultVal;\r\n\r\n if (rd && rd.contactcode) {\r\n contactId = rd.contactcode;\r\n defaultVal = rd.contactcode;\r\n } else {\r\n contactId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'contactDropdwn');\r\n\r\n dropdown.populate(contactDropdown, data, defaultVal);\r\n }\r\n\r\n function populateNeedsDrodown() {\r\n var needs = dropdownData[serviceCode].needs;\r\n var data = needs.map(need => {\r\n return {\r\n value: need.needCode,\r\n text: need.needName,\r\n };\r\n });\r\n\r\n data = alphabetizeDDL(data);\r\n data.unshift({ value: '', text: '' });\r\n\r\n var defaultVal;\r\n\r\n if (rd && rd.serviceneedcode) {\r\n needId = rd.serviceneedcode;\r\n defaultVal = rd.serviceneedcode;\r\n } else {\r\n needId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'needDropdwn');\r\n\r\n dropdown.populate(needDropdown, data, defaultVal);\r\n }\r\n\r\n function dropDownDisplay(data, dropDown) {\r\n if (data.length > 1) {\r\n document.getElementById(dropDown).parentElement.style.display = '';\r\n //$(\"#needDropdwn\").show();\r\n } else {\r\n document.getElementById(dropDown).parentElement.style.display = 'none';\r\n //$(\"#needDropdwn\").hide();\r\n }\r\n }\r\n\r\n function clearBillerRelatedDropdowns() {\r\n locationId = '';\r\n needId = '';\r\n contactId = '';\r\n locationDropdown.firstElementChild.selectedIndex = 0;\r\n needDropdown.firstElementChild.selectedIndex = 0;\r\n contactDropdown.firstElementChild.selectedIndex = 0;\r\n\r\n checkServiceFunding();\r\n\r\n // if user selection is NULL, then error\r\n if (serviceCode === '') {\r\n serviceCodeDropdown.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n } else {\r\n serviceCodeDropdown.classList.remove('error');\r\n // saveNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n checkRequiredFields();\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n checkGKRequiredFields();\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n checkADVRequiredFields();\r\n }\r\n }\r\n\r\n function populateBillerRelatedDropdowns() {\r\n // Skip populating dropdowns if biller doesn have a default service code. Breaks things.\r\n if (serviceCode !== '') {\r\n if (!rd) {\r\n locationId = '';\r\n needId = '';\r\n contactId = '';\r\n }\r\n //Below if statement added from ticket #31039 in 2020.3. It was noticed that if the user\r\n //had a default service code that was later set as inactive, they would still\r\n // have this service code associated with them but it would break the module.\r\n //This sould be a temp fix until there are measures put in place that prevent\r\n //this in the desktop application.\r\n if (dropdownData[serviceCode]) {\r\n populateLocationDrodown();\r\n populateContactsDrodown();\r\n populateNeedsDrodown();\r\n } else {\r\n //\tserviceCode = ''\r\n //\tdropdown.populate(serviceCodeDropdown, billerDropdownData);\r\n }\r\n }\r\n if (rd) {\r\n selectedConsumerIds[0] = rd.consumerid;\r\n populateVendorDropdown();\r\n populateServiceLocations();\r\n }\r\n }\r\n\r\n function populateVendorDropdown() {\r\n caseNotesAjax.getConsumerSpecificVendors(\r\n selectedConsumerIds[0],\r\n serviceDate,\r\n function (results) {\r\n var data = results.map(r => {\r\n return {\r\n value: r.vendorId,\r\n text: r.vendorName,\r\n };\r\n });\r\n //\t\t\tif ($.session.applicationName === 'Gatekeeper') data.unshift({ value: '', text: '' }); // add blank value in vendor dropdown for GK only\r\n var defaultVal;\r\n\r\n if (rd && rd.vendorid) {\r\n defaultVal = rd.vendorid;\r\n } else {\r\n vendorId = data[1] && data[1].value ? data[1].value : '';\r\n defaultVal = vendorId;\r\n }\r\n\r\n dropdown.populate(vendorDropdown, data, defaultVal);\r\n },\r\n );\r\n }\r\n\r\n function populateServiceLocations() {\r\n var serviceLocData = { serviceDate, consumerId: selectedConsumerIds[0] };\r\n caseNotesAjax.getServiceLocationsForCaseNoteDropDown(serviceLocData, function (results) {\r\n var data = results.map(r => {\r\n return {\r\n value: r.code,\r\n text: r.caption,\r\n };\r\n });\r\n data.unshift({ value: '', text: '' });\r\n var defaultVal;\r\n\r\n if (rd && rd.servicelocationid) {\r\n defaultVal = rd.servicelocationid;\r\n } else {\r\n //set to '00' if no val\r\n serviceLocationId = data[0] && data[0].value ? data[0].value : '00';\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor')\r\n dropdown.populate(serviceLocationDropdown, data, defaultVal);\r\n });\r\n }\r\n\r\n // Case Note Card\r\n // ----------------------------------------\r\n function disableCard() {\r\n // card disabled until consumers are moved over\r\n // caseNoteCard.classList.add('disabled');\r\n }\r\n function enableCard() {\r\n caseNoteCard.classList.remove('disabled');\r\n checkRequiredFields();\r\n }\r\n // Consumers\r\n function buildConsumerCard(clone) {\r\n var card = document.createElement('div');\r\n card.classList.add('caseNotes__consumer');\r\n card.appendChild(clone);\r\n return card;\r\n }\r\n function moveConsumerToConsumerSection(selectedConsumers, isGroup) {\r\n var consumerList = document.querySelector('.consumers-list');\r\n if (pageLoaded === 'review') {\r\n if (!isGroupNote) {\r\n convertToGroupNote = true;\r\n }\r\n }\r\n //Remove the 'no consumer message' when adding a consumer. (only visible on new notes)\r\n if (pageLoaded === 'new') {\r\n var noConsumerMessage = document.getElementById('noConsumerMessage');\r\n noConsumerMessage.classList.add('hidden');\r\n isGroupNote = isGroup;\r\n }\r\n selectedConsumers.forEach(consumer => {\r\n //If consumer is already on the selected consumer list ignore\r\n if (selectedConsumerIds.filter(id => id === consumer.id).length > 0) return;\r\n // If Group note and active consumers already exist on note, ignore.\r\n if (isGroupNote) {\r\n if (Object.keys(groupData[groupNoteId]).filter(id => id === consumer.id).length > 0) return;\r\n }\r\n consumer.card.classList.remove('highlighted');\r\n consumer.card.classList.remove('disabled');\r\n consumer.card.classList.add('consumer-selected');\r\n var clone = consumer.card.cloneNode(true);\r\n var card = buildConsumerCard(clone);\r\n //remove consumer on click\r\n card.addEventListener('click', () => {\r\n // var consumerListBtn = document.querySelector('.consumerListBtn');\r\n var consumer = event.target.getAttribute('data-consumer-id');\r\n event.target.parentElement.remove();\r\n selectedConsumerIds = selectedConsumerIds.filter(item => item !== consumer);\r\n roster2.removeConsumerFromActiveConsumers(consumer);\r\n if (selectedConsumerIds.length === 0) {\r\n //\tconsumerListBtn.classList.remove('disabled');\r\n populateBillerRelatedDropdowns();\r\n //re show the message when there are no consumer selected\r\n if (pageLoaded === 'new') {\r\n var noConsumerMessage = document.getElementById('noConsumerMessage');\r\n noConsumerMessage.classList.remove('hidden');\r\n }\r\n }\r\n checkRequiredFields();\r\n checkConsumerForMileage();\r\n if (pageLoaded === 'review') {\r\n if (selectedConsumerIds.length === 1) {\r\n convertToGroupNote = false;\r\n }\r\n }\r\n });\r\n consumerList.appendChild(card);\r\n\r\n // new SSA notes can only have one consumer, reviewed SSA notes can have multiple consumers\r\n if (pageLoaded === 'new') {\r\n selectedConsumerIds.length = 0;\r\n selectedConsumerIds.push(consumer.id);\r\n } else {\r\n if (selectedConsumerIds.includes(consumer.id) === false) {\r\n selectedConsumerIds.push(consumer.id);\r\n }\r\n }\r\n\r\n checkConsumerForMileage();\r\n });\r\n\r\n // consumer specific dropdowns\r\n populateVendorDropdown();\r\n if ($.session.applicationName === 'Advisor') {\r\n populateServiceLocations();\r\n } else {\r\n // checkGKRequiredFields('consumerSelect');\r\n }\r\n checkRequiredFields(); //To enable save button if possible\r\n }\r\n // Details\r\n function buildDocTime() {\r\n var docTimeBody = document.createElement('div');\r\n // docTimeBody.classList.add('card__body');\r\n\r\n var docTime = document.createElement('div');\r\n docTime.id = 'docTime';\r\n //\tdocTime.classList.add('card');\r\n docTime.appendChild(docTimeBody);\r\n\r\n DOM.ACTIONCENTER.appendChild(docTime);\r\n\r\n if (serviceId === '' || serviceId === '0') docTime.classList.add('hidden');\r\n\r\n var minutesDisplay = document.createElement('div');\r\n // minutesDisplay.classList.add('inputWrap');\r\n\r\n // start/stop buttons\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap', 'cntimerbuttons');\r\n timerStartBtn = button.build({\r\n text: 'Start Doc Timer',\r\n id: 'cnTimerStart',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-toggled', value: 'false' }],\r\n callback: function () {\r\n // caseNotesTimer.startCaseNoteTimer();\r\n if (timerRunning === true) return;\r\n documentationTimer.startTimer(documentationTime);\r\n timerRunning = true;\r\n // if editing toggleSaveButton()\r\n },\r\n });\r\n timerStopBtn = button.build({\r\n text: 'Stop Doc Timer',\r\n id: 'cnTimerStop',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n // pauseTimer();\r\n if (timerRunning === false) return;\r\n documentationTime = documentationTimer.stopTimer();\r\n timerRunning = false;\r\n },\r\n });\r\n\r\n //PERMISSIONS// Doc Time minutes field is read only when $.session.UpdateCaseNotesDocTime === false\r\n var docTimeMinVal = rd\r\n ? rd.totaldoctime\r\n ? Math.round(Math.floor(parseInt(rd.totaldoctime) / 30) / 2)\r\n : 0\r\n : 0;\r\n docTimeMinutesField = input.build({\r\n label: 'Doc Time Minutes',\r\n id: 'docTimeMinutesDisplay',\r\n type: 'text',\r\n attributes: [\r\n { key: 'min', value: '0' },\r\n { key: 'maxlength', value: '5' },\r\n { key: 'onkeypress', value: 'return event.charCode >= 48 && event.charCode <= 57' },\r\n ],\r\n readonly: $.session.UpdateCaseNotesDocTime === false ? true : false,\r\n value: String(docTimeMinVal),\r\n });\r\n\r\n minutesDisplay.appendChild(docTimeMinutesField);\r\n btnWrap.appendChild(timerStartBtn);\r\n btnWrap.appendChild(timerStopBtn);\r\n\r\n docTimeBody.appendChild(btnWrap);\r\n docTimeBody.appendChild(minutesDisplay);\r\n\r\n return docTime;\r\n }\r\n function parseSessionTimes(dirtyTime) {\r\n const isAMorPM = dirtyTime.includes('A') ? 'am' : 'pm';\r\n let time;\r\n\r\n if (isAMorPM === 'am') {\r\n time = `${dirtyTime.split('A')[0]} AM`;\r\n } else {\r\n time = `${dirtyTime.split('P')[0]} PM`;\r\n }\r\n\r\n time = UTIL.convertToMilitary(time);\r\n return time.slice(0, -3);\r\n }\r\n function checkTimesAreWithinWorkHours() {\r\n const warnStart = parseSessionTimes($.session.caseNotesWarningStartTime);\r\n const warnEnd = parseSessionTimes($.session.caseNotesWarningEndTime);\r\n\r\n if (\r\n $.session.caseNotesWarningStartTime === '00:00' ||\r\n $.session.caseNotesWarningEndTime === '00:00' ||\r\n !$.session.caseNotesWarningStartTime ||\r\n !$.session.caseNotesWarningEndTime ||\r\n $.session.caseNotesWarningStartTime === 'Null' ||\r\n $.session.caseNotesWarningEndTime === 'Null'\r\n ) {\r\n return true;\r\n }\r\n\r\n if (startTime < warnStart || startTime > warnEnd || endTime < warnStart || endTime > warnEnd) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n function buildCardDetailsSection() {\r\n function saveBtnAction(saveAndNew) {\r\n function preSave() {\r\n if ($.session.applicationName === 'Gatekeeper' && timerRunning) {\r\n documentationTime = documentationTimer.stopTimer();\r\n timerRunning = false;\r\n }\r\n // Stop speech to text if running\r\n if ($.session.sttEnabled && document.querySelectorAll('.stt_listening').length > 0) {\r\n const listeningNodes = document.querySelectorAll('.stt_listening');\r\n listeningNodes.forEach(node => {\r\n node.dispatchEvent(new Event('click'));\r\n });\r\n }\r\n }\r\n if (\r\n (tempAttachmentArray.length > 0 || reviewAttachmentArray.length > 0) &&\r\n convertToGroupNote\r\n ) {\r\n const warningMessage = `Attachments on this case note will be lost by \r\n\t\t\t\tconverting this single case note to a group case note.`;\r\n warningPopup(\r\n warningMessage,\r\n () => {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n preSave();\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n const hoursAreWithinWorkHours = checkTimesAreWithinWorkHours();\r\n if (hoursAreWithinWorkHours) {\r\n noteSaveUpdate(saveAndNew);\r\n } else {\r\n warningPopup(\r\n `The times you have entered are outside the current normal working hours.\r\n Click OK to proceed or cancel to return to the form.`,\r\n () => {\r\n noteSaveUpdate(saveAndNew);\r\n },\r\n () => {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n return;\r\n },\r\n );\r\n }\r\n } else {\r\n noteSaveUpdate(saveAndNew);\r\n }\r\n },\r\n () => {\r\n return;\r\n },\r\n );\r\n } else {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n preSave();\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n const hoursAreWithinWorkHours = checkTimesAreWithinWorkHours();\r\n if (hoursAreWithinWorkHours) {\r\n noteSaveUpdate(saveAndNew);\r\n } else {\r\n warningPopup(\r\n `The times you have entered are outside the current normal working hours.\r\n Click OK to proceed or cancel to return to the form.`,\r\n () => {\r\n noteSaveUpdate(saveAndNew);\r\n },\r\n () => {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n return;\r\n },\r\n );\r\n }\r\n } else {\r\n noteSaveUpdate(saveAndNew);\r\n }\r\n }\r\n }\r\n var details = document.createElement('div');\r\n details.classList.add('card__body', 'caseNoteCard__details');\r\n //Group Note info area:\r\n groupNoteDisplay = document.createElement('div');\r\n groupNoteDisplay.classList.add('groupNoteDisplay');\r\n groupNoteDisplay.innerHTML = groupConsumers;\r\n\r\n // dropdowns\r\n var style = 'secondary';\r\n\r\n isCaseNoteReadOnly();\r\n\r\n serviceCodeDropdown = dropdown.build({\r\n dropdownId: 'serviceCodeDropdown',\r\n label: $.session.applicationName === 'Gatekeeper' ? 'Bill Code:' : 'Serv. Code:',\r\n style,\r\n });\r\n // serviceCodeDropdown.id = \"serviceCodeDropdown\"\r\n\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdwn',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n serviceDropdown = dropdown.build({\r\n dropdownId: 'serviceDropdwn',\r\n label: 'Service',\r\n style: 'secondary',\r\n });\r\n if ($.session.applicationName === 'Advisor') {\r\n serviceLocationDropdown = dropdown.build({\r\n label: 'Service Location',\r\n style,\r\n });\r\n }\r\n needDropdown = dropdown.build({\r\n dropdownId: 'needDropdwn',\r\n label: 'Need',\r\n style: 'secondary',\r\n });\r\n vendorDropdown = dropdown.build({\r\n label: 'Vendor',\r\n style,\r\n });\r\n contactDropdown = dropdown.build({\r\n dropdownId: 'contactDropdwn',\r\n label: 'Contact',\r\n style: 'secondary',\r\n });\r\n // inputs\r\n serviceDateInput = input.build({\r\n label: 'Service Date',\r\n type: 'date',\r\n style,\r\n value: pageLoaded === 'review' ? serviceDate : serviceDate,\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n style,\r\n value: startTime,\r\n });\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n style,\r\n value: endTime,\r\n });\r\n mileageInput = input.build({\r\n id: 'mileageInput',\r\n label: 'Mileage',\r\n style,\r\n value: mileage === '0' || mileage === '0.00' ? '' : mileage,\r\n attributes: [{ key: 'min', value: '0' }],\r\n type: 'text',\r\n });\r\n\r\n travelTimeMinutesField = input.build({\r\n label: 'Travel Time Minutes',\r\n id: 'travelTimeMinutesDisplay',\r\n attributes: [\r\n { key: 'min', value: '0' },\r\n { key: 'maxlength', value: '4' },\r\n { key: 'onkeypress', value: 'return event.charCode >= 48 && event.charCode <= 57' },\r\n ],\r\n value: rd ? (rd.traveltime ? rd.traveltime : '') : '',\r\n type: 'text',\r\n });\r\n\r\n myPhrasesBtn = button.build({\r\n id: 'myPhrasesBtn',\r\n text: 'My Phrases',\r\n type: 'contained',\r\n style,\r\n callback: function () {\r\n //pass current note input field value\r\n cnPhrasesPopup();\r\n },\r\n });\r\n noteTextInput = input.build({\r\n id: 'noteTextField',\r\n label: 'Note',\r\n type: 'textarea',\r\n style,\r\n classNames: 'autosize',\r\n value: noteText,\r\n stt: $.session.sttEnabled && !cnBatched,\r\n });\r\n // checkboxes\r\n confidentialCheckbox = input.buildCheckbox({\r\n text: 'Confidential',\r\n isChecked: confidential === 'Y' ? true : false,\r\n });\r\n serviceMonitoringCheckbox = input.buildCheckbox({\r\n text: 'Outcome/Service Monitoring',\r\n isChecked: serviceMonitoring === 'Y' ? true : false,\r\n });\r\n // btns\r\n attachmentsBtn = button.build({\r\n text: `Attachments (${attachmentCount})`,\r\n style,\r\n type: 'contained',\r\n icon: 'attachment',\r\n callback: () => {\r\n cnAttachment.init(tempAttachmentArray, reviewAttachmentArray, cnBatched, noteId, isSSANote);\r\n },\r\n });\r\n if (attachmentCount > 0) attachmentsBtn.classList.add('hasAttachments');\r\n\r\n var text = pageLoaded === 'new' ? 'Save' : 'Update';\r\n saveNoteBtn = button.build({\r\n text,\r\n style,\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: () => saveBtnAction(false),\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style,\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: () => saveBtnAction(true),\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style,\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: function () {\r\n selectedConsumerIds.forEach(cId => {\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n if (timerRunning === true) {\r\n documentationTimer.stopTimer();\r\n timerRunning = false;\r\n }\r\n notesOverview.init();\r\n },\r\n });\r\n cancelNoteBtn.style.width = '100%';\r\n //DELETE ONLY ON REVIEW NOTE\r\n deleteNoteBtn = button.build({\r\n text: 'delete',\r\n style,\r\n type: 'contained',\r\n icon: 'delete',\r\n classNames: ['caseNoteDelete'],\r\n callback: deleteConfirmation,\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveNoteBtn);\r\n if (pageLoaded === 'review') {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n btnWrap.appendChild(deleteNoteBtn);\r\n } else {\r\n btnWrap.appendChild(saveAndNewNoteBtn);\r\n }\r\n\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n //Validate end date on new notes,\r\n if (pageLoaded === 'new') {\r\n if (validateStartEndTimes('endCheck')) {\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n endTimeInput.classList.add('error');\r\n }\r\n }\r\n\r\n // group inputs * for desktop later\r\n var grid_col_1 = document.createElement('div');\r\n var grid_col_2 = document.createElement('div');\r\n\r\n // build details section\r\n grid_col_1.appendChild(serviceDateInput);\r\n grid_col_1.appendChild(startTimeInput);\r\n grid_col_1.appendChild(endTimeInput);\r\n grid_col_1.appendChild(serviceDropdown);\r\n grid_col_1.appendChild(serviceCodeDropdown);\r\n if (!cnBatched) grid_col_1.appendChild(myPhrasesBtn);\r\n grid_col_1.appendChild(noteTextInput);\r\n\r\n var docTime = document.createElement('div');\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n docTime.appendChild(buildDocTime());\r\n }\r\n\r\n var controlWrap = document.createElement('div'); \r\n controlWrap.classList.add('inputSSAWrap'); \r\n var chkboxWrap = document.createElement('div');\r\n chkboxWrap.style.width = '51%';\r\n\r\n var btnAttachWrap = document.createElement('div');\r\n btnAttachWrap.style.width = '49%';\r\n \r\n chkboxWrap.appendChild(confidentialCheckbox); \r\n \r\n if ($.session.applicationName === 'Gatekeeper') { \r\n chkboxWrap.appendChild(serviceMonitoringCheckbox); \r\n if (cnBatched) {\r\n serviceMonitoringCheckbox.firstChild.setAttribute('disabled', true);\r\n serviceMonitoringCheckbox.classList.add('disabled');\r\n }\r\n } \r\n if ($.session.applicationName === 'Gatekeeper') btnAttachWrap.appendChild(attachmentsBtn);\r\n controlWrap.appendChild(chkboxWrap);\r\n controlWrap.appendChild(btnAttachWrap);\r\n\r\n grid_col_2.appendChild(controlWrap); \r\n grid_col_2.appendChild(vendorDropdown);\r\n grid_col_2.appendChild(locationDropdown);\r\n grid_col_2.appendChild(needDropdown);\r\n grid_col_2.appendChild(contactDropdown);\r\n if ($.session.applicationName === 'Advisor') {\r\n grid_col_2.appendChild(serviceLocationDropdown);\r\n }\r\n if ($.session.applicationName === 'Gatekeeper') grid_col_2.appendChild(docTime);\r\n grid_col_2.appendChild(travelTimeMinutesField);\r\n grid_col_2.appendChild(mileageInput);\r\n //Hide Mileage Input if they don't have a bill/service code\r\n // if (serviceId === '' || serviceId === '0') mileageInput.classList.add('hidden');\r\n\r\n if (pageLoaded === 'review') {\r\n if (groupNoteId !== 0) grid_col_2.appendChild(groupNoteDisplay);\r\n\r\n //Last Updated by message (only on review)\r\n var lastUpdatedDisplay = document.createElement('div');\r\n lastUpdatedDisplay.classList.add('lastUpdatedDisplay');\r\n var lastUpdatedMessage = document.createElement('p');\r\n lastUpdatedMessage.innerHTML = `\r\n Last Edited On: ${lastUpdated}
    Entered By: ${enteredBy} (${originalUserName})
    `;\r\n lastUpdatedDisplay.appendChild(lastUpdatedMessage);\r\n\r\n var correctedCheckboxDiv = document.createElement('div');\r\n correctedCheckboxDiv.classList.add('correctedCheckbox');\r\n correctedCheckbox = input.buildCheckbox({\r\n text: 'Corrected',\r\n isChecked: corrected === 'Y' ? true : false,\r\n });\r\n\r\n correctedCheckboxDiv.appendChild(correctedCheckbox);\r\n\r\n //Review Required Area//////\r\n\r\n var reviewText;\r\n switch (reviewResults) {\r\n case 'N':\r\n reviewText = 'Not Reviewed';\r\n break;\r\n case 'P':\r\n reviewText = 'Passed';\r\n break;\r\n case 'R':\r\n reviewText = 'Rejected';\r\n break;\r\n default:\r\n reviewText = reviewResults;\r\n break;\r\n }\r\n\r\n if (reviewRequired === 'Y' && $.session.applicationName === 'Gatekeeper') {\r\n var reviewMessage = document.createElement('p');\r\n reviewMessage.classList.add('reviewMessage');\r\n reviewMessage.innerHTML = `\r\n
    Review Required for this Case Note
    Review Results: ${reviewText} \r\n ${reviewRejectReason === '' ? '' : `
    Rejection Reason: ${reviewRejectReason}`}`;\r\n if (reviewResults === 'R') reviewMessage.appendChild(correctedCheckboxDiv);\r\n }\r\n\r\n ////ADV does not have a rejection reason\r\n if (reviewRequired === 'Y' && $.session.applicationName === 'Advisor') {\r\n var reviewMessage = document.createElement('p');\r\n reviewMessage.classList.add('reviewMessage');\r\n reviewMessage.innerHTML = `\r\n
    Review Required for this Case Note
    Review Results: ${reviewText}`;\r\n reviewMessage.appendChild(correctedCheckboxDiv);\r\n }\r\n }\r\n\r\n grid_col_2.appendChild(btnWrap);\r\n grid_col_2.appendChild(btnWrap2);\r\n details.appendChild(grid_col_1);\r\n details.appendChild(grid_col_2);\r\n\r\n if (pageLoaded === 'review') {\r\n grid_col_2.appendChild(lastUpdatedDisplay);\r\n if (reviewRequired === 'Y') grid_col_2.appendChild(reviewMessage);\r\n }\r\n\r\n // if ($.session.applicationName === 'Gatekeeper') buildDocTime();\r\n\r\n DOM.ACTIONCENTER.appendChild(details);\r\n\r\n if (pageLoaded === 'review') {\r\n populateServiceDropdown(consumerId);\r\n } else {\r\n //new\r\n populateServiceDropdown(selectedConsumerID);\r\n }\r\n\r\n //ADV check if the consumer on the note has mileage (after populating dropdowns)\r\n checkConsumerForMileage();\r\n setupCardEvents();\r\n checkServiceFunding();\r\n if ($.session.applicationName === 'Advisor') {\r\n checkADVRequiredFields();\r\n }\r\n\r\n DOM.autosizeTextarea();\r\n\r\n return details;\r\n }\r\n function buildConsumersList() {\r\n var consumerList = document.createElement('div');\r\n consumerList.classList.add('consumers-list');\r\n\r\n return consumerList;\r\n }\r\n\r\n function buildCaseNoteCard(selectedConsumerId) {\r\n selectedConsumerID = selectedConsumerId;\r\n caseNoteCard = document.createElement('div');\r\n caseNoteCard.classList.add('card', 'caseNoteCard');\r\n\r\n var cardHeader = document.createElement('div');\r\n cardHeader.classList.add('card__header');\r\n cardHeader.innerHTML =\r\n pageLoaded === 'new'\r\n ? `

    New SSA Note

    `\r\n : `

    Note SSA Review - ${rd.consumername}

    `;\r\n\r\n var cardDetails = buildCardDetailsSection();\r\n\r\n // note card\r\n caseNoteCard.appendChild(cardHeader);\r\n caseNoteCard.appendChild(cardDetails);\r\n\r\n return caseNoteCard;\r\n }\r\n\r\n function cnPhrasesPopup() {\r\n cnInsertPhrases.show(noteTextInput.querySelector('.input-field__input').value, isSSANote);\r\n }\r\n function cnPhrasesDone(note) {\r\n noteText = note;\r\n checkRequiredFields();\r\n }\r\n\r\n function displayDocTimeSection() {\r\n if (dropdownData[serviceCode].docTimeRequired !== 'Y') {\r\n docTime.classList.add('hidden');\r\n } else {\r\n docTime.classList.remove('hidden');\r\n var docTimePopup = document.getElementById('docTImeRequiredPopup');\r\n if (!docTimePopup && !cnBatched) {\r\n if (!isReadOnly) docTimeRequiredPopup();\r\n }\r\n }\r\n }\r\n\r\n function docTimeRequiredPopup() {\r\n if (document.getElementById('docTimeRequiredPopup')) return; // Prevent multiple popups\r\n docTimePopup = POPUP.build({\r\n id: 'docTimeRequiredPopup',\r\n });\r\n var yesBtn = button.build({\r\n text: 'yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n documentationTimer.startTimer(documentationTime);\r\n timerRunning = true;\r\n POPUP.hide(docTimePopup);\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'no',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n POPUP.hide(docTimePopup);\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n var popupText = document.createElement('p');\r\n popupText.innerHTML =\r\n 'Documentation Time is allowed for this bill code. Would you like to start the timer now?';\r\n docTimePopup.appendChild(popupText);\r\n docTimePopup.appendChild(btnWrap);\r\n POPUP.show(docTimePopup);\r\n }\r\n\r\n function checkADVRequiredFields(calledAction) {\r\n var serviceCodeDropdownOptions = document.getElementById('serviceCodeDropdown');\r\n serviceCode =\r\n serviceCodeDropdownOptions.options[serviceCodeDropdownOptions.selectedIndex].value;\r\n if (serviceCode === '') {\r\n serviceCodeDropdown.classList.add('error');\r\n checkRequiredFields();\r\n return;\r\n } else serviceCodeDropdown.classList.remove('error');\r\n advLocationRequired = dropdownData[serviceCode].locationRequired;\r\n advNeedRequired = dropdownData[serviceCode].needRequired;\r\n advContactRequired = dropdownData[serviceCode].contactRequired;\r\n advServiceRequired = dropdownData[serviceCode].serviceRequired;\r\n\r\n var locations = dropdownData[serviceCode].locations;\r\n if (advLocationRequired === 'Y' && locations.length === 0) {\r\n locationDropdown.classList.remove('error');\r\n } else if (advLocationRequired === 'Y' && (locationId === '' || locationId === '0')) {\r\n locationDropdown.classList.add('error');\r\n } else locationDropdown.classList.remove('error');\r\n\r\n var needs = dropdownData[serviceCode].needs;\r\n if (advNeedRequired === 'Y' && needs.length === 0) {\r\n needDropdown.classList.remove('error');\r\n } else if (advNeedRequired === 'Y' && (needId === '' || needId === '0')) {\r\n needDropdown.classList.add('error');\r\n } else needDropdown.classList.remove('error');\r\n\r\n var contacts = dropdownData[serviceCode].contacts;\r\n if (advContactRequired === 'Y' && contacts.length === 0) {\r\n contactDropdown.classList.remove('error');\r\n } else if (advContactRequired === 'Y' && (contactId === '' || contactId === '0')) {\r\n contactDropdown.classList.add('error');\r\n } else contactDropdown.classList.remove('error');\r\n\r\n var services = dropdownData[serviceCode].services;\r\n if (advServiceRequired === 'Y' && services.length === 0) {\r\n serviceDropdown.classList.remove('error');\r\n } else if (advServiceRequired === 'Y' && (serviceId === '' || serviceId === '0')) {\r\n serviceDropdown.classList.add('error');\r\n } else serviceDropdown.classList.remove('error');\r\n\r\n //ADV Service Code Not Null\r\n if ($.session.applicationName === 'Advisor' && (serviceId === '' || serviceId === '0')) {\r\n serviceCodeDropdown.classList.add('error');\r\n }\r\n\r\n checkRequiredFields();\r\n }\r\n\r\n function checkGKRequiredFields(calledAction) {\r\n var docTimeDisplay = document.getElementById('docTime');\r\n var timerButtons = document.querySelector('.cntimerbuttons');\r\n var docTimeMinutesField = document.getElementById('docTimeMinutesDisplay');\r\n var travelTimeMinutesField = document.getElementById('travelTimeMinutesDisplay');\r\n var mileageInputField = document.getElementById('mileageInput');\r\n var docTimeRequired = dropdownData[serviceCode].docTimeRequired;\r\n var travelTimeRequired = dropdownData[serviceCode].travelTimeRequired;\r\n\r\n gkLocationRequired = dropdownData[serviceCode].locationRequired;\r\n gkNeedRequired = dropdownData[serviceCode].needRequired;\r\n gkContactRequired = dropdownData[serviceCode].contactRequired;\r\n gkAllowGroupNotes = dropdownData[serviceCode].allowGroupNotes;\r\n gkServiceRequired = dropdownData[serviceCode].serviceRequired;\r\n gkMileageRequired = dropdownData[serviceCode].mileageRequired;\r\n\r\n //As per original specs No groups where DOC Time is allowed\r\n // if (docTimeRequired === 'Y') gkAllowGroupNotes = 'N';\r\n\r\n //DOCTIME//\r\n //1) if doc time, or travel time are required, display doc time area.\r\n if (docTimeRequired === 'Y' || travelTimeRequired === 'Y') {\r\n docTimeDisplay.classList.remove('hidden');\r\n } else docTimeDisplay.classList.add('hidden');\r\n //2) if doc time required show a popup\r\n //Added calledAction to bypass calling docTimePopup when selecting consumers, only on changing bill codes\r\n //Also no popup if CN is Batched AND only show when Billing Code = TCM (10023)\r\n if (\r\n docTimeRequired === 'Y' &&\r\n calledAction !== 'consumerSelect' &&\r\n (cnBatched === '' || cnBatched === null)\r\n ) {\r\n //popup doctime required popup\r\n var docTimePopup = document.getElementById('docTImeRequiredPopup');\r\n if (!docTimePopup && !suppressDocTimePopup) {\r\n if (!isReadOnly) docTimeRequiredPopup();\r\n }\r\n }\r\n\r\n if (docTimeRequired !== 'Y') {\r\n docTime.classList.add('hidden');\r\n } else {\r\n docTime.classList.remove('hidden');\r\n }\r\n\r\n switch (docTimeRequired) {\r\n case 'Y':\r\n docTimeMinutesField.parentElement.classList.remove('hidden');\r\n timerButtons.classList.remove('hidden');\r\n if (rd) {\r\n // Review CN\r\n docTimeMinutesField.value = rd\r\n ? rd.totaldoctime\r\n ? Math.round(Math.floor(parseInt(rd.totaldoctime) / 30) / 2)\r\n : 0\r\n : 0;\r\n } else {\r\n docTimeMinutesField.value = '';\r\n }\r\n break;\r\n default:\r\n docTimeMinutesField.parentElement.classList.add('hidden');\r\n timerButtons.classList.add('hidden');\r\n docTimeMinutesField.value = '0';\r\n if (!cnBatched) documentationTimer.stopTimer();\r\n timerRunning = false;\r\n documentationTime = '';\r\n break;\r\n }\r\n switch (travelTimeRequired) {\r\n case 'Y':\r\n travelTimeMinutesField.parentElement.classList.remove('hidden');\r\n if (rd) {\r\n // Review CN\r\n travelTimeMinutesField.value = rd.traveltime;\r\n } else {\r\n travelTimeMinutesField.value = '';\r\n }\r\n\r\n break;\r\n default:\r\n travelTimeMinutesField.parentElement.classList.add('hidden');\r\n travelTimeMinutesField.value = '0';\r\n travelTime = '';\r\n break;\r\n }\r\n switch (gkMileageRequired) {\r\n case 'Y':\r\n mileageInput.classList.remove('hidden');\r\n if (rd) {\r\n // Review CN\r\n // mileageInput.value = rd.totalmiles\r\n mileageInputField.value = rd.totalmiles;\r\n }\r\n break;\r\n default:\r\n mileageInput.classList.add('hidden');\r\n mileageInput.value = '';\r\n // mileageInputField.value = '';\r\n mileage = '';\r\n break;\r\n }\r\n\r\n var locations = dropdownData[serviceCode].locations;\r\n if (gkLocationRequired === 'Y' && locations.length === 0) {\r\n locationDropdown.classList.remove('error');\r\n } else if (\r\n gkLocationRequired === 'Y' &&\r\n (locationId === '' ||\r\n locationId === '0' ||\r\n locations.filter(e => e.locCode === locationId).length === 0)\r\n ) {\r\n locationDropdown.classList.add('error');\r\n } else locationDropdown.classList.remove('error');\r\n\r\n var needs = dropdownData[serviceCode].needs;\r\n if (gkNeedRequired === 'Y' && needs.length === 0) {\r\n needDropdown.classList.remove('error');\r\n } else if (\r\n gkNeedRequired === 'Y' &&\r\n (needId === '' || needId === '0' || needs.filter(e => e.needCode === needId).length === 0)\r\n ) {\r\n needDropdown.classList.add('error');\r\n } else needDropdown.classList.remove('error');\r\n\r\n var contacts = dropdownData[serviceCode].contacts;\r\n if (gkContactRequired === 'Y' && contacts.length === 0) {\r\n contactDropdown.classList.remove('error');\r\n } else if (\r\n gkContactRequired === 'Y' &&\r\n (contactId === '' ||\r\n contactId === '0' ||\r\n contacts.filter(e => e.contactCode === contactId).length === 0)\r\n ) {\r\n contactDropdown.classList.add('error');\r\n } else contactDropdown.classList.remove('error');\r\n\r\n //Mileage\r\n if (gkMileageRequired === 'Y') {\r\n mileageInput.classList.remove('hidden');\r\n } else {\r\n mileageInput.value = '';\r\n mileageInput.classList.add('hidden');\r\n }\r\n //ADV Service Code Not Null\r\n if ($.session.applicationName === 'Advisor' && (serviceId === '' || serviceId === '0')) {\r\n serviceCodeDropdown.classList.add('error');\r\n }\r\n\r\n // ALLOW GROUP NOTES// if they have a group note made up, but change to builling code that doesn't allow group notes\r\n // reset all consumers from note - They will need to re-add a consumer// As per Angie allowGroupNotes = \"\" should allow group notes\r\n if (gkAllowGroupNotes === 'N') {\r\n switch (pageLoaded) {\r\n case 'review':\r\n //\tconsumerListBtn.classList.add('disabled');\r\n if (selectedConsumerIds.length > 1) {\r\n if (docTimePopup) POPUP.hide(docTimePopup);\r\n removeAllConsumersFromNote();\r\n // consumerListBtn.classList.remove('disabled');\r\n }\r\n break;\r\n case 'new':\r\n if (selectedConsumerIds.length === 1) {\r\n //\tconsumerListBtn.classList.add('disabled');\r\n } else if (selectedConsumerIds.length > 1) {\r\n removeAllConsumersFromNote();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n } //consumerListBtn.classList.remove('disabled');\r\n else checkRequiredFields();\r\n }\r\n\r\n function setupCardEvents() {\r\n var tmpMileage;\r\n // dropdowns\r\n serviceCodeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n serviceCode = selectedOption.value;\r\n // when this changes update following dropdowns\r\n populateBillerRelatedDropdowns();\r\n // reset biller related dropdown values when changing service/bill code:\r\n clearBillerRelatedDropdowns();\r\n\r\n // TCM selected on a Group NOte\r\n if (isGroupNote && dropdownData[serviceCode].docTimeRequired === 'Y') {\r\n warningPopup(\r\n 'You have selected a bill code that does not allow group notes. Please select only one consumer.',\r\n null,\r\n null,\r\n false,\r\n );\r\n }\r\n });\r\n\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n locationId = selectedOption.value;\r\n //GK REQUIRED FIELDS//\r\n //if ($.session.applicationName === 'Gatekeeper' && gkLocationRequired === 'Y') {\r\n if (advLocationRequired === 'Y' || gkLocationRequired === 'Y') {\r\n if (locationId === '') {\r\n locationDropdown.classList.add('error');\r\n } else locationDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n });\r\n\r\n serviceDropdown.addEventListener('change', event => {\r\n // user selects empty option -- Service and Billing in error, \"supporting\" DDL empty but not in error\r\n if (event.target.selectedIndex === 0) {\r\n serviceDropdown.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n\r\n var emptydata = [];\r\n dropdown.populate(serviceCodeDropdown, emptydata, null);\r\n dropdown.populate(needDropdown, emptydata, null);\r\n dropdown.populate(contactDropdown, emptydata, null);\r\n dropdown.populate(locationDropdown, emptydata, null);\r\n\r\n serviceCodeDropdown.classList.add('error');\r\n needDropdown.classList.remove('error');\r\n contactDropdown.classList.remove('error');\r\n locationDropdown.classList.remove('error');\r\n checkGKRequiredFields();\r\n\r\n return;\r\n } else {\r\n serviceDropdown.classList.remove('error');\r\n }\r\n\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n serviceId = selectedOption.value;\r\n serviceName = selectedOption.text;\r\n servicePersonApproved = selectedOption.attributes[1].value;\r\n //GK REQUIRED FIELDS//\r\n if (advServiceRequired === 'Y' || gkServiceRequired === 'Y') {\r\n if (serviceId === '') {\r\n serviceDropdown.classList.add('error');\r\n } else serviceDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n // selection from Service DDL populates BIller DDL\r\n populateBillerDropdown(serviceName, servicePersonApproved);\r\n\r\n // if user selection is NULL, then error\r\n if (!serviceId) {\r\n serviceDropdown.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n } else {\r\n serviceDropdown.classList.remove('error');\r\n }\r\n });\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n serviceLocationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n serviceLocationId = selectedOption.value;\r\n if (serviceLocationId !== '') {\r\n serviceLocationDropdown.classList.remove('error');\r\n } else serviceLocationDropdown.classList.add('error');\r\n checkRequiredFields();\r\n });\r\n }\r\n\r\n needDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n needId = selectedOption.value;\r\n //GK REQUIRED FIELDS//\r\n if (advNeedRequired === 'Y' || gkNeedRequired === 'Y') {\r\n if (needId === '') {\r\n needDropdown.classList.add('error');\r\n } else needDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n /////\r\n });\r\n\r\n vendorDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n vendorId = selectedOption.value;\r\n });\r\n\r\n contactDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n contactId = selectedOption.value;\r\n //GK REQUIRED FIELDS//\r\n if (advContactRequired === 'Y' || gkContactRequired === 'Y') {\r\n if (contactId === '') {\r\n contactDropdown.classList.add('error');\r\n } else contactDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n });\r\n\r\n // setup input events\r\n serviceDateInput.addEventListener('change', event => {\r\n var validObj = validateTimesWhenDateChange();\r\n var sameDate = checkIfSameDates();\r\n\r\n var tempServiceDate = serviceDate;\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validObj.isValid && sameDate) {\r\n $.session.caseNoteTimeCheck = 'pass';\r\n } else {\r\n $.session.caseNoteTimeCheck = 'fail';\r\n }\r\n\r\n serviceDate = event.target.value;\r\n if (serviceDate > UTIL.getTodaysDate() || serviceDate === '') {\r\n serviceDateInput.classList.add('error');\r\n serviceDate = tempServiceDate;\r\n } else serviceDateInput.classList.remove('error');\r\n\r\n if (sameDate && currentTime < startTime) {\r\n validObj.startTime = false;\r\n }\r\n if (sameDate && currentTime < endTime) {\r\n validObj.endTime = false;\r\n }\r\n\r\n if (validObj.isValid) {\r\n startTimeInput.classList.remove('error');\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n if (!validObj.startTime) startTimeInput.classList.add('error');\r\n if (!validObj.endTime) endTimeInput.classList.add('error');\r\n }\r\n\r\n populateVendorDropdown(); // Vendor is based off of date\r\n\r\n // toggleSaveButton\r\n checkRequiredFields();\r\n });\r\n\r\n startTimeInput.addEventListener('change', event => {\r\n var isValid = validateStartEndTimes('startCheck');\r\n startTime = event.target.value;\r\n if (!isValid) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n if (validateStartEndTimes('endCheck')) {\r\n endTimeInput.classList.remove('error');\r\n }\r\n //endTimeInput.classList.remove('error');\r\n // saveNoteBtn.classList.remove('disabled')\r\n }\r\n // toggleSaveButton\r\n checkRequiredFields();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n var isValid = validateStartEndTimes('endCheck');\r\n endTime = event.target.value;\r\n // toggleSaveButton\r\n if (!isValid) {\r\n // show error\r\n endTimeInput.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n if (validateStartEndTimes('startCheck')) {\r\n startTimeInput.classList.remove('error');\r\n }\r\n // saveNoteBtn.classList.remove('disabled')\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n mileageInput.addEventListener('keypress', event => {\r\n //In GK milage is stored to the hundredth so need to check for decimal\r\n tmpMileage = event.target.value;\r\n if (event.key === '.' && event.target.value.indexOf('.') !== -1) {\r\n // event.target.value = event.target.value.substr(0, (event.target.value.length - 1))\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n //Prevent all but numbers and dec - DEC is only for GK\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode !== 46) {\r\n event.preventDefault();\r\n return;\r\n }\r\n } else {\r\n if (event.keyCode < 48 || event.keyCode > 57) {\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n });\r\n\r\n //Time field event listeners (to prevent length that is too long)\r\n\r\n travelTimeMinutesField.addEventListener('keyup', event => {\r\n if (event.target.value.length > 4) {\r\n event.target.value = event.target.value.substr(0, 4);\r\n }\r\n });\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n //ADV Mileage 10 numbers no dec point\r\n mileageInput.addEventListener('keyup', event => {\r\n if (event.target.value.length > 10) event.target.value = tmpMileage;\r\n mileage = event.target.value;\r\n });\r\n }\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n //GK Mileage can have dec point. 5 before dec and 2 after dec point (12345.67)\r\n mileageInput.addEventListener('keyup', event => {\r\n var splitTime = event.target.value.split('.');\r\n if (splitTime[0].length > 5) event.target.value = tmpMileage;\r\n if (splitTime[1] && splitTime[1].length > 2) event.target.value = tmpMileage;\r\n\r\n mileage = parseFloat(event.target.value).toFixed(2);\r\n });\r\n\r\n docTimeMinutesField.addEventListener('change', event => {\r\n documentationTime = parseInt(event.target.value) * 60; //Stored as seconds in DB\r\n });\r\n travelTimeMinutesField.addEventListener('change', event => {\r\n travelTime = event.target.value; //Stored as Minutes in DB\r\n });\r\n }\r\n\r\n noteTextInput.addEventListener('input', event => {\r\n noteText = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n // checkboxes\r\n confidentialCheckbox.addEventListener('change', event => {\r\n confidential = event.target.checked ? 'Y' : 'N';\r\n });\r\n serviceMonitoringCheckbox.addEventListener('change', event => {\r\n serviceMonitoring = event.target.checked ? 'Y' : 'N';\r\n });\r\n if (pageLoaded === 'review' && reviewRequired === 'Y' && reviewResults === 'R') {\r\n correctedCheckbox.addEventListener('change', event => {\r\n corrected = event.target.checked ? 'Y' : 'N';\r\n });\r\n }\r\n }\r\n\r\n function checkRequiredFields() {\r\n var noteInput = noteTextInput.querySelector('textarea');\r\n var endtimeInput = endTimeInput.querySelector('input');\r\n var consumers = document.querySelectorAll('.consumer-selected');\r\n\r\n if (noteInput.value === '') {\r\n noteTextInput.classList.add('error');\r\n } else {\r\n noteTextInput.classList.remove('error');\r\n }\r\n\r\n if (selectedConsumerIds.length > 1) {\r\n attachmentsBtn.classList.add('disabled');\r\n tempAttachmentArray = [];\r\n } else {\r\n attachmentsBtn.classList.remove('disabled');\r\n }\r\n\r\n var errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n } else if (selectedConsumerIds.length > 0 || pageLoaded === 'review') {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n } else {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n }\r\n\r\n if (isReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n deleteNoteBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n function checkConsumerForMileage() {\r\n if ($.session.applicationName === 'Gatekeeper') return;\r\n var mileageAllowed = false;\r\n consumersThatCanHaveMileage.forEach(c => {\r\n selectedConsumerIds.forEach(cId => {\r\n if (c === cId) {\r\n mileageAllowed = true;\r\n }\r\n });\r\n });\r\n switch (mileageAllowed) {\r\n case true:\r\n mileageInput.classList.remove('hidden');\r\n break;\r\n\r\n default:\r\n mileageInput.classList.add('hidden');\r\n mileage = '';\r\n break;\r\n }\r\n }\r\n\r\n function getTimeFromInactivity(time) {\r\n timerRunning = false;\r\n documentationTime = time;\r\n }\r\n\r\n function removeAllConsumersFromNote() {\r\n var cards = document.querySelectorAll('.consumerCard');\r\n cards.forEach(card => {\r\n var cId = card.getAttribute('data-consumer-id');\r\n selectedConsumerIds = selectedConsumerIds.filter(item => item !== cId);\r\n card.parentElement.remove();\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n // removeAllConsumers -- Keep the selected Service and Biller Code, but get rid of other selections ??? -- JMM 07/11/2020\r\n populateBillerRelatedDropdowns();\r\n warningPopup(\r\n 'You have selected a bill code that does not allow group notes. Please select only one consumer.',\r\n null,\r\n null,\r\n false,\r\n );\r\n }\r\n\r\n function deleteConfirmation() {\r\n var popup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n if (timerRunning) {\r\n documentationTimer.stopTimer();\r\n timerRunning = false;\r\n }\r\n pendingSave.show('Deleting Note...');\r\n await caseNotesAjax.deleteExistingCaseNote(noteId);\r\n pendingSave.fulfill('Deleted');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n notesOverview.init();\r\n }, 1000);\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you would like to delete this case note?';\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function singleNoteToGroupNote() {\r\n caseNotesAjax.deleteExistingCaseNote(noteId);\r\n pageLoaded = 'new';\r\n isGroupNote = true;\r\n noteId = 0;\r\n convertToGroupNote = null;\r\n //fix shit\r\n if (travelTime === null) travelTime = 0;\r\n if (documentationTime === null) documentationTime = 0;\r\n endTime = endTime.substring(0, 5);\r\n startTime = startTime.substring(0, 5);\r\n }\r\n\r\n function setGroupData() {\r\n //remove consumers from active list if they are part of the group\r\n groupConsumers = 'Other consumers part of this group ';\r\n for (let [id, name] of Object.entries(groupData[groupNoteId])) {\r\n var splitName = name.split(',');\r\n var consumer = roster2.buildConsumerCard({\r\n FN: splitName[1],\r\n LN: splitName[0],\r\n id: id,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n if (id !== consumerId) groupConsumers += ` | ${name} `;\r\n }\r\n }\r\n\r\n function setPermissions() {\r\n //caseNotesUpdate === True means they have view only permisison\r\n //Can't create new notes or update/delete notes.\r\n //Here View Only is the oppsite of update (update = true so viewonly = false)\r\n viewOnly = !$.session.CaseNotesUpdate;\r\n // IF view only permisisons OR the note is batched (batched notes are read only). A batched case note has the batched ID in cnBatched\r\n //if cnBatched is not \"\" it IS batched\r\n if (viewOnly || (cnBatched && cnBatched !== '')) setInputstoReadOnly();\r\n\r\n // if case note is NOT batched, then check if the caseNote is readOnly and check that user has the Case Notes Update Entered permission\r\n // if (!cnBatched && cnBatched !== '' && cnBatched != null) {\r\n // if (isReadOnly || !$.session.CaseNotesUpdateEntered) setInputstoReadOnly();\r\n // }\r\n\r\n // CHECKING IF IT IS NOT BATCHED -- EMPTY STRING IS NOT BATCHED\r\n if (!cnBatched || cnBatched === '') {\r\n if ($.session.CaseNotesUpdate) {\r\n if (\r\n !$.session.CaseNotesUpdateEntered ||\r\n ($.session.CaseNotesUpdateEntered && caseManagerId === $.session.PeopleId)\r\n ) {\r\n isReadOnly = false; //can edit (correct alignment of Update and UpdateEntered Case Notes permissions)\r\n } else {\r\n isReadOnly = true; //can not edit (with UpdateEntered permission, can't edit other people's case notes)\r\n }\r\n } else {\r\n isReadOnly = true; //can not edit (no overall update permission)\r\n }\r\n }\r\n\r\n if (isReadOnly) setInputstoReadOnly();\r\n\r\n //Set Permissions is the last thing that gets called. Adding Dashboard New CN Events here\r\n if (fromDashboard) {\r\n moveConsumerToConsumerSection(dashboardConsumer);\r\n }\r\n }\r\n\r\n function setInputstoReadOnly() {\r\n //Set inputs to read only\r\n serviceDateInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n startTimeInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n endTimeInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n noteTextInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n mileageInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n //Disable Dropdowns/Checkbox\r\n serviceCodeDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n locationDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n serviceDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n if (serviceLocationDropdown)\r\n serviceLocationDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n needDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n vendorDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n contactDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n confidentialCheckbox.firstChild.setAttribute('disabled', true);\r\n if ($.session.applicationName === 'Gatekeeper') serviceMonitoringCheckbox.firstChild.setAttribute('disabled', true);\r\n\r\n if (docTimeMinutesField)\r\n docTimeMinutesField.querySelector('.input-field__input').setAttribute('readonly', true);\r\n if (travelTimeMinutesField)\r\n travelTimeMinutesField.querySelector('.input-field__input').setAttribute('readonly', true);\r\n //Remove delete and save buttons\r\n deleteNoteBtn.remove();\r\n saveNoteBtn.remove();\r\n //Remove Start and Stop Doc time buttons\r\n if (timerStopBtn) timerStopBtn.remove();\r\n if (timerStartBtn) timerStartBtn.remove();\r\n //disable consumer list button\r\n //\tvar consumerListBtn = document.querySelector('.consumerListBtn');\r\n //\tconsumerListBtn.classList.add('disabled');\r\n }\r\n\r\n function addAttachmentsToCN(attachments, reviewAttachments) {\r\n reviewAttachmentArray = reviewAttachments;\r\n attachments.forEach(attachment => {\r\n tempAttachmentArray.push(attachment);\r\n });\r\n attachmentCount = tempAttachmentArray.length + reviewAttachmentArray.length;\r\n attachmentsBtn.getElementsByTagName('span')[0].innerText = `ATTACHMENTS (${attachmentCount})`;\r\n if (attachmentCount > 0) {\r\n attachmentsBtn.classList.add('hasAttachments');\r\n } else attachmentsBtn.classList.remove('hasAttachments');\r\n }\r\n\r\n function removeAttachmentFromTempAttachmentArray(attachmentName) {\r\n tempAttachmentArray = tempAttachmentArray.filter(\r\n attachment => attachment.description !== attachmentName,\r\n );\r\n }\r\n\r\n function checkConfidential() {\r\n if (confidential === 'Y' && caseManagerId !== $.session.PeopleId) {\r\n noteTextInput.querySelector('.input-field__input').value = 'This is a confidential note.';\r\n noteTextInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n confidentialCheckbox.firstChild.setAttribute('disabled', true);\r\n }\r\n }\r\n function clearAllGlobalVariables() {\r\n mileage = null;\r\n reviewRequired = null;\r\n confidential = null;\r\n serviceMonitoring = null;\r\n corrected = null;\r\n cnBatched = null;\r\n tempAttachmentArray = [];\r\n reviewAttachmentArray = [];\r\n }\r\n\r\n function loadPage(dashConsumer) {\r\n const advPromises = [];\r\n const gkPromises = [];\r\n const dropdownDataPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getDropdownData(function (dropdownData) {\r\n dealWithDropdownDataHugeString(dropdownData);\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(dropdownDataPromise);\r\n gkPromises.push(dropdownDataPromise);\r\n\r\n const getBillersListPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getBillersListForDropDown(function (results) {\r\n billers = results;\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(getBillersListPromise);\r\n gkPromises.push(getBillersListPromise);\r\n\r\n //ADV Only\r\n if ($.session.applicationName === 'Advisor') {\r\n const getConsumersThatCanHaveMileagePromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getConsumersThatCanHaveMileage(function (results) {\r\n consumersThatCanHaveMileage = [];\r\n results.forEach(c => {\r\n consumersThatCanHaveMileage.push(c.consumerid);\r\n });\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(getConsumersThatCanHaveMileagePromise);\r\n }\r\n\r\n const getReviewRequiredForCaseManagerPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getReviewRequiredForCaseManager($.session.PeopleId, function (results) {\r\n reviewRequired = results[0].reviewrequired === '' ? 'N' : results[0].reviewrequired;\r\n defaultServiceCode = results[0].serviceid;\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(getReviewRequiredForCaseManagerPromise);\r\n gkPromises.push(getReviewRequiredForCaseManagerPromise);\r\n\r\n //GK Only - review only\r\n if ($.session.applicationName === 'Gatekeeper' && pageLoaded === 'review') {\r\n const getAttachmentsPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getCaseNoteAttachmentsList(noteId, res => {\r\n reviewAttachmentArray = res;\r\n attachmentCount = reviewAttachmentArray.length;\r\n resolve('success');\r\n });\r\n });\r\n gkPromises.push(getAttachmentsPromise);\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n Promise.all(advPromises).then(function () {\r\n if (pageLoaded === 'new') {\r\n if (dashConsumer) {\r\n const consumerName = dashConsumer.name.split(',');\r\n const consumer = roster2.buildConsumerCard({\r\n FN: consumerName[1],\r\n LN: consumerName[0],\r\n id: dashConsumer.id,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n dashboardConsumer = roster2.getActiveConsumers();\r\n }\r\n newNoteSSA.init();\r\n return;\r\n }\r\n if (pageLoaded === 'review') {\r\n //Add current consumer to roster active list so they can not be re-selected\r\n var splitName = rd.consumername.split(' ');\r\n // roster2.refreshRosterList()\r\n var consumer = roster2.buildConsumerCard({\r\n FN: splitName[0],\r\n LN: splitName[1],\r\n id: consumerId,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n if (groupNoteId !== 0) setGroupData(); //Group Note\r\n reviewNote.init();\r\n return;\r\n }\r\n });\r\n } else {\r\n Promise.all(gkPromises).then(function () {\r\n if (pageLoaded === 'new') {\r\n if (dashConsumer) {\r\n const consumerName = dashConsumer.name.split(',');\r\n const consumer = roster2.buildConsumerCard({\r\n FN: consumerName[1],\r\n LN: consumerName[0],\r\n id: dashConsumer.id,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n dashboardConsumer = roster2.getActiveConsumers();\r\n }\r\n newNoteSSA.init();\r\n return;\r\n }\r\n if (pageLoaded === 'review') {\r\n //Add current consumer to roster active list so they can not be re-selected\r\n var splitName = rd.consumername.split(' ');\r\n var consumer = roster2.buildConsumerCard({\r\n FN: splitName[0],\r\n LN: splitName[1],\r\n id: consumerId,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n if (groupNoteId !== 0) setGroupData(); //Group Note\r\n\r\n reviewNote.init(isSSANote);\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n\r\n function init(pageToLoad, reviewNoteData, gd, consumerFromDash) {\r\n if (consumerFromDash) {\r\n fromDashboard = true;\r\n } else fromDashboard = false;\r\n selectedConsumerIds.forEach(cId => {\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n //Below removes users from the group from the active list\r\n if (groupData && groupNoteId !== 0) {\r\n for (let [id, name] of Object.entries(groupData[groupNoteId])) {\r\n roster2.removeConsumerFromActiveConsumers(id);\r\n }\r\n }\r\n //consumerListBtn = document.querySelector('.consumerListBtn');\r\n //if (consumerListBtn) consumerListBtn.classList.remove('disabled');\r\n groupData = gd;\r\n rd = null;\r\n mileage = null;\r\n reviewRequired = null;\r\n confidential = null;\r\n serviceMonitoring = null;\r\n corrected = null;\r\n cnBatched = null;\r\n travelTime = 0;\r\n timerRunning = false;\r\n documentationTime = 0;\r\n selectedConsumerIds = [];\r\n tempAttachmentArray = [];\r\n reviewAttachmentArray = [];\r\n attachmentCount = 0;\r\n pageLoaded = pageToLoad;\r\n setNoteValues(reviewNoteData);\r\n loadPage(consumerFromDash);\r\n }\r\n\r\n return {\r\n checkRequiredFields,\r\n // build\r\n buildCaseNoteCard,\r\n buildConsumersList,\r\n buildDocTime,\r\n // populate\r\n populateBillerDropdown,\r\n // other\r\n disableCard,\r\n enableCard,\r\n moveConsumerToConsumerSection,\r\n checkGKRequiredFields,\r\n checkConfidential,\r\n checkIfBatched,\r\n checkIfCredit,\r\n getTimeFromInactivity,\r\n // Phrases\r\n cnPhrasesDone,\r\n //permissions\r\n setPermissions,\r\n //RESET VALS\r\n clearAllGlobalVariables,\r\n //ATTACHMENTS\r\n addAttachmentsToCN,\r\n removeAttachmentFromTempAttachmentArray,\r\n //Dropdown Data for Overview Filter\r\n dealWithDropdownDataHugeString,\r\n // init\r\n init,\r\n };\r\n})();\r\n","var reviewNote = (function () {\r\n // review data\r\n var billerId; // caseManager ??\r\n var caseNoteId;\r\n var consumerId;\r\n var contactCode;\r\n var confidential;\r\n var endTime;\r\n var locationCode;\r\n var needCode;\r\n var noteText;\r\n var serviceId;\r\n var serviceCode;\r\n var serviceLocationId;\r\n var serviceDate;\r\n var startTime;\r\n var vendorId;\r\n let attachmentArray;\r\n let isSSANote;\r\n\r\n // Save Note\r\n // ----------------------------------------\r\n function updateGroup(updateData, selectedConsumerIds) {\r\n if (selectedConsumerIds && selectedConsumerIds.length > 0) {\r\n pendingSave.show();\r\n var cIdOfNote = updateData.consumerId;\r\n var groupSavePromises = [];\r\n caseNoteId = updateData.noteId;\r\n // saveAdditionalGroupCaseNote Only gets ran when adding new consumers to a group note, and only gets ran for the new consumers, not existing consumers.\r\n selectedConsumerIds.forEach(cId => {\r\n updateData.noteId = caseNoteId;\r\n groupSavePromises.push(\r\n new Promise(function (fulfill, reject) {\r\n if (cId === cIdOfNote) {\r\n caseNotesAjax.saveSingleCaseNote(updateData, function (results) {\r\n caseNotesAjax.updateGroupNoteValues(\r\n {\r\n noteId: updateData.noteId,\r\n groupNoteId: updateData.groupNoteId,\r\n serviceOrBillingCodeId: updateData.serviceOrBillingCodeId,\r\n serviceDate: updateData.serviceDate,\r\n startTime: updateData.startTime,\r\n endTime: updateData.endTime,\r\n },\r\n function (results) {\r\n fulfill();\r\n },\r\n );\r\n });\r\n } else {\r\n updateData.consumerId = cId;\r\n updateData.noteId = 0;\r\n caseNotesAjax.saveAdditionalGroupCaseNote(updateData, function (results) {\r\n //caseNotesAjax.saveSingleCaseNote(updateData, function (results) {\r\n caseNotesAjax.updateGroupNoteValues(\r\n {\r\n noteId: updateData.noteId,\r\n groupNoteId: updateData.groupNoteId,\r\n serviceOrBillingCodeId: updateData.serviceOrBillingCodeId,\r\n serviceDate: updateData.serviceDate,\r\n startTime: updateData.startTime,\r\n endTime: updateData.endTime,\r\n },\r\n function (results) {\r\n fulfill();\r\n },\r\n );\r\n //});\r\n });\r\n }\r\n }),\r\n );\r\n });\r\n\r\n Promise.all(groupSavePromises).then(function (res) {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n notesOverview.init();\r\n }, 1000);\r\n });\r\n } else {\r\n caseNotesAjax.saveSingleCaseNote(updateData, function (results) {\r\n caseNotesAjax.updateGroupNoteValues(\r\n {\r\n noteId: updateData.noteId,\r\n groupNoteId: updateData.groupNoteId,\r\n serviceOrBillingCodeId: updateData.serviceOrBillingCodeId,\r\n serviceDate: updateData.serviceDate,\r\n startTime: updateData.startTime,\r\n endTime: updateData.endTime,\r\n },\r\n function (results) {\r\n fulfill();\r\n },\r\n );\r\n });\r\n }\r\n }\r\n function updateSingle(updateData) {\r\n pendingSave.show();\r\n caseNotesAjax.saveSingleCaseNote(updateData, function (results) {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n notesOverview.init();\r\n }, 1000);\r\n });\r\n }\r\n function updateNote(opts, attachments) {\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n attachments.forEach(attachment => {\r\n caseNotesAjax.addCaseNoteAttachment(\r\n opts.updateData.noteId,\r\n attachment.description,\r\n attachment.type,\r\n attachment.arrayBuffer,\r\n );\r\n });\r\n }\r\n if (opts.isGroupNote) {\r\n caseNotesAjax.caseNoteOverlapCheck(opts.overlapData, function (overlapResults) {\r\n updateGroup(opts.updateData, opts.selectedConsumerIds);\r\n });\r\n } else {\r\n caseNotesAjax.caseNoteOverlapCheck(opts.overlapData, function (overlapResults) {\r\n updateSingle(opts.updateData);\r\n });\r\n }\r\n }\r\n\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n initPageLoad();\r\n\r\n note.moveConsumerToConsumerSection();\r\n note.enableCard();\r\n\r\n DOM.toggleNavLayout();\r\n\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function initPageLoad() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n\r\n if (!isSSANote) {\r\n roster2.miniRosterinit();\r\n }\r\n\r\n var container = document.createElement('div');\r\n container.classList.add('caseNotes');\r\n\r\n var noteCard;\r\n if ($.session.CaseNotesSSANotes && isSSANote) {\r\n noteCard = noteSSA.buildCaseNoteCard({\r\n caseNoteId,\r\n contactCode,\r\n endTime,\r\n locationCode,\r\n needCode,\r\n noteText,\r\n serviceId,\r\n serviceCode,\r\n serviceLocationId,\r\n startTime,\r\n serviceDate,\r\n vendorId,\r\n });\r\n } else {\r\n noteCard = note.buildCaseNoteCard();\r\n }\r\n\r\n var consumersList;\r\n $.session.CaseNotesSSANotes && isSSANote\r\n ? (consumersList = noteSSA.buildConsumersList())\r\n : (consumersList = note.buildConsumersList());\r\n\r\n //Batched Message\r\n var batchedMessage = document.createElement('h4');\r\n batchedMessage.setAttribute('id', 'batchedMessage');\r\n batchedMessage.innerHTML = 'Case Note is Batched';\r\n\r\n // credit Message\r\n var creditMessage = document.createElement('h4');\r\n creditMessage.setAttribute('id', 'creditMessage');\r\n creditMessage.innerHTML = 'This is a credit note';\r\n\r\n\r\n container.appendChild(consumersList);\r\n container.appendChild(noteCard);\r\n\r\n $.session.CaseNotesSSANotes && isSSANote\r\n ? noteSSA.checkConfidential()\r\n : note.checkConfidential(); //Check confidential before notecard is appended\r\n\r\n DOM.ACTIONCENTER.insertBefore(container, DOM.ACTIONCENTER.childNodes[0]);\r\n\r\n //Checking if batched\r\n $.session.CaseNotesSSANotes && isSSANote\r\n ? (cnBatched = noteSSA.checkIfBatched())\r\n : (cnBatched = note.checkIfBatched());\r\n\r\n //Checking if credit note\r\n $.session.CaseNotesSSANotes && isSSANote\r\n ? (cnCredit = noteSSA.checkIfCredit())\r\n : (cnCredit = note.checkIfCredit());\r\n\r\n if ($.session.CaseNotesSSANotes && isSSANote) {\r\n if (cnBatched) DOM.ACTIONCENTER.insertBefore(batchedMessage, container);\r\n if (cnCredit) DOM.ACTIONCENTER.insertBefore(creditMessage, container);\r\n noteSSA.checkRequiredFields();\r\n // if ($.session.applicationName === \"Gatekeeper\") noteSSA.checkGKRequiredFields();\r\n } else {\r\n if (cnBatched) DOM.ACTIONCENTER.insertBefore(batchedMessage, container);\r\n if (cnCredit) DOM.ACTIONCENTER.insertBefore(creditMessage, container);\r\n note.checkRequiredFields();\r\n if ($.session.applicationName === 'Gatekeeper') note.checkGKRequiredFields();\r\n }\r\n\r\n $.session.CaseNotesSSANotes && isSSANote ? noteSSA.setPermissions() : note.setPermissions();\r\n }\r\n\r\n function init(IsSSANote) {\r\n isSSANote = IsSSANote;\r\n setActiveModuleSectionAttribute('caseNotes-review');\r\n roster2.setAllowedConsumers(['%']);\r\n initPageLoad();\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n updateNote,\r\n init,\r\n };\r\n})();\r\n","var absentWidget = (function() {\r\n // DATA\r\n //-----------------------\r\n var date;\r\n // cached data\r\n var absentWidgetDate;\r\n var absentWidgetLocationId;\r\n var absentWidgetLocationName;\r\n var absentWidgetGroupId;\r\n var absentWidgetGroupName;\r\n var absentWidgetGroupCode;\r\n // DOM\r\n //-----------------------\r\n var widget;\r\n var widgetBody;\r\n var consumerList;\r\n var totalConsumers;\r\n var filterPopup;\r\n var locationDropdown;\r\n var groupDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n \r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n \r\n var dateInput = input.build({\r\n id: 'absentWidgetDate',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: absentWidgetDate\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'absentWidgetLocations',\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: false\r\n });\r\n groupDropdown = dropdown.build({\r\n dropdownId: 'absentWidgetGroups',\r\n label: 'Group',\r\n style: 'secondary',\r\n readonly: false\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained'\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined'\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(dateInput);\r\n filterPopup.appendChild(locationDropdown);\r\n filterPopup.appendChild(groupDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n\r\n // Set date filter to today\r\n date = document.getElementById('absentWidgetDate');\r\n date.value = UTIL.getTodaysDate();\r\n absentWidgetDate = date.value;\r\n }\r\n function eventSetup() {\r\n var oldAbsentDate;\r\n var oldLocationName;\r\n var oldLocationId;\r\n var oldGroupId;\r\n var oldGoupCode;\r\n var oldGroupName;\r\n\r\n date.addEventListener('change', event => {\r\n var absentDate = event.target.value;\r\n oldAbsentDate = absentWidgetDate;\r\n absentWidgetDate = absentDate;\r\n\r\n // cache old values\r\n oldLocationName = absentWidgetLocationName;\r\n oldLocationId = absentWidgetLocationId;\r\n oldGroupId = absentWidgetGroupId;\r\n oldGoupCode = absentWidgetGroupCode;\r\n oldGroupName = absentWidgetGroupName;\r\n //When changing the date - locations get reset, so also reset the ID and Name back to all - which is the default value\r\n absentWidgetLocationId = \"000\";\r\n absentWidgetLocationName = \"ALL\";\r\n absentWidgetGroupId = '0';\r\n absentWidgetGroupCode = 'ALL';\r\n absentWidgetGroupName = 'Everyone';\r\n\r\n absentWidgetAjax.getLocationsForDashboardAbsent(populateAbsentWidgetLocations);\r\n absentWidgetAjax.getConsumerGroupsForDashboardAbsent(absentWidgetLocationId, populateAbsentWidgetGroups);\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n // cache old values\r\n oldLocationName = absentWidgetLocationName;\r\n oldLocationId = absentWidgetLocationId;\r\n // update session variables\r\n absentWidgetLocationName = selectedOption.innerHTML;\r\n absentWidgetLocationId = selectedOption.value;\r\n // reset group session variables since location dropdown change updates group dropdown values\r\n oldGroupId = absentWidgetGroupId;\r\n oldGoupCode = absentWidgetGroupCode;\r\n oldGroupName = absentWidgetGroupName;\r\n absentWidgetGroupId = '0';\r\n absentWidgetGroupCode = 'ALL';\r\n absentWidgetGroupName = 'Everyone';\r\n // update group dropdown\r\n absentWidgetAjax.getConsumerGroupsForDashboardAbsent(absentWidgetLocationId, populateAbsentWidgetGroups);\r\n });\r\n groupDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n // cache old values\r\n oldGroupId = absentWidgetGroupId;\r\n oldGoupCode = absentWidgetGroupCode;\r\n oldGroupName = absentWidgetGroupName;\r\n // update session variables\r\n absentWidgetGroupId = selectedOption.value;\r\n absentWidgetGroupCode = selectedOption.id;\r\n absentWidgetGroupName = selectedOption.innerHTML;\r\n });\r\n applyFiltersBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n \r\n //Loading\r\n consumerList.innerHTML = '';\r\n PROGRESS__ANYWHERE.init()\r\n PROGRESS__ANYWHERE.SPINNER.show(consumerList, \"Loading\");\r\n\r\n absentWidgetAjax.getAbsentWidgetFilterDataAjax({\r\n token: $.session.Token,\r\n absentDate: absentWidgetDate,\r\n absentLocationId: absentWidgetLocationId,\r\n absentGroupCode: absentWidgetGroupCode,\r\n custGroupId: absentWidgetGroupId\r\n }, populateAbsentWidgetResults);\r\n });\r\n cancelFilterBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n absentWidgetDate = oldAbsentDate;\r\n absentWidgetLocationId = oldLocationId;\r\n absentWidgetLocationName = oldLocationName;\r\n absentWidgetGroupId = oldGroupId;\r\n absentWidgetGroupCode = oldGoupCode;\r\n absentWidgetGroupName = oldGroupName;\r\n });\r\n }\r\n\tfunction populateAbsentWidgetLocations(results) {\r\n var data = results.map(r => {\r\n return {\r\n id: r.ID,\r\n value: r.ID,\r\n text: r.Name\r\n }\r\n });\r\n\r\n dropdown.populate('absentWidgetLocations', data, absentWidgetLocationId);\r\n }\r\n function populateAbsentWidgetGroups(results) {\r\n var data = results.map(r => {\r\n return {\r\n id: r.GroupCode,\r\n value: r.RetrieveID,\r\n text: r.GroupName\r\n }\r\n });\r\n\r\n var defaultVal = absentWidgetGroupId\r\n\r\n if (absentWidgetLocationId !== '000') {\r\n var allFiterData = data.filter(d => d.id === 'ALL');\r\n if (allFiterData.length > 0) {\r\n defaultVal = allFiterData[0].value;\r\n }\r\n }\r\n\r\n dropdown.populate('absentWidgetGroups', data, defaultVal);\r\n }\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, totalConsumers);\r\n }\r\n\r\n var splitDate = absentWidgetDate.split('-');\r\n var filteredDate = `${UTIL.leadingZero(splitDate[1])}/${UTIL.leadingZero(splitDate[2])}/${splitDate[0].slice(2, 4)}`;\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Date: ${filteredDate}

    \r\n

    Location: ${absentWidgetLocationName}

    \r\n

    Group: ${absentWidgetGroupName}

    \r\n
    `;\r\n }\r\n\r\n function populateAbsentWidgetResults(results) {\r\n displayFilteredBy();\r\n\r\n consumerList.innerHTML = '';\r\n\r\n if (results.length < 1) {\r\n totalConsumers.innerHTML = '';\r\n consumerList.innerHTML = `

    No Absent Consumers

    `;\r\n return;\r\n }\r\n\r\n var absentObj = {};\r\n var locations = [];\r\n var totalAbsentCount = 0;\r\n // build absent object\r\n results.forEach(r => {\r\n var locationName = r.Description;\r\n var locationId = r.locId;\r\n var consumerName = `${r.LN}, ${r.FN}`;\r\n if (locationId !== absentWidgetLocationId && absentWidgetLocationId !== '000') return; // This breaks current iteration if you are filtering a location\r\n \r\n if (!absentObj[locationId]) {\r\n absentObj[locationId] = [];\r\n locations.push(`${locationName}{*}${locationId}`);\r\n }\r\n totalAbsentCount ++\r\n absentObj[locationId].push(consumerName);\r\n });\r\n // sort by location name\r\n locations = locations.sort((a, b) => {\r\n return a < b ? 1 : 0;\r\n });\r\n // build & append absent consumer results\r\n locations.forEach(loc => {\r\n loc = loc.split('{*}');\r\n var locName = loc[0];\r\n var locId = loc[1];\r\n var totalAbsent = absentObj[locId].length;\r\n var header = `${locName} - ${totalAbsent}`;\r\n var list = `\r\n
      \r\n ${absentObj[locId].map(c => `
    • ${c}
    • `).join('')}\r\n
    \r\n `;\r\n consumerList.innerHTML += `

    ${header}

    ${list}

    `;\r\n });\r\n \r\n totalConsumers.innerHTML = `

    Total Absent: ${totalAbsentCount}

    `;\r\n }\r\n\r\n\tfunction init() {\r\n if (!absentWidgetDate) absentWidgetDate = UTIL.getTodaysDate();\r\n if (!absentWidgetLocationId) absentWidgetLocationId = '000';\r\n if (!absentWidgetLocationName) absentWidgetLocationName = 'ALL';\r\n if (!absentWidgetGroupId) absentWidgetGroupId = '0';\r\n if (!absentWidgetGroupName) absentWidgetGroupName = 'Everyone';\r\n if (!absentWidgetGroupCode) absentWidgetGroupCode = 'ALL';\r\n \r\n widget = document.getElementById('dashabsentconsumers');\r\n widgetBody = widget.querySelector('.widget__body');\r\n consumerList = document.querySelector('.absentConsumerList');\r\n totalConsumers = document.querySelector('.totalAbsentConsumers');\r\n\r\n // append filter button\r\n dashboard.appendFilterButton('dashabsentconsumers', 'absentFilterBtn');\r\n\r\n buildFilterPopup();\r\n displayFilteredBy();\r\n eventSetup();\r\n \r\n PROGRESS__ANYWHERE.init()\r\n PROGRESS__ANYWHERE.SPINNER.show(consumerList, \"Loading\");\r\n\r\n absentWidgetAjax.getLocationsForDashboardAbsent(function(locations) {\r\n absentWidgetAjax.getConsumerGroupsForDashboardAbsent(absentWidgetLocationId, function(groups) {\r\n populateAbsentWidgetLocations(locations);\r\n populateAbsentWidgetGroups(groups);\r\n\r\n\r\n\r\n absentWidgetAjax.getAbsentWidgetFilterDataAjax({\r\n token: $.session.Token,\r\n absentDate: absentWidgetDate,\r\n absentLocationId: absentWidgetLocationId,\r\n absentGroupCode: absentWidgetGroupCode,\r\n custGroupId: absentWidgetGroupId\r\n }, populateAbsentWidgetResults);\r\n });\r\n });\r\n\r\n // populate widget\r\n // absentWidgetAjax.getLocationsForDashboardAbsent(populateAbsentWidgetLocations);\r\n // absentWidgetAjax.getConsumerGroupsForDashboardAbsent(absentWidgetLocationId, populateAbsentWidgetGroups);\r\n\t}\r\n\r\n\treturn {\r\n\t\tinit\r\n\t};\r\n})();","var absentWidgetAjax = (function() {\r\n var absentLocationsArray = [];\r\n\r\n\tfunction getLocationsForDashboardAbsent(callback) {\r\n if (absentLocationsArray.length > 0) {\r\n callback(absentLocationsArray);\r\n return;\r\n }\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getLocationsJSON/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = response.getLocationsJSONResult;\r\n\t\t\t\tres.unshift({\r\n ID: '000',\r\n Name: 'ALL'\r\n\t\t\t\t});\r\n\t\t\t\t// cache results\r\n\t\t\t\tabsentLocationsArray = res;\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getConsumerGroupsForDashboardAbsent(locationId, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol + '://' +\r\n\t\t\t\t$.webServer.address + ':' +\r\n\t\t\t\t$.webServer.port + '/' +\r\n\t\t\t\t$.webServer.serviceName + '/getConsumerGroupsJSON/',\r\n\t\t\tdata: JSON.stringify({ token: $.session.Token, locationId }),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n var res = response.getConsumerGroupsJSONResult;\r\n res = res.filter(r => r.GroupCode !== 'CAS' && r.GroupCode !== 'NAT');\r\n\t\t\t\tcallback(res, null);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getAbsentWidgetFilterDataAjax(filterData, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol + '://' +\r\n\t\t\t\t$.webServer.address + ':' +\r\n\t\t\t\t$.webServer.port + '/' +\r\n\t\t\t\t$.webServer.serviceName + '/getAbsentWidgetFilterData/',\r\n\t\t\tdata: JSON.stringify(filterData),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n var res = JSON.parse(response.getAbsentWidgetFilterDataResult);\r\n callback(res, null);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\tcallback(error, null);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetLocationsForDashboardAbsent: getLocationsForDashboardAbsent,\r\n\t\tgetConsumerGroupsForDashboardAbsent: getConsumerGroupsForDashboardAbsent,\r\n\t\tgetAbsentWidgetFilterDataAjax: getAbsentWidgetFilterDataAjax,\r\n\t};\r\n})();\r\n","const adminSingleEntryWidget = (function () {\r\n var statuses = {\r\n A: 'Needs Approval',\r\n P: 'Pending',\r\n R: 'Rejected',\r\n };\r\n // DATA\r\n //-----------------------\r\n var cachedResults;\r\n var cachedResults_locations;\r\n var selectedConsumerId;\r\n var selectedConsumerName;\r\n var selectedLocationId;\r\n var selectedLocationDescription;\r\n var entriesObj = {};\r\n var consumerNames = {};\r\n // DOM\r\n //-----------------------\r\n var widget;\r\n var widgetBody;\r\n var filterPopup;\r\n var consumerDropdown;\r\n var locationDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n\r\n // Filtering\r\n function buildFilterPopup() {\r\n widget = document.getElementById('admindashsingleentrywidget');\r\n if (!widget) return;\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n widgetBody = widget.querySelector('.widget__body');\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n consumerDropdown = dropdown.build({\r\n dropdownId: 'adminWidgetEmployees',\r\n label: 'Employees',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'adminWidgetLocations',\r\n label: 'Locations',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(consumerDropdown);\r\n filterPopup.appendChild(locationDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n function populateConsumerDropdown() {\r\n // Consumer drop down should not include Logged in User\r\n for (var key in consumerNames) {\r\n if (consumerNames[key].peopleId === $.session.PeopleId) {\r\n delete consumerNames[key];\r\n }\r\n }\r\n\r\n let data = Object.keys(consumerNames).map(c => {\r\n return {\r\n value: consumerNames[c].peopleId,\r\n text: consumerNames[c].name,\r\n };\r\n });\r\n //order Consumer DropDown by name\r\n data.sort((a, b) => (a.text > b.text ? 1 : -1));\r\n\r\n data.unshift({ value: '%', text: 'ALL' });\r\n\r\n dropdown.populate('adminWidgetEmployees', data, selectedConsumerId);\r\n }\r\n\r\n function populateLocationsDropDown(locationNames) {\r\n if (locationNames.length > 0) {\r\n let data = Object.keys(locationNames).map(l => {\r\n return {\r\n value: locationNames[l].locationId,\r\n text: locationNames[l].description,\r\n };\r\n });\r\n data.unshift({ value: '%', text: 'ALL' });\r\n\r\n dropdown.populate('adminWidgetLocations', data, selectedLocationId);\r\n }\r\n }\r\n\r\n function eventSetup() {\r\n var oldSelectedConsumerId;\r\n var oldSelectedConsumerName;\r\n var oldSelectedLocationId;\r\n var oldSelectedLocationDescription;\r\n\r\n consumerDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n\r\n oldSelectedConsumerId = selectedConsumerId;\r\n oldSelectedConsumerName = selectedConsumerName;\r\n\r\n selectedConsumerId = selectedConsumerOption.value;\r\n selectedConsumerName = selectedConsumerOption.innerHTML;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedLocationOption = event.target.options[event.target.selectedIndex];\r\n\r\n oldSelectedLocationId = selectedLocationId;\r\n oldSelectedLocationDescription = selectedLocationDescription;\r\n\r\n selectedLocationId = selectedLocationOption.value;\r\n selectedLocationDescription = selectedLocationOption.innerHTML;\r\n });\r\n applyFiltersBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n groupCountInfo(cachedResults, selectedConsumerId, selectedLocationId);\r\n populateCountInfo();\r\n });\r\n cancelFilterBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n // selectedConsumerId = oldSelectedConsumerId;\r\n // selectedConsumerName = oldSelectedConsumerName;\r\n // selectedLocationId = oldSelectedLocationId;\r\n // selectedLocationDescription = oldSelectedLocationDescription;\r\n });\r\n }\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.appendChild(filteredBy);\r\n }\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Employee: ${selectedConsumerName}

    \r\n

    Location: ${selectedLocationDescription}

    `;\r\n }\r\n\r\n function populateCountInfo() {\r\n displayFilteredBy();\r\n\r\n var pendingSection = widget.querySelector('.pending-section');\r\n var approvalSection = widget.querySelector('.needsapproval-section');\r\n var rejectedSection = widget.querySelector('.rejected-section');\r\n pendingSection.innerHTML = '';\r\n approvalSection.innerHTML = '';\r\n rejectedSection.innerHTML = '';\r\n\r\n var entryGroups = Object.keys(entriesObj);\r\n entryGroups.forEach(group => {\r\n var dateRanges = Object.keys(entriesObj[group]);\r\n dateRanges.sort((a, b) => {\r\n var dateA = a.split('{*}')[0];\r\n var dateB = b.split('{*}')[0];\r\n dateA = new Date(dateA);\r\n dateB = new Date(dateB);\r\n\r\n if (dateA > dateB) {\r\n return -1;\r\n } else if (dateA < dateB) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n dateRanges.forEach(range => {\r\n var text = range.split('{*}').join(' - ');\r\n var count = entriesObj[group][range].count;\r\n var p = document.createElement('p');\r\n p.setAttribute('start-date', range.split('{*}')[0]);\r\n p.setAttribute('end-date', range.split('{*}')[1]);\r\n p.innerHTML = `${text} - ${count}`;\r\n p.classList.add('customLink');\r\n if (group === 'P') {\r\n pendingSection.appendChild(p);\r\n addEvent(p, 'P');\r\n } else if (group === 'A') {\r\n approvalSection.appendChild(p);\r\n addEvent(p, 'A');\r\n } else if (group === 'R') {\r\n rejectedSection.appendChild(p);\r\n addEvent(p, 'R');\r\n }\r\n });\r\n });\r\n }\r\n\r\n function addEvent(element, status) {\r\n element.addEventListener('click', event => {\r\n let startDate = event.target.getAttribute('start-date');\r\n let endDate = event.target.getAttribute('end-date');\r\n setActiveModuleSectionAttribute('timeEntry-approval');\r\n actioncenter.dataset.activeModule = 'timeEntry';\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n UTIL.toggleMenuItemHighlight('timeEntry');\r\n timeEntry.getInitialData(() => {\r\n timeApproval.dashHandler(startDate, endDate, status);\r\n });\r\n });\r\n }\r\n function buildWidgetTabs() {\r\n var widgetTabs = widgetBody.querySelector('.tabs');\r\n if (!widgetTabs) {\r\n var tabOptions = {\r\n sections: ['Needs Approval', 'Pending', 'Rejected'],\r\n };\r\n\r\n widgetTabs = tabs.build(tabOptions);\r\n\r\n widgetBody.appendChild(widgetTabs);\r\n }\r\n }\r\n function groupCountInfo(data, selectedConsumerId, selectedLocationId) {\r\n entriesObj = {};\r\n data.forEach(d => {\r\n if (statuses[d.Anywhere_Status]) {\r\n if (\r\n selectedConsumerId &&\r\n (selectedConsumerId === d.People_ID || selectedConsumerId === '%')\r\n ) {\r\n if (\r\n selectedLocationId &&\r\n (selectedLocationId === d.Location_ID || selectedLocationId === '%')\r\n ) {\r\n var peopleId = d.People_ID;\r\n var locationId = d.Location_ID;\r\n var name = `${d.last_name}` + ', ' + `${d.first_name}`;\r\n var status = d.Anywhere_Status;\r\n var startDate = d.startdate.split(' ')[0];\r\n var endDate = d.enddate.split(' ')[0];\r\n var dateString = `${startDate}{*}${endDate}`;\r\n\r\n if (!entriesObj[status]) {\r\n entriesObj[status] = {};\r\n }\r\n if (!entriesObj[status][dateString]) {\r\n entriesObj[status][dateString] = { count: 0 };\r\n }\r\n entriesObj[status][dateString].count++;\r\n\r\n if (!consumerNames[peopleId]) {\r\n consumerNames[peopleId] = { peopleId, name };\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n function init() {\r\n if (!selectedConsumerName) selectedConsumerName = 'ALL';\r\n if (!selectedConsumerId) selectedConsumerId = '%';\r\n if (!selectedLocationDescription) selectedLocationDescription = 'ALL';\r\n if (!selectedLocationId) selectedLocationId = '%';\r\n\r\n widget = document.getElementById('admindashsingleentrywidget');\r\n widgetBody = widget.querySelector('.widget__body');\r\n widgetBody.innerHTML = '';\r\n\r\n dashboard.appendFilterButton('admindashsingleentrywidget', 'adminSeFilterBtn');\r\n\r\n // filtering\r\n displayFilteredBy();\r\n buildFilterPopup();\r\n eventSetup();\r\n\r\n adminSingleEntryWidgetAjax.getSingleEntryAdminLocations(function (res, error) {\r\n cachedResults_locations = res;\r\n\r\n adminSingleEntryWidgetAjax.getSingleEntryAdminApprovalNumbers(function (results, error) {\r\n cachedResults = results;\r\n groupCountInfo(results, selectedConsumerId, selectedLocationId);\r\n populateConsumerDropdown();\r\n populateLocationsDropDown(cachedResults_locations);\r\n // info/tabs\r\n buildWidgetTabs();\r\n populateCountInfo();\r\n });\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var adminSingleEntryWidgetAjax = (function() {\r\n\tfunction getSingleEntryAdminApprovalNumbers(callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol + '://' +\r\n\t\t\t\t$.webServer.address + ':' +\r\n\t\t\t\t$.webServer.port + '/' +\r\n\t\t\t\t$.webServer.serviceName + '/getSingleEntryAdminApprovalNumbersJSON/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tres = response.getSingleEntryAdminApprovalNumbersJSONResult;\r\n\t\t\t\tcallback(res, null);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\tcallback(null, error);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getSingleEntryAdminLocations(callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol + '://' +\r\n\t\t\t\t$.webServer.address + ':' +\r\n\t\t\t\t$.webServer.port + '/' +\r\n\t\t\t\t$.webServer.serviceName + '/getSingleEntryAdminLocations/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tres = response.getSingleEntryAdminLocationsResult;\r\n\t\t\t\tcallback(res, null);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\tcallback(null, error);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetSingleEntryAdminApprovalNumbers,\r\n\t\tgetSingleEntryAdminLocations,\r\n\t};\r\n})();\r\n","var CN_ProductivityWidget = (function() {\r\n let cnProductivityChart\r\n let groupNotes = {}\r\n let timeObj = {}\r\n let widgetSettings\r\n let daysBackWidgetSetting\r\n\r\n function getDates() {\r\n let dateArr = []\r\n\r\n for (let i = 0; i <= (daysBackWidgetSetting - 1); i++ ) {\r\n const date = new Date()\r\n date.setDate(date.getDate() - i);\r\n dateArr.push(`${(date.getMonth() + 1)}/${date.getDate()}/${date.getFullYear()}`)\r\n }\r\n return dateArr\r\n }\r\n\r\n function addChartData(chart, label, data) {\r\n chart.data.labels.push(label);\r\n chart.data.datasets.forEach((dataset) => {\r\n dataset.data.push(data);\r\n });\r\n chart.update();\r\n }\r\n\r\n async function getData() {\r\n daysBackWidgetSetting = widgetSettings.widgetConfig.daysBack\r\n const response = (await CN_ProductivityWidgetAjax.getCaseNoteProductivity(daysBackWidgetSetting)).getDashboardCaseNoteProductivityResult;\r\n preBuildDataObj()\r\n response.forEach(note => {\r\n const serviceDate = note.Service_Date.split(\" \")[0]\r\n const originalEnteredDate = note.Original_Update.split(\" \")[0]\r\n if (note.Case_Note_Group_ID !== \"\") {\r\n groupNotes[note.Case_Note_Group_ID] = note\r\n return;\r\n }\r\n // If the service date is outside of days back, but entered date is note, and it has doc time, \r\n // ONLY calculate doc time.\r\n if (!timeObj[serviceDate] && timeObj[originalEnteredDate]) {\r\n calculateDocTime(note, originalEnteredDate)\r\n return\r\n }\r\n timeObj[serviceDate].noteTime += parseInt(note.diffMinutes);\r\n if (note.Travel_Time !== \"\") {\r\n timeObj[serviceDate].travelTime += parseInt(note.Travel_Time);\r\n }\r\n // NOTE: Doc Time calculation goes towards Original Update date, NOT service date\r\n if (note.Total_Doc_Time !== \"\" && timeObj[originalEnteredDate]) {\r\n calculateDocTime(note, originalEnteredDate)\r\n }\r\n })\r\n if(Object.keys(groupNotes).length > 0) {\r\n Object.keys(groupNotes).forEach(noteID => {\r\n const serviceDate = groupNotes[noteID].Service_Date.split(\" \")[0]\r\n const originalEnteredDate = groupNotes[noteID].Original_Update.split(\" \")[0]\r\n // If the service date is outside of days back, but entered date is note, and it has doc time, \r\n // ONLY calculate doc time.\r\n if ((!timeObj[serviceDate] && timeObj[originalEnteredDate]) && groupNotes[noteID].Total_Doc_Time !== \"\") {\r\n timeObj[originalEnteredDate].docTime += Math.round(Math.floor(groupNotes[noteID].Total_Doc_Time/30) / 2)\r\n return\r\n }\r\n timeObj[serviceDate].noteTime += parseInt(groupNotes[noteID].diffMinutes);\r\n if (groupNotes[noteID].Travel_Time !== \"\") {\r\n timeObj[serviceDate].travelTime += parseInt(groupNotes[noteID].Travel_Time);\r\n }\r\n // NOTE: Doc Time calculation goes towards Original Update date, NOT service date\r\n if (groupNotes[noteID].Total_Doc_Time !== \"\" && timeObj[originalEnteredDate]) {\r\n timeObj[originalEnteredDate].docTime += Math.round(Math.floor(groupNotes[noteID].Total_Doc_Time/30) / 2)\r\n }\r\n })\r\n }\r\n initChart()\r\n }\r\n /** \r\n * Calculates Documentation time for time table\r\n * @param {object} caseNoteData - Note data from getCaseNoteProductivity AJAX call\r\n * @param {string} orgDate - date ISO format of the original entered date of the case note\r\n */\r\n function calculateDocTime(caseNoteData, orgDate) {\r\n if (caseNoteData.Total_Doc_Time === \"\") return\r\n timeObj[orgDate].docTime += Math.round(Math.floor(caseNoteData.Total_Doc_Time/30) / 2)\r\n }\r\n\r\n function preBuildDataObj() {\r\n let dateArr = getDates();\r\n dateArr.forEach(date => {\r\n timeObj[date] = {noteTime: 0, travelTime: 0, docTime: 0}\r\n })\r\n }\r\n\r\n function calculateBackgroundColor(productivityPercentage) {\r\n const productivityThreshold = widgetSettings.widgetConfig.productivityThreshold\r\n let colors\r\n //first element of color array is Note Time, second is travel, third is doc\r\n if (productivityPercentage < productivityThreshold) {\r\n //Red Bars\r\n colors = [\r\n \"rgba(219, 22, 47, .8)\",\r\n \"rgba(219, 22, 47, .5)\",\r\n \"rgba(219, 22, 47, .2)\",\r\n ]\r\n } else {\r\n //Green Bars\r\n colors = [\r\n \"rgba(129, 185, 65, .8)\",\r\n \"rgba(129, 185, 65, .5)\",\r\n \"rgba(129, 185, 65, .2)\",\r\n ]\r\n }\r\n return colors\r\n }\r\n\r\n function reconfigureDataForChart(workHoursPerDay = 7) {\r\n const minForProductivity = 60 * widgetSettings.widgetConfig.workHoursPerDay;\r\n let noteTimeDataset = {label: 'Note Time (%)', data:[], backgroundColor: [], order: 0}\r\n let travelTimeDataset = {label: 'Travel Time (%)', data:[], backgroundColor: [], order: 1}\r\n let docTimeDataset = {label: 'Documentation Time (%)', data:[], backgroundColor: [], order: 2}\r\n Object.keys(timeObj).forEach(date => {\r\n let totalTime = timeObj[date].noteTime + timeObj[date].travelTime + timeObj[date].docTime\r\n let productivityPercentage = Math.round((totalTime/minForProductivity) * 100)\r\n let colorArr = calculateBackgroundColor(productivityPercentage);\r\n noteTimeDataset.backgroundColor.push(colorArr[0])\r\n travelTimeDataset.backgroundColor.push(colorArr[1])\r\n docTimeDataset.backgroundColor.push(colorArr[2])\r\n noteTimeDataset.data.push(Math.round((timeObj[date].noteTime/minForProductivity) * 100))\r\n travelTimeDataset.data.push(Math.round((timeObj[date].travelTime/minForProductivity) * 100))\r\n docTimeDataset.data.push(Math.round((timeObj[date].docTime/minForProductivity) * 100))\r\n })\r\n return [noteTimeDataset, travelTimeDataset, docTimeDataset]\r\n }\r\n\r\n\r\n function initChart() {\r\n // this code for height setting of widget \r\n var height = 225; \r\n if (daysBackWidgetSetting > 14 && daysBackWidgetSetting < 29)\r\n height = 450;\r\n if (daysBackWidgetSetting > 29 && daysBackWidgetSetting < 43)\r\n height = 750;\r\n if (daysBackWidgetSetting > 43)\r\n height = 1000; \r\n \r\n const widgetBody = document.getElementById('cn_productivity');\r\n const canvas = document.createElement('canvas');\r\n canvas.width = 290;\r\n canvas.height = height; \r\n\r\n if (widgetBody == null) return; \r\n widgetBody.appendChild(canvas)\r\n\r\n const options = {\r\n scales: {\r\n yAxes: [{\r\n stacked: true,\r\n ticks: {\r\n beginAtZero: true\r\n }\r\n }],\r\n xAxes: [{\r\n stacked:true,\r\n ticks: {\r\n beginAtZero: true,\r\n min: 0,\r\n max: 100,\r\n stepSixe: 10,\r\n precision: 10,\r\n callback: function (value) {\r\n return value + '%';\r\n }\r\n },\r\n scaleLabel: {\r\n display: true,\r\n labelString: 'Percentage'\r\n }\r\n }]\r\n },\r\n legend: {\r\n display: false,\r\n }\r\n }\r\n\r\n cnProductivityChart = new Chart(canvas, {\r\n type: 'horizontalBar',\r\n data: {\r\n labels: getDates(),\r\n datasets: reconfigureDataForChart()\r\n },\r\n options: options,\r\n })\r\n }\r\n\r\n function setDefaultIfConfigNull() {\r\n widgetSettings.widgetConfig = {\r\n productivityThreshold: 60,\r\n daysBack: 60,\r\n workHoursPerDay: 7\r\n }\r\n widgetSettingsAjax.setWidgetSettingConfig(1, JSON.stringify(widgetSettings.widgetConfig), widgetSettings.showHide)\r\n }\r\n function init() {\r\n widgetSettings = dashboard.getWidgetSettings('1')\r\n if (widgetSettings.widgetConfig === null) setDefaultIfConfigNull()\r\n getData()\r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();\r\n","//Ajax call using ASYNC AWAIT\r\n\r\nconst CN_ProductivityWidgetAjax = (function() {\r\n function getCaseNoteProductivity(daysBack = 7) {\r\n data = {\r\n token: $.session.Token,\r\n daysBack: daysBack,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getDashboardCaseNoteProductivity/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json'\r\n });\r\n }\r\n \r\n return {\r\n getCaseNoteProductivity\r\n };\r\n})();\r\n","var CN_RejectedWidget = (function () {\r\n let cnProductivityChart\r\n let groupNotes = {}\r\n let timeObj = {}\r\n let rejectedNotes\r\n let widgetSettings\r\n let daysBack;\r\n let groups;\r\n let strgroupids;\r\n let objgroups = [];\r\n let groupids = [];\r\n\r\n function getRejectedData(cb) {\r\n // const response = (await CN_RejectedWidgetAjax.getCaseNotesRejected()).getDashboardCaseNotesRejectedResult;\r\n daysBack = widgetSettings.widgetConfig.daysBack;\r\n CN_RejectedWidgetAjax.getCaseNotesRejected(daysBack, res => {\r\n rejectedNotes = res.map(consumer => {\r\n const consumerObj = {\r\n caseNoteId: consumer.Case_Note_ID,\r\n personId: consumer.ID,\r\n cnGroupId: consumer.Case_Note_Group_ID,\r\n firstName: consumer.first_Name,\r\n lastName: consumer.Last_Name,\r\n serviceDate: consumer.Service_Date,\r\n serviceCode: consumer.Service_Code,\r\n endTime: consumer.End_Time,\r\n startTime: consumer.Start_Time,\r\n lastUpdate: consumer.Last_Update\r\n };\r\n return consumerObj;\r\n });\r\n getRejectedcnGroups();\r\n cb();\r\n });\r\n }\r\n\r\n function getRejectedcnGroups() {\r\n groups = {}\r\n\r\n if (getGroupsIds()) {\r\n\r\n strgroupids = groupids.map(g => g).join(\",\");\r\n\r\n CN_RejectedWidgetAjax.getGroupCaseNotes(strgroupids, res => {\r\n objgroupids = res.map(grpconsumer => {\r\n const grpconsumerObj = {\r\n caseNoteId: grpconsumer.Case_Note_ID,\r\n personId: grpconsumer.ID,\r\n cnGroupId: grpconsumer.Case_Note_Group_ID,\r\n firstName: grpconsumer.first_Name,\r\n lastName: grpconsumer.Last_Name,\r\n serviceDate: grpconsumer.Service_Date,\r\n serviceCode: grpconsumer.Service_Code,\r\n endTime: grpconsumer.End_Time,\r\n startTime: grpconsumer.Start_Time,\r\n lastUpdate: grpconsumer.Last_Update\r\n };\r\n objgroups.push(grpconsumerObj);\r\n return grpconsumerObj;\r\n });\r\n objgroups.forEach(fn => {\r\n if (fn.cnGroupId !== '') {// \r\n // groupids.push(fn.cnGroupId);\r\n var consumerId = fn.personId;\r\n var name = `${fn.lastName}, ${fn.firstName}`;\r\n if (!groups[fn.cnGroupId]) {\r\n groups[fn.cnGroupId] = { [consumerId]: name }\r\n }\r\n groups[fn.cnGroupId][consumerId] = name;\r\n }\r\n })\r\n });\r\n }\r\n }\r\n\r\n function getGroupsIds() {\r\n rejectedNotes.forEach(fn => {\r\n if (fn.cnGroupId !== '' && groupids.indexOf(fn.cnGroupId) === -1) {\r\n groupids.push(fn.cnGroupId);\r\n }\r\n })\r\n if (groupids.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n function populateRejectedWidget() {\r\n const widget = document.getElementById(\"casenotesrejected\");\r\n if (!widget) return;\r\n const widgetBody = widget.querySelector(\".widget__body\");\r\n // if (rejectedNotes.length === 0) {\r\n if (rejectedNotes.length === 0) {\r\n widgetBody.innerHTML = `\r\n There are no rejected case notes during the past ${daysBack} days.\r\n \r\n `\r\n return\r\n }\r\n\r\n const tableOptions = {\r\n plain: true,\r\n columnHeadings: [\"Consumer\", \"Serv Date\", \"Code\", \"Start\", \"End\", \"Update\"],\r\n tableId: \"rejectedWidgetTable\"\r\n };\r\n const rejectedTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = rejectedTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Consumer\r\n headers[1].setAttribute('data-type', 'date'); // Serv Date\r\n headers[2].setAttribute('data-type', 'string'); // Code\r\n headers[3].setAttribute('data-type', 'date'); // Start\r\n headers[4].setAttribute('data-type', 'date'); // End\r\n headers[5].setAttribute('data-type', 'date'); // Update \r\n\r\n widgetBody.innerHTML = \"\";\r\n widgetBody.appendChild(rejectedTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(rejectedTable);\r\n\r\n const tableData = rejectedNotes.map(consumer => {\r\n const name = `${consumer.lastName}, ${consumer.firstName}`;\r\n // const dateString = consumer.lastNoteDate.split(\" \")[0] === \"\" ? \"00/00/0000\" : consumer.lastNoteDate.split(\" \")[0];\r\n\r\n const caseNoteId = consumer.caseNoteId;\r\n const serviceDate = consumer.serviceDate.split(\" \")[0];\r\n const serviceCode = `${consumer.serviceCode}`;\r\n const tmpstartTime = consumer.startTime.split(\":\");\r\n const startTime = tmpstartTime.slice(0, -1).join(\":\");\r\n const frmtStartTime = UTIL.convertFromMilitary(startTime);\r\n const tmpendTime = consumer.endTime.split(\":\");\r\n const endTime = tmpendTime.slice(0, -1).join(\":\");\r\n const frmtEndTime = UTIL.convertFromMilitary(endTime);\r\n\r\n const updateDate = consumer.lastUpdate.split(\" \")[0];\r\n\r\n return {\r\n values: [name, serviceDate, serviceCode, frmtStartTime, frmtEndTime, updateDate],\r\n id: consumer.caseNoteId,\r\n onClick: () => {\r\n DOM.clearActionCenter();\r\n caseNotesAjax.getCaseNoteEdit(caseNoteId, function (results) {\r\n setActiveModuleAttribute('casenotes')\r\n note.init('review', results, groups);\r\n });\r\n }\r\n };\r\n });\r\n table.populate(rejectedTable, tableData);\r\n\r\n // window.setTimeout(newNote.checkMicError, 3000);\r\n }\r\n\r\n // function getCaseNote(caseNoteId) {\r\n // var test = caseNotesAjax.getCaseNoteEdit(caseNoteId, function(results) {\r\n // note.init('review', results, groups);\r\n // });\r\n // rowPopup(test);\r\n // }\r\n\r\n // function rowPopup(test) {\r\n // const popup = POPUP.build({\r\n // header: nameStr,\r\n // id: \"caseNotePopup\"\r\n // });\r\n // popup.appendChild(test)\r\n\r\n // POPUP.show(popup);\r\n // }\r\n\r\n // function getDaysBackDate(daysBack) {\r\n // const daysBackDate = new Date();\r\n // daysBackDate.setDate(daysBackDate.getDate() - daysBack);\r\n // return daysBackDate;\r\n // }\r\n\r\n function setDefaultIfConfigNull() {\r\n widgetSettings.widgetConfig = {\r\n daysBack: 60\r\n }\r\n widgetSettingsAjax.setWidgetSettingConfig(3, JSON.stringify(widgetSettings.widgetConfig), widgetSettings.showHide)\r\n }\r\n\r\n function cleanSettings() {\r\n daysBack = widgetSettings.widgetConfig.daysBack;\r\n\r\n }\r\n\r\n function init() {\r\n widgetSettings = dashboard.getWidgetSettings('3')\r\n if (widgetSettings.widgetConfig === null) setDefaultIfConfigNull()\r\n cleanSettings();\r\n // daysBackDate = getDaysBackDate(daysBack);\r\n getRejectedData(populateRejectedWidget);\r\n\r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();\r\n","const CN_RejectedWidgetAjax = (function() {\r\n\r\n function getCaseNotesRejected(daysBack, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getDashboardCaseNotesRejected/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"daysBack\":\"' + daysBack + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\t// var res = JSON.stringify(response.getDashboardCaseNotesRejectedResult);\r\n\t\t\t\tcallback(response.getDashboardCaseNotesRejectedResult);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t\t},\r\n\t\t});\r\n }\r\n \r\n function getGroupCaseNotes(groupNoteIds, callback) {\r\n\t$.ajax({\r\n\t\ttype: 'POST',\r\n\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getDashboardGroupCaseNoteConsumerNames/',\r\n\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"groupNoteIds\":\"' + groupNoteIds + '\"}',\r\n\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\tdataType: 'json',\r\n\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t// var res = JSON.stringify(response.getDashboardCaseNotesRejectedResult);\r\n\t\t\tcallback(response.getDashboardGroupCaseNoteConsumerNamesResult);\r\n\t\t},\r\n\t\terror: function(xhr, status, error) {\r\n\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t},\r\n\t});\r\n}\r\n\r\n\r\n return {\r\n\t getCaseNotesRejected,\r\n\t getGroupCaseNotes\r\n };\r\n})();","//Widget id = 2\r\nconst CN_CaseLoadWidget = (function () {\r\n //Data\r\n let caseLoad, widgetSettings, demographicInfo;\r\n let consumerName;\r\n var widget;\r\n var widgetBody;\r\n let consumerCountlbl;\r\n let currentRowConsumerId;\r\n // Settings\r\n let viewNotesDaysBack, lastNoteEnteredDaysBack, viewEnteredByOtherUsers;\r\n // dates\r\n let lastNoteEnteredDaysBackDate;\r\n\r\n function showSendReportPopup() {\r\n const emailData = {\r\n to: '',\r\n cc: '',\r\n bcc: '',\r\n subject: '',\r\n body: '',\r\n };\r\n const sendReportPopup = POPUP.build({\r\n id: 'myCaseLoadSendReportPopup',\r\n header: 'Email Report',\r\n });\r\n\r\n const emailTo = input.build({\r\n type: 'email',\r\n label: 'Email To Addresses:',\r\n callback: e => {\r\n emailData.to = e.target.value;\r\n },\r\n });\r\n const emailCC = input.build({\r\n type: 'email',\r\n label: 'Email Cc Addresses:',\r\n callback: e => {\r\n emailData.cc = e.target.value;\r\n },\r\n });\r\n const emailBCC = input.build({\r\n type: 'email',\r\n label: 'Email Bcc Addresses:',\r\n callback: e => {\r\n emailData.bcc = e.target.value;\r\n },\r\n });\r\n const emailSubject = input.build({\r\n type: 'text',\r\n label: 'Email Subject:',\r\n callback: e => {\r\n emailData.subject = e.target.value;\r\n },\r\n });\r\n const emailBody = input.build({\r\n type: 'text',\r\n label: 'Email Body:',\r\n callback: e => {\r\n emailData.body = e.target.value;\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(sendReportPopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'CANCEL',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(sendReportPopup);\r\n showReportPopup();\r\n },\r\n });\r\n btnWrap.appendChild(okBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n sendReportPopup.appendChild(emailTo);\r\n sendReportPopup.appendChild(emailCC);\r\n sendReportPopup.appendChild(emailBCC);\r\n sendReportPopup.appendChild(emailSubject);\r\n sendReportPopup.appendChild(emailBody);\r\n sendReportPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(sendReportPopup);\r\n }\r\n function showReportDownloadPopup() {\r\n const createReportPopup = POPUP.build({\r\n id: 'myCaseLoadCreateReportPopup',\r\n });\r\n const message = document.createElement('div');\r\n message.innerText =\r\n 'Your report is beig generated and will be downloaded when finished, in the meantime you may continue to work.';\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(createReportPopup);\r\n },\r\n });\r\n createReportPopup.appendChild(message);\r\n createReportPopup.appendChild(okBtn);\r\n }\r\n function showReportPopup() {\r\n quickPrintPopup = POPUP.build({\r\n id: 'myCaseLoadReportPopup',\r\n });\r\n\r\n const createReportBtn = button.build({\r\n text: 'Create Report',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(quickPrintPopup);\r\n showReportDownloadPopup();\r\n },\r\n });\r\n const sendReportBtn = button.build({\r\n text: 'Send Report',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(quickPrintPopup);\r\n showSendReportPopup();\r\n },\r\n });\r\n\r\n quickPrintPopup.appendChild(createReportBtn);\r\n quickPrintPopup.appendChild(sendReportBtn);\r\n\r\n POPUP.show(quickPrintPopup);\r\n }\r\n\r\n function displayConsumerCount(caseLoad) {\r\n if (caseLoad && caseLoad.length !== 0) {\r\n consumerCountlbl = document.createElement('div');\r\n consumerCountlbl.innerHTML = `
    \r\n

    Consumer Count: ${caseLoad.length}

    \r\n
    `;\r\n }\r\n }\r\n\r\n function populateCaseLoadWidget() {\r\n displayConsumerCount(caseLoad);\r\n\r\n const widget = document.getElementById('casenotescaseload');\r\n if (!widget) return;\r\n\r\n const widgetBody = widget.querySelector('.widget__body');\r\n if (caseLoad.length === 0) {\r\n widgetBody.innerHTML = `No consumers on case load`;\r\n return;\r\n }\r\n\r\n const tableOptions = {\r\n plain: true,\r\n columnHeadings: ['Consumer', 'Resident Number', 'Last Note'],\r\n tableId: 'caseLoadWidgetTable',\r\n };\r\n const caseLoadTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = caseLoadTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Consumer\r\n headers[1].setAttribute('data-type', 'string'); // Resident Number\r\n headers[2].setAttribute('data-type', 'date'); // Last Note \r\n\r\n widgetBody.innerHTML = '';\r\n widgetBody.appendChild(consumerCountlbl);\r\n widgetBody.appendChild(caseLoadTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(caseLoadTable);\r\n\r\n let caseLoadTableBody = document.getElementsByClassName('table__body')[0];\r\n caseLoadTableBody.classList.add('caseLoadTableBody');\r\n\r\n const tableData = caseLoad.map(consumer => {\r\n const name = `${consumer.lastName}, ${consumer.firstName}`;\r\n const resNumber = consumer.residentNumber;\r\n const dateString = consumer.lastNoteDate.split(' ')[0];\r\n const lastNoteDate = new Date(dateString);\r\n const dateDisp =\r\n lastNoteEnteredDaysBackDate < lastNoteDate\r\n ? consumer.lastNoteDate.split(' ')[0]\r\n : `${\r\n dateString === '' ? 'No Case Notes Found' : dateString\r\n }`;\r\n\r\n return {\r\n values: [name, resNumber, dateDisp],\r\n id: consumer.id,\r\n onClick: () => {\r\n getConsumerDemographics(consumer.id);\r\n },\r\n };\r\n });\r\n\r\n table.populate(caseLoadTable, tableData);\r\n }\r\n\r\n function rowPopup(consumerId) {\r\n currentRowConsumerId = consumerId;\r\n // Demographics\r\n consumerName = `${demographicInfo.lastname}, ${demographicInfo.firstname}`;\r\n const popup = POPUP.build({\r\n header: consumerName,\r\n id: 'myCaseLoadPopup',\r\n });\r\n //Address\r\n const addressBlock = document.createElement('div');\r\n // addressBlock.classList.add(\"demographicSection\");\r\n const address1 = demographicInfo.addressone;\r\n const address2 = demographicInfo.addresstwo;\r\n const city = demographicInfo.mailcity;\r\n const state = demographicInfo.mailstate;\r\n let zip = demographicInfo.mailzipcode;\r\n zip = zip ? zip.trim() : zip;\r\n addressBlock.innerHTML = `\r\n

    Address

    \r\n

    ${address1}

    \r\n

    ${address2}

    \r\n

    ${city}, ${state} ${zip}

    `;\r\n popup.appendChild(addressBlock);\r\n\r\n //Contact Info\r\n const contactInfoBlock = document.createElement('div');\r\n // contactInfoBlock.classList.add(\"demographicSection\");\r\n const tempPrimaryPhone = demographicInfo.primaryphone.split('%');\r\n const tempSecondaryPhone = demographicInfo.secondaryphone.split('%');\r\n const pPhoneNumber = UTIL.formatPhoneNumber(tempPrimaryPhone[0].trim());\r\n const sPhoneNumber = UTIL.formatPhoneNumber(tempSecondaryPhone[0].trim());\r\n const pPhoneType = tempPrimaryPhone.length > 1 ? tempPrimaryPhone[1] : '';\r\n const sPhoneType = tempSecondaryPhone.length > 1 ? tempSecondaryPhone[1] : '';\r\n const pPhone = `${pPhoneNumber} ${pPhoneType}`;\r\n const sPhone = `${sPhoneNumber} ${sPhoneType}`;\r\n contactInfoBlock.innerHTML = `\r\n

    Contact Info

    \r\n

    Primary: ${pPhone}

    \r\n

    Secondary: ${sPhone}

    `;\r\n popup.appendChild(contactInfoBlock);\r\n\r\n // new case note button\r\n const newNoteBtn = button.build({\r\n text: 'New Case Note',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: !$.session.CaseNotesUpdate ? ['newNoteBtn', 'disabled'] : ['newNoteBtn'],\r\n callback: () => {\r\n // Need to finish new note button once new roster is done\r\n POPUP.hide(popup);\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('caseNotes-new');\r\n UTIL.toggleMenuItemHighlight('casenotes');\r\n $.loadedApp = 'casenotes';\r\n actioncenter.dataset.activeModule = 'casenotes';\r\n $.loadedApp = 'casenotes';\r\n CaseNotes.init(true);\r\n },\r\n });\r\n\r\n // review case notes\r\n const reviewNotesBtn = button.build({\r\n text: 'Review Notes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('caseNotes-overview');\r\n UTIL.toggleMenuItemHighlight('casenotes');\r\n actioncenter.dataset.activeModule = 'casenotes';\r\n notesOverview.dashHandeler(\r\n viewNotesDaysBack,\r\n consumerId,\r\n viewEnteredByOtherUsers,\r\n consumerName,\r\n );\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(newNoteBtn);\r\n btnWrap.appendChild(reviewNotesBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n function getCaseLoadData(cb) {\r\n caseNotesAjax.getCaseLoadRestriction(res => {\r\n caseLoad = res.map(consumer => {\r\n const consumerObj = {\r\n id: consumer.id,\r\n firstName: consumer.FN,\r\n lastName: consumer.LN,\r\n lastNoteDate: consumer.last_note_datetime,\r\n residentNumber: consumer.residentNumber,\r\n };\r\n return consumerObj;\r\n });\r\n cb();\r\n });\r\n }\r\n\r\n function getConsumerDemographics(consumerId) {\r\n rosterAjax.getConsumerDemographics(consumerId, res => {\r\n demographicInfo = res[0];\r\n rowPopup(consumerId);\r\n });\r\n }\r\n\r\n function getCurrentlyselectedConsumerId() {\r\n return currentRowConsumerId;\r\n }\r\n\r\n function setDefaultIfConfigNull() {\r\n widgetSettings.widgetConfig = {\r\n viewNotesDaysBack: 30,\r\n lastNoteEnteredDaysBack: 30,\r\n viewEnteredByOtherUsers: 'N',\r\n };\r\n widgetSettingsAjax.setWidgetSettingConfig(\r\n 2,\r\n JSON.stringify(widgetSettings.widgetConfig),\r\n widgetSettings.showHide,\r\n );\r\n }\r\n\r\n function getDaysBackDate(daysBack) {\r\n const daysBackDate = new Date();\r\n daysBackDate.setDate(daysBackDate.getDate() - daysBack);\r\n return daysBackDate;\r\n }\r\n\r\n function cleanSettings() {\r\n viewNotesDaysBack = widgetSettings.widgetConfig.viewNotesDaysBack;\r\n lastNoteEnteredDaysBack = widgetSettings.widgetConfig.lastNoteEnteredDaysBack;\r\n viewEnteredByOtherUsers =\r\n widgetSettings.widgetConfig.viewEnteredByOtherUsers === 'N' ? false : true;\r\n }\r\n\r\n function init() {\r\n widgetSettings = dashboard.getWidgetSettings('2');\r\n if (widgetSettings.widgetConfig === null) setDefaultIfConfigNull();\r\n cleanSettings();\r\n lastNoteEnteredDaysBackDate = getDaysBackDate(lastNoteEnteredDaysBack);\r\n getCaseLoadData(populateCaseLoadWidget);\r\n\r\n widget = document.getElementById('casenotescaseload');\r\n widgetBody = widget.querySelector('.widget__body');\r\n dashboard.appendPDFButton('casenotescaseload', 'caseloadPDFBtn');\r\n displayConsumerCount();\r\n }\r\n\r\n return {\r\n init,\r\n getCurrentlyselectedConsumerId\r\n };\r\n})();\r\n","//Ajax call using ASYNC AWAIT\r\n\r\nconst CN_CaseLoadWidgetAjax = (function() {\r\n function getCaseNoteProductivity(daysBack = 7) {\r\n data = {\r\n token: $.session.Token,\r\n daysBack: daysBack,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getDashboardCaseNoteProductivity/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json'\r\n });\r\n }\r\n \r\n return {\r\n getCaseNoteProductivity\r\n };\r\n})();\r\n","const consumerProgresNotes = (function() {\r\n\r\n let widget\r\n let widgetBody\r\n let applyFiltersBtn\r\n let cancelFilterBtn\r\n let filterPopup\r\n //DOM\r\n let consumerProgresNoteslocationDropdown\r\n let progressNoteList\r\n //DATA\r\n let locationObject;\r\n let locationLookupObject;\r\n let tmpSelectedLocation;\r\n let filteredLocation;\r\n\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained'\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined'\r\n });\r\n consumerProgresNoteslocationDropdown = dropdown.build({\r\n dropdownId: 'progressNoteLocations',\r\n label: 'Location',\r\n style: 'secondary'\r\n })\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n filterPopup.appendChild(consumerProgresNoteslocationDropdown)\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n\r\n \r\n }\r\n\r\n function populateDropdown() {\r\n let defaultLocation = UTIL.LS.getStorage('dash_consumerProgressNoteLocation');\r\n if (defaultLocation === undefined) {\r\n defaultLocation = \"%\";\r\n UTIL.LS.setStorage('dash_consumerProgressNoteLocation', '%')\r\n }\r\n filteredLocation = defaultLocation;\r\n\r\n let filteredLocationExists = (function () {\r\n if (defaultLocation === \"%\") return true\r\n let exists = false;\r\n locationObject.forEach(loc => {\r\n if (loc.locationId == filteredLocation) {\r\n exists = true\r\n return\r\n }\r\n })\r\n return exists;\r\n })()\r\n\r\n if (!filteredLocationExists) {\r\n defaultLocation = \"%\"\r\n filteredLocation = \"%\"\r\n UTIL.LS.setStorage('dash_consumerProgressNoteLocation', '%');\r\n }\r\n\r\n let data = locationObject.map(loc => {\r\n return {\r\n value: loc.locationId,\r\n text: loc.locationName\r\n }\r\n });\r\n\r\n data.sort(function(a, b) { // alphabetize\r\n if(a.text < b.text) {return -1; }\r\n if(a.text > b.text) {return 1; }\r\n return 0;\r\n });\r\n\r\n data.unshift({id: \"%\", value: \"%\", text: \"All\"}) //ADD All Value\r\n locationObject.unshift({locationId: \"%\", locationName: \"All\"}) //ADD All Value\r\n \r\n dropdown.populate(consumerProgresNoteslocationDropdown, data, defaultLocation)\r\n }\r\n\r\n function eventSetup() {\r\n applyFiltersBtn.addEventListener(\"click\", event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n if (filteredLocation === tmpSelectedLocation || !tmpSelectedLocation) return\r\n filteredLocation = tmpSelectedLocation\r\n UTIL.LS.setStorage('dash_consumerProgressNoteLocation', filteredLocation);\r\n getNotesFiltered()\r\n })\r\n cancelFilterBtn.addEventListener(\"click\", event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n });\r\n consumerProgresNoteslocationDropdown.addEventListener(\"change\", event => {\r\n tmpSelectedLocation = event.target[event.target.selectedIndex].value\r\n })\r\n }\r\n\r\n function getNotesFiltered() {\r\n PROGRESS__ANYWHERE.init()\r\n progressNoteList.innerHTML = \"\"\r\n PROGRESS__ANYWHERE.SPINNER.show(progressNoteList, \"Loading\");\r\n progressNotesAjax.getConsumersWithUnreadNotesByEmployeeAndLocationPermission(filteredLocation, res => {\r\n PROGRESS__ANYWHERE.SPINNER.hide(progressNoteList)\r\n populateProgressNoteWidgetResult(res)\r\n })\r\n }\r\n\r\n function populateProgressNoteWidgetResult(filteredResults) {\r\n displayFilteredBy()\r\n // progressNoteList.innerHTML = '';\r\n if (filteredResults.length === 0) {\r\n progressNoteList.innerHTML = 'There are no unread notes';\r\n return\r\n }\r\n filteredResults.forEach(progNote => {\r\n let date = progNote.dateEntered.split(\" \")[0]\r\n progressNoteList.innerHTML += `\r\n
    ${progNote.name}: ${progNote.noteTitle} - ${date}\r\n

    Location: ${locationLookupObject[filteredLocation].locationName}

    \r\n
    \r\n `;\r\n }\r\n\r\n function populateLocationLookup() {\r\n locationLookupObject = {}\r\n locationObject.forEach(loc => {\r\n obj = {\r\n locationName: loc.locationName\r\n }\r\n locationLookupObject[loc.locationId] = obj;\r\n })\r\n }\r\n\r\n function getData() {\r\n // const daysBackDateObj = convertDaysBackGoals($.session.defaultProgressNoteReviewDays);\r\n // let daysBackDay = daysBackDateObj.getDate()\r\n // let daysBackMonth = daysBackDateObj.getMonth()\r\n // let daysBackYeah = daysBackDateObj.getFullYear()\r\n // const daysBackDate = `${daysBackYeah}-${daysBackMonth}-${daysBackDay}`\r\n\r\n\r\n let getlocations = new Promise((resolve, reject) => {\r\n progressNotesAjax.getlocationsWithConsumersWithUnreadNotes(res => {\r\n locationObject = JSON.parse(res);\r\n resolve(\"success\")\r\n })\r\n })\r\n \r\n Promise.all([getlocations]).then(() => {\r\n populateDropdown()\r\n populateLocationLookup()\r\n getNotesFiltered()\r\n })\r\n }\r\n\r\n // const dash_consumerProgressNotesLS = (function() {\r\n // function getLocation() {\r\n // let user = $.session.UserId\r\n // return localStorage.getItem(`user:${user} dash_consumerProgressNoteLocation`) \r\n // }\r\n // function setLocaiton(locationId) {\r\n // let user = $.session.UserId\r\n // return localStorage.setItem(`user:${user} dash_consumerProgressNoteLocation`, locationId) \r\n // }\r\n // return {\r\n // getLocation: getLocation,\r\n // setLocation: setLocaiton\r\n // }\r\n // })()\r\n\r\n function init() {\r\n dashboard.appendFilterButton('consumerprogressnoteswidget', 'consumerProgressFilterBtn');\r\n\r\n widget = document.getElementById('consumerprogressnoteswidget');\r\n widgetBody = widget.querySelector('.widget__body');\r\n progressNoteList = document.getElementById(\"progressNoteList\");\r\n getData()\r\n buildFilterPopup()\r\n eventSetup()\r\n }\r\n return {\r\n init\r\n }\r\n \r\n})();\r\n","var linksAndMessages = (function () {\r\n var linksWidget;\r\n var messagesWidget;\r\n var links = [];\r\n var messages = [];\r\n\r\n // New System Message\r\n //-----------------------\r\n var addMessagePopup;\r\n var employeeDropdown;\r\n var EmployeeListWrap;\r\n var EmployeeNameList = [];\r\n var saveBtn;\r\n var cancelBtn;\r\n var selectMoreEmployeeBtn;\r\n var expirationDate;\r\n var expirationTime;\r\n var messageInput;\r\n let textMessage;\r\n let timeOfExpiration;\r\n let dateOfExpiration;\r\n let selectedEmployee = [];\r\n\r\n // Employee Selection Popup\r\n //-----------------------\r\n let consumerswithEmployeeIds;\r\n let currentconsumersSelected = [];\r\n let assignEmployeePopup;\r\n let assignBtn;\r\n let isMultiSelection;\r\n let nameHeading;\r\n let nameList;\r\n let singleSelectedEmployee;\r\n\r\n function loadCustomLinks() {\r\n var linksList = linksWidget.querySelector('.customLinksList');\r\n linksList.innerHTML = '';\r\n if (links.length < 1) return;\r\n links.forEach(l => {\r\n var link = document.createElement('a');\r\n link.href = l.linkaddress;\r\n link.innerHTML = l.linkname;\r\n link.setAttribute('target', l.linktarget);\r\n linksList.appendChild(link);\r\n if (l.linkname.indexOf('CaraSolva') !== -1) {\r\n link.addEventListener('click', linksAndMessagesWidgetAjax.loadCaraSolva);\r\n }\r\n });\r\n }\r\n\r\n function loadSystemMessages() {\r\n var messageList = messagesWidget.querySelector('.messagesList');\r\n messageList.innerHTML = '';\r\n if (messages.length < 1) return;\r\n messages.forEach(m => {\r\n var message = document.createElement('p');\r\n message.innerHTML = m.description;\r\n messageList.appendChild(message);\r\n });\r\n }\r\n\r\n function separateLinksAndMessages(results) {\r\n results.forEach(r => {\r\n if (r.description === '') {\r\n links.push(r);\r\n } else {\r\n messages.push(r);\r\n }\r\n });\r\n }\r\n\r\n function buildAddMessagePopup() {\r\n isMultiSelection = false;\r\n addMessagePopup = POPUP.build({\r\n id: 'sig_addMessagePopup',\r\n classNames: 'assignEmployeePopup',\r\n hideX: true,\r\n });\r\n\r\n employeeDropdown = dropdown.build({\r\n dropdownId: 'employeesDropdown',\r\n label: 'Employee to Notify',\r\n style: 'secondary',\r\n });\r\n\r\n selectMoreEmployeeBtn = button.build({\r\n text: 'Select More Employees',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (isMultiSelection)\r\n POPUP.show(assignEmployeePopup);\r\n else\r\n await showAssignEmployeePopup();\r\n\r\n saveBtn.classList.add('disabled');\r\n cancelBtn.classList.add('disabled');\r\n },\r\n });\r\n selectMoreEmployeeBtn.style.width = '100%';\r\n let today = UTIL.getTodaysDate(true);\r\n let tomorrowDate = moment(dates.addDays(today, 1), 'YYYY-MM-DD').format('YYYY-MM-DD');\r\n dateOfExpiration = tomorrowDate;\r\n expirationDate = input.build({\r\n id: 'expirationDate',\r\n type: 'date',\r\n label: 'Expiration Date',\r\n style: 'secondary',\r\n value: tomorrowDate,\r\n attributes: [\r\n { key: 'min', value: UTIL.getTodaysDate() },\r\n ],\r\n });\r\n timeOfExpiration = UTIL.getCurrentTime();\r\n expirationTime = input.build({\r\n id: 'expirationTime',\r\n type: 'time',\r\n label: 'Expiration Time',\r\n style: 'secondary',\r\n value: UTIL.getCurrentTime(),\r\n });\r\n\r\n messageInput = input.build({\r\n id: 'messageInput',\r\n type: 'textarea',\r\n label: 'Message',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n });\r\n\r\n saveBtn = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelBtn = button.build({\r\n text: 'CANCEL',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n nameHeading = document.createElement('b');\r\n nameHeading.classList.add('boldfont');\r\n nameHeading.innerText = 'Selected Employees: ';\r\n nameList = document.createElement('p');\r\n nameList.classList.add('nameListFont');\r\n nameList.innerText = EmployeeNameList.toString().replace(/,/g, ', ');\r\n EmployeeListWrap = document.createElement('div');\r\n EmployeeListWrap.classList.add('nameListWrap');\r\n EmployeeListWrap.appendChild(nameHeading);\r\n EmployeeListWrap.appendChild(nameList);\r\n EmployeeListWrap.style.marginBottom = '10px';\r\n\r\n addMessagePopup.appendChild(employeeDropdown);\r\n addMessagePopup.appendChild(EmployeeListWrap);\r\n addMessagePopup.appendChild(selectMoreEmployeeBtn);\r\n addMessagePopup.appendChild(expirationDate);\r\n addMessagePopup.appendChild(expirationTime);\r\n addMessagePopup.appendChild(messageInput);\r\n addMessagePopup.appendChild(btnWrap);\r\n messageInput.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n eventSetup();\r\n populateEmployeeDropdown();\r\n EmployeeListWrap.style.display = 'none';\r\n POPUP.show(addMessagePopup);\r\n }\r\n\r\n function eventSetup() {\r\n employeeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n singleSelectedEmployee = selectedOption.id;\r\n selectedEmployee = [];\r\n currentconsumersSelected = [];\r\n selectedEmployee.push(selectedOption.id);\r\n isMultiSelection = false;\r\n });\r\n saveBtn.addEventListener('click', async () => {\r\n selectedEmployee.push($.session.UserId);\r\n const result = await linksAndMessagesWidgetAjax.addSystemMessageAsync(textMessage, timeOfExpiration, dateOfExpiration, selectedEmployee);\r\n const { addSystemMessageResult } = result;\r\n if (addSystemMessageResult[0].NoteID != null) {\r\n POPUP.hide(addMessagePopup);\r\n selectedEmployee = [];\r\n currentconsumersSelected = [];\r\n EmployeeNameList = [];\r\n dashboard.load();\r\n }\r\n });\r\n\r\n cancelBtn.addEventListener('click', () => {\r\n selectedEmployee = [];\r\n currentconsumersSelected = [];\r\n EmployeeNameList = [];\r\n POPUP.hide(addMessagePopup);\r\n });\r\n messageInput.addEventListener('input', event => {\r\n textMessage = event.target.value;\r\n checkRequiredFieldsOfNewMessage();\r\n });\r\n expirationDate.addEventListener('input', event => {\r\n dateOfExpiration = event.target.value;\r\n checkRequiredFieldsOfNewMessage();\r\n });\r\n expirationTime.addEventListener('input', event => {\r\n timeOfExpiration = event.target.value;\r\n checkRequiredFieldsOfNewMessage();\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfNewMessage() {\r\n var date = expirationDate.querySelector('#expirationDate');\r\n var time = expirationTime.querySelector('#expirationTime');\r\n var message = messageInput.querySelector('#messageInput');\r\n\r\n if (date.value === '') {\r\n expirationDate.classList.add('error');\r\n } else {\r\n expirationDate.classList.remove('error');\r\n }\r\n\r\n if (time.value === '') {\r\n expirationTime.classList.add('error');\r\n } else {\r\n expirationTime.classList.remove('error');\r\n }\r\n\r\n if (message.value.trim() === '') {\r\n messageInput.classList.add('error');\r\n } else {\r\n messageInput.classList.remove('error');\r\n }\r\n setBtnStatusOfNewMessage();\r\n }\r\n\r\n function setBtnStatusOfNewMessage() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function populateEmployeeDropdown() {\r\n const {\r\n getEmployeeListResult: Employer,\r\n } = await linksAndMessagesWidgetAjax.getEmployersAsync();\r\n consumerswithEmployeeIds = Employer;\r\n singleSelectedEmployee = Employer[0].employerId;\r\n selectedEmployee.push(Employer[0].employerId);\r\n let data = Employer.map((employer) => ({\r\n id: employer.employerId,\r\n value: employer.employerId,\r\n text: employer.employerName\r\n }));\r\n dropdown.populate(\"employeesDropdown\", data);\r\n }\r\n\r\n function toggleAssignButton() {\r\n if (currentconsumersSelected.length === 0) {\r\n assignBtn.classList.add('disabled');\r\n return;\r\n }\r\n assignBtn.classList.remove('disabled');\r\n }\r\n\r\n async function showAssignEmployeePopup() {\r\n // Popup \r\n assignEmployeePopup = POPUP.build({\r\n id: 'sig_assignEmployeePopup',\r\n classNames: 'assignEmployeePopup',\r\n hideX: true,\r\n header: 'Select Employees',\r\n });\r\n const popupMessage = document.createElement('p');\r\n popupMessage.classList.add('popupMessage');\r\n popupMessage.innerText = '*Must select at least one employee before clicking Save button.';\r\n\r\n const innerWrap = document.createElement('div');\r\n innerWrap.classList.add('peopleListWrap');\r\n\r\n // Consumers\r\n const consumersContainer = document.createElement('div');\r\n consumersContainer.classList.add('assignPeopleList');\r\n\r\n const cHeading = document.createElement('p');\r\n cHeading.innerText = 'Select one (or multiple) users';\r\n\r\n C_SEARCH_BTN = button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n C_SEARCH_WRAP = document.createElement('div');\r\n C_SEARCH_WRAP.classList.add('consumerSearch');\r\n C_SEARCH_INPUT = document.createElement('input');\r\n C_SEARCH_INPUT.setAttribute('placeholder', 'Search Employees');\r\n C_SEARCH_WRAP.appendChild(C_SEARCH_BTN);\r\n C_SEARCH_WRAP.appendChild(C_SEARCH_INPUT);\r\n C_filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtn',\r\n callback: () => {\r\n cnFilters.init(filterValues);\r\n },\r\n });\r\n\r\n const multiSelectBodyC = document.createElement('div');\r\n consumerswithEmployeeIds.forEach(person => {\r\n let consumer = document.createElement('p');\r\n consumer.setAttribute('data-personId', person.employerId);\r\n consumer.innerText = person.employerName;\r\n multiSelectBodyC.appendChild(consumer);\r\n \r\n if (person.employerId == singleSelectedEmployee) {\r\n consumer.classList.add('selected'); \r\n currentconsumersSelected.push(person.employerId);\r\n }\r\n\r\n consumer.addEventListener('click', e => {\r\n //* Multiple consumers can be selected\r\n const isSelected = e.target.classList.contains('selected');\r\n if (isSelected) {\r\n e.target.classList.remove('selected');\r\n currentconsumersSelected = currentconsumersSelected.filter(emp => emp !== person.employerId);\r\n } else {\r\n e.target.classList.add('selected');\r\n currentconsumersSelected.push(person.employerId);\r\n }\r\n toggleAssignButton();\r\n });\r\n });\r\n\r\n consumersContainer.appendChild(cHeading);\r\n\r\n var C_btnWrap = document.createElement('div');\r\n C_btnWrap.classList.add('cnbtnWrap');\r\n C_btnWrap.appendChild(C_filterBtn);\r\n\r\n consumersContainer.appendChild(C_SEARCH_WRAP);\r\n\r\n consumersContainer.appendChild(multiSelectBodyC);\r\n\r\n C_SEARCH_BTN.addEventListener('click', event => {\r\n C_SEARCH_WRAP.classList.toggle('searchOpen');\r\n C_SEARCH_INPUT.value = '';\r\n C_SEARCH_INPUT.focus();\r\n });\r\n C_SEARCH_INPUT.addEventListener('keyup', event => {\r\n if (event.keyCode === 13) {\r\n consumerSearch(event.target.value);\r\n }\r\n });\r\n\r\n C_SEARCH_INPUT.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n consumerSearch(event.target.value);\r\n }\r\n });\r\n\r\n // Action Buttons\r\n assignBtn = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () { \r\n selectedEmployee = [];\r\n selectedEmployee = currentconsumersSelected;\r\n EmployeeNameList = [];\r\n consumerswithEmployeeIds.forEach(person => {\r\n currentconsumersSelected.forEach(selected => {\r\n if (person.employerId == selected) {\r\n EmployeeNameList.push(person.employerName.replace(/,/g, ''));\r\n }\r\n });\r\n });\r\n\r\n POPUP.hide(assignEmployeePopup);\r\n saveBtn.classList.remove('disabled');\r\n checkRequiredFieldsOfNewMessage();\r\n cancelBtn.classList.remove('disabled');\r\n isMultiSelection = true;\r\n overlay.show();\r\n if (selectedEmployee.length > 1) {\r\n nameList.innerText = EmployeeNameList.toString().replace(/,/g, ', ');\r\n EmployeeListWrap.style.display = 'block';\r\n employeeDropdown.style.display = 'none'\r\n }\r\n else {\r\n EmployeeListWrap.style.display = 'none';\r\n employeeDropdown.style.display = 'flex'\r\n document.getElementById('employeesDropdown').value = selectedEmployee[0];\r\n }\r\n\r\n },\r\n });\r\n\r\n var cancelSelectBtn = button.build({\r\n text: 'CANCEL',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(assignEmployeePopup);\r\n saveBtn.classList.remove('disabled');\r\n checkRequiredFieldsOfNewMessage();\r\n cancelBtn.classList.remove('disabled');\r\n overlay.show();\r\n currentconsumersSelected = [];\r\n isMultiSelection = true;\r\n },\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(assignBtn);\r\n btnWrap.appendChild(cancelSelectBtn);\r\n innerWrap.appendChild(consumersContainer);\r\n assignEmployeePopup.appendChild(popupMessage);\r\n assignEmployeePopup.appendChild(innerWrap);\r\n assignEmployeePopup.appendChild(btnWrap);\r\n POPUP.show(assignEmployeePopup);\r\n }\r\n\r\n function consumerSearch(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n // gather all names shown\r\n //reset the array containing list of consumers that are being displayed \r\n displayedConsumers = [searchValue];\r\n consumerswithEmployeeIds.forEach(consumer => {\r\n var fullName = consumer.employerName.toLowerCase();\r\n var matchesName = fullName.indexOf(searchValue);\r\n var thisConsumer = document.querySelector(`[data-personid=\"${consumer.employerId}\"]`);\r\n\r\n if (matchesName !== -1) {\r\n thisConsumer.classList.remove('hidden');\r\n displayedConsumers.push(consumer.employerId);\r\n } else {\r\n thisConsumer.classList.add('hidden');\r\n var index = displayedConsumers.indexOf(consumer.employerId);\r\n if (index > -1) displayedConsumers.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n function init() {\r\n messagesWidget = document.getElementById('dashsystemmessagewidget');\r\n linksWidget = document.getElementById('dashcustomlinks');\r\n\r\n // append add message button\r\n dashboard.appendAddMessageButton('dashsystemmessagewidget', 'addMessageFilterBtn');\r\n\r\n if (links.length > 0 || messages.length > 0) {\r\n links = [];\r\n messages = [];\r\n }\r\n linksAndMessagesWidgetAjax.getSystemMessagesAndCustomLinks(function (results, error) {\r\n if (error) {\r\n var messageError = messagesWidget.querySelector('.widget__error');\r\n var linkError = linksWidget.querySelector('.widget__error');\r\n messageError.classList.add('visible');\r\n linkError.classList.add('visible');\r\n return;\r\n }\r\n separateLinksAndMessages(results);\r\n loadSystemMessages();\r\n loadCustomLinks();\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n buildAddMessagePopup\r\n }\r\n}());","var linksAndMessagesWidgetAjax = (function () {\r\n function getSystemMessagesAndCustomLinks(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getSystemMessagesAndCustomLinksJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res;\r\n try {\r\n res = response.getSystemMessagesAndCustomLinksJSONResult;\r\n callback(res, null);\r\n } catch (e) {\r\n callback(null, error);\r\n }\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n function loadCaraSolva() {\r\n var data = { token: $.session.Token };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol + \"://\" +\r\n $.webServer.address + \":\" +\r\n $.webServer.port + \"/\" +\r\n $.webServer.serviceName + \"/CaraSolvaURL/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n if (response && response.CaraSolvaURLResult) {\r\n window.open(response.CaraSolvaURLResult, \"_blank\");\r\n }\r\n },\r\n });\r\n }\r\n\r\n async function getEmployersAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeeList/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function addSystemMessageAsync(textMessage, timeOfExpiration, dateOfExpiration, selectedEmployee) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addSystemMessage/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n textMessage: textMessage,\r\n timeOfExpiration: timeOfExpiration,\r\n dateOfExpiration: dateOfExpiration,\r\n selectedEmployee: selectedEmployee, \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getSystemMessagesAndCustomLinks,\r\n loadCaraSolva,\r\n getEmployersAsync,\r\n addSystemMessageAsync\r\n };\r\n})();\r\n","var consumerFinancesWidget = (function () {\r\n // cached data\r\n var cfWidgetLocationId;\r\n var cfWidgetLocationName;\r\n var cfWidgetConsumerName;\r\n var cfWidgetSortOrderId;\r\n var cfWidgetSortOrderName;\r\n // DOM\r\n //-----------------------\r\n var widget;\r\n var widgetBody;\r\n var filterPopup;\r\n var locationDropdown;\r\n var consumerDropdown;\r\n var sortOrderDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'consumerFinancesWidgetLocations',\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: false\r\n });\r\n consumerDropdown = dropdown.build({\r\n dropdownId: 'consumerFinancesWidgetConsumer',\r\n label: 'Consumer',\r\n style: 'secondary',\r\n readonly: false\r\n });\r\n sortOrderDropdown = dropdown.build({\r\n dropdownId: 'consumerFinancesWidgetSortOrder',\r\n label: 'Sort Order',\r\n style: 'secondary',\r\n readonly: false\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained'\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined'\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(consumerDropdown);\r\n filterPopup.appendChild(locationDropdown);\r\n filterPopup.appendChild(sortOrderDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n function eventSetup() {\r\n var tempCFWidgetLocationName;\r\n var tempCFWidgetConsumerName;\r\n var tempCFWidgetSortOrderName;\r\n\r\n\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tempCFWidgetLocationName = selectedOption.value;\r\n // cfWidgetLocationName = selectedOption.value;\r\n });\r\n consumerDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tempCFWidgetConsumerName = selectedOption.value;\r\n // cfWidgetConsumerName = selectedOption.value;\r\n });\r\n sortOrderDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tempCFWidgetSortOrderName = selectedOption.value;\r\n // cfWidgetSortOrderName = selectedOption.value;\r\n });\r\n applyFiltersBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n updateFilterData({\r\n tempCFWidgetLocationName,\r\n tempCFWidgetConsumerName,\r\n tempCFWidgetSortOrderName\r\n });\r\n\r\n //Loading\r\n widgetBody.innerHTML = '';\r\n PROGRESS__ANYWHERE.init()\r\n PROGRESS__ANYWHERE.SPINNER.show(widgetBody, \"Loading\");\r\n\r\n ConsumerFinancesWidgetAjax.getConsumerFinanceWidgetEntriesDataAjax({\r\n token: $.session.Token,\r\n consumerName: cfWidgetConsumerName,\r\n locationName: cfWidgetLocationName,\r\n sortOrderName: cfWidgetSortOrderName\r\n }, populateConsumerFinanceResults);\r\n });\r\n cancelFilterBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n });\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tempCFWidgetLocationName) cfWidgetLocationName = data.tempCFWidgetLocationName;\r\n if (data.tempCFWidgetConsumerName) cfWidgetConsumerName = data.tempCFWidgetConsumerName;\r\n if (data.tempCFWidgetSortOrderName) cfWidgetSortOrderName = data.tempCFWidgetSortOrderName;\r\n }\r\n\r\n function populateCFWidgetLocations(results) {\r\n var data = results.map(r => {\r\n return {\r\n id: r.ID,\r\n value: r.Name,\r\n text: r.Name\r\n }\r\n });\r\n data.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('consumerFinancesWidgetLocations', data, cfWidgetLocationId);\r\n }\r\n function populateCFWidgetConsumers(results) {\r\n var data = results.map(r => {\r\n return {\r\n id: r.ID,\r\n value: r.FullName,\r\n text: r.FullName \r\n }\r\n });\r\n data.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('consumerFinancesWidgetConsumer', data, cfWidgetConsumerName);\r\n }\r\n function populateCFWidgetDropdowns() {\r\n const sortData = ([\r\n { id: 1, value: 'Consumer Last Name Ascending', text: 'Consumer Last Name Ascending' },\r\n { id: 2, value: 'Consumer Last Name Descending', text: 'Consumer Last Name Descending' },\r\n { id: 3, value: 'Account Balance Ascending', text: 'Account Balance Ascending' },\r\n { id: 4, value: 'Account Balance Descending', text: 'Account Balance Descending' },\r\n { id: 5, value: 'Last Transaction Ascending', text: 'Last Transaction Ascending' },\r\n { id: 6, value: 'Last Transaction Descending', text: 'Last Transaction Descending' },\r\n ]);\r\n dropdown.populate(\"consumerFinancesWidgetSortOrder\", sortData, cfWidgetSortOrderName);\r\n }\r\n\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.appendChild(filteredBy);\r\n }\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Consumer: ${(cfWidgetConsumerName == '%') ? 'ALL' : cfWidgetConsumerName}

    \r\n

    Location: ${(cfWidgetLocationName == '%') ? 'ALL' : cfWidgetLocationName}

    \r\n

    Sort Order: ${cfWidgetSortOrderName}

    \r\n
    `;\r\n }\r\n\r\n var tableOptions = {\r\n plain: true,\r\n columnHeadings: ['Name', 'Account', 'Balance', 'Last Transaction'],\r\n tableId: 'consumerFinanceWidgetTable',\r\n };\r\n\r\n function populateConsumerFinanceResults(results) {\r\n displayFilteredBy();\r\n var widget = document.getElementById('dashMoneyManagementwidget');\r\n if (!widget) return;\r\n\r\n\r\n var cfTable = table.build(tableOptions);\r\n // Set the data type for each header, for sorting purposes\r\n const headers = cfTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Name\r\n headers[1].setAttribute('data-type', 'string'); // Account\r\n headers[2].setAttribute('data-type', 'amount'); // Balance\r\n headers[3].setAttribute('data-type', 'date'); // Last Transaction \r\n\r\n widgetBody.appendChild(cfTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(cfTable);\r\n\r\n cfTableData = results.map(td => {\r\n var ID = td.Id;\r\n var name = td.name;\r\n var account = td.account;\r\n var balance = td.balance;\r\n var lastTransaction = td.lastTransaction;\r\n\r\n return {\r\n id: ID, \r\n values: [name, account, balance == '' ? '$0.00' : '$' + balance, lastTransaction == '' ? '' : moment(lastTransaction).format('MM/DD/YY')],\r\n attributes: [\r\n { key: 'data-consumer-id', value: td.Id }, { key: 'consumerId', value: td.Id }, { key: 'registerId', value: td.registerId } \r\n ],\r\n onClick: (e) => { \r\n handleAccountTableEvents(e.target.attributes.consumerId.value,e.target.attributes.registerId.value)\r\n },\r\n };\r\n });\r\n\r\n table.populate(cfTable, cfTableData);\r\n PROGRESS__ANYWHERE.SPINNER.hide(widgetBody, \"Loading\");\r\n }\r\n\r\n function handleAccountTableEvents(consumerId, registerId) {\r\n $.session.consumerId = consumerId;\r\n NewEntryCF.buildNewEntryForm(registerId); \r\n } \r\n\r\n function init() {\r\n if (!cfWidgetLocationName) cfWidgetLocationName = '%';\r\n if (!cfWidgetConsumerName) cfWidgetConsumerName = '%';\r\n if (!cfWidgetSortOrderName) cfWidgetSortOrderName = 'Consumer Last Name Ascending';\r\n\r\n widget = document.getElementById('dashMoneyManagementwidget');\r\n widgetBody = widget.querySelector('.widget__body');\r\n\r\n // append filter button\r\n dashboard.appendFilterButton('dashMoneyManagementwidget', 'moneyManagementFilterBtn');\r\n\r\n buildFilterPopup();\r\n displayFilteredBy();\r\n eventSetup();\r\n populateCFWidgetDropdowns();\r\n ConsumerFinancesWidgetAjax.getLocationsForDashboardAbsent(populateCFWidgetLocations);\r\n ConsumerFinancesWidgetAjax.getCFWidgetConsumers(populateCFWidgetConsumers);\r\n\r\n PROGRESS__ANYWHERE.init()\r\n PROGRESS__ANYWHERE.SPINNER.show(widgetBody, \"Loading\");\r\n\r\n ConsumerFinancesWidgetAjax.getConsumerFinanceWidgetEntriesDataAjax({\r\n token: $.session.Token,\r\n consumerName: cfWidgetConsumerName,\r\n locationName: cfWidgetLocationName,\r\n sortOrderName: cfWidgetSortOrderName\r\n }, populateConsumerFinanceResults);\r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();","var ConsumerFinancesWidgetAjax = (function () {\r\n var absentLocationsArray = [];\r\n var consumerArray = [];\r\n\r\n function getLocationsForDashboardAbsent(callback) {\r\n if (absentLocationsArray.length > 0) {\r\n callback(absentLocationsArray);\r\n return;\r\n }\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getLocationsJSONResult;\r\n absentLocationsArray = res;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n },\r\n });\r\n }\r\n\r\n function getCFWidgetConsumers(callback) {\r\n if (consumerArray.length > 0) {\r\n callback(consumerArray);\r\n return;\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getCFWidgetConsumers/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCFWidgetConsumersResult;\r\n consumerArray = res; \r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n },\r\n });\r\n }\r\n\r\n function getConsumerFinanceWidgetEntriesDataAjax(filterData, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getConsumerFinanceWidgetEntriesData/',\r\n data: JSON.stringify(filterData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerFinanceWidgetEntriesDataResult;\r\n callback(res, null);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getLocationsForDashboardAbsent: getLocationsForDashboardAbsent,\r\n getCFWidgetConsumers: getCFWidgetConsumers,\r\n getConsumerFinanceWidgetEntriesDataAjax: getConsumerFinanceWidgetEntriesDataAjax,\r\n };\r\n})();\r\n","var clockedInWidget = (function () {\r\n // DATA\r\n //-----------------------\r\n var locations;\r\n var clockedInConsumers;\r\n var clockedInStaff;\r\n // DOM\r\n //-----------------------\r\n var widget;\r\n var widgetBody;\r\n var asOfTime;\r\n var widgetTabs;\r\n var filterPopup;\r\n var locationDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n // VALUES\r\n //-----------------------\r\n var locationId;\r\n var locationName;\r\n\r\n // Filtering\r\n function populateLocations() {\r\n var data = locations.map(r => {\r\n return {\r\n id: r.ID,\r\n value: r.ID,\r\n text: r.Name,\r\n };\r\n });\r\n\r\n // if (!$.session.defaultDayServiceLocation) $.session.defaultDayServiceLocation = data[0].value;\r\n if (!locationId) locationId = data[0].value;\r\n if (!locationName) locationName = data[0].text;\r\n\r\n dropdown.populate('clockedInLocations', data, locationId);\r\n }\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'clockedInLocations',\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(locationDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, asOfTime);\r\n }\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Location: ${locationName}

    \r\n
    `;\r\n }\r\n\r\n function populateCurrentClockInTime() {\r\n var currentTime = UTIL.getCurrentTime();\r\n currentTime = UTIL.convertFromMilitary(currentTime);\r\n\r\n asOfTime = document.createElement('p');\r\n asOfTime.classList.add('bold', 'clockedInTime');\r\n asOfTime.innerHTML = `Clocked In As Of ${currentTime}`;\r\n\r\n widgetBody.appendChild(asOfTime);\r\n }\r\n function populateConsumersNames() {\r\n var consumers = {};\r\n var totalConsumers = 0;\r\n\r\n clockedInConsumers.forEach(function (consumer) {\r\n var fullName = `${consumer.clockedinconsumername.split(' ')[1]}, ${\r\n consumer.clockedinconsumername.split(' ')[0]\r\n }`;\r\n if (!consumers[fullName]) consumers[fullName] = 0;\r\n consumers[fullName]++;\r\n totalConsumers++;\r\n });\r\n\r\n var consumersSorted = {};\r\n Object.keys(consumers)\r\n .sort()\r\n .forEach(function (key) {\r\n consumersSorted[key] = consumers[key];\r\n });\r\n\r\n // Tab Section\r\n var section = document.querySelector('.consumers-section');\r\n if (!section) return;\r\n section.innerHTML = '';\r\n\r\n var consumerCount = document.createElement('div');\r\n consumerCount.classList.add('clockedInCount');\r\n consumerCount.innerHTML = `Total - ${totalConsumers}`;\r\n\r\n var list = document.createElement('ul');\r\n list.classList.add('clockedInList');\r\n\r\n var names = Object.keys(consumersSorted);\r\n names.forEach(function (name) {\r\n var li = document.createElement('li');\r\n li.innerHTML = name;\r\n list.appendChild(li);\r\n });\r\n\r\n section.appendChild(consumerCount);\r\n section.appendChild(list);\r\n }\r\n function populateStaffNames() {\r\n var consumers = {};\r\n var totalEmployees = 0;\r\n\r\n clockedInStaff.forEach(function (consumer) {\r\n var fullName = `${consumer.staffclockedinname.split(' ')[1]}, ${\r\n consumer.staffclockedinname.split(' ')[0]\r\n }`;\r\n if (!consumers[fullName]) consumers[fullName] = 0;\r\n consumers[fullName]++;\r\n totalEmployees++;\r\n });\r\n\r\n var consumersSorted = {};\r\n Object.keys(consumers)\r\n .sort()\r\n .forEach(function (key) {\r\n consumersSorted[key] = consumers[key];\r\n });\r\n\r\n // Tab Section\r\n var section = document.querySelector('.employees-section');\r\n if (!section) return;\r\n section.innerHTML = '';\r\n\r\n var employeeCount = document.createElement('div');\r\n employeeCount.classList.add('clockedInCount');\r\n employeeCount.innerHTML = `Total - ${totalEmployees}`;\r\n\r\n var list = document.createElement('ul');\r\n list.classList.add('clockedInList');\r\n\r\n var names = Object.keys(consumersSorted);\r\n names.forEach(function (name) {\r\n var li = document.createElement('LI');\r\n li.innerHTML = name;\r\n list.appendChild(li);\r\n });\r\n\r\n section.appendChild(employeeCount);\r\n section.appendChild(list);\r\n }\r\n function buildWidgetTabs() {\r\n var tabOptions = {\r\n sections: ['Consumers', 'Employees'],\r\n };\r\n\r\n var widgetTabs = tabs.build(tabOptions);\r\n\r\n widgetBody.appendChild(widgetTabs);\r\n\r\n populateConsumersNames();\r\n populateStaffNames();\r\n displayFilteredBy();\r\n }\r\n\r\n function eventSetup() {\r\n var oldLocationId;\r\n var oldLocationName;\r\n\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldLocationId = locationId;\r\n oldLocationName = locationName;\r\n locationId = selectedOption.value;\r\n locationName = selectedOption.innerHTML;\r\n });\r\n applyFiltersBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n clockedInWidgetAjax.getClockedInConsumerNamesDayServicesAjax(\r\n locationId,\r\n function (consumerNames) {\r\n clockedInConsumers = consumerNames;\r\n clockedInWidgetAjax.getClockedInStaffNamesDayServicesAjax(\r\n locationId,\r\n function (staffNames) {\r\n clockedInStaff = staffNames;\r\n populateConsumersNames();\r\n populateStaffNames();\r\n displayFilteredBy();\r\n },\r\n );\r\n },\r\n );\r\n });\r\n cancelFilterBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n locationId = oldLocationId;\r\n locationName = oldLocationName;\r\n });\r\n }\r\n function getInitialData(callback) {\r\n clockedInWidgetAjax.getLocationsForDashboardDayServices(function (results) {\r\n locations = results;\r\n\r\n clockedInWidgetAjax.getClockedInConsumerNamesDayServicesAjax(\r\n locations[0].ID,\r\n function (results) {\r\n clockedInConsumers = results;\r\n\r\n clockedInWidgetAjax.getClockedInStaffNamesDayServicesAjax(\r\n locations[0].ID,\r\n function (results) {\r\n clockedInStaff = results;\r\n\r\n callback();\r\n },\r\n );\r\n },\r\n );\r\n });\r\n }\r\n\r\n function init() {\r\n // append filter button\r\n dashboard.appendFilterButton('dashdsclockedin', 'clockedInFilterBtn');\r\n\r\n widget = document.getElementById('dashdsclockedin');\r\n widgetBody = widget.querySelector('.widget__body');\r\n widgetBody.innerHTML = '';\r\n\r\n buildFilterPopup();\r\n eventSetup();\r\n\r\n getInitialData(function () {\r\n populateCurrentClockInTime();\r\n populateLocations();\r\n buildWidgetTabs();\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var clockedInWidgetAjax = (function() {\r\n\r\n function getLocationsForDashboardDayServices(callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: \r\n $.webServer.protocol + \"://\" + \r\n $.webServer.address + \":\" + \r\n $.webServer.port + \"/\" + \r\n $.webServer.serviceName + \"/getDashboardDayServicesLocationsJSON/\",\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n res = response.getDashboardDayServicesLocationsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n }\r\n });\r\n }\r\n\r\n function getClockedInConsumerNamesDayServicesAjax(locationId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: \r\n $.webServer.protocol + \"://\" + \r\n $.webServer.address + \":\" + \r\n $.webServer.port + \"/\" + \r\n $.webServer.serviceName + \"/getClockedInConsumerNamesDayServicesJSON/\",\r\n data: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getClockedInConsumerNamesDayServicesJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n }\r\n });\r\n }\r\n\r\n function getClockedInStaffNamesDayServicesAjax(locationId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: \r\n $.webServer.protocol + \"://\" + \r\n $.webServer.address + \":\" + \r\n $.webServer.port + \"/\" + \r\n $.webServer.serviceName + \"/getClockedInStaffNamesDayServicesJSON/\",\r\n data: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getClockedInStaffNamesDayServicesJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n }\r\n });\r\n }\r\n\r\n return {\r\n getLocationsForDashboardDayServices,\r\n getClockedInConsumerNamesDayServicesAjax,\r\n getClockedInStaffNamesDayServicesAjax\r\n }\r\n}());","var hoursWorkedWidget = (function () {\r\n // DATA\r\n //-----------------------\r\n var hoursWorkedList = {};\r\n var selectedWeekView = 'currweek';\r\n var selectedWeekRange;\r\n var selectedWeekRangeTxt;\r\n // DOM\r\n //-----------------------\r\n var widget;\r\n var widgetBody;\r\n var hoursList;\r\n var filterPopup;\r\n var weeksDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n\r\n function populateWeeksDropdown(results) {\r\n // value\r\n var currStart = moment(results.curr_start_date).format('MM-DD-YYYY');\r\n var currEnd = moment(results.curr_end_date).format('MM-DD-YYYY');\r\n var prevStart = results.prev_start_date\r\n ? moment(results.prev_start_date).format('MM-DD-YYYY')\r\n : null;\r\n var prevEnd = results.prev_end_date ? moment(results.prev_end_date).format('MM-DD-YYYY') : null;\r\n // text\r\n var newCurrStart = currStart.split('-').join('/');\r\n var newCurrEnd = currEnd.split('-').join('/');\r\n var newPrevStart = prevStart ? prevStart.split('-').join('/') : null;\r\n var newPrevEnd = prevEnd ? prevEnd.split('-').join('/') : null;\r\n\r\n var data = [\r\n {\r\n id: 'currweek',\r\n value: `${currStart} - ${currEnd}`,\r\n text: `${newCurrStart} - ${newCurrEnd}`,\r\n },\r\n ];\r\n\r\n if (prevStart && prevEnd) {\r\n data.push({\r\n id: 'prevweek',\r\n value: `${prevStart} - ${prevEnd}`,\r\n text: `${newPrevStart} - ${newPrevEnd}`,\r\n });\r\n }\r\n\r\n if (!selectedWeekRange) selectedWeekRange = data[0].value;\r\n if (!selectedWeekRangeTxt) selectedWeekRangeTxt = data[0].text;\r\n\r\n dropdown.populate('hoursWorkedWeekDropdown', data, selectedWeekRange);\r\n }\r\n\r\n function populateHoursWorkedList(results) {\r\n hoursList.innerHTML = '';\r\n\r\n var dataObj;\r\n\r\n if (!Object.keys(hoursWorkedList).length) {\r\n dataObj = {};\r\n if (results) {\r\n results.forEach(r => {\r\n var date = r.workdate.split(' ')[0].split('/');\r\n date = `${UTIL.leadingZero(date[0])}/${UTIL.leadingZero(date[1])}/${date[2]}`;\r\n var location = r.location;\r\n var hours;\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n if (r.check_hours !== '' && r.check_hours !== '0.00') {\r\n hours = parseFloat(r.check_hours).toFixed(2);\r\n } else if (r.hours !== '' && r.hours !== '0.000000000') {\r\n hours = parseFloat(r.hours).toFixed(2);\r\n } else {\r\n hours = 0;\r\n }\r\n } else {\r\n if (r.check_hours !== '' && r.check_hours !== '0') {\r\n hours = parseFloat(r.check_hours).toFixed(2);\r\n } else if (r.hours !== '' && r.hours !== '0.000000000') {\r\n hours = parseFloat(r.hours).toFixed(2);\r\n } else {\r\n hours = 0;\r\n }\r\n }\r\n\r\n if (!dataObj[r.week]) {\r\n dataObj[r.week] = {};\r\n }\r\n if (!dataObj[r.week][date]) {\r\n dataObj[r.week][date] = {};\r\n }\r\n if (!dataObj[r.week][date][location]) {\r\n dataObj[r.week][date][location] = {\r\n hours: parseFloat(hours).toFixed(2),\r\n name: location,\r\n };\r\n } else {\r\n var newHours = parseFloat(dataObj[r.week][date][location].hours) + parseFloat(hours);\r\n dataObj[r.week][date][location].hours = parseFloat(newHours).toFixed(2);\r\n }\r\n });\r\n }\r\n // cache data\r\n hoursWorkedList = dataObj;\r\n } else {\r\n dataObj = hoursWorkedList;\r\n }\r\n\r\n if (!dataObj[selectedWeekView]) {\r\n hoursList.innerHTML = `

    Nothing scheduled

    `;\r\n displayFilteredBy();\r\n return;\r\n } else {\r\n var overlapDisclaimer = document.createElement('h4');\r\n overlapDisclaimer.classList.add('overlapDisclaimer');\r\n overlapDisclaimer.innerHTML = 'This widget does not reconcile overlapping time entries.';\r\n hoursList.appendChild(overlapDisclaimer);\r\n }\r\n\r\n var weekRange = Object.keys(dataObj[selectedWeekView]);\r\n if (weekRange) {\r\n weekRange.forEach(week => {\r\n var div = document.createElement('div');\r\n\r\n var totalHours = 0;\r\n\r\n var locations = Object.keys(dataObj[selectedWeekView][week]);\r\n locations.forEach(location => {\r\n var hours = dataObj[selectedWeekView][week][location].hours;\r\n hours = parseFloat(hours);\r\n totalHours += hours;\r\n\r\n var locationText = document.createElement('p');\r\n locationText.innerHTML = `${location} - ${hours} hours`;\r\n\r\n div.appendChild(locationText);\r\n });\r\n\r\n var dateText = document.createElement('h4');\r\n dateText.classList.add('dateDisp');\r\n var isoWeek = UTIL.formatDateToIso(week);\r\n dateText.innerHTML = `${moment(isoWeek).format('dddd, MMMM D')} - ${totalHours} hours`;\r\n\r\n div.insertBefore(dateText, div.firstChild);\r\n hoursList.appendChild(div);\r\n });\r\n }\r\n\r\n displayFilteredBy();\r\n }\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n weeksDropdown = dropdown.build({\r\n dropdownId: 'hoursWorkedWeekDropdown',\r\n label: 'Weeks',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(weeksDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, hoursList);\r\n }\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Weeks: ${selectedWeekRangeTxt}

    \r\n
    `;\r\n }\r\n\r\n function eventSetup() {\r\n var oldSelectedWeekView;\r\n var oldSelectedWeekRange;\r\n var oldSelectedWeekRangeTxt;\r\n\r\n weeksDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldSelectedWeekView = selectedWeekView;\r\n oldSelectedWeekRange = selectedWeekRange;\r\n oldSelectedWeekRangeTxt = selectedWeekRangeTxt;\r\n\r\n selectedWeekView = selectedOption.id;\r\n selectedWeekRange = selectedOption.value;\r\n selectedWeekRangeTxt = selectedOption.innerHTML;\r\n });\r\n applyFiltersBtn.addEventListener('click', () => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n populateHoursWorkedList();\r\n });\r\n cancelFilterBtn.addEventListener('click', () => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n selectedWeekView = oldSelectedWeekView;\r\n selectedWeekRange = oldSelectedWeekRange;\r\n selectedWeekRangeTxt = oldSelectedWeekRangeTxt;\r\n });\r\n }\r\n\r\n function init() {\r\n widget = document.getElementById('dashhoursworkedwidget');\r\n widgetBody = widget.querySelector('.widget__body');\r\n hoursList = document.getElementById('hoursWorkedLists');\r\n\r\n // append filter button\r\n dashboard.appendFilterButton('dashhoursworkedwidget', 'hoursWorkedFilterBtn');\r\n\r\n buildFilterPopup();\r\n eventSetup();\r\n\r\n hoursWorkedWidgetAjax.getWorkWeeks(function (error, workWeeks) {\r\n populateWeeksDropdown(workWeeks);\r\n displayFilteredBy();\r\n\r\n hoursWorkedWidgetAjax.getHoursWorked(function (error, hoursWorked) {\r\n populateHoursWorkedList(hoursWorked);\r\n });\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var hoursWorkedWidgetAjax = (function () {\r\n function getWorkWeeks(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkWeeks/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getWorkWeeksResult;\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n function getHoursWorked(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCompanyWorkWeekAndHours/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCompanyWorkWeekAndHoursResult;\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getWorkWeeks,\r\n getHoursWorked,\r\n };\r\n})();\r\n","var incidentTrackingWidget = (function () {\r\n\r\n let widget;\r\n let widgetBody;\r\n let defaultShow;\r\n let tempShow;\r\n let incidentTrackingWidgetObj = []; \r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector(\".widget__filters\");\r\n if (widgetFilter) return;\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n applyFiltersBtn = button.build({\r\n text: \"Apply\",\r\n style: \"secondary\",\r\n type: \"contained\"\r\n });\r\n cancelFilterBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\"\r\n });\r\n showDropdown = dropdown.build({\r\n dropdownId: \"showDropdown\",\r\n label: \"Show\",\r\n style: \"secondary\"\r\n });\r\n\r\n var btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n filterPopup.appendChild(showDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n\r\n function eventSetup() {\r\n applyFiltersBtn.addEventListener(\"click\", event => {\r\n filterPopup.classList.remove(\"visible\");\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n if (defaultShow === tempShow || !tempShow)\r\n return;\r\n defaultShow = tempShow;\r\n UTIL.LS.setStorage('dash_incidentTrackingShow', defaultShow);\r\n populateIncidentTrackingWidget(incidentTrackingWidgetObj);\r\n });\r\n cancelFilterBtn.addEventListener(\"click\", event => {\r\n filterPopup.classList.remove(\"visible\");\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n });\r\n showDropdown.addEventListener(\"change\", event => {\r\n tempShow = event.target[event.target.selectedIndex].value;\r\n });\r\n }\r\n\r\n function getData() {\r\n let showValue = UTIL.LS.getStorage('dash_incidentTrackingShow');\r\n if (showValue === undefined) {\r\n showValue = \"%\";\r\n UTIL.LS.setStorage('dash_incidentTrackingShow', '%')\r\n }\r\n defaultShow = showValue;\r\n\r\n const showDropdownData = ([\r\n { id: 1, value: 1, text: 'Unread' },\r\n { id: 2, value: 2, text: 'Read' },\r\n ]);\r\n showDropdownData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"showDropdown\", showDropdownData, defaultShow);\r\n }\r\n\r\n var tableOptions = {\r\n plain: true,\r\n columnHeadings: ['Consumer Involved', 'Date of Incident', 'Category / Subcategory'],\r\n tableId: 'incidentTrackingWidgetTable',\r\n };\r\n\r\n function populateIncidentTrackingWidget(res) {\r\n var itTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = itTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Consumer Involved\r\n headers[1].setAttribute('data-type', 'date'); // Date of Incident\r\n headers[2].setAttribute('data-type', 'string'); // Category / Subcategory\r\n\r\n widgetBody.innerHTML = '';\r\n widgetBody.appendChild(itTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(itTable);\r\n\r\n var incidents = []; \r\n res.forEach(r => {\r\n if (!incidents[r.incidentId]) {\r\n incidents[r.incidentId] = r;\r\n } else {\r\n const dupName = incidents[r.incidentId].consumerName.includes(r.consumerName);\r\n if (!dupName) {\r\n incidents[r.incidentId].consumerName += `, ${r.consumerName}`;\r\n }\r\n incidents[r.incidentId].viewedBy += `, ${r.viewedBy}`;\r\n }\r\n });\r\n\r\n incidents.sort(function (a, b) {\r\n var o1 = a.consumerName.toLowerCase();\r\n var o2 = b.consumerName.toLowerCase();\r\n\r\n if (o1 < o2) return -1;\r\n if (o1 > o2) return 1;\r\n return 0;\r\n }); \r\n\r\n incidents.sort(function (a, b) {\r\n return new Date(b.incidentDate) - new Date(a.incidentDate);\r\n }); \r\n\r\n var keys = Object.keys(incidents);\r\n const removeArray = [];\r\n var count = 0;\r\n var data = keys\r\n .filter(k => {\r\n var obj = incidents[k];\r\n\r\n if ($.session.incidentTrackingViewPerm.length !== 0) {\r\n if (\r\n obj.description !== '' &&\r\n !$.session.incidentTrackingViewPerm.includes(obj.description.toLowerCase())\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n })\r\n .map(r => {\r\n var obj = incidents[r];\r\n\r\n var name = obj.consumerName.split(',');\r\n name = `${name[1]}, ${name[0]}`;\r\n var date = UTIL.abbreviateDateYear(obj.incidentDate.split(' ')[0]);\r\n var viewedOn = r.viewedOn ? true : false;\r\n var orginUser =\r\n obj.originallyEnteredBy.toLowerCase() === $.session.UserId.toLowerCase() ? true : false;\r\n var userHasViewed = obj.viewedBy.includes($.session.UserId) ? true : false;\r\n var showBold;\r\n\r\n if (!orginUser && !userHasViewed) {\r\n showBold = true;\r\n } \r\n if (defaultShow == 2 && showBold) {\r\n removeArray.push(count);\r\n }\r\n else if (defaultShow == 1 && !showBold) {\r\n removeArray.push(count);\r\n }\r\n count = count + 1;\r\n return {\r\n values: [name, date, obj.incidentCategory],\r\n attributes: [{ key: 'data-viewed', value: showBold }],\r\n id: obj.incidentId,\r\n onClick: async () => {\r\n await incidentTrackingAjax.updateIncidentViewByUser({\r\n token: $.session.Token,\r\n incidentId: obj.incidentId,\r\n userId: $.session.UserId,\r\n });\r\n\r\n incidentTracking.getDropdownData(() => {\r\n setActiveModuleSectionAttribute('incidentTracking-overview');\r\n UTIL.toggleMenuItemHighlight('incidenttracking');\r\n actioncenter.dataset.activeModule = 'incidenttracking';\r\n reviewIncident.init(obj.incidentId);\r\n });\r\n },\r\n };\r\n });\r\n for (let i = removeArray.length - 1; i >= 0; i--)\r\n data.splice(removeArray[i], 1);\r\n\r\n table.populate(itTable, data);\r\n }\r\n\r\n function init() {\r\n widget = document.getElementById('incidenttrackingwidget');\r\n if (!widget) return;\r\n widgetBody = widget.querySelector('.widget__body');\r\n dashboard.appendFilterButton(\r\n \"incidenttrackingwidget\",\r\n \"incidenttrackingFilterBtn\"\r\n );\r\n defaultShow = '%';\r\n buildFilterPopup();\r\n eventSetup();\r\n getData();\r\n incidentTrackingWidgetAjax.getITDashboardWidgetDataAjax(res => {\r\n incidentTrackingWidgetObj = res; \r\n populateIncidentTrackingWidget(incidentTrackingWidgetObj); \r\n }); \r\n \r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var incidentTrackingWidgetAjax = (function () {\r\n //$.session.incidentTrackingViewCaseLoad\r\n function getITDashboardWidgetDataAjax(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITDashboardWidgetData/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"viewCaseLoad\":\"' +\r\n $.session.incidentTrackingViewCaseLoad +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITDashboardWidgetDataResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getITDashboardWidgetDataAjax,\r\n };\r\n})();\r\n","var infalTimeClockWidget = (function() {\r\n\tvar position;\r\n\tvar tempID = readCookie('id');\r\n\tvar jobs = {};\r\n\tvar timeData = [];\r\n\tvar timeDataLookup = {};\r\n\tvar currentJob;\r\n\tvar currentTimeRecord;\r\n\tvar ID;\r\n\tvar jobDropdown;\r\n\tvar infalPunchClockButton;\r\n\tvar clockedIn = Boolean;\r\n\tvar infalTimeClockTable;\t\r\n\tvar jobSelectionSection = document.createElement('div');\r\n\tvar timeMessageSection = document.createElement('div');\r\n\tvar clockedInStatusMessage = document.createElement('div');\r\n\tvar actioncenter;\r\n\t\r\n\r\n\tfunction setInfalId(err, idObj) {\r\n\t\tif (err) {\r\n\t\t\tthrow 'Error';\r\n\t\t}\r\n\t\t//if (idObj[0] && idObj[0].App_Password) ID = idObj[0].App_Password;\r\n\t\tif (idObj !== undefined) {\r\n\t\t\tif (idObj[0] && idObj[0].App_Username) ID = idObj[0].App_Username;\r\n\t\t\t//else ID = idObj;\r\n\t\t\telse ID = tempID;\r\n\t\t} else {\r\n\t\t\t//ID = idObj;\r\n\t\t\tID = tempID;\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction getJobs () {\r\n\t\tinfalAjax.InfalGetJobsAjax({ id: ID }, function(err, returnJobs) {\r\n\t\tif (err) {\r\n\t\t\t$('#dashinfaltimeclockwidget .dashboarderror').show();\r\n\t\t\tif (callback) callback('error');\r\n\t\t\tthrow 'Error';\r\n\t\t} else {\r\n\t\t\tjobs = returnJobs;\r\n\t\t\tpopulateJobDropDown()\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction cacheTimeDataForLookup(data) {\r\n\t\tdata.forEach(d => {\r\n\t\t\tif (!timeDataLookup[d.ID]) {\r\n\t\t\t\ttimeDataLookup[d.ID] = d;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getTimePunches () {\r\n\t\tinfalAjax.InfalGetClockInsAndOutsAjax({ id: ID }, function(err, data){\r\n\t\tif (err) {\r\n\t\t\t$('#dashinfaltimeclockwidget .dashboarderror').show();\r\n\t\t\tif (callback) callback('error');\r\n\t\t\tthrow 'Error';\r\n\t\t} else {\r\n\t\t\ttimeData = data;\r\n\t\t\tcacheTimeDataForLookup(data);\r\n\t\t\t// Sort the punches by ID:\r\n\t\t\ttimeData.sort((a,b) => (a.Job_Description_No > b.Job_Description_No) ? 1 : -1);\r\n\t\t\t//build the table with the punch data\r\n\t\t\ttimeClockTable(timeData)\r\n\t\t\t// set initial clocked in status\r\n\t\t\tconst clockedInRecord = timeData.find(record => record.OutTime === \"\");\r\n\t\t\tif (timeData.length == 0 ) {\r\n\t\t\t\tclockedInStatusMessage.innerHTML = 'You are curently clocked out';\r\n\t\t\t\tclockedIn = false;\r\n\t\t\t\tinfalPunchClockButton.innerHTML = 'Clock In';\r\n\t\t\t\tinfalPunchClockButton.setAttribute('data-clock-action', 'in')\r\n\t\t\t\tinfalTimeClockTable.style.display = 'none';\r\n\t\t\t\ttimeMessageSection.innerHTML = 'No time entries for today.'\r\n\t\t\t} else if (clockedInRecord){\r\n\t\t\t\tclockedIn = true;\r\n\t\t\t\tgetCurrentRecord(timeData);\r\n\t\t\t\tinfalPunchClockButton.innerHTML = 'Clock Out';\r\n\t\t\t\tinfalPunchClockButton.setAttribute('data-clock-action', 'out')\r\n\t\t\t\tjobDropdown.style.display = 'none';\r\n clockedInStatusMessage.innerHTML = 'Currently clocked in as ' + clockedInRecord.Emp_Job_Description + ' at ' + clockedInRecord.InTime.replace(/^0+/, '');\r\n\t\t\t} else {\r\n\t\t\t\tclockedInStatusMessage.innerHTML = 'You are curently clocked out';\r\n\t\t\t\tclockedIn = false;\r\n\t\t\t\tinfalPunchClockButton.innerHTML = 'Clock In';\r\n\t\t\t\tinfalPunchClockButton.setAttribute('data-clock-action', 'in')\r\n\t\t\t}\r\n\t\t}\r\n\t})\r\n\t}\r\n\r\n\tfunction populateJobDropDown() {\r\n\t\tvar data = jobs.map(j => {\r\n\t\t\tvar id = j.Job_Description_No\r\n\t\t\tvar value = j.Job_Description;\r\n\t\t\tvar text = j.text;\r\n\t\t\treturn{\r\n\t\t\t\tid,\r\n\t\t\t\tvalue,\r\n\t\t\t\ttext\r\n\t\t\t}\r\n\t\t})\r\n\t\tdropdown.populate('jobsDropdown', data);\r\n\t\tselectedJob = jobs[0].Job_Description_No;\r\n\t\tselectedJobDescription = jobs[0].Job_Description;\r\n\t\tjobDropdown.addEventListener('change', () => {\r\n\t\t\tvar selectedOption = event.target.options[event.target.selectedIndex];\r\n\t\t\tselectedJob = selectedOption.id;\r\n\t\t\tselectedJobDescription = selectedOption.value;\r\n\t\t})\r\n\t}\r\n\r\n\tfunction calcPosition(p) {\r\n\t\tposition = p;\r\n\t\trestOfStuff();\r\n\t}\r\n\t//Geo Location Lat and Long\r\n\tfunction getLocation() {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(calcPosition, restOfStuff);//second parm is for error handling, for example location is blocked.\r\n\t\t} else {\r\n\t\t\t// position = false;\r\n\t\t\trestOfStuff();\r\n\t\t}\r\n\t}\r\n\t//Clock in action \r\n\tfunction clockIn () {\r\n\t\tvar fullDate = moment(new Date()),\r\n\t\tinDate = fullDate.format('MM/DD/YYYY'),\r\n\t\tstartTime = fullDate.format('hh:mm'),\r\n\t\tstartAMPM = fullDate.format('A');\r\n\t\tvar timeObj = {\r\n\t\tempIdString: ID + '',\r\n\t\tjobIdString: selectedJob + '',\r\n\t\tlatInString: '0',\r\n\t\tlongInString: '0',\r\n\t\tinDate: inDate,\r\n\t\tStartTime: startTime + '',\r\n\t\tStartAMPM: startAMPM + '',\r\n\t\t};\r\n\t\r\n\t\tif (position) {\r\n\t\t \tvar latitude = position.coords.latitude;\r\n\t\t \tvar longitude = position.coords.longitude;\r\n\r\n\t\t \ttimeObj.latInString = latitude;\r\n\t\t \ttimeObj.longInString = longitude;\r\n\t\t }\r\n\t\t\r\n\t\tinfalAjax.InfalClockInAjax(timeObj, results => {\r\n\t\t\tcurrentTimeRecord = results.InfalClockInResult;\r\n\t\t\tupdateTimeData();\r\n\t\t\ttimeMessageSection.innerHTML = '';\r\n\t\t});\r\n\t\tjobDropdown.style.display = 'none';\r\n\t\tinfalTimeClockTable.style.display = 'block';\r\n clockedInStatusMessage.innerHTML = 'Currently clocked in as ' + selectedJobDescription + ' at ' + startTime.replace(/^0+/, '') + startAMPM;\r\n\t}\r\n\t//Clock Out action\r\n\tfunction clockOut () {\r\n\t\tclockedInStatusMessage.innerHTML = 'You are curently clocked out';\r\n\t\tgetCurrentRecord(timeData)\r\n\t\tvar fullDate = moment(new Date()),\r\n\t\toutDate = fullDate.format('MM/DD/YYYY'),\r\n\t\tEndTime = fullDate.format('hh:mm'),\r\n\t\tEndTimeAMPM = fullDate.format('A');\r\n\t\tvar timeObj = {\r\n\t\t\tempIdString: ID,\r\n\t\t\tjobIdString: currentJob,\r\n\t\t\trecIdString: currentTimeRecord,\r\n\t\t\tlatOutString: '0',\r\n\t\t\tlongOutString: '0',\r\n\t\t\toutDate: outDate + '',\r\n\t\t\tEndTime: EndTime + '',\r\n\t\t\tEndTimeAMPM: EndTimeAMPM + '',\r\n\t\t\tMemo: timeDataLookup[currentTimeRecord].Memo === null ? '': timeDataLookup[currentTimeRecord].Memo,\r\n\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tif (position) {\r\n\t\t\t\tvar latitude = position.coords.latitude;\r\n\t\t\t\tvar longitude = position.coords.longitude;\r\n \r\n\t\t\t\t timeObj.latOutString = latitude;\r\n\t\t\t\ttimeObj.longOutString = longitude;\r\n\t\t\t}\r\n\t\t\r\n\t\tinfalAjax.InfalClockOutAjax(timeObj, r => {\r\n\t\t\tupdateTimeData();\r\n\t\t\tjobDropdown.style.display = 'flex';\r\n\t\t});\r\n\t}\r\n\r\n\tfunction memoPopup(timeRecord) {\r\n\t\tvar widget = document.getElementById('dashinfaltimeclockwidget');\r\n\t\tvar widgetBody = widget.querySelector('.widget__body');\r\n\t\t// var popup = document.createElement('div');\r\n\t\tvar popup = POPUP.build({\r\n\t\t\tclassNames: 'infalTimeMemoPopup',\r\n\t\t\theader: 'Shift Note'\r\n\t\t})\r\n\t\t// popup.classList.add('popup', 'visible', 'infalTimeMemoPopup', 'popup--filter');\r\n\t\t// popup.setAttribute('data-popup', 'true');\r\n\t\t\r\n\t\ttimeRecord = parseInt(timeRecord);\r\n\t\tlet saveBtn = button.build({\r\n\t\t\ttext: 'Save',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'contained',\r\n\t\t\ticon: 'checkmark',\r\n\t\t\tcallback: function() {\r\n\t\t\t\ttimeDataLookup[timeRecord].Memo = document.getElementById('memoInput').value;\r\n\t\t\t\t//Highlight this row if they add a memo, remove the highlight if they clear out the memo:\r\n\t\t\t\tif (timeDataLookup[timeRecord].Memo !== null && timeDataLookup[timeRecord].Memo !== '') {\r\n\t\t\t\t\tlet row = document.getElementById(timeRecord);\r\n\t\t\t\t\trow.classList.add('containsMemo');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet row = document.getElementById(timeRecord);\r\n\t\t\t\t\trow.classList.remove('containsMemo');\r\n\t\t\t\t}\r\n\t\t\t\toverlay.hide();\r\n\t\t\t\tPOPUP.hide(popup)\r\n\t\t\t\t// actioncenter.removeChild(popup);\r\n\t\t\t\tbodyScrollLock.enableBodyScroll(popup);\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tlet clearBtn = button.build({\r\n\t\t\ttext: 'Clear',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'outlined',\r\n\t\t\ticon: 'clear',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tdocument.getElementById('memoInput').value = '';\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet memoInput = input.build({\r\n\t\t\tid: 'memoInput',\r\n\t\t\tlabel: 'Memo',\r\n\t\t\ttype: 'textarea',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\tvalue: timeDataLookup[timeRecord].Memo,\r\n\t\t\treadonly: timeRecord === currentTimeRecord && clockedIn ? false : true\r\n\t\t});\r\n\t\tpopup.appendChild(memoInput);\r\n\t\tif (currentTimeRecord === timeRecord && clockedIn) {\r\n\t\t\tbtnWrap = document.createElement('div');\r\n\t\t\tbtnWrap.classList.add('btnWrap')\r\n\t\t\tbtnWrap.appendChild(saveBtn)\r\n\t\t\tbtnWrap.appendChild(clearBtn)\r\n\t\t\tpopup.appendChild(btnWrap);\r\n\t\t}\r\n\t\t\r\n\t\tPOPUP.show(popup);\r\n\t}\r\n\r\n\tinfalPunchClockButton = button.build({\r\n\t\tid: 'infalClockInOutBtn',\r\n\t\tclassNames: 'infalClockInOutBtn',\r\n\t\ttext: '',\r\n\t\tstyle: 'secondary',\r\n\t\ttype: 'contained',\r\n\t\tcallback: function () {\r\n\t\t\tif (clockedIn) {\r\n\t\t\t\tclockOut()\r\n\t\t\t\tinfalPunchClockButton.innerHTML = 'Clock In';\r\n\t\t\t\tinfalPunchClockButton.setAttribute('data-clock-action', 'in');\r\n\t\t\t\tcurrentJob = '';\r\n\t\t\t\tclockedIn = !clockedIn;\r\n\t\t\t} else {\r\n\t\t\t\tclockIn();\r\n\t\t\t\tinfalPunchClockButton.innerHTML = 'Clock Out';\r\n\t\t\t\tinfalPunchClockButton.setAttribute('data-clock-action', 'out');\r\n\t\t\t\tclockedIn = !clockedIn;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tfunction timeClockTable(timeData) {\r\n\r\n\t\tvar options = {\r\n\t\t\tcolumnHeadings:[\r\n\t\t\t\t'Job',\r\n\t\t\t\t'Time in',\r\n\t\t\t\t'Time out'\r\n\t\t\t],\r\n\t\t\ttableId: 'infalTimeClockWidgetTable',\r\n\t\t\tcallback: function () {\r\n\t\t\t\tmemoPopup(event.target.id);\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tinfalTimeClockTable = table.build(options);\r\n\t\tvar widget = document.getElementById('dashinfaltimeclockwidget');\r\n\t\tvar widgetBody = widget.querySelector('.widget__body');\r\n\r\n\r\n\r\n\r\n\t\twidgetBody.appendChild(infalTimeClockTable);\r\n\t\twidgetBody.appendChild(timeMessageSection);\r\n\t\tlet data = timeData.map(t => {\r\n\t\t\treturn {\r\n\t\t\t\tvalues: [\r\n\t\t\t\t\tt.Emp_Job_Description,\r\n\t\t\t\t\tt.InTime,\r\n\t\t\t\t\tt.OutTime\r\n\t\t\t\t],\r\n\t\t\t\tid: t.ID\r\n\t\t\t}\r\n\t\t});\r\n\t\ttable.populate('infalTimeClockWidgetTable', data)\r\n\r\n\t\t//Highlight the row if it contains a memo:\r\n\t\tvar x;\r\n\t\tfor (x in timeDataLookup) {\r\n\t\t\tif (timeDataLookup[x].Memo !== null && timeDataLookup[x].Memo !== '') {\r\n\t\t\t\tlet row = document.getElementById(x);\r\n\t\t\t\trow.classList.add('containsMemo')\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Updates Current Record variables, and re-populates the time clock table\r\n\tfunction updateTimeData() {\r\n\t\tinfalAjax.InfalGetClockInsAndOutsAjax({ id: ID }, function(err, data){\r\n\t\t\tif (err) {\r\n\t\t\t\t$('#dashinfaltimeclockwidget .dashboarderror').show();\r\n\t\t\t\tif (callback) callback('error');\r\n\t\t\t\tthrow 'Error';\r\n\t\t\t} else {\r\n\t\t\t\ttimeData = data;\r\n\t\t\t\ttimeData.sort((a,b) => (a.Job_Description_No > b.Job_Description_No) ? 1 : -1);\r\n\t\t\t\tgetCurrentRecord(timeData);\r\n\t\t\t\tcacheTimeDataForLookup(data);\r\n\t\t\t\tlet tableData = timeData.map(t => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tvalues: [\r\n\t\t\t\t\t\t\tt.Emp_Job_Description,\r\n\t\t\t\t\t\t\tt.InTime,\r\n\t\t\t\t\t\t\tt.OutTime\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tid: t.ID\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\ttable.populate('infalTimeClockWidgetTable', tableData);\r\n\t\t\t\t//Highlight the row if it contains a memo:\r\n\t\t\t\tvar x;\r\n\t\t\t\tfor (x in timeDataLookup) {\r\n\t\t\t\t\tif (timeDataLookup[x].Memo !== null && timeDataLookup[x].Memo !== '') {\r\n\t\t\t\t\t\tlet row = document.getElementById(x);\r\n\t\t\t\t\t\trow.classList.add('containsMemo');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\t\r\n\t}\t\r\n\r\n\tfunction getCurrentRecord(timeData) {\r\n\t\tconst clockedInRecord = timeData.find(record => record.OutTime === \"\");\r\n\t\tif (!clockedInRecord) return;\r\n\t\tcurrentTimeRecord = clockedInRecord.ID;\r\n\t\tcurrentJob = clockedInRecord.Emp_Job_Id;\r\n\t}\r\n\r\n\tvar buildComponents = (function() {\r\n\t\tvar widget = document.getElementById('dashinfaltimeclockwidget');\r\n\t\tvar widgetBody = widget.querySelector('.widget__body');\r\n\t\tjobSelectionSection.setAttribute('id', 'jobSelectionSection');\r\n\t\ttimeMessageSection.setAttribute('id', 'timeMessageSection');\r\n\t\tclockedInStatusMessage.setAttribute('id', 'clockedInStatusMessage');\r\n\t\tjobDropdown = dropdown.build({\r\n \tdropdownId: 'jobsDropdown',\r\n\t\tlabel: 'Job',\r\n\t\tstyle: 'secondary',\r\n\t\treadonly: false\r\n\t\t});\r\n\t\twidgetBody.appendChild(clockedInStatusMessage);\r\n\t\twidgetBody.appendChild(jobSelectionSection);\r\n\t\tjobSelectionSection.appendChild(jobDropdown);\r\n\t\tjobSelectionSection.appendChild(infalPunchClockButton);\r\n\r\n\t\t\r\n\r\n\t})\r\n\r\n\tfunction restOfStuff(){\r\n\t\tsetInfalId();\r\n\t\tbuildComponents();\r\n\t\tgetTimePunches();\r\n\t\tgetJobs();\r\n\t}\r\n\r\n\tfunction init() {\r\n\t\tactioncenter = document.getElementById('actioncenter');\r\n\t\tgetLocation();\r\n\t}\r\n\r\n\t return {\r\n\t\t init,\r\n\t };\r\n })();","var infalTimeClockAjax = (function () {\r\n //Gets the group note id for inserting new group notes\r\n function getJobs() {\r\n var id = readCookie('id');\r\n $.ajax({\r\n type: 'POST',\r\n //url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n // \"/\" + $.webServer.serviceName + \"/getURL/\",\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/InfalGetJobs/',\r\n data: '{\"id\":\"' + id + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n createJobButtonsHtml(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function infalClockInDataSetUp(EmpId, jobId, LatIn, LongIn, inDate, startTime, ampm) {\r\n var clockInData = {\r\n empIdString: EmpId,\r\n jobIdString: jobId,\r\n latInString: LatIn,\r\n longInString: LongIn,\r\n inDate: inDate,\r\n StartTime: startTime,\r\n StartAMPM: ampm,\r\n };\r\n\r\n clockIn(clockInData);\r\n }\r\n\r\n function clockIn(clockInData) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/InfalClockIn/',\r\n //data: '{\"empIdString\":\"' + EmpId + '\", \"jobIdString\":\"' + jobId + '\", \"latInString\":\"' + LatIn + '\", \"longInString\":\"' + LongIn + '\", \"inDate\":\"' + inDate + '\", \"StartTime\":\"' + startTime + '\", \"ampm\":\"' + ampm + '\"}',\r\n data: JSON.stringify(clockInData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n checkClockInResult(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function infalClockOutDataSetUp(\r\n EmpId,\r\n jobId,\r\n recId,\r\n LatOut,\r\n LongOut,\r\n outDate,\r\n endTime,\r\n ampm,\r\n memo,\r\n ) {\r\n var clockOutData = {\r\n empIdString: EmpId,\r\n jobIdString: jobId,\r\n recIdString: recId,\r\n latOutString: LatOut,\r\n longOutString: LongOut,\r\n outDate: outDate,\r\n EndTime: endTime,\r\n EndTimeAMPM: ampm,\r\n Memo: memo,\r\n };\r\n\r\n clockOut(clockOutData);\r\n }\r\n\r\n function clockOut(clockOutData) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/InfalClockOut/',\r\n //data: '{\"empIdString\":\"' + EmpId + '\", \"jobIdString\":\"' + jobId + '\", \"recIdString\":\"' + recId + '\", \"latOutString\":\"' + LatOut + '\", \"longOutString\":\"' + LongOut + '\", \"outDate\":\"' + outDate + '\", \"EndTime\":\"' + endTime + '\", \"EndTimeAMPM\":\"' + ampm + '\", \"Memo\":\"' + memo + '\"}',\r\n data: JSON.stringify(clockOutData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n checkClockOutResult(res);\r\n },\r\n error: function (xhr, status, error) {\r\n console.log(xhr, status, error);\r\n },\r\n });\r\n }\r\n\r\n function checkAnticipo(id, pass) {\r\n $.ajax({\r\n type: 'POST',\r\n //url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n // \"/\" + $.webServer.serviceName + \"/getURL/\",\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/ValidateLogin/',\r\n data: '{\"id\":\"' + id + '\", \"pass\":\"' + pass + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n allowAccess(res);\r\n },\r\n error: function (xhr, status, error) {\r\n console.log(xhr, status, error);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getJobs,\r\n infalClockInDataSetUp,\r\n clockIn,\r\n infalClockOutDataSetUp,\r\n clockOut,\r\n checkAnticipo,\r\n };\r\n})();\r\n","const unreadLocationNotes = (function() {\r\n let widget;\r\n let widgetBody;\r\n let applyFiltersBtn;\r\n let cancelFilterBtn;\r\n let filterPopup;\r\n //DOM\r\n let locationNoteslocationDropdown;\r\n let locationNoteList;\r\n //DATA\r\n let locationNoteLocationObj;\r\n let locationNoteLocationLookupObject;\r\n let tmpSelectedLocation;\r\n let filteredLocation;\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector(\".widget__filters\");\r\n if (widgetFilter) return;\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n applyFiltersBtn = button.build({\r\n text: \"Apply\",\r\n style: \"secondary\",\r\n type: \"contained\"\r\n });\r\n cancelFilterBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\"\r\n });\r\n locationNoteslocationDropdown = dropdown.build({\r\n dropdownId: \"locationProgressNoteLocations\",\r\n label: \"Location\",\r\n style: \"secondary\"\r\n });\r\n\r\n var btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n filterPopup.appendChild(locationNoteslocationDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n\r\n function populateDropdown() {\r\n let defaultLocation = UTIL.LS.getStorage('dash_locationProgressNoteLocation');\r\n if (defaultLocation === undefined) {\r\n defaultLocation = \"%\";\r\n UTIL.LS.setStorage('dash_locationProgressNoteLocation', '%')\r\n }\r\n filteredLocation = defaultLocation;\r\n\r\n let filteredLocationExists = (function() {\r\n if (defaultLocation === \"%\") return true;\r\n let exists = false;\r\n locationNoteLocationObj.forEach(loc => {\r\n if (loc.loc_id == filteredLocation) {\r\n exists = true;\r\n return;\r\n }\r\n });\r\n return exists;\r\n })();\r\n\r\n if (!filteredLocationExists) {\r\n defaultLocation = \"%\";\r\n filteredLocation = \"%\";\r\n UTIL.LS.setStorage('dash_locationProgressNoteLocation', '%');\r\n }\r\n\r\n let data = locationNoteLocationObj.map(loc => {\r\n return {\r\n value: loc.loc_id,\r\n text: loc.locationName\r\n };\r\n });\r\n\r\n data.sort(function(a, b) {\r\n // alphabetize\r\n if (a.text < b.text) {\r\n return -1;\r\n }\r\n if (a.text > b.text) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n data.unshift({ id: \"%\", value: \"%\", text: \"All\" }); //ADD All Value\r\n locationNoteLocationObj.unshift({ loc_id: \"%\", locationName: \"All\" }); //ADD All Value\r\n\r\n dropdown.populate(locationNoteslocationDropdown, data, defaultLocation);\r\n }\r\n\r\n function eventSetup() {\r\n applyFiltersBtn.addEventListener(\"click\", event => {\r\n filterPopup.classList.remove(\"visible\");\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n if (filteredLocation === tmpSelectedLocation || !tmpSelectedLocation)\r\n return;\r\n filteredLocation = tmpSelectedLocation;\r\n UTIL.LS.setStorage('dash_locationProgressNoteLocation', filteredLocation);\r\n getNotesFiltered();\r\n });\r\n cancelFilterBtn.addEventListener(\"click\", event => {\r\n filterPopup.classList.remove(\"visible\");\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n });\r\n locationNoteslocationDropdown.addEventListener(\"change\", event => {\r\n tmpSelectedLocation = event.target[event.target.selectedIndex].value;\r\n });\r\n }\r\n\r\n function getNotesFiltered() {\r\n PROGRESS__ANYWHERE.init()\r\n locationNoteList.innerHTML = \"\"\r\n PROGRESS__ANYWHERE.SPINNER.show(locationNoteList, \"Loading\");\r\n locationNotesAjax.getLocationProgressNotesAndPermission(filteredLocation, res => {\r\n PROGRESS__ANYWHERE.SPINNER.hide(locationNoteList)\r\n populateLocationProgressNoteWidgetResult(res);\r\n });\r\n }\r\n\r\n function populateLocationProgressNoteWidgetResult(filteredResults) {\r\n displayFilteredBy();\r\n // locationNoteList.innerHTML = \"\";\r\n if (filteredResults.length === 0) {\r\n locationNoteList.innerHTML = \"There are no unread notes\";\r\n return;\r\n }\r\n filteredResults.forEach(progNote => {\r\n let date = progNote.datecreated.split(\" \")[0];\r\n let location =\r\n locationNoteLocationLookupObject[progNote.Location].locationName;\r\n locationNoteList.innerHTML += `\r\n
    ${location}: ${progNote.title} - ${date}\r\n

    Location: ${locationNoteLocationLookupObject[filteredLocation].locationName}

    \r\n
    \r\n `;\r\n }\r\n\r\n function populateLocationLookup() {\r\n locationNoteLocationLookupObject = {};\r\n locationNoteLocationObj.forEach(loc => {\r\n obj = {\r\n locationName: loc.locationName\r\n };\r\n locationNoteLocationLookupObject[loc.loc_id] = obj;\r\n });\r\n }\r\n\r\n function getData() {\r\n let getlocations = new Promise((resolve, reject) => {\r\n locationNotesAjax.getLocationsWithUnreadNotesAndPermission(res => {\r\n locationNoteLocationObj = res;\r\n resolve(\"success\");\r\n });\r\n });\r\n\r\n Promise.all([getlocations]).then(() => {\r\n populateDropdown();\r\n populateLocationLookup();\r\n getNotesFiltered();\r\n });\r\n }\r\n\r\n // const dash_locationProgressNotesLS = (function() {\r\n // function getLocation() {\r\n // let user = $.session.UserId;\r\n // return localStorage.getItem(\r\n // `user:${user} dash_locationProgressNoteLocation`\r\n // );\r\n // }\r\n // function setLocaiton(locationId) {\r\n // let user = $.session.UserId;\r\n // return localStorage.setItem(\r\n // `user:${user} dash_locationProgressNoteLocation`,\r\n // locationId\r\n // );\r\n // }\r\n // return {\r\n // getLocation: getLocation,\r\n // setLocation: setLocaiton\r\n // };\r\n // })();\r\n\r\n function init() {\r\n dashboard.appendFilterButton(\r\n \"locationprogressnoteswidget\",\r\n \"locationProgressFilterBtn\"\r\n );\r\n\r\n widget = document.getElementById(\"locationprogressnoteswidget\");\r\n widgetBody = widget.querySelector(\".widget__body\");\r\n locationNoteList = document.getElementById(\"locationProgressNoteList\");\r\n \r\n getData();\r\n buildFilterPopup();\r\n eventSetup();\r\n }\r\n return {\r\n init\r\n };\r\n})();\r\n","// Widget id = 20\r\nconst rosterToDoListWidget = (function () {\r\n // Data\r\n let rosterWorkflows, widgetSettings;\r\n let widget, widgetBody, planTasks;\r\n let filterPopup;\r\n let consumers = [],\r\n tasks = [];\r\n let filter = {\r\n dueDateRange: 'today',\r\n dueDateFrom: UTIL.getTodaysDate(),\r\n dueDateTo: UTIL.getTodaysDate(),\r\n consumer: 'all',\r\n task: 'all',\r\n };\r\n\r\n async function init() {\r\n widget = document.getElementById('rosterToDoList'); \r\n widgetBody = widget.querySelector('.widget__body');\r\n planTasks = widget.querySelector('#roster-workflow-tasks');\r\n widgetSettings = dashboard.getWidgetSettings('20');\r\n if (widgetSettings.widgetConfig === null) setDefaultIfConfigNull();\r\n\r\n // append filter button\r\n dashboard.appendFilterButton('rosterToDoList', 'rosterToDoFilterBtn');\r\n let data = await getData();\r\n rosterWorkflows = data;\r\n\r\n consumers = Object.values(\r\n rosterWorkflows.reduce(\r\n (\r\n acc,\r\n { consumerId, consumerLastName, consumerFirstName, consumerMiddleName, ...wf },\r\n ) => {\r\n if (!acc[consumerId]) {\r\n acc[consumerId] = {\r\n consumerId,\r\n consumerFullName: `${consumerLastName}, ${consumerFirstName} ${consumerMiddleName}`,\r\n };\r\n }\r\n\r\n return acc;\r\n },\r\n {},\r\n ),\r\n );\r\n\r\n consumers.sort((a, b) => {\r\n const textA = a.consumerFullName.toUpperCase();\r\n const textB = b.consumerFullName.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n tasks = [...new Set(rosterWorkflows.map(c => c.workflowStepDescription))];\r\n setFilterDueDates(widgetSettings.widgetConfig.dueDate);\r\n applyFilter(filter);\r\n buildFilterPopup();\r\n }\r\n\r\n function setFilterDueDates(dateRangeText) {\r\n let today = UTIL.getTodaysDate(true);\r\n let dueDates = {};\r\n switch (dateRangeText.toUpperCase()) {\r\n case 'TODAY':\r\n dueDates = {\r\n from: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'NEXT 7 DAYS':\r\n dueDates = {\r\n from: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(dates.addDays(today, 7), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'NEXT 30 DAYS':\r\n dueDates = {\r\n from: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(dates.addDays(today, 30), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'PRIOR 7 DAYS':\r\n dueDates = {\r\n from: moment(dates.addDays(today, -7), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'PRIOR 30 DAYS':\r\n dueDates = {\r\n from: moment(dates.addDays(today, -30), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n default:\r\n dueDates = {\r\n from: filter.dueDateFrom,\r\n to: filter.dueDateTo,\r\n };\r\n break;\r\n }\r\n filter = {\r\n dueDateRange: dateRangeText.toLowerCase(),\r\n dueDateFrom: dueDates.from,\r\n dueDateTo: dueDates.to,\r\n consumer: filter.consumer,\r\n task: filter.task,\r\n };\r\n }\r\n\r\n function setDefaultIfConfigNull() {\r\n widgetSettings.widgetConfig = {\r\n dueDate: filter.dueDateRange,\r\n };\r\n widgetSettingsAjax.setWidgetSettingConfig(\r\n 20,\r\n JSON.stringify(widgetSettings.widgetConfig),\r\n widgetSettings.showHide,\r\n );\r\n }\r\n\r\n function populatePlanWorkflowWidget(data) {\r\n if (!widget) return;\r\n planTasks.innerHTML = '';\r\n if (data.length === 0) {\r\n planTasks.innerHTML = `No tasks are currently due`;\r\n } else {\r\n buildHtmlFromData(planTasks, data);\r\n }\r\n }\r\n\r\n function buildFilterPopup() {\r\n let widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n filterPopup = dashboard.buildFilterPopup();\r\n const showCustomDates = show => {\r\n if (show) {\r\n fromDateInput.classList.remove('hidden');\r\n toDateInput.classList.remove('hidden');\r\n } else {\r\n if (fromDateInput.classList.contains('hidden')) return; // don't add it again\r\n fromDateInput.classList.add('hidden');\r\n toDateInput.classList.add('hidden');\r\n }\r\n };\r\n\r\n let dueDateDropDownValue = filter.dueDateRange;\r\n let fromDateInputValue = filter.dueDateFrom;\r\n let toDateInputValue = filter.dueDateTo;\r\n let consumersDropDownValue = filter.consumer;\r\n let tasksDropDownValue = filter.task;\r\n\r\n let dueDateDropDown = dropdown.build({\r\n id: 'planToDoWidgetDueDates',\r\n label: 'Due Date Range',\r\n type: 'date',\r\n style: 'secondary',\r\n });\r\n\r\n let fromDateInput = input.build({\r\n id: 'planToDoWidgetFromDate',\r\n label: 'From',\r\n type: 'date',\r\n style: 'secondary',\r\n value: fromDateInputValue,\r\n });\r\n\r\n let toDateInput = input.build({\r\n id: 'planToDoWidgetToDate',\r\n label: 'To',\r\n type: 'date',\r\n style: 'secondary',\r\n value: toDateInputValue,\r\n });\r\n\r\n let consumersDropdown = dropdown.build({\r\n dropdownId: 'planToDoWidgetConsumers',\r\n label: 'Consumer',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n let tasksDropdown = dropdown.build({\r\n dropdownId: 'planToDoWidgetTasks',\r\n label: 'Task',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n let applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n let cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(dueDateDropDown);\r\n filterPopup.appendChild(fromDateInput);\r\n filterPopup.appendChild(toDateInput);\r\n filterPopup.appendChild(consumersDropdown);\r\n filterPopup.appendChild(tasksDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n\r\n const dueDateRangeDropDownData = [\r\n {\r\n id: 1,\r\n value: 'custom',\r\n text: 'Custom',\r\n },\r\n {\r\n id: 2,\r\n value: 'today',\r\n text: 'Today',\r\n },\r\n {\r\n id: 3,\r\n value: 'next 7 days',\r\n text: 'Next 7 Days',\r\n },\r\n {\r\n id: 4,\r\n value: 'next 30 days',\r\n text: 'Next 30 Days',\r\n },\r\n {\r\n id: 5,\r\n value: 'prior 7 days',\r\n text: 'Prior 7 Days',\r\n },\r\n {\r\n id: 6,\r\n value: 'prior 30 days',\r\n text: 'Prior 30 Days',\r\n },\r\n ];\r\n dropdown.populate(dueDateDropDown, dueDateRangeDropDownData, dueDateDropDownValue);\r\n showCustomDates(dueDateDropDownValue.toUpperCase() === 'CUSTOM');\r\n\r\n const consumerDropdownData = consumers.map(c => {\r\n return {\r\n id: c.consumerId,\r\n value: c.consumerId,\r\n text: c.consumerFullName,\r\n };\r\n });\r\n consumerDropdownData.unshift({ id: 0, value: 'all', text: 'ALL' }); //ADD ALL value\r\n dropdown.populate(consumersDropdown, consumerDropdownData, consumersDropDownValue);\r\n\r\n const taskDropdownData = tasks.map((t, i) => {\r\n return {\r\n id: i,\r\n value: t,\r\n text: t,\r\n };\r\n });\r\n taskDropdownData.sort((a, b) =>\r\n a.value.toUpperCase() < b.value.toUpperCase() ? -1 : 1,\r\n );\r\n taskDropdownData.unshift({ id: 0, value: 'all', text: 'ALL' }); //ADD ALL value\r\n dropdown.populate(tasksDropdown, taskDropdownData, tasksDropDownValue);\r\n\r\n // event listeners\r\n dueDateDropDown.addEventListener('change', e => {\r\n dueDateDropDownValue = e.target.value;\r\n showCustomDates(dueDateDropDownValue.toUpperCase() === 'CUSTOM');\r\n setFilterDueDates(dueDateDropDownValue.toUpperCase());\r\n fromDateInputValue = filter.dueDateFrom;\r\n toDateInputValue = filter.dueDateTo;\r\n });\r\n\r\n fromDateInput.addEventListener('change', e => {\r\n fromDateInputValue = e.target.value;\r\n });\r\n\r\n toDateInput.addEventListener('change', e => {\r\n toDateInputValue = e.target.value;\r\n });\r\n\r\n consumersDropdown.addEventListener('change', e => {\r\n consumersDropDownValue = e.target.value;\r\n });\r\n\r\n tasksDropdown.addEventListener('change', e => {\r\n tasksDropDownValue = e.target.value;\r\n });\r\n\r\n applyFiltersBtn.addEventListener('click', e => {\r\n filter = {\r\n dueDateRange: dueDateDropDownValue,\r\n dueDateFrom: fromDateInputValue,\r\n dueDateTo: toDateInputValue,\r\n consumer: consumersDropDownValue,\r\n task: tasksDropDownValue,\r\n };\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n applyFilter(filter);\r\n });\r\n\r\n cancelFilterBtn.addEventListener('click', e => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n });\r\n }\r\n\r\n const applyFilter = filter => {\r\n let fromDate = Date.parse(filter.dueDateFrom);\r\n let toDate = Date.parse(filter.dueDateTo);\r\n let filteredData = rosterWorkflows.filter(p => {\r\n let dueDate = Date.parse(p.workflowStepDueDate);\r\n return dueDate >= fromDate && dueDate <= toDate; // filter by dates\r\n });\r\n filteredData =\r\n filter.consumer.toUpperCase() === 'ALL'\r\n ? filteredData\r\n : filteredData.filter(d => {\r\n return d.consumerId === filter.consumer; // filter by consumer\r\n });\r\n filteredData =\r\n filter.task.toUpperCase() === 'ALL'\r\n ? filteredData\r\n : filteredData.filter(d => {\r\n return d.workflowStepDescription === filter.task; // filter by task\r\n });\r\n populatePlanWorkflowWidget(filteredData);\r\n displayFilteredBy();\r\n };\r\n\r\n function buildHtmlFromData(parent, data) {\r\n const buildPlanWorkflowHTML = (parent, plans) => {\r\n const buildWorkflowStepHTML = (consumer, workflowName, step, dueDate) => {\r\n let stepHTML = document.createElement('div');\r\n\r\n stepHTML.setAttribute(\r\n 'style',\r\n 'display: flex; flex-wrap: nowrap; padding-bottom: 5px; cursor: pointer',\r\n );\r\n\r\n stepHTML.innerHTML = `\r\n\t\t\t\t\t
    - ${step}
    \r\n\t\t\t\t\t
    ${dueDate ? dueDate.split(' ')[0] : ''\r\n }
    \r\n\t\t\t\t`;\r\n stepHTML.addEventListener('click', e => {\r\n //plan.dashHandler(consumer, workflowName, stepId);\r\n });\r\n return stepHTML;\r\n };\r\n\r\n if (plans.length > 0) {\r\n let planTypeContainerHtml = document.createElement('div');\r\n planTypeContainerHtml.setAttribute('style', 'display: flex; flex-wrap: nowrap;');\r\n\r\n let planTypeHtml = document.createElement('div');\r\n planTypeHtml.setAttribute('style', 'display: flex; font-weight: 500;');\r\n planTypeHtml.innerHTML = `\r\n\t\t\t\t\t${plans[0].workflowName} \r\n\t\t\t\t`;\r\n\r\n let dueDateLabelHtml = document.createElement('div');\r\n dueDateLabelHtml.setAttribute(\r\n 'style',\r\n 'display: flex; margin-left: auto; text-align: right; font-weight: 500;',\r\n );\r\n dueDateLabelHtml.innerHTML = 'Due Date';\r\n\r\n planTypeContainerHtml.appendChild(planTypeHtml);\r\n planTypeContainerHtml.appendChild(dueDateLabelHtml);\r\n parent.appendChild(planTypeContainerHtml);\r\n\r\n for (record in plans) {\r\n let {\r\n consumerId,\r\n consumerFirstName,\r\n consumerLastName,\r\n consumerMiddleName, \r\n responsiblePartyId,\r\n workflowStepId,\r\n workflowStepDescription,\r\n workflowStepDueDate,\r\n workflowName,\r\n ...rest\r\n } = plans[record];\r\n let consumerPlanInfo = document.createElement('div');\r\n consumerPlanInfo.setAttribute(\r\n 'style',\r\n 'font-weight: bold; padding-bottom: 5px;',\r\n );\r\n consumerPlanInfo.innerHTML = `${consumerLastName}, ${consumerFirstName} ${consumerMiddleName}`;\r\n parent.appendChild(consumerPlanInfo); \r\n parent.appendChild(\r\n buildWorkflowStepHTML(\r\n {\r\n consumer: {\r\n consumerId,\r\n consumerFirstName,\r\n consumerLastName,\r\n consumerMiddleName,\r\n },\r\n },\r\n workflowName,\r\n workflowStepDescription,\r\n workflowStepDueDate,\r\n ),\r\n );\r\n }\r\n return parent;\r\n }\r\n };\r\n if (data.length > 0) buildPlanWorkflowHTML(parent, data);\r\n return parent;\r\n }\r\n\r\n function displayFilteredBy() {\r\n let filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, planTasks);\r\n }\r\n\r\n const dueDateRange = filter.dueDateRange.toUpperCase();\r\n const dueDateFrom = moment(filter.dueDateFrom, 'YYYY-MM-DD').format('M/D/YYYY');\r\n const dueDateTo = moment(filter.dueDateTo, 'YYYY-MM-DD').format('M/D/YYYY');\r\n const filterConsumerBy = filter.consumer.toUpperCase();\r\n const task = filter.task.toUpperCase();\r\n\r\n const getFilteredConsumer = () => {\r\n return consumers.find(c => {\r\n return c.consumerId === filter.consumer;\r\n });\r\n };\r\n\r\n // console.log(consumers, \" consumer: \", filter.consumer);\r\n filteredBy.innerHTML = `
    \r\n\t\t

    Due Date: ${dueDateRange === 'CUSTOM' ? `${dueDateFrom} - ${dueDateTo}` : dueDateRange\r\n }

    \r\n\t\t

    Consumer: ${filterConsumerBy === 'ALL' ? 'ALL' : getFilteredConsumer().consumerFullName\r\n }

    \r\n\t\t

    Task: ${task}

    \r\n\t\t
    `;\r\n }\r\n\r\n async function getData() {\r\n try {\r\n let {\r\n getRosterToDoListWidgetDataResult: result,\r\n } = await rosterToDoListWidgetAjax.getRosterToDoListWidgetData($.session.PeopleId);\r\n return result;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var rosterToDoListWidgetAjax = (function () {\r\n\r\n async function getRosterToDoListWidgetData(peopleId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getRosterToDoListWidgetData/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n responsiblePartyId: peopleId,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getRosterToDoListWidgetData,\r\n };\r\n})();\r\n","// Widget id = 4\r\nconst planWorkflowWidget = (function () {\r\n // Data\r\n let planWorkflows, widgetSettings;\r\n let widget, widgetBody, planTasks;\r\n let filterPopup;\r\n let consumers = [],\r\n tasks = [];\r\n let filter = {\r\n dueDateRange: 'today',\r\n dueDateFrom: UTIL.getTodaysDate(),\r\n dueDateTo: UTIL.getTodaysDate(),\r\n consumer: 'all',\r\n task: 'all',\r\n };\r\n\r\n async function init() {\r\n widget = document.getElementById('planworkflow');\r\n widgetBody = widget.querySelector('.widget__body');\r\n planTasks = widget.querySelector('#plan-workflow-tasks');\r\n widgetSettings = dashboard.getWidgetSettings('4');\r\n if (widgetSettings.widgetConfig === null) setDefaultIfConfigNull();\r\n\r\n // append filter button\r\n dashboard.appendFilterButton('planworkflow', 'planToDoFilterBtn');\r\n let data = await getData();\r\n planWorkflows = data;\r\n\r\n consumers = Object.values(\r\n planWorkflows.reduce(\r\n (\r\n acc,\r\n { consumerId, consumerLastName, consumerFirstName, consumerMiddleName, ...wf },\r\n ) => {\r\n if (!acc[consumerId]) {\r\n acc[consumerId] = {\r\n consumerId,\r\n consumerFullName: `${consumerLastName}, ${consumerFirstName} ${consumerMiddleName}`,\r\n };\r\n }\r\n\r\n return acc;\r\n },\r\n {},\r\n ),\r\n );\r\n\r\n consumers.sort((a, b) => {\r\n const textA = a.consumerFullName.toUpperCase();\r\n const textB = b.consumerFullName.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n tasks = [...new Set(planWorkflows.map(c => c.workflowStepDescription))];\r\n setFilterDueDates(widgetSettings.widgetConfig.dueDate);\r\n applyFilter(filter);\r\n buildFilterPopup();\r\n }\r\n\r\n function setFilterDueDates(dateRangeText) {\r\n let today = UTIL.getTodaysDate(true);\r\n let dueDates = {};\r\n switch (dateRangeText.toUpperCase()) {\r\n case 'TODAY':\r\n dueDates = {\r\n from: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'NEXT 7 DAYS':\r\n dueDates = {\r\n from: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(dates.addDays(today, 7), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'NEXT 30 DAYS':\r\n dueDates = {\r\n from: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(dates.addDays(today, 30), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'PRIOR 7 DAYS':\r\n dueDates = {\r\n from: moment(dates.addDays(today, -7), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'PRIOR 30 DAYS':\r\n dueDates = {\r\n from: moment(dates.addDays(today, -30), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n default:\r\n dueDates = {\r\n from: filter.dueDateFrom,\r\n to: filter.dueDateTo,\r\n };\r\n break;\r\n }\r\n filter = {\r\n dueDateRange: dateRangeText.toLowerCase(),\r\n dueDateFrom: dueDates.from,\r\n dueDateTo: dueDates.to,\r\n consumer: filter.consumer,\r\n task: filter.task,\r\n };\r\n }\r\n\r\n function setDefaultIfConfigNull() {\r\n widgetSettings.widgetConfig = {\r\n dueDate: filter.dueDateRange,\r\n };\r\n widgetSettingsAjax.setWidgetSettingConfig(\r\n 4,\r\n JSON.stringify(widgetSettings.widgetConfig),\r\n widgetSettings.showHide,\r\n );\r\n }\r\n\r\n function populatePlanWorkflowWidget(data) {\r\n if (!widget) return;\r\n planTasks.innerHTML = '';\r\n if (data.length === 0) {\r\n planTasks.innerHTML = `No tasks are currently due`;\r\n } else {\r\n buildHtmlFromData(planTasks, data);\r\n }\r\n }\r\n\r\n function buildFilterPopup() {\r\n let widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n filterPopup = dashboard.buildFilterPopup();\r\n const showCustomDates = show => {\r\n if (show) {\r\n fromDateInput.classList.remove('hidden');\r\n toDateInput.classList.remove('hidden');\r\n } else {\r\n if (fromDateInput.classList.contains('hidden')) return; // don't add it again\r\n fromDateInput.classList.add('hidden');\r\n toDateInput.classList.add('hidden');\r\n }\r\n };\r\n\r\n let dueDateDropDownValue = filter.dueDateRange;\r\n let fromDateInputValue = filter.dueDateFrom;\r\n let toDateInputValue = filter.dueDateTo;\r\n let consumersDropDownValue = filter.consumer;\r\n let tasksDropDownValue = filter.task;\r\n\r\n let dueDateDropDown = dropdown.build({\r\n id: 'planToDoWidgetDueDates',\r\n label: 'Due Date Range',\r\n type: 'date',\r\n style: 'secondary',\r\n });\r\n\r\n let fromDateInput = input.build({\r\n id: 'planToDoWidgetFromDate',\r\n label: 'From',\r\n type: 'date',\r\n style: 'secondary',\r\n value: fromDateInputValue,\r\n });\r\n\r\n let toDateInput = input.build({\r\n id: 'planToDoWidgetToDate',\r\n label: 'To',\r\n type: 'date',\r\n style: 'secondary',\r\n value: toDateInputValue,\r\n });\r\n\r\n let consumersDropdown = dropdown.build({\r\n dropdownId: 'planToDoWidgetConsumers',\r\n label: 'Consumer',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n let tasksDropdown = dropdown.build({\r\n dropdownId: 'planToDoWidgetTasks',\r\n label: 'Task',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n let applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n let cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(dueDateDropDown);\r\n filterPopup.appendChild(fromDateInput);\r\n filterPopup.appendChild(toDateInput);\r\n filterPopup.appendChild(consumersDropdown);\r\n filterPopup.appendChild(tasksDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n\r\n const dueDateRangeDropDownData = [\r\n {\r\n id: 1,\r\n value: 'custom',\r\n text: 'Custom',\r\n },\r\n {\r\n id: 2,\r\n value: 'today',\r\n text: 'Today',\r\n },\r\n {\r\n id: 3,\r\n value: 'next 7 days',\r\n text: 'Next 7 Days',\r\n },\r\n {\r\n id: 4,\r\n value: 'next 30 days',\r\n text: 'Next 30 Days',\r\n },\r\n {\r\n id: 5,\r\n value: 'prior 7 days',\r\n text: 'Prior 7 Days',\r\n },\r\n {\r\n id: 6,\r\n value: 'prior 30 days',\r\n text: 'Prior 30 Days',\r\n },\r\n ];\r\n dropdown.populate(dueDateDropDown, dueDateRangeDropDownData, dueDateDropDownValue);\r\n showCustomDates(dueDateDropDownValue.toUpperCase() === 'CUSTOM');\r\n\r\n const consumerDropdownData = consumers.map(c => {\r\n return {\r\n id: c.consumerId,\r\n value: c.consumerId,\r\n text: c.consumerFullName,\r\n };\r\n });\r\n consumerDropdownData.unshift({ id: 0, value: 'all', text: 'ALL' }); //ADD ALL value\r\n dropdown.populate(consumersDropdown, consumerDropdownData, consumersDropDownValue);\r\n\r\n const taskDropdownData = tasks.map((t, i) => {\r\n return {\r\n id: i,\r\n value: t,\r\n text: t,\r\n };\r\n });\r\n taskDropdownData.sort((a, b) =>\r\n a.value.toUpperCase() < b.value.toUpperCase() ? -1 : 1,\r\n );\r\n taskDropdownData.unshift({ id: 0, value: 'all', text: 'ALL' }); //ADD ALL value\r\n dropdown.populate(tasksDropdown, taskDropdownData, tasksDropDownValue);\r\n\r\n // event listeners\r\n dueDateDropDown.addEventListener('change', e => {\r\n dueDateDropDownValue = e.target.value;\r\n showCustomDates(dueDateDropDownValue.toUpperCase() === 'CUSTOM');\r\n setFilterDueDates(dueDateDropDownValue.toUpperCase());\r\n fromDateInputValue = filter.dueDateFrom;\r\n toDateInputValue = filter.dueDateTo;\r\n });\r\n\r\n fromDateInput.addEventListener('change', e => {\r\n fromDateInputValue = e.target.value;\r\n });\r\n\r\n toDateInput.addEventListener('change', e => {\r\n toDateInputValue = e.target.value;\r\n });\r\n\r\n consumersDropdown.addEventListener('change', e => {\r\n consumersDropDownValue = e.target.value;\r\n });\r\n\r\n tasksDropdown.addEventListener('change', e => {\r\n tasksDropDownValue = e.target.value;\r\n });\r\n\r\n applyFiltersBtn.addEventListener('click', e => {\r\n filter = {\r\n dueDateRange: dueDateDropDownValue,\r\n dueDateFrom: fromDateInputValue,\r\n dueDateTo: toDateInputValue,\r\n consumer: consumersDropDownValue,\r\n task: tasksDropDownValue,\r\n };\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n applyFilter(filter);\r\n });\r\n\r\n cancelFilterBtn.addEventListener('click', e => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n });\r\n }\r\n\r\n const applyFilter = filter => {\r\n let fromDate = Date.parse(filter.dueDateFrom);\r\n let toDate = Date.parse(filter.dueDateTo);\r\n let filteredData = planWorkflows.filter(p => {\r\n let dueDate = Date.parse(p.workflowStepDueDate);\r\n return dueDate >= fromDate && dueDate <= toDate; // filter by dates\r\n });\r\n filteredData =\r\n filter.consumer.toUpperCase() === 'ALL'\r\n ? filteredData\r\n : filteredData.filter(d => {\r\n return d.consumerId === filter.consumer; // filter by consumer\r\n });\r\n filteredData =\r\n filter.task.toUpperCase() === 'ALL'\r\n ? filteredData\r\n : filteredData.filter(d => {\r\n return d.workflowStepDescription === filter.task; // filter by task\r\n });\r\n populatePlanWorkflowWidget(filteredData);\r\n displayFilteredBy();\r\n };\r\n\r\n function buildHtmlFromData(parent, data) {\r\n const buildPlanWorkflowHTML = (parent, plans) => {\r\n const buildWorkflowStepHTML = (consumer, planId, stepId, step, dueDate) => {\r\n let stepHTML = document.createElement('div');\r\n\r\n stepHTML.setAttribute(\r\n 'style',\r\n 'display: flex; flex-wrap: nowrap; padding-bottom: 5px; cursor: pointer',\r\n );\r\n\r\n stepHTML.innerHTML = `\r\n\t\t\t\t\t
    - ${step}
    \r\n\t\t\t\t\t
    ${\r\n dueDate ? dueDate.split(' ')[0] : ''\r\n }
    \r\n\t\t\t\t`;\r\n stepHTML.addEventListener('click', e => {\r\n plan.dashHandler(consumer, planId, stepId);\r\n });\r\n return stepHTML;\r\n };\r\n\r\n if (plans.length > 0) {\r\n let previousPlanId = '';\r\n\r\n let planTypeContainerHtml = document.createElement('div');\r\n planTypeContainerHtml.setAttribute('style', 'display: flex; flex-wrap: nowrap;');\r\n\r\n let planTypeHtml = document.createElement('div');\r\n planTypeHtml.setAttribute('style', 'display: flex; font-weight: 500;');\r\n planTypeHtml.innerHTML = `\r\n\t\t\t\t\tISP - ${plans[0].planType === 'A' ? 'Annual' : 'Revision'}\r\n\t\t\t\t`;\r\n\r\n let dueDateLabelHtml = document.createElement('div');\r\n dueDateLabelHtml.setAttribute(\r\n 'style',\r\n 'display: flex; margin-left: auto; text-align: right; font-weight: 500;',\r\n );\r\n dueDateLabelHtml.innerHTML = 'Due Date';\r\n\r\n planTypeContainerHtml.appendChild(planTypeHtml);\r\n planTypeContainerHtml.appendChild(dueDateLabelHtml);\r\n parent.appendChild(planTypeContainerHtml);\r\n\r\n for (record in plans) {\r\n let {\r\n consumerId,\r\n consumerFirstName,\r\n consumerLastName,\r\n consumerMiddleName,\r\n //planActive,\r\n planEffectiveStart,\r\n //planEffectiveEnd,\r\n planId,\r\n planRevisionNumber,\r\n //planStatus,\r\n planType,\r\n //planYearEnd,\r\n responsiblePartyId,\r\n workflowStepId,\r\n workflowStepDescription,\r\n workflowStepDueDate,\r\n ...rest\r\n } = plans[record];\r\n if (previousPlanId !== planId) {\r\n let consumerPlanInfo = document.createElement('div');\r\n consumerPlanInfo.setAttribute(\r\n 'style',\r\n 'font-weight: bold; padding-bottom: 5px;',\r\n );\r\n consumerPlanInfo.innerHTML = `${consumerLastName}, ${consumerFirstName} ${consumerMiddleName} ${\r\n planType === 'R' ? ' - Rev. ' + planRevisionNumber : ''\r\n } - Eff. ${planEffectiveStart ? planEffectiveStart.split(' ')[0] : ''}`;\r\n parent.appendChild(consumerPlanInfo);\r\n previousPlanId = planId;\r\n }\r\n parent.appendChild(\r\n buildWorkflowStepHTML(\r\n {\r\n consumer: {\r\n consumerId,\r\n consumerFirstName,\r\n consumerLastName,\r\n consumerMiddleName,\r\n },\r\n },\r\n planId,\r\n workflowStepId,\r\n workflowStepDescription,\r\n workflowStepDueDate,\r\n ),\r\n );\r\n }\r\n return parent;\r\n }\r\n };\r\n\r\n let annualPlans = data.filter(d => d.planType === 'A');\r\n let revisionPlans = data.filter(d => d.planType === 'R');\r\n\r\n if (annualPlans.length > 0) buildPlanWorkflowHTML(parent, annualPlans);\r\n if (revisionPlans.length > 0) buildPlanWorkflowHTML(parent, revisionPlans);\r\n\r\n return parent;\r\n }\r\n\r\n function displayFilteredBy() {\r\n let filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, planTasks);\r\n }\r\n\r\n const dueDateRange = filter.dueDateRange.toUpperCase();\r\n const dueDateFrom = moment(filter.dueDateFrom, 'YYYY-MM-DD').format('M/D/YYYY');\r\n const dueDateTo = moment(filter.dueDateTo, 'YYYY-MM-DD').format('M/D/YYYY');\r\n const filterConsumerBy = filter.consumer.toUpperCase();\r\n const task = filter.task.toUpperCase();\r\n\r\n const getFilteredConsumer = () => {\r\n return consumers.find(c => {\r\n return c.consumerId === filter.consumer;\r\n });\r\n };\r\n\r\n // console.log(consumers, \" consumer: \", filter.consumer);\r\n filteredBy.innerHTML = `
    \r\n\t\t

    Due Date: ${\r\n dueDateRange === 'CUSTOM' ? `${dueDateFrom} - ${dueDateTo}` : dueDateRange\r\n }

    \r\n\t\t

    Consumer: ${\r\n filterConsumerBy === 'ALL' ? 'ALL' : getFilteredConsumer().consumerFullName\r\n }

    \r\n\t\t

    Task: ${task}

    \r\n\t\t
    `;\r\n }\r\n\r\n async function getData() {\r\n try {\r\n let {\r\n getPlanWorkflowWidgetDataResult: result,\r\n } = await WorkflowViewerAjax.getPlanWorkflowWidgetData($.session.PeopleId);\r\n return result;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const remainingDailyServicesWidget = (function () {\r\n var filter = {\r\n outcomeType: '%',\r\n location: '%',\r\n group: '%',\r\n date: null,\r\n };\r\n // DATA\r\n //-----------------------\r\n // DOM\r\n //-----------------------\r\n var widget;\r\n var widgetBody;\r\n var filterPopup;\r\n var goalsWidgetDate;\r\n var outcomeDropdown;\r\n var locationDropdown;\r\n var groupDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n\r\n function populateFilteredList(res) {\r\n var consumers = {};\r\n var totalServices = 0;\r\n var totalConsumers = 0;\r\n\r\n res.forEach(function (consumer) {\r\n var fullName = consumer.last_name.trim() + ', ' + consumer.first_name;\r\n if (!consumers[fullName]) consumers[fullName] = 0;\r\n consumers[fullName]++;\r\n totalServices++;\r\n });\r\n\r\n var consumersSorted = {};\r\n Object.keys(consumers)\r\n .sort()\r\n .forEach(function (key) {\r\n consumersSorted[key] = consumers[key];\r\n });\r\n\r\n var list = document.getElementById('goalsUL');\r\n if (!list) return;\r\n list.innerHTML = '';\r\n\r\n var names = Object.keys(consumersSorted);\r\n names.forEach(function (name) {\r\n var li = document.createElement('LI');\r\n li.innerText = name + ' - ' + consumers[name];\r\n // li.classList.add('customLink')\r\n list.appendChild(li);\r\n // li.addEventListener(\"click\", event => {\r\n // let consumerid = 34275;\r\n // setActiveModuleSectionAttribute('outcomes');\r\n // actioncenter.dataset.activeModule = \"outcomes\"\r\n // UTIL.toggleMenuItemHighlight(\"outcomes\")\r\n // DOM.clearActionCenter();\r\n // DOM.scrollToTopOfPage();\r\n\r\n // outcomes.dashHandler(consumerid)\r\n //})\r\n totalConsumers++;\r\n });\r\n\r\n var consumerCount = document.getElementById('goalsConsumerCount');\r\n var serviceCount = document.getElementById('goalsCount');\r\n consumerCount.innerText = totalConsumers;\r\n serviceCount.innerText = totalServices;\r\n }\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n var dateInput = input.build({\r\n id: 'goalsWidgetDate',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: goalsWidgetDate,\r\n });\r\n\r\n outcomeDropdown = dropdown.build({\r\n dropdownId: 'goalsWidgetOutcomes',\r\n label: 'Outcome Type',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'goalsWidgetLocations',\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n groupDropdown = dropdown.build({\r\n dropdownId: 'goalsWidgetGroups',\r\n label: 'Group',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(dateInput);\r\n filterPopup.appendChild(outcomeDropdown);\r\n filterPopup.appendChild(locationDropdown);\r\n filterPopup.appendChild(groupDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n\r\n // Set date filter to today\r\n date = document.getElementById('goalsWidgetDate');\r\n date.value = UTIL.getTodaysDate();\r\n goalsWidgetDate = date.value;\r\n filter.date = date.value;\r\n }\r\n\r\n function populateOutcomeTypesFilter(res) {\r\n var dataArr = res.map(function (data) {\r\n return {\r\n id: data.Id,\r\n value: data.Id,\r\n text: data.Description,\r\n };\r\n });\r\n\r\n var defaultOutcome = {\r\n id: '%',\r\n value: '%',\r\n text: 'ALL',\r\n };\r\n dataArr.unshift(defaultOutcome);\r\n\r\n if (!$.session.outcomesWidgetOutcomeTypeId)\r\n $.session.outcomesWidgetOutcomeTypeId = dataArr[0].value;\r\n if (!$.session.outcomesWidgetOutcomeTypeName)\r\n $.session.outcomesWidgetOutcomeTypeName = dataArr[0].text;\r\n\r\n dropdown.populate('goalsWidgetOutcomes', dataArr, $.session.outcomesWidgetOutcomeTypeId);\r\n }\r\n function populateLocationsFilter(res) {\r\n var dataArr = res.map(function (data) {\r\n return {\r\n value: data.ID,\r\n text: data.Name,\r\n };\r\n });\r\n\r\n var defaultLocation = {\r\n id: '%',\r\n value: '%',\r\n text: 'ALL',\r\n };\r\n dataArr.unshift(defaultLocation);\r\n\r\n if (!$.session.outcomeWidgetLocationId) $.session.outcomeWidgetLocationId = dataArr[0].value;\r\n if (!$.session.outcomeWidgetLocationName) $.session.outcomeWidgetLocationName = dataArr[0].text;\r\n\r\n dropdown.populate('goalsWidgetLocations', dataArr, $.session.outcomeWidgetLocationId);\r\n }\r\n function populateGroupsFilter(res) {\r\n var dataArr = res.map(function (data) {\r\n return {\r\n value: data.RetrieveID,\r\n text: data.GroupName,\r\n };\r\n });\r\n\r\n UTIL.findAndSlice(dataArr, 'Caseload', 'text');\r\n UTIL.findAndSlice(dataArr, 'Needs Attention', 'text');\r\n UTIL.findAndSlice(dataArr, 'Everyone', 'text');\r\n\r\n var defaultGroup = {\r\n id: '%',\r\n value: '%',\r\n text: 'EVERYONE',\r\n };\r\n dataArr.unshift(defaultGroup);\r\n\r\n if (!$.session.outcomesWidgetGroupId) $.session.outcomesWidgetGroupId = dataArr[0].value;\r\n if (!$.session.outcomesWidgetGroupName) $.session.outcomesWidgetGroupName = dataArr[0].text; \r\n if (dataArr.find(x => x.value == $.session.outcomesWidgetGroupId) == undefined) $.session.outcomesWidgetGroupId = '%';\r\n dropdown.populate('goalsWidgetGroups', dataArr, $.session.outcomesWidgetGroupId);\r\n }\r\n function eventSetup() {\r\n // for filter values\r\n var oldFilter = {\r\n outcomeType: null,\r\n location: null,\r\n group: null,\r\n date: null,\r\n };\r\n // for session variables\r\n var oldOutcomesWidgetGoalsDate;\r\n var oldOutcomesWidgetOutcomeTypeId;\r\n var oldOutcomesWidgetOutcomeTypeName;\r\n var oldOutcomeWidgetLocationId;\r\n var oldOutcomeWidgetLocationName;\r\n var oldOutcomesWidgetGroupId;\r\n var oldOutcomesWidgetGroupName;\r\n\r\n date.addEventListener('change', event => {\r\n var goalsDate = event.target.value;\r\n oldGoalsDate = goalsWidgetDate;\r\n goalsWidgetDate = goalsDate;\r\n filter.date = goalsWidgetDate;\r\n\r\n // cache old values\r\n oldOutcomesWidgetOutcomeTypeId = $.session.outcomesWidgetOutcomeTypeId;\r\n oldOutcomesWidgetOutcomeTypeName = $.session.outcomesWidgetOutcomeTypeName;\r\n oldOutcomeWidgetLocationId = $.session.outcomeWidgetLocationId;\r\n oldOutcomeWidgetLocationName = $.session.outcomeWidgetLocationName;\r\n oldOutcomesWidgetGroupId = $.session.outcomesWidgetGroupId;\r\n oldOutcomesWidgetGroupName = $.session.outcomesWidgetGroupName;\r\n\r\n //When changing the date - locations get reset, so also reset the ID and Name back to all - which is the default value\r\n OutcomesWidgetOutcomeTypeId = '%';\r\n OutcomesWidgetOutcomeTypeName = 'ALL';\r\n OutcomeWidgetLocationId = '%';\r\n OutcomeWidgetLocationName = 'ALL';\r\n OutcomesWidgetGroupId = '%';\r\n //OutcomesWidgetGroupCode = 'ALL';\r\n OutcomesWidgetGroupName = 'Everyone';\r\n\r\n //absentWidgetAjax.getLocationsForDashboardAbsent(populateAbsentWidgetLocations);\r\n //absentWidgetAjax.getConsumerGroupsForDashboardAbsent(absentWidgetLocationId, populateAbsentWidgetGroups);\r\n });\r\n\r\n outcomeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldFilter.outcomeType = filter.outcomeType;\r\n filter.outcomeType =\r\n selectedOption.value === '%' ? '%' : UTIL.removeDecimals(selectedOption.value);\r\n //For remembering filter values\r\n oldOutcomesWidgetOutcomeTypeId = $.session.outcomesWidgetOutcomeTypeId;\r\n oldOutcomesWidgetOutcomeTypeName = $.session.outcomesWidgetOutcomeTypeName;\r\n $.session.outcomesWidgetOutcomeTypeId = selectedOption.value;\r\n $.session.outcomesWidgetOutcomeTypeName = selectedOption.text;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldFilter.location = filter.location;\r\n filter.location =\r\n selectedOption.value === '%' ? '%' : UTIL.removeDecimals(selectedOption.value);\r\n remainingDailyServicesWidgetAjax.populateGroupsFilter(selectedOption.value, function (groups) {\r\n populateGroupsFilter(groups); \r\n }); \r\n //remainingDailyServicesWidgetAjax.populateFilteredList('%', filter.location, '%')//MIke\r\n //For remembering filter values\r\n oldOutcomeWidgetLocationId = $.session.outcomeWidgetLocationId;\r\n oldOutcomeWidgetLocationName = $.session.outcomeWidgetLocationName;\r\n $.session.outcomeWidgetLocationId = selectedOption.value;\r\n $.session.outcomeWidgetLocationName = selectedOption.text;\r\n });\r\n groupDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldFilter.group = filter.group;\r\n filter.group = selectedOption.value === '%' ? '%' : UTIL.removeDecimals(selectedOption.value);\r\n //For remembering filter values\r\n oldOutcomesWidgetGroupId = $.session.outcomesWidgetGroupId;\r\n oldOutcomesWidgetGroupName = $.session.outcomesWidgetGroupName;\r\n $.session.outcomesWidgetGroupId = selectedOption.value;\r\n $.session.outcomesWidgetGroupName = selectedOption.text;\r\n });\r\n applyFiltersBtn.addEventListener('click', () => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n remainingDailyServicesWidgetAjax.populateFilteredList(\r\n filter.outcomeType,\r\n filter.location,\r\n filter.group,\r\n filter.date, // JMM goalsWidgetDate\r\n function (list) {\r\n populateFilteredList(list);\r\n displayFilteredBy();\r\n },\r\n );\r\n });\r\n cancelFilterBtn.addEventListener('click', () => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n // reset filter values\r\n filter.date = oldFilter.date;\r\n filter.outcomeType = oldFilter.outcomeType;\r\n filter.location = oldFilter.location;\r\n filter.group = oldFilter.group;\r\n // reset session variables\r\n goalsWidgetDate = oldGoalsDate;\r\n $.session.outcomesWidgetgoalsDate = oldOutcomesWidgetGoalsDate;\r\n $.session.outcomesWidgetOutcomeTypeId = oldOutcomesWidgetOutcomeTypeId;\r\n $.session.outcomesWidgetOutcomeTypeName = oldOutcomesWidgetOutcomeTypeName;\r\n $.session.outcomeWidgetLocationId = oldOutcomeWidgetLocationId;\r\n $.session.outcomeWidgetLocationName = oldOutcomeWidgetLocationName;\r\n $.session.outcomesWidgetGroupId = oldOutcomesWidgetGroupId;\r\n $.session.outcomesWidgetGroupName = oldOutcomesWidgetGroupName;\r\n });\r\n }\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n var widgetBodyNav = widget.querySelector('.widget__body-nav');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, widgetBodyNav);\r\n }\r\n\r\n var splitDate = goalsWidgetDate.split('-');\r\n var filteredDate = `${UTIL.leadingZero(splitDate[1])}/${UTIL.leadingZero(\r\n splitDate[2],\r\n )}/${splitDate[0].slice(2, 4)}`;\r\n\r\n $.session.outcomesWidgetgoalsDate = goalsWidgetDate;\r\n filter.date = goalsWidgetDate;\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Date: ${filteredDate}

    \r\n

    Outcome: ${$.session.outcomesWidgetOutcomeTypeName}

    \r\n

    Location: ${$.session.outcomeWidgetLocationName}

    \r\n

    Group: ${$.session.outcomesWidgetGroupName}

    \r\n
    `;\r\n }\r\n\r\n function init() {\r\n widget = document.getElementById('dashgoalswidget');\r\n widgetBody = widget.querySelector('.widget__body');\r\n // append filter button\r\n dashboard.appendFilterButton('dashgoalswidget', 'goalsFilterBtn');\r\n\r\n if ($.session.outcomesWidgetOutcomeTypeId)\r\n filter.outcomeType = $.session.outcomesWidgetOutcomeTypeId;\r\n if ($.session.outcomeWidgetLocationId) filter.location = $.session.outcomeWidgetLocationId;\r\n if ($.session.outcomesWidgetGroupId) filter.group = $.session.outcomesWidgetGroupId;\r\n\r\n buildFilterPopup();\r\n eventSetup();\r\n\r\n remainingDailyServicesWidgetAjax.populateOutcomeTypesFilter(function (outcomes) {\r\n remainingDailyServicesWidgetAjax.populateLocationsFilter(function (locations) {\r\n remainingDailyServicesWidgetAjax.populateGroupsFilter(filter.location, function (groups) {\r\n remainingDailyServicesWidgetAjax.populateFilteredList(\r\n filter.outcomeType,\r\n filter.location,\r\n filter.group,\r\n filter.date,\r\n function (list) {\r\n populateOutcomeTypesFilter(outcomes);\r\n populateLocationsFilter(locations);\r\n populateGroupsFilter(groups);\r\n populateFilteredList(list);\r\n displayFilteredBy();\r\n },\r\n );\r\n });\r\n });\r\n });\r\n }\r\n\r\n return {\r\n filter: filter,\r\n populateOutcomeTypesFilter: populateOutcomeTypesFilter,\r\n populateLocationsFilter: populateLocationsFilter,\r\n populateGroupsFilter: populateGroupsFilter,\r\n populateFilteredList: populateFilteredList,\r\n init: init,\r\n };\r\n})();\r\n\r\n// $.session.outcomesWidgetOutcomeTypeName -All\r\n// $.session.outcomesWidgetLocationName -All\r\n// $.session.outcomesWidgetGroupName -Everyone\r\n","var remainingDailyServicesWidgetAjax = (function() {\r\n\tfunction makeAjaxCall(url, successFunction, outcomeType, locationId, group, checkDate) {\r\n\t\tvar todaydate = UTIL.getTodaysDate();\r\n\t\tvar data = {};\r\n\t\tdata.token = $.session.Token;\r\n\t\tif ($.session.outcomesWidgetOutcomeTypeId != undefined) {\r\n\t\t\tdata.outcomeType = $.session.outcomesWidgetOutcomeTypeId;\r\n\t\t} else {\r\n\t\t\tdata.outcomeType = outcomeType ? outcomeType : '%';\r\n\t\t}\r\n\t\tif ($.session.outcomesWidgetLocationId != undefined) {\r\n\t\t\tdata.locationId = $.session.outcomesWidgetLocationId;\r\n\t\t} else {\r\n\t\t\tdata.locationId = locationId ? locationId : '%';\r\n\t\t}\r\n\t\tif ($.session.outcomesWidgetGroupId != undefined) {\r\n\t\t\tdata.group = $.session.outcomesWidgetGroupId;\r\n\t\t} else {\r\n\t\t\tdata.group = group ? group : '%';\r\n\t\t}\r\n\r\n \t\tif (checkDate != null) {\r\n\t\t\tdata.checkDate = checkDate\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata.checkDate = todaydate;\r\n\t\t}\r\n \r\n\r\n\t\t// data.checkDate = \"2020-03-26\"\r\n\r\n\t/* \tif ($.session.outcomesWidgetgoalsDate != null) {\r\n\t\t\tdata.checkDate = $.session.outcomesWidgetgoalsDate;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata.checkDate = checkDate ? checkDate : todaydate;\r\n\t\t}\r\n */\r\n \r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/' + url + '/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: successFunction,\r\n\t\t});\r\n\t}\r\n\t// Gets data for outcome types filter\r\n\tfunction populateOutcomeTypesFilter(callback) {\r\n\t\tmakeAjaxCall(\r\n\t\t\t'populateOutcomeTypesRemainingServicesWidgetFilter',\r\n\t\t\tfunction(response, status, xhr) {\r\n\t\t\t\tvar res = response.populateOutcomeTypesRemainingServicesWidgetFilterResult;\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tnull\r\n\t\t);\r\n\t}\r\n\t// Gets data for locations filter\r\n\tfunction populateLocationsFilter(callback) {\r\n\t\tmakeAjaxCall(\r\n\t\t\t'populateLocationsRemainingServicesWidgetFilter',\r\n\t\t\tfunction(response, status, xhr) {\r\n\t\t\t\tvar res = response.populateLocationsRemainingServicesWidgetFilterResult;\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tnull\r\n\t\t);\r\n\t}\r\n\t// Gets data for groups filter homeajax 310\r\n\tfunction populateGroupsFilter(locationId, callback) {\r\n\t\tmakeAjaxCall(\r\n\t\t\t'populateGroupsRemainingServicesWidgetFilter',\r\n\t\t\tfunction(response, status, xhr) {\r\n\t\t\t\tvar res = response.populateGroupsRemainingServicesWidgetFilterResult;\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\tnull,\r\n\t\t\tlocationId,\r\n\t\t\tnull,\r\n\t\t\tnull\r\n\t\t);\r\n\t}\r\n\t// Gets List of Consumers based off filtering\r\n\tfunction populateFilteredList(outcomeType, locationId, group, checkDate, callback) {\r\n\t\t//populateGroupsFilter(locationId);\r\n\t\tmakeAjaxCall(\r\n\t\t\t'remainingServicesWidgetFilter',\r\n\t\t\tfunction(response, status, xhr) {\r\n\t\t\t\tvar res = response.remainingServicesWidgetFilterResult;\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\toutcomeType,\r\n\t\t\tlocationId,\r\n\t\t\tgroup,\r\n\t\t\tcheckDate\r\n\t\t);\r\n\t}\r\n\r\n\treturn {\r\n\t\tpopulateOutcomeTypesFilter: populateOutcomeTypesFilter,\r\n\t\tpopulateLocationsFilter: populateLocationsFilter,\r\n\t\tpopulateGroupsFilter: populateGroupsFilter,\r\n\t\tpopulateFilteredList: populateFilteredList,\r\n\t};\r\n})();\r\n","var schedule = (function () {\r\n // DATA\r\n //-----------------------\r\n var locations = [];\r\n var weeks;\r\n var scheduleObj;\r\n // DOM\r\n //-----------------------\r\n var initialLoad;\r\n var widget;\r\n var widgetBody;\r\n var filterPopup;\r\n var weeksDropdown;\r\n var locationDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n // VALUES\r\n //-----------------------\r\n var totalHours;\r\n var selectedWeek;\r\n var selectedStart;\r\n var selectedEnd;\r\n\r\n function buildScheduleObj(results) {\r\n scheduleObj = {};\r\n results.forEach(r => {\r\n var location = r.location;\r\n var date = r.service_date.split(' ')[0];\r\n date = UTIL.formatDateToIso(date);\r\n var hours = r.difftime;\r\n var start = r.start_time;\r\n var end = r.end_time;\r\n var timeSpan = `${start} - ${end}`;\r\n var initials = r.initials.trim();\r\n\r\n if (locations.indexOf(location) === -1) {\r\n locations.push(location);\r\n }\r\n\r\n if (!scheduleObj[location]) {\r\n scheduleObj[location] = {};\r\n }\r\n if (!scheduleObj[location][date]) {\r\n scheduleObj[location][date] = {};\r\n }\r\n if (!scheduleObj[location][date][timeSpan]) {\r\n scheduleObj[location][date][timeSpan] = {\r\n initials: [],\r\n time: parseFloat(hours),\r\n };\r\n }\r\n if (initials !== '') {\r\n scheduleObj[location][date][timeSpan].initials.push(initials);\r\n }\r\n });\r\n if (results.length === 0) {\r\n scheduleObj = {};\r\n }\r\n }\r\n\r\n function populateSchedule(filterBy) {\r\n var filteredData = [];\r\n var dataByDate = {};\r\n totalHours = 0; //setting to 0 here so that it clears out when there is no schedule and so it doesn't keep getting appended to\r\n\r\n if (filterBy === 'All') {\r\n Object.keys(scheduleObj).forEach(key => {\r\n filteredData.push({\r\n data: scheduleObj[key],\r\n name: key,\r\n });\r\n });\r\n } else {\r\n filteredData.push({ data: scheduleObj[filterBy], name: filterBy });\r\n }\r\n\r\n if (filteredData.length !== 0 && filteredData[0].data !== undefined) {\r\n filteredData.forEach(d => {\r\n var locationDates = d.data;\r\n var locationName = d.name;\r\n Object.keys(locationDates).forEach(date => {\r\n var locationDateEvents = locationDates[date];\r\n if (!dataByDate[date]) {\r\n dataByDate[date] = {};\r\n }\r\n var timeKeys = Object.keys(d.data[date]);\r\n timeKeys.forEach(key => {\r\n totalHours = totalHours + d.data[date][key].time;\r\n });\r\n\r\n Object.keys(locationDateEvents)\r\n .sort()\r\n .forEach(event => {\r\n if (!dataByDate[date][event]) {\r\n dataByDate[date][event] = {};\r\n }\r\n\r\n dataByDate[date][event][locationName] = locationDateEvents[event];\r\n });\r\n });\r\n });\r\n }\r\n\r\n scheduleList.innerHTML = '';\r\n var divOne = document.createElement('div');\r\n divOne.classList.add('totalHours');\r\n divOne.innerHTML = `

    Total Hours - ${totalHours.toFixed(2)}

    `;\r\n var divTwo = document.createElement('div');\r\n divTwo.innerHTML = `

    Week of ${selectedWeek}

    `;\r\n divTwo.classList.add('weekOf');\r\n\r\n var dates = Object.keys(dataByDate);\r\n dates.sort();\r\n dates.forEach(date => {\r\n var fullDate = moment(date).format('dddd, MMMM D');\r\n var div = document.createElement('div');\r\n div.classList.add('scheduleRow');\r\n div.innerHTML = `

    ${fullDate}

    `;\r\n\r\n // get times for specified date\r\n var times = Object.keys(dataByDate[date]);\r\n times.sort().forEach(timeFrame => {\r\n var times = timeFrame.split(' - ');\r\n var start = times[0].split(':');\r\n var end = times[1].split(':');\r\n var startTime = moment().hour(parseInt(start[0], 10)).minute(parseInt(start[1], 10));\r\n var endTime = moment().hour(parseInt(end[0], 10)).minute(parseInt(end[1], 10));\r\n\r\n var locations = Object.keys(dataByDate[date][timeFrame]).sort();\r\n\r\n locations.forEach(location => {\r\n var initials = dataByDate[date][timeFrame][location].initials;\r\n initials = initials.length > 0 ? initials.join(', ') : '';\r\n\r\n div.innerHTML += `\r\n

    ${startTime.format('h:mma')} to ${endTime.format('h:mma')} - ${location}${\r\n initials !== '' ? ` - ${initials}` : ''\r\n }

    \r\n `;\r\n });\r\n });\r\n\r\n scheduleList.appendChild(div);\r\n });\r\n\r\n scheduleList.insertBefore(divOne, scheduleList.childNodes[0]);\r\n scheduleList.insertBefore(divTwo, scheduleList.childNodes[0]);\r\n\r\n // initialLoad = false;\r\n }\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n weeksDropdown = dropdown.build({\r\n dropdownId: 'dashboardScheduleWeekDropdown',\r\n label: 'Weeks',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'dashboardScheduleLocationDropdown',\r\n label: 'Locations',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(weeksDropdown);\r\n filterPopup.appendChild(locationDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n function eventSetup() {\r\n var oldSelectedWeek;\r\n var oldSelectedStart;\r\n var oldSelectedEnd;\r\n var oldMyscheduleWidgetLocationText;\r\n\r\n weeksDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n var date = selectedOption.value.split(' - ');\r\n oldSelectedWeek = selectedWeek;\r\n oldSelectedStart = selectedStart;\r\n oldSelectedEnd = selectedEnd;\r\n selectedWeek = event.target.value;\r\n selectedStart = date[0];\r\n selectedEnd = date[1];\r\n });\r\n\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldMyscheduleWidgetLocationText = $.session.myscheduleWidgetLocationText;\r\n $.session.myscheduleWidgetLocationText = selectedOption.value;\r\n });\r\n applyFiltersBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n scheduleAjax.getSchedulingPeriodsDetailsAjax(\r\n {\r\n token: $.session.Token,\r\n startDate: UTIL.formatDateToIso(selectedStart),\r\n endDate: UTIL.formatDateToIso(selectedEnd),\r\n },\r\n function (results) {\r\n buildScheduleObj(results);\r\n populateLocationDropdown();\r\n displayFilteredBy();\r\n populateSchedule($.session.myscheduleWidgetLocationText);\r\n },\r\n );\r\n });\r\n cancelFilterBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n $.session.myscheduleWidgetLocationText = oldMyscheduleWidgetLocationText;\r\n selectedWeek = oldSelectedWeek;\r\n selectedStart = oldSelectedStart;\r\n selectedEnd = oldSelectedEnd;\r\n });\r\n }\r\n function populateLocationDropdown() {\r\n var data = locations.map(location => {\r\n return {\r\n value: location,\r\n text: location,\r\n };\r\n });\r\n\r\n data.unshift({ value: 'All', text: 'All' });\r\n data.sort();\r\n\r\n if ($.session.myscheduleWidgetLocationText) {\r\n data = data.filter(d => d.value !== $.session.myscheduleWidgetLocationText);\r\n data.unshift({\r\n value: $.session.myscheduleWidgetLocationText,\r\n text: $.session.myscheduleWidgetLocationText,\r\n });\r\n } else {\r\n $.session.myscheduleWidgetLocationText = data[0].value;\r\n }\r\n\r\n dropdown.populate(\r\n 'dashboardScheduleLocationDropdown',\r\n data,\r\n $.session.myscheduleWidgetLocationText,\r\n );\r\n }\r\n function populateWeeksDropdown(results) {\r\n weeks = results;\r\n\r\n let defaultValue;\r\n\r\n var data = results.map(r => {\r\n if (r.currentWeek) {\r\n defaultValue = r.text;\r\n selectedWeek = r.text;\r\n selectedStart = r.start;\r\n selectedEnd = r.end;\r\n }\r\n\r\n return {\r\n value: r.text,\r\n text: r.text,\r\n };\r\n });\r\n\r\n if (!defaultValue) {\r\n selectedWeek = data[0].text;\r\n selectedStart = results[0].start;\r\n selectedEnd = results[0].end;\r\n }\r\n\r\n dropdown.populate('dashboardScheduleWeekDropdown', data, defaultValue);\r\n }\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, scheduleList);\r\n }\r\n\r\n var splitDate = selectedWeek.split('-');\r\n var start = splitDate[0].trim().split('/');\r\n var end = splitDate[1].trim().split('/');\r\n start = `${UTIL.leadingZero(start[0])}/${UTIL.leadingZero(start[1])}/${start[2].slice(2, 4)}`;\r\n end = `${UTIL.leadingZero(end[0])}/${UTIL.leadingZero(end[1])}/${end[2].slice(2, 4)}`;\r\n var filteredDate = `${start} - ${end}`;\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Weeks: ${filteredDate}

    \r\n

    Location: ${$.session.myscheduleWidgetLocationText}

    \r\n
    `;\r\n }\r\n\r\n function init() {\r\n widget = document.getElementById('dashschedulewidget');\r\n widgetBody = widget.querySelector('.widget__body');\r\n scheduleList = document.getElementById('scheduleWorkedLists');\r\n\r\n if (!$.session.myscheduleWidgetLocationText) $.session.myscheduleWidgetLocationText = 'All';\r\n\r\n dashboard.appendFilterButton('dashschedulewidget', 'scheduleFilterBtn');\r\n\r\n buildFilterPopup();\r\n eventSetup();\r\n\r\n scheduleAjax.getSchedulingPeriodsAjax(function (results) {\r\n populateWeeksDropdown(results);\r\n\r\n scheduleAjax.getSchedulingPeriodsDetailsAjax(\r\n {\r\n token: $.session.Token,\r\n startDate: UTIL.formatDateToIso(selectedStart),\r\n endDate: UTIL.formatDateToIso(selectedEnd),\r\n },\r\n function (results) {\r\n buildScheduleObj(results);\r\n populateLocationDropdown();\r\n displayFilteredBy();\r\n populateSchedule($.session.myscheduleWidgetLocationText);\r\n },\r\n );\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var scheduleAjax = (function () {\r\n function getSchedulingPeriodsAjax(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSchedulingPeriods/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSchedulingPeriodsResult;\r\n var data = res.map(r => {\r\n var start = r.start_date.split(' ')[0];\r\n var end = r.end_date.split(' ')[0];\r\n var text = `${start} - ${end}`;\r\n return {\r\n start,\r\n end,\r\n text,\r\n currentWeek: r.is_curr_date === '1' ? true : false,\r\n };\r\n });\r\n callback(data);\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error);\r\n },\r\n });\r\n }\r\n\r\n function getSchedulingPeriodsDetailsAjax(filterData, callback) {\r\n //Filter data to include token, startDate, endDate\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSchedulingPeriodsDetails/',\r\n data: JSON.stringify(filterData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSchedulingPeriodsDetailsResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getSchedulingPeriodsAjax,\r\n getSchedulingPeriodsDetailsAjax,\r\n };\r\n})();\r\n","const signatureWidget = (function () {\r\n let missingSignatureData;\r\n let locationDropdownData;\r\n let groupDropdownData;\r\n // cached data\r\n let signaturePlanStatus;\r\n let signatureWidgetGroupId;\r\n let signatureWidgetGroupName;\r\n let signatureWidgetGroupCode;\r\n let signatureWidgetLocationId;\r\n let signatureWidgetLocationName;\r\n // DOM\r\n //-----------------------\r\n let widget;\r\n let widgetBody;\r\n let missingSignaturesList;\r\n let filterPopup;\r\n let applyFiltersBtn;\r\n let cancelFilterBtn;\r\n let planStatusDropdown;\r\n let locationDropdown;\r\n let groupDropdown;\r\n\r\n function populatePlanStatusDropdown() {\r\n var data = [\r\n { value: '%', text: 'All' },\r\n { value: 'D', text: 'Draft' },\r\n { value: 'C', text: 'Complete' },\r\n ];\r\n\r\n dropdown.populate(planStatusDropdown, data, signaturePlanStatus);\r\n }\r\n function populateLocationDropdown(locData) {\r\n locData = locData ? locData : locationDropdownData;\r\n\r\n const dropdownData = locData.map(data => {\r\n return {\r\n value: data.ID,\r\n text: data.Name,\r\n };\r\n });\r\n\r\n const defaultLocation = {\r\n id: '%',\r\n value: '%',\r\n text: 'ALL',\r\n };\r\n dropdownData.unshift(defaultLocation);\r\n\r\n dropdown.populate(locationDropdown, dropdownData, signatureWidgetLocationId);\r\n }\r\n function populateGroupDropdown(groupData) {\r\n groupData = groupData ? groupData : groupDropdownData;\r\n\r\n const dropdownData = groupData.map(function (data) {\r\n return {\r\n //value: data.RetrieveID,\r\n value: data.GroupCode,\r\n text: data.GroupName,\r\n };\r\n });\r\n\r\n // UTIL.findAndSlice(dropdownData, 'Caseload', 'text');\r\n // UTIL.findAndSlice(dropdownData, 'Needs Attention', 'text');\r\n // UTIL.findAndSlice(dropdownData, 'Everyone', 'text');\r\n\r\n // const defaultGroup = {\r\n // id: '%',\r\n // value: '%',\r\n // text: 'EVERYONE',\r\n // };\r\n // dropdownData.unshift(defaultGroup);\r\n\r\n dropdown.populate(groupDropdown, dropdownData, signatureWidgetGroupCode);\r\n }\r\n\r\n function splitName(fullName) {\r\n const [last, first] = fullName.split(', ');\r\n return { first, last };\r\n }\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n planStatusDropdown = dropdown.build({\r\n dropdownId: 'missingSignaturesPlanStatus',\r\n label: 'Plan Status',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'missingSignaturesLocation',\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n // groupDropdown = dropdown.build({\r\n // dropdownId: 'missingSignaturesGroup',\r\n // label: 'Group',\r\n // style: 'secondary',\r\n // readonly: false,\r\n // });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(planStatusDropdown);\r\n filterPopup.appendChild(locationDropdown);\r\n //filterPopup.appendChild(groupDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n\r\n populatePlanStatusDropdown();\r\n }\r\n function eventSetup() {\r\n let oldSignaturePlanStatus;\r\n let oldSignatureWidgetGroupId;\r\n let oldSignatureWidgetGroupName;\r\n let oldSignatureWidgetGroupCode;\r\n let oldSignatureWidgetLocationId;\r\n let oldSignatureWidgetLocationName;\r\n\r\n planStatusDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n // cache\r\n oldSignaturePlanStatus = signaturePlanStatus;\r\n // update\r\n signaturePlanStatus = selectedOption.value;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n // cache\r\n oldSignatureWidgetLocationId = signatureWidgetLocationId;\r\n oldSignatureWidgetLocationName = signatureWidgetLocationName;\r\n // update\r\n signatureWidgetLocationId = selectedOption.value;\r\n signatureWidgetLocationName = selectedOption.innerHTML;\r\n });\r\n // groupDropdown.addEventListener('change', event => {\r\n // const selectedOption = event.target.options[event.target.selectedIndex];\r\n // // cache\r\n // oldSignatureWidgetGroupId = signatureWidgetGroupId;\r\n // oldSignatureWidgetGroupCode = signatureWidgetGroupCode;\r\n // oldSignatureWidgetGroupName = signatureWidgetGroupName;\r\n // // update\r\n // signatureWidgetGroupId = selectedOption.value;\r\n // signatureWidgetGroupCode = selectedOption.id;\r\n // signatureWidgetGroupName = selectedOption.innerHTML;\r\n // });\r\n applyFiltersBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n filteredSignatures = missingSignatureData.filter(ms => {\r\n return (\r\n (ms.planStatus === signaturePlanStatus || signaturePlanStatus === '%') &&\r\n (ms.locationId.includes(signatureWidgetLocationId) || signatureWidgetLocationId === '%')\r\n );\r\n });\r\n populateMissingSignatures(filteredSignatures);\r\n displayFilteredBy();\r\n });\r\n cancelFilterBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n signaturePlanStatus = oldSignaturePlanStatus;\r\n signatureWidgetGroupId = oldSignatureWidgetGroupId;\r\n signatureWidgetGroupName = oldSignatureWidgetGroupName;\r\n signatureWidgetGroupCode = oldSignatureWidgetGroupCode;\r\n });\r\n }\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, missingSignaturesList);\r\n }\r\n\r\n const statusName =\r\n signaturePlanStatus === '%' ? 'All' : signaturePlanStatus === 'D' ? 'Draft' : 'Complete';\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Plan Status: ${statusName}

    \r\n

    Location: ${signatureWidgetLocationName}

    \r\n \r\n
    `;\r\n }\r\n\r\n function populateMissingSignatures(data) {\r\n const tableOptions = {\r\n plain: true,\r\n columnHeadings: ['Individual', 'PY Start Date', 'Plan Type'],\r\n tableId: 'missingSignaturesWidgetTable',\r\n };\r\n\r\n const tableData = [];\r\n\r\n data.sort((a, b) => {\r\n const aname = splitName(a.individual);\r\n const bname = splitName(b.individual);\r\n\r\n if (aname.last !== bname.last) {\r\n return aname.last.localeCompare(bname.last);\r\n }\r\n if (aname.first !== bname.first) {\r\n return aname.first.localeCompare(bname.first);\r\n }\r\n const aDate = new Date(a.planYearStart).getTime();\r\n const bDate = new Date(b.planYearStart).getTime();\r\n return aDate < bDate ? -1 : 1;\r\n });\r\n data.forEach(d => {\r\n //if (\r\n // (d.planStatus === signaturePlanStatus || signaturePlanStatus === '%') &&\r\n // (d.locationId.includes(signatureWidgetLocationId) || signatureWidgetLocationId === '%')\r\n //) {\r\n const type = d.planType === 'A' ? 'Annual' : 'Revision';\r\n const startDate = d.planYearStart.split(' ')[0];\r\n const endDate = d.planYearEnd.split(' ')[0];\r\n const effectiveStart = d.effectiveStart.split(' ')[0];\r\n const effectiveEnd = d.effectiveEnd.split(' ')[0];\r\n const reviewDate = d.reviewDate ? d.reviewDate.split(' ')[0] : 'n/a';\r\n const revisionNumber = d.revisionNumber ? d.revisionNumber : '';\r\n const locationID = d.locationId;\r\n\r\n const planType = d.planType === 'R' ? `${type} ${revisionNumber}` : type;\r\n\r\n const individual = d.individual;\r\n const { first, last } = splitName(individual);\r\n\r\n tableData.push({\r\n values: [individual, startDate, planType],\r\n onClick: async () => {\r\n if ($.session.applicationName === 'Advisor') {\r\n const newId = await planAjax.getConsumerPeopleIdAsync(d.consumerId);\r\n if (newId.length) {\r\n $.session.planPeopleId = newId[0].id;\r\n plan.setSelectedConsumer({\r\n id: $.session.planPeopleId,\r\n consumerId: d.consumerId,\r\n firstName: first,\r\n lastName: last,\r\n });\r\n } else {\r\n plan.setSelectedConsumer({\r\n id: d.consumerId,\r\n firstName: first,\r\n lastName: last,\r\n });\r\n }\r\n } else {\r\n plan.setSelectedConsumer({\r\n id: d.consumerId,\r\n firstName: first,\r\n lastName: last,\r\n });\r\n }\r\n\r\n plan.setPlanId(d.planID);\r\n plan.setPlanType(d.planType.toLowerCase());\r\n plan.setPlanStatus(d.planStatus);\r\n plan.setRevisionNumber(d.revisionNumber);\r\n plan.setPlanActiveStatus(d.activeStatus);\r\n\r\n planDates.setReviewPlanDates({\r\n startDate: new Date(startDate),\r\n endDate: new Date(endDate),\r\n effectiveStart: new Date(effectiveStart),\r\n effectiveEnd: new Date(effectiveEnd),\r\n reviewDate: new Date(reviewDate),\r\n });\r\n\r\n $.loadedApp = 'plan';\r\n setActiveModuleAttribute('plan');\r\n DOM.scrollToTopOfPage();\r\n //document.body.classList.add('planActive');\r\n //DOM.clearActionCenter();\r\n //setActiveModuleSectionAttribute('plan-questionsAndAnswers');\r\n UTIL.toggleMenuItemHighlight('plan');\r\n plan.buildPlanPage(['a']);\r\n },\r\n });\r\n //}\r\n });\r\n\r\n const sigTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = sigTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Individual\r\n headers[1].setAttribute('data-type', 'date'); // PY Start Date \r\n headers[2].setAttribute('data-type', 'string'); // Plan Type\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(sigTable);\r\n\r\n table.populate(sigTable, tableData);\r\n missingSignaturesList.innerHTML = '';\r\n missingSignaturesList.appendChild(sigTable);\r\n }\r\n\r\n function init() {\r\n // if (!signaturePlanStatus) signaturePlanStatus = '%';\r\n // if (!signatureWidgetGroupId) signatureWidgetGroupId = '0';\r\n // if (!signatureWidgetGroupName) signatureWidgetGroupName = 'Everyone';\r\n // if (!signatureWidgetGroupCode) signatureWidgetGroupCode = 'ALL';\r\n // if (!signatureWidgetLocationId) signatureWidgetLocationId = '%';\r\n // if (!signatureWidgetLocationName) signatureWidgetLocationName = 'ALL';\r\n signaturePlanStatus = '%';\r\n signatureWidgetGroupId = '0';\r\n signatureWidgetGroupName = 'Everyone';\r\n signatureWidgetGroupCode = 'ALL';\r\n signatureWidgetLocationId = '%';\r\n signatureWidgetLocationName = 'ALL';\r\n\r\n widget = document.getElementById('dashmissingsignatures');\r\n widgetBody = widget.querySelector('.widget__body');\r\n missingSignaturesList = document.querySelector('.missingSignatures');\r\n\r\n // append filter button\r\n dashboard.appendFilterButton('dashmissingsignatures', 'missingSignaturesFilterBtn');\r\n\r\n buildFilterPopup();\r\n displayFilteredBy();\r\n eventSetup();\r\n\r\n missingSignatureAjax.getMissingPlanSignatures({ token: $.session.Token }, async res => {\r\n missingSignatureData = res;\r\n populateMissingSignatures(missingSignatureData);\r\n locationDropdownData = await missingSignatureAjax.getLocationDropdownData();\r\n // groupDropdownData = await missingSignatureAjax.getGroupsDropdownData(\r\n // signatureWidgetLocationId,\r\n // );\r\n populateLocationDropdown(locationDropdownData);\r\n //populateGroupDropdown(groupDropdownData);\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const missingSignatureAjax = (function () {\r\n function getMissingPlanSignatures(retrieveData, callback) {\r\n // This function is not async bc it needs to work with other\r\n // dashboard functions that are not async,\r\n // if you refactor this you refactor all\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getMissingPlanSignatures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getMissingPlanSignaturesResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n async function getLocationDropdownData() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/populateLocationsRemainingServicesWidgetFilter/',\r\n data: JSON.stringify({ token: $.session.Token }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.populateLocationsRemainingServicesWidgetFilterResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function getGroupsDropdownData(locationId) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/populateGroupsRemainingServicesWidgetFilter/',\r\n data: JSON.stringify({ token: $.session.Token, locationId: locationId }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.populateGroupsRemainingServicesWidgetFilterResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getMissingPlanSignatures,\r\n getLocationDropdownData,\r\n getGroupsDropdownData,\r\n };\r\n})();\r\n","var timeClock = (function() {\r\n\t// DOM elements\r\n\tvar widget;\r\n\tvar widgetResults;\r\n\tvar clockInOutBtn;\r\n\tvar rowdataPopup;\r\n\t// Data & Values\r\n\tvar currentLocationId;\r\n\tvar currentStartTime;\r\n\tvar currentEndTime;\r\n\r\n\tfunction giveInvalidTimeError() {\r\n\t\tvar timeError = document.createElement('p');\r\n\t\ttimeError.style.color = 'red';\r\n\t\ttimeError.innerHTML = $.session.timeClockError;\r\n\t\twidgetError.appendChild(timeError);\r\n\t\t$.session.timeClockError = '';\r\n\t}\r\n\tfunction punchClock(event) {\r\n\t\tvar btn = event.target;\r\n\t\tswitch (btn.dataset.clockAction) {\r\n\t\t\tcase 'in':\r\n\t\t\t\ttimeClockAjax.clockInStaff();\r\n\t\t\t\tbtn.innerHTML = 'Clock Out';\r\n\t\t\t\tbtn.setAttribute('data-clock-action', 'out');\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'out':\r\n\t\t\t\ttimeClockAjax.clockOutStaff();\r\n\t\t\t\tbtn.innerHTML = 'Clock In';\r\n\t\t\t\tbtn.setAttribute('data-clock-action', 'in');\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tfunction updateStaffTimeClock(data) {\r\n\t\tvar updateKeys = [];\r\n\t\tvar newLocationData = data.newLocationData;\r\n\t\tvar newStartTimeData = data.newStartTimeData;\r\n\t\tvar newEndTimeData = data.newEndTimeData;\r\n\t\tvar currentStartTime = data.data.startTime;\r\n\t\tvar currentEndTime = data.data.stopTime;\r\n\t\tif (newLocationData) {\r\n\t\t\tvar newLocationId = newLocationData.loc;\r\n\r\n\t\t\tif (newLocationId !== currentLocationId) {\r\n\t\t\t\tif (newStartTimeData) newStartTimeData.loc = newLocationId;\r\n\t\t\t\tif (newEndTimeData) newEndTimeData.loc = newLocationId;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//if (newStartTimeData) newEndTimeData.orgTime = newStartTimeData.newTime;\r\n\r\n\t\tif (newLocationData) updateKeys.push('newLocationData');\r\n\t\tif (newStartTimeData) {\r\n\t\t\tif (currentEndTime && newStartTimeData.newTime > currentEndTime) {\r\n\t\t\t\t$.session.timeClockError = 'Invald Time';\r\n\t\t\t\tgiveInvalidTimeError();\r\n\t\t\t\t//return\r\n\t\t\t} else {\r\n\t\t\t\tupdateKeys.push('newStartTimeData');\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (newEndTimeData) {\r\n\t\t\tif (newEndTimeData.newTime < currentStartTime) {\r\n\t\t\t\t$.session.timeClockError = 'Invald Time';\r\n\t\t\t\tgiveInvalidTimeError();\r\n\t\t\t\t//return\r\n\t\t\t} else {\r\n\t\t\t\tupdateKeys.push('newEndTimeData');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tswitch (updateKeys.length) {\r\n\t\t\tcase 1: {\r\n\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[0]], () => {\r\n\t\t\t\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 2: {\r\n\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[0]], () => {\r\n\t\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[1]], () => {\r\n\t\t\t\t\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 3: {\r\n\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[0]], () => {\r\n\t\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[1]], () => {\r\n\t\t\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[2]], () => {\r\n\t\t\t\t\t\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tfunction populateLocationsDropdown(description) {\r\n\t\tvar defaultLocation;\r\n\t\t// prepare locations data for dropdown\r\n\t\tvar locations = $.session.locations\r\n\t\t\t.map((location, index) => {\r\n\t\t\t\tif (location === description) {\r\n\t\t\t\t\tdefaultLocation = {\r\n\t\t\t\t\t\tid: $.session.locationids[index],\r\n\t\t\t\t\t\tvalue: location,\r\n\t\t\t\t\t\ttext: location,\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: $.session.locationids[index],\r\n\t\t\t\t\tvalue: location,\r\n\t\t\t\t\ttext: location,\r\n\t\t\t\t};\r\n\t\t\t})\r\n\t\t\t.filter(loc => {\r\n\t\t\t\treturn loc.value !== description;\r\n\t\t\t});\r\n\r\n\t\tlocations.unshift(defaultLocation);\r\n\r\n\t\tdropdown.populate('timeClockLocations', locations);\r\n\t}\r\n\tfunction displayRowData(data) {\r\n\t\treadOnly = false;\r\n\t\tcurrentLocationId = data.locationId;\r\n\t\tcurrentStartTime = data.startTime;\r\n\t\tcurrentEndTime = data.stopTime;\r\n\t\tvar newLocationData;\r\n\t\tvar newStartTimeData;\r\n\t\tvar newEndTimeData;\r\n\r\n\t\tvar rowId = data.rowId;\r\n var locationId = data.locationId;\r\n \r\n if ($.session.DenyStaffClockUpdate === true) {\r\n readOnly = true;\r\n } else {\r\n readOnly = false;\r\n }\r\n\r\n rowdataPopup = POPUP.build({ classNames: ['timeClockRowDetailsPopup']});\r\n\r\n\t\t// build popup inner html\r\n\t\tvar locationsDropdown = dropdown.build({\r\n\t\t\tdropdownId: 'timeClockLocations',\r\n\t\t\tlabel: 'Locations',\r\n\t\t\tstyle: 'secondary'\r\n\t\t});\r\n\t\tvar startTimeInput = input.build({\r\n\t\t\tid: 'timeClockStartTime',\r\n\t\t\tlabel: 'Start Time',\r\n\t\t\ttype: 'time',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\treadonly: readOnly,\r\n\t\t\tvalue: data.startTime,\r\n\t\t});\r\n\t\tvar endTimeInput = input.build({\r\n\t\t\tid: 'timeClockEndTime',\r\n\t\t\tlabel: 'End Time',\r\n\t\t\ttype: 'time',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\treadonly: readOnly,\r\n\t\t\tvalue: data.stopTime,\r\n\t\t});\r\n\t\tvar applyChanges = button.build({\r\n\t\t\ttext: 'Apply Changes',\r\n\t\t\tstyle: 'secondary',\r\n type: 'contained',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tPOPUP.hide(rowdataPopup);\r\n\t\t\t\tupdateStaffTimeClock({ newLocationData, newStartTimeData, newEndTimeData, data });\r\n\t\t\t},\r\n\t\t});\r\n\t\tvar deleteEntry = button.build({\r\n\t\t\ttext: 'Delete Entry',\r\n\t\t\tstyle: 'secondary',\r\n type: 'contained',\r\n classNames: 'deleteTimeBtn',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tshowTimeClockDeleteWarning(data);\r\n\t\t\t},\r\n });\r\n \r\n\t\tvar timeWrap = document.createElement('div');\r\n\t\ttimeWrap.classList.add('timeWrap');\r\n\t\ttimeWrap.appendChild(startTimeInput);\r\n timeWrap.appendChild(endTimeInput);\r\n \r\n var btnWrap = document.createElement('div');\r\n\t\tbtnWrap.classList.add('btnWrap');\r\n\t\tbtnWrap.appendChild(applyChanges);\r\n btnWrap.appendChild(deleteEntry);\r\n\r\n\r\n\t\trowdataPopup.appendChild(locationsDropdown);\r\n\t\trowdataPopup.appendChild(timeWrap);\r\n\t\trowdataPopup.appendChild(btnWrap);\r\n\r\n\t\tPOPUP.show(rowdataPopup);\r\n\t\tpopulateLocationsDropdown(data.description);\r\n\r\n\t\t// popup events\r\n\t\tfunction showTimeClockDeleteWarning(data) {\r\n\t\t\tPOPUP.hide(rowdataPopup);\r\n\t\t\tvar timeClockDeleteWarningPop = POPUP.build({\r\n\t\t\t\theader: 'Are you sure you want to delete this entry?',\r\n\t\t\t});\r\n\r\n\t\t\tvar btnWrap = document.createElement('div');\r\n\t\t\tbtnWrap.classList.add('btnWrap');\r\n\t\t\tvar yesBtn = button.build({\r\n\t\t\t\ttext: 'Yes',\r\n\t\t\t\tstyle: 'secondary',\r\n\t\t\t\ttype: 'contained',\r\n\t\t\t\tcallback: function() {\r\n\t\t\t\t\ttimeClockAjax.updateStaffClockTime(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tloc: locationId,\r\n\t\t\t\t\t\t\torgTime: data.startTime,\r\n\t\t\t\t\t\t\tnewTime: data.startTime,\r\n\t\t\t\t\t\t\tisStartTime: 3,\r\n\t\t\t\t\t\t\tcheckedAgainstTime: '',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t\tPOPUP.hide(timeClockDeleteWarningPop);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\tvar noBtn = button.build({\r\n\t\t\t\ttext: 'No',\r\n\t\t\t\tstyle: 'secondary',\r\n\t\t\t\ttype: 'contained',\r\n\t\t\t\tcallback: function() {\r\n\t\t\t\t\tPOPUP.hide(timeClockDeleteWarningPop);\r\n\t\t\t\t\tPOPUP.show(rowdataPopup);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tbtnWrap.appendChild(yesBtn);\r\n\t\t\tbtnWrap.appendChild(noBtn);\r\n\t\t\ttimeClockDeleteWarningPop.appendChild(btnWrap);\r\n\r\n\t\t\tPOPUP.show(timeClockDeleteWarningPop);\r\n\t\t}\r\n\r\n\t\tlocationsDropdown.addEventListener('change', event => {\r\n\t\t\tvar selectedOption = event.target.options[event.target.selectedIndex];\r\n\t\t\tnewLocationData = {\r\n\t\t\t\tloc: selectedOption.id,\r\n\t\t\t\torgTime: data.startTime,\r\n\t\t\t\tnewTime: data.startTime,\r\n\t\t\t\tisStartTime: 2,\r\n\t\t\t\tcheckedAgainstTime: '',\r\n\t\t\t};\r\n\t\t});\r\n\t\tstartTimeInput.addEventListener('change', event => {\r\n\t\t\tnewStartTimeData = {\r\n\t\t\t\tloc: data.locationId,\r\n\t\t\t\torgTime: data.startTime,\r\n\t\t\t\tnewTime: `${event.target.value}:00`,\r\n\t\t\t\tisStartTime: 0,\r\n\t\t\t\tcheckedAgainstTime: '',\r\n\t\t\t};\r\n\t\t});\r\n\t\tendTimeInput.addEventListener('change', event => {\r\n\t\t\tnewEndTimeData = {\r\n\t\t\t\tloc: data.locationId,\r\n\t\t\t\torgTime: data.startTime,\r\n\t\t\t\tnewTime: `${event.target.value}:00`,\r\n\t\t\t\tisStartTime: 1,\r\n\t\t\t\tcheckedAgainstTime: '',\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\tfunction processStaffActivity(results) {\r\n\t\tvar lastClockOutTime;\r\n widgetResults.innerHTML = '';\r\n widgetError.innerHTML = '';\r\n\t\tif ($.session.timeClockError) giveInvalidTimeError();\r\n\t\tresults.forEach((r, index) => {\r\n\t\t\tvar staffId = r.Staff_ID;\r\n\t\t\tvar locationId = r.Location_ID;\r\n\t\t\tvar locationCode = r.location_code;\r\n\t\t\tvar startTime = r.Start_Time === '23:59:59' ? '00:00:00' : r.Start_Time;\r\n\t\t\tvar stopTime = r.Stop_Time === '23:59:59' ? '00:00:00' : r.Stop_Time;\r\n\t\t\tvar serviceDate = r.Service_Date.split(' ')[0];\r\n\t\t\tvar description = r.Description;\r\n\r\n\t\t\tvar resultsRow = document.createElement('div');\r\n\t\t\tresultsRow.classList.add('results-row');\r\n\t\t\tresultsRow.setAttribute('data-row-id', index);\r\n\t\t\tresultsRow.innerHTML = `\r\n
    ${description}
    \r\n
    ${UTIL.convertFromMilitary(startTime)}
    \r\n
    ${UTIL.convertFromMilitary(stopTime)}
    \r\n `;\r\n\r\n\t\t\twidgetResults.appendChild(resultsRow);\r\n\r\n\t\t\tresultsRow.addEventListener('click', function() {\r\n\t\t\t\tdisplayRowData({\r\n\t\t\t\t\tstaffId,\r\n\t\t\t\t\tlocationId,\r\n\t\t\t\t\tlocationCode,\r\n\t\t\t\t\tdescription,\r\n\t\t\t\t\tserviceDate,\r\n\t\t\t\t\tstartTime,\r\n\t\t\t\t\tstopTime,\r\n\t\t\t\t\trowId: index,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tlastClockOutTime = stopTime;\r\n\t\t});\r\n\r\n\t\tif (lastClockOutTime !== '') {\r\n\t\t\tclockInOutBtn.innerHTML = 'Clock In';\r\n\t\t\tclockInOutBtn.setAttribute('data-clock-action', 'in');\r\n\t\t} else {\r\n\t\t\tclockInOutBtn.innerHTML = 'Clock Out';\r\n\t\t\tclockInOutBtn.setAttribute('data-clock-action', 'out');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction init() {\r\n widget = document.getElementById('dashtimeclockwidget');\r\n widgetError = widget.querySelector('.overlapError');\r\n\t\twidgetResults = widget.querySelector('.widget__results');\r\n\t\tclockInOutBtn = widget.querySelector('.clockInOutBtn');\r\n\r\n\t\tclockInOutBtn.addEventListener('click', punchClock);\r\n\r\n\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t}\r\n\r\n\treturn {\r\n\t\tprocessStaffActivity,\r\n\t\tgiveInvalidTimeError,\r\n\t\tinit,\r\n\t};\r\n})();\r\n","var timeClockAjax = (function() {\r\n\tfunction clockInStaff() {\r\n\t\tvar locationId = '';\r\n\t\tvar locationId = defaults.getLocation(\"timeClock\");\r\n\t\tif (locationId == null || locationId == '') locationId = 0;\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/clockInStaff/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\", \"createTimeEntries\":\"' + $.session.createTimeEntries + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n success: function (response, status, xhr) { \r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\t if (res.indexOf('517') > -1) {\r\n $.session.timeClockError = 'You are not assigned as Day Service Staff.';\r\n\t\t\t }\r\n\t\t\t\t if (res.indexOf('611') > -1) {\r\n $.session.timeClockError = 'You are not assigned as Day Service Staff';\r\n\t\t\t\t }\r\n\t\t\t\t if (res.indexOf('612') > -1) {\r\n $.session.timeClockError = 'You do not have an active staff location assigned to you.';\r\n\t\t\t\t }\r\n\t\t\t\t if (res.indexOf('610') > -1) {\r\n $.session.timeClockError = 'You are already clocked in!';\r\n\t\t\t\t }\r\n\t\t\t\tif (res.indexOf('613') > -1) {\r\n window.timeOverlapError = true;\r\n $.session.timeClockError = 'Time Overlap';\r\n\t\t\t\t} else {\r\n\t\t\t\t\twindow.timeOverlapError = false; //needed to reset previous error value\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcomplete: function(jqXHR, status) {\r\n\t\t\t\tgetStaffActivity(timeClock.processStaffActivity);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction clockOutStaff() {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/clockOutStaff/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t},\r\n\t\t\tcomplete: function(jqXHR, status) {\r\n\t\t\t\tgetStaffActivity(timeClock.processStaffActivity);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getStaffActivity(callback) {\r\n\t\tvar d = new Date();\r\n\t\tvar timeClockDate = [d.getFullYear(), d.getMonth() + 1, d.getDate()].join('-');\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getStaffActivityJSON/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"serviceDate\":\"' + timeClockDate + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tres = response.getStaffActivityJSONResult;\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\tcallback(null);\r\n\t\t\t},\r\n\t\t\t// complete: function(jqXHR, status) {\r\n\t\t\t// \tshowDownArrow();\r\n\t\t\t// },\r\n\t\t});\r\n\t}\r\n\r\n\tfunction updateStaffClockTime(data, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateStaffClockTime/',\r\n\t\t\tdata:\r\n\t\t\t\t'{\"token\":\"' + $.session.Token +\r\n\t\t\t\t'\", \"serviceDate\":\"' + UTIL.getDBDateNow() +\r\n\t\t\t\t'\", \"orginalTime\":\"' + data.orgTime +\r\n\t\t\t\t'\", \"newTime\":\"' + data.newTime +\r\n\t\t\t\t'\", \"isClockIn\":\"' + data.isStartTime +\r\n\t\t\t\t'\", \"checkedAgainstTime\":\"' + data.orgTime +\r\n\t\t\t\t'\",\"location\":\"' + data.loc + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tif (res.indexOf('613') > -1) {\r\n $.session.timeClockError = 'Time Overlap';\r\n\t\t\t\t\twindow.timeOverlapError = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\twindow.timeOverlapError = false;\r\n }\r\n callback();\r\n\t\t\t},\r\n\t\t\tcomplete: function(jqXHR, status) {\r\n\t\t\t\t//getStaffActivity(timeClock.processStaffActivity);\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t$.session.initialTimeOut = '';\r\n\t\t$.session.initialTimeIn = '';\r\n\t}\r\n\r\n\treturn {\r\n\t\tclockInStaff,\r\n\t\tclockOutStaff,\r\n\t\tgetStaffActivity,\r\n\t\tupdateStaffClockTime,\r\n\t};\r\n})();\r\n","var singleEntryCountWidget = (function() {\r\n var widget;\r\n var entriesObj;\r\n var statuses = {\r\n \"A\": 'Needs Approval',\r\n \"P\": 'Pending',\r\n \"R\": 'Rejected'\r\n };\r\n\r\n function getEntryInfo(dateRange, code) {\r\n var userId = $.session.UserId;\r\n var startDate = dateRange[0].split('/');\r\n var endDate = dateRange[1].split('/');\r\n startDate = `${startDate[2]}-${UTIL.leadingZero(startDate[0])}-${UTIL.leadingZero(startDate[1])}`;\r\n endDate = `${endDate[2]}-${UTIL.leadingZero(endDate[0])}-${UTIL.leadingZero(endDate[1])}`;\r\n\r\n timeEntryReview.loadReviewPage(startDate, endDate);\r\n //getSingleEntryByDate(userId, startDate, endDate, '%', code, buildSingleEntryTable);\r\n }\r\n\r\n function populateSingleEntryCountInfo(data) {\r\n var pendingSection = widget.querySelector('.pending-section');\r\n var rejectedSection = widget.querySelector('.rejected-section');\r\n var approvalSection = widget.querySelector('.needsapproval-section');\r\n pendingSection.innerHTML = '';\r\n rejectedSection.innerHTML = '';\r\n approvalSection.innerHTML = '';\r\n\r\n var entryGroups = Object.keys(data);\r\n entryGroups.forEach(group => {\r\n var dateRanges = Object.keys(data[group]);\r\n dateRanges.sort((a,b) => {\r\n var dateA = a.split('{*}')[0];\r\n var dateB = b.split('{*}')[0];\r\n dateA = new Date(dateA);\r\n dateB = new Date(dateB);\r\n\r\n if (dateA > dateB) {\r\n return -1;\r\n } else if (dateA < dateB) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n dateRanges.forEach(range => {\r\n var text = range.split('{*}').join(' - ');\r\n var count = data[group][range].count;\r\n var p = document.createElement('p');\r\n p.innerHTML = `${text} - ${count}`;\r\n p.setAttribute(\"start-date\", range.split('{*}')[0])\r\n p.setAttribute(\"end-date\", range.split('{*}')[1])\r\n p.classList.add('customLink')\r\n if (group === 'P') {\r\n pendingSection.appendChild(p);\r\n p.addEventListener(\"click\", event => {\r\n let startDate = event.target.getAttribute(\"start-date\")\r\n let endDate = event.target.getAttribute(\"end-date\")\r\n let status = \"P\"\r\n setActiveModuleSectionAttribute('timeEntry-review');\r\n actioncenter.dataset.activeModule = \"timeEntry\"\r\n UTIL.toggleMenuItemHighlight(\"timeEntry\")\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n timeEntry.getInitialData(() => {\r\n timeEntryReview.dashHandler(startDate, endDate, status)\r\n })\r\n })\r\n } else if (group === 'R') {\r\n rejectedSection.appendChild(p);\r\n p.addEventListener(\"click\", event => {\r\n let startDate = event.target.getAttribute(\"start-date\")\r\n let endDate = event.target.getAttribute(\"end-date\")\r\n let status = \"R\"\r\n setActiveModuleSectionAttribute('timeEntry-review');\r\n actioncenter.dataset.activeModule = \"timeEntry\"\r\n UTIL.toggleMenuItemHighlight(\"timeEntry\")\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n timeEntry.getInitialData(() => {\r\n timeEntryReview.dashHandler(startDate, endDate, status)\r\n })\r\n })\r\n } else if (group === 'A') {\r\n approvalSection.appendChild(p);\r\n p.addEventListener(\"click\", event => {\r\n let startDate = event.target.getAttribute(\"start-date\")\r\n let endDate = event.target.getAttribute(\"end-date\")\r\n let status = \"A\"\r\n setActiveModuleSectionAttribute('timeEntry-review');\r\n actioncenter.dataset.activeModule = \"timeEntry\"\r\n UTIL.toggleMenuItemHighlight(\"timeEntry\")\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n timeEntry.getInitialData(() => {\r\n timeEntryReview.dashHandler(startDate, endDate, status)\r\n })\r\n })\r\n }\r\n });\r\n });\r\n }\r\n \r\n\r\n function buildWidgetTabs() {\r\n var widgetTabs = widgetBody.querySelector('.tabs');\r\n if (!widgetTabs) {\r\n var tabOptions = {\r\n sections: ['Pending', 'Rejected', 'Needs Approval']\r\n };\r\n \r\n widgetTabs = tabs.build(tabOptions);\r\n \r\n widgetBody.appendChild(widgetTabs);\r\n }\r\n }\r\n\r\n function groupSingleEntryCountInfo(results) {\r\n entriesObj = {};\r\n results.forEach(r => {\r\n if (statuses[r.Anywhere_Status]) {\r\n var startDate = r.startdate.split(' ')[0];\r\n var endDate = r.enddate.split(' ')[0];\r\n var dateString = `${startDate}{*}${endDate}`;\r\n\r\n if (!entriesObj[r.Anywhere_Status]) {\r\n entriesObj[r.Anywhere_Status] = {};\r\n }\r\n if (!entriesObj[r.Anywhere_Status][dateString]) {\r\n entriesObj[r.Anywhere_Status][dateString] = {count: 0};\r\n }\r\n entriesObj[r.Anywhere_Status][dateString].count++;\r\n }\r\n });\r\n }\r\n\r\n function init() {\r\n widget = document.getElementById('dashsingleentrywidget');\r\n widgetBody = widget.querySelector('.widget__body');\r\n widgetBody.innerHTML = '';\r\n\r\n singleEntryCountWidgetAjax.getSingleEntryCountInfo(function(err, res) {\r\n if (err) {\r\n $('#dashsingleentrywidget .dashboarderror').show();\r\n return;\r\n }\r\n groupSingleEntryCountInfo(res);\r\n buildWidgetTabs();\r\n populateSingleEntryCountInfo(entriesObj);\r\n });\r\n }\r\n\r\n return {\r\n init\r\n }\r\n}());","var singleEntryCountWidgetAjax = (function() {\r\n function getSingleEntryCountInfo(callback) {\r\n //ANYW_Dashboard_GetSingleEntryCountInfo \r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getSingleEntryCountInfoJSON/\",\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n res = response.getSingleEntryCountInfoJSONResult;\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null)\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getSingleEntryCountInfo\r\n }\r\n}());","var incident = (function () {\r\n var updateData = {\r\n token: null,\r\n\r\n incidentTypeId: null, // Incident Details\r\n incidentTypeDesc: null, // Incident Details\r\n incidentDate: null, // Incident Details - incident date\r\n incidentTime: null, // Incident Details - incident time\r\n reportedDate: null, // Incident Details - reported date\r\n reportedTime: null, // Incident Details - reported time\r\n subcategoryId: null, // Incident Details - incident category\r\n locationDetailId: null, // Incident Details - location detail\r\n serviceLocationId: null, // ????????????\r\n summary: null, // Incident Details - summary of incident\r\n note: null, // Incident Details - immediate acction\r\n prevention: null, // Incident Details - preventive plan\r\n contributingFactor: null, // Incident Details - cause & contributing factors\r\n\r\n consumerIdString: null, // Consumers Involved - consumer id\r\n includeInCount: null, // Consumers Involved - PPI checkbox\r\n involvementId: null, // Consumers Involved - involvement type id\r\n consumerIncidentLocationIdString: null, // Consumers Involved - incident location id\r\n consumerInvolvedIdString: null,\r\n\r\n employeeIdString: null, // Employees Involved\r\n notifyEmployeeString: null, // Employees Involved\r\n employeeInvolvementIdString: null, // Employees Involved\r\n\r\n othersInvolvedNameString: null, // Others Involved\r\n othersInvolvedCompanyString: null, // Others Involved\r\n othersInvolvedAddress1String: null, // Others Involved\r\n othersInvolvedAddress2String: null, // Others Involved\r\n othersInvolvedCityString: null, // Others Involved\r\n othersInvolvedStateString: null, // Others Involved\r\n othersInvolvedZipCodeString: null, // Others Involved\r\n othersInvolvedPhoneString: null, // Others Involved\r\n othersInvolvedInvolvementTypeIdString: null, // Others Involved\r\n othersInvolvedInvolvementDescriptionString: null, // Others Involved - ????\r\n\r\n updateIncidentId: null, // set for update only. else make 0\r\n saveUpdate: 'Update', // set either Save or Update\r\n };\r\n var isNewIncident;\r\n var consumersInvolvedIds;\r\n var newConsumersInvolvedIds;\r\n\r\n function clearUpdateData() {\r\n var datakeys = Object.keys(updateData);\r\n datakeys.forEach(key => {\r\n updateData[key] = null;\r\n });\r\n }\r\n\r\n function getIncidentId() {\r\n return updateData.updateIncidentId;\r\n }\r\n\r\n function setNewConsumerInvolvedIds(involvementIds) {\r\n // when saving new incident this handles the new consumerInvolement Ids coming back\r\n newConsumersInvolvedIds = [];\r\n\r\n involvementIds.forEach(ids => {\r\n var idArray = ids.split('|');\r\n var consumerId = idArray[0];\r\n var involvementId = idArray[1];\r\n\r\n newConsumersInvolvedIds.push({\r\n id: consumerId,\r\n involvedId: involvementId,\r\n });\r\n });\r\n }\r\n\r\n //-----------------------------------------------------------\r\n // Saving/Updating Incident Card\r\n //-----------------------------------------------------------\r\n function setUpdateIncidentId(incidentId) {\r\n updateData.updateIncidentId = incidentId;\r\n }\r\n // Gather Data From Each Section\r\n function getConsumersInvolvedUpdateData() {\r\n var consumerIds = [];\r\n var involvementIds = [];\r\n var locationIds = [];\r\n var includeInCount = [];\r\n var consumerInvolvementIds = [];\r\n\r\n var consumersInvolvedIds = itConsumerSection.getConsumersInvolvedIds();\r\n\r\n var data = consumerInvolvement.getData();\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach((key, index) => {\r\n var consumerData = data[key];\r\n var consumerInvolvementId;\r\n\r\n if (consumersInvolvedIds) {\r\n consumerInvolvementId = consumersInvolvedIds.find(e => e.id === key);\r\n consumerInvolvementId = consumerInvolvementId ? consumerInvolvementId.involvedId : 0;\r\n } else {\r\n consumerInvolvementId = 0;\r\n }\r\n\r\n consumerIds.push(key);\r\n involvementIds.push(consumerData.involvementId);\r\n locationIds.push(consumerData.locationId);\r\n includeInCount.push(consumerData.includeInCount);\r\n consumerInvolvementIds.push(consumerInvolvementId);\r\n });\r\n\r\n updateData.consumerIdString = consumerIds.join(',');\r\n updateData.involvementId = involvementIds.join('|');\r\n updateData.consumerIncidentLocationIdString = locationIds.join('|');\r\n updateData.includeInCount = includeInCount.join('|');\r\n updateData.consumerInvolvedIdString = consumerInvolvementIds.join('|');\r\n }\r\n function getEmployeesInvolvedUpdateData() {\r\n var section = document.querySelector('.incidentSection[data-card-page=\"employees\"]');\r\n var employeeRows = [].slice.call(section.querySelectorAll('.employeeRow'));\r\n\r\n var employeeIds = [];\r\n var involvementTypes = [];\r\n var toNotify = [];\r\n\r\n employeeRows.forEach((row, index) => {\r\n var employeeNameDropdown = row.querySelector('.employeeNameDropdown');\r\n var involvementDropdown = row.querySelector('.involvmentTypeDropdown');\r\n var notifyCheckbox = row.querySelector('.checkbox');\r\n var notifyInput = notifyCheckbox.querySelector('input');\r\n var employeeNameDropdownSelectedValue =\r\n employeeNameDropdown.options[employeeNameDropdown.selectedIndex];\r\n\r\n var name = employeeNameDropdownSelectedValue.dataset.employeeid;\r\n var involvement = involvementDropdown.value;\r\n var notify = notifyInput.checked ? 'Y' : 'N';\r\n\r\n employeeIds.push(name);\r\n involvementTypes.push(involvement);\r\n toNotify.push(notify);\r\n });\r\n\r\n updateData.employeeIdString = employeeIds.join('|');\r\n updateData.employeeInvolvementIdString = involvementTypes.join('|');\r\n updateData.notifyEmployeeString = toNotify.join('|');\r\n }\r\n function getPeopleInvolvedUpdateData() {\r\n var section = document.querySelector('.incidentSection[data-card-page=\"people\"]');\r\n var peopleRows = [].slice.call(section.querySelectorAll('.peopleRow'));\r\n\r\n var names = [];\r\n var companies = [];\r\n var addresses1 = [];\r\n var addresses2 = [];\r\n var cities = [];\r\n var states = [];\r\n var zips = [];\r\n var phones = [];\r\n var involevmentTypes = [];\r\n var involevmentDescriptions = [];\r\n\r\n peopleRows.forEach((person, index) => {\r\n var nameInput = person.querySelector('.name');\r\n var companyInput = person.querySelector('.company');\r\n var address1Input = person.querySelector('.address1');\r\n var address2Input = person.querySelector('.address2');\r\n var cityInput = person.querySelector('.city');\r\n var stateInput = person.querySelector('.state');\r\n var zipInput = person.querySelector('.zip');\r\n var phoneInput = person.querySelector('.phone');\r\n var typeDropdown = person.querySelector('.involvmentTypeDropdown');\r\n\r\n var name = UTIL.removeUnsavableNoteText(nameInput.value);\r\n var company = UTIL.removeUnsavableNoteText(companyInput.value);\r\n var address1 = UTIL.removeUnsavableNoteText(address1Input.value);\r\n var address2 = UTIL.removeUnsavableNoteText(address2Input.value);\r\n var city = UTIL.removeUnsavableNoteText(cityInput.value);\r\n var state = stateInput.value;\r\n var zip = zipInput.value;\r\n var phone = phoneInput.value;\r\n var type = typeDropdown.value;\r\n\r\n names.push(name);\r\n companies.push(company);\r\n addresses1.push(address1);\r\n addresses2.push(address2);\r\n cities.push(city);\r\n states.push(state);\r\n zips.push(zip);\r\n phones.push(phone);\r\n involevmentTypes.push(type);\r\n });\r\n\r\n updateData.othersInvolvedNameString = names.join('|');\r\n updateData.othersInvolvedCompanyString = companies.join('|');\r\n updateData.othersInvolvedAddress1String = addresses1.join('|');\r\n updateData.othersInvolvedAddress2String = addresses2.join('|');\r\n updateData.othersInvolvedCityString = cities.join('|');\r\n updateData.othersInvolvedStateString = states.join('|');\r\n updateData.othersInvolvedZipCodeString = zips.join('|');\r\n updateData.othersInvolvedPhoneString = phones.join('|');\r\n updateData.othersInvolvedInvolvementTypeIdString = involevmentTypes.join('|');\r\n }\r\n function getIncidentDetailsUpdateData(details) {\r\n var section = document.querySelector('.incidentSection[data-card-page=\"details\"]');\r\n var iDate = section.querySelector('.iDate');\r\n var iTime = section.querySelector('.iTime');\r\n var rDate = section.querySelector('.rDate');\r\n var rTime = section.querySelector('.rTime');\r\n var category = section.querySelector('.categoryDropdown');\r\n var location = section.querySelector('.locationDropdown');\r\n var summary = section.querySelector('.summary');\r\n var action = section.querySelector('.action');\r\n\r\n updateData.incidentDate = iDate.value;\r\n updateData.incidentTime = iTime.value;\r\n updateData.reportedDate = rDate.value;\r\n updateData.reportedTime = rTime.value;\r\n updateData.subcategoryId = category.value;\r\n updateData.locationDetailId = location.value;\r\n updateData.summary = UTIL.removeUnsavableNoteText(summary.value);\r\n updateData.note = UTIL.removeUnsavableNoteText(action.value);\r\n updateData.prevention = '';\r\n updateData.contributingFactor = '';\r\n\r\n if ($.session.incidentTrackingShowPreventionPlan) {\r\n var prevention = section.querySelector('.prevention');\r\n updateData.prevention = UTIL.removeUnsavableNoteText(prevention.value);\r\n }\r\n if ($.session.incidentTrackingShowCauseAndContributingFactors) {\r\n var factors = section.querySelector('.factors');\r\n updateData.contributingFactor = UTIL.removeUnsavableNoteText(factors.value);\r\n }\r\n\r\n if (details) {\r\n updateData.incidentTypeId = details.incidentTypeId === '' ? null : details.incidentTypeId;\r\n updateData.incidentTypeDesc =\r\n details.incidentTypeDesc === '' ? null : details.incidentTypeDesc;\r\n }\r\n }\r\n\r\n function updateIncidentSaveEditData() {\r\n getConsumersInvolvedUpdateData();\r\n getEmployeesInvolvedUpdateData();\r\n getPeopleInvolvedUpdateData();\r\n getIncidentDetailsUpdateData();\r\n updateData.token = $.session.Token;\r\n updateData.saveUpdate = isNewIncident ? 'Save' : 'Update';\r\n }\r\n\r\n function saveIncident(isNew) {\r\n isNewIncident = isNew;\r\n // update save data\r\n updateIncidentSaveEditData();\r\n // tell roster to clear out its active consumers\r\n roster2.clearActiveConsumers();\r\n // fire ajax save\r\n incidentTrackingAjax.saveUpdateITIncident(updateData, function (involvementIds) {\r\n setNewConsumerInvolvedIds(involvementIds);\r\n // load review page\r\n incidentOverview.init();\r\n saveConsumerData();\r\n deleteConsumerData();\r\n clearUpdateData();\r\n });\r\n }\r\n function deleteIncident() {\r\n var deleteIncidentWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete this incident?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n incidentTrackingAjax.deleteITIncident(updateData.updateIncidentId);\r\n clearUpdateData();\r\n POPUP.hide(deleteIncidentWarningPopup);\r\n incidentOverview.init();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n clearUpdateData();\r\n POPUP.hide(deleteIncidentWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteIncidentWarningPopup.appendChild(message);\r\n deleteIncidentWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteIncidentWarningPopup);\r\n }\r\n function cancelIncident() {\r\n // clear active consumers\r\n roster2.clearActiveConsumers();\r\n // clear data\r\n itConsumerSection.clearData();\r\n // load review page\r\n incidentOverview.init();\r\n }\r\n\r\n //-----------------------------------------------------------\r\n // Saving/Updating Consumer Involved Sub Sections\r\n //-----------------------------------------------------------\r\n function saveConsumerData() {\r\n consumersInvolvedIds = itConsumerSection.getConsumersInvolvedIds();\r\n\r\n var followUpData = consumerFollowUp.getData();\r\n var injuryData = consumerInjuries.getData();\r\n var interventionsData = consumerIntervention.getData();\r\n var reviewData = consumerReview.getData();\r\n var reportData = consumerReporting.getData();\r\n var behaviorData = consumerBehavior.getData();\r\n\r\n var fupPromises = saveConsumerFollowUps(followUpData);\r\n var injPromises = saveConsumerInjuries(injuryData);\r\n var intPromises = saveConsumerInterventions(interventionsData);\r\n var revPromises = saveConsumerReviews(reviewData);\r\n var repPromises = saveConsumerReports(reportData);\r\n var behavPromises = saveConsumerBehaviors(behaviorData);\r\n\r\n var consumerDataSavePromises = [\r\n ...fupPromises,\r\n ...injPromises,\r\n ...intPromises,\r\n ...revPromises,\r\n ...repPromises,\r\n ...behavPromises,\r\n ];\r\n\r\n Promise.all(consumerDataSavePromises).then(() => {\r\n itConsumerSection.clearData();\r\n });\r\n }\r\n function saveConsumerFollowUps(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n consumerFollowUpIdArray: [],\r\n followUpTypeIdArray: [],\r\n personResponsibleArray: [],\r\n dueDateArray: [],\r\n completedDateArray: [],\r\n notesArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var fuData = data[key][idKey];\r\n if (!fuData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerFollowUpId = isNew ? '' : idKey;\r\n var followUpTypeId = fuData.followUpTypeId ? fuData.followUpTypeId : '';\r\n var personResponsible = fuData.personResponsible\r\n ? UTIL.removeUnsavableNoteText(fuData.personResponsible)\r\n : '';\r\n var dueDate = fuData.dueDate ? fuData.dueDate : '';\r\n var dateCompleted = fuData.dateCompleted ? fuData.dateCompleted : '';\r\n var notes = fuData.notes ? UTIL.removeUnsavableNoteText(fuData.notes) : '';\r\n\r\n saveData.consumerFollowUpIdArray.push(itConsumerFollowUpId);\r\n saveData.followUpTypeIdArray.push(followUpTypeId);\r\n saveData.personResponsibleArray.push(personResponsible);\r\n saveData.dueDateArray.push(dueDate);\r\n saveData.completedDateArray.push(dateCompleted);\r\n saveData.notesArray.push(notes);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerFollowUp(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerInjuries(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n itConsumerInjuryIdArray: [],\r\n checkedByNurseArray: [],\r\n checkedDateArray: [],\r\n detailsArray: [],\r\n itInjuryLocationIdArray: [],\r\n itInjuryTypeIdArray: [],\r\n treatmentArray: [],\r\n causeOfInjuryIdArray: [],\r\n riskOfInjuryIdArray: []\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var iData = data[key][idKey];\r\n if (!iData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerInjuryId = isNew ? '' : idKey;\r\n var checkedByNurse = iData.checkedByNurse ? iData.checkedByNurse : '';\r\n var checkedDate = iData.checkedDate ? iData.checkedDate : '';\r\n var injuryDetails = iData.injuryDetails\r\n ? UTIL.removeUnsavableNoteText(iData.injuryDetails)\r\n : '';\r\n var injuryLocationId = iData.injuryLocationId ? iData.injuryLocationId : '';\r\n var injuryTypeId = iData.injuryTypeId ? iData.injuryTypeId : '';\r\n var injuryCauseId = iData.injuryCauseId ? iData.injuryCauseId : '';\r\n var injuryRiskId = iData.injuryRiskId ? iData.injuryRiskId : '';\r\n var injuryTreatment = iData.injuryTreatment\r\n ? UTIL.removeUnsavableNoteText(iData.injuryTreatment)\r\n : '';\r\n\r\n saveData.itConsumerInjuryIdArray.push(itConsumerInjuryId);\r\n saveData.checkedByNurseArray.push(checkedByNurse);\r\n saveData.checkedDateArray.push(checkedDate);\r\n saveData.detailsArray.push(injuryDetails);\r\n saveData.itInjuryLocationIdArray.push(injuryLocationId);\r\n saveData.itInjuryTypeIdArray.push(injuryTypeId);\r\n saveData.causeOfInjuryIdArray.push(injuryCauseId);\r\n saveData.riskOfInjuryIdArray.push(injuryRiskId);\r\n saveData.treatmentArray.push(injuryTreatment);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerInjuries(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerInterventions(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n itConsumerInterventionIdArray: [],\r\n aversiveArray: [],\r\n itConsumerInterventionTypeIdArray: [],\r\n notesArray: [],\r\n startTimeArray: [],\r\n stopTimeArray: [],\r\n timeLengthArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var iData = data[key][idKey];\r\n if (!iData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerInterventionId = isNew ? '' : idKey;\r\n var aversive = iData.aversive ? iData.aversive : '';\r\n var interventionType = iData.interventionType ? iData.interventionType : '';\r\n var interventionNotes = iData.interventionNotes\r\n ? UTIL.removeUnsavableNoteText(iData.interventionNotes)\r\n : '';\r\n var startTime = iData.startTime ? iData.startTime : '';\r\n var stopTime = iData.stopTime ? iData.stopTime : '';\r\n var timeLength = iData.timeLength ? iData.timeLength : '';\r\n\r\n saveData.itConsumerInterventionIdArray.push(itConsumerInterventionId);\r\n saveData.aversiveArray.push(aversive);\r\n saveData.itConsumerInterventionTypeIdArray.push(interventionType);\r\n saveData.notesArray.push(interventionNotes);\r\n saveData.startTimeArray.push(startTime);\r\n saveData.stopTimeArray.push(stopTime);\r\n saveData.timeLengthArray.push(timeLength);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerInterventions(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerReviews(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n itConsumerReviewIdArray: [],\r\n reviewedByArray: [],\r\n reviewedDateArray: [],\r\n noteArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var rData = data[key][idKey];\r\n if (!rData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerReviewId = isNew ? '' : idKey;\r\n var reviewedBy = rData.reviewedBy ? rData.reviewedBy : '';\r\n var reviewedDate = rData.reviewedDate ? rData.reviewedDate : '';\r\n var notes = rData.notes ? UTIL.removeUnsavableNoteText(rData.notes) : '';\r\n\r\n saveData.itConsumerReviewIdArray.push(itConsumerReviewId);\r\n saveData.reviewedByArray.push(reviewedBy);\r\n saveData.reviewedDateArray.push(reviewedDate);\r\n saveData.noteArray.push(notes);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerReviews(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerReports(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n consumerReportIdArray: [],\r\n reportDateArray: [],\r\n reportTimeArray: [],\r\n reportingCategoryIdArray: [],\r\n reportToArray: [],\r\n reportByArray: [],\r\n reportMethodArray: [],\r\n notesArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var rData = data[key][idKey];\r\n if (!rData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerReportId = isNew ? '' : idKey;\r\n var dateReported = rData.dateReported ? rData.dateReported : '';\r\n var timeReported = rData.timeReported ? rData.timeReported : '';\r\n var reportingCategoryID = rData.reportingCategoryID ? rData.reportingCategoryID : '';\r\n var reportTo = rData.reportTo ? UTIL.removeUnsavableNoteText(rData.reportTo) : '';\r\n var reportBy = rData.reportBy ? UTIL.removeUnsavableNoteText(rData.reportBy) : '';\r\n var reportMethod = rData.reportMethod\r\n ? UTIL.removeUnsavableNoteText(rData.reportMethod)\r\n : '';\r\n var notes = rData.notes ? UTIL.removeUnsavableNoteText(rData.notes) : '';\r\n\r\n saveData.consumerReportIdArray.push(itConsumerReportId);\r\n saveData.reportDateArray.push(dateReported);\r\n saveData.reportTimeArray.push(timeReported);\r\n saveData.reportingCategoryIdArray.push(reportingCategoryID);\r\n saveData.reportToArray.push(reportTo);\r\n saveData.reportByArray.push(reportBy);\r\n saveData.reportMethodArray.push(reportMethod);\r\n saveData.notesArray.push(notes);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerReporting(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerBehaviors(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n consumerBehaviorIdArray: [],\r\n behaviorTypeIdArray: [],\r\n startTimeArray: [],\r\n endTimeArray: [],\r\n occurrencesArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var rData = data[key][idKey];\r\n if (!rData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerBehaviorId = isNew ? '' : idKey;\r\n var behaviorTypeId = rData.behaviorTypeId ? rData.behaviorTypeId : '';\r\n var startTime = rData.startTime ? rData.startTime : '';\r\n var endTime = rData.endTime ? rData.endTime : '';\r\n var occurrences = rData.occurrences ? rData.occurrences : '';\r\n\r\n saveData.consumerBehaviorIdArray.push(itConsumerBehaviorId);\r\n saveData.behaviorTypeIdArray.push(behaviorTypeId);\r\n saveData.startTimeArray.push(startTime);\r\n saveData.endTimeArray.push(endTime);\r\n saveData.occurrencesArray.push(occurrences);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerBehaviors(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n\r\n function deleteConsumerData() {\r\n var followUpDeletes = consumerFollowUp.getDeleteData();\r\n var injuryDeletes = consumerInjuries.getDeleteData();\r\n var interventionDeletes = consumerIntervention.getDeleteData();\r\n var reviewDeletes = consumerReview.getDeleteData();\r\n var reportDeletes = consumerReporting.getDeleteData();\r\n var behaviorDeletes = consumerBehavior.getDeleteData();\r\n\r\n if (followUpDeletes) {\r\n var fuKeys = Object.keys(followUpDeletes);\r\n fuKeys.forEach(fuKey => {\r\n var keys = Object.keys(followUpDeletes[fuKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerFollowUp(key, () => {});\r\n });\r\n });\r\n }\r\n if (injuryDeletes) {\r\n var injKeys = Object.keys(injuryDeletes);\r\n injKeys.forEach(injKey => {\r\n var keys = Object.keys(injuryDeletes[injKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerInjuries(key, () => {});\r\n });\r\n });\r\n }\r\n if (interventionDeletes) {\r\n var intKeys = Object.keys(interventionDeletes);\r\n intKeys.forEach(intKey => {\r\n var keys = Object.keys(interventionDeletes[intKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerInterventions(key, () => {});\r\n });\r\n });\r\n }\r\n if (reviewDeletes) {\r\n var revKeys = Object.keys(reviewDeletes);\r\n revKeys.forEach(revKey => {\r\n var keys = Object.keys(reviewDeletes[revKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerReviews(key, () => {});\r\n });\r\n });\r\n }\r\n if (reportDeletes) {\r\n var repKeys = Object.keys(reportDeletes);\r\n repKeys.forEach(repKey => {\r\n var keys = Object.keys(reportDeletes[repKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerReporting(key, () => {});\r\n });\r\n });\r\n }\r\n if (behaviorDeletes) {\r\n var bhKeys = Object.keys(behaviorDeletes);\r\n bhKeys.forEach(fuKey => {\r\n var keys = Object.keys(behaviorDeletes[fuKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerBehavior(key, () => {});\r\n });\r\n });\r\n }\r\n }\r\n\r\n return {\r\n save: saveIncident,\r\n delete: deleteIncident,\r\n cancel: cancelIncident,\r\n setUpdateIncidentId,\r\n saveConsumerData,\r\n getIncidentId,\r\n };\r\n})();\r\n","var newIncident = (function() {\r\n // Action Nav Event Handler\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch(targetAction) {\r\n case 'miniRosterDone': {\r\n var selectedConsumers = roster2.getActiveConsumers();\r\n itConsumerSection.addConsumers(selectedConsumers);\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n }\r\n }\r\n \r\n function loadPage() {\r\n DOM.clearActionCenter();\r\n roster2.setAllowedConsumers(['%']);\r\n roster2.miniRosterinit();\r\n\r\n var newIncidentCard = incidentCard.build();\r\n\r\n DOM.ACTIONCENTER.appendChild(newIncidentCard);\r\n\r\n DOM.autosizeTextarea();\r\n }\r\n\r\n function init() {\r\n setActiveModuleSectionAttribute('incidentTracking-new');\r\n loadPage();\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n init\r\n }\r\n})();","// Used For Incident Review Page\r\nconst incidentPermissions = (function () {\r\n function incidentDetails(enteredBy) {\r\n const textareas = [...document.querySelectorAll('textarea')];\r\n\r\n textareas.forEach(textarea => {\r\n if ($.session.UserId.toLowerCase() !== enteredBy.toLowerCase()) {\r\n if (\r\n (textarea.classList.contains('summary') && $.session.updateIncidentSummaryText) ||\r\n (textarea.classList.contains('action') && $.session.updateIncidentActionText) ||\r\n (textarea.classList.contains('prevention') && $.session.updateIncidentPreventionText) ||\r\n (textarea.classList.contains('factors') && $.session.updateIncidentCauseText)\r\n ) {\r\n const nonEditableText = textarea.value;\r\n\r\n textarea.addEventListener('keydown', event => {\r\n const updatedText = event.target.value;\r\n\r\n // if noneditable text is not at the beginning or has been changed\r\n if (!updatedText.startsWith(nonEditableText)) {\r\n textarea.blur();\r\n // create and append popup\r\n const popupElement = POPUP.build({\r\n id: 'js-incidentSummaryWarning',\r\n closeCallback: () => {\r\n const resetValue =\r\n nonEditableText + updatedText.substr(nonEditableText.length + 1);\r\n textarea.value = resetValue;\r\n },\r\n });\r\n const message = document.createElement('div');\r\n message.innerHTML = 'You are not allowed to edit previously entered text.';\r\n\r\n const okButton = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popupElement);\r\n const resetValue =\r\n nonEditableText + updatedText.substr(nonEditableText.length + 1);\r\n textarea.value = resetValue;\r\n },\r\n });\r\n\r\n popupElement.appendChild(message);\r\n popupElement.appendChild(okButton);\r\n\r\n POPUP.show(popupElement);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n function permissions(originallyEnteredByUserId) {\r\n // gather all inputs, textareas, and dropdowns\r\n var incidentTrackingCard = document.querySelector('.incidentSection[data-card-page=\"details\"]');\r\n var inputs = [].slice.call(incidentTrackingCard.querySelectorAll('input'));\r\n var textareas = [].slice.call(incidentTrackingCard.querySelectorAll('textarea'));\r\n var dropdowns = [].slice.call(incidentTrackingCard.querySelectorAll('select'));\r\n var formElements = [].concat(inputs, textareas, dropdowns);\r\n if ($.session.incidentTrackingUpdate === false) {\r\n // disable everything\r\n formElements.forEach(element => {\r\n element.disabled = true;\r\n });\r\n } else {\r\n // undisable everything\r\n formElements.forEach(element => {\r\n element.disabled = false;\r\n });\r\n incidentDetails(originallyEnteredByUserId);\r\n }\r\n }\r\n\r\n return {\r\n incidentDetails,\r\n permissions,\r\n };\r\n})();\r\n","var reviewIncident = (function () {\r\n function loadPage(reviewData, incidentId) {\r\n DOM.clearActionCenter();\r\n\r\n var newIncidentCard = incidentCard.build(reviewData);\r\n\r\n DOM.ACTIONCENTER.appendChild(newIncidentCard);\r\n\r\n incidentPermissions.permissions(reviewData.itReviewData[0].originallyEnteredByUserId);\r\n\r\n DOM.autosizeTextarea();\r\n }\r\n\r\n function init(incidentId) {\r\n incidentTrackingAjax.getIncidentEditReviewDataAllObjects(incidentId, results => {\r\n incident.setUpdateIncidentId(incidentId);\r\n loadPage(results, incidentId);\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var incidentCard = (function () {\r\n // DOM\r\n //---------------------\r\n var incidentCard;\r\n //*sections\r\n var consumersSection;\r\n var detailsSection;\r\n var employeeSection;\r\n var peopleSection;\r\n //*nav buttons\r\n var nextBtn;\r\n var prevBtn;\r\n //*action buttons\r\n var cardActionBtns;\r\n var saveBtn;\r\n var deleteBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var sections = [\r\n 'Consumers Involved',\r\n 'Incident Details',\r\n 'Employees Involved',\r\n 'People Involved',\r\n ];\r\n var itConsumerInvolved;\r\n var itReviewData;\r\n var itEmployeesInvolved;\r\n var itOthersInvolved;\r\n // Values\r\n //---------------------\r\n var isNewIncident;\r\n var currentSectionNumber;\r\n\r\n function toggleSaveBtnStatus(disableBtn) {\r\n if (disableBtn) {\r\n saveBtn.classList.add('disabled');\r\n saveBtn.disabled = true;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveBtn.disabled = false;\r\n }\r\n }\r\n function toggleActionBtns(hide) {\r\n if (hide) {\r\n cardActionBtns.classList.add('hidden');\r\n } else {\r\n cardActionBtns.classList.remove('hidden');\r\n }\r\n }\r\n function toggleNavBtns() {\r\n if (currentSectionNumber === 3) {\r\n // disable next btn\r\n nextBtn.classList.remove('visible');\r\n } else {\r\n nextBtn.classList.add('visible');\r\n }\r\n if (currentSectionNumber === 0) {\r\n // disable prev btn\r\n prevBtn.classList.remove('visible');\r\n } else {\r\n prevBtn.classList.add('visible');\r\n }\r\n }\r\n function showSection(e) {\r\n if (e.target === nextBtn) currentSectionNumber++;\r\n if (e.target === prevBtn) currentSectionNumber--;\r\n\r\n var currentlyVisibleSection = incidentCard.querySelector('.incidentSection.visible');\r\n var targetSectionSelector = `[data-page-num=\"${currentSectionNumber}\"]`;\r\n var targetSection = incidentCard.querySelector(targetSectionSelector);\r\n\r\n currentlyVisibleSection.classList.remove('visible');\r\n targetSection.classList.add('visible');\r\n\r\n var nextSectionName = sections[currentSectionNumber + 1];\r\n nextBtn.innerHTML = nextSectionName ? nextSectionName : '';\r\n\r\n DOM.autosizeTextarea();\r\n\r\n toggleNavBtns();\r\n }\r\n\r\n function buildNav() {\r\n currentSectionNumber = 0;\r\n\r\n var nav = document.createElement('div');\r\n nav.classList.add('incidentCard__nav');\r\n\r\n nextBtn = button.build({\r\n text: sections[currentSectionNumber + 1],\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: ['nextBtn', 'visible'],\r\n callback: showSection,\r\n });\r\n prevBtn = button.build({\r\n text: 'prev',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'prevBtn',\r\n callback: showSection,\r\n });\r\n\r\n nav.appendChild(prevBtn);\r\n nav.appendChild(nextBtn);\r\n\r\n return nav;\r\n }\r\n function buildActionBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap', 'incidentCard__actionBtns');\r\n\r\n saveBtn = button.build({\r\n text: isNewIncident ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['incidentSave', 'disabled'],\r\n callback: function () {\r\n saveBtn.classList.add('disabled');\r\n incident.save(isNewIncident);\r\n },\r\n });\r\n deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: incident.delete,\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: incident.cancel,\r\n });\r\n\r\n if ($.session.incidentTrackingUpdate || $.session.incidentTrackingInsert) {\r\n btnWrap.appendChild(saveBtn);\r\n }\r\n if (!isNewIncident && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n btnWrap.appendChild(deleteBtn);\r\n }\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildSections() {\r\n var wrap = document.createElement('div');\r\n wrap.classList.add('incidentCard__sections');\r\n\r\n consumersSection = itConsumerSection.build({ pageNumber: '0' }, itConsumerInvolved);\r\n detailsSection = itDetailsSection.build({ pageNumber: '1' }, itReviewData);\r\n employeeSection = itEmployeeSection.build({ pageNumber: '2' }, itEmployeesInvolved);\r\n peopleSection = itPeopleSection.build({ pageNumber: '3' }, itOthersInvolved);\r\n\r\n wrap.appendChild(consumersSection);\r\n wrap.appendChild(detailsSection);\r\n wrap.appendChild(employeeSection);\r\n wrap.appendChild(peopleSection);\r\n\r\n return wrap;\r\n }\r\n\r\n function buildCard(data) {\r\n if (!data) {\r\n isNewIncident = true;\r\n reviewData = undefined;\r\n itConsumerInvolved = undefined;\r\n itReviewData = undefined;\r\n itEmployeesInvolved = undefined;\r\n itOthersInvolved = undefined;\r\n } else {\r\n isNewIncident = false;\r\n reviewData = data;\r\n itConsumerInvolved = reviewData.itConsumerInvolved;\r\n itReviewData = reviewData.itReviewData;\r\n itEmployeesInvolved = reviewData.itEmployeesInvolved;\r\n itOthersInvolved = reviewData.itOthersInvolved;\r\n }\r\n\r\n incidentCard = document.createElement('div');\r\n incidentCard.classList.add('incidentCard');\r\n\r\n var cardNav = buildNav();\r\n cardActionBtns = buildActionBtns();\r\n var cardSections = buildSections();\r\n\r\n incidentCard.appendChild(cardNav);\r\n incidentCard.appendChild(cardSections);\r\n incidentCard.appendChild(cardActionBtns);\r\n\r\n var consumerSectionHasError = checkforRequiredConsumer();\r\n toggleSaveBtnStatus(consumerSectionHasError);\r\n\r\n return incidentCard;\r\n }\r\n\r\n function checkforRequiredConsumer() {\r\n // number of selected Consumers with an error ; length = 0 on initial display\r\n var selectedErroredConsumers = [].slice.call(\r\n document.querySelectorAll('.consumersWrap .consumerCard.error'),\r\n );\r\n // hasNoErrors = 0 means the \"Select a Consumer\" message is displayed\r\n var hasNoErrors = document.getElementsByClassName('consumerError hidden');\r\n\r\n if (hasNoErrors.length === 0) return true;\r\n\r\n if (selectedErroredConsumers.length === 0 || itConsumerInvolved) {\r\n return false; // false means don't disable the Save BTN\r\n } else {\r\n return true; // true means do disable the Save BTN\r\n }\r\n }\r\n function checkEntireIncidentCardforErrors() {\r\n var detailSectionHasErrors = itDetailsSection.checkRequiredFields();\r\n var peopleSectionHasErrors = itPeopleSection.checkRequiredFields();\r\n var consumerSectionHasErrors = checkforRequiredConsumer();\r\n\r\n if (detailSectionHasErrors || peopleSectionHasErrors || consumerSectionHasErrors) {\r\n toggleSaveBtnStatus(true);\r\n } else {\r\n toggleSaveBtnStatus(false);\r\n }\r\n }\r\n\r\n return {\r\n build: buildCard,\r\n toggleSave: toggleSaveBtnStatus,\r\n checkforRequiredConsumer,\r\n checkEntireIncidentCardforErrors,\r\n toggleActionBtns,\r\n };\r\n})();\r\n","const incidentOverview = (function () {\r\n // DOM Elements\r\n let overviewTable;\r\n //Incident Tracking Report Data\r\n let incidentTrackingEmailData = { emailSubject: 'Incidents [Composite] by Consumer, Date' };\r\n //filters\r\n let filterPopup;\r\n let filterBtn;\r\n let applyFilterBtn;\r\n let alphaDropdown;\r\n let locationDropdown;\r\n let consumerDropdown;\r\n let betaDropdown;\r\n let fromDateInput;\r\n let toDateInput;\r\n let categoryDropdown;\r\n let showDropdown;\r\n let consumerDropdownData;\r\n let btnWrap;\r\n let supervisorBtnWrap;\r\n let locationBtnWrap;\r\n let consumerBtnWrap;\r\n let employeeBtnWrap;\r\n let categoryBtnWrap;\r\n let fromDateBtnWrap;\r\n let toDateBtnWrap;\r\n // filter values for remembering\r\n let filterData = {\r\n alpha: null,\r\n alphaName: null,\r\n beta: null,\r\n betaName: null,\r\n location: null,\r\n locationName: null,\r\n consumer: null,\r\n consumerName: null,\r\n category: null,\r\n categoryName: null,\r\n fromDate: null,\r\n toDate: null,\r\n show: null,\r\n };\r\n // alpha beta stuff\r\n let changedSelectedAlphaBetas;\r\n let alphaBetaData;\r\n let selectedAlphaId;\r\n let selectedBetaData = {\r\n id: '',\r\n name: '',\r\n };\r\n let retrieveData = {\r\n token: '',\r\n locationId: '%',\r\n employeeId: null,\r\n supervisorId: '',\r\n subcategoryId: '%',\r\n fromDate: '',\r\n toDate: '',\r\n viewCaseLoad: $.session.incidentTrackingViewCaseLoad,\r\n };\r\n let emailString;\r\n let selectedRelation = [];\r\n let gkRelationships;\r\n let relationshipDoneBtn;\r\n let relationshipCancelBtn;\r\n // Filtering\r\n //------------------------------------\r\n function populateSelectedFilterValues() {\r\n var selectedFilters = document.querySelector('.filteredByData');\r\n if (!selectedFilters) {\r\n selectedFilters = document.createElement('div');\r\n selectedFilters.classList.add('filteredByData');\r\n DOM.ACTIONCENTER.appendChild(selectedFilters);\r\n filterData.alphaName = $.session.LName + ', ' + $.session.Name;\r\n filterButtonSet();\r\n selectedFilters.appendChild(btnWrap);\r\n }\r\n\r\n if (filterData.locationName === null || filterData.locationName === 'All' || filterData.locationName === 'All Locations') {\r\n btnWrap.appendChild(locationBtnWrap);\r\n btnWrap.removeChild(locationBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(locationBtnWrap);\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + filterData.locationName;\r\n }\r\n\r\n if (filterData.consumerName === null || filterData.consumerName === 'All' || filterData.consumerName === 'All Consumers') {\r\n btnWrap.appendChild(consumerBtnWrap);\r\n btnWrap.removeChild(consumerBtnWrap);\r\n } else {\r\n btnWrap.appendChild(consumerBtnWrap);\r\n document.getElementById('consumerBtn').innerHTML = 'Consumer: ' + filterData.consumerName;\r\n }\r\n\r\n if (filterData.betaName === null || filterData.betaName === 'All' || filterData.betaName === 'All Employees') {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n btnWrap.removeChild(employeeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n document.getElementById('employeeBtn').innerHTML = 'Employee: ' + filterData.betaName;\r\n }\r\n if (filterData.categoryName === null || filterData.categoryName === 'All' || filterData.categoryName === 'All Categories') {\r\n btnWrap.appendChild(categoryBtnWrap);\r\n btnWrap.removeChild(categoryBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(categoryBtnWrap);\r\n document.getElementById('categoryBtn').innerHTML = 'Category / Subcategory: ' + filterData.categoryName;\r\n }\r\n\r\n if (filterData.show === null || filterData.show === 'All') {\r\n btnWrap.appendChild(showBtnWrap);\r\n btnWrap.removeChild(showBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(showBtnWrap);\r\n document.getElementById('showBtn').innerHTML = 'Show: ' + filterData.show;\r\n }\r\n\r\n document.getElementById('supervisorBtn').innerHTML = 'Supervisor: ' + filterData.alphaName;\r\n document.getElementById('fromDateBtn').innerHTML = 'From Date: ' + UTIL.formatDateFromIso(filterData.fromDate);\r\n document.getElementById('toDateBtn').innerHTML = 'To Date: ' + UTIL.formatDateFromIso(filterData.toDate);\r\n\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { showFilterPopup('ALL') },\r\n });\r\n\r\n supervisorBtn = button.build({\r\n id: 'supervisorBtn',\r\n text: 'Supervisor: ' + filterData.alphaName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('supervisorBtn') },\r\n });\r\n\r\n locationBtn = button.build({\r\n id: 'locationBtn',\r\n text: 'Location: ' + filterData.locationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('locationBtn') },\r\n });\r\n locationCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('locationBtn') },\r\n });\r\n\r\n consumerBtn = button.build({\r\n id: 'consumerBtn',\r\n text: 'Consumer: ' + filterData.consumerName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('consumerBtn') },\r\n });\r\n consumerCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('consumerBtn') },\r\n });\r\n\r\n employeeBtn = button.build({\r\n id: 'employeeBtn',\r\n text: 'Employee: ' + filterData.betaName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('employeeBtn') },\r\n });\r\n employeeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('employeeBtn') },\r\n });\r\n\r\n categoryBtn = button.build({\r\n id: 'categoryBtn',\r\n text: 'Category / Subcategory: ' + filterData.categoryName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('categoryBtn') },\r\n });\r\n categoryCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('categoryBtn') },\r\n });\r\n\r\n showBtn = button.build({\r\n id: 'showBtn',\r\n text: 'Show: ' + filterData.show,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('showBtn') },\r\n });\r\n showCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('showBtn') },\r\n });\r\n\r\n fromDateBtn = button.build({\r\n id: 'fromDateBtn',\r\n text: 'From Date: ' + UTIL.formatDateFromIso(filterData.fromDate),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('fromDateBtn') },\r\n });\r\n\r\n toDateBtn = button.build({\r\n id: 'toDateBtn',\r\n text: 'To Date: ' + UTIL.formatDateFromIso(filterData.toDate),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('toDateBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n supervisorBtnWrap = document.createElement('div');\r\n supervisorBtnWrap.classList.add('filterSelectionBtnWrap');\r\n supervisorBtnWrap.appendChild(supervisorBtn);\r\n btnWrap.appendChild(supervisorBtnWrap);\r\n\r\n locationBtnWrap = document.createElement('div');\r\n locationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationBtnWrap.appendChild(locationBtn);\r\n locationBtnWrap.appendChild(locationCloseBtn);\r\n btnWrap.appendChild(locationBtnWrap);\r\n\r\n consumerBtnWrap = document.createElement('div');\r\n consumerBtnWrap.classList.add('filterSelectionBtnWrap');\r\n consumerBtnWrap.appendChild(consumerBtn);\r\n consumerBtnWrap.appendChild(consumerCloseBtn);\r\n btnWrap.appendChild(consumerBtnWrap);\r\n\r\n employeeBtnWrap = document.createElement('div');\r\n employeeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n employeeBtnWrap.appendChild(employeeBtn);\r\n employeeBtnWrap.appendChild(employeeCloseBtn);\r\n btnWrap.appendChild(employeeBtnWrap);\r\n\r\n categoryBtnWrap = document.createElement('div');\r\n categoryBtnWrap.classList.add('filterSelectionBtnWrap');\r\n categoryBtnWrap.appendChild(categoryBtn);\r\n categoryBtnWrap.appendChild(categoryCloseBtn);\r\n btnWrap.appendChild(categoryBtnWrap);\r\n\r\n showBtnWrap = document.createElement('div');\r\n showBtnWrap.classList.add('filterSelectionBtnWrap');\r\n showBtnWrap.appendChild(showBtn);\r\n showBtnWrap.appendChild(showCloseBtn);\r\n btnWrap.appendChild(showBtnWrap);\r\n\r\n fromDateBtnWrap = document.createElement('div');\r\n fromDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n fromDateBtnWrap.appendChild(fromDateBtn);\r\n btnWrap.appendChild(fromDateBtnWrap);\r\n\r\n toDateBtnWrap = document.createElement('div');\r\n toDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n toDateBtnWrap.appendChild(toDateBtn);\r\n btnWrap.appendChild(toDateBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'locationBtn') {\r\n filterData.locationName = 'All';\r\n retrieveData.locationId = '%';\r\n filterData.location = '%';\r\n }\r\n if (closeFilter == 'consumerBtn') {\r\n filterData.consumerName = 'All';\r\n retrieveData.consumerId = '%';\r\n filterData.consumer = '%';\r\n }\r\n if (closeFilter == 'employeeBtn') {\r\n retrieveData.employeeId = '%';\r\n filterData.beta = '%';\r\n filterData.betaName = 'All';\r\n }\r\n if (closeFilter == 'categoryBtn') {\r\n retrieveData.subcategoryId = '%';\r\n filterData.category = '%';\r\n filterData.categoryName = 'All';\r\n }\r\n\r\n if (closeFilter == 'showBtn') {\r\n filterData.show = 'All';\r\n }\r\n\r\n populateSelectedFilterValues();\r\n incidentTrackingAjax.getITReviewTableData(retrieveData, populateOverviewTable);\r\n }\r\n\r\n function saveFilterData(data) {\r\n filterData.alpha = data.alphaId ? data.alphaId : filterData.alpha;\r\n filterData.alphaName = data.alphaName ? data.alphaName : filterData.alphaName;\r\n filterData.beta = data.betaId ? data.betaId : filterData.beta;\r\n filterData.betaName = data.betaName ? data.betaName : filterData.betaName;\r\n filterData.location = data.locationId ? data.locationId : filterData.location;\r\n filterData.locationName = data.locationName ? data.locationName : data.locationName == '' ? null : filterData.locationName;\r\n filterData.consumer = data.consumerId ? data.consumerId : filterData.consumer;\r\n filterData.consumerName = data.consumerName ? data.consumerName : filterData.consumerName;\r\n filterData.category = data.categoryId ? data.categoryId : filterData.category;\r\n filterData.categoryName = data.categoryName ? data.categoryName : filterData.categoryName;\r\n filterData.fromDate = data.fromDate ? data.fromDate : filterData.fromDate;\r\n filterData.toDate = data.toDate ? data.toDate : filterData.toDate;\r\n filterData.show = data.show ? data.show : filterData.show;\r\n }\r\n function populateFilterDropdowns() {\r\n incidentTrackingAjax.getReviewPageLocations(populateLocationsDropdown);\r\n //incidentTrackingAjax.getReviewPageLocations(populateConsumersDropdown);\r\n getConsumerDropdownData();\r\n incidentTrackingAjax.getIncidentCategories(populateCategoriesDropdown);\r\n incidentTrackingAjax.getITReviewPageEmployeeListAndSubList(\r\n $.session.PeopleId,\r\n populateUserAndEmployeeDropdowns,\r\n );\r\n }\r\n function getFromDateValue() {\r\n if (filterData.fromDate) return filterData.fromDate;\r\n\r\n var fromDate = convertDaysBack($.session.defaultIncidentTrackingDaysBack);\r\n filterData.fromDate = fromDate;\r\n return fromDate;\r\n }\r\n function getToDateValue() {\r\n if (filterData.toDate) return filterData.toDate;\r\n\r\n var today = UTIL.getTodaysDate();\r\n filterData.toDate = today;\r\n return today;\r\n }\r\n function buildFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({\r\n classNames: ['incidentTrackingFilterPopup'],\r\n });\r\n\r\n alphaDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Supervisor',\r\n style: 'secondary',\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n consumerDropdown = dropdown.build({\r\n dropdownId: 'consumerDropdown',\r\n label: 'Consumer',\r\n style: 'secondary',\r\n });\r\n betaDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Employee',\r\n style: 'secondary',\r\n });\r\n categoryDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Category/Subcategory',\r\n style: 'secondary',\r\n });\r\n showDropdown = dropdown.build({\r\n dropdownId: 'showDropdown',\r\n label: \"Show\",\r\n style: \"secondary\"\r\n });\r\n fromDateInput = input.build({\r\n label: 'From Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: getFromDateValue(),\r\n });\r\n toDateInput = input.build({\r\n label: 'To Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: getToDateValue(),\r\n });\r\n applyFilterBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n // Build Popup\r\n if (IsShow == 'ALL' || IsShow == 'supervisorBtn')\r\n filterPopup.appendChild(alphaDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'locationBtn')\r\n filterPopup.appendChild(locationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'consumerBtn')\r\n filterPopup.appendChild(consumerDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'employeeBtn')\r\n filterPopup.appendChild(betaDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'categoryBtn')\r\n filterPopup.appendChild(categoryDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'showBtn')\r\n filterPopup.appendChild(showDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'fromDateBtn')\r\n filterPopup.appendChild(fromDateInput);\r\n if (IsShow == 'ALL' || IsShow == 'toDateBtn')\r\n filterPopup.appendChild(toDateInput);\r\n\r\n filterPopup.appendChild(applyFilterBtn);\r\n\r\n // Populate Dropodowns\r\n populateFilterDropdowns();\r\n }\r\n function showFilterPopup(IsShow) {\r\n // popup\r\n buildFilterPopup(IsShow);\r\n POPUP.show(filterPopup);\r\n // Setup Events\r\n filterDropdownEventSetup();\r\n }\r\n function setupFiltering() {\r\n const filterAndReportsBtnsWrap = document.createElement('div');\r\n filterAndReportsBtnsWrap.classList.add('filterAndReportsBtnsWrap');\r\n\r\n function getFilterValues() {\r\n return (filterValues = {\r\n ITLocation: retrieveData.locationId,\r\n ITConsumer: retrieveData.consumerId ? retrieveData.consumerId : '%',\r\n ITFromDate: filterData.fromDate,\r\n ITToDate: filterData.toDate,\r\n });\r\n }\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: function () {\r\n // Iterate through each item in the buttonsData array\r\n buttonsData.forEach(function (buttonData) {\r\n buttonData.filterValues = getFilterValues();\r\n });\r\n\r\n generateReports.showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n\r\n reportsBtn = createMainReportButton([{ text: 'Incident Reporting Log' }]);\r\n\r\n DOM.ACTIONCENTER.appendChild(filterAndReportsBtnsWrap);\r\n filterAndReportsBtnsWrap.appendChild(reportsBtn);\r\n\r\n buildFilterPopup('ALL');\r\n }\r\n function filterDropdownEventSetup() {\r\n var tmpAlphaId;\r\n var tmpAlphaName;\r\n var tmpBetaId;\r\n var tmpBetaName;\r\n var tmpLocationId;\r\n var tmpLocationName;\r\n var tmpConsumerId;\r\n var tmpConsumerName;\r\n var tmpCategoryId;\r\n var tmpCategoryName;\r\n var tmpToDate;\r\n var tmpFromDate;\r\n var tmpShow;\r\n\r\n alphaDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedAlphaId = selectedOption.value;\r\n // update retrieveData obj\r\n retrieveData.supervisorId = selectedAlphaId;\r\n retrieveData.locationId = '%';\r\n retrieveData.consumerId = '%';\r\n retrieveData.employeeId = '%';\r\n retrieveData.subcategoryId = '%';\r\n retrieveData.viewCaseLoad = $.session.incidentTrackingViewCaseLoad;\r\n // temp cache data\r\n tmpAlphaId = selectedAlphaId;\r\n tmpAlphaName = selectedOption.innerHTML;\r\n // re populate beta dropwond based off selected alpha\r\n alphaBetaData.forEach(d => {\r\n if (d.alpha.personId === selectedAlphaId) {\r\n changedSelectedAlphaBetas = d.betas;\r\n populateBetas(d.betas);\r\n }\r\n });\r\n });\r\n betaDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedBetaData.id = selectedOption.value;\r\n selectedBetaData.name = selectedOption.innerHTML;\r\n retrieveData.employeeId = selectedBetaData.id;\r\n\r\n // temp cache data\r\n tmpBetaId = selectedBetaData.id;\r\n tmpBetaName = selectedBetaData.name;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n retrieveData.locationId = selectedOption.value;\r\n // temp cache data \r\n tmpLocationId = selectedOption.value;\r\n tmpLocationName = selectedOption.innerHTML;\r\n });\r\n consumerDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n retrieveData.consumerId = selectedOption.value;\r\n // temp cache data\r\n tmpConsumerId = selectedOption.value;\r\n tmpConsumerName = selectedOption.innerHTML;\r\n });\r\n categoryDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n retrieveData.subcategoryId = selectedOption.value;\r\n // temp cache data\r\n tmpCategoryId = selectedOption.value;\r\n tmpCategoryName = selectedOption.innerHTML;\r\n });\r\n showDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n // temp cache data\r\n tmpShow = selectedOption.innerHTML;\r\n });\r\n toDateInput.addEventListener('change', event => {\r\n var selectedDate = event.target.value;\r\n if (selectedDate === '') {\r\n toDateInput.classList.add('error');\r\n applyFilterBtn.classList.add('disabled');\r\n } else {\r\n toDateInput.classList.remove('error');\r\n applyFilterBtn.classList.remove('disabled');\r\n }\r\n retrieveData.toDate = selectedDate;\r\n filterData.toDate = selectedDate;\r\n toDateVal = selectedDate;\r\n // temp cache data\r\n tmpToDate = selectedDate;\r\n });\r\n fromDateInput.addEventListener('change', event => {\r\n var selectedDate = event.target.value;\r\n if (selectedDate === '') {\r\n fromDateInput.classList.add('error');\r\n applyFilterBtn.classList.add('disabled');\r\n } else {\r\n fromDateInput.classList.remove('error');\r\n applyFilterBtn.classList.remove('disabled');\r\n }\r\n retrieveData.fromDate = selectedDate;\r\n // temp cache data\r\n tmpFromDate = selectedDate;\r\n });\r\n\r\n applyFilterBtn.addEventListener('click', event => {\r\n POPUP.hide(filterPopup);\r\n saveFilterData({\r\n alphaId: tmpAlphaId,\r\n alphaName: tmpAlphaName,\r\n betaId: tmpBetaId,\r\n betaName: tmpBetaName,\r\n locationId: tmpLocationId,\r\n locationName: tmpLocationName,\r\n consumerId: tmpConsumerId,\r\n consumerName: tmpConsumerName,\r\n categoryId: tmpCategoryId,\r\n categoryName: tmpCategoryName,\r\n toDate: tmpToDate,\r\n fromDate: tmpFromDate,\r\n show: tmpShow\r\n });\r\n populateSelectedFilterValues();\r\n incidentTrackingAjax.getITReviewTableData(retrieveData, populateOverviewTable);\r\n });\r\n }\r\n // Dropdowns\r\n //------------------------------------\r\n function populateAlphas(alphas) {\r\n var data = alphas.map(a => {\r\n var value = a.personId;\r\n var text = `${a.lastName}, ${a.firstName}`;\r\n\r\n return {\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n if (filterData.alpha) {\r\n dropdown.populate(alphaDropdown, data, filterData.alpha);\r\n } else {\r\n dropdown.populate(alphaDropdown, data);\r\n filterData.alpha = data[0].value;\r\n filterData.alphaName = data[0].text;\r\n }\r\n }\r\n function populateBetas(betas) {\r\n var data = betas.map(b => {\r\n var value = b.personId;\r\n var text = `${b.lastName}, ${b.firstName}`;\r\n\r\n return {\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n var defaultOption = {\r\n value: '%',\r\n text: 'All',\r\n };\r\n data.unshift(defaultOption);\r\n\r\n var filteredBetas = betas.filter(b => b.personId === filterData.beta);\r\n\r\n if (filteredBetas.length > 0) {\r\n dropdown.populate(betaDropdown, data, filterData.beta);\r\n } else {\r\n dropdown.populate(betaDropdown, data);\r\n filterData.betaName = 'All Employees';\r\n }\r\n }\r\n function populateUserAndEmployeeDropdowns(res) {\r\n function decipherXML(res) {\r\n var xmlDoc,\r\n allEmployees = [];\r\n xmlDoc = UTIL.parseXml(\r\n '' + res.getITReviewPageEmployeeListAndSubListResult,\r\n );\r\n\r\n var employeeobjectArray = [].slice.call(xmlDoc.getElementsByTagName('employeeobject'));\r\n employeeobjectArray.forEach(employeeObject => {\r\n var alphaNode = [].slice.call(employeeObject.getElementsByTagName('alpha'))[0];\r\n var betasNode = [].slice.call(employeeObject.getElementsByTagName('beta'));\r\n var alpha = {\r\n personId: [].slice.call(alphaNode.getElementsByTagName('personid'))[0].textContent,\r\n firstName: [].slice.call(alphaNode.getElementsByTagName('firstname'))[0].textContent,\r\n lastName: [].slice.call(alphaNode.getElementsByTagName('lastname'))[0].textContent,\r\n userName: [].slice.call(alphaNode.getElementsByTagName('username'))[0].textContent,\r\n };\r\n var betas = [];\r\n if (betasNode !== undefined) {\r\n betasNode.forEach(betaNode => {\r\n var beta = {\r\n personId: [].slice.call(betaNode.getElementsByTagName('personid'))[0].textContent,\r\n firstName: [].slice.call(betaNode.getElementsByTagName('firstname'))[0].textContent,\r\n lastName: [].slice.call(betaNode.getElementsByTagName('lastname'))[0].textContent,\r\n userName: [].slice.call(betaNode.getElementsByTagName('username'))[0].textContent,\r\n };\r\n betas.push(beta);\r\n });\r\n }\r\n var alphaAndBeta;\r\n if (betas.length > 0) {\r\n alphaAndBeta = {\r\n alpha: alpha,\r\n betas: betas,\r\n };\r\n } else {\r\n alphaAndBeta = {\r\n alpha: alpha,\r\n betas: [],\r\n };\r\n }\r\n allEmployees.push(alphaAndBeta);\r\n });\r\n return allEmployees;\r\n }\r\n\r\n alphaBetaData = decipherXML(res);\r\n var defaultAlpha;\r\n var alphas = [];\r\n // move default alpha to start\r\n alphaBetaData = alphaBetaData.filter(d => {\r\n if (d.alpha.personId === $.session.PeopleId) defaultAlpha = d;\r\n return d.alpha.personId !== $.session.PeopleId;\r\n });\r\n alphaBetaData.unshift(defaultAlpha);\r\n // set aside alphas\r\n alphaBetaData.forEach(d => {\r\n if (d !== undefined) {\r\n alphas.push(d.alpha);\r\n }\r\n });\r\n // initial population of dropdowns\r\n populateAlphas(alphas);\r\n if (!changedSelectedAlphaBetas) {\r\n populateBetas(alphaBetaData[0].betas);\r\n } else {\r\n populateBetas(changedSelectedAlphaBetas);\r\n }\r\n }\r\n function populateLocationsDropdown(res) {\r\n var data = res.map(r => {\r\n var value = r.ID;\r\n var text = r.Name;\r\n\r\n return {\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n var defaultOption = {\r\n value: '%',\r\n text: 'All',\r\n };\r\n data.unshift(defaultOption);\r\n\r\n if (filterData.location) {\r\n dropdown.populate(locationDropdown, data, filterData.location);\r\n } else {\r\n dropdown.populate(locationDropdown, data);\r\n filterData.locationName = 'All Locations';\r\n }\r\n\r\n const showDropdownData = ([\r\n { id: 1, value: 'Unread', text: 'Unread' },\r\n { id: 2, value: 'Read', text: 'Read' },\r\n ]);\r\n showDropdownData.unshift({ id: null, value: 'All', text: 'All' });\r\n dropdown.populate(showDropdown, showDropdownData, filterData.show);\r\n }\r\n\r\n function populateConsumersDropdown() {\r\n populateDropdownData = consumerDropdownData.map(el => {\r\n return {\r\n text: `${el.LN}, ${el.FN}`,\r\n value: el.id,\r\n };\r\n });\r\n populateDropdownData.unshift({ text: 'All', value: '%' });\r\n\r\n if (filterData.consumer) {\r\n dropdown.populate(consumerDropdown, populateDropdownData, filterData.consumer);\r\n } else {\r\n dropdown.populate(consumerDropdown, populateDropdownData);\r\n filterData.consumerName = 'All Consumers';\r\n }\r\n }\r\n\r\n function getConsumerDropdownData() {\r\n return new Promise((resolve, reject) => {\r\n caseNotesAjax.getConsumersForCNFilter(res => {\r\n consumerDropdownData = res;\r\n populateConsumersDropdown();\r\n resolve('success');\r\n });\r\n });\r\n }\r\n\r\n function populateCategoriesDropdown(res) {\r\n var data = res.map(r => {\r\n var value = r.subcategoryId;\r\n var text = r.incidentCategory;\r\n\r\n return {\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n var defaultOption = {\r\n value: '%',\r\n text: 'All',\r\n };\r\n data.unshift(defaultOption);\r\n\r\n if (filterData.category) {\r\n dropdown.populate(categoryDropdown, data, filterData.category);\r\n } else {\r\n dropdown.populate(categoryDropdown, data);\r\n filterData.categoryName = 'All Categories';\r\n }\r\n }\r\n // Incident Overview Email Button and Popup\r\n async function showIncidentEmailPopup(incidentId, consumerId) {\r\n //*--------------------------------------\r\n //* POPUP\r\n //*--------------------------------------\r\n const incidentEmailPopup = POPUP.build({\r\n header: 'Email Report',\r\n id: 'sig_mainPopup',\r\n });\r\n\r\n const importFromRelationshipsBtn = button.build({\r\n text: 'SELECT FROM RELATIONSHIPS',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n popFromRelationships(consumerId);\r\n },\r\n });\r\n importFromRelationshipsBtn.style.width = '100%';\r\n\r\n //* INPUTS\r\n //*------------------------------\r\n const toAddress = input.build({\r\n label: 'Email To Addresses:',\r\n callbackType: 'input',\r\n id: 'toAddress',\r\n callback: event => {\r\n // If the toAddresses field is blank, disable the send button\r\n const inputField = document.getElementById('toAddress');\r\n if (inputField.value === '') {\r\n sendBtn.classList.add('disabled');\r\n } else {\r\n sendBtn.classList.remove('disabled');\r\n }\r\n\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.toAddresses = event.target.value;\r\n },\r\n });\r\n\r\n const ccAddress = input.build({\r\n label: 'Email Cc Addresses:',\r\n callbackType: 'input',\r\n callback: event => {\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.ccAddresses = event.target.value;\r\n },\r\n });\r\n\r\n const bccAddress = input.build({\r\n label: 'Email Bcc Addresses:',\r\n callbackType: 'input',\r\n callback: event => {\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.bccAddresses = event.target.value;\r\n },\r\n });\r\n\r\n const emailSubject = input.build({\r\n label: 'Email Subject:',\r\n callbackType: 'input',\r\n value: 'Incidents [Composite] by Consumer, Date',\r\n callback: event => {\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.emailSubject = event.target.value;\r\n },\r\n });\r\n\r\n const emailBody = input.build({\r\n label: 'Email Body:',\r\n callbackType: 'input',\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n callback: event => {\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.emailBody = event.target.value;\r\n },\r\n });\r\n\r\n //* BUTTONS\r\n //*------------------------------\r\n const sendBtn = button.build({\r\n id: 'incidentEmailSendBtn',\r\n text: 'send',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n incidentTrackingAjax.generateIncidentTrackingReport(\r\n incidentId,\r\n checkIfITReportIsReadyInterval,\r\n );\r\n POPUP.hide(incidentEmailPopup);\r\n },\r\n });\r\n\r\n const cancelBtn = button.build({\r\n id: 'incidentEmailPopup_cancel',\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(incidentEmailPopup);\r\n },\r\n });\r\n\r\n const result = await incidentTrackingAjax.getRelationshipData(consumerId);\r\n const { getRelationshipDataResult } = result;\r\n gkRelationships = getRelationshipDataResult;\r\n\r\n //* Add elements to popup\r\n //*------------------------------\r\n incidentEmailPopup.appendChild(importFromRelationshipsBtn);\r\n if (gkRelationships.length == 0) importFromRelationshipsBtn.classList.add('disabled');\r\n incidentEmailPopup.appendChild(toAddress);\r\n incidentEmailPopup.appendChild(ccAddress);\r\n incidentEmailPopup.appendChild(bccAddress);\r\n incidentEmailPopup.appendChild(emailSubject);\r\n incidentEmailPopup.appendChild(emailBody);\r\n\r\n const mainWrap = document.createElement('div');\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(sendBtn);\r\n sendBtn.classList.add('disabled');\r\n btnWrap2.appendChild(cancelBtn);\r\n mainWrap.appendChild(btnWrap2);\r\n incidentEmailPopup.appendChild(mainWrap);\r\n\r\n POPUP.show(incidentEmailPopup);\r\n }\r\n\r\n async function popFromRelationships(consumerId) {\r\n const mainPopup = document.getElementById('sig_mainPopup');\r\n const emailSendBtn = document.getElementById('incidentEmailSendBtn');\r\n mainPopup.style.display = 'none';\r\n\r\n const importPopup = POPUP.build({\r\n id: 'sig_importPopup',\r\n closeCallback: () => {\r\n overlay.show();\r\n mainPopup.style.removeProperty('display');\r\n },\r\n });\r\n const relationshipSection = document.createElement('div');\r\n\r\n relationshipDoneBtn = button.build({\r\n id: 'incidentDoneBtn',\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(importPopup);\r\n selectedRelation = selectedRelation.filter(n => n);\r\n emailString = selectedRelation.toString().replaceAll(\",\", \";\"); \r\n document.getElementById('toAddress').value = emailString;\r\n incidentTrackingEmailData.toAddresses = emailString; \r\n if (emailString == '')\r\n emailSendBtn.classList.add('disabled');\r\n else\r\n emailSendBtn.classList.remove('disabled');\r\n overlay.show();\r\n mainPopup.style.removeProperty('display');\r\n selectedRelation = [];\r\n },\r\n });\r\n\r\n relationshipCancelBtn = button.build({\r\n id: 'incidentCancelBtn',\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(importPopup);\r\n },\r\n });\r\n gkRelationships.forEach(rel => {\r\n const name = contactInformation.cleanName(rel);\r\n const address = contactInformation.cleanAddress(rel, true);\r\n const cityStateZip = contactInformation.cleanCityStateZip(rel);\r\n\r\n const relationshipDisp = document.createElement('div');\r\n relationshipDisp.innerHTML = `Name: ${name}`;\r\n relationshipDisp.classList.add('sig_gkRelationships');\r\n\r\n relationshipDisp.addEventListener('click', e => {\r\n const isSelected = e.target.classList.contains('selected');\r\n if (isSelected) {\r\n e.target.classList.remove('selected');\r\n selectedRelation = selectedRelation.filter(e => e !== rel.email);\r\n } else {\r\n e.target.classList.add('selected');\r\n selectedRelation.push(rel.email);\r\n }\r\n toggleAssignButton();\r\n });\r\n\r\n relationshipSection.appendChild(relationshipDisp);\r\n });\r\n\r\n importPopup.appendChild(relationshipSection);\r\n\r\n const mainWrap = document.createElement('div');\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(relationshipDoneBtn);\r\n relationshipDoneBtn.classList.add('disabled');\r\n btnWrap2.appendChild(relationshipCancelBtn);\r\n mainWrap.appendChild(btnWrap2);\r\n importPopup.appendChild(mainWrap);\r\n\r\n POPUP.show(importPopup);\r\n\r\n }\r\n\r\n function toggleAssignButton() {\r\n if (selectedRelation.length === 0) {\r\n relationshipDoneBtn.classList.add('disabled');\r\n return;\r\n }\r\n relationshipDoneBtn.classList.remove('disabled');\r\n }\r\n\r\n // Repeatedly checks to see if the report is ready\r\n function checkIfITReportIsReadyInterval(res) {\r\n seconds = parseInt($.session.reportSeconds);\r\n intSeconds = seconds * 1000;\r\n interval = setInterval(async () => {\r\n await checkITReportExists(res);\r\n }, intSeconds);\r\n }\r\n\r\n async function checkITReportExists(res) {\r\n await incidentTrackingAjax.checkIfITReportExists(res, callITReport);\r\n }\r\n\r\n // Retrieves the report when it is ready\r\n function callITReport(res, reportScheduleId) {\r\n if (res.indexOf('1') === -1) {\r\n //do nothing\r\n } else {\r\n incidentTrackingAjax.sendIncidentTrackingReport(reportScheduleId, incidentTrackingEmailData);\r\n clearInterval(interval);\r\n reportRunning = false;\r\n\r\n // Reset values of email data\r\n incidentTrackingEmailData = { emailSubject: 'Incidents [Composite] by Consumer, Date' };\r\n }\r\n }\r\n\r\n // OVERVIEW TABLE\r\n //------------------------------------\r\n function buildOverviewTable() {\r\n populateSelectedFilterValues();\r\n\r\n if (!$.session.incidentTrackingEmailIncident) {\r\n var tableOptions = {\r\n tableId: 'incidentOverviewTable',\r\n heading: 'Incident Overview',\r\n columnHeadings: ['Location', 'Entered By', 'Date', 'Time', 'Type', 'Consumer(s) Involved'],\r\n };\r\n } else {\r\n var tableOptions = {\r\n tableId: 'incidentOverviewTable',\r\n heading: 'Incident Overview',\r\n columnHeadings: ['Location', 'Entered By', 'Date', 'Time', 'Type', 'Consumer(s) Involved'],\r\n endIcon: true,\r\n };\r\n }\r\n\r\n overviewTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = overviewTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Location\r\n headers[1].setAttribute('data-type', 'string'); // Entered By\r\n headers[2].setAttribute('data-type', 'date'); //Date\r\n headers[3].setAttribute('data-type', 'date'); // Time\r\n headers[4].setAttribute('data-type', 'string'); // Type \r\n headers[5].setAttribute('data-type', 'string'); // Consumer(s) Involved \r\n\r\n\r\n DOM.ACTIONCENTER.appendChild(overviewTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(overviewTable);\r\n }\r\n function populateOverviewTable(res) {\r\n var incidents = {};\r\n res.forEach(r => {\r\n if (!incidents[r.incidentId]) {\r\n incidents[r.incidentId] = r;\r\n } else {\r\n const dupName = incidents[r.incidentId].consumerName.includes(r.consumerName);\r\n if (!dupName) {\r\n incidents[r.incidentId].consumerName += `, ${r.consumerName}`;\r\n }\r\n incidents[r.incidentId].viewedBy += `, ${r.viewedBy}`;\r\n }\r\n });\r\n\r\n var keys = Object.keys(incidents);\r\n const removeArray = [];\r\n var count = 0;\r\n var data = keys\r\n .filter(k => {\r\n var obj = incidents[k];\r\n\r\n if ($.session.incidentTrackingViewPerm.length !== 0) {\r\n if (\r\n obj.description !== '' &&\r\n !$.session.incidentTrackingViewPerm.includes(obj.description.toLowerCase())\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n })\r\n .map(key => {\r\n var obj = incidents[key];\r\n\r\n var rowId = obj.incidentId;\r\n var location = obj.locationName;\r\n var enteredBy = obj.supervisorName;\r\n var date = obj.incidentDate.split(' ')[0];\r\n var time = UTIL.convertFromMilitary(obj.incidentTime);\r\n var category = obj.incidentCategory;\r\n var consumersInvolved = obj.consumerName.replace(/\\|/g, ', ');\r\n var viewedOn = obj.viewedOn ? true : false;\r\n var orginUser =\r\n obj.originallyEnteredBy.toLowerCase() === $.session.UserId.toLowerCase() ? true : false;\r\n var userHasViewed = obj.viewedBy.includes($.session.UserId) ? true : false;\r\n var showBold;\r\n\r\n if (!orginUser && !userHasViewed) {\r\n showBold = true;\r\n }\r\n\r\n if (filterData.show == 'Read' && showBold) {\r\n removeArray.push(count);\r\n }\r\n else if (filterData.show == 'Unread' && !showBold) {\r\n removeArray.push(count);\r\n }\r\n count = count + 1;\r\n var incidentEmailBtn = document.createElement('button');\r\n incidentEmailBtn.classList.add('btn', 'btn--secondary', 'btn--contained');\r\n incidentEmailBtn.textContent = 'EMAIL';\r\n incidentEmailBtn.style.zIndex = '9999';\r\n\r\n if (!$.session.incidentTrackingEmailIncident) {\r\n return {\r\n id: rowId,\r\n values: [location, enteredBy, date, time, category, consumersInvolved],\r\n attributes: [{ key: 'data-viewed', value: showBold }],\r\n onClick: async event => {\r\n await incidentTrackingAjax.updateIncidentViewByUser({\r\n token: $.session.Token,\r\n incidentId: rowId,\r\n userId: $.session.UserId,\r\n });\r\n DOM.scrollToTopOfPage();\r\n reviewIncident.init(event.target.id);\r\n },\r\n };\r\n } else {\r\n return {\r\n id: rowId,\r\n values: [location, enteredBy, date, time, category, consumersInvolved],\r\n attributes: [{ key: 'data-viewed', value: showBold }],\r\n endIcon: incidentEmailBtn.outerHTML,\r\n endIconCallback: e => {\r\n e.stopPropagation();\r\n var isParentRow = e.target.parentNode.classList.contains('table__row');\r\n if (!isParentRow) return;\r\n\r\n showIncidentEmailPopup(obj.incidentId, obj.consumerId);\r\n },\r\n onClick: async event => {\r\n await incidentTrackingAjax.updateIncidentViewByUser({\r\n token: $.session.Token,\r\n incidentId: rowId,\r\n userId: $.session.UserId,\r\n });\r\n DOM.scrollToTopOfPage();\r\n reviewIncident.init(event.target.id);\r\n },\r\n };\r\n }\r\n });\r\n\r\n for (let i = removeArray.length - 1; i >= 0; i--)\r\n data.splice(removeArray[i], 1);\r\n\r\n data.sort(function (a, b) {\r\n var dateOne = UTIL.formatDateToIso(a.values[2]);\r\n var dateTwo = UTIL.formatDateToIso(b.values[2]);\r\n dateOne = new Date(dateOne);\r\n dateTwo = new Date(dateTwo);\r\n var newDateOne = dateOne.getTime();\r\n var newDateTwo = dateTwo.getTime();\r\n\r\n var timeOne = a.values[3];\r\n var timeTwo = b.values[3];\r\n timeOne = UTIL.convertToMilitary(timeOne);\r\n timeTwo = UTIL.convertToMilitary(timeTwo);\r\n timeOne = parseFloat(`${parseInt(timeOne.split(':')[0])}.${parseInt(timeOne.split(':')[1])}`);\r\n timeTwo = parseFloat(`${parseInt(timeTwo.split(':')[0])}.${parseInt(timeTwo.split(':')[1])}`);\r\n\r\n if (newDateOne === newDateTwo) {\r\n return timeOne - timeTwo;\r\n }\r\n\r\n return newDateOne > newDateTwo ? -1 : 1;\r\n });\r\n\r\n table.populate(overviewTable, data);\r\n }\r\n\r\n function init() {\r\n setActiveModuleSectionAttribute('incidentTracking-overview');\r\n DOM.clearActionCenter();\r\n\r\n retrieveData.supervisorId = $.session.PeopleId;\r\n retrieveData.token = $.session.Token;\r\n retrieveData.viewCaseLoad = $.session.incidentTrackingViewCaseLoad;\r\n retrieveData.toDate = getToDateValue();\r\n retrieveData.fromDate = getFromDateValue();\r\n\r\n setupFiltering();\r\n\r\n //never need mini roster on reviews\r\n roster2.removeMiniRosterBtn();\r\n\r\n incidentTrackingAjax.getITReviewTableData(retrieveData, function (results) {\r\n buildOverviewTable();\r\n populateOverviewTable(results);\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const OODFormTransportation = (() => {\r\n\r\n //Inputs\r\n let serviceDateInput;\r\n let startTimeInput;\r\n let endTimeInput;\r\n\r\n // buttons\r\nlet saveNoteBtn;\r\nlet saveAndNewNoteBtn;\r\nlet cancelNoteBtn;\r\nlet updateNoteBtn;\r\nlet deleteNoteBtn;\r\n\r\n// OOD Transportation Edit Data\r\nlet consumerId;\r\n//let personId;\r\nlet OODTransportationId;\r\nlet serviceDate;\r\nlet startTime;\r\nlet endTime;\r\nlet startLocation;\r\nlet endLocation;\r\nlet numberInVehicle; \r\n\r\n//OOD Transportation Data\r\nlet caseManagerId;\r\nlet userId;\r\nlet serviceId;\r\nlet referenceNumber;\r\n\r\nlet formReadOnly;\r\n\r\nlet currentEntryUserId;\r\n\r\n async function init(OODTransportationData, currentConsumer, selectedConsumerServiceId, selectedConsumerReferenceNumber, currentRecordUserId, selectedServiceDate, clickSource = 'OODGrid') {\r\n\r\n formReadOnly = false;\r\n\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (OODTransportationData && Object.keys(OODTransportationData).length !== 0) {\r\n // consumerId = OODTransportationData[0].consumerId; // consumer_id from consumers table for the selected consumer\r\n // personId = OODTransportationData[0].personId; //the person_id from the persons table of the logged in user\r\n OODTransportationId = OODTransportationData[0].OODTransportationId;\r\n serviceDate = OODTransportationData[0].serviceDate; // Service Date from page\r\n startTime = OODTransportationData[0].startTime; // Start Time from page\r\n endTime = OODTransportationData[0].endTime; // end Time from page\r\n numberInVehicle = OODTransportationData[0].numberInVehicle; // # In Vehicle Per Trip from page\r\n startLocation = OODTransportationData[0].startLocation; // Start Location Street/City from page\r\n endLocation = OODTransportationData[0].endLocation; // End Location Street/City from page\r\n userId = $.session.UserId; // user_id from users_groups of the user who made the last update to the entry\r\n \r\n } else {\r\n // consumerId = OODTransportationData[0].consumerId; // consumer_id from consumers table for the selected consumer\r\n // personId = OODTransportationData[0].personId; //the person_id from the persons table of the logged in user\r\n OODTransportationId = '0';\r\n serviceDate = selectedServiceDate;\r\n //serviceDate = UTIL.getTodaysDate();\r\n startTime = '';\r\n endTime = '';\r\n numberInVehicle = '';\r\n startLocation = '';\r\n endLocation = '';\r\n userId = $.session.UserId;\r\n referenceNumber = selectedConsumerReferenceNumber; // the value from consumer_services_master.reference_number for the service selected from NEW ENTRY form in previous page\r\n\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'newEntry' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if ((userId !== currentRecordUserId)) {\r\n formReadOnly = true;\r\n }\r\n\r\n serviceDateInput = input.build({\r\n\t\t\ttype: 'date',\r\n\t\t\tlabel: 'Service Date',\r\n\t\t\tstyle: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n //readonly: ((userId !== currentRecordUserId) || (!$.session.OODUpdate && !$.session.OODInsert)) ? true : false,\r\n readonly: true,\r\n\t\t\t//value: filterValues.serviceDateStart\r\n\t\t });\r\n\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n value: startTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: startTime,\r\n });\r\n\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n value: endTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: endTime,\r\n });\r\n\r\n numberInVehicleInput = input.build({\r\n label: '# in Vehicle Per Trip',\r\n type: 'number',\r\n style: 'secondary',\r\n value: numberInVehicle === '0' || numberInVehicle === '0.00' ? '' : numberInVehicle,\r\n readonly: formReadOnly,\r\n attributes: [{ key: 'min', value: '0' }],\r\n });\r\n\r\n startLocationInput = input.build({\r\n label: 'Start Location Street/City',\r\n value: startLocation,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n endLocationInput = input.build({\r\n label: 'End Location Street/City',\r\n value: endLocation,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n saveNoteBtn = button.build({\r\n text: 'Save',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => { \r\n checkRequiredFields()\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length === 0)) {\r\n insertFormData('save');\r\n } \r\n },\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n checkRequiredFields()\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length === 0)) {\r\n insertFormData('saveandNew');\r\n } \r\n },\r\n });\r\n updateNoteBtn = button.build({\r\n text: 'update',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => { \r\n updateFormData(); \r\n },\r\n });\r\n deleteNoteBtn = button.build({\r\n text: 'Delete',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n //TODO JOE; Look at DElete\r\n deleteConfirmation(OODTransportationId); \r\n },\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style : 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer)\r\n\r\n let container = document.createElement(\"div\");\r\n container.classList.add(\"monthlyForm\");\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Transportation - OOD Form 10';\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n const inputContainer0 = document.createElement('div');\r\n inputContainer0.classList.add('ood_form4monthlyplacement_inputContainer1'); \r\n inputContainer0.appendChild(serviceDateInput);\r\n inputContainer0.appendChild(startTimeInput);\r\n inputContainer0.appendChild(endTimeInput); \r\n inputContainer0.appendChild(numberInVehicleInput);\r\n\r\n container.appendChild(inputContainer0);\r\n \r\n container.appendChild(startLocationInput);\r\n container.appendChild(endLocationInput);\r\n \r\n let updatecontainer = document.createElement(\"div\");\r\n updatecontainer.classList.add(\"updatecontainer\");\r\n\r\n let updatemessage = document.createElement(\"div\");\r\n updatemessage.classList.add(\"updatemessage\");\r\n\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n (OODTransportationId == '0') ? btnWrap.appendChild(saveNoteBtn) : btnWrap.appendChild(updateNoteBtn);\r\n (OODTransportationId == '0') ? btnWrap.appendChild(saveAndNewNoteBtn) : btnWrap.appendChild(deleteNoteBtn) ;\r\n\r\n\r\n let btnWrap2 = document.createElement(\"div\");\r\n btnWrap2.classList.add(\"btnWrap\");\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n\r\n let btnRow = document.createElement(\"div\");\r\n btnRow.classList.add(\"btnRow\");\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n\r\n container.appendChild(btnRow);\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n // call Required Fields\r\n checkRequiredFields();\r\n }\r\n\r\n function checkRequiredFields() {\r\n\r\n var numInVehicleInput = numberInVehicleInput.querySelector('input');\r\n\r\n if (numInVehicleInput.value === '' || numInVehicleInput.value === 0 || numInVehicleInput.value <= 0) {\r\n numberInVehicleInput.classList.add('error');\r\n } else {\r\n numberInVehicleInput.classList.remove('error');\r\n }\r\n\r\n var startLocInput = startLocationInput.querySelector('textarea');\r\n\r\n if (startLocInput.value === '') {\r\n startLocationInput.classList.add('error');\r\n } else {\r\n startLocationInput.classList.remove('error');\r\n }\r\n\r\n var endLocInput = endLocationInput.querySelector('textarea');\r\n\r\n if (endLocInput.value === '') {\r\n endLocationInput.classList.add('error');\r\n } else {\r\n endLocationInput.classList.remove('error');\r\n }\r\n\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n }\r\n\r\n function checkServiceDateInput() {\r\n\r\n let todaydate = new Date();\r\n let myservicedate = new Date(serviceDate);\r\n\r\n var isDateBefore = dates.isBefore(myservicedate, todaydate);\r\n\r\n if (!isDateBefore) {\r\n serviceDateInput.classList.add('error');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n }\r\n\r\n }\r\n \r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length !== 0) || formReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n updateNoteBtn.classList.add('disabled');\r\n } else {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n updateNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n if ((userId !== currentEntryUserId) || !$.session.OODDelete) {\r\n deleteNoteBtn.classList.add('disabled');\r\n } else {\r\n deleteNoteBtn.classList.remove('disabled')\r\n }\r\n\r\n }\r\n\r\nfunction checkEndInputTime() {\r\n\r\n var endInput = endTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(endInput.value))\r\n {\r\n endTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n }\r\n\r\n var isEndAfterStartTime = validateStartEndTimes('endCheck')\r\n\r\n if (isEndAfterStartTime) {\r\n endTimeInput.classList.remove('error');\r\n \r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n var isEndTimeValid = UTIL.validateTime(endInput.value);\r\n \r\n if (isEndTimeValid) {\r\n endTimeInput.classList.remove('error');\r\n \r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n}\r\n\r\nfunction checkStartInputTime() {\r\n\r\n var startInput = startTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(startInput.value))\r\n {\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n }\r\n\r\n var isStartTimeValid = UTIL.validateTime(startInput.value);\r\n if (isStartTimeValid) {\r\n startTimeInput.classList.remove('error');\r\n } else {\r\n startTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n}\r\n\r\nfunction checkTimeForAfterNow(enteredTime) {\r\n let tempNow = new Date();\r\n let nowHour = tempNow.getHours() < '10' ? `0${tempNow.getHours()}` : tempNow.getHours();\r\n let nowMinuet =\r\n tempNow.getMinutes() < '10' ? `0${tempNow.getMinutes()}` : tempNow.getMinutes();\r\n return (\r\n Date.parse(`01/01/2020 ${enteredTime}`) >\r\n Date.parse(`01/01/2020 ${nowHour}:${nowMinuet}`)\r\n );\r\n}\r\n\r\n\r\nfunction validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n}\r\n\r\n function setupEvents() {\r\n\r\n startTimeInput.addEventListener('focusout', event => {\r\n startTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n endTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n serviceDateInput.addEventListener('change', event => {\r\n serviceDate = event.target.value;\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n \r\n });\r\n serviceDateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n numberInVehicleInput.addEventListener('input', event => {\r\n numberInVehicle = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n numberInVehicleInput.addEventListener('keypress', event => {\r\n numberInVehicle = event.target.value;\r\n if (event.key === '.' && event.target.value.indexOf('.') !== -1) {\r\n // event.target.value = event.target.value.substr(0, (event.target.value.length - 1))\r\n event.preventDefault();\r\n return;\r\n }\r\n if (event.keyCode < 48 || event.keyCode > 57) {\r\n event.preventDefault();\r\n return;\r\n }\r\n });\r\n\r\n startLocationInput.addEventListener('input', event => {\r\n startLocation = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n endLocationInput.addEventListener('input', event => {\r\n endLocation = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewNoteBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n\t\t});\r\n\r\n saveNoteBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n\t\t});\r\n \r\n \r\n }\r\n\r\n \t// build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n\t\t const wrap = document.createElement('div');\r\n\t\t wrap.classList.add('planConsumerCard');\r\n\t\r\n\t\t wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n \r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n var data = {\r\n consumerId,\r\n OODTransportationId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n numberInVehicle,\r\n startLocation,\r\n endLocation,\r\n userId,\r\n };\r\n\r\n OODAjax.updateForm10TransportationData(data, function(results) {\r\n if (results.includes(\"Error\")) {\r\n return;\r\n } else {\r\n\r\n successfulSave.show();\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n\r\n }\r\n });\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n numberInVehicle,\r\n startLocation,\r\n endLocation, \r\n userId,\r\n referenceNumber,\r\n };\r\n\r\n OODAjax.insertForm10TransportationData(data, function(results) {\r\n if (results.includes(\"Error\")) {\r\n return;\r\n } else {\r\n\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildEntryServicePopUp(consumerId, 'newEntry');\r\n }, 2000);\r\n } else { //save\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n } \r\n }\r\n });\r\n }\r\n //TODO JOE : Look into DElete for Transporation\r\n function deleteConfirmation(OODTransportationId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteOODForm10TransportationEntry(OODTransportationId); \r\n if (result.deleteOODForm10TransportationEntryResult === \"1\"){\r\n OOD.loadOODLanding(); \r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function() {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n \r\n\r\n return {\r\n init,\r\n \r\n };\r\n})();\r\n","const summerYouthWorkExperienceForm = (() => {\r\n //Inputs\r\n let serviceDateInput; // case_notes.service_date : Default Service Date to the date that is selected when the user clicks New Entry in the previous page. Make this non-editable. \r\n let startTimeInput; // case_notes.start_time : Default \"Start Time\", \"End Time\", and \"Individual Experiences, Performance, & Interventions\" to null.\r\n let endTimeInput; // case_notes.end_time\r\n let positionDropdown; // emp_ood.position_id : Default Position to null (with SELECT selected on). Dropdown values should be same as current Position list on Form 8 New Entry page.\r\n let interventionsInput; // rename -- case_notes.notes : Individual Experiences, Performance, & Interventions = case_notes.notes\r\n let groupSizeInput; // add -- case_notes.ratio_consumers : Group Size should be disabled until the user selects a Position on the same page. \r\n // Once a position is selected, set the value in Group Size to be em_employee_position.default_group_size \r\n // (new column being added via Task on this ticket) for the selected position. \r\n // The user should be able to change the default value here to any positive whole number. This field is required.\r\n\r\n\r\n // buttons\r\n let saveNoteBtn;\r\n let saveAndNewNoteBtn;\r\n let cancelNoteBtn;\r\n let updateNoteBtn;\r\n let deleteNoteBtn;\r\n // When the user saves, there will be one record saved into the case_notes table and one record saved to the emp_ood table. \r\n // We are doing the same thing when saving a record from the New Entry screen for OOD Form 8. Let analyst know if you need \r\n // help with data being saved to these tables.\r\n\r\n\r\n // Case Note Edit Data\r\n let consumerId;\r\n let caseNoteId;\r\n let serviceDate;\r\n let startTime;\r\n let endTime;\r\n let position; \r\n let interventions; // rename -- DATA -- Individual Experiences, Performance, & Interventions = case_notes.notes\r\n let groupSize; // add \r\n\r\n //Case Note Data\r\n let caseManagerId;\r\n let userId;\r\n let serviceId;\r\n let referenceNumber;\r\n\r\n let formReadOnly = false;\r\n\r\n let currentEntryUserId;\r\n\r\n async function init(\r\n caseNoteData,\r\n currentConsumer,\r\n selectedConsumerServiceId,\r\n selectedConsumerServiceName,\r\n selectedConsumerReferenceNumber,\r\n currentRecordUserId,\r\n selectedServiceDate,\r\n clickSource = 'OODGrid',\r\n ) {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (caseNoteData && Object.keys(caseNoteData).length !== 0) {\r\n userId = $.session.UserId;\r\n caseNoteId = caseNoteData[0].caseNoteId;\r\n serviceDate = caseNoteData[0].serviceDate; //TODO JOE: Case_Notes.Service_Date\r\n startTime = caseNoteData[0].startTime; //TODO JOE: Case_Notes.Start_Time\r\n endTime = caseNoteData[0].endTime; //TODO JOE: Case_Notes.End_Time\r\n position = caseNoteData[0].position;\r\n groupSize = caseNoteData[0].groupSize;\r\n interventions = caseNoteData[0].interventions; //TODO JOE: emp_ood.interventions\r\n \r\n } else {\r\n caseManagerId = $.session.PeopleId;\r\n userId = $.session.UserId;\r\n serviceId = selectedConsumerServiceId;\r\n caseNoteId = '0';\r\n serviceDate = selectedServiceDate;\r\n //serviceDate = UTIL.getTodaysDate();\r\n referenceNumber = selectedConsumerReferenceNumber;\r\n startTime = '';\r\n endTime = '';\r\n position = '';\r\n groupSize = '';\r\n interventions = '';\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'newEntry' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (userId !== currentRecordUserId) {\r\n formReadOnly = true;\r\n }\r\n\r\n serviceDateInput = input.build({\r\n type: 'date',\r\n label: 'Service Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n //readonly: ((userId !== currentRecordUserId) || (!$.session.OODUpdate && !$.session.OODInsert)) ? true : false,\r\n readonly: true,\r\n //value: filterValues.serviceDateStart\r\n });\r\n\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n value: startTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: startTime,\r\n });\r\n\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n value: endTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: endTime,\r\n });\r\n\r\n positionDropdown = dropdown.build({\r\n label: 'Position',\r\n dropdownId: 'positionDropdown',\r\n value: position,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n groupSizeInput = input.build({\r\n label: 'Group Size',\r\n type: 'number',\r\n style: 'secondary',\r\n value: groupSize === '0' || groupSize === '0.00' ? '' : groupSize,\r\n readonly: formReadOnly,\r\n attributes: [{ key: 'min', value: '0' }],\r\n });\r\n \r\n\r\n interventionsInput = input.build({\r\n label: 'Individual Experiences, Performance, & Interventions',\r\n value: interventions,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n saveNoteBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('save');\r\n },\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateNoteBtn = button.build({\r\n text: 'update',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n updateFormData();\r\n },\r\n });\r\n deleteNoteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(caseNoteId);\r\n },\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer);\r\n\r\n let container = document.createElement('div');\r\n container.classList.add('monthlyForm');\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n // heading.innerHTML = `${selectedConsumerServiceName} - OOD Form 16`;\r\n heading.innerHTML = `Summer Youth Work Experience - OOD Form 16`;\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n const inputContainer0 = document.createElement('div');\r\n inputContainer0.classList.add('ood_form4monthlyplacement_inputContainer1');\r\n inputContainer0.appendChild(serviceDateInput);\r\n inputContainer0.appendChild(startTimeInput);\r\n inputContainer0.appendChild(endTimeInput);\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form4monthlyplacement_inputContainer1'); // new _OOD.scss setting -- ood_form8monthlyplacement_inputContainer1\r\n inputContainer1.appendChild(positionDropdown);\r\n inputContainer1.appendChild(groupSizeInput);\r\n\r\n const inputContainer2 = document.createElement('div');\r\n inputContainer2.classList.add('ood_form4monthlyplacement_inputContainer2');\r\n\r\n container.appendChild(inputContainer0);\r\n container.appendChild(inputContainer1);\r\n container.appendChild(inputContainer2);\r\n\r\n container.appendChild(interventionsInput);\r\n\r\n let updatecontainer = document.createElement('div');\r\n updatecontainer.classList.add('updatecontainer');\r\n\r\n let updatemessage = document.createElement('div');\r\n updatemessage.classList.add('updatemessage');\r\n\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n caseNoteId == '0' ? btnWrap.appendChild(saveNoteBtn) : btnWrap.appendChild(updateNoteBtn);\r\n caseNoteId == '0' ? btnWrap.appendChild(saveAndNewNoteBtn) : btnWrap.appendChild(deleteNoteBtn);\r\n\r\n let btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n\r\n let btnRow = document.createElement('div');\r\n btnRow.classList.add('btnRow');\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n\r\n container.appendChild(btnRow);\r\n\r\n populateStaticDropDowns();\r\n populatePositionDropdown();\r\n populateIndicatorsDropdown();\r\n // populateOutcomeDropdown();\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n // call Required Fields\r\n checkRequiredFields();\r\n }\r\n\r\n async function populatePositionDropdown() {\r\n const { getOODPositionsResult: positions } = await OODAjax.getPositionsAsync(consumerId);\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = positions.map(position => ({\r\n id: (position.defaultGroupSize && position.defaultGroupSize > 0) ? position.defaultGroupSize : '0',\r\n value: position.code,\r\n text: position.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == position);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('positionDropdown', data, position);\r\n }\r\n\r\n async function populateIndicatorsDropdown() {\r\n const { getIndicatorsResult: indicators } = await OODAjax.getIndicatorsAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = indicators.map(indicator => ({\r\n id: indicator.code,\r\n value: indicator.code,\r\n text: indicator.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == position);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n \r\n }\r\n\r\n // TODO JOE: Look into whether this AJAX needs to change or not\r\n // THis DDL may not be needed?\r\n // async function populateOutcomeDropdown() {\r\n\r\n // const {\r\n // getOutcomesResult: outcomes,\r\n // } = await OODAjax.getOutcomesAsync();\r\n // // const templates = WorkflowViewerComponent.getTemplates();\r\n // let data = outcomes.map((outcome) => ({\r\n // id: outcome.outcomeCode,\r\n // value: outcome.outcomeCode,\r\n // text: outcome.outcomeCaption,\r\n // }));\r\n\r\n // const index = data.findIndex((x) => x.id == outcome);\r\n // \t\t\t\tif (index === -1) {\r\n // \t\t\t\t\t// case note outcome not in the outcomes DDL\r\n // \t\t\t\t}\r\n\r\n // data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n // dropdown.populate(\"outcomeDropdown\", data, outcome);\r\n // }\r\n\r\n function populateStaticDropDowns() {\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n ];\r\n\r\n }\r\n\r\n function checkRequiredFields() {\r\n \r\n \r\n\r\n if (!position || position === '') {\r\n positionDropdown.classList.add('error');\r\n groupSizeInput.classList.add('disabled');\r\n } else {\r\n positionDropdown.classList.remove('error');\r\n groupSizeInput.classList.remove('disabled');\r\n groupSizeInput.classList.remove('error');\r\n // return 'success';\r\n }\r\n\r\n var numgroupSizeInput = groupSizeInput.querySelector('input');\r\n if (numgroupSizeInput.value === '' || numgroupSizeInput.value === 0 || numgroupSizeInput.value <= 0) {\r\n groupSizeInput.classList.add('error');\r\n } else {\r\n groupSizeInput.classList.remove('error');\r\n }\r\n\r\n\r\n var interventionInpt = interventionsInput.querySelector('textarea');\r\n\r\n if (interventionInpt.value === '') {\r\n interventionsInput.classList.add('error');\r\n } else {\r\n interventionsInput.classList.remove('error');\r\n }\r\n\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n }\r\n\r\n function checkServiceDateInput() {\r\n let todaydate = new Date();\r\n let myservicedate = new Date(serviceDate);\r\n\r\n var isDateBefore = dates.isBefore(myservicedate, todaydate);\r\n\r\n if (!isDateBefore) {\r\n serviceDateInput.classList.add('error');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0 || formReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n updateNoteBtn.classList.add('disabled');\r\n } else {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n updateNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n if (userId !== currentEntryUserId || !$.session.OODDelete) {\r\n deleteNoteBtn.classList.add('disabled');\r\n } else {\r\n deleteNoteBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function checkEndInputTime() {\r\n var endInput = endTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(endInput.value)) {\r\n endTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n }\r\n\r\n var isEndAfterStartTime = validateStartEndTimes('endCheck');\r\n\r\n if (isEndAfterStartTime) {\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n var isEndTimeValid = UTIL.validateTime(endInput.value);\r\n\r\n if (isEndTimeValid) {\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n }\r\n\r\n function checkStartInputTime() {\r\n var startInput = startTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(startInput.value)) {\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n }\r\n\r\n var isStartTimeValid = UTIL.validateTime(startInput.value);\r\n if (isStartTimeValid) {\r\n startTimeInput.classList.remove('error');\r\n } else {\r\n startTimeInput.classList.add('error');\r\n return;\r\n }\r\n }\r\n\r\n function checkTimeForAfterNow(enteredTime) {\r\n let tempNow = new Date();\r\n let nowHour = tempNow.getHours() < '10' ? `0${tempNow.getHours()}` : tempNow.getHours();\r\n let nowMinuet = tempNow.getMinutes() < '10' ? `0${tempNow.getMinutes()}` : tempNow.getMinutes();\r\n return (\r\n Date.parse(`01/01/2020 ${enteredTime}`) > Date.parse(`01/01/2020 ${nowHour}:${nowMinuet}`)\r\n );\r\n }\r\n\r\n function validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n }\r\n\r\n function setupEvents() {\r\n\r\n positionDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n position = '';\r\n groupSize = '';\r\n var numgroupSizeInput = groupSizeInput.querySelector('input');\r\n numgroupSizeInput.value = '';\r\n\r\n } else {\r\n position = selectedOption.value;\r\n groupSize = selectedOption.id;\r\n var numgroupSizeInput = groupSizeInput.querySelector('input');\r\n numgroupSizeInput.value = (selectedOption.id && selectedOption.id > 0) ? selectedOption.id : '';\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n\r\n groupSizeInput.addEventListener('input', event => {\r\n groupSize = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\t\r\n\t\r\n groupSizeInput.addEventListener('keypress', event => {\r\n groupSize = event.target.value;\r\n if (event.key === '.' && event.target.value.indexOf('.') !== -1) {\r\n // event.target.value = event.target.value.substr(0, (event.target.value.length - 1))\r\n event.preventDefault();\r\n return;\r\n }\r\n if (event.keyCode < 48 || event.keyCode > 57) {\r\n event.preventDefault();\r\n return;\r\n }\r\n });\r\n\r\n startTimeInput.addEventListener('focusout', event => {\r\n startTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n endTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n serviceDateInput.addEventListener('change', event => {\r\n serviceDate = event.target.value;\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n serviceDateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n interventionsInput.addEventListener('input', event => {\r\n interventions = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewNoteBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n });\r\n\r\n saveNoteBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n });\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n\r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n position,\r\n groupSize,\r\n interventions,\r\n userId,\r\n };\r\n // TODO JOE: This AJAX needs to change\r\n OODAjax.updateForm16SummerYouthWorkExperience(data, function (results) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n });\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n position,\r\n groupSize,\r\n interventions,\r\n userId,\r\n serviceId,\r\n referenceNumber,\r\n caseManagerId,\r\n };\r\n // TODO JOE: This AJAX needs to change\r\n OODAjax.insertForm16SummerYouthWorkExperience(data, function (results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildEntryServicePopUp(consumerId, 'newEntry');\r\n }, 2000);\r\n } else {\r\n //save\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n }\r\n\r\n // TODO JOE: Look into whether this AJAX needs to change or not\r\n function deleteConfirmation(caseNoteId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteOODFormEntryAsync(caseNoteId);\r\n if (result.deleteOODFormEntryResult === '1') {\r\n OOD.loadOODLanding();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const summerYouthWorkExperienceSummaryForm = (() => {\r\n // Inputs\r\n let monthYearDropdown; // Default Month using the existing logic for current Monthly Summary form. Use same (existing) logic to determine values in dropdown.\r\n let referenceNumberDropdown; // Default Reference number using the existing logic for current Monthly Summary form. \r\n // Dropdown list should show values from consumer_services_master.reference_number where services.ood_form = 16 \r\n // AND the consumer_services_master row is valid for the selected month. For example, if I pick 01/2024 as the month, \r\n // I should see a list of consumer_services_master.reference_number values where the associated service (in services table) \r\n // has ood_form_number = 16 and consumer_services_master.from_date <= 1/1/2024 AND consumer_services_master.to_date >= 1/1/2024.\r\n\r\n let nextScheduledReviewInput; // Default Next Scheduled Review to null. Required field. Validate that this value is > the first day of the selected month in the Month field.\r\n let selfAssessmentInput; // Default Individual's Self Assessment to null. Required field\r\n let providerAssessmentInput; // rename -- maybe -- Default Provider's Summary & Recommendations to null. Required field.\r\n let reviewVTSDropdown; // Default Has the Vocational Training Stipend… to null. Required field. \r\n // Show values for YES and NO (this is currently found in the Form 8 Monthly Summary form)\r\n let wasOfferedHoursNotWorkedDropdown; // add -- Default Was the individual offered additional hours that weren't worked? to null. Required field. \r\n // This value will not be stored in the database.\r\n let offeredHoursNotWorkedInput; // add -- Default Additional Hours Offered to null. Should only be visible if radio button above is answered Yes. \r\n // If visible, it is a required field.\r\n\r\n // values\r\n let consumerId;\r\n let emReviewId;\r\n let emReviewDate; // monthYearDropdown -- Month = em_review.em_review_date (set value to first day of selected month)\r\n let emReviewDateDBValue; // monthYearDropdown -- Month = em_review.em_review_date (set value to first day of selected month)\r\n let emReferenceNumber; // referenceNumberDropdown -- Reference Number = em_review.reference_num\r\n let emNextScheduledReview; // nextScheduledReviewInput -- Next Scheduled Review = em_review.em_review_next_date\r\n let emSummaryIndivSelfAssessment; // rename -- maybe -- selfAssessmentInput -- Individual's Self Assessment = em_review.em_sum_ind_self_assess\r\n let emSummaryIndivProviderAssessment; // // rename -- maybe --providerAssessmentInput -- Provider's Summary & Recommendations = em_review.em_sum_provider_assess\r\n let emReviewVTS; // reviewVTSDropdown -- Has the Vocational Training Stipend… = em_review.vts_review\r\n let offeredHoursNotWorked; \r\n let emOfferedHoursNotWorkNumber; // offeredHoursNotWorkedInput -- Additional Hours Offered = em_review.add_hours_offered (new column - see associated task on this ticket)\r\n // buttons\r\n let saveBtn;\r\n let saveAndNewBtn;\r\n let cancelBtn;\r\n let updateBtn;\r\n let deleteBtn;\r\n\r\n //Review Data\r\n //let caseManagerId;\r\n let userId;\r\n let serviceId;\r\n let reviewStartDate;\r\n let reviewEndDate;\r\n\r\n let formReadOnly = false;\r\n const FORMNUMBER = '16'; \r\n\r\n let OODMonthlySummariesTable; // To be added in future release\r\n\r\n async function init(\r\n emReviewData,\r\n currentConsumer,\r\n selectedServiceId,\r\n currentRecordUserId,\r\n clickSource = 'OODGrid',\r\n ) {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n let todaysdate = new Date();\r\n var thisMonthFirstDay = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1);\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (emReviewData && Object.keys(emReviewData).length !== 0) {\r\n userId = $.session.UserId;\r\n emReviewId = emReviewData.emReviewId;\r\n emReviewDate = getShortDate(emReviewData.emReviewDate);\r\n emReviewDateDBValue = new Date(emReviewData.emReviewDate);\r\n emReferenceNumber = emReviewData.emReferenceNumber;\r\n emNextScheduledReview = emReviewData.emNextScheduledReview;\r\n emSummaryIndivSelfAssessment = emReviewData.emSummaryIndivSelfAssessment;\r\n emSummaryIndivProviderAssessment = emReviewData.emSummaryIndivProviderAssessment;\r\n emReviewVTS = emReviewData.emReviewVTS;\r\n emOfferedHoursNotWorkNumber = emReviewData.emOfferedHoursNotWorkNumber;\r\n offeredHoursNotWorked = (emOfferedHoursNotWorkNumber === '0' || emOfferedHoursNotWorkNumber === '0.00' || emOfferedHoursNotWorkNumber === '') ? 'N' : 'Y';\r\n } else {\r\n userId = $.session.UserId;\r\n serviceId = selectedServiceId;\r\n emReviewId = '0';\r\n emReviewDate = ('0' + (todaysdate.getMonth() + 1)).slice(-2) + '/' + todaysdate.getFullYear();\r\n emReviewDateDBValue = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1);\r\n emReferenceNumber = '';\r\n emNextScheduledReview = '';\r\n emSummaryIndivSelfAssessment = '';\r\n emSummaryIndivProviderAssessment = '';\r\n emReviewVTS = '';\r\n offeredHoursNotWorked = ''; \r\n emOfferedHoursNotWorkNumber = '';\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'monthlySummary' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (userId !== currentRecordUserId) {\r\n formReadOnly = true;\r\n }\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer);\r\n\r\n let container = document.createElement('div');\r\n container.classList.add('monthlyForm');\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Summer Youth Work Experience - OOD Form 16 Monthly Summary';\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n //var date = new Date();\r\n monthYearDropdown = dropdown.build({\r\n label: 'Month',\r\n //classNames: 'monthYear',\r\n dropdownId: 'monthYearDropdown',\r\n value: emReviewDate,\r\n readonly: formReadOnly,\r\n // value: ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear()\r\n //readonly: true,\r\n });\r\n\r\n referenceNumberDropdown = dropdown.build({\r\n label: 'Reference Number',\r\n dropdownId: 'referenceNumberDropdown',\r\n value: emReferenceNumber,\r\n readonly: formReadOnly,\r\n // readonly: (userId !== currentRecordUserId) ? true : false,\r\n });\r\n\r\n nextScheduledReviewInput = input.build({\r\n type: 'date',\r\n label: 'Next Scheduled Review',\r\n style: 'secondary',\r\n // classNames: 'nextScheduledReviewInput',\r\n value: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n readonly: formReadOnly,\r\n //value: filterValues.serviceDateStart\r\n });\r\n\r\n // selfAssessmentInput textarea\r\n selfAssessmentInput = input.build({\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSummaryIndivSelfAssessment,\r\n readonly: formReadOnly,\r\n // charLimit: 256,\r\n // forceCharLimit: true,\r\n });\r\n // selfAssessmentInput.classList.add('OODTextArea');\r\n\r\n // providerAssessment textarea\r\n providerAssessmentInput = input.build({\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSummaryIndivProviderAssessment,\r\n readonly: formReadOnly,\r\n });\r\n // providerAssessmentInput.classList.add('introTextArea');\r\n\r\n // reviewVTS textarea\r\n reviewVTSDropdown = dropdown.build({\r\n dropdownId: 'reviewVTSDropdown',\r\n value: emReviewVTS,\r\n readonly: formReadOnly,\r\n });\r\n // reviewVTSDropdown.classList.add('introTextArea');\r\n\r\n // wasOfferedHoursNotWorkedDropdown\r\n wasOfferedHoursNotWorkedDropdown = dropdown.build({\r\n dropdownId: 'wasOfferedHoursNotWorkedDropdown',\r\n value: offeredHoursNotWorked,\r\n readonly: formReadOnly,\r\n });\r\n \r\n offeredHoursNotWorkedInput = input.build({\r\n label: 'Additional Hours Offered',\r\n type: 'number',\r\n style: 'secondary',\r\n value: emOfferedHoursNotWorkNumber === '0' || emOfferedHoursNotWorkNumber === '0.00' ? '' : emOfferedHoursNotWorkNumber,\r\n readonly: formReadOnly,\r\n attributes: [{ key: 'min', value: '0' }],\r\n });\r\n \r\n\r\n saveBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('save');\r\n },\r\n });\r\n saveAndNewBtn = button.build({\r\n text: 'Save & New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateBtn = button.build({\r\n text: 'update',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n updateFormData();\r\n },\r\n });\r\n deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(emReviewId);\r\n },\r\n });\r\n cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form8monthlysummary_inputContainer1');\r\n\r\n inputContainer1.appendChild(monthYearDropdown);\r\n inputContainer1.appendChild(referenceNumberDropdown);\r\n // inputContainer1.appendChild(referenceNumberDropdown);\r\n\r\n //inputContainer1.appendChild(nextScheduledReviewInput);\r\n\r\n const nextScheduledReviewInputDIV = document.createElement('div');\r\n nextScheduledReviewInputDIV.classList.add('nextScheduledReviewInput');\r\n nextScheduledReviewInputDIV.appendChild(nextScheduledReviewInput);\r\n\r\n inputContainer1.appendChild(nextScheduledReviewInputDIV);\r\n\r\n container.appendChild(inputContainer1);\r\n\r\n const selfAssessmentLabel = document.createElement('p');\r\n selfAssessmentLabel.innerHTML = `Individual's Self-Assessment`;\r\n\r\n const providerAssessmentLabel = document.createElement('p');\r\n providerAssessmentLabel.innerHTML = `Provider's Summary & Recommendations`;\r\n\r\n const reviewVTSDropdownLabel = document.createElement('p');\r\n reviewVTSDropdownLabel.innerHTML = `Has the Vocational Training Stipend (VTS) been reviewed with the individual? Does it only reflect the time the individual participated? Does the individual agree to the amount of the VTS? `;\r\n\r\n const wasOfferedHoursNotWorkedDropdownLabel = document.createElement('p');\r\n wasOfferedHoursNotWorkedDropdownLabel.innerHTML = `Was the Individual offered additional hours that weren't worked? `;\r\n\r\n container.appendChild(selfAssessmentLabel);\r\n container.appendChild(selfAssessmentInput);\r\n container.appendChild(providerAssessmentLabel);\r\n container.appendChild(providerAssessmentInput);\r\n \r\n container.appendChild(reviewVTSDropdownLabel);\r\n container.appendChild(reviewVTSDropdown);\r\n\r\n // container.appendChild(wasOfferedHoursNotWorkedDropdownLabel);\r\n // container.appendChild(wasOfferedHoursNotWorkedDropdown);\r\n // container.appendChild(offeredHoursNotWorkedInput);\r\n // if (emOfferedHoursNotWorkNumber === '0' || emOfferedHoursNotWorkNumber === '0.00' || emOfferedHoursNotWorkNumber === '') {\r\n // offeredHoursNotWorkedInput.style.visibility = 'hidden';\r\n // offeredHoursNotWorked = '';\r\n // } else {\r\n // offeredHoursNotWorkedInput.style.visibility = 'visible';\r\n // offeredHoursNotWorked = 'Y';\r\n // }\r\n \r\n \r\n\r\n let updatecontainer = document.createElement('div');\r\n updatecontainer.classList.add('updatecontainer');\r\n\r\n let updatemessage = document.createElement('div');\r\n updatemessage.classList.add('updatemessage');\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n emReviewId == '0' ? btnWrap.appendChild(saveBtn) : btnWrap.appendChild(updateBtn);\r\n emReviewId == '0' ? btnWrap.appendChild(saveAndNewBtn) : btnWrap.appendChild(deleteBtn);\r\n\r\n let btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelBtn);\r\n\r\n let btnRow = document.createElement('div');\r\n btnRow.classList.add('btnRow');\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n container.appendChild(btnRow);\r\n\r\n var LineBr = document.createElement('br');\r\n var LineBr2 = document.createElement('br');\r\n var LineBr3 = document.createElement('br');\r\n container.appendChild(LineBr);\r\n container.appendChild(LineBr2);\r\n container.appendChild(LineBr3);\r\n\r\n // NOTE: This summary table will be added in a later release; will need this code eventually -- JMM 02/05/2022\r\n // OODMonthlySummariesTable = await buildOODMonthlySummariesTable();\r\n // container.appendChild(OODMonthlySummariesTable);\r\n\r\n // populateStaticDropDowns();\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n populateStaticDropDowns();\r\n populateReferenceNumberDropdown();\r\n\r\n checkRequiredFields();\r\n }\r\n\r\n function getShortDate(fullDate) {\r\n var thisDate = new Date(fullDate);\r\n var thisShortDate =\r\n (thisDate.getMonth() + 1).toString().padStart(2, '0') + '/' + thisDate.getFullYear();\r\n return thisShortDate;\r\n }\r\n\r\n function setReviewStartandEndDates() {\r\n var dateparts = emReviewDate.split('/');\r\n var thisMonth = dateparts[0];\r\n\r\n var daysinMonth = dates.getDaysInMonth(emReviewDateDBValue);\r\n var thisYear = emReviewDateDBValue.getFullYear();\r\n\r\n reviewStartDate = thisYear + '-' + thisMonth + '-01';\r\n reviewEndDate = thisYear + '-' + thisMonth + '-' + daysinMonth;\r\n }\r\n\r\n function displaynoReferenceNumberPopup() {\r\n // no reference Numbers\r\n let noReferenceNumberPopup = POPUP.build({\r\n header: 'No Reference Numbers Found',\r\n hideX: true,\r\n id: 'noReferenceNumberPopup',\r\n });\r\n\r\n let OKBtn = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(noReferenceNumberPopup);\r\n // overlay.hide();\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n let warningMessage = document.createElement('p');\r\n warningMessage.innerHTML =\r\n 'There are no reference numbers for this consumer and date combination. Please change the Month/Year to see a list of valid reference numbers or contact your Advisor Administrator to enter an OOD Authorization for the selected consumer.';\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n //noServicesPopup.appendChild(consumerServicesDropdown);\r\n noReferenceNumberPopup.appendChild(warningMessage);\r\n noReferenceNumberPopup.appendChild(btnWrap);\r\n overlay.show();\r\n POPUP.show(noReferenceNumberPopup);\r\n }\r\n\r\n async function populateReferenceNumberDropdown() {\r\n setReviewStartandEndDates();\r\n\r\n const { getConsumerReferenceNumbersResult: referencenumbers } =\r\n await OODAjax.getConsumerReferenceNumbersAsync(\r\n consumerId,\r\n reviewStartDate,\r\n reviewEndDate,\r\n FORMNUMBER,\r\n );\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = referencenumbers.map(referencenumber => ({\r\n id: referencenumber.referenceNumber,\r\n value: referencenumber.referenceNumber,\r\n text: referencenumber.referenceNumber,\r\n }));\r\n\r\n if (data.length == 0) {\r\n displaynoReferenceNumberPopup();\r\n }\r\n\r\n // if creating a new record and there is only one referenceNumber in the data, then automatically select it in the DDL\r\n if (emReferenceNumber == '' && data.length == 1) {\r\n emReferenceNumber = data[0].value;\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('referenceNumberDropdown', data, emReferenceNumber);\r\n }\r\n\r\n // for monthYearDropdown DDL\r\n function populateStaticDropDowns() {\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n ];\r\n\r\n var mydate = new Date();\r\n var arrayDates = [];\r\n\r\n for (let i = 0; i < 24; i++) {\r\n var firstDay = new Date(mydate.getFullYear() - 1, mydate.getMonth() + i, 1);\r\n arrayDates.push({\r\n partialdate:\r\n (firstDay.getMonth() + 1).toString().padStart(2, '0') +\r\n '/' +\r\n firstDay.getFullYear().toString(),\r\n fulldate: firstDay.toDateString(),\r\n });\r\n }\r\n\r\n let data = arrayDates.map(thisDate => ({\r\n id: thisDate.fulldate,\r\n value: thisDate.partialdate,\r\n text: thisDate.partialdate,\r\n }));\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('monthYearDropdown', data, emReviewDate);\r\n\r\n dropdown.populate(reviewVTSDropdown, yesNoDropdownData, emReviewVTS);\r\n dropdown.populate(wasOfferedHoursNotWorkedDropdown, yesNoDropdownData, offeredHoursNotWorked);\r\n }\r\n\r\n function checkRequiredFields() {\r\n if (!emReviewDate || emReviewDate === '') {\r\n monthYearDropdown.classList.add('error');\r\n } else {\r\n monthYearDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emNextScheduledReview || emNextScheduledReview === '') {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n\r\n var selfAssessmentInpt = selfAssessmentInput.querySelector('textarea');\r\n if (selfAssessmentInpt.value === '') {\r\n selfAssessmentInput.classList.add('error');\r\n } else {\r\n selfAssessmentInput.classList.remove('error');\r\n }\r\n\r\n // provider\r\n var providerAssessmentInpt = providerAssessmentInput.querySelector('textarea');\r\n if (providerAssessmentInpt.value === '') {\r\n providerAssessmentInput.classList.add('error');\r\n } else {\r\n providerAssessmentInput.classList.remove('error');\r\n }\r\n\r\n // var reviewVTSInpt = reviewVTSInput.querySelector('textarea');\r\n // if (reviewVTSInpt.value === '') {\r\n // reviewVTSInput.classList.add('error');\r\n // } else {\r\n // reviewVTSInput.classList.remove('error');\r\n // }\r\n\r\n if (!emReviewVTS || emReviewVTS === '') {\r\n reviewVTSDropdown.classList.add('error');\r\n } else {\r\n reviewVTSDropdown.classList.remove('error');\r\n }\r\n\r\n \r\n if (!offeredHoursNotWorked || offeredHoursNotWorked === '') {\r\n wasOfferedHoursNotWorkedDropdown.classList.add('error');\r\n } else {\r\n wasOfferedHoursNotWorkedDropdown.classList.remove('error');\r\n\r\n \r\n\r\n }\r\n\r\n var numofferedHoursNotWorkedInput = offeredHoursNotWorkedInput.querySelector('input');\r\n\r\n if ((numofferedHoursNotWorkedInput.value === '' || numofferedHoursNotWorkedInput.value === 0 || numofferedHoursNotWorkedInput.value <= 0) && numofferedHoursNotWorkedInput.style.visibility === 'visible') {\r\n offeredHoursNotWorkedInput.classList.add('error');\r\n } else {\r\n offeredHoursNotWorkedInput.classList.remove('error');\r\n }\r\n\r\n if (offeredHoursNotWorked === 'Y' && (numofferedHoursNotWorkedInput.value === '' || numofferedHoursNotWorkedInput.value === 0 || numofferedHoursNotWorkedInput.value <= 0)) {\r\n offeredHoursNotWorkedInput.classList.add('error');\r\n }\r\n setBtnStatus();\r\n }\r\n\r\n function checknextScheduledReviewDateInput() {\r\n let todaydate = new Date();\r\n let thisNextReviewDate = new Date(emNextScheduledReview);\r\n\r\n var isDateBefore = dates.isBefore(thisNextReviewDate, todaydate);\r\n\r\n if (isDateBefore) {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0 || formReadOnly) {\r\n saveBtn.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n updateBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveAndNewBtn.classList.remove('disabled');\r\n updateBtn.classList.remove('disabled');\r\n }\r\n\r\n if (userId !== currentEntryUserId || !$.session.OODDelete) {\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n deleteBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function setupEvents() {\r\n monthYearDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n var dateparts = selectedOption.value.split('/');\r\n var updatedFullDate = new Date(dateparts[1], dateparts[0] - 1, 1);\r\n emReviewDateDBValue = updatedFullDate;\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReviewDate = '';\r\n } else {\r\n emReviewDate = selectedOption.value;\r\n }\r\n\r\n emReferenceNumber = '';\r\n populateReferenceNumberDropdown();\r\n checkRequiredFields();\r\n });\r\n\r\n referenceNumberDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReferenceNumber = '';\r\n } else {\r\n emReferenceNumber = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n nextScheduledReviewInput.addEventListener('change', event => {\r\n emNextScheduledReview = event.target.value;\r\n checknextScheduledReviewDateInput();\r\n setBtnStatus();\r\n });\r\n\r\n selfAssessmentInput.addEventListener('input', event => {\r\n emSummaryIndivSelfAssessment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n // provider\r\n providerAssessmentInput.addEventListener('input', event => {\r\n emSummaryIndivProviderAssessment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n reviewVTSDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReviewVTS = '';\r\n } else {\r\n emReviewVTS = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n wasOfferedHoursNotWorkedDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n offeredHoursNotWorked = '';\r\n offeredHoursNotWorkedInput.style.visibility = 'hidden';\r\n } else {\r\n offeredHoursNotWorked = selectedOption.value;\r\n if (offeredHoursNotWorked === 'Y') {\r\n offeredHoursNotWorkedInput.style.visibility = 'visible';\r\n } else {\r\n offeredHoursNotWorkedInput.style.visibility = 'hidden';\r\n emOfferedHoursNotWorkNumber = '';\r\n }\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n\r\n offeredHoursNotWorkedInput.addEventListener('input', event => {\r\n emOfferedHoursNotWorkNumber = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\t\r\n\t\r\n //offeredHoursNotWorkedInput.addEventListener('keypress', event => {\r\n // emOfferedHoursNotWorkNumber = event.target.value;\r\n //if (event.key === '.' && event.target.value.indexOf('.') !== -1) {\r\n // event.target.value = event.target.value.substr(0, (event.target.value.length - 1))\r\n // event.preventDefault();\r\n // return;\r\n // }\r\n // if (event.keyCode < 48 || event.keyCode > 57) {\r\n // event.preventDefault();\r\n // return;\r\n // }\r\n // });\r\n\r\n saveAndNewBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n });\r\n\r\n saveBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n });\r\n }\r\n // build the listing of OOD Entries (based off of filter settings) -- Note: will be used in future release -- JMM 02/05/2022\r\n async function buildOODMonthlySummariesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODMonthlySummaryTable',\r\n columnHeadings: [\r\n 'Month',\r\n 'Individual Input on Search',\r\n 'Potential Issues/Concerns with Progress',\r\n 'Plan/Goals for Next Month',\r\n ],\r\n endIcon: false,\r\n };\r\n\r\n // FAKE DATA : build table data -- see forms.js line 93\r\n const tableData = [\r\n { values: ['11/2021', 'This is my input', 'This is my concern', 'Got no plans, bucko'] },\r\n {\r\n values: [\r\n '11/2021',\r\n 'No, this is my input',\r\n 'Yes, this is my concern',\r\n 'No plans here either',\r\n ],\r\n },\r\n ];\r\n\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n\r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n //var myserviceDate =\"2/7/2022 12:00:00 AM\";\r\n // '2022-02-07'\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate:\r\n emReviewDateDBValue.getFullYear() +\r\n '-' +\r\n (emReviewDateDBValue.getMonth() + 1).toString().padStart(2, '0') +\r\n '-' +\r\n '01',\r\n emReferenceNumber,\r\n // emReviewDate: UTIL.formatDateToIso(emReviewDateDBValue.split(' ')[0]),\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emSummaryIndivSelfAssessment,\r\n emSummaryIndivProviderAssessment,\r\n emReviewVTS,\r\n emOfferedHoursNotWorkNumber,\r\n userId,\r\n };\r\n // TODO JOE: need new C# and SP for Form 8\r\n OODAjax.updateForm16MonthlySummary(data, function (results) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n });\r\n\r\n function getReviewDate(DBValue) {\r\n if (DBValue instanceof Date && !isNaN(DBValue.valueOf())) {\r\n return (\r\n DBValue.getFullYear() + '-' + DBValue.getMonth().toString().padStart(2, '0') + '-' + '1'\r\n );\r\n } else {\r\n return UTIL.formatDateToIso(DBValue.split(' ')[0]);\r\n }\r\n }\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate:\r\n emReviewDateDBValue.getFullYear() +\r\n '-' +\r\n (emReviewDateDBValue.getMonth() + 1).toString().padStart(2, '0') +\r\n '-' +\r\n '01',\r\n // emNextScheduledReview: emNextScheduledReviewDBValue.getFullYear() + '-' + (emNextScheduledReviewDBValue.getMonth()).toString().padStart(2, \"0\") + '-' + '01',\r\n emReferenceNumber,\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emSummaryIndivSelfAssessment,\r\n emSummaryIndivProviderAssessment,\r\n emReviewVTS,\r\n emOfferedHoursNotWorkNumber,\r\n userId,\r\n serviceId,\r\n };\r\n // TODO JOE: need new C# and SP for Form 8\r\n OODAjax.insertForm16MonthlySummary(data, function (results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildSummaryServicePopUp(consumerId, 'monthlySummary');\r\n }, 2000);\r\n } else {\r\n //save\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n }\r\n // TODO JOE: need new C# and SP for Form 8 ???\r\n function deleteConfirmation(emReviewId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteFormMonthlySummaryAsync(emReviewId);\r\n if (result.deleteFormMonthlySummaryResult === '1') {\r\n OOD.loadOODLanding();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const OODForm4MonthlyPlacement = (() => {\r\n\r\n //Inputs\r\n let serviceDateInput;\r\n let startTimeInput;\r\n let endTimeInput;\r\n let SAMLevelDropdown;\r\n let employerDropdown;\r\n let contactMethodDropdown;\r\n let jobSeekerPresentDropdown; //-- REMOVED FROM FORM ON 4/8/22\r\n let outcomeDropdown; //-- REMOVED FROM FORM ON 4/8/22\r\n let TSCNotifiedDropdown; //-- REMOVED FROM FORM ON 4/8/22\r\n let applicationSubmittedDropdown; \r\n let interviewDropdown; \r\n let bilingualSupplementDropdown;\r\n let narrativeOutcomeInput;\r\n\r\n // buttons\r\nlet addEmployersBtn;\r\nlet saveNoteBtn;\r\nlet saveAndNewNoteBtn;\r\nlet cancelNoteBtn;\r\nlet updateNoteBtn;\r\nlet deleteNoteBtn;\r\n\r\n// Case Note Edit Data\r\nlet consumerId;\r\nlet caseNoteId;\r\nlet serviceDate;\r\nlet startTime;\r\nlet endTime;\r\nlet SAMLevel;\r\nlet employer;\r\nlet contactType;\r\nlet jobSeekerPresent;\r\nlet outcome;\r\nlet TSCNotified;\r\nlet bilingualSupplement;\r\nlet notes;\r\nlet application;\r\nlet interview;\r\n\r\n//Case Note Data\r\nlet caseManagerId;\r\nlet userId;\r\nlet serviceId;\r\nlet referenceNumber;\r\n\r\n// employer data\r\n // insert/update employer data\r\n let employerId;\r\n let employerName = '';\r\n let employeraddress1 = '';\r\n let employeraddress2 = '';\r\n let employercity = '';\r\n let employerstate = '';\r\n let employerzipcode = '';\r\n\r\n //employer inputs \r\n let employerInput;\r\n let address1Input;\r\n let address2Input;\r\n let cityInput;\r\n let stateInput;\r\n let zipcodeInput;\r\n\r\n let popupSaveBtn;\r\n let popupCancelBtn;\r\n\r\nlet formReadOnly = false;\r\n\r\nlet currentEntryUserId;\r\n\r\n async function init(caseNoteData, currentConsumer, selectedConsumerServiceId, selectedConsumerReferenceNumber, currentRecordUserId, selectedServiceDate, clickSource = 'OODGrid') {\r\n\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (caseNoteData && Object.keys(caseNoteData).length !== 0) {\r\n\r\n userId = $.session.UserId;\r\n caseNoteId = caseNoteData[0].caseNoteId;\r\n serviceDate = caseNoteData[0].serviceDate;\r\n startTime = caseNoteData[0].startTime;\r\n endTime = caseNoteData[0].endTime;\r\n SAMLevel = caseNoteData[0].SAMLevel;\r\n employer = caseNoteData[0].employer;\r\n contactType = caseNoteData[0].contactType;\r\n jobSeekerPresent = caseNoteData[0].jobSeekerPresent; //-- REMOVED FROM FORM ON 4/8/22\r\n outcome = caseNoteData[0].outcome; //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotified = caseNoteData[0].TSCNotified; //-- REMOVED FROM FORM ON 4/8/22\r\n bilingualSupplement = caseNoteData[0].bilingualSupplement;\r\n notes = caseNoteData[0].notes;\r\n application = caseNoteData[0].application;\r\n interview = caseNoteData[0].interview;\r\n \r\n } else {\r\n\r\n caseManagerId = $.session.PeopleId;\r\n userId = $.session.UserId;\r\n serviceId = selectedConsumerServiceId;\r\n referenceNumber = selectedConsumerReferenceNumber;\r\n caseNoteId = '0';\r\n serviceDate = selectedServiceDate;\r\n //serviceDate = UTIL.getTodaysDate();\r\n startTime = '';\r\n endTime = '';\r\n SAMLevel = '';\r\n employer = '';\r\n contactType = '';\r\n jobSeekerPresent = ''; //-- REMOVED FROM FORM ON 4/8/22\r\n outcome = ''; //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotified = ''; //-- REMOVED FROM FORM ON 4/8/22\r\n bilingualSupplement = '';\r\n notes = '';\r\n application = '';\r\n interview = '';\r\n\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'newEntry' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if ((userId !== currentRecordUserId)) {\r\n formReadOnly = true;\r\n }\r\n\r\n serviceDateInput = input.build({\r\n\t\t\ttype: 'date',\r\n\t\t\tlabel: 'Service Date',\r\n\t\t\tstyle: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n //readonly: ((userId !== currentRecordUserId) || (!$.session.OODUpdate && !$.session.OODInsert)) ? true : false,\r\n readonly: true,\r\n\t\t\t//value: filterValues.serviceDateStart\r\n\t\t });\r\n\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n value: startTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: startTime,\r\n });\r\n\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n value: endTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: endTime,\r\n });\r\n\r\n SAMLevelDropdown = dropdown.build({\r\n label: 'SAM Level',\r\n dropdownId: \"SAMLevelDropdown\",\r\n value: SAMLevel,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n \r\n employerDropdown = dropdown.build({\r\n id: \"employerDropdown\",\r\n label: \"Employer\",\r\n dropdownId: \"employerDropdown\",\r\n value: employer,\r\n readonly: formReadOnly,\r\n }); \r\n\r\n contactMethodDropdown = dropdown.build({\r\n label: \"Contact Method\",\r\n dropdownId: \"contactMethodDropdown\",\r\n value: contactType,\r\n readonly: formReadOnly,\r\n }); \r\n\r\n applicationSubmittedDropdown = dropdown.build({\r\n label: 'Application Submitted',\r\n dropdownId: \"applicationSubmittedDropdown\",\r\n value: application,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n interviewDropdown = dropdown.build({\r\n label: 'Interview',\r\n dropdownId: \"interviewDropdown\",\r\n value: interview,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n jobSeekerPresentDropdown = dropdown.build({\r\n label: 'Job Seeker Present ?',\r\n dropdownId: \"jobSeekerPresentDropdown\",\r\n value: jobSeekerPresent,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n outcomeDropdown = dropdown.build({\r\n label: 'Outcome',\r\n dropdownId: \"outcomeDropdown\",\r\n value: outcome,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotifiedDropdown = dropdown.build({\r\n label: 'TSC Notified ?',\r\n dropdownId: \"TSCNotifiedDropdown\",\r\n value: TSCNotified,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n bilingualSupplementDropdown = dropdown.build({\r\n label: 'Bilingual Supplement ?',\r\n dropdownId: \"bilingualSupplementDropdown\",\r\n value: bilingualSupplement,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n narrativeOutcomeInput = input.build({\r\n label: 'Narrative/Outcome',\r\n value: notes,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n saveNoteBtn = button.build({\r\n text: 'Save',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => { \r\n insertFormData('save'); \r\n },\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateNoteBtn = button.build({\r\n text: 'update',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => { \r\n updateFormData(); \r\n },\r\n });\r\n deleteNoteBtn = button.build({\r\n text: 'Delete',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(caseNoteId); \r\n },\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style : 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n employer = '';\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n addEmployersBtn = button.build({\r\n text: 'Add Employers',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave'],\r\n callback: async () => { \r\n //if (!addNewEmployerBtn.classList.contains('disabled')) {\r\n buildEmployerPopUp({}, 'insert', 'employer', null)\r\n // }\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer)\r\n\r\n let container = document.createElement(\"div\");\r\n container.classList.add(\"monthlyForm\");\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Monthly Placement - OOD Form 4';\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n const inputContainer0 = document.createElement('div');\r\n inputContainer0.classList.add('ood_form4monthlyplacement_inputContainer1'); \r\n inputContainer0.appendChild(serviceDateInput);\r\n inputContainer0.appendChild(startTimeInput);\r\n inputContainer0.appendChild(endTimeInput);\r\n \r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form4monthlyplacement_inputContainer1');\r\n inputContainer1.appendChild(SAMLevelDropdown);\r\n inputContainer1.appendChild(employerDropdown);\r\n if ($.session.OODInsertEmployers) inputContainer1.appendChild(addEmployersBtn);\r\n \r\n \r\n\r\n const inputContainer2 = document.createElement('div');\r\n inputContainer2.classList.add('ood_form4monthlyplacement_inputContainer2');\r\n //inputContainer2.appendChild(jobSeekerPresentDropdown); //-- REMOVED FROM FORM ON 4/8/22\r\n //inputContainer2.appendChild(outcomeDropdown); //-- REMOVED FROM FORM ON 4/8/22\r\n //inputContainer2.appendChild(TSCNotifiedDropdown); //-- REMOVED FROM FORM ON 4/8/22\r\n inputContainer2.appendChild(contactMethodDropdown);\r\n inputContainer2.appendChild(applicationSubmittedDropdown);\r\n inputContainer2.appendChild(interviewDropdown);\r\n inputContainer2.appendChild(bilingualSupplementDropdown);\r\n\r\n container.appendChild(inputContainer0);\r\n container.appendChild(inputContainer1);\r\n container.appendChild(inputContainer2);\r\n\r\n container.appendChild(narrativeOutcomeInput);\r\n \r\n let updatecontainer = document.createElement(\"div\");\r\n updatecontainer.classList.add(\"updatecontainer\");\r\n\r\n let updatemessage = document.createElement(\"div\");\r\n updatemessage.classList.add(\"updatemessage\");\r\n\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n (caseNoteId == '0') ? btnWrap.appendChild(saveNoteBtn) : btnWrap.appendChild(updateNoteBtn);\r\n (caseNoteId == '0') ? btnWrap.appendChild(saveAndNewNoteBtn) : btnWrap.appendChild(deleteNoteBtn) ;\r\n\r\n\r\n let btnWrap2 = document.createElement(\"div\");\r\n btnWrap2.classList.add(\"btnWrap\");\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n\r\n let btnRow = document.createElement(\"div\");\r\n btnRow.classList.add(\"btnRow\");\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n\r\n container.appendChild(btnRow);\r\n\r\n populateStaticDropDowns();\r\n populateConsumerEmployersDropdown(currentConsumer.id);\r\n populateContactTypeDropdown();\r\n populateOutcomeDropdown();\r\n \r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n // call Required Fields\r\n checkRequiredFields();\r\n }\r\n\r\n\tasync function populateConsumerEmployersDropdown(currentConsumerId) { \r\n\t\t\r\n\t\tconst {\r\n\t\t\tgetActiveEmployersResult: employers,\r\n\t\t} = await OODAjax.getActiveEmployersAsync();\r\n\t // const templates = WorkflowViewerComponent.getTemplates();\r\n\r\n\t let data = employers.map((employr) => ({\r\n\t\t id: employr.employerId, \r\n\t\t value: employr.employerId, \r\n\t\t text: (employr.address1 == '') ? employr.employerName : employr.employerName + ' -- ' + employr.address1,\r\n\t })); \r\n\r\n \t\tconst index = data.findIndex((x) => x.id == employer);\r\n\t\t\t\t\t\tif (index === -1) {\r\n\t\t\t\t\t\t\t// case note employer not in the employers DDL\r\n employer = '';\r\n\t\t\t\t\t\t} \r\n\r\n checkRequiredFields();\r\n\r\n var filtereddata = data.filter((x) => x.id != 0);\r\n\r\n\t filtereddata.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n\t dropdown.populate(\"employerDropdown\", filtereddata, employer); \r\n }\r\n\r\n\t async function populateContactTypeDropdown() { \r\n\t\t\r\n const {\r\n getContactTypesResult: contactTypes,\r\n } = await OODAjax.getContactTypesAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = contactTypes.map((contactType) => ({\r\n id: contactType.contactCode, \r\n value: contactType.contactCode, \r\n text: contactType.contactCaption,\r\n })); \r\n\r\n const index = data.findIndex((x) => x.id == contactType);\r\n\t\t\t\t\t\tif (index === -1) {\r\n\t\t\t\t\t\t\t// case note contactType not in the contactTypes DDL\r\n\t\t\t\t\t\t}\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n dropdown.populate(\"contactMethodDropdown\", data, contactType); \r\n }\r\n\r\n async function populateOutcomeDropdown() { \r\n\t\t\r\n const {\r\n getOutcomesResult: outcomes,\r\n } = await OODAjax.getOutcomesAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = outcomes.map((outcome) => ({\r\n id: outcome.outcomeCode, \r\n value: outcome.outcomeCode, \r\n text: outcome.outcomeCaption,\r\n })); \r\n\r\n const index = data.findIndex((x) => x.id == outcome);\r\n\t\t\t\t\t\tif (index === -1) {\r\n\t\t\t\t\t\t\t// case note outcome not in the outcomes DDL\r\n\t\t\t\t\t\t}\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n dropdown.populate(\"outcomeDropdown\", data, outcome); \r\n }\r\n\r\n function populateStaticDropDowns() {\r\n const SAMLevelDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'N/A', value: '0' },\r\n { text: '1', value: '1' },\r\n { text: '2', value: '2' },\r\n { text: '3', value: '3' },\r\n ];\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n \r\n ];\r\n\r\n dropdown.populate(SAMLevelDropdown, SAMLevelDropdownData, SAMLevel);\r\n // dropdown.populate(jobSeekerPresentDropdown, yesNoDropdownData, jobSeekerPresent); //-- REMOVED FROM FORM ON 4/8/22\r\n // dropdown.populate(TSCNotifiedDropdown, yesNoDropdownData, TSCNotified); //-- REMOVED FROM FORM ON 4/8/22\r\n dropdown.populate(applicationSubmittedDropdown, yesNoDropdownData, application); \r\n dropdown.populate(interviewDropdown, yesNoDropdownData, interview); \r\n dropdown.populate(bilingualSupplementDropdown, yesNoDropdownData, bilingualSupplement);\r\n }\r\n\r\n function checkRequiredFields() {\r\n\r\n if (!SAMLevel || SAMLevel === '') {\r\n SAMLevelDropdown.classList.add('error');\r\n //return 'error';\r\n } else {\r\n SAMLevelDropdown.classList.remove('error');\r\n // return 'success';\r\n }\r\n\r\n if (!employer || employer === '') {\r\n employerDropdown.classList.add('error');\r\n } else {\r\n employerDropdown.classList.remove('error');\r\n }\r\n\r\n if (!contactType || contactType === '') {\r\n contactMethodDropdown.classList.add('error');\r\n } else {\r\n contactMethodDropdown.classList.remove('error');\r\n }\r\n\r\n if (!application || application === '') {\r\n applicationSubmittedDropdown.classList.add('error');\r\n } else {\r\n applicationSubmittedDropdown.classList.remove('error');\r\n }\r\n\r\n if (!interview || interview === '') {\r\n interviewDropdown.classList.add('error');\r\n } else {\r\n interviewDropdown.classList.remove('error');\r\n }\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n if (!jobSeekerPresent || jobSeekerPresent === '') {\r\n jobSeekerPresentDropdown.classList.add('error');\r\n } else {\r\n jobSeekerPresentDropdown.classList.remove('error');\r\n }\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n if (!outcome || outcome === '') {\r\n outcomeDropdown.classList.add('error');\r\n } else {\r\n outcomeDropdown.classList.remove('error');\r\n }\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n if (!TSCNotified || TSCNotified === '') {\r\n TSCNotifiedDropdown.classList.add('error');\r\n } else {\r\n TSCNotifiedDropdown.classList.remove('error');\r\n }\r\n\r\n if (!bilingualSupplement || bilingualSupplement === '') {\r\n bilingualSupplementDropdown.classList.add('error');\r\n } else {\r\n bilingualSupplementDropdown.classList.remove('error');\r\n }\r\n\r\n var noteInput = narrativeOutcomeInput.querySelector('textarea');\r\n\r\n if (noteInput.value === '') {\r\n narrativeOutcomeInput.classList.add('error');\r\n } else {\r\n narrativeOutcomeInput.classList.remove('error');\r\n }\r\n\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n }\r\n\r\n function checkServiceDateInput() {\r\n\r\n let todaydate = new Date();\r\n let myservicedate = new Date(serviceDate);\r\n\r\n var isDateBefore = dates.isBefore(myservicedate, todaydate);\r\n\r\n if (!isDateBefore) {\r\n serviceDateInput.classList.add('error');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n }\r\n\r\n }\r\n \r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length !== 0) || formReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n updateNoteBtn.classList.add('disabled');\r\n } else {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n updateNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n if ((userId !== currentEntryUserId) || !$.session.OODDelete) {\r\n deleteNoteBtn.classList.add('disabled');\r\n } else {\r\n deleteNoteBtn.classList.remove('disabled')\r\n }\r\n\r\n }\r\n\r\nfunction checkEndInputTime() {\r\n\r\n var endInput = endTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(endInput.value))\r\n {\r\n endTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n }\r\n\r\n var isEndAfterStartTime = validateStartEndTimes('endCheck')\r\n\r\n if (isEndAfterStartTime) {\r\n endTimeInput.classList.remove('error');\r\n \r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n var isEndTimeValid = UTIL.validateTime(endInput.value);\r\n \r\n if (isEndTimeValid) {\r\n endTimeInput.classList.remove('error');\r\n \r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n}\r\n\r\nfunction checkStartInputTime() {\r\n\r\n var startInput = startTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(startInput.value))\r\n {\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n }\r\n\r\n var isStartTimeValid = UTIL.validateTime(startInput.value);\r\n if (isStartTimeValid) {\r\n startTimeInput.classList.remove('error');\r\n } else {\r\n startTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n}\r\n\r\nfunction checkTimeForAfterNow(enteredTime) {\r\n let tempNow = new Date();\r\n let nowHour = tempNow.getHours() < '10' ? `0${tempNow.getHours()}` : tempNow.getHours();\r\n let nowMinuet =\r\n tempNow.getMinutes() < '10' ? `0${tempNow.getMinutes()}` : tempNow.getMinutes();\r\n return (\r\n Date.parse(`01/01/2020 ${enteredTime}`) >\r\n Date.parse(`01/01/2020 ${nowHour}:${nowMinuet}`)\r\n );\r\n}\r\n\r\n\r\nfunction validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n}\r\n\r\n function setupEvents() {\r\n\r\n SAMLevelDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n SAMLevel = '';\r\n } else {\r\n SAMLevel = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n employerDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n employer = '';\r\n } else {\r\n employer = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n contactMethodDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n contactType = '';\r\n } else {\r\n contactType = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n applicationSubmittedDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n application = '';\r\n } else {\r\n application = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n interviewDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n interview = '';\r\n } else {\r\n interview = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n jobSeekerPresentDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n jobSeekerPresent = '';\r\n } else {\r\n jobSeekerPresent = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n outcomeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n outcome = '';\r\n } else {\r\n outcome = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotifiedDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n TSCNotified = '';\r\n } else {\r\n TSCNotified = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n bilingualSupplementDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n bilingualSupplement = '';\r\n } else {\r\n bilingualSupplement = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n startTimeInput.addEventListener('focusout', event => {\r\n startTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n endTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n serviceDateInput.addEventListener('change', event => {\r\n serviceDate = event.target.value;\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n \r\n });\r\n serviceDateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n narrativeOutcomeInput.addEventListener('input', event => {\r\n notes = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewNoteBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n\t\t});\r\n\r\n saveNoteBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n\t\t});\r\n \r\n }\r\n\r\n \t// build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n\t\t const wrap = document.createElement('div');\r\n\t\t wrap.classList.add('planConsumerCard');\r\n\t\r\n\t\t wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n \r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n SAMLevel,\r\n employer,\r\n contactType,\r\n jobSeekerPresent, //-- REMOVED FROM FORM ON 4/8/22\r\n outcome, //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotified, //-- REMOVED FROM FORM ON 4/8/22\r\n bilingualSupplement,\r\n notes,\r\n userId,\r\n application, \r\n interview,\r\n };\r\n\r\n OODAjax.updateForm4MonthlyPlacementEditData(data, function(results) {\r\n successfulSave.show();\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n \r\n });\r\n\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n SAMLevel,\r\n employer,\r\n contactType,\r\n jobSeekerPresent, //-- REMOVED FROM FORM ON 4/8/22\r\n outcome, //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotified, //-- REMOVED FROM FORM ON 4/8/22\r\n bilingualSupplement,\r\n notes,\r\n caseManagerId,\r\n userId,\r\n serviceId,\r\n referenceNumber,\r\n application, \r\n interview,\r\n };\r\n\r\n OODAjax.insertForm4MonthlyPlacementEditData(data, function(results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildEntryServicePopUp(consumerId, 'newEntry');\r\n }, 2000);\r\n } else { //save\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n\r\n }\r\n\r\n function deleteConfirmation(caseNoteId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteOODFormEntryAsync(caseNoteId); \r\n if (result.deleteOODFormEntryResult === \"1\"){\r\n OOD.loadOODLanding(); \r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function() {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n \r\n\r\n // build Employer pop-up used for adding/editing Employer information\r\n async function buildEmployerPopUp(employerdata, postType, openpageName, redirectInfo) {\r\n if (openpageName == 'employmentInfo') {\r\n openedPage = 'employmentInfo';\r\n redirectInformation = redirectInfo\r\n }\r\n else\r\n openedPage = 'employer';\r\n\r\n var headingEmployer;\r\n if (employerdata && Object.keys(employerdata).length !== 0) {\r\n employerId = employerdata[0].employerId;\r\n employerName = employerdata[0].employerName;\r\n employeraddress1 = employerdata[0].address1;\r\n employeraddress2 = employerdata[0].address2;\r\n employercity = employerdata[0].city;\r\n employerstate = employerdata[0].state;\r\n employerzipcode = employerdata[0].zipcode;\r\n headingEmployer = 'Edit this Employer';\r\n BtnEventType = 'Update';\r\n } else {\r\n employerId = '';\r\n employerName = '';\r\n employeraddress1 = '';\r\n employeraddress2 = '';\r\n employercity = '';\r\n employerstate = '';\r\n employerzipcode = '';\r\n headingEmployer = 'Add Employer';\r\n BtnEventType = 'Add';\r\n }\r\n\r\n let editEmployerPopup = POPUP.build({\r\n header: headingEmployer,\r\n hideX: true,\r\n id: \"editEmployerPopup\"\r\n });\r\n\r\n employerInput = input.build({\r\n id: 'employerInput',\r\n label: 'Employer',\r\n value: (employerName) ? employerName : '',\r\n });\r\n\r\n address1Input = input.build({\r\n label: 'Address',\r\n value: (employeraddress1) ? employeraddress1 : '',\r\n });\r\n\r\n address2Input = input.build({\r\n label: 'Address 2',\r\n value: (employeraddress2) ? employeraddress2 : '',\r\n });\r\n\r\n cityInput = input.build({\r\n label: 'City',\r\n value: (employercity) ? employercity : '',\r\n });\r\n\r\n stateInput = input.build({\r\n label: 'State',\r\n value: (employerstate) ? employerstate : '',\r\n });\r\n\r\n zipcodeInput = input.build({\r\n label: 'Zip Code',\r\n value: (employerzipcode) ? employerzipcode : '',\r\n });\r\n\r\n popupSaveBtn = button.build({\r\n id: \"addEmployerSaveBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n callback: () => {\r\n if (!popupSaveBtn.classList.contains('disabled')) {\r\n editEmployerPopupDoneBtn(postType)\r\n }\r\n }\r\n });\r\n\r\n popupCancelBtn = button.build({\r\n id: \"addEmployerCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => POPUP.hide(editEmployerPopup)\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(popupSaveBtn);\r\n btnWrap.appendChild(popupCancelBtn);\r\n editEmployerPopup.appendChild(employerInput);\r\n editEmployerPopup.appendChild(address1Input);\r\n editEmployerPopup.appendChild(address2Input);\r\n editEmployerPopup.appendChild(cityInput);\r\n editEmployerPopup.appendChild(stateInput);\r\n editEmployerPopup.appendChild(zipcodeInput);\r\n editEmployerPopup.appendChild(btnWrap);\r\n\r\n popUpEventHandlers();\r\n POPUP.show(editEmployerPopup);\r\n checkPopupRequiredFields();\r\n }\r\n\r\n function popUpEventHandlers() {\r\n employerInput.addEventListener('input', event => {\r\n employerName = event.target.value.trim();\r\n checkPopupRequiredFields();\r\n });\r\n\r\n address1Input.addEventListener('input', event => {\r\n employeraddress1 = event.target.value;\r\n });\r\n\r\n address2Input.addEventListener('input', event => {\r\n employeraddress2 = event.target.value;\r\n });\r\n\r\n cityInput.addEventListener('input', event => {\r\n employercity = event.target.value;\r\n });\r\n\r\n stateInput.addEventListener('input', event => {\r\n employerstate = event.target.value;\r\n });\r\n\r\n zipcodeInput.addEventListener('input', event => {\r\n employerzipcode = event.target.value;\r\n });\r\n}\r\n\r\nfunction checkPopupRequiredFields() {\r\n var employrInput = employerInput.querySelector('#employerInput');\r\n if (employrInput.value.trim() === '') { \r\n employerInput.classList.add('error');\r\n popupSaveBtn.classList.add('disabled'); \r\n return;\r\n } else {\r\n employerInput.classList.remove('error');\r\n popupSaveBtn.classList.remove('disabled');\r\n }\r\n\r\n // if (($.session.UpdateEmployers && BtnEventType == 'Update') || ($.session.InsertEmployers && BtnEventType == 'Add')) {\r\n // popupSaveBtn.classList.remove('disabled');\r\n // } else {\r\n // popupSaveBtn.classList.add('disabled');\r\n // }\r\n}\r\n\r\n // Event for Done BTN on the Edit Employer Popup Window\r\n async function editEmployerPopupDoneBtn(postType) {\r\n\r\n if (postType == 'insert') {\r\n\r\n const result = await OODAjax.insertEmployerAsync(employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { insertEmployerResult } = result;\r\n employer = insertEmployerResult.employerId;\r\n\r\n if (employer == '0') {\r\n warningPopup();\r\n } else {\r\n \r\n populateConsumerEmployersDropdown(consumerId);\r\n // const dropdown = document.querySelector('#employerDropdown');\r\n // const selectedValue = dropdown.value;\r\n // var selectedOption = dropdown.options[dropdown.selectedIndex];\r\n\r\n // if (selectedOption.value == \"SELECT\") {\r\n // employer = '';\r\n // } else {\r\n // employer = selectedOption.value;\r\n // }\r\n // checkRequiredFields();\r\n\r\n POPUP.hide(editEmployerPopup)\r\n successfulSave.show();\r\n\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n \r\n \r\n // if (openedPage == 'employmentInfo')\r\n // NewEmployment.refreshEmployment(redirectInformation.positionId, redirectInformation.empName, redirectInformation.posName, redirectInformation.consumersName, redirectInformation.consumersId, tabPositionIndex = 0);\r\n // else\r\n // addEditEmployers.init();\r\n }, 2000);\r\n }\r\n\r\n } else { //'update'\r\n POPUP.hide(editEmployerPopup)\r\n const result = await OODAjax.updateEmployerAsync(employerId, employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { updateEmployerResult: { employerID } } = result;\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n // addEditEmployers.init();\r\n }, 2000);\r\n }\r\n }\r\n\r\n function warningPopup() {\r\n var popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n });\r\n var OKBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = \"This employer already exists.\";\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n return {\r\n init,\r\n \r\n };\r\n})();\r\n","const OODForm4MonthlySummary = (() => {\r\n\r\n // Inputs\r\n let monthYearDropdown;\r\n let referenceNumberDropdown;\r\n let nextScheduledReviewInput;\r\n let employmentGoalInput;\r\n let referralQuestionsInput;\r\n let individualsInputInput;\r\n let issuesConcernswithProgressInput;\r\n let planGoalsNextMonthInput;\r\n let numberConsumerContactsInput;\r\n let numberEmployerContactsbyConsumerInput;\r\n let numberEmployerContactsbyStaffInput;\r\n let numberMonthsinJobDevelopmentInput;\r\n\r\n // values\r\n let consumerId;\r\n let emReviewId;\r\n let emReviewDate; // monthYearDropdown\r\n let emReviewDateDBValue; // monthYearDropdown \r\n let emReferenceNumber; // referenceNumberDropdown\r\n let emNextScheduledReview; // nextScheduledReviewInput\r\n let emEmploymentGoal; // employmentGoalInput\r\n let emReferralQuestions; //referralQuestionsInput\r\n let emIndivInputonSearch; // individualsInputInput\r\n let emPotentialIssueswithProgress; // issuesConcernswithProgressInput\r\n let emPlanGoalsNextMonth; // planGoalsNextMonthInput\r\n let emNumberofConsumerContacts; // numberConsumerContactsInput\r\n let emNumberEmployerContactsbyConsumer; // numberEmployerContactsbyConsumerInput\r\n let emNumberEmployerContactsbyStaff; // numberEmployerContactsbyStaffInput\r\n let emNumberMonthsJobDevelopment; // numberMonthsinJobDevelopmentInput\r\n\r\n // buttons\r\n let saveBtn;\r\n let saveAndNewBtn;\r\n let cancelBtn;\r\n let updateBtn;\r\n let deleteBtn;\r\n\r\n //Review Data\r\n//let caseManagerId;\r\nlet userId;\r\nlet serviceId;\r\nlet reviewStartDate;\r\nlet reviewEndDate;\r\n\r\nlet formReadOnly = false;\r\nconst FORMNUMBER = '4'; // Form 4\r\n\r\nlet OODMonthlySummariesTable; // To be added in future release\r\n\r\n async function init(emReviewData, currentConsumer, selectedServiceId, currentRecordUserId, clickSource = 'OODGrid') {\r\n\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n let todaysdate = new Date();\r\n var thisMonthFirstDay = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1);\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (emReviewData && Object.keys(emReviewData).length !== 0) {\r\n\r\n userId = $.session.UserId;\r\n emReviewId = emReviewData.emReviewId;\r\n emReviewDate = getShortDate(emReviewData.emReviewDate); \r\n emReviewDateDBValue = new Date(emReviewData.emReviewDate); \r\n emReferenceNumber = emReviewData.emReferenceNumber;\r\n emNextScheduledReview = emReviewData.emNextScheduledReview;\r\n emEmploymentGoal = emReviewData.emEmploymentGoal;\r\n emReferralQuestions = emReviewData.emReferralQuestions; //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch = emReviewData.emIndivInputonSearch;\r\n emPotentialIssueswithProgress = emReviewData.emPotentialIssueswithProgress;\r\n emPlanGoalsNextMonth = emReviewData.emPlanGoalsNextMonth; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts = emReviewData.emNumberofConsumerContacts; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer = emReviewData.emNumberEmployerContactsbyConsumer; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff = emReviewData.emNumberEmployerContactsbyStaff; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment = emReviewData.emNumberMonthsJobDevelopment; //-- REMOVED FROM FORM ON 4/7/22\r\n\r\n } else {\r\n userId = $.session.UserId;\r\n serviceId = selectedServiceId;\r\n emReviewId = '0';\r\n emReviewDate = ('0' + (todaysdate.getMonth() + 1)).slice(-2) + '/' + todaysdate.getFullYear(); \r\n emReviewDateDBValue = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1); \r\n emReferenceNumber = '';\r\n emNextScheduledReview = '';\r\n emEmploymentGoal = '';\r\n emReferralQuestions = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch = '';\r\n emPotentialIssueswithProgress = '';\r\n emPlanGoalsNextMonth = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n \r\n if (clickSource === 'monthlySummary' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n \r\n if ((userId !== currentRecordUserId)) {\r\n formReadOnly = true;\r\n }\r\n\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer)\r\n\r\n let container = document.createElement(\"div\");\r\n container.classList.add(\"monthlyForm\");\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Monthly Placement -- OOD Form 4 Monthly Summary';\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n //var date = new Date();\r\n monthYearDropdown = dropdown.build({\r\n label: 'Month',\r\n //classNames: 'monthYear',\r\n dropdownId: \"monthYearDropdown\",\r\n value: emReviewDate,\r\n readonly: formReadOnly,\r\n // value: ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear()\r\n //readonly: true,\r\n });\r\n\r\n referenceNumberDropdown = dropdown.build({\r\n label: 'Reference Number',\r\n dropdownId: \"referenceNumberDropdown\",\r\n value: emReferenceNumber,\r\n readonly: formReadOnly,\r\n // readonly: (userId !== currentRecordUserId) ? true : false,\r\n });\r\n\r\n nextScheduledReviewInput = input.build({\r\n\t\t\ttype: 'date',\r\n\t\t\tlabel: 'Next Scheduled Review',\r\n\t\t\tstyle: 'secondary',\r\n value: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n readonly: formReadOnly,\r\n\t\t\t//value: filterValues.serviceDateStart\r\n\t\t });\r\n\r\n // employmentGoalInput textarea\r\n employmentGoalInput = input.build({\r\n label: 'Employment Goal',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emEmploymentGoal,\r\n readonly: formReadOnly,\r\n charLimit: 256,\r\n forceCharLimit: true,\r\n });\r\n // employmentGoalInput.classList.add('OODTextArea');\r\n\r\n // referralQuestionsInput textarea -- REMOVED FROM FORM ON 4/7/22\r\n referralQuestionsInput = input.build({\r\n label: 'Referral Questions',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emReferralQuestions,\r\n readonly: formReadOnly,\r\n });\r\n // referralQuestionsInput.classList.add('introTextArea');\r\n\r\n // individualsInput textarea\r\n individualsInputInput = input.build({\r\n label: `Individual's Self-Assessment`,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emIndivInputonSearch,\r\n readonly: formReadOnly,\r\n });\r\n // individualsInputInput.classList.add('introTextArea');\r\n \r\n // issuesConcernswithProgress textarea\r\n issuesConcernswithProgressInput = input.build({\r\n label: `Provider's Assessment & Recommendations`,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emPotentialIssueswithProgress,\r\n readonly: formReadOnly,\r\n });\r\n // issuesConcernswithProgressInput.classList.add('introTextArea');\r\n \r\n // planGoalsNextMonth textarea -- REMOVED FROM FORM ON 4/7/22\r\n planGoalsNextMonthInput = input.build({\r\n label: 'Plan/Goals for Next Month',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emPlanGoalsNextMonth,\r\n readonly: formReadOnly,\r\n });\r\n // planGoalsNextMonthInput.classList.add('introTextArea');\r\n planGoalsNextMonthInput.addEventListener('input', e => {\r\n emPlanGoalsNextMonth = e.target.value;\r\n // updateIntroduction();\r\n });\r\n \r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberConsumerContactsInput = input.build({\r\n id: \"numberConsumerContactsInput\",\r\n label: \"No. of Consumer Contacts\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: emNumberofConsumerContacts,\r\n readonly: formReadOnly,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberEmployerContactsbyConsumerInput = input.build({\r\n id: \"numberEmployerContactsbyConsumerInput\",\r\n label: \"No. of Employer Contacts by Consumer\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: emNumberEmployerContactsbyConsumer,\r\n readonly: formReadOnly,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberEmployerContactsbyStaffInput = input.build({\r\n id: \"numberEmployerContactsbyStaffInput\",\r\n label: \"No. of Employer Contacts by Staff\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: emNumberEmployerContactsbyStaff,\r\n readonly: formReadOnly,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberMonthsinJobDevelopmentInput = input.build({\r\n id: \"numberMonthsinJobDevelopmentInput\",\r\n label: \"No. of Months in Job Development\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: emNumberMonthsJobDevelopment,\r\n readonly: formReadOnly,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n\r\n saveBtn = button.build({\r\n text: 'Save',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => { \r\n insertFormData('save'); \r\n },\r\n });\r\n saveAndNewBtn = button.build({\r\n text: 'Save & New',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateBtn = button.build({\r\n text: 'update',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => { \r\n updateFormData(); \r\n },\r\n });\r\n deleteBtn = button.build({\r\n text: 'Delete',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(emReviewId); \r\n },\r\n });\r\n cancelBtn = button.build({\r\n text: 'cancel',\r\n style : 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n \r\n setupEvents();\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form4monthlysummary_inputContainer1');\r\n\r\n inputContainer1.appendChild(monthYearDropdown);\r\n inputContainer1.appendChild(referenceNumberDropdown);\r\n inputContainer1.appendChild(nextScheduledReviewInput);\r\n\r\n container.appendChild(inputContainer1);\r\n\r\n container.appendChild(employmentGoalInput); \r\n container.appendChild(individualsInputInput);\r\n container.appendChild(issuesConcernswithProgressInput);\r\n\r\n // container.appendChild(planGoalsNextMonthInput); //-- REMOVED FROM FORM ON 4/7/22\r\n// container.appendChild(referralQuestionsInput); //-- REMOVED FROM FORM ON 4/7/22\r\n // const inputContainer2 = document.createElement('div');\r\n // inputContainer2.classList.add('ood_form4monthlysummary_inputContainer2');\r\n\r\n // inputContainer2.appendChild(numberConsumerContactsInput); //-- REMOVED FROM FORM ON 4/7/22\r\n // inputContainer2.appendChild(numberEmployerContactsbyConsumerInput); //-- REMOVED FROM FORM ON 4/7/22\r\n // inputContainer2.appendChild(numberEmployerContactsbyStaffInput); //-- REMOVED FROM FORM ON 4/7/22\r\n //// inputContainer2.appendChild(numberMonthsinJobDevelopmentInput); //-- REMOVED FROM FORM ON 4/7/22\r\n\r\n // container.appendChild(inputContainer2);\r\n\r\n let updatecontainer = document.createElement(\"div\");\r\n updatecontainer.classList.add(\"updatecontainer\");\r\n\r\n let updatemessage = document.createElement(\"div\");\r\n updatemessage.classList.add(\"updatemessage\");\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n (emReviewId == '0') ? btnWrap.appendChild(saveBtn) : btnWrap.appendChild(updateBtn);\r\n (emReviewId == '0') ? btnWrap.appendChild(saveAndNewBtn) : btnWrap.appendChild(deleteBtn) ;\r\n\r\n let btnWrap2 = document.createElement(\"div\");\r\n btnWrap2.classList.add(\"btnWrap\");\r\n btnWrap2.appendChild(cancelBtn);\r\n\r\n let btnRow = document.createElement(\"div\");\r\n btnRow.classList.add(\"btnRow\");\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n container.appendChild(btnRow);\r\n\r\n var LineBr = document.createElement('br');\r\n var LineBr2 = document.createElement('br');\r\n var LineBr3 = document.createElement('br');\r\n container.appendChild(LineBr);\r\n container.appendChild(LineBr2);\r\n container.appendChild(LineBr3);\r\n \r\n // NOTE: This summary table will be added in a later release; will need this code eventually -- JMM 02/05/2022\r\n // OODMonthlySummariesTable = await buildOODMonthlySummariesTable();\r\n\t // container.appendChild(OODMonthlySummariesTable);\r\n \r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n populateReferenceNumberDropdown();\r\n populateStaticDropDowns();\r\n\r\n checkRequiredFields(); \r\n\r\n }\r\n\r\n function getShortDate(fullDate) {\r\n\r\n var thisDate = new Date(fullDate);\r\n var thisShortDate = (thisDate.getMonth() + 1).toString().padStart(2, \"0\") + '/' + thisDate.getFullYear();\r\n return thisShortDate;\r\n\r\n }\r\n\r\n async function populateReferenceNumberDropdown() { \r\n \r\n setReviewStartandEndDates();\r\n\r\n const {\r\n getConsumerReferenceNumbersResult: referencenumbers,\r\n } = await OODAjax.getConsumerReferenceNumbersAsync(consumerId, reviewStartDate, reviewEndDate, FORMNUMBER);\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = referencenumbers.map((referencenumber) => ({\r\n id: referencenumber.referenceNumber, \r\n value: referencenumber.referenceNumber, \r\n text: referencenumber.referenceNumber,\r\n })); \r\n\r\n \r\n if (data.length == 0) {\r\n displaynoReferenceNumberPopup();\r\n } \r\n\r\n // if creating a new record and there is only one referenceNumber in the data, then automatically select it in the DDL\r\n if (emReferenceNumber == '' && data.length == 1) {\r\n emReferenceNumber = data[0].value;\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n dropdown.populate(\"referenceNumberDropdown\", data, emReferenceNumber); \r\n\r\n }\r\n\r\n function setReviewStartandEndDates() {\r\n\r\n var dateparts = emReviewDate.split('/');\r\n var thisMonth = dateparts[0];\r\n\r\n var daysinMonth = dates.getDaysInMonth(emReviewDateDBValue)\r\n var thisYear = emReviewDateDBValue.getFullYear();\r\n\r\n reviewStartDate = thisYear + '-' + thisMonth + '-01';\r\n reviewEndDate = thisYear + '-' + thisMonth + '-' + daysinMonth;\r\n\r\n }\r\n\r\n function displaynoReferenceNumberPopup() {\r\n\r\n // no reference Numbers\r\n\t\t\tlet noReferenceNumberPopup = POPUP.build({\r\n\t\t\t\theader: \"No Reference Numbers Found\",\r\n\t\t\t\thideX: true,\r\n\t\t\t\tid: \"noReferenceNumberPopup\"\r\n\t\t\t}); \r\n\r\n\t\t\tlet OKBtn = button.build({\r\n\t\t\t\ttext: 'Ok',\r\n\t\t\t\tstyle: 'secondary',\r\n\t\t\t\ttype: 'contained',\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t POPUP.hide(noReferenceNumberPopup);\r\n\t\t\t\t // overlay.hide();\r\n\r\n\t\t\t\t},\r\n\t\t\t });\r\n\r\n\t\t\t let btnWrap = document.createElement(\"div\");\r\n\t\t\t let warningMessage = document.createElement('p');\r\n\t\t\t warningMessage.innerHTML = 'There are no reference numbers for this consumer and date combination. Please change the Month/Year to see a list of valid reference numbers or contact your Advisor Administrator to enter an OOD Authorization for the selected consumer.';\r\n\t\t\t btnWrap.classList.add(\"btnWrap\");\r\n\t\t\t btnWrap.appendChild(OKBtn); \r\n\t\t\t //noServicesPopup.appendChild(consumerServicesDropdown);\r\n\t\t\t noReferenceNumberPopup.appendChild(warningMessage);\r\n\t\t\t noReferenceNumberPopup.appendChild(btnWrap);\r\n\t\t\t \toverlay.show();\r\n\t\t\t POPUP.show(noReferenceNumberPopup);\r\n\r\n }\r\n\r\n // for monthYearDropdown DDL\r\n function populateStaticDropDowns() {\r\n \r\n var mydate = new Date();\r\n var arrayDates = [];\r\n\r\n for (let i = 0; i < 24; i++) {\r\n var firstDay = new Date(mydate.getFullYear() - 1, mydate.getMonth() + i, 1);\r\n arrayDates.push({\r\n partialdate: (firstDay.getMonth() +1).toString().padStart(2,\"0\") + '/' + (firstDay.getFullYear().toString()),\r\n fulldate: firstDay.toDateString(),\r\n });\r\n }\r\n\r\n let data = arrayDates.map((thisDate) => ({\r\n id: thisDate.fulldate, \r\n value: thisDate.partialdate, \r\n text: thisDate.partialdate,\r\n })); \r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n dropdown.populate(\"monthYearDropdown\", data, emReviewDate); \r\n }\r\n\r\n function checkRequiredFields() {\r\n\r\n if (!emReviewDate || emReviewDate === '') {\r\n monthYearDropdown.classList.add('error');\r\n } else {\r\n monthYearDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emNextScheduledReview || emNextScheduledReview === '') {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n\r\n var employmentGoalInpt = employmentGoalInput.querySelector('textarea');\r\n if (employmentGoalInpt.value === '') {\r\n employmentGoalInput.classList.add('error');\r\n } else {\r\n employmentGoalInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var referralQuestionsInpt = referralQuestionsInput.querySelector('textarea'); //-- REMOVED FROM FORM ON 4/7/22\r\n if (referralQuestionsInpt.value === '') {\r\n referralQuestionsInput.classList.add('error');\r\n } else {\r\n referralQuestionsInput.classList.remove('error');\r\n }\r\n\r\n var individualsInputInpt = individualsInputInput.querySelector('textarea');\r\n if (individualsInputInpt.value === '') {\r\n individualsInputInput.classList.add('error');\r\n } else {\r\n individualsInputInput.classList.remove('error');\r\n }\r\n\r\n var issuesConcernswithProgressInpt = issuesConcernswithProgressInput.querySelector('textarea');\r\n if (issuesConcernswithProgressInpt.value === '') {\r\n issuesConcernswithProgressInput.classList.add('error');\r\n } else {\r\n issuesConcernswithProgressInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var planGoalsNextMonthInpt = planGoalsNextMonthInput.querySelector('textarea');\r\n if (planGoalsNextMonthInpt.value === '') {\r\n planGoalsNextMonthInput.classList.add('error');\r\n } else {\r\n planGoalsNextMonthInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var numberConsumerContactsInpt = numberConsumerContactsInput.querySelector('#numberConsumerContactsInput'); \r\n if (numberConsumerContactsInpt.value === '' ) {\r\n numberConsumerContactsInput.classList.add('error');\r\n } else {\r\n numberConsumerContactsInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var numberEmployerContactsbyConsumerInpt = numberEmployerContactsbyConsumerInput.querySelector('#numberEmployerContactsbyConsumerInput');\r\n if (numberEmployerContactsbyConsumerInpt.value === '' ) {\r\n numberEmployerContactsbyConsumerInput.classList.add('error');\r\n } else {\r\n numberEmployerContactsbyConsumerInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var numberEmployerContactsbyStaffInpt = numberEmployerContactsbyStaffInput.querySelector('#numberEmployerContactsbyStaffInput');\r\n if (numberEmployerContactsbyStaffInpt.value === '' ) {\r\n numberEmployerContactsbyStaffInput.classList.add('error');\r\n } else {\r\n numberEmployerContactsbyStaffInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var numberMonthsinJobDevelopmentInpt = numberMonthsinJobDevelopmentInput.querySelector('#numberMonthsinJobDevelopmentInput');\r\n if (numberMonthsinJobDevelopmentInpt.value === '' ) {\r\n numberMonthsinJobDevelopmentInput.classList.add('error');\r\n } else {\r\n numberMonthsinJobDevelopmentInput.classList.remove('error');\r\n }\r\n\r\n setBtnStatus();\r\n }\r\n\r\n function checknextScheduledReviewDateInput() {\r\n let todaydate = new Date();\r\n let thisNextReviewDate = new Date(emNextScheduledReview);\r\n \r\n var isDateBefore = dates.isBefore(thisNextReviewDate, todaydate);\r\n \r\n if (isDateBefore) {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length !== 0) || formReadOnly) {\r\n saveBtn.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n updateBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveAndNewBtn.classList.remove('disabled');\r\n updateBtn.classList.remove('disabled');\r\n }\r\n \r\n if ((userId !== currentEntryUserId) || !$.session.OODDelete) {\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n deleteBtn.classList.remove('disabled')\r\n }\r\n \r\n }\r\n\r\n function setupEvents() {\r\n \r\n monthYearDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n var dateparts = selectedOption.value.split('/');\r\n var updatedFullDate = new Date(dateparts[1], dateparts[0] -1, 1)\r\n emReviewDateDBValue = updatedFullDate;\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n emReviewDate = '';\r\n } else {\r\n emReviewDate = selectedOption.value;\r\n }\r\n\r\n emReferenceNumber = '';\r\n populateReferenceNumberDropdown();\r\n checkRequiredFields();\r\n });\r\n\r\n referenceNumberDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n emReferenceNumber = '';\r\n } else {\r\n emReferenceNumber = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n nextScheduledReviewInput.addEventListener('change', event => {\r\n emNextScheduledReview = event.target.value;\r\n checknextScheduledReviewDateInput();\r\n setBtnStatus();\r\n \r\n });\r\n // nextScheduledReviewInput.addEventListener('keydown', event => {\r\n // event.preventDefault();\r\n // event.stopPropagation();\r\n // });\r\n\r\n\r\n employmentGoalInput.addEventListener('input', event => {\r\n emEmploymentGoal = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n referralQuestionsInput.addEventListener('input', event => {\r\n emReferralQuestions = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n individualsInputInput.addEventListener('input', event => {\r\n emIndivInputonSearch = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n issuesConcernswithProgressInput.addEventListener('input', event => {\r\n emPotentialIssueswithProgress = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n planGoalsNextMonthInput.addEventListener('input', event => {\r\n emPlanGoalsNextMonth = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberConsumerContactsInput.addEventListener('input', event => {\r\n emNumberofConsumerContacts = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberEmployerContactsbyConsumerInput.addEventListener('input', event => {\r\n emNumberEmployerContactsbyConsumer = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberEmployerContactsbyStaffInput.addEventListener('input', event => {\r\n emNumberEmployerContactsbyStaff = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberMonthsinJobDevelopmentInput.addEventListener('input', event => {\r\n emNumberMonthsJobDevelopment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n\t\t});\r\n\r\n saveBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n\t\t});\r\n\r\n\r\n\r\n }\r\n // build the listing of OOD Entries (based off of filter settings) -- Note: will be used in future release -- JMM 02/05/2022\r\n async function buildOODMonthlySummariesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODMonthlySummaryTable',\r\n columnHeadings: ['Month','Individual Input on Search', 'Potential Issues/Concerns with Progress', 'Plan/Goals for Next Month'],\r\n endIcon: false,\r\n \r\n };\r\n \r\n\t // FAKE DATA : build table data -- see forms.js line 93\r\n\t\t const tableData = [{ values : ['11/2021', 'This is my input', 'This is my concern', 'Got no plans, bucko']}, \r\n\t\t \t\t\t\t\t{ values : ['11/2021', 'No, this is my input', 'Yes, this is my concern', 'No plans here either']} ];\r\n\r\n\r\n\t\t const oTable = table.build(tableOptions);\r\n\t\t table.populate(oTable, tableData);\r\n\r\n\t return oTable;\r\n }\r\n\r\n\r\n \t// build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n \r\n consumer.card.classList.remove('highlighted');\r\n \r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n \r\n wrap.appendChild(consumer.card);\r\n \r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n \r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n\r\n //var myserviceDate =\"2/7/2022 12:00:00 AM\";\r\n // '2022-02-07'\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate: emReviewDateDBValue.getFullYear() + '-' + (emReviewDateDBValue.getMonth() +1).toString().padStart(2, \"0\") + '-' + '01', \r\n // emReviewDate: UTIL.formatDateToIso(emReviewDateDBValue.split(' ')[0]), \r\n emReferenceNumber,\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emEmploymentGoal,\r\n emReferralQuestions, //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch,\r\n emPotentialIssueswithProgress,\r\n emPlanGoalsNextMonth, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment, //-- REMOVED FROM FORM ON 4/7/22\r\n userId,\r\n };\r\n\r\n OODAjax.updateForm4MonthlySummary(data, function(results) {\r\n successfulSave.show();\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n \r\n });\r\n \r\n function getReviewDate(DBValue) {\r\n if (DBValue instanceof Date && !isNaN(DBValue.valueOf())) {\r\n return DBValue.getFullYear() + '-' + (DBValue.getMonth()).toString().padStart(2, \"0\") + '-' + '1';\r\n } else {\r\n return UTIL.formatDateToIso(DBValue.split(' ')[0]);\r\n }\r\n }\r\n }\r\n\r\n function insertFormData(saveType) {\r\n\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate: emReviewDateDBValue.getFullYear() + '-' + (emReviewDateDBValue.getMonth() +1).toString().padStart(2, \"0\") + '-' + '01', \r\n emReferenceNumber,\r\n // emNextScheduledReview: emNextScheduledReviewDBValue.getFullYear() + '-' + (emNextScheduledReviewDBValue.getMonth()).toString().padStart(2, \"0\") + '-' + '01',\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emEmploymentGoal,\r\n emReferralQuestions, //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch,\r\n emPotentialIssueswithProgress,\r\n emPlanGoalsNextMonth, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment, //-- REMOVED FROM FORM ON 4/7/22\r\n userId,\r\n serviceId,\r\n };\r\n\r\n OODAjax.insertForm4MonthlySummary(data, function(results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildSummaryServicePopUp(consumerId, 'monthlySummary');\r\n }, 2000);\r\n } else { //save\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n\r\n }\r\n\r\n function deleteConfirmation(emReviewId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteFormMonthlySummaryAsync(emReviewId); \r\n if (result.deleteFormMonthlySummaryResult === \"1\"){\r\n OOD.loadOODLanding(); \r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function() {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n \r\n\r\n\r\n return {\r\n init,\r\n \r\n };\r\n })();","const Tier1andJDPlanForm = (() => {\r\n //Inputs\r\n let serviceDateInput; // Default Service Date to the date that is selected \r\n // when the user clicks New Entry in the previous page. Default all other fields to null/unselected\r\n let SAMLevelDropdown; //SAM Level dropdown should have same values/logic as existing dropdown for OOD Form 8\r\n let contactMethodDropdown; // Contact Type dropdown should have values from code_table.caption \r\n //where table_ID = Employment_Code_OOD_6 and code_table.field_id = ContactMethod \r\n let narrativeInput;\r\n \r\n\r\n // buttons\r\n let saveNoteBtn;\r\n let saveAndNewNoteBtn;\r\n let cancelNoteBtn;\r\n let updateNoteBtn;\r\n let deleteNoteBtn;\r\n\r\n // Case Note Edit Data\r\n let consumerId; // emp_ood.consumer_id = consumer_id from consumers table for the selected consumer \r\n let caseNoteId;\r\n let serviceDate; // emp_ood.date_of_service = Service Date from page \r\n let SAMLevel; // emp_ood.service_area_modifier = SAM Level from page. Save data to table using same logic as found in OOD Form 8. \r\n let contactMethod; // emp_ood.contact_method = Contact Type from page. Save code_table.code for selected contact method\r\n let narrative; // emp_ood.narrative = Narrative from page \r\n\r\n //Case Note Data\r\n let caseManagerId; // ??? emp_ood.person_id = the person_id from the persons table of the logged in\r\n let userId; // ??? user emp_ood.user_id = user_id from users_groups of the user who made the last update to the entry \r\n let serviceId;\r\n let referenceNumber; // emp_ood.reference_number = copy consumer_services_master.reference_number from the selected service (in pop-up prior to going to this page)\r\n\r\n let formReadOnly = false;\r\n\r\n let currentEntryUserId;\r\n\r\n async function init(\r\n caseNoteData,\r\n currentConsumer,\r\n selectedConsumerServiceId,\r\n selectedConsumerServiceName,\r\n selectedConsumerReferenceNumber,\r\n currentRecordUserId,\r\n selectedServiceDate,\r\n clickSource = 'OODGrid',\r\n ) {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (caseNoteData && Object.keys(caseNoteData).length !== 0) {\r\n userId = $.session.UserId;\r\n caseNoteId = caseNoteData[0].caseNoteId;\r\n serviceDate = caseNoteData[0].serviceDate; //TODO JOE: Case_Notes.Service_Date \r\n SAMLevel = caseNoteData[0].SAMLevel; //TODO JOE: Case_Notes.Service_Area_Modifier (populates with N/A, 1, 2, or 3)\r\n contactMethod = caseNoteData[0].contactMethod; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.contact_method\r\n narrative = caseNoteData[0].narrative; //TODO JOE: emp_ood.narrative\r\n \r\n } else {\r\n caseManagerId = $.session.PeopleId;\r\n userId = $.session.UserId;\r\n serviceId = selectedConsumerServiceId;\r\n caseNoteId = '0';\r\n serviceDate = selectedServiceDate;\r\n referenceNumber = selectedConsumerReferenceNumber;\r\n SAMLevel = '';\r\n contactMethod = '';\r\n narrative = '';\r\n \r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'newEntry' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (userId !== currentRecordUserId) {\r\n formReadOnly = true;\r\n }\r\n\r\n serviceDateInput = input.build({\r\n type: 'date',\r\n label: 'Service Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n //readonly: ((userId !== currentRecordUserId) || (!$.session.OODUpdate && !$.session.OODInsert)) ? true : false,\r\n readonly: true,\r\n //value: filterValues.serviceDateStart\r\n });\r\n\r\n\r\n SAMLevelDropdown = dropdown.build({\r\n label: 'SAM Level',\r\n dropdownId: 'SAMLevelDropdown',\r\n value: SAMLevel,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n contactMethodDropdown = dropdown.build({\r\n label: 'Contact Type',\r\n dropdownId: 'contactMethodDropdown',\r\n value: contactMethod,\r\n readonly: formReadOnly,\r\n });\r\n\r\n narrativeInput = input.build({\r\n label: 'Narrative',\r\n value: narrative,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n saveNoteBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('save');\r\n },\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateNoteBtn = button.build({\r\n text: 'update',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n updateFormData();\r\n },\r\n });\r\n deleteNoteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(caseNoteId);\r\n },\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer);\r\n\r\n let container = document.createElement('div');\r\n container.classList.add('monthlyForm');\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n // heading.innerHTML = `${selectedConsumerServiceName} - OOD Form 8`;\r\n heading.innerHTML = `Tier 1 and JD Plan - OOD Form 6`;\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n const inputContainer0 = document.createElement('div');\r\n inputContainer0.classList.add('ood_form4monthlyplacement_inputContainer1');\r\n inputContainer0.appendChild(serviceDateInput);\r\n inputContainer0.appendChild(contactMethodDropdown);\r\n inputContainer0.appendChild(SAMLevelDropdown);\r\n\r\n // const inputContainer1 = document.createElement('div');\r\n // inputContainer1.classList.add('ood_form4monthlyplacement_inputContainer1'); // new _OOD.scss setting -- ood_form8monthlyplacement_inputContainer1\r\n \r\n \r\n\r\n // const inputContainer2 = document.createElement('div');\r\n // inputContainer2.classList.add('ood_form4monthlyplacement_inputContainer2');\r\n \r\n\r\n container.appendChild(inputContainer0);\r\n // container.appendChild(inputContainer1);\r\n // container.appendChild(inputContainer2);\r\n\r\n container.appendChild(narrativeInput);\r\n\r\n let updatecontainer = document.createElement('div');\r\n updatecontainer.classList.add('updatecontainer');\r\n\r\n let updatemessage = document.createElement('div');\r\n updatemessage.classList.add('updatemessage');\r\n\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n caseNoteId == '0' ? btnWrap.appendChild(saveNoteBtn) : btnWrap.appendChild(updateNoteBtn);\r\n caseNoteId == '0' ? btnWrap.appendChild(saveAndNewNoteBtn) : btnWrap.appendChild(deleteNoteBtn);\r\n\r\n let btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n\r\n let btnRow = document.createElement('div');\r\n btnRow.classList.add('btnRow');\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n\r\n container.appendChild(btnRow);\r\n\r\n populateStaticDropDowns();\r\n populateContactMethodDropdown();\r\n \r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n // call Required Fields\r\n checkRequiredFields();\r\n }\r\n // TODO JOE: Double check that AJAX pulls correct data\r\n // Contact Method - Contact Method dropdown should be a list of values (code_table.caption)\r\n // where code_table.table_id = employment_code and code_table.field_id = contactmethod\r\n async function populateContactMethodDropdown() {\r\n const { getContactMethodsResult: contactMethods } = await OODAjax.getContactMethodsAsync('Form6');\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = contactMethods.map(contactMethod => ({\r\n id: contactMethod.code,\r\n value: contactMethod.code,\r\n text: contactMethod.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == contactMethod);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('contactMethodDropdown', data, contactMethod);\r\n }\r\n\r\n\r\n\r\n // TODO JOE: Look into whether this AJAX needs to change or not\r\n // THis DDL may not be needed?\r\n // async function populateOutcomeDropdown() {\r\n\r\n // const {\r\n // getOutcomesResult: outcomes,\r\n // } = await OODAjax.getOutcomesAsync();\r\n // // const templates = WorkflowViewerComponent.getTemplates();\r\n // let data = outcomes.map((outcome) => ({\r\n // id: outcome.outcomeCode,\r\n // value: outcome.outcomeCode,\r\n // text: outcome.outcomeCaption,\r\n // }));\r\n\r\n // const index = data.findIndex((x) => x.id == outcome);\r\n // \t\t\t\tif (index === -1) {\r\n // \t\t\t\t\t// case note outcome not in the outcomes DDL\r\n // \t\t\t\t}\r\n\r\n // data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n // dropdown.populate(\"outcomeDropdown\", data, outcome);\r\n // }\r\n\r\n function populateStaticDropDowns() {\r\n const SAMLevelDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'N/A', value: '0' },\r\n { text: '1', value: '1' },\r\n { text: '2', value: '2' },\r\n { text: '3', value: '3' },\r\n ];\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n ];\r\n\r\n dropdown.populate(SAMLevelDropdown, SAMLevelDropdownData, SAMLevel);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Behavioral Indicators (Work Days) dropdown should be a list of\r\n // values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(behavioralIndicatorsDropdown, yesNoDropdownData, behavioralIndicators);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Job Task Quality Indicators -Job Task Quality Indicators (Work Days) dropdown should\r\n // be a list of values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(jobTaskQualityIndicatorsDropdown, yesNoDropdownData, jobTaskQualityIndicators);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Job Task Quantity Indicators -Job Task Quantity Indicators (Work Days) dropdown\r\n // should be a list of values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(jobTaskQuantityIndicatorsDropdown, yesNoDropdownData, jobTaskQuantityIndicators);\r\n }\r\n\r\n function checkRequiredFields() {\r\n if (!SAMLevel || SAMLevel === '') {\r\n SAMLevelDropdown.classList.add('error');\r\n //return 'error';\r\n } else {\r\n SAMLevelDropdown.classList.remove('error');\r\n // return 'success';\r\n }\r\n \r\n if (!contactMethod || contactMethod === '') {\r\n contactMethodDropdown.classList.add('error');\r\n } else {\r\n contactMethodDropdown.classList.remove('error');\r\n }\r\n\r\n\r\n var noteInput = narrativeInput.querySelector('textarea');\r\n\r\n if (noteInput.value === '') {\r\n narrativeInput.classList.add('error');\r\n } else {\r\n narrativeInput.classList.remove('error');\r\n }\r\n\r\n checkServiceDateInput();\r\n \r\n setBtnStatus();\r\n }\r\n\r\n function checkServiceDateInput() {\r\n let todaydate = new Date();\r\n let myservicedate = new Date(serviceDate);\r\n\r\n var isDateBefore = dates.isBefore(myservicedate, todaydate);\r\n\r\n if (!isDateBefore) {\r\n serviceDateInput.classList.add('error');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0 || formReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n updateNoteBtn.classList.add('disabled');\r\n } else {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n updateNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n if (userId !== currentEntryUserId || !$.session.OODDelete) {\r\n deleteNoteBtn.classList.add('disabled');\r\n } else {\r\n deleteNoteBtn.classList.remove('disabled');\r\n }\r\n }\r\n \r\n function setupEvents() {\r\n SAMLevelDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n SAMLevel = '';\r\n } else {\r\n SAMLevel = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n contactMethodDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n contactMethod = '';\r\n } else {\r\n contactMethod = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n serviceDateInput.addEventListener('change', event => {\r\n serviceDate = event.target.value;\r\n checkServiceDateInput();\r\n setBtnStatus();\r\n });\r\n serviceDateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n narrativeInput.addEventListener('input', event => {\r\n narrative = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewNoteBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n });\r\n\r\n saveNoteBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n });\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n\r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n SAMLevel,\r\n contactMethod,\r\n narrative,\r\n userId,\r\n };\r\n \r\n OODAjax.updateForm6Tier1andJDPLan(data, function (results) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n });\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]), \r\n SAMLevel,\r\n contactMethod,\r\n narrative,\r\n userId,\r\n serviceId,\r\n referenceNumber,\r\n caseManagerId,\r\n };\r\n \r\n OODAjax.insertForm6Tier1andJDPLan(data, function (results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildEntryServicePopUp(consumerId, 'newEntry');\r\n }, 2000);\r\n } else {\r\n //save\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n }\r\n\r\n // TODO JOE: Look into whether this AJAX needs to change or not\r\n function deleteConfirmation(caseNoteId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteOODFormEntryAsync(caseNoteId);\r\n if (result.deleteOODFormEntryResult === '1') {\r\n OOD.loadOODLanding();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const communityBasedAssessmentForm = (() => {\r\n //Inputs\r\n let serviceDateInput;\r\n let startTimeInput;\r\n let endTimeInput;\r\n let SAMLevelDropdown;\r\n let positionDropdown;\r\n let otherEmployerDropdown;\r\n let contactMethodDropdown;\r\n let behavioralIndicatorsDropdown;\r\n let jobTaskQualityIndicatorsDropdown;\r\n let jobTaskQuantityIndicatorsDropdown;\r\n let narrativeInput;\r\n let interventionsInput;\r\n\r\n // buttons\r\n let addEmployersBtn;\r\n let saveNoteBtn;\r\n let saveAndNewNoteBtn;\r\n let cancelNoteBtn;\r\n let updateNoteBtn;\r\n let deleteNoteBtn;\r\n\r\n // Case Note Edit Data\r\n let consumerId;\r\n let caseNoteId;\r\n let serviceDate;\r\n let startTime;\r\n let endTime;\r\n let SAMLevel;\r\n let position;\r\n let employer;\r\n let contactMethod;\r\n let behavioralIndicators;\r\n let jobTaskQualityIndicators;\r\n let jobTaskQuantityIndicators;\r\n let narrative;\r\n let interventions;\r\n let positionDropDownData;\r\n\r\n //Case Note Data\r\n let caseManagerId;\r\n let userId;\r\n let serviceId;\r\n let referenceNumber;\r\n\r\n let formReadOnly = false;\r\n\r\n let currentEntryUserId;\r\n\r\n async function init(\r\n caseNoteData,\r\n currentConsumer,\r\n selectedConsumerServiceId,\r\n selectedConsumerServiceName,\r\n selectedConsumerReferenceNumber,\r\n currentRecordUserId,\r\n selectedServiceDate,\r\n clickSource = 'OODGrid',\r\n ) {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (caseNoteData && Object.keys(caseNoteData).length !== 0) {\r\n userId = $.session.UserId;\r\n caseNoteId = caseNoteData[0].caseNoteId;\r\n serviceDate = caseNoteData[0].serviceDate; //TODO JOE: Case_Notes.Service_Date\r\n startTime = caseNoteData[0].startTime; //TODO JOE: Case_Notes.Start_Time\r\n endTime = caseNoteData[0].endTime; //TODO JOE: Case_Notes.End_Time\r\n SAMLevel = caseNoteData[0].SAMLevel; //TODO JOE: Case_Notes.Service_Area_Modifier (populates with N/A, 1, 2, or 3)\r\n position = caseNoteData[0].position;\r\n employer = caseNoteData[0].employerId;\r\n contactMethod = caseNoteData[0].contactMethod; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.contact_method\r\n jobTaskQuantityIndicators = caseNoteData[0].jobTaskQuantityIndicators; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.quantity_indicators\r\n narrative = caseNoteData[0].narrative; //TODO JOE: emp_ood.narrative\r\n interventions = caseNoteData[0].interventions; //TODO JOE: emp_ood.interventions\r\n behavioralIndicators = caseNoteData[0].behavioralIndicators; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.behavioral_indicators\r\n jobTaskQualityIndicators = caseNoteData[0].jobTaskQualityIndicators; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.quality_indicators\r\n } else {\r\n caseManagerId = $.session.PeopleId;\r\n userId = $.session.UserId;\r\n serviceId = selectedConsumerServiceId;\r\n caseNoteId = '0';\r\n serviceDate = selectedServiceDate;\r\n //serviceDate = UTIL.getTodaysDate();\r\n referenceNumber = selectedConsumerReferenceNumber;\r\n startTime = '';\r\n endTime = '';\r\n SAMLevel = '';\r\n position = '';\r\n employer = '';\r\n contactMethod = '';\r\n jobTaskQuantityIndicators = '';\r\n narrative = '';\r\n interventions = '';\r\n behavioralIndicators = '';\r\n jobTaskQualityIndicators = '';\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'newEntry' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (userId !== currentRecordUserId) {\r\n formReadOnly = true;\r\n }\r\n\r\n serviceDateInput = input.build({\r\n type: 'date',\r\n label: 'Service Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n //readonly: ((userId !== currentRecordUserId) || (!$.session.OODUpdate && !$.session.OODInsert)) ? true : false,\r\n readonly: true,\r\n //value: filterValues.serviceDateStart\r\n });\r\n\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n value: startTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: startTime,\r\n });\r\n\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n value: endTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: endTime,\r\n });\r\n\r\n SAMLevelDropdown = dropdown.build({\r\n label: 'SAM Level',\r\n dropdownId: 'SAMLevelDropdown',\r\n value: SAMLevel,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n positionDropdown = dropdown.build({\r\n id: 'positionDropdown',\r\n label: 'Position',\r\n dropdownId: 'positionDropdown',\r\n value: position,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n otherEmployerDropdown = dropdown.build({\r\n id: \"otherEmployerDropdown\",\r\n label: \"Other Employer\",\r\n dropdownId: \"otherEmployerDropdown\",\r\n value: employer,\r\n readonly: formReadOnly,\r\n }); \r\n\r\n contactMethodDropdown = dropdown.build({\r\n label: 'Contact Method',\r\n dropdownId: 'contactMethodDropdown',\r\n value: contactMethod,\r\n readonly: formReadOnly,\r\n });\r\n\r\n behavioralIndicatorsDropdown = dropdown.build({\r\n label: 'Behavioral Indicators (Work Days)',\r\n dropdownId: 'behavioralIndicatorsDropdown',\r\n value: behavioralIndicators,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n jobTaskQualityIndicatorsDropdown = dropdown.build({\r\n label: 'Job Task Quality Indicators (Work Days)',\r\n dropdownId: 'jobTaskQualityIndicatorsDropdown',\r\n value: jobTaskQualityIndicators,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n jobTaskQuantityIndicatorsDropdown = dropdown.build({\r\n label: 'Job Task Quantity Indicators (Work Days)',\r\n dropdownId: 'jobTaskQuantityIndicatorsDropdown',\r\n value: jobTaskQuantityIndicators,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n narrativeInput = input.build({\r\n label: 'Narrative',\r\n value: narrative,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n interventionsInput = input.build({\r\n label: 'Interventions',\r\n value: interventions,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n saveNoteBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('save');\r\n },\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateNoteBtn = button.build({\r\n text: 'update',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n updateFormData();\r\n },\r\n });\r\n deleteNoteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(caseNoteId);\r\n },\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n addEmployersBtn = button.build({\r\n id: 'addEmployersBtn',\r\n text: 'Add Employers',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave'],\r\n callback: async () => { \r\n //if (!addNewEmployerBtn.classList.contains('disabled')) {\r\n buildEmployerPopUp({}, 'insert', 'employer', null)\r\n // }\r\n },\r\n });\r\n\r\n\r\n setupEvents();\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer);\r\n\r\n let container = document.createElement('div');\r\n container.classList.add('monthlyForm');\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = `${selectedConsumerServiceName} - OOD Form 8`;\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n const inputContainer0 = document.createElement('div');\r\n inputContainer0.classList.add('ood_form4monthlyplacement_inputContainer1');\r\n inputContainer0.appendChild(serviceDateInput);\r\n inputContainer0.appendChild(startTimeInput);\r\n inputContainer0.appendChild(endTimeInput);\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form8monthlyplacement_inputContainer1'); // new _OOD.scss setting -- ood_form8monthlyplacement_inputContainer1\r\n \r\n const wrapHeading = document.createElement('div');\r\n wrapHeading.classList.add('ChoosePositionEmployer')\r\n wrapHeading.innerHTML = '

    Choose either a Position or Employer.

    ';\r\n\r\n inputContainer1.appendChild(wrapHeading);\r\n inputContainer1.appendChild(positionDropdown);\r\n inputContainer1.appendChild(otherEmployerDropdown);\r\n if ($.session.OODInsertEmployers) inputContainer1.appendChild(addEmployersBtn);\r\n\r\n const inputContainer2 = document.createElement('div');\r\n inputContainer2.classList.add('ood_form4monthlyplacement_inputContainer2');\r\n\r\n inputContainer2.appendChild(SAMLevelDropdown);\r\n inputContainer2.appendChild(contactMethodDropdown);\r\n inputContainer2.appendChild(behavioralIndicatorsDropdown);\r\n\r\n const inputContainer3 = document.createElement('div');\r\n inputContainer3.classList.add('ood_form4monthlyplacement_inputContainer2');\r\n\r\n inputContainer3.appendChild(jobTaskQualityIndicatorsDropdown);\r\n inputContainer3.appendChild(jobTaskQuantityIndicatorsDropdown);\r\n\r\n container.appendChild(inputContainer0);\r\n container.appendChild(inputContainer1);\r\n container.appendChild(inputContainer2);\r\n container.appendChild(inputContainer3);\r\n\r\n container.appendChild(narrativeInput);\r\n container.appendChild(interventionsInput);\r\n\r\n let updatecontainer = document.createElement('div');\r\n updatecontainer.classList.add('updatecontainer');\r\n\r\n let updatemessage = document.createElement('div');\r\n updatemessage.classList.add('updatemessage');\r\n\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n caseNoteId == '0' ? btnWrap.appendChild(saveNoteBtn) : btnWrap.appendChild(updateNoteBtn);\r\n caseNoteId == '0' ? btnWrap.appendChild(saveAndNewNoteBtn) : btnWrap.appendChild(deleteNoteBtn);\r\n\r\n let btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n\r\n let btnRow = document.createElement('div');\r\n btnRow.classList.add('btnRow');\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n\r\n container.appendChild(btnRow);\r\n\r\n populateStaticDropDowns();\r\n populateContactMethodDropdown();\r\n populatePositionDropdown();\r\n populateIndicatorsDropdown();\r\n populateOtherEmployerDropdown(consumerId);\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n // call Required Fields\r\n checkRequiredFields();\r\n }\r\n // TODO JOE: Double check that AJAX pulls correct data\r\n // Contact Method - Contact Method dropdown should be a list of values (code_table.caption)\r\n // where code_table.table_id = employment_code and code_table.field_id = contactmethod\r\n async function populateContactMethodDropdown() {\r\n const { getContactMethodsResult: contactMethods } = await OODAjax.getContactMethodsAsync('Form8');\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = contactMethods.map(contactMethod => ({\r\n id: contactMethod.code,\r\n value: contactMethod.code,\r\n text: contactMethod.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == contactMethod);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('contactMethodDropdown', data, contactMethod);\r\n }\r\n\r\n async function populatePositionDropdown() {\r\n const { getOODPositionsResult: positions } = await OODAjax.getPositionsAsync(consumerId);\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n \r\n positionDropDownData = positions;\r\n\r\n let data = positions.map(position => ({\r\n id: position.employerId,\r\n value: position.code,\r\n text: position.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == position);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n // employer = ''; \r\n } else {\r\n // employer = '0' // 'SEE POSITION DROPDOWN';\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('positionDropdown', data, position);\r\n }\r\n\r\n\r\n async function populateOtherEmployerDropdown(currentConsumerId) { \r\n\t\t\r\n\t\tconst {\r\n\t\t\tgetActiveEmployersResult: employers,\r\n\t\t} = await OODAjax.getActiveEmployersAsync();\r\n\t // const templates = WorkflowViewerComponent.getTemplates();\r\n\r\n var filteredemployers = employers.filter(item => !positionDropDownData.some(otherItem => otherItem.employerId === item.employerId));\r\n\r\n\t let data = filteredemployers.map((employr) => ({\r\n\t\t id: employr.employerId, \r\n\t\t value: employr.employerId, \r\n\t\t text: (employr.address1 == '') ? employr.employerName : employr.employerName + ' -- ' + employr.address1,\r\n\t })); \r\n\r\n var positiondropdown = document.getElementById(\"positionDropdown\");\r\n \t\tconst index = data.findIndex((x) => x.id == employer);\r\n\t\t\t\t\t\tif (index === -1) {\r\n\t\t\t\t\t\t\t// case note employer not in the employers DDL\r\n employer = '';\r\n // positiondropdown.disabled = false;\r\n // position = '';\r\n\t\t\t\t\t\t} else {\r\n \r\n // positiondropdown.disabled = true;\r\n // position = '0' // 'SEE OTHER EMPLOYER DROPDOWN';\r\n }\r\n\r\n checkRequiredFields();\r\n\r\n var filtereddata = data.filter((x) => x.id != 0);\r\n\r\n\t filtereddata.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n\t dropdown.populate(\"otherEmployerDropdown\", filtereddata, employer); \r\n }\r\n\r\n async function populateIndicatorsDropdown() {\r\n const { getIndicatorsResult: indicators } = await OODAjax.getIndicatorsAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = indicators.map(indicator => ({\r\n id: indicator.code,\r\n value: indicator.code,\r\n text: indicator.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == position);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('behavioralIndicatorsDropdown', data, behavioralIndicators);\r\n dropdown.populate('jobTaskQualityIndicatorsDropdown', data, jobTaskQualityIndicators);\r\n dropdown.populate('jobTaskQuantityIndicatorsDropdown', data, jobTaskQuantityIndicators);\r\n }\r\n\r\n // TODO JOE: Look into whether this AJAX needs to change or not\r\n // THis DDL may not be needed?\r\n // async function populateOutcomeDropdown() {\r\n\r\n // const {\r\n // getOutcomesResult: outcomes,\r\n // } = await OODAjax.getOutcomesAsync();\r\n // // const templates = WorkflowViewerComponent.getTemplates();\r\n // let data = outcomes.map((outcome) => ({\r\n // id: outcome.outcomeCode,\r\n // value: outcome.outcomeCode,\r\n // text: outcome.outcomeCaption,\r\n // }));\r\n\r\n // const index = data.findIndex((x) => x.id == outcome);\r\n // \t\t\t\tif (index === -1) {\r\n // \t\t\t\t\t// case note outcome not in the outcomes DDL\r\n // \t\t\t\t}\r\n\r\n // data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n // dropdown.populate(\"outcomeDropdown\", data, outcome);\r\n // }\r\n\r\n function populateStaticDropDowns() {\r\n const SAMLevelDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'N/A', value: '0' },\r\n { text: '1', value: '1' },\r\n { text: '2', value: '2' },\r\n { text: '3', value: '3' },\r\n ];\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n ];\r\n\r\n dropdown.populate(SAMLevelDropdown, SAMLevelDropdownData, SAMLevel);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Behavioral Indicators (Work Days) dropdown should be a list of\r\n // values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(behavioralIndicatorsDropdown, yesNoDropdownData, behavioralIndicators);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Job Task Quality Indicators -Job Task Quality Indicators (Work Days) dropdown should\r\n // be a list of values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(jobTaskQualityIndicatorsDropdown, yesNoDropdownData, jobTaskQualityIndicators);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Job Task Quantity Indicators -Job Task Quantity Indicators (Work Days) dropdown\r\n // should be a list of values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(jobTaskQuantityIndicatorsDropdown, yesNoDropdownData, jobTaskQuantityIndicators);\r\n }\r\n\r\n function checkRequiredFields() {\r\n if (!SAMLevel || SAMLevel === '') {\r\n SAMLevelDropdown.classList.add('error');\r\n //return 'error';\r\n } else {\r\n SAMLevelDropdown.classList.remove('error');\r\n // return 'success';\r\n }\r\n\r\n const employerWrap = document.getElementsByClassName(\"ood_form8monthlyplacement_inputContainer1\");\r\n\r\n if (!position || position === '' || position === '0') {\r\n if (!employer || employer === '') {\r\n positionDropdown.classList.add('error');\r\n otherEmployerDropdown.classList.add('error'); \r\n \r\n employerWrap[0].classList.add('error');\r\n let otheremployerdropdown = document.getElementById(\"otherEmployerDropdown\");\r\n // otheremployerdropdown.disabled = false; \r\n let positiondropdown = document.getElementById(\"positionDropdown\");\r\n // positiondropdown.disabled = false;\r\n } else {\r\n positionDropdown.classList.remove('error');\r\n otherEmployerDropdown.classList.remove('error'); \r\n employerWrap[0].classList.remove('error');\r\n let otheremployerdropdown = document.getElementById(\"otherEmployerDropdown\");\r\n // otheremployerdropdown.disabled = false; \r\n let positiondropdown = document.getElementById(\"positionDropdown\");\r\n // positiondropdown.disabled = true;\r\n }\r\n \r\n } else {\r\n positionDropdown.classList.remove('error'); \r\n otherEmployerDropdown.classList.remove('error'); \r\n employerWrap[0].classList.remove('error');\r\n let otheremployerdropdown = document.getElementById(\"otherEmployerDropdown\");\r\n // otheremployerdropdown.disabled = true;\r\n let positiondropdown = document.getElementById(\"positionDropdown\");\r\n // positiondropdown.disabled = false; \r\n }\r\n\r\n // if (!employer || employer === '') {\r\n // otherEmployerDropdown.classList.add('error');\r\n // } else {\r\n // otherEmployerDropdown.classList.remove('error');\r\n // }\r\n\r\n if (!contactMethod || contactMethod === '') {\r\n contactMethodDropdown.classList.add('error');\r\n } else {\r\n contactMethodDropdown.classList.remove('error');\r\n }\r\n\r\n if (!behavioralIndicators || behavioralIndicators === '') {\r\n behavioralIndicatorsDropdown.classList.add('error');\r\n } else {\r\n behavioralIndicatorsDropdown.classList.remove('error');\r\n }\r\n\r\n if (!jobTaskQualityIndicators || jobTaskQualityIndicators === '') {\r\n jobTaskQualityIndicatorsDropdown.classList.add('error');\r\n } else {\r\n jobTaskQualityIndicatorsDropdown.classList.remove('error');\r\n }\r\n\r\n if (!jobTaskQuantityIndicators || jobTaskQuantityIndicators === '') {\r\n jobTaskQuantityIndicatorsDropdown.classList.add('error');\r\n } else {\r\n jobTaskQuantityIndicatorsDropdown.classList.remove('error');\r\n }\r\n\r\n var noteInput = narrativeInput.querySelector('textarea');\r\n\r\n if (noteInput.value === '') {\r\n narrativeInput.classList.add('error');\r\n } else {\r\n narrativeInput.classList.remove('error');\r\n }\r\n\r\n //var interventionInpt = interventionsInput.querySelector('textarea');\r\n\r\n //if (interventionInpt.value === '') {\r\n // interventionsInput.classList.add('error');\r\n // } else {\r\n // interventionsInput.classList.remove('error');\r\n // }\r\n\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n }\r\n\r\n function checkServiceDateInput() {\r\n let todaydate = new Date();\r\n let myservicedate = new Date(serviceDate);\r\n\r\n var isDateBefore = dates.isBefore(myservicedate, todaydate);\r\n\r\n if (!isDateBefore) {\r\n serviceDateInput.classList.add('error');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0 || formReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n updateNoteBtn.classList.add('disabled');\r\n } else {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n updateNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n if (userId !== currentEntryUserId || !$.session.OODDelete) {\r\n deleteNoteBtn.classList.add('disabled');\r\n } else {\r\n deleteNoteBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function checkEndInputTime() {\r\n var endInput = endTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(endInput.value)) {\r\n endTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n }\r\n\r\n var isEndAfterStartTime = validateStartEndTimes('endCheck');\r\n\r\n if (isEndAfterStartTime) {\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n var isEndTimeValid = UTIL.validateTime(endInput.value);\r\n\r\n if (isEndTimeValid) {\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n }\r\n\r\n function checkStartInputTime() {\r\n var startInput = startTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(startInput.value)) {\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n }\r\n\r\n var isStartTimeValid = UTIL.validateTime(startInput.value);\r\n if (isStartTimeValid) {\r\n startTimeInput.classList.remove('error');\r\n } else {\r\n startTimeInput.classList.add('error');\r\n return;\r\n }\r\n }\r\n\r\n function checkTimeForAfterNow(enteredTime) {\r\n let tempNow = new Date();\r\n let nowHour = tempNow.getHours() < '10' ? `0${tempNow.getHours()}` : tempNow.getHours();\r\n let nowMinuet = tempNow.getMinutes() < '10' ? `0${tempNow.getMinutes()}` : tempNow.getMinutes();\r\n return (\r\n Date.parse(`01/01/2020 ${enteredTime}`) > Date.parse(`01/01/2020 ${nowHour}:${nowMinuet}`)\r\n );\r\n }\r\n\r\n function validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n }\r\n\r\n function setupEvents() {\r\n SAMLevelDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n SAMLevel = '';\r\n } else {\r\n SAMLevel = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n positionDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n var otherEmployerdropdown = document.getElementById(\"otherEmployerDropdown\");\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n position = '';\r\n // otherEmployerdropdown.disabled = false; \r\n // addEmployersBtn.disabled = false;\r\n // employer = '';\r\n } else {\r\n position = selectedOption.value;\r\n // otherEmployerdropdown.disabled = true; \r\n // addEmployersBtn.disabled = true;\r\n // employer = '0' // 'SEE POSITION DROPDOWN';\r\n employer = '';\r\n populateOtherEmployerDropdown();\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n otherEmployerDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n var positiondropdown = document.getElementById(\"positionDropdown\");\r\n\r\n if (selectedOption.value == \"SELECT\") {\r\n employer = '';\r\n // positiondropdown.disabled = false; \r\n // position = '';\r\n } else {\r\n employer = selectedOption.value;\r\n // positiondropdown.disabled = true;\r\n // position = '0' //'SEE OTHER EMPLOYER DROPDOWN';\r\n position = ''; \r\n populatePositionDropdown();\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n contactMethodDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n contactMethod = '';\r\n } else {\r\n contactMethod = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n behavioralIndicatorsDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n behavioralIndicators = '';\r\n } else {\r\n behavioralIndicators = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n jobTaskQualityIndicatorsDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n jobTaskQualityIndicators = '';\r\n } else {\r\n jobTaskQualityIndicators = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n jobTaskQuantityIndicatorsDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n jobTaskQuantityIndicators = '';\r\n } else {\r\n jobTaskQuantityIndicators = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n startTimeInput.addEventListener('focusout', event => {\r\n startTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n endTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n serviceDateInput.addEventListener('change', event => {\r\n serviceDate = event.target.value;\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n serviceDateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n narrativeInput.addEventListener('input', event => {\r\n narrative = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n interventionsInput.addEventListener('input', event => {\r\n interventions = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewNoteBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n });\r\n\r\n saveNoteBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n });\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n\r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n SAMLevel,\r\n position,\r\n employer,\r\n contactMethod,\r\n behavioralIndicators,\r\n jobTaskQualityIndicators,\r\n jobTaskQuantityIndicators,\r\n narrative,\r\n interventions,\r\n userId,\r\n };\r\n // TODO JOE: This AJAX needs to change\r\n OODAjax.updateForm8CommunityBasedAssessment(data, function (results) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n });\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n SAMLevel,\r\n position,\r\n employer,\r\n contactMethod,\r\n behavioralIndicators,\r\n jobTaskQualityIndicators,\r\n jobTaskQuantityIndicators,\r\n narrative,\r\n interventions,\r\n userId,\r\n serviceId,\r\n referenceNumber,\r\n caseManagerId,\r\n };\r\n // TODO JOE: This AJAX needs to change\r\n OODAjax.insertForm8CommunityBasedAssessment(data, function (results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildEntryServicePopUp(consumerId, 'newEntry');\r\n }, 2000);\r\n } else {\r\n //save\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n }\r\n\r\n // TODO JOE: Look into whether this AJAX needs to change or not\r\n function deleteConfirmation(caseNoteId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteOODFormEntryAsync(caseNoteId);\r\n if (result.deleteOODFormEntryResult === '1') {\r\n OOD.loadOODLanding();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n// build Employer pop-up used for adding/editing Employer information\r\nasync function buildEmployerPopUp(employerdata, postType, openpageName, redirectInfo) {\r\n if (openpageName == 'employmentInfo') {\r\n openedPage = 'employmentInfo';\r\n redirectInformation = redirectInfo\r\n }\r\n else\r\n openedPage = 'employer';\r\n\r\n var headingEmployer;\r\n if (employerdata && Object.keys(employerdata).length !== 0) {\r\n employerId = employerdata[0].employerId;\r\n employerName = employerdata[0].employerName;\r\n employeraddress1 = employerdata[0].address1;\r\n employeraddress2 = employerdata[0].address2;\r\n employercity = employerdata[0].city;\r\n employerstate = employerdata[0].state;\r\n employerzipcode = employerdata[0].zipcode;\r\n headingEmployer = 'Edit this Employer';\r\n BtnEventType = 'Update';\r\n } else {\r\n employerId = '';\r\n employerName = '';\r\n employeraddress1 = '';\r\n employeraddress2 = '';\r\n employercity = '';\r\n employerstate = '';\r\n employerzipcode = '';\r\n headingEmployer = 'Add Employer';\r\n BtnEventType = 'Add';\r\n }\r\n\r\n let editEmployerPopup = POPUP.build({\r\n header: headingEmployer,\r\n hideX: true,\r\n id: \"editEmployerPopup\"\r\n });\r\n\r\n employerInput = input.build({\r\n id: 'employerInput',\r\n label: 'Employer',\r\n value: (employerName) ? employerName : '',\r\n });\r\n\r\n address1Input = input.build({\r\n label: 'Address',\r\n value: (employeraddress1) ? employeraddress1 : '',\r\n });\r\n\r\n address2Input = input.build({\r\n label: 'Address 2',\r\n value: (employeraddress2) ? employeraddress2 : '',\r\n });\r\n\r\n cityInput = input.build({\r\n label: 'City',\r\n value: (employercity) ? employercity : '',\r\n });\r\n\r\n stateInput = input.build({\r\n label: 'State',\r\n value: (employerstate) ? employerstate : '',\r\n });\r\n\r\n zipcodeInput = input.build({\r\n label: 'Zip Code',\r\n value: (employerzipcode) ? employerzipcode : '',\r\n });\r\n\r\n popupSaveBtn = button.build({\r\n id: \"addEmployerSaveBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n callback: () => {\r\n if (!popupSaveBtn.classList.contains('disabled')) {\r\n editEmployerPopupDoneBtn(postType)\r\n }\r\n }\r\n });\r\n\r\n popupCancelBtn = button.build({\r\n id: \"addEmployerCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => POPUP.hide(editEmployerPopup)\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(popupSaveBtn);\r\n btnWrap.appendChild(popupCancelBtn);\r\n editEmployerPopup.appendChild(employerInput);\r\n editEmployerPopup.appendChild(address1Input);\r\n editEmployerPopup.appendChild(address2Input);\r\n editEmployerPopup.appendChild(cityInput);\r\n editEmployerPopup.appendChild(stateInput);\r\n editEmployerPopup.appendChild(zipcodeInput);\r\n editEmployerPopup.appendChild(btnWrap);\r\n\r\n popUpEventHandlers();\r\n POPUP.show(editEmployerPopup);\r\n checkPopupRequiredFields();\r\n}\r\n\r\nfunction popUpEventHandlers() {\r\nemployerInput.addEventListener('input', event => {\r\n employerName = event.target.value.trim();\r\n checkPopupRequiredFields();\r\n});\r\n\r\naddress1Input.addEventListener('input', event => {\r\n employeraddress1 = event.target.value;\r\n});\r\n\r\naddress2Input.addEventListener('input', event => {\r\n employeraddress2 = event.target.value;\r\n});\r\n\r\ncityInput.addEventListener('input', event => {\r\n employercity = event.target.value;\r\n});\r\n\r\nstateInput.addEventListener('input', event => {\r\n employerstate = event.target.value;\r\n});\r\n\r\nzipcodeInput.addEventListener('input', event => {\r\n employerzipcode = event.target.value;\r\n});\r\n}\r\n\r\nfunction checkPopupRequiredFields() {\r\nvar employrInput = employerInput.querySelector('#employerInput');\r\nif (employrInput.value.trim() === '') { \r\n employerInput.classList.add('error');\r\n popupSaveBtn.classList.add('disabled'); \r\n return;\r\n} else {\r\n employerInput.classList.remove('error');\r\n popupSaveBtn.classList.remove('disabled');\r\n}\r\n\r\n// if (($.session.UpdateEmployers && BtnEventType == 'Update') || ($.session.InsertEmployers && BtnEventType == 'Add')) {\r\n// popupSaveBtn.classList.remove('disabled');\r\n// } else {\r\n// popupSaveBtn.classList.add('disabled');\r\n// }\r\n}\r\n\r\n// Event for Done BTN on the Edit Employer Popup Window\r\nasync function editEmployerPopupDoneBtn(postType) {\r\n\r\n if (postType == 'insert') {\r\n\r\n const result = await OODAjax.insertEmployerAsync(employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { insertEmployerResult } = result;\r\n employer = insertEmployerResult.employerId;\r\n\r\n if (employer == '0') {\r\n warningPopup();\r\n } else {\r\n \r\n populateOtherEmployerDropdown(consumerId);\r\n // const dropdown = document.querySelector('#employerDropdown');\r\n // const selectedValue = dropdown.value;\r\n // var selectedOption = dropdown.options[dropdown.selectedIndex];\r\n\r\n // if (selectedOption.value == \"SELECT\") {\r\n // employer = '';\r\n // } else {\r\n // employer = selectedOption.value;\r\n // }\r\n // checkRequiredFields();\r\n\r\n position = ''; \r\n populatePositionDropdown();\r\n checkRequiredFields();\r\n\r\n POPUP.hide(editEmployerPopup)\r\n successfulSave.show();\r\n\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n \r\n \r\n // if (openedPage == 'employmentInfo')\r\n // NewEmployment.refreshEmployment(redirectInformation.positionId, redirectInformation.empName, redirectInformation.posName, redirectInformation.consumersName, redirectInformation.consumersId, tabPositionIndex = 0);\r\n // else\r\n // addEditEmployers.init();\r\n }, 2000);\r\n }\r\n\r\n } else { //'update'\r\n POPUP.hide(editEmployerPopup)\r\n const result = await OODAjax.updateEmployerAsync(employerId, employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { updateEmployerResult: { employerID } } = result;\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n // addEditEmployers.init();\r\n }, 2000);\r\n }\r\n}\r\n\r\nfunction warningPopup() {\r\n var popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n });\r\n var OKBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = \"This employer already exists.\";\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n}\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const communityBasedAssessmentSummaryForm = (() => {\r\n // Inputs\r\n let monthYearDropdown;\r\n let referenceNumberDropdown;\r\n let nextScheduledReviewInput;\r\n let selfAssessmentInput;\r\n let referralQuestionsInput;\r\n let employerAssessmentInput;\r\n let providerAssessmentInput;\r\n let supportAndTransitionInput;\r\n let reviewVTSDropdown;\r\n\r\n // values\r\n let consumerId;\r\n let emReviewId;\r\n let emReviewDate; // monthYearDropdown\r\n let emReviewDateDBValue; // monthYearDropdown\r\n let emReferenceNumber; // referenceNumberDropdown\r\n let emNextScheduledReview; // nextScheduledReviewInput\r\n let emSummaryIndivSelfAssessment; // selfAssessmentInput\r\n let emReferralQuestions; //referralQuestionsInput\r\n let emSummaryIndivEmployerAssessment; // employerAssessmentInput\r\n let emSummaryIndivProviderAssessment; // providerAssessmentInput\r\n let emSupportandTransition; //supportAndTransitionInput\r\n let emReviewVTS; // reviewVTSDropdown\r\n\r\n // buttons\r\n let saveBtn;\r\n let saveAndNewBtn;\r\n let cancelBtn;\r\n let updateBtn;\r\n let deleteBtn;\r\n\r\n //Review Data\r\n //let caseManagerId;\r\n let userId;\r\n let serviceId;\r\n let reviewStartDate;\r\n let reviewEndDate;\r\n\r\n let formReadOnly = false;\r\n const FORMNUMBER = '8'; // Form 8\r\n\r\n let OODMonthlySummariesTable; // To be added in future release\r\n\r\n async function init(\r\n emReviewData,\r\n currentConsumer,\r\n selectedServiceId,\r\n currentRecordUserId,\r\n clickSource = 'OODGrid',\r\n ) {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n let todaysdate = new Date();\r\n var thisMonthFirstDay = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1);\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (emReviewData && Object.keys(emReviewData).length !== 0) {\r\n userId = $.session.UserId;\r\n emReviewId = emReviewData.emReviewId;\r\n emReviewDate = getShortDate(emReviewData.emReviewDate);\r\n emReviewDateDBValue = new Date(emReviewData.emReviewDate);\r\n emReferenceNumber = emReviewData.emReferenceNumber;\r\n emNextScheduledReview = emReviewData.emNextScheduledReview;\r\n emSummaryIndivSelfAssessment = emReviewData.emSummaryIndivSelfAssessment;\r\n emSummaryIndivEmployerAssessment = emReviewData.emSummaryIndivEmployerAssessment;\r\n emSummaryIndivProviderAssessment = emReviewData.emSummaryIndivProviderAssessment;\r\n emSupportandTransition = emReviewData.emSupportandTransition;\r\n emReviewVTS = emReviewData.emReviewVTS;\r\n } else {\r\n userId = $.session.UserId;\r\n serviceId = selectedServiceId;\r\n emReviewId = '0';\r\n emReviewDate = ('0' + (todaysdate.getMonth() + 1)).slice(-2) + '/' + todaysdate.getFullYear();\r\n emReviewDateDBValue = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1);\r\n emReferenceNumber = '';\r\n emNextScheduledReview = '';\r\n emSummaryIndivSelfAssessment = '';\r\n emSummaryIndivEmployerAssessment = '';\r\n emSummaryIndivProviderAssessment = '';\r\n emSupportandTransition = '';\r\n emReviewVTS = '';\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'monthlySummary' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (userId !== currentRecordUserId) {\r\n formReadOnly = true;\r\n }\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer);\r\n\r\n let container = document.createElement('div');\r\n container.classList.add('monthlyForm');\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Community Based Assessment - OOD Form 8 Monthly Summary';\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n //var date = new Date();\r\n monthYearDropdown = dropdown.build({\r\n label: 'Month',\r\n //classNames: 'monthYear',\r\n dropdownId: 'monthYearDropdown',\r\n value: emReviewDate,\r\n readonly: formReadOnly,\r\n // value: ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear()\r\n //readonly: true,\r\n });\r\n\r\n referenceNumberDropdown = dropdown.build({\r\n label: 'Reference Number',\r\n dropdownId: 'referenceNumberDropdown',\r\n value: emReferenceNumber,\r\n readonly: formReadOnly,\r\n // readonly: (userId !== currentRecordUserId) ? true : false,\r\n });\r\n\r\n nextScheduledReviewInput = input.build({\r\n type: 'date',\r\n label: 'Next Scheduled Review',\r\n style: 'secondary',\r\n // classNames: 'nextScheduledReviewInput',\r\n value: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n readonly: formReadOnly,\r\n //value: filterValues.serviceDateStart\r\n });\r\n\r\n // selfAssessmentInput textarea\r\n selfAssessmentInput = input.build({\r\n //label: `Summary of Individual's Self-Assessment. Likes and/or Dislikes of Work, concerns, etc. `,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSummaryIndivSelfAssessment,\r\n readonly: formReadOnly,\r\n // charLimit: 256,\r\n // forceCharLimit: true,\r\n });\r\n // selfAssessmentInput.classList.add('OODTextArea');\r\n\r\n // employerAssessment textarea\r\n employerAssessmentInput = input.build({\r\n // label: `Summary of Employer's Assessment of Individual, Performance or Soft Skill Concerns, etc. `,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSummaryIndivEmployerAssessment,\r\n readonly: formReadOnly,\r\n });\r\n // employerAssessmentInput.classList.add('introTextArea');\r\n\r\n // providerAssessment textarea\r\n providerAssessmentInput = input.build({\r\n // label: `Summary of Provider's Assessment of Individual's Performance and Soft Skill Concerns. Recommendations of next steps or services. `,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSummaryIndivProviderAssessment,\r\n readonly: formReadOnly,\r\n });\r\n // providerAssessmentInput.classList.add('introTextArea');\r\n\r\n supportAndTransitionInput = input.build({\r\n //label: `Support and Transition Plan. `,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSupportandTransition,\r\n readonly: formReadOnly,\r\n });\r\n\r\n // reviewVTS textarea\r\n reviewVTSDropdown = dropdown.build({\r\n // label: `Has the Vocational Training Stipend (VTS) been reviewed with the individual? Does it only reflect the time the individual participated? Does the individual agree to the amount of the VTS?`,\r\n dropdownId: 'reviewVTSDropdown',\r\n value: emReviewVTS,\r\n readonly: formReadOnly,\r\n });\r\n // reviewVTSDropdown.classList.add('introTextArea');\r\n\r\n saveBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('save');\r\n },\r\n });\r\n saveAndNewBtn = button.build({\r\n text: 'Save & New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateBtn = button.build({\r\n text: 'update',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n updateFormData();\r\n },\r\n });\r\n deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(emReviewId);\r\n },\r\n });\r\n cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form8monthlysummary_inputContainer1');\r\n\r\n inputContainer1.appendChild(monthYearDropdown);\r\n inputContainer1.appendChild(referenceNumberDropdown);\r\n // inputContainer1.appendChild(referenceNumberDropdown);\r\n\r\n //inputContainer1.appendChild(nextScheduledReviewInput);\r\n\r\n const nextScheduledReviewInputDIV = document.createElement('div');\r\n nextScheduledReviewInputDIV.classList.add('nextScheduledReviewInput');\r\n nextScheduledReviewInputDIV.appendChild(nextScheduledReviewInput);\r\n\r\n inputContainer1.appendChild(nextScheduledReviewInputDIV);\r\n\r\n container.appendChild(inputContainer1);\r\n\r\n const selfAssessmentLabel = document.createElement('p');\r\n selfAssessmentLabel.innerHTML = `Summary of Individual's Self-Assessment. Likes and/or Dislikes of Work, concerns, etc.`;\r\n\r\n const employerAssessmentLabel = document.createElement('p');\r\n employerAssessmentLabel.innerHTML = `Summary of Employer's Assessment of Individual, Performance or Soft Skill Concerns, etc. `;\r\n\r\n const providerAssessmentLabel = document.createElement('p');\r\n providerAssessmentLabel.innerHTML = `Summary of Provider's Assessment of Individual's Performance and Soft Skill Concerns. Recommendations of next steps or services. `;\r\n\r\n const supportAndTransitionLabel = document.createElement('p');\r\n supportAndTransitionLabel.innerHTML = `Support and Transition Plan. `;\r\n\r\n const reviewVTSDropdownLabel = document.createElement('p');\r\n reviewVTSDropdownLabel.innerHTML = `Has the Vocational Training Stipend (VTS) been reviewed with the individual? Does it only reflect the time the individual participated? Does the individual agree to the amount of the VTS? `;\r\n\r\n container.appendChild(selfAssessmentLabel);\r\n container.appendChild(selfAssessmentInput);\r\n container.appendChild(employerAssessmentLabel);\r\n container.appendChild(employerAssessmentInput);\r\n container.appendChild(providerAssessmentLabel);\r\n container.appendChild(providerAssessmentInput);\r\n container.appendChild(supportAndTransitionLabel);\r\n container.appendChild(supportAndTransitionInput);\r\n container.appendChild(reviewVTSDropdownLabel);\r\n container.appendChild(reviewVTSDropdown);\r\n\r\n let updatecontainer = document.createElement('div');\r\n updatecontainer.classList.add('updatecontainer');\r\n\r\n let updatemessage = document.createElement('div');\r\n updatemessage.classList.add('updatemessage');\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n emReviewId == '0' ? btnWrap.appendChild(saveBtn) : btnWrap.appendChild(updateBtn);\r\n emReviewId == '0' ? btnWrap.appendChild(saveAndNewBtn) : btnWrap.appendChild(deleteBtn);\r\n\r\n let btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelBtn);\r\n\r\n let btnRow = document.createElement('div');\r\n btnRow.classList.add('btnRow');\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n container.appendChild(btnRow);\r\n\r\n var LineBr = document.createElement('br');\r\n var LineBr2 = document.createElement('br');\r\n var LineBr3 = document.createElement('br');\r\n container.appendChild(LineBr);\r\n container.appendChild(LineBr2);\r\n container.appendChild(LineBr3);\r\n\r\n // NOTE: This summary table will be added in a later release; will need this code eventually -- JMM 02/05/2022\r\n // OODMonthlySummariesTable = await buildOODMonthlySummariesTable();\r\n // container.appendChild(OODMonthlySummariesTable);\r\n\r\n // populateStaticDropDowns();\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n populateStaticDropDowns();\r\n populateReferenceNumberDropdown();\r\n\r\n checkRequiredFields();\r\n }\r\n\r\n function getShortDate(fullDate) {\r\n var thisDate = new Date(fullDate);\r\n var thisShortDate =\r\n (thisDate.getMonth() + 1).toString().padStart(2, '0') + '/' + thisDate.getFullYear();\r\n return thisShortDate;\r\n }\r\n\r\n function setReviewStartandEndDates() {\r\n var dateparts = emReviewDate.split('/');\r\n var thisMonth = dateparts[0];\r\n\r\n var daysinMonth = dates.getDaysInMonth(emReviewDateDBValue);\r\n var thisYear = emReviewDateDBValue.getFullYear();\r\n\r\n reviewStartDate = thisYear + '-' + thisMonth + '-01';\r\n reviewEndDate = thisYear + '-' + thisMonth + '-' + daysinMonth;\r\n }\r\n\r\n function displaynoReferenceNumberPopup() {\r\n // no reference Numbers\r\n let noReferenceNumberPopup = POPUP.build({\r\n header: 'No Reference Numbers Found',\r\n hideX: true,\r\n id: 'noReferenceNumberPopup',\r\n });\r\n\r\n let OKBtn = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(noReferenceNumberPopup);\r\n // overlay.hide();\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n let warningMessage = document.createElement('p');\r\n warningMessage.innerHTML =\r\n 'There are no reference numbers for this consumer and date combination. Please change the Month/Year to see a list of valid reference numbers or contact your Advisor Administrator to enter an OOD Authorization for the selected consumer.';\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n //noServicesPopup.appendChild(consumerServicesDropdown);\r\n noReferenceNumberPopup.appendChild(warningMessage);\r\n noReferenceNumberPopup.appendChild(btnWrap);\r\n overlay.show();\r\n POPUP.show(noReferenceNumberPopup);\r\n }\r\n\r\n async function populateReferenceNumberDropdown() {\r\n setReviewStartandEndDates();\r\n\r\n const { getConsumerReferenceNumbersResult: referencenumbers } =\r\n await OODAjax.getConsumerReferenceNumbersAsync(\r\n consumerId,\r\n reviewStartDate,\r\n reviewEndDate,\r\n FORMNUMBER,\r\n );\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = referencenumbers.map(referencenumber => ({\r\n id: referencenumber.referenceNumber,\r\n value: referencenumber.referenceNumber,\r\n text: referencenumber.referenceNumber,\r\n }));\r\n\r\n if (data.length == 0) {\r\n displaynoReferenceNumberPopup();\r\n }\r\n\r\n // if creating a new record and there is only one referenceNumber in the data, then automatically select it in the DDL\r\n if (emReferenceNumber == '' && data.length == 1) {\r\n emReferenceNumber = data[0].value;\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('referenceNumberDropdown', data, emReferenceNumber);\r\n }\r\n\r\n // for monthYearDropdown DDL\r\n function populateStaticDropDowns() {\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n ];\r\n\r\n var mydate = new Date();\r\n var arrayDates = [];\r\n\r\n for (let i = 0; i < 24; i++) {\r\n var firstDay = new Date(mydate.getFullYear() - 1, mydate.getMonth() + i, 1);\r\n arrayDates.push({\r\n partialdate:\r\n (firstDay.getMonth() + 1).toString().padStart(2, '0') +\r\n '/' +\r\n firstDay.getFullYear().toString(),\r\n fulldate: firstDay.toDateString(),\r\n });\r\n }\r\n\r\n let data = arrayDates.map(thisDate => ({\r\n id: thisDate.fulldate,\r\n value: thisDate.partialdate,\r\n text: thisDate.partialdate,\r\n }));\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('monthYearDropdown', data, emReviewDate);\r\n\r\n dropdown.populate(reviewVTSDropdown, yesNoDropdownData, emReviewVTS);\r\n }\r\n\r\n function checkRequiredFields() {\r\n if (!emReviewDate || emReviewDate === '') {\r\n monthYearDropdown.classList.add('error');\r\n } else {\r\n monthYearDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emNextScheduledReview || emNextScheduledReview === '') {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n\r\n var selfAssessmentInpt = selfAssessmentInput.querySelector('textarea');\r\n if (selfAssessmentInpt.value === '') {\r\n selfAssessmentInput.classList.add('error');\r\n } else {\r\n selfAssessmentInput.classList.remove('error');\r\n }\r\n\r\n var employerAssessmentInpt = employerAssessmentInput.querySelector('textarea');\r\n if (employerAssessmentInpt.value === '') {\r\n employerAssessmentInput.classList.add('error');\r\n } else {\r\n employerAssessmentInput.classList.remove('error');\r\n }\r\n\r\n // provider\r\n var providerAssessmentInpt = providerAssessmentInput.querySelector('textarea');\r\n if (providerAssessmentInpt.value === '') {\r\n providerAssessmentInput.classList.add('error');\r\n } else {\r\n providerAssessmentInput.classList.remove('error');\r\n }\r\n\r\n var supportAndTransitionInpt = supportAndTransitionInput.querySelector('textarea');\r\n if (supportAndTransitionInpt.value === '') {\r\n supportAndTransitionInput.classList.add('error');\r\n } else {\r\n supportAndTransitionInput.classList.remove('error');\r\n }\r\n\r\n // var reviewVTSInpt = reviewVTSInput.querySelector('textarea');\r\n // if (reviewVTSInpt.value === '') {\r\n // reviewVTSInput.classList.add('error');\r\n // } else {\r\n // reviewVTSInput.classList.remove('error');\r\n // }\r\n\r\n if (!emReviewVTS || emReviewVTS === '') {\r\n reviewVTSDropdown.classList.add('error');\r\n } else {\r\n reviewVTSDropdown.classList.remove('error');\r\n }\r\n\r\n setBtnStatus();\r\n }\r\n\r\n function checknextScheduledReviewDateInput() {\r\n let todaydate = new Date();\r\n let thisNextReviewDate = new Date(emNextScheduledReview);\r\n\r\n var isDateBefore = dates.isBefore(thisNextReviewDate, todaydate);\r\n\r\n if (isDateBefore) {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0 || formReadOnly) {\r\n saveBtn.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n updateBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveAndNewBtn.classList.remove('disabled');\r\n updateBtn.classList.remove('disabled');\r\n }\r\n\r\n if (userId !== currentEntryUserId || !$.session.OODDelete) {\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n deleteBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function setupEvents() {\r\n monthYearDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n var dateparts = selectedOption.value.split('/');\r\n var updatedFullDate = new Date(dateparts[1], dateparts[0] - 1, 1);\r\n emReviewDateDBValue = updatedFullDate;\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReviewDate = '';\r\n } else {\r\n emReviewDate = selectedOption.value;\r\n }\r\n\r\n emReferenceNumber = '';\r\n populateReferenceNumberDropdown();\r\n checkRequiredFields();\r\n });\r\n\r\n referenceNumberDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReferenceNumber = '';\r\n } else {\r\n emReferenceNumber = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n nextScheduledReviewInput.addEventListener('change', event => {\r\n emNextScheduledReview = event.target.value;\r\n checknextScheduledReviewDateInput();\r\n setBtnStatus();\r\n });\r\n\r\n selfAssessmentInput.addEventListener('input', event => {\r\n emSummaryIndivSelfAssessment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n employerAssessmentInput.addEventListener('input', event => {\r\n emSummaryIndivEmployerAssessment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n // provider\r\n providerAssessmentInput.addEventListener('input', event => {\r\n emSummaryIndivProviderAssessment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n supportAndTransitionInput.addEventListener('input', event => {\r\n emSupportandTransition = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n reviewVTSDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReviewVTS = '';\r\n } else {\r\n emReviewVTS = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n });\r\n\r\n saveBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n });\r\n }\r\n // build the listing of OOD Entries (based off of filter settings) -- Note: will be used in future release -- JMM 02/05/2022\r\n async function buildOODMonthlySummariesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODMonthlySummaryTable',\r\n columnHeadings: [\r\n 'Month',\r\n 'Individual Input on Search',\r\n 'Potential Issues/Concerns with Progress',\r\n 'Plan/Goals for Next Month',\r\n ],\r\n endIcon: false,\r\n };\r\n\r\n // FAKE DATA : build table data -- see forms.js line 93\r\n const tableData = [\r\n { values: ['11/2021', 'This is my input', 'This is my concern', 'Got no plans, bucko'] },\r\n {\r\n values: [\r\n '11/2021',\r\n 'No, this is my input',\r\n 'Yes, this is my concern',\r\n 'No plans here either',\r\n ],\r\n },\r\n ];\r\n\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n\r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n //var myserviceDate =\"2/7/2022 12:00:00 AM\";\r\n // '2022-02-07'\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate:\r\n emReviewDateDBValue.getFullYear() +\r\n '-' +\r\n (emReviewDateDBValue.getMonth() + 1).toString().padStart(2, '0') +\r\n '-' +\r\n '01',\r\n emReferenceNumber,\r\n // emReviewDate: UTIL.formatDateToIso(emReviewDateDBValue.split(' ')[0]),\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emSummaryIndivSelfAssessment,\r\n emSummaryIndivEmployerAssessment,\r\n emSummaryIndivProviderAssessment,\r\n emSupportandTransition,\r\n emReviewVTS,\r\n userId,\r\n };\r\n // TODO JOE: need new C# and SP for Form 8\r\n OODAjax.updateForm8MonthlySummary(data, function (results) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n });\r\n\r\n function getReviewDate(DBValue) {\r\n if (DBValue instanceof Date && !isNaN(DBValue.valueOf())) {\r\n return (\r\n DBValue.getFullYear() + '-' + DBValue.getMonth().toString().padStart(2, '0') + '-' + '1'\r\n );\r\n } else {\r\n return UTIL.formatDateToIso(DBValue.split(' ')[0]);\r\n }\r\n }\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate:\r\n emReviewDateDBValue.getFullYear() +\r\n '-' +\r\n (emReviewDateDBValue.getMonth() + 1).toString().padStart(2, '0') +\r\n '-' +\r\n '01',\r\n // emNextScheduledReview: emNextScheduledReviewDBValue.getFullYear() + '-' + (emNextScheduledReviewDBValue.getMonth()).toString().padStart(2, \"0\") + '-' + '01',\r\n emReferenceNumber,\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emSummaryIndivSelfAssessment,\r\n emSummaryIndivEmployerAssessment,\r\n emSummaryIndivProviderAssessment,\r\n emSupportandTransition,\r\n emReviewVTS,\r\n userId,\r\n serviceId,\r\n };\r\n // TODO JOE: need new C# and SP for Form 8\r\n OODAjax.insertForm8MonthlySummary(data, function (results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildSummaryServicePopUp(consumerId, 'monthlySummary');\r\n }, 2000);\r\n } else {\r\n //save\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n }\r\n // TODO JOE: need new C# and SP for Form 8 ???\r\n function deleteConfirmation(emReviewId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteFormMonthlySummaryAsync(emReviewId);\r\n if (result.deleteFormMonthlySummaryResult === '1') {\r\n OOD.loadOODLanding();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const ISP = (function () {\r\n let ispData;\r\n let planId;\r\n let ispDiv;\r\n let ispNav;\r\n let ispBody;\r\n let readOnly;\r\n let validationCheck;\r\n\r\n const sections = [\r\n {\r\n title: 'Summary',\r\n id: 0,\r\n markup: () => planSummary.getMarkup(),\r\n },\r\n {\r\n title: 'Outcomes',\r\n id: 1,\r\n markup: () => planOutcomes.getMarkup(),\r\n },\r\n {\r\n title: 'Services',\r\n id: 2,\r\n markup: () => servicesSupports.getMarkup(),\r\n },\r\n {\r\n title: 'Restrictive Measures',\r\n id: 3,\r\n markup: () => planRestrictiveMeasures.getMarkup(),\r\n },\r\n {\r\n title: 'Sign / Consent',\r\n id: 4,\r\n markup: () => planConsentAndSign.getMarkup(),\r\n },\r\n {\r\n title: 'Contacts',\r\n id: 5,\r\n markup: () => contactInformation.getSectionMarkup(),\r\n },\r\n {\r\n title: 'Introduction',\r\n id: 6,\r\n markup: () => planIntroduction.getMarkup(),\r\n },\r\n ];\r\n\r\n // Utils\r\n //---------------------------------------------\r\n async function getInitialData() {\r\n ispData = {};\r\n\r\n ispData.servicesSupports = await servicesSupportsAjax.getServicesAndSupports({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n }\r\n async function refreshISP(planID) {\r\n planId = planID;\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n const ispWrap = document.getElementById('planISP');\r\n\r\n const loadingBar = PROGRESS.SPINNER.get('Loading ISP...');\r\n ispWrap.innerHTML = '';\r\n ispWrap.appendChild(loadingBar);\r\n\r\n const newIspMarkup = await getMarkup();\r\n\r\n ispWrap.innerHTML = '';\r\n ispWrap.appendChild(newIspMarkup);\r\n\r\n DOM.autosizeTextarea();\r\n }\r\n function toggleActiveNavItem(selectedNavItem) {\r\n const activeNavItem = ispNav.querySelector('.active');\r\n\r\n if (activeNavItem) {\r\n activeNavItem.classList.remove('active');\r\n }\r\n\r\n selectedNavItem.classList.add('active');\r\n }\r\n function toggleActiveSection(sectionId) {\r\n const activeSection = ispBody.querySelector('.active');\r\n const targetSection = ispBody.querySelector(`[data-section-id=\"${sectionId}\"]`);\r\n\r\n if (activeSection) {\r\n activeSection.classList.remove('active');\r\n }\r\n\r\n targetSection.classList.add('active');\r\n }\r\n function showDeleteWarning(popup, message, callback) {\r\n popup.classList.add('deleteActive');\r\n\r\n const deleteWarning = document.createElement('div');\r\n deleteWarning.classList.add('deleteWarning');\r\n\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = `${message}`;\r\n\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n popup.removeChild(deleteWarning);\r\n popup.classList.remove('deleteActive');\r\n popup.style.overflow = 'auto';\r\n callback();\r\n POPUP.hide(popup);\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n popup.removeChild(deleteWarning);\r\n popup.classList.remove('deleteActive');\r\n popup.style.overflow = 'auto';\r\n },\r\n });\r\n const closeWarningBtn = button.build({\r\n type: 'text',\r\n style: 'secondary',\r\n icon: 'close',\r\n classNames: 'closeWarningBtn',\r\n callback: function () {\r\n popup.removeChild(deleteWarning);\r\n popup.classList.remove('deleteActive');\r\n popup.style.overflow = 'auto';\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n // popup.style.overflow = 'hidden';\r\n deleteWarning.appendChild(closeWarningBtn);\r\n deleteWarning.appendChild(warningMessage);\r\n deleteWarning.appendChild(yesBtn);\r\n deleteWarning.appendChild(noBtn);\r\n\r\n popup.appendChild(deleteWarning);\r\n }\r\n\r\n // Markup\r\n //---------------------------------------------\r\n function buildNavigation() {\r\n const nav = document.createElement('div');\r\n nav.classList.add('planISP__nav');\r\n\r\n sections.forEach(async (section, index) => {\r\n const sectionId = section.id;\r\n\r\n const navItem = document.createElement('div');\r\n navItem.classList.add('planISP__navItem');\r\n navItem.innerHTML = `${section.title}`;\r\n\r\n if (section.title === 'Summary') {\r\n const summaryAlertDiv = document.createElement('div');\r\n summaryAlertDiv.classList.add('summaryAlertDiv');\r\n summaryAlertDiv.id = 'summaryAlert';\r\n summaryAlertDiv.innerHTML = `${icons.error}`;\r\n navItem.appendChild(summaryAlertDiv);\r\n summaryAlertDiv.style.display = 'none';\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'There is data missing on this tab that is required by DODD',\r\n summaryAlertDiv,\r\n );\r\n\r\n let summaryRisksValidation = planValidation.returnSummaryRisksValidation();\r\n\r\n // If a plan returns an error on the validation check, show the alert div\r\n if (!summaryRisksValidation)\r\n {\r\n summaryAlertDiv.style.display = 'flex';\r\n } else {\r\n summaryAlertDiv.style.display = 'none';\r\n }\r\n }\r\n\r\n // if the section is 'Outcomes' run an initial validation check on the section\r\n if (section.title === 'Outcomes') {\r\n const outcomesAlertDiv = document.createElement('div');\r\n outcomesAlertDiv.classList.add('outcomesAlertDiv');\r\n outcomesAlertDiv.id = 'outcomesAlert';\r\n outcomesAlertDiv.innerHTML = `${icons.error}`;\r\n navItem.appendChild(outcomesAlertDiv);\r\n outcomesAlertDiv.style.display = 'none';\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'There is data missing on this tab that is required by DODD',\r\n outcomesAlertDiv,\r\n );\r\n\r\n // If a plan returns an error on the validation check, show the alert div\r\n if (validationCheck.missingExperiences.length === 0 && validationCheck.missingReviews.length === 0) \r\n {\r\n outcomesAlertDiv.style.display = 'none';\r\n } else {\r\n outcomesAlertDiv.style.display = 'flex';\r\n }\r\n \r\n if (validationCheck.complete === false) {\r\n outcomesAlertDiv.style.display = 'flex';\r\n } else {\r\n outcomesAlertDiv.style.display = 'none';\r\n }\r\n }\r\n\r\n // if the section is 'Outcomes' run an initial validation check on the section\r\n if (section.title === 'Contacts') {\r\n const contactsAlertDiv = document.createElement('div');\r\n contactsAlertDiv.classList.add('contactsAlertDiv');\r\n contactsAlertDiv.id = 'contactsAlert';\r\n contactsAlertDiv.innerHTML = `${icons.error}`;\r\n navItem.appendChild(contactsAlertDiv);\r\n contactsAlertDiv.style.display = 'none';\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'There is data missing on this tab that is required by DODD',\r\n contactsAlertDiv,\r\n );\r\n\r\n let contactValidationCheck = planValidation.getContactValidation();\r\n\r\n if (!contactValidationCheck.importantPeople || !contactValidationCheck.importantPlaces || !contactValidationCheck.bestWayToConnect)\r\n {\r\n contactsAlertDiv.style.display = 'flex';\r\n } else {\r\n contactsAlertDiv.style.display = 'none';\r\n }\r\n }\r\n\r\n if (index === 0) {\r\n navItem.classList.add('active');\r\n }\r\n\r\n navItem.addEventListener('click', e => {\r\n toggleActiveNavItem(navItem);\r\n toggleActiveSection(sectionId);\r\n DOM.autosizeTextarea();\r\n });\r\n\r\n nav.appendChild(navItem);\r\n });\r\n\r\n return nav;\r\n }\r\n async function buildBody() {\r\n const body = document.createElement('div');\r\n body.classList.add('planISP__body');\r\n\r\n // refresh data for relationships in dropdown data\r\n planData.refreshDropdownData();\r\n\r\n await getInitialData();\r\n\r\n servicesSupports.init({ planId, readOnly, data: ispData.servicesSupports });\r\n\r\n // eventually remove await and place data GET into getInitialData()\r\n await planSummary.init({ planId, readOnly });\r\n await planOutcomes.init({ planId, readOnly });\r\n await planConsentAndSign.init({ planId, readOnly });\r\n await planRestrictiveMeasures.init({ planId, readOnly });\r\n await contactInformation.init(planId);\r\n await planIntroduction.init({ planId, readOnly });\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n const sectionMarkup = section.markup();\r\n sectionMarkup.setAttribute('data-section-id', sectionId);\r\n sectionMarkup.classList.add('planISP__section');\r\n\r\n if (index === 0) {\r\n sectionMarkup.classList.add('active');\r\n }\r\n\r\n body.appendChild(sectionMarkup);\r\n });\r\n\r\n return body;\r\n }\r\n\r\n async function getMarkup() {\r\n ispDiv = document.createElement('div');\r\n ispDiv.classList.add('planISP');\r\n\r\n const status = plan.getPlanStatus();\r\n const isPlanComplete = status === 'C' ? true : false;\r\n const isPlanActive = plan.getPlanActiveStatus();\r\n const hasUpdatePermission = $.session.planUpdate;\r\n if (!isPlanActive || isPlanComplete || !hasUpdatePermission) {\r\n readOnly = true;\r\n ispDiv.classList.add('readOnly');\r\n } else {\r\n readOnly = false;\r\n }\r\n\r\n ispNav = buildNavigation();\r\n ispDiv.appendChild(ispNav);\r\n\r\n ispBody = await buildBody();\r\n ispDiv.appendChild(ispBody);\r\n\r\n return ispDiv;\r\n }\r\n\r\n return {\r\n refreshISP,\r\n getMarkup,\r\n showDeleteWarning,\r\n };\r\n})();\r\n","const assessment = (function () {\r\n // Data\r\n let sectionData;\r\n let subsectionData;\r\n let questionSetData;\r\n let questionData;\r\n let conditionalQuestionData;\r\n\r\n // Applicable Sections\r\n //------------------------------------\r\n let applicableSections;\r\n\r\n function getApplicableSections() {\r\n return applicableSections;\r\n }\r\n function showApplicableWarningMessage(callback) {\r\n const warningPopup = POPUP.build({\r\n classNames: 'applicableWarningMessage',\r\n });\r\n\r\n const header = document.createElement('h3');\r\n header.innerHTML =\r\n 'Marking this section Not Applicable will remove all information for this section, including answers to assessment questions, assessment summary information, and assessment area names on supports. Do you want to proceed?';\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async e => {\r\n // Delete answers to questions for the selected section\r\n // Null out Assessment Area values\r\n callback('yes');\r\n POPUP.hide(warningPopup);\r\n },\r\n });\r\n\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: e => {\r\n callback('no');\r\n POPUP.hide(warningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n warningPopup.appendChild(header);\r\n warningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(warningPopup);\r\n }\r\n async function toggleIsSectionApplicable(sectionId, isApplicable) {\r\n // isApplicable === true || false\r\n const planId = plan.getCurrentPlanId();\r\n await planAjax.updatePlanSectionApplicable({\r\n token: $.session.Token,\r\n planId: parseInt(planId),\r\n sectionId: parseInt(sectionId),\r\n applicable: isApplicable ? 'Y' : 'N',\r\n });\r\n\r\n applicableSections[sectionId] = isApplicable;\r\n tableOfContents.toggleApplicability(sectionId, isApplicable);\r\n }\r\n\r\n // Utils\r\n //------------------------------------\r\n function getConditionalQuestions(conditionalQuestionId) {\r\n return conditionalQuestionData[conditionalQuestionId];\r\n }\r\n function getQuestionDataById(id) {\r\n return questionData[id];\r\n }\r\n function sortAssessmentDetails(data) {\r\n if (!data) return;\r\n // answerId: \"686614946860364\"\r\n // answerRow: \"1\"\r\n // answerText: \"\"\r\n // questionAnswerOptions: \"\"\r\n // questionAnswerStyle: \"TEXT\"\r\n // questionConditionalAnswerText: \"\"\r\n // questionConditionalQuestionId: \"\"\r\n // questionDefaultAnswer: \"\"\r\n // questionId: \"9\"\r\n // questionOrder: \"1\"\r\n // questionPrompt: \"\"\r\n // questionRequiresAnswer: \"True\"\r\n // questionSetAllowMultirowInserts: \"False\"\r\n // questionSetId: \"3\"\r\n // questionSetOrder: \"1\"\r\n // questionSetTitle: \"\"\r\n // questionSetType: \"LIST\"\r\n // questionTag: \"contributors_consumerName\"\r\n // questionText: \"Individual’s First Name & Last Initial\"\r\n // sectionId: \"2\"\r\n // sectionName: \"CONTRIBUTORS\"\r\n // sectionOrder: \"0\"\r\n // subsectionId: \"\"\r\n // subsectionName: \"\"\r\n // subsectionOrder: \"\"\r\n // applicable: \"Y\" || \"N\"\r\n // assessment: \"Y\" || \"N\"\r\n\r\n sectionData = {};\r\n subsectionData = {};\r\n questionSetData = {};\r\n questionData = {};\r\n answerData = {};\r\n conditionalQuestionData = {};\r\n applicableSections = {};\r\n\r\n data.forEach(({ sectionId, subsectionId, questionId, questionSetId, ...otherData }) => {\r\n // Sections\r\n if (!sectionData[sectionId]) {\r\n const isApplicable = otherData.applicable === '' ? 'Y' : otherData.applicable;\r\n sectionData[sectionId] = {\r\n order: otherData.sectionOrder,\r\n title: otherData.sectionName,\r\n applicable: isApplicable === 'Y' ? true : false,\r\n isAssessment: otherData.assessment,\r\n };\r\n\r\n if (!applicableSections[sectionId] && otherData.assessment) {\r\n if (otherData.assessment === 'Y') {\r\n applicableSections[sectionId] = isApplicable === 'Y' ? true : false;\r\n }\r\n }\r\n }\r\n // SubSections\r\n if (subsectionId && !subsectionData[subsectionId]) {\r\n subsectionData[subsectionId] = {\r\n sectionId,\r\n order: otherData.subsectionOrder,\r\n title: otherData.subsectionName,\r\n };\r\n }\r\n // Question Sets\r\n if (!questionSetData[questionSetId]) {\r\n questionSetData[questionSetId] = {\r\n id: questionSetId,\r\n sectionId,\r\n subsectionId,\r\n order: otherData.questionSetOrder,\r\n setType: otherData.questionSetType,\r\n allowRowInsert: otherData.questionSetAllowMultirowInserts,\r\n defaultAnswer: otherData.questionDefaultAnswer,\r\n questions: {},\r\n };\r\n }\r\n // Questions\r\n if (otherData.questionSetType === 'GRID') {\r\n if (!questionSetData[questionSetId].questions[otherData.answerRow]) {\r\n questionSetData[questionSetId].questions[otherData.answerRow] = {};\r\n }\r\n if (\r\n !questionSetData[questionSetId].questions[otherData.answerRow][otherData.questionOrder]\r\n ) {\r\n questionSetData[questionSetId].questions[otherData.answerRow][otherData.questionOrder] = {\r\n answerId: otherData.answerId,\r\n answerText: otherData.answerText,\r\n answerStyle: otherData.questionAnswerStyle,\r\n answerOptions: otherData.questionAnswerOptions,\r\n id: questionId,\r\n prompt: otherData.questionPrompt,\r\n requiredAnswer: otherData.questionRequiresAnswer,\r\n tag: otherData.questionTag,\r\n text: otherData.questionText,\r\n skipped: otherData.skipped,\r\n };\r\n }\r\n } else {\r\n if (!questionSetData[questionSetId].questions[otherData.questionOrder]) {\r\n questionSetData[questionSetId].questions[otherData.questionOrder] = {\r\n answerId: otherData.answerId,\r\n answerText: otherData.answerText,\r\n answerStyle: otherData.questionAnswerStyle,\r\n answerOptions: otherData.questionAnswerOptions,\r\n conditionalAnswerText: otherData.questionConditionalAnswerText,\r\n conditionalQuestionId: otherData.questionConditionalQuestionId,\r\n id: questionId,\r\n order: otherData.questionOrder,\r\n prompt: otherData.questionPrompt,\r\n requiredAnswer: otherData.questionRequiresAnswer,\r\n text: otherData.questionText,\r\n tag: otherData.questionTag,\r\n skipped: otherData.skipped,\r\n };\r\n }\r\n if (!questionData[questionId]) {\r\n questionData[questionId] = {\r\n answerId: otherData.answerId,\r\n answerText: otherData.answerText,\r\n answerStyle: otherData.questionAnswerStyle,\r\n answerOptions: otherData.questionAnswerOptions,\r\n conditionalAnswerText: otherData.questionConditionalAnswerText,\r\n conditionalQuestionId: otherData.questionConditionalQuestionId,\r\n id: questionId,\r\n order: otherData.questionOrder,\r\n prompt: otherData.questionPrompt,\r\n requiredAnswer: otherData.questionRequiresAnswer,\r\n text: otherData.questionText,\r\n tag: otherData.questionTag,\r\n skipped: otherData.skipped,\r\n };\r\n }\r\n\r\n if (otherData.questionConditionalQuestionId === '') return;\r\n\r\n if (!conditionalQuestionData[otherData.questionConditionalQuestionId]) {\r\n conditionalQuestionData[otherData.questionConditionalQuestionId] = [];\r\n }\r\n\r\n conditionalQuestionData[otherData.questionConditionalQuestionId].push({\r\n answerId: otherData.answerId,\r\n questionId: questionId,\r\n answerText: otherData.answerText,\r\n conditionalQuestionId: otherData.questionConditionalQuestionId,\r\n conditionalAnswerText: otherData.questionConditionalAnswerText,\r\n });\r\n }\r\n });\r\n\r\n return { sectionData, subsectionData, questionSetData };\r\n }\r\n\r\n // Data\r\n //------------------------------------\r\n async function getAssessmentData(planId) {\r\n try {\r\n const data = (\r\n await assessmentAjax.getConsumerAssessment({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n })\r\n ).getConsumerAssessmentResult;\r\n return sortAssessmentDetails(data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumerRelationshipsData(consumerId, effectiveStartDate, effectiveEndDate) {\r\n try {\r\n const data = (\r\n await assessmentAjax.getConsumerRelationships({\r\n token: $.session.Token,\r\n consumerId,\r\n effectiveStartDate,\r\n effectiveEndDate,\r\n })\r\n ).getConsumerRelationshipsResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumerNameInfoData(consumerId) {\r\n try {\r\n const data = (\r\n await assessmentAjax.getConsumerNameInfo({\r\n token: $.session.Token,\r\n consumerId,\r\n })\r\n ).getConsumerNameInfoResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getServiceAndSupportsData() {\r\n try {\r\n const data = (\r\n await assessmentAjax.getServiceAndSupportsData({\r\n token: $.session.Token,\r\n })\r\n ).getServiceAndSupportsDataResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function generateReport(assessmentID, versionID, extraSpace) {\r\n try {\r\n const success = (\r\n await assessmentAjax.getPlanAssessmentReport({\r\n token: $.session.Token,\r\n userId: $.session.PeopleId,\r\n assessmentID,\r\n versionID,\r\n extraSpace: extraSpace,\r\n isp: true, //new\r\n signatureOnly: false,\r\n })\r\n ).getPlanAssessmentReportResult;\r\n\r\n const arr = success._buffer;\r\n const byteArray = new Uint8Array(arr);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser === 'Explorer' || $.session.browser === 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n const fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n\r\n reports.handledProcessedReport();\r\n return 'success';\r\n } catch (error) {\r\n return error.statusText;\r\n }\r\n }\r\n function generateReportWithAttachments(\r\n assessmentID,\r\n versionID,\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n DODDFlag,\r\n signatureOnly,\r\n include,\r\n toDODD,\r\n ) {\r\n assessmentAjax.getPlanAssessmentReportWithAttachments(\r\n //Testgd\r\n {\r\n token: $.session.Token,\r\n userId: $.session.PeopleId,\r\n assessmentID,\r\n versionID,\r\n extraSpace: extraSpace,\r\n toONET: false,\r\n isp: true,\r\n oneSpan: false,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n DODDFlag,\r\n signatureOnly,\r\n include,\r\n },\r\n () => {\r\n const arr = success._buffer;\r\n const byteArray = new Uint8Array(arr);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser === 'Explorer' || $.session.browser === 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n const fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n\r\n reports.handledProcessedReport();\r\n return 'success';\r\n },\r\n );\r\n }\r\n async function transeferPlanReportToONET(\r\n assessmentID,\r\n versionID,\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n DODDFlag,\r\n signatureOnly,\r\n include,\r\n ) {\r\n try {\r\n const successMessage = await assessmentAjax.transeferPlanReportToONET({\r\n token: $.session.Token,\r\n userId: $.session.PeopleId,\r\n assessmentID,\r\n versionID,\r\n extraSpace: extraSpace,\r\n toONET: true,\r\n isp: true,\r\n oneSpan: false,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n DODDFlag,\r\n signatureOnly,\r\n include,\r\n });\r\n\r\n return successMessage;\r\n } catch (error) {\r\n console.log(error.statusText);\r\n }\r\n }\r\n async function insertPlanReportToBeTranferredToONET(byteArray, assessmentID) {\r\n var binary = '';\r\n var len = byteArray.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(byteArray[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n try {\r\n const response = (\r\n await assessmentAjax.insertPlanReportToBeTranferredToONET({\r\n token: $.session.Token,\r\n report: abString,\r\n planId: assessmentID,\r\n })\r\n ).insertPlanReportToBeTranferredToONETResult;\r\n } catch (error) {\r\n console.log(error.statusText);\r\n }\r\n }\r\n async function insertAssessmentGridRowAnswers(consumerPlanId, assessmentQuestionSetId) {\r\n try {\r\n const newRowData = (\r\n await assessmentAjax.insertAssessmentGridRowAnswers({\r\n token: $.session.Token,\r\n consumerPlanId,\r\n assessmentQuestionSetId,\r\n })\r\n ).insertAssessmentGridRowAnswersResult;\r\n\r\n return newRowData;\r\n // return planId;\r\n } catch (error) {\r\n console.log(error.statusText);\r\n }\r\n }\r\n async function deleteGridRows(planId, questionSetId, rowsToDelete) {\r\n try {\r\n const success = (\r\n await assessmentAjax.deleteAssessmentGridRowAnswers({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n assessmentQuestionSetId: questionSetId,\r\n rowsToDelete,\r\n })\r\n ).deleteAssessmentGridRowAnswersResult;\r\n return success;\r\n } catch (error) {\r\n console.log(error.statusText);\r\n }\r\n }\r\n\r\n return {\r\n getAssessmentData,\r\n getConditionalQuestions,\r\n getQuestionDataById,\r\n getConsumerRelationshipsData,\r\n getConsumerNameInfoData,\r\n getServiceAndSupportsData,\r\n generateReport,\r\n generateReportWithAttachments,\r\n insertAssessmentGridRowAnswers,\r\n // updateAnswers,\r\n deleteGridRows,\r\n transeferPlanReportToONET,\r\n // applicable stuff\r\n showApplicableWarningMessage,\r\n toggleIsSectionApplicable,\r\n getApplicableSections,\r\n };\r\n})();\r\n","const assessmentAjax = (function () {\r\n function getConsumerAssessment(retrieveData) {\r\n //token, consumerId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerAssessment/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getPlanAssessmentReport(retrieveData) {\r\n //token, userId, assessmentID, versionID, extraSpace, isp(boolean)\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanAssessmentReport/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n async function getSentToONETDate(retrieveData) {\r\n //token, assessmentId\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSentToONETDate/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getSentToONETDateResult;\r\n }\r\n\r\n async function transeferPlanReportToONET(retrieveData) {\r\n //token, planAttachmentIds, wfAttachmentIds, sigAttachmentIds\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/transeferPlanReportToONET/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.transeferPlanReportToONETResult;\r\n } catch (error) {\r\n console.log(error);\r\n return error.text;\r\n }\r\n }\r\n\r\n async function sendSelectedAttachmentsToDODD(retrieveData) {\r\n //token, planAttachmentIds, wfAttachmentIds, sigAttachmentIds\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/sendSelectedAttachmentsToDODD/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.sendSelectedAttachmentsToDODDResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getDefaultEmailsForFinalization() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDefaultEmailsForFinalization/',\r\n data: JSON.stringify({ token: $.session.Token }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getDefaultEmailsForFinalizationResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function finalizationActions(retrieveData) {\r\n //string token, string[] planAttachmentIds, string[] wfAttachmentIds, string[] sigAttachmentIds, string userId, string assessmentID\r\n //string versionID, string extraSpace, bool toONET, bool isp, bool oneSpan, bool signatureOnly, string include, string planId\r\n //string peopleId, string[] emailAddresses, string[] checkBoxes\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/finalizationActions/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.finalizationActionsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function getPlanAssessmentReportWithAttachments(retrieveData, callback) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/addSelectedAttachmentsToReport/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'bare');\r\n form.setAttribute('success', successFunction); //\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', retrieveData.userId);\r\n userIdInput.id = 'userId';\r\n var assessmentIDInput = document.createElement('input');\r\n assessmentIDInput.setAttribute('name', 'assessmentID');\r\n assessmentIDInput.setAttribute('value', retrieveData.assessmentID);\r\n assessmentIDInput.id = 'assessmentID';\r\n var versionIDInput = document.createElement('input');\r\n versionIDInput.setAttribute('name', 'versionID');\r\n versionIDInput.setAttribute('value', retrieveData.versionID);\r\n versionIDInput.id = 'versionID';\r\n var extraSpaceInput = document.createElement('input');\r\n extraSpaceInput.setAttribute('name', 'extraSpace');\r\n extraSpaceInput.setAttribute('value', retrieveData.extraSpace);\r\n var toONETInput = document.createElement('input');\r\n toONETInput.setAttribute('name', 'toONET');\r\n toONETInput.setAttribute('value', retrieveData.toONET);\r\n var ispInput = document.createElement('input');\r\n ispInput.setAttribute('name', 'isp');\r\n ispInput.setAttribute('value', retrieveData.isp);\r\n ispInput.id = 'isp';\r\n var oneSpanInput = document.createElement('input');\r\n oneSpanInput.setAttribute('name', 'oneSpan');\r\n oneSpanInput.setAttribute('value', retrieveData.oneSpan);\r\n oneSpanInput.id = 'oneSpan';\r\n var signatureOnlyInput = document.createElement('input');\r\n signatureOnlyInput.setAttribute('name', 'signatureOnly');\r\n signatureOnlyInput.setAttribute('value', retrieveData.signatureOnly);\r\n signatureOnlyInput.id = 'signatureOnly';\r\n var includeInput = document.createElement('input');\r\n includeInput.setAttribute('name', 'include');\r\n includeInput.setAttribute('value', retrieveData.include);\r\n includeInput.id = 'include';\r\n var planAttachmentIdsInput = document.createElement('input');\r\n planAttachmentIdsInput.setAttribute('name', 'planAttachmentIds');\r\n planAttachmentIdsInput.setAttribute('value', retrieveData.planAttachmentIds);\r\n planAttachmentIdsInput.id = 'planAttachmentIds';\r\n var wfAttachmentIdsInput = document.createElement('input');\r\n wfAttachmentIdsInput.setAttribute('name', 'wfAttachmentIds');\r\n wfAttachmentIdsInput.setAttribute('value', retrieveData.wfAttachmentIds);\r\n wfAttachmentIdsInput.id = 'wfAttachmentIds';\r\n var sigAttachmentIdsInput = document.createElement('input');\r\n sigAttachmentIdsInput.setAttribute('name', 'sigAttachmentIds');\r\n sigAttachmentIdsInput.setAttribute('value', retrieveData.sigAttachmentIds);\r\n sigAttachmentIdsInput.id = 'sigAttachmentIds';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(assessmentIDInput);\r\n form.appendChild(versionIDInput);\r\n form.appendChild(extraSpaceInput);\r\n form.appendChild(toONETInput);\r\n form.appendChild(ispInput);\r\n form.appendChild(oneSpanInput);\r\n form.appendChild(signatureOnlyInput);\r\n form.appendChild(includeInput);\r\n form.appendChild(planAttachmentIdsInput);\r\n form.appendChild(wfAttachmentIdsInput);\r\n form.appendChild(sigAttachmentIdsInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n function getConsumerRelationships(retrieveData) {\r\n //token, consumerId, effectiveStartDate, effectiveEndDate\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerRelationships/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getConsumerNameInfo(retrieveData) {\r\n //token, consumerId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerNameInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function updateConsumerAssessmentAnswers(retrieveData, callback) {\r\n //token, answerObj array\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAssessmentAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n async function updateConsumerAssessmentAnswer(answerObject) {\r\n const retrieveData = {\r\n token: $.session.Token,\r\n answers: [answerObject],\r\n };\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAssessmentAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateAssessmentAnswersResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function insertAssessmentGridRowAnswers(retrieveData) {\r\n // token, consumerPlanId, assessmentQuestionSetId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertAssessmentGridRowAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function deleteAssessmentGridRowAnswers(retrieveData) {\r\n // token, consumerPlanId, assessmentQuestionSetId, rowsToDelete[]\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteAssessmentGridRowAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n // TODO: Delete below function\r\n function getServiceAndSupportsData(retrieveData) {\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceAndSupportsData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function insertPlanReportToBeTranferredToONET(retrieveData) {\r\n //token, reort, planId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanReportToBeTranferredToONET/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function transferPlanReportToONET(retrieveData) {\r\n //token, planId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/transferPlanReportToONET/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function updateAssessmentAnswerRowOrder(retrieveData) {\r\n // string token, string answerIds, long assessmentId, long questionSetId, int newPos, int oldPos\r\n // Pipe delimit the answerIds with no spaces\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAssessmentAnswerRowOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n return {\r\n getConsumerAssessment,\r\n getPlanAssessmentReport,\r\n getConsumerRelationships,\r\n getConsumerNameInfo,\r\n updateConsumerAssessmentAnswers,\r\n updateConsumerAssessmentAnswer,\r\n insertAssessmentGridRowAnswers,\r\n deleteAssessmentGridRowAnswers,\r\n getDefaultEmailsForFinalization,\r\n getServiceAndSupportsData,\r\n finalizationActions,\r\n insertPlanReportToBeTranferredToONET,\r\n transferPlanReportToONET,\r\n updateAssessmentAnswerRowOrder,\r\n getPlanAssessmentReportWithAttachments,\r\n sendSelectedAttachmentsToDODD,\r\n transeferPlanReportToONET,\r\n getSentToONETDate,\r\n };\r\n})();\r\n","const planWorkflow = (() => {\r\n let selectedWorkflowForms = [];\r\n function getProcessId(planType) {\r\n return planType === 'Revision' || planType === 'r'\r\n ? WorkflowProcess.CONSUMER_PLAN_REVISION\r\n : WorkflowProcess.CONSUMER_PLAN_ANNUAL;\r\n }\r\n async function getWorkflowList(processId, planId) {\r\n const wfvData = await WorkflowViewerAjax.getManualWorkflowList({\r\n token: $.session.Token,\r\n processId,\r\n referenceId: planId ? planId : 0,\r\n notPlan: 'f'\r\n });\r\n\r\n workflowListData = wfvData;\r\n\r\n return wfvData;\r\n }\r\n\r\n // Workflow List\r\n function buildWorkflowList(wfvData) {\r\n const workflowList = document.createElement('div');\r\n workflowList.classList.add('workflowList');\r\n\r\n wfvData.forEach(obj => {\r\n // description: \"A manually inserted workflow\"\r\n // templateName: \"A Manual Workflow\"\r\n // workflowProcessId: \"2\"\r\n // workflowTemplateId: \"3\"\r\n const wfvItem = document.createElement('div');\r\n wfvItem.classList.add('workflowListItem');\r\n wfvItem.setAttribute('data-template-id', obj.workflowTemplateId);\r\n wfvItem.innerHTML = `

    ${obj.templateName}

    ${obj.description}

    `;\r\n workflowList.appendChild(wfvItem);\r\n });\r\n\r\n return workflowList;\r\n }\r\n\r\n // Workflow Form List\r\n function buildWorkflowFormList(formListData) {\r\n selectedWorkflowForms = [];\r\n\r\n const workflowFormList = document.createElement('div');\r\n workflowFormList.classList.add('workflowFormList');\r\n\r\n for (let i = 0; i < formListData.length; i++) {\r\n //formListData.forEach(obj => {\r\n if (i === 0) {\r\n const formHeader = document.createElement('div');\r\n formHeader.classList.add('workflowFormHeader');\r\n formHeader.innerHTML = `

    ${formListData[i].wfName}

    `;\r\n workflowFormList.appendChild(formHeader);\r\n } else if (formListData[i].wfName !== formListData[i - 1].wfName) {\r\n const formHeader = document.createElement('div');\r\n formHeader.classList.add('workflowFormHeader');\r\n formHeader.innerHTML = `

    ${formListData[i].wfName}

    `;\r\n workflowFormList.appendChild(formHeader);\r\n }\r\n const formItem = document.createElement('div');\r\n formItem.classList.add('workflowFormListItem');\r\n formItem.setAttribute('data-attachment-id', formListData[i].attachmentId);\r\n formItem.setAttribute('data-workflow-id', formListData[i].workflowId);\r\n formItem.setAttribute('data-WFTemplate-id', formListData[i].WFTemplateId);\r\n formItem.setAttribute('data-description', formListData[i].description);\r\n formItem.innerHTML = `   ${formListData[i].description}`;\r\n workflowFormList.appendChild(formItem);\r\n\r\n formItem.addEventListener('click', e => {\r\n // if (e.target.classList.contains('workflowFormListItem')) {\r\n const attachmentID = e.target.dataset.attachmentId;\r\n const workflowID = e.target.dataset.workflowId;\r\n const WFTemplateID = e.target.dataset.wftemplateId;\r\n const description = e.target.dataset.description;\r\n\r\n if (!e.target.classList.contains('selected')) {\r\n e.target.classList.add('selected');\r\n selectedWorkflowForms.push({\r\n attachmentId: attachmentID,\r\n workflowId: workflowID,\r\n WFtemplateId: WFTemplateID,\r\n description: description,\r\n });\r\n } else {\r\n e.target.classList.remove('selected');\r\n selectedWorkflowForms = selectedWorkflowForms.filter(wf => wf.attachmentId !== attachmentID);\r\n }\r\n });\r\n }\r\n //});\r\n\r\n let test = selectedWorkflowForms;\r\n return workflowFormList;\r\n }\r\n\r\n function getselectedWorkFlowForms() {\r\n return selectedWorkflowForms;\r\n }\r\n\r\n function showWorkflowListPopup(wfvData, callback) {\r\n let selectedWorkflows = [];\r\n\r\n const wfvPopup = POPUP.build({\r\n classNames: ['workflowListPopup'],\r\n });\r\n\r\n const title = document.createElement('h2');\r\n title.innerHTML = 'Select workflow(s) to attach.';\r\n wfvPopup.appendChild(title);\r\n\r\n if (wfvData && wfvData.length > 0) {\r\n const list = buildWorkflowList(wfvData);\r\n wfvPopup.appendChild(list);\r\n }\r\n\r\n const doneBtn = button.build({\r\n id: 'workflowContinueBtn',\r\n text: 'Continue',\r\n type: 'contained',\r\n style: 'secondary',\r\n // classNames: ['copySelectedBtn', 'disabled'],\r\n classNames: 'copySelectedBtn',\r\n callback: () => (callback ? callback(selectedWorkflows) : null),\r\n });\r\n wfvPopup.appendChild(doneBtn);\r\n\r\n wfvPopup.addEventListener('click', e => {\r\n if (e.target.classList.contains('workflowListItem')) {\r\n const templateID = e.target.dataset.templateId;\r\n\r\n if (!e.target.classList.contains('selected')) {\r\n e.target.classList.add('selected');\r\n selectedWorkflows.push(templateID);\r\n } else {\r\n e.target.classList.remove('selected');\r\n selectedWorkflows = selectedWorkflows.filter(wf => wf !== templateID);\r\n }\r\n }\r\n });\r\n PROGRESS__BTN.SPINNER.hide('annualRevisionDoneBtn');\r\n POPUP.show(wfvPopup);\r\n }\r\n\r\n async function addWorkflowPopup() {\r\n // PROGRESS__BTN.init();\r\n PROGRESS__BTN.SPINNER.show('workflow_addWorkflowBtn');\r\n const processId = getProcessId(plan.getCurrentPlanType());\r\n let selectedWorkflows = [];\r\n const planId = plan.getCurrentPlanId();\r\n\r\n const popup = POPUP.build({\r\n header: 'Select workflow(s) to attach.',\r\n id: 'workflow_addWorkflowPopup',\r\n });\r\n\r\n const wfvData = await getWorkflowList(processId, planId);\r\n if (wfvData && wfvData.length > 0) {\r\n const list = buildWorkflowList(wfvData);\r\n popup.appendChild(list);\r\n\r\n list.addEventListener('click', e => {\r\n if (e.target.classList.contains('workflowListItem')) {\r\n const templateID = e.target.dataset.templateId;\r\n\r\n if (!e.target.classList.contains('selected')) {\r\n e.target.classList.add('selected');\r\n selectedWorkflows.push(templateID);\r\n } else {\r\n e.target.classList.remove('selected');\r\n selectedWorkflows = selectedWorkflows.filter(wf => wf !== templateID);\r\n }\r\n\r\n selectedWorkflows.length > 0 ? doneBtn.classList.remove('disabled') : doneBtn.classList.add('disabled');\r\n }\r\n });\r\n }\r\n\r\n const doneBtn = button.build({\r\n id: 'addWorkflowDoneBtn',\r\n text: 'DONE',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: async () => {\r\n // PROGRESS__BTN.init();\r\n PROGRESS__BTN.SPINNER.show(doneBtn);\r\n cancelBtn.classList.add('disabled');\r\n const workflowIds = [];\r\n const planId = plan.getCurrentPlanId();\r\n if (selectedWorkflows && selectedWorkflows.length > 0) {\r\n try {\r\n for (i = 0; i < selectedWorkflows.length; i++) {\r\n let wftemplateId = selectedWorkflows[i];\r\n workflowId = await WorkflowViewerAjax.copyWorkflowtemplateToRecord({\r\n token: $.session.Token,\r\n templateId: wftemplateId,\r\n referenceId: planId,\r\n peopleId: plan.getSelectedConsumer().id,\r\n });\r\n workflowIds.push(workflowId);\r\n }\r\n\r\n const workflowMarkup = await plan.getWorkflowMarkup();\r\n const workflowDiv = document.getElementById('planWorkflow');\r\n workflowDiv.innerHTML = '';\r\n workflowDiv.appendChild(workflowMarkup);\r\n } catch (error) {\r\n console.error('error inserting workflows');\r\n }\r\n PROGRESS__BTN.SPINNER.hide(doneBtn);\r\n POPUP.hide(popup);\r\n successfulSave.show('Workflows Added');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n }, 1000);\r\n }\r\n // delay 2 seconds\r\n await new Promise(r => setTimeout(r, 2000));\r\n\r\n await displayWFwithMissingResponsibleParties(workflowIds);\r\n //overlay.show();//\r\n },\r\n });\r\n\r\n const cancelBtn = button.build({\r\n id: 'addWorkflowCancelBtn',\r\n text: 'CANCEL',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => POPUP.hide(popup),\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n popup.appendChild(btnWrap);\r\n\r\n PROGRESS__BTN.SPINNER.hide('workflow_addWorkflowBtn');\r\n document.getElementById('workflow_addWorkflowBtn').innerText = 'Add Workflow(s)';\r\n POPUP.show(popup);\r\n }\r\n\r\n async function displayWFwithMissingResponsibleParties(workflowIds) {\r\n if (workflowIds.length == 0) return false;\r\n\r\n let strWorkflowIds = workflowIds.toString();\r\n const convertedstrWorkFlowIds = strWorkflowIds.replaceAll(',', '|');\r\n // convertedstrWorkFlowIds += '|';\r\n\r\n async function getWFwithMissingResponsibleParties(constrWorkFlowIds) {\r\n let responsibleData = await WorkflowViewerAjax.getWFwithMissingResponsibleParties({\r\n workflowIds: constrWorkFlowIds.toString(),\r\n });\r\n\r\n return responsibleData;\r\n }\r\n\r\n let responsibleData = await getWFwithMissingResponsibleParties(convertedstrWorkFlowIds);\r\n\r\n const workflowNames = [];\r\n if (responsibleData.length > 0) {\r\n for (let i = 0; i < responsibleData.length; i++) {\r\n workflowNames.push(responsibleData[i].name);\r\n }\r\n var strWorkflowNames = workflowNames.join(', ');\r\n missingResponsiblePartyAlert(strWorkflowNames);\r\n }\r\n }\r\n\r\n function missingResponsiblePartyAlert(workflowNames) {\r\n var alertPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n });\r\n var alertbtnWrap = document.createElement('div');\r\n alertbtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(alertPopup);\r\n },\r\n });\r\n\r\n alertbtnWrap.appendChild(alertokBtn);\r\n var alertMessage = document.createElement('p');\r\n alertMessage.innerHTML =\r\n 'There are missing responsible party relationship assignments for the following new workflows: ' + workflowNames;\r\n alertPopup.appendChild(alertMessage);\r\n alertPopup.appendChild(alertbtnWrap);\r\n POPUP.show(alertPopup);\r\n }\r\n\r\n return {\r\n getProcessId,\r\n getWorkflowList,\r\n buildWorkflowList,\r\n buildWorkflowFormList,\r\n showWorkflowListPopup,\r\n getselectedWorkFlowForms,\r\n addWorkflowPopup,\r\n displayWFwithMissingResponsibleParties,\r\n };\r\n})();\r\n","const planValidation = (function () {\r\n let planId;\r\n let workingSectionCase = 0;\r\n\r\n let assessmentValidationCheck = {\r\n //workingNotWorking: [],\r\n sectionsApplicable: [],\r\n servicesAndSupports: {},\r\n servicesAndSupportsChecked: {\r\n 34: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 35: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 36: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 37: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 38: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 39: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 40: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n },\r\n hasASectionApplicable: true,\r\n //workingSectionComplete: false,\r\n servicesAndSupportsError: false,\r\n complete: false\r\n };\r\n\r\n let IspValidationCheck = {\r\n complete: true,\r\n details: [],\r\n missingExperiences: [],\r\n missingReviews: [],\r\n planProgressSummary: false,\r\n outcome: [],\r\n selectedProviders: [],\r\n paidSupportsProviders: [],\r\n invalidProviders: [],\r\n contactSectionComplete: true,\r\n summaryRisksValidation: true\r\n };\r\n\r\n let contactsValidation = {\r\n importantPeople: true,\r\n importantPlaces: true,\r\n bestWayToConnect: true\r\n }\r\n\r\n const servicesAndSupportsQuestionIds = {\r\n noSupportQuestionIds: ['509', '526', '84', '95', '162', '500', '575'],\r\n paidSupportQuestionIds: [\r\n '631',\r\n '612',\r\n '637',\r\n '648',\r\n '663',\r\n '674',\r\n '689',\r\n '376',\r\n '395',\r\n '401',\r\n '412',\r\n '427',\r\n '438',\r\n '453',\r\n ],\r\n professionalReferralQuestionIds: [\r\n '693',\r\n '678',\r\n '667',\r\n '652',\r\n '641',\r\n '627',\r\n '616',\r\n '457',\r\n '442',\r\n '431',\r\n '416',\r\n '405',\r\n '391',\r\n '380',\r\n ],\r\n potentialOutcomeQuestionIds: [\r\n '510',\r\n '527',\r\n '541',\r\n '558',\r\n '576',\r\n '589',\r\n '85',\r\n '96',\r\n '163',\r\n '196',\r\n '242',\r\n '267',\r\n '336',\r\n '501',\r\n ],\r\n additionalSupportQuestionIds: {\r\n naturalSupportQuestionIds: [\r\n '624',\r\n '613',\r\n '638',\r\n '649',\r\n '664',\r\n '675',\r\n '690',\r\n '377',\r\n '388',\r\n '402',\r\n '413',\r\n '428',\r\n '439',\r\n '454',\r\n ],\r\n technologyQuestionIds: [\r\n '614',\r\n '625',\r\n '639',\r\n '650',\r\n '665',\r\n '676',\r\n '691',\r\n '378',\r\n '389',\r\n '403',\r\n '414',\r\n '429',\r\n '440',\r\n '455',\r\n ],\r\n communityQuestionIds: [\r\n '615',\r\n '626',\r\n '640',\r\n '651',\r\n '666',\r\n '677',\r\n '692',\r\n '379',\r\n '390',\r\n '404',\r\n '415',\r\n '430',\r\n '441',\r\n '456',\r\n ],\r\n },\r\n };\r\n\r\n function setPlanId(newPlanId) {\r\n planId = newPlanId;\r\n }\r\n \r\n //* TOOLTIPS\r\n function createTooltip(message, attachedDiv) {\r\n attachedDiv.classList.add('tooltip');\r\n \r\n const tooltipText = document.createElement('div');\r\n tooltipText.classList.add('tooltiptext');\r\n tooltipText.innerHTML = message;\r\n \r\n attachedDiv.addEventListener('mousemove', event => {\r\n const x = event.clientX;\r\n const y = event.clientY;\r\n \r\n tooltipText.style.left = `${x}px`;\r\n tooltipText.style.top = `${y}px`;\r\n });\r\n \r\n attachedDiv.appendChild(tooltipText);\r\n }\r\n \r\n //* ASSESSMENT INITIAL CHECK\r\n function returnAssessmentValidationData() {\r\n return assessmentValidationCheck;\r\n }\r\n\r\n async function getAssessmentValidation(planId) {\r\n // reset the values of the validation for each consumer\r\n assessmentValidationCheck = {\r\n //workingNotWorking: [],\r\n sectionsApplicable: [],\r\n servicesAndSupports: {},\r\n servicesAndSupportsChecked: {\r\n 34: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 35: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 36: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 37: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 38: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 39: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 40: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n },\r\n hasASectionApplicable: true,\r\n //workingSectionComplete: false,\r\n servicesAndSupportsError: false,\r\n complete: false\r\n };\r\n // Gathers the data from the database\r\n servicesAndSupportsData = await planValidationAjax.getAssessmentValidationData(planId);\r\n \r\n // WORKING/NOT WORKING\r\n // assessmentValidationCheck.workingNotWorking = servicesAndSupportsData.workingNotWorking;\r\n // workingSectionCheck(assessmentValidationCheck);\r\n \r\n // SECTIONS APPLICABLE\r\n // check each section fo rthe plan and see if any are selected, if at least one is selected, return true\r\n assessmentValidationCheck.sectionsApplicable = servicesAndSupportsData.sectionsApplicable;\r\n let hasASectionApplicable = assessmentValidationCheck.sectionsApplicable.some(\r\n obj => obj.applicable === 'Y',\r\n );\r\n\r\n // In the case the ANYW_ISP_Sections_Applicable table is missing the planId\r\n if (assessmentValidationCheck.sectionsApplicable.length === 0) {\r\n hasASectionApplicable = true;\r\n }\r\n \r\n // if no section is checked, set value to false\r\n if (!hasASectionApplicable) {\r\n assessmentValidationCheck.hasASectionApplicable = false;\r\n }\r\n \r\n // SERVICES AND SUPPORTS\r\n // Count occurrences of assessmentAreaId in each service and supports category\r\n assessmentValidationCheck.servicesAndSupports.additionalSupportCounts = countOccurrences(servicesAndSupportsData.additionalSupport);\r\n assessmentValidationCheck.servicesAndSupports.paidSupportCounts = countOccurrences(servicesAndSupportsData.paidSupport);\r\n assessmentValidationCheck.servicesAndSupports.professionalReferralCounts = countOccurrences(servicesAndSupportsData.professionalReferral);\r\n assessmentValidationCheck.servicesAndSupports.potentialOutcomeCounts = countOccurrences(servicesAndSupportsData.assessmentOutcomes);\r\n \r\n // check if all sections are complete\r\n allAssessmentAreasComplete(assessmentValidationCheck);\r\n \r\n return assessmentValidationCheck;\r\n }\r\n \r\n function allAssessmentAreasComplete(assessmentValidationCheck) {\r\n if (assessmentValidationCheck.hasASectionApplicable === true && assessmentValidationCheck.servicesAndSupportsError === false) {\r\n assessmentValidationCheck.complete = true;\r\n } else {\r\n assessmentValidationCheck.complete = false;\r\n }\r\n \r\n return assessmentValidationCheck;\r\n }\r\n \r\n // ASSESSMENT DATA UPDATE CHECK\r\n function updatedAssessmenteValidation() {\r\n // const workingAlertDivCase1 = document.getElementById('workingAlert1');\r\n //const workingAlertDivCase2 = document.getElementById('workingAlert2');\r\n const tocAlertDiv = document.getElementById('tocAlert');\r\n const tocMobileAlertDiv = document.getElementById('tocAlertMobile');\r\n const navAlertDiv = document.getElementById('navAlertAssessment');\r\n \r\n //Check working/ not working section\r\n //workingSectionCheck(assessmentValidationCheck);\r\n \r\n //check sections applicable\r\n tocAssessmentCheck(assessmentValidationCheck);\r\n \r\n //Check services and supports\r\n servicesAndSupportsAllVisibleSectionsCheck(assessmentValidationCheck);\r\n updateTocSectionHeaders(assessmentValidationCheck);\r\n\r\n //Check status of Assessment page\r\n allAssessmentAreasComplete(assessmentValidationCheck);\r\n \r\n // Set alert divs display value\r\n // If a section is not applied, show the alerts in the Table of Contents and the Nav\r\n if (!assessmentValidationCheck.hasASectionApplicable) {\r\n if (tocAlertDiv) {\r\n tocAlertDiv.style.display = 'flex';\r\n }\r\n if (tocMobileAlertDiv) {\r\n tocMobileAlertDiv.style.display = 'flex';\r\n }\r\n } else {\r\n if (tocAlertDiv) {\r\n tocAlertDiv.style.display = 'none';\r\n }\r\n if (tocMobileAlertDiv) {\r\n tocMobileAlertDiv.style.display = 'none';\r\n }\r\n }\r\n \r\n // If the working/not working section does not have a completed row, show the alert\r\n // if (!assessmentValidationCheck.workingSectionComplete) {\r\n // if (workingSectionCase === 1) {\r\n // if (workingAlertDivCase1) {\r\n // workingAlertDivCase1.style.display = 'inline-block';\r\n // workingAlertDivCase2.style.display = 'none';\r\n // }\r\n // }\r\n // else if (workingSectionCase === 2) {\r\n // if (workingAlertDivCase2) {\r\n // workingAlertDivCase2.style.display = 'inline-block';\r\n // workingAlertDivCase1.style.display = 'none';\r\n // }\r\n // }\r\n // } else {\r\n // if (workingAlertDivCase1) {\r\n // workingAlertDivCase1.style.display = 'none';\r\n // }\r\n // if (workingAlertDivCase2) {\r\n // workingAlertDivCase2.style.display = 'none';\r\n // }\r\n // }\r\n \r\n // If the assessment page has an error, show the nav alert\r\n if (assessmentValidationCheck.complete === false) {\r\n if (navAlertDiv) {\r\n navAlertDiv.style.display = 'flex';\r\n }\r\n } else {\r\n if (navAlertDiv) {\r\n navAlertDiv.style.display = 'none';\r\n }\r\n }\r\n \r\n return assessmentValidationCheck;\r\n }\r\n \r\n // ASSESSMENT WORKING/NOT WORKING\r\n // function workingSectionCheck(assessmentValidationCheck) {\r\n // const groupedByRow = {};\r\n // const hasValue605Array = [];\r\n // const hasValue606Array = [];\r\n\r\n // // Group objects by row\r\n // assessmentValidationCheck.workingNotWorking.forEach(obj => {\r\n // if (!groupedByRow[obj.answerRow]) {\r\n // groupedByRow[obj.answerRow] = [];\r\n // }\r\n // groupedByRow[obj.answerRow].push(obj);\r\n // });\r\n\r\n // // Check for Question 607 within each row having values for 605 or 606\r\n // for (const row in groupedByRow) {\r\n // let hasValue605 = false;\r\n // let hasValue606 = false;\r\n // let hasValue607 = false;\r\n\r\n // groupedByRow[row].forEach(obj => {\r\n // if (obj.questionNumber === \"Question 605\" && obj.answer) {\r\n // hasValue605 = true;\r\n // }\r\n // if (obj.questionNumber === \"Question 606\" && obj.answer) {\r\n // hasValue606 = true;\r\n // }\r\n // if (obj.questionNumber === \"Question 607\" && obj.answer) {\r\n // hasValue607 = true;\r\n // }\r\n // });\r\n\r\n // // If either 605 or 606 has value, then 607 must also have a value\r\n // if ((hasValue605 || hasValue606) && !hasValue607) {\r\n // assessmentValidationCheck.workingSectionComplete = false;\r\n // workingSectionCase = 2; \r\n // return assessmentValidationCheck;\r\n // }\r\n\r\n // // Check if all three questions are blank\r\n // if (!hasValue605 && !hasValue606) {\r\n // assessmentValidationCheck.workingSectionComplete = false;\r\n // workingSectionCase = 2;\r\n // return assessmentValidationCheck;\r\n // }\r\n\r\n // hasValue605Array.push(hasValue605);\r\n // hasValue606Array.push(hasValue606);\r\n // }\r\n\r\n // // Check if there's at least one row with both 605 and 606 having values\r\n // const hasValue605 = hasValue605Array.some(val => val);\r\n // const hasValue606 = hasValue606Array.some(val => val);\r\n // if (!hasValue605 || !hasValue606) {\r\n // assessmentValidationCheck.workingSectionComplete = false;\r\n // workingSectionCase = 1;\r\n // return assessmentValidationCheck;\r\n // }\r\n\r\n // assessmentValidationCheck.workingSectionComplete = true;\r\n // workingSectionCase = 0; // Set workingSectionCase to 0 if all conditions pass\r\n // return assessmentValidationCheck;\r\n // }\r\n\r\n function returnWorkingSectionCaseValue() {\r\n return workingSectionCase;\r\n }\r\n\r\n async function updateAnswerWorkingSection(planId) {\r\n const check = await getAssessmentValidation(planId);\r\n\r\n //workingSectionCheck(check);\r\n \r\n // checks entire assessments for validation errors\r\n planValidation.updatedAssessmenteValidation();\r\n //return assessmentValidationCheck;\r\n }\r\n \r\n // ASSESSMENT TABLE OF CONTENTS\r\n function tocAssessmentCheck(assessmentValidationCheck) {\r\n const hasASectionApplicable = assessmentValidationCheck.sectionsApplicable.some(\r\n obj => obj.applicable === 'Y',\r\n );\r\n \r\n if (hasASectionApplicable) {\r\n assessmentValidationCheck.hasASectionApplicable = true;\r\n } else {\r\n assessmentValidationCheck.hasASectionApplicable = false;\r\n }\r\n \r\n return assessmentValidationCheck;\r\n }\r\n\r\n function updateTocSectionHeaders(assessmentValidationCheck) {\r\n for (let id = 34; id <= 40; id++) {\r\n let tocSectionHeader = document.getElementById(`${id}alert`);\r\n let paidSupportCount = assessmentValidationCheck.servicesAndSupports.paidSupportCounts[id] || 0;\r\n let additionalSupportCount = assessmentValidationCheck.servicesAndSupports.additionalSupportCounts[id] || 0;\r\n let professionalReferralCounts = assessmentValidationCheck.servicesAndSupports.professionalReferralCounts[id] || 0;\r\n let potentialOutcomeCount = assessmentValidationCheck.servicesAndSupports.potentialOutcomeCounts[id] || 0;\r\n \r\n if (\r\n (assessmentValidationCheck.servicesAndSupportsChecked[id].paidSupport && paidSupportCount === 0) ||\r\n ((assessmentValidationCheck.servicesAndSupportsChecked[id].naturalSupport || assessmentValidationCheck.servicesAndSupportsChecked[id].technology || assessmentValidationCheck.servicesAndSupportsChecked[id].communityResource) && additionalSupportCount === 0) ||\r\n (assessmentValidationCheck.servicesAndSupportsChecked[id].professionalReferral && professionalReferralCounts === 0) ||\r\n (assessmentValidationCheck.servicesAndSupportsChecked[id].potentialOutcome && potentialOutcomeCount === 0)\r\n ) {\r\n if (tocSectionHeader) {\r\n tocSectionHeader.style.display = 'inline-block';\r\n }\r\n } else {\r\n if (tocSectionHeader) {\r\n tocSectionHeader.style.display = 'none';\r\n }\r\n }\r\n }\r\n \r\n return assessmentValidationCheck;\r\n }\r\n \r\n // ASSESSMENT SERVICES AND SUPPORTS\r\n function servicesAndSupportsBtnCheck() {\r\n const idsToCheck = [34, 35, 36, 37, 38, 39, 40];\r\n\r\n idsToCheck.forEach(id => {\r\n let paidSupportBtn = document.getElementById(`paidSupportBtn${id}`);\r\n let additionalSupportBtn = document.getElementById(`additionalSupportBtn${id}`);\r\n let profRefBtn = document.getElementById(`profRefBtn${id}`);\r\n let outcomesBtn = document.getElementById(`outcomesBtn${id}`);\r\n\r\n // number of services and supports attached to each section\r\n let paidSupportCount = assessmentValidationCheck.servicesAndSupports.paidSupportCounts[id] || 0;\r\n let additionalSupportCount = assessmentValidationCheck.servicesAndSupports.additionalSupportCounts[id] || 0;\r\n let professionalReferralCounts = assessmentValidationCheck.servicesAndSupports.professionalReferralCounts[id] || 0;\r\n let potentialOutcomeCount = assessmentValidationCheck.servicesAndSupports.potentialOutcomeCounts[id] || 0;;\r\n\r\n // returns true if the section has been checked \r\n let paidSupportChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].paidSupport;\r\n let additionalSupportChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].naturalSupport || assessmentValidationCheck.servicesAndSupportsChecked[id].technology || assessmentValidationCheck.servicesAndSupportsChecked[id].communityResource;\r\n let professionalReferralChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].professionalReferral;\r\n let potentialOutcomeChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].potentialOutcome;\r\n\r\n // Add error class to buttons that are checked and have 0 outcomes attached to them\r\n // if the btn already has the error and no longer meets criteria to contain the error class, remove the error class\r\n const sections = [\r\n {\r\n checkboxChecked: paidSupportChecked,\r\n count: paidSupportCount,\r\n button: paidSupportBtn,\r\n errorText: 'Add Paid Support',\r\n },\r\n {\r\n checkboxChecked: additionalSupportChecked,\r\n count: additionalSupportCount,\r\n button: additionalSupportBtn,\r\n errorText: 'Add Additional Support',\r\n },\r\n {\r\n checkboxChecked: professionalReferralChecked,\r\n count: professionalReferralCounts,\r\n button: profRefBtn,\r\n errorText: 'Add Professional Referral',\r\n },\r\n {\r\n checkboxChecked: potentialOutcomeChecked,\r\n count: potentialOutcomeCount,\r\n button: outcomesBtn,\r\n errorText: 'Add Outcome',\r\n },\r\n ];\r\n \r\n assessmentValidationCheck.servicesAndSupportsError = false;\r\n \r\n sections.forEach(section => {\r\n if (section.checkboxChecked && section.count === 0) {\r\n section.button.classList.add('error');\r\n assessmentValidationCheck.servicesAndSupportsError = true;\r\n } else {\r\n if (section.button.classList.contains('error')) {\r\n section.button.classList.remove('error');\r\n }\r\n section.button.innerHTML = `${section.errorText} (${section.count})`;\r\n }\r\n });\r\n\r\n });\r\n\r\n // if any of the classes have an error then add the alert if it is not already there\r\n if (assessmentValidationCheck.servicesAndSupportsError === true) {\r\n assessmentValidationCheck.complete = false;\r\n }\r\n\r\n return assessmentValidationCheck;\r\n }\r\n\r\n function servicesAndSupportsAllVisibleSectionsCheck(assessmentValidationCheck) {\r\n const allSections = document.getElementsByClassName('assessment__section');\r\n\r\n // Get only the sections that are selected on the assessment\r\n const applicableSections = Array.from(allSections).filter(section => !section.classList.contains('nonApplicable'));\r\n \r\n // Check if any of the buttons within the applicable sections have the class \"error\"\r\n const hasError = Array.from(applicableSections).some(section => {\r\n const buttons = section.querySelectorAll('.sectionFooter .btn.btn--secondary.btn--contained');\r\n return Array.from(buttons).some(button => button.classList.contains('error'));\r\n });\r\n \r\n if (hasError) {\r\n assessmentValidationCheck.servicesAndSupportsError = true;\r\n } else {\r\n // No buttons with the class \"error\" found\r\n assessmentValidationCheck.servicesAndSupportsError = false;\r\n }\r\n\r\n return assessmentValidationCheck;\r\n }\r\n\r\n function findQuestionIdCategory(questionId) {\r\n if (servicesAndSupportsQuestionIds.noSupportQuestionIds.includes(questionId)) {\r\n return 'noSupport';\r\n } else if (servicesAndSupportsQuestionIds.paidSupportQuestionIds.includes(questionId)) {\r\n return 'paidSupport';\r\n } else if (\r\n servicesAndSupportsQuestionIds.professionalReferralQuestionIds.includes(questionId)\r\n ) {\r\n return 'professionalReferral';\r\n } else if (servicesAndSupportsQuestionIds.potentialOutcomeQuestionIds.includes(questionId)) {\r\n return 'potentialOutcome';\r\n } else if (\r\n servicesAndSupportsQuestionIds.additionalSupportQuestionIds.naturalSupportQuestionIds.includes(\r\n questionId,\r\n )\r\n ) {\r\n return 'naturalSupport';\r\n } else if (\r\n servicesAndSupportsQuestionIds.additionalSupportQuestionIds.technologyQuestionIds.includes(\r\n questionId,\r\n )\r\n ) {\r\n return 'technology';\r\n } else if (\r\n servicesAndSupportsQuestionIds.additionalSupportQuestionIds.communityQuestionIds.includes(\r\n questionId,\r\n )\r\n ) {\r\n return 'communityResource';\r\n } else {\r\n return 'Variable not found in the object';\r\n }\r\n }\r\n \r\n function countOccurrences(array) {\r\n const counts = {};\r\n array.forEach(item => {\r\n const assessmentAreaId = item.assessmentAreaId;\r\n counts[assessmentAreaId] = (counts[assessmentAreaId] || 0) + 1;\r\n });\r\n return counts;\r\n }\r\n\r\n function updateSectionApplicability(sectionID, applied) {\r\n // Find the object with matching sectionId and obtain the index\r\n const matchingIndex = assessmentValidationCheck.sectionsApplicable.findIndex(\r\n obj => obj.sectionId === sectionID,\r\n );\r\n \r\n // Update the value if a match is found\r\n if (matchingIndex !== -1) {\r\n assessmentValidationCheck.sectionsApplicable[matchingIndex].applicable = applied;\r\n // Toggle the value between 'Y' and 'N'\r\n assessmentValidationCheck.sectionsApplicable[matchingIndex].applicable = applied;\r\n (assessmentValidationCheck.sectionsApplicable[matchingIndex]).applicable === 'Y' ? 'N' : 'Y';\r\n }\r\n \r\n // checks entire assessments for validation errors\r\n planValidation.updatedAssessmenteValidation(assessmentValidationCheck);\r\n }\r\n\r\n function updateAssessmentValidationSection(key, value) {\r\n assessmentValidationCheck[key] = value;\r\n\r\n updatedAssessmenteValidation();\r\n }\r\n\r\n function updateAssessmentValidationProperty(sectionId, questionIdCategory, value) {\r\n assessmentValidationCheck.servicesAndSupportsChecked[sectionId][questionIdCategory] = value;\r\n\r\n updatedAssessmenteValidation();\r\n }\r\n\r\n //* ISP\r\n async function ISPValidation(planId) {\r\n // Set state of check to neutral before running to remove cached data\r\n IspValidationCheck = {\r\n complete: true,\r\n details: [],\r\n missingExperiences: [],\r\n missingReviews: [],\r\n planProgressSummary: false,\r\n outcome: [],\r\n selectedProviders: [],\r\n paidSupportsProviders: [],\r\n invalidProviders: []\r\n };\r\n\r\n outcomesData = await planOutcomesAjax.getPlanSpecificOutcomes({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n \r\n IspValidationCheck.outcomesData = outcomesData;\r\n\r\n for (const item of outcomesData.planOutcomeExperiences) {\r\n for (const responsibility of item.planExperienceResponsibilities) {\r\n const responsibleProvider = responsibility.responsibleProvider;\r\n (IspValidationCheck.selectedProviders).push(responsibleProvider);\r\n }\r\n }\r\n\r\n const paidSupportsIds = outcomesData.paidSupports.map(obj => obj.providerId);\r\n IspValidationCheck.paidSupportsProviders = paidSupportsIds;\r\n\r\n const invalidProviders = (IspValidationCheck.selectedProviders).filter(number => \r\n number !== \"\" && \r\n number !== \"%\" && \r\n !(IspValidationCheck.paidSupportsProviders).includes(number) && \r\n !IspValidationCheck.outcomesData.planOutcomeExperiences.some(outcome =>\r\n Object.values(outcome.planExperienceResponsibilities).some(responsibility =>\r\n responsibility.responsibleProvider === number &&\r\n responsibility.isSalesforceLocation === 'True'\r\n )\r\n )\r\n );\r\n IspValidationCheck.invalidProviders = invalidProviders;\r\n \r\n // get a list of the unique outcomeIds\r\n var uniqueOutcomeIds = Array.from(new Set(outcomesData.planOutcome.map(obj => obj.outcomeId)));\r\n \r\n // if any outcome is missing the 'Details to Know' or 'Outcome' section, return false on the validation check\r\n for (let i = 0; i < outcomesData.planOutcome.length; i++) {\r\n if (outcomesData.planOutcome[i].details === '') {\r\n IspValidationCheck.details.push(outcomesData.planOutcome[i].outcomeId);\r\n }\r\n if (outcomesData.planOutcome[i].outcome === '') {\r\n IspValidationCheck.outcome.push(outcomesData.planOutcome[i].outcomeId);\r\n }\r\n }\r\n \r\n for (let i = 0; i < outcomesData.planReviews.length; i++) {\r\n if (outcomesData.planReviews[i].whenToCheckIn === '') {\r\n IspValidationCheck.missingReviews.push(outcomesData.planReviews[i].outcomeId);\r\n //IspValidationCheck.complete = false;\r\n }\r\n }\r\n\r\n // makes list of all the outcomeIds from the plan outcome experiences and reviews\r\n const outcomeExperienceOutcomeIds = outcomesData.planOutcomeExperiences.map(\r\n obj => obj.outcomeId,\r\n );\r\n const outcomeReviewOutcomeIds = outcomesData.planReviews.map(obj => obj.outcomeId);\r\n \r\n // checks for outcomeIds that may be missing in experiences and reviews (if values are returned, that outcome is missing data)\r\n const missingOutcomeExperiences = uniqueOutcomeIds.filter(\r\n num => !outcomeExperienceOutcomeIds.includes(num),\r\n );\r\n const missingOutcomeReviews = uniqueOutcomeIds.filter(\r\n num => !outcomeReviewOutcomeIds.includes(num),\r\n );\r\n \r\n IspValidationCheck.missingExperiences = missingOutcomeExperiences;\r\n // IspValidationCheck.missingReviews = missingOutcomeReviews;\r\n IspValidationCheck.missingReviews.push(...missingOutcomeReviews) ;\r\n \r\n // if an outcome is missing a review or experience, return false on the validation check\r\n if (missingOutcomeReviews.length > 0 || missingOutcomeExperiences.length > 0) {\r\n IspValidationCheck.complete = false;\r\n }\r\n \r\n // check the plan progress summary value\r\n if (outcomesData.planProgressSummary[0]) {\r\n IspValidationCheck.planProgressSummary = (outcomesData.planProgressSummary[0].progressSummary !== '');\r\n }\r\n\r\n if (IspValidationCheck.outcomesData.planOutcome.length < 1) {\r\n IspValidationCheck.planProgressSummary = true;\r\n }\r\n\r\n // if there are invalid providers, return false on the validaton check\r\n if (IspValidationCheck.invalidProviders.length > 0) {\r\n IspValidationCheck.complete = false;\r\n } \r\n \r\n // checks if all required data on the page has been filled out\r\n checkAllOutcomesComplete(IspValidationCheck);\r\n\r\n ispValidationContactCheck();\r\n \r\n await summaryRisksValidationCheck();\r\n\r\n //IspValidationCheck = validationCheck;\r\n return IspValidationCheck;\r\n }\r\n\r\n function returnIspValidation() {\r\n return IspValidationCheck;\r\n }\r\n // sets the alerts status based on the completion of the ISP outcomes data\r\n function updatedIspOutcomesSetAlerts(validationCheck) {\r\n //checkExperienceProviders(validationCheck);\r\n checkAllOutcomesComplete(validationCheck);\r\n//\r\n // ISP Main Nav and ISP Outcomes Tab \r\n const ISPAlertDiv = document.getElementById('navAlertISP');\r\n const outcomesNav = document.getElementById('outcomesAlert');\r\n\r\n //if (validationCheck.complete === true) {\r\n if (validationCheck.missingExperiences.length > 0 || validationCheck.missingReviews.length > 0) {\r\n outcomesNav.style.display = 'block';\r\n ISPAlertDiv.style.display = 'flex';\r\n } else {\r\n outcomesNav.style.display = 'none';\r\n ISPAlertDiv.style.display = 'none';\r\n }\r\n\r\n\r\n return validationCheck;\r\n }\r\n \r\n // Checks if all fields on the ISP outcomes are completed\r\n function checkAllOutcomesComplete(validationCheck) {\r\n // if (validationCheck.outcomesData.planOutcome.length > 0) {\r\n // validationCheck.planProgressSummary = true;\r\n // }\r\n \r\n validationCheck.complete =\r\n validationCheck.details.length === 0 &&\r\n validationCheck.missingExperiences.length === 0 &&\r\n validationCheck.missingReviews.length === 0 &&\r\n validationCheck.planProgressSummary &&\r\n validationCheck.outcome.length === 0 &&\r\n //outcomesData.planOutcome.length > 0 &&\r\n validationCheck.invalidProviders.length === 0;\r\n\r\n return validationCheck;\r\n }\r\n \r\n // ISP DETAILS TO KNOW\r\n // adds the outcomeId to a list of unfinished outcomes if the value is an empty string, if the value is not empty it will remove that id from the list\r\n function updateOutcomeDetails(outcomeId, validationCheck, emptyString) {\r\n if (emptyString) {\r\n validationCheck.details.push(outcomeId);\r\n } else {\r\n // removes this outcome id from the details array in the validation check\r\n validationCheck.details = validationCheck.details.filter(id => id !== outcomeId);\r\n }\r\n \r\n return validationCheck;\r\n }\r\n\r\n // ISP OUTCOME FIELD\r\n // adds the outcomeId to a list of unfinished outcomes if the value is an empty string, if the value is not empty it will remove that id from the list\r\n function updateOutcome(outcomeId, validationCheck, emptyString) {\r\n if (emptyString) {\r\n validationCheck.outcome.push(outcomeId);\r\n } else {\r\n // Remove this outcome ID from the outcome array in the validation check\r\n validationCheck.outcome = validationCheck.outcome.filter(id => id !== outcomeId);\r\n }\r\n \r\n return validationCheck;\r\n }\r\n\r\n // ISP REVIEWS\r\n //checks if the outcome has a review, if not, set the alert next to the add review button\r\n function reviewsValidationCheck(validationCheck, outcomeId, alertDiv) {\r\n const display = validationCheck.missingReviews.includes(outcomeId) ? 'flex' : 'none';\r\n alertDiv.style.display = display;\r\n }\r\n \r\n //ISP EXPERIENCES\r\n //checks if the outcome has an experience, if not, set the alert next to the add experience button\r\n function experiencesValidationCheck(validationCheck, outcomeId, alertDiv) {\r\n // Checks each experience and compares repsonsible party Ids with the invalid providers array\r\n function checkResponsibleProvider(outcomesData, outcomeID, presetArray) {\r\n for (const planOutcomeExperience of outcomesData.planOutcomeExperiences) {\r\n if (planOutcomeExperience.outcomeId === outcomeID) {\r\n for (const experienceResponsibility of planOutcomeExperience.planExperienceResponsibilities) {\r\n if (presetArray.includes(experienceResponsibility.responsibleProvider)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n const invalidProvidersCheck = checkResponsibleProvider(validationCheck.outcomesData, outcomeId, validationCheck.invalidProviders);\r\n\r\n const display = (validationCheck.missingExperiences.includes(outcomeId) || invalidProvidersCheck) ? 'flex' : 'none';\r\n alertDiv.style.display = display;\r\n //validationCheck.invalidProviders.length > 0\r\n }\r\n\r\n //ISP CONTACTS\r\n async function contactsValidationCheck() {\r\n const contactData = await planValidationAjax.getContactValidationData(planId);\r\n\r\n const bestWayToConnect = contactData[0]?.bestWayToConnect || '';\r\n \r\n const importantPeopleData = contactData.map(item => ({\r\n type: item.importantPeopleType,\r\n typeOther: item.importantPeopleTypeOther,\r\n }));\r\n \r\n const importantPlacesData = contactData.map(item => ({\r\n type: item.importantPlacesType,\r\n typeOther: item.importantPlacesTypeOther,\r\n }));\r\n\r\n checkImportantPeople(importantPeopleData);\r\n checkImportantPlaces(importantPlacesData);\r\n checkBestWayToConnect(bestWayToConnect);\r\n\r\n checkContactsValidation();\r\n }\r\n\r\n function checkImportantPeople(importantPeopleData) {\r\n // Loop through each item in the array\r\n for (const contact of importantPeopleData) {\r\n if (contact.type === 'Other' && contact.typeOther === '') {\r\n contactsValidation.importantPeople = false;\r\n return;\r\n }\r\n }\r\n\r\n contactsValidation.importantPeople = true;\r\n }\r\n\r\n function checkImportantPlaces(importantPlacesData) {\r\n // Loop through each item in the array\r\n for (const place of importantPlacesData) {\r\n if (place.type === 'Other' && place.typeOther === '') {\r\n contactsValidation.importantPlaces = false;\r\n return;\r\n }\r\n }\r\n\r\n contactsValidation.importantPlaces = true;\r\n }\r\n\r\n function checkBestWayToConnect(bestWayToConnect) {\r\n if (bestWayToConnect === '') {\r\n contactsValidation.bestWayToConnect = false;\r\n return;\r\n }\r\n\r\n contactsValidation.bestWayToConnect = true;\r\n }\r\n\r\n function getContactValidation() {\r\n return contactsValidation;\r\n }\r\n\r\n function checkContactsValidation() {\r\n const ISPAlertDiv = document.getElementById('navAlertISP');\r\n const alertDiv = document.querySelector('.contactsAlertDiv');\r\n const bestWayToConnectAlertDiv = document.querySelector('.bestWaytoConnectAlert')\r\n\r\n // Check if the alertDiv exists and if any validation condition is false\r\n if (alertDiv && (!contactsValidation.importantPeople || !contactsValidation.importantPlaces || !contactsValidation.bestWayToConnect)) {\r\n alertDiv.style.display = 'flex';\r\n } else if (alertDiv) {\r\n alertDiv.style.display = 'none';\r\n }\r\n\r\n if (bestWayToConnectAlertDiv && !contactsValidation.bestWayToConnect) {\r\n bestWayToConnectAlertDiv.style.display = 'flex';\r\n } else if (bestWayToConnectAlertDiv) {\r\n bestWayToConnectAlertDiv.style.display = 'none';\r\n }\r\n\r\n if (ISPAlertDiv && (!contactsValidation.importantPeople || !contactsValidation.importantPlaces || !contactsValidation.bestWayToConnect)) {\r\n ISPAlertDiv.style.display = 'flex';\r\n } else if (ISPAlertDiv) {\r\n ISPAlertDiv.style.display = 'none';\r\n }\r\n\r\n // sets isp validation check variable value regardless of UI\r\n ispValidationContactCheck();\r\n }\r\n\r\n function ispValidationContactCheck() {\r\n if (!contactsValidation.importantPeople || !contactsValidation.importantPlaces || !contactsValidation.bestWayToConnect) {\r\n IspValidationCheck.contactSectionComplete = false;\r\n } else {\r\n IspValidationCheck.contactSectionComplete = true;\r\n }\r\n }\r\n\r\n // checks if the provider selected for the experience is also in the paid supports\r\n function checkExperienceProviders(validationCheck) {\r\n // Extract the first values from the second array objects\r\n const secondValues = (validationCheck.paidSupportsProviders).map(obj => obj.value);\r\n\r\n // Create a list of values from the first array that don't exist in the second array\r\n const invalidProviders = validationCheck.selectedProviders.filter(value =>\r\n value !== '' &&\r\n value !== '%' &&\r\n !secondValues.includes(value) &&\r\n !validationCheck.outcomesData.planOutcomeExperiences.some(outcome =>\r\n Object.values(outcome.planExperienceResponsibilities).some(responsibility =>\r\n responsibility.responsibleProvider === value &&\r\n responsibility.isSalesforceLocation === 'True'\r\n )\r\n )\r\n ); \r\n \r\n validationCheck.invalidProviders = invalidProviders;\r\n return validationCheck;\r\n }\r\n\r\n function checkExperiencesAfterAddingNewPaidSupport(validationCheck) {\r\n // Find all divs with classname 'experiencesAlert'\r\n const divs = document.querySelectorAll('.experiencesAlert');\r\n\r\n // Loop over the resulting array and run your function on each div\r\n if (divs.length > 0) {\r\n divs.forEach(div => {\r\n // Extract the number from the id using a regular expression\r\n const regex = /experienceAlert(\\d{1,5})/;\r\n const matches = div.id.match(regex);\r\n const number = matches ? Number(matches[1]) : null;\r\n\r\n // Check each div to see if the alert is needed or not\r\n experiencesValidationCheck(validationCheck, number, div);\r\n });\r\n }\r\n }\r\n\r\n // Summary Risks\r\n async function summaryRisksValidationCheck() {\r\n let summaryValidationData = await planValidationAjax.getSummaryRiskValidationData(planId);\r\n \r\n let groupedByQuestionSetId = summaryValidationData.reduce((acc, obj) => {\r\n const key = obj.QuestionSetId;\r\n (acc[key] ? acc[key] : (acc[key] = [])).push(obj);\r\n return acc;\r\n }, {});\r\n \r\n // Check if any answer in the group is null or empty\r\n function hasNullOrEmptyAnswer(group) {\r\n return group.some(item => item.Answer === '' || item.Answer === null || item.Answer === '%');\r\n }\r\n \r\n // Iterate over each group and perform the necessary checks\r\n for (let group of Object.values(groupedByQuestionSetId)) {\r\n // Check if there is at least one non-empty answer for the specified question text\r\n let hasNonEmptyAnswer = group.some(item => item.Answer !== '' && item.QuestionText === 'What is the risk, what it looks like, where it occurs:');\r\n if (hasNonEmptyAnswer) {\r\n // If there's a non-empty answer for the specified question text,\r\n // check if any other answer in the group is null or empty\r\n let hasNullOrEmpty = hasNullOrEmptyAnswer(group);\r\n if (hasNullOrEmpty) {\r\n // If any answer is null or empty, set the flag and exit the function\r\n IspValidationCheck.summaryRisksValidation = false;\r\n return;\r\n }\r\n }\r\n }\r\n \r\n // If no null or empty answers were found, set the flag to true\r\n IspValidationCheck.summaryRisksValidation = true;\r\n }\r\n \r\n\r\n function returnSummaryRisksValidation() {\r\n return IspValidationCheck.summaryRisksValidation;\r\n }\r\n\r\n function setSummaryRiskValidation(hasErrors) {\r\n IspValidationCheck.summaryRisksValidation = hasErrors;\r\n }\r\n\r\n async function alertCheckSummaryRisksValidation() {\r\n const ISPAlertDiv = document.getElementById('navAlertISP');\r\n const summaryAlertDiv = document.querySelector('.summaryAlertDiv');\r\n\r\n if (summaryAlertDiv && !IspValidationCheck.summaryRisksValidation) {\r\n summaryAlertDiv.style.display = 'flex';\r\n } else if (summaryAlertDiv) {\r\n summaryAlertDiv.style.display = 'none';\r\n }\r\n\r\n const isEverythingComplete = await ISPValidation(planId);\r\n\r\n if (ISPAlertDiv && (!isEverythingComplete.complete || !isEverythingComplete.contactSectionComplete || !isEverythingComplete.summaryRisksValidation)) {\r\n ISPAlertDiv.style.display = 'flex';\r\n } else if (ISPAlertDiv) {\r\n ISPAlertDiv.style.display = 'none';\r\n }\r\n }\r\n \r\n async function init(newPlanId) {\r\n planId = newPlanId;\r\n\r\n //await summaryRisksValidationCheck(planId);\r\n\r\n await contactsValidationCheck(planId);\r\n \r\n await ISPValidation(planId);\r\n \r\n await getAssessmentValidation(planId);\r\n }\r\n \r\n return {\r\n setPlanId,\r\n createTooltip,\r\n returnAssessmentValidationData,\r\n getAssessmentValidation,\r\n updateTocSectionHeaders,\r\n updatedAssessmenteValidation,\r\n updateSectionApplicability,\r\n updateAssessmentValidationSection,\r\n updateAssessmentValidationProperty,\r\n returnWorkingSectionCaseValue,\r\n ISPValidation,\r\n returnIspValidation,\r\n checkAllOutcomesComplete,\r\n updatedIspOutcomesSetAlerts,\r\n reviewsValidationCheck,\r\n experiencesValidationCheck,\r\n //workingSectionCheck,\r\n updateAnswerWorkingSection,\r\n tocAssessmentCheck,\r\n findQuestionIdCategory,\r\n servicesAndSupportsBtnCheck,\r\n updateOutcome,\r\n updateOutcomeDetails,\r\n checkExperienceProviders,\r\n checkExperiencesAfterAddingNewPaidSupport,\r\n contactsValidationCheck,\r\n getContactValidation,\r\n returnSummaryRisksValidation,\r\n setSummaryRiskValidation,\r\n alertCheckSummaryRisksValidation,\r\n summaryRisksValidationCheck,\r\n init,\r\n };\r\n })();","const planValidationAjax = (function () {\r\n async function getAssessmentValidationData(planId) {\r\n // string token, anywAssessmentId\r\n const retrieveData = {token: $.session.Token, planId}\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAssessmentValidationData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getAssessmentValidationDataResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getContactValidationData(planId) {\r\n const retrieveData = {token: $.session.Token, planId}\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getContactValidationData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n \r\n return data.getContactValidationDataResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getSummaryRiskValidationData(planId) {\r\n const retrieveData = {token: $.session.Token, planId}\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSummaryRiskValidationData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n \r\n return data.getSummaryRiskValidationDataResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n \r\n return {\r\n getAssessmentValidationData,\r\n getContactValidationData,\r\n getSummaryRiskValidationData\r\n };\r\n })();","var rosterAbsent = (function() {\r\n //-DATA------------------\r\n var absentReasons;\r\n var notificationTypes;\r\n //-DOM------------------\r\n var MASS_ABSENT_POPUP;\r\n // *absent form inputs\r\n var CONSUMERS_SELECTED_INPUT;\r\n var DATE_OF_ABSENSE_INPUT;\r\n var DATE_REPORTED_INPUT;\r\n var LOCATION_INPUT;\r\n var NOTIFICATION_DROPDOWN;\r\n var REPORTED_BY_INPUT;\r\n var REASON_DROPDOWN;\r\n var TIME_REPORTED_INPUT;\r\n // *absent form btns\r\n var SAVE_ABSENT_BTN;\r\n var DELETE_ABSENT_BTN;\r\n var CANCEL_ABSENT_BTN;\r\n // *action nav btns\r\n var doneBtn;\r\n var cancelBtn;\r\n //-VALUES------------------\r\n var absentLocation;\r\n // save/update\r\n var absenceDate;\r\n var consumerIdString;\r\n var dateReported;\r\n var locationId;\r\n var notificationId;\r\n var reportedBy;\r\n var resonId;\r\n var timeReported;\r\n // delete data\r\n var absentRecordId;\r\n var doPreSaveCheck = true;\r\n\r\n // Absent Save\r\n //---------------------------------------------\r\n function showPreSaveWarningPopup() {\r\n var preSaveWarningPopup = POPUP.build({\r\n header: 'The following consumers have an already existing record in either Outcomes or Day Services. Do you wish to proceed?'\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function(event) {\r\n doPreSaveCheck = false;\r\n SAVE_ABSENT_BTN.click();\r\n POPUP.hide(preSaveWarningPopup);\r\n }\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function() {\r\n POPUP.hide(preSaveWarningPopup);\r\n }\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n preSaveWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(preSaveWarningPopup);\r\n }\r\n function saveSingleAbsent() {\r\n var singleSaveData = {\r\n token: $.session.Token,\r\n absentReasonId: resonId === '%' ? '' : resonId,\r\n absentNotificationId: notificationId === '%' ? '' : notificationId,\r\n consumerIdString: consumerIdString,\r\n absenceDate: absenceDate,\r\n locationId: locationId,\r\n reportedBy: UTIL.removeUnsavableNoteText(reportedBy),\r\n timeReported: timeReported,\r\n dateReported: dateReported\r\n };\r\n var preSaveData = {\r\n token: $.session.Token,\r\n consumerIdString: consumerIdString,\r\n absentDate: absenceDate,\r\n locationId: locationId,\r\n };\r\n\r\n function updateAbsents() {\r\n roster2.refreshRosterList();\r\n var backBtn = document.querySelector('.sectionBackBtn');\r\n backBtn.click();\r\n }\r\n function checkAbsentPreSave(results) {\r\n if (results && results.length) {\r\n // show warning message\r\n showPreSaveWarningPopup()\r\n return;\r\n }\r\n\r\n absentAjax.oneLocationAbsentSave(singleSaveData, updateAbsents);\r\n }\r\n\r\n if (doPreSaveCheck) {\r\n absentAjax.absentPreSaveCheck(preSaveData, checkAbsentPreSave);\r\n } else {\r\n absentAjax.oneLocationAbsentSave(singleSaveData, updateAbsents);\r\n doPreSaveCheck = true;\r\n }\r\n }\r\n function saveMassAbsent() {\r\n var singleSaveData = {\r\n token: $.session.Token,\r\n absentReasonId: resonId === '%' ? '' : resonId,\r\n absentNotificationId: notificationId === '%' ? '' : notificationId,\r\n consumerIdString: consumerIdString,\r\n absenceDate: absenceDate,\r\n locationId: locationId,\r\n reportedBy: UTIL.removeUnsavableNoteText(reportedBy),\r\n timeReported: timeReported,\r\n dateReported: dateReported\r\n };\r\n\r\n absentAjax.oneLocationAbsentSave(singleSaveData, function() {\r\n roster2.refreshRosterList();\r\n });\r\n }\r\n\r\n // UTIL\r\n //---------------------------------------------\r\n async function getAbsentConsumers(locationId, absenceDate, callback) {\r\n try {\r\n let getConsumersByLocationAbsentResults = (await absentAjax.getConsumersByLocationAbsent(locationId, absenceDate)).getConsumersByLocationAbsentResult;\r\n getConsumersByLocationAbsentResults = JSON.parse(getConsumersByLocationAbsentResults);\r\n const absentConsumerIds = createAbsentConsumersObj(getConsumersByLocationAbsentResults);\r\n return absentConsumerIds;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n // absentAjax.getConsumersByLocationAbsent(locationId, absenceDate, function(results) {\r\n // var absentConsumerIds = createAbsentConsumersObj(results);\r\n // if (callback) callback(absentConsumerIds);\r\n // });\r\n }\r\n function getAbsentFormDropdownData(callback) {\r\n if (!notificationTypes || !absentReasons) {\r\n absentAjax.selectAbsentNotificationTypes(function(results) {\r\n notificationTypes = results;\r\n absentAjax.selectAbsentReasons(function(results) {\r\n absentReasons = results;\r\n if (callback) callback();\r\n });\r\n });\r\n } else {\r\n if (callback) callback();\r\n }\r\n }\r\n function createAbsentConsumersObj(results) {\r\n if (!results || results.length === 0) return {};\r\n\r\n var newObj = {};\r\n\r\n results.forEach(r => {\r\n if (!newObj[r.consumer_id]) newObj[r.consumer_id] = r.consumer_id;\r\n });\r\n\r\n return newObj;\r\n }\r\n function setSaveData(absentData) {\r\n if (!absentData) {\r\n var selectedLocationObj = roster2.getSelectedLocationObj();\r\n\r\n absentLocation = selectedLocationObj.locationName;\r\n absenceDate = UTIL.getTodaysDate();\r\n dateReported = UTIL.getTodaysDate();\r\n locationId = selectedLocationObj.locationId;\r\n notificationId = '%';\r\n reportedBy = `${$.session.LName}, ${$.session.Name}`;\r\n resonId = '%';\r\n timeReported = UTIL.getCurrentTime();\r\n\r\n return;\r\n }\r\n\r\n var rosterLocations = roster2.getRosterLocations();\r\n\r\n var data = absentData[0];\r\n var tempLocation = rosterLocations.filter(rl => rl.ID === data.locationId);\r\n var tempLocationName = tempLocation[0].Name;\r\n var tempLocationId = data.locationId;\r\n var tempDateOfAbsense = UTIL.formatDateToIso(data.dateOfAbsence.split(' ')[0]);\r\n var tempReportedBy = data.reportedby;\r\n var tempDatereported = UTIL.formatDateToIso(data.dateReported.split(' ')[0]);\r\n var tempTimereported = data.timereported;\r\n var tempReasonId = data.reasonId;\r\n var tempNotifiId = data.notificationId;\r\n\r\n absentRecordId = data.recordid;\r\n\r\n absentLocation = tempLocationName;\r\n absenceDate = tempDateOfAbsense;\r\n consumerIdString = data.consumerId;\r\n dateReported = tempDatereported;\r\n locationId = tempLocationId;\r\n notificationId = tempNotifiId;\r\n reportedBy = tempReportedBy;\r\n resonId = tempReasonId;\r\n timeReported = tempTimereported;\r\n }\r\n\r\n // Absent Form\r\n //---------------------------------------------\r\n function populateAbsentFormDropdowns(defaultValues) {\r\n var notifValue = defaultValues.notif;\r\n var reasonValue = defaultValues.reason;\r\n\r\n var notificationTypeData = notificationTypes.map(r => {\r\n return {\r\n value: r.notifid,\r\n text: r.notifdesc\r\n }\r\n });\r\n var reasonsData = absentReasons.map(r => {\r\n return {\r\n value: r.reasonid,\r\n text: r.reasondesc\r\n }\r\n });\r\n\r\n var defaultVal = {value: '%', text: ''};\r\n notificationTypeData.unshift(defaultVal);\r\n reasonsData.unshift(defaultVal);\r\n\r\n dropdown.populate(NOTIFICATION_DROPDOWN, notificationTypeData, notifValue);\r\n dropdown.populate(REASON_DROPDOWN, reasonsData, reasonValue);\r\n }\r\n function setupFormEvents(single) {\r\n REASON_DROPDOWN.addEventListener('change', event => {\r\n var selectedOpt = event.target.options[event.target.selectedIndex];\r\n resonId = selectedOpt.value;\r\n });\r\n NOTIFICATION_DROPDOWN.addEventListener('change', event => {\r\n var selectedOpt = event.target.options[event.target.selectedIndex];\r\n notificationId = selectedOpt.value;\r\n });\r\n DATE_OF_ABSENSE_INPUT.addEventListener('change', event => {\r\n absenceDate = event.target.value;\r\n });\r\n DATE_REPORTED_INPUT.addEventListener('change', event => {\r\n dateReported = event.target.value;\r\n });\r\n TIME_REPORTED_INPUT.addEventListener('change', event => {\r\n timeReported = event.target.value;\r\n });\r\n SAVE_ABSENT_BTN.addEventListener('click', () => {\r\n document.getElementById(\"absentSaveBtn\").disabled = true;\r\n if (!single) {\r\n // untoggle MASS_ABSENT_BTN\r\n MASS_ABSENT_BTN.setAttribute('data-toggled', false);\r\n // clear selected consumers\r\n roster2.clearSelectedConsumers();\r\n // hide popup\r\n POPUP.hide(MASS_ABSENT_POPUP);\r\n // reset active section\r\n setActiveModuleSectionAttribute('roster-info');\r\n // save it\r\n saveMassAbsent();\r\n } else {\r\n saveSingleAbsent();\r\n }\r\n });\r\n DELETE_ABSENT_BTN.addEventListener('click', () => {\r\n absentAjax.deleteAbsent(absentRecordId, function(results) {\r\n roster2.refreshRosterList();\r\n });\r\n var backBtn = document.querySelector('.sectionBackBtn');\r\n backBtn.click();\r\n });\r\n CANCEL_ABSENT_BTN.addEventListener('click', () => {\r\n // untoggle MASS_ABSENT_BTN\r\n MASS_ABSENT_BTN.setAttribute('data-toggled', false);\r\n // clear selected consumers\r\n roster2.selectNoneHighlightedConsumers();\r\n roster2.clearSelectedConsumers();\r\n roster2.refreshRosterList();\r\n // hide absent actionnav\r\n ACTION_NAV.hide();\r\n // hide popup\r\n POPUP.hide(MASS_ABSENT_POPUP);\r\n });\r\n }\r\n function buildAbsentForm(single, consumerId, dateOfAbsent, absentData) {\r\n if (absentData && absentData.length) {\r\n setSaveData(absentData);\r\n } else if (single) {\r\n setSaveData();\r\n consumerIdString = consumerId;\r\n absenceDate = dateOfAbsent;\r\n } else {\r\n //setSaveData();\r\n }\r\n\r\n var absentForm = document.createElement('div');\r\n absentForm.classList.add('absentForm');\r\n // inputs & dropdowns\r\n CONSUMERS_SELECTED_INPUT = input.build({\r\n label: 'Consumer(s)',\r\n type: 'text',\r\n style: 'secondary',\r\n value: 'All Selected',\r\n readonly: true\r\n });\r\n LOCATION_INPUT = input.build({\r\n label: 'Location',\r\n type: 'text',\r\n style: 'secondary',\r\n value: absentLocation,\r\n readonly: true\r\n });\r\n DATE_OF_ABSENSE_INPUT = input.build({\r\n label: 'Date Of Absence',\r\n type: 'date',\r\n style: 'secondary',\r\n value: absenceDate ? absenceDate : UTIL.getTodaysDate()\r\n });\r\n REPORTED_BY_INPUT = input.build({\r\n label: 'Reported By',\r\n type: 'text',\r\n style: 'secondary',\r\n value: reportedBy ? reportedBy : `${$.session.LName}, ${$.session.Name}`,\r\n readonly: true\r\n });\r\n DATE_REPORTED_INPUT = input.build({\r\n label: 'Date Reported',\r\n type: 'date',\r\n style: 'secondary',\r\n value: dateReported ? dateReported : UTIL.getTodaysDate()\r\n });\r\n TIME_REPORTED_INPUT = input.build({\r\n label: 'Time Reported',\r\n type: 'time',\r\n style: 'secondary',\r\n value: timeReported ? timeReported : UTIL.getCurrentTime()\r\n });\r\n REASON_DROPDOWN = dropdown.build({\r\n label: 'Reason',\r\n style: 'secondary'\r\n });\r\n NOTIFICATION_DROPDOWN = dropdown.build({\r\n label: 'Notification Type',\r\n style: 'secondary'\r\n });\r\n\r\n // save, cancel & delete buttons\r\n var ABSENT_BTN_WRAP = document.createElement('div');\r\n ABSENT_BTN_WRAP.classList.add('btnWrap');\r\n SAVE_ABSENT_BTN = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n id: 'absentSaveBtn',\r\n type: 'contained'\r\n });\r\n CANCEL_ABSENT_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained'\r\n });\r\n DELETE_ABSENT_BTN = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'outlined'\r\n });\r\n\r\n if (absentData && absentData.length) {\r\n absentForm.classList.add('disabled');\r\n if ($.session.RosterDeleteAbsent) ABSENT_BTN_WRAP.appendChild(DELETE_ABSENT_BTN);\r\n } else {\r\n ABSENT_BTN_WRAP.appendChild(SAVE_ABSENT_BTN);\r\n }\r\n\r\n if (!single) ABSENT_BTN_WRAP.appendChild(CANCEL_ABSENT_BTN);\r\n if (!single) absentForm.appendChild(CONSUMERS_SELECTED_INPUT);\r\n absentForm.appendChild(LOCATION_INPUT);\r\n absentForm.appendChild(DATE_OF_ABSENSE_INPUT);\r\n absentForm.appendChild(REPORTED_BY_INPUT);\r\n absentForm.appendChild(DATE_REPORTED_INPUT);\r\n absentForm.appendChild(TIME_REPORTED_INPUT);\r\n absentForm.appendChild(REASON_DROPDOWN);\r\n absentForm.appendChild(NOTIFICATION_DROPDOWN);\r\n absentForm.appendChild(ABSENT_BTN_WRAP);\r\n\r\n // populate dropdowns\r\n populateAbsentFormDropdowns({\r\n reason: resonId ? resonId : '%', \r\n notif: notificationId ? notificationId : '%'\r\n });\r\n // set events\r\n setupFormEvents(single);\r\n\r\n return absentForm;\r\n }\r\n\r\n // Single Absent\r\n //---------------------------------------------\r\n function init() {\r\n getAbsentFormDropdownData();\r\n }\r\n\r\n // Mass Absent\r\n //---------------------------------------------\r\n function showAbsentPopup() {\r\n // create popup\r\n MASS_ABSENT_POPUP = POPUP.build({\r\n classNames: 'rosterAbsentPopup'\r\n });\r\n // build form\r\n var absentForm = buildAbsentForm(false);\r\n // append form to popup\r\n MASS_ABSENT_POPUP.appendChild(absentForm);\r\n POPUP.show(MASS_ABSENT_POPUP);\r\n }\r\n function setConsumerIdString() {\r\n var selectedConsumers = roster2.getSelectedConsumers();\r\n consumerIdString = selectedConsumers.map(sc => sc.id).join(',');\r\n }\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch(targetAction) {\r\n case 'absentDone': {\r\n setConsumerIdString();\r\n showAbsentPopup();\r\n document.getElementById('massAbsentSelectAllBtn').style.display = 'none';\r\n document.getElementById('massAbsentDeselectAllBtn').style.display = 'none';\r\n break;\r\n }\r\n case 'absentCancel': {\r\n MASS_ABSENT_BTN.setAttribute('data-toggled', false);\r\n setActiveModuleSectionAttribute('roster-info');\r\n roster2.selectNoneHighlightedConsumers();\r\n roster2.clearSelectedConsumers();\r\n roster2.refreshRosterList();\r\n ACTION_NAV.hide();\r\n document.getElementById('massAbsentSelectAllBtn').style.display = 'none';\r\n document.getElementById('massAbsentDeselectAllBtn').style.display = 'none';\r\n break;\r\n }\r\n }\r\n }\r\n function toggleActionNavBtns() {\r\n var selectedConsumers = roster2.getSelectedConsumers();\r\n if (selectedConsumers.length > 0) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n }\r\n function buildAbsentActionNav() {\r\n doneBtn = button.build({\r\n text: 'Done',\r\n id: 'absentDone',\r\n icon: 'checkmark',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n attributes: [{key: 'data-action-nav', value: 'absentDone'}]\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n icon: 'close',\r\n style: 'secondary',\r\n type: 'outlined',\r\n attributes: [{key: 'data-action-nav', value: 'absentCancel'}]\r\n });\r\n\r\n ACTION_NAV.populate([doneBtn, cancelBtn]);\r\n }\r\n function initMassAbsent() {\r\n MASS_ABSENT_BTN = document.querySelector('.massAbsentBtn');\r\n getAbsentFormDropdownData(() => {\r\n buildAbsentActionNav();\r\n setSaveData();\r\n });\r\n }\r\n\r\n\r\n return {\r\n buildAbsentForm,\r\n createAbsentConsumersObj,\r\n getAbsentConsumers,\r\n handleActionNavEvent,\r\n initMassAbsent,\r\n init,\r\n toggleActionNavBtns\r\n }\r\n})();","var absentAjax = (function() {\r\n function absentPreSaveCheck(selectData, callback) {\r\n // data = {token, consumerIdString, absentDate, locationId}\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/absentPreSave/',\r\n contentType: 'application/json; charset=utf-8',\r\n data: JSON.stringify(selectData),\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.absentPreSaveResult;\r\n callback(res);\r\n }\r\n });\r\n }\r\n function allLocationSaveAbsent(data, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/allLocationSaveAbsent/',\r\n contentType: 'application/json; charset=utf-8',\r\n data: JSON.stringify(data),\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.allLocationSaveAbsentResult;\r\n if (callback) callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function deleteAbsent(absentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteAbsent/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"absentId\":\"' + absentId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n }\r\n });\r\n }\r\n function getConsumersByLocationAbsent(locationId, absenceDate, callback) {\r\n // returns absent consumers for provided location and date\r\n var selectData = {\r\n token: $.session.Token,\r\n absenceDate: absenceDate ? absenceDate : UTIL.getTodaysDate(),\r\n locationId: locationId,\r\n };\r\n\r\n if (parseInt(locationId, 10) === 0) {\r\n selectData.locationId = \"%\";\r\n }\r\n\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getConsumersByLocationAbsent/',\r\n data: JSON.stringify(selectData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n // $.ajax({\r\n // type: 'POST',\r\n // url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getConsumersByLocationAbsent/',\r\n // data: JSON.stringify(selectData),\r\n // contentType: 'application/json; charset=utf-8',\r\n // dataType: 'json',\r\n // success: function(response, status, xhr) {\r\n // var res = JSON.parse(response.getConsumersByLocationAbsentResult);\r\n // callback(res);\r\n // }\r\n // });\r\n }\r\n function oneLocationAbsentSave(saveData, callback) {\r\n // saveData = {\r\n // token, absentReasonId, absentNotificationId, consumerIdString, absenceDate,\r\n // locationId, reportedBy, timeReported, dateReported\r\n // }\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/oneLocationAbsentSave/',\r\n data: JSON.stringify(saveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.oneLocationAbsentTableSaveResult;\r\n callback();\r\n }\r\n });\r\n }\r\n function selectAbsentNotificationTypes(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/selectAbsentNotificationTypes/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n if (response.selectAbsentNotificationTypesResult) {\r\n var res = JSON.parse(response.selectAbsentNotificationTypesResult);\r\n callback(res);\r\n return;\r\n } \r\n \r\n callback([]);\r\n }\r\n });\r\n }\r\n function selectAbsentReasons(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/selectAbsentReasons/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n if (response.selectAbsentReasonsResult) {\r\n var res = JSON.parse(response.selectAbsentReasonsResult);\r\n callback(res);\r\n return;\r\n }\r\n \r\n callback([]);\r\n }\r\n });\r\n }\r\n function selectAbsent(selectData, callback) {\r\n // selectData = {token, consumerId, locationId, statusDate }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/selectAbsent/',\r\n data: JSON.stringify(selectData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = JSON.parse(response.selectAbsentResult);\r\n callback(res);\r\n }\r\n });\r\n \r\n return false;\r\n }\r\n \r\n return {\r\n absentPreSaveCheck,\r\n allLocationSaveAbsent,\r\n deleteAbsent,\r\n getConsumersByLocationAbsent,\r\n oneLocationAbsentSave,\r\n selectAbsentNotificationTypes,\r\n selectAbsentReasons,\r\n selectAbsent\r\n }\r\n})();\r\n\r\n","const rosterGroupIndividuals = (function () {\r\n\r\n let selectedConsumerIDs = [];\r\n let groupId;\r\n async function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case \"miniRosterDone\": {\r\n const selectedConsumers = roster2.getSelectedConsumersMiniRoster()\r\n selectedConsumers.forEach(async consumer => {\r\n selectedConsumerIDs.push(consumer.id);\r\n })\r\n await customGroupsAjax.addConsumerToCustomGroup(selectedConsumerIDs, groupId); \r\n roster2.clearSelectedConsumers(); \r\n roster2.clearActiveConsumers(); \r\n customGroups.loadManageGroupsPage(); \r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n roster2.clearSelectedConsumers();\r\n customGroups.loadManageGroupsPage(); \r\n break;\r\n }\r\n }\r\n }\r\n\r\n async function init(newGroupID) {\r\n selectedConsumerIDs = [];\r\n groupId = newGroupID;\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(\"roster-GroupIndividuals\");\r\n roster2.miniRosterinit(null, { hideDate: true, locationDisabled: true });\r\n roster2.showMiniRoster(); \r\n roster2.removeMiniRosterBtn(); \r\n }\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n };\r\n})();\r\n","var customGroups = (function(){\r\n // DOM\r\n var GROUP_ADMIN_POPUP;\r\n var GROUP_LIST; // list of custom groups\r\n // Data & Values\r\n var rosterGroups;\r\n var customGroupData;\r\n var newGroupName;\r\n var consumerId;\r\n // selected location data obj\r\n var location;\r\n var locationId;\r\n let newGroupID;\r\n\r\n async function updateCustomGroupData(callback) {\r\n const results = (await customGroupsAjax.getConsumerGroups(locationId)).getConsumerGroupsJSONResult;\r\n roster2.setRosterGroups(results);\r\n customGroupData = results.filter(res => res.GroupCode === 'CST');\r\n if (callback) callback();\r\n }\r\n function showGroupDeleteWarningPopup(groupId) {\r\n var groupDeleteWarningPop = POPUP.build({\r\n header: 'Are you sure you want to delete this group?'\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function(event) {\r\n customGroupsAjax.removeCustomGroup(groupId, async function() {\r\n results = (await customGroupsAjax.getConsumerGroups(locationId)).getConsumerGroupsJSONResult;\r\n roster2.setRosterGroups(results);\r\n\r\n customGroupData = results.filter(res => res.GroupCode === 'CST');\r\n populateGroupList(true);\r\n });\r\n POPUP.hide(groupDeleteWarningPop);\r\n }\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function() {\r\n POPUP.hide(groupDeleteWarningPop);\r\n }\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n groupDeleteWarningPop.appendChild(btnWrap);\r\n\r\n POPUP.show(groupDeleteWarningPop);\r\n }\r\n // function handleGroupListEvents() {\r\n // // Add Consumer To Group\r\n // if (event.target.classList.contains('groupCheckbox')) {\r\n // var isChecked = event.target.checked;\r\n // var groupId = event.target.dataset.groupId;\r\n // // temp disable input until ajax call is done for click happy users\r\n // var checkbox = event.target.parentElement;\r\n // checkbox.classList.add('disabled');\r\n\r\n // if (isChecked) {\r\n // customGroupsAjax.addConsumerToGroup(groupId, consumerId, function() {\r\n // checkbox.classList.remove('disabled');\r\n // updateCustomGroupData();\r\n // });\r\n // } else {\r\n // customGroupsAjax.removeConsumerFromGroup(groupId, consumerId, function() {\r\n // checkbox.classList.remove('disabled');\r\n // updateCustomGroupData();\r\n // });\r\n // }\r\n\r\n // }\r\n // // Group Admin Page\r\n // if (event.target.classList.contains('groupDelete')) {\r\n // var groupId = event.target.dataset.groupId;\r\n // showGroupDeleteWarningPopup(groupId);\r\n // return;\r\n // }\r\n // }\r\n\r\n function groupCheckboxEvent(inputEl, checkboxEl) {\r\n const isChecked = inputEl.checked;\r\n const groupId = inputEl.dataset.groupId;\r\n checkboxEl.classList.add('disabled');\r\n\r\n if (isChecked) {\r\n customGroupsAjax.addConsumerToGroup(groupId, consumerId, function() {\r\n checkboxEl.classList.remove('disabled');\r\n updateCustomGroupData();\r\n });\r\n } else {\r\n customGroupsAjax.removeConsumerFromGroup(groupId, consumerId, function() {\r\n checkboxEl.classList.remove('disabled');\r\n updateCustomGroupData();\r\n });\r\n }\r\n };\r\n\r\n function groupDeleteEvent(el) {\r\n var groupId = el.dataset.groupId;\r\n showGroupDeleteWarningPopup(groupId);\r\n return;\r\n }\r\n\r\n function addToGroupEvent(el) {\r\n var groupId = el.dataset.groupId;\r\n rosterGroupIndividuals.init(groupId);\r\n return;\r\n }\r\n\r\n function populateGroupList(isAdmin) {\r\n GROUP_LIST.innerHTML = '';\r\n\r\n //updateCustomGroupData(function() {\r\n if (customGroupData !== undefined && customGroupData.length > 0) {\r\n customGroupData.forEach(cg => {\r\n var item = document.createElement('div');\r\n item.classList.add('customGroup');\r\n\r\n var text = document.createElement('p');\r\n text.innerHTML = cg.GroupName;\r\n\r\n var groupMembers = cg.Members.split('|');\r\n var isConsumerGroupMember = groupMembers.filter(gm => gm === consumerId);\r\n\r\n if (!isAdmin) {\r\n var itemAction = input.buildCheckbox({\r\n className: 'groupCheckbox',\r\n isChecked: isConsumerGroupMember.length > 0 ? true : false,\r\n attributes: [{key: 'data-group-id', value: cg.RetrieveID}],\r\n callback: () => groupCheckboxEvent(event.target,itemAction)\r\n });\r\n } else {\r\n var itemAction = button.build({\r\n icon: 'delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: ['groupDelete'],\r\n attributes: [{key: 'data-group-id', value: cg.RetrieveID}],\r\n callback: () => groupDeleteEvent(itemAction)\r\n });\r\n\r\n var manageConsumerAction = button.build({\r\n text: 'Add To Group',\r\n type: 'contained',\r\n style: 'secondary',\r\n attributes: [{ key: 'data-group-id', value: cg.RetrieveID }],\r\n callback: () => addToGroupEvent(manageConsumerAction)\r\n }); \r\n }\r\n\r\n\r\n item.appendChild(text);\r\n if (!isAdmin) {\r\n item.appendChild(itemAction);\r\n }\r\n else {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('groupBtnWrap');\r\n btnWrap.appendChild(manageConsumerAction);\r\n btnWrap.appendChild(itemAction);\r\n item.appendChild(btnWrap);\r\n }\r\n GROUP_LIST.appendChild(item);\r\n });\r\n } else {\r\n GROUP_LIST.innerHTML = `

    No custom groups found

    `;\r\n }\r\n //}); \r\n }\r\n function buildGroupList(isAdmin, consumerID) {\r\n consumerId = consumerID;\r\n GROUP_LIST = document.createElement('div');\r\n GROUP_LIST.classList.add('customGroupList');\r\n\r\n populateGroupList(isAdmin);\r\n\r\n // GROUP_LIST.addEventListener('click', handleGroupListEvents);\r\n\r\n return GROUP_LIST;\r\n }\r\n function showAddNewGroupPopup() {\r\n var newGroupPop = POPUP.build({\r\n classNames: 'addGroupPopup'\r\n });\r\n\r\n var addNewGroupInput = input.build({\r\n label: 'Group Name',\r\n type: 'text',\r\n style: 'secondary'\r\n });\r\n var addNewGroupBtn = button.build({\r\n text: 'Add Group',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['disabled', 'newGroupBtn']\r\n });\r\n\r\n addNewGroupInput.addEventListener('keyup', event => {\r\n newGroupName = event.target.value;\r\n\r\n if (newGroupName.length > 0) {\r\n addNewGroupBtn.classList.remove('disabled');\r\n } else {\r\n addNewGroupBtn.classList.add('disabled');\r\n }\r\n });\r\n addNewGroupBtn.addEventListener('click', event => {\r\n customGroupsAjax.addCustomGroup(newGroupName, locationId, async function (results) {\r\n newGroupID = results[0].CustomGroupID;\r\n results = (await customGroupsAjax.getConsumerGroups(locationId)).getConsumerGroupsJSONResult;\r\n roster2.setRosterGroups(results);\r\n\r\n customGroupData = results.filter(res => res.GroupCode === 'CST');\r\n populateGroupList(true);\r\n\r\n POPUP.hide(newGroupPop);\r\n manageGroupPopup();\r\n });\r\n });\r\n\r\n newGroupPop.appendChild(addNewGroupInput);\r\n newGroupPop.appendChild(addNewGroupBtn);\r\n\r\n POPUP.show(newGroupPop);\r\n }\r\n function buildManageGroupsPage() {\r\n var groupsPage = document.createElement('div');\r\n groupsPage.classList.add('manageGroupsPage');\r\n\r\n var topSection = document.createElement('div');\r\n\r\n var backToRoster = button.build({\r\n text: 'Back To Roster',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n style: 'secondary',\r\n callback: function() {\r\n roster2.loadRosterInfo();\r\n }\r\n });\r\n\r\n var locationLabel = document.createElement('div');\r\n locationLabel.innerHTML = `

    ${location.locationName}

    `;\r\n\r\n topSection.appendChild(backToRoster);\r\n topSection.appendChild(locationLabel);\r\n\r\n var addNewGroupBtn = button.build({\r\n text: 'Create New Group',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'newGroupBtn',\r\n callback: showAddNewGroupPopup\r\n });\r\n\r\n var groupsList = buildGroupList(true);\r\n\r\n groupsPage.appendChild(topSection);\r\n groupsPage.appendChild(addNewGroupBtn);\r\n groupsPage.appendChild(groupsList);\r\n\r\n return groupsPage;\r\n }\r\n function loadManageGroupsPage() {\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('roster-groups');\r\n\r\n if (!location || !locationId) {\r\n location = roster2.getSelectedLocationObj();\r\n locationId = location.locationId;\r\n }\r\n\r\n\r\n var manageGroupsPage = buildManageGroupsPage();\r\n\r\n DOM.ACTIONCENTER.appendChild(manageGroupsPage);\r\n }\r\n\r\n function manageGroupPopup() {\r\n const confirmPopup = POPUP.build({\r\n hideX: true\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n rosterGroupIndividuals.init(newGroupID);\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.innerText = 'Your group has been created. Would you like to add individuals to this group now?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n function init(groupData) {\r\n customGroupData = groupData.filter(gd => gd.GroupCode === 'CST');\r\n rosterGroups = groupData;\r\n location = roster2.getSelectedLocationObj();\r\n locationId = location.locationId;\r\n // if (document.getElementById('mini_roster') != null)\r\n // document.getElementById('mini_roster').style.display = 'none';\r\n }\r\n\r\n return {\r\n init,\r\n loadManageGroupsPage,\r\n buildGroupList\r\n }\r\n\r\n})();","var customGroupsAjax = (function() {\r\n // Done\r\n function getConsumerGroups(locationId, callback) {\r\n return $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port + \"/\" + $.webServer.serviceName + \"/getConsumerGroupsJSON/\",\r\n data: '{\"locationId\":\"' + locationId +'\", \"token\":\"' + $.session.Token +'\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n });\r\n\r\n // $.ajax({\r\n // type: \"POST\",\r\n // url:\r\n // $.webServer.protocol + \"://\" +\r\n // $.webServer.address + \":\" +\r\n // $.webServer.port + \"/\" +\r\n // $.webServer.serviceName + \"/getConsumerGroupsJSON/\",\r\n // data: '{\"locationId\":\"' + locationId +'\", \"token\":\"' + $.session.Token +'\"}',\r\n // contentType: \"application/json; charset=utf-8\",\r\n // dataType: \"json\",\r\n // success: function(response, status, xhr) {\r\n // var res = response.getConsumerGroupsJSONResult;\r\n // callback(res);\r\n // }\r\n // });\r\n }\r\n\r\n function addCustomGroup(groupName, locationId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/addCustomGroupJSON/',\r\n data: '{\"groupName\":\"' + groupName + '\",\"locationId\":\"' + locationId + '\",\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n var res = response.addCustomGroupJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function removeCustomGroup(groupId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/removeCustomGroup/',\r\n data: '{\"groupId\":\"' + groupId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n },\r\n });\r\n $.session.deletedGroupId = groupId;\r\n }\r\n function addConsumerToGroup(groupId, consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/addConsumerToGroup/',\r\n data: '{\"groupId\":\"' + groupId + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n }\r\n });\r\n }\r\n function removeConsumerFromGroup(groupId, consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/removeConsumerFromGroup/',\r\n data: '{\"groupId\":\"' + groupId + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n }\r\n\r\n async function addConsumerToCustomGroup(consumerIDs, groupId, callback) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addConsumerToCustomGroupJSON/',\r\n data: JSON.stringify({ \r\n consumerIDs: consumerIDs,\r\n groupId: groupId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n // Old Ajax\r\n getConsumerGroups,\r\n addCustomGroup,\r\n addConsumerToGroup,\r\n removeCustomGroup,\r\n removeConsumerFromGroup,\r\n addConsumerToCustomGroup\r\n };\r\n})();\r\n","const consumerInfo = (function () {\r\n let locationId;\r\n let consumerId;\r\n let consumerName\r\n let selectedDate;\r\n let consumerInfoCard;\r\n let currentlyVisibleSection;\r\n let hasUnreadNote;\r\n let modalOverlay;\r\n let menuNewList = [];\r\n let currentScreen;\r\n let previousScreen = '';\r\n let nextScreen = '';\r\n let backwordBtn;\r\n let forwardBtn;\r\n let rosterList;\r\n\r\n // Edit relationship \r\n let editRelationshipPopup;\r\n let numberOfRows;\r\n let btnWrapInputsN = [];\r\n let hasADropdownN = [];\r\n let startDateInputN = [];\r\n let whoIsDropdownN = [];\r\n let endDateInputN = [];\r\n let deleteBtnN = [];\r\n let showInactive;\r\n let tempConsumer;\r\n let consumerRelationships = [];\r\n let consumerRelationshipsNew = [];\r\n let relationshipPopupBtnWrap;\r\n let dataType;\r\n let dataName;\r\n let isValueChanged;\r\n let deletedIds = [];\r\n let archiveConsumerRelationships = [];\r\n\r\n\r\n function getImageOrientation(file, callback) {\r\n var reader = new FileReader();\r\n reader.onload = function (e) {\r\n var view = new DataView(e.target.result);\r\n if (view.getUint16(0, false) != 0xffd8) {\r\n return callback(-2);\r\n }\r\n var length = view.byteLength,\r\n offset = 2;\r\n while (offset < length) {\r\n if (view.getUint16(offset + 2, false) <= 8) return callback(-1);\r\n var marker = view.getUint16(offset, false);\r\n offset += 2;\r\n if (marker == 0xffe1) {\r\n if (view.getUint32((offset += 2), false) != 0x45786966) {\r\n return callback(-1);\r\n }\r\n\r\n var little = view.getUint16((offset += 6), false) == 0x4949;\r\n offset += view.getUint32(offset + 4, little);\r\n var tags = view.getUint16(offset, little);\r\n offset += 2;\r\n for (var i = 0; i < tags; i++) {\r\n if (view.getUint16(offset + i * 12, little) == 0x0112) {\r\n return callback(view.getUint16(offset + i * 12 + 8, little));\r\n }\r\n }\r\n } else if ((marker & 0xff00) != 0xff00) {\r\n break;\r\n } else {\r\n offset += view.getUint16(offset, false);\r\n }\r\n }\r\n return callback(-1);\r\n };\r\n reader.readAsArrayBuffer(file);\r\n }\r\n\r\n // Workers\r\n function formatPortraitPath(portraitPath) {\r\n var splitPath = portraitPath.split('\\\\');\r\n var newPath = '\\\\\\\\\\\\\\\\';\r\n splitPath.forEach(sp => {\r\n if (sp === '') return;\r\n newPath += `${sp}\\\\\\\\`;\r\n });\r\n\r\n return newPath;\r\n }\r\n function updatePhotoToDefault() {\r\n var targetConsumerId = consumerInfoCard.dataset.consumerid;\r\n var consumerCardFromRosterList = document.querySelector(`[data-consumer-id=\"${targetConsumerId}\"]`);\r\n var rosterPic = consumerCardFromRosterList.querySelector('img');\r\n var infoCardPic = consumerInfoCard.querySelector('img');\r\n rosterPic.setAttribute('src', './images/new-icons/default.jpg');\r\n infoCardPic.setAttribute('src', './images/new-icons/default.jpg');\r\n rosterPic.setAttribute('onerror', './images/new-icons/default.jpg');\r\n infoCardPic.setAttribute('onerror', './images/new-icons/default.jpg');\r\n }\r\n async function updateConsumerPhoto(event) {\r\n event.preventDefault();\r\n var targetConsumerId = consumerInfoCard.dataset.consumerid;\r\n var consumerCardFromRosterList = document.querySelector(`[data-consumer-id=\"${targetConsumerId}\"]`);\r\n\r\n var pic2 = consumerCardFromRosterList.querySelector('img');\r\n pic2.setAttribute('src', URL.createObjectURL(event.target.files[0]));\r\n var pic1 = consumerInfoCard.querySelector('img');\r\n pic1.setAttribute('src', URL.createObjectURL(event.target.files[0]));\r\n\r\n var id = `${targetConsumerId}`;\r\n id = parseInt(id);\r\n var portraitPath = $.session.portraitPath;\r\n portraitPath = formatPortraitPath(portraitPath);\r\n\r\n var canvas = document.createElement('canvas');\r\n canvas.height = 127;\r\n canvas.width = 150;\r\n\r\n var ctx = canvas.getContext('2d');\r\n\r\n var imageObj = new Image(152, 127);\r\n\r\n pic2.onload = function () {\r\n ctx.drawImage(pic2, 0, 0, 152, 127);\r\n\r\n var srcData = canvas.toDataURL('image/jpeg');\r\n srcData = srcData.replace('data:image/jpeg;base64,', '');\r\n\r\n rosterAjax.updatePortrait(srcData, id, portraitPath);\r\n\r\n getImageOrientation(event.target.files[0], function (orientation) { });\r\n };\r\n //ctx.drawImage(imageObj, 0, 0, 152, 127);\r\n var imageObjSrcVal = `#${id}`;\r\n imageObj.setAttribute('src', imageObjSrcVal);\r\n ctx.drawImage(imageObj, 0, 0, 152, 127);\r\n\r\n //var srcData = canvas.toDataURL('image/jpeg');\r\n //srcData = srcData.replace(\"data:image/jpeg;base64,\", \"\");\r\n //rosterAjax.updatePortrait(srcData, id, portraitPath);\r\n }\r\n function orderScheduleData(data) {\r\n var tableData = [\r\n {\r\n id: 'startTime',\r\n values: [\r\n data.start.Sun,\r\n data.start.Mon,\r\n data.start.Tues,\r\n data.start.Wed,\r\n data.start.Thur,\r\n data.start.Fri,\r\n data.start.Sat,\r\n ],\r\n },\r\n {\r\n id: 'endTime',\r\n values: [data.end.Sun, data.end.Mon, data.end.Tues, data.end.Wed, data.end.Thur, data.end.Fri, data.end.Sat],\r\n },\r\n ];\r\n\r\n return tableData;\r\n }\r\n function toggleHideShowAbsentMenuSection(locationid) {\r\n var menulist = document.querySelector('.menuList');\r\n var absentMenuItem = menulist.querySelector('[data-info-task=\"Mark As Absent\"]');\r\n if ((locationid === '000' || locationid === '0') && absentMenuItem !== null) {\r\n absentMenuItem.classList.add('hidden');\r\n const index = menuNewList.findIndex(x => x.title == 'Mark As Absent');\r\n if (index != -1) {\r\n menuNewList.splice(index, 1);\r\n }\r\n } else if (absentMenuItem !== null) {\r\n absentMenuItem.classList.remove('hidden');\r\n }\r\n }\r\n function downloadAttachment(attachmentid) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/getIndividualAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', attachmentid);\r\n attachmentInput.id = 'attachmentId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n // Hide/Show\r\n function showCard(consumer) {\r\n tempConsumer = consumer;\r\n var consumersWithUnreadNotes = roster2.getConsumersWithUnreadNotes();\r\n hasUnreadNote = consumersWithUnreadNotes[consumer.dataset.consumerId];\r\n\r\n if ($.session.selectedLocation[0] === '0') {\r\n var menuItem = document.querySelector('.menuList .progressNote');\r\n if (menuItem) menuItem.classList.add('hidden');\r\n const index = menuNewList.findIndex(x => x.title == 'Progress Notes');\r\n if (index != -1) {\r\n menuNewList.splice(index, 1);\r\n }\r\n } else {\r\n var menuItem = document.querySelector('.menuList .progressNote');\r\n if (menuItem) menuItem.classList.remove('hidden');\r\n }\r\n\r\n if (hasUnreadNote) {\r\n var menuItem = document.querySelector('.menuList .progressNote');\r\n if (menuItem) menuItem.classList.add('needsAttention');\r\n } else {\r\n var menuItem = document.querySelector('.menuList .progressNote');\r\n if (menuItem) menuItem.classList.remove('needsAttention');\r\n }\r\n\r\n // shows consumer info card\r\n var locationObj = roster2.getSelectedLocationObj();\r\n locationId = locationObj.locationId;\r\n selectedDate = roster2.getSelectedDate();\r\n\r\n setConsumerToCard(consumer);\r\n\r\n rosterList = document.querySelector('.roster');\r\n rosterList.classList.add('fadeOut');\r\n DOM.toggleHeaderOpacity();\r\n\r\n setTimeout(function () {\r\n consumerInfoCard.classList.add('visible');\r\n if (!isMobile) {\r\n bodyScrollLock.disableBodyScroll(consumerInfoCard);\r\n }\r\n modalOverlay.classList.add('modal');\r\n }, 300);\r\n }\r\n function closeCard() {\r\n backwordBtn.classList.add('hidden');\r\n forwardBtn.classList.add('hidden');\r\n roster2.toggleRosterListLockdown(false);\r\n progressNotes.clearAllGlobalVariables();\r\n // hides consumer info card\r\n // grab visible section & subsection, then hide them\r\n var visibleSection = consumerInfoCard.querySelector('.infoCardSection.visible');\r\n var visibleSubSection = consumerInfoCard.querySelector('.infoCardSubSection.visible');\r\n if (visibleSection) visibleSection.classList.remove('visible');\r\n if (visibleSubSection) visibleSubSection.classList.remove('visible');\r\n // reset menuList\r\n var menuList = consumerInfoCard.querySelector('.menuList');\r\n menuList.classList.remove('fadeOut');\r\n // hide consumer info card\r\n consumerInfoCard.classList.remove('visible');\r\n // wait till consumer card is hidden\r\n setTimeout(function () {\r\n // reshow roster list\r\n rosterList = document.querySelector('.roster');\r\n if (rosterList != null) {\r\n rosterList.classList.remove('hidden');\r\n rosterList.classList.remove('fadeOut');\r\n }\r\n DOM.removeHeaderOpacity();\r\n if (!isMobile) {\r\n bodyScrollLock.enableBodyScroll(consumerInfoCard);\r\n }\r\n modalOverlay.classList.remove('modal');\r\n }, 200);\r\n\r\n currentlyVisibleSection = null;\r\n }\r\n function showCardSection(targetSection) {\r\n // shows section\r\n currentlyVisibleSection = targetSection;\r\n\r\n var menu = consumerInfoCard.querySelector('.menuList');\r\n menu.classList.add('fadeOut');\r\n\r\n targetSection.classList.add('visible');\r\n }\r\n function showCardSubSection(targetSubSection) {\r\n // shows sub section\r\n var currentlyVisibleSubSection = consumerInfoCard.querySelector('.infoCardSubSection.visible');\r\n // hide currently visible sub section\r\n currentlyVisibleSubSection.classList.remove('visible');\r\n // restore height of target subsection\r\n targetSubSection.classList.remove('hidden');\r\n\r\n setTimeout(function () {\r\n // shrink currently visible sub section\r\n currentlyVisibleSubSection.classList.add('hidden');\r\n // show target sub section\r\n targetSubSection.classList.add('visible');\r\n }, 200);\r\n }\r\n function handleBackButtonClick() {\r\n backwordBtn.classList.add('hidden');\r\n forwardBtn.classList.add('hidden');\r\n // first check to see if we are on the menulist\r\n var menuList = consumerInfoCard.querySelector('.menuList');\r\n var isMenuListHidden = menuList.classList.contains('fadeOut');\r\n if (!isMenuListHidden) {\r\n return;\r\n }\r\n\r\n var sectionBackBtn = document.querySelector('.sectionBackBtn');\r\n\r\n // clear out section/sub section variables\r\n //MAT - commenting out below due to teh fact that sometimes the back button is used while in progress notes. Still need the consumer ID at this point if adding another note\r\n progressNotes.clearAllGlobalVariablesOnBack();\r\n\r\n var visibleSection = consumerInfoCard.querySelector('.infoCardSection.visible');\r\n var visibleSubSection = visibleSection.querySelector('.infoCardSubSection.visible');\r\n\r\n if (visibleSubSection) {\r\n var isSubSection0Visible = visibleSubSection.classList.contains('subSec0');\r\n if (isSubSection0Visible) {\r\n // hide visible section & subSections\r\n visibleSubSection.classList.remove('visible');\r\n visibleSection.classList.remove('visible');\r\n // back to menu list\r\n menuList.classList.remove('fadeOut');\r\n sectionBackBtn.classList.add('hidden');\r\n } else {\r\n // back to subSec0\r\n var subSec0 = visibleSection.querySelector('.subSec0');\r\n // hide visible subsection\r\n visibleSubSection.classList.remove('visible');\r\n // reset subSec0 height\r\n subSec0.classList.remove('hidden');\r\n\r\n setTimeout(function () {\r\n // shrink currently visible sub section\r\n visibleSubSection.classList.add('hidden');\r\n // show subSec0\r\n subSec0.classList.add('visible');\r\n }, 200);\r\n }\r\n } else {\r\n // hide visible section\r\n visibleSection.classList.remove('visible');\r\n // back to menu list\r\n menuList.classList.remove('fadeOut');\r\n sectionBackBtn.classList.add('hidden');\r\n }\r\n }\r\n // Populating Card Sections\r\n function setConsumerToCard(consumer) {\r\n var cardClone = consumer.cloneNode(true);\r\n // get consumer name\r\n consumerName = consumer.children[1].innerText.replaceAll('\\n', '').split(',');\r\n // set consumer id attribute and cache it\r\n var id = consumer.dataset.consumerId;\r\n consumerInfoCard.setAttribute('data-consumerId', id);\r\n consumerId = id;\r\n // append consumer card to info card\r\n var header = consumerInfoCard.querySelector('.consumerInfoCard__heading');\r\n header.innerHTML = '';\r\n header.appendChild(cardClone);\r\n }\r\n function populateAbsentSection(section, absentData) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n var absentForm = rosterAbsent.buildAbsentForm(true, consumerId, selectedDate, absentData);\r\n sectionInner.appendChild(absentForm);\r\n }\r\n function populatePhotoSection(section) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n var removePhotoBtn = button.build({\r\n text: 'Remove Photo',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: e => {\r\n if (!$.session.DemographicsPictureDelete) {\r\n return;\r\n }\r\n\r\n rosterAjax.updatePortrait('', parseInt(consumerId), formatPortraitPath($.session.portraitPath), () => {\r\n updatePhotoToDefault();\r\n });\r\n },\r\n });\r\n if (!$.session.DemographicsPictureDelete) {\r\n removePhotoBtn.classList.add('disabled');\r\n }\r\n\r\n var photoInput = input.build({\r\n label: 'Choose Image',\r\n type: 'file',\r\n accept: 'image/*',\r\n style: 'secondary',\r\n attributes: [{ key: 'multiple', value: 'false' }],\r\n });\r\n\r\n sectionInner.appendChild(removePhotoBtn);\r\n sectionInner.appendChild(photoInput);\r\n\r\n photoInput.addEventListener('change', updateConsumerPhoto);\r\n }\r\n function populateGroupSection(section) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n var groupList = customGroups.buildGroupList(false, consumerId);\r\n sectionInner.appendChild(groupList);\r\n }\r\n function populateNotesSection(section, data) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n if (data.length === 0) {\r\n sectionInner.innerHTML = `

    No notes found.

    `;\r\n return;\r\n }\r\n\r\n sectionInner.innerHTML = `\r\n ${data\r\n .map(d => {\r\n var date = d.noteDate;\r\n date = date ? date.split(' ')[0] : '';\r\n\r\n return `\r\n
    \r\n
    \r\n
    Type: ${d.description}
    \r\n
    ${date}
    \r\n
    \r\n
    ${d.note}
    \r\n
    \r\n `;\r\n })\r\n .join('')}\r\n `;\r\n }\r\n function populateProgressNotesSection(section, data) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n var viewAllNotesSection = progressNotes.buildViewAllNotesSection(data);\r\n var addNoteSection = progressNotes.buildAddNoteSection();\r\n var viewSingleNoteSection = progressNotes.buildViewSingleNoteSection();\r\n var addMessageSection = progressNotes.buildAddMessageSection();\r\n\r\n viewAllNotesSection.classList.add('infoCardSubSection', 'subSec0', 'visible');\r\n addNoteSection.classList.add('infoCardSubSection', 'subSec1', 'hidden');\r\n viewSingleNoteSection.classList.add('infoCardSubSection', 'subSec2', 'hidden');\r\n addMessageSection.classList.add('infoCardSubSection', 'subSec3', 'hidden');\r\n\r\n sectionInner.appendChild(viewAllNotesSection);\r\n sectionInner.appendChild(addNoteSection);\r\n sectionInner.appendChild(viewSingleNoteSection);\r\n sectionInner.appendChild(addMessageSection);\r\n }\r\n function populateAttachmentsSection(section, data) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n var attachmentsList = document.createElement('div');\r\n attachmentsList.classList.add('attachmentsList');\r\n\r\n data.forEach(d => {\r\n var file = d.filename.split('.');\r\n var fileType = file.pop();\r\n var fileName = file.join('.');\r\n\r\n var attachment = document.createElement('div');\r\n attachment.classList.add('attachment');\r\n attachment.setAttribute('data-attachments-id', d.attachmentid);\r\n attachment.innerHTML = `\r\n

    ${fileName}

    \r\n

    ${fileType}

    \r\n

    ${icons.download}

    \r\n `;\r\n\r\n attachment.addEventListener('click', () => {\r\n downloadAttachment(d.attachmentid);\r\n });\r\n\r\n attachmentsList.appendChild(attachment);\r\n });\r\n\r\n sectionInner.appendChild(attachmentsList);\r\n }\r\n function showRelationshipDetails(section, sectionInner, data) {\r\n // set sectionInner to display none\r\n sectionInner.style.display = 'none';\r\n // check for nulls\r\n const companyName = data.companyName ? data.companyName : '';\r\n const title = data.title ? data.title : '';\r\n const addressOne = data.addressOne ? data.addressOne : '';\r\n const addressTwo = data.addressTwo ? data.addressTwo : '';\r\n const city = data.city ? data.city : '';\r\n const state = data.state ? data.state : '';\r\n const zipcode = data.zipcode ? data.zipcode : '';\r\n // show data\r\n const detailWrap = document.createElement('div');\r\n detailWrap.classList.add('relationshipDetailWrap');\r\n detailWrap.innerHTML = `\r\n
    \r\n

    Company Name

    \r\n

    ${companyName}

    \r\n
    \r\n
    \r\n

    Title

    \r\n

    ${title}

    \r\n
    \r\n
    \r\n

    Address

    \r\n

    ${addressOne}

    \r\n

    ${addressTwo}

    \r\n

    ${city}, ${state} ${zipcode}

    \r\n
    \r\n `;\r\n const donebtn = button.build({\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n section.removeChild(detailWrap);\r\n sectionInner.style.display = 'block';\r\n },\r\n });\r\n detailWrap.appendChild(donebtn);\r\n section.appendChild(detailWrap);\r\n }\r\n function populateRelationshipsSection(section, data) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n\r\n const relationshipTable = document.createElement('div');\r\n relationshipTable.classList.add('relationshipTable');\r\n\r\n const relationshipHeader = document.createElement('div');\r\n relationshipHeader.classList.add('relationshipTable__header');\r\n relationshipHeader.innerHTML = `\r\n
    \r\n
    Name
    \r\n
    Relationship
    \r\n `;\r\n const endIcon = document.createElement('div');\r\n endIcon.classList.add('relationshipTable__endIcon');\r\n if ($.session.DemographicsUpdateRelationship == true) {\r\n endIcon.innerHTML = icons['edit'];\r\n } else {\r\n endIcon.innerHTML = `
    `;\r\n }\r\n\r\n relationshipTable.appendChild(relationshipHeader);\r\n relationshipHeader.appendChild(endIcon);\r\n sectionInner.appendChild(relationshipTable);\r\n\r\n endIcon.addEventListener('click', e => {\r\n relationshipEditPopup();\r\n closeCard();\r\n });\r\n if (data.length === 0) {\r\n const errorMessage = document.createElement('div');\r\n errorMessage.innerHTML = `

    No relationships found.

    `;\r\n sectionInner.appendChild(errorMessage);\r\n }\r\n\r\n data.forEach(d => {\r\n var eventName;\r\n const rowWrap = document.createElement('div');\r\n rowWrap.classList.add('relationshipTable__subTableWrap');\r\n\r\n const mainDataRow = document.createElement('div');\r\n mainDataRow.classList.add('relationshipTable__mainDataRow', 'relationshipTable__dataRow');\r\n\r\n const toggleIcon = document.createElement('div');\r\n toggleIcon.id = 'authToggle';\r\n toggleIcon.classList.add('relationshipTable__endIcon');\r\n toggleIcon.innerHTML = icons['keyArrowRight'];\r\n mainDataRow.innerHTML = `\r\n
    ${d.lastName}, ${d.firstName}
    \r\n
    ${d.description}
    \r\n `;\r\n mainDataRow.prepend(toggleIcon);\r\n rowWrap.appendChild(mainDataRow);\r\n\r\n const subRowWrap = document.createElement('div');\r\n subRowWrap.classList.add('relationshipTable__subRowWrap');\r\n\r\n if (d.primaryPhone && d.primaryPhone.trim().length != 0) {\r\n const subDataRowPrimaryPhone = document.createElement('div');\r\n subDataRowPrimaryPhone.classList.add('relationshipTable__subDataRow', 'relationshipTable__dataRow');\r\n subDataRowPrimaryPhone.innerHTML = `
    \r\n
    \r\n ${d.primaryPhone && d.primaryPhone.trim().length != 0\r\n ? `Primary Phone: ${UTIL.formatPhoneNumber(d.primaryPhone.trim())}
    `\r\n : ``\r\n } \r\n
    `;\r\n subRowWrap.appendChild(subDataRowPrimaryPhone);\r\n }\r\n\r\n if (d.secondaryPhone && d.secondaryPhone.trim().length != 0) {\r\n const subDataRowSecondaryPhone = document.createElement('div');\r\n subDataRowSecondaryPhone.classList.add('relationshipTable__subDataRow', 'relationshipTable__dataRow');\r\n subDataRowSecondaryPhone.innerHTML = `
    \r\n
    \r\n ${d.secondaryPhone && d.secondaryPhone.trim().length != 0\r\n ? `Secondary Phone: ${UTIL.formatPhoneNumber(d.secondaryPhone.trim())}
    `\r\n : ``\r\n } \r\n
    `;\r\n subRowWrap.appendChild(subDataRowSecondaryPhone);\r\n }\r\n\r\n if (d.cellularPhone && d.cellularPhone.trim().length != 0) {\r\n const subDataRowCellularPhone = document.createElement('div');\r\n subDataRowCellularPhone.classList.add('relationshipTable__subDataRow', 'relationshipTable__dataRow');\r\n subDataRowCellularPhone.innerHTML = `
    \r\n
    \r\n ${d.cellularPhone && d.cellularPhone.trim().length != 0\r\n ? `Cellular Phone: ${UTIL.formatPhoneNumber(d.cellularPhone.trim())}`\r\n : ``\r\n }\r\n
    `;\r\n subRowWrap.appendChild(subDataRowCellularPhone);\r\n }\r\n\r\n if (d.email != null && d.email != '') {\r\n const subDataRowEmail = document.createElement('div');\r\n subDataRowEmail.classList.add('relationshipTable__subDataRow', 'relationshipTable__dataRow');\r\n subDataRowEmail.innerHTML = `
    \r\n
    \r\n ${d.email ? `Email: ${d.email}` : ``}\r\n
    `;\r\n subRowWrap.appendChild(subDataRowEmail);\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n mainDataRow.addEventListener('click', e => {\r\n if (eventName != 'toggle') {\r\n showRelationshipDetails(section, sectionInner, d);\r\n }\r\n eventName = '';\r\n });\r\n }\r\n toggleIcon.addEventListener('click', e => {\r\n const toggle = document.querySelector('#authToggle');\r\n eventName = 'toggle';\r\n if (subRowWrap.classList.contains('active')) {\r\n // close it\r\n subRowWrap.classList.remove('active');\r\n toggleIcon.innerHTML = icons.keyArrowRight;\r\n } else {\r\n // open it\r\n subRowWrap.classList.add('active');\r\n toggleIcon.innerHTML = icons.keyArrowDown;\r\n }\r\n });\r\n\r\n rowWrap.appendChild(subRowWrap);\r\n\r\n sectionInner.appendChild(rowWrap);\r\n });\r\n }\r\n\r\n async function relationshipEditPopup(isActive = false) {\r\n\r\n const result = await rosterAjax.getEditConsumerRelationships(consumerId, isActive);\r\n const { getEditConsumerRelationshipsJSONResult } = result;\r\n\r\n consumerRelationships = getEditConsumerRelationshipsJSONResult;\r\n archiveConsumerRelationships = getEditConsumerRelationshipsJSONResult;\r\n numberOfRows = consumerRelationships.length;\r\n editRelationshipPopup = POPUP.build({\r\n hideX: true,\r\n id: \"editRelationshipPopup\"\r\n });\r\n\r\n editRelationshipPopup.style.maxWidth = '65%';\r\n editRelationshipPopup.style.left = '50%';\r\n\r\n showInactive = input.buildCheckbox({\r\n text: 'Show Inactive',\r\n id: 'chkShowInactive',\r\n isChecked: isActive,\r\n callback: () => {\r\n POPUP.hide(editRelationshipPopup);\r\n relationshipEditPopup(event.target.checked);\r\n }\r\n });\r\n\r\n const popupHeader = document.createElement(\"div\");\r\n popupHeader.classList.add(\"popupHeader\");\r\n const headerWrap = document.createElement(\"div\");\r\n headerWrap.classList.add(\"editRelationshipInputWrap\");\r\n const headerText = document.createElement(\"div\");\r\n headerText.innerHTML = consumerName + \"'s Relationship\";\r\n headerWrap.appendChild(headerText);\r\n headerWrap.appendChild(showInactive);\r\n popupHeader.appendChild(headerWrap);\r\n editRelationshipPopup.appendChild(popupHeader);\r\n\r\n for (let i = 0; i < numberOfRows; i++) {\r\n await createPopupElements(i, consumerRelationships);\r\n editRelationshipPopup.appendChild(btnWrapInputsN[i]);\r\n }\r\n\r\n saveRelationshipBtn = button.build({\r\n id: \"saveRelationshipBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n callback: async () => {\r\n if (!saveRelationshipBtn.classList.contains('disabled')) {\r\n await editRelationshipSaveData();\r\n POPUP.hide(editRelationshipPopup);\r\n showCard(tempConsumer);\r\n setupCard('Relationships');\r\n }\r\n },\r\n });\r\n\r\n AddRelationshipBtn = button.build({\r\n id: \"AddRelationshipBtn\",\r\n text: \"New\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n callback: async () => {\r\n let i = numberOfRows;\r\n numberOfRows = numberOfRows + 1;\r\n await createPopupElements(i, null);\r\n editRelationshipPopup.insertBefore(btnWrapInputsN[i], relationshipPopupBtnWrap);\r\n dropdown.populate(\"hasADropdownN\" + i, dataType, '');\r\n dropdown.populate(\"whoIsDropdownN\" + i, dataName, '');\r\n popUpSplitTransectionEventHandlers();\r\n checkRequiredFieldsEditConsumerRelationships();\r\n },\r\n });\r\n\r\n cancelRelationshipBtn = button.build({\r\n id: \"cancelRelationshipBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => {\r\n POPUP.hide(editRelationshipPopup);\r\n showCard(tempConsumer);\r\n setupCard('Relationships');\r\n resetPopupValues();\r\n },\r\n });\r\n\r\n relationshipPopupBtnWrap = document.createElement(\"div\");\r\n relationshipPopupBtnWrap.classList.add(\"editRelationshipBtnWrap\");\r\n relationshipPopupBtnWrap.appendChild(saveRelationshipBtn);\r\n relationshipPopupBtnWrap.appendChild(AddRelationshipBtn);\r\n relationshipPopupBtnWrap.appendChild(cancelRelationshipBtn);\r\n editRelationshipPopup.appendChild(relationshipPopupBtnWrap);\r\n POPUP.show(editRelationshipPopup);\r\n await populateEditRelationshipDropdown();\r\n isValueChanged = false;\r\n checkRequiredFieldsEditConsumerRelationships();\r\n popUpSplitTransectionEventHandlers();\r\n }\r\n\r\n async function createPopupElements(i, getEditConsumerRelationshipsJSONResult) {\r\n hasADropdownN[i] = dropdown.build({\r\n id: 'hasADropdownN' + i,\r\n label: \"Has a:\",\r\n dropdownId: \"hasADropdownN\" + i,\r\n });\r\n\r\n whoIsDropdownN[i] = dropdown.build({\r\n id: 'whoIsDropdownN' + i,\r\n label: \"Who is:\",\r\n dropdownId: \"whoIsDropdownN\" + i,\r\n });\r\n\r\n startDateInputN[i] = input.build({\r\n id: 'startDateInputN' + i,\r\n type: 'date',\r\n label: 'Start Date:',\r\n style: 'secondary',\r\n value: getEditConsumerRelationshipsJSONResult == null ? UTIL.getTodaysDate() : moment(getEditConsumerRelationshipsJSONResult[i].startDate).format('YYYY-MM-DD'),\r\n });\r\n\r\n endDateInputN[i] = input.build({\r\n id: 'endDateInputN' + i,\r\n type: 'date',\r\n label: 'End Date:',\r\n style: 'secondary',\r\n value: getEditConsumerRelationshipsJSONResult == null ? '' : moment(getEditConsumerRelationshipsJSONResult[i].endDate).format('YYYY-MM-DD'),\r\n });\r\n\r\n deleteBtnN[i] = button.build({\r\n id: 'deleteBtnN' + i,\r\n type: 'text',\r\n icon: 'delete',\r\n style: 'secondary',\r\n callback: function (event) {\r\n isValueChanged = true;\r\n var deleteToId = Number(event.target.id.replace('deleteBtnN', ''));\r\n editRelationshipPopup.removeChild(btnWrapInputsN[deleteToId]);\r\n deletedIds.push(deleteToId);\r\n checkRequiredFieldsEditConsumerRelationships();\r\n popUpSplitTransectionEventHandlers();\r\n },\r\n });\r\n\r\n btnWrapInputsN[i] = document.createElement(\"div\");\r\n btnWrapInputsN[i].classList.add(\"editRelationshipInputWrap\");\r\n hasADropdownN[i].classList.add('width22Per');\r\n btnWrapInputsN[i].appendChild(hasADropdownN[i]);\r\n whoIsDropdownN[i].classList.add('width22Per');\r\n btnWrapInputsN[i].appendChild(whoIsDropdownN[i]);\r\n startDateInputN[i].classList.add('width23Per');\r\n btnWrapInputsN[i].appendChild(startDateInputN[i]);\r\n endDateInputN[i].classList.add('width23Per');\r\n btnWrapInputsN[i].appendChild(endDateInputN[i]);\r\n deleteBtnN[i].classList.add('width4Per');\r\n btnWrapInputsN[i].appendChild(deleteBtnN[i]);\r\n }\r\n\r\n function popUpSplitTransectionEventHandlers() {\r\n for (let i = 0; i < numberOfRows; i++) {\r\n startDateInputN[i].addEventListener('input', event => {\r\n isValueChanged = true;\r\n checkRequiredFieldsEditConsumerRelationships();\r\n });\r\n endDateInputN[i].addEventListener('input', event => {\r\n isValueChanged = true;\r\n checkRequiredFieldsEditConsumerRelationships();\r\n });\r\n\r\n hasADropdownN[i].addEventListener('change', async event => {\r\n isValueChanged = true;\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n var selectedDropdownId = event.target.id.replace('hasADropdownN', '');\r\n var selectedValue = event.target.value;\r\n await rePopulateEditRelationshipDropdown(selectedDropdownId, selectedValue, '');\r\n }\r\n checkRequiredFieldsEditConsumerRelationships();\r\n });\r\n whoIsDropdownN[i].addEventListener('change', event => {\r\n isValueChanged = true;\r\n checkRequiredFieldsEditConsumerRelationships();\r\n });\r\n }\r\n }\r\n\r\n function checkRequiredFieldsEditConsumerRelationships() {\r\n for (let i = 0; i < numberOfRows; i++) {\r\n var hasA = hasADropdownN[i].querySelector('#hasADropdownN' + i);\r\n var whoIs = whoIsDropdownN[i].querySelector('#whoIsDropdownN' + i);\r\n var startDate = startDateInputN[i].querySelector('#startDateInputN' + i);\r\n var endDate = endDateInputN[i].querySelector('#endDateInputN' + i);\r\n\r\n if (hasA.value === '') {\r\n hasADropdownN[i].classList.add('errorPopup');\r\n } else {\r\n hasADropdownN[i].classList.remove('errorPopup');\r\n }\r\n\r\n if (whoIs.value === '') {\r\n whoIsDropdownN[i].classList.add('errorPopup');\r\n } else {\r\n whoIsDropdownN[i].classList.remove('errorPopup');\r\n }\r\n\r\n if (startDate.value === '' || (endDate.value != '' && startDate.value > endDate.value)) {\r\n startDateInputN[i].classList.add('errorPopup');\r\n } else {\r\n startDateInputN[i].classList.remove('errorPopup');\r\n }\r\n }\r\n setBtnStatusEditConsumerRelationships();\r\n }\r\n\r\n function setBtnStatusEditConsumerRelationships() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n saveRelationshipBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n if (isValueChanged)\r\n saveRelationshipBtn.classList.remove('disabled');\r\n else\r\n saveRelationshipBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n async function populateEditRelationshipDropdown() {\r\n const {\r\n getRelationshipsNameJSONResult: RelationshipsName,\r\n } = await rosterAjax.getRelationshipsName();\r\n dataName = RelationshipsName.map((relationshipsName) => ({\r\n id: relationshipsName.personID,\r\n value: relationshipsName.personID,\r\n text: relationshipsName.name,\r\n style: relationshipsName.statusCode != 'A' && relationshipsName.statusCode != null ? 'italic' : ''\r\n }));\r\n dataName.unshift({ id: null, value: '', text: '' });\r\n\r\n const {\r\n getRelationshipsTypeJSONResult: RelationshipsType,\r\n } = await rosterAjax.getRelationshipsType();\r\n dataType = RelationshipsType.map((relationshipsType) => ({\r\n id: relationshipsType.typeID,\r\n value: relationshipsType.typeID,\r\n text: relationshipsType.description \r\n }));\r\n dataType.unshift({ id: null, value: '', text: '' });\r\n for (let i = 0; i < numberOfRows; i++) {\r\n dropdown.populate(\"hasADropdownN\" + i, dataType, consumerRelationships[i] != undefined ? consumerRelationships[i].typeID : '');\r\n\r\n if ($.session.applicationName === 'Gatekeeper' && consumerRelationships[i] != undefined && consumerRelationships[i].typeID != '') {\r\n await rePopulateEditRelationshipDropdown(i, consumerRelationships[i].typeID, consumerRelationships[i] != undefined ? consumerRelationships[i].personID : '')\r\n } else {\r\n dropdown.populateStyle(\"whoIsDropdownN\" + i, dataName, consumerRelationships[i] != undefined ? consumerRelationships[i].personID : '');\r\n }\r\n }\r\n }\r\n\r\n async function rePopulateEditRelationshipDropdown(selectedDropdownId, selectedValue , personId) {\r\n const {\r\n getRelationshipsNameByIDJSONResult: RelationshipsName,\r\n } = await rosterAjax.getRelationshipsNameByID(selectedValue);\r\n\r\n dataName = RelationshipsName.map((relationshipsName) => ({\r\n id: relationshipsName.personID,\r\n value: relationshipsName.personID,\r\n text: relationshipsName.name,\r\n style: relationshipsName.statusCode != 'A' && relationshipsName.statusCode != null ? 'italic' : ''\r\n }));\r\n dataName.unshift({ id: null, value: '', text: '' });\r\n dropdown.populateStyle(\"whoIsDropdownN\" + selectedDropdownId, dataName, personId);\r\n }\r\n\r\n async function editRelationshipSaveData() {\r\n consumerRelationshipsNew = [];\r\n for (let i = 0; i < numberOfRows; i++) {\r\n var hasA = hasADropdownN[i].querySelector('#hasADropdownN' + i);\r\n var whoIs = whoIsDropdownN[i].querySelector('#whoIsDropdownN' + i);\r\n var startDate = startDateInputN[i].querySelector('#startDateInputN' + i);\r\n var endDate = endDateInputN[i].querySelector('#endDateInputN' + i);\r\n\r\n if (hasA.value !== '' && !deletedIds.includes(i)) {\r\n consumerRelationshipsNew.push({\r\n \"consumerId\": consumerId,\r\n \"endDate\": endDate.value,\r\n \"personID\": whoIs.options[whoIs.selectedIndex].id,\r\n \"startDate\": startDate.value,\r\n \"typeID\": hasA.options[hasA.selectedIndex].id\r\n });\r\n }\r\n }\r\n\r\n\r\n for (let j = 0; j < consumerRelationshipsNew.length; j++) {\r\n for (let i = 0; i < consumerRelationships.length; i++) {\r\n\r\n archiveConsumerRelationships[i].endDate = consumerRelationships[i].endDate == '' ? '' : moment(consumerRelationships[i].endDate).format('YYYY-MM-DD');\r\n archiveConsumerRelationships[i].startDate = moment(consumerRelationships[i].startDate).format('YYYY-MM-DD');\r\n\r\n if (archiveConsumerRelationships[i].endDate == consumerRelationshipsNew[j].endDate && consumerRelationships[i].personID == consumerRelationshipsNew[j].personID\r\n && moment(consumerRelationships[i].startDate).format('YYYY-MM-DD') == consumerRelationshipsNew[j].startDate && consumerRelationships[i].typeID == consumerRelationshipsNew[j].typeID) {\r\n const index = archiveConsumerRelationships.indexOf(archiveConsumerRelationships[i]);\r\n archiveConsumerRelationships.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n await rosterAjax.insertEditRelationship(consumerRelationshipsNew, archiveConsumerRelationships, consumerId);\r\n resetPopupValues();\r\n }\r\n\r\n function resetPopupValues() {\r\n btnWrapInputsN = [];\r\n hasADropdownN = [];\r\n startDateInputN = [];\r\n whoIsDropdownN = [];\r\n endDateInputN = [];\r\n deleteBtnN = [];\r\n consumerRelationships = [];\r\n consumerRelationshipsNew = [];\r\n deletedIds = [];\r\n archiveConsumerRelationships = []\r\n }\r\n\r\n // workflow\r\n async function populateWorkflowSection(section) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n rosterWorkflow.init(consumerId, consumerName, ({ workflowViewer, addWorkflowBtn }) => {\r\n sectionInner.innerHTML = '';\r\n sectionInner.appendChild(workflowViewer);\r\n sectionInner.appendChild(addWorkflowBtn);\r\n });\r\n\r\n const { workflowViewer, addWorkflowBtn } = await rosterWorkflow.getWorkflowScreen();\r\n\r\n sectionInner.appendChild(workflowViewer);\r\n sectionInner.appendChild(addWorkflowBtn);\r\n }\r\n\r\n // *schedule\r\n function populateScheduleTable(sectionInner, locationId) {\r\n function populateTable(sectionInner, schedule) {\r\n var showWeekOne = !schedule.isWeekOneEmpty;\r\n var showWeekTwo = !schedule.isWeekTwoEmpty;\r\n\r\n var tableWrap = document.querySelector('.consumerScheduleTable');\r\n if (!tableWrap) {\r\n var tableWrap = document.createElement('div');\r\n tableWrap.classList.add('consumerScheduleTable');\r\n } else {\r\n tableWrap.innerHTML = '';\r\n }\r\n\r\n if (!showWeekOne && !showWeekTwo) {\r\n tableWrap.innerHTML = `

    There is nothing scheduled for this location

    `;\r\n }\r\n\r\n var columnHeadings = ['sun', 'mon', 'tues', 'wed', 'thurs', 'fri', 'sat'];\r\n var scheduleTable1 = table.build({\r\n tableId: 'consumerScheduleWeekOne',\r\n columnHeadings,\r\n });\r\n var scheduleTable2 = table.build({\r\n tableId: 'consumerScheduleWeekTwo',\r\n columnHeadings,\r\n });\r\n\r\n // Populate table\r\n var table1Data = orderScheduleData(schedule.weekOne);\r\n var table2Data = orderScheduleData(schedule.weekTwo);\r\n if (showWeekOne) table.populate(scheduleTable1, table1Data);\r\n if (showWeekTwo) table.populate(scheduleTable2, table2Data);\r\n\r\n // Append table\r\n if (showWeekOne) tableWrap.appendChild(scheduleTable1);\r\n if (showWeekTwo) tableWrap.appendChild(scheduleTable2);\r\n if (showWeekOne || showWeekTwo) sectionInner.appendChild(tableWrap);\r\n }\r\n rosterAjax.getConsumerSchedule(locationId, consumerId, function (scheduleResults) {\r\n var scheduleResultsObj = { weekOne: { start: {}, end: {} }, weekTwo: { start: {}, end: {} } };\r\n var scheduleResultsObjKeys = Object.keys(scheduleResults[0]);\r\n var isWeekOneEmpty = true;\r\n var isWeekTwoEmpty = true;\r\n scheduleResultsObjKeys.forEach(key => {\r\n if (key.indexOf('2') === -1) {\r\n if (key.indexOf('End') === -1) {\r\n var newkey = key.replace('Start', '');\r\n if (!scheduleResultsObj.weekOne.start[newkey]) {\r\n scheduleResultsObj.weekOne.start[newkey] = UTIL.convertFromMilitary(scheduleResults[0][key]);\r\n }\r\n } else {\r\n var newkey = key.replace('End', '');\r\n if (!scheduleResultsObj.weekOne.end[newkey]) {\r\n scheduleResultsObj.weekOne.end[newkey] = UTIL.convertFromMilitary(scheduleResults[0][key]);\r\n }\r\n }\r\n if (scheduleResults[0][key] !== '') isWeekOneEmpty = false;\r\n } else {\r\n if (key.indexOf('End') === -1) {\r\n var newkey = key.replace('Start2', '');\r\n if (!scheduleResultsObj.weekTwo.start[newkey]) {\r\n scheduleResultsObj.weekTwo.start[newkey] = UTIL.convertFromMilitary(scheduleResults[0][key]);\r\n }\r\n } else {\r\n var newkey = key.replace('End2', '');\r\n if (!scheduleResultsObj.weekTwo.end[newkey]) {\r\n scheduleResultsObj.weekTwo.end[newkey] = UTIL.convertFromMilitary(scheduleResults[0][key]);\r\n }\r\n }\r\n\r\n if (scheduleResults[0][key] !== '') isWeekTwoEmpty = false;\r\n }\r\n });\r\n scheduleResultsObj.isWeekOneEmpty = isWeekOneEmpty;\r\n scheduleResultsObj.isWeekTwoEmpty = isWeekTwoEmpty;\r\n populateTable(sectionInner, scheduleResultsObj);\r\n });\r\n }\r\n function populateScheduleSection(targetSection, locations) {\r\n var sectionInner = targetSection.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n if (locations.length === 0) {\r\n sectionInner.innerHTML = 'Consumer has no locations';\r\n return;\r\n }\r\n\r\n var locationDropdown = dropdown.build({\r\n id: 'consumerLocationScheduleDropdown',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n\r\n var locationDropdownData = locations.map(al => {\r\n return {\r\n value: al.id,\r\n text: al.name,\r\n };\r\n });\r\n\r\n dropdown.populate(locationDropdown, locationDropdownData);\r\n sectionInner.appendChild(locationDropdown);\r\n locationDropdown.addEventListener('change', function (event) {\r\n populateScheduleTable(sectionInner, event.target.value);\r\n });\r\n\r\n // populate table\r\n populateScheduleTable(sectionInner, locationDropdownData[0].value);\r\n }\r\n function populateIntellivueSection(section, data) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n var url;\r\n\r\n if (data.size === 0) {\r\n sectionInner.innerHTML = `

    No applications found.

    `;\r\n return;\r\n }\r\n\r\n var applicationList = document.createElement('h2');\r\n applicationList.innerHTML = 'Applications';\r\n applicationList.classList.add('applicationList');\r\n var lineBR = document.createElement('br');\r\n applicationList.appendChild(lineBR);\r\n\r\n sectionInner.appendChild(applicationList);\r\n\r\n for (let [k, v] of data) {\r\n var appId = k;\r\n\r\n intellivue.getViewURL(consumerId, appId, res => {\r\n var application = document.createElement('div');\r\n application.classList.add('application');\r\n application.innerHTML = `\r\n\t\t\t\t\t\t\t

    ${v}

    \r\n\t\t\t\t\t\t\t`;\r\n applicationList.appendChild(application);\r\n });\r\n }\r\n\r\n // data.forEach(appName => {\r\n // test = data.key;\r\n //\tvar appId = data.indexOf(appName) +1;\r\n //\tvar application = document.createElement('div');\r\n //\tapplication.classList.add('application');\r\n\r\n //\tintellivue.getViewURL(consumerId, appId, res => { application.innerHTML = `\r\n //\t

    ${appName}

    \r\n //\t`});\r\n\r\n //\tsectionInner.appendChild(application);\r\n //})\r\n\r\n sectionInner.appendChild(applicationList);\r\n }\r\n\r\n // Card Sections\r\n function buildSections(sections) {\r\n return sections.map((sec, index) => {\r\n // section\r\n var section = document.createElement('div');\r\n var className = [`${sec}Section`, `sec${index + 1}`];\r\n section.classList.add('infoCardSection', ...className);\r\n // section inner\r\n var cardInner = document.createElement('div');\r\n cardInner.classList.add('sectionInner');\r\n section.appendChild(cardInner);\r\n return section;\r\n });\r\n }\r\n function buildMenu() {\r\n var cardMenuList = document.createElement('div');\r\n cardMenuList.classList.add('menuList', 'sec0');\r\n\r\n var cardInner = document.createElement('div');\r\n cardInner.classList.add('sectionInner');\r\n menuNewList = [];\r\n if ($.session.DemographicsView === false) {\r\n // pointless reset based off above session variable\r\n $.session.DemographicsView = false;\r\n $.session.DemographicsRelationshipsView = false;\r\n $.session.viewLocationSchedulesKey = false;\r\n $.session.DemographicsViewAttachments = false;\r\n $.session.intellivuePermission = '';\r\n }\r\n\r\n var menuItems = [\r\n {\r\n title: 'Mark As Absent',\r\n icon: 'no',\r\n className: 'absent',\r\n visible: $.session.useAbsentFeature === 'Y' ? true : false,\r\n },\r\n {\r\n title: 'Change Photo',\r\n icon: 'camera',\r\n className: 'photo',\r\n visible: $.session.DemographicsPictureUpdate,\r\n },\r\n { title: 'Add To Group', icon: 'selectAll', className: 'group', visible: true },\r\n {\r\n title: 'Consumer Notes',\r\n icon: 'note',\r\n className: 'consumerNote',\r\n visible: $.session.DemographicsNotesView,\r\n },\r\n {\r\n title: 'Progress Notes',\r\n icon: 'note',\r\n className: 'progressNote',\r\n visible: $.session.useProgressNotes === 'Y' ? true : false,\r\n },\r\n {\r\n title: 'Demographics',\r\n icon: 'info',\r\n className: 'demographics',\r\n visible: $.session.DemographicsView,\r\n },\r\n {\r\n title: 'Relationships',\r\n icon: 'people',\r\n className: 'relationships',\r\n visible: $.session.DemographicsRelationshipsView,\r\n },\r\n {\r\n title: 'View Attachments',\r\n icon: 'attachment',\r\n className: 'attachments',\r\n visible: $.session.DemographicsViewAttachments,\r\n },\r\n {\r\n title: 'View Schedule',\r\n icon: 'calendar',\r\n className: 'schedule',\r\n visible: $.session.viewLocationSchedulesKey,\r\n },\r\n {\r\n title: 'Intellivue',\r\n icon: 'info',\r\n className: 'intellivue',\r\n visible: $.session.intellivuePermission === '' ? false : true,\r\n },\r\n {\r\n title: 'Workflow',\r\n icon: 'workflow',\r\n className: 'workflow',\r\n visible: true,\r\n },\r\n ];\r\n menuItems.forEach(mi => {\r\n if (!mi.visible) return;\r\n var item = document.createElement('div');\r\n item.setAttribute('data-info-task', mi.title);\r\n item.classList.add('menuList__item', mi.className);\r\n\r\n var itemTitle = document.createElement('p');\r\n itemTitle.innerHTML = mi.title;\r\n\r\n item.innerHTML = icons[mi.icon];\r\n item.appendChild(itemTitle);\r\n item.innerHTML += icons['keyArrowRight'];\r\n\r\n cardInner.appendChild(item);\r\n menuNewList.push(mi);\r\n });\r\n cardMenuList.appendChild(cardInner);\r\n\r\n return cardMenuList;\r\n }\r\n\r\n // Consumer Info Card\r\n function setupCardEvents(cardMenu) {\r\n cardMenu.addEventListener('click', event => {\r\n var action = event.target.dataset.infoTask;\r\n setupCard(action);\r\n });\r\n }\r\n\r\n async function setupCard(action) {\r\n var targetSection;\r\n currentScreen = action;\r\n var arraynumber = menuNewList.findIndex(x => x.title == currentScreen);\r\n previousScreen = menuNewList[arraynumber - 1] == undefined ? null : menuNewList[arraynumber - 1].title;\r\n nextScreen = menuNewList[arraynumber + 1] == undefined ? null : menuNewList[arraynumber + 1].title;\r\n\r\n if (previousScreen == null) {\r\n backwordBtn.classList.remove('hidden');\r\n backwordBtn.classList.add('disabled');\r\n } else {\r\n backwordBtn.classList.remove('hidden');\r\n backwordBtn.classList.remove('disabled');\r\n }\r\n if (nextScreen == null) {\r\n forwardBtn.classList.add('hidden');\r\n } else {\r\n forwardBtn.classList.remove('hidden');\r\n }\r\n\r\n document.getElementById('backwordBtn').innerHTML =\r\n menuNewList[arraynumber - 1] == undefined\r\n ? null\r\n : `${icons['arrowBack']}` + '' + menuNewList[arraynumber - 1].title;\r\n document.getElementById('forwardBtn').innerHTML =\r\n menuNewList[arraynumber + 1] == undefined\r\n ? null\r\n : menuNewList[arraynumber + 1].title + '' + `${icons['arrowNext']}`;\r\n\r\n switch (action) {\r\n case 'Mark As Absent': {\r\n targetSection = consumerInfoCard.querySelector('.absentSection');\r\n absentAjax.selectAbsent(\r\n {\r\n token: $.session.Token,\r\n consumerId,\r\n locationId,\r\n statusDate: selectedDate,\r\n },\r\n function (results) {\r\n populateAbsentSection(targetSection, results);\r\n },\r\n );\r\n break;\r\n }\r\n case 'Change Photo': {\r\n targetSection = consumerInfoCard.querySelector('.photoSection');\r\n populatePhotoSection(targetSection);\r\n break;\r\n }\r\n case 'Add To Group': {\r\n targetSection = consumerInfoCard.querySelector('.groupSection');\r\n populateGroupSection(targetSection);\r\n break;\r\n }\r\n case 'Consumer Notes': {\r\n targetSection = consumerInfoCard.querySelector('.notesSection');\r\n rosterAjax.getDemographicsNotes(consumerId, function (results) {\r\n populateNotesSection(targetSection, results);\r\n });\r\n break;\r\n }\r\n case 'Progress Notes': {\r\n targetSection = consumerInfoCard.querySelector('.progressNotesSection');\r\n progressNotes.init(targetSection, locationId, consumerId);\r\n progressNotes.getConsumerNotes(function (results) {\r\n populateProgressNotesSection(targetSection, results);\r\n });\r\n break;\r\n }\r\n case 'View Attachments': {\r\n targetSection = consumerInfoCard.querySelector('.attachmentsSection');\r\n rosterAjax.getAllAttachments(\r\n {\r\n token: $.session.Token,\r\n locationId: locationId,\r\n consumerId: consumerId,\r\n checkDate: selectedDate,\r\n },\r\n function (results) {\r\n populateAttachmentsSection(targetSection, results);\r\n },\r\n );\r\n break;\r\n }\r\n case 'View Schedule': {\r\n targetSection = consumerInfoCard.querySelector('.scheduleSection');\r\n rosterAjax.getConsumerScheduleLocation(consumerId, function (locationResults) {\r\n populateScheduleSection(targetSection, locationResults);\r\n });\r\n break;\r\n }\r\n case 'Demographics': {\r\n targetSection = consumerInfoCard.querySelector('.demographicsSection');\r\n rosterAjax.getConsumerDemographics(consumerId, function (results) {\r\n demographics.populate(targetSection, results[0], consumerId);\r\n });\r\n break;\r\n }\r\n case 'Relationships': {\r\n targetSection = consumerInfoCard.querySelector('.relationshipsSection');\r\n rosterAjax.getConsumerRelationships(consumerId, function (results) {\r\n populateRelationshipsSection(targetSection, results);\r\n });\r\n break;\r\n }\r\n case 'Intellivue': {\r\n targetSection = consumerInfoCard.querySelector('.intellivueSection');\r\n intellivue.getApplicationListHostedWithUser(function (results) {\r\n populateIntellivueSection(targetSection, results);\r\n });\r\n break;\r\n }\r\n case 'Workflow': {\r\n targetSection = consumerInfoCard.querySelector('.workflowSection');\r\n await populateWorkflowSection(targetSection);\r\n }\r\n }\r\n\r\n if (targetSection) {\r\n var sectionBackBtn = document.querySelector('.sectionBackBtn');\r\n sectionBackBtn.classList.remove('hidden');\r\n showCardSection(targetSection);\r\n }\r\n }\r\n\r\n function buildCard() {\r\n consumerInfoCard = document.createElement('div');\r\n consumerInfoCard.classList.add('consumerInfoCard');\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var navBtnWrap = document.createElement('div');\r\n navBtnWrap.classList.add('btnWrap');\r\n\r\n var backBtn = button.build({\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'arrowBack',\r\n classNames: ['sectionBackBtn', 'hidden'],\r\n callback: handleBackButtonClick,\r\n });\r\n var closeBtn = button.build({\r\n text: 'Close',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'close',\r\n classNames: 'consumerInfoCloseBtn',\r\n callback: closeCard,\r\n });\r\n\r\n backwordBtn = button.build({\r\n id: 'backwordBtn',\r\n text: previousScreen,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'consumerInfoBackwardBtn',\r\n });\r\n forwardBtn = button.build({\r\n id: 'forwardBtn',\r\n text: nextScreen,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'consumerInfoForwardBtn',\r\n });\r\n btnWrap.appendChild(backBtn);\r\n btnWrap.appendChild(closeBtn);\r\n\r\n navBtnWrap.appendChild(backwordBtn);\r\n navBtnWrap.appendChild(forwardBtn);\r\n\r\n var cardInner = document.createElement('div');\r\n cardInner.classList.add('cardInner');\r\n var cardHeading = document.createElement('div');\r\n cardHeading.classList.add('consumerInfoCard__heading');\r\n var cardBody = document.createElement('div');\r\n cardBody.classList.add('consumerInfoCard__body');\r\n\r\n var cardMenu = buildMenu();\r\n cardBody.appendChild(cardMenu);\r\n\r\n var sections = buildSections([\r\n 'absent',\r\n 'photo',\r\n 'group',\r\n 'notes',\r\n 'progressNotes',\r\n 'demographics',\r\n 'relationships',\r\n 'attachments',\r\n 'schedule',\r\n 'intellivue',\r\n 'workflow',\r\n ]);\r\n sections.forEach(section => {\r\n cardBody.appendChild(section);\r\n });\r\n\r\n // Build card\r\n cardInner.appendChild(cardHeading);\r\n cardInner.appendChild(navBtnWrap);\r\n cardInner.appendChild(cardBody);\r\n\r\n consumerInfoCard.appendChild(btnWrap);\r\n consumerInfoCard.appendChild(cardInner);\r\n\r\n setupCardEvents(cardMenu);\r\n\r\n modalOverlay = document.querySelector('.overlay');\r\n\r\n document.body.appendChild(consumerInfoCard);\r\n\r\n backwordBtn.classList.add('hidden');\r\n forwardBtn.classList.add('hidden');\r\n eventListeners();\r\n return consumerInfoCard;\r\n }\r\n\r\n function eventListeners() {\r\n // Add event listener to close the card when clicking outside of it\r\n modalOverlay.addEventListener('click', function (event) {\r\n closeCard();\r\n });\r\n forwardBtn.addEventListener('click', function (event) {\r\n handleBackButtonClick();\r\n setupCard(nextScreen);\r\n });\r\n backwordBtn.addEventListener('click', function (event) {\r\n handleBackButtonClick();\r\n setupCard(previousScreen);\r\n });\r\n }\r\n\r\n return {\r\n buildCard,\r\n showCard,\r\n showCardSubSection,\r\n toggleHideShowAbsentMenuSection,\r\n closeCard,\r\n };\r\n})();\r\n","const demographics = (function () {\r\n let demoData;\r\n let sectionInner;\r\n let unEditabled = [\r\n 'pathToEmployment',\r\n 'county',\r\n 'organization',\r\n 'organizationAddress',\r\n 'organizationPhone',\r\n 'generation',\r\n 'name',\r\n 'age',\r\n 'race',\r\n 'maritalStatus',\r\n 'gender',\r\n 'primaryLanguage',\r\n 'educationLevel',\r\n ];\r\n let gkOnly = ['cellPhone', 'generation'];\r\n\r\n let sectionLoad;\r\n let dataLoad;\r\n let consumerIDLoad;\r\n\r\n function stringAdd(string, start, newSubStr) {\r\n return string.slice(0, start) + newSubStr + string.slice(start);\r\n }\r\n\r\n function setCaretPosition(elem, caretPos) {\r\n if (elem != null) {\r\n if (elem.createTextRange) {\r\n var range = elem.createTextRange();\r\n range.move('character', caretPos);\r\n range.select();\r\n } else {\r\n if (elem.selectionStart) {\r\n elem.focus();\r\n elem.setSelectionRange(caretPos, caretPos);\r\n } else elem.focus();\r\n }\r\n }\r\n }\r\n\r\n function clearCurrentEdit() {\r\n // check for field in edit mode and switch to view\r\n const currentEdit = sectionInner.querySelector('.editMode');\r\n if (currentEdit) {\r\n // clear icon here so its only removed if they click on another field\r\n const saveIcons = [...currentEdit.querySelectorAll('.saveIcon')];\r\n saveIcons.forEach(si => {\r\n si.innerHTML = '';\r\n });\r\n\r\n currentEdit.classList.remove('editMode');\r\n }\r\n }\r\n function formatName(f, m, l) {\r\n const first = f;\r\n const middle = m ? m : '';\r\n const last = l;\r\n\r\n return `${first} ${middle} ${last}`;\r\n }\r\n function formatMaritalStatus(status) {\r\n switch (status) {\r\n case 'M':\r\n return 'Married';\r\n case 'S':\r\n return 'Single';\r\n case 'P':\r\n return 'Separated';\r\n case 'W':\r\n return 'Widowed';\r\n case 'D':\r\n return 'Divorced';\r\n case 'U':\r\n return 'Unkown';\r\n }\r\n }\r\n function formatPhoneNumber(number) {\r\n if (!number) return;\r\n const splitNumber = number\r\n .replace(/[^\\w\\s]/gi, '')\r\n .replaceAll(' ', '')\r\n .replaceAll('x', '');\r\n\r\n const phoneNumber = UTIL.formatPhoneNumber(splitNumber.substr(0, 10));\r\n const phoneExt = splitNumber.substr(10);\r\n\r\n const phone = phoneExt ? `${phoneNumber} (${phoneExt})` : `${phoneNumber}`;\r\n\r\n return phone;\r\n }\r\n function formatDOB(dob) {\r\n if (!dob) return;\r\n let formatDOB;\r\n if (dob !== '') {\r\n let newDate = new Date(dob);\r\n let theMonth = newDate.getMonth() + 1;\r\n formatDOB =\r\n UTIL.leadingZero(theMonth) +\r\n '/' +\r\n UTIL.leadingZero(newDate.getDate()) +\r\n '/' +\r\n newDate.getFullYear();\r\n } else {\r\n formatDOB = '';\r\n }\r\n\r\n return formatDOB;\r\n }\r\n function formatSSN(ssn) {\r\n let SSN = stringAdd(ssn, 3, '-');\r\n SSN = stringAdd(SSN, 6, '-');\r\n return SSN;\r\n }\r\n function formatOrganizationAddress(add1, add2, city, state, zip) {\r\n return `${add1 ? add1 : ''} ${add2 ? add2 : ''}, ${city ? city : ''} ${\r\n state ? state : ''\r\n }
    ${zip ? formatZipCode(zip) : ''}`;\r\n }\r\n function formatZipCode(zipCode) {\r\n const zip = zipCode.replace(/[^\\w\\s]/gi, '').replaceAll(' ', '');\r\n if (zip.length <= 5) {\r\n return zip;\r\n } else {\r\n return zip.slice(0, 5) + '-' + zip.slice(5);\r\n }\r\n }\r\n\r\n function setInputType(input, name) {\r\n // DATE\r\n if (name === 'dateOfBirth') {\r\n input.type = 'date';\r\n return;\r\n }\r\n // EMAIL\r\n if (name === 'email') {\r\n input.type = 'email';\r\n input.pattern = '[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,4}$';\r\n return;\r\n }\r\n // NUMBER\r\n if (\r\n name === 'zip' ||\r\n name === 'medicaidNumber' ||\r\n name === 'medicareNumber' ||\r\n name === 'residentNumber' ||\r\n name === 'localID'\r\n // name === 'consumerNumber'\r\n ) {\r\n input.type = 'number';\r\n input.pattern = '/^[+]?[(]?[0-9]{3}[)]?[-s.]?[0-9]{3}[-s.]?[0-9]{4,6}$/im';\r\n }\r\n // TEL\r\n if (\r\n name === 'primaryPhone' ||\r\n name === 'secondaryPhone' ||\r\n name === 'cellPhone' ||\r\n name === 'organizationPhone'\r\n ) {\r\n input.type = 'tel';\r\n return;\r\n }\r\n\r\n input.type = 'text';\r\n }\r\n function getAgeFromDOB(dob) {\r\n var currentDate = new Date();\r\n var birthDate = new Date(dob);\r\n var age = currentDate.getFullYear() - birthDate.getFullYear();\r\n var monthDiff = currentDate.getMonth() - birthDate.getMonth();\r\n if (monthDiff < 0 || (monthDiff === 0 && currentDate.getDate() < birthDate.getDate())) {\r\n age--;\r\n }\r\n return age;\r\n }\r\n function formatLabelText(text) {\r\n if (text.toLowerCase() === 'ssn') {\r\n return text.toUpperCase();\r\n }\r\n if (text.toLowerCase() === 'localid') {\r\n return 'Local ID';\r\n }\r\n \r\n if (text.toLowerCase() === 'consumernumber') {\r\n return 'Consumer #';\r\n }\r\n const splitText = text\r\n .match(/([A-Z]?[^A-Z]*)/g)\r\n .slice(0, -1)\r\n .map(t => UTIL.capitalize(t));\r\n return splitText.join(' ');\r\n }\r\n function formatViewInnerHTML(name, value) {\r\n if (!value) value = '';\r\n\r\n switch (name) {\r\n case 'city': {\r\n return `${value}, `;\r\n }\r\n case 'addressOne':\r\n case 'addressTwo':\r\n case 'state':\r\n case 'zip':\r\n case 'pathToEmployment': {\r\n return value;\r\n }\r\n default: {\r\n return `${formatLabelText(name)}: ${value}`;\r\n }\r\n }\r\n }\r\n\r\n function checkAlphabets(input) {\r\n for (const char of input) {\r\n if ((char >= \"a\" && char <= \"z\") ||\r\n (char >= \"A\" && char <= \"Z\")) { \r\n return true;\r\n }\r\n }\r\n return false; \r\n } \r\n\r\n function formatDataForDisplay(data) {\r\n const pathToEmployment = data.pathToEmployment;\r\n\r\n // Address\r\n const addressOne = data.addressone;\r\n const addressTwo = data.addresstwo;\r\n const city = data.mailcity;\r\n const state = data.mailstate;\r\n const zip = data.mailzipcode ? formatZipCode(data.mailzipcode) : '';\r\n \r\n // Contact Info \r\n const formattedPrimaryPhone = data.primaryphone == '' ? '' : formatPhoneNumber(data.primaryphone); \r\n primaryPhone = formattedPrimaryPhone == '' || checkAlphabets(formattedPrimaryPhone) == true ? '' : `${formattedPrimaryPhone} ${icons.phone}`;\r\n\r\n const formattedSecondaryPhone = data.secondaryphone == '' ? '' : formatPhoneNumber(data.secondaryphone);\r\n secondaryPhone = formattedSecondaryPhone == '' || checkAlphabets(formattedSecondaryPhone) == true ? '' : `${formattedSecondaryPhone} ${icons.phone}`;\r\n\r\n cellPhone = data.cellphone == '' ? '' : formatPhoneNumber(data.cellphone);\r\n cellPhone = (cellPhone === '%' || cellPhone === '' || checkAlphabets(cellPhone) == true) ? '' : `${cellPhone} ${icons.phone}`;\r\n\r\n const email = data.email == '' ? '' : `${data.email} ${icons.Email}`;\r\n\r\n \r\n // Additional Info\r\n const dateOfBirth = formatDOB(data.DOB);\r\n const socialSecurityNumber = formatSSN(data.SSN);\r\n const medicaidNumber = data.MedicaidNumber;\r\n const medicareNumber = data.MedicareNumber;\r\n const residentNumber = data.ResidentNumber;\r\n const consumerNumber = data.consumerNumber;\r\n const localID = data.localID;\r\n\r\n // Organization Info\r\n const county = data.County;\r\n const organization = data.orgName;\r\n const organizationAddress = formatOrganizationAddress(\r\n data.orgAdd1,\r\n data.orgAdd2,\r\n data.orgCity,\r\n data.orgState,\r\n data.orgZipCode,\r\n );\r\n const formattedOrganizationPhone = data.orgPrimaryPhone == '' ? '' : formatPhoneNumber(data.orgPrimaryPhone);\r\n organizationPhone = formattedOrganizationPhone == '' || checkAlphabets(formattedOrganizationPhone) == true ? '' : `${formattedOrganizationPhone} ${icons.phone}`;\r\n\r\n // Demographic Info\r\n const name = formatName(data.firstname, data.middlename, data.lastname);\r\n // const firstName = data.firstname;\r\n // const middleName = data.middlename;\r\n // const lastName = data.lastname;\r\n\r\n const generation = data.generation;\r\n const age = getAgeFromDOB(data.DOB);\r\n const race = data.race;\r\n const maritalStatus = formatMaritalStatus(data.maritalStatus);\r\n const gender = data.gender;\r\n const primaryLanguage = data.language;\r\n const educationLevel = data.educationLevel;\r\n\r\n return {\r\n pathToEmployment,\r\n // Address\r\n address: {\r\n addressOne,\r\n addressTwo,\r\n city,\r\n state,\r\n zip,\r\n },\r\n // Contact Info\r\n contact: {\r\n primaryPhone,\r\n secondaryPhone,\r\n cellPhone,\r\n email,\r\n },\r\n // Additional Info\r\n additional: {\r\n dateOfBirth,\r\n medicaidNumber,\r\n medicareNumber,\r\n residentNumber,\r\n localID,\r\n consumerNumber,\r\n ssn: socialSecurityNumber,\r\n },\r\n // Organization Info\r\n organization: {\r\n county,\r\n organization,\r\n organizationAddress,\r\n organizationPhone,\r\n },\r\n // Demographic Info\r\n demographic: {\r\n name,\r\n generation,\r\n age,\r\n race,\r\n maritalStatus,\r\n gender,\r\n primaryLanguage,\r\n educationLevel,\r\n },\r\n };\r\n }\r\n\r\n function buildInputGroupWrap(title) {\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('inputGroupWrap', `${title.replaceAll(' ', '').toLowerCase()}`);\r\n\r\n const heading = document.createElement('h3');\r\n heading.innerText = title; \r\n wrap.appendChild(heading);\r\n\r\n wrap.addEventListener('click', e => {\r\n if (!$.session.DemographicsUpdate) return;\r\n\r\n // if (title === 'Additional Info') return;\r\n\r\n if (e.target.classList.contains('inputGroup')) {\r\n if (e.target.classList.contains('unEditabled')) return;\r\n clearCurrentEdit();\r\n // set target to edit mode\r\n if (title !== 'Address') {\r\n if (!e.target.classList.contains('editMode')) {\r\n e.target.classList.add('editMode');\r\n }\r\n } else {\r\n if (!wrap.classList.contains('editMode')) {\r\n wrap.classList.add('editMode');\r\n }\r\n }\r\n }\r\n });\r\n\r\n return wrap;\r\n }\r\n function buildInputGroup(name, value) {\r\n // Input Group\r\n const inputGroup = document.createElement('div');\r\n inputGroup.classList.add('inputGroup', `${name.match(/([A-Z]?[^A-Z]*)/g)[0]}`);\r\n\r\n // view element\r\n const viewElement = document.createElement('p');\r\n viewElement.classList.add('view');\r\n viewElement.innerHTML = formatViewInnerHTML(name, value);\r\n\r\n // edit element\r\n let editElement;\r\n if (!unEditabled.includes(name) || !$.session.DemographicsUpdate) {\r\n editElement = document.createElement('div');\r\n editElement.classList.add('edit');\r\n\r\n if (!value || value === ' ') {\r\n value = '';\r\n } else {\r\n if (name.includes('Phone') || name.includes('email')) {\r\n const phoneNumberEndIndex = value.indexOf(' {\r\n if (name === 'email') {\r\n const validateEmail = email => {\r\n return email.match(\r\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\r\n );\r\n };\r\n\r\n if (!validateEmail(e.target.value)) {\r\n editElement.classList.add('invalid');\r\n } else {\r\n editElement.classList.remove('invalid');\r\n }\r\n }\r\n if (name === 'ssn') {\r\n let validSocial = false;\r\n let value = e.target.value.replaceAll('-', '').slice(0, 9);\r\n\r\n if (value.length === 9) {\r\n validSocial = true;\r\n }\r\n\r\n let social;\r\n\r\n if (value.length >= 4 && value.length <= 5) {\r\n social = stringAdd(value, 3, '-');\r\n e.target.value = social;\r\n }\r\n if (value.length >= 6) {\r\n social = stringAdd(value, 3, '-');\r\n social = stringAdd(social, 6, '-');\r\n e.target.value = social;\r\n }\r\n\r\n if (validSocial) {\r\n editElement.classList.remove('invalid');\r\n } else {\r\n editElement.classList.add('invalid');\r\n }\r\n }\r\n if (name === 'primaryPhone' || name === 'secondaryPhone' || name === 'cellPhone') {\r\n let validPhone = false;\r\n let value = e.target.value\r\n .replace(/[^\\w\\s]/gi, '')\r\n .replaceAll(' ', '')\r\n .slice(0, 15);\r\n\r\n let phoneNumber;\r\n\r\n if (value.length >= 4 && value.length <= 6) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n e.target.value = phoneNumber;\r\n }\r\n if (value.length >= 7 && value.length <= 10) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n phoneNumber = stringAdd(phoneNumber, 7, '-');\r\n e.target.value = phoneNumber;\r\n }\r\n\r\n if (value.length > 0) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n phoneNumber = stringAdd(phoneNumber, 7, '-');\r\n phoneNumber = stringAdd(phoneNumber, 12, ' (');\r\n phoneNumber = stringAdd(phoneNumber, phoneNumber.length + 1, ')');\r\n e.target.value = phoneNumber;\r\n\r\n setCaretPosition(e.target, phoneNumber.length - 1);\r\n\r\n validPhone = true;\r\n }\r\n // const validatePhone = phone => {\r\n // return phone.match(/^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/);\r\n // };\r\n if (!validPhone) {\r\n editElement.classList.add('invalid');\r\n } else {\r\n editElement.classList.remove('invalid');\r\n }\r\n }\r\n });\r\n\r\n input.addEventListener('focusout', async e => {\r\n // check for invalid calss\r\n if (e.target.parentElement.classList.contains('invalid')) return;\r\n\r\n let saveValue = e.target.value;\r\n // show spinner\r\n PROGRESS__ANYWHERE.init();\r\n PROGRESS__ANYWHERE.SPINNER.show(saveIcon);\r\n if (name === 'primaryPhone' || name === 'secondaryPhone' || name === 'cellPhone') {\r\n const splitNumber = e.target.value.split(' ');\r\n const phoneNumber = splitNumber[0].replace(/[^\\w\\s]/gi, '');\r\n\r\n let phoneExt;\r\n if (splitNumber[1] !== undefined) {\r\n phoneExt = splitNumber[1].replace('(', '').replace(')', '');\r\n }\r\n\r\n saveValue = `${phoneNumber}${phoneExt}`;\r\n }\r\n if (name === 'ssn') {\r\n saveValue = e.target.value.replaceAll('-', '');\r\n }\r\n if (name === 'localId') {\r\n saveValue = e.target.value\r\n }\r\n // save value\r\n const success = await rosterAjax.updateConsumerDemographics({\r\n field: name,\r\n newValue: saveValue,\r\n consumerId,\r\n applicationName: $.session.applicationName,\r\n });\r\n // show save icon\r\n if (success) { \r\n saveIcon.innerHTML = icons['checkmark'];\r\n saveIcon.classList.add('success');\r\n viewElement.innerHTML = formatViewInnerHTML(name, e.target.value);\r\n \r\n // below code Implement of Phone or email Icon does not immediately show when adding a phone or email #\r\n dataLoad.cellphone = name == 'cellPhone' ? saveValue : dataLoad.cellphone; \r\n dataLoad.secondaryphone = name == 'secondaryPhone' ? saveValue : dataLoad.secondaryphone;\r\n dataLoad.primaryphone = name == 'primaryPhone' ? saveValue : dataLoad.primaryphone;\r\n dataLoad.email = name == 'email' ? saveValue : dataLoad.email; \r\n dataLoad.addressone = name == 'addressOne' ? saveValue : dataLoad.addressone; \r\n dataLoad.addresstwo = name == 'addressTwo' ? saveValue : dataLoad.addresstwo;\r\n dataLoad.mailcity = name == 'city' ? saveValue : dataLoad.mailcity; \r\n dataLoad.mailstate = name == 'state' ? saveValue : dataLoad.mailstate;\r\n dataLoad.mailzipcode = name == 'zip' ? saveValue : dataLoad.mailzipcode; \r\n dataLoad.MedicaidNumber = name == 'medicaidNumber' ? saveValue : dataLoad.MedicaidNumber; \r\n dataLoad.MedicareNumber = name == 'medicareNumber' ? saveValue : dataLoad.MedicareNumber; \r\n dataLoad.ResidentNumber = name == 'residentNumber' ? saveValue : dataLoad.ResidentNumber; \r\n dataLoad.DOB = name == 'dateOfBirth' ? saveValue : dataLoad.DOB; \r\n dataLoad.SSN = name == 'ssn' ? saveValue : dataLoad.SSN; \r\n dataLoad.localID = name == 'localID' ? saveValue : dataLoad.localID; \r\n populateDemographicsSection(sectionLoad, dataLoad, consumerIDLoad); \r\n } else {\r\n saveIcon.innerHTML = icons['error'];\r\n saveIcon.classList.add('error');\r\n }\r\n });\r\n\r\n editElement.appendChild(label);\r\n editElement.appendChild(input);\r\n editElement.appendChild(saveIcon);\r\n } else {\r\n inputGroup.classList.add('unEditabled');\r\n }\r\n\r\n inputGroup.appendChild(viewElement);\r\n if (!unEditabled.includes(name)) inputGroup.appendChild(editElement);\r\n\r\n return { inputGroup, viewEle: viewElement };\r\n }\r\n\r\n function buildPathToEmployment() {\r\n const groupWrap = buildInputGroupWrap('Path To Employment');\r\n const { inputGroup } = buildInputGroup('pathToEmployment', demoData.pathToEmployment);\r\n groupWrap.appendChild(inputGroup);\r\n\r\n return groupWrap;\r\n }\r\n function buildAddressInfo() {\r\n const groupWrap = buildInputGroupWrap('Address');\r\n\r\n for (const prop in demoData.address) {\r\n // GK Only Check\r\n if ($.session.applicationName === 'Advisor') {\r\n if (gkOnly.includes(prop)) continue;\r\n }\r\n const propValue = demoData.address[prop];\r\n const { inputGroup } = buildInputGroup(prop, propValue);\r\n\r\n groupWrap.appendChild(inputGroup);\r\n }\r\n\r\n return groupWrap;\r\n }\r\n function buildContactInfo() {\r\n const groupWrap = buildInputGroupWrap('Contact Info');\r\n\r\n for (const prop in demoData.contact) {\r\n // GK Only Check\r\n if ($.session.applicationName === 'Advisor') {\r\n if (gkOnly.includes(prop)) continue;\r\n }\r\n const propValue = demoData.contact[prop];\r\n const { inputGroup } = buildInputGroup(prop, propValue);\r\n // append\r\n groupWrap.appendChild(inputGroup);\r\n }\r\n\r\n return groupWrap;\r\n }\r\n function buildAdditionalInfo() {\r\n const groupWrap = buildInputGroupWrap('Additional Info');\r\n const viewElements = {};\r\n\r\n for (const prop in demoData.additional) {\r\n // GK Only Check\r\n if ($.session.applicationName === 'Advisor') {\r\n if (gkOnly.includes(prop)) continue;\r\n }\r\n const propValue = demoData.additional[prop];\r\n const { inputGroup, viewEle } = buildInputGroup(prop, propValue);\r\n\r\n if (\r\n prop === 'ssn' ||\r\n prop === 'dateOfBirth' ||\r\n prop === 'medicaidNumber' ||\r\n prop === 'medicareNumber' ||\r\n prop === 'residentNumber' ||\r\n prop === 'consumerNumber' ||\r\n prop === 'localID'\r\n ) {\r\n viewEle.classList.add('hidden');\r\n }\r\n\r\n // cache view ele\r\n viewElements[prop] = viewEle;\r\n\r\n // append\r\n groupWrap.appendChild(inputGroup);\r\n }\r\n\r\n const showDetailsoBtn = button.build({\r\n text: 'Show Details',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n groupWrap.appendChild(showDetailsoBtn);\r\n\r\n showDetailsoBtn.addEventListener('click', function (e) {\r\n if (e.target.innerText.toLowerCase() === 'show details') {\r\n e.target.innerText = 'Hide Details';\r\n\r\n if ($.session.DemographicsViewDOB) {\r\n viewElements['dateOfBirth'].classList.remove('hidden');\r\n }\r\n if ($.session.DemographicsViewMedicaid) {\r\n viewElements['medicaidNumber'].classList.remove('hidden');\r\n }\r\n if ($.session.DemographicsViewMedicare) {\r\n viewElements['medicareNumber'].classList.remove('hidden');\r\n }\r\n if ($.session.DemographicsViewResident) {\r\n viewElements['residentNumber'].classList.remove('hidden');\r\n }\r\n if ($.session.DemographicsViewSSN) {\r\n viewElements['ssn'].classList.remove('hidden');\r\n }\r\n if ($.session.DemographicsViewConsumerNumber) {\r\n viewElements['consumerNumber'].classList.remove('hidden');\r\n }\r\n if ($.session.DemographicsViewLocalId) {\r\n viewElements['localID'].classList.remove('hidden');\r\n }\r\n } else {\r\n e.target.innerText = 'Show Details';\r\n\r\n viewElements['dateOfBirth'].classList.add('hidden');\r\n viewElements['medicaidNumber'].classList.add('hidden');\r\n viewElements['medicareNumber'].classList.add('hidden');\r\n viewElements['residentNumber'].classList.add('hidden');\r\n viewElements['ssn'].classList.add('hidden');\r\n viewElements['consumerNumber'].classList.add('hidden');\r\n viewElements['localID'].classList.add('hidden');\r\n }\r\n });\r\n\r\n return groupWrap;\r\n }\r\n function buildOrganizationInfo() {\r\n const groupWrap = buildInputGroupWrap('Organization Info');\r\n\r\n for (const prop in demoData.organization) {\r\n // GK Only Check\r\n if ($.session.applicationName === 'Advisor') {\r\n if (gkOnly.includes(prop)) continue;\r\n }\r\n const propValue = demoData.organization[prop];\r\n const { inputGroup } = buildInputGroup(prop, propValue);\r\n\r\n // append\r\n groupWrap.appendChild(inputGroup);\r\n }\r\n\r\n return groupWrap;\r\n }\r\n function buildDemographicInfo() {\r\n const groupWrap = buildInputGroupWrap('Demographic Info');\r\n\r\n for (const prop in demoData.demographic) {\r\n // GK Only Check\r\n if ($.session.applicationName === 'Advisor') {\r\n if (gkOnly.includes(prop)) continue;\r\n }\r\n const propValue = demoData.demographic[prop];\r\n const { inputGroup } = buildInputGroup(prop, propValue);\r\n\r\n // append\r\n groupWrap.appendChild(inputGroup);\r\n }\r\n\r\n return groupWrap;\r\n }\r\n\r\n function populateDemographicsSection(section, data, consumerID) { \r\n sectionLoad = section; \r\n dataLoad = data;\r\n consumerIDLoad = consumerID;\r\n\r\n consumerId = consumerID;\r\n demoData = formatDataForDisplay(data);\r\n isGK = $.session.applicationName === 'Gatekeeper';\r\n\r\n sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n const pathToEmployment = buildPathToEmployment();\r\n const addressInfo = buildAddressInfo();\r\n const contactInfo = buildContactInfo();\r\n const additionalInfo = buildAdditionalInfo();\r\n const organizationInfo = buildOrganizationInfo();\r\n const demographicInfo = buildDemographicInfo();\r\n\r\n sectionInner.appendChild(pathToEmployment);\r\n sectionInner.appendChild(addressInfo);\r\n sectionInner.appendChild(contactInfo);\r\n sectionInner.appendChild(additionalInfo);\r\n sectionInner.appendChild(organizationInfo);\r\n sectionInner.appendChild(demographicInfo);\r\n\r\n document.querySelector(\".demoPhones\").addEventListener(\"click\", function(event) {\r\n event.stopPropagation(); // Stop event propagation to the outer div\r\n });\r\n\r\n section.addEventListener('click', e => {\r\n if (\r\n !e.target.classList.contains('inputGroup') &&\r\n e.target.nodeName !== 'INPUT' &&\r\n e.target.nodeName !== 'LABLE'\r\n ) {\r\n clearCurrentEdit();\r\n }\r\n });\r\n }\r\n\r\n return {\r\n populate: populateDemographicsSection,\r\n };\r\n})();\r\n","var intellivue = (function(){\r\n var redirectPopup;\r\n\r\n function getLoginCredentials(consumerId) {\r\n data = {\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n userId: $.session.UserId,\r\n applicationName: $.session.applicationName,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getIntellivueAppId/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n data = response.getIntellivueAppIdResult;\r\n POPUP.hide(redirectPopup);\r\n window.open(data, '_blank');\r\n },\r\n });\r\n }\r\n\r\n //gets the app list to display. Pass it the token and $.session.UserId \r\n function getApplicationListHostedWithUser(callback) {\r\n data = {\r\n token: $.session.Token,\r\n userId: $.session.UserId \r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getApplicationListHostedWithUser/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n data = response.getApplicationListHostedWithUserResult;\r\n data = UTIL.parseXml(data);\r\n var test = [];\r\n var map = new Map();\r\n var applicationobjectArray = [].slice.call(data.getElementsByTagName('ApplicationEntry')); \r\n \r\n applicationobjectArray.forEach(Applications => {\r\n var appName = Applications.getAttribute('Name');\r\n var refId = Applications.getAttribute('RefID');\r\n test.push(appName);\r\n map.set(refId, appName);\r\n });\r\n callback(map);\r\n },\r\n });\r\n }\r\n\r\n function getViewURL(consumerId, appName, callback) {\r\n data = {\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n userId: $.session.UserId,\r\n appName: appName,\r\n applicationName: $.session.applicationName\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getIntellivueViewURL/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n // data = response.getIntellivueViewURLResult;\r\n // POPUP.hide(redirectPopup);\r\n // window.open(response.getIntellivueViewURLResult, '_blank');\r\n callback(response.getIntellivueViewURLResult) \r\n },\r\n });\r\n }\r\n \r\n function showIntellivueRedirectWarning() {\r\n redirectPopup = POPUP.build({\r\n header: 'You are being redirected outside Anywhere to Intellivue. If you are using a popup blocker please make sure it is disabled.'\r\n });\r\n \r\n POPUP.show(redirectPopup);\r\n }\r\n\r\n return {\r\n getLoginCredentials,\r\n showIntellivueRedirectWarning,\r\n getApplicationListHostedWithUser,\r\n getViewURL\r\n }\r\n})();","var locationNotes = (function () {\r\n //-DOM------------------\r\n //*all\r\n var allNotesPage;\r\n var allNotesList;\r\n //*single\r\n var singleNotePage;\r\n var singleNotesList;\r\n //-DATA-----------------\r\n var allNotesData;\r\n var singleNoteData;\r\n //-VALUES---------------\r\n var selectedLocation;\r\n var selectedLocationId;\r\n\r\n // UTIL\r\n //---------------------------------------------\r\n function formatTime(datecreated) {\r\n // datecreated = \"11/6/2019 8:49:11 AM\"\r\n var datecreatedArray = datecreated.split(' ');\r\n var time = datecreatedArray[1].split(':');\r\n time = `${time[0]}:${time[1]} ${datecreatedArray[2]}`;\r\n return time;\r\n }\r\n function sortDataByDate(data) {\r\n data.sort((a, b) => {\r\n if (a.datecreated && b.datecreated) {\r\n var dateArrayA = a.datecreated.split(' ');\r\n var dateArrayB = b.datecreated.split(' ');\r\n } else {\r\n var dateArrayA = a.Date_Entered.split(' ');\r\n var dateArrayB = b.Date_Entered.split(' ');\r\n }\r\n\r\n var dateA = dateArrayA[0];\r\n var dateB = dateArrayB[0];\r\n\r\n dateA = new Date(a.datecreated);\r\n dateB = new Date(b.datecreated);\r\n\r\n if (dateA > dateB) {\r\n return -1;\r\n } else if (dateA < dateB) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n return data;\r\n }\r\n function buildNoteImage() {\r\n return ``;\r\n }\r\n function buildNoteAuthorName(name) {\r\n return `

    ${name}

    `;\r\n }\r\n function buildNoteDateTime(date, time) {\r\n return `

    ${date}

    ${time}

    `;\r\n }\r\n function buildNoteTitle(title) {\r\n return `

    ${title}

    `;\r\n }\r\n function buildNoteText(text) {\r\n return `

    ${text}

    `;\r\n }\r\n function buildNoteDetails(image, name, dateTime) {\r\n var details = document.createElement('div');\r\n details.classList.add('locationNote__details');\r\n details.innerHTML = `${image}${name}${dateTime}`;\r\n return details;\r\n }\r\n function buildNoteMessageg(title, notePreview) {\r\n var message = document.createElement('div');\r\n message.classList.add('locationNote__message');\r\n message.innerHTML = `\r\n ${title}${notePreview}\r\n `;\r\n return message;\r\n }\r\n function buildNote(details, message) {\r\n var note = document.createElement('div');\r\n note.classList.add('locationNote');\r\n note.appendChild(details);\r\n note.appendChild(message);\r\n return note;\r\n }\r\n function buildTitleInput() {\r\n return input.build({\r\n label: 'Title',\r\n style: 'secondary',\r\n type: 'text',\r\n attributes: [{ key: 'maxlength', value: '250' }],\r\n });\r\n }\r\n function buildTextInput() {\r\n return input.build({\r\n label: 'Message',\r\n style: 'secondary',\r\n type: 'textarea',\r\n attributes: [{ key: 'maxlength', value: '10000' }],\r\n });\r\n }\r\n function buildSendBtn() {\r\n return button.build({\r\n text: 'Send',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n }\r\n\r\n // Single Note Page\r\n //---------------------------------------------\r\n function getSingleNoteData(noteId, callback) {\r\n locationNotesAjax.selectLocationNote(noteId, function (results) {\r\n singleNoteData = sortDataByDate(results);\r\n callback();\r\n });\r\n }\r\n function handleReplyToNoteBtnClick(noteId) {\r\n // build\r\n var notePopup = POPUP.build({});\r\n var noteTextInput = buildTextInput();\r\n var sendNoteBtn = buildSendBtn();\r\n notePopup.appendChild(noteTextInput);\r\n notePopup.appendChild(sendNoteBtn);\r\n // show\r\n POPUP.show(notePopup);\r\n // events\r\n var noteText;\r\n noteTextInput.addEventListener('change', event => {\r\n noteText = event.target.value;\r\n });\r\n sendNoteBtn.addEventListener('click', event => {\r\n locationNotesAjax.updateLocationNote(\r\n {\r\n token: $.session.Token,\r\n noteId: noteId,\r\n locationId: selectedLocationId,\r\n note: UTIL.removeUnsavableNoteText(noteText),\r\n },\r\n results => {\r\n POPUP.hide(notePopup);\r\n loadSingleNotePage(noteId);\r\n },\r\n );\r\n });\r\n }\r\n function populateSingleNotePage(noteId) {\r\n singleNoteData.forEach(note => {\r\n // data\r\n var noteDate = note.Date_Entered.split(' ')[0];\r\n var noteTime = formatTime(note.Date_Entered);\r\n var noteAuthor = `${note.firstname} ${note.lastname}`;\r\n var noteTitle = note.notetitle;\r\n var noteText = note.note;\r\n var empId = note.emp_id;\r\n // dom\r\n var image = buildNoteImage(empId);\r\n var name = buildNoteAuthorName(noteAuthor);\r\n var dateTime = buildNoteDateTime(noteDate, noteTime);\r\n var title = buildNoteTitle(noteTitle);\r\n var notePreview = buildNoteText(noteText);\r\n // details - img, name, date, time\r\n var details = buildNoteDetails(image, name, dateTime);\r\n // message - title & text\r\n var message = buildNoteMessageg(title, notePreview);\r\n\r\n var note = buildNote(details, message);\r\n\r\n singleNotesList.appendChild(note);\r\n });\r\n\r\n var topNav = document.createElement('div');\r\n topNav.classList.add('locationNotesTopNav');\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n var backToNotesMain = button.build({\r\n text: 'Back To Notes',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: 'backToRosterBtn',\r\n callback: function () {\r\n loadAllNotesPage();\r\n },\r\n });\r\n var newNoteBtn = button.build({\r\n text: 'New Note',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'newNoteBtn',\r\n callback: function () {\r\n handleReplyToNoteBtnClick(noteId);\r\n },\r\n });\r\n\r\n var locationLabel = document.createElement('div');\r\n locationLabel.classList.add('locationLabel');\r\n locationLabel.innerHTML = `

    ${selectedLocation.locationName}

    `;\r\n\r\n btnWrap.appendChild(backToNotesMain);\r\n btnWrap.appendChild(newNoteBtn);\r\n\r\n topNav.appendChild(btnWrap);\r\n topNav.appendChild(locationLabel);\r\n\r\n singleNotePage.appendChild(topNav);\r\n singleNotePage.appendChild(singleNotesList);\r\n }\r\n function buildSingleNotePage() {\r\n singleNotePage = document.createElement('div');\r\n singleNotePage.classList.add('locationSingleNotePage');\r\n singleNotePage.innerHTML = '';\r\n\r\n singleNotesList = document.createElement('div');\r\n singleNotesList.classList.add('locationNotesList');\r\n\r\n DOM.ACTIONCENTER.appendChild(singleNotePage);\r\n }\r\n function loadSingleNotePage(noteId) {\r\n getSingleNoteData(noteId, function () {\r\n DOM.clearActionCenter();\r\n buildSingleNotePage();\r\n populateSingleNotePage(noteId);\r\n });\r\n }\r\n\r\n // Main Page\r\n //---------------------------------------------\r\n function getLocationNotesData(callback) {\r\n locationNotesAjax.getLocationProgressNotes(selectedLocationId, function (results) {\r\n allNotesData = sortDataByDate(results);\r\n callback();\r\n });\r\n\r\n // locationNotesAjax.doesLocationHaveUnreadNotes(selectedLocationId, function(results) {\r\n // // hasNote: \"0\"\r\n // });\r\n }\r\n function handleNewNoteBtnClick() {\r\n // build\r\n var notePopup = POPUP.build({});\r\n var noteTitleInput = buildTitleInput();\r\n var noteTextInput = buildTextInput();\r\n var sendNoteBtn = buildSendBtn();\r\n notePopup.appendChild(noteTitleInput);\r\n notePopup.appendChild(noteTextInput);\r\n notePopup.appendChild(sendNoteBtn);\r\n // show\r\n POPUP.show(notePopup);\r\n // events\r\n var noteTitle;\r\n var noteText;\r\n noteTitleInput.addEventListener('change', event => {\r\n noteTitle = event.target.value;\r\n });\r\n noteTextInput.addEventListener('change', event => {\r\n noteText = event.target.value;\r\n });\r\n sendNoteBtn.addEventListener('click', event => {\r\n locationNotesAjax.insertLocationNote(\r\n {\r\n token: $.session.Token,\r\n noteTitle: UTIL.removeUnsavableNoteText(noteTitle),\r\n note: UTIL.removeUnsavableNoteText(noteText),\r\n locationId: selectedLocationId,\r\n },\r\n results => {\r\n POPUP.hide(notePopup);\r\n loadAllNotesPage();\r\n },\r\n );\r\n });\r\n }\r\n function populateAllNotesPage() {\r\n allNotesData.forEach(note => {\r\n // data\r\n var noteId = note.noteID;\r\n var noteRead = note.is_read === '1' ? true : false;\r\n var noteDate = note.datecreated.split(' ')[0];\r\n var noteTime = formatTime(note.datecreated);\r\n var noteAuthor = note.MainAuthor;\r\n var noteTitle = note.title;\r\n var noteText = note.note;\r\n var empId = note.empId;\r\n // dom\r\n var image = buildNoteImage(empId);\r\n var name = buildNoteAuthorName(noteAuthor);\r\n var dateTime = buildNoteDateTime(noteDate, noteTime);\r\n var title = buildNoteTitle(noteTitle);\r\n var notePreview = buildNoteText(noteText);\r\n // details - img, name, date, time\r\n var details = buildNoteDetails(image, name, dateTime);\r\n // message - title & text\r\n var message = buildNoteMessageg(title, notePreview);\r\n\r\n var note = buildNote(details, message);\r\n if (!noteRead) {\r\n note.classList.add('unreadNote');\r\n } else {\r\n note.classList.remove('unreadNote');\r\n }\r\n\r\n note.addEventListener('click', function () {\r\n note.classList.remove('unreadNote');\r\n locationNotesAjax.updateLocationNoteDateRead(noteId, function (results) {\r\n loadSingleNotePage(noteId);\r\n });\r\n });\r\n\r\n allNotesList.appendChild(note);\r\n });\r\n\r\n var topNav = document.createElement('div');\r\n topNav.classList.add('locationNotesTopNav');\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n var backToRoster = button.build({\r\n text: 'Back To Roster',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: 'backToRosterBtn',\r\n callback: function () {\r\n roster2.loadRosterInfo();\r\n },\r\n });\r\n var newNoteBtn = button.build({\r\n text: 'New Note',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'newNoteBtn',\r\n callback: handleNewNoteBtnClick,\r\n });\r\n\r\n var locationLabel = document.createElement('div');\r\n locationLabel.classList.add('locationLabel');\r\n locationLabel.innerHTML = `

    ${selectedLocation.locationName}

    `;\r\n\r\n btnWrap.appendChild(backToRoster);\r\n btnWrap.appendChild(newNoteBtn);\r\n\r\n topNav.appendChild(btnWrap);\r\n topNav.appendChild(locationLabel);\r\n\r\n allNotesPage.appendChild(topNav);\r\n allNotesPage.appendChild(allNotesList);\r\n }\r\n function buildAllNotesPage() {\r\n allNotesPage = document.createElement('div');\r\n allNotesPage.classList.add('locationAllNotesPage');\r\n allNotesPage.innerHTML = '';\r\n\r\n allNotesList = document.createElement('div');\r\n allNotesList.classList.add('locationNotesList');\r\n\r\n DOM.ACTIONCENTER.appendChild(allNotesPage);\r\n }\r\n function loadAllNotesPage() {\r\n selectedLocation = roster2.getSelectedLocationObj();\r\n selectedLocationId = selectedLocation.locationId;\r\n\r\n getLocationNotesData(function () {\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('roster-location-notes');\r\n buildAllNotesPage();\r\n populateAllNotesPage();\r\n });\r\n }\r\n\r\n return {\r\n loadAllNotesPage,\r\n };\r\n})();\r\n","var locationNotesAjax = (function() {\r\n\tfunction deleteLocationNote(noteId) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteLocationNote/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction doesLocationHaveUnreadNotes(locationId, callback) {\r\n\t\tvar daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\t\tvar datum = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tlocationId: locationId,\r\n\t\t\tdaysBackDate: daysBackDate,\r\n\t\t};\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/checkIfLocationHasUnreadNotes/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\", \"daysBackDate\":\"' + daysBackDate + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar results = JSON.parse(response.checkIfLocationHasUnreadNotesResult);\r\n\t\t\t\tcallback(results);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction getLocationsWithUnreadNotes(callback) {\r\n\t\tvar daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\t\treturn $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getLocationsWithUnreadNotes/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"daysBackDate\":\"' + daysBackDate + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n });\r\n // $.ajax({\r\n\t\t// \ttype: 'POST',\r\n\t\t// \turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getLocationsWithUnreadNotes/',\r\n\t\t// \tdata: '{\"token\":\"' + $.session.Token + '\", \"daysBackDate\":\"' + daysBackDate + '\"}',\r\n\t\t// \tcontentType: 'application/json; charset=utf-8',\r\n\t\t// \tdataType: 'json',\r\n\t\t// \tsuccess: function(response, status, xhr) {\r\n\t\t// \t\tvar results = JSON.parse(response.getLocationsWithUnreadNotesResult);\r\n\t\t// \t\tcallback(results);\r\n\t\t// \t},\r\n\t\t// });\r\n\t}\r\n\tfunction getLocationsWithUnreadNotesAndPermission(callback) {\r\n\t\tvar daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol +\r\n\t\t\t\t'://' +\r\n\t\t\t\t$.webServer.address +\r\n\t\t\t\t':' +\r\n\t\t\t\t$.webServer.port +\r\n\t\t\t\t'/' +\r\n\t\t\t\t$.webServer.serviceName +\r\n\t\t\t\t'/getLocationsWithUnreadNotesAndPermission/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"daysBackDate\":\"' + daysBackDate + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar results = JSON.parse(response.getLocationsWithUnreadNotesAndPermissionResult);\r\n\t\t\t\tcallback(results);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction getLocationProgressNotes(locationId, callback) {\r\n\t\tvar daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\t\tvar datum = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tlocationId: locationId,\r\n\t\t\tdaysBackDate: daysBackDate,\r\n\t\t};\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: '/' + $.webServer.serviceName + '/selectNotesByLocation/',\r\n\t\t\tdata: JSON.stringify(datum),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar results = JSON.parse(response.selectNotesByLocationResult);\r\n\t\t\t\tcallback(results);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction getLocationProgressNotesAndPermission(locationId, callback) {\r\n\t\tvar daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\t\tvar datum = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tlocationId: locationId,\r\n\t\t\tdaysBackDate: daysBackDate,\r\n\t\t};\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: '/' + $.webServer.serviceName + '/selectNotesByLocationAndPermission/',\r\n\t\t\tdata: JSON.stringify(datum),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar results = JSON.parse(response.selectNotesByLocationAndPermissionResult);\r\n\t\t\t\tcallback(results);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction insertLocationNote(insertData, callback) {\r\n\t\t// used to add a new note\r\n\t\t//insertData = token, noteTitle, note, locationId\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertLocationNote/',\r\n\t\t\tdata: JSON.stringify(insertData),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction selectLocationNote(noteId, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/selectLocationNote/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.parse(response.selectLocationNoteResult);\r\n\t\t\t\tif (callback) callback(res);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction updateLocationNoteDateRead(noteId, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateLocationNoteDateRead/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction updateLocationNote(updateData, callback) {\r\n\t\t// used to add a new note within a note\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateLocationNote/',\r\n\t\t\tdata: JSON.stringify(updateData),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tif (callback) callback(res);\r\n\t\t\t},\r\n\t\t});\r\n }\r\n\r\n\treturn {\r\n\t\tdoesLocationHaveUnreadNotes,\r\n getLocationsWithUnreadNotes,\r\n\t\tgetLocationProgressNotes,\r\n\t\tinsertLocationNote,\r\n\t\tselectLocationNote,\r\n\t\tupdateLocationNoteDateRead,\r\n\t\tupdateLocationNote,\r\n\t\tgetLocationProgressNotesAndPermission,\r\n\t\tgetLocationsWithUnreadNotesAndPermission,\r\n\t};\r\n})();\r\n","var progressNotes = (function() {\r\n\tvar section;\r\n\tvar VIEW_ALL_NOTES_SECTION;\r\n\tvar VIEW_SINGLE_NOTE_SECTION;\r\n\tvar ADD_NOTE_SECTION;\r\n\tvar ADD_MESSAGE_SECTION;\r\n\tvar ADD_NOTE_BTN;\r\n\tvar ADD_MESSAGE_BTN;\r\n\t//*add note\r\n\tvar title;\r\n\tvar message;\r\n\t//*add message\r\n\tvar messageText;\r\n\t// Data & Values\r\n\tvar selectedNoteId;\r\n\tvar selectedLocationId;\r\n\tvar selectedConsumerId;\r\n\tvar newNoteTitle;\r\n\tvar newNoteText;\r\n\tvar newMessageText;\r\n\tvar consumerNotes;\r\n\tvar singleNoteData;\r\n\tvar hasUnreadNote;\r\n\r\n\t// Workers\r\n\tfunction addNewNote() {\r\n\t\tvar insertData = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tnoteTitle: UTIL.removeUnsavableNoteText(newNoteTitle),\r\n\t\t\tnote: UTIL.removeUnsavableNoteText(newNoteText),\r\n\t\t\tlocationId: selectedLocationId,\r\n\t\t\tconsumerId: selectedConsumerId,\r\n\t\t\thideNote: \"N\",\r\n\t\t};\r\n\r\n\t\tprogressNotesAjax.insertConsumerNote(insertData, function(results) {\r\n\t\t\tgetConsumerNotes(populateViewNotesSection);\r\n\t\t});\r\n\t}\r\n\tfunction addNewMessage() {\r\n\t\tvar insertData = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tnote: UTIL.removeUnsavableNoteText(newMessageText),\r\n\t\t\tnoteId: selectedNoteId,\r\n\t\t\tconsumerId: selectedConsumerId,\r\n\t\t};\r\n\r\n\t\tprogressNotesAjax.updateConsumerNote(insertData, function(results) {\r\n\t\t\tgetSingleNoteData(selectedNoteId, populateViewSingleNoteSection);\r\n\t\t});\r\n\t}\r\n\tfunction getConsumerNotes(callback) {\r\n\t\tfunction cacheNotes(results) {\r\n\t\t\tconsumerNotes = results;\r\n\t\t\tcallback(results);\r\n\t\t}\r\n\r\n\t\tprogressNotesAjax.selectNotesByConsumerAndLocation(selectedConsumerId, selectedLocationId, cacheNotes);\r\n\t}\r\n\tfunction getSingleNoteData(noteId, callback) {\r\n\t\tfunction cacheSingleNoteData(results) {\r\n\t\t\tsingleNoteData = results;\r\n\t\t\tcallback(results);\r\n\t\t}\r\n\r\n\t\tprogressNotesAjax.selectConsumerNote(noteId, cacheSingleNoteData);\r\n\t}\r\n\t function markNoteAsRead(noteid, consumerid, noteElement) {\r\n\r\n\t\tprogressNotesAjax.updateConsumerNoteDateRead(noteid); \r\n\r\n\t\tvar consumersWithUnreadNotes = roster2.getConsumersWithUnreadNotes();\r\n\t\thasUnreadNote = consumersWithUnreadNotes[consumerid];\r\n\t\tvar noteMenuItem = document.getElementById(noteid)\r\n\t\tif (!hasUnreadNote) {\r\n\t\t\tvar menuItem = document.querySelector('.menuList .progressNote');\r\n\t\t\tmenuItem.classList.remove('needsAttention');\t\r\n\t\t}\r\n\r\n\t\tif (noteMenuItem) {\r\n\t\t\tnoteMenuItem.classList.remove('unreadNote');\r\n\t\t}\r\n\t\t// noteElement.classList.remove('unreadNote');\r\n\t\t \r\n\t}\r\n\tfunction shortenNotePreview(noteString) {\r\n\t\tvar note = noteString.split(' ');\r\n\t\tvar shortenedNote = note\r\n\t\t\t.filter((note, index) => {\r\n\t\t\t\treturn index <= 40;\r\n\t\t\t})\r\n\t\t\t.join(' ');\r\n\r\n\t\tif (note.length >= 39) {\r\n\t\t\tshortenedNote += `...`;\r\n\t\t}\r\n\r\n\t\treturn shortenedNote;\r\n\t}\r\n\tfunction createConsumersWithUnreadNotesObj(results) {\r\n\t\tvar newObj = {};\r\n\r\n if (!results) return newObj;\r\n \r\n\t\tresults.forEach(r => {\r\n\t\t\tif ($.session.HideProgressNotes || (!$.session.HideProgressNotes && (r.hideNote === \"\" || r.hideNote === \"N\"))) {\r\n\t\t\t\tif (!newObj[r.c_id]) newObj[r.c_id] = r.c_id;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn newObj;\r\n\t}\r\n\tfunction clearAllGlobalVariables() {\r\n\t\tselectedNoteId = undefined;\r\n\t\tselectedLocationId = undefined;\r\n\t\tselectedConsumerId = undefined;\r\n\t\tnewNoteTitle = undefined;\r\n\t\tnewNoteText = undefined;\r\n\t\tnewMessageText = undefined;\r\n\r\n\t\tif (title) {\r\n\t\t\tvar titleInput = title.querySelector('input');\r\n\t\t\ttitleInput.value = '';\r\n\t\t}\r\n\r\n\t\tif (message) {\r\n\t\t\tvar messageInput = message.querySelector('textarea');\r\n\t\t\tmessageInput.value = '';\r\n\t\t}\r\n\r\n\t\tif (messageText) {\r\n\t\t\tvar messageInput = messageText.querySelector('textarea');\r\n\t\t\tmessageInput.value = '';\r\n\t\t}\r\n }\r\n\r\n function clearAllGlobalVariablesOnBack() {\r\n //selectedNoteId = undefined;\r\n //selectedLocationId = undefined;\r\n //selectedConsumerId = undefined;\r\n newNoteTitle = undefined;\r\n newNoteText = undefined;\r\n newMessageText = undefined;\r\n\r\n if (title) {\r\n var titleInput = title.querySelector('input');\r\n titleInput.value = '';\r\n }\r\n\r\n if (message) {\r\n var messageInput = message.querySelector('textarea');\r\n messageInput.value = '';\r\n }\r\n\r\n if (messageText) {\r\n var messageInput = messageText.querySelector('textarea');\r\n messageInput.value = '';\r\n }\t\r\n\r\n\t\t// grabs all subsections of progress notes\r\n\t\tconst viewAllNotesSection = document.querySelector('.viewAllNotesSection');\r\n\t\tconst addNoteSection = document.querySelector('.addNoteSection');\r\n\t\tconst viewSingleNoteSection = document.querySelector('.viewSingleNoteSection');\r\n\t\tconst addMessageSection = document.querySelector('.addMessageSection');\r\n\r\n\t\tconst sections = [viewAllNotesSection, addNoteSection, viewSingleNoteSection, addMessageSection];\r\n \r\n\t\t// Iterate over all sections and make them hidden so the next and back button works correctly\r\n\t\tsections.forEach(section => {\r\n\t\t\tif (section && section.classList.contains('visible')) {\r\n\t\t\t\tsection.classList.remove('visible');\r\n\t\t\t\tsection.classList.add('hidden');\r\n\t\t\t}\r\n\t\t});\r\n }\r\n\r\n\t// populate\r\n\tfunction populateViewSingleNoteSection(data, singleNoteList) {\r\n\t\tif (!singleNoteList) singleNoteList = section.querySelector('.singleNoteList');\r\n\t\tsingleNoteList.innerHTML = '';\r\n\r\n\t\tdata.forEach(d => {\r\n\t\t\tvar employeeId = d.emp_id;\r\n\t\t\t\r\n\t\t\tvar dateTimeArray = d.Date_Entered.split(' ');\r\n\t\t\tvar timeArray = dateTimeArray[1].split(':');\r\n\r\n\t\t\r\n\r\n\t\t\t// var image = ``;\r\n\t\t\tvar name = `

    ${d.firstname} ${d.lastname}

    `;\r\n\t\t\tvar dateTime = `\r\n
    \r\n

    ${dateTimeArray[0]}

    \r\n

    ${timeArray[0]}:${timeArray[1]} ${dateTimeArray[2]}

    \r\n
    \r\n `;\r\n\t\t\tvar title = `

    ${d.notetitle}

    `;\r\n\t\t\tvar notePreview = `

    ${d.note}

    `;\r\n\r\n\t\t\t// details - img, name, date, time\r\n\t\t\tvar details = document.createElement('div');\r\n\t\t\tdetails.classList.add('progressNote__details');\r\n\t\t\t// details.innerHTML = `${image}${name}${dateTime}`;\r\n\t\t\tdetails.innerHTML = `${name}${dateTime}`;\r\n\r\n\t\t\t// message\r\n\t\t\tvar message = document.createElement('div');\r\n\t\t\tmessage.classList.add('progressNote__message');\r\n\t\t\tmessage.innerHTML = `\r\n ${title}${notePreview}\r\n `;\r\n\r\n\t\t\tvar note = document.createElement('div');\r\n\t\t\tnote.classList.add('progressNote');\r\n\r\n\t\t\tnote.appendChild(details);\r\n\t\t\tnote.appendChild(message);\r\n\r\n\t\t\tsingleNoteList.appendChild(note);\r\n\t\t});\r\n\t}\r\n\t function populateViewNotesSection(data, allNotesList) {\r\n\t\tif (!allNotesList) allNotesList = section.querySelector('.allNotesList');\r\n\t\tallNotesList.innerHTML = '';\r\n\r\n\t\tdata.forEach(d => {\r\n\t\t if ($.session.HideProgressNotes || (!$.session.HideProgressNotes && (d.hidenote === \"\" || d.hidenote === \"N\"))) {\r\n\t\t\tvar hasBeenRead = d.is_read === '1' ? true : false;\r\n\t\t\tvar noteId = d.noteID;\r\n\t\t\tvar consumerid = d.consumer;\r\n\t\t\tvar dateTimeArray = d.datecreated.split(' ');\r\n\t\t\tvar timeArray = dateTimeArray[1].split(':');\r\n\t\t\t// var image = ``;\r\n\t\t\tvar name = `

    ${d.MainAuthor}

    `;\r\n\t\t\tvar dateTime = `\r\n
    \r\n

    ${dateTimeArray[0]}

    \r\n

    ${timeArray[0]}:${timeArray[1]} ${dateTimeArray[2]}

    \r\n
    \r\n\t `;\r\n\t \r\n\t\t\tvar title = `

    ${d.title}

    `;\r\n\t\t\tvar notePreview = `

    ${shortenNotePreview(d.note)}

    `;\r\n\r\n\t\t\tvar hideNoteCheckbox;\r\n\t\t\thideNoteCheckbox = input.buildCheckbox({\r\n\t\t\t\ttext: 'Hide Note',\r\n\t\t\t\tstyle: \"secondary\",\r\n\t\t\t\tisChecked: (d.hidenote === \"\" || d.hidenote === \"N\") ? false : true,\r\n\t\t\t});\r\n\r\n\t\t\t// hide note checkbox for users with Hide Progress Note Permission\r\n\t\t\tvar hidenotedetail = document.createElement('div');\r\n\t\t\t hidenotedetail.classList.add('progressNote__hidenotecheckbox');\r\n\t\t\r\n\t\t\t// details - img, name, date, time\r\n\t\t\tvar details = document.createElement('div');\r\n\t\t\tdetails.classList.add('progressNote__details');\r\n\t\t\tdetails.classList.add('accessReplies');\r\n\t\t\t// details.innerHTML = `${image}${name}${dateTime}`;\r\n\t\t\tdetails.innerHTML = `${name}${dateTime}`;\r\n\r\n\t\t\t// message\r\n\t\t\tvar message = document.createElement('div');\r\n\t\t\tmessage.classList.add('progressNote__message');\r\n\t\t\tmessage.classList.add('accessReplies');\r\n\t\t\t\t\t\t\r\n\t\t\tmessage.innerHTML = `\r\n ${title}${notePreview}\r\n `;\r\n\r\n\t\t\tvar note = document.createElement('div');\r\n\t\t\tnote.setAttribute('data-info-task', 'viewSingleNote');\r\n\t\t\tnote.classList.add('progressNote');\r\n\t\t\tnote.setAttribute('id', noteId)\r\n\r\n\t\t\tif (!hasBeenRead) {\r\n\t\t\t\tnote.classList.add('unreadNote');\r\n\t\t\t}\r\n\r\n\t\t\t// appending Hide Note CheckBox -- display if User has Hide Progress Note Permission\r\n\t\t\tif ($.session.HideProgressNotes) {\r\n\t\t\t\thidenotedetail.appendChild(hideNoteCheckbox);\r\n\t\t\t\tnote.appendChild(hidenotedetail)\r\n\t\t\t}\r\n\r\n\t\t\t// appending details and message sections\r\n\t\t\tnote.appendChild(details);\r\n\t\t\tnote.appendChild(message);\r\n\r\n\t\t\tDOM.ACTIONCENTER.appendChild(note);\r\n\r\n\t\t\tvar clickableNoteAreas = document.querySelectorAll(\".accessReplies\");\r\n\r\n\t\r\n\t\t\tclickableNoteAreas.forEach(function(elem) {\r\n\t\t\t\telem.addEventListener('click', () => {\r\n\t\t\t\t\t selectedNoteId = noteId;\r\n\t\t\t\t\tmarkNoteAsRead(noteId, consumerid, event.target);\r\n\t\t\t\t\tgetSingleNoteData(noteId, function(results) {\r\n\t\t\t\t\t\tpopulateViewSingleNoteSection(results);\r\n\t\t\t\t\t\tconsumerInfo.showCardSubSection(VIEW_SINGLE_NOTE_SECTION);\r\n\t\t\t\t\t roster2.refreshRosterList();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\thidenotedetail.addEventListener('change', e => {\r\n\t\t\t\tvar tmpHideNote = e.target.checked ? 'Y' : 'N';\r\n\t\t\t\tvar insertData = {\r\n\t\t\t\t\ttoken: $.session.Token,\r\n\t\t\t\t\thideNote: tmpHideNote,\r\n\t\t\t\t\tnoteId: noteId,\r\n\t\t\t\t\tconsumerId: selectedConsumerId,\r\n\t\t\t\t};\r\n\t\t\t\tprogressNotesAjax.updateHideNote(insertData);\r\n\r\n\t\t\t });\r\n\r\n\t\t\tallNotesList.appendChild(note);\r\n\t\t}\r\n\t\t}); // for loop\r\n\r\n\t}\r\n\r\n\t// build\r\n\tfunction buildAddMessageSection() {\r\n\t\tvar addMessageSection = document.createElement('div');\r\n\t\taddMessageSection.classList.add('addMessageSection');\r\n\r\n\t\tmessageText = input.build({\r\n\t\t\ttype: 'textarea',\r\n\t\t\tlabel: 'Message',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\tclassNames: ['newMessageInput', 'autosize'],\r\n\t\t});\r\n\t\tvar sendButton = button.build({\r\n\t\t\ttext: 'Send',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'contained',\r\n\t\t\ticon: 'send',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tvar messageInput = messageText.querySelector('textarea');\r\n\t\t\t\tmessageInput.value = '';\r\n\t\t\t\taddNewMessage();\r\n\t\t\t\tconsumerInfo.showCardSubSection(VIEW_SINGLE_NOTE_SECTION);\r\n\t\t\t},\r\n\t\t});\r\n\t\tvar cancelButton = button.build({\r\n\t\t\ttext: 'Cancel',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'outlined',\r\n\t\t\t//icon: 'close',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tconsumerInfo.showCardSubSection(VIEW_SINGLE_NOTE_SECTION);\r\n\t\t\t\tclearAllGlobalVariablesOnBack();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tvar btnWrap = document.createElement('div');\r\n\t\tbtnWrap.classList.add('btnWrap');\r\n\t\tbtnWrap.appendChild(sendButton);\r\n\t\tbtnWrap.appendChild(cancelButton);\r\n\r\n\t\taddMessageSection.appendChild(messageText);\r\n\t\taddMessageSection.appendChild(btnWrap);\r\n\r\n\t\tmessageText.addEventListener('input', event => {\r\n\t\t\tnewMessageText = event.target.value;\r\n });\r\n \r\n\t\tADD_MESSAGE_SECTION = addMessageSection;\r\n\t\treturn addMessageSection;\r\n\t}\r\n\tfunction buildAddNoteSection() {\r\n\t\tvar addNoteSection = document.createElement('div');\r\n\t\taddNoteSection.classList.add('addNoteSection');\r\n\r\n\t\ttitle = input.build({\r\n\t\t\ttype: 'text',\r\n\t\t\tlabel: 'Title',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\tclassNames: 'newMessageInput',\r\n\t\t});\r\n\t\tmessage = input.build({\r\n\t\t\ttype: 'textarea',\r\n\t\t\tlabel: 'Message',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\tclassNames: ['newMessageInput', 'autosize'],\r\n\t\t});\r\n\t\tvar sendButton = button.build({\r\n\t\t\ttext: 'Send',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'contained',\r\n\t\t\ticon: 'send',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tvar titleInput = title.querySelector('input');\r\n\t\t\t\tvar messageInput = message.querySelector('textarea');\r\n\t\t\t\ttitleInput.value = '';\r\n\t\t\t\tmessageInput.value = '';\r\n\t\t\t\taddNewNote();\r\n\t\t\t\tconsumerInfo.showCardSubSection(VIEW_ALL_NOTES_SECTION);\r\n\t\t\t},\r\n\t\t});\r\n\t\tvar cancelButton = button.build({\r\n\t\t\ttext: 'Cancel',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'outlined',\r\n\t\t\t//icon: 'close',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tconsumerInfo.showCardSubSection(VIEW_ALL_NOTES_SECTION);\r\n\t\t\t\tclearAllGlobalVariablesOnBack();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\ttitle.addEventListener('input', event => {\r\n\t\t\tnewNoteTitle = event.target.value;\r\n\t\t});\r\n\t\tmessage.addEventListener('input', event => {\r\n\t\t\tnewNoteText = event.target.value;\r\n });\r\n\r\n\t\tvar btnWrap = document.createElement('div');\r\n\t\tbtnWrap.classList.add('btnWrap');\r\n\t\tbtnWrap.appendChild(sendButton);\r\n\t\tbtnWrap.appendChild(cancelButton);\r\n\r\n\t\taddNoteSection.appendChild(title);\r\n\t\taddNoteSection.appendChild(message);\r\n\t\taddNoteSection.appendChild(btnWrap);\r\n\r\n\t\tADD_NOTE_SECTION = addNoteSection;\r\n\t\treturn addNoteSection;\r\n\t}\r\n\tfunction buildViewSingleNoteSection() {\r\n\t\tvar section = document.createElement('div');\r\n\t\tsection.classList.add('viewSingleNoteSection');\r\n\r\n\t\tvar addNoteBtn = button.build({\r\n\t\t\ttext: 'New',\r\n\t\t\ticon: 'message',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'contained',\r\n\t\t\tclassNames: 'addNoteBtn',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tconsumerInfo.showCardSubSection(ADD_MESSAGE_SECTION);\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tvar singleNoteList = document.createElement('div');\r\n\t\tsingleNoteList.classList.add('singleNoteList');\r\n\r\n\t\tsection.appendChild(addNoteBtn);\r\n\t\tsection.appendChild(singleNoteList);\r\n\r\n\t\tVIEW_SINGLE_NOTE_SECTION = section;\r\n\t\treturn section;\r\n\t}\r\n\tfunction buildViewAllNotesSection(data) {\r\n\t\tvar section = document.createElement('div');\r\n\t\tsection.classList.add('viewAllNotesSection');\r\n\r\n\t\tvar addNoteBtn = button.build({\r\n\t\t\ttext: 'New',\r\n\t\t\ticon: 'message',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'contained',\r\n\t\t\tclassNames: 'addNoteBtn',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tconsumerInfo.showCardSubSection(ADD_NOTE_SECTION);\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tvar notesList = document.createElement('div');\r\n\t\tnotesList.classList.add('allNotesList');\r\n\t\tpopulateViewNotesSection(data, notesList);\r\n\r\n\t\tsection.appendChild(addNoteBtn);\r\n\t\tsection.appendChild(notesList);\r\n\r\n\t\tVIEW_ALL_NOTES_SECTION = section;\r\n\t\treturn section;\r\n\t}\r\n\r\n\tfunction init(targetSection, locationId, consumerId) {\r\n\t\tsection = targetSection;\r\n\t\tselectedLocationId = locationId;\r\n\t\tselectedConsumerId = consumerId;\r\n\t}\r\n\r\n\treturn {\r\n\t\tbuildViewAllNotesSection,\r\n\t\tbuildViewSingleNoteSection,\r\n\t\tbuildAddNoteSection,\r\n\t\tbuildAddMessageSection,\r\n\t\tcreateConsumersWithUnreadNotesObj,\r\n clearAllGlobalVariables,\r\n clearAllGlobalVariablesOnBack,\r\n\t\tgetConsumerNotes,\r\n\t\tinit,\r\n\t};\r\n})();\r\n","var progressNotesAjax = (function() {\r\n\t// deleteConsumerNote is not being used ATM\r\n\tfunction deleteConsumerNote(noteId) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteConsumerNote/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction getConsumersWithUnreadNotesByEmployeeAndLocation(locationId, callback) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol + '://' +\r\n\t\t\t\t$.webServer.address + ':' +\r\n\t\t\t\t$.webServer.port + '/' +\r\n\t\t\t\t$.webServer.serviceName + '/getConsumersWithUnreadNotesByEmployeeAndLocation/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t\t\r\n\t\t// $.ajax({\r\n\t\t// \ttype: 'POST',\r\n\t\t// \turl:\r\n\t\t// \t\t$.webServer.protocol + '://' +\r\n\t\t// \t\t$.webServer.address + ':' +\r\n\t\t// \t\t$.webServer.port + '/' +\r\n\t\t// \t\t$.webServer.serviceName + '/getConsumersWithUnreadNotesByEmployeeAndLocation/',\r\n\t\t// \tdata: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\"}',\r\n\t\t// \tcontentType: 'application/json; charset=utf-8',\r\n\t\t// \tdataType: 'json',\r\n\t\t// \tsuccess: function(response, status, xhr) {\r\n\t\t// \t\tvar results = JSON.parse(response.getConsumersWithUnreadNotesByEmployeeAndLocationResult);\r\n\t\t// \t\tcallback(results);\r\n\t\t// \t},\r\n\t\t// });\r\n\t}\r\n\r\n\tfunction getConsumersWithUnreadNotesByEmployeeAndLocationPermission(locationId, callback) {\r\n\t\tvar daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol +\r\n\t\t\t\t'://' +\r\n\t\t\t\t$.webServer.address +\r\n\t\t\t\t':' +\r\n\t\t\t\t$.webServer.port +\r\n\t\t\t\t'/' +\r\n\t\t\t\t$.webServer.serviceName +\r\n\t\t\t\t'/getConsumersWithUnreadNotesByEmployeeAndLocationPermission/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\", \"daysBackDate\":\"' + daysBackDate + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar results = JSON.parse(response.getConsumersWithUnreadNotesByEmployeeAndLocationPermissionResult);\r\n\t\t\t\tcallback(results);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction insertConsumerNote(insertData, callback) {\r\n\t\t//insertData = token, consumerId, noteTitle, note, locationId\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertConsumerNote/',\r\n\t\t\tdata: JSON.stringify(insertData),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {},\r\n\t\t});\r\n\t}\r\n\tfunction selectNotesByConsumerAndLocation(consumerId, locationId, callback) {\r\n\t\t// called when note icon is clicked\r\n\r\n\t\tvar datum = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tconsumerId: consumerId,\r\n\t\t\tlocationId: locationId\r\n\t\t};\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: '/' + $.webServer.serviceName + '/selectNotesByConsumerAndLocation/',\r\n\t\t\tdata: JSON.stringify(datum),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar results = JSON.parse(response.selectNotesByConsumerAndLocationResult);\r\n\t\t\t\tcallback(results);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t\t},\r\n\t\t});\r\n\t\treturn false;\r\n\t}\r\n\tfunction selectConsumerNote(noteId, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/selectConsumerNote/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.parse(response.selectConsumerNoteResult);\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction updateConsumerNoteDateRead(noteId) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateConsumerNoteDateRead/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction updateConsumerNote(updateData, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateConsumerNote/',\r\n\t\t\tdata: JSON.stringify(updateData),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tif (callback) callback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction updateHideNote(updateData, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateHideNote/',\r\n\t\t\tdata: JSON.stringify(updateData),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tif (callback) callback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getlocationsWithConsumersWithUnreadNotes(callback) {\r\n\t\tvar daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol +\r\n\t\t\t\t'://' +\r\n\t\t\t\t$.webServer.address +\r\n\t\t\t\t':' +\r\n\t\t\t\t$.webServer.port +\r\n\t\t\t\t'/' +\r\n\t\t\t\t$.webServer.serviceName +\r\n\t\t\t\t'/getlocationsWithConsumersWithUnreadNotes/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"daysBackDate\":\"' + daysBackDate + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = response.getlocationsWithConsumersWithUnreadNotesResult;\r\n\t\t\t\tif (callback) callback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {},\r\n\t\t});\r\n\t}\r\n \r\n\treturn {\r\n\t\tgetConsumersWithUnreadNotesByEmployeeAndLocation,\r\n\t\tinsertConsumerNote,\r\n\t\tselectNotesByConsumerAndLocation,\r\n\t\tselectConsumerNote,\r\n\t\tupdateConsumerNoteDateRead,\r\n\t\tupdateConsumerNote,\r\n\t\tupdateHideNote,\r\n\t\tgetlocationsWithConsumersWithUnreadNotes,\r\n\t\tgetConsumersWithUnreadNotesByEmployeeAndLocationPermission,\r\n\t};\r\n})();\r\n","var schedulingApproveRequest = (function () {\r\n var actioncenter;\r\n var daysOffTable;\r\n var callOffTable;\r\n var openShiftTable;\r\n var overlapWrap;\r\n var overlapsExist = false;\r\n var overlapApprovalData;\r\n var overlapIds = [];\r\n var daysOffOverlapConfirmed = false;\r\n // var openShiftRequests;\r\n\r\n //UTIL\r\n //---------------------\r\n\r\n function areConsecutiveDates(date1, date2) {\r\n date1 = date1.split(' ')[0].split('/');\r\n date2 = date2.split(' ')[0].split('/');\r\n\r\n date1[0] = date1[0] - 1;\r\n date2[0] = date2[0] - 1;\r\n\r\n var dateOne = new Date(date1[2], date1[0], date1[1]);\r\n var dateTwo = new Date(date2[2], date2[0], date2[1]);\r\n\r\n dateOne = addDays(dateOne, 1);\r\n\r\n return dateOne.getTime() === dateTwo.getTime();\r\n }\r\n\r\n function addDays(dirtyDate, dirtyAmount) {\r\n const date = cloneDate(dirtyDate);\r\n const amount = toInteger(dirtyAmount);\r\n date.setDate(date.getDate() + amount);\r\n return date;\r\n }\r\n\r\n function cloneDate(argument) {\r\n const argStr = Object.prototype.toString.call(argument);\r\n\r\n if (argument instanceof Date || typeof argument === 'object') {\r\n return new Date(argument.getTime());\r\n } else if (typeof argument === 'number') {\r\n return new Date(argument);\r\n } else {\r\n argument = argument.split(',');\r\n return new Date(parseInt(argument[0]), parseInt(argument[1] - 1), parseInt(argument[2]));\r\n }\r\n }\r\n\r\n function toInteger(dirtyNumber) {\r\n var number = Number(dirtyNumber);\r\n\r\n if (isNaN(number)) {\r\n return number;\r\n }\r\n }\r\n\r\n\r\n function addDays(dirtyDate, dirtyAmount) {\r\n const date = cloneDate(dirtyDate);\r\n const amount = toInteger(dirtyAmount);\r\n date.setDate(date.getDate() + amount);\r\n return date;\r\n }\r\n\r\n function cloneDate(argument) {\r\n const argStr = Object.prototype.toString.call(argument);\r\n\r\n if (argument instanceof Date || (typeof argument === 'object' && argStr === ['object Date'])) {\r\n return new Date(argument.getTime());\r\n } else if (typeof argument === 'number' || argStr === ['object Number']) {\r\n return new Date(argument);\r\n } else {\r\n argument = argument.split(',');\r\n return new Date(parseInt(argument[0]), parseInt(argument[1] - 1), parseInt(argument[2]));\r\n }\r\n }\r\n\r\n function toInteger(dirtyNumber) {\r\n var number = Number(dirtyNumber);\r\n\r\n if (isNaN(number)) {\r\n return number;\r\n }\r\n\r\n return number < 0 ? Math.ceil(number) : Math.floor(number);\r\n }\r\n\r\n //REST\r\n //---------------------\r\n\r\n function buildApproveRequestPage() {\r\n //Header\r\n actioncenter = document.getElementById('actioncenter');\r\n let header = document.createElement('div');\r\n header.classList.add('approveRequestHeader');\r\n let headerText = document.createElement('h2');\r\n headerText.innerHTML = 'Request Approvals';\r\n\r\n schedulingAjax.getScheduleMyApprovalDataAjax(\r\n {\r\n token: $.session.Token,\r\n personId: $.session.isPSI ? 0 : $.session.PeopleId,\r\n },\r\n populateApprovalPage,\r\n );\r\n }\r\n\r\n function populateApprovalPage(results) {\r\n actioncenter = document.getElementById('actioncenter');\r\n var selectedShiftCounter = 0;\r\n\r\n //Table with requests - Table will cycle between colors (green(approve), red(deny), white(no action)) when clicked\r\n // There is curently a table for each type of request, these will eventually be tabs\r\n var requestData = {\r\n daysOff: [],\r\n callOff: [],\r\n openShift: [],\r\n };\r\n\r\n results.forEach(res => {\r\n switch (res.requestType) {\r\n case 'DayOff':\r\n requestData.daysOff.push(res);\r\n break;\r\n case 'CallOff':\r\n requestData.callOff.push(res);\r\n break;\r\n case 'RequestShift':\r\n requestData.openShift.push(res);\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n var daysOffTableOpts = {\r\n headline: 'Days Off Requests',\r\n columnHeadings: ['Employee', 'Start Date/Time', 'End Data/Time', 'Reason', 'Approve/Deny'],\r\n tableId: 'daysOffTable',\r\n callback: function () {\r\n cycleApprovalStatus(event.target);\r\n },\r\n };\r\n var openShiftTableOpts = {\r\n headline: 'Open Shift Requests',\r\n columnHeadings: [\r\n 'Employee',\r\n 'Date/Time',\r\n 'Location',\r\n 'Reason', //Reason Needed?\r\n 'Approve/Deny',\r\n ],\r\n tableId: 'openShiftTable',\r\n callback: function () {\r\n cycleApprovalStatus(event.target);\r\n },\r\n };\r\n\r\n var callOffTableOpts = {\r\n headline: 'Call Offs',\r\n columnHeadings: ['Employee', 'Date/Time', 'Location', 'Reason', 'Approve/Deny'],\r\n tableId: 'callOffTable',\r\n callback: function () {\r\n cycleApprovalStatus(event.target);\r\n },\r\n };\r\n\r\n if (requestData.daysOff.length > 0) {\r\n daysOffTable = table.build(daysOffTableOpts);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = daysOffTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Employee\r\n headers[1].setAttribute('data-type', 'date'); // Start Date/Time\r\n headers[2].setAttribute('data-type', 'date'); //End Date/Time\r\n headers[3].setAttribute('data-type', 'string'); // Reason\r\n headers[4].setAttribute('data-type', 'string'); // Approve/Deny\r\n\r\n let data = renderDaysOffSectionBody(requestData.daysOff);\r\n actioncenter.appendChild(daysOffTable);\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(daysOffTable);\r\n\r\n table.populate('daysOffTable', data);\r\n }\r\n\r\n if (requestData.callOff.length > 0) {\r\n callOffTable = table.build(callOffTableOpts);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = callOffTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Employee\r\n headers[1].setAttribute('data-type', 'date'); // Start Date/Time\r\n headers[2].setAttribute('data-type', 'string'); //Location\r\n headers[3].setAttribute('data-type', 'string'); // Reason\r\n headers[4].setAttribute('data-type', 'string'); // Approve/Deny\r\n\r\n let data = dataForCallOffandOpenShifts(requestData.callOff);\r\n actioncenter.appendChild(callOffTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(callOffTable);\r\n\r\n table.populate('callOffTable', data);\r\n }\r\n\r\n if (requestData.openShift.length > 0) {\r\n openShiftTable = table.build(openShiftTableOpts);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = openShiftTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Employee\r\n headers[1].setAttribute('data-type', 'date'); // Start Date/Time\r\n headers[2].setAttribute('data-type', 'string'); //Location\r\n headers[3].setAttribute('data-type', 'string'); // Reason\r\n headers[4].setAttribute('data-type', 'string'); // Approve/Deny\r\n\r\n let data = dataForCallOffandOpenShifts(requestData.openShift);\r\n actioncenter.appendChild(openShiftTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(openShiftTable);\r\n\r\n table.populate('openShiftTable', data);\r\n }\r\n\r\n //MESSAGE TO DISPLAY WHEN THERE ARE NO REQUESTS TO APPROVE\r\n if (requestData.daysOff.length === 0 && requestData.callOff.length === 0 && requestData.openShift.length === 0) {\r\n noRequestsMessage();\r\n }\r\n\r\n function cycleApprovalStatus(element) {\r\n if (!element.classList.contains('table') && !element.classList.contains('header')) {\r\n let status = element.dataset.approvalStatus;\r\n if (status === undefined) {\r\n element.setAttribute('data-approval-status', 'approve');\r\n element.lastChild.innerHTML = 'Approve';\r\n selectedShiftCounter++;\r\n } else if (status === 'approve') {\r\n element.setAttribute('data-approval-status', 'deny');\r\n element.lastChild.innerHTML = 'Deny';\r\n } else if (status === 'deny') {\r\n element.removeAttribute('data-approval-status');\r\n element.lastChild.innerHTML = '';\r\n selectedShiftCounter--;\r\n }\r\n selectedShiftCounter > 0 ? ACTION_NAV.show() : ACTION_NAV.hide();\r\n }\r\n }\r\n\r\n function renderDaysOffSectionBody(shifts) {\r\n // make sure shifts are sorted by date and person\r\n shifts.sort((a, b) => {\r\n var idA = a.personId;\r\n var idB = b.personId;\r\n if (idA === idB) {\r\n var dateA = a.day.split(' ')[0].split('/');\r\n var dateB = b.day.split(' ')[0].split('/');\r\n dateA[0] = dateA[0] - 1;\r\n dateB[0] = dateB[0] - 1;\r\n dateA = new Date(dateA[2], dateA[0], dateA[1]);\r\n dateB = new Date(dateB[2], dateB[0], dateB[1]);\r\n return dateA - dateB;\r\n }\r\n return idA > idB ? 1 : -1;\r\n });\r\n\r\n // group shifts with consecutive dates AND consecutive reason IDs\r\n const groupedShifts = shifts.reduce((total, cv) => {\r\n let lastSubArray;\r\n let areDatesConsecutive;\r\n\r\n lastSubArray = total[total.length - 1];\r\n\r\n if (lastSubArray) {\r\n areDatesConsecutive = areConsecutiveDates(lastSubArray[lastSubArray.length - 1].day, cv.day);\r\n consecutiveReason = lastSubArray[lastSubArray.length - 1].reasonId === cv.reasonId ? true : false;\r\n } else {\r\n areDatesConsecutive = false;\r\n }\r\n\r\n if (!lastSubArray || !areDatesConsecutive || !consecutiveReason) {\r\n total.push([]);\r\n }\r\n\r\n total[total.length - 1].push(cv);\r\n\r\n return total;\r\n }, []);\r\n //return;\r\n\r\n let tableData = groupedShifts.map(group => {\r\n var startDate = `${group[0].day.split(' ')[0]} ${UTIL.convertFromMilitary(group[0].fromTime)}`;\r\n var endDate = `${group[group.length - 1].day.split(' ')[0]} ${UTIL.convertFromMilitary(\r\n group[group.length - 1].toTime,\r\n )}`;\r\n var shiftIds = [];\r\n group.forEach(shift => shiftIds.push(shift.dayOffId));\r\n return {\r\n values: [group[0].name, startDate, endDate, group[0].reasonName, ''],\r\n id: shiftIds,\r\n };\r\n });\r\n\r\n return tableData;\r\n }\r\n\r\n function noRequestsMessage() {\r\n var backBtn = button.build({\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'arrowBack',\r\n callback: function () {\r\n DOM.clearActionCenter();\r\n scheduling.init();\r\n },\r\n });\r\n var messageElement = document.createElement('h2');\r\n messageElement.innerHTML = 'You have no pending requests to review.';\r\n DOM.ACTIONCENTER.appendChild(backBtn);\r\n DOM.ACTIONCENTER.appendChild(messageElement);\r\n }\r\n\r\n function setupActionNav() {\r\n var submitBtn = button.build({\r\n text: 'Submit',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'send',\r\n callback: async function () {\r\n await submitApproveDenyRequest();\r\n\r\n // overlaps exist in approved shifts selected by user\r\n if (overlapApprovalData !== 'NoOverLap') {\r\n displayApprovedOverlapPopup();\r\n } else if (daysOffOverlapConfirmed) {\r\n overlapAlert(overlapIds);\r\n } else {\r\n // overlaps exist between selected shifts and shifts already approved (ie, shifts saved in DB)\r\n if (overlapsExist) {\r\n displayOverlapPopup(overlapsExist, overlapWrap);\r\n } else {\r\n ACTION_NAV.hide();\r\n DOM.clearActionCenter();\r\n scheduling.init();\r\n }\r\n }\r\n },\r\n });\r\n\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: function () {\r\n //ADD TRANSITION?\r\n DOM.clearActionCenter();\r\n ACTION_NAV.hide();\r\n scheduling.init();\r\n },\r\n });\r\n\r\n ACTION_NAV.populate([submitBtn, cancelBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n setupActionNav();\r\n\r\n function dataForCallOffandOpenShifts(shifts) {\r\n let tableData = shifts.map((shift, index) => {\r\n let day = `${shift.day.split(' ')[0]} ${UTIL.convertFromMilitary(shift.fromTime)} - ${UTIL.convertFromMilitary(\r\n shift.toTime,\r\n )}`;\r\n return {\r\n values: [shift.name, day, shift.locationName, shift.reasonName, ''],\r\n id: shift.shiftId,\r\n attributes: [\r\n { key: 'personId', value: shift.personId },\r\n { key: 'serviceDate', value: shift.day.split(' ')[0] },\r\n { key: 'startTime', value: shift.fromTime },\r\n { key: 'endTime', value: shift.toTime },\r\n { key: 'userName', value: shift.name },\r\n ],\r\n };\r\n });\r\n return tableData;\r\n }\r\n }\r\n\r\n function overlapApprovedShifts(openShiftRequests) {\r\n var openShiftRequestList = openShiftRequests.map(request => ({\r\n shiftId: request.id,\r\n serviceDate: request.attributes.serviceDate.value,\r\n personId: request.attributes.personId.value,\r\n decision: request.dataset.approvalStatus,\r\n startTime: request.attributes.startTime.value,\r\n endTime: request.attributes.endTime.value,\r\n userName: request.attributes.userName.value,\r\n }));\r\n var selectedShifts = openShiftRequestList.filter(x => x.decision === 'approve');\r\n\r\n for (const approvedShift of selectedShifts) {\r\n for (const openShiftRequest of openShiftRequestList) {\r\n // if its not the same record, then chek for an overlap\r\n if (approvedShift.shiftId !== openShiftRequest.shiftId) {\r\n // same person, same date, and openshift = approve, then check for time overlap\r\n if (\r\n approvedShift.personId === openShiftRequest.personId &&\r\n approvedShift.serviceDate === openShiftRequest.serviceDate &&\r\n openShiftRequest.decision === 'approve'\r\n ) {\r\n var selectedStartTime = approvedShift.startTime;\r\n var selectedEndTime = approvedShift.endTime;\r\n var existingStartTime = openShiftRequest.startTime;\r\n var existingEndTime = openShiftRequest.endTime;\r\n\r\n // is there a time overlap\r\n if (\r\n (selectedStartTime > existingStartTime && selectedStartTime < existingEndTime) ||\r\n (selectedEndTime > existingStartTime && selectedEndTime < existingEndTime) ||\r\n (existingStartTime >= selectedStartTime &&\r\n existingStartTime <= selectedEndTime &&\r\n existingEndTime >= selectedStartTime &&\r\n existingEndTime <= selectedEndTime) ||\r\n (existingStartTime == selectedStartTime && existingEndTime == selectedEndTime)\r\n ) {\r\n return approvedShift.serviceDate + ' ' + approvedShift.userName;\r\n } //if compare hours\r\n } //if compare personId/Date\r\n } //if compare personId/Shift\r\n } // for openShiftList\r\n } // for selectedShifts\r\n\r\n return 'NoOverLap';\r\n }\r\n\r\n function displayApprovedOverlapPopup() {\r\n var overlapPopup = POPUP.build({\r\n classNames: 'overlapRequestShiftPopup',\r\n });\r\n overlapIntro = document.createElement('div');\r\n overlapIntro.innerHTML = `\r\n
    \r\n

    Overlapping Shift Approvals(s)

    \r\n

    You selected conflicting overlapping approvals for the following: ${overlapApprovalData}. No approvals were processed. Please review your possible approvals and try again.


    \r\n
    \r\n `;\r\n overlapPopup.appendChild(overlapIntro);\r\n // requestApprovalOverlapPopup\r\n\r\n let overlapOKBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(overlapPopup);\r\n // init();\r\n },\r\n });\r\n\r\n // overlapPopup.appendChild(overlapWrap);\r\n overlapPopup.appendChild(overlapOKBtn);\r\n POPUP.show(overlapPopup);\r\n }\r\n\r\n function displayOverlapPopup(overlapsExist, overlapWrap) {\r\n if (overlapsExist) {\r\n var overlapPopup = POPUP.build({\r\n classNames: 'overlapRequestShiftPopup',\r\n });\r\n overlapIntro = document.createElement('div');\r\n overlapIntro.innerHTML = `\r\n
    \r\n

    Overlapping Open Shift Request(s)

    \r\n

    The following open shift requests overlap with an existing shift the staff already scheduled to work. These shifts cannot be approved.


    \r\n
    \r\n `;\r\n overlapPopup.appendChild(overlapIntro);\r\n // requestApprovalOverlapPopup\r\n\r\n let overlapOKBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(overlapPopup);\r\n init();\r\n },\r\n });\r\n\r\n overlapPopup.appendChild(overlapWrap);\r\n overlapPopup.appendChild(overlapOKBtn);\r\n POPUP.show(overlapPopup);\r\n }\r\n }\r\n\r\n async function submitApproveDenyRequest() {\r\n if (openShiftTable) {\r\n var openShiftTableBody = openShiftTable.querySelector('.table__body');\r\n var openShiftRequests = Array.prototype.slice.call(openShiftTableBody.querySelectorAll('.table__row'));\r\n\r\n // check approved shifts to ensure no overlap (before checking for overlaps with assigned shifts)\r\n overlapApprovalData = overlapApprovedShifts(openShiftRequests);\r\n if (overlapApprovalData !== 'NoOverLap') {\r\n return;\r\n }\r\n }\r\n if (callOffTable) {\r\n var callOffTableBody = callOffTable.querySelector('.table__body');\r\n var callOffRequests = Array.prototype.slice.call(callOffTableBody.querySelectorAll('.table__row'));\r\n }\r\n if (daysOffTable) {\r\n var daysOffTableBody = daysOffTable.querySelector('.table__body');\r\n var daysOffRequests = Array.prototype.slice.call(daysOffTableBody.querySelectorAll('.table__row'));\r\n }\r\n\r\n if (!overlapApprovalData) {\r\n overlapApprovalData = 'NoOverLap';\r\n }\r\n\r\n // check selected shifts against shifts already assigned to the user\r\n if (openShiftRequests) {\r\n overlapWrap = document.createElement('div');\r\n overlapsExist = false;\r\n\r\n for (const request of openShiftRequests) {\r\n var shiftId = request.id;\r\n var decision = request.dataset.approvalStatus;\r\n var personId = request.attributes.personId.value;\r\n\r\n decision = decision === 'approve' ? 'A' : decision === 'deny' ? 'D' : '';\r\n\r\n const { getOverlapDataforSelectedShiftResult: overlapWithExistingShiftData } =\r\n await schedulingAjax.getOverlapDataforSelectedShiftAjax(shiftId, personId);\r\n\r\n if (overlapWithExistingShiftData === 'NoOverLap' && decision !== '') {\r\n schedulingAjax.approveDenyOpenShiftRequestSchedulingAjax({\r\n token: $.session.Token,\r\n requestedShiftId: shiftId,\r\n decision: decision,\r\n });\r\n } else if (overlapWithExistingShiftData !== 'NoOverLap' && decision === 'D') {\r\n schedulingAjax.approveDenyOpenShiftRequestSchedulingAjax({\r\n token: $.session.Token,\r\n requestedShiftId: shiftId,\r\n decision: decision,\r\n }); //ajax\r\n } else {\r\n if (overlapWithExistingShiftData != 'NoOverLap' && decision === 'A') {\r\n overlapsExist = true;\r\n var overlapShiftData = await JSON.parse(overlapWithExistingShiftData);\r\n var serviceDate = overlapShiftData.serviceDate.split(' ');\r\n var startTime = UTIL.convertFromMilitary(overlapShiftData.startTime.slice(0, -3));\r\n var endTime = UTIL.convertFromMilitary(overlapShiftData.endTime.slice(0, -3));\r\n overlapWrap.innerHTML += `

    ${serviceDate[0]} ${overlapShiftData.lastName}, ${overlapShiftData.firstName} ${overlapShiftData.locationName} ${startTime}-${endTime}


    `;\r\n } // if clause end -- (overlapWithExistingShiftData != \"NoOverLap\" && decision === 'A')\r\n } // else clause end -- (overlapWithExistingShiftData == \"NoOverLap\" && decision !== '')\r\n } // for loop\r\n } // if openShiftRequests\r\n\r\n if (callOffRequests) {\r\n callOffRequests.forEach(request => {\r\n var shiftId = request.id;\r\n var decision = request.dataset.approvalStatus;\r\n decision = decision === 'approve' ? 'A' : decision === 'deny' ? 'D' : '';\r\n if (decision !== '') {\r\n //token, callOffShiftId, decision\r\n schedulingAjax.approveDenyCallOffRequestSchedulingAjax({\r\n token: $.session.Token,\r\n callOffShiftId: shiftId,\r\n decision: decision,\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (daysOffRequests) {\r\n for (const request of daysOffRequests) { \r\n var shiftIds = request.id;\r\n var decision = request.dataset.approvalStatus;\r\n decision = decision === 'approve' ? 'A' : decision === 'deny' ? 'D' : '';\r\n if (decision !== '') { \r\n \r\n var dateTime;\r\n var startDate = new Date(request.children[1].innerHTML).toLocaleDateString(); \r\n var endDate = new Date(request.children[2].innerHTML).toLocaleDateString();\r\n var startTime = new Date(request.children[1].innerHTML).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\r\n var endTime = new Date(request.children[2].innerHTML).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); \r\n\r\n if (startDate === endDate) {\r\n dateTime = startTime == '12:00 AM' ? startDate : endTime == '11:59 PM' ? startDate + ' ' + startTime : startDate + ' ' + startTime + ' - ' + endTime ;\r\n \r\n }\r\n else {\r\n dateTime = startDate + ' ' + (startTime == '12:00 AM' ? '' : startTime) + ' - ' + endDate + ' ' + (endTime == '11:59 PM' ? '' : endTime);\r\n }\r\n //token, daysOffIdString(comma separated), decision\r\n const approveDenyResponse = await schedulingAjax.approveDenyDaysOffRequestSchedulingAjax({\r\n token: $.session.Token,\r\n daysOffIdString: shiftIds,\r\n decision: decision,\r\n dateTime: dateTime,\r\n });\r\n\r\n if (approveDenyResponse !== 'Success') {\r\n // alert(\"Overlap found. Please review the days off requests NOT processed. These requests are in conflict with already approved requests.\")\r\n overlapIds.push(approveDenyResponse);\r\n daysOffOverlapConfirmed = true;\r\n } else {\r\n daysOffOverlapConfirmed = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function overlapAlert(idArray) {\r\n var alertPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n });\r\n var alertbtnWrap = document.createElement('div');\r\n alertbtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(alertPopup);\r\n\r\n // Reset the overlap Ids\r\n overlapIds = [];\r\n\r\n ACTION_NAV.hide();\r\n DOM.clearActionCenter();\r\n scheduling.init();\r\n },\r\n });\r\n\r\n let requestDataText = [];\r\n\r\n // Loop through each id in the array\r\n idArray.forEach(id => {\r\n // Get the parent div element with the current id\r\n const parentDiv = document.getElementById(id);\r\n\r\n // Get all the nested div elements inside the parent div\r\n const nestedDivs = parentDiv.getElementsByTagName('div');\r\n\r\n // Create an empty object to store the text content of each nested div\r\n const nestedDivsObject = {};\r\n\r\n // Loop through each nested div element and add its text content as a property to the object\r\n for (let i = 0; i < nestedDivs.length; i++) {\r\n const textContent = nestedDivs[i].textContent;\r\n nestedDivsObject[`nestedDiv${i + 1}`] = textContent;\r\n }\r\n\r\n const requestData = `Employee: ${nestedDivsObject.nestedDiv1}, ${nestedDivsObject.nestedDiv2} - ${nestedDivsObject.nestedDiv3}`;\r\n requestDataText.push(requestData);\r\n });\r\n\r\n alertbtnWrap.appendChild(alertokBtn);\r\n\r\n const paragraphs = requestDataText.map(item => {\r\n return `

    ${item}

    `;\r\n });\r\n\r\n // Create the alert message\r\n const alertMessage = document.createElement('p');\r\n alertMessage.innerHTML = 'The following requests overlap an existing time off request and could not be approved:';\r\n\r\n // Append each paragraph to the alert message\r\n paragraphs.forEach(paragraph => {\r\n const p = document.createElement('p');\r\n p.innerHTML = paragraph;\r\n alertMessage.appendChild(p);\r\n });\r\n\r\n // Append the alert message and button wrapper to the alert popup\r\n alertPopup.appendChild(alertMessage);\r\n alertPopup.appendChild(alertbtnWrap);\r\n\r\n // Show the alert popup\r\n POPUP.show(alertPopup);\r\n }\r\n\r\n function init() {\r\n daysOffTable = null;\r\n callOffTable = null;\r\n openShiftTable = null;\r\n actioncenter = document.getElementById('actioncenter');\r\n DOM.clearActionCenter();\r\n buildApproveRequestPage();\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","//=============================================\r\n// *** EDIT THIS CODE AT YOUR OWN RISK ***\r\n//=============================================\r\nvar schedulingCalendar = (function () {\r\n var months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];\r\n var days = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\r\n var _scheduleArray = [];\r\n var _schedules = []; // cache of all schedules\r\n var _appointments = []; // all appointments\r\n var _locationsArr = []; // for locations dropdown\r\n var _reasonsArr = []; // for reasons dropdown\r\n var _startDay = 0; // start day of week\r\n var _currentWeekHours = null;\r\n var _scheduleView = 'mine';\r\n var _currentView = 'week';\r\n var defaultLocation; //default location for location dropdown\r\n // DOM Elements\r\n var actioncenter;\r\n // mobile check\r\n var isMobile;\r\n //Hack to get locationId to pass to get drop down employees\r\n var detailsLocationId;\r\n var shiftDateForCall;\r\n\r\n function appendModuleContainer(moduleName) {\r\n var actionCenter = document.getElementById('actioncenter');\r\n actionCenter.innerHTML = '';\r\n var moduleContainer = document.createElement('DIV');\r\n moduleContainer.classList.add(moduleName);\r\n moduleContainer.id = UTIL.camelize(moduleName);\r\n actionCenter.appendChild(moduleContainer);\r\n }\r\n function removeInnerHtml(elementId) {\r\n var element = document.getElementById(elementId);\r\n element.innerHTML = '';\r\n }\r\n\r\n //========================================================\r\n // DATE UTIL\r\n //========================================================\r\n function toInteger(dirtyNumber) {\r\n var number = Number(dirtyNumber);\r\n\r\n if (isNaN(number)) {\r\n return number;\r\n }\r\n\r\n return number < 0 ? Math.ceil(number) : Math.floor(number);\r\n }\r\n\r\n function cloneDate(argument) {\r\n const argStr = Object.prototype.toString.call(argument);\r\n\r\n if (argument instanceof Date || (typeof argument === 'object')) {\r\n return new Date(argument.getTime());\r\n } else if (typeof argument === 'number') {\r\n return new Date(argument);\r\n } else {\r\n argument = argument.split(',');\r\n return new Date(parseInt(argument[0]), parseInt(argument[1] - 1), parseInt(argument[2]));\r\n }\r\n }\r\n\r\n function addMilliseconds(dirtyDate, dirtyAmount) {\r\n var timestamp = cloneDate(dirtyDate).getTime();\r\n var amount = toInteger(dirtyAmount);\r\n return new Date(timestamp + amount);\r\n }\r\n\r\n function addMinutes(dirtyDate, dirtyAmount) {\r\n var MILLISECONDS_IN_MINUTE = 60000;\r\n var amount = toInteger(dirtyAmount);\r\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\r\n }\r\n\r\n function addDays(dirtyDate, dirtyAmount) {\r\n const date = cloneDate(dirtyDate);\r\n const amount = toInteger(dirtyAmount);\r\n date.setDate(date.getDate() + amount);\r\n return date;\r\n }\r\n\r\n function getDay(dirtyDate) {\r\n const date = cloneDate(dirtyDate);\r\n const day = date.getDay();\r\n return day;\r\n }\r\n\r\n function getServiceDate(res) {\r\n var dateString = res.serviceDate ? res.serviceDate : res.dateScheduled;\r\n var serviceDateObj = dateString.split(' ')[0].split('/');\r\n var serviceYear = serviceDateObj[2];\r\n var serviceMonth = UTIL.leadingZero(serviceDateObj[0]);\r\n var serviceMonthName = months[serviceDateObj[0] - 1];\r\n var serviceDate = UTIL.leadingZero(serviceDateObj[1]);\r\n var serviceDay = days[getDay(`${serviceDateObj[2]}-${serviceDateObj[0]}-${serviceDateObj[1]}`)];\r\n\r\n serviceDateObj = `${serviceYear}-${serviceMonth}-${serviceDate}`;\r\n return serviceDateObj;\r\n }\r\n\r\n function setStartDay(dayObj) {\r\n var weekDays = ['S', 'M', 'T', 'W', 'R', 'F', 'A', 'S'];\r\n var dayOfWeek = dayObj[0].Day_of_Week;\r\n var startDay = weekDays.indexOf(dayOfWeek);\r\n _startDay = startDay !== -1 ? startDay : 0;\r\n }\r\n\r\n function eachDateOfInterval(dirtyInterval) {\r\n const interval = dirtyInterval || {};\r\n\r\n if (interval.start === interval.end) return interval.start.split(',').join('/');\r\n\r\n const startDate = cloneDate(interval.start);\r\n const endDate = cloneDate(interval.end);\r\n\r\n const endTime = endDate.getTime();\r\n\r\n if (!(startDate.getTime() <= endTime)) return;\r\n\r\n let dates = [];\r\n\r\n const currentDate = startDate;\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n while (currentDate.getTime() <= endTime) {\r\n dates.push(cloneDate(currentDate));\r\n currentDate.setDate(currentDate.getDate() + 1);\r\n currentDate.setHours(0, 0, 0, 0);\r\n }\r\n\r\n return dates;\r\n }\r\n\r\n function isWithinInterval(dirtyDate, dirtyInterval) {\r\n var interval = dirtyInterval || {};\r\n var time = cloneDate(dirtyDate).getTime();\r\n var startTime = cloneDate(interval.start).getTime();\r\n var endTime = cloneDate(interval.end).getTime();\r\n\r\n return time >= startTime && time <= endTime;\r\n }\r\n\r\n function areConsecutiveDates(date1, date2) {\r\n date1 = date1.split(' ')[0].split('/');\r\n date2 = date2.split(' ')[0].split('/');\r\n\r\n date1[0] = date1[0] - 1;\r\n date2[0] = date2[0] - 1;\r\n\r\n var dateOne = new Date(date1[2], date1[0], date1[1]);\r\n var dateTwo = new Date(date2[2], date2[0], date2[1]);\r\n\r\n dateOne = addDays(dateOne, 1);\r\n\r\n return dateOne.getTime() === dateTwo.getTime();\r\n }\r\n\r\n //========================================================\r\n // TIME UTIL\r\n //========================================================\r\n function getTotalHours(startTime, endTime) {\r\n if (startTime === undefined || endTime === undefined) {\r\n return;\r\n } else {\r\n startTime = startTime.trim();\r\n endTime = endTime.trim();\r\n }\r\n\r\n var endDate = endTime === '12:00 AM' ? '01/02/2019 ' : '01/01/2019 ';\r\n var startTimeDate = new Date('01/01/2019 ' + startTime);\r\n var endTimeDate = new Date(endDate + endTime);\r\n var startTimeMilliseconds = startTimeDate.getTime();\r\n var endTimeMilliseconds = endTimeDate.getTime();\r\n // total milliseconds\r\n var milliseconds = endTimeMilliseconds - startTimeMilliseconds;\r\n var hours = Math.floor((milliseconds / (1000 * 60 * 60)) % 24);\r\n var minutes = Math.floor((milliseconds / (1000 * 60)) % 60);\r\n\r\n return hours + minutes / 60;\r\n }\r\n\r\n function timeOverlapCheck(fromTime, toTime) {\r\n var startTimeMilliseconds = new Date('01/01/2019 ' + fromTime).getTime();\r\n var endTimeMilliseconds = new Date('01/01/2019 ' + toTime).getTime();\r\n var timeDifference = endTimeMilliseconds - startTimeMilliseconds;\r\n return timeDifference < 0 ? false : true;\r\n }\r\n\r\n function midnightNextDay(date) {\r\n date = `${date} 00:00:00`;\r\n return addDays(date, 1);\r\n }\r\n\r\n function convertToMilitary(dirtyTime) {\r\n var hours = Math.floor((dirtyTime / (1000 * 60 * 60)) % 24);\r\n var minutes = Math.floor((dirtyTime / (1000 * 60)) % 60);\r\n return `${hours}:${UTIL.leadingZero(minutes / 60)}:00`;\r\n }\r\n\r\n function convertFromMilitary(dirtyTime) {\r\n var timeArr = dirtyTime.split(':');\r\n var dirtyHours = parseInt(timeArr[0]);\r\n var dirtyMinutes = parseInt(timeArr[1]);\r\n\r\n var hours, minutes, amPm;\r\n\r\n if (dirtyHours === 0) {\r\n hours = '12';\r\n amPm = 'AM';\r\n }\r\n if (dirtyHours > 0 && dirtyHours < 12) {\r\n hours = dirtyHours.toString();\r\n amPm = 'AM';\r\n }\r\n if (dirtyHours === 12) {\r\n hours = dirtyHours.toString();\r\n amPm = 'PM';\r\n }\r\n if (dirtyHours > 12) {\r\n hours = (dirtyHours - 12).toString();\r\n amPm = 'PM';\r\n }\r\n\r\n minutes = UTIL.leadingZero(dirtyMinutes);\r\n\r\n return `${hours}:${minutes} ${amPm}`;\r\n }\r\n\r\n //========================================================\r\n // Scheduling Locations\r\n //========================================================\r\n function renderLocationDropdown() {\r\n calContainer = document.querySelector('.calendarContainer');\r\n let scheduleViewWrap = document.querySelector('.scheduleViewWrap');\r\n if (locationDropdown) return;\r\n var locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Locations:',\r\n style: 'secondary',\r\n });\r\n\r\n scheduleViewWrap.appendChild(locationDropdown);\r\n locationDropdown.classList.add('disabled');\r\n // actioncenter.insertBefore(locationDropdown, calContainer);\r\n\r\n // var locationDropdown = document.getElementById('js-scheduleLocationDropdown');\r\n locationDropdown.addEventListener('change', event => {\r\n var option = event.target.options[event.target.selectedIndex];\r\n var locationId = option.id;\r\n schedulingAjax.getSchedulesForSchedulingModuleAjax(locationId, '%', populateSchedules);\r\n });\r\n }\r\n\r\n function populateLocationDropdown(data) {\r\n // var dropdown = document.getElementById('locationDropdown');\r\n let dropdownData = data.map(d => {\r\n var id = d.locationId;\r\n var value = d.locationName;\r\n var text = d.locationName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n dropdown.populate('locationDropdown', dropdownData);\r\n\r\n // cache cloned data\r\n _locationsArr = data;\r\n // populate schedule for default location\r\n defaultLocation = dropdownData[0].id;\r\n // schedulingAjax.getSchedulesForSchedulingModuleAjax(defaultLocation, '%', populateSchedules);\r\n }\r\n\r\n //========================================================\r\n // SHIFT DETAILS\r\n //========================================================\r\n function renderDetailsPopup(details, type) {\r\n details = details[0];\r\n var actioncenter = document.getElementById('actioncenter');\r\n var shiftDetails = document.querySelector('.shiftDetails');\r\n var openShiftDetails = document.querySelector('.openShiftDetails');\r\n var pendingOpenShiftDetails = document.querySelector('.pendingOpenShiftDetails');\r\n var pendingCallOffDetails = document.querySelector('.pendingCallOffDetails');\r\n var appointmentDetails = document.querySelector('.appointmentDetails');\r\n\r\n if (shiftDetails) {\r\n var shiftId = shiftDetails.getAttribute('shiftId');\r\n if (shiftId !== details.shiftId) {\r\n actioncenter.removeChild(shiftDetails);\r\n } else {\r\n return;\r\n }\r\n }\r\n if (openShiftDetails) {\r\n var shiftId = openShiftDetails.getAttribute('shiftId');\r\n if (shiftId !== details.shiftId) {\r\n actioncenter.removeChild(openShiftDetails);\r\n } else {\r\n return;\r\n }\r\n }\r\n if (pendingOpenShiftDetails) {\r\n var shiftId = pendingOpenShiftDetails.getAttribute('shiftId');\r\n if (shiftId !== details.shiftId) {\r\n actioncenter.removeChild(pendingOpenShiftDetails);\r\n } else {\r\n return;\r\n }\r\n }\r\n if (pendingCallOffDetails) {\r\n var shiftId = pendingCallOffDetails.getAttribute('shiftId');\r\n if (shiftId !== details.shiftId) {\r\n actioncenter.removeChild(pendingCallOffDetails);\r\n } else {\r\n return;\r\n }\r\n }\r\n if (appointmentDetails) {\r\n var appointmentId = appointmentDetails.getAttribute('appointmentId');\r\n if (appointmentId !== details.medTrackingId) {\r\n actioncenter.removeChild(appointmentDetails);\r\n } else {\r\n return;\r\n }\r\n }\r\n detailsLocationId = details.locationId;\r\n switch (type) {\r\n case 'shift':\r\n renderShiftDetails(details);\r\n break;\r\n case 'openShift':\r\n renderOpenShiftDetails(details);\r\n break;\r\n case 'requestOff':\r\n renderPendingOpenShiftDetails(details);\r\n break;\r\n case 'callOff':\r\n renderPendingCallOffDetails(details);\r\n break;\r\n case 'appointment':\r\n renderAppointmentDetails(details);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n // Shift Details / Appointment Details\r\n //---------------------------------------------------\r\n function renderAppointmentDetails(details) {\r\n var actioncenter = document.getElementById('actioncenter');\r\n\r\n var date = details.dateScheduled.split(' ')[0];\r\n var time =\r\n details.timeScheduled !== ''\r\n ? convertFromMilitary(details.timeScheduled)\r\n : convertFromMilitary(details.dateScheduled.split(' ')[1]);\r\n var notes = details.notes;\r\n var consumer = details.consumerName;\r\n var provider = details.provider;\r\n var type = details.typeDescription;\r\n var reason = details.reason;\r\n\r\n var popup = POPUP.build({\r\n classNames: 'appointmentDetails',\r\n attributes: [{ key: 'appointmentId', value: details.medTrackingId }],\r\n });\r\n\r\n wrap = document.createElement('div');\r\n wrap.innerHTML = `\r\n
    \r\n

    Appointment Details

    \r\n

    ${date}

    \r\n
    \r\n \r\n
    \r\n
    \r\n

    Time:

    \r\n

    ${time}

    \r\n
    \r\n
    \r\n
    \r\n

    Consumer:

    \r\n

    ${consumer}

    \r\n
    \r\n
    \r\n
    \r\n

    Provider:

    \r\n

    ${provider}

    \r\n
    \r\n
    \r\n
    \r\n

    Type:

    \r\n

    ${type}

    \r\n
    \r\n
    \r\n
    \r\n

    Reason:

    \r\n

    ${reason}

    \r\n
    \r\n
    \r\n
    \r\n

    Notes:

    \r\n

    ${notes}

    \r\n
    \r\n
    \r\n `;\r\n popup.appendChild(wrap);\r\n POPUP.show(popup);\r\n }\r\n // UPDATED FOR RESPONSIVE POPUP\r\n function renderShiftDetails(details) {\r\n var actioncenter = document.getElementById('actioncenter');\r\n\r\n var shiftDate = details.serviceDate.split(' ')[0];\r\n var startTime = details.startTime;\r\n var endTime = details.endTime;\r\n var consumers = details.consumerNames;\r\n var location = details.locationName;\r\n var shiftNotes = details.shiftNotes;\r\n var shiftType = details.shiftType;\r\n var workCode = `${details.workCode} - ${details.workCodeDescription}`;\r\n shiftDateForCall = shiftDate;\r\n shiftType =\r\n shiftType === 'A'\r\n ? 'Awake'\r\n : shiftType === 'N'\r\n ? 'Night'\r\n : shiftType === 'D'\r\n ? 'Day'\r\n : shiftType === 'S'\r\n ? 'Sleep'\r\n : '';\r\n startTime = convertFromMilitary(startTime);\r\n endTime = convertFromMilitary(endTime);\r\n\r\n var popup = POPUP.build({\r\n classNames: 'shiftDetails',\r\n attributes: [{ key: 'shiftId', value: details.shiftId }],\r\n });\r\n wrap = document.createElement('div');\r\n wrap.innerHTML = `\r\n
    \r\n

    Shift Details

    \r\n

    ${shiftDate}

    \r\n
    \r\n
    \r\n
    \r\n

    Location:

    \r\n

    ${location}

    \r\n
    \r\n
    \r\n
    \r\n

    Time:

    \r\n

    ${startTime} - ${endTime}

    \r\n
    \r\n
    \r\n
    \r\n

    Consumers:

    \r\n

    ${consumers}

    \r\n
    \r\n
    \r\n
    \r\n

    Work Code:

    \r\n

    ${workCode}

    \r\n
    \r\n
    \r\n
    \r\n

    Shift Type:

    \r\n

    ${shiftType}

    \r\n
    \r\n
    \r\n
    \r\n

    Notes:

    \r\n

    ${shiftNotes}

    \r\n
    \r\n
    \r\n `;\r\n popup.appendChild(wrap);\r\n //New Call off btn using button.build\r\n let callOffBtn = button.build({\r\n text: 'Call Off',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n renderRequestOffPopup(details.shiftId);\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('popupBtnWrap');\r\n btnWrap.appendChild(callOffBtn);\r\n\r\n if (\r\n _scheduleView === 'mine' &&\r\n (_currentView === 'week' || _currentView === 'day') &&\r\n $.session.schedAllowCallOffRequests === 'Y' &&\r\n $.session.schedulingUpdate\r\n ) {\r\n popup.appendChild(btnWrap);\r\n }\r\n POPUP.show(popup);\r\n }\r\n\r\n // UPDATED FOR RESPONSIVE POPUP\r\n // Open Shift Details\r\n //---------------------------------------------------\r\n function renderOpenShiftDetails(details) {\r\n var actioncenter = document.getElementById('actioncenter');\r\n\r\n var shiftDate = details.serviceDate.split(' ')[0];\r\n var startTime = details.startTime;\r\n var endTime = details.endTime;\r\n var consumers = details.consumerNames;\r\n var location = details.locationName;\r\n var shiftNotes = details.shiftNotes;\r\n var shiftType = details.shiftType;\r\n var workCode = `${details.workCode} - ${details.workCodeDescription}`;\r\n shiftDateForCall = shiftDate;\r\n shiftType = shiftType === 'A' ? 'Awake' : shiftType === 'N' ? 'Night' : shiftType === 'D' ? 'Day' : '';\r\n startTime = convertFromMilitary(startTime);\r\n endTime = convertFromMilitary(endTime);\r\n\r\n var popup = POPUP.build({\r\n classNames: 'openShiftDetails',\r\n attributes: [{ key: 'shiftId', value: details.shiftId }],\r\n });\r\n wrap = document.createElement('div');\r\n wrap.innerHTML = `\r\n
    \r\n

    Shift Details

    \r\n

    ${shiftDate}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Location:

    \r\n

    ${location}

    \r\n
    \r\n
    \r\n
    \r\n

    Time:

    \r\n

    ${startTime} - ${endTime}

    \r\n
    \r\n
    \r\n
    \r\n

    Consumers:

    \r\n

    ${consumers}

    \r\n
    \r\n
    \r\n
    \r\n

    Work Code:

    \r\n

    ${workCode}

    \r\n
    \r\n
    \r\n
    \r\n

    Shift Type:

    \r\n

    ${shiftType}

    \r\n
    \r\n
    \r\n
    \r\n

    Notes:

    \r\n

    ${shiftNotes}

    \r\n
    \r\n
    \r\n `;\r\n popup.appendChild(wrap);\r\n let requestShiftBtn = button.build({\r\n text: 'Request Shift',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n var token = $.session.Token;\r\n var shiftId = details.shiftId;\r\n var personId = $.session.PeopleId;\r\n var status = 'P';\r\n var notifiedEmployeeId = null;\r\n POPUP.hide(popup);\r\n\r\n const { getOverlapStatusforSelectedShiftResult: overlapWithExistingShift } =\r\n await schedulingAjax.getOverlapStatusforSelectedShiftAjax(shiftId, personId);\r\n\r\n if (overlapWithExistingShift == 'NoOverLap') {\r\n renderSendShiftRequestPopup({\r\n token,\r\n shiftId,\r\n personId,\r\n status,\r\n notifiedEmployeeId,\r\n });\r\n } else {\r\n displayOverlapPopup(overlapWithExistingShift);\r\n return;\r\n }\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('popupBtnWrap');\r\n\r\n if ($.session.schedRequestOpenShifts === 'N' || $.session.isPSI) {\r\n } else if (!$.session.schedulingUpdate || !$.session.schedulingView) {\r\n } else {\r\n btnWrap.appendChild(requestShiftBtn);\r\n popup.appendChild(btnWrap);\r\n }\r\n\r\n // ($.session.schedRequestOpenShifts === 'N' || $.session.isPSI) ? null:\r\n // (!$.session.schedulingUpdate || !$.session.schedulingView) ? null: popup.appendChild(btnWrap)\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n function displayOverlapPopup(existingShiftLocationName) {\r\n var overlapPopup = POPUP.build({\r\n classNames: 'sendRequestShiftPopup',\r\n });\r\n overlapWrap = document.createElement('div');\r\n overlapWrap.innerHTML = `\r\n
    \r\n

    Requested Shift Overlap

    \r\n

    This open shift overlaps with an existing shift you are scheduled to work at ${existingShiftLocationName}. You cannot request this open shift.

    \r\n
    \r\n `;\r\n overlapPopup.appendChild(overlapWrap);\r\n\r\n let overlapCancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(overlapPopup);\r\n },\r\n });\r\n\r\n //overlapPopup.appendChild(wrap2);\r\n overlapPopup.appendChild(overlapCancelBtn);\r\n\r\n POPUP.show(overlapPopup);\r\n }\r\n // UPDATED FOR RESPONSIVE POPUP\r\n function renderSendShiftRequestPopup(data) {\r\n var actioncenter = document.getElementById('actioncenter');\r\n\r\n var popup = POPUP.build({\r\n classNames: 'sendRequestShiftPopup',\r\n });\r\n wrap = document.createElement('div');\r\n wrap.innerHTML = `\r\n
    \r\n

    Request Open Shift

    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n `;\r\n popup.appendChild(wrap);\r\n var employeeDropdown = dropdown.build({\r\n dropdownId: 'employeeDropdown',\r\n label: 'Employee To Notify',\r\n style: 'secondary',\r\n });\r\n let cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n let sendRequestBtn = button.build({\r\n id: 'sendReqBtn',\r\n classNames: 'disabled',\r\n text: 'Send Request',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'send',\r\n callback: function () {\r\n data.notifiedEmployeeId = employeeId;\r\n schedulingAjax.saveOpenShiftRequestSchedulingAjax(data);\r\n _scheduleView = 'mine';\r\n _currentView = 'week';\r\n POPUP.hide(popup);\r\n init();\r\n },\r\n });\r\n\r\n schedulingAjax.getCallOffDropdownEmployeesAjax(shiftDateForCall, detailsLocationId, populateEmployeesDropdown);\r\n\r\n POPUP.show(popup);\r\n popup.appendChild(employeeDropdown);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('popupBtnWrap');\r\n btnWrap.appendChild(sendRequestBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n employeeDropdown.classList.add('error');\r\n employeeDropdown.addEventListener('change', function () {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n employeeId = selectedOption.id;\r\n if (employeeId === '%') {\r\n employeeDropdown.classList.add('error');\r\n } else {\r\n employeeDropdown.classList.remove('error');\r\n }\r\n checkRequiredFields(sendRequestBtn);\r\n });\r\n }\r\n\r\n // Pending Open Shift Details\r\n // UPDATED FOR RESPONSIVE POPUP\r\n //---------------------------------------------------\r\n function renderPendingOpenShiftDetails(details) {\r\n var actioncenter = document.getElementById('actioncenter');\r\n\r\n var shiftDate = details.serviceDate.split(' ')[0];\r\n var startTime = details.startTime;\r\n var endTime = details.endTime;\r\n var consumers = details.consumerNames;\r\n var location = details.locationName;\r\n var shiftNotes = details.shiftNotes;\r\n var shiftType = details.shiftType;\r\n var workCode = `${details.workCode} - ${details.workCodeDescription}`;\r\n shiftDateForCall = shiftDate; //need this to pass back in order to get correct dropdown employees\r\n shiftType = shiftType === 'A' ? 'Awake' : shiftType === 'N' ? 'Night' : shiftType === 'D' ? 'Day' : '';\r\n startTime = convertFromMilitary(startTime);\r\n endTime = convertFromMilitary(endTime);\r\n\r\n var popup = POPUP.build({\r\n classNames: 'pendingOpenShiftPopup',\r\n attributes: [{ key: 'shiftId', value: details.shiftId }],\r\n });\r\n wrap = document.createElement('div');\r\n wrap.innerHTML = `\r\n
    \r\n

    Shift Details

    \r\n

    ${shiftDate}

    \r\n
    \r\n \r\n
    \r\n
    \r\n

    Location:

    \r\n

    ${location}

    \r\n
    \r\n
    \r\n
    \r\n

    Time:

    \r\n

    ${startTime} - ${endTime}

    \r\n
    \r\n
    \r\n
    \r\n

    Consumers:

    \r\n

    ${consumers}

    \r\n
    \r\n
    \r\n
    \r\n

    Work Code:

    \r\n

    ${workCode}

    \r\n
    \r\n
    \r\n
    \r\n

    Shift Type:

    \r\n

    ${shiftType}

    \r\n
    \r\n
    \r\n
    \r\n

    Notes:

    \r\n

    ${shiftNotes}

    \r\n
    \r\n
    \r\n `;\r\n\r\n popup.appendChild(wrap);\r\n let cancelRequestBtn = button.build({\r\n id: 'cancelRequestBtn',\r\n attributes: [{ shiftId: details.shiftId }],\r\n text: 'Cancel Request',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n var shiftId = details.shiftId;\r\n schedulingAjax.cancelRequestOpenShiftSchedulingAjax(shiftId);\r\n POPUP.hide(popup);\r\n _scheduleView = 'mine';\r\n _currentView = 'week';\r\n init();\r\n },\r\n });\r\n\r\n if (details.requestedById === $.session.PeopleId) {\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('popupBtnWrap');\r\n btnWrap.appendChild(cancelRequestBtn);\r\n popup.appendChild(btnWrap);\r\n }\r\n POPUP.show(popup);\r\n }\r\n\r\n // Pending Call Off Details\r\n // UPDATED FOR RESPONSIVE POPUP\r\n //---------------------------------------------------\r\n\r\n // UPDATED FOR RESPONSIVE POPUP\r\n function renderPendingCallOffDetails(details) {\r\n var actioncenter = document.getElementById('actioncenter');\r\n\r\n var shiftDate = details.serviceDate.split(' ')[0];\r\n var startTime = details.startTime;\r\n var endTime = details.endTime;\r\n var consumers = details.consumerNames;\r\n var location = details.locationName;\r\n var shiftNotes = details.shiftNotes;\r\n var shiftType = details.shiftType;\r\n var workCode = `${details.workCode} - ${details.workCodeDescription}`;\r\n shiftDateForCall = shiftDate;\r\n shiftType = shiftType === 'A' ? 'Awake' : shiftType === 'N' ? 'Night' : shiftType === 'D' ? 'Day' : '';\r\n startTime = convertFromMilitary(startTime);\r\n endTime = convertFromMilitary(endTime);\r\n\r\n var popup = POPUP.build({\r\n classNames: 'pendingCallOffDetails',\r\n attributes: [{ key: 'shiftId', value: details.shiftId }],\r\n });\r\n var wrap = document.createElement('div');\r\n wrap.innerHTML = `\r\n
    \r\n

    Shift Details

    \r\n

    ${shiftDate}

    \r\n
    \r\n
    \r\n
    \r\n

    Location:

    \r\n

    ${location}

    \r\n
    \r\n
    \r\n
    \r\n

    Time:

    \r\n

    ${startTime} - ${endTime}

    \r\n
    \r\n
    \r\n
    \r\n

    Consumers:

    \r\n

    ${consumers}

    \r\n
    \r\n
    \r\n
    \r\n

    Work Code:

    \r\n

    ${workCode}

    \r\n
    \r\n
    \r\n
    \r\n

    Shift Type:

    \r\n

    ${shiftType}

    \r\n
    \r\n
    \r\n
    \r\n

    Notes:

    \r\n

    ${shiftNotes}

    \r\n
    \r\n
    \r\n `;\r\n popup.appendChild(wrap);\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n // Employee Shift Call Off\r\n // *the button shown inside shift details\r\n //---------------------------------------------------\r\n\r\n // UPDATED FOR RESPONSIVE DROPDOWN\r\n function populateReasonsDropdown(results) {\r\n results.sort((a, b) => (a.reasonName < b.reasonName ? -1 : 1));\r\n results = [{ reasonId: '%', reasonName: '' }, ...results];\r\n var dropdownData = results.map(r => {\r\n var id = r.reasonId;\r\n var value = r.reasonName;\r\n var text = r.reasonName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n dropdown.populate('reasonDropdown', dropdownData);\r\n // reasonDropdown.addEventListener('change', () => {\r\n // var selectedOption = event.target.options[event.target.selectedIndex];\r\n // reasonId = selectedOption.id;\r\n // })\r\n }\r\n // UPDATED FOR RESPONSIVE DROPDOWN\r\n function populateEmployeesDropdown(results) {\r\n results = [{ employeeId: '%', employeeName: '' }, ...results];\r\n var employeeData = results.map(r => {\r\n var id = r.employeeId;\r\n var value = r.employeeName;\r\n var text = r.employeeName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n dropdown.populate('employeeDropdown', employeeData);\r\n // employeeDropdown.addEventListener('change', () => {\r\n // var sendRequestBtn = document.getElementById('sendReqBtn')\r\n // var selectedOption = event.target.options[event.target.selectedIndex];\r\n // employeeId = selectedOption.id;\r\n // employeeId !== '%' ? sendRequestBtn.classList.remove('disabled'): sendRequestBtn.classList.add('disabled');\r\n // });\r\n }\r\n\r\n //UPDATED FOR RESPONSIVE CODE\r\n //CALL OFF POPUP\r\n function renderRequestOffPopup(eventId) {\r\n var actioncenter = document.getElementById('actioncenter');\r\n var calendar = document.getElementById('calendarContent');\r\n\r\n var popup = POPUP.build({\r\n classNames: 'request-off-popup',\r\n attributes: [{ key: 'shiftId', value: eventId }],\r\n });\r\n var reasonDropdown = dropdown.build({\r\n dropdownId: 'reasonDropdown',\r\n label: 'Reason',\r\n style: 'secondary',\r\n readOnly: 'false',\r\n });\r\n\r\n var notesInput = input.build({\r\n id: 'noteInput',\r\n label: 'Notes',\r\n type: 'textarea',\r\n style: 'secondary',\r\n });\r\n\r\n var employeeDropdown = dropdown.build({\r\n dropdownId: 'employeeDropdown',\r\n label: 'Employee To Notify',\r\n style: 'secondary',\r\n });\r\n\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n reasonId = '';\r\n employeeId = '';\r\n note = '';\r\n },\r\n });\r\n\r\n var sendRequestBtn = button.build({\r\n id: 'sendReqBtn',\r\n text: 'Send Request',\r\n classNames: 'disabled',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'send',\r\n callback: function () {\r\n var note = document.getElementById('noteInput').value;\r\n var data = {\r\n token: $.session.Token,\r\n shiftId: eventId,\r\n personId: $.session.PeopleId,\r\n reasonId: reasonId,\r\n note: note,\r\n status: 'P',\r\n notifiedEmployeeId: employeeId,\r\n };\r\n\r\n schedulingAjax.saveSchedulingCallOffRequestAjax(data);\r\n POPUP.hide(popup);\r\n init();\r\n },\r\n });\r\n\r\n reasonDropdown.classList.add('error');\r\n notesInput.classList.add('error');\r\n employeeDropdown.classList.add('error');\r\n\r\n reasonDropdown.addEventListener('change', function () {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n reasonId = selectedOption.id;\r\n if (reasonId === '%') {\r\n reasonDropdown.classList.add('error');\r\n } else {\r\n reasonDropdown.classList.remove('error');\r\n }\r\n checkRequiredFields(sendRequestBtn);\r\n });\r\n\r\n notesInput.addEventListener('change', function () {\r\n if (notesInput.firstChild.value === '') {\r\n notesInput.classList.add('error');\r\n } else {\r\n notesInput.classList.remove('error');\r\n }\r\n checkRequiredFields(sendRequestBtn);\r\n });\r\n\r\n employeeDropdown.addEventListener('change', function () {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n employeeId = selectedOption.id;\r\n if (employeeId === '%') {\r\n employeeDropdown.classList.add('error');\r\n } else {\r\n employeeDropdown.classList.remove('error');\r\n }\r\n checkRequiredFields(sendRequestBtn);\r\n });\r\n\r\n let header = document.createElement('h2');\r\n header.classList.add('detailsHeading');\r\n header.innerHTML = 'Call Off Request';\r\n\r\n POPUP.show(popup);\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('popupBtnWrap');\r\n btnWrap.appendChild(sendRequestBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n popup.appendChild(header);\r\n popup.appendChild(reasonDropdown);\r\n popup.appendChild(notesInput);\r\n popup.appendChild(employeeDropdown);\r\n popup.appendChild(btnWrap);\r\n\r\n schedulingAjax.getCallOffDropdownEmployeesAjax(shiftDateForCall, detailsLocationId, populateEmployeesDropdown);\r\n schedulingAjax.getCallOffDropdownReasonsAjax(populateReasonsDropdown);\r\n }\r\n\r\n function checkRequiredFields(btn) {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length === 0) {\r\n btn.classList.remove('disabled');\r\n } else {\r\n btn.classList.add('disabled');\r\n }\r\n }\r\n\r\n // ----------------------------------------------\r\n // MOVED TO schedulingRequestTimeOff.js v v v\r\n // Employee Request Time Off\r\n // *the button at the bottom of calendar\r\n // *allows employee to request multiple days off\r\n //---------------------------------------------------\r\n\r\n //========================================================\r\n // Schedules\r\n //========================================================\r\n function toggleView() {\r\n var btn = document.getElementById('scheduleViewBtn');\r\n var scheduleView = btn.getAttribute('data-view');\r\n var locationDropdown = document.getElementById('locationDropdown');\r\n\r\n if (scheduleView === 'all') {\r\n // set view\r\n _scheduleView = 'mine';\r\n _currentView = 'week';\r\n btn.setAttribute('data-view', 'mine');\r\n schedulingAjax.getSchedulesForSchedulingModuleAjax('%', $.session.PeopleId, populateSchedules);\r\n // remove location dropdown\r\n let scheduleViewWrap = document.querySelector('.scheduleViewWrap');\r\n var locationDropdown = document.getElementById('locationDropdown');\r\n // scheduleViewWrap.removeChild(locationDropdown.parentNode);\r\n locationDropdown.parentElement.classList.add('disabled');\r\n // locationDropdown.setAttribute('disabled', true);\r\n } else {\r\n // set view\r\n _scheduleView = 'all';\r\n _currentView = 'week';\r\n btn.setAttribute('data-view', 'all');\r\n // enable loaction dropdown\r\n locationDropdown.parentElement.classList.remove('disabled');\r\n if (defaultLocation === null) {\r\n let option = locationDropdown.options[locationDropdown.selectedIndex];\r\n var locationId = option.id;\r\n schedulingAjax.getSchedulesForSchedulingModuleAjax(locationId, '%', populateSchedules);\r\n } else {\r\n schedulingAjax.getSchedulesForSchedulingModuleAjax(defaultLocation, '%', populateSchedules);\r\n defaultLocation = null;\r\n }\r\n }\r\n }\r\n\r\n function renderScheduleViewBtn() {\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('scheduleViewWrap');\r\n\r\n scheduleViewBtn = button.build({\r\n id: 'scheduleViewBtn',\r\n attributes: [{ 'data-view': 'mine' }],\r\n text: 'My Schedule', //Default view is My Schedule, Text shoul say All Schedules\r\n //because that is that you will view when clicked\r\n style: 'secondary',\r\n type: 'contained',\r\n toggle: true,\r\n toggleText: 'All Schedules',\r\n callback: function () {\r\n toggleView();\r\n },\r\n });\r\n if ($.session.hideAllScheduleButton) {\r\n return;\r\n } else {\r\n btnWrap.appendChild(scheduleViewBtn);\r\n }\r\n calContainer = document.querySelector('.calendarContainer');\r\n actioncenter.insertBefore(btnWrap, calContainer);\r\n }\r\n\r\n function populateShiftTotalHours() {\r\n if (isMobile && _currentView === 'day') return;\r\n function getDateRangeFromCalTitle() {\r\n var calTitle = document.getElementById('calTitle').innerHTML;\r\n\r\n var year = calTitle.split('-')[1].split(',')[1].trim();\r\n var dateString1 = calTitle.split('-')[0].trim() + `, ${year}`;\r\n var dateString2 = calTitle.split('-')[1].split(',')[0].trim() + `, ${year}`;\r\n var date1 = new Date(dateString1);\r\n var date2 = new Date(dateString2);\r\n // must return object with start and end properties\r\n return { start: date1, end: date2 };\r\n }\r\n\r\n function calcWeekTotalHours() {\r\n var dateRangeObj = getDateRangeFromCalTitle();\r\n\r\n var myShifts = _schedules.filter(schedule => {\r\n var serviceDate = schedule.serviceDate.split(' ')[0].split('/');\r\n var yyyy = serviceDate[2];\r\n var mm = parseInt(serviceDate[0]) - 1;\r\n var dd = serviceDate[1];\r\n serviceDate = new Date(yyyy, mm, dd);\r\n var withinInterval = isWithinInterval(serviceDate, dateRangeObj);\r\n return withinInterval;\r\n });\r\n\r\n var totalHours = 0;\r\n myShifts.forEach(shift => {\r\n var doesIdMatch = $.session.PeopleId === shift.personID;\r\n if (doesIdMatch) totalHours += parseFloat(shift.hoursScheduled);\r\n });\r\n\r\n return totalHours;\r\n }\r\n\r\n setTimeout(() => {\r\n var totalHours;\r\n if (_currentWeekHours !== null) {\r\n totalHours = _currentWeekHours;\r\n } else {\r\n totalHours = calcWeekTotalHours();\r\n }\r\n\r\n // Total Shifts at Bottom of Page\r\n //=========================================\r\n var wrap = document.querySelector('.total-hours-wrap');\r\n var wrapMarkup = `

    Current Week Total Hours: ${parseFloat(totalHours).toFixed(2)}

    `;\r\n\r\n if (wrap) {\r\n wrap.innerHTML = wrapMarkup;\r\n } else {\r\n var calendar = document.querySelector('.calendarFooter');\r\n wrap = document.createElement('div');\r\n wrap.classList.add('total-hours-wrap');\r\n wrap.innerHTML = wrapMarkup;\r\n calendar.appendChild(wrap);\r\n }\r\n\r\n // Individual Shift Total Hours\r\n //=========================================\r\n var shifts = Array.prototype.slice.call(document.querySelectorAll('.eventBody .hdr'));\r\n shifts.forEach(shift => {\r\n var time = shift.innerHTML;\r\n time = time.split('-');\r\n time[1] = time[1].trim() === '11:59 PM' ? '12:00 AM' : time[1];\r\n var hours = getTotalHours(time[0], time[1]);\r\n // sets total hours per shift\r\n shift.innerHTML += `(${parseFloat(hours).toFixed(2)})`;\r\n });\r\n\r\n _currentWeekHours = totalHours; // cache total hours\r\n }, 100);\r\n }\r\n\r\n function populateAppointments(results) {\r\n results.forEach((res, index) => {\r\n var serviceDate = getServiceDate(res);\r\n var startTime = `${serviceDate} ${res.timeScheduled}`;\r\n // This code is for microshit IE\r\n var dateArray = startTime.split(' ')[0].split('-');\r\n var timeArray = startTime.split(' ')[1].split(':');\r\n var yyyy = dateArray[0];\r\n var mm = dateArray[1] - 1;\r\n var dd = dateArray[2];\r\n var hour = timeArray[0];\r\n var min = timeArray[1];\r\n var sec = timeArray[2];\r\n var date = new Date(yyyy, mm, dd, hour, min, sec);\r\n // end Microshit IE code\r\n var endTime = addMinutes(date, 60);\r\n endTime = `${serviceDate} ${UTIL.leadingZero(endTime.getHours())}:${UTIL.leadingZero(endTime.getMinutes())}:00`;\r\n\r\n _scheduleArray[5].events.push({\r\n startTime: startTime,\r\n endTime: endTime,\r\n group: {\r\n groupId: 6,\r\n },\r\n eventId: res.medTrackingId,\r\n allDay: false,\r\n description: res.typeDescription,\r\n name: res.consumerName,\r\n eventName: res.takenToApptBy,\r\n });\r\n\r\n // Temp cache of appointments\r\n _appointments.push(res);\r\n });\r\n }\r\n\r\n function populateSchedules(results, locationId) {\r\n // clear own _schedules cache\r\n _schedules = [];\r\n // refigure dataObject to match web2cal\r\n _scheduleArray = [\r\n {\r\n name: 'My Shifts',\r\n groupId: 1,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'All Shifts',\r\n groupId: 2,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'Open Shifts',\r\n groupId: 3,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'Pending Request Open Shifts',\r\n groupId: 4,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'Pending Call Off Shifts',\r\n groupId: 5,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'Appointments',\r\n groupId: 6,\r\n events: [],\r\n groups: null,\r\n },\r\n ];\r\n\r\n results.forEach(res => {\r\n // null/undefined checks\r\n var timeRegEx = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/;\r\n var isStartTimeValid = timeRegEx.test(res.startTime);\r\n var isEndTimeValid = timeRegEx.test(res.endTime);\r\n\r\n if (!isStartTimeValid || !isEndTimeValid || res.serviceDate === '') {\r\n return;\r\n }\r\n\r\n if (_scheduleView === 'mine' && $.session.isPSI) return;\r\n\r\n // Determine which scheduleArray group to push to\r\n var groupPos; // position in scheduleArray\r\n var groupId; // calendar group number\r\n\r\n if (res.personID === '' || res.personID === null) {\r\n if (_scheduleView === 'all') {\r\n if (\r\n (res.callOffStatus === '' && res.requestShiftStatus === '') ||\r\n (res.callOffStatus === '' && res.requestShiftStatus === 'D')\r\n ) {\r\n //MAT changed 6/7/2019. Ash check\r\n // open shift\r\n groupId = 3;\r\n groupPos = 2;\r\n } else if (res.requestShiftStatus === 'P') {\r\n // pending open shift\r\n groupId = 4;\r\n groupPos = 3;\r\n }\r\n }\r\n } else if (res.personID.toString() === $.session.PeopleId) {\r\n if (res.callOffStatus === 'P') {\r\n // pending call off\r\n groupId = 5;\r\n groupPos = 4;\r\n } else {\r\n // my shifts\r\n groupId = 1;\r\n groupPos = 0;\r\n }\r\n } else {\r\n // all shifts\r\n groupId = 2;\r\n groupPos = 1;\r\n }\r\n\r\n // Event Details\r\n //----------------------\r\n var serviceDate = getServiceDate(res);\r\n var startTime = `${serviceDate} ${res.startTime}`;\r\n var endTime = `${serviceDate} ${res.endTime}`;\r\n var description = `${res.lastName}, ${res.firstName}`;\r\n description = description.trim() === ',' ? '' : description;\r\n var eventName = _scheduleView === 'mine' ? res.locationName : `${res.lastName}, ${res.firstName} `;\r\n eventName = eventName.trim() === ',' ? '' : eventName;\r\n eventName = eventName === '' ? res.locationName : eventName;\r\n var name = _scheduleView === 'mine' ? res.locationName : res.lastName;\r\n name = name === '' ? res.locationName : name;\r\n\r\n if (typeof groupPos === 'number') {\r\n _scheduleArray[groupPos].events.push({\r\n startTime: startTime,\r\n endTime: endTime,\r\n group: {\r\n groupId: groupId,\r\n },\r\n eventId: res.shiftId,\r\n allDay: false,\r\n description: description,\r\n name: name,\r\n eventName: eventName,\r\n });\r\n }\r\n\r\n // Cache schedules\r\n _schedules.push(res);\r\n });\r\n\r\n if (_scheduleView === 'all') {\r\n schedulingAjax.getScheduleApptInformationAjax(locationId, function (results) {\r\n populateAppointments(results);\r\n drawCalendar();\r\n });\r\n } else {\r\n drawCalendar(_scheduleArray);\r\n }\r\n }\r\n\r\n //========================================================\r\n // Schedule Admin\r\n // MOVED to SchedulingApproveRequest.js\r\n //========================================================\r\n\r\n //========================================================\r\n // Calendar\r\n //========================================================\r\n let ical;\r\n function drawCalendar() {\r\n removeInnerHtml('calendarContainer');\r\n ical = new Web2Cal('calendarContainer', {\r\n loadEvents: function () {\r\n ical.render(_scheduleArray);\r\n },\r\n onNewEvent: onNewEvent,\r\n startOfWeek: _startDay,\r\n readOnly: true,\r\n });\r\n ical.build();\r\n\r\n removeStuffWeDontWant();\r\n renderCalFooter();\r\n setupCalendarEvents();\r\n if (_currentView === 'week' || _currentView === 'day') {\r\n populateShiftTotalHours();\r\n }\r\n if (!document.querySelector('.scheduleViewWrap')) {\r\n renderScheduleViewBtn();\r\n renderLocationDropdown();\r\n schedulingAjax.getLocationDropdownForSchedulingAjax(populateLocationDropdown);\r\n }\r\n }\r\n\r\n function onNewEvent(obj, groups, allday) {\r\n Web2Cal.defaultPlugins.onNewEvent(obj, groups, allday);\r\n }\r\n\r\n function rzCloseAddEvent() {\r\n ical.closeAddEvent();\r\n }\r\n\r\n function renderCalFooter() {\r\n var calendar = document.getElementById('calendarContent');\r\n var footer = document.createElement('div');\r\n footer.classList.add('calendarFooter');\r\n footer.innerHTML = `
    `;\r\n calendar.appendChild(footer);\r\n }\r\n\r\n function setupDateHeadingEvent() {\r\n var dateHeadings = Array.prototype.slice.call(document.querySelectorAll('.calHeader'));\r\n\r\n dateHeadings.forEach(heading => {\r\n heading.addEventListener('click', event => {\r\n _currentView = 'day';\r\n populateShiftTotalHours();\r\n });\r\n });\r\n }\r\n\r\n function setupCalendarEvents() {\r\n var calendar = document.getElementById('calendarContent');\r\n var monthBtn = document.getElementById('calNavmonth');\r\n var weekBtn = document.getElementById('calNavweek');\r\n var dayBtn = document.getElementById('calNavday');\r\n var prevBtn = document.querySelector('.prevButton.navbtn');\r\n var nextBtn = document.querySelector('.nextButton.navbtn');\r\n\r\n calendar.addEventListener('click', event => {\r\n switch (event.target) {\r\n case monthBtn:\r\n _currentView = 'month';\r\n var a = document.querySelector('.calendarFooter');\r\n var b = a.querySelector('.total-hours-wrap');\r\n if (b) a.removeChild(b);\r\n break;\r\n case weekBtn:\r\n _currentView = 'week';\r\n setupDateHeadingEvent();\r\n populateShiftTotalHours();\r\n if ($.session.schedAllowCallOffRequests === 'Y' && $.session.schedulingUpdate) {\r\n }\r\n break;\r\n case dayBtn:\r\n _currentView = 'day';\r\n populateShiftTotalHours();\r\n if ($.session.schedAllowCallOffRequests === 'Y' && $.session.schedulingUpdate) {\r\n }\r\n break;\r\n case prevBtn:\r\n case nextBtn:\r\n if (_currentView === 'week' || _currentView === 'day') {\r\n populateShiftTotalHours();\r\n if (_scheduleView === 'mine' && $.session.schedAllowCallOffRequests === 'Y' && $.session.schedulingUpdate) {\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n if (event.target.classList.contains('dayEvent')) {\r\n // My Shifts & All Shifts\r\n if (event.target.classList.contains('red') || event.target.classList.contains('blueTemplate')) {\r\n var eventId = parseInt(event.target.getAttribute('eventid'));\r\n var eventDetails = _schedules.filter(schedule => {\r\n return schedule.shiftId === eventId;\r\n });\r\n renderDetailsPopup(eventDetails, 'shift');\r\n return;\r\n }\r\n\r\n // Open Shifts\r\n if (event.target.classList.contains('brickTemplate')) {\r\n var eventId = parseInt(event.target.getAttribute('eventid'));\r\n var eventDetails = _schedules.filter(schedule => {\r\n return schedule.shiftId === eventId;\r\n });\r\n renderDetailsPopup(eventDetails, 'openShift');\r\n return;\r\n }\r\n\r\n // Pending Request Open Shifts\r\n if (event.target.classList.contains('tealTemplate')) {\r\n var eventId = parseInt(event.target.getAttribute('eventid'));\r\n var eventDetails = _schedules.filter(schedule => {\r\n return schedule.shiftId === eventId;\r\n });\r\n renderDetailsPopup(eventDetails, 'requestOff');\r\n return;\r\n }\r\n\r\n // Pending Call Off Shifts\r\n if (event.target.classList.contains('lightGreenTemplate')) {\r\n var eventId = parseInt(event.target.getAttribute('eventid'));\r\n var eventDetails = _schedules.filter(schedule => {\r\n return schedule.shiftId === eventId;\r\n });\r\n renderDetailsPopup(eventDetails, 'callOff');\r\n return;\r\n }\r\n\r\n // Appointments\r\n if (event.target.classList.contains('brownTemplate')) {\r\n var appointmentId = event.target.getAttribute('eventid');\r\n var appointmenttDetails = _appointments.filter(appointment => {\r\n return appointment.medTrackingId === appointmentId;\r\n });\r\n\r\n renderDetailsPopup(appointmenttDetails, 'appointment');\r\n return;\r\n }\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n\r\n //========================================================\r\n // Overriding Web2Cal\r\n //========================================================\r\n function removeStuffWeDontWant() {\r\n var navWrap = document.getElementById('inner-wrap');\r\n var leftNav = document.getElementById('leftNav');\r\n navWrap.removeChild(leftNav);\r\n\r\n var inliner1 = document.querySelector('.inline.r1');\r\n var inliner2 = document.querySelector('.inline.r2');\r\n var calNav = document.getElementById('calNavData');\r\n var agendaBtn = document.querySelector('.liagenda');\r\n var workshiftBtn = document.querySelector('.liworkshift');\r\n var resourceBtn = document.querySelector('.liw2cview');\r\n var groupsBtn = document.querySelector('.topHideShowLink');\r\n var calicon = document.querySelector('.icon-calendar');\r\n calNav.removeChild(agendaBtn);\r\n calNav.removeChild(workshiftBtn);\r\n calNav.removeChild(resourceBtn);\r\n inliner1.removeChild(groupsBtn);\r\n inliner2.removeChild(calicon);\r\n\r\n var collapseWrap = document.querySelector('#topnavContainer .inline.r2');\r\n var collapse = document.querySelector('.collapse-left-nav.icon-arrow-left');\r\n collapseWrap.removeChild(collapse);\r\n }\r\n function init() {\r\n isMobile = document.body.dataset.mobile;\r\n\r\n if (isMobile) {\r\n _currentView = 'day';\r\n } else {\r\n _currentView = 'week';\r\n }\r\n _scheduleView = 'mine';\r\n PROGRESS.init();\r\n PROGRESS.SPINNER.init();\r\n PROGRESS.SPINNER.show('Loading Calendar');\r\n schedulingAjax.getDayOfWeekScheduleAjax(setStartDay);\r\n\r\n // default view is my schedules\r\n schedulingAjax.getSchedulesForSchedulingModuleAjax('%', $.session.PeopleId, function (results) {\r\n // PROGRESS.SPINNER.hide();\r\n DOM.clearActionCenter();\r\n actioncenter = document.getElementById('actioncenter');\r\n appendModuleContainer('calendarContainer');\r\n populateSchedules(results);\r\n\r\n // *** Only for All Schedule View\r\n // Once we have the schedule array built,\r\n // send it off to have appointments joined before\r\n // drawing the calendar\r\n\r\n //populateSchedules does this too...\r\n // if (_scheduleView === 'all') {\r\n // schedulingAjax.getScheduleApptInformationAjax(locationId, function(results) {\r\n // populateAppointments(results);\r\n // drawCalendar();\r\n // });\r\n // } else {\r\n // drawCalendar();\r\n // }\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var schedulingRequestTimeOff = (function() {\r\n var actioncenter;\r\n\r\n // UTIL\r\n //-------------------------------------------------\r\n function eachDateOfInterval(dirtyInterval) {\r\n const interval = dirtyInterval || {};\r\n\r\n if (interval.start === interval.end)\r\n return interval.start.split(\",\").join(\"/\");\r\n\r\n const startDate = cloneDate(interval.start);\r\n const endDate = cloneDate(interval.end);\r\n\r\n const endTime = endDate.getTime();\r\n\r\n if (!(startDate.getTime() <= endTime)) return;\r\n\r\n let dates = [];\r\n\r\n const currentDate = startDate;\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n while (currentDate.getTime() <= endTime) {\r\n dates.push(cloneDate(currentDate));\r\n currentDate.setDate(currentDate.getDate() + 1);\r\n currentDate.setHours(0, 0, 0, 0);\r\n }\r\n\r\n return dates;\r\n }\r\n function timeOverlapCheck(fromTime, toTime) {\r\n var startTimeMilliseconds = new Date(\"01/01/2019 \" + fromTime).getTime();\r\n var endTimeMilliseconds = new Date(\"01/01/2019 \" + toTime).getTime();\r\n var timeDifference = endTimeMilliseconds - startTimeMilliseconds;\r\n return timeDifference < 0 ? false : true;\r\n }\r\n function cloneDate(argument) {\r\n const argStr = Object.prototype.toString.call(argument);\r\n\r\n if (\r\n argument instanceof Date ||\r\n (typeof argument === \"object\" && argStr === [\"object Date\"])\r\n ) {\r\n return new Date(argument.getTime());\r\n } else if (typeof argument === \"number\" || argStr === [\"object Number\"]) {\r\n return new Date(argument);\r\n } else {\r\n argument = argument.split(\",\");\r\n return new Date(\r\n parseInt(argument[0]),\r\n parseInt(argument[1] - 1),\r\n parseInt(argument[2])\r\n );\r\n }\r\n }\r\n\r\n // ERROR POPUPS\r\n var errorPopup = POPUP.build({\r\n header: \"ERROR\",\r\n classNames: \"popup__error\",\r\n id: \"errorPopup\"\r\n });\r\n var errorPopupText = document.createElement(\"h3\");\r\n errorPopup.appendChild(errorPopupText);\r\n //=============================================\r\n \r\n //REST\r\n //-------------------------------------------------\r\n function populateEmployeesDropdown(results) {\r\n results = [{ employeeId: \"%\", employeeName: \"\" }, ...results];\r\n var employeeData = results.map(r => {\r\n var id = r.employeeId;\r\n var value = r.employeeName;\r\n var text = r.employeeName;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n dropdown.populate(\"employeeDropdown\", employeeData);\r\n employeeId = employeeData[0].id;\r\n }\r\n\r\n function populateReasonsDropdown(results) {\r\n results.sort((a, b) => (a.reasonName < b.reasonName ? -1 : 1));\r\n results = [{ reasonId: \"%\", reasonName: \"\" }, ...results];\r\n var dropdownData = results.map(r => {\r\n var id = r.reasonId;\r\n var value = r.reasonName;\r\n var text = r.reasonName;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n dropdown.populate(\"reasonDropdown\", dropdownData);\r\n reasonId = dropdownData[0].id;\r\n }\r\n\r\n function overlapAlert(requestData) {\r\n\r\n var alertPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n });\r\n var alertbtnWrap = document.createElement('div');\r\n alertbtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(alertPopup);\r\n // overlay.show();\r\n \r\n },\r\n });\r\n\r\n alertbtnWrap.appendChild(alertokBtn);\r\n\r\n var Date = `${requestData.serviceDate.split(' ')[0]}`;\r\n var startTime = `${UTIL.convertFromMilitary(requestData.startTime)}`;\r\n var endTime = `${UTIL.convertFromMilitary(requestData.endTime)}`;\r\n\r\n // Create the alert message\r\n const alertMessage = document.createElement('p');\r\n alertMessage.innerHTML = `This request overlaps an existing day off request on ${Date} ${startTime}-${endTime} and could not be processed.`;\r\n \r\n // Append the alert message and button wrapper to the alert popup\r\n alertPopup.appendChild(alertMessage);\r\n alertPopup.appendChild(alertbtnWrap);\r\n \r\n // Show the alert popup\r\n POPUP.show(alertPopup);\r\n\t\r\n }\r\n\r\n async function submitRequest() {\r\n reasonId = reasonId === \"%\" ? null : reasonId;\r\n employeeId = employeeId === \"%\" ? null : employeeId;\r\n if (reasonId === null || employeeId === null) {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"Reason and notified employee fields are required\";\r\n return;\r\n }\r\n var startDate = document\r\n .getElementById(\"fromDate\")\r\n .value.split(\"-\")\r\n .join(\",\");\r\n var endDate = document\r\n .getElementById(\"toDate\")\r\n .value.split(\"-\")\r\n .join(\",\");\r\n var dateInterval = eachDateOfInterval({ start: startDate, end: endDate });\r\n // check date overlap:\r\n var areDatesValid = !dateInterval ? false : true;\r\n if (!areDatesValid) {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"From Date cannot be after To Date\";\r\n return;\r\n } else {\r\n if (typeof dateInterval === \"string\") {\r\n var dateArray = dateInterval;\r\n } else {\r\n var dateArray = dateInterval\r\n .map(date => {\r\n var year = date.getFullYear();\r\n var month = UTIL.leadingZero(date.getMonth() + 1);\r\n var day = UTIL.leadingZero(date.getDate());\r\n\r\n return `${year}/${month}/${day}`;\r\n })\r\n .toString();\r\n }\r\n }\r\n\r\n var fromTime = document.getElementById(\"fromTime\");\r\n var toTime = document.getElementById(\"toTime\");\r\n fromTimeVal = fromTime.value === \"\" ? \"00:00:00\" : fromTime.value;\r\n toTimeVal = toTime.value === \"\" ? \"23:59:59\" : toTime.value;\r\n // check time overlap - ONLY CHECK TIME OVERLAP ON REQUEST OFF FOR 1 DAY. TO TIME CAN COME BEFORE FROM TIME\r\n // IF REQUESTING MULTIPLE DAYS OFF IN A ROW.\r\n if (typeof dateInterval === \"string\") {\r\n var areTimesValid = timeOverlapCheck(fromTimeVal, toTimeVal);\r\n if (!areTimesValid) {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"To Time cannot come before From Time\"\r\n return;\r\n } else {\r\n fromTime = fromTimeVal === \"\" ? \"00:00:00\" : fromTimeVal;\r\n toTime = toTimeVal === \"\" ? \"23:59:59\" : toTimeVal;\r\n }\r\n } else {\r\n fromTime = fromTimeVal === \"\" ? \"00:00:00\" : fromTimeVal;\r\n toTime = toTimeVal === \"\" ? \"23:59:59\" : toTimeVal;\r\n }\r\n\r\n var data = {\r\n token: $.session.Token,\r\n personId: $.session.PeopleId,\r\n dates: dateArray,\r\n fromTime: fromTimeVal,\r\n toTime: toTimeVal,\r\n reasonId: reasonId,\r\n employeeNotifiedId: employeeId,\r\n status: \"P\"\r\n };\r\n const requestResult = await schedulingAjax.requestDaysOffSchedulingAjax(data);\r\n if (requestResult.requestDaysOffSchedulingResult.length > 0)\r\n {\r\n overlapAlert(requestResult.requestDaysOffSchedulingResult[0])\r\n } else {\r\n // Add verification/popup that the request has been sent?\r\n DOM.clearActionCenter();\r\n scheduling.init();\r\n }\r\n }\r\n\r\n function buildRequestTimeOff() {\r\n var today = new Date();\r\n var dd = UTIL.leadingZero(today.getDate());\r\n var mm = UTIL.leadingZero(today.getMonth() + 1);\r\n var yyyy = today.getFullYear();\r\n\r\n actioncenter = document.getElementById(\"actioncenter\");\r\n\r\n let cardHeader = document.createElement(\"div\");\r\n cardHeader.classList.add(\"card__header\");\r\n\r\n let cardBody = document.createElement(\"div\");\r\n cardBody.classList.add(\"card__body\");\r\n\r\n let dateWrap = document.createElement(\"div\");\r\n dateWrap.classList.add('requestOffCard__date')\r\n\r\n let timeWrap = document.createElement(\"div\");\r\n timeWrap.classList.add('requestOffCard__time')\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"requestOffBtnWrap\");\r\n\r\n let headerText = document.createElement(\"h3\");\r\n headerText.innerHTML = \"Request Time Off\";\r\n\r\n let card = document.createElement('div');\r\n card.classList.add('card', 'requestOffCard');\r\n\r\n let fromDateInput = input.build({\r\n id: \"fromDate\",\r\n label: \"From Date\",\r\n type: \"date\",\r\n style: \"secondary\"\r\n });\r\n let toDateInput = input.build({\r\n id: \"toDate\",\r\n label: \"To Date\",\r\n type: \"date\",\r\n style: \"secondary\"\r\n });\r\n let fromTimeInput = input.build({\r\n id: \"fromTime\",\r\n label: \"From Time\",\r\n type: \"time\",\r\n style: \"secondary\"\r\n });\r\n let toTimeInput = input.build({\r\n id: \"toTime\",\r\n label: \"To Time\",\r\n type: \"time\",\r\n style: \"secondary\"\r\n });\r\n let reasonDropdown = dropdown.build({\r\n dropdownId: \"reasonDropdown\",\r\n label: \"Reason\",\r\n classNames: 'error',\r\n style: \"secondary\"\r\n });\r\n let employeeDropdown = dropdown.build({\r\n dropdownId: \"employeeDropdown\",\r\n label: \"Employee To Notify\",\r\n classNames: 'error',\r\n style: \"secondary\"\r\n });\r\n let cancelBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n icon: 'close',\r\n callback: function() {\r\n DOM.clearActionCenter();\r\n scheduling.init();\r\n }\r\n });\r\n let submitRequestBtn = button.build({\r\n id: \"submitRequestBtn\",\r\n text: \"Submit Request\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n classNames: \"disabled\",\r\n icon: 'send',\r\n callback: function() {\r\n submitRequest();\r\n }\r\n });\r\n\r\n dateWrap.appendChild(fromDateInput);\r\n dateWrap.appendChild(fromTimeInput);\r\n cardBody.appendChild(dateWrap);\r\n\r\n timeWrap.appendChild(toDateInput);\r\n timeWrap.appendChild(toTimeInput);\r\n cardBody.appendChild(timeWrap);\r\n\r\n cardBody.appendChild(reasonDropdown);\r\n cardBody.appendChild(employeeDropdown);\r\n\r\n btnWrap.appendChild(submitRequestBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n cardBody.appendChild(btnWrap)\r\n\r\n cardHeader.appendChild(headerText);\r\n \r\n card.appendChild(cardHeader);\r\n card.appendChild(cardBody);\r\n\r\n actioncenter.appendChild(card);\r\n\r\n //EVENT LISTENERS TO FOR REQIRED AND ENABELING SUBMIT BTN\r\n fromDateInput.classList.add(\"error\");\r\n toDateInput.classList.add(\"error\");\r\n reasonDropdown.classList.add('error')\r\n employeeDropdown.classList.add('error')\r\n\r\n var fromDateField = document.getElementById(\"fromDate\");\r\n var toDateField = document.getElementById(\"toDate\");\r\n var reasonDropdownField = document.getElementById(\"reasonDropdown\");\r\n var employeeDropdownField = document.getElementById(\"employeeDropdown\");\r\n\r\n fromDateInput.addEventListener(\"change\", function() {\r\n if (fromDateField.value === \"\") {\r\n fromDateInput.classList.add(\"error\");\r\n } else {\r\n fromDateInput.classList.remove(\"error\");\r\n }\r\n if (fromDateField.value === \"\" || toDateField.value === \"\" || reasonDropdownField.selectedIndex === 0 || employeeDropdownField.selectedIndex === 0) {\r\n submitRequestBtn.classList.add(\"disabled\");\r\n } else {\r\n submitRequestBtn.classList.remove(\"disabled\");\r\n }\r\n });\r\n toDateInput.addEventListener(\"change\", function() { \r\n if (toDateField.value === \"\") {\r\n toDateInput.classList.add(\"error\");\r\n } else {\r\n toDateInput.classList.remove(\"error\");\r\n }\r\n if (fromDateField.value === \"\" || toDateField.value === \"\" || reasonDropdownField.selectedIndex === 0 || employeeDropdownField.selectedIndex === 0) {\r\n submitRequestBtn.classList.add(\"disabled\");\r\n } else {\r\n submitRequestBtn.classList.remove(\"disabled\");\r\n }\r\n });\r\n reasonDropdown.addEventListener(\"change\", function() {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n reasonId = selectedOption.id;\r\n if (reasonDropdownField.selectedIndex === 0) {\r\n reasonDropdown.classList.add(\"error\");\r\n } else {\r\n reasonDropdown.classList.remove(\"error\");\r\n }\r\n if (fromDateField.value === \"\" || toDateField.value === \"\" || reasonDropdownField.selectedIndex === 0 || employeeDropdownField.selectedIndex === 0) {\r\n submitRequestBtn.classList.add(\"disabled\");\r\n } else {\r\n submitRequestBtn.classList.remove(\"disabled\");\r\n }\r\n });\r\n employeeDropdown.addEventListener(\"change\", function() {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n employeeId = selectedOption.id;\r\n if (employeeDropdownField.selectedIndex === 0) {\r\n employeeDropdown.classList.add(\"error\");\r\n } else {\r\n employeeDropdown.classList.remove(\"error\");\r\n }\r\n if (fromDateField.value === \"\" || toDateField.value === \"\" || reasonDropdownField.selectedIndex === 0 || employeeDropdownField.selectedIndex === 0) {\r\n submitRequestBtn.classList.add(\"disabled\");\r\n } else {\r\n submitRequestBtn.classList.remove(\"disabled\");\r\n }\r\n });\r\n\r\n\r\n schedulingAjax.getRequestTimeOffDropdownEmployees(populateEmployeesDropdown);\r\n schedulingAjax.getCallOffDropdownReasonsAjax(populateReasonsDropdown);\r\n }\r\n\r\n function init() {\r\n actioncenter = document.getElementById(\"actioncenter\");\r\n DOM.clearActionCenter();\r\n buildRequestTimeOff();\r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();\r\n","const widgetSettings = (function () {\r\n let widgetSettingsPage;\r\n let sectionreorder = [];\r\n let updatedListOrder = [];\r\n let widgetsContainer;\r\n let newTable;\r\n\r\n //let sectionBody;\r\n const sections = {\r\n // pre existing, need new ids, idk what that'll do to existing data?\r\n 1: {\r\n id: 1,\r\n name: 'Case Note Productivity',\r\n settings: { productivityThreshold: 60, daysBack: 7, workHoursPerDay: 7 },\r\n showHide: '',\r\n application: 'gk',\r\n order: 0,\r\n build: function () {\r\n const that = this;\r\n const saveID = 1;\r\n const widgetBody = document.createElement('div');\r\n widgetBody.classList.add('widgetBody__Inner');\r\n\r\n const group1 = document.createElement('div');\r\n group1.classList.add('group1');\r\n const group2 = document.createElement('div');\r\n group2.classList.add('group2');\r\n const percentSymb = document.createElement('p');\r\n percentSymb.innerText = '%';\r\n percentSymb.style.color = 'black';\r\n percentSymb.style.position = 'absolute';\r\n percentSymb.style.marginLeft = '252px';\r\n percentSymb.style.marginTop = '-99px';\r\n\r\n // build inputs\r\n const daysBackInput = input.build({\r\n id: 'cnProductivityDaysBack',\r\n label: 'Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.daysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '60' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n const productivityThresholdPercentage = input.build({\r\n id: 'productivityThresholdPercentage',\r\n label: 'Productivity Threshold',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.productivityThreshold,\r\n attributes: [\r\n { key: 'min', value: '0' },\r\n { key: 'max', value: '100' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n const workHoursPerDay = input.build({\r\n id: 'cnProductivityWorkHoursPerDay',\r\n label: 'Work Hours/Day',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.workHoursPerDay,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '24' },\r\n ],\r\n });\r\n const saveBtn = button.build({\r\n id: 'cnProductivitySave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n const newDaysBack = parseInt(daysBackInput.firstElementChild.value);\r\n const newProductivity = parseInt(\r\n productivityThresholdPercentage.firstElementChild.value,\r\n );\r\n const newWorkHours = parseFloat(workHoursPerDay.firstElementChild.value);\r\n if (newDaysBack >= 1 && newDaysBack <= 60) {\r\n that.settings.daysBack = newDaysBack;\r\n }\r\n if (newProductivity >= 0 && newProductivity <= 100) {\r\n that.settings.productivityThreshold = newProductivity;\r\n }\r\n if (newWorkHours >= 0.1 && newWorkHours <= 24) {\r\n that.settings.workHoursPerDay = newWorkHours;\r\n }\r\n // config string to json\r\n const configString = JSON.stringify(that.settings);\r\n\r\n // style saved button\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n\r\n // update settings\r\n await widgetSettingsAjax.setWidgetSettingConfig(saveID, configString, that.showHide);\r\n dashboard.load();\r\n },\r\n });\r\n\r\n const backBtn = button.build({\r\n id: 'cnProductivityBack',\r\n text: 'Back',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: async () => {\r\n const toggle = document.querySelector('#build-1');\r\n toggle.classList.remove('active');\r\n newTable.classList.add('active');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(backBtn);\r\n\r\n group1.appendChild(daysBackInput);\r\n group1.appendChild(workHoursPerDay);\r\n group2.appendChild(productivityThresholdPercentage);\r\n\r\n widgetBody.appendChild(group1);\r\n widgetBody.appendChild(group2);\r\n widgetBody.appendChild(btnWrap);\r\n\r\n daysBackInput.addEventListener('input', event => {\r\n if (event.target.value < 1 || event.target.value > 60) {\r\n daysBackInput.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n }\r\n else {\r\n daysBackInput.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n workHoursPerDay.addEventListener('input', event => {\r\n if (event.target.value < 1 || event.target.value > 24) {\r\n workHoursPerDay.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n }\r\n else {\r\n workHoursPerDay.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n productivityThresholdPercentage.addEventListener('input', event => {\r\n if (event.target.value < 0 || event.target.value > 100) { \r\n productivityThresholdPercentage.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n }\r\n else {\r\n productivityThresholdPercentage.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n return widgetBody;\r\n },\r\n },\r\n 2: {\r\n id: 2,\r\n name: 'My Case Load',\r\n settings: {\r\n viewNotesDaysBack: 30,\r\n lastNoteEnteredDaysBack: 30,\r\n viewEnteredByOtherUsers: 'N',\r\n },\r\n showHide: '',\r\n application: 'gk',\r\n order: 0,\r\n build: function () {\r\n const saveID = 2;\r\n const that = this;\r\n const widgetBody = document.createElement('div');\r\n widgetBody.classList.add('widgetBody__Inner');\r\n\r\n const viewNotesByOtherUsersCheckBox = input.buildCheckbox({\r\n text: 'View Notes Entered by Other Users',\r\n style: 'secondary',\r\n isChecked: that.settings.viewEnteredByOtherUsers === 'Y' ? true : false,\r\n });\r\n viewNotesByOtherUsersCheckBox.classList.add('settingsCheckBox');\r\n viewNotesByOtherUsersCheckBox.addEventListener('change', event => {\r\n if (event.target.checked && $.session.CaseNotesViewEntered) {\r\n that.settings.viewEnteredByOtherUsers = 'Y';\r\n } else {\r\n that.settings.viewEnteredByOtherUsers = 'N';\r\n }\r\n });\r\n\r\n const lastNoteDaysBackInput = input.build({\r\n id: 'cnCaseLoadLastNoteDaysBack',\r\n label: 'Last Note Entered Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.lastNoteEnteredDaysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '60' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n const reviewNotesDaysBackInput = input.build({\r\n id: 'cnCaseLoadLastNoteDaysBack',\r\n label: 'Review Notes Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.viewNotesDaysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '60' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n\r\n const saveBtn = button.build({\r\n id: 'cnCaseLoadSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n // get input field values\r\n const newViewNotesDaysBack = parseInt(reviewNotesDaysBackInput.firstElementChild.value);\r\n const newLastNoteEnteredDaysBack = parseInt(\r\n lastNoteDaysBackInput.firstElementChild.value,\r\n );\r\n let newViewEnteredByOthers = 'N';\r\n if ($.session.CaseNotesViewEntered) {\r\n newViewEnteredByOthers = viewNotesByOtherUsersCheckBox.firstElementChild.checked\r\n ? 'Y'\r\n : 'N';\r\n }\r\n\r\n if (newViewNotesDaysBack >= 1 && newViewNotesDaysBack <= 60) {\r\n that.settings.viewNotesDaysBack = newViewNotesDaysBack;\r\n }\r\n if (newLastNoteEnteredDaysBack >= 1 && newLastNoteEnteredDaysBack <= 60) {\r\n that.settings.lastNoteEnteredDaysBack = newLastNoteEnteredDaysBack;\r\n }\r\n\r\n that.settings.viewEnteredByOtherUsers = newViewEnteredByOthers;\r\n\r\n // config string to json\r\n const configString = JSON.stringify(that.settings);\r\n\r\n // style saved button\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n\r\n // update settings\r\n await widgetSettingsAjax.setWidgetSettingConfig(saveID, configString, that.showHide);\r\n dashboard.load();\r\n },\r\n });\r\n\r\n const backBtn = button.build({\r\n id: 'cnCaseLoadBack',\r\n text: 'Back',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: async () => {\r\n const toggle = document.querySelector('#build-2');\r\n toggle.classList.remove('active');\r\n newTable.classList.add('active');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(backBtn);\r\n\r\n if ($.session.CaseNotesViewEntered) {\r\n widgetBody.appendChild(viewNotesByOtherUsersCheckBox);\r\n } else {\r\n this.settings.viewEnteredByOtherUsers = 'N';\r\n }\r\n\r\n widgetBody.appendChild(viewNotesByOtherUsersCheckBox);\r\n widgetBody.appendChild(lastNoteDaysBackInput);\r\n widgetBody.appendChild(reviewNotesDaysBackInput);\r\n widgetBody.appendChild(btnWrap);\r\n\r\n return widgetBody;\r\n },\r\n },\r\n 3: {\r\n id: 3,\r\n name: 'Rejected Case Notes',\r\n settings: { daysBack: 60 },\r\n showHide: '',\r\n application: 'gk',\r\n order: 0,\r\n build: function () {\r\n const saveID = 3;\r\n const that = this;\r\n const widgetBody = document.createElement('div');\r\n widgetBody.classList.add('widgetBody__Inner');\r\n\r\n const daysBackInput = input.build({\r\n id: 'cnRejectedDaysBack',\r\n label: 'Rejected Notes Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.daysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '999' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n const saveBtn = button.build({\r\n id: 'cnRejectedSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n if (!saveBtn.classList.contains('disabled')) {\r\n console.log(that);\r\n // get input field values\r\n const newDaysBack = parseInt(daysBackInput.firstElementChild.value);\r\n if (newDaysBack >= 1 && newDaysBack <= 999) {\r\n that.settings.daysBack = newDaysBack;\r\n }\r\n\r\n // config string to json\r\n const configString = JSON.stringify(that.settings);\r\n\r\n // style saved button\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n\r\n // update settings\r\n await widgetSettingsAjax.setWidgetSettingConfig(saveID, configString, that.showHide);\r\n dashboard.load();\r\n }\r\n },\r\n });\r\n\r\n const backBtn = button.build({\r\n id: 'cnRejectedBack',\r\n text: 'Back',\r\n type: 'contained',\r\n style: 'secondary',\r\n // classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n const toggle = document.querySelector('#build-3');\r\n toggle.classList.remove('active');\r\n newTable.classList.add('active');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(backBtn);\r\n\r\n widgetBody.appendChild(daysBackInput);\r\n widgetBody.appendChild(btnWrap);\r\n\r\n daysBackInput.addEventListener('input', event => {\r\n if (event.target.value > 999) {\r\n daysBackInput.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n }\r\n else {\r\n daysBackInput.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n }\r\n });\r\n return widgetBody;\r\n },\r\n },\r\n 4: {\r\n id: 4,\r\n name: 'Plan To-Do List',\r\n settings: { dueDate: 'today' },\r\n showHide: '',\r\n application: 'gk',\r\n order: 0,\r\n build: function () {\r\n const saveID = 4;\r\n const that = this;\r\n const widgetBody = document.createElement('div');\r\n widgetBody.classList.add('widgetBody__Inner');\r\n\r\n const dueDateDropdown = dropdown.build({\r\n label: 'Due Date',\r\n style: 'secondary',\r\n dropdownId: 'dueDateDropdown',\r\n });\r\n dueDateDropdown.addEventListener('change', e => {\r\n that.settings.dueDate = e.target.value;\r\n });\r\n dropdown.populate(\r\n dueDateDropdown,\r\n [\r\n { id: 1, value: 'today', text: 'Today' },\r\n { id: 2, value: 'next 7 days', text: 'Next 7 Days' },\r\n { id: 3, value: 'next 30 days', text: 'Next 30 Days' },\r\n { id: 4, value: 'prior 7 days', text: 'Prior 7 Days' },\r\n { id: 5, value: 'prior 30 days', text: 'Prior 30 Days' },\r\n ],\r\n that.settings.dueDate,\r\n );\r\n\r\n const saveBtn = button.build({\r\n id: 'wfPlanSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n // config string to json\r\n const configString = JSON.stringify(that.settings);\r\n\r\n // style saved button\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n\r\n // update settings\r\n await widgetSettingsAjax.setWidgetSettingConfig(saveID, configString, that.showHide);\r\n dashboard.load();\r\n },\r\n });\r\n\r\n const backBtn = button.build({\r\n id: 'wfPlanBack',\r\n text: 'Back',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: async () => {\r\n const toggle = document.querySelector('#build-4');\r\n toggle.classList.remove('active');\r\n newTable.classList.add('active');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(backBtn);\r\n\r\n widgetBody.appendChild(dueDateDropdown);\r\n widgetBody.appendChild(btnWrap);\r\n\r\n return widgetBody;\r\n },\r\n },\r\n // new widgets\r\n 5: { id: 5, name: 'Custom Links', settings: {}, showHide: '', application: 'gk,adv', order: 0, },\r\n 6: {\r\n id: 6,\r\n name: 'Absent Consumers',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 7: {\r\n id: 7,\r\n name: 'Location Progress Notes',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 8: {\r\n id: 8,\r\n name: 'Consumer Progress Notes',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 9: {\r\n id: 9,\r\n name: 'Day Service Time Clock',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 10: { id: 10, name: 'Hours Worked', settings: {}, showHide: '', application: 'gk,adv', order: 0, },\r\n 11: {\r\n id: 11,\r\n name: 'Daily Services',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 12: { id: 12, name: 'Day Services', settings: {}, showHide: '', application: 'gk,adv', order: 0, },\r\n 13: {\r\n id: 13,\r\n name: 'My Unapproved Time Entries',\r\n settings: {},\r\n showHide: '',\r\n application: 'adv',\r\n order: 0,\r\n },\r\n 14: {\r\n id: 14,\r\n name: 'Time Entry Review',\r\n settings: {},\r\n showHide: '',\r\n application: 'adv',\r\n order: 0,\r\n },\r\n 15: { id: 15, name: 'My Schedule', settings: {}, showHide: '', application: 'adv', order: 0, },\r\n 16: {\r\n id: 16,\r\n name: 'Incident Tracking',\r\n settings: {},\r\n showHide: '',\r\n application: 'adv',\r\n order: 0,\r\n },\r\n 17: {\r\n id: 17,\r\n name: 'Plans Missing Signatures',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 18: {\r\n id: 18,\r\n name: 'Money Management',\r\n settings: {},\r\n showHide: '',\r\n application: 'adv',\r\n order: 0,\r\n },\r\n 19: {\r\n id: 19,\r\n name: 'System Messages',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 20: {\r\n id: 20,\r\n name: 'Roster To-Do List',\r\n settings: { dueDate: 'today' },\r\n showHide: '',\r\n application: 'gk',\r\n order: 0,\r\n build: function () {\r\n const saveID = 20;\r\n const that = this;\r\n const widgetBody = document.createElement('div');\r\n widgetBody.classList.add('widgetBody__Inner');\r\n\r\n const dueDateDropdown = dropdown.build({\r\n label: 'Due Date',\r\n style: 'secondary',\r\n dropdownId: 'dueDateDropdown',\r\n });\r\n dueDateDropdown.addEventListener('change', e => {\r\n that.settings.dueDate = e.target.value;\r\n });\r\n dropdown.populate(\r\n dueDateDropdown,\r\n [\r\n { id: 1, value: 'today', text: 'Today' },\r\n { id: 2, value: 'next 7 days', text: 'Next 7 Days' },\r\n { id: 3, value: 'next 30 days', text: 'Next 30 Days' },\r\n { id: 4, value: 'prior 7 days', text: 'Prior 7 Days' },\r\n { id: 5, value: 'prior 30 days', text: 'Prior 30 Days' },\r\n ],\r\n that.settings.dueDate,\r\n );\r\n\r\n const saveBtn = button.build({\r\n id: 'wfRosterSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n // config string to json\r\n const configString = JSON.stringify(that.settings);\r\n\r\n // style saved button\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n\r\n // update settings\r\n await widgetSettingsAjax.setWidgetSettingConfig(saveID, configString, that.showHide);\r\n dashboard.load();\r\n },\r\n });\r\n\r\n const backBtn = button.build({\r\n id: 'wfRosterBack',\r\n text: 'Back',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: async () => {\r\n const toggle = document.querySelector('#build-20');\r\n toggle.classList.remove('active');\r\n newTable.classList.add('active');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(backBtn);\r\n\r\n widgetBody.appendChild(dueDateDropdown);\r\n widgetBody.appendChild(btnWrap);\r\n\r\n return widgetBody;\r\n },\r\n },\r\n };\r\n\r\n function setWidgetSettings(widgetId) {\r\n let settings = dashboard.getWidgetSettings(widgetId);\r\n\r\n if (settings.widgetConfig !== null) {\r\n sections[widgetId].settings = { ...settings.widgetConfig };\r\n }\r\n sections[widgetId].order = parseInt(settings.widgetOrder);\r\n sections[widgetId].showHide = settings.showHide;\r\n }\r\n\r\n function buildWidgetBodyInnerHTML(sec) {\r\n const settingHTML = sections[sec].build();\r\n return settingHTML;\r\n }\r\n\r\n function populatePage() {\r\n const appName = $.session.applicationName === 'Advisor' ? 'adv' : 'gk';\r\n widgetsContainer = document.createElement('div');\r\n widgetsContainer.classList.add('widgetsContainer');\r\n\r\n newTable = buildTeamMemberTable();\r\n newTable.classList.add('active');\r\n widgetsContainer.appendChild(newTable);\r\n\r\n for (const sec in sections) {\r\n if (!sections[sec].application.includes(appName)) {\r\n continue;\r\n }\r\n setWidgetSettings(sec);\r\n if (sections[sec].build) {\r\n const sectionWrap = document.createElement('div');\r\n sectionWrap.classList.add('widgetWrap');\r\n sectionWrap.id = `build-${sections[sec].id}`;\r\n\r\n const sectionHeader = document.createElement('div');\r\n sectionHeader.classList.add('widgetHeader');\r\n\r\n const sectionBody = document.createElement('div');\r\n sectionBody.classList.add('widgetBody');\r\n const title = document.createElement('p');\r\n title.innerText = sections[sec].name;\r\n sectionHeader.appendChild(title);\r\n sectionBody.appendChild(buildWidgetBodyInnerHTML(sec));\r\n sectionWrap.appendChild(sectionHeader);\r\n sectionWrap.appendChild(sectionBody);\r\n widgetsContainer.appendChild(sectionWrap);\r\n }\r\n }\r\n widgetSettingsPage.appendChild(widgetsContainer);\r\n }\r\n\r\n\r\n function buildTeamMemberTable() {\r\n const teamMemberTable = table.build({\r\n tableId: 'settingTable',\r\n columnHeadings: [],\r\n endIcon: true,\r\n sortable: true,\r\n onSortCallback: async res => {\r\n var allElmnts = document.querySelectorAll('[id^=\"sig-\"]');\r\n updatedListOrder = [];\r\n updatedListOrder.length = allElmnts.length;\r\n for (var i = 0; i < allElmnts.length; i++) {\r\n updatedListOrder[i] = allElmnts[i].innerText.replace('show', '').replace('\\n', '').trim();\r\n }\r\n await widgetSettingsAjax.setWidgetSettingOrder(updatedListOrder);\r\n if ($.session.activeModule == 'home')\r\n dashboard.load();\r\n },\r\n });\r\n\r\n if (sections) {\r\n const appName = $.session.applicationName === 'Advisor' ? 'adv' : 'gk';\r\n sectionreorder = [];\r\n for (const sec in sections) {\r\n if (!sections[sec].application.includes(appName)) {\r\n continue;\r\n }\r\n setWidgetSettings(sec);\r\n sectionreorder.push(sections[sec]);\r\n };\r\n\r\n let sortedProducts = sectionreorder.sort((a, b) => {\r\n if (a.order === 0) return 1;\r\n if (b.order === 0) return -1;\r\n return a.order - b.order;\r\n });\r\n\r\n const tableData = sortedProducts.map(m => {\r\n let name;\r\n let IsBuild = 'false';\r\n if (sections[m.id].build) {\r\n name = m.name + ' ' + `${icons['Gear']}`;\r\n IsBuild = 'true';\r\n }\r\n else {\r\n IsBuild = 'false';\r\n name = m.name;\r\n }\r\n const activeCheckbox = input.buildCheckbox({\r\n id: `chk-${m.id}`,\r\n text: 'show',\r\n isChecked: m.showHide === 'Y' ? true : false,\r\n });\r\n\r\n const tableOBJ = {\r\n values: [name],\r\n id: `sig-${m.id}-${m.order}`,\r\n endIcon: m.name == 'System Messages' ? '' : activeCheckbox.outerHTML,\r\n onClick: async e => {\r\n var id = e.target.id.split('-')[1];\r\n if (sections[parseInt(m.id)].build) {\r\n const toggle = document.querySelector('#build-' + id);\r\n toggle.classList.add('active');\r\n newTable.classList.remove('active');\r\n }\r\n },\r\n };\r\n\r\n // set checkbox callback\r\n tableOBJ.endIconCallback = async e => {\r\n sec = e.currentTarget.children[0].control.id.split('-')[1];\r\n document.getElementById(e.currentTarget.children[0].control.id).checked = sections[sec].showHide == 'Y' ? false : true;\r\n sections[sec].showHide = sections[sec].showHide == 'Y' ? 'N' : 'Y';\r\n\r\n const configString = JSON.stringify(sections[sec].settings);\r\n const sectionID = parseInt(sec);\r\n await widgetSettingsAjax.setWidgetSettingConfig(\r\n sectionID,\r\n configString,\r\n sections[sec].showHide,\r\n );\r\n if ($.session.activeModule == 'home')\r\n dashboard.load();\r\n };\r\n tableOBJ.attributes = [{ key: 'data-signed', value: m.id }, { key: 'data-plan-active', value: IsBuild }];\r\n return tableOBJ;\r\n });\r\n\r\n table.populate(teamMemberTable, tableData, true);\r\n }\r\n return teamMemberTable;\r\n }\r\n\r\n function buildPage() {\r\n widgetSettingsPage = document.querySelector('.util-menu__widgetSettings');\r\n widgetSettingsPage.innerHTML = '';\r\n\r\n const currMenu = document.createElement('p');\r\n currMenu.innerText = 'Widget Settings';\r\n currMenu.classList.add('menuTopDisplay');\r\n\r\n const backButton = button.build({\r\n text: 'Back',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n attributes: [{ key: 'data-action', value: 'back' }],\r\n });\r\n\r\n widgetSettingsPage.appendChild(currMenu);\r\n widgetSettingsPage.appendChild(backButton);\r\n }\r\n\r\n function init() {\r\n buildPage();\r\n populatePage();\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const widgetSettingsAjax = (function () {\r\n function getWidgetSettings() {\r\n data = {\r\n token: $.session.Token\r\n };\r\n return $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getUserWidgetSettings/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\"\r\n });\r\n }\r\n\r\n function setWidgetSettingConfig(widgetId, widgetConfig, showHide) {\r\n data = {\r\n token: $.session.Token,\r\n widgetId: widgetId,\r\n showHide: showHide,\r\n widgetConfig: widgetConfig\r\n };\r\n return $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/updateUserWidgetSettings/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\"\r\n });\r\n }\r\n\r\n function setWidgetSettingOrder(updatedListOrder) {\r\n data = {\r\n token: $.session.Token,\r\n updatedListOrder: updatedListOrder,\r\n };\r\n return $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/updateUserWidgetOrderSettings/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\"\r\n });\r\n }\r\n\r\n return {\r\n getWidgetSettings,\r\n setWidgetSettingConfig,\r\n setWidgetSettingOrder \r\n };\r\n})();\r\n","var emptySignatureDataURL = `iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAEYklEQVR4Xu3UAQkAAAwCwdm/9HI83BLIOdw5AgQIRAQWySkmAQIEzmB5AgIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlACBB1YxAJfjJb2jAAAAAElFTkSuQmCC`;\r\n\r\nfunction clearSavedSignaturesAndNotes() {\r\n $.session.evvDataCache = {};\r\n}\r\nfunction removeConsumerFromEVVCache(consumerId) {\r\n delete $.session.evvDataCache[consumerId];\r\n}\r\n\r\nfunction saveSignatureAndNote(savedSingleEntryId) {\r\n var savedSignaturesAndNotes = [];\r\n\r\n for (var prop in $.session.evvDataCache) {\r\n var singleEntryId;\r\n\r\n if (Array.isArray(savedSingleEntryId)) {\r\n var currerntConsumer = $.session.evvDataCache[prop]._consumerID;\r\n savedSingleEntryId.forEach(entry => {\r\n if (entry.consumerId.indexOf(currerntConsumer) !== -1) {\r\n singleEntryId = entry.singleEntryId;\r\n }\r\n });\r\n } else {\r\n singleEntryId = savedSingleEntryId;\r\n }\r\n\r\n $.session.evvDataCache[prop]._signatureDataUrl = $.session.evvDataCache[prop]._signatureDataUrl.replace(\"data:image/png;base64,\", \"\");\r\n \r\n savedSignaturesAndNotes.push({\r\n token:$.session.Token,\r\n singleEntryId: singleEntryId,\r\n consumerId: $.session.evvDataCache[prop]._consumerID,\r\n note: UTIL.removeUnsavableNoteText($.session.evvDataCache[prop]._noteDataString),\r\n signatureImage: $.session.evvDataCache[prop]._signatureDataUrl\r\n });\r\n }\r\n\r\n if (savedSignaturesAndNotes.length > 0) {\r\n savedSignaturesAndNotes.forEach(evvEntry => {\r\n signatureAjax.singleEntrySaveSignatureAndNote(evvEntry);\r\n });\r\n }\r\n \r\n //clearSavedSignaturesAndNotes();\r\n}\r\n\r\nfunction validateEVV() {\r\n var signRequired = $.session.singleEntryShowConsumerSignature === 'Y' ? true : false;\r\n var noteRequired = $.session.singleEntryShowConsumerNote === 'Y' ? true : false;\r\n var consumersArray = Array.prototype.slice.call(document.querySelectorAll('.consumer.singleentryselected'));\r\n var isValidEVV = true;\r\n\r\n if (signRequired || noteRequired) {\r\n if (consumersArray.length > 0) {\r\n var hasSignature, hasNote;\r\n consumersArray.forEach(consumer => {\r\n if (consumer.id in $.session.evvDataCache) {\r\n // if consumer has EVV grab it\r\n var consumerEVV = $.session.evvDataCache[consumer.id];\r\n // check consumerEVV for signature and note values\r\n hasSignature = consumerEVV._signatureDataUrl === '' ? false : true;\r\n hasNote = consumerEVV._noteDataString === '' ? false : true;\r\n if (signRequired && hasSignature === false) isValidEVV = false;\r\n if (noteRequired && hasNote === false) isValidEVV = false;\r\n } else {\r\n // if any consumer is selected but dosen't have an EVV\r\n isValidEVV = false; \r\n } \r\n });\r\n }\r\n }\r\n\r\n return isValidEVV;\r\n}\r\n\r\nclass EVV {\r\n constructor(options) {\r\n this._actionBtn;\r\n this._evvContainer;\r\n // signature coming from db?\r\n this._fromSave = options.fromSave ? true : false;\r\n // signature pad brains\r\n this._signaturePad;\r\n // save data\r\n this._consumerID = options.consumerId;\r\n this._signatureDataUrl = options.signatureDataUrl;\r\n this._noteDataString = options.noteDataString;\r\n // dom references\r\n this._consumerSECard;\r\n this._consumerCard = options.consumer;\r\n // popup markup\r\n this._signatureImageMarkup;\r\n this._signatureMarkup;\r\n this._noteMarkup;\r\n this._evvActionMarkup;\r\n // temp signature data storage for cancel button\r\n this._tempSigData\r\n\r\n this._init();\r\n }\r\n\r\n // PRIVATE METHODS - DO NOT TOUCH OR CALL!\r\n //==========================================\r\n _init() {\r\n // check for null Consumer Card\r\n if (!this._consumerCard) {\r\n var consumers = Array.prototype.slice.call(document.querySelectorAll('.consumer-selected'));\r\n consumers.forEach(consumer => {\r\n if (consumer.dataset.consumerId === this._consumerID) {\r\n this._consumerCard = consumer;\r\n }\r\n });\r\n }\r\n // build popups and save reference\r\n this._signatureMarkup = this._renderEVVMarkup('sign');\r\n this._signatureImageMarkup = this._renderEVVMarkup('img');\r\n this._noteMarkup = this._renderEVVMarkup('note');\r\n this._evvActionMarkup = this._renderEVVActionMarkup();\r\n // init signature pad\r\n this._initSignaturePad();\r\n // add events\r\n this._popupEvents();\r\n this._signatureEvents();\r\n // initial cache if new single entry\r\n if (!this._fromSave) {\r\n $.session.evvDataCache[this._consumerID] = this;\r\n }\r\n }\r\n _initSignaturePad() {\r\n var canvas = this._signatureMarkup.querySelector('.evvCanvas');\r\n if (!canvas) return;\r\n this._signaturePad = new SignaturePad(canvas);\r\n }\r\n _dataURLToBlob(dataURL) {\r\n var parts = dataURL.split(';base64,');\r\n var contentType = parts[0].split(':')[1];\r\n var raw = window.atob(parts[1]);\r\n var rawLength = raw.length;\r\n var uInt8Array = new Uint8Array(rawLength);\r\n \r\n for (var i = 0; i < rawLength; ++i) {\r\n uInt8Array[i] = raw.charCodeAt(i);\r\n }\r\n \r\n return new Blob([uInt8Array], { type: contentType });\r\n }\r\n\r\n // CRUD METHODS\r\n //--------------------------------\r\n _saveSignatureData() {\r\n if (this._signaturePad.isEmpty()) {\r\n this._tempSigData = ''; \r\n } else {\r\n var dataUrl = this._signaturePad.toDataURL();\r\n this._signatureDataUrl = dataUrl.replace(\"data:image/png;base64,\", \"\");\r\n }\r\n }\r\n _saveNoteData() {\r\n var noteText = this._noteMarkup.querySelector('.evv-note--pad');\r\n this._noteDataString = noteText.value;\r\n }\r\n _saveEVVInstance() {\r\n $.session.evvDataCache[this._consumerID] = this;\r\n }\r\n\r\n // EVV\r\n //--------------------------------\r\n _renderSignatureMarkup() {\r\n var markup = `\r\n
    \r\n

    Signature

    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n `;\r\n\r\n return markup;\r\n }\r\n _renderSignatureImageMarkup() {\r\n var markup = `\r\n
    \r\n

    signature

    \r\n \r\n
    \r\n `;\r\n\r\n return markup;\r\n }\r\n _renderNoteMarkup() {\r\n var markup = `\r\n

    Note

    \r\n
    \r\n \r\n \r\n
    \r\n `;\r\n\r\n return markup;\r\n }\r\n _renderEVVActionMarkup() {\r\n var savebtn;\r\n if ((this._signatureDataUrl === emptySignatureDataURL || this._signatureDataUrl === '' || !this._fromSave) || $.session.singleEntryShowConsumerNote === 'Y') {\r\n savebtn = '';\r\n } else {\r\n savebtn = '';\r\n }\r\n var markup = `\r\n
    \r\n ${savebtn}\r\n \r\n
    \r\n `;\r\n\r\n var evvDiv = document.createElement('div');\r\n evvDiv.innerHTML = markup;\r\n return evvDiv;\r\n }\r\n _renderEVVMarkup(type) {\r\n var evvDiv = document.createElement('div');\r\n // evvDiv.setAttribute('data-consumerID', this._consumerID);\r\n // evvDiv.setAttribute('data-popupType', type);\r\n\r\n if (type === 'sign') {\r\n evvDiv.classList.add('signature-pad');\r\n evvDiv.innerHTML = this._renderSignatureMarkup();\r\n return evvDiv;\r\n }\r\n\r\n if (type === 'img') {\r\n evvDiv.classList.add('signature-pad');\r\n evvDiv.innerHTML = this._renderSignatureImageMarkup();\r\n return evvDiv;\r\n }\r\n\r\n if (type === 'note') {\r\n evvDiv.classList.add('evv-note');\r\n evvDiv.innerHTML = this._renderNoteMarkup();\r\n return evvDiv;\r\n }\r\n }\r\n // POPUP EVENTS\r\n //--------------------------------\r\n _evvSave() {\r\n if (this._signatureDataUrl === emptySignatureDataURL || this._signatureDataUrl === '' || !this._fromSave) {\r\n this._saveSignature();\r\n }\r\n \r\n this._saveNote();\r\n this._saveEVVInstance();\r\n \r\n // get dom elements\r\n this._consumerSECard = this._consumerCard.parentElement;\r\n this._actionBtn = this._consumerSECard.querySelector('.extrasBtn ');\r\n\r\n if (!this._signaturePad.isEmpty() || this._noteDataString !== '') {\r\n this._actionBtn.classList.add('evv-highlight');\r\n } else {\r\n this._actionBtn.classList.remove('evv-highlight');\r\n }\r\n\r\n POPUP.hide(this._evvContainer);\r\n }\r\n _evvCancel() {\r\n this._signaturePad.fromData(this._tempSigData);\r\n POPUP.hide(this._evvContainer);\r\n }\r\n _popupEvents() {\r\n var saveButton = this._evvActionMarkup.querySelector('[data-action=save]');\r\n var cancelButton = this._evvActionMarkup.querySelector('[data-action=cancel');\r\n\r\n if (saveButton) saveButton.addEventListener('click', this._evvSave.bind(this));\r\n cancelButton.addEventListener('click', this._evvCancel.bind(this));\r\n }\r\n // Signature Popup\r\n _saveSignature() {\r\n if ($.session.singleEntryShowConsumerSignature === 'N') return;\r\n this._saveSignatureData();\r\n }\r\n _undoSignature() {\r\n var data = this._signaturePad.toData();\r\n \r\n if (data) {\r\n data.pop(); // remove the last dot or line\r\n this._signaturePad.fromData(data);\r\n }\r\n }\r\n _clearSignature() {\r\n this._tempSigData = [...this._signaturePad._data];\r\n this._signaturePad.clear();\r\n this._signatureDataUrl = '';\r\n }\r\n _signatureEvents() {\r\n var clearButton = this._signatureMarkup.querySelector('[data-action=clear]');\r\n var undoButton = this._signatureMarkup.querySelector('[data-action=undo]');\r\n\r\n if (clearButton) clearButton.addEventListener('click', this._clearSignature.bind(this));\r\n if (undoButton) undoButton.addEventListener('click', this._undoSignature.bind(this));\r\n \r\n }\r\n // Note Popup\r\n _saveNote() {\r\n if ($.session.singleEntryShowConsumerNote === 'N') return;\r\n this._saveNoteData();\r\n }\r\n\r\n // PUBLIC METHODS\r\n //==========================================\r\n editInit() {\r\n if (!this._consumerCard) {\r\n var consumers = Array.prototype.slice.call(document.querySelectorAll('.consumerCard'));\r\n consumers.filter(consumer => {\r\n if (consumer.dataset.consumerId === this._consumerID) {\r\n this._consumerCard = consumer;\r\n }\r\n });\r\n }\r\n }\r\n populatePopup() {\r\n this._evvContainer = document.getElementById('consumerExtrasPopup');\r\n\r\n const showSignature = $.session.singleEntryShowConsumerSignature === 'Y' ? true : false;\r\n const showNote = $.session.singleEntryShowConsumerNote === 'Y' ? true : false;\r\n\r\n if (showSignature) {\r\n this._tempSigData = [...this._signaturePad._data];\r\n\r\n if (this._signatureDataUrl === emptySignatureDataURL || this._signatureDataUrl === '' || !this._fromSave) {\r\n this._evvContainer.appendChild(this._signatureMarkup);\r\n } else {\r\n this._evvContainer.appendChild(this._signatureImageMarkup);\r\n }\r\n }\r\n\r\n if (showNote) {\r\n this._evvContainer.appendChild(this._noteMarkup);\r\n var note = this._noteMarkup.querySelector('.evv-note--pad');\r\n note.value = this._noteDataString;\r\n }\r\n this._evvContainer.appendChild(this._evvActionMarkup);\r\n }\r\n}","var signatureAjax = (function() {\r\n\tfunction getConsumersSignaturesAndNotes(singleEntryId){\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getConsumersSignaturesAndNotes/\",\r\n data: '{\"token\":\"' + $.session.Token + '\", \"singleEntryId\":\"' + singleEntryId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n clearSavedSignaturesAndNotes();\r\n \r\n var data = response.getConsumersSignaturesAndNotesResult;\r\n \r\n data.forEach(d => {\r\n var evvOptions = {\r\n consumer: null,\r\n consumerId: d.consumerId,\r\n signatureDataUrl: d.signature,\r\n noteDataString: d.note,\r\n fromSave: true\r\n };\r\n \r\n if (d.consumerId in $.session.evvDataCache === false) {\r\n var evv = new EVV(evvOptions);\r\n $.session.evvDataCache[d.consumerId] = evv;\r\n }\r\n });\r\n \r\n },\r\n error: function (xhr, status, error) {\r\n \r\n },\r\n });\r\n }\r\n\r\n function getSpecificConsumerSignatureAndNote(retrieveData, signOrNote, evvOptions) {//token,singleEntryId,consumerId \r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getSpecificConsumerSignatureAndNote/\",\r\n data: JSON.stringify(retrieveData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n // var data = response.getSpecificConsumerSignatureAndNoteResult; \r\n // var note = data[0].note;\r\n // var signatureDataUrl = data[0].signature;\r\n // signatureDataUrl = \"data:image/png;base64,\" + signatureDataUrl;\r\n // if (signatureDataUrl === \"data:image/png;base64,\") {\r\n // signatureDataUrl = \"\";\r\n // }\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n function singleEntrySaveSignatureAndNote(signatureAndNoteData, callback) {//token,singleEntryId,consumerId,note,signatureImage\r\n signatureAndNoteData.signatureImage = signatureAndNoteData.signatureImage === '' ? null : signatureAndNoteData.signatureImage;\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/singleEntrySaveSignatureAndNote/\",\r\n data: JSON.stringify(signatureAndNoteData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n clearSavedSignaturesAndNotes();\r\n //callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n \r\n\treturn {\r\n getConsumersSignaturesAndNotes,\r\n getSpecificConsumerSignatureAndNote,\r\n singleEntrySaveSignatureAndNote\r\n\t};\r\n})();","var timeEntryCard = (function () {\r\n //-DATA------------------\r\n var payPeriodData;\r\n var locationData;\r\n var workCodeData;\r\n var requiredFields;\r\n var crossMidnightTimeData;\r\n var saveUserId; // userID used for cross midnight entries (eg, \"charles\")\r\n var personId; // Id of originator of entry (e.g., 37)\r\n var supervisorId;\r\n var rejectedTime;\r\n //-DOM------------------\r\n var card; // time entry card\r\n // dropdowns\r\n var payPeriodDropdown;\r\n var locationDropdown;\r\n var workCodeDropdown;\r\n var reasonDropdown;\r\n var locationTypeDropdown;\r\n // inputs\r\n var dateInput;\r\n var startTimeInput;\r\n var endTimeInput;\r\n var totalHoursInput;\r\n var noteInput;\r\n var rejectionReasonInput;\r\n // transportation\r\n var transportationBtn;\r\n var transportationPopup;\r\n var transportationDropdown;\r\n var licenseplateInput;\r\n var odometerStartInput;\r\n var odometerEndInput;\r\n var odometerTotalInput;\r\n var destinationInput;\r\n var reasonInput;\r\n var saveTransBtn;\r\n var deleteTransBtn;\r\n var cancelTransBtn;\r\n var transportationStartTimeInput;\r\n var transportationEndTimeInput;\r\n // btns\r\n var saveBtn;\r\n var deleteBtn;\r\n var cancelBtn;\r\n var saveOrUpdate;\r\n //-VALUES------------------\r\n var isEdit;\r\n var isAdminEdit;\r\n var isCardDisabled;\r\n var status;\r\n var singleEntryId;\r\n var now;\r\n var nowHour;\r\n var nowMinutes;\r\n // consumers\r\n var consumerIds;\r\n var numberOfConsumersPresent;\r\n // dropdown & input\r\n var payPeriod;\r\n var entryDate;\r\n var workCode;\r\n var locationId;\r\n var startTime;\r\n var endTime;\r\n var totalHours;\r\n var noteText;\r\n var rejectionReason;\r\n //EVV\r\n var evvReasonCodeObj;\r\n var evvReasonCode;\r\n var locationTypeCode;\r\n var sendEvvData;\r\n var wcServiceType;\r\n var reasonRequired; // true || false\r\n var eligibleConsumersObj;\r\n var endTimeClicks;\r\n var evvAttest;\r\n var evvCommunity;\r\n var defaultTimesChanged; // true || false\r\n var defaultStartTimeChanged; // true || false (needed for 1st entry in crossmidnight entries)\r\n var defaultEndTimeChanged; // true || false (needed for 2nd entry in crossmidnight entries)\r\n // time overlap\r\n var timeOverlap;\r\n // workcode related\r\n var isBillable; // Y || N\r\n var keyStartStop; // Y || N\r\n // coordinates\r\n var startLatitude;\r\n var startLongitude;\r\n var endLatitude;\r\n var endLongitude;\r\n // transportation\r\n var transportationSaved = false;\r\n var isTransportationValid;\r\n var destination = null;\r\n var odometerEnd = null;\r\n var odometerStart = null;\r\n var transportationEndTime = null;\r\n var transportationStartTime = null;\r\n var reason = null;\r\n var transportationType = null;\r\n var transportationReimbursable = null;\r\n var transportationUnits = null;\r\n var licensePlateNumber = null;\r\n // temp transportation data (holds data until save)\r\n var tmpTransportationType = null;\r\n var tmpTransportationReimbursable = null;\r\n var tmpOdometerStart = null;\r\n var tmpTransportationStartTime = null;\r\n var tmpTransportationEndTime = null;\r\n var tmpOdometerEnd = null;\r\n var tmpTransportationUnits = null;\r\n var tmpDestination = null;\r\n var tmpReason = null;\r\n var tmpLicenseplate = null;\r\n var isEVVSingleEntry = false;\r\n var reasonCodeValue;\r\n var eVVChangeDate;\r\n var todayDate;\r\n var isEndTimeChangePermission;\r\n\r\n // Action Nav\r\n //------------------------------------\r\n function handleActionNavEvent(target, isNew) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n DOM.toggleNavLayout();\r\n const selectedConsumers = roster2.getActiveConsumers();\r\n moveConsumersToTimeCard(selectedConsumers);\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Util\r\n //------------------------------------\r\n function errorPopup(message) {\r\n popup = POPUP.build({ classNames: 'error' });\r\n messageArea = document.createElement('p');\r\n messageArea.innerHTML = message;\r\n popup.appendChild(messageArea);\r\n POPUP.show(popup);\r\n }\r\n function disableInput(element) {\r\n var input = element.querySelector('input');\r\n if (!input) input = element.querySelector('select');\r\n if (!input) input = element.querySelector('textarea');\r\n element.classList.add('disabled');\r\n input.setAttribute('readonly', 'true');\r\n }\r\n function enableInput(element) {\r\n var input = element.querySelector('input');\r\n if (!input) input = element.querySelector('select');\r\n if (!input) input = element.querySelector('textarea');\r\n element.classList.remove('disabled');\r\n input.removeAttribute('readonly');\r\n }\r\n function getOverlapData() {\r\n return {\r\n token: $.session.Token,\r\n dateOfService: entryDate,\r\n startTime: startTime,\r\n endTime: endTime,\r\n singleEntryId: '',\r\n };\r\n }\r\n function getSaveUpdateData(saveorupdate) {\r\n // setTotalHours();\r\n if (saveorupdate) saveOrUpdate = saveorupdate;\r\n var consumer_Ids = consumerIds ? consumerIds.join(',') : '';\r\n var data;\r\n if (!evvReasonCode || evvReasonCode === '%') evvReasonCode = '';\r\n if (keyStartStop === 'Y' && !startTime) startTime = startTimeInput.querySelector('input').value;\r\n let deviceOS = checkDeviceType();\r\n if (evvReasonCode !== '') deviceOS = 'Manual';\r\n\r\n if (saveOrUpdate === 'Save') {\r\n data = {\r\n // session variables\r\n token: $.session.Token,\r\n userId: crossMidnightTimeData && saveUserId ? saveUserId : $.session.UserId, // for crossmidnight -- this is used for PersonID (in DB)\r\n updaterId: crossMidnightTimeData && saveUserId ? $.session.UserId : '', // for crossmidnight -- this is used for UserID (in DB)\r\n personId: crossMidnightTimeData && saveUserId ? personId : 0, // for crossmidnight\r\n // card data\r\n checkHours: totalHours ? totalHours : '',\r\n crossMidnightCheckHours: crossMidnightTimeData\r\n ? [\r\n { day1TotalHours: crossMidnightTimeData.day1TotalHours },\r\n { day2TotalHours: crossMidnightTimeData.day2TotalHours },\r\n ]\r\n : '',\r\n consumerId: consumer_Ids,\r\n dateOfService: entryDate,\r\n defaultStartTimeChanged: defaultStartTimeChanged ? defaultStartTimeChanged : false, // for crossmidnight evv entries\r\n defaultEndTimeChanged: defaultEndTimeChanged ? defaultEndTimeChanged : false, // for crossmidnight evv entries\r\n endTime: endTime ? endTime : '',\r\n endLatitude: endLatitude ? endLatitude : 0,\r\n endLongitude: endLongitude ? endLongitude : 0,\r\n inComments: noteText ? UTIL.removeUnsavableNoteText(noteText) : '',\r\n latitude: crossMidnightTimeData ? endLatitude : startLatitude,\r\n longitude: crossMidnightTimeData ? endLongitude : startLongitude,\r\n locationId: locationId ? locationId : '',\r\n numberOfConsumersPresent: numberOfConsumersPresent\r\n ? numberOfConsumersPresent\r\n : consumerIds\r\n ? consumerIds.length\r\n : 0,\r\n startTime: startTime ? startTime : '',\r\n workCodeID: workCode ? workCode : '',\r\n\r\n // transportation\r\n destination: destination ? UTIL.removeUnsavableNoteText(destination) : '',\r\n licensePlateNumber: licensePlateNumber ? UTIL.removeUnsavableNoteText(licensePlateNumber) : '',\r\n odometerEnd: !odometerEnd ? null : odometerEnd === 0 || odometerEnd === '0' ? null : odometerEnd,\r\n odometerStart: !odometerStart ? null : odometerStart === 0 || odometerStart === '0' ? null : odometerStart,\r\n transportationEndTime: transportationEndTime ? transportationEndTime : '',\r\n transportationStartTime: transportationStartTime ? transportationStartTime : '',\r\n reason: reason ? UTIL.removeUnsavableNoteText(reason) : '',\r\n transportationReimbursable: transportationReimbursable ? transportationReimbursable : '',\r\n transportationUnits: transportationUnits ? transportationUnits : '',\r\n // EVV\r\n deviceType: deviceOS,\r\n evvReason: evvReasonCode,\r\n attest: attestCheckbox.getElementsByTagName('input')[0].checked ? 'Y' : 'N',\r\n community: communityCheckbox.getElementsByTagName('input')[0].checked ? 'Y' : 'N',\r\n evvLocationType: locationTypeCode,\r\n };\r\n } else {\r\n data = {\r\n // session variables\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n // card data\r\n singleEntryId,\r\n checkHours: totalHours ? totalHours : '',\r\n crossMidnightCheckHours: crossMidnightTimeData\r\n ? [\r\n { day1TotalHours: crossMidnightTimeData.day1TotalHours },\r\n { day2TotalHours: crossMidnightTimeData.day2TotalHours },\r\n ]\r\n : '',\r\n consumerId: consumer_Ids,\r\n dateOfService: entryDate,\r\n defaultStartTimeChanged: defaultStartTimeChanged ? defaultStartTimeChanged : false, // for crossmidnight evv entries\r\n defaultEndTimeChanged: defaultEndTimeChanged ? defaultEndTimeChanged : false, // for crossmidnight evv entries\r\n endTime: endTime ? endTime : '',\r\n endLatitude: endLatitude ? endLatitude : 0,\r\n endLongitude: endLongitude ? endLongitude : 0,\r\n inComments: noteText ? UTIL.removeUnsavableNoteText(noteText) : '',\r\n locationId: locationId ? locationId : '',\r\n numberOfConsumersPresent: numberOfConsumersPresent\r\n ? numberOfConsumersPresent\r\n : consumerIds\r\n ? consumerIds.length\r\n : 0,\r\n startTime: startTime ? startTime : '',\r\n workCodeID: workCode ? workCode : '',\r\n // transportation\r\n destination: destination ? UTIL.removeUnsavableNoteText(destination) : '',\r\n licensePlateNumber: licensePlateNumber ? UTIL.removeUnsavableNoteText(licensePlateNumber) : '',\r\n odometerEnd: !odometerEnd ? null : odometerEnd === 0 || odometerEnd === '0' ? null : odometerEnd,\r\n odometerStart: !odometerStart ? null : odometerStart === 0 || odometerStart === '0' ? null : odometerStart,\r\n transportationEndTime: transportationEndTime ? transportationEndTime : '',\r\n transportationStartTime: transportationStartTime ? transportationStartTime : '',\r\n reason: reason ? UTIL.removeUnsavableNoteText(reason) : '',\r\n transportationReimbursable: transportationReimbursable ? transportationReimbursable : '',\r\n transportationUnits: transportationUnits ? transportationUnits : '',\r\n\r\n deviceType: deviceOS,\r\n evvReason: evvReasonCode,\r\n attest: attestCheckbox.getElementsByTagName('input')[0].checked ? 'Y' : 'N',\r\n community: communityCheckbox.getElementsByTagName('input')[0].checked ? 'Y' : 'N',\r\n updateEVVReason: $.session.singleEntrycrossMidnight && !defaultStartTimeChanged ? 'false' : 'true',\r\n evvLocationType: locationTypeCode,\r\n };\r\n }\r\n\r\n return data;\r\n }\r\n function checkDeviceType() {\r\n if ($.session.OS === 'iPhone/iPod' || $.session.OS === 'Linux') {\r\n return 'Mobile';\r\n } else return 'Other';\r\n }\r\n function setStartTimeLocation(pos) {\r\n startLatitude = pos.lat;\r\n startLongitude = pos.long;\r\n }\r\n function setEndTimeLocation(pos) {\r\n endLatitude = pos.lat;\r\n endLongitude = pos.long;\r\n }\r\n function setTotalHours() {\r\n if (keyStartStop === 'N') return;\r\n if (!startTime || !endTime) return;\r\n\r\n crossMidnightTimeData = {};\r\n\r\n var hoursInput = totalHoursInput.querySelector('input');\r\n var hours = UTIL.calculateTotalHours(startTime, endTime);\r\n\r\n if ((startTime === '00:00:00' || startTime === '00:00') && endTime === '00:00') {\r\n // user entered midnight for both start and end time\r\n totalHours = hours;\r\n hoursInput.value = totalHours;\r\n $.session.singleEntrycrossMidnight = false;\r\n crossMidnightTimeData = {};\r\n } else if (hours < 0 || hours === '0.00') {\r\n // user entered time period that spans into the next day\r\n // for the database entries\r\n var totalHours1 = UTIL.calculateTotalHours(startTime, '00:00');\r\n var totalHours2 = UTIL.calculateTotalHours('00:00', endTime);\r\n // for display on the screen\r\n totalHours = Number(totalHours1) + Number(totalHours2);\r\n // totalHours = (2400 + hours * 100)/100;\r\n hoursInput.value = totalHours.toFixed(2);\r\n $.session.singleEntrycrossMidnight = true;\r\n\r\n crossMidnightTimeData = {\r\n day1StartTime: startTime,\r\n day1EndTime: '00:00',\r\n day1TotalHours: totalHours1,\r\n day2StartTime: '00:00',\r\n day2EndTime: endTime,\r\n day2TotalHours: totalHours2,\r\n };\r\n } else {\r\n // user entered time period all within one day\r\n totalHours = hours;\r\n hoursInput.value = totalHours;\r\n $.session.singleEntrycrossMidnight = false;\r\n crossMidnightTimeData = {};\r\n }\r\n }\r\n\r\n function updateDateValMinMax(resetDate = true) {\r\n var todaysDate = UTIL.getTodaysDate();\r\n\r\n // if today is within the current pay period, then today is selected date; otherwise, payperiod start is selected date\r\n if (resetDate) {\r\n if (todaysDate <= payPeriod.end && todaysDate >= payPeriod.start) {\r\n entryDate = todaysDate;\r\n } else {\r\n entryDate = payPeriod.start;\r\n }\r\n }\r\n var input = dateInput.querySelector('input');\r\n if (resetDate) input.value = entryDate;\r\n input.setAttribute('min', payPeriod.start);\r\n input.setAttribute('max', payPeriod.end);\r\n\r\n // Set Min/Max Dates for Billable Work Codes\r\n if (isEdit) {\r\n if (isBillable === 'Y') {\r\n input.setAttribute('min', entryDate);\r\n input.setAttribute('max', entryDate);\r\n }\r\n } else {\r\n // NEW\r\n // If todays date is within the pay period, set the max to today's date. Otherwise max stays set to pay period end date.\r\n if (isBillable === 'Y' && todaysDate <= payPeriod.start) {\r\n // input.setAttribute('min', entryDate);\r\n input.setAttribute('max', UTIL.getTodaysDate());\r\n }\r\n }\r\n roster2.updateSelectedDate(entryDate);\r\n }\r\n async function setEditDataValues(editData) {\r\n var ed = editData[0];\r\n status = ed.Anywhere_Status;\r\n singleEntryId = ed.Single_Entry_ID;\r\n entryDate = UTIL.formatDateToIso(ed.Date_of_Service.split(' ')[0]);\r\n roster2.updateSelectedDate(entryDate);\r\n workCode = ed.Work_Code_ID;\r\n locationId = ed.Location_ID;\r\n startTime = ed.Start_Time;\r\n endTime = ed.End_Time === '23:59:59' ? '00:00' : ed.End_Time;\r\n totalHours = ed.Check_Hours;\r\n noteText = ed.Comments;\r\n locationTypeCode = ed.locationTypeCode;\r\n //get the rejection reason\r\n await singleEntryAjax.getSingleEntryById(singleEntryId, results => {\r\n entryData = results;\r\n rejectionReason = entryData[0].rejectionReason;\r\n if (document.getElementById('rejectionReason') != null)\r\n document.getElementById('rejectionReason').value = rejectionReason;\r\n });\r\n\r\n saveUserId = ed.User_ID; // userID used for cross midnight entries\r\n personId = ed.Person_ID;\r\n numberOfConsumersPresent = ed.Number_Consumers_Present;\r\n isBillable = ed.billable;\r\n keyStartStop = ed.keytimes;\r\n\r\n evvAttest = ed.attest;\r\n evvCommunity = ed.community;\r\n supervisorId = ed.supervisorId;\r\n rejectedTime = ed.rejected_time;\r\n destination = ed.destination;\r\n odometerEnd = ed.odometerend;\r\n odometerStart = ed.odometerstart;\r\n transportationEndTime = ed.transportationendtime;\r\n transportationStartTime = ed.transportationstarttime;\r\n reason = ed.reason;\r\n transportationReimbursable = ed.Transportation_reimbursable;\r\n transportationUnits = ed.Transportation_Units;\r\n transportationType = ed.Transportation_reimbursable === 'N' ? 'Company' : 'Personal';\r\n licensePlateNumber = ed.licensePlateNumber;\r\n\r\n isTransportationValid = transportationType && transportationUnits ? true : false;\r\n }\r\n function clearAllGlobalVariables() {\r\n //CLEAR EVV CACHE\r\n clearSavedSignaturesAndNotes();\r\n\r\n isEdit = undefined;\r\n isAdminEdit = undefined;\r\n isCardDisabled = undefined;\r\n status = undefined;\r\n singleEntryId = undefined;\r\n\r\n consumerIds = undefined;\r\n numberOfConsumersPresent = undefined;\r\n workCode = undefined;\r\n locationId = undefined;\r\n startTime = undefined;\r\n endTime = undefined;\r\n totalHours = undefined;\r\n noteText = undefined;\r\n rejectionReason = undefined;\r\n isBillable = undefined;\r\n keyStartStop = undefined;\r\n startLatitude = undefined;\r\n startLongitude = undefined;\r\n endLatitude = undefined;\r\n endLongitude = undefined;\r\n crossMidnightTimeData = undefined;\r\n $.session.singleEntrycrossMidnight = undefined;\r\n\r\n timeOverlap = undefined;\r\n\r\n isTransportationValid = undefined;\r\n destination = null;\r\n odometerEnd = null;\r\n odometerStart = null;\r\n transportationEndTime = null;\r\n transportationStartTime = null;\r\n reason = null;\r\n licensePlateNumber = null;\r\n transportationType = null;\r\n transportationReimbursable = null;\r\n transportationUnits = null;\r\n\r\n tmpTransportationType = null;\r\n tmpTransportationReimbursable = null;\r\n tmpOdometerStart = null;\r\n tmpOdometerEnd = null;\r\n tmpTransportationStartTime = null;\r\n tmpTransportationEndTime = null;\r\n tmpTransportationUnits = null;\r\n tmpDestination = null;\r\n tmpReason = null;\r\n tmpLicenseplate = null;\r\n\r\n eligibleConsumersObj = {};\r\n reasonRequired = false;\r\n isEVVSingleEntry = false;\r\n defaultTimesChanged = false;\r\n defaultStartTimeChanged = false;\r\n defaultEndTimeChanged = false;\r\n evvAttest = null;\r\n evvCommunity = null;\r\n evvReasonCode = null;\r\n endTimeClicks = 0;\r\n locationTypeCode = null;\r\n }\r\n function clearCard() {\r\n // clear inputs & dropdowns\r\n var locDrop = locationDropdown.querySelector('select');\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var hoursInput = totalHoursInput.querySelector('input');\r\n if (!isEdit) locDrop.value = '';\r\n startInput.value = '';\r\n startTime = null;\r\n endInput.value = '';\r\n endTime = null;\r\n hoursInput.value = '';\r\n endTimeClicks = 0;\r\n\r\n const reasonCodeDropdown = reasonDropdown.querySelector('select');\r\n reasonCodeDropdown.value = '';\r\n //Hide evv reason code\r\n document.querySelector('.timeCard__evv').style.display = 'none';\r\n document.querySelector('.timeCard__evvattestChk').style.display = 'none';\r\n reasonCodeDropdown.classList.remove('error');\r\n defaultTimesChanged = false;\r\n defaultStartTimeChanged = false;\r\n defaultEndTimeChanged = false;\r\n reasonRequired = false;\r\n\r\n evvAttest = null;\r\n evvCommunity = null;\r\n evvReasonCode = null;\r\n locationTypeCode = null;\r\n\r\n // clear selected consumers\r\n if (isEdit) {\r\n }\r\n\r\n //clearConsumerSection();\r\n checkPermissions();\r\n }\r\n\r\n function clearConsumerSection() {\r\n var consumerSection = document.querySelector('.timeCard__consumers');\r\n var consumers = [].slice.call(card.querySelectorAll('.seConsumerCard'));\r\n\r\n consumers.forEach(c => {\r\n var consumerCard = c.querySelector('.consumerCard');\r\n var consumerId = consumerCard.dataset.consumerId;\r\n consumerSection.removeChild(c);\r\n roster2.removeConsumerFromActiveConsumers(consumerId);\r\n consumerIds = consumerIds.filter(id => id !== consumerId);\r\n var activeConsumers = roster2.getActiveConsumers();\r\n numberOfConsumersPresent = activeConsumers ? activeConsumers.length : '0';\r\n });\r\n }\r\n\r\n // Consumers\r\n //------------------------------------\r\n async function getAllowedConsumersBasedOffResidence() {\r\n var residenceLocations = timeEntry.getResidenceLocations(); //Residence\r\n var rosterConsumers = await roster2.getAllRosterConsumers();\r\n var allowedConsumers = [];\r\n\r\n rosterConsumers.forEach(rc => {\r\n var primaryLocId = rc.conL;\r\n var locData = residenceLocations.filter(rl => rl.locationId === primaryLocId);\r\n if (locData.length > 0 && locData && locData[0].residence === 'Y') {\r\n // If a location is selected on the time entry card check this against\r\n // the primary location too. This usually only happens on edits.\r\n if (locationId) {\r\n if (locationId === primaryLocId) {\r\n allowedConsumers.push({ consumer_id: rc.id });\r\n }\r\n } else {\r\n allowedConsumers.push({ consumer_id: rc.id });\r\n }\r\n }\r\n });\r\n\r\n return allowedConsumers;\r\n }\r\n async function getAllowedConsumersBasedOffServiceLocations() {\r\n var residenceLocations = timeEntry.getResidenceLocations(); //Residence\r\n var rosterConsumers = await roster2.getAllRosterConsumers();\r\n var allowedConsumers = [];\r\n rosterConsumers.forEach(rc => {\r\n var serviceLocations = rc.LId.split('|');\r\n var locData = residenceLocations.filter(rl => {\r\n let exists = false;\r\n serviceLocations.forEach(sl => {\r\n if (rl.locationId === sl && rl.residence === 'Y') exists = true;\r\n });\r\n return exists;\r\n });\r\n if (locData.length > 0 && locData) {\r\n allowedConsumers.push({ consumer_id: rc.id });\r\n }\r\n });\r\n\r\n return allowedConsumers;\r\n }\r\n async function setAllowedConsumers(callback) {\r\n switch (isBillable) {\r\n case 'Y':\r\n switch (isAdminEdit) {\r\n case true:\r\n if ($.session.SingleEntryEditTimeEntry) {\r\n if (isEndTimeChangePermission)\r\n // this is for if pay period is closed than disabled to delete counsumers\r\n roster2.setAllowedConsumers([]);\r\n else {\r\n results = (await singleEntryAjax.getSingleEntryUsersByLocation(locationId, entryDate))\r\n .getSingleEntryUsersByLocationJSONResult;\r\n roster2.setAllowedConsumers(results);\r\n }\r\n if (callback) callback();\r\n } else {\r\n roster2.setAllowedConsumers(['%']);\r\n if (callback) callback();\r\n }\r\n break;\r\n default:\r\n if (isEndTimeChangePermission)\r\n // this is for if pay period is closed than disabled to delete counsumers\r\n roster2.setAllowedConsumers([]);\r\n else {\r\n results = (await singleEntryAjax.getSingleEntryUsersByLocation(locationId, entryDate))\r\n .getSingleEntryUsersByLocationJSONResult;\r\n roster2.setAllowedConsumers(results);\r\n }\r\n if (callback) callback();\r\n break;\r\n }\r\n break;\r\n default:\r\n if (isEndTimeChangePermission)\r\n // this is for if pay period is closed than disabled to delete counsumers\r\n roster2.setAllowedConsumers([]);\r\n else {\r\n roster2.setAllowedConsumers(['%']);\r\n }\r\n if (callback) callback();\r\n break;\r\n }\r\n }\r\n\r\n function showConsumerExtras(consumercard, consumerid) {\r\n var extras = POPUP.build({ id: 'consumerExtrasPopup' });\r\n extras.classList.add('extras');\r\n POPUP.show(extras);\r\n\r\n var evv;\r\n // check cache for instance by consumerid\r\n if (consumerid in $.session.evvDataCache) {\r\n // if exist in cache grab it\r\n evv = $.session.evvDataCache[consumerid];\r\n evv.editInit();\r\n evv.populatePopup();\r\n } else {\r\n // if nothing found create new EVV instance\r\n evv = new EVV({\r\n consumer: consumercard,\r\n consumerId: consumerid,\r\n signatureDataUrl: '',\r\n noteDataString: '',\r\n fromSave: false,\r\n });\r\n evv.populatePopup();\r\n }\r\n }\r\n function buildConsumerCard(consumerCard, consumerData) {\r\n consumerCard.classList.remove('highlighted');\r\n\r\n var card = document.createElement('div');\r\n card.classList.add('seConsumerCard');\r\n\r\n card.appendChild(consumerCard);\r\n\r\n if ($.session.singleEntryShowConsumerSignature === 'Y' || $.session.singleEntryShowConsumerNote === 'Y') {\r\n var hasNote = consumerData.hasNote === 'True' ? true : false;\r\n var hasSignature = consumerData.hasSignature === 'True' ? true : false;\r\n var classes = hasSignature || hasNote ? ['evv-highlight', 'extrasBtn'] : ['extrasBtn'];\r\n var extrasBtn = button.build({\r\n text: 'Action',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: classes,\r\n callback: function () {\r\n showConsumerExtras(consumerCard, consumerData.consumerid);\r\n },\r\n });\r\n card.appendChild(extrasBtn);\r\n }\r\n\r\n consumerCard.addEventListener('click', removeConsumerFromTimeCard);\r\n\r\n return card;\r\n }\r\n function moveConsumersToTimeCard(consumers) {\r\n var consumerList = document.querySelector('.timeCard__consumers');\r\n consumers.forEach(async consumer => {\r\n //If consumer is already on the selected consumer list ignore\r\n if (consumerIds.filter(id => id === consumer.id).length > 0) return;\r\n consumer.card.classList.remove('highlighted');\r\n var clone = consumer.card.cloneNode(true);\r\n var card = buildConsumerCard(clone, { consumerid: consumer.id });\r\n consumerList.appendChild(card);\r\n consumerIds.push(consumer.id);\r\n await evvCheckConsumerEligibility(consumer.id);\r\n numberOfConsumersPresent = consumerIds.length;\r\n });\r\n checkPermissions();\r\n }\r\n function removeConsumerFromTimeCard(event) {\r\n if ($.session.singleEntryAddConsumersOnBillable === 'P' && isEdit === true && consumerIds.length === 1) {\r\n // do not allow them to remove consumer and show an error\r\n var consumerWarningPopup = POPUP.build({\r\n classNames: ['warning'],\r\n });\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'You are not allowed to remove consumers from this entry.';\r\n\r\n consumerWarningPopup.appendChild(warningMessage);\r\n\r\n POPUP.show(consumerWarningPopup);\r\n return;\r\n }\r\n\r\n // remove consumer from active consumers\r\n var consumerSection = event.target.parentElement.parentElement;\r\n var consumerWrap = event.target.parentElement;\r\n consumerSection.removeChild(consumerWrap);\r\n\r\n var consumerid = event.target.dataset.consumerId;\r\n roster2.removeConsumerFromActiveConsumers(consumerid);\r\n consumerIds = consumerIds.filter(id => id !== consumerid);\r\n\r\n var activeConsumers = roster2.getActiveConsumers();\r\n numberOfConsumersPresent = activeConsumers ? activeConsumers.length : '0';\r\n // Remove consumer from evv data cache\r\n removeConsumerFromEVVCache(consumerid);\r\n //\r\n checkPermissions();\r\n evvCheckRemainingConsumers();\r\n }\r\n\r\n // Transportation\r\n //------------------------------------\r\n function saveTransportation() {\r\n transportationSaved = true;\r\n POPUP.hide(transportationPopup);\r\n transportationBtn.classList.add('success');\r\n }\r\n function deleteTransportation() {\r\n transportationSaved = false;\r\n POPUP.hide(transportationPopup);\r\n clearTransportationValues();\r\n transportationBtn.classList.remove('success');\r\n }\r\n function clearTransportationValues() {\r\n destination = null;\r\n odometerEnd = null;\r\n odometerStart = null;\r\n transportationEndTime = null;\r\n transportationStartTime = null;\r\n reason = null;\r\n transportationType = null;\r\n transportationReimbursable = null;\r\n transportationUnits = null;\r\n licensePlateNumber = null;\r\n }\r\n function calculateMileage(startVal, endVal) {\r\n var start = parseInt(startVal);\r\n var end = parseInt(endVal);\r\n if (start && end && start <= end) {\r\n return end - start;\r\n } else {\r\n return 'error';\r\n }\r\n }\r\n function checkTransportationRequiredFields() {\r\n //var isTransEdit = transportationBtn.classList.contains('success');\r\n // odometer\r\n function checkOdometer() {\r\n var odoTotal = odometerTotalInput.querySelector('input');\r\n\r\n var odoStartVal = odometerStart;\r\n var odoEndVal = odometerEnd;\r\n var odoTotalVal = transportationUnits;\r\n\r\n var isStartValid;\r\n var isEndValid;\r\n\r\n function checkStartVal() {\r\n if (!odoStartVal || odoStartVal === '') {\r\n odometerStartInput.classList.add('error');\r\n return 'error';\r\n } else {\r\n odometerStartInput.classList.remove('error');\r\n return 'success';\r\n }\r\n }\r\n function checkEndVal() {\r\n if (!odoEndVal || odoEndVal === '') {\r\n odometerEndInput.classList.add('error');\r\n return 'error';\r\n } else {\r\n odometerEndInput.classList.remove('error');\r\n return 'success';\r\n }\r\n }\r\n function setToalMiles() {\r\n var totalMiles = calculateMileage(odoStartVal, odoEndVal);\r\n if (totalMiles !== 'error') {\r\n odoTotal.value = totalMiles;\r\n transportationUnits = totalMiles;\r\n odometerTotalInput.classList.remove('error');\r\n } else {\r\n odometerStartInput.classList.add('error');\r\n odometerEndInput.classList.add('error');\r\n odometerTotalInput.classList.add('error');\r\n }\r\n }\r\n\r\n if (requiredFields.isOdometerRequired === 'Y') {\r\n // only allowed to use odo start & stop inputs\r\n // odometerTotalInput.classList.add('disabled');\r\n isStartValid = checkStartVal();\r\n isEndValid = checkEndVal();\r\n if (isStartValid !== 'error' && isEndValid !== 'error') {\r\n setToalMiles();\r\n }\r\n\r\n if (\r\n transportationUnits !== '' &&\r\n (odometerEnd == '' || odometerEnd == null) &&\r\n (odometerStart == '' || odometerStart == null)\r\n ) {\r\n odometerTotalInput.classList.remove('error');\r\n odometerStartInput.classList.remove('error');\r\n odometerEndInput.classList.remove('error');\r\n }\r\n\r\n if (\r\n transportationUnits == null &&\r\n (odometerEnd == '' || odometerEnd == null) &&\r\n (odometerStart == '' || odometerStart == null)\r\n ) {\r\n odometerTotalInput.classList.add('error');\r\n odometerStartInput.classList.add('error');\r\n odometerEndInput.classList.add('error');\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (requiredFields.isOdometerRequired === 'N') {\r\n // allowed to use any of the three\r\n var startValue = !odoStartVal || odoStartVal === '' ? false : true;\r\n var endValue = !odoEndVal || odoEndVal === '' ? false : true;\r\n var totalValue = !odoTotalVal || odoTotalVal === '' ? false : true;\r\n\r\n if (!startValue && !endValue && !totalValue) {\r\n // blank slate, clear all errors\r\n // odometerTotalInput.classList.remove('disabled');\r\n // odometerTotalInput.classList.remove('error');\r\n odometerTotalInput.classList.add('error');\r\n odometerStartInput.classList.remove('disabled');\r\n odometerStartInput.classList.add('error');\r\n odometerEndInput.classList.remove('disabled');\r\n odometerEndInput.classList.add('error');\r\n\r\n return;\r\n }\r\n\r\n if ((totalValue && (!startValue || !endValue)) || (odoStartVal === '0' && odoEndVal === '0')) {\r\n // use total miles input\r\n // var odometerTotalInput = odometerTotalInput.querySelector('input');\r\n if (!startValue && endValue) {\r\n //var odoStartInput = odometerStartInput.querySelector('input');\r\n odometerEndInput.classList.remove('error');\r\n odometerEndInput.classList.remove('disabled');\r\n odometerStartInput.classList.add('error');\r\n odometerStartInput.classList.remove('disabled');\r\n odometerTotalInput.classList.add('disabled');\r\n // odometerTotalInput.classList.add('error');\r\n odoTotal.value = '';\r\n totalValue = false;\r\n odoTotalVal = '';\r\n }\r\n if (!endValue && startValue) {\r\n // var odoEndInput = odometerEndInput.querySelector('input');\r\n odometerStartInput.classList.remove('error');\r\n odometerStartInput.classList.remove('disabled');\r\n odometerEndInput.classList.add('error');\r\n odometerEndInput.classList.remove('disabled');\r\n odometerTotalInput.classList.add('disabled');\r\n // odometerTotalInput.classList.add('error');\r\n odoTotal.value = '';\r\n totalValue = false;\r\n odoTotalVal = '';\r\n }\r\n\r\n if (!endValue && !startValue && odoTotal.value !== '') {\r\n // var odoEndInput = odometerEndInput.querySelector('input');\r\n odometerEndInput.classList.remove('error');\r\n odometerEndInput.classList.add('disabled');\r\n odometerStartInput.classList.remove('error');\r\n odometerStartInput.classList.add('disabled');\r\n odometerTotalInput.classList.remove('disabled');\r\n odometerTotalInput.classList.remove('error');\r\n // odoTotal.value = '';\r\n // totalValue = false;\r\n // odoTotalVal = '';\r\n }\r\n\r\n if (!endValue && !startValue && odoTotal.value === '') {\r\n // var odoEndInput = odometerEndInput.querySelector('input');\r\n odometerEndInput.classList.add('error');\r\n odometerEndInput.classList.remove('disabled');\r\n odometerStartInput.classList.add('error');\r\n odometerStartInput.classList.remove('disabled');\r\n odometerTotalInput.classList.remove('disabled');\r\n odometerTotalInput.classList.add('error');\r\n odoTotal.value = '';\r\n totalValue = false;\r\n odoTotalVal = '';\r\n }\r\n //odoStartInput.value = '';\r\n // odoEndInput.value = '';\r\n\r\n return;\r\n }\r\n\r\n if (startValue || endValue) {\r\n // use odo start & end inputs\r\n odometerTotalInput.classList.add('disabled');\r\n\r\n isStartValid = checkStartVal();\r\n isEndValid = checkEndVal();\r\n if (isStartValid !== 'error' && isEndValid !== 'error') {\r\n setToalMiles();\r\n }\r\n\r\n return;\r\n }\r\n }\r\n } // end of odometer check\r\n\r\n function checkTotalMiles() {\r\n var totalMilesVal = transportationUnits;\r\n\r\n if (requiredFields.isOdometerRequired === 'N') {\r\n if (totalMilesVal === '' || !totalMilesVal) {\r\n odometerTotalInput.classList.add('error');\r\n } else {\r\n odometerTotalInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n // reason\r\n function checkReason() {\r\n var reasonVal = reason;\r\n\r\n if (requiredFields.isReasonRequired === 'Y') {\r\n if (reasonVal === '' || !reasonVal) {\r\n reasonInput.classList.add('error');\r\n } else {\r\n reasonInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n // destination\r\n function checkDestination() {\r\n var destinationVal = destination;\r\n\r\n if (requiredFields.isDestinationRequired === 'Y') {\r\n if (destinationVal === '' || !destinationVal) {\r\n destinationInput.classList.add('error');\r\n } else {\r\n destinationInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n // license plate\r\n function checkLicensePlate() {\r\n var licenseplateVal = licensePlateNumber;\r\n\r\n if (requiredFields.isLicensePlateRequired === 'Y') {\r\n if (licenseplateVal === '' || !licenseplateVal) {\r\n licenseplateInput.classList.add('error');\r\n } else {\r\n licenseplateInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n // Require Time Entry Transportation Start and End Times\r\n function checkTransportationStartEndTimes() {\r\n var transportationEndTimeVal = transportationEndTime;\r\n var transportationStartTimeVal = transportationStartTime;\r\n\r\n if ($.session.requireTimeEntryTransportationTimes === 'Y') {\r\n if (transportationStartTimeVal === '' || !transportationStartTimeVal) {\r\n transportationStartTimeInput.classList.add('error');\r\n } else {\r\n transportationStartTimeInput.classList.remove('error');\r\n }\r\n\r\n if (transportationEndTimeVal === '' || !transportationEndTimeVal) {\r\n transportationEndTimeInput.classList.add('error');\r\n } else {\r\n if (UTIL.checkValidDateRange(transportationStartTimeVal, transportationEndTimeVal)) {\r\n transportationEndTimeInput.classList.remove('error');\r\n } else {\r\n transportationEndTimeInput.classList.add('error');\r\n }\r\n }\r\n } else {\r\n if (\r\n transportationStartTimeVal &&\r\n transportationEndTimeVal &&\r\n transportationEndTimeVal !== '' &&\r\n transportationStartTimeVal !== '' &&\r\n !UTIL.checkValidDateRange(transportationStartTimeVal, transportationEndTimeVal)\r\n ) {\r\n transportationEndTimeInput.classList.add('error');\r\n } else {\r\n transportationEndTimeInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n checkTotalMiles();\r\n checkOdometer();\r\n checkReason();\r\n checkDestination();\r\n checkLicensePlate();\r\n checkTransportationStartEndTimes();\r\n\r\n var errors = [].slice.call(transportationPopup.querySelectorAll('.error'));\r\n if (errors && errors.length === 0) {\r\n saveTransBtn.classList.remove('disabled');\r\n } else {\r\n saveTransBtn.classList.add('disabled');\r\n }\r\n }\r\n function setupTransportationEvents() {\r\n // cache old values in case of cancel click\r\n var oldTransportationType;\r\n var oldlicenseplate;\r\n var oldTransportationReimbursable;\r\n var oldOdometerStart;\r\n var oldOdometerEnd;\r\n var oldTransportationEndTime;\r\n var oldTransportationStartTime;\r\n var oldTransportationUnits;\r\n var oldDestination;\r\n var oldReason;\r\n\r\n transportationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n oldTransportationType = transportationType;\r\n oldTransportationReimbursable = transportationReimbursable;\r\n\r\n if (selectedOption.value === 'Company') {\r\n transportationType = selectedOption.value;\r\n transportationReimbursable = 'N';\r\n } else if (selectedOption.value === 'Personal') {\r\n transportationType = selectedOption.value;\r\n transportationReimbursable = 'Y';\r\n }\r\n checkTransportationRequiredFields();\r\n });\r\n\r\n licenseplateInput.addEventListener('change', event => {\r\n if (!oldlicenseplate) oldlicenseplate = licensePlateNumber;\r\n licensePlateNumber = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n odometerStartInput.addEventListener('change', event => {\r\n if (!oldOdometerStart) oldOdometerStart = odometerStart;\r\n odometerStart = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n odometerEndInput.addEventListener('change', event => {\r\n if (!oldOdometerEnd) oldOdometerEnd = odometerEnd;\r\n odometerEnd = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n odometerTotalInput.addEventListener('change', event => {\r\n // oldTransportationUnits = transportationUnits;\r\n transportationUnits = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n transportationStartTimeInput.addEventListener('change', event => {\r\n if (!oldTransportationStartTime) oldTransportationStartTime = transportationStartTime;\r\n transportationStartTime = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n transportationEndTimeInput.addEventListener('change', event => {\r\n if (!oldTransportationEndTime) oldTransportationEndTime = transportationEndTime;\r\n transportationEndTime = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n destinationInput.addEventListener('change', event => {\r\n if (!oldDestination) oldDestination = destination;\r\n destination = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n reasonInput.addEventListener('change', event => {\r\n if (!oldReason) oldReason = reason;\r\n reason = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n\r\n saveTransBtn.addEventListener('click', () => {\r\n saveTransportation();\r\n checkPermissions();\r\n });\r\n deleteTransBtn.addEventListener('click', deleteTransportation);\r\n cancelTransBtn.addEventListener('click', () => {\r\n if (transportationSaved) {\r\n transportationType = oldTransportationType ? oldTransportationType : transportationType;\r\n transportationReimbursable = oldTransportationReimbursable\r\n ? oldTransportationReimbursable\r\n : transportationReimbursable;\r\n odometerStart = oldOdometerStart || oldOdometerStart === '' ? oldOdometerStart : odometerStart;\r\n odometerEnd = oldOdometerEnd || oldOdometerEnd === '' ? oldOdometerEnd : odometerEnd;\r\n transportationEndTime =\r\n oldTransportationEndTime || oldTransportationEndTime === ''\r\n ? oldTransportationEndTime\r\n : transportationEndTime;\r\n transportationStartTime =\r\n oldTransportationStartTime || oldTransportationStartTime === ''\r\n ? oldTransportationStartTime\r\n : transportationStartTime;\r\n destination = oldDestination || oldDestination === '' ? oldDestination : destination;\r\n reason = oldReason || oldReason === '' ? oldReason : reason;\r\n licensePlateNumber = oldlicenseplate || oldlicenseplate === '' ? oldlicenseplate : licensePlateNumber;\r\n } else {\r\n clearTransportationValues();\r\n }\r\n\r\n POPUP.hide(transportationPopup);\r\n });\r\n }\r\n function populateTransportationDropdown() {\r\n var data = [\r\n { value: 'Personal', text: 'Personal' },\r\n { value: 'Company', text: 'Company' },\r\n ];\r\n\r\n if (!transportationType || transportationType === 'Personal') {\r\n transportationType = 'Personal';\r\n transportationReimbursable = 'Y';\r\n }\r\n\r\n dropdown.populate(transportationDropdown, data, transportationType);\r\n }\r\n function buildTransportationPopup() {\r\n // clear tmp values\r\n tmpTransportationType = null;\r\n tmpTransportationReimbursable = null;\r\n tmpOdometerStart = null;\r\n tmpOdometerEnd = null;\r\n tmpTransportationUnits = null;\r\n tmpDestination = null;\r\n tmpReason = null;\r\n tmpLicenseplate = null;\r\n tmpTransportationStartTime = null;\r\n tmpTransportationEndTime = null;\r\n\r\n var popupClassNames = isCardDisabled\r\n ? ['timeEntryTransportationPopup', 'popup--filter', 'disabled']\r\n : ['timeEntryTransportationPopup', 'popup--filter'];\r\n\r\n transportationPopup = POPUP.build({\r\n classNames: popupClassNames,\r\n hideX: true,\r\n });\r\n\r\n transportationDropdown = dropdown.build({\r\n label: 'Transportation Type',\r\n style: 'secondary',\r\n });\r\n licenseplateInput = input.build({\r\n label: 'License Plate',\r\n type: 'text',\r\n style: 'secondary',\r\n value: licensePlateNumber,\r\n attributes: [{ key: 'maxlength', value: 10 }],\r\n });\r\n transportationStartTimeInput = input.build({\r\n id: 'transportationStartTimeInput',\r\n type: 'time',\r\n label: 'Start Time',\r\n style: 'secondary',\r\n value: transportationStartTime,\r\n });\r\n transportationEndTimeInput = input.build({\r\n id: 'transportationEndTimeInput',\r\n type: 'time',\r\n label: 'End Time',\r\n style: 'secondary',\r\n value: transportationEndTime,\r\n });\r\n odometerStartInput = input.build({\r\n label: 'Odometer Start',\r\n type: 'number',\r\n style: 'secondary',\r\n value: odometerStart === '0' ? '' : odometerStart,\r\n });\r\n odometerEndInput = input.build({\r\n label: 'Odometer End',\r\n type: 'number',\r\n style: 'secondary',\r\n value: odometerEnd === '0' ? '' : odometerEnd,\r\n });\r\n odometerTotalInput = input.build({\r\n label: 'Total Miles',\r\n type: 'number',\r\n style: 'secondary',\r\n value: transportationUnits,\r\n });\r\n destinationInput = input.build({\r\n label: 'Destination',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: destination,\r\n });\r\n reasonInput = input.build({\r\n label: 'Reason',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: reason,\r\n });\r\n\r\n saveTransBtn = button.build({\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n });\r\n deleteTransBtn = button.build({\r\n text: 'Delete',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n cancelTransBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n classNames: 'cancelTransBtn',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveTransBtn);\r\n btnWrap.appendChild(deleteTransBtn);\r\n btnWrap.appendChild(cancelTransBtn);\r\n\r\n transportationPopup.appendChild(transportationDropdown);\r\n\r\n timeWrap = document.createElement('div');\r\n timeWrap.classList.add('btnWrap');\r\n transportationStartTimeInput.style.width = '49%';\r\n transportationEndTimeInput.style.width = '49%';\r\n timeWrap.appendChild(transportationStartTimeInput);\r\n timeWrap.appendChild(transportationEndTimeInput);\r\n transportationPopup.appendChild(timeWrap);\r\n\r\n transportationPopup.appendChild(odometerStartInput);\r\n transportationPopup.appendChild(odometerEndInput);\r\n transportationPopup.appendChild(odometerTotalInput);\r\n transportationPopup.appendChild(licenseplateInput);\r\n transportationPopup.appendChild(destinationInput);\r\n transportationPopup.appendChild(reasonInput);\r\n transportationPopup.appendChild(btnWrap);\r\n\r\n populateTransportationDropdown();\r\n setupTransportationEvents();\r\n checkTransportationRequiredFields();\r\n\r\n POPUP.show(transportationPopup);\r\n }\r\n function buildTransportationBtn() {\r\n var classes = isTransportationValid ? ['transportationBtn', 'success'] : ['transportationBtn'];\r\n return (btn = button.build({\r\n text: 'Add Transportation',\r\n icon: 'car',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: classes,\r\n }));\r\n }\r\n\r\n // Permissions & Required Fields\r\n //------------------------------------\r\n function checkRequiredFields() {\r\n // date\r\n function checkDates() {\r\n var payPeriodStart = new Date(payPeriod.start.split('-').join('/'));\r\n var payPeriodEnd = new Date(payPeriod.end.split('-').join('/'));\r\n var newEntryDate = entryDate.split('-');\r\n newEntryDate[1] = newEntryDate[1] - 1;\r\n newEntryDate = new Date(newEntryDate[0], newEntryDate[1], newEntryDate[2], 0, 0, 0);\r\n\r\n // check if entered date is outside the pay period\r\n var isDateAfter = dates.isAfter(newEntryDate, payPeriodStart);\r\n var isDateBefore = dates.isBefore(newEntryDate, payPeriodEnd);\r\n\r\n if (!isDateAfter) isDateAfter = dates.isEqual(newEntryDate, payPeriodStart);\r\n if (!isDateBefore) isDateBefore = dates.isEqual(newEntryDate, payPeriodEnd);\r\n\r\n if (!isDateAfter || !isDateBefore) {\r\n dateInput.classList.add('error');\r\n } else {\r\n dateInput.classList.remove('error');\r\n }\r\n\r\n // check if entered date is beyond todays date\r\n var todayDate = new Date(UTIL.getTodaysDate().split('-').join('/'));\r\n var isDateAfterToday = dates.isAfter(newEntryDate, todayDate);\r\n\r\n // for non-billable work codes, selected date can be beyond today\r\n // Added isDateAfter, and isDateBefore check. Can't blanket remove the error for non-billable\r\n // because the date still has to be within the pay period\r\n if (isBillable === 'N' && isDateAfter && isDateBefore) dateInput.classList.remove('error');\r\n if (isBillable === 'Y' && isDateAfter && isDateBefore && isDateAfterToday) dateInput.classList.add('error');\r\n }\r\n // workcode\r\n function checkWorkcodes() {\r\n var workCodeSelect = workCodeDropdown.querySelector('select');\r\n var currentValue = workCodeSelect.value;\r\n if (currentValue === '%') {\r\n workCodeDropdown.classList.add('error');\r\n } else {\r\n workCodeDropdown.classList.remove('error');\r\n }\r\n }\r\n // location\r\n function checkLocation() {\r\n var isDisabled = locationDropdown.classList.contains('disabled');\r\n var locationSelect = locationDropdown.querySelector('select');\r\n var currentValue = locationSelect.value;\r\n if (isDisabled) {\r\n locationDropdown.classList.remove('error');\r\n } else {\r\n if (currentValue === '%' || currentValue === '') {\r\n locationDropdown.classList.add('error');\r\n roster2.toggleMiniRosterBtnVisible(false);\r\n } else {\r\n locationDropdown.classList.remove('error');\r\n if (isBillable === 'Y') roster2.toggleMiniRosterBtnVisible(true);\r\n }\r\n }\r\n }\r\n\r\n // startTime, endTime & totalHours\r\n function checkTimeAndHours() {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var hoursInput = totalHoursInput.querySelector('input');\r\n\r\n if (!isBillable) {\r\n startTimeInput.classList.remove('error');\r\n totalHoursInput.classList.remove('error');\r\n } else {\r\n if (keyStartStop === 'Y') {\r\n if (!timeOverlap) {\r\n endTimeInput.classList.remove('error');\r\n }\r\n\r\n var isStartTimeValid = UTIL.validateTime(startInput.value);\r\n var isEndTimeValid = UTIL.validateTime(endInput.value);\r\n if (isStartTimeValid) {\r\n startTimeInput.classList.remove('error');\r\n } else {\r\n startTimeInput.classList.add('error');\r\n }\r\n\r\n var todaysDate = UTIL.getTodaysDate();\r\n // error endTime: for billable codes with Service Date today, don't allow cross over midnight (next day)\r\n if (isEdit && evvReasonCode !== '') {\r\n if (isBillable === 'Y' && entryDate === todaysDate && checkTimeForAfterNow(endInput.value)) {\r\n endTimeInput.classList.add('error');\r\n }\r\n } else if (isEdit && evvReasonCode === '') {\r\n if (isBillable === 'Y' && entryDate > todaysDate) {\r\n endTimeInput.classList.add('error');\r\n }\r\n } else {\r\n if (isBillable === 'Y' && entryDate === todaysDate && $.session.singleEntrycrossMidnight) {\r\n endTimeInput.classList.add('error');\r\n }\r\n }\r\n totalHoursInput.classList.remove('error');\r\n } else {\r\n if (hoursInput.value === '' || hoursInput.value < 0) {\r\n totalHoursInput.classList.add('error');\r\n } else {\r\n totalHoursInput.classList.remove('error');\r\n }\r\n startTimeInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n function checkStartTimeInputsForAfterNow() {\r\n const tempNow = new Date();\r\n const convertedToday = new Date(tempNow.getFullYear(), tempNow.getMonth(), tempNow.getDate());\r\n const splitServiceDate = entryDate.split('-');\r\n const entryDateObj = new Date(splitServiceDate[0], parseInt(splitServiceDate[1]) - 1, splitServiceDate[2]);\r\n\r\n if (isBillable === 'Y' && sendEvvData === 'Y' && !(entryDateObj < convertedToday)) {\r\n if (checkTimeForAfterNow(startTime)) {\r\n startTimeInput.classList.add('error');\r\n }\r\n if (checkTimeForAfterNow(endTime) && endTime !== '00:00') {\r\n endTimeInput.classList.add('error');\r\n }\r\n }\r\n }\r\n // consumers\r\n function checkConsumers() {\r\n var activeConsumers = roster2.getActiveConsumers();\r\n var consumerError = document.querySelector('.consumerSectionError');\r\n\r\n if (isBillable === 'Y') {\r\n // error\r\n if ($.session.singleEntryAddConsumersOnBillable === 'P') {\r\n // require a consumer to be picked\r\n if (activeConsumers.length < 1) {\r\n // show consumer error\r\n consumerError.innerHTML = `*You must select at least one consumer.`;\r\n consumerError.classList.add('error');\r\n consumerError.classList.remove('hidden');\r\n } else {\r\n consumerError.classList.add('hidden');\r\n consumerError.classList.remove('warning');\r\n consumerError.classList.remove('error');\r\n }\r\n }\r\n // warning\r\n if ($.session.singleEntryAddConsumersOnBillable === 'Y') {\r\n // do not require a consumer to be picked but give warning\r\n if (activeConsumers.length < 1) {\r\n // show consumer warning\r\n consumerError.innerHTML = `*It is advised you select a consumer.`;\r\n consumerError.classList.add('warning');\r\n consumerError.classList.remove('hidden');\r\n } else {\r\n consumerError.classList.add('hidden');\r\n consumerError.classList.remove('warning');\r\n consumerError.classList.remove('error');\r\n }\r\n }\r\n } else {\r\n consumerError.classList.add('hidden');\r\n consumerError.classList.remove('warning');\r\n consumerError.classList.remove('error');\r\n }\r\n }\r\n // note\r\n function checkNote() {\r\n if (requiredFields.isNoteRequired === 'Y') {\r\n if (noteText === '' || !noteText) {\r\n noteInput.classList.add('error');\r\n } else {\r\n noteInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n function checkEvv() {\r\n var isDisabled = reasonDropdown.classList.contains('disabled');\r\n var reasonSelect = reasonDropdown.querySelector('select');\r\n var currentValue = reasonSelect.value;\r\n if (isDisabled) {\r\n reasonDropdown.classList.remove('error');\r\n } else {\r\n if (\r\n currentValue === '%' ||\r\n (currentValue === '' && reasonRequired && (!evvReasonCode || evvReasonCode === '%') && defaultTimesChanged)\r\n ) {\r\n if (document.querySelector('.timeCard__evv').style.display !== 'none') {\r\n reasonDropdown.classList.add('error');\r\n }\r\n\r\n // roster2.toggleMiniRosterBtnVisible(false);\r\n } else {\r\n reasonDropdown.classList.remove('error');\r\n // if (isBillable === 'Y') roster2.toggleMiniRosterBtnVisible(true);\r\n }\r\n }\r\n }\r\n\r\n checkDates();\r\n checkWorkcodes();\r\n checkLocation();\r\n checkTimeAndHours();\r\n checkStartTimeInputsForAfterNow();\r\n checkConsumers();\r\n checkNote();\r\n checkEvv();\r\n\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (status === 'A' || status === 'S' || status === 'I' || hasErrors.length !== 0) {\r\n if ($.session.SingleEntryEditTimeEntry && status === 'A') {\r\n saveBtn.classList.remove('disabled');\r\n deleteBtn.classList.remove('disabled');\r\n saveAndSumbitBtn.classList.remove('disabled');\r\n\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n saveAndSumbitBtn.classList.add('disabled');\r\n }\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n // deleteBtn.classList.add('disabled');\r\n saveAndSumbitBtn.classList.add('disabled');\r\n }\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n deleteBtn.classList.remove('disabled');\r\n\r\n if (keyStartStop === 'Y') {\r\n // if 'Y' then end time is enabled and we need to check for it\r\n if (endTime) {\r\n saveAndSumbitBtn.classList.remove('disabled');\r\n } else {\r\n saveAndSumbitBtn.classList.add('disabled');\r\n }\r\n } else {\r\n // no check needed, done by hasErrors\r\n saveAndSumbitBtn.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n function checkPermissions() {\r\n // Enable/Disable Fields\r\n if ($.session.SingleEntryEditTimeEntry && status === 'A') {\r\n } else if (\r\n $.session.editSingleEntryCardStatus === 'S' ||\r\n $.session.editSingleEntryCardStatus === 'I' ||\r\n $.session.editSingleEntryCardStatus === 'A'\r\n ) {\r\n disableInput(dateInput);\r\n disableInput(startTimeInput);\r\n disableInput(endTimeInput);\r\n disableInput(noteInput);\r\n if (licenseplateInput) disableInput(licenseplateInput);\r\n }\r\n\r\n // Location dropdown\r\n if (\r\n (isBillable === 'Y' || !isBillable) &&\r\n !$.session.singleEntryUseServiceLocations &&\r\n $.session.singleEntryAddConsumersOnBillable === 'P'\r\n ) {\r\n disableInput(locationDropdown);\r\n } else {\r\n enableInput(locationDropdown);\r\n }\r\n\r\n // Key Times\r\n if (!isBillable) {\r\n disableInput(totalHoursInput);\r\n disableInput(startTimeInput);\r\n disableInput(endTimeInput);\r\n } else {\r\n if (keyStartStop === 'Y') {\r\n disableInput(totalHoursInput);\r\n enableInput(startTimeInput);\r\n enableInput(endTimeInput);\r\n } else {\r\n enableInput(totalHoursInput);\r\n disableInput(startTimeInput);\r\n disableInput(endTimeInput);\r\n }\r\n }\r\n\r\n // Save, Delete & Cancel Buttons\r\n if (isEdit) {\r\n if (\r\n $.session.editSingleEntryCardStatus === 'S' ||\r\n $.session.editSingleEntryCardStatus === 'I' ||\r\n // $.session.editSingleEntryCardStatus === 'R' ||\r\n $.session.SingleEntryUpdate === false\r\n ) {\r\n saveBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n saveAndSumbitBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n deleteBtn.classList.remove('disabled');\r\n saveAndSumbitBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n checkRequiredFields();\r\n\r\n if (isEndTimeChangePermission) {\r\n workCodeDropdown.classList.add('disabled');\r\n disableInput(startTimeInput);\r\n disableInput(totalHoursInput);\r\n enableInput(endTimeInput);\r\n disableInput(locationDropdown);\r\n disableInput(dateInput);\r\n disableInput(noteInput);\r\n if (reasonDropdown) disableInput(reasonDropdown);\r\n if (licenseplateInput) disableInput(licenseplateInput);\r\n disableInput(workCodeDropdown);\r\n if (locationTypeDropdown) disableInput(locationTypeDropdown);\r\n dateInput.classList.remove('error');\r\n noteInput.classList.remove('error');\r\n workCodeDropdown.classList.remove('error');\r\n startTimeInput.classList.remove('error');\r\n deleteBtn.classList.remove('disabled');\r\n endTimeInput.classList.remove('error');\r\n if (endTime != null && endTime < startTime) {\r\n endTimeInput.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n saveAndSumbitBtn.classList.add('disabled');\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n saveAndSumbitBtn.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n\r\n // Events\r\n //------------------------------------\r\n function setupCardEvents() {\r\n if (!isEdit) {\r\n payPeriodDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n var dateRange = event.target.value.split(' - ');\r\n var startDateIso = UTIL.formatDateToIso(dateRange[0]);\r\n var endDateIso = UTIL.formatDateToIso(dateRange[1]);\r\n sendEvvData = selectedOption.dataset.sendevv;\r\n payPeriod = timeEntry.setSelectedPayPeriod(startDateIso, endDateIso, event.target.value);\r\n updateDateValMinMax();\r\n });\r\n } else {\r\n deleteBtn.addEventListener('click', event => {\r\n var warningMessage = `This entry will be permanently deleted, do you wish to continue?`;\r\n timeEntryReview.showDeleteEntryWarningPopup(warningMessage, () =>\r\n timeEntry.deleteEntry(singleEntryId, isAdminEdit, payPeriod),\r\n );\r\n });\r\n }\r\n\r\n locationDropdown.addEventListener('change', event => {\r\n locationId = event.target.value;\r\n setAllowedConsumers();\r\n clearConsumerSection();\r\n checkPermissions();\r\n });\r\n reasonDropdown.addEventListener('change', event => {\r\n evvReasonCode = event.target.value;\r\n checkPermissions();\r\n });\r\n locationTypeDropdown.addEventListener('change', event => {\r\n locationTypeCode = event.target.value;\r\n checkPermissions();\r\n });\r\n attestCheckbox.addEventListener('change', event => {\r\n checkAttestStatus();\r\n });\r\n workCodeDropdown.addEventListener('change', event => workCodeDropdownEvent(event));\r\n dateInput.addEventListener('change', event => {\r\n entryDate = event.target.value;\r\n roster2.updateSelectedDate(entryDate);\r\n evvCheckConsumerEligibilityExistingConsumers();\r\n checkPermissions();\r\n });\r\n dateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n startTimeInput.addEventListener('focusout', async event => {\r\n var hoursInput = totalHoursInput.querySelector('input');\r\n var isTimeValid = UTIL.validateTime(event.target.value);\r\n if (!isTimeValid) {\r\n hoursInput.value = '';\r\n checkPermissions();\r\n return;\r\n }\r\n\r\n const origStartTime = startTime;\r\n startTime = `${event.target.value.split(':')[0]}:${event.target.value.split(':')[1]}`;\r\n if ($.session.singleEntry15minDoc === 'Y' && origStartTime !== startTime) {\r\n var min = parseInt(startTime.split(':')[1]);\r\n if (min % 15 !== 0) {\r\n errorPopup('This is not a valid time, you must document to the nearest quarter hour.');\r\n event.target.value = '';\r\n startTime = '0';\r\n }\r\n }\r\n\r\n if (origStartTime !== startTime) defaultTimesChanged = true;\r\n if (origStartTime !== startTime) {\r\n defaultStartTimeChanged = true;\r\n reasonRequired = true; // for evv\r\n } else {\r\n defaultStartTimeChanged = false;\r\n reasonRequired = false;\r\n }\r\n\r\n if (isEdit && defaultStartTimeChanged) {\r\n reasonDropdown.classList.remove('disabled');\r\n const reasonCodeDropdown = reasonDropdown.querySelector('select');\r\n reasonCodeDropdown.value = '%';\r\n evvReasonCode = '%';\r\n reasonDropdown.classList.add('error');\r\n }\r\n\r\n await evvCheck();\r\n setTotalHours();\r\n checkPermissions();\r\n UTIL.getGeoLocation(setStartTimeLocation);\r\n });\r\n endTimeInput.addEventListener('click', event => {\r\n setEndTimeOnClick(event);\r\n });\r\n endTimeInput.addEventListener('focusout', async event => {\r\n var hoursInput = totalHoursInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var isTimeValid = UTIL.validateTime(event.target.value);\r\n if (!isTimeValid) {\r\n $.session.singleEntrycrossMidnight = false;\r\n //\tcrossMidnightTimeData = {};\r\n endInput.value = '';\r\n endTime = null;\r\n hoursInput.value = '';\r\n totalHours = null;\r\n checkPermissions();\r\n return;\r\n }\r\n var now = new Date();\r\n let origEndTime = endTime;\r\n let systemDefaultForCheckEnd = now.getHours() + ':' + now.getMinutes();\r\n endTime = `${event.target.value.split(':')[0]}:${event.target.value.split(':')[1]}`; //Edge fucks shit up with selecting time with the time picker\r\n if ($.session.singleEntry15minDoc === 'Y' && origEndTime !== endTime) {\r\n // and endTime !== event.target.value\r\n var min = parseInt(endTime.split(':')[1]);\r\n if (min % 15 !== 0) {\r\n errorPopup('This is not a valid time, you must document to the nearest quarter hour.');\r\n event.target.value = '';\r\n endTime = '0';\r\n }\r\n }\r\n\r\n if (origEndTime) {\r\n origEndTime = `${origEndTime.split(':')[0]}:${origEndTime.split(':')[1]}`;\r\n }\r\n\r\n if (origEndTime !== endTime) defaultTimesChanged = true;\r\n\r\n // 9:30:00 !== 9:30\r\n if (systemDefaultForCheckEnd !== endTime) {\r\n defaultEndTimeChanged = true;\r\n reasonRequired = true; // for evv\r\n } else {\r\n defaultEndTimeChanged = false;\r\n reasonRequired = false;\r\n }\r\n\r\n if (isEdit && defaultTimesChanged) {\r\n reasonDropdown.classList.remove('disabled');\r\n const reasonCodeDropdown = reasonDropdown.querySelector('select');\r\n reasonCodeDropdown.value = '%';\r\n evvReasonCode = '%';\r\n reasonDropdown.classList.add('error');\r\n }\r\n\r\n await evvCheck();\r\n setTotalHours();\r\n checkPermissions();\r\n UTIL.getGeoLocation(setEndTimeLocation);\r\n });\r\n // TOTALHOURSINPUT - changed from keyup to input because using the arrow keys\r\n // (not on the keyboard but in the input itself) didn't trigger the event listener\r\n totalHoursInput.addEventListener('input', event => {\r\n totalHours = event.target.value;\r\n checkPermissions();\r\n });\r\n noteInput.addEventListener('keyup', event => {\r\n noteText = event.target.value;\r\n checkPermissions();\r\n });\r\n transportationBtn.addEventListener('click', () => {\r\n buildTransportationPopup();\r\n });\r\n saveBtn.addEventListener('click', async event => {\r\n event.target.classList.add('disabled');\r\n saveOrUpdate = event.target.dataset.insertType;\r\n if (saveOrUpdate === 'Save') {\r\n const result = await singleEntryAjax.getExistingTimeEntry();\r\n const { getExistingTimeEntryResult } = result;\r\n if (getExistingTimeEntryResult.length > 0 && $.session.anyRequireEndTime == 'Y') {\r\n newTimeEntry.endDateWarningPopup(getExistingTimeEntryResult);\r\n } else {\r\n timeEntry.getEntryData(keyStartStop);\r\n }\r\n }\r\n if (saveOrUpdate === 'Update') timeEntry.updateEntry(isAdminEdit, payPeriod, keyStartStop);\r\n });\r\n saveAndSumbitBtn.addEventListener('click', async event => {\r\n // Save entry first\r\n event.target.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n saveOrUpdate = event.target.dataset.insertType;\r\n\r\n const saveAndUpdate = true;\r\n if (saveOrUpdate === 'Save') {\r\n const result = await singleEntryAjax.getExistingTimeEntry();\r\n const { getExistingTimeEntryResult } = result;\r\n if (getExistingTimeEntryResult.length > 0 && $.session.anyRequireEndTime == 'Y') {\r\n newTimeEntry.endDateWarningPopup(getExistingTimeEntryResult);\r\n } else {\r\n timeEntry.getEntryData(keyStartStop, saveAndUpdate);\r\n }\r\n }\r\n if (saveOrUpdate === 'Update') timeEntry.updateEntry(isAdminEdit, payPeriod, keyStartStop, saveAndUpdate);\r\n\r\n // TODO, make global so access from timeentry.js\r\n // event.target.classList.remove('disabled');\r\n // saveBtn.classList.remove('disabled');\r\n });\r\n cancelBtn.addEventListener('click', () => {\r\n if (isAdminEdit) {\r\n timeApproval.refreshPage(payPeriod);\r\n } else {\r\n timeEntryReview.refreshPage(payPeriod);\r\n }\r\n clearAllGlobalVariables();\r\n });\r\n }\r\n function enableSaveButtons() {\r\n saveBtn.classList.remove('disabled');\r\n saveAndSumbitBtn.classList.remove('disabled');\r\n }\r\n\r\n function enableSaveButton() {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n\r\n async function customRosterApplyFilterEvent() {\r\n if (isBillable === 'Y' && !$.session.singleEntryUseServiceLocations) {\r\n // check if residence === 'N'\r\n var allowedConsumers = await getAllowedConsumersBasedOffResidence();\r\n roster2.setAllowedConsumers(allowedConsumers);\r\n } else {\r\n // roster.setAllowedConsumers([]);\r\n // var allowedConsumers = await getAllowedConsumersBasedOffServiceLocations();\r\n // roster2.setAllowedConsumers(allowedConsumers);\r\n await setAllowedConsumers();\r\n }\r\n }\r\n\r\n async function workCodeDropdownEvent(event) {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n workCode = selectedOption.value;\r\n isBillable = selectedOption.dataset.billable;\r\n keyStartStop = selectedOption.dataset.keytimes;\r\n wcServiceType = selectedOption.dataset.servicetype;\r\n\r\n updateDateValMinMax(false);\r\n\r\n if (isBillable === 'Y' && !$.session.singleEntryUseServiceLocations) {\r\n // check if residence === 'N'\r\n var allowedConsumers = await getAllowedConsumersBasedOffResidence();\r\n roster2.setAllowedConsumers(allowedConsumers);\r\n } else {\r\n // roster.setAllowedConsumers([]);\r\n var allowedConsumers = await getAllowedConsumersBasedOffServiceLocations();\r\n roster2.setAllowedConsumers(allowedConsumers);\r\n }\r\n\r\n var miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) {\r\n if (isBillable === 'Y') {\r\n miniRosterBtn.classList.remove('disabled');\r\n } else {\r\n miniRosterBtn.classList.add('disabled');\r\n clearConsumerSection();\r\n }\r\n }\r\n\r\n clearCard();\r\n // Set start time after card gets cleared\r\n if (keyStartStop === 'Y') {\r\n startTimeInput.getElementsByTagName('input')[0].value = `${nowHour}:${nowMinutes}`;\r\n startTime = `${nowHour}:${nowMinutes}`;\r\n UTIL.getGeoLocation(setStartTimeLocation);\r\n }\r\n\r\n checkPermissions();\r\n }\r\n\r\n function setEndTimeOnClick(event) {\r\n if (endTimeClicks !== 0 || event.target.value !== '') return;\r\n endTimeClicks = 1;\r\n let tempEndTime = new Date();\r\n let endTimeHour = tempEndTime.getHours() < '10' ? `0${now.getHours()}` : tempEndTime.getHours();\r\n let endTimeMinute = tempEndTime.getMinutes() < '10' ? `0${now.getMinutes()}` : tempEndTime.getMinutes();\r\n event.target.value = `${endTimeHour}:${endTimeMinute}`;\r\n endTime = `${endTimeHour}:${endTimeMinute}`;\r\n UTIL.getGeoLocation(setEndTimeLocation);\r\n setTotalHours();\r\n checkPermissions();\r\n }\r\n\r\n // Populate\r\n //------------------------------------\r\n function populatePayPeriodDropdown() {\r\n var dropdownData = payPeriodData.map(pp => {\r\n var dateArray = pp.dateString.split(' - ');\r\n var startDate = dateArray[0];\r\n var endDate = dateArray[1];\r\n\r\n var startDateAbbr = UTIL.abbreviateDateYear(startDate);\r\n var endDateAbbr = UTIL.abbreviateDateYear(endDate);\r\n return {\r\n value: `${startDate} - ${endDate}`,\r\n text: `${startDateAbbr} - ${endDateAbbr}`,\r\n attributes: [{ key: 'data-sendEvv', value: pp.sendEvvData }],\r\n };\r\n });\r\n sendEvvData = dropdownData[0].attributes[0].value;\r\n dropdown.populate(payPeriodDropdown, dropdownData, payPeriod.dateString);\r\n }\r\n function populateLocationDropdown() {\r\n // ID, Name, Residence, SE_Trans_Reimbursable\r\n var dropdownData = locationData.map(loc => {\r\n return {\r\n value: loc.ID,\r\n text: loc.Name,\r\n };\r\n });\r\n\r\n dropdownData.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(locationDropdown, dropdownData, locationId);\r\n }\r\n function populateWorkCodeDropdown() {\r\n var wcData;\r\n\r\n if (isEdit) {\r\n wcData = workCodeData.filter(wc => wc.billable === isBillable);\r\n } else {\r\n wcData = workCodeData;\r\n }\r\n\r\n var dropdownData = wcData.map(wc => {\r\n return {\r\n value: wc.workcodeid,\r\n text: wc.workcodename,\r\n attributes: [\r\n { key: 'data-billable', value: wc.billable },\r\n { key: 'data-keyTimes', value: wc.keyTimes },\r\n { key: 'data-serviceType', value: wc.serviceType },\r\n ],\r\n };\r\n });\r\n\r\n dropdownData.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(workCodeDropdown, dropdownData, workCode);\r\n }\r\n function populateReasonCodeDropdown() {\r\n if ($.session.stateAbbreviation === 'OH') {\r\n dropdown.populate(\r\n reasonDropdown,\r\n [\r\n { value: '%', text: '' },\r\n { value: '99', text: '99 - Documentation on file supports manual change' },\r\n ],\r\n evvReasonCode,\r\n );\r\n\r\n if (evvReasonCode === '99') {\r\n reasonCodeValue = '99 - Documentation on file supports manual change';\r\n }\r\n } else {\r\n const dropdownData = evvReasonCodeObj.map(reason => {\r\n return {\r\n value: reason.reasonCode,\r\n text: `${reason.reasonCode} - ${reason.reasonDescription}`,\r\n };\r\n });\r\n dropdownData.unshift({ value: '%', text: '' });\r\n dropdown.populate(reasonDropdown, dropdownData, evvReasonCode);\r\n\r\n if (evvReasonCode) {\r\n reasonCodeValue = dropdownData.find(x => x.value == evvReasonCode).text;\r\n }\r\n }\r\n\r\n if (document.getElementById('reasonInput') != null && document.getElementById('reasonInput') != undefined) {\r\n document.getElementById('reasonInput').value = reasonCodeValue;\r\n }\r\n\r\n populateLocationTypeDropdown();\r\n }\r\n\r\n function populateLocationTypeDropdown() {\r\n const locationTypeDropdownData = [\r\n { id: 1, value: 1, text: '1 - Home' },\r\n { id: 2, value: 2, text: '2 - Community' },\r\n ];\r\n dropdown.populate(locationTypeDropdown, locationTypeDropdownData, locationTypeCode);\r\n }\r\n async function populateCard(useAllWorkCodes) {\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n locationData = timeEntry.getLocations();\r\n workCodeData = await timeEntry.getWorkCodes(useAllWorkCodes);\r\n requiredFields = timeEntry.getRequiredFields();\r\n evvReasonCodeObj = timeEntry.getEvvReasonCodes();\r\n\r\n endTimeClicks = 0;\r\n now = new Date();\r\n nowHour = now.getHours() < '10' ? `0${now.getHours()}` : now.getHours();\r\n nowMinutes = now.getMinutes() < '10' ? `0${now.getMinutes()}` : now.getMinutes();\r\n\r\n if (!isEdit) populatePayPeriodDropdown();\r\n populateLocationDropdown();\r\n populateWorkCodeDropdown();\r\n\r\n setupCardEvents();\r\n checkPermissions();\r\n if (defaultTimesChanged) showEvv();\r\n\r\n // if (isEdit) {\r\n // \tsingleEntryAjax.getSingleEntryUsersByLocation(locationId, entryDate, function(results) {\r\n // \t\troster.setAllowedConsumers(results);\r\n // \t});\r\n // }\r\n\r\n if (isAdminEdit) {\r\n if (!$.session.SingleEntryEditTimeEntry) {\r\n isCardDisabled = true;\r\n card.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n if (status === 'A' || status === 'S' || status === 'I' || (!$.session.SingleEntryUpdate && isEdit)) {\r\n if ($.session.SingleEntryEditTimeEntry && status === 'A') {\r\n isCardDisabled = false;\r\n card.classList.remove('disabled');\r\n enableInput(noteInput);\r\n } else {\r\n isCardDisabled = true;\r\n }\r\n } else if (status === 'R' || status === 'D') {\r\n isCardDisabled = true;\r\n }\r\n }\r\n } else {\r\n if (\r\n status === 'A' ||\r\n status === 'S' ||\r\n status === 'I' ||\r\n status === 'D' ||\r\n (!$.session.SingleEntryUpdate && isEdit)\r\n ) {\r\n isCardDisabled = true;\r\n }\r\n }\r\n\r\n if (isCardDisabled) {\r\n card.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n saveAndSumbitBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n roster2.toggleMiniRosterBtnVisible(false);\r\n workCodeDropdown.classList.add('disabled');\r\n locationDropdown.classList.add('disabled');\r\n startTimeInput.classList.add('disabled');\r\n endTimeInput.classList.add('disabled');\r\n reasonDropdown.classList.add('disabled');\r\n attestCheckbox.classList.add('disabled');\r\n transportationBtn.classList.add('disabled');\r\n dateInput.classList.add('disabled');\r\n noteInput.classList.add('disabled');\r\n rejectionReasonInput.classList.add('disabled');\r\n }\r\n // initially when editing a rejected/Non-Billable, the Save btns are disabled, they become enabled after the first edit of the form\r\n if (status === 'R' && (personId === $.session.PeopleId || supervisorId === $.session.PeopleId)) {\r\n saveBtn.classList.add('disabled');\r\n saveAndSumbitBtn.classList.add('disabled');\r\n }\r\n\r\n if (isEndTimeChangePermission) {\r\n card.classList.remove('disabled');\r\n saveBtn.classList.add('disabled');\r\n saveAndSumbitBtn.classList.add('disabled');\r\n deleteBtn.classList.remove('disabled');\r\n roster2.toggleMiniRosterBtnVisible(false);\r\n workCodeDropdown.classList.add('disabled');\r\n locationDropdown.classList.add('disabled');\r\n startTimeInput.classList.add('disabled');\r\n endTimeInput.classList.remove('disabled');\r\n reasonDropdown.classList.add('disabled');\r\n attestCheckbox.classList.add('disabled');\r\n transportationBtn.classList.add('disabled');\r\n dateInput.classList.add('disabled');\r\n noteInput.classList.add('disabled');\r\n rejectionReasonInput.classList.add('disabled');\r\n locationTypeDropdown.classList.add('disabled');\r\n dateInput.classList.remove('error');\r\n noteInput.classList.remove('error');\r\n endTimeInput.classList.remove('error');\r\n }\r\n }\r\n // EVV\r\n // -----------------------------------\r\n function checkTimeForAfterNow(enteredTime) {\r\n let tempNow = new Date();\r\n let nowHour = tempNow.getHours() < '10' ? `0${now.getHours()}` : tempNow.getHours();\r\n let nowMinuet = tempNow.getMinutes() < '10' ? `0${now.getMinutes()}` : tempNow.getMinutes();\r\n return Date.parse(`01/01/2020 ${enteredTime}`) > Date.parse(`01/01/2020 ${nowHour}:${nowMinuet}`);\r\n }\r\n\r\n async function evvCheck() {\r\n if (!isEdit) {\r\n if (startTime) {\r\n // const timeChanged = startTime !== `${nowHour}:${nowMinutes}`\r\n await evvCheckConsumerEligibilityExistingConsumers();\r\n if (\r\n isBillable === 'Y' &&\r\n defaultTimesChanged &&\r\n wcServiceType === 'A' &&\r\n sendEvvData === 'Y' &&\r\n (reasonRequired === true || isEVVSingleEntry)\r\n ) {\r\n showEvv();\r\n // evvCheckConsumerEligibilityExistingConsumers();\r\n } else {\r\n document.querySelector('.timeCard__evv').style.display = 'none';\r\n document.querySelector('.timeCard__evvattestChk').style.display = 'none';\r\n reasonRequired = false;\r\n }\r\n }\r\n } else {\r\n //isEdit is true\r\n let wcObj = workCodeData.filter(wc => wc.workcodeid === workCode);\r\n wcServiceType = wcObj[0].serviceType;\r\n let ppObj = payPeriodData.filter(pp => pp.dateString === payPeriod.dateString);\r\n sendEvvData = ppObj[0].sendEvvData;\r\n await evvCheckConsumerEligibilityExistingConsumers();\r\n if (\r\n isBillable === 'Y' &&\r\n defaultTimesChanged &&\r\n wcServiceType === 'A' &&\r\n sendEvvData === 'Y' &&\r\n (reasonRequired === true || isEVVSingleEntry)\r\n ) {\r\n if (defaultEndTimeChanged || defaultTimesChanged) {\r\n showEvv();\r\n // checkRequiredFields();\r\n // await evvCheckConsumerEligibilityExistingConsumers();\r\n } else {\r\n reasonRequired = false;\r\n document.querySelector('.timeCard__evv').style.display = 'none';\r\n document.querySelector('.timeCard__evvattestChk').style.display = 'none';\r\n }\r\n } else {\r\n reasonRequired = false;\r\n document.querySelector('.timeCard__evv').style.display = 'none';\r\n document.querySelector('.timeCard__evvattestChk').style.display = 'none';\r\n }\r\n }\r\n }\r\n\r\n // async function evvCheckConsumerEligibility(id) {\r\n // const eligibilityProm = new Promise((resolve, reject) => {\r\n // singleEntryAjax.getEvvEligibility(id, entryDate, res => {\r\n // if (res.length > 0) {\r\n // eligibleConsumersObj[id] = true;\r\n // reasonRequired = true;\r\n // } else eligibleConsumersObj[id] = false;\r\n // resolve('evvEligibilityChecked');\r\n // });\r\n // });\r\n // eligibilityProm.then(() => evvCheck());\r\n // }\r\n\r\n // function evvCheckConsumerEligibilityExistingConsumers() {\r\n // reasonRequired = false;\r\n // consumerIds.forEach(id => {\r\n // const eligibilityProm = new Promise((resolve, reject) => {\r\n // singleEntryAjax.getEvvEligibility(id, entryDate, res => {\r\n // if (res.length > 0) {\r\n // reasonRequired = true;\r\n // eligibleConsumersObj[id] = true;\r\n // checkAttestStatus();\r\n // } else eligibleConsumersObj[id] = false;\r\n // resolve('evvEligibilityChecked');\r\n // });\r\n // });\r\n // eligibilityProm.then(() => checkRequiredFields());\r\n // });\r\n // }\r\n\r\n async function evvCheckConsumerEligibility(id) {\r\n const res = await singleEntryAjax.getEvvEligibilityAsync(id, entryDate);\r\n if (res.length > 0) {\r\n eligibleConsumersObj[id] = true;\r\n reasonRequired = true;\r\n } else {\r\n eligibleConsumersObj[id] = false;\r\n }\r\n\r\n await evvCheck();\r\n }\r\n\r\n async function evvCheckConsumerEligibilityExistingConsumers() {\r\n reasonRequired = false;\r\n consumerIds.forEach(async id => {\r\n const res = await singleEntryAjax.getEvvEligibilityAsync(id, entryDate);\r\n if (res.length > 0) {\r\n reasonRequired = true;\r\n eligibleConsumersObj[id] = true;\r\n isEVVSingleEntry = true;\r\n } else {\r\n eligibleConsumersObj[id] = false;\r\n }\r\n disableCardFields();\r\n\r\n if (\r\n isEVVSingleEntry &&\r\n sendEvvData === 'Y' &&\r\n eVVChangeDate != '' &&\r\n $.session.stateAbbreviation == 'OH' &&\r\n todayDate >= eVVChangeDate\r\n ) {\r\n populateLocationTypeDropdown();\r\n document.querySelector('.timeCard__LocationEvv').style.display = 'flex';\r\n locationTypeCode = '1';\r\n }\r\n });\r\n\r\n // checkRequiredFields();\r\n }\r\n // under following conditions, the form imputs disabled (except time inputs): 1) entry is rejected, 2) workcode = Billable, 3) user is creator/supervisor, 4) this entry requires EVV\r\n function disableCardFields() {\r\n if (\r\n isEVVSingleEntry &&\r\n isEdit &&\r\n isBillable &&\r\n status == 'R' &&\r\n (personId === $.session.PeopleId || supervisorId === $.session.PeopleId)\r\n ) {\r\n roster2.toggleMiniRosterBtnVisible(false);\r\n workCodeDropdown.classList.add('disabled');\r\n locationDropdown.classList.add('disabled');\r\n attestCheckbox.classList.add('disabled');\r\n transportationBtn.classList.add('disabled');\r\n dateInput.classList.add('disabled');\r\n noteInput.classList.add('disabled');\r\n rejectionReasonInput.classList.add('disabled');\r\n }\r\n }\r\n\r\n async function evvCheckRemainingConsumers() {\r\n reasonRequired = false;\r\n consumerIds.forEach(id => {\r\n if (eligibleConsumersObj[id]) reasonRequired = true;\r\n });\r\n await evvCheck();\r\n checkAttestStatus();\r\n }\r\n\r\n function showEvv() {\r\n populateReasonCodeDropdown();\r\n document.querySelector('.timeCard__evv').style.display = 'flex';\r\n document.querySelector('.timeCard__evvattestChk').style.display = 'flex';\r\n if (eVVChangeDate != '' && $.session.stateAbbreviation == 'OH' && todayDate >= eVVChangeDate) {\r\n document.querySelector('.timeCard__LocationEvv').style.display = 'flex';\r\n if (!locationTypeCode) {\r\n locationTypeCode = '1';\r\n }\r\n }\r\n }\r\n\r\n function checkAttestStatus() {\r\n if (reasonRequired && attestCheckbox.getElementsByTagName('input')[0].checked === false) {\r\n attestCheckbox.classList.add('redButNotError');\r\n } else {\r\n attestCheckbox.classList.remove('redButNotError');\r\n }\r\n }\r\n\r\n // Build\r\n //------------------------------------\r\n // dropdowns\r\n function buildPayPeriodDropdown() {\r\n return dropdown.build({\r\n dropdownId: 'payPeriodsDropdown',\r\n label: 'Pay Period',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n }\r\n function buildLocationDropdown() {\r\n return dropdown.build({\r\n dropdownId: 'locationsDropodown',\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: isEdit ? true : false,\r\n });\r\n }\r\n function buildWorkCodeDropdown() {\r\n return dropdown.build({\r\n dropdownId: 'workCodesDropdown',\r\n label: 'Work Code',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n }\r\n function buildEVVReasonDropdown() {\r\n return dropdown.build({\r\n dropdownId: 'reasonDropdown',\r\n label: 'Reason Code',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n }\r\n\r\n function buildLocationTypeDropdown() {\r\n return dropdown.build({\r\n dropdownId: 'locationTypeDropdown',\r\n label: 'Location Type',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n }\r\n\r\n function buildEVVReasontext() {\r\n return input.build({\r\n id: 'reasonInput',\r\n type: 'text',\r\n label: 'Reason Code',\r\n style: 'secondary',\r\n value: reasonCodeValue,\r\n readonly: true,\r\n });\r\n }\r\n // inputs\r\n function buildDateInput() {\r\n var dateObj = new Date(entryDate);\r\n var minDate;\r\n var maxDate;\r\n if (isEdit) {\r\n if (isBillable === 'Y') {\r\n minDate = entryDate;\r\n maxDate = entryDate;\r\n } else {\r\n // minDate = UTIL.getFormattedDateFromDate(dates.startDayOfWeek(dateObj), { separator: '-', format: 'iso' });\r\n // maxDate = UTIL.getFormattedDateFromDate(dates.endOfWeek(dateObj), { separator: '-', format: 'iso' });\r\n minDate = payPeriod.start;\r\n maxDate = payPeriod.end;\r\n }\r\n } else {\r\n //NEW\r\n if (isBillable === 'Y') {\r\n minDate = payPeriod.start;\r\n maxDate = entryDate;\r\n } else {\r\n minDate = payPeriod.start;\r\n maxDate = payPeriod.end;\r\n }\r\n }\r\n return input.build({\r\n id: 'dateBox',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: entryDate,\r\n attributes: [\r\n {\r\n key: 'min',\r\n value: minDate,\r\n },\r\n {\r\n key: 'max',\r\n value: maxDate,\r\n },\r\n ],\r\n });\r\n }\r\n function buildStartTimeInput() {\r\n return (startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n style: 'secondary',\r\n attributes: [{ key: 'step', value: $.session.singleEntry15minDoc === 'Y' ? '900' : '60' }],\r\n value: startTime,\r\n }));\r\n }\r\n function buildEndTimeInput() {\r\n return (endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n style: 'secondary',\r\n attributes: [{ key: 'step', value: $.session.singleEntry15minDoc === 'Y' ? '900' : '60' }],\r\n value: endTime,\r\n }));\r\n }\r\n function buildTotalHoursInput() {\r\n return (totalHoursInput = input.build({\r\n label: 'Hours',\r\n type: 'number',\r\n style: 'secondary',\r\n value: totalHours,\r\n attributes: [{ key: 'min', value: '0' }],\r\n }));\r\n }\r\n function buildNoteInput() {\r\n return (noteInput = input.build({\r\n label: 'Note',\r\n style: 'secondary',\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n value: noteText,\r\n }));\r\n }\r\n function buildRejectionReasonInput() {\r\n return (rejectionReasonInput = input.build({\r\n id: 'rejectionReason',\r\n label: 'Rejection Reason',\r\n style: 'secondary',\r\n type: 'textarea',\r\n value: rejectionReason,\r\n }));\r\n }\r\n function buildAttestCheckbox() {\r\n return (attestCheckbox = input.buildCheckbox({\r\n text: 'Attest',\r\n style: 'secondary',\r\n isChecked: evvAttest ? (evvAttest === 'Y' ? true : false) : true,\r\n }));\r\n }\r\n\r\n function buildCommunityCheckbox() {\r\n return (communityCheckbox = input.buildCheckbox({\r\n text: 'Community',\r\n style: 'secondary',\r\n isChecked: evvCommunity === 'Y' ? true : false,\r\n }));\r\n }\r\n\r\n // main sections\r\n function buildTimeEntrySection() {\r\n var section = document.createElement('div');\r\n section.classList.add('timeCard__timeEntry');\r\n // dropdowns\r\n if (!isEdit) payPeriodDropdown = buildPayPeriodDropdown();\r\n locationDropdown = buildLocationDropdown();\r\n workCodeDropdown = buildWorkCodeDropdown();\r\n reasonDropdown = buildEVVReasonDropdown();\r\n locationTypeDropdown = buildLocationTypeDropdown();\r\n // inputs\r\n reasonInput = buildEVVReasontext();\r\n dateInput = buildDateInput();\r\n startTimeInput = buildStartTimeInput();\r\n endTimeInput = buildEndTimeInput();\r\n totalHoursInput = buildTotalHoursInput();\r\n communityCheckbox = buildCommunityCheckbox();\r\n noteInput = buildNoteInput();\r\n rejectionReasonInput = buildRejectionReasonInput();\r\n attestCheckbox = buildAttestCheckbox();\r\n // transportation\r\n transportationBtn = buildTransportationBtn();\r\n\r\n var wrap1 = document.createElement('div'); // dates\r\n var wrap2 = document.createElement('div'); // dropdowns\r\n var wrap3 = document.createElement('div'); // times\r\n var wrap4 = document.createElement('div'); // evv\r\n var wrap5 = document.createElement('div'); // location evv\r\n var wrap6 = document.createElement('div'); // attestCheckbox\r\n var wrap7 = document.createElement('div'); // evv + location evv\r\n wrap1.classList.add('timeCard__date');\r\n wrap2.classList.add('timeCard__other');\r\n wrap3.classList.add('timeCard__time');\r\n wrap4.classList.add('timeCard__evv');\r\n wrap5.classList.add('timeCard__LocationEvv');\r\n wrap6.classList.add('timeCard__evvattestChk');\r\n wrap7.classList.add('timeCard__evvLocationEvv');\r\n\r\n //rejection reason should always be disabled!\r\n rejectionReasonInput.classList.add('disabled');\r\n\r\n // date wrap\r\n if (!isEdit) wrap1.appendChild(payPeriodDropdown);\r\n wrap1.appendChild(dateInput);\r\n // dropdown wrap\r\n wrap2.appendChild(workCodeDropdown);\r\n wrap2.appendChild(locationDropdown);\r\n // time wrap\r\n wrap3.appendChild(startTimeInput);\r\n wrap3.appendChild(endTimeInput);\r\n\r\n if ($.session.stateAbbreviation === 'IN') {\r\n wrap3.appendChild(communityCheckbox);\r\n }\r\n\r\n wrap3.appendChild(totalHoursInput);\r\n\r\n // evv wrap\r\n // hide evv stuff initially\r\n eVVChangeDate = $.session.ohioEVVChangeDate != '' ? new Date($.session.ohioEVVChangeDate.split('-').join('/')) : '';\r\n todayDate = new Date(UTIL.getTodaysDate().split('-').join('/'));\r\n if (defaultTimesChanged) {\r\n wrap4.style.display = 'flex';\r\n if (eVVChangeDate != '' && $.session.stateAbbreviation == 'OH' && todayDate >= eVVChangeDate)\r\n wrap5.style.display = 'flex';\r\n wrap6.style.display = 'flex';\r\n } else {\r\n wrap4.style.display = 'none';\r\n if (eVVChangeDate != '' && $.session.stateAbbreviation == 'OH' && todayDate >= eVVChangeDate)\r\n wrap5.style.display = 'none';\r\n wrap6.style.display = 'none';\r\n }\r\n if (eVVChangeDate != '' && $.session.stateAbbreviation == 'OH' && todayDate >= eVVChangeDate) {\r\n wrap4.appendChild(reasonInput);\r\n wrap5.appendChild(locationTypeDropdown);\r\n } else {\r\n wrap4.appendChild(reasonDropdown);\r\n }\r\n\r\n wrap6.appendChild(attestCheckbox);\r\n wrap7.appendChild(wrap4);\r\n if (eVVChangeDate != '' && $.session.stateAbbreviation == 'OH' && todayDate >= eVVChangeDate)\r\n wrap7.appendChild(wrap5);\r\n wrap7.appendChild(wrap6);\r\n\r\n section.appendChild(wrap1);\r\n section.appendChild(wrap2);\r\n section.appendChild(wrap3);\r\n section.appendChild(wrap7);\r\n section.appendChild(noteInput);\r\n if (status === 'R') {\r\n section.appendChild(rejectionReasonInput);\r\n }\r\n\r\n $.session.singleEntryShowTransportation === 'Y' ? section.appendChild(transportationBtn) : ''; //Show Transportation system preference\r\n\r\n return section;\r\n }\r\n async function buildConsumerSection(consumersPresent) {\r\n var section = document.createElement('div');\r\n section.classList.add('timeCard__consumers');\r\n\r\n var consumerSectionError = document.createElement('div');\r\n consumerSectionError.classList.add('consumerSectionError');\r\n\r\n section.appendChild(consumerSectionError);\r\n\r\n roster2.clearActiveConsumers(); // clear any previous active consumers\r\n\r\n if (consumersPresent && consumersPresent.length > 0) {\r\n consumersPresent.forEach(async cp => {\r\n var splitName = cp.consumername.split(',');\r\n var consumer = roster2.buildConsumerCard({\r\n FN: splitName[0],\r\n LN: splitName[1],\r\n id: cp.consumerid,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n var card = buildConsumerCard(consumer, cp);\r\n section.appendChild(card);\r\n consumerIds.push(cp.consumerid);\r\n numberOfConsumersPresent = consumerIds.length;\r\n await evvCheckConsumerEligibility(cp.consumerid);\r\n });\r\n }\r\n\r\n return section;\r\n }\r\n function buildSaveDeleteCancelButtons() {\r\n var saveOrUpdate = isEdit ? 'Update' : 'Save';\r\n saveBtn = button.build({\r\n text: saveOrUpdate,\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['disabled'],\r\n attributes: [{ key: 'data-insert-type', value: saveOrUpdate }],\r\n });\r\n saveAndSumbitBtn = button.build({\r\n text: `${saveOrUpdate} and submit`,\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['disabled'],\r\n attributes: [{ key: 'data-insert-type', value: saveOrUpdate }],\r\n });\r\n deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['disabled'],\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('timeCard__actions');\r\n\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(saveAndSumbitBtn);\r\n if (isEdit) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n\r\n async function buildCard(options, editData, consumersPresent, payperiod, isOnlyEndTimeChangePermission = false) {\r\n // options = {isEdit}\r\n saveUserId = null;\r\n personId = null;\r\n var opts = options;\r\n isEdit = opts.isEdit;\r\n isAdminEdit = opts.isAdminEdit;\r\n\r\n isEndTimeChangePermission = isOnlyEndTimeChangePermission;\r\n if (editData && editData.length > 0) {\r\n await setEditDataValues(editData);\r\n payPeriod = payperiod;\r\n if (consumersPresent.length > 0) evvReasonCode = consumersPresent[0].evvReasonCode;\r\n if (evvReasonCode) defaultTimesChanged = true;\r\n if (isBillable === 'N') {\r\n roster2.toggleMiniRosterBtnVisible(false);\r\n } else roster2.toggleMiniRosterBtnVisible(true);\r\n // evvAttest = editData.attest\r\n } else {\r\n entryDate = timeEntry.getCurrentDate(false);\r\n roster2.updateSelectedDate(entryDate);\r\n payPeriod = timeEntry.getCurrentPayPeriod(false);\r\n }\r\n\r\n if ((isEdit || isAdminEdit) && isTransportationValid) {\r\n transportationSaved = true;\r\n } else {\r\n transportationSaved = false;\r\n }\r\n\r\n await setAllowedConsumers();\r\n\r\n consumerIds = [];\r\n eligibleConsumersObj = {};\r\n\r\n card = document.createElement('div');\r\n card.classList.add('card', 'timeCard');\r\n\r\n var cardHeader = document.createElement('div');\r\n cardHeader.classList.add('card__header');\r\n var heading = isEdit ? 'Edit Time Entry' : 'New Time Entry';\r\n cardHeader.innerHTML = `

    ${heading}

    `;\r\n\r\n var cardBody = document.createElement('div');\r\n cardBody.classList.add('card__body');\r\n\r\n var timeEntrySection = buildTimeEntrySection();\r\n var consumerSection = await buildConsumerSection(consumersPresent);\r\n var saveDeleteCancel = buildSaveDeleteCancelButtons();\r\n\r\n // build card body\r\n cardBody.appendChild(timeEntrySection);\r\n cardBody.appendChild(consumerSection);\r\n cardBody.appendChild(saveDeleteCancel);\r\n // build card\r\n card.appendChild(cardHeader);\r\n card.appendChild(cardBody);\r\n\r\n return card;\r\n }\r\n\r\n return {\r\n build: buildCard,\r\n populate: populateCard,\r\n getOverlapData,\r\n getSaveUpdateData,\r\n setAllowedConsumers,\r\n customRosterApplyFilterEvent,\r\n moveConsumersToTimeCard,\r\n handleActionNavEvent,\r\n clearAllGlobalVariables,\r\n enableSaveButtons,\r\n enableSaveButton,\r\n };\r\n})();\r\n","var editTimeEntry = (function () {\r\n // DOM\r\n var timeCard;\r\n let seActivityElement;\r\n // Data\r\n var timeEntryData;\r\n var consumersPresent;\r\n var payPeriod;\r\n // Values\r\n var isAdminEdit;\r\n var isOrginUser;\r\n var isOnlyEndTimeChangePermission;\r\n\r\n function clearAllGlobalVariables() {\r\n timeEntryData = undefined;\r\n consumersPresent = undefined;\r\n }\r\n\r\n async function loadPage() {\r\n DOM.clearActionCenter();\r\n\r\n timeCard = await timeEntryCard.build(\r\n { isEdit: true, isAdminEdit },\r\n timeEntryData,\r\n consumersPresent,\r\n payPeriod,\r\n isOnlyEndTimeChangePermission,\r\n );\r\n DOM.ACTIONCENTER.appendChild(timeCard);\r\n if (seActivityElement && typeof seActivityElement === 'object')\r\n timeCard.querySelector('.card__body').appendChild(seActivityElement);\r\n\r\n var useAllWorkCodes = isAdminEdit && !isOrginUser ? true : false;\r\n await timeEntryCard.populate(useAllWorkCodes);\r\n\r\n //resize rejection reason box\r\n const tx = document.getElementById('rejectionReason');\r\n if (tx) tx.setAttribute('style', 'height:' + tx.scrollHeight + 'px;overflow-y:hidden;');\r\n }\r\n\r\n function init(data) {\r\n setActiveModuleSectionAttribute('timeEntry-edit');\r\n DOM.clearActionCenter();\r\n roster2.miniRosterinit(null, {\r\n hideDate: true,\r\n });\r\n\r\n timeEntryData = data.entry;\r\n consumersPresent = data.consumers;\r\n isAdminEdit = data.isAdminEdit;\r\n payPeriod = data.payPeriod;\r\n seActivityElement = data.recordActivityElement;\r\n isOrginUser = data.isOrginUser ? true : false;\r\n isOnlyEndTimeChangePermission = data.isOnlyEndTimeChangePermission ? true : false;\r\n\r\n loadPage();\r\n }\r\n\r\n return {\r\n init,\r\n loadPage,\r\n clearAllGlobalVariables,\r\n };\r\n})();\r\n","var newTimeEntry = (function () {\r\n var timeCard;\r\n\r\n async function loadPage() {\r\n DOM.clearActionCenter();\r\n\r\n timeCard = await timeEntryCard.build({\r\n isEdit: false,\r\n });\r\n DOM.ACTIONCENTER.appendChild(timeCard);\r\n\r\n await timeEntryCard.populate();\r\n }\r\n\r\n async function endDateWarningPopup(getExistingTimeEntryResult) {\r\n const endDateWarningPopup = POPUP.build({\r\n hideX: true,\r\n classNames: 'warning',\r\n });\r\n\r\n const okBtn = button.build({\r\n text: 'Provide End Time',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(endDateWarningPopup); \r\n let payPeriod = timeEntry.getCurrentPayPeriod(false);\r\n let isDisabled = getExistingTimeEntryResult[0].Anywhere_Closed === 'False' ? false : true;\r\n if (isDisabled == false) {\r\n let payPeriodData = timeEntry.getPayPeriods(false);\r\n var dateofService = getExistingTimeEntryResult[0].Date_of_Service.split(' ')[0];\r\n let timeStart = UTIL.formatDateToIso(dateofService);\r\n payPeriod = payPeriodData.find(x => timeStart >= x.start && timeStart <= x.end);\r\n } \r\n \r\n singleEntryAjax.getSingleEntryById(getExistingTimeEntryResult[0].Single_Entry_ID, results => {\r\n singleEntryAjax.getSingleEntryConsumersPresent(getExistingTimeEntryResult[0].Single_Entry_ID, consumers => {\r\n editTimeEntry.init({\r\n isOrginUser: true,\r\n entry: results,\r\n consumers: consumers, \r\n payPeriod,\r\n recordActivityElement: null,\r\n isOnlyEndTimeChangePermission: isDisabled,\r\n });\r\n });\r\n });\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(endDateWarningPopup);\r\n timeEntry.init();\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(okBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n const borderBottom = document.createElement('div');\r\n borderBottom.classList.add('borderBottom');\r\n\r\n\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML =\r\n 'You have an existing time entry with no end time. Please provide the end time to the below time entry before creating a new entry.';\r\n endDateWarningPopup.appendChild(warningMessage);\r\n endDateWarningPopup.appendChild(borderBottom);\r\n\r\n const serviceDate = document.createElement('p');\r\n serviceDate.style.textAlign = 'left';\r\n serviceDate.innerHTML = 'Service Date: ' + moment(getExistingTimeEntryResult[0].Date_of_Service).format('M/D/YYYY');\r\n endDateWarningPopup.appendChild(serviceDate);\r\n\r\n const startTime = document.createElement('p');\r\n startTime.style.textAlign = 'left';\r\n startTime.innerHTML = 'Start Time: ' + UTIL.convertFromMilitary(getExistingTimeEntryResult[0].Start_Time);\r\n endDateWarningPopup.appendChild(startTime);\r\n\r\n const workCode = document.createElement('p');\r\n workCode.style.textAlign = 'left';\r\n workCode.innerHTML = 'Work Code: ' + getExistingTimeEntryResult[0].Work_Code_Name;\r\n endDateWarningPopup.appendChild(workCode);\r\n\r\n endDateWarningPopup.appendChild(btnWrap);\r\n POPUP.show(endDateWarningPopup);\r\n }\r\n\r\n function init() {\r\n setActiveModuleSectionAttribute('timeEntry-new');\r\n DOM.clearActionCenter();\r\n roster2.miniRosterinit(null, {\r\n hideDate: true,\r\n });\r\n roster2.toggleMiniRosterBtnVisible(false);\r\n loadPage();\r\n }\r\n\r\n return {\r\n init,\r\n loadPage,\r\n endDateWarningPopup,\r\n };\r\n})();\r\n","var reports = (function(){\r\n var reportCurrentlyProcessing = false;\r\n var startDate;\r\n var endDate;\r\n var filterValues;\r\n var isTimeApproval = false;\r\n // DOM elements\r\n var actioncenter;\r\n var reportPopup;\r\n\r\n function handledProcessedReport() {\r\n reportCurrentlyProcessing = false;\r\n }\r\n\r\n function showTimeEntryReport() {\r\n if (!startDate || !endDate) return\r\n\r\n reportCurrentlyProcessing = true;\r\n var userId = $.session.UserId;\r\n\r\n if (!isTimeApproval) {\r\n reportsAjax.getEmpSingleEntryDetailReportAjax(userId, startDate, endDate);\r\n } else {\r\n reportsAjax.getEmpSingleEntrySupervisorDetailReportAjax(userId, filterValues);\r\n }\r\n }\r\n\r\n\r\n function showOverlapReport() {\r\n if (!startDate || !endDate) return\r\n\r\n reportCurrentlyProcessing = true;\r\n var userId = $.session.UserId;\r\n\r\n reportsAjax.getOverlapSingleEntryDetailReportAjax(userId, startDate, endDate);\r\n }\r\n\r\n function showReportsPopup() {\r\n // popup\r\n var popup = document.createElement('div');\r\n popup.classList.add('popup', 'visible', 'popup--filter', 'timeEntryReportsPopup');\r\n popup.setAttribute('data-popup', 'true');\r\n // header\r\n var header = document.createElement('h5');\r\n header.innerHTML = `Select A Report To View`;\r\n // reports list\r\n var reports = `\r\n
      \r\n
    \r\n `;\r\n var timeEntryBtn = button.build({\r\n text: 'Time Entry Report',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function() {\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n actioncenter.removeChild(popup);\r\n showTimeEntryReport();\r\n }\r\n });\r\n var overlapBtn = button.build({\r\n text: 'Overlap Report',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function() {\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n actioncenter.removeChild(popup);\r\n showOverlapReport();\r\n }\r\n });\r\n\r\n popup.appendChild(header);\r\n popup.appendChild(timeEntryBtn);\r\n popup.appendChild(overlapBtn);\r\n\r\n // append to dom\r\n bodyScrollLock.disableBodyScroll(popup);\r\n overlay.show();\r\n actioncenter.appendChild(popup);\r\n }\r\n\r\n //optional paramters used to show it is a supervisor running report with different values needed\r\n function init(payPeriod, timeApproval, filterData) {\r\n actioncenter = document.getElementById('actioncenter');\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n\r\n isTimeApproval = timeApproval;\r\n\r\n if (filterData && timeApproval) {\r\n filterValues = filterData;\r\n }\r\n\r\n showReportsPopup();\r\n \r\n }\r\n\r\n return {\r\n init,\r\n handledProcessedReport\r\n }\r\n})();\r\n","var reportsAjax = (function(){\r\n function getEmpSingleEntryDetailReportAjax(userId, startDate, endDate) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/BasicSingleEntryReport/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"userId\":\"' + userId + '\", \"startDate\":\"' + startDate + '\", \"endDate\":\"' + endDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var arr = response.BasicSingleEntryReportResult._buffer;\r\n var byteArray = new Uint8Array(arr);\r\n var blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser == 'Explorer' || $.session.browser == 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n var fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n reports.handledProcessedReport();\r\n }//\r\n });\r\n }\r\n\r\n function getEmpSingleEntrySupervisorDetailReportAjax(userId, filterValues) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/BasicSingleEntrySupervisorReport/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"userId\":\"' + userId + '\", \"startDate\":\"' + filterValues.startDate + '\", \"endDate\":\"' + filterValues.endDate + '\", \"supervisorId\":\"' + filterValues.supervisorId + '\", \"locationId\":\"' + filterValues.locationId + '\", \"personId\":\"' + filterValues.employeeId + '\", \"status\":\"' + filterValues.status + '\", \"workCodeId\":\"' + filterValues.workCodeId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var arr = response.BasicSingleEntrySupervisorReportResult._buffer;\r\n var byteArray = new Uint8Array(arr);\r\n var blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser == 'Explorer' || $.session.browser == 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n var fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n reports.handledProcessedReport();\r\n }//\r\n });\r\n }\r\n \r\n function getOverlapSingleEntryDetailReportAjax(userId, startDate, endDate) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/SingleEntryOverLapReport/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"userId\":\"' + userId + '\", \"startDate\":\"' + startDate + '\", \"endDate\":\"' + endDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var arr = response.SingleEntryOverLapReportResult._buffer;\r\n var byteArray = new Uint8Array(arr);\r\n var blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser == 'Explorer' || $.session.browser == 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n var fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n reports.handledProcessedReport();\r\n }\r\n });\r\n }\r\n\r\n return {\r\n getEmpSingleEntryDetailReportAjax,\r\n getEmpSingleEntrySupervisorDetailReportAjax,\r\n getOverlapSingleEntryDetailReportAjax\r\n }\r\n})();\r\n","var timeEntryReview = (function () {\r\n //-DATA------------------\r\n var payPeriodData;\r\n var locationData;\r\n var workCodeData;\r\n //-DOM------------------\r\n var payPeriodsDropdown;\r\n var reviewTable;\r\n var mulitSelectBtn;\r\n var selectAllBtn;\r\n var filterBtn;\r\n var filterPopup;\r\n var locationDropdown;\r\n var workCodeDropdown;\r\n var applyBtn;\r\n var cancelBtn;\r\n //-VALUES------------------\r\n var payPeriod;\r\n var locationId;\r\n var workCodeId;\r\n var locationName;\r\n var workCodeName;\r\n var startDate;\r\n var endDate;\r\n var splitStartDate;\r\n var splitEndDate;\r\n var tmpLocationId;\r\n var tmpLocationName;\r\n var tmpWorkCodeId;\r\n var tmpWorkCodeName;\r\n var wcAbbreviation;\r\n //-OTHER------------------\r\n var statusLookup = {\r\n A: 'Awaiting Approval',\r\n P: 'Pending',\r\n R: 'Rejected',\r\n I: 'Imported',\r\n S: 'Submitted',\r\n D: 'Duplicate',\r\n };\r\n var enableMultiEdit = false;\r\n var enableSelectAll = false;\r\n var selectedRows = []; // array of row ids\r\n //-TABLE DATA------------------\r\n var entriesByDate; // original results array\r\n\r\n let btnWrap;\r\n let payPeriodBtnWrap;\r\n let locationNameBtnWrap;\r\n let workCodeNameBtnWrap;\r\n\r\n // Util\r\n //------------------------------------\r\n function formatTimeString(timeString) {\r\n if (timeString === '') return timeString;\r\n // removes seconds and strips leading zeros then converts to standard\r\n var time = timeString.split(':');\r\n var hh = time[0].split('')[0] === '0' ? time[0].split('')[1] : time[0];\r\n var mm = time[1];\r\n\r\n return UTIL.convertFromMilitary(`${hh}:${mm}`);\r\n }\r\n function showDeleteEntryWarningPopup(messageText, callback) {\r\n var popup = POPUP.build({ classNames: ['warning'], hideX: true });\r\n var message = document.createElement('p');\r\n message.innerHTML = messageText;\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n callback();\r\n ACTION_NAV.hide();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n ACTION_NAV.hide();\r\n\r\n mulitSelectBtn.classList.remove('enabled');\r\n mulitSelectBtn.classList.remove('disabled');\r\n selectAllBtn.classList.remove('enabled');\r\n enableMultiEdit = false;\r\n enableSelectAll = false;\r\n\r\n selectedRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n popup.appendChild(message);\r\n popup.appendChild(btnWrap);\r\n\r\n POPUP.show(popup);\r\n }\r\n function showSubmitError(messageText) {\r\n var popup = POPUP.build({ classNames: ['error'] });\r\n var message = document.createElement('p');\r\n message.innerHTML = messageText;\r\n popup.appendChild(message);\r\n\r\n POPUP.show(popup);\r\n }\r\n function clearAllGlobalVariables() {\r\n selectedRows = [];\r\n\r\n payPeriod = undefined;\r\n locationId = undefined;\r\n workCodeId = undefined;\r\n locationName = undefined;\r\n workCodeName = undefined;\r\n enableMultiEdit = false;\r\n enableSelectAll = false;\r\n tmpLocationId = undefined;\r\n tmpLocationName = undefined;\r\n tmpWorkCodeId = undefined;\r\n tmpWorkCodeName = undefined;\r\n }\r\n\r\n // Submit & Delete\r\n //------------------------------------\r\n function submitEntries() {\r\n var statusDataObj = {\r\n newStatus: 'S',\r\n singleEntryIdString: selectedRows.join(','),\r\n token: $.session.Token,\r\n };\r\n singleEntryAjax.updateSingleEntryStatus(statusDataObj, function (results) {\r\n successfulSave.show('ENTRIES SUBMITTED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n loadReviewPage();\r\n enableMultiEdit = false;\r\n mulitSelectBtn.classList.remove('enabled');\r\n }, 1000);\r\n });\r\n }\r\n function deleteEntries() {\r\n var deletePromises = [];\r\n\r\n selectedRows.forEach(row => {\r\n deletePromises.push(\r\n new Promise(function (fulfill, reject) {\r\n singleEntryAjax.deleteSingleEntryRecord(row, function (results) {\r\n fulfill();\r\n });\r\n }),\r\n );\r\n });\r\n\r\n Promise.all(deletePromises)\r\n .then(function (res) {\r\n successfulSave.show('ENTRIES DELETED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n loadReviewPage();\r\n enableMultiEdit = false;\r\n mulitSelectBtn.classList.remove('enabled');\r\n }, 1000);\r\n })\r\n .catch(function (error) { });\r\n }\r\n function submitEntry(updateObj) {\r\n singleEntryAjax.updateSingleEntryStatus(updateObj, function () {\r\n loadReviewPage();\r\n });\r\n }\r\n function deleteEntry(entryId) {\r\n singleEntryAjax.deleteSingleEntryRecord(entryId, function () {\r\n loadReviewPage();\r\n });\r\n }\r\n\r\n // Action Nav\r\n //------------------------------------\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n if (!selectedRows || selectedRows.length === 0) {\r\n enableMultiEdit = false;\r\n mulitSelectBtn.classList.remove('enabled');\r\n ACTION_NAV.hide();\r\n return;\r\n }\r\n\r\n switch (targetAction) {\r\n case 'submitEntries': {\r\n var warningMessage = `By clicking Yes, you are confirming that you have reviewed these entries and that they are correct to the best of your knowledge.`;\r\n showDeleteEntryWarningPopup(warningMessage, () => submitEntries());\r\n ACTION_NAV.hide();\r\n break;\r\n }\r\n case 'deleteEntries': {\r\n showDeleteEntryWarningPopup(\r\n `These entries will be permanently deleted, do you wish to continue?`,\r\n deleteEntries,\r\n );\r\n break;\r\n }\r\n }\r\n }\r\n function setupActionNav() {\r\n var submitBtn = button.build({\r\n text: 'Submit',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-action-nav', value: 'submitEntries' }],\r\n });\r\n var deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'outlined',\r\n attributes: [{ key: 'data-action-nav', value: 'deleteEntries' }],\r\n });\r\n\r\n ACTION_NAV.populate([submitBtn, deleteBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n\r\n // Filtering\r\n //------------------------------------\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n //reformat startDate and endDate\r\n splitStartDate = startDate.split('-');\r\n splitEndDate = endDate.split('-');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet()\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n if (document.getElementById('payPeriodBtn') != null)\r\n document.getElementById('payPeriodBtn').innerHTML = 'Pay Period: ' + UTIL.leadingZero(splitStartDate[1]) + '/' + UTIL.leadingZero(splitStartDate[2],)\r\n + '/' + splitStartDate[0].slice(2, 4) + ' - ' + UTIL.leadingZero(splitEndDate[1]) + '/' + UTIL.leadingZero(splitEndDate[2],)\r\n + '/' + splitEndDate[0].slice(2, 4);\r\n\r\n\r\n if (locationName === '%' || locationName === 'All') {\r\n btnWrap.appendChild(locationNameBtnWrap);\r\n btnWrap.removeChild(locationNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(locationNameBtnWrap);\r\n if (document.getElementById('locationNameBtn') != null)\r\n document.getElementById('locationNameBtn').innerHTML = 'Location: ' + locationName;\r\n }\r\n\r\n if (workCodeName === '%' || workCodeName === 'All') {\r\n btnWrap.appendChild(workCodeNameBtnWrap);\r\n btnWrap.removeChild(workCodeNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(workCodeNameBtnWrap);\r\n if (document.getElementById('workCodeNameBtn') != null)\r\n document.getElementById('workCodeNameBtn').innerHTML = 'Work Code: ' + workCodeName;\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'filter',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n showFilterPopup('ALL');\r\n },\r\n });\r\n\r\n payPeriodBtn = button.build({\r\n id: 'payPeriodBtn',\r\n text: 'Pay Period: ' + UTIL.leadingZero(splitStartDate[1]) + '/' + UTIL.leadingZero(splitStartDate[2],) + '/' + splitStartDate[0].slice(2, 4) + ' - ' + UTIL.leadingZero(splitEndDate[1]) + '/' + UTIL.leadingZero(splitEndDate[2],) + '/' + splitEndDate[0].slice(2, 4),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('payPeriodBtn') },\r\n });\r\n\r\n locationNameBtn = button.build({\r\n id: 'locationNameBtn',\r\n text: 'Location: ' + locationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('locationNameBtn') },\r\n });\r\n locationNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('locationNameBtn') },\r\n });\r\n\r\n workCodeNameBtn = button.build({\r\n id: 'workCodeNameBtn',\r\n text: 'Work Code: ' + workCodeName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('workCodeNameBtn') },\r\n });\r\n workCodeNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('workCodeNameBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n payPeriodBtnWrap = document.createElement('div');\r\n payPeriodBtnWrap.classList.add('filterSelectionBtnWrap');\r\n payPeriodBtnWrap.appendChild(payPeriodBtn);\r\n btnWrap.appendChild(payPeriodBtnWrap);\r\n\r\n locationNameBtnWrap = document.createElement('div');\r\n locationNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationNameBtnWrap.appendChild(locationNameBtn);\r\n locationNameBtnWrap.appendChild(locationNameCloseBtn);\r\n btnWrap.appendChild(locationNameBtnWrap);\r\n\r\n workCodeNameBtnWrap = document.createElement('div');\r\n workCodeNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n workCodeNameBtnWrap.appendChild(workCodeNameBtn);\r\n workCodeNameBtnWrap.appendChild(workCodeNameCloseBtn);\r\n btnWrap.appendChild(workCodeNameBtnWrap); \r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'workCodeNameBtn') {\r\n tmpWorkCodeName = 'All';\r\n workCodeName = 'All';\r\n tmpWorkCodeId = '%';\r\n }\r\n if (closeFilter == 'locationNameBtn') {\r\n tmpLocationId = '%';\r\n locationName = 'All'; \r\n tmpLocationName = 'All'; \r\n } \r\n applyFilter();\r\n }\r\n\r\n function populateLocationDropdown() {\r\n var data = locationData.map(l => {\r\n return {\r\n value: l.ID,\r\n text: l.Name,\r\n attributes: [\r\n { key: 'data-residence', value: l.Residence },\r\n { key: 'data-reimbursable', value: l.SE_Trans_Reimbursable },\r\n ],\r\n };\r\n });\r\n data.unshift({ value: '%', text: 'All' });\r\n dropdown.populate(locationDropdown, data, locationId);\r\n }\r\n function populateWorkCodeDropdown() {\r\n var data = workCodeData.map(wc => {\r\n return {\r\n value: wc.workcodeid,\r\n text: wc.workcodename,\r\n };\r\n });\r\n data.unshift({\r\n value: '%',\r\n text: 'All',\r\n });\r\n dropdown.populate(workCodeDropdown, data, workCodeId);\r\n }\r\n function setupFilterEventListeners() {\r\n locationDropdown.addEventListener('change', function () {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpLocationId = selectedOption.value;\r\n tmpLocationName = selectedOption.innerHTML;\r\n });\r\n workCodeDropdown.addEventListener('change', function () {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpWorkCodeId = selectedOption.value;\r\n tmpWorkCodeName = selectedOption.innerHTML;\r\n });\r\n\r\n applyBtn.addEventListener('click', function () {\r\n applyFilter()\r\n POPUP.hide(filterPopup);\r\n });\r\n cancelBtn.addEventListener('click', function () {\r\n POPUP.hide(filterPopup);\r\n });\r\n }\r\n\r\n function applyFilter() {\r\n if (tmpLocationId || tmpWorkCodeId) {\r\n locationId = tmpLocationId;\r\n workCodeId = tmpWorkCodeId;\r\n\r\n if (locationId !== '%' || workCodeId !== '%') {\r\n populateTable(\r\n entriesByDate.filter(e => {\r\n if (tmpLocationId && tmpWorkCodeId) {\r\n wcAbbreviation = workCodeName.split(' ')[0];\r\n if (tmpLocationId === '%') {\r\n return e.WCCode === wcAbbreviation;\r\n } else if (tmpWorkCodeId === '%') {\r\n return e.Location_ID === locationId;\r\n } else {\r\n return e.Location_ID === locationId && e.WCCode === wcAbbreviation;\r\n }\r\n }\r\n if (tmpLocationId && !tmpWorkCodeId) {\r\n return e.Location_ID === locationId;\r\n }\r\n\r\n if (tmpWorkCodeId && !tmpLocationId) {\r\n wcAbbreviation = workCodeName.split(' ')[0];\r\n return e.WCCode === wcAbbreviation;\r\n }\r\n }),\r\n );\r\n } else {\r\n populateTable(entriesByDate);\r\n }\r\n\r\n ACTION_NAV.hide();\r\n mulitSelectBtn.classList.remove('enabled');\r\n mulitSelectBtn.classList.remove('disabled');\r\n selectAllBtn.classList.remove('enabled');\r\n selectAllBtn.classList.remove('disabled');\r\n enableMultiEdit = false;\r\n enableSelectAll = false;\r\n selectedRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n\r\n if (tmpLocationName) locationName = tmpLocationName;\r\n if (tmpWorkCodeName) workCodeName = tmpWorkCodeName;\r\n\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n //reformat startDate and endDate\r\n var splitStartDate = startDate.split('-');\r\n var splitEndDate = endDate.split('-'); \r\n\r\n if (document.getElementById('payPeriodBtn') != null)\r\n document.getElementById('payPeriodBtn').innerHTML = 'Pay Period: ' + UTIL.leadingZero(splitStartDate[1]) + '/' + UTIL.leadingZero(splitStartDate[2],)\r\n + '/' + splitStartDate[0].slice(2, 4) + ' - ' + UTIL.leadingZero(splitEndDate[1]) + '/' + UTIL.leadingZero(splitEndDate[2],)\r\n + '/' + splitEndDate[0].slice(2, 4);\r\n\r\n if (locationName === '%' || locationName === 'All') {\r\n btnWrap.appendChild(locationNameBtnWrap);\r\n btnWrap.removeChild(locationNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(locationNameBtnWrap);\r\n document.getElementById('locationNameBtn').innerHTML = 'Location: ' + locationName;\r\n }\r\n\r\n if (workCodeName === '%' || workCodeName === 'All') {\r\n btnWrap.appendChild(workCodeNameBtnWrap);\r\n btnWrap.removeChild(workCodeNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(workCodeNameBtnWrap);\r\n document.getElementById('workCodeNameBtn').innerHTML = 'Work Code: ' + workCodeName;\r\n }\r\n\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n\r\n //load review page for the selected pay period\r\n refreshPage(payPeriod);\r\n }\r\n function showFilterPopup(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: 'timeEntryReviewFilterPopup',\r\n hideX: true,\r\n });\r\n\r\n // pay period dropdown\r\n payPeriodsDropdown = buildPayPeriodDropdown();\r\n\r\n // location dropdown\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Locations',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n workCodeDropdown = dropdown.build({\r\n dropdownID: 'workCodeDropdown',\r\n label: 'Work Codes',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // Build Popup\r\n if (IsShow == 'ALL' || IsShow == 'payPeriodBtn')\r\n filterPopup.appendChild(payPeriodsDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'locationNameBtn')\r\n filterPopup.appendChild(locationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'workCodeNameBtn')\r\n filterPopup.appendChild(workCodeDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n // populate drodown\r\n populateLocationDropdown();\r\n populateWorkCodeDropdown();\r\n\r\n setupFilterEventListeners();\r\n\r\n POPUP.show(filterPopup);\r\n }\r\n\r\n // Time Entry Details Popup\r\n //------------------------------------\r\n function getDataForTimeEntryEdit(status, entryId) {\r\n $.session.editSingleEntryCardStatus = status;\r\n singleEntryAjax.getSingleEntryById(entryId, results => {\r\n singleEntryAjax.getSingleEntryConsumersPresent(entryId, consumers => {\r\n editTimeEntry.init({\r\n entry: results,\r\n consumers: consumers,\r\n payPeriod,\r\n recordActivityElement: document.getElementById(`${entryId}-seRecordActivity`),\r\n });\r\n });\r\n });\r\n }\r\n function showRowDetails(entryId, entryStatus, isValid, consumersPresent) {\r\n // popup\r\n var popup = POPUP.build({\r\n classNames: 'timeEntryDetailsPopup',\r\n });\r\n // btns\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('buttonWrap');\r\n var editBtn = button.build({\r\n text: 'Edit',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'editEntryBtn',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n getDataForTimeEntryEdit(entryStatus, entryId);\r\n },\r\n });\r\n var submitBtn = button.build({\r\n text: 'Submit',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n var updateObj = {\r\n token: $.session.Token,\r\n singleEntryIdString: entryId,\r\n newStatus: 'S',\r\n };\r\n // var entry = entriesByDate.filter(e => e.Single_Entry_ID === entryId)[0];\r\n if (!isValid) {\r\n showSubmitError(`Unable to submit entry, end time needed.`);\r\n } else {\r\n var warningMessage = `By clicking Yes, you are confirming that you have reviewed this entry and it is correct to the best of your knowledge.`;\r\n showDeleteEntryWarningPopup(warningMessage, () => submitEntry(updateObj));\r\n POPUP.hide(popup);\r\n }\r\n },\r\n });\r\n var deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n var warningMessage = `This entry will be permanently deleted, do you wish to continue?`;\r\n showDeleteEntryWarningPopup(warningMessage, () => deleteEntry(entryId));\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(editBtn);\r\n if (entryStatus === 'P' || entryStatus === 'R') {\r\n btnWrap.appendChild(submitBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n }\r\n // Aditional details\r\n const consumerDisplay = document.createElement('div');\r\n consumerDisplay.id = 'consumerDisplay';\r\n const loadingDisplay = document.createElement('div');\r\n loadingDisplay.id = 'loadingDisplay';\r\n const transportationDisplay = document.createElement('div');\r\n transportationDisplay.id = 'transportationDisplay';\r\n\r\n popup.appendChild(loadingDisplay);\r\n popup.appendChild(consumerDisplay);\r\n popup.appendChild(transportationDisplay);\r\n popup.appendChild(btnWrap);\r\n\r\n POPUP.show(popup);\r\n timeEntryDetailsPopup.init(entryId, consumersPresent);\r\n }\r\n\r\n // Time Entry Review Table\r\n //-----------------------------------\r\n function enableMultiEditRows() {\r\n enableMultiEdit = !enableMultiEdit;\r\n\r\n mulitSelectBtn.classList.toggle('enabled');\r\n\r\n if (enableMultiEdit) {\r\n ACTION_NAV.show();\r\n } else {\r\n ACTION_NAV.hide();\r\n }\r\n\r\n selectedRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n function enableSelectAllRows() {\r\n enableSelectAll = !enableSelectAll;\r\n\r\n selectAllBtn.classList.toggle('enabled');\r\n\r\n if (enableSelectAll) {\r\n ACTION_NAV.show();\r\n enableMultiEdit = true;\r\n mulitSelectBtn.classList.add('disabled');\r\n mulitSelectBtn.classList.remove('enabled');\r\n\r\n selectedRows = [];\r\n\r\n var rows = [].slice.call(document.querySelectorAll('.table__row'));\r\n rows.forEach(r => {\r\n var isValid = r.dataset.valid === 'true' ? true : false;\r\n if (!isValid) return;\r\n\r\n var entryStatus = r.dataset.status;\r\n if (entryStatus === 'P' || entryStatus === 'R') {\r\n r.classList.add('selected');\r\n selectedRows.push(r.id);\r\n }\r\n });\r\n } else {\r\n ACTION_NAV.hide();\r\n enableMultiEdit = false;\r\n mulitSelectBtn.classList.remove('disabled');\r\n\r\n selectedRows = [];\r\n\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n }\r\n // events\r\n function handleReviewTableEvents(event) {\r\n var isRow = event.target.classList.contains('table__row');\r\n var isSelected = event.target.classList.contains('selected');\r\n var entryStatus = event.target.dataset.status;\r\n var isValid = event.target.dataset.valid === 'true' ? true : false;\r\n var entryId = event.target.id;\r\n var consumersPresent = event.target.dataset.consumers;\r\n if (!isRow) return; // if not row return\r\n\r\n if (enableMultiEdit && isValid) {\r\n if (isSelected) {\r\n event.target.classList.remove('selected');\r\n selectedRows = selectedRows.filter(sr => sr !== entryId);\r\n if (enableSelectAll) {\r\n enableSelectAll = false;\r\n mulitSelectBtn.classList.remove('disabled');\r\n mulitSelectBtn.classList.add('enabled');\r\n selectAllBtn.classList.remove('enabled');\r\n }\r\n } else {\r\n if (entryStatus === 'P' || entryStatus === 'R') {\r\n event.target.classList.add('selected');\r\n selectedRows.push(entryId);\r\n }\r\n }\r\n } else if (!enableMultiEdit) {\r\n selectedRows = [];\r\n showRowDetails(entryId, entryStatus, isValid, consumersPresent);\r\n }\r\n }\r\n // populate\r\n async function populateTable(results) {\r\n var workCodes = await timeEntry.getWorkCodes();\r\n\r\n var tableData = results.map(td => {\r\n var entryId = td.Single_Entry_ID;\r\n\r\n var serviceDate = UTIL.abbreviateDateYear(td.Date_of_Service.split(' ')[0]);\r\n var startTime = formatTimeString(td.Start_Time);\r\n var endTime = formatTimeString(td.End_Time === '23:59:59' ? '00:00:00' : td.End_Time);\r\n var hours = td.Check_Hours;\r\n var locationName = td.Location_Name;\r\n var wcCode = td.WCCode;\r\n var status = statusLookup[td.Anywhere_Status];\r\n var abbStatus = td.Anywhere_Status;\r\n var consumersPresent = td.Number_Consumers_Present;\r\n const transportationUnits = td.Transportation_Units;\r\n var comments = td.Comments;\r\n var isValid;\r\n var workCodeData = workCodes.filter(wc => wc.workcodeid === td.Work_Code_ID);\r\n\r\n if (workCodeData[0] && workCodeData[0].keyTimes === 'Y') {\r\n // end time required to be valid\r\n isValid = td.End_Time === '' ? 'false' : 'true';\r\n } else {\r\n isValid = 'true';\r\n }\r\n\r\n //consumer present and transportation icons\r\n const additionalInformation = document.createElement('div');\r\n additionalInformation.classList.add('additionalInfoBox');\r\n additionalInformation.innerHTML = consumersPresent;\r\n if (transportationUnits !== '') additionalInformation.innerHTML += icons.car;\r\n\r\n const iconsBox = document.createElement('div');\r\n iconsBox.classList.add('iconsBox');\r\n iconsBox.appendChild(additionalInformation);\r\n\r\n if (comments !== '' && comments !== null && comments.trim() !== '') {\r\n const commentsBox = document.createElement('div');\r\n commentsBox.classList.add('commentsBox');\r\n commentsBox.innerHTML = icons.note;\r\n iconsBox.appendChild(commentsBox);\r\n }\r\n\r\n return {\r\n id: entryId,\r\n values: [\r\n status,\r\n serviceDate,\r\n startTime,\r\n endTime,\r\n hours,\r\n locationName,\r\n wcCode,\r\n iconsBox.outerHTML,\r\n ],\r\n attributes: [\r\n { key: 'data-status', value: abbStatus },\r\n { key: 'data-valid', value: isValid },\r\n { key: 'data-consumers', value: consumersPresent },\r\n ],\r\n };\r\n });\r\n\r\n table.populate(reviewTable, tableData);\r\n buildSERecordActivity(results);\r\n }\r\n\r\n // Row Additional Information from ticket 71522\r\n function buildSERecordActivity(seData) {\r\n function createElement(status, user, date, seID, rejected) {\r\n const dateVal = date.split(' ')[0];\r\n const timeVal = UTIL.formatTimeString(\r\n UTIL.convertToMilitary(`${date.split(' ')[1]} ${date.split(' ')[2]}`),\r\n );\r\n const element = document.createElement('p');\r\n element.classList.add('seRecordActivity');\r\n element.id = `${seID}-seRecordActivity`;\r\n element.innerText = `${status}: ${dateVal} - ${timeVal} - ${user}`;\r\n // if (rejected) element.classList.add('error'); //add red text to the message for rejected records\r\n // if (rejected) element.style.color = \"red\"; //add red text to the message for rejected records\r\n const tableRow = document.getElementById(seID);\r\n tableRow.appendChild(element);\r\n }\r\n seData.forEach(entry => {\r\n switch (entry.Anywhere_Status) {\r\n case 'A': // Submitted needs approval\r\n createElement(\r\n 'Record Submitted',\r\n entry.submittedUser,\r\n entry.submit_date,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n case 'S': // Submitted (and Approved)\r\n if (entry.approved_time != '') {\r\n createElement(\r\n 'Record Approved',\r\n entry.approvedUser,\r\n entry.approved_time,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n\r\n } else {\r\n createElement(\r\n 'Record Submitted',\r\n entry.submittedUser,\r\n entry.submit_date,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n }\r\n\r\n case 'I': // Imported into Advisor\r\n case 'D': // Duplicate \r\n createElement(\r\n 'Record Approved',\r\n entry.approvedUser,\r\n entry.approved_time,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n case 'R': // Rejected\r\n createElement(\r\n 'Record Rejected',\r\n entry.rejectedUser,\r\n entry.rejected_time,\r\n entry.Single_Entry_ID,\r\n true,\r\n );\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n // build\r\n function buildTopNav() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('actionButtonWrap');\r\n\r\n mulitSelectBtn = button.build({\r\n text: 'Multi Select',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectBtn',\r\n callback: enableMultiEditRows,\r\n });\r\n selectAllBtn = button.build({\r\n text: 'Select All',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'selectAllBtn',\r\n callback: enableSelectAllRows,\r\n });\r\n\r\n btnWrap.appendChild(mulitSelectBtn);\r\n btnWrap.appendChild(selectAllBtn); \r\n\r\n return btnWrap;\r\n }\r\n function buildReportButton() {\r\n var btn = button.build({\r\n text: 'Reports',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n reports.init(payPeriod, false);\r\n },\r\n });\r\n\r\n return btn;\r\n }\r\n function buildTable() {\r\n var tableOptions = {\r\n tableId: 'singleEntryReviewTable',\r\n headline: 'My Time Entries',\r\n columnHeadings: [\r\n 'Status',\r\n 'Date',\r\n 'Start Time',\r\n 'End Time',\r\n 'Hours',\r\n 'Location',\r\n 'Work Code',\r\n '',\r\n ],\r\n callback: handleReviewTableEvents,\r\n };\r\n\r\n return table.build(tableOptions);\r\n }\r\n function buildReviewPage() {\r\n DOM.clearActionCenter();\r\n var topNav = buildTopNav();\r\n var reportBtn = buildReportButton();\r\n var fitleredBy = buildFilteredBy();\r\n reviewTable = buildTable();\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = reviewTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Status\r\n headers[1].setAttribute('data-type', 'date'); // Date\r\n headers[2].setAttribute('data-type', 'date'); // Start Time\r\n headers[3].setAttribute('data-type', 'date'); // End Time \r\n headers[4].setAttribute('data-type', 'number'); // Hours\r\n headers[5].setAttribute('data-type', 'string'); // Location\r\n headers[6].setAttribute('data-type', 'string'); // Work Code \r\n\r\n DOM.ACTIONCENTER.appendChild(topNav);\r\n DOM.ACTIONCENTER.appendChild(reportBtn);\r\n DOM.ACTIONCENTER.appendChild(fitleredBy);\r\n DOM.ACTIONCENTER.appendChild(reviewTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(reviewTable);\r\n\r\n setupActionNav();\r\n }\r\n // load\r\n function loadReviewPage(status) {\r\n roster2.removeMiniRosterBtn();\r\n\r\n $.session.fromEdit = true;\r\n $.session.singleEntrycrossMidnight = false;\r\n\r\n if (!locationId) locationId = '%';\r\n if (!locationName) locationName = 'All';\r\n if (!workCodeId) workCodeId = '%';\r\n if (!workCodeName) workCodeName = 'All';\r\n\r\n buildReviewPage();\r\n singleEntryAjax.getSingleEntryByDate(\r\n {\r\n userId: $.session.UserId,\r\n startDate: payPeriod.start,\r\n endDate: payPeriod.end,\r\n locationId: locationId ? locationId : '%',\r\n workCodeId: workCodeId ? workCodeId : '%',\r\n statusIn: status ? status : '',\r\n },\r\n function (results, error) {\r\n entriesByDate = results;\r\n if (locationId !== '%' || workCodeId !== '%') {\r\n populateTable(\r\n entriesByDate.filter(e => {\r\n if (tmpLocationId && tmpWorkCodeId) {\r\n wcAbbreviation = workCodeName.split(' ')[0];\r\n if (tmpLocationId === '%') {\r\n return e.WCCode === wcAbbreviation;\r\n } else if (tmpWorkCodeId === '%') {\r\n return e.Location_ID === locationId;\r\n } else {\r\n return e.Location_ID === locationId && e.WCCode === wcAbbreviation;\r\n }\r\n }\r\n if (tmpLocationId && !tmpWorkCodeId && tmpLocationId !== '%') {\r\n return e.Location_ID === locationId;\r\n }\r\n if (tmpWorkCodeId && !tmpLocationId && tmpWorkCodeId !== '%') {\r\n wcAbbreviation = workCodeName.split(' ')[0];\r\n return e.WCCode === wcAbbreviation;\r\n }\r\n }),\r\n );\r\n } else {\r\n populateTable(entriesByDate);\r\n }\r\n },\r\n );\r\n }\r\n\r\n // Pay Period Popup - time entry review landing\r\n //--------------------------------------------------\r\n function buildPayPeriodDropdown() {\r\n // build\r\n var select = dropdown.build({\r\n dropdownId: 'payPeriodsDropdown',\r\n label: 'Pay Periods',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n // populate\r\n var dropdownData = payPeriodData.map(pp => {\r\n var dateArray = pp.dateString.split(' - ');\r\n startDate = dateArray[0];\r\n endDate = dateArray[1];\r\n var startDateAbbr = UTIL.abbreviateDateYear(startDate);\r\n var endDateAbbr = UTIL.abbreviateDateYear(endDate);\r\n\r\n return {\r\n value: `${startDate} - ${endDate}`,\r\n text: `${startDateAbbr} - ${endDateAbbr}`,\r\n };\r\n });\r\n dropdown.populate(select, dropdownData, payPeriod.dateString);\r\n // event\r\n select.addEventListener('change', function () {\r\n var dateRange = event.target.value.split(' - ');\r\n var startDateIso = UTIL.formatDateToIso(dateRange[0]);\r\n var endDateIso = UTIL.formatDateToIso(dateRange[1]);\r\n payPeriod = timeEntry.setSelectedPayPeriod(startDateIso, endDateIso, event.target.value);\r\n });\r\n\r\n return select;\r\n }\r\n\r\n //Handle navigation from dashboard widget to module\r\n async function dashHandler(startPeriod, endPeriod, status) {\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n locationData = timeEntry.getLocations();\r\n workCodeData = await timeEntry.getWorkCodes();\r\n let startDateIso = UTIL.formatDateToIso(startPeriod);\r\n let endDateIso = UTIL.formatDateToIso(endPeriod);\r\n\r\n payPeriod = timeEntry.setSelectedPayPeriod(\r\n startDateIso,\r\n endDateIso,\r\n `${startPeriod} - ${endPeriod}`,\r\n );\r\n loadReviewPage(status);\r\n }\r\n async function refreshPage(payperiod) {\r\n setActiveModuleSectionAttribute('timeEntry-review');\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n payPeriod = payperiod ? payperiod : timeEntry.getCurrentPayPeriod(false);\r\n locationData = timeEntry.getLocations();\r\n workCodeData = await timeEntry.getWorkCodes();\r\n\r\n loadReviewPage();\r\n }\r\n async function init() {\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n payPeriod = timeEntry.getCurrentPayPeriod(false);\r\n locationData = timeEntry.getLocations();\r\n workCodeData = await timeEntry.getWorkCodes();\r\n\r\n loadReviewPage();\r\n }\r\n\r\n return {\r\n loadReviewPage,\r\n handleActionNavEvent,\r\n clearAllGlobalVariables,\r\n dashHandler,\r\n refreshPage,\r\n showDeleteEntryWarningPopup,\r\n init,\r\n };\r\n})();\r\n","var timeApproval = (function () {\r\n //-DATA------------------\r\n var locationData;\r\n var payPeriodData;\r\n var payPeriod;\r\n var endDate;\r\n var startDate;\r\n var rejectionReasonText;\r\n // dropdowns\r\n var employees;\r\n var locations;\r\n var supervisors;\r\n // filter data\r\n var payPeriodText;\r\n var supervisorId;\r\n var supervisorName;\r\n var locationId;\r\n var locationName;\r\n var employeeId;\r\n var employeeName;\r\n var status;\r\n var statusText;\r\n\r\n let btnWrap;\r\n let supervisorBtnWrap;\r\n let locationBtnWrap;\r\n let statusBtnWrap;\r\n let employeeBtnWrap;\r\n let workCodeBtnWrap;\r\n let startDateBtnWrap;\r\n let endDateBtnWrap;\r\n\r\n var tmpSupervisorId;\r\n var tmpSupervisorName;\r\n var tmpLocationId;\r\n var tmpLocationName;\r\n var tmpEmployeeId;\r\n var tmpEmployeeName;\r\n var tmpStatus;\r\n var tmpStatusText;\r\n //-DOM------------------\r\n var reviewTable;\r\n var mulitSelectBtn;\r\n var selectAllBtn;\r\n var filterBtn;\r\n var mapBtn;\r\n var filterPopup;\r\n var payPeriodsDropdown;\r\n var supervisorDropdown;\r\n var employeeDropdown;\r\n var locationDropdown;\r\n var statusDropdown;\r\n var applyBtn;\r\n var startDateInput;\r\n var endDateInput\r\n var tmpStartDate;\r\n var tmpEndDate;\r\n // action nav items\r\n var cancelBtn;\r\n var approveNavBtn;\r\n var rejectNavBtn;\r\n var submitNavBtn;\r\n //-WorkCode---------------\r\n var workCodeData;\r\n var workCodeDropdown;\r\n var workCodeId;\r\n var workCodeName;\r\n var tmpWorkCodeId;\r\n var tmpWorkCodeName;\r\n var totalHourDiv\r\n //-OTHER------------------\r\n var statuses = [\r\n { key: 'A', value: 'Awaiting Approval' },\r\n { key: 'P', value: 'Pending' },\r\n { key: 'I', value: 'Imported' },\r\n { key: 'S', value: 'Submitted' },\r\n { key: 'R', value: 'Rejected' },\r\n ];\r\n var statusLookup = {\r\n A: 'Awaiting Approval',\r\n P: 'Pending',\r\n R: 'Rejected',\r\n I: 'Imported',\r\n S: 'Submitted',\r\n D: 'Duplicate',\r\n };\r\n var workCodeLookup = {\r\n A: 'Awake Service',\r\n L: '1:1 Lucas County',\r\n N: 'Non Billable',\r\n O: 'On Behalf Of - Admin',\r\n S: 'Sleep',\r\n T: 'Transportation',\r\n V: 'Vacation',\r\n };\r\n var enableMultiEdit = false;\r\n var enableSelectAll = false;\r\n var selectedRows = []; // array of row ids\r\n var sortedSelectedRows;\r\n var rejectOrApprove;\r\n let totalHours = 0;\r\n //-TABLE DATA------------------\r\n let showMap = false;\r\n // const LSKEY_showMap = \"se_showMap\"\r\n let IsFilterDisable = true;\r\n\r\n function clearAllGlobalVariables() {\r\n selectedRows = [];\r\n\r\n locationData = undefined;\r\n payPeriodData = undefined;\r\n payPeriod = undefined;\r\n endDate = undefined;\r\n startDate = undefined;\r\n\r\n employees = undefined;\r\n locations = undefined;\r\n supervisors = undefined;\r\n\r\n supervisorId = undefined;\r\n locationId = undefined;\r\n employeeId = undefined;\r\n status = undefined;\r\n totalHours = undefined;\r\n\r\n workCodeId = undefined;\r\n workCodeName = undefined;\r\n tmpWorkCodeId = undefined;\r\n tmpWorkCodeName = undefined;\r\n\r\n enableSelectAll = false;\r\n enableMultiEdit = false;\r\n }\r\n function sortSelectedRowsForUpdate() {\r\n sortedSelectedRows = {};\r\n\r\n selectedRows.forEach(sr => {\r\n if (!sortedSelectedRows[sr.status]) {\r\n sortedSelectedRows[sr.status] = [];\r\n }\r\n\r\n sortedSelectedRows[sr.status].push(sr.id);\r\n });\r\n\r\n console.table(sortedSelectedRows);\r\n }\r\n // Approve/Reject/Submit\r\n //------------------------------------\r\n function updateSelectAllStatus(type) {\r\n let updatePromiseArray = [];\r\n const selectedRowKeys = Object.keys(sortedSelectedRows);\r\n let statusUpdateData = {};\r\n switch (type) {\r\n case 'approve':\r\n selectedRowKeys.forEach(key => {\r\n if (key === 'A') {\r\n statusUpdateData = {\r\n token: $.session.Token,\r\n singleEntryIdString:\r\n sortedSelectedRows[key].length > 1\r\n ? sortedSelectedRows[key].join(',')\r\n : sortedSelectedRows[key][0],\r\n newStatus: 'S',\r\n userID: $.session.UserId,\r\n rejectionReason: '',\r\n };\r\n }\r\n });\r\n break;\r\n case 'reject':\r\n selectedRowKeys.forEach(key => {\r\n if (key === 'A') {\r\n statusUpdateData = {\r\n token: $.session.Token,\r\n singleEntryIdString:\r\n sortedSelectedRows[key].length > 1\r\n ? sortedSelectedRows[key].join(',')\r\n : sortedSelectedRows[key][0],\r\n newStatus: 'R',\r\n userID: $.session.UserId,\r\n rejectionReason: rejectionReasonText,\r\n };\r\n }\r\n });\r\n break;\r\n case 'submit':\r\n selectedRowKeys.forEach(key => {\r\n if (key === 'P') {\r\n statusUpdateData = {\r\n token: $.session.Token,\r\n singleEntryIdString:\r\n sortedSelectedRows[key].length > 1\r\n ? sortedSelectedRows[key].join(',')\r\n : sortedSelectedRows[key][0],\r\n newStatus: 'A',\r\n userID: $.session.UserId,\r\n rejectionReason: '',\r\n };\r\n }\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n var updatePromise = new Promise((fulfill, reject) => {\r\n singleEntryAjax.adminUpdateSingleEntryStatus(statusUpdateData, function (results) {\r\n fulfill();\r\n });\r\n });\r\n\r\n updatePromise.then(() => {\r\n successfulSave.show();\r\n selectedRows = [];\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n getReviewTableData(populateTable);\r\n }, 1000);\r\n });\r\n }\r\n\r\n function updateEntryStatus() {\r\n var updatePromiseArray = [];\r\n\r\n var selectedRowKeys = Object.keys(sortedSelectedRows);\r\n selectedRowKeys.forEach(key => {\r\n var statusUpdateData = {\r\n token: $.session.Token,\r\n singleEntryIdString:\r\n sortedSelectedRows[key].length > 1\r\n ? sortedSelectedRows[key].join(',')\r\n : sortedSelectedRows[key][0],\r\n newStatus: '',\r\n userID: $.session.UserId,\r\n rejectionReason: '',\r\n };\r\n\r\n statusUpdateData.newStatus = key === 'P' ? 'A' : '';\r\n if (statusUpdateData.newStatus === '' && rejectOrApprove) {\r\n statusUpdateData.newStatus = rejectOrApprove === 'approve' ? 'S' : 'R';\r\n statusUpdateData.rejectionReason = rejectOrApprove === 'approve' ? '' : rejectionReasonText;\r\n }\r\n\r\n console.table(statusUpdateData);\r\n\r\n var updatePromise = new Promise((fulfill, reject) => {\r\n singleEntryAjax.adminUpdateSingleEntryStatus(statusUpdateData, function (results) {\r\n fulfill();\r\n });\r\n });\r\n\r\n updatePromiseArray.push(updatePromise);\r\n });\r\n\r\n Promise.all(updatePromiseArray).then(() => {\r\n successfulSave.show();\r\n selectedRows = [];\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n getReviewTableData(populateTable);\r\n }, 1000);\r\n });\r\n }\r\n // Status Change Popup\r\n //------------------------------------\r\n function setApproveOrReject(approveOrReject) {\r\n rejectOrApprove = approveOrReject;\r\n }\r\n function buildStatusChangePopupMessage() {\r\n var pCount = sortedSelectedRows['P'] ? sortedSelectedRows['P'].length : 0;\r\n var aCount = sortedSelectedRows['A'] ? sortedSelectedRows['A'].length : 0;\r\n\r\n var messageBody = document.createElement('div');\r\n messageBody.classList.add('timeApprovalWarningPopup__messages');\r\n\r\n if (pCount > 0) {\r\n var pMessageContainer = document.createElement('div');\r\n pMessageContainer.classList.add('timeApprovalWarningPopup__messageContainer');\r\n\r\n var pMessageWrap = document.createElement('div');\r\n pMessageWrap.classList.add('timeApprovalWarningPopup__messageWrap');\r\n var pMessage = document.createElement('p');\r\n pMessage.innerHTML = `You have selected ${pCount} ${pCount === 1 ? `entry` : 'entries'\r\n } with a status of Pending, to be submitted.`;\r\n pMessageWrap.appendChild(pMessage);\r\n\r\n pMessageContainer.appendChild(pMessageWrap);\r\n pMessageContainer.appendChild(pMessageWrap);\r\n\r\n messageBody.appendChild(pMessageContainer);\r\n }\r\n if (aCount > 0) {\r\n var aMessageContainer = document.createElement('div');\r\n aMessageContainer.classList.add('timeApprovalWarningPopup__messageContainer');\r\n\r\n var aMessageWrap = document.createElement('div');\r\n aMessageWrap.classList.add('timeApprovalWarningPopup__messageWrap');\r\n var aMessage = document.createElement('p');\r\n aMessage.innerHTML = `You have selected ${aCount} ${aCount === 1 ? `entry` : 'entries'\r\n } with a status of Awaiting Approval.`;\r\n aMessageWrap.appendChild(aMessage);\r\n\r\n var aMessage2Wrap = document.createElement('div');\r\n aMessage2Wrap.classList.add('timeApprovalWarningPopup__messageWrap', 'messageWithBtns');\r\n var aMessage2 = document.createElement('p');\r\n\r\n aMessage2.innerHTML = `Would you like to Approve or Reject ${aCount === 1 ? `this entry` : 'these entries'\r\n }?`;\r\n var aMessageBtnWrap = document.createElement('div');\r\n aMessageBtnWrap.classList.add('btnWrap');\r\n var approveBtn = button.build({ text: 'Approve' });\r\n var rejectBtn = button.build({ text: 'Reject' });\r\n\r\n approveBtn.addEventListener('click', () => {\r\n approveBtn.classList.add('enabled');\r\n rejectBtn.classList.remove('enabled');\r\n setApproveOrReject('approve');\r\n });\r\n rejectBtn.addEventListener('click', () => {\r\n rejectBtn.classList.add('enabled');\r\n approveBtn.classList.remove('enabled');\r\n setApproveOrReject('reject');\r\n });\r\n\r\n aMessageBtnWrap.appendChild(approveBtn);\r\n aMessageBtnWrap.appendChild(rejectBtn);\r\n aMessage2Wrap.appendChild(aMessage2);\r\n aMessage2Wrap.appendChild(aMessageBtnWrap);\r\n\r\n aMessageContainer.appendChild(aMessageWrap);\r\n aMessageContainer.appendChild(aMessage2Wrap);\r\n\r\n messageBody.appendChild(aMessageContainer);\r\n }\r\n\r\n return messageBody;\r\n }\r\n function showStatusChangePopup() {\r\n var warningPop = POPUP.build({});\r\n warningPop.classList.add('timeApprovalWarningPopup');\r\n\r\n // build message\r\n var message = buildStatusChangePopupMessage();\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n var yesBtn = button.build({\r\n text: 'Proceed',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n updateEntryStatus();\r\n POPUP.hide(warningPop);\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'Cancel',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n POPUP.hide(warningPop);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n warningPop.appendChild(message);\r\n warningPop.appendChild(btnWrap);\r\n\r\n POPUP.show(warningPop);\r\n }\r\n\r\n // Data Getters\r\n //------------------------------------\r\n function getDropdownData(callback) {\r\n singleEntryAjax.getSingleEntrySupervisors($.session.PeopleId, function (results) {\r\n supervisors = results;\r\n\r\n singleEntryAjax.getSubEmployeeListAndCountInfo(\r\n parseInt($.session.PeopleId),\r\n function (results) {\r\n employees = results;\r\n\r\n singleEntryAjax.getAdminSingleEntryLocations(function (results) {\r\n locations = results;\r\n\r\n callback();\r\n });\r\n },\r\n );\r\n });\r\n }\r\n function getReviewTableData(callback) {\r\n var filterData = {\r\n token: $.session.Token,\r\n endDate,\r\n startDate,\r\n supervisorId: supervisorId ? supervisorId : $.session.PeopleId,\r\n locationId: locationId ? locationId : '',\r\n employeeId: employeeId ? employeeId : '',\r\n status: status || status !== '%' ? status : '',\r\n workCodeId: workCodeId ? workCodeId : '',\r\n };\r\n singleEntryAjax.singleEntryFilterAdminList(filterData, function (results) {\r\n reviewTableData = results;\r\n callback(results);\r\n\r\n //clear google map. Don't show it unless they click the show map button.\r\n\r\n // if (showMap) {\r\n // addMap()\r\n // } else GOOGLE_MAP.clearMap()\r\n\r\n GOOGLE_MAP.clearMap();\r\n showMap = false;\r\n });\r\n }\r\n\r\n // Action Nav\r\n //------------------------------------\r\n function actionNavEvent(type) {\r\n ACTION_NAV.hide();\r\n mulitSelectBtn.classList.remove('disabled');\r\n mulitSelectBtn.classList.remove('enabled');\r\n selectAllBtn.classList.remove('enabled');\r\n\r\n enableMultiEdit = false;\r\n enableSelectAll = false;\r\n\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n\r\n if (selectedRows.length > 0) {\r\n if (type === 'reject') {\r\n //open rejection reason popup\r\n var popup = POPUP.build({\r\n header: 'Reject Multiple Time Records',\r\n });\r\n\r\n var dataMessage = document.createElement('p');\r\n dataMessage.style.marginBottom = '2em';\r\n dataMessage.innerHTML = '';\r\n\r\n // Text Input\r\n var rejectionReason = input.build({\r\n label: 'Reason:',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n charLimit: '500',\r\n forceCharLimit: true,\r\n });\r\n var reasonInput = document.createElement('div');\r\n reasonInput.appendChild(rejectionReason);\r\n rejectionReason.addEventListener('change', event => {\r\n rejectionReasonText = event.target.value;\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n //save button\r\n var notifyBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n sortSelectedRowsForUpdate();\r\n setApproveOrReject('reject');\r\n updateSelectAllStatus(type);\r\n\r\n rejectionReasonText = '';\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n //cancel button\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n //display data\r\n popup.appendChild(dataMessage);\r\n popup.appendChild(reasonInput);\r\n\r\n btnWrap.appendChild(notifyBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n //show popup\r\n POPUP.show(popup);\r\n } else {\r\n sortSelectedRowsForUpdate();\r\n updateSelectAllStatus(type);\r\n }\r\n }\r\n }\r\n\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case 'timeApprovalApprove': {\r\n actionNavEvent('approve');\r\n break;\r\n }\r\n case 'timeApprovalSubmit': {\r\n actionNavEvent('submit');\r\n break;\r\n }\r\n case 'timeApprovalReject': {\r\n actionNavEvent('reject');\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n function setupActionNav() {\r\n approveNavBtn = button.build({\r\n text: 'Approve',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-action-nav', value: 'timeApprovalApprove' }],\r\n });\r\n submitNavBtn = button.build({\r\n text: 'Submit',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-action-nav', value: 'timeApprovalSubmit' }],\r\n });\r\n rejectNavBtn = button.build({\r\n text: 'Reject',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-action-nav', value: 'timeApprovalReject' }],\r\n });\r\n ACTION_NAV.populate([approveNavBtn, submitNavBtn, rejectNavBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n\r\n // Filtering\r\n //------------------------------------\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet();\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n if (document.getElementById('startDateBtn') != null) {\r\n document.getElementById('startDateBtn').innerHTML = 'From Date: ' + moment(startDate, 'YYYY-MM-DD').format('M/D/YYYY');\r\n document.getElementById('endDateBtn').innerHTML = 'To Date: ' + moment(endDate, 'YYYY-MM-DD').format('M/D/YYYY');\r\n document.getElementById('supervisorBtn').innerHTML = 'Supervisor: ' + supervisorName;\r\n }\r\n\r\n\r\n if (employeeName === 'All' || employeeName === '') {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n btnWrap.removeChild(employeeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n if (document.getElementById('employeeBtn') != null)\r\n document.getElementById('employeeBtn').innerHTML = 'Employee: ' + employeeName;\r\n }\r\n\r\n if (locationName === 'All' || locationName === '%') {\r\n btnWrap.appendChild(locationBtnWrap);\r\n btnWrap.removeChild(locationBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(locationBtnWrap);\r\n if (document.getElementById('locationBtn') != null)\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + locationName;\r\n }\r\n\r\n if (statusText === 'All' || statusText === '%') {\r\n btnWrap.appendChild(statusBtnWrap);\r\n btnWrap.removeChild(statusBtnWrap);\r\n } else {\r\n btnWrap.appendChild(statusBtnWrap);\r\n if (document.getElementById('statusBtn') != null)\r\n document.getElementById('statusBtn').innerHTML = 'Status: ' + statusText;\r\n }\r\n\r\n\r\n if (workCodeName === 'All' || workCodeName === '%') {\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n btnWrap.removeChild(workCodeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n if (document.getElementById('workCodeBtn') != null)\r\n document.getElementById('workCodeBtn').innerHTML = 'Work Code: ' + workCodeName;\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { showFilterPopup('ALL') },\r\n });\r\n\r\n supervisorBtn = button.build({\r\n id: 'supervisorBtn',\r\n text: 'Supervisor: ' + supervisorName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('supervisorBtn') },\r\n });\r\n\r\n locationBtn = button.build({\r\n id: 'locationBtn',\r\n text: 'Location: ' + locationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('locationBtn') },\r\n });\r\n locationCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('locationBtn') },\r\n });\r\n\r\n statusBtn = button.build({\r\n id: 'statusBtn',\r\n text: 'Consumer: ' + statusText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('statusBtn') },\r\n });\r\n statusCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('statusBtn') },\r\n });\r\n\r\n employeeBtn = button.build({\r\n id: 'employeeBtn',\r\n text: 'Employee: ' + employeeName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('employeeBtn') },\r\n });\r\n employeeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('employeeBtn') },\r\n });\r\n\r\n workCodeBtn = button.build({\r\n id: 'workCodeBtn',\r\n text: 'Work Code: ' + workCodeName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('workCodeBtn') },\r\n });\r\n workCodeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('workCodeBtn') },\r\n });\r\n\r\n startDateBtn = button.build({\r\n id: 'startDateBtn',\r\n text: 'From Date: ' + UTIL.formatDateFromIso(startDate),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('startDateBtn') },\r\n });\r\n\r\n endDateBtn = button.build({\r\n id: 'endDateBtn',\r\n text: 'To Date: ' + UTIL.formatDateFromIso(endDate),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('endDateBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n startDateBtnWrap = document.createElement('div');\r\n startDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n startDateBtnWrap.appendChild(startDateBtn);\r\n btnWrap.appendChild(startDateBtnWrap);\r\n\r\n endDateBtnWrap = document.createElement('div');\r\n endDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n endDateBtnWrap.appendChild(endDateBtn);\r\n btnWrap.appendChild(endDateBtnWrap);\r\n\r\n supervisorBtnWrap = document.createElement('div');\r\n supervisorBtnWrap.classList.add('filterSelectionBtnWrap');\r\n supervisorBtnWrap.appendChild(supervisorBtn);\r\n btnWrap.appendChild(supervisorBtnWrap);\r\n\r\n locationBtnWrap = document.createElement('div');\r\n locationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationBtnWrap.appendChild(locationBtn);\r\n locationBtnWrap.appendChild(locationCloseBtn);\r\n btnWrap.appendChild(locationBtnWrap);\r\n\r\n statusBtnWrap = document.createElement('div');\r\n statusBtnWrap.classList.add('filterSelectionBtnWrap');\r\n statusBtnWrap.appendChild(statusBtn);\r\n statusBtnWrap.appendChild(statusCloseBtn);\r\n btnWrap.appendChild(statusBtnWrap);\r\n\r\n employeeBtnWrap = document.createElement('div');\r\n employeeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n employeeBtnWrap.appendChild(employeeBtn);\r\n employeeBtnWrap.appendChild(employeeCloseBtn);\r\n btnWrap.appendChild(employeeBtnWrap);\r\n\r\n workCodeBtnWrap = document.createElement('div');\r\n workCodeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n workCodeBtnWrap.appendChild(workCodeBtn);\r\n workCodeBtnWrap.appendChild(workCodeCloseBtn);\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'locationBtn') {\r\n locationName = 'All';\r\n locationId = '%';\r\n tmpLocationId = '%';\r\n tmpLocationName = 'All';\r\n }\r\n if (closeFilter == 'statusBtn') {\r\n statusText = 'All';\r\n status = '%';\r\n tmpStatus = '%';\r\n tmpStatusText = 'All';\r\n }\r\n if (closeFilter == 'employeeBtn') {\r\n employeeId = '';\r\n employeeName = 'All';\r\n tmpEmployeeId = '';\r\n tmpEmployeeName = 'All';\r\n }\r\n if (closeFilter == 'workCodeBtn') {\r\n workCodeId = '%';\r\n workCodeName = 'All';\r\n tmpWorkCodeId = '%';\r\n tmpWorkCodeName = 'All';\r\n }\r\n filterApply();\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tmpSupervisorId) supervisorId = data.tmpSupervisorId;\r\n if (data.tmpSupervisorName) supervisorName = data.tmpSupervisorName;\r\n if (data.tmpLocationId) locationId = data.tmpLocationId;\r\n if (data.tmpLocationName) locationName = data.tmpLocationName;\r\n if (data.tmpEmployeeId || data.tmpEmployeeId === '') employeeId = data.tmpEmployeeId;\r\n if (data.tmpEmployeeName) employeeName = data.tmpEmployeeName;\r\n if (data.tmpStatus) status = data.tmpStatus;\r\n if (data.tmpStatusText) statusText = data.tmpStatusText;\r\n if (data.tmpWorkCodeId || data.tmpWorkCodeId === '') workCodeId = data.tmpWorkCodeId;\r\n if (data.tmpWorkCodeName) workCodeName = data.tmpWorkCodeName;\r\n if (data.tmpStartDate) startDate = data.tmpStartDate;\r\n if (data.tmpEndDate) endDate = data.tmpEndDate;\r\n if (data.tmpStartDate) payPeriod.start = data.tmpStartDate;\r\n if (data.tmpEndDate) payPeriod.end = data.tmpEndDate;\r\n\r\n }\r\n function buildSupervisorDropdown() {\r\n var select = dropdown.build({\r\n label: 'Supervisor',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n var data = supervisors.map(sup => {\r\n return {\r\n value: sup.Person_ID,\r\n text: `${sup.last_name}, ${sup.first_name}`,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n var aNameSplit = a.text.split(',');\r\n var bNameSplit = b.text.split(',');\r\n var aName = `${aNameSplit[0].trim()}${aNameSplit[1].trim()}`.toLowerCase();\r\n var bName = `${bNameSplit[0].trim()}${bNameSplit[1].trim()}`.toLowerCase();\r\n\r\n return aName > bName ? 1 : -1;\r\n });\r\n\r\n dropdown.populate(select, data, supervisorId);\r\n\r\n return select;\r\n }\r\n function buildEmployeeDropdown() {\r\n var select = dropdown.build({\r\n dropdownId: 'subEmployeeList',\r\n label: 'Employee',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n var data = employees.map(emp => {\r\n return {\r\n value: emp.Person_ID,\r\n text: `${emp.last_name}, ${emp.first_name}`,\r\n };\r\n });\r\n data.sort((a, b) => {\r\n var aNameSplit = a.text.split(',');\r\n var bNameSplit = b.text.split(',');\r\n var aName = `${aNameSplit[0].trim()}${aNameSplit[1].trim()}`.toLowerCase();\r\n var bName = `${bNameSplit[0].trim()}${bNameSplit[1].trim()}`.toLowerCase();\r\n\r\n return aName > bName ? 1 : -1;\r\n });\r\n data.unshift({\r\n value: '',\r\n text: 'All',\r\n });\r\n\r\n dropdown.populate(select, data, employeeId);\r\n\r\n return select;\r\n }\r\n function repopulateEmployeeDropdown() {\r\n var data = employees.map(emp => {\r\n return {\r\n value: emp.Person_ID,\r\n text: `${emp.last_name}, ${emp.first_name}`,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n var aNameSplit = a.text.split(',');\r\n var bNameSplit = b.text.split(',');\r\n var aName = `${aNameSplit[0].trim()}${aNameSplit[1].trim()}`.toLowerCase();\r\n var bName = `${bNameSplit[0].trim()}${bNameSplit[1].trim()}`.toLowerCase();\r\n\r\n return aName > bName ? 1 : -1;\r\n });\r\n\r\n data.unshift({\r\n value: '',\r\n text: 'All',\r\n });\r\n\r\n dropdown.populate('subEmployeeList', data, employeeId);\r\n }\r\n function buildLocationDropdown() {\r\n var select = dropdown.build({\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n var data = locations.map(loc => {\r\n return {\r\n value: loc.locationID,\r\n text: loc.shortDescription,\r\n };\r\n });\r\n data.sort((a, b) => (a.text > b.text ? 1 : -1));\r\n data.unshift({\r\n value: '%',\r\n text: 'All',\r\n });\r\n\r\n var defaultVal;\r\n\r\n if (locationId) defaultVal = locationId;\r\n\r\n dropdown.populate(select, data, locationId);\r\n\r\n return select;\r\n }\r\n function buildStatusDropdown() {\r\n var select = dropdown.build({\r\n label: 'Status',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n var data = statuses.map(status => {\r\n return {\r\n value: status.key,\r\n text: status.value,\r\n };\r\n });\r\n\r\n data.unshift({\r\n value: '%',\r\n text: 'All',\r\n });\r\n\r\n dropdown.populate(select, data, status);\r\n\r\n return select;\r\n }\r\n function buildWorkCodeDropdown() {\r\n var select = dropdown.build({\r\n label: 'Work Codes',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n var data = workCodeData.map(wc => {\r\n return {\r\n value: wc.workcodeid,\r\n text: wc.workcodename,\r\n };\r\n });\r\n\r\n data.unshift({\r\n value: '%',\r\n text: 'All',\r\n });\r\n\r\n dropdown.populate(select, data, workCodeId);\r\n\r\n return select;\r\n }\r\n function setupFilterEvents() {\r\n tmpSupervisorId;\r\n tmpSupervisorName;\r\n tmpLocationId;\r\n tmpLocationName;\r\n tmpEmployeeId;\r\n tmpEmployeeName;\r\n tmpStatus;\r\n tmpStatusText;\r\n tmpStartDate;\r\n tmpEndDate;\r\n\r\n supervisorDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpSupervisorId = selectedOption.value;\r\n tmpSupervisorName = selectedOption.innerHTML;\r\n singleEntryAjax.getSubEmployeeListAndCountInfo(tmpSupervisorId, function (results) {\r\n employees = results;\r\n repopulateEmployeeDropdown();\r\n });\r\n });\r\n employeeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpEmployeeId = selectedOption.value;\r\n tmpEmployeeName = selectedOption.innerHTML;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpLocationId = selectedOption.value;\r\n tmpLocationName = selectedOption.innerHTML;\r\n });\r\n statusDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpStatus = selectedOption.value;\r\n tmpStatusText = selectedOption.innerHTML;\r\n });\r\n workCodeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpWorkCodeId = selectedOption.value;\r\n tmpWorkCodeName = selectedOption.innerHTML;\r\n });\r\n startDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n tmpStartDate = event.target.value;\r\n payPeriod.start = event.target.value;\r\n checkDateValidation();\r\n } else {\r\n event.target.value = tmpStartDate;\r\n }\r\n });\r\n endDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n tmpEndDate = event.target.value;\r\n payPeriod.end = event.target.value;\r\n checkDateValidation();\r\n } else {\r\n event.target.value = tmpEndDate;\r\n }\r\n });\r\n\r\n applyBtn.addEventListener('click', () => {\r\n\r\n if (IsFilterDisable) {\r\n POPUP.hide(filterPopup);\r\n\r\n // if (tmpEmployeeId !== \"\") {\r\n // showMap = true\r\n // } else showMap = false\r\n filterApply();\r\n }\r\n IsFilterDisable = true;\r\n });\r\n\r\n applyBtn.addEventListener('keypress', event => {\r\n if (event.keyCode === 13 && applyBtn.classList.contains('disabled')) {\r\n IsFilterDisable = false;\r\n }\r\n });\r\n\r\n cancelBtn.addEventListener('click', () => {\r\n POPUP.hide(filterPopup);\r\n tmpStartDate = startDate;\r\n tmpEndDate = endDate;\r\n });\r\n }\r\n\r\n function filterApply() {\r\n if (tmpWorkCodeId) workCodeId = tmpWorkCodeId;\r\n if (tmpWorkCodeName) workCodeName = tmpWorkCodeName;\r\n\r\n updateFilterData({\r\n tmpSupervisorId,\r\n tmpSupervisorName,\r\n tmpLocationId,\r\n tmpLocationName,\r\n tmpEmployeeId,\r\n tmpEmployeeName,\r\n tmpStatus,\r\n tmpStatusText,\r\n tmpWorkCodeId,\r\n tmpWorkCodeName,\r\n tmpStartDate,\r\n tmpEndDate\r\n });\r\n\r\n document.getElementById('startDateBtn').innerHTML = 'From Date: ' + moment(startDate, 'YYYY-MM-DD').format('M/D/YYYY');\r\n document.getElementById('endDateBtn').innerHTML = 'To Date: ' + moment(endDate, 'YYYY-MM-DD').format('M/D/YYYY');\r\n document.getElementById('supervisorBtn').innerHTML = 'Supervisor: ' + supervisorName;\r\n\r\n if (employeeName === 'All' || employeeName === '') {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n btnWrap.removeChild(employeeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n document.getElementById('employeeBtn').innerHTML = 'Employee: ' + employeeName;\r\n }\r\n\r\n if (locationName === 'All' || locationName === '%') {\r\n btnWrap.appendChild(locationBtnWrap);\r\n btnWrap.removeChild(locationBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(locationBtnWrap);\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + locationName;\r\n }\r\n\r\n if (statusText === 'All' || statusText === '%') {\r\n btnWrap.appendChild(statusBtnWrap);\r\n btnWrap.removeChild(statusBtnWrap);\r\n } else {\r\n btnWrap.appendChild(statusBtnWrap);\r\n document.getElementById('statusBtn').innerHTML = 'Status: ' + statusText;\r\n }\r\n\r\n\r\n if (workCodeName === 'All' || workCodeName === '%') {\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n btnWrap.removeChild(workCodeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n document.getElementById('workCodeBtn').innerHTML = 'Work Code: ' + workCodeName;\r\n }\r\n\r\n mulitSelectBtn.classList.remove('disabled');\r\n mulitSelectBtn.classList.remove('enabled');\r\n selectAllBtn.classList.remove('enabled');\r\n\r\n enableMultiEdit = false;\r\n enableSelectAll = false;\r\n\r\n selectedRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n\r\n getDropdownData(function () {\r\n loadReviewPage();\r\n });\r\n\r\n }\r\n function showFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({ hideX: true });\r\n\r\n supervisorDropdown = buildSupervisorDropdown();\r\n employeeDropdown = buildEmployeeDropdown();\r\n locationDropdown = buildLocationDropdown();\r\n statusDropdown = buildStatusDropdown();\r\n workCodeDropdown = buildWorkCodeDropdown();\r\n\r\n startDateInput = input.build({\r\n id: 'startDateInput',\r\n label: 'From',\r\n type: 'date',\r\n style: 'secondary',\r\n value: startDate,\r\n });\r\n endDateInput = input.build({\r\n id: 'endDateInput',\r\n label: 'To',\r\n type: 'date',\r\n style: 'secondary',\r\n value: endDate,\r\n });\r\n\r\n applyBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n const dateWrap = document.createElement('div');\r\n dateWrap.classList.add('dateWrap', 'btnWrap');\r\n if (IsShow == 'ALL' || IsShow == 'startDateBtn')\r\n dateWrap.appendChild(startDateInput);\r\n if (IsShow == 'ALL' || IsShow == 'endDateBtn')\r\n dateWrap.appendChild(endDateInput);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'supervisorBtn')\r\n filterPopup.appendChild(supervisorDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'employeeBtn')\r\n filterPopup.appendChild(employeeDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'locationBtn')\r\n filterPopup.appendChild(locationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'statusBtn')\r\n filterPopup.appendChild(statusDropdown);\r\n filterPopup.appendChild(dateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'workCodeBtn')\r\n filterPopup.appendChild(workCodeDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n setupFilterEvents();\r\n\r\n singleEntryAjax.getSubEmployeeListAndCountInfo(supervisorId, function (results) {\r\n employees = results;\r\n repopulateEmployeeDropdown();\r\n });\r\n\r\n checkDateValidation();\r\n POPUP.show(filterPopup);\r\n }\r\n\r\n\r\n function checkDateValidation() {\r\n if (tmpStartDate > tmpEndDate) {\r\n endDateInput.classList.add('error');\r\n } else {\r\n endDateInput.classList.remove('error');\r\n }\r\n setBtnStatusOfApplyFilter();\r\n }\r\n\r\n function setBtnStatusOfApplyFilter() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n applyBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n applyBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n // Time Entry Details Popup\r\n //------------------------------------\r\n function getDataForTimeEntryEdit(status, entryId, isOrginUser) {\r\n $.session.editSingleEntryCardStatus = status;\r\n singleEntryAjax.getSingleEntryById(entryId, results => {\r\n singleEntryAjax.getSingleEntryConsumersPresent(entryId, consumers => {\r\n editTimeEntry.init({\r\n isOrginUser,\r\n entry: results,\r\n consumers: consumers,\r\n isAdminEdit: true,\r\n payPeriod,\r\n recordActivityElement: document.getElementById(`${entryId}-seRecordActivity`),\r\n });\r\n });\r\n });\r\n }\r\n function showRowDetails(\r\n entryId,\r\n entryStatus,\r\n consumersPresent,\r\n isValid,\r\n rowName,\r\n rowDate,\r\n rowStartTime,\r\n rowEndTime,\r\n rowWorkCode,\r\n isOrginUser,\r\n ) {\r\n selectedRows = [];\r\n selectedRows.push({ id: entryId, status: entryStatus });\r\n sortSelectedRowsForUpdate();\r\n // popup\r\n var popup = POPUP.build({\r\n classNames: 'timeEntryDetailsPopup',\r\n });\r\n // btns\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('buttonWrap');\r\n var editBtn = button.build({\r\n text: 'Edit',\r\n style: 'secondary',\r\n type: 'contained',\r\n //icon: 'edit',\r\n classNames: 'editEntryBtn',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n getDataForTimeEntryEdit(entryStatus, entryId, isOrginUser);\r\n },\r\n });\r\n var approveBtn = button.build({\r\n text: 'Approve',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n if (!isValid) {\r\n showSubmitError(`Unable to approve entry, end time needed.`);\r\n } else {\r\n setApproveOrReject('approve');\r\n updateEntryStatus();\r\n }\r\n },\r\n });\r\n var submitBtn = button.build({\r\n text: 'Submit',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n if (!isValid) {\r\n showSubmitError(`Unable to submit entry, end time needed.`);\r\n } else {\r\n setApproveOrReject('');\r\n updateEntryStatus();\r\n }\r\n },\r\n });\r\n var rejectBtn = button.build({\r\n text: 'Reject',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n function showRejectionPopup() {\r\n //popup\r\n var popup = POPUP.build({\r\n header: 'Reject Time Entry - ' + rowName,\r\n });\r\n\r\n //put together work code description\r\n var workCode = workCodeLookup[rowWorkCode];\r\n if (workCode != '') {\r\n var workCodeText = rowWorkCode + ' - ' + workCode;\r\n } else {\r\n var workCodeText = rowWorkCode;\r\n }\r\n\r\n //format consumer data before displaying\r\n var dataMessage = document.createElement('p');\r\n dataMessage.style.marginBottom = '2em';\r\n dataMessage.innerHTML =\r\n 'Date: ' +\r\n rowDate +\r\n '
    ' +\r\n 'Start Time: ' +\r\n rowStartTime +\r\n '
    ' +\r\n 'End Time: ' +\r\n rowEndTime +\r\n '
    ' +\r\n 'Work Code: ' +\r\n workCodeText;\r\n\r\n // Text Input\r\n var rejectionReason = input.build({\r\n label: 'Reason:',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n charLimit: '500',\r\n forceCharLimit: true,\r\n });\r\n var reasonInput = document.createElement('div');\r\n reasonInput.appendChild(rejectionReason);\r\n rejectionReason.addEventListener('change', event => {\r\n rejectionReasonText = event.target.value;\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n //save button\r\n var notifyBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n //Update Work Code and the Rejection Reason\r\n setApproveOrReject('reject');\r\n updateEntryStatus();\r\n rejectionReasonText = '';\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n //cancel button\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n //display data\r\n popup.appendChild(dataMessage);\r\n popup.appendChild(reasonInput);\r\n\r\n btnWrap.appendChild(notifyBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n //show popup\r\n POPUP.show(popup);\r\n }\r\n showRejectionPopup();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(editBtn);\r\n if (entryStatus === 'P') {\r\n btnWrap.appendChild(submitBtn);\r\n }\r\n if (entryStatus === 'A') {\r\n btnWrap.appendChild(approveBtn);\r\n btnWrap.appendChild(rejectBtn);\r\n }\r\n // Aditional details\r\n const consumerDisplay = document.createElement('div');\r\n consumerDisplay.id = 'consumerDisplay';\r\n const loadingDisplay = document.createElement('div');\r\n loadingDisplay.id = 'loadingDisplay';\r\n const transportationDisplay = document.createElement('div');\r\n transportationDisplay.id = 'transportationDisplay';\r\n\r\n popup.appendChild(loadingDisplay);\r\n popup.appendChild(consumerDisplay);\r\n popup.appendChild(transportationDisplay);\r\n popup.appendChild(btnWrap);\r\n\r\n POPUP.show(popup);\r\n timeEntryDetailsPopup.init(entryId, consumersPresent);\r\n }\r\n\r\n // Admin Review Table\r\n //------------------------------------\r\n function enableMultiEditRows() {\r\n enableMultiEdit = !enableMultiEdit;\r\n\r\n mulitSelectBtn.classList.toggle('enabled');\r\n\r\n if (enableMultiEdit) {\r\n ACTION_NAV.show();\r\n } else {\r\n ACTION_NAV.hide();\r\n }\r\n\r\n selectedRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n function enableSelectAllRows() {\r\n enableSelectAll = !enableSelectAll;\r\n\r\n selectAllBtn.classList.toggle('enabled');\r\n\r\n if (enableSelectAll) {\r\n ACTION_NAV.show();\r\n enableMultiEdit = true;\r\n mulitSelectBtn.classList.add('disabled');\r\n mulitSelectBtn.classList.remove('enabled');\r\n\r\n selectedRows = [];\r\n\r\n var rows = [].slice.call(document.querySelectorAll('.table__row'));\r\n rows.forEach(r => {\r\n var isValid = r.dataset.valid === 'true' ? true : false;\r\n if (!isValid) return;\r\n\r\n var entryStatus = r.dataset.status;\r\n var entryId = r.id;\r\n\r\n if (entryStatus === 'P' || entryStatus === 'A') {\r\n r.classList.add('selected');\r\n selectedRows.push({ id: entryId, status: entryStatus });\r\n }\r\n });\r\n } else {\r\n ACTION_NAV.hide();\r\n enableMultiEdit = false;\r\n mulitSelectBtn.classList.remove('disabled');\r\n\r\n selectedRows = [];\r\n\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n }\r\n // events\r\n function handleReviewTableEvents(event) {\r\n var isRow = event.target.classList.contains('table__row');\r\n var isSelected = event.target.classList.contains('selected');\r\n var entryStatus = event.target.dataset.status;\r\n var entryId = event.target.id;\r\n if (event.target.childNodes.length == 1) return; //\r\n\r\n //capture rowName, rowDate, rowStartTime, rowEndTime, rowWorkCode\r\n var rowName = event.target.childNodes[1].innerText;\r\n var rowDate = event.target.childNodes[2].innerText;\r\n var rowStartTime = event.target.childNodes[3].innerText;\r\n var rowEndTime = event.target.childNodes[4].innerText;\r\n var rowWorkCode = event.target.childNodes[7].innerText;\r\n\r\n var consumersPresent = event.target.dataset.consumers;\r\n var isValid = event.target.dataset.valid === 'true' ? true : false;\r\n var isOrginUser = event.target.dataset.valid === 'Y' ? true : false;\r\n if (!isRow) return; // if not row return\r\n\r\n if (enableMultiEdit && isValid) {\r\n if (isSelected) {\r\n // if alread selected, de-select it\r\n event.target.classList.remove('selected');\r\n selectedRows = selectedRows.filter(sr => sr.id !== entryId);\r\n if (enableSelectAll) {\r\n enableSelectAll = false;\r\n mulitSelectBtn.classList.remove('disabled');\r\n mulitSelectBtn.classList.add('enabled');\r\n selectAllBtn.classList.remove('enabled');\r\n }\r\n } else {\r\n if (entryStatus === 'P' || entryStatus === 'A') {\r\n event.target.classList.add('selected');\r\n selectedRows.push({ id: entryId, status: entryStatus });\r\n }\r\n }\r\n } else if (!enableMultiEdit) {\r\n selectedRows = [];\r\n showRowDetails(\r\n entryId,\r\n entryStatus,\r\n consumersPresent,\r\n isValid,\r\n rowName,\r\n rowDate,\r\n rowStartTime,\r\n rowEndTime,\r\n rowWorkCode,\r\n isOrginUser,\r\n );\r\n }\r\n }\r\n // populate\r\n function populateTable(results) {\r\n totalHours = 0;\r\n var tableData = results.map(entry => {\r\n var isOrginUser = $.session.PeopleId === entry.peopleId ? 'Y' : 'N';\r\n\r\n var entryId = entry.Single_Entry_ID;\r\n var status = statusLookup[entry.Anywhere_status];\r\n var employee = `${entry.lastname}, ${entry.firstname}`;\r\n var date = entry.Date_of_Service.split(' ')[0];\r\n var start = UTIL.convertFromMilitary(entry.start_time);\r\n var end = UTIL.convertFromMilitary(\r\n entry.end_time === '23:59:59' ? '00:00:00' : entry.end_time,\r\n );\r\n var hours = parseFloat(entry.check_hours);\r\n var location = entry.Location_Name;\r\n var workcode = entry.WCCode;\r\n var comments = entry.comments;\r\n const consumersPresent = entry.Number_Consumers_Present;\r\n const transportationUnits = entry.transportation_units;\r\n let isValid;\r\n\r\n totalHours += hours;\r\n if (entry.keyTimes === 'Y') {\r\n // end time required to be valid\r\n isValid = entry.end_time === '' ? 'false' : 'true';\r\n } else {\r\n isValid = 'true';\r\n }\r\n\r\n //consumer present and transportation icons\r\n const additionalInformation = document.createElement('div');\r\n additionalInformation.classList.add('additionalInfoBox');\r\n additionalInformation.innerHTML = consumersPresent;\r\n if (transportationUnits !== '') additionalInformation.innerHTML += icons.car;\r\n\r\n const iconsBox = document.createElement('div');\r\n iconsBox.classList.add('iconsBox');\r\n iconsBox.appendChild(additionalInformation);\r\n\r\n if (comments !== \"\" && comments !== null) {\r\n const commentsBox = document.createElement('div');\r\n commentsBox.classList.add('commentsBox');\r\n commentsBox.innerHTML = icons.note;\r\n iconsBox.appendChild(commentsBox);\r\n\r\n if (isValid === 'false') {\r\n const svgElement = commentsBox.querySelector('svg');\r\n svgElement.style.color = 'white';\r\n }\r\n }\r\n\r\n return {\r\n id: entryId,\r\n values: [\r\n status,\r\n employee,\r\n date,\r\n start,\r\n end,\r\n hours,\r\n location,\r\n workcode,\r\n iconsBox.outerHTML\r\n ],\r\n attributes: [\r\n { key: 'data-status', value: entry.Anywhere_status },\r\n { key: 'data-consumers', value: consumersPresent },\r\n { key: 'data-valid', value: isValid },\r\n { key: 'data-origUser', value: isOrginUser },\r\n ],\r\n };\r\n });\r\n\r\n table.populate(reviewTable, tableData);\r\n totalHours = totalHours.toFixed(2);\r\n buildHoursWorked(totalHours);\r\n buildSERecordActivity(results);\r\n }\r\n // BUILD ==============\r\n // == Build Hours Worked ==\r\n function buildHoursWorked(hours) {\r\n if (Array.from(document.querySelectorAll('.table__row')).length === 1) return; // 1st row is the headers. If there is only the first row, there are no records\r\n totalHourDiv.innerHTML = `
    Total Hours: ${hours}
    `;\r\n }\r\n\r\n // Row Additional Information from ticket 66490 Submitted/Rejected/Approved User and Date\r\n function buildSERecordActivity(seData) {\r\n function createElement(status, user, date, seID, rejected) {\r\n const dateVal = date.split(' ')[0];\r\n const timeVal = UTIL.formatTimeString(\r\n UTIL.convertToMilitary(`${date.split(' ')[1]} ${date.split(' ')[2]}`),\r\n );\r\n const element = document.createElement('p');\r\n element.classList.add('seRecordActivity');\r\n element.id = `${seID}-seRecordActivity`;\r\n element.innerText = `${status}: ${dateVal} - ${timeVal} - ${user}`;\r\n // if (rejected) element.classList.add('rejected'); //add red text to the message for rejected records\r\n const tableRow = document.getElementById(seID);\r\n tableRow.appendChild(element);\r\n }\r\n seData.forEach(entry => {\r\n switch (entry.Anywhere_status) {\r\n case 'A': // Submitted needs approval\r\n createElement(\r\n 'Record Submitted',\r\n entry.submittedUser,\r\n entry.submit_date,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n case 'S': // Submitted (and Approved)\r\n if (entry.approved_time != '') {\r\n createElement(\r\n 'Record Approved',\r\n entry.approvedUser,\r\n entry.approved_time,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n\r\n } else {\r\n createElement(\r\n 'Record Submitted',\r\n entry.submittedUser,\r\n entry.submit_date,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n }\r\n\r\n case 'I': // Imported into Advisor\r\n case 'D': // Duplicate \r\n createElement(\r\n 'Record Submitted',\r\n entry.submittedUser,\r\n entry.submit_date,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n case 'R': // Rejected\r\n createElement(\r\n 'Record Rejected',\r\n entry.rejectedUser,\r\n entry.rejected_time,\r\n entry.Single_Entry_ID,\r\n true,\r\n );\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n function buildTopNav() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('actionButtonWrap');\r\n\r\n mulitSelectBtn = button.build({\r\n text: 'Multi Select',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectBtn',\r\n callback: enableMultiEditRows,\r\n });\r\n selectAllBtn = button.build({\r\n text: 'Select All',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'selectAllBtn',\r\n callback: enableSelectAllRows,\r\n });\r\n\r\n btnWrap.appendChild(mulitSelectBtn);\r\n btnWrap.appendChild(selectAllBtn);\r\n\r\n return btnWrap;\r\n }\r\n\r\n function buildReportButton() {\r\n var btn = button.build({\r\n text: 'Reports',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n var filterData = {\r\n token: $.session.Token,\r\n endDate,\r\n startDate,\r\n supervisorId: supervisorId ? supervisorId : $.session.PeopleId,\r\n locationId: locationId ? locationId : '%',\r\n employeeId: employeeId ? employeeId : '%',\r\n status: status || status !== '%' ? status : '%',\r\n workCodeId: workCodeId ? workCodeId : '%',\r\n };\r\n reports.init(payPeriod, true, filterData);\r\n },\r\n });\r\n\r\n return btn;\r\n }\r\n function buildTable() {\r\n var tableOptions = {\r\n tableId: 'singleEntryAdminReviewTable',\r\n headline: 'Time Entries',\r\n columnHeadings: [\r\n 'Status',\r\n 'Employee',\r\n 'Date',\r\n 'Start Time',\r\n 'End Time',\r\n 'Hours',\r\n 'Location',\r\n 'Work Code',\r\n '',\r\n ],\r\n callback: e => {\r\n handleReviewTableEvents(e);\r\n },\r\n };\r\n\r\n return table.build(tableOptions);\r\n }\r\n function buildReviewPage() {\r\n mapBtn = button.build({\r\n text: showMap ? ' Hide Map' : ' Show Map',\r\n style: 'secodary',\r\n type: 'text',\r\n classNames: 'mapBtn',\r\n callback: function () {\r\n if (!showMap) addMap();\r\n showMap = true;\r\n //See comment in init func regarding the removal of local storage setting for Map.\r\n //Button will only be show map. once clicked they can't hide it. This is to prevent people from\r\n //showing and hiding rapidly and incuring high api usage.\r\n\r\n //UTIL.LS.setStorage(LSKEY_showMap, showMap)\r\n //if (showMap) {\r\n // mapBtn.innerHTML = icons.close + ' Hide Map'\r\n // addMap()\r\n //} else {\r\n // mapBtn.innerHTML = icons.show + ' Show Map'\r\n // GOOGLE_MAP.clearMap()\r\n //}\r\n },\r\n });\r\n mapBtn.innerHTML = icons.show + ' Show Map';\r\n\r\n DOM.clearActionCenter();\r\n var topNav = buildTopNav();\r\n var reportBtn = buildReportButton();\r\n var fitleredBy = buildFilteredBy();\r\n reviewTable = buildTable();\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = reviewTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Status\r\n headers[1].setAttribute('data-type', 'string'); // Employee\r\n headers[2].setAttribute('data-type', 'date'); // Date\r\n headers[3].setAttribute('data-type', 'date'); // Start Time\r\n headers[4].setAttribute('data-type', 'date'); // End Time \r\n headers[5].setAttribute('data-type', 'number'); // Hours \r\n headers[6].setAttribute('data-type', 'string'); // Location\r\n headers[7].setAttribute('data-type', 'string'); // Work Code \r\n\r\n DOM.ACTIONCENTER.appendChild(topNav);\r\n DOM.ACTIONCENTER.appendChild(reportBtn);\r\n DOM.ACTIONCENTER.appendChild(fitleredBy);\r\n DOM.ACTIONCENTER.appendChild(reviewTable);\r\n\r\n totalHourDiv = document.createElement(\"div\");\r\n totalHourDiv.classList.add(\"totalHour\");\r\n totalHourDiv.innerHTML = ``;\r\n DOM.ACTIONCENTER.appendChild(totalHourDiv); \r\n\r\n DOM.ACTIONCENTER.appendChild(mapBtn);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(reviewTable);\r\n\r\n setupActionNav();\r\n }\r\n // load\r\n function loadReviewPage() {\r\n $.session.singleEntrycrossMidnight = false;\r\n roster2.removeMiniRosterBtn();\r\n if (!supervisorId) supervisorId = $.session.PeopleId;\r\n if (!supervisorName) supervisorName = `${$.session.Name} ${$.session.LName}`;\r\n if (!employeeId) employeeId = '';\r\n if (!employeeName) employeeName = 'All';\r\n if (!locationId) locationId = '%';\r\n if (!locationName) locationName = 'All';\r\n if (!status) status = '%';\r\n if (!statusText) statusText = 'All';\r\n if (!workCodeId) workCodeId = '%';\r\n if (!workCodeName) workCodeName = 'All';\r\n\r\n buildReviewPage();\r\n getReviewTableData(populateTable);\r\n }\r\n\r\n /**\r\n * Handle navigation from dashboard widget to module\r\n * @param {string} startPeriod - M/D/Y Start of the pay period\r\n * @param {string} endPeriod - M/D/Y End of the pay period\r\n * @param {string} dashStatus - Letter code of status of the time entry\r\n * */\r\n async function dashHandler(startPeriod, endPeriod, dashStatus) {\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n locationData = timeEntry.getLocations();\r\n let startDateIso = UTIL.formatDateToIso(startPeriod);\r\n let endDateIso = UTIL.formatDateToIso(endPeriod);\r\n startDate = startDateIso;\r\n endDate = endDateIso;\r\n status = dashStatus;\r\n workCodeData = await timeEntry.getWorkCodes();\r\n\r\n payPeriod = timeEntry.setSelectedPayPeriod(\r\n startDateIso,\r\n endDateIso,\r\n `${startPeriod} - ${endPeriod}`,\r\n );\r\n\r\n getDropdownData(function () {\r\n loadReviewPage();\r\n });\r\n }\r\n\r\n function addMap() {\r\n let center;\r\n let markers = [];\r\n let markerLabels = [];\r\n reviewTableData.forEach((el, i) => {\r\n if (el.latitude == 0 && el.longitude == 0) return;\r\n latLngObj = {\r\n lat: parseFloat(el.latitude),\r\n lng: parseFloat(el.longitude),\r\n };\r\n let markerLabelDate = el.Date_of_Service.split(' ')[0];\r\n let markerLabelStartTime = UTIL.formatTimeString(el.start_time);\r\n let markerLabelEndTime = UTIL.formatTimeString(el.end_time);\r\n let markerLabelText = `\r\n ${el.lastname}, ${el.firstname}
    \r\n ${markerLabelDate} ${markerLabelStartTime} - ${markerLabelEndTime}
    \r\n ${el.Location_Name}\r\n `;\r\n markers.push(latLngObj);\r\n markerLabels.push(markerLabelText);\r\n });\r\n\r\n markers = GOOGLE_MAP.createMarkerArray(markers, markerLabels);\r\n\r\n let recordCnt = markers.latLngObj.length;\r\n if (recordCnt === 0) {\r\n GOOGLE_MAP.clearMap();\r\n return;\r\n }\r\n center = markers.latLngObj[0];\r\n GOOGLE_MAP.createBoundry(markers.latLngObj);\r\n GOOGLE_MAP.clearMap();\r\n GOOGLE_MAP.createElement(DOM.ACTIONCENTER);\r\n\r\n GOOGLE_MAP.initMap(10, center, markers);\r\n }\r\n\r\n async function refreshPage(payperiod) {\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n payPeriod = payperiod ? payperiod : timeEntry.getCurrentPayPeriod(false);\r\n locationData = timeEntry.getLocations();\r\n setActiveModuleSectionAttribute('timeEntry-approval');\r\n workCodeData = await timeEntry.getWorkCodes();\r\n startDate = payperiod.start;\r\n endDate = payperiod.end;\r\n\r\n getDropdownData(function () {\r\n loadReviewPage();\r\n });\r\n }\r\n\r\n function showSubmitError(messageText) {\r\n var popup = POPUP.build({ classNames: ['error'] });\r\n var message = document.createElement('p');\r\n message.innerHTML = messageText;\r\n popup.appendChild(message);\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n function isValidDate(d) {\r\n d = new Date(d);\r\n return d instanceof Date && !isNaN(d);\r\n }\r\n\r\n async function init() {\r\n //Removing Local Storage Key for showing Map. Map will now be defaulted to off,\r\n //end user will always need to click on show map button to load map.\r\n //this is to prevent over usage of google api.\r\n // showMap = UTIL.LS.getStorage(LSKEY_showMap);\r\n showMap = false;\r\n // if (showMap === undefined) showMap = true;\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n payPeriod = timeEntry.getCurrentPayPeriod(false);\r\n locationData = timeEntry.getLocations();\r\n workCodeData = await timeEntry.getWorkCodes();\r\n\r\n //displayPayPeriodPopup();\r\n if (payPeriod.start && payPeriod.end) {\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n }\r\n else {\r\n endDate = UTIL.formatDateFromDateObj(dates.addDays(new Date(), 5));\r\n startDate = UTIL.formatDateFromDateObj(dates.subDays(new Date(), 1));\r\n }\r\n\r\n tmpStartDate = startDate;\r\n tmpEndDate = endDate;\r\n\r\n getDropdownData(function () {\r\n loadReviewPage();\r\n });\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n dashHandler,\r\n clearAllGlobalVariables,\r\n refreshPage,\r\n init,\r\n };\r\n})();\r\n","const TRANS_addRoute = (function () {\r\n /*\r\n Date\r\n Route Name\r\n Driver\r\n Other Rider\r\n Location\r\n Vehicle\r\n Billing Type (radio: Miles/Trips)\r\n Consumers\r\n */\r\n\r\n let dateInput,\r\n routeNameInput,\r\n driverDropdown,\r\n otherRiderDropdown,\r\n locationDropdown,\r\n vehicleDropdown;\r\n let milesRadio, tripsRadio;\r\n let consumerSectionBody, noConsumerWarning;\r\n let consumersOnRecord = new Map();\r\n let saveBtn;\r\n\r\n function buildPage() {\r\n const column1 = document.createElement('div')\r\n const column2 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n column2.classList.add('col-2')\r\n\r\n // Route Info Card//\r\n const routeInfoCard = document.createElement(\"div\");\r\n routeInfoCard.classList.add(\"card\");\r\n const routeInfoCardBody = document.createElement(\"div\");\r\n routeInfoCardBody.classList.add(\"card__body\");\r\n routeInfoCard.innerHTML = `\r\n
    Route Information
    \r\n `;\r\n routeInfoCard.appendChild(routeInfoCardBody)\r\n //\r\n dateInput = input.build({\r\n id: \"addRouteDate\",\r\n label: \"Date\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: UTIL.getTodaysDate(),\r\n });\r\n routeNameInput = input.build({\r\n id: \"routeNameInput\",\r\n label: \"Route Name\",\r\n charLimit: 60\r\n });\r\n routeNameInput.autocomplete = 'false'\r\n\r\n driverDropdown = dropdown.build({\r\n dropdownId: \"driverDropdown\",\r\n label: \"Driver\",\r\n style: \"secondary\",\r\n });\r\n otherRiderDropdown = dropdown.build({\r\n dropdownId: \"otherRiderDropdown\",\r\n label: \"Other Rider\",\r\n style: \"secondary\",\r\n });\r\n vehicleDropdown = dropdown.build({\r\n dropdownId: \"vehicleDropdown\",\r\n label: \"Vehicle\",\r\n style: \"secondary\",\r\n });\r\n\r\n locationDropdown = dropdown.build({\r\n dropdownId: \"locationDropdown\",\r\n label: \"Location\",\r\n style: \"secondary\",\r\n });\r\n\r\n // Billing Radios //\r\n milesRadio = input.buildRadio({\r\n id: `milesRadio`,\r\n text: \"Miles\",\r\n name: \"billingType\",\r\n isChecked: true,\r\n });\r\n tripsRadio = input.buildRadio({\r\n id: `tripsRadio`,\r\n text: \"Trips\",\r\n name: \"billingType\",\r\n isChecked: false,\r\n });\r\n const radioDiv = document.createElement(\"div\");\r\n radioDiv.classList.add(\"addRouteRadioDiv\");\r\n radioDiv.appendChild(milesRadio);\r\n radioDiv.appendChild(tripsRadio);\r\n /////////////////\r\n saveBtn = button.build({\r\n id: 'saveBtn',\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n callback: () => {\r\n if (!saveBtn.classList.contains('disabled')) {\r\n saveRoute();\r\n }\r\n }\r\n });\r\n const cancelBtn = button.build({\r\n id: 'cancelBtn',\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: () => {\r\n // Should probably reset values maybe?? will need to test\r\n setActiveModuleSectionAttribute(null);\r\n roster2.clearActiveConsumers()\r\n TRANS_mainLanding.init();\r\n }\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n ///////////////////\r\n // Append to first column //\r\n column1.appendChild(routeInfoCard)\r\n routeInfoCardBody.appendChild(dateInput);\r\n routeInfoCardBody.appendChild(routeNameInput);\r\n routeInfoCardBody.appendChild(driverDropdown);\r\n routeInfoCardBody.appendChild(otherRiderDropdown);\r\n routeInfoCardBody.appendChild(vehicleDropdown);\r\n routeInfoCardBody.appendChild(locationDropdown);\r\n routeInfoCardBody.appendChild(radioDiv);\r\n ////////////////////\r\n // Consumer Section //\r\n const consumerSectionCard = document.createElement(\"div\");\r\n const consumerSectionHeader = document.createElement(\"div\");\r\n consumerSectionBody = document.createElement(\"div\");\r\n consumerSectionCard.classList.add(\"card\");\r\n consumerSectionHeader.classList.add(\"card__header\");\r\n consumerSectionBody.classList.add(\"card__body\");\r\n consumerSectionBody.id = 'consumerOnRouteSection'\r\n consumerSectionHeader.innerText = \"Consumers on Route\";\r\n consumerSectionCard.appendChild(consumerSectionHeader);\r\n consumerSectionCard.appendChild(consumerSectionBody);\r\n // No Consumer Warning //\r\n noConsumerWarning = document.createElement('p');\r\n noConsumerWarning.style.color = 'red';\r\n noConsumerWarning.innerText = 'You must select at least one consumer for the route.'\r\n consumerSectionBody.appendChild(noConsumerWarning)\r\n //\r\n column2.appendChild(consumerSectionCard)\r\n column2.appendChild(btnWrap)\r\n DOM.ACTIONCENTER.appendChild(column1)\r\n DOM.ACTIONCENTER.appendChild(column2)\r\n\r\n populateDropdowns();\r\n eventListeners();\r\n checkRequiredFieldsOfAddRoute();\r\n }\r\n\r\n function checkRequiredFieldsOfAddRoute() {\r\n var date = dateInput.querySelector('input');\r\n var routeName = routeNameInput.querySelector('#routeNameInput');\r\n var driver = driverDropdown.querySelector('#driverDropdown');\r\n var vehicle = vehicleDropdown.querySelector('#vehicleDropdown');\r\n var location = locationDropdown.querySelector('#locationDropdown');\r\n\r\n if (date.value === '') {\r\n dateInput.classList.add('error');\r\n } else {\r\n dateInput.classList.remove('error');\r\n }\r\n\r\n if (routeName.value === '') {\r\n routeNameInput.classList.add('error');\r\n } else {\r\n routeNameInput.classList.remove('error');\r\n }\r\n\r\n if (driver.value === '') {\r\n driverDropdown.classList.add('error');\r\n } else {\r\n driverDropdown.classList.remove('error');\r\n }\r\n\r\n if (vehicle.value === '') {\r\n vehicleDropdown.classList.add('error');\r\n } else {\r\n vehicleDropdown.classList.remove('error');\r\n }\r\n\r\n if (location.value === '') {\r\n locationDropdown.classList.add('error');\r\n } else {\r\n locationDropdown.classList.remove('error');\r\n }\r\n\r\n if (noConsumerWarning.style.display === 'none') {\r\n noConsumerWarning.classList.remove('error');\r\n } else {\r\n noConsumerWarning.classList.add('error');\r\n }\r\n setBtnStatusOfAddRoute();\r\n }\r\n\r\n function setBtnStatusOfAddRoute() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n\r\n function populateDropdowns() {\r\n const vehicleDropdownData = []\r\n const driverDropdownData = []\r\n const otherRiderDropdownData = []\r\n const locationDropdownData = []\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n const locations = TRANS_mainLanding.getLocations();\r\n\r\n vehicles.forEach((val, key, map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n\r\n drivers.forEach((val, key, map) => {\r\n driverDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n otherRiderDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n\r\n locations.forEach((val, key, map) => {\r\n locationDropdownData.push({\r\n value: key,\r\n text: val.Name\r\n })\r\n })\r\n\r\n otherRiderDropdownData.unshift({ value: '0', text: 'NONE' })\r\n vehicleDropdownData.unshift({ value: '', text: '' })\r\n locationDropdownData.unshift({ value: '', text: '' })\r\n\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData);\r\n dropdown.populate(driverDropdown, driverDropdownData, $.session.PeopleId);\r\n // If the person logged in is not classified as a driver, driver dropdown will\r\n // default to a blank option, and need to be classified as an error untill changed\r\n if (!drivers.has($.session.PeopleId)) driverDropdown.classList.add('error');\r\n dropdown.populate(otherRiderDropdown, otherRiderDropdownData);\r\n dropdown.populate(locationDropdown, locationDropdownData);\r\n }\r\n\r\n function eventListeners() {\r\n vehicleDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n locationDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n driverDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n routeNameInput.addEventListener('keyup', event => {\r\n checkRequiredFieldsOfAddRoute();\r\n });\r\n dateInput.addEventListener('change', event => {\r\n resetPageForNewDate(event.target.value)\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n }\r\n\r\n function resetPageForNewDate(newDate) {\r\n /* When Changing the date, several date dependant items need to be reset.\r\n Driver/Other Rider - re-populate dropdown with new data based on date\r\n Consumers - remove all consumers, and reset the day in the mini roster\r\n */\r\n\r\n // * ROSTER AND CONSUMERS\r\n roster2.updateSelectedDate(newDate)\r\n roster2.clearActiveConsumers()\r\n consumersOnRecord.clear();\r\n const consumerSection = document.getElementById('consumerOnRouteSection');\r\n consumerSection.innerHTML = '';\r\n consumerSection.appendChild(noConsumerWarning)\r\n noConsumerWarning.style.display = 'block'\r\n // *\r\n\r\n // * Driver/Other Rider\r\n const drivers = TRANS_mainLanding.getAllDrivers(Date.parse(newDate));\r\n let driverDropdownData = []\r\n let otherRiderDropdownData = []\r\n drivers.forEach((val, key, map) => {\r\n driverDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n otherRiderDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n otherRiderDropdownData.unshift({ value: '0', text: 'NONE' })\r\n dropdown.populate(driverDropdown, driverDropdownData, $.session.PeopleId);\r\n dropdown.populate(otherRiderDropdown, otherRiderDropdownData);\r\n //*\r\n }\r\n\r\n function consumerRemoveAction(consumerId) {\r\n consumersOnRecord.delete(consumerId)\r\n if (consumersOnRecord.size > 0) {\r\n noConsumerWarning.style.display = 'none';\r\n } else noConsumerWarning.style.display = 'block';\r\n checkRequiredFieldsOfAddRoute();\r\n }\r\n function updateConsumerData(data) {\r\n const { consumerId, key, value } = data\r\n consumersOnRecord.get(consumerId)[key] = value;\r\n }\r\n function retrieveConsumerData(consumerId, key) {\r\n return consumersOnRecord.get(consumerId)[key];\r\n }\r\n function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case \"miniRosterDone\": {\r\n const selectedConsumers = roster2.getSelectedConsumersMiniRoster()\r\n selectedConsumers.forEach(async consumer => {\r\n const consumerDetails = (await TRANS_routeDocumentationAjax.getConsumerDetails(consumer.id)).getConsumerDetailsResult[0];\r\n consumersOnRecord.set(consumer.id, consumerDetails);\r\n consumersOnRecord.get(consumer.id)['riderStatus'] = '';\r\n const transportationCard = TRANS_consumerDocCard.createCard(consumer.id, consumerDetails);\r\n consumerSectionBody.appendChild(transportationCard)\r\n if (consumersOnRecord.size > 0) {\r\n noConsumerWarning.style.display = 'none';\r\n } else noConsumerWarning.style.display = 'block';\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n roster2.clearSelectedConsumers();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n }\r\n }\r\n async function saveRoute() {\r\n pendingSave.show('Creating Route...')\r\n try {\r\n // Check for errors first\r\n const errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) throw \"err exist\"\r\n if (consumersOnRecord.size === 0) throw \"no consumers\"\r\n //\r\n const date = dateInput.querySelector('input').value;\r\n const routeName = routeNameInput.querySelector('input').value;\r\n const driverddElement = document.getElementById('driverDropdown');\r\n const driver = driverddElement.options[driverddElement.selectedIndex].value;\r\n const otherRiderElement = document.getElementById('otherRiderDropdown');\r\n const otherRider = otherRiderElement.options[otherRiderElement.selectedIndex].value;\r\n const vehicleElement = document.getElementById('vehicleDropdown');\r\n const vehicle = vehicleElement.options[vehicleElement.selectedIndex].value;\r\n const locationElement = document.getElementById('locationDropdown');\r\n const location = locationElement.options[locationElement.selectedIndex].value;\r\n const billingType = document.getElementById(\"milesRadio\").checked ? \"M\" : \"T\";\r\n const data = {\r\n token: $.session.Token,\r\n tripName: UTIL.removeUnsavableNoteText(routeName),\r\n driverId: driver,\r\n otherRider: otherRider,\r\n dateOfService: date,\r\n billingType: billingType,\r\n vehicleInformationId: vehicle,\r\n locationId: location\r\n }\r\n // 1) Save main trip to get the tripCompletedId from DB\r\n const tripCompletedId = (await TRANS_addRouteAjax.insertTrip(data)).insertTripCompletedResult[0].tripCompletedId\r\n // 2) Save consumers to the newly created tripCompletedId\r\n const dbCallArr = []\r\n consumersOnRecord.forEach((val, key, map) => {\r\n const { alternateAddress, completedDetailId, directions, pickupOrder, notes, riderStatus, scheduledTime, specialInstructions, totalTravelTime } = val\r\n const consumerDetailSubmit = {\r\n token: $.session.Token,\r\n tripDetailId: completedDetailId ? completedDetailId : '',\r\n tripsCompletedId: tripCompletedId,\r\n consumerId: key,\r\n alternateAddress: alternateAddress ? alternateAddress : '',\r\n scheduledTime: scheduledTime ? scheduledTime : '',\r\n totalTravelTime: totalTravelTime ? totalTravelTime : '',\r\n riderStatus: riderStatus,\r\n specialInstructions: specialInstructions ? specialInstructions : '',\r\n directions: directions ? directions : '',\r\n pickupOrder: pickupOrder ? pickupOrder : '',\r\n notes: notes ? notes : '',\r\n };\r\n dbCallArr.push(TRANS_routeDocumentationAjax.insertUpdateTripConsumers(consumerDetailSubmit))\r\n })\r\n Promise.all(dbCallArr).then(res => {\r\n pendingSave.fulfill('Route has been created');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n roster2.clearActiveConsumers()\r\n /* \r\n After saving, if the route is for a future date OR the\r\n driver on the route is different than the person creating the route,\r\n then take them to the transportation landing page.\r\n Otherwise give them the save route popup.\r\n */\r\n if (Date.parse(date) > UTIL.getTodaysDate(true) || $.session.PeopleId !== driver) {\r\n TRANS_mainLanding.init();\r\n } else {\r\n saveRoutePopup(tripCompletedId, date, routeName, vehicle)\r\n }\r\n }, 3000)\r\n })\r\n } catch (error) {\r\n switch (error) {\r\n case 'err exist':\r\n pendingSave.reject('Failed to create route. Please correct any errors that exist on the route.')\r\n console.error('Failing due to missing required fields.')\r\n break;\r\n case 'no consumers':\r\n pendingSave.reject('Failed to create route. There must be at least on consumer for a route.')\r\n console.error('Failing due to no consumers added.')\r\n break;\r\n default:\r\n pendingSave.reject('Failed to save. Please try again.')\r\n console.error(error)\r\n break;\r\n }\r\n setTimeout(() => failSave.hide(), 3000)\r\n }\r\n }\r\n function saveRoutePopup(tripCompletedId, tripDate, tripName, vehicleId) {\r\n const popup = POPUP.build({\r\n hideX: true,\r\n classNames: 'routeSavedPopup'\r\n });\r\n const message = document.createElement('div');\r\n message.style.textAlign = 'center'\r\n message.innerHTML = `\r\n

    Would you like to document, or do a vehicle inspection for this route?

    \r\n `;\r\n const documentBtn = button.build({\r\n text: 'Document',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n TRANS_routeDocumentation.init({\r\n date: tripDate,\r\n routeID: tripCompletedId,\r\n routeName: tripName,\r\n vehicleInfoId: vehicleId\r\n })\r\n }\r\n });\r\n const vehicleInspectionBtn = button.build({\r\n text: 'Vehicle Inspection',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n TRANS_vehicleInspection.init({\r\n enterPath: 'addRoute',\r\n vId: vehicleId,\r\n rId: tripCompletedId,\r\n routeName: tripName,\r\n routeDate: tripDate\r\n })\r\n }\r\n });\r\n const docLaterBtn = button.build({\r\n text: 'Document Later',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n TRANS_mainLanding.init()\r\n }\r\n });\r\n documentBtn.style.width = '100%';\r\n vehicleInspectionBtn.style.width = '100%';\r\n docLaterBtn.style.width = '100%';\r\n popup.appendChild(message)\r\n popup.appendChild(documentBtn)\r\n popup.appendChild(vehicleInspectionBtn)\r\n popup.appendChild(docLaterBtn)\r\n POPUP.show(popup)\r\n }\r\n function init() {\r\n consumersOnRecord.clear();\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(\"addroute\");\r\n roster2.miniRosterinit(null, { hideDate: true })\r\n buildPage()\r\n }\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n consumerRemoveAction,\r\n updateConsumerData,\r\n retrieveConsumerData\r\n };\r\n})();\r\n","const TRANS_addRouteAjax = (function() {\r\n\r\n function insertTrip(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertTripCompleted/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n return {\r\n insertTrip\r\n }\r\n})();","const TRANS_myRoute = (function () {\r\n let routeSection, dateInput, warningDisp;\r\n let selectedDate, trips, tripsStatus;\r\n\r\n function buildPage() {\r\n ////////////\r\n // TOP SECTION\r\n const topSection = document.createElement('div');\r\n const backButton = button.build({\r\n id: 'myRouteBackButton',\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'arrowBack',\r\n callback: () => {\r\n setActiveModuleSectionAttribute(null);\r\n TRANS_mainLanding.init();\r\n },\r\n });\r\n dateInput = input.build({\r\n id: 'myRouteDate',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: UTIL.getTodaysDate(),\r\n attributes: [{ max: UTIL.getTodaysDate() }],\r\n });\r\n // Warning display for 'no routes, or future date'\r\n warningDisp = document.createElement('p');\r\n warningDisp.style.color = '#DB162f';\r\n warningDisp.style.textAlign = 'center';\r\n warningDisp.style.marginBottom = '10px';\r\n // set selected date to today:\r\n selectedDate = UTIL.getTodaysDate();\r\n topSection.appendChild(backButton);\r\n topSection.appendChild(dateInput);\r\n topSection.appendChild(warningDisp);\r\n /////////////////\r\n // Route Button section\r\n routeSection = document.createElement('div');\r\n routeSection.classList.add('myRouteButtonSection');\r\n\r\n DOM.ACTIONCENTER.appendChild(topSection);\r\n DOM.ACTIONCENTER.appendChild(routeSection);\r\n eventListeners();\r\n }\r\n\r\n function buildRouteBtn(route) {\r\n const { tripName, tripsCompletedId, tripInspection } = route;\r\n const routeBtn = document.createElement('div');\r\n const status = tripsStatus.get(tripsCompletedId);\r\n let statusText;\r\n switch (status) {\r\n case 'C':\r\n statusText = 'Complete';\r\n break;\r\n case 'IP':\r\n statusText = 'In Progress';\r\n break;\r\n case 'NS':\r\n statusText = 'Not Started';\r\n break;\r\n default:\r\n break;\r\n }\r\n const inspIcon = tripInspection !== '' ? icons.checkmark : icons.close;\r\n const inspColor = tripInspection !== '' ? 'white' : 'red';\r\n routeBtn.classList.add('routeBtn', `status__${status}`);\r\n routeBtn.setAttribute('id', `route-${tripsCompletedId}`);\r\n routeBtn.innerHTML = `\r\n
    ${tripName}
    \r\n
    ${statusText}
    \r\n
    ${inspIcon} Inspection
    \r\n\r\n `;\r\n routeBtn.addEventListener('click', () => {\r\n TRANS_selectedRoutePopup.init(route, selectedDate);\r\n });\r\n routeSection.appendChild(routeBtn);\r\n }\r\n\r\n function eventListeners() {\r\n dateInput.addEventListener('input', event => {\r\n selectedDate = event.target.value;\r\n if (Date.parse(event.target.value) > UTIL.getTodaysDate(true)) {\r\n warningDisp.innerText = 'Notice: Future dates are read only';\r\n } else {\r\n warningDisp.innerText = '';\r\n }\r\n getData(event.target.value);\r\n });\r\n }\r\n\r\n async function getData(date) {\r\n routeSection.innerHTML = '';\r\n PROGRESS__ANYWHERE.init();\r\n PROGRESS__ANYWHERE.SPINNER.show(routeSection, 'Gathering Trips...');\r\n try {\r\n const tripsResp = (await TRANS_myRotueAjax.getTrips(date)).getTripsResult;\r\n let tempTrips = new Map();\r\n tripsResp.forEach(trip => {\r\n tempTrips.set(trip.tripsCompletedId, trip);\r\n });\r\n trips = tempTrips;\r\n determineTripStatus();\r\n routeSection.innerHTML = '';\r\n if (trips.size === 0) {\r\n warningDisp.innerText = 'No routes have been found for this date';\r\n } else {\r\n for (const [key, value] of trips) {\r\n buildRouteBtn(value);\r\n }\r\n }\r\n } catch (error) {\r\n PROGRESS__ANYWHERE.SPINNER.hide(routeSection);\r\n console.error(error);\r\n console.error('Error gathering routes. Check for valid date, and users permissions');\r\n }\r\n }\r\n\r\n function determineTripStatus() {\r\n const tempStatusMap = new Map();\r\n trips.forEach((val, key, map) => {\r\n const {\r\n endTime,\r\n odoStart,\r\n odoStop,\r\n startTime,\r\n tripType,\r\n totalConsumersOnRecord,\r\n consumerNoStatus,\r\n } = val;\r\n let status;\r\n\r\n // First break down into Miles or Trip. Miles and Trip have different definitions of being complete.\r\n switch (tripType) {\r\n case 'M':\r\n if (\r\n endTime === '' &&\r\n startTime === '' &&\r\n odoStart === '' &&\r\n odoStop === '' &&\r\n consumerNoStatus === totalConsumersOnRecord\r\n ) {\r\n // Nothing has been completed, so the trip has not started = NS\r\n status = 'NS';\r\n } else if (\r\n endTime !== '' &&\r\n startTime !== '' &&\r\n odoStart !== '' &&\r\n odoStop !== '' &&\r\n consumerNoStatus == 0\r\n ) {\r\n // Everything has been completed, so the trip is complete = C\r\n status = 'C';\r\n } else {\r\n // If something is completed... but not everything, its still in progress = IP\r\n status = 'IP';\r\n }\r\n break;\r\n case 'T':\r\n if (endTime === '' && startTime === '' && consumerNoStatus === totalConsumersOnRecord) {\r\n // Nothing has been completed, so the trip has not started = NS\r\n status = 'NS';\r\n } else if (endTime !== '' && startTime !== '' && consumerNoStatus == 0) {\r\n // Everything has been completed, so the trip is complete = C\r\n status = 'C';\r\n } else {\r\n // If something is completed... but not everything, its still in progress = IP\r\n status = 'IP';\r\n }\r\n break;\r\n\r\n default:\r\n console.error(\r\n 'There was a problem determining the completion status of the trip. No Miles/Trip Billing_Type found!',\r\n );\r\n status = 'NS';\r\n break;\r\n }\r\n\r\n tempStatusMap.set(key, status);\r\n });\r\n tripsStatus = tempStatusMap;\r\n }\r\n\r\n function init() {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('myroute');\r\n\r\n buildPage();\r\n getData(UTIL.getTodaysDate());\r\n }\r\n return {\r\n init,\r\n };\r\n})();\r\n","const TRANS_myRotueAjax = (function() {\r\n\r\n function getTrips(date) {\r\n const data = {\r\n token: $.session.Token,\r\n serviceDateStart: date,\r\n serviceDateStop: date,\r\n personId: $.session.PeopleId,\r\n locationId: '%'\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getTrips/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n return {\r\n getTrips\r\n }\r\n})();","const TRANS_selectedRoutePopup = (function() {\r\n // let routeId, routeName;\r\n\r\n function buildPopup(opts, selectedDate) {\r\n const { tripsCompletedId, tripName, vehicleInfoId, tripInspection, tripInspectionEnteredBy, inspectionTime, inspectionNote, batchNumber } = opts;\r\n\r\n const batched = batchNumber === '' ? false : true;\r\n let futureDate = false\r\n if (Date.parse(selectedDate) > UTIL.getTodaysDate(true)) {\r\n futureDate = true\r\n }\r\n let ro = batched || futureDate ? true : false;\r\n\r\n const warnDisp = document.createElement('h4');\r\n if (batched) {\r\n warnDisp.innerText = 'Selected Route is Batched.';\r\n } else if (futureDate) {\r\n warnDisp.innerHTML = 'The date you have selected is a future date.
    Vehicle Inspections can not be created for future dates.';\r\n }\r\n warnDisp.style.color = '#DB162f';\r\n warnDisp.style.textAlign = 'center';\r\n\r\n const popup = POPUP.build({\r\n id: `route-${vehicleInfoId}`,\r\n header: tripName,\r\n classNames: 'selectedRoutePopup'\r\n });\r\n const documentBtn = button.build({\r\n id: `document-${vehicleInfoId}`,\r\n text: batched || futureDate || $.session.transportationUpdate === false ? 'Review Route' : 'Document',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'docBtn',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n TRANS_routeDocumentation.init({date: selectedDate, routeID: tripsCompletedId, routeName: tripName, vehicleInfoId: vehicleInfoId, readOnly: ro})\r\n }\r\n });\r\n const vehicleInspBtn = button.build({\r\n id: `inspection-${vehicleInfoId}`,\r\n text: tripInspection !== '' ? 'Review Vehicle Inspection' : 'Vehicle Inspection',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n if (tripInspection === '') {\r\n // If there is no inspection, add a new one\r\n TRANS_vehicleInspection.init({enterPath: 'routeSelection', vId: vehicleInfoId, rId: tripsCompletedId, routeName: tripName, routeDate: selectedDate})\r\n } else {\r\n // Else, review the one that exists\r\n TRANS_vehicleInspection.init({enterPath: 'routeSelection', vId: vehicleInfoId, rId: tripsCompletedId, routeName: tripName, edit: true, batchedRoute: batched,\r\n editData: {\r\n inspectionId: tripInspection, \r\n enteredById: tripInspectionEnteredBy,\r\n inspectionDate: UTIL.formatDateFromIso(selectedDate),\r\n inspectionTime: inspectionTime,\r\n note: inspectionNote\r\n },\r\n routeDate: selectedDate})\r\n }\r\n }\r\n });\r\n if (futureDate || (batched && tripInspection === '') || ($.session.transportationUpdate === false && tripInspection === '')) {\r\n // Vehicle inspections can't be created for future dates Or batched routes or they do not have Update permission\r\n // except if there is already a inspection, then they can review it.\r\n vehicleInspBtn.classList.add('disabled')\r\n }\r\n documentBtn.style.width = '100%'\r\n vehicleInspBtn.style.width = '100%'\r\n if (batched || futureDate) popup.appendChild(warnDisp)\r\n popup.appendChild(documentBtn)\r\n popup.appendChild(vehicleInspBtn);\r\n POPUP.show(popup)\r\n }\r\n\r\n /**\r\n * \r\n * @param {object} opts \r\n * @param {string} opts.tripsCompletedId Selected Route Id\r\n * @param {string} opts.tripName Name of selected route\r\n * @param {string} opts.vehicleInfoId Vehicle Info Id for the route\r\n * @param {string} opts.tripInspection Inspection tied to route, or ''\r\n * @param {string} date Date they have selected\r\n */\r\n function init(opts, date) {\r\n buildPopup(opts, date)\r\n }\r\n return {\r\n init\r\n }\r\n})();","const TRANS_manageEditRoute = (function () {\r\n let driverDropdown, routeNameInput, locationDropdown, otherRiderDropdown, vehicleDropdown, routeStartOdo, routeEndOdo, routeStartInput, routeEndInput;\r\n let milesRadio, tripsRadio;\r\n let consumerSectionBody, noConsumerWarning;\r\n let tripInfo;\r\n let consumersOnRecord = new Map();\r\n let consumersToRemove;\r\n let ro, isAddHoc, isBatched;\r\n let selectedDate, selectedRouteId, selectedRouteName, selectedLocationName, vehicleInspection, deleteInspection;\r\n let notTodeleteConsumers = [];\r\n function buildPage() {\r\n const column1 = document.createElement('div')\r\n const column2 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n column2.classList.add('col-2')\r\n const selectedRouteInformation = document.createElement('div');\r\n selectedRouteInformation.classList.add('editRouteHeader')\r\n const readableDate = UTIL.formatDateFromIso(selectedDate);\r\n\r\n const batchedWarninig = document.createElement('h4');\r\n batchedWarninig.classList.add('error');\r\n batchedWarninig.innerText = 'This route has been batched. No changes can be made.';\r\n batchedWarninig.style.marginBottom = '10px';\r\n batchedWarninig.style.textAlign = 'center';\r\n\r\n if (isAddHoc) {\r\n selectedRouteInformation.innerHTML = `\r\n

    Date: ${readableDate}

    \r\n `;\r\n } else {\r\n selectedRouteInformation.innerHTML = `\r\n

    Route: ${selectedRouteName}

    \r\n

    Location: ${selectedLocationName}

    \r\n

    Date: ${readableDate}

    \r\n `;\r\n };\r\n\r\n // Route Info Card//\r\n const routeInfoCard = document.createElement(\"div\");\r\n routeInfoCard.classList.add(\"card\");\r\n const routeInfoCardBody = document.createElement(\"div\");\r\n routeInfoCardBody.classList.add(\"card__body\");\r\n routeInfoCard.innerHTML = `\r\n
    Route Information
    \r\n `;\r\n routeInfoCard.appendChild(routeInfoCardBody)\r\n\r\n routeNameInput = input.build({\r\n id: \"routeNameInput\",\r\n label: \"Route Name\",\r\n charLimit: 60,\r\n readonly: ro,\r\n value: selectedRouteName\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: \"locationDropdown\",\r\n label: \"Location\",\r\n readonly: ro,\r\n style: \"secondary\",\r\n });\r\n\r\n routeStartInput = input.build({\r\n id: \"routeStartTime\",\r\n label: \"Route Start Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n readonly: ro,\r\n value: tripInfo.startTime\r\n });\r\n routeEndInput = input.build({\r\n id: \"routeEndTime\",\r\n label: \"Route End Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n readonly: ro,\r\n value: tripInfo.endTime\r\n });\r\n routeStartOdo = input.build({\r\n id: \"routeStartOdo\",\r\n type: \"number\",\r\n label: \"Starting Odometer\",\r\n style: \"secondary\",\r\n readonly: ro,\r\n value: tripInfo.odometerStart\r\n });\r\n routeEndOdo = input.build({\r\n id: \"routeEndOdo\",\r\n type: \"number\",\r\n label: \"Ending Odometer\",\r\n style: \"secondary\",\r\n readonly: ro,\r\n value: tripInfo.odometerStop\r\n });\r\n driverDropdown = dropdown.build({\r\n dropdownId: \"driverDropdown\",\r\n label: \"Driver\",\r\n readonly: ro,\r\n style: \"secondary\",\r\n });\r\n otherRiderDropdown = dropdown.build({\r\n dropdownId: \"otherRiderDropdown\",\r\n label: \"Other Rider\",\r\n readonly: ro,\r\n style: \"secondary\",\r\n });\r\n vehicleDropdown = dropdown.build({\r\n dropdownId: \"vehicleDropdown\",\r\n label: \"Vehicle\",\r\n readonly: ro,\r\n style: \"secondary\",\r\n });\r\n\r\n\r\n // Billing Radios //\r\n milesRadio = input.buildRadio({\r\n id: `milesRadio`,\r\n text: \"Miles\",\r\n name: \"billingType\",\r\n isDisabled: ro,\r\n isChecked: tripInfo.billingType === 'M' ? true : false,\r\n });\r\n tripsRadio = input.buildRadio({\r\n id: `tripsRadio`,\r\n text: \"Trips\",\r\n name: \"billingType\",\r\n isDisabled: ro,\r\n isChecked: tripInfo.billingType === 'T' ? true : false,\r\n });\r\n\r\n // Disable inputs for read only;\r\n if (ro) {\r\n routeNameInput.classList.add('disabled')\r\n locationDropdown.classList.add('disabled')\r\n routeStartInput.classList.add('disabled')\r\n routeEndInput.classList.add('disabled')\r\n routeStartOdo.classList.add('disabled')\r\n routeEndOdo.classList.add('disabled')\r\n driverDropdown.classList.add('disabled')\r\n otherRiderDropdown.classList.add('disabled')\r\n vehicleDropdown.classList.add('disabled')\r\n }\r\n const radioDiv = document.createElement(\"div\");\r\n radioDiv.classList.add(\"addRouteRadioDiv\");\r\n radioDiv.appendChild(milesRadio);\r\n radioDiv.appendChild(tripsRadio);\r\n /////////////////\r\n // * Time Wrap\r\n const timeDiv = document.createElement(\"div\");\r\n timeDiv.classList.add(\"odometerDiv\");\r\n timeDiv.appendChild(routeStartInput);\r\n timeDiv.appendChild(routeEndInput);\r\n // * Odometer Wrap\r\n const odometerDiv = document.createElement(\"div\");\r\n odometerDiv.classList.add(\"odometerDiv\");\r\n odometerDiv.appendChild(routeStartOdo);\r\n odometerDiv.appendChild(routeEndOdo);\r\n //\r\n const updateBtn = button.build({\r\n id: \"updateBtn\",\r\n text: \"Update\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: 'save',\r\n callback: () => {\r\n if (!updateBtn.classList.contains('disabled')) {\r\n saveData();\r\n }\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n id: \"deleteBtn\",\r\n classNames: 'trans_DeleteBtn',\r\n text: \"Delete\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: 'delete',\r\n callback: () => deleteRoute(),\r\n });\r\n const cancelBtn = button.build({\r\n id: \"cancelBtn\",\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n icon: 'close',\r\n callback: () => {\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn();\r\n TRANS_manageRoutes.init(false);\r\n },\r\n });\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n if (!ro) btnWrap.appendChild(updateBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n ///////////////////\r\n // Append to Main Section //\r\n if (isBatched) column1.appendChild(batchedWarninig)\r\n column1.appendChild(selectedRouteInformation);\r\n column1.appendChild(routeInfoCard);\r\n if (isAddHoc) routeInfoCardBody.appendChild(routeNameInput)\r\n routeInfoCardBody.appendChild(timeDiv);\r\n routeInfoCardBody.appendChild(odometerDiv);\r\n routeInfoCardBody.appendChild(driverDropdown);\r\n routeInfoCardBody.appendChild(otherRiderDropdown);\r\n routeInfoCardBody.appendChild(vehicleDropdown);\r\n if (isAddHoc) routeInfoCardBody.appendChild(locationDropdown)\r\n routeInfoCardBody.appendChild(radioDiv);\r\n ////////////////////\r\n // Consumer Section //\r\n const consumerSectionCard = document.createElement(\"div\");\r\n const consumerSectionHeader = document.createElement(\"div\");\r\n consumerSectionBody = document.createElement(\"div\");\r\n consumerSectionCard.classList.add(\"card\", \"consumerSectionCard\");\r\n consumerSectionHeader.classList.add(\"card__header\");\r\n consumerSectionBody.classList.add(\"card__body\");\r\n consumerSectionHeader.innerText = \"Consumers on Route\";\r\n consumerSectionCard.appendChild(consumerSectionHeader);\r\n consumerSectionCard.appendChild(consumerSectionBody);\r\n // No Consumer Warning //\r\n noConsumerWarning = document.createElement('p');\r\n noConsumerWarning.style.color = 'red';\r\n noConsumerWarning.innerText = 'You must select at least one consumer for the route.'\r\n consumerSectionBody.appendChild(noConsumerWarning)\r\n noConsumerWarning.style.display = 'none';\r\n //\r\n column2.appendChild(consumerSectionCard)\r\n column2.appendChild(btnWrap);\r\n if (!ro) column2.appendChild(deleteBtn);\r\n ///////////////////////\r\n DOM.ACTIONCENTER.appendChild(column1);\r\n DOM.ACTIONCENTER.appendChild(column2);\r\n\r\n populateDropdowns()\r\n buildConsumerCards()\r\n eventListeners()\r\n setBtnStatusOfAddRoute()\r\n }\r\n\r\n function buildConsumerCards() {\r\n consumersOnRecord.forEach((val,key, map) => {\r\n // transportationCard = TRANS_consumerDocCard.createCard(key, val, ro);\r\n transportationCard = TRANS_consumerDocCard.createCard(key, val, ro);\r\n consumerSectionBody.appendChild(transportationCard)\r\n })\r\n }\r\n\r\n function populateDropdowns() {\r\n if (isAddHoc) {\r\n const locationDropdownData = []\r\n const locations = TRANS_mainLanding.getLocations();\r\n locations.forEach((val,key,map) => {\r\n locationDropdownData.push({\r\n value: key,\r\n text: val.Name\r\n })\r\n });\r\n dropdown.populate(locationDropdown, locationDropdownData, tripInfo.locationId);\r\n }\r\n const vehicleDropdownData = []\r\n const driverDropdownData = []\r\n const otherRiderDropdownData = []\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n\r\n vehicles.forEach((val,key,map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n\r\n drivers.forEach((val,key,map) => {\r\n driverDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n otherRiderDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n\r\n otherRiderDropdownData.unshift({ value: '', text: 'NONE'})\r\n\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData, tripInfo.vehicleInformationId);\r\n dropdown.populate(driverDropdown, driverDropdownData, tripInfo.driverId);\r\n dropdown.populate(otherRiderDropdown, otherRiderDropdownData, tripInfo.otherRider);\r\n }\r\n\r\n function eventListeners() {\r\n function odoCheck() {\r\n const startVal = parseInt(routeStartOdo.querySelector('input').value)\r\n const endVal = parseInt(routeEndOdo.querySelector('input').value)\r\n //Odo can be null, check to see if they are numbers (NaN when they are null)\r\n if (typeof(startVal) !== 'number' && typeof(endVal) !== 'number') {\r\n routeStartOdo.classList.remove('error');\r\n routeEndOdo.classList.remove('error')\r\n return\r\n }\r\n\r\n const dif = endVal - startVal;\r\n if (dif < 0) {\r\n routeStartOdo.classList.add('error');\r\n routeEndOdo.classList.add('error')\r\n } else {\r\n routeStartOdo.classList.remove('error');\r\n routeEndOdo.classList.remove('error')\r\n }\r\n setBtnStatusOfAddRoute();\r\n }\r\n routeStartInput.addEventListener('change', event => {\r\n const totalHours = UTIL.calculateTotalHours(routeStartInput.firstChild.value, routeEndInput.querySelector('input').value)\r\n if (totalHours < 0) {\r\n routeStartInput.classList.add('error')\r\n } else {\r\n routeStartInput.classList.remove('error')\r\n routeEndInput.classList.remove('error')\r\n }\r\n setBtnStatusOfAddRoute();\r\n })\r\n routeEndInput.addEventListener('change', event => {\r\n const totalHours = UTIL.calculateTotalHours(routeStartInput.querySelector('input').value, routeEndInput.firstChild.value)\r\n if (totalHours < 0) {\r\n routeEndInput.classList.add('error')\r\n } else {\r\n routeStartInput.classList.remove('error')\r\n routeEndInput.classList.remove('error')\r\n }\r\n setBtnStatusOfAddRoute();\r\n })\r\n routeStartOdo.addEventListener('change', () => odoCheck());\r\n routeEndOdo.addEventListener('change', () => odoCheck());\r\n\r\n routeNameInput.addEventListener('change', event => {\r\n if (event.target.value.trim() === \"\") {\r\n routeNameInput.classList.add('error');\r\n } else {\r\n routeNameInput.classList.remove('error');\r\n }\r\n selectedRouteName = event.target.value;\r\n setBtnStatusOfAddRoute();\r\n });\r\n driverDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n tripInfo.driverId = selectedOption.value;\r\n })\r\n otherRiderDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n tripInfo.otherRider = selectedOption.value;\r\n })\r\n vehicleDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n if (vehicleInspection !== \"\") {\r\n UTIL.warningPopup({\r\n message: \"This trip has an inspection completed for it. Changing the vehicle will result in the inspection being deleted. Continue?\",\r\n accept: {\r\n text: \"Yes\",\r\n callback: () => {\r\n tripInfo.vehicleInformationId = selectedOption.value;\r\n deleteInspection = true;\r\n }\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n event.target.value = tripInfo.vehicleInformationId;\r\n }\r\n }\r\n })\r\n } else {\r\n tripInfo.vehicleInformationId = selectedOption.value;\r\n }\r\n })\r\n locationDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n tripInfo.locationId = selectedOption.value;\r\n })\r\n }\r\n\r\n function setBtnStatusOfAddRoute() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n updateBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n if ($.session.transportationUpdate)\r\n updateBtn.classList.remove('disabled');\r\n else\r\n updateBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n function loadData(routeID) {\r\n function cleanData(getTripInformationResult, getTripConsumersResult) {\r\n tripInfo = getTripInformationResult[0];\r\n getTripConsumersResult.forEach(consumer => {\r\n consumer.batchId = tripInfo.batchId; \r\n consumersOnRecord.set(consumer.consumerId, consumer);\r\n // Roster Required Info:\r\n const consumerobj = roster2.buildConsumerCard({\r\n FN: consumer.firstName,\r\n LN: consumer.lastName,\r\n id: consumer.consumerId\r\n });\r\n roster2.addConsumerToActiveConsumers(consumerobj);\r\n })\r\n buildPage();\r\n }\r\n\r\n //Get data for the route\r\n const routeInfo = TRANS_routeDocumentationAjax.getRouteInformation(routeID)\r\n const consumerInfo = TRANS_routeDocumentationAjax.getRouteConsumers(routeID)\r\n Promise.all([routeInfo, consumerInfo]).then(val => {\r\n const getTripInformationResult = val[0].getTripInformationResult\r\n const getTripConsumersResult = val[1].getTripConsumersResult\r\n cleanData(getTripInformationResult, getTripConsumersResult);\r\n })\r\n }\r\n function consumerRemoveAction(consumerId) {\r\n consumersOnRecord.delete(consumerId)\r\n consumersToRemove.push(consumerId)\r\n\r\n if (consumersOnRecord.size > 0) {\r\n noConsumerWarning.style.display = 'none';\r\n noConsumerWarning.classList.remove('error');\r\n } else {\r\n noConsumerWarning.style.display = 'block';\r\n noConsumerWarning.classList.add('error');\r\n }\r\n setBtnStatusOfAddRoute();\r\n }\r\n function updateConsumerData(data) {\r\n const { consumerId, key, value } = data\r\n consumersOnRecord.get(consumerId)[key] = value;\r\n }\r\n function retrieveConsumerData(consumerId, key) {\r\n return consumersOnRecord.get(consumerId)[key];\r\n }\r\n\r\n function deleteRoute() {\r\n /*\r\n When Deleting a route:\r\n * can only delete non-batched routes\r\n * Warn before delete\r\n * If there is a vehicle inspection completed for the route also warn that it will be deleted\r\n */\r\n function deleteRouteAccept() {\r\n pendingSave.show('Deleting Route...');\r\n try {\r\n const deleteProms = []\r\n //Delete Inspection:\r\n if (vehicleInspection !== \"\") deleteProms.push(TRANS_vehicleInspectionAjax.deleteVehicleInspection(vehicleInspection));\r\n //Delete Route\r\n deleteProms.push(TRANS_manageRoutesAjax.deleteTrip(selectedRouteId))\r\n Promise.all(deleteProms).then(() => {\r\n pendingSave.fulfill('Deleted');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn();\r\n TRANS_manageRoutes.init(false);\r\n }, 1000)\r\n })\r\n } catch (error) {\r\n console.error(error)\r\n pendingSave.reject('Failed to delete Route.')\r\n setTimeout(() => {\r\n failSave.hide();\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn();\r\n TRANS_manageRoutes.init(false);\r\n }, 1000)\r\n }\r\n }\r\n const warningMessage = vehicleInspection === \"\" ?\r\n \"You are sure you would like to delete this Route?\" :\r\n \"Are you sure you would like to delete this Route and Vehicle Inspection?\"\r\n UTIL.warningPopup({\r\n message: warningMessage,\r\n hideX: true,\r\n accept: {\r\n callback: deleteRouteAccept,\r\n text: 'YES'\r\n },\r\n reject: {\r\n callback: () => {},\r\n text: 'NO'\r\n }\r\n });\r\n\r\n }\r\n\r\n function saveData() {\r\n notTodeleteConsumers = [];\r\n pendingSave.show('Saving Route...')\r\n try {\r\n // Check for errors first\r\n const errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) throw \"err exist\"\r\n const routeName = routeNameInput.querySelector('input').value;\r\n const startTime = routeStartInput.querySelector('input').value\r\n const endTime = routeEndInput.querySelector('input').value\r\n const odoStart = routeStartOdo.querySelector('input').value\r\n const odoEnd = routeEndOdo.querySelector('input').value;\r\n const billingType = document.getElementById(\"milesRadio\").checked ? \"M\":\"T\";\r\n const dbCallArr = [];\r\n const tripData = {\r\n token: $.session.Token,\r\n tripsCompletedId: selectedRouteId,\r\n odometerStart: odoStart,\r\n odometerStop: odoEnd,\r\n startTime: startTime,\r\n endTime: endTime,\r\n driverId: tripInfo.driverId,\r\n otherRiderId: tripInfo.otherRider,\r\n vehicleId: tripInfo.vehicleInformationId,\r\n locationId: tripInfo.locationId,\r\n billingType: billingType,\r\n tripName: UTIL.removeUnsavableNoteText(routeName),\r\n };\r\n dbCallArr.push(TRANS_manageRoutesAjax.updateManageTripDetails(tripData));\r\n if (deleteInspection) dbCallArr.push(TRANS_vehicleInspectionAjax.deleteVehicleInspection(vehicleInspection)) \r\n consumersOnRecord.forEach((val,key,map) => {\r\n notTodeleteConsumers.push(key);\r\n const { alternateAddress, completedDetailId, directions, pickupOrder, notes, riderStatus, scheduledTime, specialInstructions, totalTravelTime } = val\r\n const consumerDetailSubmit = {\r\n token: $.session.Token,\r\n tripDetailId: completedDetailId ? completedDetailId : '',\r\n tripsCompletedId: selectedRouteId,\r\n consumerId: key,\r\n alternateAddress: alternateAddress ? alternateAddress : '',\r\n scheduledTime: scheduledTime ? scheduledTime : '',\r\n totalTravelTime: totalTravelTime ? totalTravelTime : '',\r\n riderStatus: riderStatus,\r\n specialInstructions: specialInstructions ? specialInstructions : '',\r\n directions: directions ? directions : '',\r\n pickupOrder: pickupOrder ? pickupOrder : '',\r\n notes: notes ? notes: '',\r\n };\r\n dbCallArr.push(TRANS_routeDocumentationAjax.insertUpdateTripConsumers(consumerDetailSubmit));\r\n });\r\n consumersToRemove.forEach(consumer => { \r\n let IsSameInsertedConsumerFind = notTodeleteConsumers.includes(consumer);\r\n const data = {\r\n tripsCompletedId: selectedRouteId,\r\n consumerId: consumer\r\n }\r\n if (!IsSameInsertedConsumerFind) {\r\n dbCallArr.push(TRANS_routeDocumentationAjax.deleteConsumerFromTrip(data))\r\n } \r\n }); \r\n Promise.all(dbCallArr).then(() => {\r\n // Get Alt Addresses from DB Again:\r\n TRANS_mainLanding.updateAltAddress();\r\n pendingSave.fulfill('Save Successful');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn();\r\n TRANS_manageRoutes.init(false);\r\n }, 1000)\r\n })\r\n } catch (error) {\r\n if (error === 'err exist') {\r\n pendingSave.reject('Failed to save. Please correct any errors that exist on the route.')\r\n console.error('Failing due to odometer or time overlap. Check odometer and time overlaps.')\r\n } else {\r\n pendingSave.reject('Failed to save. Please try again.')\r\n }\r\n console.error(error)\r\n setTimeout(() => failSave.hide(), 3000)\r\n }\r\n }\r\n function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case \"miniRosterDone\": {\r\n const selectedConsumers = roster2.getSelectedConsumersMiniRoster();\r\n selectedConsumers.forEach(async consumer => {\r\n const consumerDetails = (await TRANS_routeDocumentationAjax.getConsumerDetails(consumer.id)).getConsumerDetailsResult[0];\r\n consumersOnRecord.set(consumer.id, consumerDetails);\r\n consumersOnRecord.get(consumer.id)['riderStatus'] = '';\r\n const transportationCard = TRANS_consumerDocCard.createCard(consumer.id, consumerDetails);\r\n consumerSectionBody.appendChild(transportationCard);\r\n if (consumersOnRecord.size > 0) {\r\n noConsumerWarning.style.display = 'none';\r\n noConsumerWarning.classList.remove('error');\r\n } else {\r\n noConsumerWarning.style.display = 'block';\r\n noConsumerWarning.classList.add('error');\r\n }\r\n setBtnStatusOfAddRoute();\r\n })\r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n DOM.toggleNavLayout();\r\n roster2.clearSelectedConsumers();\r\n break;\r\n }\r\n }\r\n }\r\n function init(opts) {\r\n const { batched, routeId, date, routeName, locationName, addHocRoute, vehicleInspectionId } = opts\r\n selectedRouteId = routeId;\r\n selectedDate = date;\r\n selectedRouteName = routeName;\r\n selectedLocationName = locationName;\r\n isAddHoc = addHocRoute;\r\n vehicleInspection = vehicleInspectionId;\r\n deleteInspection = false;\r\n isBatched = batched;\r\n if (batched) {\r\n ro = true;\r\n console.warn(\"Route is batched. No changes can be made\")\r\n } else {\r\n ro = false;\r\n }\r\n if (isAddHoc) {\r\n console.info('This is an Add Hoc Route. Changes to route name and location are allowed')\r\n } else {\r\n console.info('This is not an Add Hoc Route. No changes to route name or location allowed')\r\n }\r\n consumersOnRecord.clear();\r\n consumersToRemove = [];\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n roster2.miniRosterinit(null, { hideDate: true });\r\n roster2.updateSelectedDate(selectedDate);\r\n setActiveModuleSectionAttribute(\"editRoute\");\r\n loadData(selectedRouteId)\r\n }\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n consumerRemoveAction,\r\n updateConsumerData,\r\n retrieveConsumerData\r\n };\r\n})();\r\n","const TRANS_manageRoutes = (function () {\r\n let routesTable;\r\n let selectedRoutes, filteredRoutes;\r\n let filterOpts;\r\n let tripsStatus;\r\n let multiEditEnabled, multiSelRoutes, multiSelectBtn;\r\n let updateDriverBtn, updateVehicleBtn;\r\n\r\n let filterBtn;\r\n let filteredDateStart;\r\n let filteredDateStop;\r\n let selectedDriver;\r\n let selectedLocation;\r\n let selectedRouteStatus;\r\n let totalRouteCount;\r\n let selectedVehicle;\r\n\r\n let btnWrap;\r\n let filteredDateStartBtnWrap;\r\n let selectedDriverBtnWrap;\r\n let selectedLocationBtnWrap;\r\n let selectedRouteStatusBtnWrap;\r\n let selectedVehicleBtnWrap;\r\n let totalRouteCountBtnWrap;\r\n\r\n function buildPage(resetFilter) {\r\n\r\n const backButton = button.build({\r\n id: 'myRouteBackButton',\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'arrowBack',\r\n callback: () => {\r\n setActiveModuleSectionAttribute(null);\r\n TRANS_mainLanding.init();\r\n },\r\n });\r\n\r\n if (resetFilter) {\r\n filterOpts = {\r\n token: $.session.Token,\r\n serviceDateStart: UTIL.getTodaysDate(),\r\n serviceDateStop: UTIL.getTodaysDate(),\r\n personId: '%',\r\n locationId: '%',\r\n routeStatus: '%',\r\n };\r\n\r\n filteredDateStart = UTIL.abbreviateDateYear(UTIL.formatDateFromIso(UTIL.getTodaysDate(), '/'));\r\n filteredDateStop = UTIL.abbreviateDateYear(UTIL.formatDateFromIso(UTIL.getTodaysDate(), '/'));\r\n selectedDriver = '%';\r\n selectedLocation = '%';\r\n selectedRouteStatus = '%';\r\n totalRouteCount = '0';\r\n selectedVehicle = '%';\r\n }\r\n\r\n multiSelectBtn = button.build({\r\n id: 'multiSelect',\r\n text: 'Multi select',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectBtn',\r\n callback: function () {\r\n enableMultiEditRows();\r\n filterBtn.classList.toggle('disabled');\r\n backButton.classList.toggle('disabled');\r\n },\r\n });\r\n\r\n routesTable = table.build({\r\n tableId: 'manageRouteTable',\r\n headline: 'Routes',\r\n columnHeadings: [\r\n 'Date',\r\n 'Route',\r\n 'Driver',\r\n 'Vehicle',\r\n 'Location',\r\n 'Start Odometer',\r\n 'End Odometer',\r\n 'Start Time',\r\n 'Stop Time',\r\n ],\r\n });\r\n routesTable.setAttribute('data-multiselect-enabled', false);\r\n // * FILTERED BY DISPLAY\r\n const filteredByDisplay = buildFilteredBy();\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = routesTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'date'); // Date\r\n headers[1].setAttribute('data-type', 'string'); // Route\r\n headers[2].setAttribute('data-type', 'string'); // Driver\r\n headers[3].setAttribute('data-type', 'string'); // Vehicle\r\n headers[4].setAttribute('data-type', 'string'); // Location \r\n headers[5].setAttribute('data-type', 'number'); // Start Odometer \r\n headers[6].setAttribute('data-type', 'number'); // End Odometer \r\n headers[7].setAttribute('data-type', 'date'); // Start Time \r\n headers[8].setAttribute('data-type', 'date'); // Stop Time \r\n\r\n DOM.ACTIONCENTER.appendChild(backButton);\r\n DOM.ACTIONCENTER.appendChild(filteredByDisplay);\r\n DOM.ACTIONCENTER.appendChild(routesTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(routesTable);\r\n\r\n getData();\r\n }\r\n\r\n function populateTable() {\r\n const tableData = [];\r\n multiSelRoutes = new Map();\r\n filteredRoutes.forEach((val, key, map) => {\r\n const {\r\n batchNumber,\r\n dateOfService,\r\n tripId,\r\n tripName,\r\n vehicleInfoId,\r\n odoStart,\r\n odoStop,\r\n startTime,\r\n endTime,\r\n locationName,\r\n driverId,\r\n tripInspection,\r\n tripsCompletedId,\r\n } = val;\r\n\r\n const vehicleNumber = TRANS_mainLanding.vehicleLookup(vehicleInfoId).vehicleNumber;\r\n const driver = TRANS_mainLanding.driverLookup(driverId);\r\n const addHocRoute = tripId === '' ? true : false;\r\n const batched = batchNumber === '' ? false : true;\r\n\r\n const driverDisp = `${driver.Last_Name}, ${driver.First_Name}`;\r\n const readDate = UTIL.abbreviateDateYear(dateOfService.split(' ')[0]);\r\n const readStartTime = UTIL.formatTimeString(startTime);\r\n const readEndTime = UTIL.formatTimeString(endTime);\r\n const readOdoStart = odoStart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n const readOdoStop = odoStop.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n const status = tripsStatus.get(tripsCompletedId);\r\n\r\n const rowValues = [\r\n readDate,\r\n tripName,\r\n driverDisp,\r\n vehicleNumber,\r\n locationName,\r\n readOdoStart,\r\n readOdoStop,\r\n readStartTime,\r\n readEndTime,\r\n ];\r\n tableData.push({\r\n values: rowValues,\r\n id: key,\r\n attributes: [{ key: 'data-route-status', value: status }],\r\n onClick: evt => {\r\n if (multiEditEnabled) {\r\n if (batched) {\r\n console.info(`route ${key} is batched`);\r\n // evt.target.classList.add('batchedWarn');\r\n const batchWarnEl = document.createElement('span');\r\n batchWarnEl.innerText = 'ROUTE IS BATCHED';\r\n batchWarnEl.classList.add('batchedWarn');\r\n evt.target.appendChild(batchWarnEl);\r\n setTimeout(() => {\r\n // evt.target.classList.remove('batchedWarn');\r\n batchWarnEl.remove();\r\n }, 1000);\r\n } else {\r\n evt.target.classList.toggle('selected');\r\n multiSelRoutes.has(key) ? multiSelRoutes.delete(key) : multiSelRoutes.set(key, val);\r\n if (multiSelRoutes.size > 0) {\r\n updateDriverBtn.classList.remove('disabled');\r\n updateVehicleBtn.classList.remove('disabled');\r\n } else {\r\n updateDriverBtn.classList.add('disabled');\r\n updateVehicleBtn.classList.add('disabled');\r\n }\r\n }\r\n } else {\r\n TRANS_manageEditRoute.init({\r\n addHocRoute: addHocRoute,\r\n routeId: key,\r\n date: UTIL.formatDateToIso(dateOfService.split(' ')[0]),\r\n routeName: tripName,\r\n locationName: locationName,\r\n vehicleInspectionId: tripInspection,\r\n batched: batched,\r\n });\r\n }\r\n },\r\n });\r\n });\r\n table.populate(routesTable, tableData);\r\n }\r\n\r\n function buildFilteredBy() {\r\n let filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet()\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n const driverLookup = TRANS_mainLanding.driverLookup(filterOpts.personId);\r\n const locationLookup = TRANS_mainLanding.locationLookup(filterOpts.locationId);\r\n const vehicleLookup = TRANS_mainLanding.vehicleFilteredLookup(filterOpts.vehicleId);\r\n\r\n filteredDateStart = UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(filterOpts.serviceDateStart, '/'),\r\n );\r\n filteredDateStop = UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(filterOpts.serviceDateStop, '/'),\r\n );\r\n selectedDriver = driverLookup\r\n ? `${driverLookup.Last_Name}, ${driverLookup.First_Name}`\r\n : 'All';\r\n selectedLocation = locationLookup ? locationLookup.Name : 'All';\r\n selectedVehicle = vehicleLookup ? vehicleLookup.vehicleNumber : 'All';\r\n totalRouteCount = filteredRoutes ? filteredRoutes.size : '0';\r\n\r\n\r\n switch (filterOpts.routeStatus) {\r\n case 'NS':\r\n selectedRouteStatus = 'Not Started';\r\n break;\r\n case 'IP':\r\n selectedRouteStatus = 'In Progress';\r\n break;\r\n case 'C':\r\n selectedRouteStatus = 'Completed';\r\n break;\r\n default:\r\n selectedRouteStatus = 'All';\r\n break;\r\n }\r\n\r\n if (document.getElementById('filteredDateStartBtn') != null)\r\n document.getElementById('filteredDateStartBtn').innerHTML = 'Date: ' + filteredDateStart + ' - ' + filteredDateStop;\r\n\r\n\r\n if (selectedDriver === '%' || selectedDriver === 'All') {\r\n btnWrap.appendChild(selectedDriverBtnWrap);\r\n btnWrap.removeChild(selectedDriverBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedDriverBtnWrap);\r\n if (document.getElementById('selectedDriverBtn') != null)\r\n document.getElementById('selectedDriverBtn').innerHTML = 'Driver: ' + selectedDriver;\r\n }\r\n\r\n if (selectedLocation === '%' || selectedLocation === 'All') {\r\n btnWrap.appendChild(selectedLocationBtnWrap);\r\n btnWrap.removeChild(selectedLocationBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedLocationBtnWrap);\r\n if (document.getElementById('selectedLocationBtn') != null)\r\n document.getElementById('selectedLocationBtn').innerHTML = 'Location: ' + selectedLocation;\r\n }\r\n\r\n if (selectedRouteStatus === '%' || selectedRouteStatus === 'All') {\r\n btnWrap.appendChild(selectedRouteStatusBtnWrap);\r\n btnWrap.removeChild(selectedRouteStatusBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedRouteStatusBtnWrap);\r\n if (document.getElementById('selectedRouteStatusBtn') != null)\r\n document.getElementById('selectedRouteStatusBtn').innerHTML = 'Route Status: ' + selectedRouteStatus;\r\n }\r\n\r\n if (selectedVehicle === '%' || selectedVehicle === 'All') {\r\n btnWrap.appendChild(selectedVehicleBtnWrap);\r\n btnWrap.removeChild(selectedVehicleBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedVehicleBtnWrap);\r\n if (document.getElementById('selectedVehicleBtn') != null)\r\n document.getElementById('selectedVehicleBtn').innerHTML = 'Vehicle: ' + selectedVehicle;\r\n }\r\n\r\n if (document.getElementById('totalRouteCountBtn') != null)\r\n document.getElementById('totalRouteCountBtn').innerHTML = 'Total Route Count: ' + totalRouteCount;\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'filter',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n TRANS_manageRoutesFilter.init(filterOpts, 'ALL');\r\n },\r\n });\r\n\r\n filteredDateStartBtn = button.build({\r\n id: 'filteredDateStartBtn',\r\n text: 'Date: ' + filteredDateStart + ' - ' + filteredDateStop,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'filteredDateStartBtn') },\r\n });\r\n\r\n selectedDriverBtn = button.build({\r\n id: 'selectedDriverBtn',\r\n text: 'Driver: ' + selectedDriver,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'selectedDriverBtn') },\r\n });\r\n selectedDriverCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('selectedDriverBtn') },\r\n });\r\n\r\n selectedLocationBtn = button.build({\r\n id: 'selectedLocationBtn',\r\n text: 'Location: ' + selectedLocation,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'selectedLocationBtn') },\r\n });\r\n selectedLocationCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('selectedLocationBtn') },\r\n });\r\n\r\n selectedRouteStatusBtn = button.build({\r\n id: 'selectedRouteStatusBtn',\r\n text: 'Route Status: ' + selectedRouteStatus,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'selectedRouteStatusBtn') },\r\n });\r\n selectedRouteStatusCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('selectedRouteStatusBtn') },\r\n });\r\n\r\n totalRouteCountBtn = button.build({\r\n id: 'totalRouteCountBtn',\r\n text: 'Total Route Count: ' + totalRouteCount,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n });\r\n\r\n selectedVehicleBtn = button.build({\r\n id: 'selectedVehicleBtn',\r\n text: 'Vehicle: ' + selectedVehicle,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'selectedVehicleBtn') },\r\n });\r\n selectedVehicleCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('selectedVehicleBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n filteredDateStartBtnWrap = document.createElement('div');\r\n filteredDateStartBtnWrap.classList.add('filterSelectionBtnWrap');\r\n filteredDateStartBtnWrap.appendChild(filteredDateStartBtn);\r\n btnWrap.appendChild(filteredDateStartBtnWrap);\r\n\r\n selectedDriverBtnWrap = document.createElement('div');\r\n selectedDriverBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedDriverBtnWrap.appendChild(selectedDriverBtn);\r\n selectedDriverBtnWrap.appendChild(selectedDriverCloseBtn);\r\n btnWrap.appendChild(selectedDriverBtnWrap);\r\n\r\n selectedLocationBtnWrap = document.createElement('div');\r\n selectedLocationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedLocationBtnWrap.appendChild(selectedLocationBtn);\r\n selectedLocationBtnWrap.appendChild(selectedLocationCloseBtn);\r\n btnWrap.appendChild(selectedLocationBtnWrap);\r\n\r\n selectedRouteStatusBtnWrap = document.createElement('div');\r\n selectedRouteStatusBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedRouteStatusBtnWrap.appendChild(selectedRouteStatusBtn);\r\n selectedRouteStatusBtnWrap.appendChild(selectedRouteStatusCloseBtn);\r\n btnWrap.appendChild(selectedRouteStatusBtnWrap);\r\n\r\n totalRouteCountBtnWrap = document.createElement('div');\r\n totalRouteCountBtnWrap.classList.add('filterSelectionBtnWrap');\r\n totalRouteCountBtnWrap.appendChild(totalRouteCountBtn);\r\n btnWrap.appendChild(totalRouteCountBtnWrap);\r\n\r\n selectedVehicleBtnWrap = document.createElement('div');\r\n selectedVehicleBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedVehicleBtnWrap.appendChild(selectedVehicleBtn);\r\n selectedVehicleBtnWrap.appendChild(selectedVehicleCloseBtn);\r\n btnWrap.appendChild(selectedVehicleBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'selectedLocationBtn') {\r\n filterOpts.locationId = '%';\r\n }\r\n if (closeFilter == 'selectedRouteStatusBtn') {\r\n filterOpts.routeStatus = '%';\r\n }\r\n if (closeFilter == 'selectedDriverBtn') {\r\n filterOpts.personId = '%';\r\n }\r\n if (closeFilter == 'selectedVehicleBtn') {\r\n filterOpts.vehicleId = '%';\r\n }\r\n\r\n getData();\r\n }\r\n\r\n async function getData() {\r\n table.clear(routesTable);\r\n PROGRESS__ANYWHERE.init();\r\n PROGRESS__ANYWHERE.SPINNER.show(DOM.ACTIONCENTER, 'Gathering Routes...');\r\n const locationPermissions = TRANS_mainLanding.getLocations();\r\n const tmpRoutes = (await TRANS_manageRoutesAjax.getTrips(filterOpts)).getTripsResult;\r\n const routeMap = new Map();\r\n tmpRoutes.forEach(route => {\r\n if (locationPermissions.has(route.locationId)) {\r\n routeMap.set(route.tripsCompletedId, route);\r\n } else {\r\n console.info(\r\n `skipping route ${route.tripsCompletedId}. User does not have permission to the route's location.`,\r\n );\r\n }\r\n });\r\n filteredRoutes = routeMap;\r\n PROGRESS__ANYWHERE.SPINNER.hide(DOM.ACTIONCENTER);\r\n determineTripStatus();\r\n filterTripStatus();\r\n buildFilteredBy();\r\n populateTable();\r\n }\r\n\r\n function filterApply(opts) {\r\n filterOpts = opts;\r\n getData();\r\n }\r\n\r\n function filterTripStatus() {\r\n if (filterOpts.routeStatus === '%') return;\r\n tripsStatus;\r\n let tripsWithFilteredStatus = [...tripsStatus.entries()]\r\n .filter(({ 1: v }) => v === filterOpts.routeStatus)\r\n .map(([k]) => k);\r\n const tempFilteredRoutes = new Map();\r\n tripsWithFilteredStatus.forEach(tripId => {\r\n tempFilteredRoutes.set(tripId, filteredRoutes.get(tripId));\r\n });\r\n filteredRoutes = tempFilteredRoutes;\r\n }\r\n\r\n function enableMultiEditRows() {\r\n setupActionNav();\r\n multiEditEnabled = !multiEditEnabled;\r\n multiSelectBtn.classList.toggle('enabled');\r\n\r\n if (multiEditEnabled) {\r\n ACTION_NAV.show();\r\n routesTable.setAttribute('data-multiselect-enabled', true);\r\n } else {\r\n // clear out selected rows?\r\n ACTION_NAV.hide();\r\n multiSelRoutes.clear();\r\n routesTable.setAttribute('data-multiselect-enabled', false);\r\n }\r\n\r\n const highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n\r\n function setupActionNav() {\r\n updateDriverBtn = button.build({\r\n text: 'Update Driver',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: () => {\r\n TRANS_updatePopup.init({ updateType: 'driver', selectedRoutes: multiSelRoutes });\r\n },\r\n });\r\n updateVehicleBtn = button.build({\r\n text: 'Update Vehicle',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: () => {\r\n TRANS_updatePopup.init({ updateType: 'vehicle', selectedRoutes: multiSelRoutes });\r\n },\r\n });\r\n\r\n ACTION_NAV.clear();\r\n ACTION_NAV.populate([updateDriverBtn, updateVehicleBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n\r\n function massUpdateCallback() {\r\n const event = new MouseEvent('click', {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true,\r\n });\r\n multiSelectBtn.dispatchEvent(event);\r\n getData();\r\n }\r\n\r\n function determineTripStatus() {\r\n const tempStatusMap = new Map();\r\n filteredRoutes.forEach((val, key, map) => {\r\n const {\r\n endTime,\r\n odoStart,\r\n odoStop,\r\n startTime,\r\n tripType,\r\n totalConsumersOnRecord,\r\n consumerNoStatus,\r\n } = val;\r\n let status;\r\n\r\n // First break down into Miles or Trip. Miles and Trip have different definitions of being complete.\r\n switch (tripType) {\r\n case 'M':\r\n if (\r\n endTime === '' &&\r\n startTime === '' &&\r\n odoStart === '' &&\r\n odoStop === '' &&\r\n consumerNoStatus === totalConsumersOnRecord\r\n ) {\r\n // Nothing has been completed, so the trip has not started = NS\r\n status = 'NS';\r\n } else if (\r\n endTime !== '' &&\r\n startTime !== '' &&\r\n odoStart !== '' &&\r\n odoStop !== '' &&\r\n consumerNoStatus == 0\r\n ) {\r\n // Everything has been completed, so the trip is complete = C\r\n status = 'C';\r\n } else {\r\n // If something is completed... but not everything, its still in progress = IP\r\n status = 'IP';\r\n }\r\n break;\r\n case 'T':\r\n if (endTime === '' && startTime === '' && consumerNoStatus === totalConsumersOnRecord) {\r\n // Nothing has been completed, so the trip has not started = NS\r\n status = 'NS';\r\n } else if (endTime !== '' && startTime !== '' && consumerNoStatus == 0) {\r\n // Everything has been completed, so the trip is complete = C\r\n status = 'C';\r\n } else {\r\n // If something is completed... but not everything, its still in progress = IP\r\n status = 'IP';\r\n }\r\n break;\r\n\r\n default:\r\n console.error(\r\n 'There was a problem determining the completion status of the trip. No Miles/Trip Billing_Type found!',\r\n );\r\n status = 'NS';\r\n break;\r\n }\r\n\r\n tempStatusMap.set(key, status);\r\n });\r\n tripsStatus = tempStatusMap;\r\n }\r\n /** Manage Routes Init Function\r\n * @param {boolean} [resetFilter=True] False will not reset filter values\r\n */\r\n function init(resetFilter = true) {\r\n multiEditEnabled = false;\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('manageroute');\r\n buildPage(resetFilter);\r\n }\r\n return {\r\n init,\r\n filterApply,\r\n massUpdateCallback,\r\n };\r\n})();\r\n","const TRANS_manageRoutesAjax = (function() {\r\n\r\n function getTrips(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getTrips/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function massUpdateDriverVehicle(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/massUpdateDriverVehicle/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function updateManageTripDetails(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateManageTripDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction deleteTrip(tripsCompletedId) {\r\n\t\tconst data = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\ttripsCompletedId: tripsCompletedId,\r\n\t\t}\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteTrip/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n return {\r\n getTrips,\r\n\t\tmassUpdateDriverVehicle,\r\n\t\tupdateManageTripDetails,\r\n\t\tdeleteTrip\r\n }\r\n})();","const TRANS_manageRoutesFilter = (function () {\r\n // Inputs\r\n let startDateInput, endDateInput, driverDropdown, locationDropdown, routeStatusDropdown, vehicleDropdown;\r\n let filterOpts;\r\n let IsShow;\r\n\r\n function createFilterElements() {\r\n startDateInput = input.build({\r\n id: 'myRouteDateStart',\r\n label: 'From',\r\n type: 'date',\r\n style: 'secondary',\r\n value: filterOpts.serviceDateStart,\r\n });\r\n endDateInput = input.build({\r\n id: 'myRouteDateStop',\r\n label: 'To',\r\n type: 'date',\r\n style: 'secondary',\r\n value: filterOpts.serviceDateStop,\r\n });\r\n driverDropdown = dropdown.build({\r\n dropdownId: 'driverDropdown',\r\n label: 'Driver',\r\n style: 'secondary',\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n routeStatusDropdown = dropdown.build({\r\n dropdownId: 'routeStatusDropdown',\r\n label: 'Route Status',\r\n style: 'secondary',\r\n });\r\n vehicleDropdown = dropdown.build({\r\n dropdownId: 'vehicleDropdown',\r\n label: 'Vehicle',\r\n style: 'secondary',\r\n });\r\n }\r\n\r\n function buildFilterPopup(params) {\r\n const dateWrap = document.createElement('div');\r\n dateWrap.classList.add('dateWrap', 'btnWrap');\r\n\r\n const popup = POPUP.build({\r\n header: 'Filter',\r\n classNames: 'manageRoutesFilterPopup',\r\n });\r\n\r\n const applyButton = button.build({\r\n text: 'APPLY',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n TRANS_manageRoutes.filterApply(filterOpts);\r\n },\r\n });\r\n applyButton.style.width = '100%';\r\n\r\n dateWrap.appendChild(startDateInput);\r\n dateWrap.appendChild(endDateInput);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'filteredDateStartBtn')\r\n popup.appendChild(dateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'selectedDriverBtn')\r\n popup.appendChild(driverDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'selectedLocationBtn')\r\n popup.appendChild(locationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'selectedRouteStatusBtn')\r\n popup.appendChild(routeStatusDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'selectedVehicleBtn')\r\n popup.appendChild(vehicleDropdown);\r\n popup.appendChild(applyButton);\r\n POPUP.show(popup);\r\n\r\n populateDropdowns();\r\n eventListeners();\r\n }\r\n\r\n function populateDropdowns() {\r\n const driverDropdownData = [];\r\n const locationDropdownData = [];\r\n const vehicleDropdownData = [];\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n const locations = TRANS_mainLanding.getLocations();\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n const routeStatusDropdownData = [\r\n {\r\n value: '%',\r\n text: 'All',\r\n },\r\n {\r\n value: 'C',\r\n text: 'Completed',\r\n },\r\n {\r\n value: 'IP',\r\n text: 'In Progress',\r\n },\r\n {\r\n value: 'NS',\r\n text: 'Not Started',\r\n },\r\n ];\r\n\r\n drivers.forEach((val, key, map) => {\r\n driverDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`,\r\n });\r\n });\r\n locations.forEach((val, key, map) => {\r\n locationDropdownData.push({\r\n value: key,\r\n text: `${val.Name}`,\r\n });\r\n });\r\n vehicles.forEach((val, key, map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: `${val.vehicleNumber}`,\r\n });\r\n });\r\n driverDropdownData.unshift({ value: '%', text: 'All' });\r\n locationDropdownData.unshift({ value: '%', text: 'All' });\r\n vehicleDropdownData.unshift({ value: '%', text: 'All' });\r\n dropdown.populate(driverDropdown, driverDropdownData, filterOpts.personId);\r\n dropdown.populate(locationDropdown, locationDropdownData, filterOpts.locationId);\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData, filterOpts.vehicleId);\r\n dropdown.populate(\r\n routeStatusDropdown,\r\n routeStatusDropdownData,\r\n filterOpts.routeStatus,\r\n );\r\n }\r\n\r\n function eventListeners() {\r\n startDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n filterOpts.serviceDateStart = event.target.value;\r\n } else {\r\n event.target.value = filterOpts.serviceDateStart;\r\n }\r\n });\r\n endDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n filterOpts.serviceDateStop = event.target.value;\r\n } else {\r\n event.target.value = filterOpts.serviceDateStop;\r\n }\r\n });\r\n driverDropdown.addEventListener('change', event => {\r\n filterOpts.personId = event.target.value;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n filterOpts.locationId = event.target.value;\r\n });\r\n vehicleDropdown.addEventListener('change', event => {\r\n filterOpts.vehicleId = event.target.value;\r\n });\r\n routeStatusDropdown.addEventListener('change', event => {\r\n filterOpts.routeStatus = event.target.value;\r\n });\r\n }\r\n\r\n function isValidDate(d) {\r\n d = new Date(d);\r\n return d instanceof Date && !isNaN(d);\r\n }\r\n\r\n function init(opts, IsFilterShow) {\r\n filterOpts = opts;\r\n IsShow = IsFilterShow; \r\n createFilterElements();\r\n buildFilterPopup();\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const TRANS_updatePopup = (function() {\r\n\r\n let updateDropdown, currentDisplay, saveBtn;\r\n let updateType, routes;\r\n\r\n function createPopupElements() {\r\n switch (updateType) {\r\n case 'Driver':\r\n updateDropdown = dropdown.build({\r\n dropdownId: 'updateDropdown',\r\n label: 'Update selected routes driver to:',\r\n style: 'secondary'\r\n })\r\n break;\r\n case 'Vehicle':\r\n updateDropdown = dropdown.build({\r\n dropdownId: 'updateDropdown',\r\n label: 'Update selected routes vehicle to:',\r\n style: 'secondary'\r\n })\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function createCurrentDisplay() {\r\n currentDisplay = document.createElement('div');\r\n currentDisplay.classList.add('transCurrentDisplay');\r\n const updateDescription = document.createElement('h4');\r\n updateDescription.innerText = updateType === 'Driver' ? \r\n 'Selected Routes, and current drivers assigned:' :\r\n 'Selected Routes, and current vehicles assigned:';\r\n updateDescription.style.paddingBottom = '10px';\r\n currentDisplay.appendChild(updateDescription)\r\n routes.forEach((val, key, map) => {\r\n const driverLookup = TRANS_mainLanding.driverLookup(val.driverId);\r\n const vehicleLookup = TRANS_mainLanding.vehicleLookup(val.vehicleInfoId)\r\n\r\n const routeDisp = document.createElement('p');\r\n const driverDisp = `${driverLookup.Last_Name}, ${driverLookup.First_Name}`;\r\n const vehicleDisp = `${vehicleLookup.vehicleNumber}`;\r\n routeDisp.innerHTML = `${val.tripName}: ${updateType === 'Driver' ? driverDisp : vehicleDisp}`\r\n currentDisplay.appendChild(routeDisp)\r\n })\r\n }\r\n\r\n function buildFilterPopup() {\r\n const popup = POPUP.build({\r\n header: `Update ${updateType}`,\r\n classNames: 'updateRoutePopup'\r\n })\r\n\r\n saveBtn = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: 'disabled',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n saveData()\r\n }\r\n });\r\n saveBtn.style.width = '100%'\r\n popup.appendChild(currentDisplay)\r\n popup.appendChild(updateDropdown)\r\n popup.appendChild(saveBtn);\r\n POPUP.show(popup)\r\n\r\n populateDropdown();\r\n eventListener();\r\n }\r\n\r\n function eventListener() {\r\n updateDropdown.addEventListener('change', event => {\r\n if (event.target.value === \"\") {\r\n saveBtn.classList.add(\"disabled\")\r\n } else {\r\n saveBtn.classList.remove(\"disabled\")\r\n }\r\n })\r\n }\r\n\r\n function populateDropdown(params) {\r\n const dropdownData = []\r\n switch (updateType) {\r\n case 'Driver':\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n drivers.forEach((val,key,map) => {\r\n dropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n break;\r\n case 'Vehicle':\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n vehicles.forEach((val,key,map) => {\r\n dropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n break;\r\n default:\r\n break;\r\n }\r\n dropdownData.unshift({ value: '', text: ''});\r\n dropdown.populate(updateDropdown, dropdownData);\r\n }\r\n\r\n async function saveData() {\r\n pendingSave.show('Updating Routes...')\r\n try {\r\n const routeIdConcat = Array.from(routes.keys()).join(\"|\");\r\n const newUpdateVal = updateDropdown.firstChild.options[updateDropdown.firstChild.selectedIndex].value;\r\n const updateData = {\r\n token: $.session.Token,\r\n method: updateType,\r\n routeIdString: routeIdConcat,\r\n updateVal: newUpdateVal\r\n }\r\n await TRANS_manageRoutesAjax.massUpdateDriverVehicle(updateData);\r\n pendingSave.fulfill('Routes have been updated');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n TRANS_manageRoutes.massUpdateCallback();\r\n }, 3000)\r\n } catch (error) {\r\n pendingSave.reject('Failed to update routes. Please try again.')\r\n console.warn('Error saving updates');\r\n console.error(error);\r\n setTimeout(() => failSave.hide(), 3000)\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param {object} opts \r\n * @param {string} opts.updateType driver or vehicle\r\n * @param {string} opts.currentValue the current driver or vehicle\r\n * @param {array} opts.selectedRoutes Routes that are selected from the route dropdown\r\n */\r\n function init(opts) {\r\n updateType = UTIL.capitalize(opts.updateType);\r\n routes = opts.selectedRoutes;\r\n createPopupElements();\r\n createCurrentDisplay()\r\n buildFilterPopup()\r\n }\r\n return {\r\n init\r\n }\r\n})();","class EditResponsibleRelationshipsComponent {\r\n \r\n constructor(workflowId, people, callback){\r\n this.workflowId = workflowId;\r\n this.people = people;\r\n this.callback = callback; \r\n this.createPopup();\r\n this.cache = {};\r\n }\r\n \r\n editResponsibleRelationshipsFinished(){\r\n let {cache, workflowId, callback} = this;\r\n POPUP.hide(wfStepPopup); \r\n return callback(workflowId, cache); \r\n // update this call to pass the values that changed //\r\n }\r\n\r\n editResponsibleRelationshipsCancelled(){\r\n POPUP.hide(wfStepPopup); \r\n }\r\n\r\n enableButton(button, enable){\r\n enable ? button.classList.remove(\"disabled\") : button.classList.add(\"disabled\");//\r\n }\r\n\r\n containsErrors() {\r\n //MAT 2/12/2021 Seems to fix the Done button shading issue. Leaving old here in case other issues are caused\r\n //let errors = document.querySelectorAll(\".error\");\r\n let errors = wfStepPopup.querySelectorAll(\".error\");\r\n return errors.length !== 0;\r\n }\r\n\r\n async createPopup() {\r\n // let {description, dueDate, startDate, doneDate, responsiblePartyId, comments} = this.step;\r\n \r\n \r\n async function getResponsibleParties(workflowId) {\r\n let responsibleData = await WorkflowViewerAjax.getWFResponsibleParties({\r\n token: $.session.Token,\r\n workflowId: workflowId ? workflowId : 0,\r\n });\r\n \r\n return responsibleData;\r\n }\r\n\r\n let responsibleData = await getResponsibleParties(this.workflowId);\r\n\r\n let wfStepPopup = POPUP.build({\r\n header: (responsibleData.length == 0) ? \"There are no Responsible Parties defined for this workflow\" : \"Workflow Responsibility Relationship Assignments\",\r\n hideX: true,\r\n id: \"wfStepPopup\"\r\n });\r\n\r\n for(let i = 0; i < responsibleData.length; i++) {\r\n\r\n let dropDownList = dropdown.build({\r\n label: responsibleData[i].description,\r\n dropdownId: `responsibledropDownList_${responsibleData[i].responsiblePartyType}`,\r\n });\r\n\r\n this.cache[`responsibledropDownList_${responsibleData[i].responsiblePartyType}`] = {original : responsibleData[i].responsiblePartyId, modified : \"\"};\r\n\r\n dropDownList.addEventListener(\"change\", (e)=> {\r\n let originalvalues = this.cache;\r\n let modifiedvalue = e.target.value;\r\n let clickedddl = e.target.id;\r\n\r\n for (const ddl in originalvalues) {\r\n let ddlobjects = this.cache[ddl];\r\n if (ddl == clickedddl) {\r\n ddlobjects.modified = modifiedvalue;\r\n } \r\n }\r\n\r\n });\r\n\r\n wfStepPopup.appendChild(dropDownList);\r\n\r\n // populateDropdown(dropDownList, responsiblePartyId, this.people);\r\n let data = this.people.map((person) => ({\r\n id: person.peopleId, \r\n value: person.peopleId,\r\n text: person.lastName + \", \" + person.firstName\r\n })); \r\n data.unshift({ id: null, value: null, text: 'PLEASE SELECT A RESPONSIBLE PARTY' }); //ADD Blank value \r\n dropdown.populate(dropDownList, data, responsibleData[i].responsiblePartyId); \r\n }\r\n\r\n const raiseError = (element, errorMsg) => {\r\n if (!element.classList.contains(\"error\")){\r\n element.classList.add(\"error\");\r\n const event = new CustomEvent(\"errorRaised\", { bubbles: true, detail: { errorMsg }});\r\n element.dispatchEvent(event);\r\n }\r\n }\r\n\r\n const clearError = (element) => {\r\n if (element.classList.contains(\"error\")){\r\n element.classList.remove(\"error\");\r\n const event = new CustomEvent(\"errorCleared\", { bubbles: true });\r\n element.dispatchEvent(event);\r\n }\r\n }\r\n \r\n const isMaxLengthExceeded = (maxChars, length) => {\r\n return (length > maxChars);\r\n }\r\n\r\n const isEmpty = (inputValue) => {\r\n return inputValue === \"\" || inputValue === undefined || inputValue === null;\r\n }\r\n \r\n let doneBtn = button.build({\r\n id: \"wfStepDoneBtn\",\r\n text: \"done\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n callback: this.editResponsibleRelationshipsFinished.bind(this) \r\n });\r\n this.doneButton = doneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: \"wfStepCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: this.editResponsibleRelationshipsCancelled.bind(this)\r\n });\r\n \r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n if (responsibleData.length > 0) btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn); \r\n wfStepPopup.appendChild(btnWrap);\r\n \r\n wfStepPopup.addEventListener(\"errorRaised\", (event) => {\r\n \r\n this.enableButton(doneBtn, false); \r\n });\r\n\r\n wfStepPopup.addEventListener(\"errorCleared\", () => {\r\n this.enableButton(doneBtn, !this.containsErrors());\r\n });\r\n\r\n POPUP.show(wfStepPopup);\r\n }\r\n \r\n}","class EditWorkflowStepComponent {\r\n constructor(step, callback) {\r\n this.step = step;\r\n this.callback = callback;\r\n this.createPopup();\r\n this.populateDropdown();\r\n this.populateResponsiblePartyClassificationDropdown();\r\n this.cache = {};\r\n }\r\n\r\n editWorkflowStepFinished() {\r\n let { step, cache, callback } = this;\r\n POPUP.hide(wfStepPopup);\r\n return callback(step, cache);\r\n }\r\n\r\n editWorkflowStepCancelled() {\r\n POPUP.hide(wfStepPopup);\r\n }\r\n\r\n enableButton(button, enable) {\r\n enable ? button.classList.remove('disabled') : button.classList.add('disabled');\r\n }\r\n\r\n containsErrors() {\r\n //MAT 2/12/2021 Seems to fix the Done button shading issue. Leaving old here in case other issues are caused\r\n //let errors = document.querySelectorAll(\".error\");\r\n let errors = wfStepPopup.querySelectorAll('.error');\r\n return errors.length !== 0;\r\n }\r\n\r\n createPopup() {\r\n let { description, dueDate, startDate, doneDate, responsiblePartyId, comments } = this.step;\r\n let wfStepPopup = POPUP.build({\r\n header: 'Workflow Step',\r\n hideX: true,\r\n id: 'wfStepPopup',\r\n });\r\n\r\n const raiseError = (element, errorMsg) => {\r\n if (!element.classList.contains('error')) {\r\n element.classList.add('error');\r\n const event = new CustomEvent('errorRaised', { bubbles: true, detail: { errorMsg } });\r\n element.dispatchEvent(event);\r\n }\r\n };\r\n\r\n const clearError = element => {\r\n if (element.classList.contains('error')) {\r\n element.classList.remove('error');\r\n const event = new CustomEvent('errorCleared', { bubbles: true });\r\n element.dispatchEvent(event);\r\n }\r\n };\r\n\r\n const isMaxLengthExceeded = (maxChars, length) => {\r\n return length > maxChars;\r\n };\r\n\r\n const isEmpty = inputValue => {\r\n return inputValue === '' || inputValue === undefined || inputValue === null;\r\n };\r\n\r\n const descriptionCharLimit = 100;\r\n\r\n let descriptionTextInput = input.build({\r\n id: 'step-description',\r\n label: '*Description',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: description,\r\n initialLength: description ? description.length : 0,\r\n charLimit: descriptionCharLimit,\r\n });\r\n\r\n descriptionTextInput.addEventListener('change', e => {\r\n this.step.description = e.target.value;\r\n });\r\n\r\n descriptionTextInput.addEventListener('keyup', event => {\r\n return validateDescription(event.target.value);\r\n });\r\n\r\n descriptionTextInput.addEventListener('paste', event => {\r\n let combinedText = event.target.value + event.clipboardData.getData('text/plain');\r\n return validateDescription(combinedText);\r\n });\r\n if (this.step.allowStepEdit === 'False') {\r\n descriptionTextInput.classList.add('disabled');\r\n }\r\n\r\n const validateDescription = inputValue => {\r\n if (isEmpty(inputValue)) {\r\n raiseError(descriptionTextInput, 'step description is required');\r\n return false;\r\n } else {\r\n if (isMaxLengthExceeded(descriptionCharLimit, inputValue.length)) {\r\n raiseError(descriptionTextInput, 'step description cannot exceed ' + descriptionCharLimit + ' characters');\r\n return false;\r\n }\r\n }\r\n clearError(descriptionTextInput);\r\n return true;\r\n };\r\n\r\n let dueDateInput = input.build({\r\n label: 'Due Date',\r\n type: 'date',\r\n value: moment(dueDate, 'M/D/YYYY').format('YYYY-MM-DD'),\r\n });\r\n\r\n dueDateInput.addEventListener('change', e => {\r\n if (e.target.value === '') {\r\n this.step.dueDate = null;\r\n } else {\r\n this.step.dueDate = moment(e.target.value, 'YYYY-MM-DD').format('M/D/YYYY');\r\n let changed = dueDate === this.step.dueDate ? false : true;\r\n let wfeventid = dueDate === null || dueDate === '' ? 4 : 5; // setting due date is workflow eventid = 4, updating due date is workflow eventid = 5\r\n this.cache['stepDueDate'] = {\r\n original: dueDate,\r\n modified: this.step.dueDate,\r\n isChanged: changed,\r\n eventTypeId: this.step.stepId,\r\n eventType: 'step',\r\n eventId: wfeventid,\r\n };\r\n }\r\n });\r\n\r\n let startDateInput = input.build({\r\n label: 'Start Date',\r\n type: 'date',\r\n value: moment(startDate, 'M/D/YYYY').format('YYYY-MM-DD'),\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n\r\n startDateInput.addEventListener('change', e => {\r\n if (e.target.value === '') {\r\n this.step.startDate = null;\r\n } else {\r\n this.step.startDate = moment(e.target.value, 'YYYY-MM-DD').format('M/D/YYYY');\r\n let changed = startDate === this.step.startDate ? false : true;\r\n let wfeventid = startDate === null || startDate === '' ? 2 : 3; // setting start date is workflow eventid = 2, updating start date is workflow eventid = 3\r\n this.cache['stepStartDate'] = {\r\n original: startDate,\r\n modified: this.step.startDate,\r\n isChanged: changed,\r\n eventTypeId: this.step.stepId,\r\n eventType: 'step',\r\n eventId: wfeventid,\r\n };\r\n }\r\n });\r\n\r\n let doneDateInput = input.build({\r\n label: 'Done Date',\r\n type: 'date',\r\n value: moment(doneDate, 'M/D/YYYY').format('YYYY-MM-DD'),\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n\r\n doneDateInput.addEventListener('change', e => {\r\n if (e.target.value === '') {\r\n this.step.doneDate = null;\r\n } else {\r\n this.step.doneDate = moment(e.target.value, 'YYYY-MM-DD').format('M/D/YYYY');\r\n let changed = doneDate === this.step.doneDate ? false : true;\r\n let wfeventid = doneDate === null || doneDate === '' ? 6 : 7; // setting done date is workflow eventid = 6, updating done date is workflow eventid = 7\r\n this.cache['stepDoneDate'] = {\r\n original: doneDate,\r\n modified: this.step.doneDate,\r\n isChanged: changed,\r\n eventTypeId: this.step.stepId,\r\n eventType: 'step',\r\n eventId: wfeventid,\r\n };\r\n }\r\n });\r\n\r\n let responsiblePartyClassificationDropdown = dropdown.build({\r\n label: 'Responsible Party Classification',\r\n dropdownId: 'responsiblePartyClassificationDropdown',\r\n });\r\n\r\n responsiblePartyClassificationDropdown.addEventListener('change', e => {\r\n let typeID = e.target.value;\r\n this.poplateResponsibleDropDownbyTypeID(typeID);\r\n });\r\n\r\n let responsibleDropdown = dropdown.build({\r\n label: 'Responsible',\r\n dropdownId: 'responsibleDropdown',\r\n });\r\n\r\n responsibleDropdown.addEventListener('change', e => {\r\n this.step.responsiblePartyId = e.target.value;\r\n // responsiblePartyId\r\n let changed = responsiblePartyId === this.step.responsiblePartyId ? false : true;\r\n let wfeventid = responsiblePartyId === null || responsiblePartyId === '' ? 8 : 9; // setting responsiblePartyId is workflow eventid = 8, updating responsiblePartyId is workflow eventid = 9\r\n this.cache['stepResponsiblePartyId'] = {\r\n original: responsiblePartyId,\r\n modified: this.step.responsiblePartyId,\r\n isChanged: changed,\r\n eventTypeId: this.step.stepId,\r\n eventType: 'step',\r\n eventId: wfeventid,\r\n };\r\n });\r\n\r\n let commentsTextInput = input.build({\r\n label: 'Comments',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: comments,\r\n });\r\n\r\n commentsTextInput.addEventListener('change', e => {\r\n this.step.comments = e.target.value;\r\n let changed = comments === this.step.comments ? false : true;\r\n this.cache['stepComments'] = {\r\n original: comments,\r\n modified: this.step.comments,\r\n isChanged: changed,\r\n eventTypeId: this.step.stepId,\r\n eventType: 'step',\r\n eventId: 11,\r\n };\r\n });\r\n\r\n let doneBtn = button.build({\r\n id: 'wfStepDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: this.editWorkflowStepFinished.bind(this),\r\n });\r\n this.doneButton = doneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: 'wfStepCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: this.editWorkflowStepCancelled.bind(this),\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n wfStepPopup.appendChild(descriptionTextInput);\r\n wfStepPopup.appendChild(dueDateInput);\r\n wfStepPopup.appendChild(startDateInput);\r\n wfStepPopup.appendChild(doneDateInput);\r\n wfStepPopup.appendChild(responsiblePartyClassificationDropdown);\r\n wfStepPopup.appendChild(responsibleDropdown);\r\n wfStepPopup.appendChild(commentsTextInput);\r\n wfStepPopup.appendChild(btnWrap);\r\n\r\n wfStepPopup.addEventListener('errorRaised', event => {\r\n this.enableButton(doneBtn, false);\r\n });\r\n\r\n wfStepPopup.addEventListener('errorCleared', () => {\r\n this.enableButton(doneBtn, !this.containsErrors());\r\n });\r\n\r\n POPUP.show(wfStepPopup);\r\n\r\n validateDescription(description);\r\n }\r\n\r\n async populateDropdown() {\r\n let responsibleParty = await WorkflowViewerAjax.getResponsiblePartyIdforThisEditStep({\r\n stepId: this.step.stepId,\r\n });\r\n\r\n let { responsiblePartyId, people } = this.step;\r\n let data = this.step.people.map(person => ({\r\n id: person.peopleId,\r\n value: person.peopleId,\r\n text: person.lastName + ', ' + person.firstName,\r\n }));\r\n data.unshift({ id: null, value: '', text: '' }); //ADD Blank value\r\n if (responsibleParty.length > 0) {\r\n dropdown.populate('responsibleDropdown', data, responsibleParty[0].responsiblePartyId);\r\n } else {\r\n dropdown.populate('responsibleDropdown', data, '');\r\n }\r\n }\r\n\r\n async populateResponsiblePartyClassificationDropdown() {\r\n let responsiblePartyClassification = await WorkflowViewerAjax.getResponsiblePartyClassification();\r\n let responsiblePartyClassificationData = responsiblePartyClassification.map(responsibleParty => ({\r\n id: responsibleParty.typeID,\r\n value: responsibleParty.typeID,\r\n text: responsibleParty.description,\r\n }));\r\n responsiblePartyClassificationData.unshift({ id: null, value: '0', text: 'ALL' });\r\n dropdown.populate('responsiblePartyClassificationDropdown', responsiblePartyClassificationData, '');\r\n }\r\n\r\n async poplateResponsibleDropDownbyTypeID(typeID) {\r\n let peopleId;\r\n\r\n if ($.loadedApp === 'plan') {\r\n const attachmentInputs = document.querySelector('.generalInfo');\r\n peopleId = attachmentInputs.dataset.peopleId;\r\n } else {\r\n peopleId = $.workflowConsumerId;\r\n }\r\n\r\n const { getPeopleNamesResult: people } = await WorkflowViewerAjax.getPeopleNamesAsync(peopleId, typeID);\r\n let data = people.map(person => ({\r\n id: person.peopleId,\r\n value: person.peopleId,\r\n text: person.lastName + ', ' + person.firstName,\r\n }));\r\n data.unshift({ id: null, value: '', text: '' }); //ADD Blank value\r\n dropdown.populate('responsibleDropdown', data, '');\r\n }\r\n}\r\n","class FormsWorkflowStepComponent {\r\n constructor(step, docOrder) {\r\n this.step = step;\r\n // this.callback = callback;\r\n this.docOrder = docOrder;\r\n this.templateId;\r\n this.templateName;\r\n this.formName;\r\n this.formId;\r\n this.createPopup();\r\n this.populateDropdown();\r\n }\r\n\r\n formsWorkflowStepFinished() {\r\n let { step, cache, callback } = this;\r\n POPUP.hide(selectTemplatePopup);\r\n let isTemplate = this.templateId === 0 ? '0' : '1';\r\n this.templateId = this.templateId !== 0 ? this.templateId : this.formId;\r\n let documentEdited = '0';\r\n let activeConsumerId;\r\n\r\n if ($.loadedApp === 'plan') {\r\n let activeConsumers = roster2.getActiveConsumers();\r\n activeConsumerId = activeConsumers[0].id;\r\n } else {\r\n activeConsumerId = $.workflowConsumerId;\r\n }\r\n\r\n let newDate = new Date();\r\n let theMonth = newDate.getMonth() + 1;\r\n let formCompleteDate =\r\n UTIL.leadingZero(theMonth) + '/' + UTIL.leadingZero(newDate.getDate()) + '/' + newDate.getFullYear();\r\n\r\n if (isTemplate === '1') {\r\n forms.displayWFStepFormPopup(\r\n this.templateId,\r\n this.templateName,\r\n this.step.stepId,\r\n this.docOrder,\r\n isTemplate,\r\n documentEdited,\r\n activeConsumerId,\r\n );\r\n } else {\r\n forms.displayStepFormPopup(\r\n this.formId,\r\n documentEdited,\r\n activeConsumerId,\r\n false,\r\n isTemplate,\r\n formCompleteDate,\r\n this.step.stepId,\r\n this.docOrder,\r\n this.formName,\r\n );\r\n }\r\n }\r\n\r\n formsWorkflowStepCancelled() {\r\n POPUP.hide(selectTemplatePopup);\r\n }\r\n\r\n enableButton(button, enable) {\r\n enable ? button.classList.remove('disabled') : button.classList.add('disabled');\r\n }\r\n\r\n containsErrors() {\r\n //MAT 2/12/2021 Seems to fix the Done button shading issue. Leaving old here in case other issues are caused\r\n //let errors = document.querySelectorAll(\".error\");\r\n let errors = selectTemplatePopup.querySelectorAll('.error');\r\n return errors.length !== 0;\r\n }\r\n\r\n createPopup() {\r\n let selectTemplatePopup = POPUP.build({\r\n header: 'Template Select',\r\n hideX: true,\r\n id: 'selectTemplatePopup',\r\n });\r\n\r\n const raiseError = (element, errorMsg) => {\r\n if (!element.classList.contains('error')) {\r\n element.classList.add('error');\r\n const event = new CustomEvent('errorRaised', { bubbles: true, detail: { errorMsg } });\r\n element.dispatchEvent(event);\r\n }\r\n };\r\n\r\n const clearError = element => {\r\n if (element.classList.contains('error')) {\r\n element.classList.remove('error');\r\n const event = new CustomEvent('errorCleared', { bubbles: true });\r\n element.dispatchEvent(event);\r\n }\r\n };\r\n\r\n const isMaxLengthExceeded = (maxChars, length) => {\r\n return length > maxChars;\r\n };\r\n\r\n const isEmpty = inputValue => {\r\n return inputValue === '' || inputValue === undefined || inputValue === null;\r\n };\r\n\r\n let templateDropdown = dropdown.build({\r\n label: 'Form Templates',\r\n dropdownId: 'templateDropdown',\r\n });\r\n\r\n templateDropdown.addEventListener('change', e => {\r\n this.templateId = e.target.value;\r\n var templateddl = document.getElementById('templateDropdown');\r\n this.templateName = templateddl.options[templateddl.selectedIndex].innerHTML;\r\n\r\n var formddl = document.getElementById('userFormDropdown');\r\n this.formName = formddl.options[0].innerHTML;\r\n formddl.selectedIndex = 0;\r\n this.formId = 0;\r\n doneBtn.classList.remove('disabled');\r\n // responsiblePartyId\r\n\r\n if (templateddl.selectedIndex === 0 && formddl.selectedIndex === 0) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n let firstName;\r\n if ($.loadedApp === 'plan') {\r\n let activeConsumer = roster2.getActiveConsumers();\r\n let consumerName = activeConsumer[0].card.textContent\r\n .replaceAll('\\n', '')\r\n .replaceAll('\\t', '')\r\n .trim()\r\n .split(',')[1]\r\n .trim()\r\n .split(' ')[0];\r\n let fullNameArray = consumerName.split(',');\r\n firstName = fullNameArray[fullNameArray.length - 1];\r\n } else {\r\n firstName = $.workflowConsumerName[$.workflowConsumerName.length - 1];\r\n }\r\n\r\n let userFormDropdown = dropdown.build({\r\n label: `${firstName}'s Forms`,\r\n dropdownId: 'userFormDropdown',\r\n });\r\n\r\n userFormDropdown.addEventListener('change', e => {\r\n this.formId = e.target.value;\r\n var formddl = document.getElementById('userFormDropdown');\r\n this.formName = formddl.options[formddl.selectedIndex].innerHTML;\r\n\r\n var templateddl = document.getElementById('templateDropdown');\r\n this.templateName = templateddl.options[0].innerHTML;\r\n templateddl.selectedIndex = 0;\r\n this.templateId = 0;\r\n // responsiblePartyId\r\n\r\n if (templateddl.selectedIndex === 0 && formddl.selectedIndex === 0) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n if ($.session.formsUpdate && $.session.formsView) {\r\n input.enableInputField(userFormDropdown);\r\n } else {\r\n input.disableInputField(userFormDropdown);\r\n }\r\n\r\n let doneBtn = button.build({\r\n id: 'wfStepDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: this.formsWorkflowStepFinished.bind(this),\r\n });\r\n this.doneButton = doneBtn;\r\n doneBtn.classList.add('disabled');\r\n\r\n let cancelBtn = button.build({\r\n id: 'wfStepCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: this.formsWorkflowStepCancelled.bind(this),\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n selectTemplatePopup.appendChild(templateDropdown);\r\n selectTemplatePopup.appendChild(userFormDropdown);\r\n selectTemplatePopup.appendChild(btnWrap);\r\n\r\n selectTemplatePopup.addEventListener('errorRaised', event => {\r\n this.enableButton(doneBtn, false);\r\n });\r\n\r\n selectTemplatePopup.addEventListener('errorCleared', () => {\r\n this.enableButton(doneBtn, !this.containsErrors());\r\n });\r\n\r\n POPUP.show(selectTemplatePopup);\r\n }\r\n\r\n async populateDropdown() {\r\n const templates = WorkflowViewerComponent.getTemplates();\r\n let data = templates.map(template => ({\r\n id: template.formTemplateId,\r\n value: template.formTemplateId,\r\n text: template.formType + ' -- ' + template.formDescription,\r\n }));\r\n\r\n let hasAssignedFormTypes = $.session.formsFormtype ? '1' : '0';\r\n let selectedConsumer;\r\n\r\n if ($.loadedApp === 'plan') {\r\n selectedConsumer = roster2.getActiveConsumers()[0];\r\n } else {\r\n selectedConsumer = {\r\n id: $.workflowConsumerId,\r\n };\r\n }\r\n\r\n const { getconsumerFormsResult: consumerForms } = await formsAjax.getconsumerFormsAsync(\r\n $.session.UserId,\r\n selectedConsumer.id,\r\n hasAssignedFormTypes,\r\n );\r\n let data2 = consumerForms.map(usrForm => ({\r\n id: usrForm.formId,\r\n value: usrForm.formId,\r\n text: usrForm.formDescription.replace(/\\.[^/.]+$/, ''),\r\n // text: usrForm.formDescription.replace(/\\.[^/.]+$/, \"\")\r\n }));\r\n\r\n data2.sort((a, b) => {\r\n return a.text.toLowerCase() < b.text.toLowerCase() ? -1 : 1;\r\n });\r\n\r\n data.unshift({ id: null, value: '', text: 'No Template Selected' }); //ADD Blank value\r\n data2.unshift({ id: null, value: '', text: 'No Form Selected' }); //ADD Blank value\r\n dropdown.populate('templateDropdown', data);\r\n dropdown.populate('userFormDropdown', data2);\r\n }\r\n}\r\n","class WorkflowComponent {\r\n constructor(\r\n { workflowId, name, processName, description, currentStatusId, statuses, groups, addedToPlan },\r\n people,\r\n responsiblePeople,\r\n ) {\r\n this.workflowId = workflowId;\r\n this.name = name;\r\n this.processName = processName;\r\n this.description = description;\r\n this.currentStatusId = currentStatusId;\r\n this.statuses = statuses;\r\n this.groups = groups;\r\n this.people = people;\r\n this.responsiblePeople = responsiblePeople;\r\n this.addedToPlan = addedToPlan;\r\n }\r\n\r\n async setStatusAsync(workflowId, statusId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setWorkflowStatus/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"workflowId\":\"' + workflowId + '\", \"statusId\":\"' + statusId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n getFirstAndLastName(peopleId, people) {\r\n const person = people.find(p => {\r\n return p.peopleId === peopleId;\r\n });\r\n return person ? person.firstName + ' ' + person.lastName : '';\r\n }\r\n\r\n render() {\r\n let {\r\n workflowId,\r\n name,\r\n currentStatusId,\r\n description,\r\n processName,\r\n groups,\r\n statuses,\r\n people,\r\n setStatusAsync,\r\n getFirstAndLastName,\r\n responsiblePeople,\r\n addedToPlan\r\n } = this;\r\n\r\n let workflowContainer = document.createElement('div');\r\n workflowContainer.classList.add('card', 'workflow');\r\n workflowContainer.setAttribute('data-id', workflowId);\r\n\r\n let workflowSummaryContainer = document.createElement('div');\r\n workflowSummaryContainer.classList.add('card__header', 'wf-summary');\r\n\r\n let workflowNameContainer = document.createElement('div');\r\n workflowNameContainer.classList.add('wf-column', 'workflow-name-container');\r\n workflowNameContainer.innerHTML = `\r\n

    Workflow

    \r\n

    ${name}

    \r\n ${addedToPlan ? `

    Added to plan on ${addedToPlan.split(' ')[0]}

    ` : ''}\r\n `;\r\n\r\n workflowNameContainer.addEventListener('click', e => {\r\n let workflowDescriptionPopop = POPUP.build({\r\n header: 'Worfklow Description',\r\n hideX: false,\r\n id: 'wfDescPopup',\r\n });\r\n\r\n let workFlowDescription = document.createElement('div');\r\n workFlowDescription.innerHTML = `${description}`;\r\n\r\n workflowDescriptionPopop.appendChild(workFlowDescription);\r\n\r\n POPUP.show(workflowDescriptionPopop);\r\n });\r\n\r\n let responsiblePartyContainer = document.createElement('div');\r\n responsiblePartyContainer.classList.add('wf-column', 'responsible-container');\r\n responsiblePartyContainer.innerHTML = icons.peopleGroup;\r\n\r\n responsiblePartyContainer.addEventListener('click', e => {\r\n new EditResponsibleRelationshipsComponent(workflowId, people, async (workflowId, ddlcache) => {\r\n try {\r\n for (const ddl in ddlcache) {\r\n if (ddlcache[ddl].modified != '') {\r\n let workflowResponsibilityType = ddl.split('_')[1];\r\n let peopleId = await WorkflowViewerAjax.updateRelationshipResponsiblePartyID(\r\n ddlcache[ddl].modified,\r\n workflowId,\r\n workflowResponsibilityType,\r\n );\r\n // update UI step with the returned data\r\n var workflow = document.querySelectorAll(`[data-id=\"${workflowId}\"]`)[0];\r\n var workflowSteps = workflow.getElementsByClassName('wf-steps-container');\r\n for (var i = 0; i < workflowSteps.length; i++) {\r\n if (\r\n workflowSteps[i].getElementsByClassName(`responsiblePartytype_${workflowResponsibilityType}`)[0] !=\r\n undefined\r\n ) {\r\n if (workflowSteps[i].getElementsByClassName('wf-step-done-date')[0].innerText == '') {\r\n let responsiblestep = workflowSteps[i].getElementsByClassName(\r\n `responsiblePartytype_${workflowResponsibilityType}`,\r\n )[0];\r\n responsiblestep.getElementsByTagName('p')[0].innerText = getFirstAndLastName(\r\n ddlcache[ddl].modified,\r\n people,\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } catch (err) {\r\n console.error('error: ', err);\r\n }\r\n });\r\n });\r\n\r\n let statusDropdown = dropdown.build({\r\n label: 'Status',\r\n dropdownId: 'statusDropdown - ' + workflowId,\r\n });\r\n\r\n let statusContainer = document.createElement('div');\r\n statusContainer.classList.add('wf-column', 'status-container');\r\n statusContainer.setAttribute('data-id', workflowId);\r\n statusContainer.appendChild(statusDropdown);\r\n\r\n statusDropdown.addEventListener('change', async e => {\r\n const setStatus = setStatusAsync(workflowId, e.target.value);\r\n setStatus\r\n .then(() => {\r\n currentStatusId = e.target.value;\r\n })\r\n .catch(error => {\r\n // reset drop down to previous value\r\n e.target.value = currentStatusId;\r\n statusDropdown.classList.add('error');\r\n console.error(error);\r\n });\r\n\r\n let changed = currentStatusId === e.target.value ? false : true;\r\n\r\n let cache = {\r\n original: currentStatusId,\r\n modified: e.target.value,\r\n isChanged: changed,\r\n eventTypeId: workflowId,\r\n eventType: 'workflow',\r\n eventId: 12,\r\n };\r\n // get the associated Actions for the Workflow status change event (in cache)\r\n let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache);\r\n var wfActionsCompleted = JSON.parse(processEvent.processWorkflowStepEventResult);\r\n var displaySteps = document.getElementsByClassName('wf-steps-container');\r\n // update the UI with the returned Action data (wfActionsCompleted) for the Workflow status change Event\r\n for (var j = 0; j < wfActionsCompleted.length; j++) {\r\n for (var i = 0; i < displaySteps.length; i++) {\r\n var wfActionCompleted;\r\n if (wfActionsCompleted[j].length > 10) {\r\n wfActionCompleted = JSON.parse(wfActionsCompleted[j]);\r\n if (displaySteps[i].dataset.id == wfActionCompleted.StepId) {\r\n if (wfActionCompleted.ActionId == '6') {\r\n var startDate = UTIL.formatDateFromIso(wfActionCompleted.ActionDate, '/');\r\n displaySteps[i].getElementsByClassName('wf-step-start-date')[0].innerHTML = startDate;\r\n } else if (wfActionCompleted.ActionId == '5') {\r\n var dueDate = UTIL.formatDateFromIso(wfActionCompleted.ActionDate, '/');\r\n displaySteps[i].getElementsByClassName('wf-step-due-date')[0].innerHTML = dueDate;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n dropdown.populate(\r\n statusDropdown,\r\n statuses.map(s => ({ id: s.statusId, value: s.statusId, text: s.description })),\r\n currentStatusId,\r\n );\r\n\r\n let workflowProcessContainer = document.createElement('div');\r\n workflowProcessContainer.classList.add('wf-column', 'process-container');\r\n workflowProcessContainer.innerHTML = `\r\n

    Process

    \r\n

    ${processName}

    \r\n `;\r\n\r\n let workflowDeleteContainer = document.createElement('div');\r\n workflowDeleteContainer.classList.add('wf-column');\r\n workflowDeleteContainer.innerHTML = `${icons['delete']}`;\r\n\r\n workflowDeleteContainer.addEventListener('click', e => {\r\n e.stopPropagation();\r\n try {\r\n this.deleteConfirmation(workflowId, workflowContainer);\r\n return;\r\n } catch (err) {\r\n console.error('error: ', err);\r\n }\r\n });\r\n\r\n async function appendWorkflowDeleteContainer(workflowName) {\r\n let result = await WorkflowViewerAjax.isWorkflowAutoCreatedAsync(name);\r\n if (result.isWorkflowAutoCreatedResult !== '1') {\r\n workflowSummaryContainer.appendChild(workflowDeleteContainer);\r\n }\r\n }\r\n\r\n workflowSummaryContainer.appendChild(workflowNameContainer);\r\n workflowSummaryContainer.appendChild(responsiblePartyContainer);\r\n workflowSummaryContainer.appendChild(statusContainer);\r\n workflowSummaryContainer.appendChild(workflowProcessContainer);\r\n appendWorkflowDeleteContainer(name);\r\n\r\n let workflowDetailContainer = document.createElement('div');\r\n workflowDetailContainer.classList.add('card__body', 'wf-details');\r\n\r\n if (groups) {\r\n groups.map(g => {\r\n workflowDetailContainer.innertHtml = `${new WorkflowGroupComponent(\r\n workflowDetailContainer,\r\n g,\r\n people,\r\n responsiblePeople,\r\n ).render()}`;\r\n });\r\n }\r\n\r\n workflowContainer.appendChild(workflowSummaryContainer);\r\n workflowContainer.appendChild(workflowDetailContainer);\r\n\r\n return workflowContainer;\r\n }\r\n\r\n deleteConfirmation(workflowId, workflowContainer) {\r\n var popup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n let result = await WorkflowViewerAjax.deleteWorkflowAsync(workflowId);\r\n if (result.deleteWorkflowResult === '1') {\r\n workflowContainer.remove();\r\n let workflowsRemaining = document.querySelectorAll('.card.workflow');\r\n let workflowsContainer = document.getElementById('workflow-viewer');\r\n if (workflowsRemaining.length == 0)\r\n workflowsContainer.innerHTML = `There are no workflows attached to this record`;\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this workflow?';\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n}\r\n","class WorkflowDocumentComponent {\r\n constructor({ documentId, stepId, docOrder, description, attachmentId, documentEdited, attachmentType }) {\r\n this.documentId = documentId;\r\n this.stepId = stepId;\r\n this.docOrder = docOrder;\r\n this.description = description;\r\n this.attachmentId = attachmentId;\r\n this.documentEdited = documentEdited;\r\n this.attachmentType = attachmentType;\r\n }\r\n\r\n render() {\r\n let documentElement = document.createElement('li');\r\n documentElement.classList.add('wf-document');\r\n documentElement.setAttribute('data-document-id', this.documentId);\r\n documentElement.setAttribute('data-attachment-id', this.attachmentId);\r\n documentElement.setAttribute('data-document-edited', this.documentEdited);\r\n documentElement.setAttribute('data-attachment-type', this.attachmentType);\r\n\r\n let documentDescription = document.createElement('label');\r\n documentDescription.innerHTML = `\r\n ${this.description}\r\n `;\r\n\r\n let documentDeleteBtn = document.createElement('button');\r\n documentDeleteBtn.classList.add('wf-document-delete-btn');\r\n documentDeleteBtn.innerHTML = `\r\n ${icons['close']}\r\n `;\r\n\r\n documentDeleteBtn.addEventListener('click', async e => {\r\n e.stopPropagation();\r\n try {\r\n this.deleteConfirmation(this.documentId, documentElement);\r\n return;\r\n } catch (err) {\r\n console.error('error: ', err);\r\n }\r\n });\r\n\r\n let documentDragBtn = document.createElement('button');\r\n documentDragBtn.classList.add('wf-document-drag-btn');\r\n documentDragBtn.classList.add('drag-handle');\r\n documentDragBtn.innerHTML = `\r\n ${icons['drag']}\r\n `;\r\n\r\n documentElement.appendChild(documentDragBtn);\r\n documentElement.appendChild(documentDescription);\r\n documentElement.appendChild(documentDeleteBtn);\r\n\r\n documentElement.addEventListener('click', e => {\r\n let docDesc = this.description;\r\n let slug = slugify(docDesc);\r\n\r\n function slugify(myString) {\r\n let s = myString\r\n .replace(/[^\\w\\s-]/g, '')\r\n .trim()\r\n .toLowerCase();\r\n s = s.replace(/[-\\s]+/g, '-');\r\n return s;\r\n }\r\n\r\n if (documentElement.getAttribute('data-attachment-type') == 'pdf') {\r\n let isTemplate = false;\r\n let templateName = '';\r\n let documntEdited = documentElement.getAttribute('data-document-edited');\r\n let activeConsumerId;\r\n\r\n if ($.loadedApp === 'plan') {\r\n let activeConsumers = roster2.getActiveConsumers();\r\n activeConsumerId = activeConsumers[0].id;\r\n } else {\r\n activeConsumerId = $.workflowConsumerId;\r\n }\r\n\r\n forms.displayWFStepFormPopup(\r\n this.documentId,\r\n templateName,\r\n this.stepId,\r\n this.docOrder,\r\n isTemplate,\r\n documntEdited,\r\n activeConsumerId,\r\n );\r\n } else {\r\n const resp = WorkflowViewerAjax.downloadAttachment(this.attachmentId, slug);\r\n }\r\n });\r\n\r\n return documentElement;\r\n }\r\n\r\n deleteConfirmation(documentId, documentElement) {\r\n var popup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n let result = await WorkflowViewerAjax.deleteDocumentAsync(documentId);\r\n if (result.deleteWorkflowStepDocumentResult === '1') {\r\n documentElement.remove();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this step document?';\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n}\r\n","class WorkflowGroupComponent {\r\n\r\n constructor(parent, { groupId, groupName, steps }, people, responsiblePeople){\r\n this.groupId = groupId;\r\n this.name = groupName;\r\n this.steps = steps; \r\n this.people = people;\r\n this.parent = parent;\r\n this.responsiblePeople = responsiblePeople; \r\n }\r\n\r\n render(){\r\n\r\n let { groupId, name, steps, parent, people, responsiblePeople } = this;\r\n\r\n let groupContainer = document.createElement('div');\r\n groupContainer.classList.add(\"wf-group-container\");\r\n groupContainer.setAttribute(\"data-id\", groupId); \r\n\r\n let groupHeaderGrid = document.createElement('div');\r\n groupHeaderGrid.classList.add(\"group-grid\"); \r\n\r\n let groupGridColumn1 = document.createElement(\"div\");\r\n groupGridColumn1.classList.add(\"group-grid-column-1\");\r\n\r\n let groupExpandButton = document.createElement(\"button\");\r\n groupExpandButton.classList.add(\"expand-button\", \"expanded\");\r\n groupExpandButton.innerHTML = icons['keyArrowRight']; \r\n groupGridColumn1.appendChild(groupExpandButton); \r\n \r\n let groupGridColumn2 = document.createElement('div');\r\n groupGridColumn2.classList.add(\"group-grid-column-2\");\r\n\r\n let groupDescription = document.createElement(\"div\");\r\n groupDescription.classList.add(\"group-description\");\r\n groupDescription.innerHTML = `${name}`;\r\n groupGridColumn2.appendChild(groupDescription); \r\n\r\n const addStepBtnOpts = {\r\n text: 'Add Step',\r\n style: 'primary',\r\n type: 'contained',\r\n classNames: ['add-step-button'],\r\n icon: 'add',\r\n callback: () => { \r\n new EditWorkflowStepComponent(new WorkflowStepComponent({ groupId: groupId, stepOrder: \"\" + (steps.length + 1) + \"\" }, people, responsiblePeople ), async (editedData)=>{\r\n try {\r\n let result = await WorkflowViewerAjax.insertStepAsync(editedData);\r\n const {insertWorkflowStepResult} = result;\r\n editedData.stepId = insertWorkflowStepResult;\r\n \r\n // let cache = {eventTypeId : editedData.groupId, eventType : \"group\", eventId : 1};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache); \r\n // let stepActionsCompleted = JSON.parse(processEvent.processWorkflowStepEventResult);\r\n \r\n let groupNode = document.querySelector(`.wf-group-container[data-id='${groupId}']`);\r\n \r\n if (groupNode){\r\n $(groupNode).find(\".wf-steps-container\").slideDown(); // expand group if it's collapsed\r\n groupNode.appendChild(editedData.render());\r\n } \r\n return; \r\n } catch(err) { \r\n console.error(\"error: \", err); \r\n } \r\n }); \r\n }\r\n };\r\n const groupBntAddStep = button.build(addStepBtnOpts); \r\n groupGridColumn2.appendChild(groupBntAddStep);\r\n\r\n groupHeaderGrid.appendChild(groupGridColumn1);\r\n groupHeaderGrid.appendChild(groupGridColumn2);\r\n\r\n groupContainer.appendChild(groupHeaderGrid);\r\n\r\n groupContainer.addEventListener('click', (e)=> { \r\n let button = e.target.closest('button');\r\n if (button) { \r\n if (button.classList.contains('expand-button')){ \r\n let parentDiv = button.closest('div');\r\n if (parentDiv.classList.contains(\"step-grid-column-1\")) {\r\n let stepGrid = $(parentDiv).parent();\r\n console.log(stepGrid);\r\n $(stepGrid).find(\".step-detail-container\").slideToggle();\r\n } \r\n if (parentDiv.classList.contains(\"group-grid-column-1\")){\r\n let stepContainer = $(parentDiv).parent().parent();\r\n $(stepContainer).find(\".wf-steps-container\").slideToggle();\r\n }\r\n $(button).toggleClass('expanded');\r\n return\r\n } \r\n } \r\n }) \r\n\r\n parent.appendChild(groupContainer); \r\n\r\n if (steps){ \r\n steps.map(s => {\r\n groupContainer.appendChild(new WorkflowStepComponent(s, people, responsiblePeople).render()); \r\n })\r\n } \r\n\r\n new Sortable(groupContainer, {\r\n handle: '.drag-handle',\r\n draggable: '>.wf-steps-container',\r\n onSort: function (evt){ \r\n const groupSteps = Array.from(groupContainer.getElementsByClassName(\"wf-steps-container\"));\r\n if (groupSteps){\r\n const orderArray = groupSteps.map((step, index) => ({\r\n id: step.getAttribute(\"data-id\"),\r\n order: index.toString()\r\n }));\r\n try {\r\n WorkflowViewerAjax.setStepOrderAsync(orderArray);\r\n } catch (error) {\r\n console.error(error);\r\n } \r\n }\r\n }\r\n });\r\n\r\n return ; \r\n }\r\n}","class WorkflowsComponent {\r\n constructor({ workflows, people, responsiblePeople }){\r\n this.workflows = workflows;\r\n this.people = people;\r\n this.responsiblePeople = responsiblePeople;\r\n }\r\n\r\n render() {\r\n let { people, responsiblePeople } = this;\r\n let workflowsComponent = document.createElement('div'); \r\n if (this.workflows.length > 0){\r\n this.workflows.map(w => { \r\n workflowsComponent.appendChild(new WorkflowComponent(w, people, responsiblePeople).render()) \r\n }); \r\n } else {\r\n workflowsComponent.innerHTML = `There are no workflows attached to this record`;\r\n }\r\n return workflowsComponent;\r\n }\r\n \r\n}","class WorkflowStepComponent {\r\n constructor({stepId, groupId, stepOrder, isChecklist, allowStepEdit, description, dueDate, startDate, doneDate, responsiblePartyId, responsiblePartytype, comments, isApplicable, documents}, people, responsiblePeople) {\r\n this.stepId = stepId;\r\n this.groupId = groupId;\r\n this.stepOrder = stepOrder;\r\n this.isChecklist = isChecklist; \r\n this.allowStepEdit = allowStepEdit;\r\n this.description = description;\r\n this.dueDate = dueDate? dueDate.split(\" \")[0] : \"\";\r\n this.startDate = startDate? startDate.split(\" \")[0] : \"\";\r\n this.doneDate = doneDate? doneDate.split(\" \")[0] : \"\";\r\n this.responsiblePartyId = responsiblePartyId;\r\n this.responsiblePartytype = responsiblePartytype;\r\n this.comments = comments;\r\n this.isApplicable = isApplicable;\r\n this.documents = documents;\r\n this.people = people;\r\n this.isExpanded = false;\r\n this.responsiblePeople = responsiblePeople;\r\n }\r\n\r\n getFirstAndLastName(peopleId, people){\r\n const person = people.find((p) => {\r\n return (p.peopleId === peopleId);\r\n });\r\n return (person) ? (person.firstName + \" \" + person.lastName) : \"\";\r\n }\r\n\r\n isAttachmentValid(target) {\r\n const fileType = target.files[0].type;\r\n const reFileTypeTest = new RegExp('(audio\\/)|(video\\/)')\r\n if (reFileTypeTest.test(fileType)) {\r\n alert('Anywhere currently does not accept audio or video files')\r\n target.value = '';\r\n }\r\n return target.value !== '';\r\n }\r\n\r\n addStepDocument(inputElement) {\r\n\r\n const attachmentObj = {};\r\n\r\n const attPromise = new Promise(resolve => {\r\n const attachmentFile = inputElement.files.item(0);\r\n const attachmentName = attachmentFile.name.split(\".\").shift();\r\n const attachmentType = attachmentFile.name.split(\".\").pop();\r\n attachmentObj.description = attachmentName;\r\n attachmentObj.type = attachmentType;\r\n // new Response(file) was added for Safari compatibility\r\n new Response(attachmentFile).arrayBuffer().then(res => {\r\n attachmentObj.arrayBuffer = res;\r\n resolve();\r\n });\r\n })\r\n\r\n attPromise.then(async () => {\r\n try {\r\n const docOrder = this.documents.length + 1;\r\n let documentEdited = \"0\"; // documentEdited = F\r\n const result = await WorkflowViewerAjax.insertStepDocumentAsync(this.stepId, docOrder, attachmentObj.description, attachmentObj.type, attachmentObj.arrayBuffer, documentEdited);\r\n const {insertWorkflowStepDocumentResult: {attachmentId, documentId}} = result;\r\n\r\n const newDocObj = {\r\n documentId: documentId,\r\n stepId: this.stepId,\r\n docOrder: `\"${docOrder}\"`,\r\n description: attachmentObj.description,\r\n attachmentId: attachmentId,\r\n documentEdited: documentEdited,\r\n attachmentType: attachmentObj.type,\r\n }\r\n\r\n this.documents = [...this.documents].concat(newDocObj);\r\n\r\n const newStepDocComponent = new WorkflowDocumentComponent(newDocObj).render();\r\n\r\n // Get the List Element on page so we can add new document element \r\n const stepsContainer = document.querySelector(`.wf-steps-container[data-id='${this.stepId}']`);\r\n const documentsList = stepsContainer.querySelector(\".wf-documents-list\");\r\n\r\n documentsList.appendChild(newStepDocComponent);\r\n\r\n let cache = {eventTypeId : this.stepId, eventType : \"step\", eventId : 10};\r\n let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache);\r\n let stepActionsCompleted = JSON.parse(processEvent.processWorkflowStepEventResult);\r\n\r\n } catch (error) {\r\n throw (error);\r\n }\r\n });\r\n }\r\n\r\n render(){ \r\n let {\r\n description,\r\n stepId,\r\n dueDate,\r\n startDate,\r\n doneDate,\r\n responsiblePartyId,\r\n responsiblePartytype,\r\n comments,\r\n events,\r\n documents,\r\n isExpanded,\r\n people,\r\n getFirstAndLastName,\r\n responsiblePeople \r\n } = this;\r\n\r\n\r\n let stepsGrid = document.createElement(\"div\");\r\n stepsGrid.classList.add(\"step-grid\");\r\n\r\n let stepsGridColumn1 = document.createElement(\"div\");\r\n stepsGridColumn1.classList.add(\"step-grid-column-1\");\r\n\r\n let stepExpandButton = document.createElement(\"button\");\r\n stepExpandButton.classList.add(\"expand-button\");\r\n stepExpandButton.innerHTML = icons['keyArrowRight'];\r\n if (this.isExpanded){\r\n stepExpandButton.classList.add(\"expanded\");\r\n }\r\n stepExpandButton.addEventListener(\"click\", (e) => {\r\n this.isExpanded = !this.isExpanded;\r\n });\r\n\r\n stepsGridColumn1.appendChild(stepExpandButton);\r\n\r\n let stepsGridColumn2 = document.createElement(\"div\");\r\n stepsGridColumn2.classList.add(\"step-grid-column-2\");\r\n\r\n let stepSummaryContainer = document.createElement(\"div\");\r\n stepSummaryContainer.classList.add(\"step-summary-container\");\r\n\r\n let stepDescriptionContainer = document.createElement(\"div\");\r\n stepDescriptionContainer.classList.add(\"step-description-container\");\r\n\r\n let stepCompleteCheckbox = input.buildCheckbox({\r\n //text: description,\r\n isChecked: doneDate\r\n });\r\n stepCompleteCheckbox.classList.add(\"step-checkbox-container\");\r\n\r\n stepDescriptionContainer.appendChild(stepCompleteCheckbox);\r\n\r\n let stepDescription = document.createElement(\"div\");\r\n stepDescription.classList.add(\"step-description\");\r\n stepDescription.innerHTML = `

    ${description}

    `;\r\n stepDescriptionContainer.appendChild(stepDescription);\r\n stepSummaryContainer.appendChild(stepDescriptionContainer);\r\n\r\n let summaryComponent;\r\n\r\n summaryComponent = document.createElement(\"div\");\r\n summaryComponent.classList.add(\"wf-column\", \"step-summary-component\");\r\n summaryComponent.innerHTML = `\r\n

    Due

    \r\n

    ${dueDate? dueDate : ''}

    \r\n `;\r\n stepSummaryContainer.appendChild(summaryComponent);\r\n\r\n summaryComponent = document.createElement(\"div\");\r\n summaryComponent.classList.add(\"wf-column\", \"step-summary-component\");\r\n summaryComponent.innerHTML = `\r\n

    Start

    \r\n

    ${startDate? startDate : ''}

    \r\n `;\r\n stepSummaryContainer.appendChild(summaryComponent);\r\n\r\n summaryComponent = document.createElement(\"div\");\r\n summaryComponent.classList.add(\"wf-column\", \"step-summary-component\");\r\n summaryComponent.innerHTML = `\r\n

    Done

    \r\n

    ${doneDate? doneDate : ''}

    \r\n `;\r\n stepSummaryContainer.appendChild(summaryComponent);\r\n\r\n\r\n\r\n let stepDetailContainer = document.createElement(\"div\");\r\n stepDetailContainer.classList.add(\"step-detail-container\");\r\n if (isExpanded) {\r\n stepDetailContainer.style = \"display: block;\"\r\n } else {\r\n stepDetailContainer.style = \"display: none;\"\r\n }\r\n\r\n const editBtnOpts = {\r\n text: 'Edit Step',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['step-edit-button'],\r\n icon: 'edit',\r\n callback: () => {\r\n new EditWorkflowStepComponent(new WorkflowStepComponent(this, people, responsiblePeople), async (editedData, cache)=>{\r\n try {\r\n let result = await WorkflowViewerAjax.updateStepAsync(editedData)\r\n if (Object.values(result)[0] === \"1\"){\r\n let existingNode = document.querySelector(`.wf-steps-container[data-id='${stepId}']`);\r\n if (existingNode) {\r\n editedData.isExpanded = this.isExpanded;\r\n // editedData.startDate = '01/01/2021';\r\n existingNode.parentNode.replaceChild(editedData.render(), existingNode);\r\n };\r\n }\r\n // get the associated Actions for the current Step events (in cache)\r\n for (const stepobjt in cache) {\r\n let stepobject = cache[stepobjt];\r\n let processEvent = await WorkflowViewerAjax.processStepEventsAsync(stepobject);\r\n let stepActionData = JSON.parse(processEvent.processWorkflowStepEventResult);\r\n // update the UI with the returned step Action data for the current step event\r\n for (var i = 0; i < stepActionData.length; i++) {\r\n\r\n if (stepActionData[i].length > 1) {\r\n\r\n let stepActionObj = JSON.parse(stepActionData[i])\r\n let existingNode = document.querySelector(`.wf-steps-container[data-id='${stepId}']`);\r\n if (existingNode) {\r\n editedData.isExpanded = this.isExpanded;\r\n if (stepActionObj.ActionId == \"6\") {\r\n editedData.startDate = UTIL.formatDateFromIso(stepActionObj.ActionDate, '/'); //display date with step\r\n this.startDate = UTIL.formatDateFromIso(stepActionObj.ActionDate, '/'); //display date in the edit pop-up\r\n } else if (stepActionObj.ActionId == \"5\") {\r\n editedData.dueDate = UTIL.formatDateFromIso(stepActionObj.ActionDate, '/');\r\n this.dueDate = UTIL.formatDateFromIso(stepActionObj.ActionDate, '/');\r\n } else if (stepActionObj.ActionId == \"1\") {\r\n const statusDropdown = document.getElementById('statusDropdown - ' + stepActionObj.workflowId );\r\n statusDropdown.value = stepActionObj.wfStatusId;\r\n }\r\n existingNode.parentNode.replaceChild(editedData.render(), existingNode);\r\n };\r\n }\r\n\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n return;\r\n } catch(err) { \r\n console.error(\"error: \", err);\r\n }\r\n });\r\n }\r\n };\r\n const stepBtnEdit = button.build(editBtnOpts);\r\n\r\n const deleteBtnOpts = {\r\n text: 'Delete Step',\r\n style: 'danger',\r\n type: 'outlined',\r\n classNames: ['step-delete-button'],\r\n icon: 'delete',\r\n callback: async () => {\r\n try {\r\n var answer = confirm(\r\n \"Are you sure you want to delete this step?\"\r\n );\r\n if (answer) {\r\n let result = await WorkflowViewerAjax.deleteStepAsync(this.stepId);\r\n if (Object.values(result)[0] === \"1\"){\r\n stepsContainer.remove();\r\n }\r\n }\r\n return;\r\n } catch(err) { \r\n console.error(\"error: \", err);\r\n }\r\n }\r\n };\r\n const stepBtnDelete = button.build(deleteBtnOpts);\r\n\r\n let reponsiblePartyContainer = document.createElement(\"div\");\r\n reponsiblePartyContainer.classList.add(\"wf-column\");\r\n reponsiblePartyContainer.classList.add(`responsiblePartytype_${responsiblePartytype}`);\r\n reponsiblePartyContainer.innerHTML = `\r\n

    Responsible Party

    \r\n
    \r\n

    ${getFirstAndLastName(responsiblePartyId, responsiblePeople)}

    \r\n `;\r\n\r\n let commentsContainer = document.createElement(\"div\");\r\n commentsContainer.classList.add(\"wf-column\");\r\n commentsContainer.innerHTML = `\r\n

    Comments

    \r\n
    \r\n

    ${comments === undefined ? '' : comments}

    \r\n `;\r\n\r\n let documentsContainer = document.createElement(\"div\");\r\n documentsContainer.classList.add(\"wf-column\");\r\n documentsContainer.innerHTML = `\r\n

    Documents

    \r\n
    \r\n `;\r\n\r\n const addDocBtnOpts = {\r\n text: 'Upload Document',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['step-edit-button'],\r\n icon: 'add'\r\n };\r\n\r\n const addFormBtnOpts = {\r\n text: 'Add Form',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['step-edit-button'],\r\n icon: 'add',\r\n callback: () => {\r\n const docOrder = this.documents.length + 1;\r\n new FormsWorkflowStepComponent(new WorkflowStepComponent(this, people, responsiblePeople), docOrder);\r\n }\r\n };\r\n\r\n let attachmentInput = document.createElement(\"input\");\r\n attachmentInput.type = \"file\";\r\n attachmentInput.name = \"file\";\r\n attachmentInput.id = `stepId-${this.stepId}`;\r\n attachmentInput.classList.add('inputfile');\r\n attachmentInput.onchange = (event) => {\r\n const attachment = event.target;\r\n if (this.isAttachmentValid(attachment)){\r\n const newDocumentComponent = this.addStepDocument(attachment);\r\n event.target.value = \"\"; // clear file input value after adding it\r\n };\r\n }\r\n\r\n let attachmentLabelAddDoc = document.createElement(\"label\");\r\n // attachmentLabel.classList.add(\"step-add-document-container\");\r\n attachmentLabelAddDoc.setAttribute(\"for\",attachmentInput.id); \r\n\r\n let addDocumentBtn = button.build(addDocBtnOpts);\r\n let addFormBtn = button.build(addFormBtnOpts);\r\n\r\n // TODOJOE: Upload Document and Display Form buttons -- need to size the AddDocbtn\r\n attachmentLabelAddDoc.appendChild(addDocumentBtn);\r\n // attachmentLabel.appendChild(addFormBtn);\r\n\r\n let attachmentLabelAddForm = document.createElement(\"label\");\r\n attachmentLabelAddForm.appendChild(addFormBtn);\r\n\r\n // documentsContainer.appendChild(attachmentInput);\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"step-action-container\");\r\n btnWrap.appendChild(attachmentInput);\r\n btnWrap.appendChild(attachmentLabelAddDoc);\r\n btnWrap.appendChild(attachmentLabelAddForm);\r\n\r\n\r\n documentsContainer.appendChild(btnWrap);\r\n\r\n // documentsContainer.appendChild(attachmentLabel);\r\n // documentsContainer.appendChild(addFormBtn);\r\n\r\n let documentsList = document.createElement(\"ul\");\r\n documentsList.classList.add(\"wf-documents-list\");\r\n\r\n if (documents && documents.length > 0){\r\n documents.map(d => {\r\n documentsList.appendChild(new WorkflowDocumentComponent(d).render());\r\n });\r\n }\r\n\r\n documentsContainer.appendChild(documentsList);\r\n\r\n let actionContainer = document.createElement(\"div\");\r\n actionContainer.classList.add(\"step-action-container\");\r\n actionContainer.appendChild(stepBtnEdit);\r\n actionContainer.appendChild(stepBtnDelete);\r\n if (this.allowStepEdit === 'False') {\r\n stepBtnDelete.classList.add(\"disabled\");\r\n stepBtnDelete.classList.remove(\"btn--danger\");\r\n }\r\n stepDetailContainer.appendChild(actionContainer);\r\n stepDetailContainer.appendChild(reponsiblePartyContainer);\r\n stepDetailContainer.appendChild(commentsContainer);\r\n stepDetailContainer.appendChild(documentsContainer);\r\n\r\n stepsGridColumn2.appendChild(stepSummaryContainer);\r\n stepsGridColumn2.appendChild(stepDetailContainer);\r\n\r\n let stepsGridColumn3 = document.createElement(\"div\");\r\n stepsGridColumn3.classList.add(\"step-grid-column-3\");\r\n\r\n // let stepDragHandle = document.createElement(\"div\");\r\n // stepDragHandle.classList.add(\"drag-handle\"); \r\n // stepDragHandle.innerHTML = icons['drag'];\r\n // stepsGridColumn3.appendChild(stepDragHandle); \r\n\r\n stepsGrid.appendChild(stepsGridColumn1);\r\n stepsGrid.appendChild(stepsGridColumn2);\r\n stepsGrid.appendChild(stepsGridColumn3);\r\n\r\n let stepsContainer = document.createElement(\"div\");\r\n stepsContainer.classList.add(\"wf-steps-container\");\r\n stepsContainer.setAttribute('data-id', stepId);\r\n\r\n stepsContainer.addEventListener('click', async (e)=> {\r\n if (e.target.type === \"checkbox\"){\r\n let doneDate = e.target.checked ? moment(UTIL.getTodaysDate(), \"YYYY-MM-DD\").format(\"M/D/YYYY\") : null;\r\n // update the database and get response\r\n let result = await WorkflowViewerAjax.setStepDoneDateAsync(this.stepId, doneDate);\r\n if (Object.values(result)[0] === \"1\") {\r\n // set the state of this object's done date\r\n this.doneDate = doneDate;\r\n // update the html\r\n let stepsContainer = e.target.closest(\".wf-steps-container\");\r\n let doneDateElement = stepsContainer.getElementsByClassName('wf-step-done-date')[0];\r\n doneDateElement.innerHTML = doneDate? doneDate : '';\r\n // EVENT -- this step done date is set\r\n let cache = {modified : doneDate, eventTypeId : this.stepId, eventType : \"step\", eventId : 6};\r\n let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache);\r\n let stepActionData = JSON.parse(processEvent.processWorkflowStepEventResult);\r\n // ACTION -- if Action is 'set WorkFlow Status' (Action = 1), then update UI to reflect Action \r\n for (var i = 0; i < stepActionData.length; i++) {\r\n if (stepActionData[i].length > 1) {\r\n let stepActionObj = JSON.parse(stepActionData[i])\r\n if (stepActionObj.ActionId == \"1\") {\r\n const statusDropdown = document.getElementById('statusDropdown - ' + stepActionObj.workflowId );\r\n statusDropdown.value = stepActionObj.wfStatusId;\r\n }\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n });\r\n\r\n stepsContainer.appendChild(stepsGrid);\r\n\r\n new Sortable(documentsList, {\r\n handle: '.drag-handle',\r\n draggable: 'li',\r\n onSort: function (evt){ \r\n const stepDocuments = Array.from(documentsList.getElementsByTagName(\"LI\"));\r\n if (stepDocuments){\r\n const orderArray = stepDocuments.map((doc, index) => ({\r\n id: doc.getAttribute(\"data-document-id\"),\r\n order: index.toString()\r\n }));\r\n try {\r\n WorkflowViewerAjax.setDocumentOrderAsync(orderArray);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n }\r\n });\r\n\r\n return stepsContainer;\r\n }\r\n\r\n}","const WorkflowViewerAjax = (() => {\r\n async function deleteDocumentAsync(documentId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteWorkflowStepDocument/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"documentId\":\"' + documentId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function deleteWorkflowAsync(workflowId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteWorkflow/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"workflowId\":\"' + workflowId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function deleteStepAsync(stepId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteWorkflowStep/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"stepId\":\"' + stepId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function downloadAttachment(attachmentid, filename) {\r\n try {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/getAttachmentWF/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentId = document.createElement('input');\r\n attachmentId.setAttribute('name', 'attachmentId');\r\n attachmentId.setAttribute('value', attachmentid);\r\n attachmentId.id = 'attachmentId';\r\n var attachmentFileName = document.createElement('input');\r\n attachmentFileName.setAttribute('name', 'attachmentId');\r\n attachmentFileName.setAttribute('value', filename);\r\n attachmentFileName.id = 'attachmentId';\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentId);\r\n form.appendChild(attachmentFileName);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n form.submit();\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPeopleNamesAsync(peopleId, TypeId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPeopleNames/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n peopleId: peopleId,\r\n TypeId: TypeId,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getFormTemplatesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getFormTemplates/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPlanWorkflowWidgetData(peopleId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanWorkflowWidgetData/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n responsiblePartyId: peopleId,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWorkflowsAsync(processId, referenceId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkflows/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\", \"processId\":\"' + processId + '\", \"referenceId\":\"' + referenceId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function isWorkflowAutoCreatedAsync(workflowName) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/isWorkflowAutoCreated/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"workflowName\":\"' + workflowName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertStepAsync(step) {\r\n try {\r\n const { people, events, ...stepData } = step;\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertWorkflowStep/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n step: stepData,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertStepDocumentAsync(stepId, docOrder, description, attachmentType, attachment, documentEdited) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertWorkflowStepDocument/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n stepId,\r\n docOrder,\r\n description,\r\n attachmentType,\r\n attachment: abString,\r\n documentEdited,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function updateStepDocumentAsync(documentId, attachmentType, attachment, documentEdited) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateWorkflowStepDocument/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n documentId,\r\n attachmentType,\r\n attachment: abString,\r\n documentEdited,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function setStepDoneDateAsync(stepId, doneDate) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setWorkflowStepDoneDate/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n stepId: stepId,\r\n doneDate: doneDate,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function setStepDueDateAsync(stepId, dueDate) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setWorkflowStepDueDate/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n stepId: stepId,\r\n dueDate: dueDate,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function setDocumentOrderAsync(documentOrderArray) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setWorkflowStepDocumentOrder/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n orderArray: documentOrderArray,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function setStepOrderAsync(stepOrderArray) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setWorkflowStepOrder/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n orderArray: stepOrderArray,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function updateStepAsync(step) {\r\n try {\r\n const { people, events, ...stepData } = step;\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateWorkflowStep/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n step: stepData,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function processStepEventsAsync(events) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/processWorkflowStepEvent/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n thisEvent: events,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getManualWorkflowList(retrieveData) {\r\n try {\r\n // token\r\n // processId = 2 for annual and 3 for revision\r\n // planId = aka referenceId\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getManualWorkflowList/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getManualWorkflowListResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWorkFlowFormsfromPreviousPlan(retrieveData) {\r\n try {\r\n //token, processId\r\n //processId = 2 for annual and 3 for revision\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkFlowFormsfromPreviousPlan/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getWorkFlowFormsfromPreviousPlanResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function copyWorkflowtemplateToRecord(retrieveData) {\r\n try {\r\n //token, templateId, peopleId, referenceId, wantedFormIds\r\n //referenceId is isp_consumer_plan_id,\r\n //priorReferenceId\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/copyWorkflowtemplateToRecord/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n const workflowId = result.copyWorkflowtemplateToRecordResult;\r\n return workflowId;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWFwithMissingResponsibleParties(retrieveData) {\r\n try {\r\n //token, processId\r\n //processId = 2 for annual and 3 for revision\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWFwithMissingResponsibleParties/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getWFwithMissingResponsiblePartiesResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getResponsiblePartyIdforThisEditStep(retrieveData) {\r\n try {\r\n //token, processId\r\n //processId = 2 for annual and 3 for revision\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getResponsiblePartyIdforThisEditStep/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getResponsiblePartyIdforThisEditStepResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWFResponsibleParties(retrieveData) {\r\n try {\r\n //token, processId\r\n //processId = 2 for annual and 3 for revision\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWFResponsibleParties/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getWFResponsiblePartiesResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function updateRelationshipResponsiblePartyID(peopleId, WFID, responsiblePartyType) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateRelationshipResponsiblePartyID/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n peopleId: peopleId,\r\n WFID: WFID,\r\n responsiblePartyType: responsiblePartyType,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getResponsiblePartyClassification() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getResponsiblePartyClassification/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getResponsiblePartyClassificationResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n deleteDocumentAsync,\r\n deleteWorkflowAsync,\r\n deleteStepAsync,\r\n downloadAttachment,\r\n getPeopleNamesAsync,\r\n getFormTemplatesAsync,\r\n getPlanWorkflowWidgetData,\r\n getWorkflowsAsync,\r\n isWorkflowAutoCreatedAsync,\r\n insertStepAsync,\r\n insertStepDocumentAsync,\r\n updateStepDocumentAsync,\r\n setStepDoneDateAsync,\r\n setStepDueDateAsync,\r\n setDocumentOrderAsync,\r\n setStepOrderAsync,\r\n updateStepAsync,\r\n processStepEventsAsync,\r\n getManualWorkflowList,\r\n getWorkFlowFormsfromPreviousPlan,\r\n copyWorkflowtemplateToRecord,\r\n getWFResponsibleParties,\r\n updateRelationshipResponsiblePartyID,\r\n getWFwithMissingResponsibleParties,\r\n getResponsiblePartyIdforThisEditStep,\r\n getResponsiblePartyClassification,\r\n };\r\n})();\r\n","const WorkflowViewerComponent = (function () {\r\n let viewerContainer;\r\n let formTemplates;\r\n let peopleId;\r\n\r\n // NEW\r\n //-----------------------------------------\r\n function buildWorkflowComponents(data) {\r\n workflowsComponent = new WorkflowsComponent(data);\r\n return workflowsComponent.render();\r\n }\r\n async function getWorkflowData(processId, referenceId) {\r\n const attachmentInputs = document.querySelector('.generalInfo');\r\n peopleId = attachmentInputs.dataset.peopleId;\r\n \r\n\r\n const { getPeopleNamesResult: people } = await WorkflowViewerAjax.getPeopleNamesAsync(peopleId, '0');\r\n\r\n const { getPeopleNamesResult: responsiblePeople } = await WorkflowViewerAjax.getPeopleNamesAsync(peopleId, '-1');\r\n\r\n const { getWorkflowsResult: workflows } = await WorkflowViewerAjax.getWorkflowsAsync(processId, referenceId);\r\n\r\n const { getFormTemplatesResult: templates } = await WorkflowViewerAjax.getFormTemplatesAsync();\r\n\r\n workflowData = {\r\n people: people,\r\n workflows: workflows,\r\n templates: templates,\r\n responsiblePeople: responsiblePeople,\r\n };\r\n formTemplates = templates;\r\n\r\n return workflowData;\r\n }\r\n async function getWorkflowDataForRoster(processId, referenceId) {\r\n const { getPeopleNamesResult: people } = await WorkflowViewerAjax.getPeopleNamesAsync(referenceId, '0');\r\n\r\n const { getPeopleNamesResult: responsiblePeople } = await WorkflowViewerAjax.getPeopleNamesAsync(referenceId, '-1');\r\n\r\n const { getWorkflowsResult: workflows } = await WorkflowViewerAjax.getWorkflowsAsync(processId, referenceId);\r\n\r\n const { getFormTemplatesResult: templates } = await WorkflowViewerAjax.getFormTemplatesAsync();\r\n\r\n workflowData = {\r\n people: people,\r\n workflows: workflows,\r\n templates: templates,\r\n responsiblePeople: responsiblePeople,\r\n };\r\n formTemplates = templates;\r\n\r\n return workflowData;\r\n }\r\n\r\n // retrieves templates from function buildWorkflowComponents\r\n getTemplates = () => formTemplates;\r\n\r\n async function loadData(processId, referenceId, fromRoster) {\r\n try {\r\n const data = fromRoster ? await getWorkflowDataForRoster(processId, referenceId) : await getWorkflowData(processId, referenceId);\r\n const viewerContent = buildWorkflowComponents(data);\r\n viewerContainer.appendChild(viewerContent);\r\n } catch (error) {\r\n console.error(error);\r\n viewerContainer.innerHTML = error;\r\n }\r\n }\r\n function buildViewer() {\r\n let container = document.getElementById('workflow-viewer');\r\n\r\n if (container) {\r\n container.remove();\r\n }\r\n\r\n container = document.createElement('div');\r\n container.id = 'workflow-viewer';\r\n\r\n return container;\r\n }\r\n async function get(processId, ref_id, fromRoster) {\r\n if (Object.keys(WorkflowProcess).find(key => WorkflowProcess[key] === processId)) {\r\n viewerContainer = buildViewer();\r\n await loadData(processId, ref_id, fromRoster);\r\n return viewerContainer;\r\n } else {\r\n console.error('Invalid processId');\r\n }\r\n }\r\n\r\n // OLD\r\n //-----------------------------------------\r\n function open(processId, ref_id) {\r\n if (Object.keys(WorkflowProcess).find(key => WorkflowProcess[key] === processId)) {\r\n initializeViewer2();\r\n loadData2(processId, ref_id);\r\n } else {\r\n console.error('Invalid processId');\r\n }\r\n }\r\n\r\n function initializeViewer2() {\r\n // Destroy the workflow viewer component if it exists\r\n if (viewerContainer) {\r\n viewerContainer.remove();\r\n }\r\n viewerContainer = document.createElement('div');\r\n viewerContainer.id = 'workflow-viewer';\r\n }\r\n\r\n async function loadData2(processId, referenceId) {\r\n try {\r\n const data = await getWorkflowData2(processId, referenceId);\r\n let viewerContent = undefined;\r\n viewerContent = buildWorkflowComponents2(data);\r\n viewerContainer.appendChild(viewerContent);\r\n } catch (error) {\r\n console.error(error);\r\n viewerContainer.innerHTML = error;\r\n }\r\n // render the viewer at the top of the page\r\n const actionCenter = DOM.ACTIONCENTER;\r\n const child = actionCenter.firstChild;\r\n actionCenter.insertBefore(viewerContainer, child);\r\n }\r\n\r\n function buildWorkflowComponents2(data) {\r\n workflowsComponent = new WorkflowsComponent(data);\r\n return workflowsComponent.render();\r\n }\r\n\r\n async function getWorkflowData2(processId, referenceId) {\r\n try {\r\n const attachmentInputs = document.querySelector('.generalInfo');\r\n var peopleId = attachmentInputs.dataset.peopleId;\r\n const { getPeopleNamesResult: people } = await WorkflowViewerAjax.getPeopleNamesAsync(peopleId, '0');\r\n const { getPeopleNamesResult: responsiblePeople } = await WorkflowViewerAjax.getPeopleNamesAsync(peopleId, '-1');\r\n const { getWorkflowsResult: workflows } = await WorkflowViewerAjax.getWorkflowsAsync(processId, referenceId);\r\n const workflowData = {\r\n people: people,\r\n workflows: workflows,\r\n responsiblePeople: responsiblePeople,\r\n };\r\n return workflowData;\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n return {\r\n get,\r\n open,\r\n getTemplates,\r\n };\r\n})();\r\n","const TRANS_vehicleInspectionLanding = (function() {\r\n\r\n function loadVehicleInspectionLanding(params) {\r\n const backButton = button.build({\r\n id: \"inspectionLandingBackButton\",\r\n text: \"Back\",\r\n style: \"secondary\",\r\n type: \"text\",\r\n icon: \"arrowBack\",\r\n callback: () => TRANS_mainLanding.init()\r\n });\r\n const newInspectionBtn = button.build({\r\n text: 'COMPLETE AN INSPECTION',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => TRANS_vehicleInspection.init({enterPath: 'inspectionLanding'})\r\n })\r\n const reviewInspectionsBtn = button.build({\r\n text: 'REVIEW INSPECTIONS',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => TRANS_inspectionReview.init()\r\n })\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n if ($.session.transportationUpdate === true) btnWrap.appendChild(newInspectionBtn);\r\n btnWrap.appendChild(reviewInspectionsBtn);\r\n DOM.ACTIONCENTER.appendChild(backButton);\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n\r\n \r\n function init() {\r\n setActiveModuleSectionAttribute(null);\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n const miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) {\r\n miniRosterBtn.remove();\r\n DOM.toggleNavLayout();\r\n }\r\n loadVehicleInspectionLanding()\r\n }\r\n\r\n return {\r\n init,\r\n }\r\n })();","const TRANS_reviewInspectionFilter = (function () {\r\n // Inputs\r\n let fromDateInput, toDateInput, vehicleDropdown, enteredByDropdown;\r\n let filterOpts\r\n let IsShow;\r\n let applyButton; \r\n function createFilterElements() {\r\n\r\n fromDateInput = input.build({\r\n id: \"inspectionFromDate\",\r\n label: \"From\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: filterOpts.fromDate\r\n })\r\n toDateInput = input.build({\r\n id: \"inspectionToDate\",\r\n label: \"To\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: filterOpts.toDate\r\n })\r\n vehicleDropdown = dropdown.build({\r\n dropdownId: 'vehicleDropdown',\r\n label: 'Vehicle',\r\n style: 'secondary',\r\n value: filterOpts.vehicleInfoId\r\n });\r\n enteredByDropdown = dropdown.build({\r\n dropdownId: 'enteredByDropdown',\r\n label: 'Entered By',\r\n style: 'secondary',\r\n value: filterOpts.userId\r\n });\r\n }\r\n\r\n function buildFilterPopup(params) {\r\n const dateWrap = document.createElement('div')\r\n dateWrap.classList.add('dateWrap', 'btnWrap')\r\n\r\n const popup = POPUP.build({\r\n header: 'Filter',\r\n classNames: 'vehicleInspectionFilterPopup'\r\n })\r\n\r\n applyButton = button.build({\r\n text: 'APPLY',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n TRANS_inspectionReview.filterApply(filterOpts)\r\n }\r\n });\r\n applyButton.style.width = '100%';\r\n dateWrap.appendChild(fromDateInput);\r\n dateWrap.appendChild(toDateInput);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'fromDateBtn')\r\n popup.appendChild(dateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'vehicleNumberBtn')\r\n popup.appendChild(vehicleDropdown)\r\n if (IsShow == 'ALL' || IsShow == 'enteredByBtn')\r\n popup.appendChild(enteredByDropdown)\r\n popup.appendChild(applyButton);\r\n POPUP.show(popup)\r\n\r\n eventListeners();\r\n populateDropdowns();\r\n }\r\n\r\n function populateDropdowns() {\r\n const vehicleDropdownData = []\r\n const enteredByDropdownData = []\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n\r\n vehicles.forEach((val, key, map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n\r\n drivers.forEach((val, key, map) => {\r\n enteredByDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n\r\n vehicleDropdownData.unshift({ value: '%', text: 'All' })\r\n enteredByDropdownData.unshift({ value: '%', text: 'All' })\r\n\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData, filterOpts.vehicleInfoId)\r\n dropdown.populate(enteredByDropdown, enteredByDropdownData, filterOpts.userId)\r\n }\r\n\r\n function eventListeners() {\r\n fromDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n if (UTIL.checkValidDateRange(event.target.value, toDateInput.firstElementChild.value)) {\r\n updateDates();\r\n } else {\r\n console.info('invalid date range');\r\n fromDateInput.classList.add('error');\r\n applyButton.classList.add('disabled');\r\n }\r\n } else {\r\n event.target.value = filterOpts.fromDate\r\n }\r\n\r\n })\r\n toDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n if (UTIL.checkValidDateRange(fromDateInput.firstElementChild.value, event.target.value)) {\r\n updateDates();\r\n } else {\r\n console.info('invalid date range');\r\n toDateInput.classList.add('error');\r\n applyButton.classList.add('disabled');\r\n }\r\n } else {\r\n event.target.value = filterOpts.toDate\r\n }\r\n })\r\n vehicleDropdown.addEventListener('change', event => {\r\n filterOpts.vehicleInfoId = event.target.value;\r\n })\r\n enteredByDropdown.addEventListener('change', event => {\r\n filterOpts.userId = event.target.value;\r\n })\r\n\r\n function isValidDate(d) {\r\n d = new Date(d)\r\n return d instanceof Date && !isNaN(d);\r\n }\r\n\r\n function updateDates() {\r\n filterOpts.fromDate = fromDateInput.firstElementChild.value;\r\n filterOpts.toDate = toDateInput.firstElementChild.value;\r\n fromDateInput.classList.remove('error');\r\n toDateInput.classList.remove('error');\r\n applyButton.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function init(opts, IsFilterShow) {\r\n filterOpts = opts;\r\n IsShow = IsFilterShow;\r\n createFilterElements();\r\n buildFilterPopup()\r\n }\r\n\r\n return {\r\n init\r\n }\r\n})();","const TRANS_inspectionReview = (function () {\r\n\r\n let inspectionTable, filterOpts;\r\n\r\n let fromDate;\r\n let toDate;\r\n let enteredBy;\r\n let vehicleNumber;\r\n let today;\r\n let defaultFromDate;\r\n\r\n let btnWrap;\r\n let fromDateBtnWrap;\r\n let vehicleNumberBtnWrap;\r\n let enteredByBtnWrap;\r\n\r\n\r\n function buildPage(resetFilter) {\r\n\r\n today = new Date();\r\n defaultFromDate = new Date();\r\n defaultFromDate.setDate(defaultFromDate.getDate() - 7);\r\n\r\n if (resetFilter) {\r\n filterOpts = {\r\n token: $.session.Token,\r\n fromDate: UTIL.formatDateFromDateObj(defaultFromDate),\r\n toDate: UTIL.formatDateFromDateObj(today),\r\n vehicleInfoId: '%',\r\n userId: '%',\r\n }\r\n }\r\n\r\n const backButton = button.build({\r\n id: \"myRouteBackButton\",\r\n text: \"Back\",\r\n style: \"secondary\",\r\n type: \"text\",\r\n icon: \"arrowBack\",\r\n callback: () => {\r\n setActiveModuleSectionAttribute(null);\r\n TRANS_vehicleInspectionLanding.init();\r\n },\r\n });\r\n\r\n // FILTERED BY DISPLAY //\r\n const filteredByDisplay = buildFilteredBy();\r\n inspectionTable = table.build({\r\n tableId: \"vehicleInspectionTable\",\r\n headline: \"Completed Inspections\",\r\n columnHeadings: [\"Vehicle Number\", \"Date\", \"Time\", \"Last Update\", \"Route\"],\r\n })\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = inspectionTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Vehicle Number\r\n headers[1].setAttribute('data-type', 'date'); // Date\r\n headers[2].setAttribute('data-type', 'date'); //Time\r\n headers[3].setAttribute('data-type', 'string'); // Last Update \r\n headers[4].setAttribute('data-type', 'string'); // Route\r\n\r\n DOM.ACTIONCENTER.appendChild(backButton)\r\n DOM.ACTIONCENTER.appendChild(filteredByDisplay)\r\n DOM.ACTIONCENTER.appendChild(inspectionTable)\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(inspectionTable);\r\n\r\n getData(filterOpts)\r\n }\r\n\r\n async function getData(opts) {\r\n table.clear(inspectionTable);\r\n PROGRESS__ANYWHERE.init()\r\n PROGRESS__ANYWHERE.SPINNER.show(DOM.ACTIONCENTER, \"Gathering Vehicle Inspections...\");\r\n const tmpInsp = (await TRANS_vehicleInspectionAjax.getCompletedInspections(opts)).getCompletedInspectionsResult;\r\n const inspMap = new Map()\r\n tmpInsp.forEach(insp => {\r\n inspMap.set(insp.inspectionId, insp)\r\n })\r\n PROGRESS__ANYWHERE.SPINNER.hide(DOM.ACTIONCENTER)\r\n populateTable(inspMap)\r\n }\r\n\r\n function populateTable(inspections) {\r\n const tableData = [];\r\n inspections.forEach((val, key, map) => {\r\n const { enteredById, inspectionDate, inspectionTime, routeName, vehicleNumber } = val;\r\n const readDate = UTIL.abbreviateDateYear(inspectionDate);\r\n const readTime = UTIL.formatTimeString(inspectionTime);\r\n const values = [vehicleNumber, readDate, readTime, enteredById, routeName]\r\n tableData.push({\r\n values: values,\r\n id: key,\r\n onClick: () => {\r\n TRANS_vehicleInspection.init({ enterPath: 'reviewInspections', vId: val.vehicleId, rId: val.routeId, edit: true, editData: val, routeName: routeName });\r\n }\r\n })\r\n });\r\n table.populate(inspectionTable, tableData)\r\n }\r\n\r\n function filterApply(opts) {\r\n filterOpts = opts;\r\n buildFilteredBy();\r\n getData(filterOpts);\r\n }\r\n\r\n function buildFilteredBy() {\r\n let filteredBy = document.querySelector(\".filteredByData\");\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement(\"div\");\r\n filteredBy.classList.add(\"filteredByData\");\r\n filterButtonSet()\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n const driverLookup = TRANS_mainLanding.driverLookup(filterOpts.userId);\r\n const vehicleLookup = TRANS_mainLanding.vehicleLookup(filterOpts.vehicleInfoId);\r\n\r\n fromDate = UTIL.abbreviateDateYear(UTIL.formatDateFromIso(filterOpts.fromDate, '/'));\r\n toDate = UTIL.abbreviateDateYear(UTIL.formatDateFromIso(filterOpts.toDate, '/'));\r\n enteredBy = driverLookup ? `${driverLookup.Last_Name}, ${driverLookup.First_Name}` : 'All';\r\n vehicleNumber = vehicleLookup !== 'Non-Existant Vehicle!' ? `${vehicleLookup.vehicleNumber}` : 'All';\r\n\r\n\r\n if (document.getElementById('fromDateBtn') != null)\r\n document.getElementById('fromDateBtn').innerHTML = 'Inspection Dates: ' + fromDate + ' - ' + toDate;\r\n\r\n if (vehicleNumber === '%' || vehicleNumber === 'All') {\r\n btnWrap.appendChild(vehicleNumberBtnWrap);\r\n btnWrap.removeChild(vehicleNumberBtnWrap);\r\n } else {\r\n btnWrap.appendChild(vehicleNumberBtnWrap);\r\n if (document.getElementById('vehicleNumberBtn') != null)\r\n document.getElementById('vehicleNumberBtn').innerHTML = 'Vehicle: ' + vehicleNumber;\r\n }\r\n\r\n if (enteredBy === '%' || enteredBy === 'All') {\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n btnWrap.removeChild(enteredByBtnWrap);\r\n } else {\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n if (document.getElementById('enteredByBtn') != null)\r\n document.getElementById('enteredByBtn').innerHTML = 'Entered By: ' + enteredBy;\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'filter',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n TRANS_reviewInspectionFilter.init(filterOpts, 'ALL');\r\n },\r\n });\r\n\r\n fromDateBtn = button.build({\r\n id: 'fromDateBtn',\r\n text: 'Inspection Dates: ' + UTIL.abbreviateDateYear(UTIL.formatDateFromIso(filterOpts.fromDate, '/')) + ' - ' + UTIL.abbreviateDateYear(UTIL.formatDateFromIso(filterOpts.toDate, '/')),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_reviewInspectionFilter.init(filterOpts, 'fromDateBtn') },\r\n });\r\n\r\n vehicleNumberBtn = button.build({\r\n id: 'vehicleNumberBtn',\r\n text: 'Vehicle: ' + vehicleNumber,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_reviewInspectionFilter.init(filterOpts, 'vehicleNumberBtn') },\r\n });\r\n vehicleNumberCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('vehicleNumberBtn') },\r\n });\r\n\r\n enteredByBtn = button.build({\r\n id: 'enteredByBtn',\r\n text: 'Entered By: ' + enteredBy,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_reviewInspectionFilter.init(filterOpts, 'enteredByBtn') },\r\n });\r\n enteredByCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('enteredByBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n fromDateBtnWrap = document.createElement('div');\r\n fromDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n fromDateBtnWrap.appendChild(fromDateBtn);\r\n btnWrap.appendChild(fromDateBtnWrap);\r\n\r\n vehicleNumberBtnWrap = document.createElement('div');\r\n vehicleNumberBtnWrap.classList.add('filterSelectionBtnWrap');\r\n vehicleNumberBtnWrap.appendChild(vehicleNumberBtn);\r\n vehicleNumberBtnWrap.appendChild(vehicleNumberCloseBtn);\r\n btnWrap.appendChild(vehicleNumberBtnWrap);\r\n\r\n enteredByBtnWrap = document.createElement('div');\r\n enteredByBtnWrap.classList.add('filterSelectionBtnWrap');\r\n enteredByBtnWrap.appendChild(enteredByBtn);\r\n enteredByBtnWrap.appendChild(enteredByCloseBtn);\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'enteredByBtn') {\r\n filterOpts.userId = '%';\r\n }\r\n if (closeFilter == 'vehicleNumberBtn') {\r\n filterOpts.vehicleInfoId = '%';\r\n }\r\n buildFilteredBy();\r\n getData(filterOpts);\r\n }\r\n /** Vehicle Inspection Init Function\r\n * @param {boolean} [resetFilter=True] False will not reset filter values\r\n */\r\n function init(resetFilter = true) {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(\"reviewinspections\");\r\n buildPage(resetFilter);\r\n }\r\n return {\r\n init,\r\n filterApply\r\n }\r\n})();","const TRANS_vehicleInspection = (function () {\r\n let selectedVehicle, selectedRoute, selectedRouteName, selectedRouteDate, saveBtn;\r\n let dateInput, timeInput, noteInput, vehicleDropdown, inspectionQuestionBody;\r\n let isEdit, questionResponses, vehicleInspectionId, readOnly, enteredByOtherUser, inspectionEnterPath, routeInspection;\r\n let currentlySelectedVehicle;\r\n let allQuestionsAnswered = true;\r\n\r\n function buildPage(editData) {\r\n const inspectionDate = isEdit ? \r\n UTIL.formatDateToIso(editData.inspectionDate.split(' ')[0]) :\r\n routeInspection ? \r\n selectedRouteDate : UTIL.getTodaysDate();\r\n const inspectionTIme = isEdit ? editData.inspectionTime : UTIL.getCurrentTime();\r\n const inspectionNote = isEdit ? editData.note : '';\r\n\r\n // inspection Info Card//\r\n const inspectionInfoCard = document.createElement(\"div\");\r\n inspectionInfoCard.classList.add(\"card\");\r\n const inspectionInfoBody = document.createElement(\"div\");\r\n inspectionInfoBody.classList.add(\"card__body\");\r\n inspectionInfoCard.innerHTML = `\r\n
    Inspection Information
    \r\n `;\r\n inspectionInfoCard.appendChild(inspectionInfoBody)\r\n\r\n //let saveBtn\r\n let deleteBtn\r\n\r\n if (!readOnly) {\r\n saveBtn = button.build({\r\n id: 'saveInspectionBtn',\r\n text: isEdit ? 'Update' : 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n callback: () => {saveInspection()}\r\n });\r\n if (isEdit) {\r\n deleteBtn = button.build({\r\n id: 'deleteInspectionBtn',\r\n classNames: 'trans_DeleteBtn',\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n callback: () => {deleteInspection()}\r\n });\r\n }\r\n }\r\n\r\n const cancelBtn = button.build({\r\n id: 'cancelInspectionBtn',\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: () => {\r\n setActiveModuleSectionAttribute(null);\r\n switch (inspectionEnterPath) {\r\n case 'inspectionLanding':\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n case 'addRoute':\r\n case 'reviewInspections':\r\n TRANS_inspectionReview.init(false)\r\n break;\r\n case 'routeSelection':\r\n TRANS_myRoute.init()\r\n break;\r\n default:\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n }\r\n }\r\n });\r\n dateInput = input.build({\r\n id: \"vehicleInspectionDate\",\r\n label: \"Date\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: inspectionDate,\r\n readonly: readOnly || routeInspection,\r\n attributes: [{ max: UTIL.getTodaysDate() }],\r\n });\r\n timeInput = input.build({\r\n id: \"vehicleInspectionTime\",\r\n label: \"Time\",\r\n type: \"time\",\r\n value: inspectionTIme,\r\n readonly: readOnly,\r\n style: \"secondary\",\r\n });\r\n vehicleDropdown = dropdown.build({\r\n id: 'vehicleDropdown',\r\n dropdownId: 'vehicleDropdown',\r\n readonly: readOnly || routeInspection,\r\n label: 'Vehicle'\r\n });\r\n noteInput = input.build({\r\n id: 'vehicleInspectionNote',\r\n classNames: ['autosize'],\r\n label: 'Note',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: inspectionNote,\r\n readonly: readOnly\r\n });\r\n // Grid Columns\r\n const col1 = document.createElement('div');\r\n col1.classList.add('col-1')\r\n const col2 = document.createElement('div');\r\n col2.classList.add('col-2')\r\n // Route Name Display\r\n const routeNameDisp = document.createElement('h3');\r\n routeNameDisp.classList.add('routeNameDisp')\r\n routeNameDisp.innerHTML = `This inspection is for the route: ${selectedRouteName}`\r\n // Entered By Other User Display\r\n const otherUserDisp = document.createElement('h4');\r\n otherUserDisp.classList.add('otherUserDisp')\r\n otherUserDisp.innerHTML = `This inspection was entered by another user. No changes can be made.`\r\n // Date and time Wrap //\r\n const dtWrap = document.createElement(\"div\");\r\n dtWrap.classList.add(\"vehicleInspectionDTWrap\");\r\n dtWrap.appendChild(dateInput);\r\n dtWrap.appendChild(timeInput);\r\n // Save/Cancel button wrap //\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n if (saveBtn) btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n // Creating inspection item card //\r\n const inspectionQuestionCard = document.createElement(\"div\");\r\n const inspectionQuestionHeader = document.createElement(\"div\");\r\n inspectionQuestionBody = document.createElement(\"div\");\r\n inspectionQuestionBody.classList.add(\"card__body\");\r\n inspectionQuestionBody.classList.add(\"inspectionItemSection\");\r\n inspectionQuestionHeader.classList.add(\"card__header\");\r\n inspectionQuestionHeader.innerText = \"Inspection Items\";\r\n inspectionQuestionCard.classList.add(\"card\");\r\n inspectionQuestionCard.classList.add(\"inspectionItemCard\");\r\n inspectionQuestionCard.appendChild(inspectionQuestionHeader);\r\n inspectionQuestionCard.appendChild(inspectionQuestionBody);\r\n ///////////////////\r\n // Append to Grid Columns\r\n\r\n if (selectedRouteName) col1.appendChild(routeNameDisp);\r\n if (enteredByOtherUser) col1.appendChild(otherUserDisp);\r\n inspectionInfoBody.appendChild(dtWrap);\r\n inspectionInfoBody.appendChild(vehicleDropdown);\r\n inspectionInfoBody.appendChild(noteInput);\r\n //\r\n col1.appendChild(inspectionInfoCard)\r\n col2.appendChild(inspectionQuestionCard);\r\n col2.appendChild(btnWrap);\r\n if (deleteBtn) col2.appendChild(deleteBtn);\r\n\r\n DOM.ACTIONCENTER.appendChild(col1)\r\n DOM.ACTIONCENTER.appendChild(col2)\r\n\r\n DOM.autosizeTextarea();\r\n\r\n populateDropdown()\r\n buildInspectionQuestions(editData);\r\n eventListeners()\r\n checkForAllRequiredFields();\r\n }\r\n\r\n function eventListeners() {\r\n dateInput.addEventListener('change', event => {\r\n if (Date.parse(event.target.value) > UTIL.getTodaysDate(true)) {\r\n console.warn('future date not allowed')\r\n UTIL.warningPopup({\r\n message: 'Future dates are not allowed',\r\n accept: {\r\n text: 'Ok'\r\n },\r\n })\r\n event.target.value = UTIL.getTodaysDate();\r\n }\r\n });\r\n vehicleDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n currentlySelectedVehicle = selectedOption.value;\r\n if (selectedOption.value === '') {\r\n vehicleDropdown.classList.add('error');\r\n console.warn('No vehicle selected.')\r\n } else {\r\n vehicleDropdown.classList.remove('error');\r\n }\r\n checkForAllRequiredFields();\r\n });\r\n }\r\n\r\n async function buildInspectionQuestions(editData) {\r\n let completedStatus;\r\n if (isEdit) {\r\n completedStatus = await getInspectionDetailsForEdit(editData.inspectionId)\r\n }\r\n const questions = TRANS_mainLanding.getCategories();\r\n questionResponses = new Map();\r\n questions.forEach((val, key) => {\r\n const questionContainer = document.createElement('div');\r\n questionContainer.classList.add('questionWrapWord'); \r\n const questionTitle = document.createElement('h4');\r\n questionTitle.innerText = val.desc;\r\n let passCheck = false; \r\n let failCheck = false;\r\n let naCheck = false;\r\n let allowNA = val.allowNA === 'Y' ? true : false;\r\n if (isEdit) {\r\n switch (completedStatus.get(key)) {\r\n case 'P':\r\n passCheck = true;\r\n questionResponses.set(key, 'P');\r\n break;\r\n case 'N':\r\n naCheck = true;\r\n questionResponses.set(key, 'N');\r\n break;\r\n default:\r\n failCheck = true;\r\n questionResponses.set(key, 'F');\r\n break;\r\n }\r\n } else {\r\n questionResponses.set(key, '');\r\n allQuestionsAnswered = false; // If not in edit mode, mark as not all questions answered\r\n }\r\n const passRadio = input.buildRadio({\r\n id: `${key}-pass`,\r\n text: \"Pass\",\r\n name: key,\r\n isChecked: passCheck,\r\n isDisabled: readOnly\r\n });\r\n const failRadio = input.buildRadio({\r\n id: `${key}-fail`,\r\n text: \"Fail\",\r\n name: key,\r\n isChecked: failCheck,\r\n isDisabled: readOnly\r\n });\r\n passRadio.addEventListener('change', () => {\r\n questionResponses.set(key, 'P');\r\n checkAllQuestionsAnswered();\r\n });\r\n failRadio.addEventListener('change', () => {\r\n questionResponses.set(key, 'F');\r\n checkAllQuestionsAnswered();\r\n });\r\n\r\n const radioDiv = document.createElement('div');\r\n radioDiv.classList.add('inspection_radioDiv');\r\n radioDiv.appendChild(passRadio);\r\n radioDiv.appendChild(failRadio);\r\n \r\n // NA OPTION (only displayed if the inspection category is set to allow NA)\r\n if (allowNA) {\r\n const allowNARadio = input.buildRadio({\r\n id: `${key}-na`,\r\n text: \"N/A\",\r\n name: key,\r\n isChecked: naCheck,\r\n isDisabled: readOnly\r\n });\r\n allowNARadio.addEventListener('change', () => {\r\n questionResponses.set(key, 'N');\r\n checkAllQuestionsAnswered();\r\n });\r\n radioDiv.appendChild(allowNARadio);\r\n }\r\n questionContainer.appendChild(questionTitle);\r\n questionContainer.appendChild(radioDiv);\r\n var lineBR = document.createElement('br');\r\n questionContainer.appendChild(lineBR);\r\n\r\n inspectionQuestionBody.appendChild(questionContainer);\r\n });\r\n\r\n // Function to check if all questions are answered\r\n function checkAllQuestionsAnswered() {\r\n allQuestionsAnswered = true; // Reset the flag\r\n questionResponses.forEach(value => {\r\n if (value === '') {\r\n allQuestionsAnswered = false;\r\n return; // Exit forEach loop early if any question is unanswered\r\n }\r\n });\r\n\r\n checkForAllRequiredFields();\r\n }\r\n\r\n // Return the result indicating if all questions are answered\r\n return allQuestionsAnswered;\r\n}\r\n\r\n\r\n async function getInspectionDetailsForEdit(vehicleInspectionId) {\r\n const completedDetails = (await TRANS_vehicleInspectionAjax.getVehicleInspectionDetails(vehicleInspectionId)).getVehicleInspectionDetailsResult\r\n const completedDetailsMap = new Map();\r\n completedDetails.forEach(cat => {\r\n completedDetailsMap.set(cat.inspectionCategory, cat.categoryStatus);\r\n })\r\n return completedDetailsMap\r\n }\r\n\r\n function populateDropdown() {\r\n vehicleDropdownData = []\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n\r\n vehicles.forEach((val,key,map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n\r\n vehicleDropdownData.unshift({value: '', text: ''})\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData, selectedVehicle)\r\n currentlySelectedVehicle = selectedVehicle\r\n if (!selectedVehicle) vehicleDropdown.classList.add('error')\r\n }\r\n\r\n async function saveInspection() {\r\n // Date Time Vehicle are required\r\n // Check if inspection categories are complete\r\n const inspectionCategories = []\r\n const inspectionStatus = []\r\n pendingSave.show('Saving Inspection...')\r\n try {\r\n // Check for errors first\r\n const errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) throw \"err exist\"\r\n // Check that all inspection items have been answered\r\n questionResponses.forEach((val,key,map) => {\r\n if (val === \"\") {\r\n console.error(`Save Failed. Inspection category id ${key} is registering as not complete`)\r\n throw \"You must complete all Inspection Items\"\r\n } else {\r\n inspectionCategories.push(key)\r\n inspectionStatus.push(val)\r\n }\r\n })\r\n const note = noteInput.querySelector('textarea').value\r\n const date = dateInput.querySelector('input').value\r\n const time = timeInput.querySelector('input').value\r\n const vddElement = document.getElementById('vehicleDropdown');\r\n const vehicleId = vddElement.options[vddElement.selectedIndex].value;\r\n\r\n const mainData = {\r\n token: $.session.Token,\r\n vehicleInspectionId: vehicleInspectionId,\r\n vehicleInformationId: vehicleId,\r\n tripCompletedId: selectedRoute ? selectedRoute : '',\r\n inspectionDate: date,\r\n inspectionTime: time,\r\n notes: UTIL.removeUnsavableNoteText(note)\r\n }\r\n if (isEdit) {\r\n await TRANS_vehicleInspectionAjax.updateVehicleInspection(mainData)\r\n } else {\r\n vehicleInspectionId = (await TRANS_vehicleInspectionAjax.insertVehicleInspection(mainData)).insertVehicleInspectionResult[0].vehicleInspectionId;\r\n }\r\n\r\n const detailData = {\r\n token: $.session.Token,\r\n vehicleInspectionId: vehicleInspectionId,\r\n inspectionCatString: inspectionCategories.join(\"|\"),\r\n inspectionStatusString: inspectionStatus.join(\"|\")\r\n }\r\n await TRANS_vehicleInspectionAjax.insertUpdateVehicleInspectionDetails(detailData)\r\n pendingSave.fulfill('Save Successful')\r\n setTimeout(() => {\r\n successfulSave.hide()\r\n // What happens after a succesful save depends on how the entered the module\r\n switch (inspectionEnterPath) {\r\n case 'inspectionLanding':\r\n // If they came from the inspection landing page, go back to the landing page\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n case 'addRoute':\r\n case 'reviewInspections':\r\n // If they just added a new route, or were reviewing an inspection, take them to the review table\r\n TRANS_inspectionReview.init(false)\r\n break;\r\n case 'routeSelection':\r\n // If they came from the my route selection popup, take them back to my routes\r\n TRANS_myRoute.init()\r\n break;\r\n default:\r\n init({enterPath: 'inspectionLanding'})\r\n break;\r\n }\r\n }, 2000);\r\n } catch (error) {\r\n if (error === 'err exist') {\r\n pendingSave.reject('Failed to save. Please correct any errors that exist on the route.');\r\n console.error('Failing due to option highlighted in red. Check to make sure all required items have been completed.');\r\n } else {\r\n pendingSave.reject(`Failed to save inspection. ${error}`);\r\n console.error('Unspecified Error');\r\n console.error(error);\r\n }\r\n setTimeout(() => failSave.hide(), 4000);\r\n }\r\n }\r\n\r\n function deleteInspection() {\r\n async function acceptDelete() {\r\n pendingSave.show('Deleting Inspection...')\r\n try {\r\n await TRANS_vehicleInspectionAjax.deleteVehicleInspection(vehicleInspectionId)\r\n pendingSave.fulfill('Inspection Deleted')\r\n setTimeout(() => {\r\n successfulSave.hide()\r\n // What happens after a delete depends on how the entered the module\r\n switch (inspectionEnterPath) {\r\n case 'inspectionLanding':\r\n // If they came from the inspection landing page, clear, and start a new inspection\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n case 'addRoute':\r\n case 'reviewInspections':\r\n // If they just added a new route, or were reviewing an inspection, take them to the review table\r\n TRANS_inspectionReview.init(false)\r\n break;\r\n case 'routeSelection':\r\n // If they came from the my route selection popup, take them back to my routes\r\n TRANS_myRoute.init()\r\n break;\r\n default:\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n }\r\n }, 2000);\r\n } catch (error) {\r\n pendingSave.reject(error)\r\n setTimeout(() => failSave.hide(), 2000);\r\n }\r\n }\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to delete this vehicle inspection?',\r\n hideX: true,\r\n accept: {\r\n text: 'Delete',\r\n callback: acceptDelete\r\n },\r\n reject: {\r\n text: 'Cancel'\r\n }\r\n })\r\n }\r\n\r\n function clearVar() {\r\n selectedVehicle = null;\r\n selectedRoute = null;\r\n isEdit = null;\r\n questionResponses = null;\r\n vehicleInspectionId = null;\r\n readOnly = null;\r\n enteredByOtherUser = null;\r\n currentlySelectedVehicle = null;\r\n }\r\n\r\n function checkForAllRequiredFields() {\r\n if (readOnly) {\r\n return;\r\n }\r\n\r\n if (!currentlySelectedVehicle || currentlySelectedVehicle === '' || allQuestionsAnswered === false) {\r\n // If no vehicle is selected, disable the save button and add the 'disabled' class\r\n saveBtn.disabled = true;\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n // If a vehicle is selected, enable the save button and remove the 'disabled' class\r\n saveBtn.disabled = false;\r\n saveBtn.classList.remove('disabled');\r\n }\r\n}\r\n\r\n /**\r\n *\r\n * @param {object} opts\r\n * @param {string} opts.vehicleId\r\n * @param {string} [opts.routeId]\r\n */\r\n function init(opts = {rId: null, vId: null, edit: false, editData: null, routeName: null, routeDate: null, batchedRoute: false}) {\r\n clearVar();\r\n const { vId, rId, editData, edit, enterPath, routeName, routeDate, batchedRoute } = opts\r\n selectedVehicle = vId;\r\n selectedRoute = rId;\r\n routeInspection = rId ? true : false;\r\n selectedRouteDate = routeDate;\r\n selectedRouteName = routeName;\r\n isEdit = edit;\r\n inspectionEnterPath = enterPath;\r\n\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(\"vehicleInspection\");\r\n\r\n if (edit) {\r\n vehicleInspectionId = editData.inspectionId\r\n if (batchedRoute) {\r\n readOnly = true;\r\n } else if (editData.enteredById.toLowerCase() !== $.session.UserId.toLowerCase()) {\r\n readOnly = true;\r\n } else if ($.session.transportationUpdate === false) {\r\n readOnly = true;\r\n } else {\r\n readOnly = false;\r\n }\r\n enteredByOtherUser = editData.enteredById.toLowerCase() === $.session.UserId.toLowerCase() ? false : true;\r\n } else {\r\n readOnly = false;\r\n }\r\n\r\n buildPage(editData);\r\n }\r\n return {\r\n init,\r\n };\r\n})();\r\n","const TRANS_vehicleInspectionAjax = (function() {\r\n\r\n function getInspectionCategories() {\r\n const data = {\r\n token: $.session.Token,\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getInspectionCategories/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n function insertVehicleInspection(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertVehicleInspection/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function insertUpdateVehicleInspectionDetails(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertUpdateVehicleInspectionDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n function getCompletedInspections(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getCompletedInspections/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\t\r\n function getVehicleInspectionDetails(vehicleInspectionId) {\r\n\t\tconst data = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tvehicleInspectionId: vehicleInspectionId\r\n\t\t}\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getVehicleInspectionDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction updateVehicleInspection(data) {\r\n\t\treturn $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateVehicleInspection/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\r\n\tfunction deleteVehicleInspection(vehicleInspectionId) {\r\n\t\tconst data = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tvehicleInspectionId: vehicleInspectionId\r\n\t\t}\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteVehicleInspection/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\r\n return {\r\n getInspectionCategories,\r\n insertVehicleInspection,\r\n getCompletedInspections,\r\n\t\tinsertUpdateVehicleInspectionDetails,\r\n\t\tgetVehicleInspectionDetails,\r\n\t\tupdateVehicleInspection,\r\n\t\tdeleteVehicleInspection\r\n }\r\n})();","var itConsumerSection = (function () {\r\n // DOM\r\n // ---------------------\r\n var section;\r\n var sectionBody;\r\n var consumerError;\r\n var consumersWrap;\r\n var consumerSections;\r\n // DATA\r\n //---------------------\r\n var activeConsumers = [];\r\n var consumersInvolved;\r\n var consumerInvolvedIdArray;\r\n // Values\r\n // ---------------------\r\n\r\n function clearData() {\r\n consumerFollowUp.clearData();\r\n consumerInjuries.clearData();\r\n consumerIntervention.clearData();\r\n consumerInvolvement.clearData();\r\n consumerReporting.clearData();\r\n consumerReview.clearData();\r\n consumerBehavior.clearData();\r\n activeConsumers = [];\r\n }\r\n function deleteConsumerData(consumerId) {\r\n consumerFollowUp.deleteConsumerData(consumerId);\r\n consumerInjuries.deleteConsumerData(consumerId);\r\n consumerIntervention.deleteConsumerData(consumerId);\r\n consumerInvolvement.deleteConsumerData(consumerId);\r\n consumerReporting.deleteConsumerData(consumerId);\r\n consumerReview.deleteConsumerData(consumerId);\r\n consumerBehavior.deleteConsumerData(consumerId);\r\n }\r\n\r\n function getConsumersInvolved() {\r\n if (consumersInvolved) return [...consumersInvolved];\r\n }\r\n function getConsumersInvolvedIds() {\r\n if (consumerInvolvedIdArray && consumerInvolvedIdArray.length > 0) {\r\n return [...consumerInvolvedIdArray];\r\n }\r\n }\r\n\r\n function showConsumersWrap() {\r\n consumersWrap.classList.add('visible');\r\n consumerSections.classList.remove('visible');\r\n }\r\n function displayCount() {\r\n var count = activeConsumers.length;\r\n var countHolder = section.querySelector('span[data-count=\"consumers\"]');\r\n countHolder.innerHTML = `( ${count} )`;\r\n }\r\n function checkForRequiredConsumer() {\r\n if (activeConsumers.length === 0) {\r\n consumerError.classList.remove('hidden');\r\n consumersWrap.classList.remove('visible');\r\n consumerSections.classList.remove('visible');\r\n\r\n incidentCard.toggleSave(true);\r\n return;\r\n }\r\n\r\n consumerError.classList.add('hidden');\r\n consumersWrap.classList.add('visible');\r\n }\r\n function removeConsumerErrors() {\r\n var consumerCards = [].slice.call(consumersWrap.querySelectorAll('.consumerCard'));\r\n consumerCards.forEach(card => card.classList.remove('error'));\r\n\r\n var cardHasErrors = itDetailsSection.checkRequiredFields();\r\n\r\n if (cardHasErrors) {\r\n incidentCard.toggleSave(true);\r\n } else {\r\n incidentCard.toggleSave(false);\r\n }\r\n }\r\n function showConsumerError(consumerIdArray) {\r\n incidentCard.toggleSave(true);\r\n\r\n var consumerCards = [].slice.call(consumersWrap.querySelectorAll('.consumerCard'));\r\n\r\n if (consumerIdArray[0] === '%') {\r\n // mark all\r\n // show error \"At least one consumer must have PPI checked.\"\r\n consumerCards.forEach(card => card.classList.add('error'));\r\n return;\r\n }\r\n\r\n consumerCards.forEach(card => {\r\n var cardId = card.dataset.consumerId;\r\n if (consumerIdArray.includes(cardId)) {\r\n card.classList.add('error');\r\n } else {\r\n card.classList.remove('error');\r\n }\r\n });\r\n }\r\n\r\n function moveConsumersToConsumersInvolved(consumers) {\r\n var initPromises = [];\r\n\r\n consumersWrap.classList.add('visible');\r\n\r\n consumers.forEach(consumer => {\r\n //If consumer is already on the selected consumer list ignore\r\n if (activeConsumers.filter(actConsumer => actConsumer.id === consumer.id).length > 0) return;\r\n consumer.card.classList.remove('highlighted');\r\n var clone = consumer.card.cloneNode(true);\r\n var card = buildConsumer(clone);\r\n consumersWrap.appendChild(card);\r\n var initPromise = consumerInvolvement.initConsumerData(consumer.id);\r\n initPromises.push(initPromise);\r\n });\r\n\r\n activeConsumers = roster2.getActiveConsumers();\r\n checkForRequiredConsumer();\r\n displayCount();\r\n\r\n Promise.all(initPromises).then(() => {\r\n consumerInvolvement.checkRequiredFields();\r\n });\r\n\r\n // Event when you add a consumer\r\n // 1. Ensure that all required fields are filled in on the details section\r\n var detailSectionHasErrors = itDetailsSection.checkRequiredFields();\r\n\r\n if (detailSectionHasErrors) {\r\n incidentCard.toggleSave(true);\r\n } else {\r\n incidentCard.toggleSave(false);\r\n }\r\n }\r\n function removeConsumerFromConsumersInvolved(selectedConsumerId) {\r\n var consumerCard = document.querySelector(`[data-consumer-id=\"${selectedConsumerId}\"]`).parentElement;\r\n consumersWrap.removeChild(consumerCard);\r\n\r\n consumerSections.classList.remove('visible');\r\n\r\n incidentCard.toggleActionBtns(false);\r\n\r\n roster2.removeConsumerFromActiveConsumers(selectedConsumerId);\r\n activeConsumers = roster2.getActiveConsumers();\r\n\r\n deleteConsumerData(selectedConsumerId);\r\n\r\n checkForRequiredConsumer();\r\n consumerInvolvement.checkRequiredFields();\r\n displayCount();\r\n roster2.toggleMiniRosterBtnVisible(true);\r\n\r\n // Event when you remove a consumer\r\n // 1. Ensure that at least one consumer is selected\r\n // 2. Ensure that all required fields are filled in on the details section\r\n var detailSectionHasErrors = itDetailsSection.checkRequiredFields();\r\n //var consumerSectionHasErrors = incidentCard.checkforRequiredConsumer();\r\n // var consumerSectionConsumers = itConsumerSection.getConsumersInvolvedIds();\r\n\r\n if (detailSectionHasErrors || activeConsumers.length === 0) {\r\n incidentCard.toggleSave(true);\r\n } else {\r\n incidentCard.toggleSave(false);\r\n }\r\n }\r\n\r\n // Populate\r\n //-----------------------------------------------\r\n function populateConsumersWrap() {\r\n consumerInvolvedIdArray = [];\r\n\r\n consumersInvolved.forEach(c => {\r\n consumerInvolvedIdArray.push({ id: c.consumerId, involvedId: c.consumerInvolvedId });\r\n // build consumer card\r\n var consumer = roster2.buildConsumerCard({\r\n FN: c.firstName,\r\n LN: c.lastName,\r\n id: c.consumerId,\r\n });\r\n // build incident card\r\n var card = buildConsumer(consumer);\r\n consumersWrap.appendChild(card);\r\n // move consumer to avtive list\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n });\r\n\r\n activeConsumers = roster2.getActiveConsumers();\r\n\r\n consumersWrap.classList.add('visible');\r\n\r\n checkForRequiredConsumer();\r\n consumerInvolvement.checkRequiredFields();\r\n displayCount();\r\n }\r\n\r\n // Consumer Card\r\n //-----------------------------------------------\r\n function buildConsumer(consumerCard) {\r\n function checkInvolvedRequirements() {\r\n const locationId = consumerInvolvement.involvementDataLookup(consumerCard.dataset.consumerId).locationId;\r\n\r\n const involvementSec = document.querySelector(\"[data-sectionid='5']\");\r\n\r\n if (locationId === '' || consumerInvolvement.checkOneHasPPI() === false) {\r\n involvementSec.classList.add('sectionError');\r\n } else {\r\n involvementSec.classList.remove('sectionError');\r\n }\r\n }\r\n\r\n consumerCard.classList.remove('highlighted');\r\n\r\n var cardWrap = document.createElement('div');\r\n cardWrap.classList.add('incidentCard__consumer');\r\n\r\n // build card\r\n cardWrap.appendChild(consumerCard);\r\n\r\n // card event\r\n cardWrap.addEventListener('click', function (event) {\r\n if (event.target === consumerCard) {\r\n incidentCard.toggleActionBtns(true);\r\n consumersWrap.classList.remove('visible');\r\n consumerSections.classList.add('visible');\r\n consumerSubSections.showMenu(consumerCard);\r\n checkInvolvedRequirements();\r\n if (document.querySelector('.consumerListBtn')) roster2.toggleMiniRosterBtnVisible(false);\r\n }\r\n });\r\n\r\n return cardWrap;\r\n }\r\n\r\n // Section\r\n //-----------------------------------------------\r\n function buildSection(options, consumersInvolvedData) {\r\n var opts = options;\r\n consumersInvolved = consumersInvolvedData;\r\n\r\n section = document.createElement('div');\r\n section.classList.add('incidentSection', 'visible');\r\n section.setAttribute('data-card-page', 'consumers');\r\n section.setAttribute('data-page-num', opts.pageNumber);\r\n\r\n var heading = document.createElement('div');\r\n heading.classList.add('incidentSection__header');\r\n heading.innerHTML = `

    Consumers Involved

    `;\r\n\r\n sectionBody = document.createElement('div');\r\n sectionBody.classList.add('incidentSection__body');\r\n\r\n consumerError = document.createElement('p');\r\n consumerError.classList.add('consumerError');\r\n consumerError.innerHTML = 'You must select at least one consumer';\r\n\r\n consumersWrap = document.createElement('div');\r\n consumersWrap.classList.add('consumersWrap');\r\n\r\n consumerSections = consumerSubSections.build(consumersInvolved);\r\n\r\n sectionBody.appendChild(consumerError);\r\n sectionBody.appendChild(consumersWrap);\r\n sectionBody.appendChild(consumerSections);\r\n\r\n section.appendChild(heading);\r\n section.appendChild(sectionBody);\r\n\r\n if (consumersInvolved) {\r\n populateConsumersWrap();\r\n } else {\r\n consumerInvolvedIdArray = undefined;\r\n }\r\n\r\n return section;\r\n }\r\n\r\n return {\r\n build: buildSection,\r\n addConsumers: moveConsumersToConsumersInvolved,\r\n removeConsumer: removeConsumerFromConsumersInvolved,\r\n showConsumersWrap,\r\n getConsumersInvolved,\r\n getConsumersInvolvedIds,\r\n removeConsumerErrors,\r\n showConsumerError,\r\n clearData,\r\n };\r\n})();\r\nvar consumerSubSections = (function () {\r\n // DOM\r\n //---------------------\r\n var sectionsContainer;\r\n var sectionsTopBar;\r\n var backBtn;\r\n var sectionsMenu;\r\n //* sub sections\r\n var followUpSection;\r\n var injuriesSection;\r\n var interventionSection;\r\n var involvementSection;\r\n var reportingSection;\r\n var reviewSection;\r\n var behaviorSection;\r\n // DATA\r\n //---------------------\r\n // var consumersInvolved;\r\n var sections = [\r\n { id: 0, name: 'Remove Consumer' },\r\n { id: 1, name: 'Behavior Details' },\r\n { id: 2, name: 'Follow Up' },\r\n { id: 3, name: 'Injuries' },\r\n { id: 4, name: 'Intervention' },\r\n { id: 5, name: 'Involvement' },\r\n { id: 6, name: 'Reporting' },\r\n { id: 7, name: 'Review' },\r\n ];\r\n // Values\r\n //---------------------\r\n var selectedConsumerId;\r\n\r\n // Hide/Show\r\n //-----------------------------------------------\r\n function handleBackButtonClick() {\r\n var visibleSection = sectionsContainer.querySelector('.consumerSections__section.visible');\r\n\r\n if (visibleSection) {\r\n var visibleSectionHome = visibleSection.querySelector('.consumerSections__section__home');\r\n if (visibleSectionHome) {\r\n visibleSectionHome.classList.remove('hidden'); // reshow home page\r\n }\r\n visibleSection.classList.remove('visible'); // hide section\r\n sectionsMenu.classList.add('visible'); // show menu\r\n } else {\r\n incidentCard.toggleActionBtns(false);\r\n itConsumerSection.showConsumersWrap();\r\n if (document.querySelector('.consumerListBtn')) roster2.toggleMiniRosterBtnVisible(true);\r\n }\r\n }\r\n function hideBackBtn() {\r\n backBtn.classList.add('hidden');\r\n }\r\n function showBackBtn() {\r\n backBtn.classList.remove('hidden');\r\n }\r\n function showSectionMenu() {\r\n sectionsMenu.classList.add('visible');\r\n }\r\n function showSection(sectionName) {\r\n var targetSection;\r\n\r\n switch (sectionName) {\r\n case 'Follow Up': {\r\n targetSection = followUpSection;\r\n break;\r\n }\r\n case 'Injuries': {\r\n targetSection = injuriesSection;\r\n break;\r\n }\r\n case 'Intervention': {\r\n targetSection = interventionSection;\r\n break;\r\n }\r\n case 'Involvement': {\r\n targetSection = involvementSection;\r\n break;\r\n }\r\n case 'Reporting': {\r\n targetSection = reportingSection;\r\n break;\r\n }\r\n case 'Review': {\r\n targetSection = reviewSection;\r\n break;\r\n }\r\n case 'Behavior Details': {\r\n targetSection = behaviorSection;\r\n break;\r\n }\r\n }\r\n\r\n sectionsMenu.classList.remove('visible');\r\n targetSection.classList.add('visible');\r\n }\r\n\r\n // Populate\r\n //-----------------------------------------------\r\n function populateSection(sectionName) {\r\n incidentId = incident.getIncidentId();\r\n\r\n if (incidentId) {\r\n switch (sectionName) {\r\n case 'Follow Up': {\r\n incidentTrackingAjax.getitConsumerFollowUps(selectedConsumerId, incidentId, res => {\r\n consumerFollowUp.populate(res, selectedConsumerId);\r\n });\r\n break;\r\n }\r\n case 'Injuries': {\r\n incidentTrackingAjax.getitConsumerInjuries(selectedConsumerId, incidentId, res => {\r\n consumerInjuries.populate(res, selectedConsumerId);\r\n });\r\n break;\r\n }\r\n case 'Intervention': {\r\n incidentTrackingAjax.getitConsumerInterventions(selectedConsumerId, incidentId, res => {\r\n consumerIntervention.populate(res, selectedConsumerId);\r\n });\r\n break;\r\n }\r\n case 'Involvement': {\r\n consumerInvolvement.populate(selectedConsumerId);\r\n break;\r\n }\r\n case 'Reporting': {\r\n incidentTrackingAjax.getitConsumerReporting(selectedConsumerId, incidentId, res => {\r\n consumerReporting.populate(res, selectedConsumerId);\r\n });\r\n break;\r\n }\r\n case 'Review': {\r\n incidentTrackingAjax.getitConsumerReviews(selectedConsumerId, incidentId, res => {\r\n consumerReview.populate(res, selectedConsumerId);\r\n });\r\n break;\r\n }\r\n case 'Behavior Details': {\r\n incidentTrackingAjax.getitConsumerBehavior(selectedConsumerId, incidentId, res => {\r\n consumerBehavior.populate(res, selectedConsumerId);\r\n });\r\n break;\r\n }\r\n }\r\n } else {\r\n switch (sectionName) {\r\n case 'Follow Up': {\r\n consumerFollowUp.populate(null, selectedConsumerId);\r\n break;\r\n }\r\n case 'Injuries': {\r\n consumerInjuries.populate(null, selectedConsumerId);\r\n break;\r\n }\r\n case 'Intervention': {\r\n consumerIntervention.populate(null, selectedConsumerId);\r\n break;\r\n }\r\n case 'Involvement': {\r\n consumerInvolvement.populate(selectedConsumerId);\r\n break;\r\n }\r\n case 'Reporting': {\r\n consumerReporting.populate(null, selectedConsumerId);\r\n break;\r\n }\r\n case 'Review': {\r\n consumerReview.populate(null, selectedConsumerId);\r\n break;\r\n }\r\n case 'Behavior Details': {\r\n consumerBehavior.populate(null, selectedConsumerId);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Top Bar\r\n //-----------------------------------------------\r\n function buildTopBar() {\r\n var topBar = document.createElement('div');\r\n topBar.classList.add('topBar');\r\n\r\n backBtn = button.build({\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'arrowBack',\r\n classNames: ['backBtn'],\r\n callback: handleBackButtonClick,\r\n });\r\n\r\n topBar.appendChild(backBtn);\r\n\r\n return topBar;\r\n }\r\n\r\n // Menu\r\n //-----------------------------------------------\r\n function showMenu(consumerCard) {\r\n selectedConsumerId = consumerCard.dataset.consumerId;\r\n\r\n sectionsMenu.classList.add('visible');\r\n\r\n // remove old consumer card\r\n var oldCard = sectionsTopBar.querySelector('.consumerCard');\r\n if (oldCard) sectionsTopBar.removeChild(oldCard);\r\n\r\n // add selected consumer card\r\n var cardClone = consumerCard.cloneNode(true);\r\n sectionsTopBar.appendChild(cardClone);\r\n }\r\n function buildMenu() {\r\n var menu = document.createElement('div');\r\n menu.classList.add('consumerSections__menu', 'visible');\r\n\r\n sections.forEach(sec => {\r\n var sectionItem = document.createElement('div');\r\n sectionItem.classList.add('menuItem');\r\n sectionItem.innerHTML = sec.name;\r\n sectionItem.setAttribute('data-sectionId', sec.id);\r\n if (sec.name === 'Remove Consumer') sectionItem.classList.add('removeConsumer');\r\n menu.appendChild(sectionItem);\r\n });\r\n\r\n menu.addEventListener('click', e => {\r\n var targetSectionName = e.target.innerHTML;\r\n\r\n if (targetSectionName === 'Remove Consumer') {\r\n itConsumerSection.removeConsumer(selectedConsumerId);\r\n } else {\r\n showSection(targetSectionName);\r\n populateSection(targetSectionName);\r\n }\r\n });\r\n\r\n return menu;\r\n }\r\n\r\n // Main\r\n //-----------------------------------------------\r\n function build(consumersInvolvedData) {\r\n sectionsContainer = document.createElement('div');\r\n sectionsContainer.classList.add('consumerSections');\r\n\r\n sectionsTopBar = buildTopBar();\r\n\r\n var sectionsInner = document.createElement('div');\r\n sectionsInner.classList.add('consumerSections__inner');\r\n\r\n sectionsMenu = buildMenu();\r\n followUpSection = consumerFollowUp.build();\r\n injuriesSection = consumerInjuries.build();\r\n interventionSection = consumerIntervention.build();\r\n involvementSection = consumerInvolvement.build(consumersInvolvedData);\r\n reportingSection = consumerReporting.build();\r\n reviewSection = consumerReview.build();\r\n behaviorSection = consumerBehavior.build();\r\n\r\n sectionsInner.appendChild(sectionsMenu);\r\n sectionsInner.appendChild(behaviorSection);\r\n sectionsInner.appendChild(followUpSection);\r\n sectionsInner.appendChild(injuriesSection);\r\n sectionsInner.appendChild(interventionSection);\r\n sectionsInner.appendChild(involvementSection);\r\n sectionsInner.appendChild(reportingSection);\r\n sectionsInner.appendChild(reviewSection);\r\n\r\n sectionsContainer.appendChild(sectionsTopBar);\r\n sectionsContainer.appendChild(sectionsInner);\r\n\r\n return sectionsContainer;\r\n }\r\n\r\n return {\r\n build,\r\n showMenu,\r\n showSectionMenu,\r\n showBackBtn,\r\n hideBackBtn,\r\n };\r\n})();\r\nvar consumerFollowUp = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var followUpHome;\r\n var newFollowUpBtn;\r\n var followUpReviewTable;\r\n //*form\r\n var followUpForm;\r\n var followUpTypeDropdown;\r\n var personResponsibleInput;\r\n var dueDateInput;\r\n var completedDateInput;\r\n var notesInput;\r\n var formButtons;\r\n var deleteBtn;\r\n var saveBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var followUpsData; // save/update data\r\n var followUpsDeleteData;\r\n var followUpTypes;\r\n // Values\r\n //---------------------\r\n var selectedConsumerId;\r\n var selectedFollowUpId;\r\n //*form default values\r\n var dueDate;\r\n var dateCompleted;\r\n var followUpTypeId;\r\n var personResponsible;\r\n var followUpNote;\r\n var lastUpdatedBy;\r\n var lastUpdatedOn;\r\n\r\n var isEdit;\r\n var formReadOnly;\r\n\r\n function getDataForSave() {\r\n return followUpsData;\r\n }\r\n function getDataForDelete() {\r\n return followUpsDeleteData;\r\n }\r\n function clearData() {\r\n followUpsData = undefined;\r\n followUpsDeleteData = undefined;\r\n selectedConsumerId = undefined;\r\n selectedFollowUpId = undefined;\r\n\r\n clearFormDataDefaults();\r\n clearReviewTable();\r\n }\r\n function deleteConsumerData(consumerId) {\r\n // deletes all follow ups\r\n if (followUpsData[consumerId]) {\r\n var { [consumerId]: removedConsumerData, ...newFollowUpsData } = followUpsData;\r\n followUpsData = newFollowUpsData;\r\n\r\n if (!followUpsDeleteData[consumerId]) {\r\n followUpsDeleteData[consumerId] = removedConsumerData;\r\n }\r\n }\r\n }\r\n function deleteConsumerFollowUpData() {\r\n if (!selectedFollowUpId.includes('new')) {\r\n var deletedFollowUp = followUpsData[selectedConsumerId][selectedFollowUpId];\r\n if (!followUpsDeleteData[selectedConsumerId]) followUpsDeleteData[selectedConsumerId] = {};\r\n followUpsDeleteData[selectedConsumerId][selectedFollowUpId] = deletedFollowUp;\r\n }\r\n\r\n delete followUpsData[selectedConsumerId][selectedFollowUpId];\r\n\r\n selectedFollowUpId = undefined;\r\n var form = section.querySelector('.followUpForm');\r\n section.removeChild(form);\r\n followUpHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n }\r\n\r\n function getDropdownData() {\r\n incidentTrackingAjax.getitConsumerFollowUpTypes(function (res) {\r\n followUpTypes = res;\r\n });\r\n }\r\n\r\n // Form\r\n //-----------------------------------------------\r\n function showDeleteWarning() {\r\n var deleteWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n deleteConsumerFollowUpData();\r\n POPUP.hide(deleteWarningPopup);\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteWarningPopup.appendChild(message);\r\n deleteWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteWarningPopup);\r\n }\r\n function checkRequiredFields() {\r\n var hasErrors = false;\r\n\r\n var followUpTypeSelect = followUpTypeDropdown.querySelector('.dropdown__select');\r\n if (!followUpTypeSelect.value || followUpTypeSelect.value === '%') {\r\n followUpTypeDropdown.classList.add('error');\r\n hasErrors = true;\r\n } else {\r\n followUpTypeDropdown.classList.remove('error');\r\n }\r\n\r\n if (hasErrors) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n function clearFormDataDefaults() {\r\n dueDate = undefined;\r\n dateCompleted = undefined;\r\n followUpTypeId = undefined;\r\n lastUpdatedBy = undefined;\r\n lastUpdatedOn = undefined;\r\n personResponsible = undefined;\r\n followUpNote = undefined;\r\n }\r\n function setFormDataDefaults(formData) {\r\n if (formData) {\r\n dueDate = formData.dueDate;\r\n dateCompleted = formData.dateCompleted;\r\n followUpTypeId = formData.followUpTypeId;\r\n personResponsible = formData.personResponsible;\r\n followUpNote = formData.notes;\r\n }\r\n }\r\n // events\r\n function setupFormEvents() {\r\n var tmpFollowUpTypeId;\r\n var tmpPersonResponsible;\r\n var tmpDueDate;\r\n var tmpCompletedDate;\r\n var tmpNote;\r\n\r\n followUpTypeDropdown.addEventListener('change', e => {\r\n tmpFollowUpTypeId = e.target.value;\r\n checkRequiredFields();\r\n });\r\n personResponsibleInput.addEventListener('change', e => {\r\n tmpPersonResponsible = e.target.value;\r\n });\r\n dueDateInput.addEventListener('change', e => {\r\n tmpDueDate = e.target.value;\r\n });\r\n completedDateInput.addEventListener('change', e => {\r\n tmpCompletedDate = e.target.value;\r\n });\r\n notesInput.addEventListener('change', e => {\r\n tmpNote = e.target.value;\r\n });\r\n\r\n if (deleteBtn) {\r\n deleteBtn.addEventListener('click', e => {\r\n showDeleteWarning();\r\n });\r\n }\r\n\r\n formButtons.addEventListener('click', e => {\r\n if (e.target === saveBtn) {\r\n if (!followUpsData[selectedConsumerId]) {\r\n followUpsData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!followUpsData[selectedConsumerId][selectedFollowUpId]) {\r\n var keys = Object.keys(followUpsData[selectedConsumerId]);\r\n selectedFollowUpId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n followUpsData[selectedConsumerId][selectedFollowUpId] = {\r\n dateCompleted: '',\r\n dueDate: '',\r\n followUpTypeId: '',\r\n notes: '',\r\n personResponsible: '',\r\n updated: '',\r\n };\r\n }\r\n\r\n if (tmpCompletedDate || tmpDueDate || tmpFollowUpTypeId || tmpNote || tmpPersonResponsible) {\r\n followUpsData[selectedConsumerId][selectedFollowUpId].updated = true;\r\n }\r\n\r\n if (tmpCompletedDate) followUpsData[selectedConsumerId][selectedFollowUpId].dateCompleted = tmpCompletedDate;\r\n if (tmpDueDate) followUpsData[selectedConsumerId][selectedFollowUpId].dueDate = tmpDueDate;\r\n if (tmpFollowUpTypeId) followUpsData[selectedConsumerId][selectedFollowUpId].followUpTypeId = tmpFollowUpTypeId;\r\n if (tmpNote) followUpsData[selectedConsumerId][selectedFollowUpId].notes = tmpNote;\r\n if (tmpPersonResponsible)\r\n followUpsData[selectedConsumerId][selectedFollowUpId].personResponsible = tmpPersonResponsible;\r\n\r\n selectedFollowUpId = undefined;\r\n\r\n var form = section.querySelector('.followUpForm');\r\n section.removeChild(form);\r\n followUpHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n return;\r\n }\r\n\r\n if (e.target === cancelBtn) {\r\n selectedFollowUpId = undefined;\r\n var form = section.querySelector('.followUpForm');\r\n section.removeChild(form);\r\n followUpHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n return;\r\n }\r\n });\r\n }\r\n // build\r\n function buildFollowUpTypeDropdown() {\r\n var opts = {\r\n label: 'Follow Up Type',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var followUptypeDrop = dropdown.build(opts);\r\n\r\n var data = followUpTypes.map(fu => {\r\n return {\r\n value: fu.itFollowUpTypeId,\r\n text: fu.followUpTypeName,\r\n };\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(followUptypeDrop, data, followUpTypeId);\r\n\r\n return followUptypeDrop;\r\n }\r\n function buildPersonResponsibleInput() {\r\n var opts = {\r\n label: 'Person Responsible',\r\n type: 'text',\r\n style: 'secondary',\r\n value: personResponsible,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var personInput = input.build(opts);\r\n\r\n return personInput;\r\n }\r\n function buildDueDateInput() {\r\n var inputOptions = {\r\n label: 'Due Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: '',\r\n };\r\n\r\n if (dueDate) inputOptions.value = dueDate;\r\n if (isEdit && formReadOnly) {\r\n inputOptions.readonly = true;\r\n }\r\n\r\n var dateInput = input.build(inputOptions);\r\n\r\n return dateInput;\r\n }\r\n function buildCompletedDateInput() {\r\n var inputOptions = {\r\n label: 'Date Completed',\r\n type: 'date',\r\n style: 'secondary',\r\n value: '',\r\n };\r\n\r\n if (dateCompleted) inputOptions.value = dateCompleted;\r\n if (isEdit && formReadOnly) {\r\n inputOptions.readonly = true;\r\n }\r\n\r\n var dateInput = input.build(inputOptions);\r\n\r\n return dateInput;\r\n }\r\n function buildNotesInput() {\r\n var opts = {\r\n label: 'Note',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: followUpNote,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var noteInput = input.build(opts);\r\n\r\n return noteInput;\r\n }\r\n function buildFormBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n saveBtn = button.build({\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n\r\n if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate) btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildDeleteBtn() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'error',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildNewFollowUpForm() {\r\n var form = document.createElement('div');\r\n form.classList.add('followUpForm');\r\n\r\n followUpTypeDropdown = buildFollowUpTypeDropdown();\r\n personResponsibleInput = buildPersonResponsibleInput();\r\n dueDateInput = buildDueDateInput();\r\n completedDateInput = buildCompletedDateInput();\r\n notesInput = buildNotesInput();\r\n formButtons = buildFormBtns();\r\n\r\n if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n deleteBtn = buildDeleteBtn();\r\n form.appendChild(deleteBtn);\r\n }\r\n\r\n form.appendChild(followUpTypeDropdown);\r\n form.appendChild(personResponsibleInput);\r\n form.appendChild(dueDateInput);\r\n form.appendChild(completedDateInput);\r\n form.appendChild(notesInput);\r\n form.appendChild(formButtons);\r\n\r\n return form;\r\n }\r\n // show\r\n function showForm(isedit) {\r\n isEdit = isedit;\r\n\r\n consumerSubSections.hideBackBtn();\r\n\r\n followUpHome.classList.add('hidden');\r\n\r\n followUpForm = buildNewFollowUpForm();\r\n section.appendChild(followUpForm);\r\n\r\n setupFormEvents();\r\n checkRequiredFields();\r\n }\r\n\r\n // Review Table\r\n //-----------------------------------------------\r\n function clearReviewTable() {\r\n var tableBody = followUpReviewTable.querySelector('.table__body');\r\n tableBody.innerHTML = '';\r\n }\r\n function populateReviewTable() {\r\n if (!followUpsData) return;\r\n if (!followUpsData[selectedConsumerId]) return;\r\n\r\n var tableData = [];\r\n\r\n var keys = Object.keys(followUpsData[selectedConsumerId]);\r\n keys.forEach(key => {\r\n var followUpData = followUpsData[selectedConsumerId][key];\r\n\r\n var filterFollowUpTypes = followUpTypes.filter(type => type.itFollowUpTypeId === followUpData.followUpTypeId);\r\n var followUpType = filterFollowUpTypes[0] ? filterFollowUpTypes[0].followUpTypeName : '';\r\n var personResponsible = followUpData.personResponsible;\r\n var dueDate = followUpData.dueDate ? followUpData.dueDate.split(' ')[0] : '';\r\n dueDate = dueDate ? UTIL.formatDateFromIso(dueDate) : dueDate;\r\n\r\n tableData.push({\r\n id: key,\r\n values: [followUpType, personResponsible, dueDate],\r\n });\r\n });\r\n\r\n table.populate(followUpReviewTable, tableData);\r\n }\r\n function buildReviewTable() {\r\n var reviewTable = table.build({\r\n tableId: 'consumerFollowUpTable',\r\n columnHeadings: ['Follow Up Type', 'Person Responsible', 'Due Date'],\r\n });\r\n\r\n reviewTable.addEventListener('click', event => {\r\n if (event.target.classList.contains('table__row') && !event.target.classList.contains('header')) {\r\n selectedFollowUpId = event.target.id;\r\n setFormDataDefaults(followUpsData[selectedConsumerId][selectedFollowUpId]);\r\n showForm(true);\r\n }\r\n });\r\n\r\n return reviewTable;\r\n }\r\n\r\n // Home Page\r\n //-----------------------------------------------\r\n function init() {\r\n formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n followUpsData = {};\r\n followUpsDeleteData = {};\r\n getDropdownData();\r\n }\r\n function buildAddNewFollowUpBtn() {\r\n var btn = button.build({\r\n text: 'Add New Follow Up',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n btn.addEventListener('click', () => {\r\n showForm(false);\r\n });\r\n\r\n return btn;\r\n }\r\n function build() {\r\n init();\r\n\r\n section = document.createElement('div');\r\n section.classList.add('consumerSections__section', 'followUpSection');\r\n\r\n followUpHome = document.createElement('div');\r\n followUpHome.classList.add('consumerSections__section__home');\r\n\r\n newFollowUpBtn = buildAddNewFollowUpBtn();\r\n followUpReviewTable = buildReviewTable();\r\n\r\n if ($.session.incidentTrackingUpdate) followUpHome.appendChild(newFollowUpBtn);\r\n followUpHome.appendChild(followUpReviewTable);\r\n\r\n section.appendChild(followUpHome);\r\n\r\n return section;\r\n }\r\n function populate(data, selectedConsumerID) {\r\n selectedConsumerId = selectedConsumerID;\r\n\r\n if (data) {\r\n data.forEach(d => {\r\n if (!followUpsData[selectedConsumerId]) {\r\n followUpsData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!followUpsData[selectedConsumerId][d.itConsumerFollowUpId]) {\r\n followUpsData[selectedConsumerId][d.itConsumerFollowUpId] = d;\r\n followUpsData[selectedConsumerId][d.itConsumerFollowUpId].updated = false;\r\n\r\n // format dates\r\n var dateTimeCompleted = followUpsData[selectedConsumerId][d.itConsumerFollowUpId].dateCompleted;\r\n var dueDateTime = followUpsData[selectedConsumerId][d.itConsumerFollowUpId].dueDate;\r\n dateCompleted = dateTimeCompleted ? dateTimeCompleted.split(' ')[0] : null;\r\n dueDate = dueDateTime ? dueDateTime.split(' ')[0] : null;\r\n\r\n if (dateCompleted) {\r\n followUpsData[selectedConsumerId][d.itConsumerFollowUpId].dateCompleted =\r\n UTIL.formatDateToIso(dateCompleted);\r\n }\r\n if (dueDate) {\r\n followUpsData[selectedConsumerId][d.itConsumerFollowUpId].dueDate = UTIL.formatDateToIso(dueDate);\r\n }\r\n }\r\n });\r\n }\r\n console.table(followUpsData);\r\n\r\n clearReviewTable();\r\n populateReviewTable();\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n clearData,\r\n deleteConsumerData,\r\n getData: getDataForSave,\r\n getDeleteData: getDataForDelete,\r\n };\r\n})();\r\nvar consumerInjuries = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var injuriesHome;\r\n var newInjuryBtn;\r\n var injuriesReviewTable;\r\n //*form\r\n var injuryLocationDropdown;\r\n var injuryTypeDropdown;\r\n var injuryCauseDropdown;\r\n var riskOfInjuryDropdown;\r\n var checkedByNurseCheckbox;\r\n var detailsInput;\r\n var treatmentInput;\r\n var dateCheckedInput;\r\n var formButtons;\r\n var deleteBtn;\r\n var saveBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var injuryData; // save/update data\r\n var injuryDeleteData;\r\n var injuryLocations;\r\n var injuryTypes;\r\n var injuryRisks;\r\n var injuryCauses;\r\n // Values\r\n //---------------------\r\n var selectedConsumerId;\r\n var selectedInjuryId;\r\n //*form values\r\n var injuryLocationId;\r\n var injuryTypeId;\r\n var injuryCauseId;\r\n var injuryRiskId;\r\n var checkedByNurse;\r\n var details;\r\n var treatment;\r\n var dateChecked;\r\n var lastUpdatedBy;\r\n var lastUpdatedOn;\r\n\r\n var isEdit;\r\n var formReadOnly;\r\n\r\n function getDataForSave() {\r\n return injuryData;\r\n }\r\n function getDataForDelete() {\r\n return injuryDeleteData;\r\n }\r\n function clearData() {\r\n injuryData = undefined;\r\n injuryDeleteData = undefined;\r\n selectedConsumerId = undefined;\r\n selectedInjuryId = undefined;\r\n\r\n clearFormDataDefaults();\r\n clearReviewTable();\r\n }\r\n function deleteConsumerData(consumerId) {\r\n if (injuryData[consumerId]) {\r\n var { [consumerId]: removedConsumerData, ...newInjuryData } = injuryData;\r\n injuryData = newInjuryData;\r\n\r\n if (!injuryDeleteData[consumerId]) {\r\n injuryDeleteData[consumerId] = removedConsumerData;\r\n }\r\n }\r\n }\r\n function deleteConsumerInjuryData() {\r\n if (!selectedInjuryId.includes('new')) {\r\n var deletedInjury = injuryData[selectedConsumerId][selectedInjuryId];\r\n if (!injuryDeleteData[selectedConsumerId]) injuryDeleteData[selectedConsumerId] = {};\r\n injuryDeleteData[selectedConsumerId][selectedInjuryId] = deletedInjury;\r\n }\r\n\r\n delete injuryData[selectedConsumerId][selectedInjuryId];\r\n\r\n selectedInjuryId = undefined;\r\n var form = section.querySelector('.injuryForm');\r\n section.removeChild(form);\r\n injuriesHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n }\r\n\r\n function getDropdownData() {\r\n incidentTrackingAjax.getInjuryLocationsDropdown(function (locations) {\r\n injuryLocations = locations;\r\n\r\n incidentTrackingAjax.getInjuryTypesDropdown(function (types) {\r\n injuryTypes = types;\r\n\r\n incidentTrackingAjax.getRiskAndCauseDropdown(function (riskAndCause) {\r\n injuryRisks = riskAndCause.injuryRiskDropdown;\r\n injuryCauses = riskAndCause.injuryCauseDropdowns;\r\n });\r\n });\r\n });\r\n }\r\n\r\n // Form\r\n //-----------------------------------------------\r\n function showDeleteWarning() {\r\n var deleteWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n deleteConsumerInjuryData();\r\n POPUP.hide(deleteWarningPopup);\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteWarningPopup.appendChild(message);\r\n deleteWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteWarningPopup);\r\n }\r\n function checkRequiredFields() {\r\n var hasErrors = false;\r\n\r\n var injuryLocationSelect = injuryLocationDropdown.querySelector('.dropdown__select');\r\n var injuryTypeSelect = injuryTypeDropdown.querySelector('.dropdown__select');\r\n\r\n if (!injuryLocationSelect.value || injuryLocationSelect.value === '%') {\r\n injuryLocationDropdown.classList.add('error');\r\n hasErrors = true;\r\n } else {\r\n injuryLocationDropdown.classList.remove('error');\r\n }\r\n\r\n if (!injuryTypeSelect.value || injuryTypeSelect.value === '%') {\r\n injuryTypeDropdown.classList.add('error');\r\n hasErrors = true;\r\n } else {\r\n injuryTypeDropdown.classList.remove('error');\r\n }\r\n\r\n if (hasErrors) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n function clearFormDataDefaults() {\r\n injuryLocationId = undefined;\r\n injuryTypeId = undefined;\r\n injuryCauseId = undefined;\r\n injuryRiskId = undefined;\r\n checkedByNurse = undefined;\r\n details = undefined;\r\n treatment = undefined;\r\n dateChecked = undefined;\r\n lastUpdatedBy = undefined;\r\n lastUpdatedOn = undefined;\r\n }\r\n function setFormDataDefaults(formData) {\r\n if (formData) {\r\n injuryLocationId = formData.injuryLocationId;\r\n injuryTypeId = formData.injuryTypeId;\r\n injuryCauseId = formData.injuryCauseId;\r\n injuryRiskId = formData.injuryRiskId;\r\n checkedByNurse = formData.checkedByNurse;\r\n details = formData.injuryDetails;\r\n treatment = formData.injuryTreatment;\r\n dateChecked = formData.checkedDate;\r\n }\r\n }\r\n // events\r\n function setupFormEvents() {\r\n let tmpInjuryLocation;\r\n let tmpInjuryType;\r\n let tmpInjuryCause;\r\n let tmpInjuryRisk;\r\n let tmpCheckedBy;\r\n let tmpDetails;\r\n let tmpTreatment;\r\n let tmpDateChecked;\r\n\r\n injuryLocationDropdown.addEventListener('change', e => {\r\n tmpInjuryLocation = e.target.value;\r\n checkRequiredFields();\r\n });\r\n injuryTypeDropdown.addEventListener('change', e => {\r\n tmpInjuryType = e.target.value;\r\n checkRequiredFields();\r\n });\r\n injuryCauseDropdown.addEventListener('change', e => {\r\n tmpInjuryCause = e.target.value;\r\n });\r\n riskOfInjuryDropdown.addEventListener('change', e => {\r\n tmpInjuryRisk = e.target.value;\r\n });\r\n checkedByNurseCheckbox.addEventListener('change', e => {\r\n tmpCheckedBy = e.target.checked ? 'Y' : 'N';\r\n });\r\n detailsInput.addEventListener('change', e => {\r\n tmpDetails = e.target.value;\r\n });\r\n treatmentInput.addEventListener('change', e => {\r\n tmpTreatment = e.target.value;\r\n });\r\n dateCheckedInput.addEventListener('change', e => {\r\n tmpDateChecked = e.target.value;\r\n });\r\n\r\n if (deleteBtn) {\r\n deleteBtn.addEventListener('click', e => {\r\n showDeleteWarning();\r\n });\r\n }\r\n\r\n formButtons.addEventListener('click', e => {\r\n if (e.target === saveBtn) {\r\n if (!injuryData[selectedConsumerId]) {\r\n injuryData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!injuryData[selectedConsumerId][selectedInjuryId]) {\r\n var keys = Object.keys(injuryData[selectedConsumerId]);\r\n selectedInjuryId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n injuryData[selectedConsumerId][selectedInjuryId] = {\r\n injuryLocationId: '',\r\n injuryTypeId: '',\r\n checkedByNurse: 'N',\r\n injuryDetails: '',\r\n injuryTreatment: '',\r\n checkedDate: '',\r\n updated: '',\r\n };\r\n }\r\n\r\n if (\r\n tmpInjuryLocation !== undefined ||\r\n tmpInjuryType !== undefined ||\r\n tmpInjuryCause !== undefined ||\r\n tmpInjuryRisk !== undefined ||\r\n tmpCheckedBy !== undefined ||\r\n tmpDetails !== undefined ||\r\n tmpTreatment !== undefined ||\r\n tmpDateChecked !== undefined\r\n ) {\r\n injuryData[selectedConsumerId][selectedInjuryId].updated = true;\r\n }\r\n\r\n if (tmpInjuryLocation !== undefined) injuryData[selectedConsumerId][selectedInjuryId].injuryLocationId = tmpInjuryLocation;\r\n if (tmpInjuryType !== undefined) injuryData[selectedConsumerId][selectedInjuryId].injuryTypeId = tmpInjuryType;\r\n if (tmpInjuryCause !== undefined) injuryData[selectedConsumerId][selectedInjuryId].injuryCauseId = tmpInjuryCause;\r\n if (tmpInjuryRisk !== undefined) injuryData[selectedConsumerId][selectedInjuryId].injuryRiskId = tmpInjuryRisk;\r\n if (tmpCheckedBy !== undefined) injuryData[selectedConsumerId][selectedInjuryId].checkedByNurse = tmpCheckedBy;\r\n if (tmpDetails !== undefined) injuryData[selectedConsumerId][selectedInjuryId].injuryDetails = tmpDetails;\r\n if (tmpTreatment !== undefined) injuryData[selectedConsumerId][selectedInjuryId].injuryTreatment = tmpTreatment;\r\n if (tmpDateChecked !== undefined) injuryData[selectedConsumerId][selectedInjuryId].checkedDate = tmpDateChecked;\r\n\r\n selectedInjuryId = undefined;\r\n\r\n var form = section.querySelector('.injuryForm');\r\n section.removeChild(form);\r\n injuriesHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n return;\r\n }\r\n\r\n if (e.target === cancelBtn) {\r\n selectedInjuryId = undefined;\r\n var form = section.querySelector('.injuryForm');\r\n section.removeChild(form);\r\n injuriesHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n return;\r\n }\r\n });\r\n }\r\n // build\r\n function buildInjuryLocationDropdown() {\r\n var opts = {\r\n label: 'Injury Location',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var iLocDrop = dropdown.build(opts);\r\n\r\n var data = injuryLocations.map(loc => {\r\n return {\r\n value: loc.injuryLocationId,\r\n text: loc.injuryLocation,\r\n };\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(iLocDrop, data, injuryLocationId);\r\n\r\n return iLocDrop;\r\n }\r\n function buildInjuryTypeDropdown() {\r\n var opts = {\r\n label: 'Injury Type',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var iTypeDrop = dropdown.build(opts);\r\n\r\n var data = injuryTypes.map(type => {\r\n return {\r\n value: type.injuryTypeId,\r\n text: type.injuryType,\r\n };\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(iTypeDrop, data, injuryTypeId);\r\n\r\n return iTypeDrop;\r\n }\r\n function buildInjuryCauseDropdown() {\r\n var opts = {\r\n label: 'Cause of Injury',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var iCauseDrop = dropdown.build(opts);\r\n\r\n var data = injuryCauses.map(type => {\r\n return {\r\n value: type.injuryCauseId,\r\n text: type.injuryCauseDescription,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n if (a.text.toLowerCase() < b.text.toLowerCase()) return -1;\r\n if (a.text.toLowerCase() > b.text.toLowerCase()) return 1;\r\n return 0;\r\n });\r\n\r\n data.unshift({ value: '', text: '' });\r\n dropdown.populate(iCauseDrop, data, injuryCauseId);\r\n\r\n return iCauseDrop;\r\n }\r\n function buildRiskOfInjuryDropdown() {\r\n var opts = {\r\n label: 'Risk of Serious Injury',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var iRiskDrop = dropdown.build(opts);\r\n\r\n var data = injuryRisks.map(type => {\r\n return {\r\n value: type.injuryRiskId,\r\n text: type.injuryRiskdescription,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n if (a.text.toLowerCase() < b.text.toLowerCase()) return -1;\r\n if (a.text.toLowerCase() > b.text.toLowerCase()) return 1;\r\n return 0;\r\n });\r\n\r\n data.unshift({ value: '', text: '' });\r\n dropdown.populate(iRiskDrop, data, injuryRiskId);\r\n\r\n return iRiskDrop;\r\n }\r\n function buildCheckedByCheckbox() {\r\n var opts = {\r\n text: 'Checked By Nurse',\r\n isChecked: checkedByNurse === 'Y' ? true : false,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var checkbox = input.buildCheckbox(opts);\r\n\r\n return checkbox;\r\n }\r\n function buildDetailsInput() {\r\n var opts = {\r\n label: 'Details',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: details,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var dInput = input.build(opts);\r\n\r\n return dInput;\r\n }\r\n function buildTreatmentInput() {\r\n var opts = {\r\n label: 'Treatment',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: treatment,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var tInput = input.build(opts);\r\n\r\n return tInput;\r\n }\r\n function buildDateCheckedInput() {\r\n var opts = {\r\n label: 'Date Checked',\r\n type: 'date',\r\n style: 'secondary',\r\n value: dateChecked,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var dcInput = input.build(opts);\r\n\r\n return dcInput;\r\n }\r\n function buildFormBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n saveBtn = button.build({\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n\r\n if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate) btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildDeleteBtn() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'error',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildNewInjuryForm() {\r\n var form = document.createElement('div');\r\n form.classList.add('injuryForm');\r\n\r\n injuryLocationDropdown = buildInjuryLocationDropdown();\r\n injuryTypeDropdown = buildInjuryTypeDropdown();\r\n injuryCauseDropdown = buildInjuryCauseDropdown();\r\n riskOfInjuryDropdown = buildRiskOfInjuryDropdown();\r\n checkedByNurseCheckbox = buildCheckedByCheckbox();\r\n detailsInput = buildDetailsInput();\r\n treatmentInput = buildTreatmentInput();\r\n dateCheckedInput = buildDateCheckedInput();\r\n formButtons = buildFormBtns();\r\n\r\n if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n deleteBtn = buildDeleteBtn();\r\n form.appendChild(deleteBtn);\r\n }\r\n\r\n form.appendChild(injuryLocationDropdown);\r\n form.appendChild(injuryTypeDropdown);\r\n form.appendChild(injuryCauseDropdown);\r\n form.appendChild(riskOfInjuryDropdown);\r\n form.appendChild(checkedByNurseCheckbox);\r\n form.appendChild(detailsInput);\r\n form.appendChild(treatmentInput);\r\n form.appendChild(dateCheckedInput);\r\n form.appendChild(formButtons);\r\n\r\n form.addEventListener('change', () => incidentCard.checkEntireIncidentCardforErrors());\r\n\r\n return form;\r\n }\r\n // show\r\n function showForm(isedit) {\r\n isEdit = isedit;\r\n\r\n consumerSubSections.hideBackBtn();\r\n\r\n injuriesHome.classList.add('hidden');\r\n\r\n var injuryForm = buildNewInjuryForm();\r\n section.appendChild(injuryForm);\r\n\r\n setupFormEvents();\r\n checkRequiredFields();\r\n }\r\n\r\n // Review Table\r\n //-----------------------------------------------\r\n function clearReviewTable() {\r\n var tableBody = injuriesReviewTable.querySelector('.table__body');\r\n tableBody.innerHTML = '';\r\n }\r\n function populateReviewTable() {\r\n if (!injuryData) return;\r\n if (!injuryData[selectedConsumerId]) return;\r\n\r\n var tableData = [];\r\n\r\n var keys = Object.keys(injuryData[selectedConsumerId]);\r\n keys.forEach(key => {\r\n var data = injuryData[selectedConsumerId][key];\r\n var filteredLocations = injuryLocations.filter(iLoc => iLoc.injuryLocationId === data.injuryLocationId);\r\n var filteredTypes = injuryTypes.filter(iType => iType.injuryTypeId === data.injuryTypeId);\r\n var injuryLocation = filteredLocations[0].injuryLocation;\r\n var injuryType = filteredTypes[0].injuryType;\r\n var nurseChecked = data.checkedByNurse === 'Y' ? 'Yes' : 'No';\r\n\r\n tableData.push({\r\n id: key,\r\n values: [injuryLocation, injuryType, nurseChecked],\r\n });\r\n });\r\n\r\n table.populate(injuriesReviewTable, tableData);\r\n }\r\n function buildReviewTable() {\r\n var reviewTable = table.build({\r\n tableId: 'consumerInjuriesTable',\r\n columnHeadings: ['Injury Location', 'Injury Type', 'Checked By Nurse'],\r\n });\r\n\r\n reviewTable.addEventListener('click', event => {\r\n if (event.target.classList.contains('table__row') && !event.target.classList.contains('header')) {\r\n selectedInjuryId = event.target.id;\r\n setFormDataDefaults(injuryData[selectedConsumerId][selectedInjuryId]);\r\n showForm(true);\r\n }\r\n });\r\n\r\n return reviewTable;\r\n }\r\n\r\n // Home Page\r\n //-----------------------------------------------\r\n function init() {\r\n formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n injuryData = {};\r\n injuryDeleteData = {};\r\n getDropdownData();\r\n }\r\n function buildAddNewInjuryBtn() {\r\n var btn = button.build({\r\n text: 'Add New Injury',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n\r\n btn.addEventListener('click', () => {\r\n showForm(false);\r\n });\r\n\r\n return btn;\r\n }\r\n function build() {\r\n init();\r\n\r\n section = document.createElement('div');\r\n section.classList.add('consumerSections__section', 'injuriesSection');\r\n\r\n injuriesHome = document.createElement('div');\r\n injuriesHome.classList.add('consumerSections__section__home');\r\n\r\n newInjuryBtn = buildAddNewInjuryBtn();\r\n injuriesReviewTable = buildReviewTable();\r\n\r\n if ($.session.incidentTrackingUpdate) injuriesHome.appendChild(newInjuryBtn);\r\n injuriesHome.appendChild(injuriesReviewTable);\r\n\r\n section.appendChild(injuriesHome);\r\n\r\n return section;\r\n }\r\n function populate(data, selectedConsumerID) {\r\n selectedConsumerId = selectedConsumerID;\r\n\r\n if (data) {\r\n data.forEach(d => {\r\n if (!injuryData[selectedConsumerId]) {\r\n injuryData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!injuryData[selectedConsumerId][d.itConsumerInjuryId]) {\r\n injuryData[selectedConsumerId][d.itConsumerInjuryId] = d;\r\n injuryData[selectedConsumerId][d.itConsumerInjuryId].updated = false;\r\n\r\n // format dates\r\n var dateChecked = injuryData[selectedConsumerId][d.itConsumerInjuryId].checkedDate;\r\n dateChecked = dateChecked ? dateChecked.split(' ')[0] : null;\r\n\r\n if (dateChecked) {\r\n injuryData[selectedConsumerId][d.itConsumerInjuryId].checkedDate = UTIL.formatDateToIso(dateChecked);\r\n }\r\n }\r\n });\r\n }\r\n\r\n clearReviewTable();\r\n populateReviewTable();\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n clearData,\r\n deleteConsumerData,\r\n getData: getDataForSave,\r\n getDeleteData: getDataForDelete,\r\n };\r\n})();\r\nvar consumerIntervention = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var interventionHome;\r\n var newInterventionBtn;\r\n var interventionReviewTable;\r\n //*form\r\n var interventionTypeDropdown;\r\n var startTimeInput;\r\n var endTimeInput;\r\n var totalTimeInput;\r\n var aversiveCheckbox;\r\n var notesInput;\r\n var formButtons;\r\n var deleteBtn;\r\n var saveBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var interventionData; // save/update data\r\n var interventionDeleteData;\r\n var interventionTypes;\r\n // Values\r\n //---------------------\r\n var selectedConsumerId;\r\n var selectedInterventionId;\r\n //*form values\r\n var interventionTypeId;\r\n var startTime;\r\n var endTime;\r\n var timeLength;\r\n var aversive;\r\n var note;\r\n var lastUpdatedBy;\r\n var lastUpdatedOn;\r\n\r\n var isEdit;\r\n var formReadOnly;\r\n\r\n function calculateTotalHours(dirtyStart, dirtyEnd) {\r\n // must be military time\r\n if (dirtyStart === '' || dirtyEnd === '' || !dirtyStart || !dirtyEnd) {\r\n return;\r\n }\r\n\r\n var startTime = dirtyStart.split(':');\r\n var endTime = dirtyEnd.split(':');\r\n\r\n var tempDate = new Date();\r\n var year = tempDate.getFullYear();\r\n var month = tempDate.getMonth();\r\n var day = tempDate.getDate();\r\n\r\n var startDate = new Date(year, month, day, startTime[0], startTime[1]);\r\n var endDate;\r\n if (dirtyEnd === '00:00') {\r\n endDate = new Date(year, month, day + 1, endTime[0], endTime[1]);\r\n } else {\r\n endDate = new Date(year, month, day, endTime[0], endTime[1]);\r\n }\r\n\r\n var timeDiff = endDate - startDate;\r\n var hoursDiff = Math.floor((timeDiff % 86400000) / 3600000);\r\n var minutesDiff = Math.floor(((timeDiff % 86400000) % 3600000) / 60000);\r\n\r\n return `${UTIL.leadingZero(hoursDiff)}:${UTIL.leadingZero(minutesDiff)}`;\r\n }\r\n function calculateTimeLength() {\r\n var stInput = startTimeInput.querySelector('input');\r\n var etInput = endTimeInput.querySelector('input');\r\n var ttInput = totalTimeInput.querySelector('input');\r\n\r\n var sTime = stInput.value;\r\n var eTime = etInput.value;\r\n\r\n if (!sTime || !eTime) {\r\n if (!sTime) startTimeInput.classList.remove('error');\r\n if (!eTime) endTimeInput.classList.remove('error');\r\n if (!sTime && !eTime) saveBtn.classList.remove('disabled');\r\n return null;\r\n }\r\n\r\n var totalTime = calculateTotalHours(sTime, eTime);\r\n\r\n if (totalTime.search('-') === -1) {\r\n ttInput.value = totalTime;\r\n startTimeInput.classList.remove('error');\r\n endTimeInput.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n return totalTime;\r\n } else {\r\n ttInput.value = '';\r\n startTimeInput.classList.add('error');\r\n endTimeInput.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n return null;\r\n }\r\n }\r\n\r\n function getDataForSave() {\r\n return interventionData;\r\n }\r\n function getDataForDelete() {\r\n return interventionDeleteData;\r\n }\r\n function clearData() {\r\n interventionData = undefined;\r\n interventionDeleteData = undefined;\r\n selectedConsumerId = undefined;\r\n selectedInterventionId = undefined;\r\n\r\n clearFormDataDefaults();\r\n clearReviewTable();\r\n }\r\n function deleteConsumerData(consumerId) {\r\n if (interventionData[consumerId]) {\r\n var { [consumerId]: removedConsumerData, ...newInterventionData } = interventionData;\r\n interventionData = newInterventionData;\r\n\r\n if (!interventionDeleteData[consumerId]) {\r\n interventionDeleteData[consumerId] = removedConsumerData;\r\n }\r\n }\r\n }\r\n function deleteConsumerInterventionData() {\r\n if (!selectedInterventionId.includes('new')) {\r\n var deletedIntervention = interventionData[selectedConsumerId][selectedInterventionId];\r\n if (!interventionDeleteData[selectedConsumerId]) interventionDeleteData[selectedConsumerId] = {};\r\n interventionDeleteData[selectedConsumerId][selectedInterventionId] = deletedIntervention;\r\n }\r\n\r\n delete interventionData[selectedConsumerId][selectedInterventionId];\r\n\r\n selectedInterventionId = undefined;\r\n var form = section.querySelector('.interventionForm');\r\n section.removeChild(form);\r\n interventionHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n }\r\n\r\n function getDropdownData() {\r\n incidentTrackingAjax.getInterventionTypesDropdown(function (res) {\r\n interventionTypes = res;\r\n });\r\n }\r\n\r\n // Form\r\n //-----------------------------------------------\r\n function showDeleteWarning() {\r\n var deleteWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n deleteConsumerInterventionData();\r\n POPUP.hide(deleteWarningPopup);\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteWarningPopup.appendChild(message);\r\n deleteWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteWarningPopup);\r\n }\r\n function checkRequiredFields() {\r\n var hasErrors = false;\r\n\r\n var interventionTypeSelect = interventionTypeDropdown.querySelector('.dropdown__select');\r\n if (!interventionTypeSelect.value || interventionTypeSelect.value === '%') {\r\n interventionTypeDropdown.classList.add('error');\r\n hasErrors = true;\r\n } else {\r\n interventionTypeDropdown.classList.remove('error');\r\n }\r\n\r\n //var errors = [...followUpForm.querySelectorAll('.error')];\r\n if (hasErrors) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n function clearFormDataDefaults() {\r\n interventionTypeId = undefined;\r\n startTime = undefined;\r\n endTime = undefined;\r\n timeLength = undefined;\r\n aversive = undefined;\r\n note = undefined;\r\n lastUpdatedBy = undefined;\r\n lastUpdatedOn = undefined;\r\n }\r\n function setFormDataDefaults(formData) {\r\n if (formData) {\r\n var sTime = formData.startTime.split(':');\r\n var eTime = formData.stopTime.split(':');\r\n var tTime = formData.timeLength.split(':');\r\n\r\n interventionTypeId = formData.interventionType;\r\n startTime = `${sTime[0]}:${sTime[1]}`;\r\n endTime = `${eTime[0]}:${eTime[1]}`;\r\n timeLength = `${tTime[0]}:${tTime[1]}`;\r\n aversive = formData.aversive;\r\n note = formData.interventionNotes;\r\n lastUpdatedBy = formData.lastUpdatedBy;\r\n lastUpdatedOn = formData.lastUpdatedOn;\r\n }\r\n }\r\n // events\r\n function setupFormEvents() {\r\n var tmpInterventionType;\r\n var tmpStartTime;\r\n var tmpEndTime;\r\n var tmpTimeLength;\r\n var tmpAversive;\r\n var tmpNote;\r\n\r\n interventionTypeDropdown.addEventListener('change', e => {\r\n tmpInterventionType = e.target.value;\r\n checkRequiredFields();\r\n });\r\n startTimeInput.addEventListener('change', e => {\r\n tmpStartTime = e.target.value;\r\n tmpTimeLength = calculateTimeLength();\r\n });\r\n endTimeInput.addEventListener('change', e => {\r\n tmpEndTime = e.target.value;\r\n tmpTimeLength = calculateTimeLength();\r\n });\r\n aversiveCheckbox.addEventListener('change', e => {\r\n tmpAversive = e.target.checked ? 'Y' : 'N';\r\n });\r\n notesInput.addEventListener('change', e => {\r\n tmpNote = e.target.value;\r\n });\r\n\r\n if (deleteBtn) {\r\n deleteBtn.addEventListener('click', e => {\r\n showDeleteWarning();\r\n });\r\n }\r\n\r\n formButtons.addEventListener('click', e => {\r\n if (e.target === saveBtn) {\r\n if (!interventionData[selectedConsumerId]) {\r\n interventionData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!interventionData[selectedConsumerId][selectedInterventionId]) {\r\n var keys = Object.keys(interventionData[selectedConsumerId]);\r\n selectedInterventionId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n interventionData[selectedConsumerId][selectedInterventionId] = {\r\n interventionType: '',\r\n startTime: '',\r\n stopTime: '',\r\n timeLength: '',\r\n aversive: '',\r\n interventionNotes: '',\r\n updated: '',\r\n };\r\n }\r\n\r\n if (tmpInterventionType || tmpStartTime || tmpEndTime || tmpTimeLength || tmpAversive || tmpNote) {\r\n interventionData[selectedConsumerId][selectedInterventionId].updated = true;\r\n }\r\n\r\n if (tmpInterventionType)\r\n interventionData[selectedConsumerId][selectedInterventionId].interventionType = tmpInterventionType;\r\n if (tmpStartTime) interventionData[selectedConsumerId][selectedInterventionId].startTime = tmpStartTime;\r\n if (tmpEndTime) interventionData[selectedConsumerId][selectedInterventionId].stopTime = tmpEndTime;\r\n if (tmpTimeLength) interventionData[selectedConsumerId][selectedInterventionId].timeLength = tmpTimeLength;\r\n if (tmpAversive) interventionData[selectedConsumerId][selectedInterventionId].aversive = tmpAversive;\r\n if (tmpNote) interventionData[selectedConsumerId][selectedInterventionId].interventionNotes = tmpNote;\r\n\r\n selectedInterventionId = undefined;\r\n\r\n var form = section.querySelector('.interventionForm');\r\n section.removeChild(form);\r\n interventionHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n return;\r\n }\r\n\r\n if (e.target === cancelBtn) {\r\n selectedInterventionId = undefined;\r\n var form = section.querySelector('.interventionForm');\r\n section.removeChild(form);\r\n interventionHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n return;\r\n }\r\n });\r\n }\r\n // build\r\n function buildInterventionTypeDropdown() {\r\n var opts = {\r\n label: 'Intervention Type',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var iTypeDrop = dropdown.build(opts);\r\n\r\n var data = interventionTypes.map(it => {\r\n return {\r\n value: it.interventionTypeId,\r\n text: it.description,\r\n };\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(iTypeDrop, data, interventionTypeId);\r\n\r\n return iTypeDrop;\r\n }\r\n function buildStartTimeInput() {\r\n var opts = {\r\n label: 'Start Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: startTime,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var stInput = input.build(opts);\r\n\r\n return stInput;\r\n }\r\n function buildEndTimeInput() {\r\n var opts = {\r\n label: 'End Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: endTime,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var etInput = input.build(opts);\r\n\r\n return etInput;\r\n }\r\n function buildTotalTimeInput() {\r\n var opts = {\r\n label: 'Total Time',\r\n type: 'text',\r\n style: 'secondary',\r\n readonly: true,\r\n value: timeLength,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var etInput = input.build(opts);\r\n\r\n return etInput;\r\n }\r\n function buildAversiveCheckbox() {\r\n var opts = {\r\n text: 'Aversive',\r\n isChecked: aversive === 'Y' ? true : false,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var checkbox = input.buildCheckbox(opts);\r\n\r\n return checkbox;\r\n }\r\n function buildNotesInput() {\r\n var opts = {\r\n label: 'Notes',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: note,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var nInput = input.build(opts);\r\n\r\n return nInput;\r\n }\r\n function buildFormBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n saveBtn = button.build({\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n\r\n if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate) btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildDeleteBtn() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'error',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildNewInterventionForm() {\r\n var form = document.createElement('div');\r\n form.classList.add('interventionForm');\r\n\r\n interventionTypeDropdown = buildInterventionTypeDropdown();\r\n startTimeInput = buildStartTimeInput();\r\n endTimeInput = buildEndTimeInput();\r\n totalTimeInput = buildTotalTimeInput();\r\n aversiveCheckbox = buildAversiveCheckbox();\r\n notesInput = buildNotesInput();\r\n formButtons = buildFormBtns();\r\n\r\n if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n deleteBtn = buildDeleteBtn();\r\n form.appendChild(deleteBtn);\r\n }\r\n\r\n form.appendChild(interventionTypeDropdown);\r\n form.appendChild(startTimeInput);\r\n form.appendChild(endTimeInput);\r\n form.appendChild(totalTimeInput);\r\n form.appendChild(aversiveCheckbox);\r\n form.appendChild(notesInput);\r\n form.appendChild(formButtons);\r\n\r\n form.addEventListener('change', () => incidentCard.checkEntireIncidentCardforErrors());\r\n\r\n return form;\r\n }\r\n // show\r\n function showForm(isedit) {\r\n isEdit = isedit;\r\n\r\n consumerSubSections.hideBackBtn();\r\n\r\n interventionHome.classList.add('hidden');\r\n\r\n var interventionForm = buildNewInterventionForm();\r\n section.appendChild(interventionForm);\r\n\r\n setupFormEvents();\r\n checkRequiredFields();\r\n }\r\n\r\n // Review Table\r\n //-----------------------------------------------\r\n function clearReviewTable() {\r\n var tableBody = interventionReviewTable.querySelector('.table__body');\r\n tableBody.innerHTML = '';\r\n }\r\n function populateReviewTable() {\r\n if (!interventionData) return;\r\n if (!interventionData[selectedConsumerId]) return;\r\n\r\n var tableData = [];\r\n\r\n var keys = Object.keys(interventionData[selectedConsumerId]);\r\n keys.forEach(key => {\r\n var data = interventionData[selectedConsumerId][key];\r\n var filteredInterventionTypes = interventionTypes.filter(it => it.interventionTypeId === data.interventionType);\r\n var interventionType = filteredInterventionTypes[0].description;\r\n var timeLength = data.timeLength.split(':');\r\n timeLength = `${timeLength[0]}:${timeLength[1]}`;\r\n var aversive = data.aversive === 'Y' ? 'Yes' : 'No';\r\n\r\n tableData.push({\r\n id: key,\r\n values: [interventionType, timeLength, aversive],\r\n });\r\n });\r\n\r\n table.populate(interventionReviewTable, tableData);\r\n }\r\n function buildReviewTable() {\r\n var reviewTable = table.build({\r\n tableId: 'consumerInterventionTable',\r\n columnHeadings: ['Intervention Type', 'Time Length', 'Aversive'],\r\n });\r\n\r\n reviewTable.addEventListener('click', event => {\r\n if (event.target.classList.contains('table__row') && !event.target.classList.contains('header')) {\r\n selectedInterventionId = event.target.id;\r\n setFormDataDefaults(interventionData[selectedConsumerId][selectedInterventionId]);\r\n showForm(true);\r\n }\r\n });\r\n\r\n return reviewTable;\r\n }\r\n\r\n // Home Page\r\n //-----------------------------------------------\r\n function init() {\r\n formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n interventionData = {};\r\n interventionDeleteData = {};\r\n getDropdownData();\r\n }\r\n function buildAddNewInterventionBtn() {\r\n var btn = button.build({\r\n text: 'Add New Intervention',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n\r\n btn.addEventListener('click', () => {\r\n showForm(false);\r\n });\r\n\r\n return btn;\r\n }\r\n function build() {\r\n init();\r\n\r\n section = document.createElement('div');\r\n section.classList.add('consumerSections__section', 'interventionSection');\r\n\r\n interventionHome = document.createElement('div');\r\n interventionHome.classList.add('consumerSections__section__home');\r\n\r\n newInterventionBtn = buildAddNewInterventionBtn();\r\n interventionReviewTable = buildReviewTable();\r\n\r\n if ($.session.incidentTrackingUpdate) interventionHome.appendChild(newInterventionBtn);\r\n interventionHome.appendChild(interventionReviewTable);\r\n\r\n section.appendChild(interventionHome);\r\n\r\n return section;\r\n }\r\n function populate(data, selectedConsumerID) {\r\n selectedConsumerId = selectedConsumerID;\r\n\r\n if (data) {\r\n data.forEach(d => {\r\n if (!interventionData[selectedConsumerId]) {\r\n interventionData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!interventionData[selectedConsumerId][d.itConsumerInterventionId]) {\r\n interventionData[selectedConsumerId][d.itConsumerInterventionId] = d;\r\n interventionData[selectedConsumerId][d.itConsumerInterventionId].updated = false;\r\n }\r\n });\r\n }\r\n\r\n clearReviewTable();\r\n populateReviewTable();\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n clearData,\r\n deleteConsumerData,\r\n getData: getDataForSave,\r\n getDeleteData: getDataForDelete,\r\n };\r\n})();\r\nvar consumerInvolvement = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var involvementDropdown;\r\n var locationDropdown;\r\n var ppiCheckbox;\r\n var actionBtns;\r\n var saveBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var involvementsData;\r\n var involvementTypes;\r\n var consumerLocationData;\r\n // Values\r\n //---------------------\r\n var selectedConsumerId;\r\n\r\n var isEdit;\r\n var formReadOnly;\r\n\r\n function getDataForSave() {\r\n return involvementsData;\r\n }\r\n\r\n function deleteConsumerData(consumerId) {\r\n if (involvementsData[consumerId]) {\r\n var { [consumerId]: removedConsumer, ...newInvolvementsData } = involvementsData;\r\n involvementsData = newInvolvementsData;\r\n }\r\n }\r\n\r\n function clearData() {\r\n selectedConsumerId = undefined;\r\n involvementsData = undefined;\r\n }\r\n\r\n function setInvolvementsData(data) {\r\n involvementsData = {};\r\n\r\n if (data) {\r\n data.forEach(d => {\r\n involvementsData[d.consumerId] = {\r\n includeInCount: d.includeInCount,\r\n involvementId: d.involvementId,\r\n locationId: d.locationId,\r\n name: `${d.firstName} ${d.LastName}`,\r\n };\r\n });\r\n }\r\n }\r\n function initConsumerInvolvementData(consumerId) {\r\n // get location data for consumer\r\n return new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.getConsumerServiceLocations(consumerId, results => {\r\n consumerLocationData[consumerId] = results.map(r => {\r\n return {\r\n value: r.locationId,\r\n text: r.description,\r\n };\r\n });\r\n\r\n if (!involvementsData[consumerId]) {\r\n var includeInCount = 'Y';\r\n var involvementId = involvementTypes[0].involvementId;\r\n var locationId =\r\n consumerLocationData[consumerId].length === 1 ? consumerLocationData[consumerId][0].value : '';\r\n\r\n involvementsData[consumerId] = {\r\n includeInCount,\r\n involvementId,\r\n locationId,\r\n };\r\n }\r\n\r\n fulfill();\r\n });\r\n });\r\n }\r\n\r\n function toggleSaveDisabled() {\r\n var errors = [].slice.call(section.querySelectorAll('.error'));\r\n\r\n if (errors.length > 0) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n function checkRequiredFields() {\r\n var allHaveLocation = true;\r\n var oneHasPPI = false;\r\n var consumerIds = [];\r\n\r\n var keys = Object.keys(involvementsData);\r\n keys.forEach(k => {\r\n var data = involvementsData[k];\r\n if (data.locationId === '') {\r\n allHaveLocation = false;\r\n consumerIds.push(k);\r\n }\r\n if (data.includeInCount === 'Y') oneHasPPI = true;\r\n });\r\n\r\n if (!oneHasPPI) {\r\n itConsumerSection.showConsumerError(['%'], 'At least one consumer must have PPI checked.');\r\n return;\r\n } else {\r\n if (!allHaveLocation) {\r\n itConsumerSection.showConsumerError(consumerIds, 'Involvement location is required.');\r\n } else {\r\n itConsumerSection.removeConsumerErrors();\r\n }\r\n }\r\n }\r\n\r\n function checkOneHasPPI() {\r\n let oneHasPPI = false;\r\n const keys = Object.keys(involvementsData);\r\n keys.forEach(k => {\r\n const data = involvementsData[k];\r\n if (data.includeInCount === 'Y') oneHasPPI = true;\r\n });\r\n return oneHasPPI;\r\n }\r\n\r\n function doesAnotherConsumerHavePPIChecked() {\r\n var otherConsumerHasPPI = false;\r\n\r\n var keys = Object.keys(involvementsData);\r\n\r\n if (keys.length === 1) {\r\n return true;\r\n }\r\n\r\n keys.forEach(k => {\r\n var data = involvementsData[k];\r\n if (data.includeInCount === 'Y') otherConsumerHasPPI = true;\r\n });\r\n\r\n return otherConsumerHasPPI;\r\n }\r\n\r\n // Events\r\n //-----------------------------------------------\r\n function setupEvents() {\r\n var tmpInvolvementId;\r\n var tmpLocationId;\r\n var tmpPpi;\r\n\r\n involvementDropdown.addEventListener('change', e => {\r\n tmpInvolvementId = e.target.value;\r\n if (tmpInvolvementId === '') {\r\n involvementDropdown.classList.add('error');\r\n } else {\r\n involvementDropdown.classList.remove('error');\r\n }\r\n toggleSaveDisabled();\r\n });\r\n locationDropdown.addEventListener('change', e => {\r\n tmpLocationId = e.target.value;\r\n if (tmpLocationId === '') {\r\n locationDropdown.classList.add('error');\r\n } else {\r\n locationDropdown.classList.remove('error');\r\n }\r\n toggleSaveDisabled();\r\n });\r\n ppiCheckbox.addEventListener('change', e => {\r\n tmpPpi = e.target.checked ? 'Y' : 'N';\r\n\r\n if (tmpPpi === 'Y') {\r\n ppiCheckbox.classList.remove('error');\r\n } else {\r\n if (doesAnotherConsumerHavePPIChecked()) {\r\n ppiCheckbox.classList.remove('error');\r\n } else {\r\n ppiCheckbox.classList.add('error');\r\n }\r\n }\r\n\r\n toggleSaveDisabled();\r\n });\r\n\r\n actionBtns.addEventListener('click', e => {\r\n if (e.target === saveBtn) {\r\n if (tmpPpi) involvementsData[selectedConsumerId].includeInCount = tmpPpi;\r\n if (tmpInvolvementId) involvementsData[selectedConsumerId].involvementId = tmpInvolvementId;\r\n if (tmpLocationId) involvementsData[selectedConsumerId].locationId = tmpLocationId;\r\n\r\n tmpPpi = undefined;\r\n tmpInvolvementId = undefined;\r\n tmpLocationId = undefined;\r\n\r\n const locationId = involvementsData[selectedConsumerId].locationId;\r\n const involvementSec = document.querySelector(\"[data-sectionid='5']\");\r\n if (locationId === '' || consumerInvolvement.checkOneHasPPI() === false) {\r\n involvementSec.classList.add('sectionError');\r\n } else {\r\n involvementSec.classList.remove('sectionError');\r\n }\r\n\r\n section.classList.remove('visible');\r\n consumerSubSections.showSectionMenu();\r\n checkRequiredFields();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n }\r\n\r\n if (e.target === cancelBtn) {\r\n section.classList.remove('visible');\r\n consumerSubSections.showSectionMenu();\r\n }\r\n });\r\n }\r\n // Populate\r\n //-----------------------------------------------\r\n function populateLocationDropdown() {\r\n function populateDropdown(data) {\r\n var locationId = involvementsData[selectedConsumerId].locationId;\r\n\r\n if (!locationId && data.length > 1) {\r\n if (data[0].value !== '') data.unshift({ value: '', text: '' });\r\n locationDropdown.classList.add('error');\r\n }\r\n\r\n dropdown.populate(locationDropdown, data, locationId);\r\n }\r\n\r\n var data = consumerLocationData[selectedConsumerId];\r\n\r\n if (!data) {\r\n incidentTrackingAjax.getConsumerServiceLocations(selectedConsumerId, results => {\r\n consumerLocationData[selectedConsumerId] = results.map(r => {\r\n return {\r\n value: r.locationId,\r\n text: r.description,\r\n };\r\n });\r\n\r\n populateDropdown(consumerLocationData[selectedConsumerId]);\r\n });\r\n\r\n return;\r\n }\r\n\r\n populateDropdown(data);\r\n }\r\n function setInvolvmentDropdownValue() {\r\n var consumerData = involvementsData[selectedConsumerId];\r\n var involvmentSelect = involvementDropdown.querySelector('select');\r\n if (consumerData.involvementId !== '') {\r\n involvmentSelect.value = consumerData.involvementId;\r\n involvementDropdown.classList.remove('error');\r\n }\r\n }\r\n function setPPICheckboxValue() {\r\n var consumerData = involvementsData[selectedConsumerId];\r\n var ppiCheckboxInput = ppiCheckbox.querySelector('input');\r\n if (consumerData.includeInCount === 'Y' || consumerData.includeInCount === '') {\r\n ppiCheckboxInput.checked = true;\r\n } else {\r\n ppiCheckboxInput.checked = false;\r\n }\r\n }\r\n // Build\r\n //-----------------------------------------------\r\n function buildInvolvementDropdown() {\r\n var opts = {\r\n className: `involvementDropdown`,\r\n label: 'Involvement',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var iDropdown = dropdown.build(opts);\r\n\r\n involvementTypes = incidentTracking.getInvolvementTypes();\r\n\r\n var data = involvementTypes.map(it => {\r\n var involvementId = it.involvementId === '%' ? '' : it.involvementId;\r\n return { value: involvementId, text: it.description };\r\n });\r\n\r\n dropdown.populate(iDropdown, data);\r\n\r\n return iDropdown;\r\n }\r\n function buildLocationDropdown() {\r\n var opts = {\r\n dropdownId: `involvementLocation-${selectedConsumerId}`,\r\n className: `locationDropdown`,\r\n label: 'Location',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var lDropdown = dropdown.build(opts);\r\n\r\n return lDropdown;\r\n }\r\n function buildCheckbox() {\r\n var opts = {\r\n className: 'ppiCheckbox',\r\n text: 'Include in Counts',\r\n isChecked: true,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var checkbox = input.buildCheckbox(opts);\r\n\r\n return checkbox;\r\n }\r\n function buildBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n var saveText = true ? 'Update' : 'Save';\r\n\r\n saveBtn = button.build({\r\n text: saveText,\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n\r\n if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate) btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n\r\n function involvementDataLookup(consumerId) {\r\n return involvementsData[consumerId];\r\n }\r\n\r\n function build(consumersInvolvedData) {\r\n formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n consumerLocationData = {};\r\n setInvolvementsData(consumersInvolvedData);\r\n isEdit = consumersInvolvedData ? true : false;\r\n\r\n section = document.createElement('div');\r\n section.classList.add('consumerSections__section', 'involvementSection');\r\n\r\n involvementDropdown = buildInvolvementDropdown();\r\n locationDropdown = buildLocationDropdown();\r\n ppiCheckbox = buildCheckbox();\r\n actionBtns = buildBtns();\r\n\r\n section.appendChild(involvementDropdown);\r\n section.appendChild(locationDropdown);\r\n section.appendChild(ppiCheckbox);\r\n section.appendChild(actionBtns);\r\n\r\n setupEvents();\r\n toggleSaveDisabled();\r\n\r\n return section;\r\n }\r\n function populate(consumerId) {\r\n selectedConsumerId = consumerId;\r\n\r\n populateLocationDropdown();\r\n setInvolvmentDropdownValue();\r\n setPPICheckboxValue();\r\n checkRequiredFields();\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n checkRequiredFields,\r\n initConsumerData: initConsumerInvolvementData,\r\n deleteConsumerData,\r\n getData: getDataForSave,\r\n clearData,\r\n involvementDataLookup,\r\n checkOneHasPPI,\r\n };\r\n})();\r\nvar consumerReporting = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var reportingHome;\r\n var newReportingBtn;\r\n var reportingReviewTable;\r\n //*form\r\n var reportingCategoryDropdown;\r\n var reportedByInput;\r\n var reportedToInput;\r\n var reportMethodInput;\r\n var reportDateInput;\r\n var reportTimeInput;\r\n var reportNotesInput;\r\n var formButtons;\r\n var deleteBtn;\r\n var saveBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var reportingData;\r\n var reportingDeleteData;\r\n var reportingCategories;\r\n // Values\r\n //---------------------\r\n var selectedConsumerId;\r\n var selectedReportId;\r\n //*form values\r\n var dateReported;\r\n var reportTime;\r\n var reportBy;\r\n var reportMethod;\r\n var reportTo;\r\n var reportingCategoryId;\r\n var reportNotes;\r\n var lastUpdatedBy;\r\n var lastUpdatedOn;\r\n\r\n var isEdit;\r\n var formReadOnly;\r\n\r\n function getDataForSave() {\r\n return reportingData;\r\n }\r\n function getDataForDelete() {\r\n return reportingDeleteData;\r\n }\r\n function clearData() {\r\n reportingData = undefined;\r\n reportingDeleteData = undefined;\r\n selectedConsumerId = undefined;\r\n selectedReportId = undefined;\r\n\r\n clearFormDataDefaults();\r\n clearReviewTable();\r\n }\r\n function deleteConsumerData(consumerId) {\r\n var { [consumerId]: removedConsumerData, ...newReportingData } = reportingData;\r\n reportingData = newReportingData;\r\n\r\n if (!reportingDeleteData[consumerId]) {\r\n reportingDeleteData[consumerId] = removedConsumerData;\r\n }\r\n }\r\n function deleteConsumerReportingData() {\r\n if (!selectedReportId.includes('new')) {\r\n var deletedReport = reportingData[selectedConsumerId][selectedReportId];\r\n if (!reportingDeleteData[selectedConsumerId]) reportingDeleteData[selectedConsumerId] = {};\r\n reportingDeleteData[selectedConsumerId][selectedReportId] = deletedReport;\r\n }\r\n\r\n delete reportingData[selectedConsumerId][selectedReportId];\r\n\r\n selectedReportId = undefined;\r\n var form = section.querySelector('.reportForm');\r\n section.removeChild(form);\r\n reportingHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n }\r\n\r\n function getDropdownData() {\r\n incidentTrackingAjax.getitReportingCategories(function (res) {\r\n reportingCategories = res;\r\n });\r\n }\r\n\r\n // Form\r\n //-----------------------------------------------\r\n function showDeleteWarning() {\r\n var deleteWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n deleteConsumerReportingData();\r\n POPUP.hide(deleteWarningPopup);\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteWarningPopup.appendChild(message);\r\n deleteWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteWarningPopup);\r\n }\r\n function checkRequiredFields() {\r\n var hasErrors = false;\r\n\r\n var reportCatSelect = reportingCategoryDropdown.querySelector('.dropdown__select');\r\n if (!reportCatSelect.value || reportCatSelect.value === '%') {\r\n reportingCategoryDropdown.classList.add('error');\r\n hasErrors = true;\r\n } else {\r\n reportingCategoryDropdown.classList.remove('error');\r\n }\r\n\r\n var dateInput = reportDateInput.querySelector('input');\r\n if (!dateInput.value) {\r\n reportDateInput.classList.add('error');\r\n hasErrors = true;\r\n } else {\r\n reportDateInput.classList.remove('error');\r\n }\r\n\r\n if (hasErrors) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n function clearFormDataDefaults() {\r\n dateReported = undefined;\r\n reportTime = undefined;\r\n reportBy = undefined;\r\n reportMethod = undefined;\r\n reportTo = undefined;\r\n reportingCategoryId = undefined;\r\n reportNotes = undefined;\r\n lastUpdatedBy = undefined;\r\n lastUpdatedOn = undefined;\r\n }\r\n function setFormDataDefaults(formData) {\r\n console.table(formData);\r\n if (formData) {\r\n dateReported = formData.dateReported;\r\n reportTime = formData.timeReported; // todo\r\n reportBy = formData.reportBy;\r\n reportMethod = formData.reportMethod;\r\n reportTo = formData.reportTo;\r\n reportingCategoryId = formData.reportingCategoryID;\r\n reportNotes = formData.notes;\r\n }\r\n }\r\n // events\r\n function setupFormEvents() {\r\n var tmpReportingCategoryId;\r\n var tmpReportedBy;\r\n var tmpReportedTo;\r\n var tmpReportMethod;\r\n var tmpReportDate;\r\n var tmpReportTime;\r\n var tmpNote;\r\n\r\n reportingCategoryDropdown.addEventListener('change', e => {\r\n tmpReportingCategoryId = e.target.value;\r\n checkRequiredFields();\r\n });\r\n reportedByInput.addEventListener('change', e => {\r\n tmpReportedBy = e.target.value;\r\n });\r\n reportedToInput.addEventListener('change', e => {\r\n tmpReportedTo = e.target.value;\r\n });\r\n reportMethodInput.addEventListener('change', e => {\r\n tmpReportMethod = e.target.value;\r\n });\r\n reportDateInput.addEventListener('change', e => {\r\n tmpReportDate = e.target.value;\r\n checkRequiredFields();\r\n });\r\n reportTimeInput.addEventListener('change', e => {\r\n tmpReportTime = e.target.value;\r\n });\r\n reportNotesInput.addEventListener('change', e => {\r\n tmpNote = e.target.value;\r\n });\r\n\r\n if (deleteBtn) {\r\n deleteBtn.addEventListener('click', e => {\r\n showDeleteWarning();\r\n });\r\n }\r\n\r\n formButtons.addEventListener('click', e => {\r\n if (e.target === saveBtn) {\r\n if (!reportingData[selectedConsumerId]) {\r\n reportingData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!reportingData[selectedConsumerId][selectedReportId]) {\r\n var keys = Object.keys(reportingData[selectedConsumerId]);\r\n selectedReportId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n reportingData[selectedConsumerId][selectedReportId] = {\r\n reportingCategoryID: '',\r\n reportBy: '',\r\n reportTo: '',\r\n reportMethod: '',\r\n dateReported: '',\r\n notes: '',\r\n updated: '',\r\n };\r\n }\r\n\r\n if (\r\n tmpReportingCategoryId ||\r\n tmpReportedBy ||\r\n tmpReportedTo ||\r\n tmpReportMethod ||\r\n tmpReportDate ||\r\n tmpReportTime ||\r\n tmpNote\r\n ) {\r\n reportingData[selectedConsumerId][selectedReportId].updated = true;\r\n }\r\n\r\n if (tmpReportingCategoryId)\r\n reportingData[selectedConsumerId][selectedReportId].reportingCategoryID = tmpReportingCategoryId;\r\n if (tmpReportedBy) reportingData[selectedConsumerId][selectedReportId].reportBy = tmpReportedBy;\r\n if (tmpReportedTo) reportingData[selectedConsumerId][selectedReportId].reportTo = tmpReportedTo;\r\n if (tmpReportMethod) reportingData[selectedConsumerId][selectedReportId].reportMethod = tmpReportMethod;\r\n if (tmpReportDate) reportingData[selectedConsumerId][selectedReportId].dateReported = tmpReportDate;\r\n if (tmpReportTime) reportingData[selectedConsumerId][selectedReportId].timeReported = tmpReportTime;\r\n if (tmpNote) reportingData[selectedConsumerId][selectedReportId].notes = tmpNote;\r\n\r\n selectedReportId = undefined;\r\n\r\n var form = section.querySelector('.reportForm');\r\n section.removeChild(form);\r\n reportingHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n return;\r\n }\r\n\r\n if (e.target === cancelBtn) {\r\n selectedReportId = undefined;\r\n var form = section.querySelector('.reportForm');\r\n section.removeChild(form);\r\n reportingHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n return;\r\n }\r\n });\r\n }\r\n // build\r\n function buildReportingCategoryDropdown() {\r\n var opts = {\r\n label: 'Reporting To Category',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var rCatDrop = dropdown.build(opts);\r\n\r\n var data = reportingCategories.map(cat => {\r\n return {\r\n value: cat.itReportingCategoryId,\r\n text: cat.itReportingCategoryName,\r\n };\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(rCatDrop, data, reportingCategoryId);\r\n\r\n return rCatDrop;\r\n }\r\n function buildReportedByInput() {\r\n var opts = {\r\n label: 'Reported By',\r\n type: 'text',\r\n style: 'secondary',\r\n value: reportBy,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var rbInput = input.build(opts);\r\n\r\n return rbInput;\r\n }\r\n function buildReportedToInput() {\r\n var opts = {\r\n label: 'Reported To',\r\n type: 'text',\r\n style: 'secondary',\r\n value: reportTo,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var rtInput = input.build(opts);\r\n\r\n return rtInput;\r\n }\r\n function buildReportMethodInput() {\r\n var opts = {\r\n label: 'Report Method',\r\n type: 'text',\r\n style: 'secondary',\r\n value: reportMethod,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var rmInput = input.build(opts);\r\n\r\n return rmInput;\r\n }\r\n function buildReportedDateInput() {\r\n var opts = {\r\n label: 'Date Reported',\r\n type: 'date',\r\n style: 'secondary',\r\n value: dateReported,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var rdInput = input.build(opts);\r\n\r\n return rdInput;\r\n }\r\n function buildReportedTimeInput() {\r\n var opts = {\r\n label: 'Reported Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: reportTime,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var rtInput = input.build(opts);\r\n\r\n return rtInput;\r\n }\r\n function buildNotesInput() {\r\n var opts = {\r\n label: 'Notes',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: reportNotes,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var nInput = input.build(opts);\r\n\r\n return nInput;\r\n }\r\n function buildFormBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n saveBtn = button.build({\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n\r\n if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate) btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildDeleteBtn() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'error',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildNewReportingForm() {\r\n var form = document.createElement('div');\r\n form.classList.add('reportForm');\r\n\r\n reportingCategoryDropdown = buildReportingCategoryDropdown();\r\n reportedByInput = buildReportedByInput();\r\n reportedToInput = buildReportedToInput();\r\n reportMethodInput = buildReportMethodInput();\r\n reportDateInput = buildReportedDateInput();\r\n reportTimeInput = buildReportedTimeInput();\r\n reportNotesInput = buildNotesInput();\r\n formButtons = buildFormBtns();\r\n\r\n form.addEventListener('change', () => incidentCard.checkEntireIncidentCardforErrors());\r\n\r\n if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n deleteBtn = buildDeleteBtn();\r\n form.appendChild(deleteBtn);\r\n }\r\n\r\n form.appendChild(reportingCategoryDropdown);\r\n form.appendChild(reportedByInput);\r\n form.appendChild(reportedToInput);\r\n form.appendChild(reportMethodInput);\r\n form.appendChild(reportDateInput);\r\n form.appendChild(reportTimeInput);\r\n form.appendChild(reportNotesInput);\r\n form.appendChild(formButtons);\r\n\r\n return form;\r\n }\r\n // show\r\n function showForm(isedit) {\r\n isEdit = isedit;\r\n\r\n consumerSubSections.hideBackBtn();\r\n\r\n reportingHome.classList.add('hidden');\r\n\r\n var reportingForm = buildNewReportingForm();\r\n section.appendChild(reportingForm);\r\n\r\n setupFormEvents();\r\n checkRequiredFields();\r\n }\r\n\r\n // Review Table\r\n //-----------------------------------------------\r\n function clearReviewTable() {\r\n var tableBody = reportingReviewTable.querySelector('.table__body');\r\n tableBody.innerHTML = '';\r\n }\r\n function populateReviewTable() {\r\n if (!reportingData) return;\r\n if (!reportingData[selectedConsumerId]) return;\r\n\r\n var tableData = [];\r\n\r\n var keys = Object.keys(reportingData[selectedConsumerId]);\r\n keys.forEach(key => {\r\n var data = reportingData[selectedConsumerId][key];\r\n var filteredCategories = reportingCategories.filter(\r\n rCat => rCat.itReportingCategoryId === data.reportingCategoryID,\r\n );\r\n var reportedCategory = filteredCategories[0].itReportingCategoryName;\r\n var date = data.dateReported ? data.dateReported.split(' ')[0] : '';\r\n date = date ? UTIL.formatDateFromIso(date) : date;\r\n var reportBy = data.reportBy;\r\n\r\n tableData.push({\r\n id: key,\r\n values: [reportedCategory, date, reportBy],\r\n });\r\n });\r\n\r\n table.populate(reportingReviewTable, tableData);\r\n }\r\n function buildReviewTable() {\r\n var reviewTable = table.build({\r\n tableId: 'consumerReportingTable',\r\n columnHeadings: ['Reporting Category', 'Date Reported', 'Reported By'],\r\n });\r\n\r\n reviewTable.addEventListener('click', event => {\r\n if (event.target.classList.contains('table__row') && !event.target.classList.contains('header')) {\r\n selectedReportId = event.target.id;\r\n setFormDataDefaults(reportingData[selectedConsumerId][selectedReportId]);\r\n showForm(true);\r\n }\r\n });\r\n\r\n return reviewTable;\r\n }\r\n\r\n // Home Page\r\n //-----------------------------------------------\r\n function init() {\r\n formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n reportingData = {};\r\n reportingDeleteData = {};\r\n getDropdownData();\r\n }\r\n function buildAddNewFollowUpBtn() {\r\n var btn = button.build({\r\n text: 'Add New Reporting',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n\r\n btn.addEventListener('click', () => {\r\n showForm(false);\r\n });\r\n\r\n return btn;\r\n }\r\n function build() {\r\n init();\r\n\r\n section = document.createElement('div');\r\n section.classList.add('consumerSections__section', 'reportingSection');\r\n\r\n reportingHome = document.createElement('div');\r\n reportingHome.classList.add('consumerSections__section__home');\r\n\r\n newReportingBtn = buildAddNewFollowUpBtn();\r\n reportingReviewTable = buildReviewTable();\r\n\r\n if ($.session.incidentTrackingUpdate) reportingHome.appendChild(newReportingBtn);\r\n reportingHome.appendChild(reportingReviewTable);\r\n\r\n section.appendChild(reportingHome);\r\n\r\n return section;\r\n }\r\n function populate(data, selectedConsumerID) {\r\n selectedConsumerId = selectedConsumerID;\r\n\r\n if (data) {\r\n data.forEach(d => {\r\n if (!reportingData[selectedConsumerId]) {\r\n reportingData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!reportingData[selectedConsumerId][d.itConsumerReportId]) {\r\n reportingData[selectedConsumerId][d.itConsumerReportId] = d;\r\n reportingData[selectedConsumerId][d.itConsumerReportId].updated = false;\r\n\r\n // format dates\r\n if (reportingData[selectedConsumerId][d.itConsumerReportId].dateReported) {\r\n var dateReported = reportingData[selectedConsumerId][d.itConsumerReportId].dateReported.split(' ')[0];\r\n reportingData[selectedConsumerId][d.itConsumerReportId].dateReported = UTIL.formatDateToIso(dateReported);\r\n }\r\n }\r\n });\r\n }\r\n\r\n clearReviewTable();\r\n populateReviewTable();\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n clearData,\r\n deleteConsumerData,\r\n getData: getDataForSave,\r\n getDeleteData: getDataForDelete,\r\n };\r\n})();\r\nvar consumerReview = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var reviewsHome;\r\n var newReviewBtn;\r\n var reviewsReviewTable;\r\n //*form\r\n var reviewDateInput;\r\n var reviewedByDropdown;\r\n var notesInput;\r\n var formButtons;\r\n var deleteBtn;\r\n var saveBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var reviewData;\r\n var reviewDeleteData;\r\n var reviewedByDropdownData;\r\n // Values\r\n //---------------------\r\n var selectedConsumerId;\r\n var selectedReviewId;\r\n //*form values\r\n var reviewedDate;\r\n var reviewedById;\r\n var reviewNotes;\r\n var lastUpdatedBy;\r\n var lastUpdatedOn;\r\n\r\n var isEdit;\r\n var formReadOnly;\r\n\r\n function getDataForSave() {\r\n return reviewData;\r\n }\r\n function getDataForDelete() {\r\n return reviewDeleteData;\r\n }\r\n function clearData() {\r\n reviewData = undefined;\r\n reviewDeleteData = undefined;\r\n selectedConsumerId = undefined;\r\n selectedReviewId = undefined;\r\n\r\n clearFormDataDefaults();\r\n clearReviewTable();\r\n }\r\n function deleteConsumerData(consumerId) {\r\n if (reviewData[consumerId]) {\r\n var { [consumerId]: removedConsumer, ...newReviewData } = reviewData;\r\n reviewData = newReviewData;\r\n\r\n if (!reviewDeleteData[consumerId]) {\r\n reviewDeleteData[consumerId] = removedConsumerData;\r\n }\r\n }\r\n }\r\n function deleteConsumerReviewData() {\r\n if (!selectedReviewId.includes('new')) {\r\n var deletedReview = reviewData[selectedConsumerId][selectedReviewId];\r\n if (!reviewDeleteData[selectedConsumerId]) reviewDeleteData[selectedConsumerId] = {};\r\n reviewDeleteData[selectedConsumerId][selectedReviewId] = deletedReview;\r\n }\r\n\r\n delete reviewData[selectedConsumerId][selectedReviewId];\r\n\r\n selectedReviewId = undefined;\r\n var form = section.querySelector('.reviewForm');\r\n section.removeChild(form);\r\n reviewsHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n }\r\n\r\n function getDropdownData() {\r\n incidentTrackingAjax.getReviewedByDropdown(function (res) {\r\n reviewedByDropdownData = res;\r\n });\r\n }\r\n\r\n // Form\r\n //-----------------------------------------------\r\n function showDeleteWarning() {\r\n var deleteWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n deleteConsumerReviewData();\r\n POPUP.hide(deleteWarningPopup);\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteWarningPopup.appendChild(message);\r\n deleteWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteWarningPopup);\r\n }\r\n function checkRequiredFields() {\r\n var hasErrors = false;\r\n\r\n var dateInput = reviewDateInput.querySelector('input');\r\n if (!dateInput.value) {\r\n reviewDateInput.classList.add('error');\r\n hasErrors = true;\r\n } else {\r\n reviewDateInput.classList.remove('error');\r\n }\r\n\r\n if (hasErrors) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n function clearFormDataDefaults() {\r\n reviewedDate = undefined;\r\n reviewedById = undefined;\r\n reviewNotes = undefined;\r\n lastUpdatedBy = undefined;\r\n lastUpdatedOn = undefined;\r\n }\r\n function setFormDataDefaults(formData) {\r\n if (formData) {\r\n reviewedDate = formData.reviewedDate;\r\n reviewedById = formData.reviewedBy;\r\n reviewNotes = formData.notes;\r\n }\r\n }\r\n // events\r\n function setupFormEvents() {\r\n var tmpReviewDate;\r\n var tmpReviewedBy;\r\n var tmpNote;\r\n\r\n reviewDateInput.addEventListener('change', e => {\r\n tmpReviewDate = e.target.value;\r\n checkRequiredFields();\r\n });\r\n reviewedByDropdown.addEventListener('change', e => {\r\n tmpReviewedBy = e.target.value;\r\n });\r\n notesInput.addEventListener('change', e => {\r\n tmpNote = e.target.value;\r\n });\r\n\r\n if (deleteBtn) {\r\n deleteBtn.addEventListener('click', e => {\r\n showDeleteWarning();\r\n });\r\n }\r\n\r\n formButtons.addEventListener('click', e => {\r\n if (e.target === saveBtn) {\r\n if (!reviewData[selectedConsumerId]) {\r\n reviewData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!reviewData[selectedConsumerId][selectedReviewId]) {\r\n var keys = Object.keys(reviewData[selectedConsumerId]);\r\n selectedReviewId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n reviewData[selectedConsumerId][selectedReviewId] = {\r\n reviewedDate: '',\r\n reviewedBy: '',\r\n notes: '',\r\n updated: '',\r\n };\r\n }\r\n\r\n if (tmpReviewDate || tmpReviewedBy || tmpNote) {\r\n reviewData[selectedConsumerId][selectedReviewId].updated = true;\r\n }\r\n\r\n if (tmpReviewDate) {\r\n reviewData[selectedConsumerId][selectedReviewId].reviewedDate = tmpReviewDate;\r\n }\r\n\r\n if (tmpReviewedBy) {\r\n reviewData[selectedConsumerId][selectedReviewId].reviewedBy = tmpReviewedBy;\r\n }\r\n const currentReviewedBy = reviewData[selectedConsumerId][selectedReviewId].reviewedBy;\r\n if ($.session.incidentTrackingReviewedBy && (!currentReviewedBy || currentReviewedBy === '')) {\r\n reviewData[selectedConsumerId][selectedReviewId].reviewedBy = $.session.PeopleId;\r\n }\r\n\r\n if (tmpNote) {\r\n reviewData[selectedConsumerId][selectedReviewId].notes = tmpNote;\r\n }\r\n\r\n selectedReviewId = undefined;\r\n\r\n var form = section.querySelector('.reviewForm');\r\n section.removeChild(form);\r\n reviewsHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n return;\r\n }\r\n\r\n if (e.target === cancelBtn) {\r\n selectedReviewId = undefined;\r\n var form = section.querySelector('.reviewForm');\r\n section.removeChild(form);\r\n reviewsHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n return;\r\n }\r\n });\r\n }\r\n // build\r\n function buildReviewDateInput() {\r\n var opts = {\r\n label: 'Review Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: reviewedDate,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var dateInput = input.build(opts);\r\n\r\n return dateInput;\r\n }\r\n function buildReviewedByDropdown() {\r\n var opts = {\r\n label: 'Reviewed By',\r\n style: 'secondary',\r\n classNames: 'reviewedBy',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var rbDrop = dropdown.build(opts);\r\n\r\n var data = reviewedByDropdownData.map(rb => {\r\n return {\r\n value: rb.employeeId,\r\n text: rb.employeeName,\r\n };\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n\r\n if (!$.session.incidentTrackingReviewedBy) {\r\n dropdown.populate(rbDrop, data, reviewedById);\r\n } else {\r\n if (isEdit) {\r\n dropdown.populate(rbDrop, data, reviewedById);\r\n } else {\r\n dropdown.populate(rbDrop, data, $.session.PeopleId);\r\n }\r\n\r\n input.disableInputField(rbDrop);\r\n }\r\n\r\n return rbDrop;\r\n }\r\n function buildNotesInput() {\r\n var opts = {\r\n label: 'Notes',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: reviewNotes,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var nInput = input.build(opts);\r\n\r\n return nInput;\r\n }\r\n function buildFormBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n saveBtn = button.build({\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n\r\n if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate) btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildDeleteBtn() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'error',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildNewReviewForm() {\r\n var form = document.createElement('div');\r\n form.classList.add('reviewForm');\r\n\r\n reviewDateInput = buildReviewDateInput();\r\n reviewedByDropdown = buildReviewedByDropdown();\r\n notesInput = buildNotesInput();\r\n formButtons = buildFormBtns();\r\n\r\n if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n deleteBtn = buildDeleteBtn();\r\n form.appendChild(deleteBtn);\r\n }\r\n\r\n form.appendChild(reviewDateInput);\r\n form.appendChild(reviewedByDropdown);\r\n form.appendChild(notesInput);\r\n form.appendChild(formButtons);\r\n\r\n form.addEventListener('change', () => incidentCard.checkEntireIncidentCardforErrors());\r\n\r\n return form;\r\n }\r\n // show\r\n function showForm(isedit) {\r\n isEdit = isedit;\r\n\r\n consumerSubSections.hideBackBtn();\r\n\r\n reviewsHome.classList.add('hidden');\r\n\r\n var reviewForm = buildNewReviewForm();\r\n section.appendChild(reviewForm);\r\n\r\n setupFormEvents();\r\n checkRequiredFields();\r\n }\r\n\r\n // Review Table\r\n //-----------------------------------------------\r\n function clearReviewTable() {\r\n var tableBody = reviewsReviewTable.querySelector('.table__body');\r\n tableBody.innerHTML = '';\r\n }\r\n function populateReviewTable() {\r\n if (!reviewData) return;\r\n if (!reviewData[selectedConsumerId]) return;\r\n\r\n var tableData = [];\r\n\r\n var keys = Object.keys(reviewData[selectedConsumerId]);\r\n keys.forEach(key => {\r\n var data = reviewData[selectedConsumerId][key];\r\n\r\n var reviewedBy = reviewedByDropdownData.find(d => d.employeeId === data.reviewedBy);\r\n reviewedBy = reviewedBy ? reviewedBy.employeeName : '';\r\n var dateReviewed = UTIL.formatDateFromIso(data.reviewedDate);\r\n\r\n tableData.push({\r\n id: key,\r\n values: [reviewedBy, dateReviewed],\r\n });\r\n });\r\n\r\n table.populate(reviewsReviewTable, tableData);\r\n }\r\n function buildReviewTable() {\r\n var reviewTable = table.build({\r\n tableId: 'consumerReviewTable',\r\n columnHeadings: ['Reviewed By', 'Date Reviewed'],\r\n });\r\n\r\n reviewTable.addEventListener('click', event => {\r\n if (event.target.classList.contains('table__row') && !event.target.classList.contains('header')) {\r\n selectedReviewId = event.target.id;\r\n setFormDataDefaults(reviewData[selectedConsumerId][selectedReviewId]);\r\n showForm(true);\r\n }\r\n });\r\n\r\n return reviewTable;\r\n }\r\n\r\n // Home Page\r\n //-----------------------------------------------\r\n function init() {\r\n formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n reviewData = {};\r\n reviewDeleteData = {};\r\n getDropdownData();\r\n }\r\n function buildAddNewReviewBtn() {\r\n var btn = button.build({\r\n text: 'Add New Review',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n\r\n btn.addEventListener('click', () => {\r\n showForm(false);\r\n });\r\n\r\n return btn;\r\n }\r\n function build() {\r\n init();\r\n\r\n section = document.createElement('div');\r\n section.classList.add('consumerSections__section', 'reviewSection');\r\n\r\n reviewsHome = document.createElement('div');\r\n reviewsHome.classList.add('consumerSections__section__home');\r\n\r\n newReviewBtn = buildAddNewReviewBtn();\r\n reviewsReviewTable = buildReviewTable();\r\n\r\n if ($.session.incidentTrackingUpdate) reviewsHome.appendChild(newReviewBtn);\r\n reviewsHome.appendChild(reviewsReviewTable);\r\n\r\n section.appendChild(reviewsHome);\r\n\r\n return section;\r\n }\r\n function populate(data, selectedConsumerID) {\r\n selectedConsumerId = selectedConsumerID;\r\n\r\n if (data) {\r\n data.forEach(d => {\r\n if (!reviewData[selectedConsumerId]) {\r\n reviewData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!reviewData[selectedConsumerId][d.itConsumerReviewId]) {\r\n reviewData[selectedConsumerId][d.itConsumerReviewId] = d;\r\n reviewData[selectedConsumerId][d.itConsumerReviewId].updated = false;\r\n\r\n // format dates\r\n if (reviewData[selectedConsumerId][d.itConsumerReviewId].reviewedDate) {\r\n var reviewDate = reviewData[selectedConsumerId][d.itConsumerReviewId].reviewedDate.split(' ')[0];\r\n reviewData[selectedConsumerId][d.itConsumerReviewId].reviewedDate = UTIL.formatDateToIso(reviewDate);\r\n }\r\n }\r\n });\r\n }\r\n\r\n clearReviewTable();\r\n populateReviewTable();\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n clearData,\r\n deleteConsumerData,\r\n getData: getDataForSave,\r\n getDeleteData: getDataForDelete,\r\n };\r\n})();\r\nconst consumerBehavior = (function () {\r\n // DOM\r\n //---------------------\r\n let section;\r\n let behaviorHome;\r\n let newBehaviorBtn;\r\n let behaviorReviewTable;\r\n //*form\r\n let behaviorTypeDropdown;\r\n let startTimeInput;\r\n let endTimeInput;\r\n let occurrencesInput;\r\n let formButtons;\r\n let deleteBtn;\r\n let saveBtn;\r\n let cancelBtn;\r\n // DATA\r\n //---------------------\r\n let behaviorData; // save/update data\r\n let behaviorDeleteData;\r\n let behaviorTypes; // dropdown data\r\n // Values\r\n //---------------------\r\n let selectedConsumerId;\r\n let selectedBehaviorId;\r\n //*form default values\r\n let behaviorType;\r\n let behaviorTypeId;\r\n let startTime;\r\n let endTime;\r\n let occurrences;\r\n\r\n let isEdit;\r\n let formReadOnly;\r\n\r\n function getDataForSave() {\r\n return behaviorData;\r\n }\r\n function getDataForDelete() {\r\n return behaviorDeleteData;\r\n }\r\n function clearData() {\r\n behaviorData = undefined;\r\n behaviorDeleteData = undefined;\r\n selectedConsumerId = undefined;\r\n selectedBehaviorId = undefined;\r\n\r\n clearFormDataDefaults();\r\n clearReviewTable();\r\n }\r\n function deleteConsumerData(consumerId) {\r\n // deletes all follow ups\r\n if (behaviorData[consumerId]) {\r\n var { [consumerId]: removedConsumerData, ...newBehaviorData } = behaviorData;\r\n behaviorData = newBehaviorData;\r\n\r\n if (!behaviorDeleteData[consumerId]) {\r\n behaviorDeleteData[consumerId] = removedConsumerData;\r\n }\r\n }\r\n }\r\n function deleteConsumerBehaviorData() {\r\n if (!selectedBehaviorId.includes('new')) {\r\n var deletedBehavior = behaviorData[selectedConsumerId][selectedBehaviorId];\r\n if (!behaviorDeleteData[selectedConsumerId]) behaviorDeleteData[selectedConsumerId] = {};\r\n behaviorDeleteData[selectedConsumerId][selectedBehaviorId] = deletedBehavior;\r\n }\r\n\r\n delete behaviorData[selectedConsumerId][selectedBehaviorId];\r\n\r\n selectedBehaviorId = undefined;\r\n var form = section.querySelector('.behaviorForm');\r\n section.removeChild(form);\r\n behaviorHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n }\r\n function formatTime(dirtyTime) {\r\n dirtyTime.replace('-', '');\r\n const splitTime = dirtyTime.split(':');\r\n const hours = splitTime[0].length === 1 ? `0${splitTime[0]}` : splitTime[0];\r\n const minutes = splitTime[1].length === 1 ? `0${splitTime[1]}` : splitTime[1];\r\n return `${hours}:${minutes}`;\r\n }\r\n function getTimeLength(start, end) {\r\n if (!start || !end) return '';\r\n if (start.includes('/')) {\r\n start = start.split(' ')[1];\r\n }\r\n let totalTime = UTIL.calculateTotalHours(start, end, 'hh:mm');\r\n totalTime = formatTime(totalTime);\r\n return totalTime;\r\n }\r\n function parseStartTime(dirtyStart) {\r\n const splittime = dirtyStart.split(' ');\r\n const time = `${splittime[1]} ${splittime[2]}`;\r\n return UTIL.convertToMilitary(time);\r\n }\r\n\r\n function getDropdownData() {\r\n incidentTrackingAjax.getitConsumerBehaviorTypes(function (res) {\r\n behaviorTypes = res;\r\n });\r\n }\r\n\r\n // Form\r\n //-----------------------------------------------\r\n function showDeleteWarning() {\r\n var deleteWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n deleteConsumerBehaviorData();\r\n POPUP.hide(deleteWarningPopup);\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteWarningPopup.appendChild(message);\r\n deleteWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteWarningPopup);\r\n }\r\n function checkRequiredFields() {\r\n var hasErrors = [].slice.call(section.querySelectorAll('.error:not(button)'));\r\n\r\n if (hasErrors.length === 0) {\r\n saveBtn.classList.remove('disabled');\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n }\r\n }\r\n function clearFormDataDefaults() {\r\n behaviorType = undefined;\r\n behaviorTypeId = undefined;\r\n startTime = undefined;\r\n endTime = undefined;\r\n occurrences = undefined;\r\n }\r\n function setFormDataDefaults(formData) {\r\n if (formData) {\r\n behaviorType = formData.behaviorType;\r\n behaviorTypeId = formData.behaviorTypeId;\r\n startTime = formData.startTime;\r\n endTime = formData.endTime;\r\n occurrences = formData.occurrences;\r\n }\r\n }\r\n // events\r\n function setupFormEvents() {\r\n let tmpBehaviorTypeId = null;\r\n let tmpStartTime = null;\r\n let tmpEndTime = null;\r\n let tmpOccurrences = null;\r\n\r\n behaviorTypeDropdown.addEventListener('change', e => {\r\n if (!e.target.value || e.target.value === '%') {\r\n behaviorTypeDropdown.classList.add('error');\r\n } else {\r\n behaviorTypeDropdown.classList.remove('error');\r\n }\r\n\r\n tmpBehaviorTypeId = e.target.value;\r\n checkRequiredFields();\r\n });\r\n startTimeInput.addEventListener('change', e => {\r\n tmpStartTime = e.target.value;\r\n });\r\n endTimeInput.addEventListener('change', e => {\r\n tmpEndTime = e.target.value;\r\n });\r\n occurrencesInput.addEventListener('keyup', e => {\r\n if (e.target.value < 0 || e.target.value.includes('-')) {\r\n occurrencesInput.classList.add('error');\r\n } else {\r\n occurrencesInput.classList.remove('error');\r\n }\r\n checkRequiredFields();\r\n });\r\n occurrencesInput.addEventListener('change', e => {\r\n tmpOccurrences = e.target.value;\r\n });\r\n\r\n if (deleteBtn) {\r\n deleteBtn.addEventListener('click', e => {\r\n showDeleteWarning();\r\n });\r\n }\r\n\r\n formButtons.addEventListener('click', e => {\r\n if (e.target === saveBtn) {\r\n if (e.target.classList.contains('disabled')) return;\r\n\r\n if (!behaviorData[selectedConsumerId]) {\r\n behaviorData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!behaviorData[selectedConsumerId][selectedBehaviorId]) {\r\n var keys = Object.keys(behaviorData[selectedConsumerId]);\r\n selectedBehaviorId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n behaviorData[selectedConsumerId][selectedBehaviorId] = {\r\n behaviorTypeId: '',\r\n startTime: '',\r\n endTime: '',\r\n occurrences: '',\r\n updated: '',\r\n };\r\n }\r\n\r\n if (tmpBehaviorTypeId !== null || tmpStartTime !== null || tmpEndTime !== null || tmpOccurrences !== null) {\r\n behaviorData[selectedConsumerId][selectedBehaviorId].updated = true;\r\n }\r\n\r\n if (tmpBehaviorTypeId !== null) {\r\n behaviorData[selectedConsumerId][selectedBehaviorId].behaviorTypeId = tmpBehaviorTypeId;\r\n }\r\n if (tmpStartTime !== null) {\r\n behaviorData[selectedConsumerId][selectedBehaviorId].startTime = tmpStartTime;\r\n }\r\n if (tmpEndTime !== null) {\r\n behaviorData[selectedConsumerId][selectedBehaviorId].endTime = tmpEndTime;\r\n }\r\n if (tmpOccurrences !== null) {\r\n behaviorData[selectedConsumerId][selectedBehaviorId].occurrences = tmpOccurrences;\r\n }\r\n\r\n selectedBehaviorId = undefined;\r\n\r\n var form = section.querySelector('.behaviorForm');\r\n section.removeChild(form);\r\n behaviorHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n return;\r\n }\r\n\r\n if (e.target === cancelBtn) {\r\n selectedBehaviorId = undefined;\r\n var form = section.querySelector('.behaviorForm');\r\n section.removeChild(form);\r\n behaviorHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n return;\r\n }\r\n });\r\n }\r\n // build\r\n function buildBehaviorTypeDropdown() {\r\n var opts = {\r\n label: 'Behavior Type',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var behaviortypeDrop = dropdown.build(opts);\r\n\r\n var data = behaviorTypes.map(fu => {\r\n return {\r\n value: fu.itBehaviorTypeId,\r\n text: fu.behaviorTypeName,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n return a.text.toLowerCase() < b.text.toLowerCase() ? -1 : 1;\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(behaviortypeDrop, data, behaviorTypeId);\r\n\r\n if (!behaviorTypeId || behaviorTypeId === '%') {\r\n behaviortypeDrop.classList.add('error');\r\n } else {\r\n behaviortypeDrop.classList.remove('error');\r\n }\r\n\r\n return behaviortypeDrop;\r\n }\r\n function buildStartTimeInput() {\r\n var opts = {\r\n label: 'Start Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: startTime,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var startTimeInput = input.build(opts);\r\n\r\n return startTimeInput;\r\n }\r\n function buildEndTimeInput() {\r\n var opts = {\r\n label: 'End Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: endTime,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var endTimeInput = input.build(opts);\r\n\r\n return endTimeInput;\r\n }\r\n function buildOccurrencesInput() {\r\n var opts = {\r\n label: 'No. of Occurrences',\r\n type: 'number',\r\n style: 'secondary',\r\n value: occurrences,\r\n attributes: [\r\n {\r\n key: 'min',\r\n value: 1,\r\n },\r\n {\r\n key: 'step',\r\n value: 1,\r\n },\r\n ],\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var occurrencesInput = input.build(opts);\r\n\r\n return occurrencesInput;\r\n }\r\n\r\n function buildFormBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n saveBtn = button.build({\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n\r\n if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate) btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildDeleteBtn() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'error',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildNewBehaviorForm() {\r\n let form = document.createElement('div');\r\n form.classList.add('behaviorForm');\r\n\r\n behaviorTypeDropdown = buildBehaviorTypeDropdown();\r\n startTimeInput = buildStartTimeInput();\r\n endTimeInput = buildEndTimeInput();\r\n occurrencesInput = buildOccurrencesInput();\r\n formButtons = buildFormBtns();\r\n\r\n if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n deleteBtn = buildDeleteBtn();\r\n form.appendChild(deleteBtn);\r\n }\r\n\r\n form.appendChild(behaviorTypeDropdown);\r\n form.appendChild(startTimeInput);\r\n form.appendChild(endTimeInput);\r\n form.appendChild(occurrencesInput);\r\n form.appendChild(formButtons);\r\n\r\n return form;\r\n }\r\n // show\r\n function showForm(isedit) {\r\n isEdit = isedit;\r\n\r\n consumerSubSections.hideBackBtn();\r\n\r\n behaviorHome.classList.add('hidden');\r\n\r\n behaviorForm = buildNewBehaviorForm();\r\n section.appendChild(behaviorForm);\r\n\r\n setupFormEvents();\r\n checkRequiredFields();\r\n }\r\n\r\n // Review Table\r\n //-----------------------------------------------\r\n function clearReviewTable() {\r\n var tableBody = behaviorReviewTable.querySelector('.table__body');\r\n tableBody.innerHTML = '';\r\n }\r\n function populateReviewTable() {\r\n if (!behaviorData) return;\r\n if (!behaviorData[selectedConsumerId]) return;\r\n\r\n let tableData = [];\r\n\r\n let keys = Object.keys(behaviorData[selectedConsumerId]);\r\n keys.forEach(key => {\r\n let behaviorDATA = behaviorData[selectedConsumerId][key];\r\n\r\n let filterBehaviorTypes = behaviorTypes.filter(type => type.itBehaviorTypeId === behaviorDATA.behaviorTypeId);\r\n let behaviorType = filterBehaviorTypes[0] ? filterBehaviorTypes[0].behaviorTypeName : '';\r\n let timeLength = getTimeLength(behaviorDATA.startTime, behaviorDATA.endTime);\r\n let occurrencesNum = behaviorDATA.occurrences;\r\n\r\n tableData.push({\r\n id: key,\r\n values: [behaviorType, timeLength, occurrencesNum],\r\n });\r\n });\r\n\r\n table.populate(behaviorReviewTable, tableData);\r\n }\r\n function buildReviewTable() {\r\n var reviewTable = table.build({\r\n tableId: 'consumerBehaviorTable',\r\n columnHeadings: ['Behavior Type', 'Time Length', 'Occurrences'],\r\n });\r\n\r\n reviewTable.addEventListener('click', event => {\r\n if (event.target.classList.contains('table__row') && !event.target.classList.contains('header')) {\r\n selectedBehaviorId = event.target.id;\r\n setFormDataDefaults(behaviorData[selectedConsumerId][selectedBehaviorId]);\r\n showForm(true);\r\n }\r\n });\r\n\r\n return reviewTable;\r\n }\r\n\r\n // Home Page\r\n //-----------------------------------------------\r\n function init() {\r\n formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n behaviorData = {};\r\n behaviorDeleteData = {};\r\n getDropdownData();\r\n }\r\n function buildAddNewBehaviorBtn() {\r\n var btn = button.build({\r\n text: 'Add New Behavior Detail',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n btn.addEventListener('click', () => {\r\n showForm(false);\r\n });\r\n\r\n return btn;\r\n }\r\n function build() {\r\n init();\r\n\r\n section = document.createElement('div');\r\n section.classList.add('consumerSections__section', 'behaviorSection');\r\n\r\n behaviorHome = document.createElement('div');\r\n behaviorHome.classList.add('consumerSections__section__home');\r\n\r\n newBehaviorBtn = buildAddNewBehaviorBtn();\r\n behaviorReviewTable = buildReviewTable();\r\n\r\n if ($.session.incidentTrackingUpdate) behaviorHome.appendChild(newBehaviorBtn);\r\n behaviorHome.appendChild(behaviorReviewTable);\r\n\r\n section.appendChild(behaviorHome);\r\n\r\n return section;\r\n }\r\n function populate(data, selectedConsumerID) {\r\n selectedConsumerId = selectedConsumerID;\r\n\r\n if (data) {\r\n data.forEach(d => {\r\n if (!behaviorData[selectedConsumerId]) {\r\n behaviorData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!behaviorData[selectedConsumerId][d.itConsumerBehaviorId]) {\r\n behaviorData[selectedConsumerId][d.itConsumerBehaviorId] = d;\r\n behaviorData[selectedConsumerId][d.itConsumerBehaviorId].updated = false;\r\n }\r\n });\r\n }\r\n\r\n clearReviewTable();\r\n populateReviewTable();\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n clearData,\r\n deleteConsumerData,\r\n getData: getDataForSave,\r\n getDeleteData: getDataForDelete,\r\n };\r\n})();\r\n","var itDetailsSection = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var sectionBody;\r\n // DATA\r\n //---------------------\r\n var reviewData;\r\n var involvementTypes;\r\n var incidentLocations;\r\n var categories;\r\n var employeeNames;\r\n // Values\r\n //---------------------\r\n var incidentDate;\r\n var incidentTime;\r\n var reportedDate;\r\n var reportedTime;\r\n var categoryId;\r\n var locationId;\r\n var summaryText;\r\n var actionText;\r\n var preventionText;\r\n var factorsText;\r\n // Inputs\r\n var incidentDateInput;\r\n var incidentTimeInput;\r\n var reportedDateInput;\r\n var reportedTimeInput;\r\n\r\n var summaryTextarea;\r\n var actionTextarea;\r\n var preventionTextarea;\r\n var causeTextarea;\r\n var categoryDropdown;\r\n var locationDetailDropdown;\r\n\r\n function getSectionData() {\r\n categories = incidentTracking.getCategories();\r\n incidentLocations = incidentTracking.getLocations();\r\n }\r\n function setSectionValues() {\r\n if (reviewData) {\r\n var rd = reviewData[0];\r\n // reviewData = {iDate, iTime, rDate, rTime, category, location, summary, action, factor}\r\n incidentDate = rd.incidentDate ? UTIL.formatDateToIso(rd.incidentDate.split(' ')[0]) : '';\r\n incidentTime = rd.incidentTime ? rd.incidentTime : '';\r\n reportedDate = rd.reportedDate ? UTIL.formatDateToIso(rd.reportedDate.split(' ')[0]) : '';\r\n reportedTime = rd.reportedTime ? rd.reportedTime : '';\r\n categoryId = rd.subcategoryId ? rd.subcategoryId : '';\r\n locationId = rd.locationId ? rd.locationId : '';\r\n summaryText = rd.summary ? rd.summary : '';\r\n actionText = rd.note ? rd.note : '';\r\n preventionText = rd.prevention ? rd.prevention : '';\r\n factorsText = rd.contributingFactor ? rd.contributingFactor : '';\r\n } else {\r\n var defaultCategory = categories.filter(c => c.incidentCategory === 'New Incident');\r\n $.session.incidentTrackingPopulateIncidentDate === 'Y'\r\n ? (incidentDate = UTIL.getTodaysDate())\r\n : (incidentDate = '');\r\n $.session.incidentTrackingPopulateIncidentTime === 'Y'\r\n ? (incidentTime = UTIL.getCurrentTime())\r\n : (incidentTime = '');\r\n $.session.incidentTrackingPopulateReportedDate === 'Y'\r\n ? (reportedDate = UTIL.getTodaysDate())\r\n : (reportedDate = '');\r\n $.session.incidentTrackingPopulateReportedTime === 'Y'\r\n ? (reportedTime = UTIL.getCurrentTime())\r\n : (reportedTime = '');\r\n categoryId = defaultCategory[0].subcategoryId;\r\n locationId = '';\r\n summaryText = '';\r\n actionText = '';\r\n preventionText = '';\r\n factorsText = '';\r\n }\r\n }\r\n // function showTextErrorPopup() {\r\n // const errorPop = POPUP.build({\r\n // classNames: 'textErrorPopup',\r\n // });\r\n\r\n // const message = document.createElement('p');\r\n // message.innerText = `You are not allowed to edit previously entered text.`;\r\n\r\n // var okButton = button.build({\r\n // text: 'Ok',\r\n // style: 'secondary',\r\n // type: 'contained',\r\n // callback: function () {\r\n // POPUP.hide(errorPop);\r\n // },\r\n // });\r\n\r\n // errorPop.appendChild(message);\r\n // errorPop.appendChild(okButton);\r\n\r\n // POPUP.show(errorPop);\r\n // }\r\n\r\n // Section\r\n //-----------------------------------------------\r\n function buildDateTimeInputs() {\r\n var incidentDateTimeWrap = document.createElement('div');\r\n var reportedDateTimeWrap = document.createElement('div');\r\n incidentDateTimeWrap.classList.add('incidentDateTimeWrap');\r\n reportedDateTimeWrap.classList.add('reportedDateTimeWrap');\r\n\r\n incidentDateInput = input.build({\r\n label: 'Incident Date',\r\n id: 'incidentDateInpt',\r\n type: 'date',\r\n style: 'secondary',\r\n classNames: ['iDate'],\r\n attributes: [{ key: 'max', value: '9999-12-31' }],\r\n value: incidentDate,\r\n });\r\n incidentTimeInput = input.build({\r\n label: 'Incident Time',\r\n type: 'time',\r\n style: 'secondary',\r\n classNames: ['iTime'],\r\n value: incidentTime,\r\n });\r\n reportedDateInput = input.build({\r\n label: 'Reported Date',\r\n type: 'date',\r\n style: 'secondary',\r\n classNames: ['rDate'],\r\n attributes: [{ key: 'max', value: '9999-12-31' }],\r\n value: reportedDate,\r\n });\r\n reportedTimeInput = input.build({\r\n label: 'Reported Time',\r\n type: 'time',\r\n style: 'secondary',\r\n classNames: ['rTime'],\r\n value: reportedTime,\r\n });\r\n\r\n incidentDateTimeWrap.appendChild(incidentDateInput);\r\n incidentDateTimeWrap.appendChild(incidentTimeInput);\r\n reportedDateTimeWrap.appendChild(reportedDateInput);\r\n reportedDateTimeWrap.appendChild(reportedTimeInput);\r\n\r\n return {\r\n incidentDateTime: incidentDateTimeWrap,\r\n reportedDateTime: reportedDateTimeWrap,\r\n };\r\n }\r\n function buildDropdowns() {\r\n var dropdownWrap = document.createElement('div');\r\n dropdownWrap.classList.add('dropdownWrap');\r\n // build markup\r\n categoryDropdown = dropdown.build({\r\n className: 'categoryDropdown',\r\n label: 'Incident Category',\r\n });\r\n locationDetailDropdown = dropdown.build({\r\n className: 'locationDropdown',\r\n label: 'Location Detail',\r\n });\r\n\r\n // get/set data\r\n var categoryData = categories.map(c => {\r\n if (c.incidentCategory === 'New Incident') {\r\n categoryId;\r\n }\r\n return {\r\n value: c.subcategoryId,\r\n text: c.incidentCategory,\r\n };\r\n });\r\n var locationData = incidentLocations.map(l => {\r\n return {\r\n value: l.itLocationId,\r\n text: l.description,\r\n };\r\n });\r\n\r\n var defaultDropdownOption = { value: '', text: '' };\r\n locationData.unshift(defaultDropdownOption);\r\n\r\n // populate\r\n dropdown.populate(categoryDropdown, categoryData, categoryId);\r\n dropdown.populate(locationDetailDropdown, locationData, locationId);\r\n\r\n // append\r\n dropdownWrap.appendChild(categoryDropdown);\r\n dropdownWrap.appendChild(locationDetailDropdown);\r\n\r\n return dropdownWrap;\r\n }\r\n function buildTextAreas() {\r\n summaryTextarea = input.build({\r\n label: 'Summary Of Incident',\r\n style: 'secondary',\r\n type: 'textarea',\r\n classNames: ['autosize', 'summary'],\r\n value: summaryText,\r\n });\r\n actionTextarea = input.build({\r\n label: 'Immediate Action',\r\n style: 'secondary',\r\n type: 'textarea',\r\n classNames: ['autosize', 'action'],\r\n value: actionText,\r\n });\r\n preventionTextarea = input.build({\r\n label: 'Prevention Plan',\r\n style: 'secondary',\r\n type: 'textarea',\r\n classNames: ['autosize', 'prevention'],\r\n value: preventionText,\r\n });\r\n causeTextarea = input.build({\r\n label: 'Cause & Contributing Factors',\r\n style: 'secondary',\r\n type: 'textarea',\r\n classNames: ['autosize', 'factors'],\r\n value: factorsText,\r\n });\r\n\r\n return {\r\n summary: summaryTextarea,\r\n action: actionTextarea,\r\n prevention: preventionTextarea,\r\n cause: causeTextarea,\r\n };\r\n }\r\n\r\n function buildSection(options, data) {\r\n var opts = options;\r\n reviewData = data;\r\n\r\n section = document.createElement('div');\r\n section.classList.add('incidentSection');\r\n section.setAttribute('data-card-page', 'details');\r\n section.setAttribute('data-page-num', opts.pageNumber);\r\n\r\n var heading = document.createElement('div');\r\n heading.classList.add('incidentSection__header');\r\n heading.innerHTML = `

    Incident Details

    `;\r\n\r\n sectionBody = document.createElement('div');\r\n sectionBody.classList.add('incidentSection__body');\r\n\r\n getSectionData();\r\n setSectionValues();\r\n\r\n var dateTimeInputs = buildDateTimeInputs();\r\n var dropdowns = buildDropdowns();\r\n var textAreas = buildTextAreas();\r\n\r\n sectionBody.appendChild(dateTimeInputs.incidentDateTime);\r\n sectionBody.appendChild(dateTimeInputs.reportedDateTime);\r\n sectionBody.appendChild(dropdowns);\r\n sectionBody.appendChild(textAreas.summary);\r\n sectionBody.appendChild(textAreas.action);\r\n\r\n if ($.session.incidentTrackingShowPreventionPlan) sectionBody.appendChild(textAreas.prevention);\r\n if ($.session.incidentTrackingShowCauseAndContributingFactors)\r\n sectionBody.appendChild(textAreas.cause);\r\n\r\n section.appendChild(heading);\r\n section.appendChild(sectionBody);\r\n\r\n setupEvents();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n\r\n return section;\r\n }\r\n\r\n function setupEvents() {\r\n incidentDateInput.addEventListener('change', e => {\r\n incidentDate = e.target.value;\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n incidentTimeInput.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n reportedDateInput.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n reportedTimeInput.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n\r\n summaryTextarea.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n actionTextarea.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n preventionTextarea.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n causeTextarea.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n categoryDropdown.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n locationDetailDropdown.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n }\r\n\r\n function checkRequiredFields() {\r\n var incidentDateInpt = document.getElementById('incidentDateInpt');\r\n\r\n if (incidentDateInpt) {\r\n if (!incidentDate || incidentDate === '') {\r\n incidentDateInpt.classList.add('error');\r\n } else {\r\n incidentDateInpt.classList.remove('error');\r\n }\r\n }\r\n\r\n // number of selected Consumers with an error ; length = 0 on initial display\r\n var selectedErroredConsumers = [].slice.call(\r\n document.querySelectorAll('.consumersWrap .consumerCard.error'),\r\n );\r\n\r\n // hasNoErrors = 0 means the \"Select a Consumer\" message is displayed\r\n var hasNoErrors = document.getElementsByClassName('consumerError hidden');\r\n\r\n if (hasNoErrors.length === 0) return true;\r\n\r\n var detailshasErrors = [].slice.call(section.querySelectorAll('.error'));\r\n\r\n if (detailshasErrors.length !== 0 || selectedErroredConsumers.length !== 0) {\r\n return true; // true means do disable the Save BTN\r\n } else {\r\n return false; // false means don't disable the Save BTN\r\n }\r\n }\r\n\r\n return {\r\n build: buildSection,\r\n checkRequiredFields,\r\n };\r\n})();\r\n","var itEmployeeSection = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var sectionBody;\r\n // DATA\r\n //---------------------\r\n var employeesInvolved;\r\n // Values\r\n //---------------------\r\n\r\n function displayCount() {\r\n var employees = [].slice.call(section.querySelectorAll('.employeeRow'));\r\n var count = employees ? employees.length : 0;\r\n var countHolder = section.querySelector('span[data-count=\"employees\"]');\r\n countHolder.innerHTML = `( ${count} )`;\r\n }\r\n\r\n function addNewEmployeeRow() {\r\n var employeeCard = buildEmployeeCard();\r\n sectionBody.appendChild(employeeCard);\r\n displayCount();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n }\r\n\r\n // Populate\r\n //-----------------------------------------------\r\n function populate() {\r\n employeesInvolved.forEach(e => {\r\n var name = `${e.lastName}, ${e.firstName}`;\r\n var notify = e.notifyEmployee === 'Y' ? true : false;\r\n var employeeId = e.employeeId;\r\n var involvementType = e.description;\r\n var involvementTypeId = e.employeeInvolvementTypeId;\r\n\r\n var card = buildEmployeeCard({\r\n name,\r\n involvementTypeId,\r\n notify,\r\n });\r\n\r\n sectionBody.appendChild(card);\r\n });\r\n\r\n displayCount();\r\n }\r\n\r\n // Employee Card\r\n //-----------------------------------------------\r\n function buildNameDropdown(name) {\r\n var nameDropdown = dropdown.build({\r\n className: 'employeeNameDropdown',\r\n label: 'Name',\r\n style: 'secondary',\r\n });\r\n\r\n var employeeNames = incidentTracking.getEmployeeNames();\r\n var data = employeeNames.map(n => {\r\n return {\r\n value: n.employeeName,\r\n text: n.employeeName,\r\n attributes: [{ key: 'data-employeeid', value: n.employeeId }],\r\n };\r\n });\r\n\r\n data.unshift({ value: '', text: '' });\r\n dropdown.populate(nameDropdown, data, name);\r\n\r\n return nameDropdown;\r\n }\r\n function buildInvolvmentDropdown(involvementId) {\r\n var involvmentTypeDropdown = dropdown.build({\r\n className: 'involvmentTypeDropdown',\r\n label: 'Involvement Type',\r\n style: 'secondary',\r\n });\r\n\r\n var involvementTypes = incidentTracking.getInvolvementTypes();\r\n var data = involvementTypes.map(it => {\r\n var involvementId = it.involvementId === '%' ? '' : it.involvementId;\r\n return { value: involvementId, text: it.description };\r\n });\r\n\r\n data.unshift({ value: '', text: '' });\r\n dropdown.populate(involvmentTypeDropdown, data, involvementId);\r\n\r\n return involvmentTypeDropdown;\r\n }\r\n function buildCheckbox(checkedValue) {\r\n var checkbox = input.buildCheckbox({\r\n text: 'Notify',\r\n isChecked: checkedValue,\r\n });\r\n\r\n return checkbox;\r\n }\r\n function buildEmployeeCard(values) {\r\n // values = {name, involvement, notify}\r\n var name = values ? values.name : '';\r\n var involvement = values ? values.involvementTypeId : '';\r\n var notify = values ? values.notify : false;\r\n\r\n var employeeRow = document.createElement('div');\r\n employeeRow.classList.add('employeeRow');\r\n employeeRow.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n\r\n var nameDropdown = buildNameDropdown(name);\r\n var involvmentTypeDropdown = buildInvolvmentDropdown(involvement);\r\n var checkbox = buildCheckbox(notify);\r\n var delteBtn = button.build({\r\n text: 'Delete Employee',\r\n icon: 'delete',\r\n type: 'text',\r\n style: 'secondary',\r\n callback: function () {\r\n var parent = employeeRow.parentElement;\r\n parent.removeChild(employeeRow);\r\n displayCount();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n\r\n // build row\r\n employeeRow.appendChild(delteBtn);\r\n employeeRow.appendChild(nameDropdown);\r\n employeeRow.appendChild(involvmentTypeDropdown);\r\n employeeRow.appendChild(checkbox);\r\n\r\n return employeeRow;\r\n }\r\n\r\n // Section\r\n //-----------------------------------------------\r\n function buildSection(options, data) {\r\n var opts = options;\r\n employeesInvolved = data;\r\n\r\n section = document.createElement('div');\r\n section.classList.add('incidentSection');\r\n section.setAttribute('data-card-page', 'employees');\r\n section.setAttribute('data-page-num', opts.pageNumber);\r\n\r\n var heading = document.createElement('div');\r\n heading.classList.add('incidentSection__header');\r\n heading.innerHTML = `

    Employees Involved

    `;\r\n\r\n sectionBody = document.createElement('div');\r\n sectionBody.classList.add('incidentSection__body');\r\n\r\n var addEmployeeBtn = button.build({\r\n text: 'Add New Employee',\r\n icon: 'add',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: addNewEmployeeRow,\r\n });\r\n\r\n sectionBody.appendChild(addEmployeeBtn);\r\n\r\n section.appendChild(heading);\r\n section.appendChild(sectionBody);\r\n\r\n if (employeesInvolved) populate();\r\n\r\n return section;\r\n }\r\n\r\n return {\r\n build: buildSection,\r\n };\r\n})();\r\n","var itPeopleSection = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var sectionBody;\r\n // DATA\r\n //---------------------\r\n var othersInvolved;\r\n // Values\r\n //---------------------\r\n\r\n function displayCount() {\r\n var people = [].slice.call(section.querySelectorAll('.peopleRow'));\r\n var count = people ? people.length : 0;\r\n var countHolder = section.querySelector('span[data-count=\"people\"]');\r\n countHolder.innerHTML = `( ${count} )`;\r\n }\r\n\r\n function checkRequiredFields() {\r\n if (!section) return false;\r\n\r\n var hasErrors = [].slice.call(section.querySelectorAll('.error'));\r\n\r\n if (hasErrors.length !== 0) {\r\n return true; // true means to disable the Save BTN\r\n } else {\r\n return false; // false means don't disable the Save BTN\r\n }\r\n }\r\n\r\n function addNewPersonRow() {\r\n var peopleCard = buildOtherPersonCard();\r\n sectionBody.appendChild(peopleCard);\r\n displayCount();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n }\r\n\r\n // Populate\r\n //-----------------------------------------------\r\n function populate() {\r\n othersInvolved.forEach(o => {\r\n var card = buildOtherPersonCard({\r\n name: o.name,\r\n company: o.company,\r\n involvementTypeId: o.involvementTypeId,\r\n address1: o.address1,\r\n address2: o.address2,\r\n city: o.city,\r\n state: o.state,\r\n zipCode: o.zipCode,\r\n phone: o.phone,\r\n });\r\n sectionBody.appendChild(card);\r\n });\r\n\r\n displayCount();\r\n }\r\n\r\n // Person Card\r\n //-----------------------------------------------\r\n function buildOtherPersonCard(values) {\r\n // values = {name, company, involvementTypeId, address1, address2, city, state, zipCode, phone}\r\n var name = values ? values.name : '';\r\n var company = values ? values.company : '';\r\n var involvementId = values ? values.involvementTypeId : '';\r\n var address1 = values ? values.address1 : '';\r\n var address2 = values ? values.address2 : '';\r\n var city = values ? values.city : '';\r\n var state = values ? values.state : '';\r\n var zip = values ? values.zipCode : '';\r\n var phone = values ? values.phone : '';\r\n\r\n var otherPeopleRow = document.createElement('div');\r\n otherPeopleRow.classList.add('peopleRow');\r\n otherPeopleRow.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n\r\n var nameInput = input.build({\r\n label: 'Name',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['name'],\r\n attributes: [{ key: 'maxlength', value: '50' }],\r\n value: name,\r\n callbackType: 'input',\r\n callback: event => {\r\n // Name input is required, else disable the save button\r\n if (event.target.value === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n }\r\n });\r\n var involvementDropdown = dropdown.build({\r\n label: 'Involvement Type',\r\n style: 'secondary',\r\n className: 'involvmentTypeDropdown',\r\n callback: e => {\r\n if (!e.target.value || e.target.value === '%') {\r\n involvementDropdown.classList.add('error');\r\n } else {\r\n involvementDropdown.classList.remove('error');\r\n }\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n var companyInput = input.build({\r\n label: 'Company',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['company'],\r\n attributes: [{ key: 'maxlength', value: '50' }],\r\n value: company,\r\n });\r\n var address1Input = input.build({\r\n label: 'Address 1',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['address1'],\r\n attributes: [{ key: 'maxlength', value: '50' }],\r\n value: address1,\r\n });\r\n var address2Input = input.build({\r\n label: 'Address 2',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['address2'],\r\n attributes: [{ key: 'maxlength', value: '50' }],\r\n value: address2,\r\n });\r\n var cityInput = input.build({\r\n label: 'City',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['city'],\r\n attributes: [{ key: 'maxlength', value: '27' }],\r\n value: city,\r\n });\r\n var stateInput = input.build({\r\n label: 'State',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['state'],\r\n attributes: [{ key: 'maxlength', value: '2' }],\r\n value: state,\r\n });\r\n var zipInput = input.build({\r\n label: 'Zip Code',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['zip'],\r\n attributes: [{ key: 'maxlength', value: '9' }],\r\n value: zip,\r\n });\r\n var phoneInput = input.build({\r\n label: 'Phone',\r\n type: 'tel',\r\n style: 'secondary',\r\n classNames: ['phone'],\r\n attributes: [{ key: 'maxlength', value: '14' }],\r\n value: phone,\r\n });\r\n var deleteBtn = button.build({\r\n text: 'Delete Person',\r\n icon: 'delete',\r\n type: 'text',\r\n style: 'secondary',\r\n callback: function () {\r\n var parent = otherPeopleRow.parentElement;\r\n parent.removeChild(otherPeopleRow);\r\n displayCount();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n\r\n if(!name) {\r\n nameInput.classList.add('error');\r\n }\r\n\r\n // populate drodowns\r\n var involvementTypes = incidentTracking.getInvolvementTypes();\r\n var involvementDropdownData = involvementTypes.map(it => {\r\n var involvementId = it.involvementId === '%' ? '' : it.involvementId;\r\n return { value: involvementId, text: it.description };\r\n });\r\n var defaultValue = { value: '', text: '' };\r\n involvementDropdownData.unshift(defaultValue);\r\n dropdown.populate(involvementDropdown, involvementDropdownData, involvementId);\r\n\r\n if (!involvementId) {\r\n involvementDropdown.classList.add('error');\r\n }\r\n\r\n // build card\r\n var wrap1 = document.createElement('div');\r\n var wrap2 = document.createElement('div');\r\n var wrap3 = document.createElement('div');\r\n wrap1.classList.add('wrap1');\r\n wrap2.classList.add('wrap2');\r\n wrap3.classList.add('wrap3');\r\n\r\n wrap1.appendChild(nameInput);\r\n wrap1.appendChild(companyInput);\r\n\r\n wrap2.appendChild(address1Input);\r\n wrap2.appendChild(address2Input);\r\n\r\n wrap3.appendChild(cityInput);\r\n wrap3.appendChild(stateInput);\r\n wrap3.appendChild(zipInput);\r\n\r\n otherPeopleRow.appendChild(deleteBtn);\r\n otherPeopleRow.appendChild(wrap1);\r\n otherPeopleRow.appendChild(involvementDropdown);\r\n otherPeopleRow.appendChild(wrap2);\r\n otherPeopleRow.appendChild(wrap3);\r\n otherPeopleRow.appendChild(phoneInput);\r\n\r\n return otherPeopleRow;\r\n }\r\n\r\n // Section\r\n //-----------------------------------------------\r\n function buildSection(options, data) {\r\n var opts = options;\r\n othersInvolved = data;\r\n\r\n section = document.createElement('div');\r\n section.classList.add('incidentSection');\r\n section.setAttribute('data-card-page', 'people');\r\n section.setAttribute('data-page-num', opts.pageNumber);\r\n\r\n var heading = document.createElement('div');\r\n heading.classList.add('incidentSection__header');\r\n heading.innerHTML = `

    Other People Involved

    `;\r\n\r\n sectionBody = document.createElement('div');\r\n sectionBody.classList.add('incidentSection__body');\r\n\r\n var addPeopleBtn = button.build({\r\n text: 'Add New Person',\r\n icon: 'add',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: addNewPersonRow,\r\n });\r\n\r\n sectionBody.appendChild(addPeopleBtn);\r\n\r\n section.appendChild(heading);\r\n section.appendChild(sectionBody);\r\n\r\n if (othersInvolved) populate();\r\n\r\n return section;\r\n }\r\n\r\n return {\r\n build: buildSection,\r\n checkRequiredFields,\r\n };\r\n})();\r\n","const csAssignCaseload = (() => {\r\n // data\r\n let consumerswithSaleforceIds;\r\n let caseManagersfromOptionsTable;\r\n let assignmentResults;\r\n // case manager\r\n let currentCaseManagerSelected;\r\n // consumer\r\n let currentconsumersSelected = [];\r\n // dom\r\n let assignCaseLoadPopup;\r\n let assignBtn;\r\n\r\n function toggleAssignButton() {\r\n if (!currentCaseManagerSelected || currentconsumersSelected.length === 0) {\r\n assignBtn.classList.add('disabled');\r\n return;\r\n }\r\n\r\n assignBtn.classList.remove('disabled');\r\n }\r\n function showConfirmationPopup() {\r\n let selectedConsumerObjs = [];\r\n\r\n const confirmCaseLoadPopup = POPUP.build({\r\n id: 'sig_assignCaseLoadConfirmPopup',\r\n classNames: 'confirmCaseLoadPopup',\r\n hideX: true,\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.classList.add('popupMessage');\r\n message.innerHTML = `\r\n These individuals are about to be assigned in Salesforce to ${currentCaseManagerSelected.name}. Do you want to proceed?\r\n `;\r\n\r\n const assignedConsumerList = document.createElement('div');\r\n assignedConsumerList.classList.add('assignedConsumerList');\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n currentconsumersSelected.forEach(consumer => {\r\n // set data to OBJ\r\n selectedConsumerObjs.push({\r\n id: consumer.id,\r\n name: consumer.name,\r\n });\r\n // build list\r\n const c = document.createElement('p');\r\n c.innerText = consumer.name;\r\n assignedConsumerList.appendChild(c);\r\n });\r\n\r\n const confirmBtn = button.build({\r\n text: 'confirm',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n assignedConsumerList.innerHTML = '';\r\n btnWrap.innerHTML = '';\r\n message.innerHTML = '';\r\n confirmCaseLoadPopup.removeChild(message);\r\n confirmCaseLoadPopup.removeChild(assignedConsumerList);\r\n confirmCaseLoadPopup.removeChild(btnWrap);\r\n\r\n const spinner = PROGRESS.SPINNER.get('Assigning Individuals...');\r\n confirmCaseLoadPopup.appendChild(spinner);\r\n\r\n assignmentResults = await consentAndSignAjax.assignStateCaseManagertoConsumers({\r\n // token: $.session.Token,\r\n caseManagerId: currentCaseManagerSelected.id,\r\n consumers: selectedConsumerObjs,\r\n });\r\n\r\n confirmCaseLoadPopup.removeChild(spinner);\r\n confirmCaseLoadPopup.appendChild(message);\r\n confirmCaseLoadPopup.appendChild(assignedConsumerList);\r\n confirmCaseLoadPopup.appendChild(btnWrap);\r\n\r\n const processedStateConsumerObjs = JSON.parse(assignmentResults);\r\n const filteredStateConsumers = processedStateConsumerObjs.filter(obj =>\r\n obj.assignresult.includes('Case Manger Not Assigned'),\r\n );\r\n\r\n if (filteredStateConsumers.length === 0) {\r\n POPUP.hide(confirmCaseLoadPopup);\r\n POPUP.hide(assignCaseLoadPopup);\r\n currentCaseManagerSelected = null;\r\n currentconsumersSelected = [];\r\n return;\r\n }\r\n\r\n message.innerHTML = `The following consumers were not able to be assigned to ${currentCaseManagerSelected.name}. Please contact DODD.`;\r\n\r\n processedStateConsumerObjs.forEach(consumer => {\r\n if (consumer.assignresult.includes('Case Manger Not Assigned')) {\r\n const c = document.createElement('p');\r\n c.innerHTML = `${consumer.name}`;\r\n // c.innerHTML = `${consumer.name} Assign result: ${consumer.assignresult}`;\r\n assignedConsumerList.appendChild(c);\r\n }\r\n });\r\n\r\n const okBtn = button.build({\r\n text: 'ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(confirmCaseLoadPopup);\r\n POPUP.hide(assignCaseLoadPopup);\r\n currentCaseManagerSelected = null;\r\n currentconsumersSelected = [];\r\n },\r\n });\r\n btnWrap.appendChild(okBtn);\r\n\r\n // reset values last\r\n currentCaseManagerSelected = null;\r\n currentconsumersSelected = [];\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n DOM.ACTIONCENTER.removeChild(confirmCaseLoadPopup);\r\n assignCaseLoadPopup.style.display = 'block';\r\n },\r\n });\r\n\r\n btnWrap.appendChild(confirmBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n confirmCaseLoadPopup.appendChild(message);\r\n confirmCaseLoadPopup.appendChild(assignedConsumerList);\r\n confirmCaseLoadPopup.appendChild(btnWrap);\r\n\r\n assignCaseLoadPopup.style.display = 'none';\r\n POPUP.show(confirmCaseLoadPopup);\r\n }\r\n\r\n async function showAssignCaseLoadPopup() {\r\n caseManagersfromOptionsTable = await consentAndSignAjax.getCaseManagersfromOptionsTable({\r\n token: $.session.Token,\r\n });\r\n consumerswithSaleforceIds = await consentAndSignAjax.getConsumerswithSaleforceIds({\r\n token: $.session.Token,\r\n });\r\n\r\n // Poup\r\n assignCaseLoadPopup = POPUP.build({\r\n id: 'sig_assignCaseLoadPopup',\r\n classNames: 'assignCaseLoadPopup',\r\n hideX: true,\r\n header: 'Assign Case Load',\r\n });\r\n const popupMessage = document.createElement('p');\r\n popupMessage.classList.add('popupMessage');\r\n \r\n if ($.session.applicationName === 'Gatekeeper') {\r\n popupMessage.innerText ='*Must select a Case Manager and at least one consumer before clicking Assign button.';\r\n } else {\r\n popupMessage.innerText ='*Must select a QIDP and at least one consumer before clicking Assign button.';\r\n }\r\n \r\n\r\n const innerWrap = document.createElement('div');\r\n innerWrap.classList.add('peopleListWrap');\r\n\r\n // Case Managers\r\n const caseManagersContainer = document.createElement('div');\r\n caseManagersContainer.classList.add('assignCaseLoadPeopleList');\r\n\r\n const cmHeading = document.createElement('p');\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n cmHeading.innerText = 'Select a Case Manager';\r\n } else {\r\n cmHeading.innerText = 'Select a QIDP';\r\n }\r\n\r\n CM_SEARCH_BTN = button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n CM_SEARCH_WRAP = document.createElement('div');\r\n CM_SEARCH_WRAP.classList.add('consumerSearch');\r\n CM_SEARCH_INPUT = document.createElement('input');\r\n ($.session.applicationName === 'Gatekeeper') ? CM_SEARCH_INPUT.setAttribute('placeholder', 'search case managers') : CM_SEARCH_INPUT.setAttribute('placeholder', 'search QIDPs');\r\n CM_SEARCH_WRAP.appendChild(CM_SEARCH_BTN);\r\n CM_SEARCH_WRAP.appendChild(CM_SEARCH_INPUT);\r\n CM_filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtn',\r\n // callback: showFilterPopup\r\n callback: () => {\r\n cnFilters.init(filterValues);\r\n },\r\n });\r\n\r\n const multiSelectBodyCM = document.createElement('div');\r\n caseManagersfromOptionsTable.forEach(person => {\r\n let caseManager = document.createElement('p');\r\n caseManager.classList.add('caseManager');\r\n caseManager.setAttribute('data-personId', person.id);\r\n caseManager.innerText = person.name;\r\n multiSelectBodyCM.appendChild(caseManager);\r\n\r\n caseManager.addEventListener('click', e => {\r\n //* There can only ever be one case manager selected\r\n const isSelected = e.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n e.target.classList.remove('selected');\r\n currentCaseManagerSelected = null;\r\n } else {\r\n // check for existing case manager & remove\r\n const existing = [...multiSelectBodyCM.querySelectorAll('.caseManager.selected')];\r\n existing.forEach(row => row.classList.remove('selected'));\r\n // set new case manager\r\n e.target.classList.add('selected');\r\n currentCaseManagerSelected = person;\r\n }\r\n\r\n toggleAssignButton();\r\n });\r\n });\r\n\r\n caseManagersContainer.appendChild(cmHeading);\r\n \r\n var CM_btnWrap = document.createElement('div');\r\n CM_btnWrap.classList.add('cnbtnWrap');\r\n CM_btnWrap.appendChild(CM_filterBtn);\r\n\r\n caseManagersContainer.appendChild(CM_SEARCH_WRAP);\r\n\r\n CM_SEARCH_BTN.addEventListener('click', event => {\r\n CM_SEARCH_WRAP.classList.toggle('searchOpen');\r\n CM_SEARCH_INPUT.value = '';\r\n CM_SEARCH_INPUT.focus();\r\n });\r\n CM_SEARCH_INPUT.addEventListener('keyup', event => {\r\n if (event.keyCode === 13) {\r\n caseManagerSearch(event.target.value);\r\n }\r\n });\r\n \r\n CM_SEARCH_INPUT.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n caseManagerSearch(event.target.value);\r\n }\r\n });\r\n\r\n caseManagersContainer.appendChild(multiSelectBodyCM);\r\n\r\n // Consumers\r\n const consumersContainer = document.createElement('div');\r\n consumersContainer.classList.add('assignCaseLoadPeopleList');\r\n\r\n const cHeading = document.createElement('p');\r\n cHeading.innerText = 'Select one (or multiple) consumers';\r\n\r\n C_SEARCH_BTN = button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n \r\n C_SEARCH_WRAP = document.createElement('div');\r\n C_SEARCH_WRAP.classList.add('consumerSearch');\r\n C_SEARCH_INPUT = document.createElement('input');\r\n C_SEARCH_INPUT.setAttribute('placeholder', 'search consumers');\r\n C_SEARCH_WRAP.appendChild(C_SEARCH_BTN);\r\n C_SEARCH_WRAP.appendChild(C_SEARCH_INPUT);\r\n C_filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtn',\r\n // callback: showFilterPopup\r\n callback: () => {\r\n cnFilters.init(filterValues);\r\n },\r\n }); \r\n\r\n const multiSelectBodyC = document.createElement('div');\r\n consumerswithSaleforceIds.forEach(person => {\r\n let consumer = document.createElement('p');\r\n consumer.setAttribute('data-personId', person.id);\r\n consumer.innerText = person.name;\r\n multiSelectBodyC.appendChild(consumer);\r\n\r\n consumer.addEventListener('click', e => {\r\n //* Multiple consumers can be selected\r\n const isSelected = e.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n e.target.classList.remove('selected');\r\n currentconsumersSelected = currentconsumersSelected.filter(cs => cs.id !== person.id);\r\n } else {\r\n e.target.classList.add('selected');\r\n currentconsumersSelected.push(person);\r\n }\r\n\r\n toggleAssignButton();\r\n });\r\n });\r\n\r\n consumersContainer.appendChild(cHeading);\r\n \r\n var C_btnWrap = document.createElement('div');\r\n C_btnWrap.classList.add('cnbtnWrap');\r\n C_btnWrap.appendChild(C_filterBtn);\r\n\r\n consumersContainer.appendChild(C_SEARCH_WRAP);\r\n\r\n consumersContainer.appendChild(multiSelectBodyC);\r\n\r\n C_SEARCH_BTN.addEventListener('click', event => {\r\n C_SEARCH_WRAP.classList.toggle('searchOpen');\r\n C_SEARCH_INPUT.value = '';\r\n C_SEARCH_INPUT.focus();\r\n });\r\n C_SEARCH_INPUT.addEventListener('keyup', event => {\r\n if (event.keyCode === 13) {\r\n consumerSearch(event.target.value);\r\n }\r\n });\r\n \r\n C_SEARCH_INPUT.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n consumerSearch(event.target.value);\r\n }\r\n });\r\n\r\n // Action Buttons\r\n assignBtn = button.build({\r\n text: 'ASSIGN',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n showConfirmationPopup();\r\n },\r\n });\r\n assignBtn.classList.add('disabled');\r\n\r\n var cancelBtn = button.build({\r\n text: 'CANCEL',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n currentCaseManagerSelected = null;\r\n currentconsumersSelected = [];\r\n POPUP.hide(assignCaseLoadPopup);\r\n },\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(assignBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n innerWrap.appendChild(caseManagersContainer);\r\n innerWrap.appendChild(consumersContainer);\r\n\r\n assignCaseLoadPopup.appendChild(popupMessage);\r\n assignCaseLoadPopup.appendChild(innerWrap);\r\n assignCaseLoadPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(assignCaseLoadPopup);\r\n }\r\n\r\n function caseManagerSearch(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n // gather all names shown\r\n //reset the array containing list of consumers that are being displayed\r\n displayedCaseManagers = [searchValue];\r\n caseManagersfromOptionsTable.forEach(caseManager => {\r\n var fullName = caseManager.name.toLowerCase();\r\n // var fullNameReversed = `${lastName} ${firstName}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n // var matchesNameReverse = fullNameReversed.indexOf(searchValue);\r\n // var consumer = document.getElementById(consumer.id);\r\n var thisCaseManager = document.querySelector(`[data-personid=\"${caseManager.id}\"]`);\r\n\r\n if (matchesName !== -1 ) {\r\n thisCaseManager.classList.remove('hidden');\r\n displayedCaseManagers.push(caseManager.id);\r\n } else {\r\n thisCaseManager.classList.add('hidden');\r\n var index = displayedCaseManagers.indexOf(caseManager.id);\r\n if (index > -1) displayedCaseManagers.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n function consumerSearch(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n // gather all names shown\r\n //reset the array containing list of consumers that are being displayed\r\n displayedConsumers = [searchValue];\r\n consumerswithSaleforceIds.forEach(consumer => {\r\n var fullName = consumer.name.toLowerCase();\r\n // var fullNameReversed = `${lastName} ${firstName}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n // var matchesNameReverse = fullNameReversed.indexOf(searchValue);\r\n // var consumer = document.getElementById(consumer.id);\r\n var thisConsumer = document.querySelector(`[data-personid=\"${consumer.id}\"]`);\r\n\r\n if (matchesName !== -1 ) {\r\n thisConsumer.classList.remove('hidden');\r\n displayedConsumers.push(consumer.id);\r\n } else {\r\n thisConsumer.classList.add('hidden');\r\n var index = displayedConsumers.indexOf(consumer.id);\r\n if (index > -1) displayedConsumers.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n showAssignCaseLoadPopup,\r\n };\r\n})();\r\n","const planConsentAndSign = (() => {\r\n let selectedConsumer;\r\n let readOnly;\r\n let planId; // aka: assessmentId\r\n let effStartDate;\r\n let effEndDate;\r\n // DATA\r\n let vendorData;\r\n let teamMemberData;\r\n let paidSupportProviders;\r\n let providerDropdownData;\r\n let ssaDropdownData;\r\n // for important ppl popup\r\n let names;\r\n // GLOBALS\r\n let csSSAPeopleIdGlobal;\r\n let csrVendorIdGlobal;\r\n let csContactInputGlobal;\r\n // DOM\r\n let teamMemberTable;\r\n\r\n //*------------------------------------------------------\r\n //* Rando\r\n //*------------------------------------------------------\r\n function getTeamMembersHowTheyExistOnPlanNowWhileWeWaitOnDamnStateToMakeUpTheirMinds() {\r\n const data = teamMemberData.map(d => {\r\n return {\r\n value: d.name,\r\n text: d.name,\r\n caseManager: d.teamMember === 'Case Manager' ? true : false,\r\n contactId: d.contactId ? d.contactId : '0',\r\n isSigned: d.dateSigned !== '' ? true : false,\r\n };\r\n });\r\n return data;\r\n }\r\n function planStatusChange() {\r\n const planStatus = plan.getPlanStatus();\r\n const planActiveStatus = plan.getPlanActiveStatus();\r\n const addMemberBtn = document.getElementById('sig_addMember');\r\n\r\n if (planActiveStatus && planStatus === 'D' && $.session.planUpdate) {\r\n readOnly = false;\r\n addMemberBtn.classList.remove('disabled');\r\n } else {\r\n readOnly = true;\r\n addMemberBtn.classList.add('disabled');\r\n }\r\n refreshTable();\r\n }\r\n function getConsentGlobalValues() {\r\n return {\r\n SSA: csSSAPeopleIdGlobal,\r\n VENDOR: csrVendorIdGlobal,\r\n CONTACT: csContactInputGlobal,\r\n };\r\n }\r\n function isTeamMemberConsentable(teamMember) {\r\n return teamMember === 'Person Supported' ||\r\n teamMember === 'Parent/Guardian' ||\r\n teamMember === 'Guardian'\r\n ? true\r\n : false;\r\n }\r\n function isTeamMemberGuardian(teamMember) {\r\n return teamMember === 'Parent/Guardian' || teamMember === 'Guardian' ? true : false;\r\n }\r\n function getNames() {\r\n return names;\r\n }\r\n function getTeamMemberData() {\r\n return teamMemberData;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* INSERT/UPDATE/DELETE\r\n //*------------------------------------------------------\r\n async function insertNewTeamMember(selectedMemberData) {\r\n // UNSAVABLE NOTE TEXT IS REMOVED IN BACKEND ON INSERTS\r\n const data = {\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n consumerId: selectedConsumer.id,\r\n // member\r\n teamMember: selectedMemberData.teamMember,\r\n name: selectedMemberData.name,\r\n lastName: selectedMemberData.lastName,\r\n participated: selectedMemberData.participated,\r\n parentOfMinor: selectedMemberData.parentOfMinor,\r\n email: selectedMemberData.email,\r\n relationship: selectedMemberData.relationship ? selectedMemberData.relationship : '',\r\n // sign/disent\r\n signature: selectedMemberData.signature,\r\n signatureType: selectedMemberData.signatureType,\r\n dateSigned: selectedMemberData.dateSigned,\r\n dissentAreaDisagree: selectedMemberData.dissentAreaDisagree,\r\n dissentHowToAddress: selectedMemberData.dissentHowToAddress,\r\n // consent\r\n csAgreeToPlan: selectedMemberData.csAgreeToPlan,\r\n csChangeMind: selectedMemberData.csChangeMind,\r\n csChangeMindSSAPeopleId: selectedMemberData.csChangeMindSSAPeopleId,\r\n csContact: selectedMemberData.csContact,\r\n csContactInput: selectedMemberData.csContactInput,\r\n csContactProviderVendorId: selectedMemberData.csContactProviderVendorId,\r\n csDueProcess: selectedMemberData.csDueProcess,\r\n csFCOPExplained: selectedMemberData.csFCOPExplained,\r\n csResidentialOptions: selectedMemberData.csResidentialOptions,\r\n csRightsReviewed: selectedMemberData.csRightsReviewed,\r\n csSupportsHealthNeeds: selectedMemberData.csSupportsHealthNeeds,\r\n csTechnology: selectedMemberData.csTechnology,\r\n // new\r\n contactId: selectedMemberData.contactId,\r\n salesforceId: !selectedMemberData.salesForceId ? '' : selectedMemberData.salesForceId,\r\n peopleId: selectedMemberData.peopleId,\r\n buildingNumber: selectedMemberData.buildingNumber,\r\n dateOfBirth: UTIL.formatDateToIso(dates.removeTimestamp(selectedMemberData.dateOfBirth)),\r\n planYearStart: effStartDate,\r\n planYearEnd: effEndDate,\r\n useExisting: '',\r\n relationshipImport: selectedMemberData.relationshipImport,\r\n createRelationship: selectedMemberData.createRelationship,\r\n // attachments for signature\r\n hasWetSignature: selectedMemberData.hasWetSignature,\r\n description: selectedMemberData.description ? selectedMemberData.description : '',\r\n attachment: selectedMemberData.attachment ? selectedMemberData.attachment : '',\r\n attachmentType: selectedMemberData.attachmentType ? selectedMemberData.attachmentType : '',\r\n // ignore\r\n section: '',\r\n questionId: '0',\r\n vendorId: selectedMemberData.vendorId,\r\n locationId: selectedMemberData.locationId,\r\n };\r\n\r\n let stuff = await consentAndSignAjax.insertTeamMember(data);\r\n\r\n // triggers event listener for one span button\r\n oneSpan.fireDataUpdateEvent(planId);\r\n\r\n // if first insert set global values\r\n const isMemberConsentable = isTeamMemberConsentable(selectedMemberData.teamMember);\r\n if (teamMemberData.length === 0) {\r\n if (isMemberConsentable) {\r\n csSSAPeopleIdGlobal = selectedMemberData.csChangeMindSSAPeopleId;\r\n csrVendorIdGlobal = selectedMemberData.csContactProviderVendorId;\r\n csContactInputGlobal = selectedMemberData.csContactInput;\r\n }\r\n } else {\r\n if (isMemberConsentable) {\r\n const shouldUpdateSSA =\r\n csSSAPeopleIdGlobal !== selectedMemberData.csChangeMindSSAPeopleId ? true : false;\r\n const shouldUpdateVendor =\r\n csrVendorIdGlobal !== selectedMemberData.csContactProviderVendorId ? true : false;\r\n const shouldUpdateContact =\r\n csContactInputGlobal !== selectedMemberData.csContactInput ? true : false;\r\n\r\n if (shouldUpdateSSA || shouldUpdateVendor || shouldUpdateContact) {\r\n csSSAPeopleIdGlobal = selectedMemberData.csChangeMindSSAPeopleId;\r\n csrVendorIdGlobal = selectedMemberData.csContactProviderVendorId;\r\n csContactInputGlobal = selectedMemberData.csContactInput;\r\n\r\n await updateTeamMebersGlobals({\r\n newSSA: selectedMemberData.csChangeMindSSAPeopleId,\r\n newVendor: selectedMemberData.csContactProviderVendorId,\r\n newContact: selectedMemberData.csContactInput,\r\n });\r\n }\r\n }\r\n }\r\n\r\n return stuff;\r\n }\r\n async function updateTeamMember(selectedMemberData, clearSignature) {\r\n const data = {\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n consumerId: selectedConsumer.id,\r\n // member\r\n teamMember: selectedMemberData.teamMember,\r\n name: selectedMemberData.name,\r\n lastName: selectedMemberData.lastName,\r\n participated: selectedMemberData.participated,\r\n relationship: selectedMemberData.relationship ? selectedMemberData.relationship : '',\r\n // sign/disent\r\n signatureId: selectedMemberData.signatureId,\r\n signature: selectedMemberData.signature,\r\n signatureType: selectedMemberData.signatureType,\r\n dateSigned: selectedMemberData.dateSigned,\r\n dissentAreaDisagree: selectedMemberData.dissentAreaDisagree,\r\n dissentHowToAddress: selectedMemberData.dissentHowToAddress,\r\n // new\r\n contactId: selectedMemberData.contactId,\r\n salesforceId: !selectedMemberData.salesForceId ? '' : selectedMemberData.salesForceId,\r\n peopleId: selectedMemberData.peopleId,\r\n buildingNumber: selectedMemberData.buildingNumber,\r\n dateOfBirth: UTIL.formatDateToIso(dates.removeTimestamp(selectedMemberData.dateOfBirth)),\r\n planYearStart: effStartDate,\r\n planYearEnd: effEndDate,\r\n useExisting: '',\r\n relationshipImport: selectedMemberData.relationshipImport,\r\n createRelationship: selectedMemberData.createRelationship,\r\n // attachments for signature\r\n hasWetSignature: selectedMemberData.hasWetSignature,\r\n description: selectedMemberData.description ? selectedMemberData.description : '',\r\n attachment: selectedMemberData.attachment ? selectedMemberData.attachment : '',\r\n attachmentType: selectedMemberData.attachmentType ? selectedMemberData.attachmentType : '',\r\n // ignore\r\n section: '',\r\n questionId: '0',\r\n vendorId: selectedMemberData.vendorId,\r\n // for clearing signature\r\n clear: clearSignature ? 't' : 'f',\r\n email: selectedMemberData.email,\r\n };\r\n\r\n // Gets the connection between the selected vendor name and the correct vendorId\r\n const vendorRel = csVendor.getSelectedVendorRel(vendorData, data.name);\r\n if (vendorRel !== undefined) {\r\n data.vendorId = vendorRel.vendorId;\r\n }\r\n\r\n const data2 = {\r\n token: $.session.Token,\r\n signatureId: selectedMemberData.signatureId,\r\n // consent\r\n csAgreeToPlan: selectedMemberData.csAgreeToPlan,\r\n csChangeMind: selectedMemberData.csChangeMind,\r\n csChangeMindSSAPeopleId: selectedMemberData.csChangeMindSSAPeopleId,\r\n csContact: selectedMemberData.csContact,\r\n csContactInput: selectedMemberData.csContactInput,\r\n csContactProviderVendorId: selectedMemberData.csContactProviderVendorId,\r\n csDueProcess: selectedMemberData.csDueProcess,\r\n csFCOPExplained: selectedMemberData.csFCOPExplained,\r\n csResidentialOptions: selectedMemberData.csResidentialOptions,\r\n csRightsReviewed: selectedMemberData.csRightsReviewed,\r\n csSupportsHealthNeeds: selectedMemberData.csSupportsHealthNeeds,\r\n csTechnology: selectedMemberData.csTechnology,\r\n };\r\n await consentAndSignAjax.updateTeamMember(data);\r\n if (!clearSignature) {\r\n await consentAndSignAjax.updatePlanConsentStatements(data2);\r\n }\r\n\r\n // triggers event listener for one span button\r\n oneSpan.fireDataUpdateEvent(planId);\r\n\r\n const isMemberConsentable = isTeamMemberConsentable(selectedMemberData.teamMember);\r\n if (teamMemberData.length > 1) {\r\n if (isMemberConsentable) {\r\n const shouldUpdateSSA =\r\n csSSAPeopleIdGlobal !== selectedMemberData.csChangeMindSSAPeopleId ? true : false;\r\n const shouldUpdateVendor =\r\n csrVendorIdGlobal !== selectedMemberData.csContactProviderVendorId ? true : false;\r\n const shouldUpdateContact =\r\n csContactInputGlobal !== selectedMemberData.csContactInput ? true : false;\r\n\r\n if (shouldUpdateSSA || shouldUpdateVendor || shouldUpdateContact) {\r\n csSSAPeopleIdGlobal = selectedMemberData.csChangeMindSSAPeopleId;\r\n csrVendorIdGlobal = selectedMemberData.csContactProviderVendorId;\r\n csContactInputGlobal = selectedMemberData.csContactInput;\r\n\r\n await updateTeamMebersGlobals({\r\n newSSA: selectedMemberData.csChangeMindSSAPeopleId,\r\n newVendor: selectedMemberData.csContactProviderVendorId,\r\n newContact: selectedMemberData.csContactInput,\r\n idToIgnore: selectedMemberData.signatureId,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n async function deleteTeamMember(id, teamMemberPopup) {\r\n teamMemberPopup.style.display = 'none';\r\n\r\n async function deleteAccept() {\r\n pendingSave.show('Deleting...');\r\n\r\n const res = await consentAndSignAjax.deleteTeamMember({\r\n token: $.session.Token,\r\n signatureId: id,\r\n });\r\n\r\n // triggers event listener for one span button\r\n oneSpan.fireDataUpdateEvent(planId);\r\n\r\n if (res === '[]') {\r\n pendingSave.fulfill('Deleted');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n POPUP.hide(teamMemberPopup);\r\n refreshTable();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to delete. Please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n failSave.hide();\r\n }, 1000);\r\n }\r\n }\r\n\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to remove this team member?',\r\n accept: {\r\n text: 'Yes',\r\n callback: deleteAccept,\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n overlay.show();\r\n teamMemberPopup.style.removeProperty('display');\r\n },\r\n },\r\n });\r\n }\r\n //* Master Update For Global Questions\r\n async function updateTeamMebersGlobals({ newSSA, newVendor, newContact, ...rest }) {\r\n // loop through all and update\r\n teamMemberData.forEach(async member => {\r\n // const isMemberConsentable = isTeamMemberConsentable(member.teamMember);\r\n // if (!isMemberConsentable) return;\r\n if (member.signatureId === rest.idToIgnore) return;\r\n\r\n await consentAndSignAjax.updatePlanConsentStatements({\r\n token: $.session.Token,\r\n signatureId: member.signatureId,\r\n // consent\r\n csAgreeToPlan: member.csAgreeToPlan,\r\n csChangeMind: member.csChangeMind,\r\n csChangeMindSSAPeopleId: newSSA,\r\n csContact: member.csContact,\r\n csContactInput: newContact,\r\n csContactProviderVendorId: newVendor,\r\n csDueProcess: member.csDueProcess,\r\n csFCOPExplained: member.csFCOPExplained,\r\n csResidentialOptions: member.csResidentialOptions,\r\n csRightsReviewed: member.csRightsReviewed,\r\n csSupportsHealthNeeds: member.csSupportsHealthNeeds,\r\n csTechnology: member.csTechnology,\r\n });\r\n });\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* DROPDOWNS\r\n //*------------------------------------------------------\r\n function getSSAById(ssaId) {\r\n const filteredSSA = ssaDropdownData.filter(ssa => ssa.id === ssaId);\r\n return filteredSSA.length > 0 ? filteredSSA[0].name : '';\r\n }\r\n // get/sort data\r\n function getVendorDropdownData() {\r\n const nonPaidSupportData = providerDropdownData.filter(\r\n provider => paidSupportProviders.indexOf(provider.vendorId) < 0,\r\n );\r\n const paidSupportData = providerDropdownData.filter(\r\n provider => paidSupportProviders.indexOf(provider.vendorId) >= 0,\r\n );\r\n const nonPaidSupportDropdownData = nonPaidSupportData.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n const paidSupportDropdownData = paidSupportData.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n return {\r\n paidSupport: paidSupportDropdownData,\r\n nonPaidSupport: nonPaidSupportDropdownData,\r\n };\r\n }\r\n function getSSADropdownData() {\r\n const data = ssaDropdownData.map(ssa => {\r\n return {\r\n value: ssa.id,\r\n text: ssa.name,\r\n };\r\n });\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n data.unshift({ value: '', text: '[SELECT A QIDP]' });\r\n } else {\r\n data.unshift({ value: '', text: '[SELECT AN SSA]' });\r\n }\r\n\r\n return data;\r\n }\r\n // populate\r\n function populateDropdownSSA(ssaDropdown, csChangeMindSSAPeopleId) {\r\n const csChangeMindQuestionDropdownData = getSSADropdownData();\r\n\r\n dropdown.populate(ssaDropdown, csChangeMindQuestionDropdownData, csChangeMindSSAPeopleId);\r\n }\r\n\r\n function populateDropdownVendor(vendorDropdown, csContactProviderVendorId) {\r\n //* VENDOR DROPDOWN\r\n const contactQuestionDropdownData = getVendorDropdownData();\r\n const nonGroupedDropdownData = [{ value: '', text: '[SELECT A PROVIDER]' }];\r\n const paidSupportGroup = {\r\n groupLabel: 'Paid Support Providers',\r\n groupId: 'isp_ic_providerDropdown_paidSupportProviders',\r\n dropdownValues: contactQuestionDropdownData.paidSupport,\r\n };\r\n const nonPaidSupportGroup = {\r\n groupLabel: 'Other Providers',\r\n groupId: 'isp_ic_providerDropdown_nonPaidSupportProviders',\r\n dropdownValues: contactQuestionDropdownData.nonPaidSupport,\r\n };\r\n\r\n const groupDropdownData = [];\r\n if (contactQuestionDropdownData.paidSupport.length > 0) {\r\n groupDropdownData.push(paidSupportGroup);\r\n }\r\n\r\n groupDropdownData.push(nonPaidSupportGroup);\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: vendorDropdown,\r\n data: groupDropdownData,\r\n nonGroupedData: nonGroupedDropdownData,\r\n defaultVal: csContactProviderVendorId,\r\n });\r\n }\r\n // set/update width\r\n function setSSADropdownInitialWidth(popup, csChangeMindSSAPeopleId) {\r\n const ssaDropdown = popup.querySelector('#isp_ic_ssaDropdown');\r\n ssaDropdown.value = csChangeMindSSAPeopleId;\r\n let ssaWidth = 150;\r\n if (ssaDropdown.selectedIndex !== -1) {\r\n ssaWidth = ssaDropdown.options[ssaDropdown.selectedIndex].text.length * 10;\r\n }\r\n ssaDropdown.style.width = `${ssaWidth}px`;\r\n }\r\n function setVendorDropdownInitialWidth(popup, csContactProviderVendorId) {\r\n const vendorContactDropdown = popup.querySelector('#isp_ic_vendorContactDropdown');\r\n vendorContactDropdown.value = csContactProviderVendorId;\r\n const vendorWidth =\r\n (vendorContactDropdown.options[vendorContactDropdown.selectedIndex].text.length + 3) * 10;\r\n\r\n vendorContactDropdown.style.width = `${vendorWidth}px`;\r\n }\r\n function updateSSADropdownWidth(popup) {\r\n const ssaDropdown = popup.querySelector('#isp_ic_ssaDropdown');\r\n const hidden_opt = popup.querySelector('#isp_ic_ssaDropdown__width_tmp_option');\r\n hidden_opt.innerHTML = ssaDropdown.options[ssaDropdown.selectedIndex].textContent;\r\n const hidden_sel = popup.querySelector('#isp_ic_ssaDropdown__width_tmp_select');\r\n hidden_sel.style.display = 'initial';\r\n ssaDropdown.style.width = hidden_sel.clientWidth + 22 + 'px';\r\n hidden_sel.style.display = 'none';\r\n }\r\n function updateVendorDropdownWidth(popup) {\r\n const vendorContactDropdown = popup.querySelector('#isp_ic_vendorContactDropdown');\r\n const hidden_opt = popup.querySelector('#isp_ic_vendorContactDropdown__width_tmp_option');\r\n hidden_opt.innerHTML =\r\n vendorContactDropdown.options[vendorContactDropdown.selectedIndex].textContent;\r\n const hidden_sel = popup.querySelector('#isp_ic_vendorContactDropdown__width_tmp_select');\r\n hidden_sel.style.display = 'initial';\r\n vendorContactDropdown.style.width = hidden_sel.clientWidth + 22 + 'px';\r\n hidden_sel.style.display = 'none';\r\n }\r\n // load data\r\n async function loadDropdownData() {\r\n providerDropdownData = await consentAndSignAjax.getPlanInformedConsentVendors({\r\n token: $.session.Token,\r\n peopleid: selectedConsumer.id,\r\n });\r\n // this is where the DDL gets its data -- people, user permissions, etc tables\r\n ssaDropdownData = await consentAndSignAjax.getPlanInformedConsentSSAs({\r\n token: $.session.Token,\r\n });\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* GLOBAL CONSENT QUESTIONS\r\n //*------------------------------------------------------\r\n //* Change Mind - SSA\r\n function buildChangeMindRadios(csChangeMind) {\r\n //Radio Container\r\n const radioContainer = document.createElement('div');\r\n radioContainer.classList.add('ic_questionRadioContainer');\r\n\r\n //Radios\r\n const yesRadio = input.buildRadio({\r\n id: 'CS_Change_Mind-yes',\r\n text: 'Yes',\r\n name: 'CS_Change_Mind',\r\n isChecked: csChangeMind === 'Y',\r\n isDisabled: readOnly,\r\n });\r\n const noRadio = input.buildRadio({\r\n id: 'CS_Change_Mind-no',\r\n text: 'No',\r\n name: 'CS_Change_Mind',\r\n isChecked: csChangeMind === 'N',\r\n isDisabled: readOnly,\r\n });\r\n\r\n // init required fields\r\n if (csChangeMind === '') {\r\n radioContainer.classList.add('error');\r\n }\r\n\r\n radioContainer.appendChild(yesRadio);\r\n radioContainer.appendChild(noRadio);\r\n\r\n return radioContainer;\r\n }\r\n function buildChangeMindQuestion(data, popup, isSigned) {\r\n // popup === 'member' || 'sign'\r\n\r\n //Question Container\r\n const changeMindQuestion = document.createElement('div');\r\n changeMindQuestion.classList.add('changeMindQuestion');\r\n changeMindQuestion.classList.add('ic_questionContainer');\r\n\r\n //Question Text Element, Will contain dropdown too\r\n const csChangeMindQuestionText = document.createElement('div');\r\n csChangeMindQuestionText.classList.add('changeMindQuestionText');\r\n\r\n //SSA Inline Dropdown\r\n const csChangeMindQuestionDropdown = dropdown.inlineBuild({\r\n dropdownId: 'isp_ic_ssaDropdown',\r\n });\r\n if (readOnly || popup === 'sign' || isSigned) {\r\n csChangeMindQuestionDropdown.classList.add('disabled');\r\n }\r\n // populate\r\n populateDropdownSSA(csChangeMindQuestionDropdown, data.csChangeMindSSAPeopleId);\r\n\r\n // Build Out Question with dropdown\r\n csChangeMindQuestionText.innerHTML = `*I understand that I can change my mind at any time. I just need to let `;\r\n csChangeMindQuestionText.appendChild(csChangeMindQuestionDropdown);\r\n csChangeMindQuestionText.innerHTML += ` know.`;\r\n changeMindQuestion.appendChild(csChangeMindQuestionText);\r\n\r\n // required fields\r\n if (\r\n (data.csChangeMindSSAPeopleId === '' ||\r\n data.csChangeMindSSAPeopleId === '0' ||\r\n data.csChangeMindSSAPeopleId === null) &&\r\n !isSigned\r\n ) {\r\n changeMindQuestion.classList.add('error');\r\n }\r\n\r\n //* IF popup === 'member' DO NOT BUILD RADIOS\r\n if (popup === 'member') return changeMindQuestion;\r\n\r\n changeMindQuestion.classList.add('withRadios');\r\n\r\n const changeMindRadios = buildChangeMindRadios(data.csChangeMind);\r\n\r\n if (readOnly || isSigned) {\r\n changeMindRadios.classList.add('disabled');\r\n }\r\n\r\n changeMindQuestion.appendChild(changeMindRadios);\r\n\r\n return changeMindQuestion;\r\n }\r\n //* Contact/Complaint - Vendor\r\n function buildContactRadios(csContact) {\r\n //Radio Container\r\n const radioWrap = document.createElement('div');\r\n radioWrap.classList.add('ic_questionRadioContainer');\r\n //Radios\r\n const yesRadio = input.buildRadio({\r\n id: 'CS_Contact-yes',\r\n text: 'Yes',\r\n name: 'CS_Contact',\r\n isChecked: csContact === 'Y',\r\n isDisabled: readOnly,\r\n });\r\n const noRadio = input.buildRadio({\r\n id: 'CS_Contact-no',\r\n text: 'No',\r\n name: 'CS_Contact',\r\n isChecked: csContact === 'N',\r\n isDisabled: readOnly,\r\n });\r\n\r\n if (csContact === '') {\r\n radioWrap.classList.add('error');\r\n }\r\n\r\n radioWrap.appendChild(yesRadio);\r\n radioWrap.appendChild(noRadio);\r\n\r\n return radioWrap;\r\n }\r\n function buildContactQuestion(data, popup, isSigned) {\r\n // popup === 'member' || 'sign'\r\n\r\n //Question Container\r\n const contactQuestion = document.createElement('div');\r\n contactQuestion.classList.add('contactQuestion');\r\n\r\n // Inner Wrap for just Dropdown and Radios *for safari\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('ic_questionContainer');\r\n\r\n //Question Text Element, Will contain dropdown too\r\n const contactQuestionText = document.createElement('div');\r\n contactQuestionText.classList.add('contactQuestionText');\r\n\r\n //SSA Inline Dropdown\r\n const csContactQuestionDropdown = dropdown.inlineBuild({\r\n dropdownId: 'isp_ic_vendorContactDropdown',\r\n });\r\n\r\n // populate\r\n populateDropdownVendor(csContactQuestionDropdown, data.csContactProviderVendorId);\r\n\r\n // Build Out Question with dropdown\r\n contactQuestionText.innerHTML = `*I understand I can contact someone at `;\r\n contactQuestionText.appendChild(csContactQuestionDropdown);\r\n contactQuestionText.innerHTML += ' if I want to file a complaint.';\r\n wrap.appendChild(contactQuestionText);\r\n contactQuestion.appendChild(wrap);\r\n\r\n //Contact Input\r\n const contactInputValue = getSSAById(data.ssaId);\r\n const contactInput = input.build({\r\n id: 'CS_Contact_Input',\r\n label: 'Contact',\r\n value: contactInputValue,\r\n readonly: true,\r\n callbackType: 'input',\r\n });\r\n contactInput.classList.add('csContactInput');\r\n contactQuestion.appendChild(contactInput);\r\n\r\n // readyonly / disabled check / required fields\r\n if (readOnly || popup === 'sign' || isSigned) {\r\n //contactQuestion.classList.add('disabled');\r\n contactQuestionText.classList.add('disabled');\r\n csContactQuestionDropdown.classList.add('disabled');\r\n } else {\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n //contactQuestion.classList.add('disabled');\r\n contactQuestionText.classList.add('disabled');\r\n csContactQuestionDropdown.classList.add('disabled');\r\n } else {\r\n if (data.csContactProviderVendorId === '') {\r\n contactQuestionText.classList.add('error');\r\n }\r\n }\r\n }\r\n\r\n if (popup === 'member') return contactQuestion;\r\n\r\n contactQuestion.classList.add('withRadios');\r\n\r\n const radioWrap = buildContactRadios(data.csContact);\r\n if (readOnly || isSigned) {\r\n radioWrap.classList.add('disabled');\r\n }\r\n\r\n wrap.appendChild(radioWrap);\r\n\r\n return contactQuestion;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* TABLE\r\n //*------------------------------------------------------\r\n async function refreshTable() {\r\n const parentNode = teamMemberTable.parentNode;\r\n const oldTable = teamMemberTable;\r\n\r\n PROGRESS__ANYWHERE.init();\r\n PROGRESS__ANYWHERE.SPINNER.show(parentNode, 'Gathering Team Members...');\r\n\r\n teamMemberData = await consentAndSignAjax.getConsentAndSignData({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n if (teamMemberData.length !== 0) {\r\n csSSAPeopleIdGlobal = teamMemberData[0].csChangeMindSSAPeopleId;\r\n csrVendorIdGlobal = teamMemberData[0].csContactProviderVendorId;\r\n csContactInputGlobal = teamMemberData[0].csContactInput;\r\n } else {\r\n csSSAPeopleIdGlobal = $.session.PeopleId;\r\n csrVendorIdGlobal = '';\r\n csContactInputGlobal = '';\r\n }\r\n\r\n PROGRESS__ANYWHERE.SPINNER.hide(parentNode);\r\n\r\n const newTable = buildTeamMemberTable();\r\n parentNode.replaceChild(newTable, oldTable);\r\n teamMemberTable = newTable;\r\n\r\n // after table refresh update planData\r\n planData.refreshDropdownData();\r\n }\r\n function buildTeamMemberTable() {\r\n const isSortable = !$.session.planUpdate || readOnly ? false : true;\r\n names = [];\r\n\r\n const teamMemberTable = table.build({\r\n tableId: 'signaturesTable',\r\n columnHeadings: [\r\n 'Team Member',\r\n //'Relationship Type',\r\n 'Name',\r\n 'Participated',\r\n 'Signature Type',\r\n ],\r\n headline: 'Team Members',\r\n endIcon: true,\r\n secondendIcon: true,\r\n sortable: isSortable,\r\n onSortCallback: res => {\r\n consentAndSignAjax.updateTableRowOrder({\r\n assessmentId: planId,\r\n signatureId: res.row.id.split('-')[1],\r\n newPos: res.newIndex,\r\n });\r\n },\r\n });\r\n\r\n // Set the data type for each header, for sorting purposes\r\n let number = 0;\r\n const headers = teamMemberTable.querySelectorAll('.header div');\r\n if (headers.length > 6)\r\n number = 1;\r\n\r\n headers[0 + number].setAttribute('data-type', 'string'); // Team Member\r\n headers[1 + number].setAttribute('data-type', 'string'); // Name\r\n headers[2 + number].setAttribute('data-type', 'string'); // Participated\r\n headers[3 + number].setAttribute('data-type', 'string'); // Signature Type\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(teamMemberTable);\r\n\r\n\r\n if (teamMemberData) {\r\n const tableData = teamMemberData.map(m => {\r\n let isSigned = m.dateSigned !== '';\r\n const inPersonSignature = m.description;\r\n\r\n const teamMember = m.teamMember;\r\n const relationshipType = m.relationship;\r\n let name = contactInformation.cleanName({\r\n lastName: m.lastName,\r\n firstName: m.name,\r\n middleName: m.middleName,\r\n });\r\n if (m.generation) {\r\n name = name + \" \" + m.generation;\r\n }\r\n const participated = m.participated === '' ? '' : m.participated === 'Y' ? 'Yes' : 'No';\r\n const signatureType = csTeamMember.getSignatureTypeByID(m.signatureType);\r\n\r\n if (signatureType === 'In-Person' && inPersonSignature === '') {\r\n isSigned = false;\r\n }\r\n names.push(name);\r\n\r\n const tableOBJ = {\r\n values: [teamMember, name, participated, signatureType],\r\n id: `sig-${m.signatureId}`,\r\n endIcon: icons.edit,\r\n secondendIcon: icons.delete,\r\n onClick: async e => {\r\n if (m.teamMember.slice(-6) === 'Vendor') {\r\n await csVendor.showPopup({\r\n isNewMember: false,\r\n isReadOnly: readOnly,\r\n memberData: m,\r\n currentTeamMemberData: teamMemberData,\r\n vendorData: vendorData,\r\n clickSource: 'teamGrid',\r\n });\r\n } else {\r\n await csTeamMember.showPopup({\r\n isNewMember: false,\r\n isReadOnly: readOnly,\r\n memberData: m,\r\n });\r\n }\r\n },\r\n };\r\n\r\n tableOBJ.secondendIconCallback = e => {\r\n // deelte row\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to remove this team member?',\r\n accept: {\r\n text: 'Yes',\r\n callback: async () => {\r\n pendingSave.show('Deleting...');\r\n\r\n const res = await consentAndSignAjax.deleteTeamMember({\r\n token: $.session.Token,\r\n signatureId: m.signatureId,\r\n });\r\n\r\n // triggers event listener for one span button\r\n oneSpan.fireDataUpdateEvent(planId);\r\n\r\n if (res === '[]') {\r\n pendingSave.fulfill('Deleted');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n refreshTable();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to delete. Please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n failSave.hide();\r\n }, 1000);\r\n }\r\n },\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {},\r\n },\r\n });\r\n };\r\n\r\n if (signatureType !== 'No Signature Required') {\r\n // set icon callback\r\n tableOBJ.endIconCallback = e => {\r\n csSignature.showPopup({\r\n isNewMember: false,\r\n isReadOnly: readOnly,\r\n memberData: m,\r\n });\r\n };\r\n // set isSigned to true\r\n tableOBJ.attributes = [{ key: 'data-signed', value: isSigned }];\r\n } else {\r\n tableOBJ.attributes = [\r\n { key: 'data-signed', value: true },\r\n { key: 'data-hideicon', value: true },\r\n ];\r\n }\r\n\r\n if (signatureType === 'E-Digital') {\r\n tableOBJ.attributes = [\r\n { key: 'data-signed', value: isSigned },\r\n { key: 'data-hideicon', value: true },\r\n ];\r\n\r\n if (isSigned) {\r\n tableOBJ.attributes.push({\r\n key: 'data-eDigitalSigned',\r\n value: true,\r\n });\r\n }\r\n }\r\n\r\n // hide/show delete icon\r\n if (isSigned || readOnly || !$.session.planUpdate) {\r\n tableOBJ.attributes.push({\r\n key: 'data-hideDeleteicon',\r\n value: true,\r\n });\r\n }\r\n\r\n return tableOBJ;\r\n });\r\n\r\n table.populate(teamMemberTable, tableData, isSortable);\r\n }\r\n\r\n return teamMemberTable;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n function getSectionMarkup() {\r\n // section\r\n const section = document.createElement('div');\r\n section.classList.add('ispSignaturesAndConsent');\r\n // heading\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Signature / Consent';\r\n heading.classList.add('sectionHeading');\r\n heading.style.marginBottom = '6px';\r\n // table\r\n const tableWrap = document.createElement('div');\r\n tableWrap.id = 'ispSignature_tableWrap';\r\n teamMemberTable = buildTeamMemberTable();\r\n\r\n const addMemberBtn = button.build({\r\n id: 'sig_addMember',\r\n text: 'ADD TEAM MEMBER',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n csTeamMember.showPopup({\r\n isNewMember: true,\r\n isReadOnly: readOnly,\r\n memberData: {\r\n teamMember: '',\r\n name: '',\r\n lastName: '',\r\n participated: '',\r\n // sign/disent\r\n signature: '',\r\n signatureType: '',\r\n dissentAreaDisagree: '',\r\n dissentHowToAddress: '',\r\n dateSigned: '',\r\n dissentDate: '',\r\n // consent\r\n csAgreeToPlan: '',\r\n csChangeMind: '',\r\n csChangeMindSSAPeopleId: csSSAPeopleIdGlobal,\r\n csContact: '',\r\n csContactInput: csContactInputGlobal,\r\n csContactProviderVendorId: csrVendorIdGlobal,\r\n csDueProcess: '',\r\n csFCOPExplained: '',\r\n csResidentialOptions: '',\r\n csRightsReviewed: '',\r\n csSupportsHealthNeeds: '',\r\n csTechnology: '',\r\n // new\r\n contactId: '',\r\n peopleId: '',\r\n buildingNumber: '',\r\n dateOfBirth: '',\r\n planYearStart: '',\r\n planYearEnd: '',\r\n },\r\n currentTeamMemberData: teamMemberData,\r\n });\r\n },\r\n });\r\n\r\n const addVendorBtn = button.build({\r\n id: 'sig_addVendor',\r\n text: 'ADD VENDOR',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n csVendor.showPopup({\r\n isNewMember: true,\r\n isReadOnly: readOnly,\r\n memberData: {\r\n teamMember: '',\r\n name: '',\r\n lastName: '',\r\n participated: '',\r\n // sign/disent\r\n signature: '',\r\n signatureType: '',\r\n dissentAreaDisagree: '',\r\n dissentHowToAddress: '',\r\n dateSigned: '',\r\n dissentDate: '',\r\n // consent\r\n csAgreeToPlan: '',\r\n csChangeMind: '',\r\n csChangeMindSSAPeopleId: csSSAPeopleIdGlobal,\r\n csContact: '',\r\n csContactInput: csContactInputGlobal,\r\n csContactProviderVendorId: csrVendorIdGlobal,\r\n csDueProcess: '',\r\n csFCOPExplained: '',\r\n csResidentialOptions: '',\r\n csRightsReviewed: '',\r\n csSupportsHealthNeeds: '',\r\n csTechnology: '',\r\n // new\r\n contactId: '',\r\n peopleId: '',\r\n buildingNumber: '',\r\n dateOfBirth: '',\r\n planYearStart: '',\r\n planYearEnd: '',\r\n },\r\n currentTeamMemberData: teamMemberData,\r\n vendorData: vendorData,\r\n clickSource: 'addVendor',\r\n });\r\n },\r\n });\r\n\r\n function buildReportsScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'reportsScreen';\r\n screen.classList.add('screen');\r\n\r\n const attachmentsWrap = document.createElement('div');\r\n attachmentsWrap.classList.add('attachmentsWrap');\r\n const attachHeading = document.createElement('p');\r\n attachHeading.classList.add('attachmentsHeading');\r\n attachHeading.innerText = `Please select the attachment(s) that should be included with the report.`;\r\n attachmentsWrap.appendChild(attachHeading);\r\n\r\n const planAttWrap = document.createElement('div');\r\n planAttWrap.classList.add('planAttWrap');\r\n const workflowAttWrap = document.createElement('div');\r\n workflowAttWrap.classList.add('workflowAttWrap');\r\n const signatureAttWrap = document.createElement('div');\r\n signatureAttWrap.classList.add('signatureAttWrap');\r\n attachmentsWrap.appendChild(planAttWrap);\r\n attachmentsWrap.appendChild(workflowAttWrap);\r\n attachmentsWrap.appendChild(signatureAttWrap);\r\n\r\n const planHeading = document.createElement('h2');\r\n const workflowHeading = document.createElement('h2');\r\n const signHeading = document.createElement('h2');\r\n planHeading.innerText = 'Plan Attachments';\r\n workflowHeading.innerText = 'Workflow Attachments';\r\n signHeading.innerText = 'Signature Attachments';\r\n planAttWrap.appendChild(planHeading);\r\n workflowAttWrap.appendChild(workflowHeading);\r\n signatureAttWrap.appendChild(signHeading);\r\n\r\n planAttBody = document.createElement('div');\r\n signatureAttBody = document.createElement('div');\r\n workflowAttBody = document.createElement('div');\r\n planAttWrap.appendChild(planAttBody);\r\n signatureAttWrap.appendChild(signatureAttBody);\r\n workflowAttWrap.appendChild(workflowAttBody);\r\n\r\n screen.appendChild(attachmentsWrap);\r\n\r\n return screen;\r\n }\r\n\r\n async function showESignaturesPopup() {\r\n ESignaturesPopup = POPUP.build({\r\n id: 'sendESignaturesPopup',\r\n header: 'Send E-Sign Emails',\r\n });\r\n\r\n const morepopupmenu = document.createElement('div');\r\n morepopupmenu.classList.add('moreMenuPopup__menu', 'visible');\r\n\r\n let include = 'N';\r\n\r\n let reportsScreen = buildReportsScreen();\r\n\r\n teamMemberData;\r\n\r\n const selectedAttachmentsPlan = {};\r\n const selectedAttachmentsWorkflow = {};\r\n const selectedAttachmentsSignature = {};\r\n\r\n // clear out body before each run to prevent dups\r\n planAttBody.innerHTML = '';\r\n workflowAttBody.innerHTML = '';\r\n signatureAttBody.innerHTML = '';\r\n\r\n // Show Attachements\r\n const attachments = await planAjax.getPlanAndWorkFlowAttachments({\r\n token: $.session.Token,\r\n assessmentId: planId, //TODO\r\n });\r\n\r\n let index = 0;\r\n\r\n if (attachments) {\r\n for (const prop in attachments) {\r\n attachments[prop].order = index;\r\n const a = attachments[prop];\r\n const attachment = document.createElement('div');\r\n attachment.classList.add('attachment');\r\n const description = document.createElement('p');\r\n description.innerText = a.description;\r\n attachment.appendChild(description);\r\n\r\n attachment.addEventListener('click', () => {\r\n if (!attachment.classList.contains('selected')) {\r\n attachment.classList.add('selected');\r\n if (a.sigAttachmentId) {\r\n selectedAttachmentsSignature[a.order] = { ...a };\r\n } else if (a.whereFrom === 'Plan') {\r\n selectedAttachmentsPlan[a.order] = { ...a };\r\n } else {\r\n selectedAttachmentsWorkflow[a.order] = { ...a };\r\n }\r\n } else {\r\n attachment.classList.remove('selected');\r\n if (a.sigAttachmentId) {\r\n delete selectedAttachmentsSignature[a.order];\r\n } else if (a.whereFrom === 'Plan') {\r\n delete selectedAttachmentsPlan[a.order];\r\n } else {\r\n delete selectedAttachmentsWorkflow[a.order];\r\n }\r\n }\r\n });\r\n\r\n if (a.sigAttachmentId) {\r\n signatureAttBody.appendChild(attachment);\r\n } else if (a.whereFrom === 'Plan') {\r\n planAttBody.appendChild(attachment);\r\n } else {\r\n workflowAttBody.appendChild(attachment);\r\n }\r\n\r\n index++;\r\n }\r\n }\r\n\r\n // checkbox\r\n includeCheckbox = input.buildCheckbox({\r\n id: 'reportCheckbox',\r\n // className: 'reportCheckbox',\r\n isChecked: include === 'Y' ? true : false,\r\n });\r\n\r\n includeCheckbox.addEventListener('change', event => {\r\n include = event.target.checked ? 'Y' : 'N';\r\n });\r\n\r\n const doneBtn = button.build({\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n // build & show spinner\r\n const spinner = PROGRESS.SPINNER.get('Sending E-Sign Request...');\r\n const screenInner = reportsScreen.querySelector('.attachmentsWrap');\r\n reportsScreen.removeChild(doneBtn);\r\n reportsScreen.removeChild(checkboxArea);\r\n reportsScreen.removeChild(screenInner);\r\n reportsScreen.appendChild(spinner);\r\n // generate report\r\n const planAttachmentIds = plan.getAttachmentIds(selectedAttachmentsPlan);\r\n const wfAttachmentIds = plan.getAttachmentIds(selectedAttachmentsWorkflow);\r\n const sigAttachmentIds = plan.getAttachmentIds(selectedAttachmentsSignature);\r\n\r\n const url = new URL(window.location.href);\r\n const webpageURL = url.origin + url.pathname.substring(0, url.pathname.lastIndexOf('/') + 1);\r\n\r\n const eSignatureTeamMemberData = teamMemberData\r\n .filter(member => member.signatureType === '4' && member.signature === '')\r\n .map(member => ({\r\n peopleId: member.peopleId,\r\n planId: member.planId,\r\n signatureId: member.signatureId,\r\n vendorId: member.vendorId,\r\n webpageURL\r\n }));\r\n\r\n const successfulSend = await _UTIL.fetchData('saveReportAndSendESignEmail',\r\n {\r\n token: $.session.Token,\r\n eSignatureTeamMemberData,\r\n reportData: {\r\n assessmentID: planId,\r\n versionID: '1',\r\n extraSpace: false,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n DODDFlag: 'false',\r\n signatureOnly: false,\r\n include\r\n }\r\n }\r\n );\r\n\r\n // remove spinner\r\n reportsScreen.removeChild(spinner);\r\n reportsScreen.appendChild(screenInner);\r\n reportsScreen.classList.remove('visible');\r\n POPUP.hide(ESignaturesPopup);\r\n\r\n let sendESignaturesEmailPopup = POPUP.build({\r\n id: 'sendESignaturesEmailPopup',\r\n hideX: true\r\n });\r\n \r\n let message;\r\n if (successfulSend.saveReportAndSendESignEmailResult === 'success') {\r\n message = 'All requests for digital signatures have been sent'\r\n } else {\r\n message = 'Something went wrong sending digital signatures. Please try again.'\r\n }\r\n\r\n const messageElement = document.createElement('p');\r\n messageElement.innerText = message;\r\n \r\n //* ACTION BUTTONS\r\n //*----------------------------------\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const closeBtn = button.build({\r\n text: 'Close',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(sendESignaturesEmailPopup);\r\n },\r\n });\r\n \r\n btnWrap.appendChild(closeBtn);\r\n sendESignaturesEmailPopup.appendChild(messageElement);\r\n sendESignaturesEmailPopup.appendChild(btnWrap);\r\n \r\n POPUP.show(sendESignaturesEmailPopup);\r\n },\r\n });\r\n\r\n // add checkbox\r\n const checkboxCheck = document.createElement('div');\r\n checkboxCheck.appendChild(includeCheckbox);\r\n const checkboxText = document.createElement('div');\r\n checkboxText.innerHTML = 'Include Important to, Important For, Skills and Abilities, and Risks in assessment';\r\n const checkboxArea = document.createElement('div');\r\n checkboxArea.classList.add('checkboxWrap');\r\n checkboxArea.appendChild(includeCheckbox);\r\n checkboxArea.appendChild(checkboxText);\r\n reportsScreen.appendChild(checkboxArea);\r\n reportsScreen.appendChild(doneBtn);\r\n\r\n morepopupmenu.appendChild(reportsScreen);\r\n ESignaturesPopup.appendChild(morepopupmenu);\r\n\r\n POPUP.show(ESignaturesPopup);\r\n }\r\n\r\n let sendDocumentToOneSpanBtn;\r\n let requestESignaturesBtn;\r\n if ($.session.oneSpan) {\r\n sendDocumentToOneSpanBtn = oneSpan.buildSendDocumentToOneSpanBtn(planId);\r\n\r\n const planStatus = plan.getPlanStatus();\r\n if (planStatus === 'C') {\r\n sendDocumentToOneSpanBtn.classList.add('disabled');\r\n }\r\n\r\n //initial check for digital signers to remove disabled class from one span button\r\n teamMemberData.forEach(member => {\r\n if (member.signatureType === '1') {\r\n sendDocumentToOneSpanBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n // Checks for any changes in the team members and the signature type\r\n document.addEventListener('data-update', function (event) {\r\n oneSpan.shouldBeDisabled(sendDocumentToOneSpanBtn, event.detail.data);\r\n });\r\n } else {\r\n requestESignaturesBtn = button.build({\r\n id: 'sig_addMember',\r\n text: 'REQUEST E-SIGNATURES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n showESignaturesPopup()\r\n }\r\n });\r\n\r\n // initial check for esignatures btn\r\n const filteredTeamMemberData = teamMemberData.filter(member => member.signatureType === '4' && member.signature === '');\r\n if (filteredTeamMemberData.length === 0) {\r\n requestESignaturesBtn.classList.add('disabled');\r\n }\r\n\r\n // Checks for any changes in the team members and the signature type\r\n document.addEventListener('data-update', function (event) {\r\n oneSpan.shouldBeDisabled(requestESignaturesBtn, event.detail.data, '4');\r\n });\r\n }\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('topOutcomeWrap');\r\n\r\n btnWrap.appendChild(addMemberBtn);\r\n btnWrap.appendChild(addVendorBtn);\r\n\r\n if ($.session.oneSpan) {\r\n btnWrap.appendChild(sendDocumentToOneSpanBtn);\r\n } else {\r\n btnWrap.appendChild(requestESignaturesBtn);\r\n }\r\n\r\n tableWrap.appendChild(btnWrap);\r\n tableWrap.appendChild(teamMemberTable);\r\n\r\n if (readOnly) {\r\n teamMemberTable.classList.add('disableDrag');\r\n addMemberBtn.classList.add('disabled');\r\n addVendorBtn.classList.add('disabled');\r\n if ($.session.oneSpan) {\r\n //\r\n sendDocumentToOneSpanBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n // build it\r\n section.appendChild(heading);\r\n section.appendChild(tableWrap);\r\n\r\n return section;\r\n }\r\n\r\n function doesIdExistInVendors(vendorID) {\r\n const dropdownData = getVendorDropdownData();\r\n let mergedData = [...dropdownData.nonPaidSupport, ...dropdownData.paidSupport];\r\n const filteredValue = mergedData.filter(d => d.value === vendorID);\r\n return filteredValue.length === 0 ? false : true;\r\n }\r\n function invalidContactProviderVendorIdCheck() {\r\n const dropdownData = getVendorDropdownData();\r\n let mergedData = [...dropdownData.nonPaidSupport, ...dropdownData.paidSupport];\r\n\r\n teamMemberData.forEach((member, index) => {\r\n const filteredValue = mergedData.filter(d => d.value === member.csContactProviderVendorId);\r\n if (filteredValue.length === 0) {\r\n teamMemberData[index].csContactProviderVendorId = '';\r\n }\r\n });\r\n }\r\n\r\n async function checkOneSpan() {\r\n // Checks for new signed values or completed documents to retrieve\r\n oneSpanDocumentStatus = await oneSpanAjax.oneSpanCheckDocumentStatus({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n // Retrieves signers values and downloads document if all digital signers have signed\r\n if (oneSpanDocumentStatus[0].signedStatus !== '') {\r\n const oneSpanRetrieveData = {\r\n token: $.session.Token,\r\n packageId: oneSpanDocumentStatus[0].packageId,\r\n assessmentID: planId,\r\n };\r\n\r\n await oneSpanAjax.oneSpanGetSignedDocuments(oneSpanRetrieveData);\r\n }\r\n }\r\n\r\n async function init(data) {\r\n planId = data.planId;\r\n readOnly = data.readOnly;\r\n paidSupportProviders = servicesSupports.getSelectedVendorIds();\r\n effStartDate = planDates.getEffectiveStartDate();\r\n effEndDate = planDates.getEffectiveEndDate();\r\n selectedConsumer = plan.getSelectedConsumer();\r\n\r\n await checkOneSpan();\r\n\r\n teamMemberData = await consentAndSignAjax.getConsentAndSignData({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n vendorData = await consentAndSignAjax.getAllActiveVendors({\r\n token: $.session.Token,\r\n });\r\n\r\n if (teamMemberData && teamMemberData.length !== 0) {\r\n csSSAPeopleIdGlobal = teamMemberData[0].csChangeMindSSAPeopleId;\r\n csrVendorIdGlobal = teamMemberData[0].csContactProviderVendorId;\r\n csContactInputGlobal = teamMemberData[0].csContactInput;\r\n } else {\r\n csSSAPeopleIdGlobal = $.session.PeopleId;\r\n csrVendorIdGlobal = '';\r\n csContactInputGlobal = '';\r\n }\r\n\r\n await loadDropdownData();\r\n\r\n invalidContactProviderVendorIdCheck();\r\n }\r\n\r\n return {\r\n init,\r\n refreshTable,\r\n getMarkup: getSectionMarkup,\r\n insertNewTeamMember,\r\n updateTeamMember,\r\n deleteTeamMember,\r\n buildChangeMindQuestion,\r\n buildContactQuestion,\r\n updateSSADropdownWidth,\r\n updateVendorDropdownWidth,\r\n setSSADropdownInitialWidth,\r\n setVendorDropdownInitialWidth,\r\n getConsentGlobalValues,\r\n planStatusChange,\r\n isTeamMemberConsentable,\r\n isTeamMemberGuardian,\r\n getTeamMembersHowTheyExistOnPlanNowWhileWeWaitOnDamnStateToMakeUpTheirMinds,\r\n getNames,\r\n getTeamMemberData,\r\n doesIdExistInVendors,\r\n };\r\n})();\r\n","const consentAndSignAjax = (() => {\r\n // GET\r\n //-------------------------------------\r\n async function getConsentAndSignData(retrieveData) {\r\n // string token, string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanSignatures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getSignaturesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanInformedConsentSSAs(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanInformedConsentSSAs/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanInformedConsentSSAsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanInformedConsentVendors(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanInformedConsentVendors/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanInformedConsentVendorsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getAllActiveVendors(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAllActiveVendors/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getAllActiveVendorsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function GetSalesForceId(peopleId, teamMemberType) {\r\n // token, signatureId\r\n const retrieveData = {\r\n token: $.session.Token,\r\n consumerId: parseInt(plan.getSelectedConsumer().id),\r\n peopleId: parseInt(peopleId),\r\n teamMemberType\r\n };\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/GetSalesForceId/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.GetSalesForceIdResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getTeamMemberListFromState(retrieveData) {\r\n //peopleId should be an integer in the retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTeamMemberListFromState/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getTeamMemberListFromStateResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getStateGuardiansforConsumer(peopleIdData) {\r\n //cosumerId as a string in retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getStateGuardiansforConsumer/',\r\n data: JSON.stringify(peopleIdData),\r\n //data: '{\"peopleId\":\"' + peopleId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getStateGuardiansforConsumerResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getStateCaseManagerforConsumer(peopleIdData) {\r\n //cosumerId as a string in retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getStateCaseManagerforConsumer/',\r\n data: JSON.stringify(peopleIdData),\r\n //data: '{\"peopleId\":\"' + peopleId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getStateCaseManagerforConsumerResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function assignStateCaseManagertoConsumers(peopleIdData) {\r\n //cosumerId as a string in retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/assignStateCaseManagertoConsumers/',\r\n data: JSON.stringify(peopleIdData),\r\n //data: '{\"peopleId\":\"' + peopleId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.assignStateCaseManagertoConsumersResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getTeamMemberBySalesForceId(retrieveData) {\r\n // string salesForceId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTeamMemberBySalesForceId/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getTeamMemberBySalesForceIdResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getConsumerOrganizationId(retrieveData) {\r\n //peopleId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerOrganizationId/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getConsumerOrganizationIdResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getCaseManagersfromOptionsTable(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCaseManagersfromOptionsTable/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getCaseManagersfromOptionsTableResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getConsumerswithSaleforceIds(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerswithSaleforceIds/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getConsumerswithSaleforceIdsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getLocationswithSalesforceId() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLocationswithSalesforceId/',\r\n data: JSON.stringify({ token: $.session.Token }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getLocationswithSalesforceIdResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // INSERT\r\n //-------------------------------------\r\n async function insertTeamMember(retrieveData) {\r\n //* NO NEED TO REMOVE UNSAVABLE NOTE TEXT, THIS IS DONE IN BACKEND\r\n //*--------------------------------------------------------------------\r\n // token, assessmentId\r\n // teamMember, name, lastName, relationship, participated, parentOfMinor\r\n // signature, dateSigned, dissentAreaDisagree, dissentHowToAddress, dissentDate\r\n // contactId, peopleId, buildingNumber, dateOfBirth, planYearStart, planYearEnd\r\n // csChangeMind, csChangeMindSSAPeopleId, csContact, csContactProviderVendorId, csContactInput\r\n // csRightsReviewed, csAgreeToPlan, csFCOPExplained, csDueProcess, csResidentialOptions, csSupportsHealthNeeds, csTechnology,\r\n // useExisting, relationshipImport, consumerId, createRelationship, isVeendor(bool), email, parentOfMinor\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertTeamMember/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanTeamMemberResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // UPDATE\r\n //-------------------------------------\r\n async function updateTeamMember(retrieveData) {\r\n //! THIS WILL ONLY UPDATE THE FOLLOWING DATA\r\n // token, signatureId, teamMember, name, lastName, relationship, participated,\r\n // dissentAreaDisagree, dissentHowToAddress, dissentDate, signature, contactId, buildingNumber, dateOfBirth, salesForceId, consumerId\r\n //! USE updatePlanConsentStatements() FOR CS DATA\r\n\r\n //moved functionality to C# - MAT\r\n //if (retrieveData.name !== '') {\r\n // retrieveData.name = UTIL.removeUnsavableNoteText(retrieveData.name);\r\n //}\r\n //if (retrieveData.relationship !== '') {\r\n // retrieveData.relationship = UTIL.removeUnsavableNoteText(retrieveData.relationship);\r\n //}\r\n //if (retrieveData.dissentAreaDisagree !== '') {\r\n // retrieveData.dissentAreaDisagree = UTIL.removeUnsavableNoteText(\r\n // retrieveData.dissentAreaDisagree,\r\n // );\r\n //}\r\n //if (retrieveData.dissentHowToAddress !== '') {\r\n // retrieveData.dissentHowToAddress = UTIL.removeUnsavableNoteText(\r\n // retrieveData.dissentHowToAddress,\r\n // );\r\n //}\r\n\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(retrieveData.attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n retrieveData.attachment = abString;\r\n\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanTeamMember/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanTeamMemberResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanConsentStatements(retrieveData) {\r\n /* token, signatureId, csChangeMind, csChangeMindSSAPeopleId, csContact,\r\n csContactProviderVendorId, csContactInput, csRightsReviewed, csAgreeToPlan, \r\n csFCOPExplained, csDueProcess, csResidentialOptions, csSupportsHealthNeeds, csTechnology\r\n */\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanConsentStatements/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanConsentStatementsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateTableRowOrder(retrieveData) {\r\n // assessmentId, signatureId, newPos\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanSignatureOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanSignatureOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // DELETE\r\n //-------------------------------------\r\n async function deleteTeamMember(retrieveData) {\r\n // token, signatureId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanSignature/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanSignatureResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // OTHER\r\n //-------------------------------------\r\n async function setSalesForceIdForTeamMemberUpdate(retrieveData) {\r\n //peopleId and salesForceId both strings\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setSalesForceIdForTeamMemberUpdate/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.setSalesForceIdForTeamMemberUpdateResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function validateConsumerForSalesForceId(retrieveData) {\r\n //cosumerId as a string in retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/validateConsumerForSalesForceId/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.validateConsumerForSalesForceIdResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getConsentAndSignData,\r\n getPlanInformedConsentSSAs,\r\n getPlanInformedConsentVendors,\r\n getTeamMemberBySalesForceId,\r\n getConsumerOrganizationId,\r\n getCaseManagersfromOptionsTable,\r\n getConsumerswithSaleforceIds,\r\n getLocationswithSalesforceId,\r\n updateTeamMember,\r\n updatePlanConsentStatements,\r\n updateTableRowOrder,\r\n insertTeamMember,\r\n deleteTeamMember,\r\n GetSalesForceId,\r\n getTeamMemberListFromState,\r\n setSalesForceIdForTeamMemberUpdate,\r\n validateConsumerForSalesForceId,\r\n getStateGuardiansforConsumer,\r\n getStateCaseManagerforConsumer,\r\n assignStateCaseManagertoConsumers,\r\n getAllActiveVendors,\r\n };\r\n})();\r\n","const csRelationship = (() => {\r\n let selectedRelationship;\r\n let gkRelationships;\r\n // DOM\r\n let teamMemberPopup;\r\n let importPopup;\r\n let existingRelationshipPopup;\r\n let relationshipsWrap;\r\n let doneBtn;\r\n\r\n function buildExistingPopupMessage(selectedMemberData) {\r\n const message = document.createElement('div');\r\n message.classList.add('message');\r\n\r\n const name = contactInformation.cleanName({\r\n firstName: selectedMemberData.name,\r\n lastName: selectedMemberData.lastName,\r\n });\r\n\r\n message.innerHTML = `\r\n

    An existing record was found for this Team Member:

    \r\n

    ${name}

    \r\n

    ${dates.removeTimestamp(selectedMemberData.dateOfBirth)}

    \r\n

    ${selectedMemberData.buildingNumber}

    \r\n

    Would you like to select this existing record?

    \r\n `;\r\n return message;\r\n }\r\n function showExistingPopup(selectedMemberData, callback) {\r\n teamMemberPopup = document.getElementById('sig_mainPopup');\r\n\r\n existingRelationshipPopup = POPUP.build({\r\n id: 'existingRelationshipPopup',\r\n hideX: true,\r\n });\r\n\r\n const message = buildExistingPopupMessage(selectedMemberData);\r\n\r\n //* Action Btns\r\n //*------------------\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n existingRelationshipPopup.style.display = 'none';\r\n teamMemberPopup.style.display = 'block';\r\n callback(true);\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n existingRelationshipPopup.style.display = 'none';\r\n teamMemberPopup.style.display = 'block';\r\n callback(false);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n existingRelationshipPopup.appendChild(message);\r\n existingRelationshipPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(existingRelationshipPopup);\r\n }\r\n function removeDups(data) {\r\n let uniqueArray = Array.from(new Set(data.map(d => `${d.peopleId}|${d.relationship}`))).map(\r\n id => {\r\n let parts = id.split('|');\r\n return data.find(a => a.peopleId === parts[0] && a.relationship === parts[1]);\r\n },\r\n );\r\n\r\n return uniqueArray;\r\n }\r\n const removeExisting = data => {\r\n const teamMembers = planConsentAndSign.getTeamMemberData();\r\n const teamMemberIDs = teamMembers.map(tm => tm.contactId);\r\n return data.filter(el => !teamMemberIDs.includes(el.contactId));\r\n };\r\n\r\n //*------------------------------------------------------\r\n //* MAIN POPUP\r\n //*------------------------------------------------------\r\n function buildPopupMessage() {\r\n const message = document.createElement('p');\r\n message.classList.add('message');\r\n message.innerText = 'Select a name below to import from Relationships.'; //If the person is not in the list, click Add Relationship to add the person to Demographics.';\r\n return message;\r\n }\r\n function buildRelationship(rel) {\r\n const pplID = rel.peopleId;\r\n const salesforceID = rel.salesForceId;\r\n const contactID = rel.contactId;\r\n let name = contactInformation.cleanName({\r\n firstName: rel.firstName,\r\n lastName: rel.lastName.replace('|', ' '),\r\n middleName: rel.middleName,\r\n });\r\n if (rel.generation) {\r\n name = name + \" \" + rel.generation;\r\n }\r\n const dob = dates.removeTimestamp(rel.dateOfBirth);\r\n const adress = `${rel.buildingNumber}`;\r\n let relationshipType = rel.relationship ? rel.relationship : '';\r\n if (relationshipType === 'Self') relationshipType = 'Person Supported';\r\n\r\n const relationshipDiv = document.createElement('div');\r\n relationshipDiv.classList.add('relationship');\r\n\r\n const nameEle = document.createElement('p');\r\n nameEle.innerText = `Name: ${name}`;\r\n if (!name) nameEle.classList.add('error');\r\n\r\n const dobEle = document.createElement('p');\r\n dobEle.innerText = `Date of Birth: ${dob}`;\r\n\r\n const addressEle = document.createElement('p');\r\n addressEle.innerText = `Address: ${adress}`;\r\n\r\n const relationshipTypeEle = document.createElement('p');\r\n relationshipTypeEle.innerText = `Relationship Type: ${relationshipType}`;\r\n\r\n relationshipDiv.appendChild(nameEle);\r\n relationshipDiv.appendChild(dobEle);\r\n relationshipDiv.appendChild(addressEle);\r\n relationshipDiv.appendChild(relationshipTypeEle);\r\n\r\n relationshipDiv.addEventListener('click', e => {\r\n if (!name) {\r\n return;\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n // apply relationsip to team member\r\n const currSelected = relationshipsWrap.querySelector('.selected');\r\n if (currSelected) currSelected.classList.remove('selected');\r\n relationshipDiv.classList.add('selected');\r\n\r\n selectedRelationship = rel;\r\n });\r\n\r\n return relationshipDiv;\r\n }\r\n function showMainPopup() {\r\n gkRelationships = planData.getDropdownData().relationshipsWithDups;\r\n gkRelationships = removeDups(removeExisting(gkRelationships));\r\n teamMemberPopup = document.getElementById('sig_mainPopup');\r\n\r\n importPopup = POPUP.build({\r\n id: 'importRelationshipPopup',\r\n hideX: true,\r\n });\r\n\r\n const message = buildPopupMessage();\r\n\r\n //* Relationships\r\n //*------------------\r\n relationshipsWrap = document.createElement('div');\r\n relationshipsWrap.classList.add('relationshipsWrap');\r\n\r\n let teamMembers = planConsentAndSign.getTeamMemberData();\r\n if (!teamMembers) teamMembers = [];\r\n\r\n gkRelationships.sort((a, b) => {\r\n return `${a.firstName} ${a.lastName}` > `${b.firstName} ${b.lastName}` ? 1 : -1;\r\n });\r\n gkRelationships.forEach(rel => {\r\n if (teamMembers.length !== 0) {\r\n const filteredMember = teamMembers.filter(tm => tm.peopleId === rel.peopleId);\r\n if (filteredMember.length >= 1) return;\r\n }\r\n\r\n const relationship = buildRelationship(rel);\r\n relationshipsWrap.appendChild(relationship);\r\n });\r\n\r\n //* Action Btns\r\n //*------------------\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n doneBtn = button.build({\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n POPUP.hide(importPopup);\r\n overlay.show();\r\n teamMemberPopup.style.display = 'block';\r\n csTeamMember.applySelectedRelationship(selectedRelationship);\r\n },\r\n });\r\n doneBtn.classList.add('disabled');\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(importPopup);\r\n overlay.show();\r\n teamMemberPopup.style.display = 'block';\r\n },\r\n });\r\n\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n importPopup.appendChild(message);\r\n importPopup.appendChild(relationshipsWrap);\r\n importPopup.appendChild(btnWrap);\r\n\r\n teamMemberPopup.style.display = 'none';\r\n POPUP.show(importPopup);\r\n }\r\n\r\n return {\r\n showMainPopup,\r\n showExistingPopup,\r\n };\r\n})();\r\n","const csSalesforce = (() => {\r\n let salesforceRelationships;\r\n let selectedSalesforce;\r\n // DOM\r\n let teamMemberPopup;\r\n let importPopup;\r\n let salesforceWrap;\r\n\r\n function buildPopupMessage() {\r\n const message = document.createElement('p');\r\n message.classList.add('message');\r\n message.innerText =\r\n 'Select the name below from the OhioISP system that matches this Team Member';\r\n return message;\r\n }\r\n function buildRelationship(rel) {\r\n const name = contactInformation.cleanName({\r\n firstName: rel.FirstName,\r\n lastName: rel.LastName,\r\n });\r\n const relType = rel.Role;\r\n\r\n const relationshipDiv = document.createElement('div');\r\n relationshipDiv.classList.add('relationship');\r\n\r\n const nameEle = document.createElement('p');\r\n nameEle.innerText = `Name: ${name}`;\r\n if (!name) nameEle.classList.add('error');\r\n\r\n const relationshipEle = document.createElement('p');\r\n relationshipEle.innerText = `Relationship: ${relType}`;\r\n\r\n relationshipDiv.appendChild(nameEle);\r\n relationshipDiv.appendChild(relationshipEle);\r\n\r\n relationshipDiv.addEventListener('click', e => {\r\n if (!name) return;\r\n // apply relationsip to team member\r\n const currSelected = salesforceWrap.querySelector('.selected');\r\n if (currSelected) currSelected.classList.remove('selected');\r\n relationshipDiv.classList.add('selected');\r\n\r\n selectedSalesforce = rel;\r\n });\r\n\r\n return relationshipDiv;\r\n }\r\n\r\n async function showPopup() {\r\n const selectedConsumer = plan.getSelectedConsumer();\r\n salesforceRelationships = await consentAndSignAjax.getTeamMemberListFromState({\r\n peopleId: parseInt(selectedConsumer.id),\r\n });\r\n\r\n teamMemberPopup = document.getElementById('sig_mainPopup');\r\n\r\n importPopup = POPUP.build({\r\n id: 'importSalesforcePopup',\r\n closeCallback: () => {\r\n overlay.show();\r\n teamMemberPopup.style.display = 'block';\r\n },\r\n });\r\n\r\n const message = buildPopupMessage();\r\n\r\n //* Relationships\r\n //*------------------\r\n salesforceWrap = document.createElement('div');\r\n salesforceWrap.classList.add('salesforceSection');\r\n\r\n if (salesforceRelationships) {\r\n salesforceRelationships.forEach(rel => {\r\n const relationship = buildRelationship(rel);\r\n salesforceWrap.appendChild(relationship);\r\n });\r\n }\r\n\r\n //* ACTION BUTTONS\r\n //*----------------------------------\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const doneBtn = button.build({\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(importPopup);\r\n POPUP.hide(teamMemberPopup);\r\n csTeamMember.linkToSalesForce(selectedSalesforce.Id);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(importPopup);\r\n POPUP.hide(teamMemberPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n importPopup.appendChild(message);\r\n importPopup.appendChild(salesforceWrap);\r\n importPopup.appendChild(btnWrap);\r\n\r\n teamMemberPopup.style.display = 'none';\r\n POPUP.show(importPopup);\r\n }\r\n\r\n return {\r\n showPopup,\r\n };\r\n})();\r\n","const csSignature = (() => {\r\n let selectedMemberData;\r\n let isNew;\r\n let isSigned;\r\n let readOnly;\r\n let showConsentStatments;\r\n let signatureType;\r\n // dom\r\n let signaturePopup;\r\n let signatureSection;\r\n let changeMindQ;\r\n let complaintQ;\r\n let dissentAreaDisagree;\r\n let dissentHowToAddress;\r\n let standardQuestions; // these are all the radio questions\r\n let sigPad;\r\n let sigBody;\r\n let sigCanvas;\r\n let saveBtn;\r\n // other\r\n let allowSignClear;\r\n let clearSignature = false;\r\n let characterLimits;\r\n let prevDissentData = {};\r\n\r\n //*------------------------------------------------------\r\n //* UTIL\r\n //*------------------------------------------------------\r\n function checkSignautrePopupForErrors() {\r\n const errors = signaturePopup.querySelectorAll('.error');\r\n\r\n if (errors.length > 0) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n function parseSignatureData() {\r\n if (sigPad === undefined) {\r\n return '';\r\n }\r\n const dataUrl = sigPad.toDataURL();\r\n const signatureDataUrl = dataUrl.replace('data:image/png;base64,', '');\r\n if (sigPad.isEmpty()) return '';\r\n return signatureDataUrl;\r\n }\r\n async function saveFromSignature(sigPadData) {\r\n let insertSuccess;\r\n\r\n pendingSave.show('Saving...');\r\n\r\n if (sigPadData === emptySignatureDataURL || sigPadData === '') {\r\n sigPadData = '';\r\n } else {\r\n selectedMemberData.signature = sigPadData;\r\n }\r\n\r\n if (isNew) {\r\n insertSuccess = await planConsentAndSign.insertNewTeamMember(selectedMemberData);\r\n } else {\r\n selectedMemberData.dateSigned = UTIL.formatDateToIso(\r\n dates.removeTimestamp(selectedMemberData.dateSigned),\r\n );\r\n await planConsentAndSign.updateTeamMember(selectedMemberData);\r\n insertSuccess = true;\r\n }\r\n\r\n if (insertSuccess) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(signaturePopup);\r\n planConsentAndSign.refreshTable();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(insertSuccess);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n document.getElementById('sig_signPopup').style.removeProperty('display');\r\n }, 2000);\r\n }\r\n }\r\n function showWarningPopup(sigPadData) {\r\n UTIL.warningPopup({\r\n message:\r\n 'Once the ISP signature is submitted you will not be able to change it. Do you want to proceed?',\r\n hideX: true,\r\n accept: {\r\n text: 'Yes',\r\n callback: () => saveFromSignature(sigPadData),\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n overlay.show();\r\n signaturePopup.style.removeProperty('display');\r\n },\r\n },\r\n });\r\n }\r\n function checkForAllowClearSignature() {\r\n if (!isSigned) return false;\r\n\r\n const planStatus = plan.getPlanStatus();\r\n const activePlan = plan.getPlanActiveStatus();\r\n\r\n if ($.session.planClearSignature && planStatus === 'D' && activePlan === true) {\r\n if ($.session.oneSpan && signatureType === '1') {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n function clearInputsOnSignatureClear() {\r\n const dissentAreaInput = dissentAreaDisagree.querySelector('.input-field__input');\r\n const dissentHowToInput = dissentHowToAddress.querySelector('.input-field__input');\r\n dissentAreaInput.value = '';\r\n dissentHowToInput.value = '';\r\n dissentAreaInput.style.pointerEvents = 'all';\r\n dissentHowToInput.style.pointerEvents = 'all';\r\n dissentAreaInput.removeAttribute('readonly');\r\n dissentHowToInput.removeAttribute('readonly');\r\n dissentAreaDisagree.classList.remove('disabled');\r\n dissentHowToAddress.classList.remove('disabled');\r\n\r\n if (signatureType === '1') {\r\n const allRadios = [...signaturePopup.querySelectorAll('.ic_questionRadioContainer')];\r\n\r\n // if this works remove below for each's\r\n allRadios.forEach(radio => {\r\n radio.classList.remove('disabled');\r\n radio.classList.add('error');\r\n const radios = [...radio.querySelectorAll('.radio')];\r\n radios.forEach(radio => {\r\n const input = radio.querySelector('input');\r\n input.checked = false;\r\n });\r\n });\r\n }\r\n\r\n const prompt = document.createElement('p');\r\n prompt.innerText = `By checking the boxes below, I agree that this plan reflects actions, services, and supports as requested by the person listed. As a provider, I agree to the services listed in this plan for which I am named a responsible party. I understand that I may revoke my consent at any time verbally or in writing in accordance with DODD rules.`;\r\n prompt.style.marginBottom = '14px';\r\n signaturePopup.insertBefore(prompt, signatureSection);\r\n\r\n checkSignautrePopupForErrors();\r\n }\r\n function clearMemberDataOnClear() {\r\n isSigned = false;\r\n\r\n selectedMemberData.attachmentId = '';\r\n selectedMemberData.dateSigned = '';\r\n selectedMemberData.description = '';\r\n selectedMemberData.csChangeMind = '';\r\n selectedMemberData.csContact = '';\r\n selectedMemberData.csSupportsHealthNeeds = '';\r\n selectedMemberData.csRightsReviewed = '';\r\n selectedMemberData.csAgreeToPlan = '';\r\n selectedMemberData.csTechnology = '';\r\n selectedMemberData.csFCOPExplained = '';\r\n selectedMemberData.csDueProcess = '';\r\n selectedMemberData.csResidentialOptions = '';\r\n selectedMemberData.dissentAreaDisagree = '';\r\n selectedMemberData.dissentHowToAddress = '';\r\n }\r\n function resizeSigCanvas(sigWrap) {\r\n //

    Signature

    \r\n //
    \r\n //
    \r\n // \r\n //
    \r\n //
    \r\n // \"\r\n\r\n const sigBody = sigWrap.querySelector('.signature-pad--body');\r\n const sigCanvas = sigWrap.querySelector('.ispCanvas');\r\n\r\n if (!sigBody || !sigCanvas) return;\r\n\r\n sigCanvas.width = sigBody.offsetWidth;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* MARKUP\r\n //*------------------------------------------------------\r\n\r\n function showClearConfirmationPopup() {\r\n const confirmPop = POPUP.build({\r\n id: 'clearSignConfirmPopup',\r\n hideX: true,\r\n });\r\n const message = document.createElement('p');\r\n message.innerText = `Are you sure you would like to remove this signature and any associated consent and dissenting opinions? This cannot be undone.`;\r\n\r\n const yesBtn = button.build({\r\n text: 'yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n yesBtn.classList.add('disabled');\r\n const planId = plan.getCurrentPlanId();\r\n const attachmentId = selectedMemberData.attachmentId;\r\n clearSignature = true;\r\n clearMemberDataOnClear();\r\n clearInputsOnSignatureClear();\r\n const updatedSignatureSection = buildSignatureSection();\r\n signaturePopup.replaceChild(updatedSignatureSection, signatureSection);\r\n signatureSection = updatedSignatureSection;\r\n resizeSigCanvas(updatedSignatureSection);\r\n await planConsentAndSign.updateTeamMember(selectedMemberData, clearSignature);\r\n if (signatureType === '2') {\r\n planAjax.deletePlanAttachment(planId, attachmentId);\r\n }\r\n yesBtn.classList.remove('disabled');\r\n DOM.ACTIONCENTER.removeChild(confirmPop);\r\n planConsentAndSign.refreshTable();\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'no',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n DOM.ACTIONCENTER.removeChild(confirmPop);\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n confirmPop.appendChild(message);\r\n confirmPop.appendChild(btnWrap);\r\n\r\n POPUP.show(confirmPop);\r\n }\r\n function buildSignatureSection() {\r\n const signatureWrap = document.createElement('div');\r\n signatureWrap.classList.add('signatureWrap');\r\n const signatureTitle = document.createElement('h3');\r\n signatureTitle.classList.add('h3Title');\r\n signatureTitle.innerText = 'Signature';\r\n signatureWrap.appendChild(signatureTitle);\r\n\r\n if (selectedMemberData.description) {\r\n const innerWrap = document.createElement('div');\r\n innerWrap.classList.add('innerWrap');\r\n\r\n const attachmentDesc = document.createElement('p');\r\n attachmentDesc.innerText = selectedMemberData.description;\r\n attachmentDesc.classList.add('signAttachmentDesc');\r\n\r\n attachmentDesc.addEventListener('click', () => {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewPlanAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', selectedMemberData.attachmentId);\r\n attachmentInput.id = 'attachmentId';\r\n var sectionInput = document.createElement('input');\r\n sectionInput.setAttribute('name', 'section');\r\n sectionInput.setAttribute('value', 'junk');\r\n sectionInput.id = 'section';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.appendChild(sectionInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n form.remove();\r\n });\r\n innerWrap.appendChild(attachmentDesc);\r\n\r\n // signature date\r\n let signDate = UTIL.formatDateToIso(dates.removeTimestamp(selectedMemberData.dateSigned));\r\n const date = input.build({\r\n type: 'date',\r\n label: 'Signature Date',\r\n style: 'secondary',\r\n value: signDate,\r\n classNames: 'disabled',\r\n });\r\n if (\r\n selectedMemberData.signatureType === 'In-Person' ||\r\n selectedMemberData.signatureType === '2'\r\n ) {\r\n innerWrap.appendChild(date);\r\n }\r\n\r\n signatureWrap.appendChild(innerWrap);\r\n return signatureWrap;\r\n } else if (\r\n selectedMemberData.signatureType === 'In-Person' ||\r\n selectedMemberData.signatureType === '2'\r\n ) {\r\n selectedMemberData.hasWetSignature = false;\r\n\r\n const innerWrap = document.createElement('div');\r\n innerWrap.classList.add('innerWrap');\r\n\r\n // signature attachment\r\n const attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.classList.add('input-field__input', 'attachmentInput');\r\n attachmentInput.addEventListener('change', async e => {\r\n const attPromise = new Promise(resolve => {\r\n const target = e.target;\r\n const file = target.files.item(0);\r\n const fileName = file.name;\r\n const fileType = fileName.split('.').pop();\r\n\r\n selectedMemberData.description = fileName;\r\n selectedMemberData.attachmentType = fileType;\r\n selectedMemberData.hasWetSignature = true;\r\n\r\n new Response(file).arrayBuffer().then(res => {\r\n selectedMemberData.attachment = res;\r\n resolve();\r\n });\r\n });\r\n\r\n await Promise.all([attPromise]);\r\n });\r\n\r\n // signature date\r\n let signDate = selectedMemberData.dateSigned\r\n ? UTIL.formatDateToIso(dates.removeTimestamp(selectedMemberData.dateSigned))\r\n : null;\r\n const date = input.build({\r\n type: 'date',\r\n label: '*Signature Date',\r\n style: 'secondary',\r\n value: signDate ? signDate : '',\r\n callback: e => {\r\n selectedMemberData.dateSigned = e.target.value;\r\n\r\n if (!selectedMemberData.dateSigned) {\r\n date.classList.add('error');\r\n if (signDate) {\r\n date.classList.remove('error');\r\n }\r\n } else {\r\n date.classList.remove('error');\r\n }\r\n\r\n checkSignautrePopupForErrors();\r\n },\r\n });\r\n\r\n if (!signDate) {\r\n date.classList.add('error');\r\n }\r\n\r\n innerWrap.appendChild(attachmentInput);\r\n innerWrap.appendChild(date);\r\n\r\n signatureWrap.appendChild(innerWrap);\r\n\r\n return signatureWrap;\r\n } else {\r\n selectedMemberData.description = '';\r\n selectedMemberData.attachmentType = '';\r\n selectedMemberData.hasWetSignature = false;\r\n selectedMemberData.attachment = '';\r\n }\r\n\r\n const sigDiv = document.createElement('div');\r\n sigDiv.classList.add('signature-pad');\r\n\r\n sigBody = document.createElement('div');\r\n sigBody.classList.add('signature-pad--body');\r\n sigDiv.appendChild(sigBody);\r\n\r\n if (readOnly) {\r\n sigBody.classList.add('disabled');\r\n }\r\n\r\n if (!isSigned) {\r\n sigCanvas = document.createElement('canvas');\r\n sigCanvas.classList.add('ispCanvas');\r\n sigBody.appendChild(sigCanvas);\r\n sigPad = new SignaturePad(sigCanvas);\r\n } else {\r\n const sigImage = document.createElement('img');\r\n sigImage.src = selectedMemberData.signature;\r\n sigImage.addEventListener('contextmenu', event => {\r\n event.preventDefault();\r\n return false;\r\n });\r\n sigImage.addEventListener('mousedown', event => {\r\n event.preventDefault();\r\n return false;\r\n });\r\n sigImage.style.pointerEvents = 'none';\r\n sigBody.appendChild(sigImage);\r\n }\r\n\r\n // this clear signature button is only for the sig pad canvas\r\n const clearSignatureBtn = button.build({\r\n id: '',\r\n text: 'clear',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n sigPad.clear();\r\n },\r\n });\r\n\r\n signatureWrap.appendChild(sigDiv);\r\n if (!isSigned && !readOnly) {\r\n signatureWrap.appendChild(clearSignatureBtn);\r\n }\r\n\r\n return signatureWrap;\r\n }\r\n function buildDissentSection() {\r\n const dissentWrap = document.createElement('div');\r\n dissentWrap.classList.add('dissentWrap');\r\n const dissentTitle = document.createElement('h3');\r\n dissentTitle.classList.add('h3Title');\r\n dissentTitle.innerText = 'Dissenting Opinion';\r\n // questions\r\n dissentAreaDisagree = input.build({\r\n label: 'Area Team Member Disagrees',\r\n value: selectedMemberData.dissentAreaDisagree,\r\n type: 'textarea',\r\n readonly: isSigned || readOnly,\r\n classNames: 'autosize',\r\n charLimit: characterLimits.dissentAreaDisagree,\r\n forceCharLimit: true,\r\n callback: event => {\r\n selectedMemberData.dissentAreaDisagree = event.target.value;\r\n },\r\n });\r\n dissentHowToAddress = input.build({\r\n label: 'How to Address',\r\n value: selectedMemberData.dissentHowToAddress,\r\n type: 'textarea',\r\n readonly: isSigned || readOnly,\r\n classNames: 'autosize',\r\n charLimit: characterLimits.dissentHowToAddress,\r\n forceCharLimit: true,\r\n callback: event => {\r\n selectedMemberData.dissentHowToAddress = event.target.value;\r\n },\r\n });\r\n dissentWrap.appendChild(dissentTitle);\r\n dissentWrap.appendChild(dissentAreaDisagree);\r\n dissentWrap.appendChild(dissentHowToAddress);\r\n\r\n if (isSigned || readOnly) {\r\n dissentAreaDisagree.classList.add('disabled');\r\n dissentHowToAddress.classList.add('disabled');\r\n }\r\n\r\n return dissentWrap;\r\n }\r\n function buildStandardQuestionSet() {\r\n const standardQuestions = [\r\n {\r\n id: 'csSupportsHealthNeeds',\r\n text: '*I agree this plan contains supports to meet my health and welfare needs.',\r\n options: ['Yes', 'No'],\r\n defaultVal: selectedMemberData.csSupportsHealthNeeds,\r\n },\r\n {\r\n id: 'csRightsReviewed',\r\n text: '*Individual rights have been reviewed with me.',\r\n options: ['Yes', 'No'],\r\n defaultVal: selectedMemberData.csRightsReviewed,\r\n },\r\n {\r\n id: 'csAgreeToPlan',\r\n text: '*I understand the purpose, benefits, and potential risks. I agree and consent to this entire plan.',\r\n options: ['Yes', 'No'],\r\n defaultVal: selectedMemberData.csAgreeToPlan,\r\n },\r\n {\r\n id: 'csTechnology',\r\n text: '*Technology solutions have been explored with my team and me.',\r\n options: ['Yes', 'No'],\r\n defaultVal: selectedMemberData.csTechnology,\r\n },\r\n {\r\n id: 'csFCOPExplained',\r\n text: '*Free Choice Of Provider has been explained to me.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: selectedMemberData.csFCOPExplained,\r\n },\r\n {\r\n id: 'csDueProcess',\r\n text: '*I have been given my due process rights.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: selectedMemberData.csDueProcess,\r\n },\r\n {\r\n id: 'csResidentialOptions',\r\n text: '*I have been given information on residential options.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: selectedMemberData.csResidentialOptions,\r\n },\r\n ];\r\n\r\n const standardQuestionsWrap = document.createElement('div');\r\n standardQuestionsWrap.classList.add('standardQuestionsWrap');\r\n\r\n standardQuestions.forEach(question => {\r\n const questionContainer = document.createElement('div');\r\n questionContainer.classList.add('ic_questionContainer');\r\n const questionText = document.createElement('p');\r\n questionText.classList.add('standardQuestionText');\r\n questionText.innerText = question.text;\r\n\r\n const questionRadioContainer = document.createElement('div');\r\n questionRadioContainer.classList.add('ic_questionRadioContainer');\r\n if (readOnly || isSigned) {\r\n questionRadioContainer.classList.add('disabled');\r\n }\r\n\r\n if (question.defaultVal === '') {\r\n questionRadioContainer.classList.add('error');\r\n }\r\n\r\n question.options.forEach(option => {\r\n let checked;\r\n switch (question.defaultVal) {\r\n case 'Y':\r\n if (option === 'Yes') {\r\n checked = true;\r\n } else checked = false;\r\n break;\r\n case 'N':\r\n if (option === 'No') {\r\n checked = true;\r\n } else checked = false;\r\n break;\r\n case 'NA':\r\n if (option === 'N/A') {\r\n checked = true;\r\n } else checked = false;\r\n break;\r\n default:\r\n checked = false;\r\n break;\r\n }\r\n const radio = input.buildRadio({\r\n id: `${question.id}-${option}`,\r\n text: option,\r\n name: question.id,\r\n isChecked: checked,\r\n isDisabled: this.readOnly,\r\n callback: () => {\r\n let dbVal;\r\n switch (option) {\r\n case 'Yes':\r\n dbVal = 'Y';\r\n break;\r\n case 'No':\r\n dbVal = 'N';\r\n break;\r\n case 'N/A':\r\n dbVal = 'NA';\r\n break;\r\n default:\r\n dbVal = '';\r\n break;\r\n }\r\n questionRadioContainer.classList.remove('error');\r\n checkSignautrePopupForErrors();\r\n selectedMemberData[question.id] = dbVal;\r\n },\r\n });\r\n questionRadioContainer.appendChild(radio);\r\n });\r\n\r\n questionContainer.appendChild(questionText);\r\n questionContainer.appendChild(questionRadioContainer);\r\n\r\n standardQuestionsWrap.appendChild(questionContainer);\r\n });\r\n\r\n return standardQuestionsWrap;\r\n }\r\n function getChangeMindMarkup() {\r\n // get markup\r\n const changeMindQuestion = planConsentAndSign.buildChangeMindQuestion(\r\n {\r\n csChangeMindSSAPeopleId: selectedMemberData.csChangeMindSSAPeopleId,\r\n csChangeMind: selectedMemberData.csChangeMind,\r\n },\r\n 'sign',\r\n isSigned,\r\n );\r\n\r\n // set event\r\n changeMindQuestion.addEventListener('change', event => {\r\n const target = event.target;\r\n const targetId = target.id;\r\n\r\n if (targetId === 'CS_Change_Mind-yes' || targetId === 'CS_Change_Mind-no') {\r\n selectedMemberData.csChangeMind = targetId === 'CS_Change_Mind-yes' ? 'Y' : 'N';\r\n target.parentNode.parentNode.classList.remove('error');\r\n }\r\n\r\n checkSignautrePopupForErrors();\r\n });\r\n\r\n // set default bc populatedropdown won't\r\n const select = changeMindQuestion.querySelector('select');\r\n select.value = selectedMemberData.csChangeMindSSAPeopleId;\r\n\r\n return changeMindQuestion;\r\n }\r\n function getContactMarkup() {\r\n // get markup\r\n const contactQuestion = planConsentAndSign.buildContactQuestion(\r\n {\r\n csContactProviderVendorId: selectedMemberData.csContactProviderVendorId,\r\n csContactInput: selectedMemberData.csContactInput,\r\n csContact: selectedMemberData.csContact,\r\n ssaId: selectedMemberData.csChangeMindSSAPeopleId,\r\n },\r\n 'sign',\r\n isSigned,\r\n );\r\n\r\n // set event\r\n contactQuestion.addEventListener('change', event => {\r\n const target = event.target;\r\n const targetId = target.id;\r\n\r\n if (targetId === 'CS_Contact-yes' || targetId === 'CS_Contact-no') {\r\n selectedMemberData.csContact = targetId === 'CS_Contact-yes' ? 'Y' : 'N';\r\n target.parentNode.parentNode.classList.remove('error');\r\n }\r\n\r\n checkSignautrePopupForErrors();\r\n });\r\n\r\n // set default bc populatedropdown won't\r\n const select = contactQuestion.querySelector('select');\r\n select.value = selectedMemberData.csContactProviderVendorId;\r\n\r\n return contactQuestion;\r\n }\r\n function buildConsentSection() {\r\n const consentWrap = document.createElement('div');\r\n consentWrap.classList.add('consentWrap');\r\n\r\n const consentHeader = document.createElement('h3');\r\n consentHeader.classList.add('h3Title');\r\n consentHeader.innerText = 'Consent Statements';\r\n consentWrap.appendChild(consentHeader);\r\n\r\n standardQuestions = buildStandardQuestionSet();\r\n\r\n if (showConsentStatments) {\r\n changeMindQ = getChangeMindMarkup();\r\n complaintQ = getContactMarkup();\r\n consentWrap.appendChild(changeMindQ);\r\n consentWrap.appendChild(complaintQ);\r\n }\r\n\r\n consentWrap.appendChild(standardQuestions);\r\n\r\n return consentWrap;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n function showPopup({ isNewMember, isReadOnly, memberData }) {\r\n isNew = isNewMember;\r\n const prevDateSigned = memberData.dateSigned;\r\n isSigned = memberData.dateSigned !== '';\r\n clearSignature = false;\r\n signatureType = memberData.signatureType;\r\n\r\n if (memberData.signatureType === '2' && memberData.description === '') {\r\n isSigned = false;\r\n }\r\n readOnly = isReadOnly;\r\n selectedMemberData = memberData;\r\n prevDissentData = {\r\n dissentHowToAddress: selectedMemberData.dissentHowToAddress,\r\n dissentAreaDisagree: selectedMemberData.dissentAreaDisagree,\r\n };\r\n showConsentStatments = planConsentAndSign.isTeamMemberConsentable(memberData.teamMember);\r\n characterLimits = planData.getISPCharacterLimits('consentAndSign');\r\n\r\n //*--------------------------------------\r\n //* POPUP\r\n //*--------------------------------------\r\n signaturePopup = POPUP.build({\r\n id: 'sig_signPopup',\r\n hideX: true,\r\n });\r\n\r\n //* PROMPT\r\n //*------------------------------\r\n const prompt = document.createElement('p');\r\n prompt.innerText = `By checking the boxes below, I agree that this plan reflects actions, services, and supports as requested by the person listed. As a provider, I agree to the services listed in this plan for which I am named a responsible party. I understand that I may revoke my consent at any time verbally or in writing in accordance with DODD rules.`;\r\n prompt.style.marginBottom = '14px';\r\n\r\n //* SIGNATURE\r\n signatureSection = buildSignatureSection();\r\n\r\n //* DISSENT\r\n const dissentSection = buildDissentSection();\r\n\r\n //* CONSENT\r\n const consentSection = buildConsentSection();\r\n\r\n //* SAVE/CANCEL BUTTONS\r\n //*------------------------------\r\n allowSignClear = checkForAllowClearSignature(memberData.signatureType);\r\n const clearSignatureBtn = button.build({\r\n id: 'clearSigBtn',\r\n text: 'clear',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n clearSignatureBtn.classList.add('disabled');\r\n signaturePopup.classList.add('fadeInside');\r\n showClearConfirmationPopup();\r\n clearSignatureBtn.classList.remove('disabled');\r\n signaturePopup.classList.remove('fadeInside');\r\n },\r\n });\r\n saveBtn = button.build({\r\n id: 'saveSigBtn',\r\n text: allowSignClear ? 'update' : 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n let sigPadData = parseSignatureData();\r\n signaturePopup.style.display = 'none';\r\n\r\n if (\r\n selectedMemberData.signatureType === 'In-Person' ||\r\n selectedMemberData.signatureType === '2'\r\n ) {\r\n if (!selectedMemberData.description || selectedMemberData.description === '') {\r\n saveFromSignature();\r\n } else {\r\n showWarningPopup();\r\n }\r\n } else {\r\n if (sigPadData === emptySignatureDataURL || sigPadData === '') {\r\n saveFromSignature();\r\n } else {\r\n showWarningPopup(sigPadData);\r\n }\r\n }\r\n },\r\n });\r\n const cancelText = (isSigned || readOnly) && !allowSignClear ? 'close' : 'cancel';\r\n const cancelBtn = button.build({\r\n text: cancelText,\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n selectedMemberData.dissentAreaDisagree = prevDissentData.dissentAreaDisagree;\r\n selectedMemberData.dissentHowToAddress = prevDissentData.dissentHowToAddress;\r\n\r\n if (!isSigned) {\r\n selectedMemberData.dateSigned = prevDateSigned;\r\n selectedMemberData.description = '';\r\n selectedMemberData.attachmentType = '';\r\n selectedMemberData.hasWetSignature = false;\r\n selectedMemberData.attachment = '';\r\n }\r\n\r\n POPUP.hide(signaturePopup);\r\n },\r\n });\r\n\r\n const saveCancelWrap = document.createElement('div');\r\n saveCancelWrap.classList.add('btnWrap');\r\n\r\n if (allowSignClear) {\r\n saveCancelWrap.appendChild(clearSignatureBtn);\r\n saveCancelWrap.appendChild(saveBtn);\r\n } else {\r\n if (!isSigned && !readOnly) saveCancelWrap.appendChild(saveBtn);\r\n }\r\n saveCancelWrap.appendChild(cancelBtn);\r\n\r\n //* BUILD IT\r\n //*------------------------------\r\n if (!isSigned && !readOnly) {\r\n signaturePopup.appendChild(prompt);\r\n }\r\n\r\n signaturePopup.appendChild(signatureSection);\r\n\r\n if (showConsentStatments) {\r\n signaturePopup.appendChild(consentSection);\r\n\r\n planConsentAndSign.setSSADropdownInitialWidth(\r\n signaturePopup,\r\n selectedMemberData.csChangeMindSSAPeopleId,\r\n );\r\n planConsentAndSign.setVendorDropdownInitialWidth(\r\n signaturePopup,\r\n selectedMemberData.csContactProviderVendorId,\r\n );\r\n }\r\n\r\n signaturePopup.appendChild(dissentSection);\r\n signaturePopup.appendChild(saveCancelWrap);\r\n\r\n POPUP.show(signaturePopup);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n checkSignautrePopupForErrors();\r\n if (allowSignClear && (isSigned || readOnly)) {\r\n saveBtn.classList.add('disabled');\r\n }\r\n\r\n if (sigCanvas) {\r\n sigCanvas.width = sigBody.offsetWidth;\r\n }\r\n }\r\n\r\n return {\r\n showPopup,\r\n };\r\n})();\r\n","const csTeamMember = (() => {\r\n let selectedMemberData;\r\n let isNew;\r\n let isSigned;\r\n let readOnly;\r\n let insertAllowed;\r\n let importedFromRelationship;\r\n let stateGuardiansObj;\r\n let selectedStateGuardian = '';\r\n let selectedStateGuardianSalesForceId = '';\r\n let DBteamMemberswithStateSalesForceId;\r\n // DOM\r\n let teamMemberPopup; // main popup\r\n let currentTeamMemberList;\r\n let linkToRelationshipBtn;\r\n let linkToSalesforceBtn;\r\n let teamMemberDropdown;\r\n let stateGuardianDropdown;\r\n let nameInput;\r\n let lNameInput;\r\n let dateOfBirthInput;\r\n let buildingNumberInput;\r\n let emailInput;\r\n let relationshipTypeInput;\r\n let signatureTypeDropdown;\r\n let radioDiv;\r\n let radioDiv2;\r\n let participatedYesRadio;\r\n let participatedNoRadio;\r\n let parentOfMinorYesRadio;\r\n let parentOfMinorNoRadio;\r\n let saveTeamMemberBtn;\r\n\r\n //*------------------------------------------------------\r\n //* UTIL\r\n //*------------------------------------------------------\r\n function checkTeamMemberPopupForErrors() {\r\n const errors = teamMemberPopup.querySelectorAll('.error');\r\n const isConsentable = planConsentAndSign.isTeamMemberConsentable(selectedMemberData.teamMember);\r\n\r\n if (\r\n errors.length > 0 ||\r\n ($.session.applicationName === 'Gatekeeper' &&\r\n selectedMemberData.csContactProviderVendorId === '' &&\r\n isConsentable)\r\n ) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n } else {\r\n saveTeamMemberBtn.classList.remove('disabled');\r\n }\r\n }\r\n function populateTeamMemberDropdown(teamMemberDropdown, teamMember) {\r\n const dropdownData = [\r\n { text: '', value: '' },\r\n { text: 'Person Supported', value: 'Person Supported' },\r\n { text: 'Parent/Guardian', value: 'Parent/Guardian' },\r\n { text: 'Guardian', value: 'Guardian' },\r\n { text: 'Parent', value: 'Parent' },\r\n { text: 'Home Provider', value: 'Home Provider' },\r\n { text: 'Day Provider', value: 'Day Provider' },\r\n { text: 'Case Manager', value: 'Case Manager' },\r\n { text: 'Other', value: 'Other' },\r\n ];\r\n dropdown.populate(teamMemberDropdown, dropdownData, teamMember);\r\n }\r\n function populateSignatureTypeDropdown(signatureTypeDropdown, type) {\r\n dropdown.populate(\r\n signatureTypeDropdown,\r\n [\r\n { text: '', value: '' },\r\n { text: 'Digital', value: '1' },\r\n { text: 'In-Person', value: '2' },\r\n { text: 'No Signature Required', value: '3' },\r\n { text: 'E-Digital', value: '4' },\r\n ],\r\n type,\r\n );\r\n }\r\n\r\n async function populateGuardiansDropDown() {\r\n var selectedConsumer = plan.getSelectedConsumer();\r\n stateGuardiansObj = await consentAndSignAjax.getTeamMemberListFromState({\r\n peopleId: selectedConsumer.id,\r\n });\r\n\r\n let guarddata;\r\n if (stateGuardiansObj && stateGuardiansObj.length !== 0) {\r\n guarddata = stateGuardiansObj\r\n .filter(dd => dd.Role === \"Guardian\") // Filter by role \"Guardian\"\r\n .map(dd => {\r\n return {\r\n value: dd.Id,\r\n text: dd.AccountName,\r\n };\r\n });\r\n \r\n if (guarddata.length > 0) {\r\n guarddata.unshift({ value: '', text: 'SELECT MATCHING STATE GUARDIAN' });\r\n } else {\r\n guarddata = [{ value: '', text: 'NO STATE GUARDIANS FOUND' }];\r\n }\r\n } else {\r\n guarddata = [{ value: '', text: 'NO STATE GUARDIANS FOUND' }];\r\n }\r\n \r\n\r\n dropdown.populate(stateGuardianDropdown, guarddata);\r\n }\r\n\r\n function calculateAge(dobStr) {\r\n const dob = new Date(dobStr);\r\n const today = new Date();\r\n\r\n let age = today.getFullYear() - dob.getFullYear();\r\n const monthDifference = today.getMonth() - dob.getMonth();\r\n if (monthDifference < 0 || (monthDifference === 0 && today.getDate() < dob.getDate())) {\r\n age--;\r\n }\r\n\r\n return age;\r\n }\r\n\r\n function isDateBefore1900(dateString) {\r\n // Parse the date string into a Date object\r\n const date = new Date(dateString);\r\n\r\n // Get the year from the Date object\r\n const year = date.getFullYear();\r\n\r\n // Compare the year with 1900\r\n return year < 1900;\r\n }\r\n\r\n async function applySelectedRelationship(relData) {\r\n importedFromRelationship = true;\r\n\r\n selectedMemberData.salesForceId = !relData.salesForceId ? '' : relData.salesForceId;\r\n selectedMemberData.contactId = relData.contactId;\r\n selectedMemberData.peopleId = relData.peopleId;\r\n selectedMemberData.dateOfBirth = relData.dateOfBirth;\r\n selectedMemberData.buildingNumber = relData.buildingNumber;\r\n selectedMemberData.name = relData.firstName;\r\n selectedMemberData.lastName = relData.lastName.split('|')[0];\r\n selectedMemberData.relationship = relData.relationship;\r\n selectedMemberData.email = relData.email;\r\n selectedMemberData.guardianSalesforceId = relData.guardianSalesforceId;\r\n\r\n // update inputs with selected data\r\n nameInput.childNodes[0].value = selectedMemberData.name;\r\n lNameInput.childNodes[0].value = selectedMemberData.lastName;\r\n buildingNumberInput.childNodes[0].value = selectedMemberData.buildingNumber;\r\n emailInput.childNodes[0].value = selectedMemberData.email ?? '';\r\n if (selectedMemberData.dateOfBirth) {\r\n dateOfBirthInput.childNodes[0].value = UTIL.formatDateToIso(\r\n dates.removeTimestamp(selectedMemberData.dateOfBirth),\r\n );\r\n }\r\n\r\n // build new relationship type input\r\n relationshipTypeInput = input.build({\r\n label: 'Relationship Type',\r\n value: selectedMemberData.relationship,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.relationship = event.target.value;\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n buildingNumberInput.after(relationshipTypeInput);\r\n emailInput.after(buildingNumberInput);\r\n\r\n // remove errors from inputs\r\n nameInput.classList.remove('error');\r\n lNameInput.classList.remove('error');\r\n buildingNumberInput.classList.remove('error');\r\n emailInput.classList.remove('error');\r\n //dateOfBirthInput.classList.remove('error');\r\n\r\n // make name and relationship readonly\r\n nameInput.classList.add('disabled');\r\n lNameInput.classList.add('disabled');\r\n relationshipTypeInput.classList.add('disabled');\r\n if (!$.session.planSignatureUpdateDOB) {\r\n dateOfBirthInput.classList.add('disabled');\r\n }\r\n if (!$.session.planSignatureUpdateBuildingNumber) {\r\n buildingNumberInput.classList.add('disabled');\r\n }\r\n if (!$.session.updateEmail) {\r\n emailInput.classList.add('disabled');\r\n }\r\n\r\n teamMemberPopup.style.removeProperty('display');\r\n\r\n if (!$.session.planInsertNewTeamMember) {\r\n // if above is false we know popup was temp disabled\r\n if ($.session.planSignatureUpdateDOB) {\r\n dateOfBirthInput.classList.remove('disabled');\r\n }\r\n if ($.session.planSignatureUpdateBuildingNumber) {\r\n buildingNumberInput.classList.remove('disabled');\r\n }\r\n if ($.session.updateEmail) {\r\n emailInput.classList.remove('disabled');\r\n }\r\n teamMemberDropdown.classList.remove('disabled');\r\n participatedYesRadio.classList.remove('disabled');\r\n participatedNoRadio.classList.remove('disabled');\r\n parentOfMinorYesRadio.classList.remove('disabled');\r\n parentOfMinorNoRadio.classList.remove('disabled');\r\n // signatureTypeDropdown.classList.remove('disabled');\r\n // set errors\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n }\r\n radioDiv.classList.add('error');\r\n }\r\n\r\n if ($.session.planUpdate) {\r\n signatureTypeDropdown.classList.remove('disabled');\r\n } else {\r\n signatureTypeDropdown.classList.add('disabled');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n\r\n // save team member if readOnly\r\n if (readOnly) {\r\n saveTeamMember();\r\n return;\r\n }\r\n }\r\n async function linkToSalesForce(selectedSalesforceId) {\r\n let success;\r\n\r\n pendingSave.show('Linking to Salesforce...');\r\n\r\n try {\r\n await consentAndSignAjax.setSalesForceIdForTeamMemberUpdate({\r\n peopleId: selectedMemberData.contactId,\r\n teamMemberType: selectedMemberData.teamMember,\r\n salesForceId: selectedSalesforceId,\r\n });\r\n success = true;\r\n } catch (error) {}\r\n\r\n if (success) {\r\n pendingSave.fulfill('Linked');\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n overlay.hide();\r\n planConsentAndSign.refreshTable();\r\n } else {\r\n pendingSave.reject('Failed to link, please try again.');\r\n const failPopup = document.querySelector('.failSavePopup');\r\n overlay.hide();\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n }\r\n }\r\n\r\n async function saveTeamMember() {\r\n if (\r\n (selectedMemberData.teamMember === 'Guardian' || selectedMemberData.teamMember === 'Parent/Guardian') &&\r\n $.session.areInSalesForce === true\r\n ) {\r\n // if (selectedStateGuardianSalesForceId === '') selectedStateGuardianSalesForceId = selectedMemberData.salesForceId;\r\n if (isNew) {\r\n var continueGuardianSave = await continueSaveofGuardianTeamMember();\r\n if (!continueGuardianSave) return;\r\n }\r\n\r\n }\r\n\r\n teamMemberPopup.style.display = 'none';\r\n pendingSave.show('Saving...');\r\n\r\n let res = null;\r\n let success;\r\n\r\n // Gather Data\r\n if (isNew) {\r\n if (importedFromRelationship) {\r\n selectedMemberData.relationshipImport = 'T';\r\n selectedMemberData.createRelationship = 'F';\r\n } else {\r\n selectedMemberData.relationshipImport = 'F';\r\n selectedMemberData.createRelationship = 'T';\r\n }\r\n let rd = await planConsentAndSign.insertNewTeamMember(selectedMemberData);\r\n rd = rd ? rd[0] : {};\r\n\r\n if (rd.existingPeopleId) {\r\n const pendingSavePopup = document.querySelector('.pendingSavePopup');\r\n pendingSavePopup.style.display = 'none';\r\n\r\n csRelationship.showExistingPopup(selectedMemberData, async usePerson => {\r\n if (usePerson) {\r\n pendingSavePopup.style.display = 'block';\r\n selectedMemberData.peopleId = rd.existingPeopleId;\r\n await planConsentAndSign.insertNewTeamMember(selectedMemberData);\r\n success = true;\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(teamMemberPopup);\r\n planConsentAndSign.refreshTable();\r\n if (\r\n selectedMemberData.teamMember === 'Guardian' ||\r\n selectedMemberData.teamMember === 'Parent/Guardian' ||\r\n selectedMemberData.teamMember === 'Case Manager'\r\n ) {\r\n //Do Nothing\r\n } else {\r\n consentAndSignAjax.GetSalesForceId(selectedMemberData.peopleId, selectedMemberData.teamMember);\r\n }\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n teamMemberPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n } else {\r\n pendingSave.hide();\r\n overlay.show();\r\n }\r\n });\r\n } else {\r\n success = true;\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n\r\n POPUP.hide(teamMemberPopup);\r\n planConsentAndSign.refreshTable();\r\n if (\r\n selectedMemberData.teamMember === 'Guardian' ||\r\n selectedMemberData.teamMember === 'Parent/Guardian' ||\r\n selectedMemberData.teamMember === 'Case Manager'\r\n ) {\r\n //Do Nothing\r\n } else {\r\n consentAndSignAjax.GetSalesForceId(selectedMemberData.peopleId, selectedMemberData.teamMember);\r\n }\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n teamMemberPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n }\r\n } else { //edit\r\n await planConsentAndSign.updateTeamMember(selectedMemberData);\r\n success = true;\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(teamMemberPopup);\r\n planConsentAndSign.refreshTable();\r\n if (\r\n selectedMemberData.teamMember === 'Guardian' ||\r\n selectedMemberData.teamMember === 'Parent/Guardian' ||\r\n selectedMemberData.teamMember === 'Case Manager'\r\n ) {\r\n //Do Nothing\r\n } else {\r\n consentAndSignAjax.GetSalesForceId(selectedMemberData.peopleId, selectedMemberData.teamMember);\r\n }\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n teamMemberPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n }\r\n }\r\n\r\n // Handling of selection of teamMember == Guardian or teamMember == Parent/Guardian\r\n async function continueSaveofGuardianTeamMember() {\r\n // Ensure that the same saleForceId is not added twice as a TeamMember for a Plan \r\n if (hasSalesForceIdBeenUsed(selectedStateGuardianSalesForceId) && $.session.areInSalesForce === true) {\r\n alert(\r\n `This team Member will not be saved. This State Guardian has already been used for a team Member in this Plan.`,\r\n );\r\n return false;\r\n }\r\n\r\n // A -- No State Guardian in Dropdown (stateGuardianDropdown) -- you can't save\r\n if (!selectedStateGuardianSalesForceId && $.session.areInSalesForce === true) {\r\n alert(`A Guardian is not listed in Salesforce for this individual and must be entered on SalesForce Portal.`);\r\n return false;\r\n }\r\n\r\n // B -- Imported Guardian and Selected State Guardian have matching SaleForceIDs\r\n if (\r\n selectedStateGuardianSalesForceId &&\r\n (selectedMemberData.salesForceId === selectedStateGuardianSalesForceId || selectedMemberData.guardianSalesforceId === selectedStateGuardianSalesForceId) &&\r\n $.session.areInSalesForce === true\r\n ) {\r\n return true;\r\n }\r\n\r\n // 1 -- Imported Guardian and Selected State Guardian do not have matching SaleForceIDs, BUT there is a SalesforceID in the People table that matches the selected State Guardian.\r\n if (\r\n (selectedMemberData.salesForceId || selectedMemberData.guardianSalesforceId) &&\r\n (selectedMemberData.salesForceId !== selectedStateGuardianSalesForceId &&\r\n selectedMemberData.guardianSalesforceId !== selectedStateGuardianSalesForceId) &&\r\n selectedStateGuardianSalesForceId !== '' &&\r\n DBteamMemberswithStateSalesForceId &&\r\n DBteamMemberswithStateSalesForceId.length === 1 &&\r\n $.session.areInSalesForce === true\r\n ) { \r\n // Ensure that the same saleForceId is not added twice as a TeamMember for a Plan\r\n if (hasSalesForceIdBeenUsed(DBteamMemberswithStateSalesForceId[0].salesForceId)) {\r\n alert(\r\n `This team Member will not be saved. No salesForceIds are available to be used for this team Member in this Plan.`,\r\n );\r\n return false;\r\n }\r\n\r\n let Scenario1ConfirmText = `The Imported Guardian and selected State Guardian do not have matching SalesForceIDs. \r\n However, the following Guardian was found in the local database that matches the SalesforceID \r\n of the selected State Guardian: ${DBteamMemberswithStateSalesForceId[0].name} ${DBteamMemberswithStateSalesForceId[0].lastName}.\r\n Do you wish to save ${DBteamMemberswithStateSalesForceId[0].name} ${DBteamMemberswithStateSalesForceId[0].lastName} \r\n as the Guardian for this particular Added Team Member?`;\r\n\r\n if (confirm(Scenario1ConfirmText)) {\r\n selectedMemberData.name = DBteamMemberswithStateSalesForceId[0].name;\r\n selectedMemberData.lastName = DBteamMemberswithStateSalesForceId[0].lastName;\r\n selectedMemberData.buildingNumber = DBteamMemberswithStateSalesForceId[0].buildingNumber;\r\n selectedMemberData.dateOfBirth = DBteamMemberswithStateSalesForceId[0].dateOfBirth;\r\n selectedMemberData.salesForceId = DBteamMemberswithStateSalesForceId[0].salesForceId;\r\n selectedMemberData.peopleId = DBteamMemberswithStateSalesForceId[0].peopleId;\r\n return true;\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n // 2 -- Imported Guardian and Selected State Guardian do not have matching SaleForceIDs, AND there is NO SalesforceID in the People table that matches the selected State Guardian.\r\n if (\r\n selectedMemberData.guardianSalesforceId &&\r\n selectedMemberData.guardianSalesforceId !== '' &&\r\n selectedStateGuardianSalesForceId !== '' &&\r\n selectedMemberData.guardianSalesforceId !== selectedStateGuardianSalesForceId &&\r\n (!DBteamMemberswithStateSalesForceId ||\r\n (DBteamMemberswithStateSalesForceId && DBteamMemberswithStateSalesForceId.length === 0))\r\n ) {\r\n // let Scenario2ConfirmText = `The Imported Guardian and selected State Guardian do not have matching SalesForceIDs.\r\n // Do you wish to save the selected State Guardian as the Guardian for this particular Added Team Member?`\r\n\r\n // if (\r\n // confirm(Scenario2ConfirmText)\r\n // ) {\r\n // var fullName = selectedStateGuardian.split(' ');\r\n // selectedMemberData.name = fullName[0];\r\n // selectedMemberData.lastName = fullName[fullName.length - 1];\r\n // selectedMemberData.buildingNumber = '';\r\n // selectedMemberData.dateOfBirth = '';\r\n // selectedMemberData.salesForceId = selectedStateGuardianSalesForceId;\r\n // return true;\r\n // } else {\r\n alert(\r\n `Imported Guardian selected is not listed in Salesforce for this individual and must be entered on Salesforce portal.`,\r\n );\r\n return false;\r\n }\r\n // }\r\n\r\n // 3 -- Imported Guardian has NO SaleforceID, but the Selected State Guardian does have a SaleForceID, BUT there is a SalesforceID in the People table that matches the selected State Guardian.\r\n if (\r\n ((selectedMemberData.guardianSalesforceId === '' || !selectedMemberData.guardianSalesforceId) ||\r\n (selectedMemberData.salesForceId === '' || !selectedMemberData.salesForceId)) &&\r\n selectedStateGuardianSalesForceId !== '' &&\r\n DBteamMemberswithStateSalesForceId &&\r\n DBteamMemberswithStateSalesForceId.length === 1\r\n ) { \r\n // Ensure that the same saleForceId is not added twice as a TeamMember for a Plan\r\n if (hasSalesForceIdBeenUsed(DBteamMemberswithStateSalesForceId[0].salesForceId)) {\r\n alert(\r\n `This team Member will not be saved. No salesForceIds are available to be used for this team Member in this Plan.`,\r\n );\r\n return false;\r\n }\r\n\r\n let Scenario3ConfirmText = `The Imported Guardian does NOT have a SalesForceID, but the selected State Guardian does. \r\n However, the following Guardian was found in the local database that matches the SalesforceID \r\n of the selected State Guardian: ${DBteamMemberswithStateSalesForceId[0].name} ${DBteamMemberswithStateSalesForceId[0].lastName}.\r\n Do you wish to save ${DBteamMemberswithStateSalesForceId[0].name} ${DBteamMemberswithStateSalesForceId[0].lastName} \r\n as the Guardian for this particular Added Team Member?`;\r\n\r\n if (confirm(Scenario3ConfirmText)) {\r\n selectedMemberData.name = DBteamMemberswithStateSalesForceId[0].name;\r\n selectedMemberData.lastName = DBteamMemberswithStateSalesForceId[0].lastName;\r\n selectedMemberData.buildingNumber = DBteamMemberswithStateSalesForceId[0].buildingNumber;\r\n selectedMemberData.dateOfBirth = DBteamMemberswithStateSalesForceId[0].dateOfBirth;\r\n selectedMemberData.salesForceId = DBteamMemberswithStateSalesForceId[0].salesForceId;\r\n selectedMemberData.peopleId = DBteamMemberswithStateSalesForceId[0].peopleId;\r\n return true;\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in the Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n // 4 --Imported Guardian has NO SaleforceID, but the Selected State Guardian does have a SaleForceID, AND there is NO SalesforceID in the People table that matches the selected State Guardian.\r\n if (\r\n (selectedMemberData.guardianSalesforceId === '' || !selectedMemberData.guardianSalesforceId) &&\r\n selectedStateGuardianSalesForceId !== '' &&\r\n (!DBteamMemberswithStateSalesForceId ||\r\n (DBteamMemberswithStateSalesForceId && DBteamMemberswithStateSalesForceId.length === 0))\r\n ) {\r\n if (confirm('Is the selected State Guardian the same person as the Imported Guardian in the form?')) {\r\n // YES -- Continue\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in the Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n\r\n let Scenario4ConfirmText = `The Imported Guardian does NOT have a SalesForceID, but the selected State Guardian does. \r\n Do you wish to assign the selected State SalesforceID to the Imported Guardian (${selectedMemberData.name} ${selectedMemberData.lastName}) and then save\r\n ${selectedMemberData.name} ${selectedMemberData.lastName} as the Guardian for this particular Added Team Member? `;\r\n\r\n let updatesuccess;\r\n\r\n if (confirm(Scenario4ConfirmText)) {\r\n // update the imported/manually entered member with the State SaleforceID\r\n try {\r\n await consentAndSignAjax.setSalesForceIdForTeamMemberUpdate({\r\n peopleId: selectedMemberData.contactId,\r\n teamMemberType: 'Guardian',\r\n salesForceId: selectedStateGuardianSalesForceId,\r\n });\r\n updatesuccess = true;\r\n } catch (error) {\r\n updatesuccess = false;\r\n }\r\n\r\n if (updatesuccess) {\r\n selectedMemberData.salesForceId = selectedStateGuardianSalesForceId;\r\n return true;\r\n } else {\r\n alert(\r\n 'Assigning the selected State SalesforceID to the Imported Guardian failed; therefore, inserting this Guardian will not be attempted.',\r\n );\r\n return false;\r\n }\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in the Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n // Final Guard Clause and Message for a failed attempt to Save New team Member\r\n if (DBteamMemberswithStateSalesForceId && DBteamMemberswithStateSalesForceId.length > 1) {\r\n alert(\r\n `Unable to save Team Member. There were multiple people in your local Database with the SalesForceID: ${DBteamMemberswithStateSalesForceId[0].salesForceId}. Correct this issue before continuing.`,\r\n );\r\n return false;\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in the Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n\r\n function hasSalesForceIdBeenUsed(selectedSalesForceID) {\r\n let isSaleForceIdUsed = false;\r\n\r\n if (currentTeamMemberList && currentTeamMemberList.length > 0) {\r\n currentTeamMemberList.forEach(p => {\r\n if (selectedSalesForceID === p.salesForceId) isSaleForceIdUsed = true;\r\n });\r\n }\r\n return isSaleForceIdUsed;\r\n }\r\n }\r\n\r\n function getSignatureTypeByID(id) {\r\n switch (id) {\r\n case '1': {\r\n return 'Digital';\r\n }\r\n case '2': {\r\n return 'In-Person';\r\n }\r\n case '3': {\r\n return 'No Signature Required';\r\n }\r\n case '4': {\r\n return 'E-Digital';\r\n }\r\n default: {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n function buildParticipationRadios() {\r\n const radioContainer = document.createElement('div');\r\n radioContainer.classList.add('sig_radioContainer');\r\n\r\n const radioContainerTitle = document.createElement('p');\r\n radioContainerTitle.innerText = '*Participated in Planning?';\r\n\r\n participatedYesRadio = input.buildRadio({\r\n text: 'Yes',\r\n name: 'pipRadioSet',\r\n isChecked: selectedMemberData.participated === 'Y',\r\n isDisabled: isSigned || readOnly,\r\n callback: () => {\r\n selectedMemberData.participated = 'Y';\r\n radioDiv.classList.remove('error');\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n participatedNoRadio = input.buildRadio({\r\n text: 'No',\r\n name: 'pipRadioSet',\r\n isChecked: selectedMemberData.participated === 'N',\r\n isDisabled: isSigned || readOnly,\r\n callback: () => {\r\n selectedMemberData.participated = 'N';\r\n radioDiv.classList.remove('error');\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n radioDiv = document.createElement('div');\r\n radioDiv.classList.add('signatures_radioDiv');\r\n radioDiv.appendChild(participatedYesRadio);\r\n radioDiv.appendChild(participatedNoRadio);\r\n\r\n if (isNew && $.session.planInsertNewTeamMember) {\r\n radioDiv.classList.add('error');\r\n }\r\n\r\n radioContainer.appendChild(radioContainerTitle);\r\n radioContainer.appendChild(radioDiv);\r\n\r\n return radioContainer;\r\n }\r\n\r\n function buildParentOfMinorRadios() {\r\n const isNoChecked = isNew ? true : selectedMemberData.parentOfMinor === 'N';\r\n const isYesChecked = isNew ? false : selectedMemberData.parentOfMinor === 'Y';\r\n\r\n radioContainer = document.createElement('div');\r\n radioContainer.classList.add('sig_radioContainer');\r\n\r\n const radioContainerTitle = document.createElement('p');\r\n radioContainerTitle.innerText = 'Parent of Minor?';\r\n\r\n parentOfMinorYesRadio = input.buildRadio({\r\n text: 'Yes',\r\n name: 'pomRadioSet',\r\n isChecked: isYesChecked,\r\n isDisabled: true,\r\n callback: () => {\r\n selectedMemberData.parentOfMinor = 'Y';\r\n //radioDiv.classList.remove('error');\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n parentOfMinorNoRadio = input.buildRadio({\r\n text: 'No',\r\n name: 'pomRadioSet',\r\n isChecked: isNoChecked,\r\n isDisabled: true,\r\n callback: () => {\r\n selectedMemberData.parentOfMinor = 'N';\r\n //radioDiv.classList.remove('error');\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n radioDiv2 = document.createElement('div');\r\n radioDiv2.classList.add('signatures_radioDiv');\r\n radioDiv2.appendChild(parentOfMinorYesRadio);\r\n radioDiv2.appendChild(parentOfMinorNoRadio);\r\n\r\n if (isNew) {\r\n radioContainer.style.display = 'none';\r\n }\r\n\r\n radioContainer.appendChild(radioContainerTitle);\r\n radioContainer.appendChild(radioDiv2);\r\n\r\n return radioContainer;\r\n }\r\n\r\n function buildDateSignedDisplay() {\r\n const dateSignedDisplay = document.createElement('p');\r\n dateSignedDisplay.classList.add('ispSignature_DateSigned');\r\n dateSignedDisplay.style.marginBottom = '15px';\r\n if (isSigned) {\r\n const dateSignedParsed = selectedMemberData.dateSigned.split(' ')[0];\r\n dateSignedDisplay.innerText = `Signed off by Team Member on: ${dateSignedParsed}`;\r\n }\r\n\r\n return dateSignedDisplay;\r\n }\r\n function buildActionBtns() {\r\n const mainWrap = document.createElement('div');\r\n\r\n saveTeamMemberBtn = button.build({\r\n id: 'sigPopup_save',\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n saveTeamMember();\r\n selectedStateGuardian = '';\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n id: 'sigPopup_cancel',\r\n text: isSigned || readOnly ? 'close' : 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(teamMemberPopup);\r\n selectedStateGuardian = '';\r\n },\r\n });\r\n // Delete only visable if isNew = false\r\n const deleteBtn = button.build({\r\n id: 'sigPopup_delete',\r\n text: 'delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n planConsentAndSign.deleteTeamMember(selectedMemberData.signatureId, teamMemberPopup);\r\n },\r\n });\r\n // Button Wrap 2\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n if (!isSigned && !readOnly) {\r\n btnWrap2.appendChild(saveTeamMemberBtn);\r\n }\r\n btnWrap2.appendChild(cancelBtn);\r\n // Button Wrap 3\r\n const btnWrap3 = document.createElement('div');\r\n btnWrap3.classList.add('btnWrap', 'deleteWrap');\r\n btnWrap3.appendChild(deleteBtn);\r\n\r\n if (isNew) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n }\r\n\r\n mainWrap.appendChild(btnWrap2);\r\n if (!isSigned && !isNew && !readOnly) {\r\n mainWrap.appendChild(btnWrap3);\r\n } else if (!isNew && !readOnly && selectedMemberData.signatureType === '3') {\r\n mainWrap.appendChild(btnWrap3);\r\n }\r\n\r\n return mainWrap;\r\n }\r\n\r\n //* global consent\r\n function getChangeMindMarkup() {\r\n // get markup\r\n\r\n const changeMindQuestion = planConsentAndSign.buildChangeMindQuestion(\r\n {\r\n csChangeMindSSAPeopleId: selectedMemberData.csChangeMindSSAPeopleId,\r\n csChangeMind: selectedMemberData.csChangeMind,\r\n },\r\n 'member',\r\n isSigned,\r\n );\r\n\r\n // set event\r\n changeMindQuestion.addEventListener('change', async event => {\r\n const target = event.target;\r\n const targetId = target.id;\r\n\r\n if (targetId === 'isp_ic_ssaDropdown') {\r\n selectedMemberData.csChangeMindSSAPeopleId = event.target.value;\r\n\r\n if (selectedMemberData.csChangeMindSSAPeopleId === '') {\r\n changeMindQuestion.classList.add('error');\r\n } else {\r\n changeMindQuestion.classList.remove('error');\r\n }\r\n\r\n planConsentAndSign.updateSSADropdownWidth(teamMemberPopup);\r\n\r\n // set vendor dropdown\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n const data = await consentAndSignAjax.getConsumerOrganizationId({\r\n peopleId: selectedMemberData.csChangeMindSSAPeopleId,\r\n });\r\n\r\n // ID check for vendors/providers\r\n const doesIdExistInVendors = planConsentAndSign.doesIdExistInVendors(data[0].orgId);\r\n const vendorDropdown = document.getElementById('isp_ic_vendorContactDropdown');\r\n if (doesIdExistInVendors) {\r\n vendorDropdown.value = data[0].orgId;\r\n selectedMemberData.csContactProviderVendorId = data[0].orgId;\r\n } else {\r\n vendorDropdown.value = '';\r\n selectedMemberData.csContactProviderVendorId = '';\r\n }\r\n }\r\n\r\n // update contact input field\r\n const contactInput = document.getElementById('CS_Contact_Input');\r\n contactInput.value = event.target.selectedOptions[0].innerText;\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n });\r\n\r\n // set default bc populatedropdown won't\r\n const select = changeMindQuestion.querySelector('select');\r\n select.value = selectedMemberData.csChangeMindSSAPeopleId;\r\n\r\n return changeMindQuestion;\r\n }\r\n\r\n async function getContactMarkup() {\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n var selectedConsumer = plan.getSelectedConsumer();\r\n\r\n const data = await consentAndSignAjax.getConsumerOrganizationId({\r\n // peopleId: selectedMemberData.csChangeMindSSAPeopleId, -- this was changed to below with the idea that selectedMemberData.csChangeMindSSAPeopleId could be set to ''\r\n peopleId: selectedConsumer.id,\r\n });\r\n\r\n // ID check for vendors/providers\r\n const doesIdExistInVendors = planConsentAndSign.doesIdExistInVendors(data[0].orgId);\r\n if (doesIdExistInVendors) {\r\n selectedMemberData.csContactProviderVendorId = data[0].orgId;\r\n } else {\r\n selectedMemberData.csContactProviderVendorId = '';\r\n }\r\n }\r\n // get markup\r\n const contactQuestion = planConsentAndSign.buildContactQuestion(\r\n {\r\n csContactProviderVendorId: selectedMemberData.csContactProviderVendorId,\r\n csContactInput: selectedMemberData.csContactInput,\r\n ssaId: selectedMemberData.csChangeMindSSAPeopleId,\r\n },\r\n 'member',\r\n isSigned,\r\n );\r\n\r\n // set event\r\n contactQuestion.addEventListener('change', event => {\r\n const target = event.target;\r\n const targetId = target.id;\r\n\r\n if (targetId === 'isp_ic_vendorContactDropdown') {\r\n const contactQuestionText = teamMemberPopup.querySelector('.contactQuestionText');\r\n selectedMemberData.csContactProviderVendorId = event.target.value;\r\n\r\n if (selectedMemberData.csContactProviderVendorId === '') {\r\n contactQuestionText.classList.add('error');\r\n } else {\r\n contactQuestionText.classList.remove('error');\r\n }\r\n\r\n planConsentAndSign.updateVendorDropdownWidth(teamMemberPopup);\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n });\r\n\r\n // set default bc populatedropdown won't\r\n const select = contactQuestion.querySelector('select');\r\n select.value = selectedMemberData.csContactProviderVendorId;\r\n\r\n // const vendorDropdown = contactQuestion.querySelector('#isp_ic_vendorContactDropdown');\r\n // vendorDropdown.value = selectedMemberData.csContactProviderVendorId;\r\n\r\n return contactQuestion;\r\n }\r\n\r\n //* link btn popups\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n async function showPopup({ isNewMember, isReadOnly, memberData, currentTeamMemberData }) {\r\n const selectedTeamMember = plan.getSelectedConsumer();\r\n const age = calculateAge(selectedTeamMember.card.dataset.dob);\r\n const isMinor = age < 18 ? true : false;\r\n isNew = isNewMember;\r\n isSigned = memberData.dateSigned !== '';\r\n readOnly = isReadOnly;\r\n importedFromRelationship = false;\r\n showConsentStatments = planConsentAndSign.isTeamMemberConsentable(memberData.teamMember);\r\n showStateGuardians = planConsentAndSign.isTeamMemberGuardian(memberData.teamMember);\r\n selectedMemberData = { ...memberData };\r\n // TOOD 94246: IF the LIMITED NUMBER OF GUARDIANS or Parent Guardians have been reached, then REMOVE 'Guardians' from the teamMember DDL\r\n currentTeamMemberList = currentTeamMemberData;\r\n\r\n // if (!isNew && $.session.applicationName === 'Advisor') {\r\n // selectedMemberData.csChangeMindSSAPeopleId = $.session.UserId;\r\n // }\r\n\r\n let changeMindQuestion;\r\n let complaintQuestion;\r\n\r\n //*--------------------------------------\r\n //* POPUP\r\n //*--------------------------------------\r\n teamMemberPopup = POPUP.build({\r\n id: 'sig_mainPopup',\r\n hideX: true,\r\n header: isNew ? 'Add Team Member' : 'Update Team Member',\r\n });\r\n\r\n //* LINK BUTTONS\r\n //*------------------------------\r\n linkToRelationshipBtn = button.build({\r\n id: 'linkToRelationshipBtn',\r\n text: isNew ? 'Import From Relationships' : 'Link To Relationship',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['linkBtn', 'relationshipLink'],\r\n callback: () => {\r\n linkToRelationshipBtn.classList.add('disabled');\r\n csRelationship.showMainPopup();\r\n },\r\n });\r\n linkToSalesforceBtn = button.build({\r\n id: 'linkToSalesforceBtn',\r\n text: 'Link To Salesforce',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['linkBtn', 'salesforceLink'],\r\n callback: async () => {\r\n linkToSalesforceBtn.classList.add('disabled');\r\n planSignatureUpdateDOB;\r\n await csSalesforce.showPopup();\r\n },\r\n });\r\n\r\n //* INPUTS\r\n //*------------------------------\r\n // Team Member\r\n teamMemberDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_teamMember',\r\n label: '*Team Member',\r\n readonly: isSigned || readOnly,\r\n callback: async event => {\r\n selectedMemberData.teamMember = event.target.value;\r\n\r\n // Enabling/Disabling fields depending upon teamMemberDropdown selection -- Guardian or not\r\n setStateofPopupFields();\r\n\r\n // inserting/removing the conditional fields based on teamMemberDropdown selection\r\n insertingConditionalFieldsintoPopup();\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n teamMemberDropdown.classList.add('teamMemberDropdown');\r\n\r\n // Enabling/Disabling fields depending upon teamMemberDropdown selection -- Guardian or not\r\n function setStateofPopupFields() {\r\n if ($.session.planInsertNewTeamMember) {\r\n linkToRelationshipBtn.classList.remove('disabled');\r\n nameInput.classList.remove('disabled');\r\n lNameInput.classList.remove('disabled');\r\n participatedYesRadio.classList.remove('disabled');\r\n participatedNoRadio.classList.remove('disabled');\r\n parentOfMinorYesRadio.classList.remove('disabled');\r\n parentOfMinorNoRadio.classList.remove('disabled');\r\n // signatureTypeDropdown.classList.remove('disabled');\r\n }\r\n\r\n if ($.session.planUpdate) {\r\n signatureTypeDropdown.classList.remove('disabled');\r\n } else {\r\n signatureTypeDropdown.classList.add('disabled');\r\n }\r\n\r\n if ($.session.planSignatureUpdateDOB) {\r\n dateOfBirthInput.classList.remove('disabled');\r\n }\r\n if ($.session.planSignatureUpdateBuildingNumber) {\r\n buildingNumberInput.classList.remove('disabled');\r\n }\r\n if ($.session.updateEmail) {\r\n emailInput.classList.remove('disabled');\r\n }\r\n\r\n //* Required Fields\r\n //*------------------------------\r\n if ($.session.planInsertNewTeamMember) {\r\n const checkIfDateBefore1900 = isDateBefore1900(dateOfBirthInput.value);\r\n const teamMember = selectedMemberData.teamMember;\r\n const isRequired =\r\n teamMember !== 'Guardian' && teamMember !== 'Parent/Guardian' && teamMember !== 'Case Manager' && teamMember !== '';\r\n\r\n if (checkIfDateBefore1900 || (isRequired && selectedMemberData.dateOfBirth === '')) {\r\n dateOfBirthInput.classList.add('error');\r\n } else {\r\n dateOfBirthInput.classList.remove('error');\r\n }\r\n\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.name === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n if (isNew) {\r\n if (selectedMemberData.lastName === '') {\r\n lNameInput.classList.add('error');\r\n }\r\n }\r\n }\r\n\r\n if (selectedMemberData.teamMember === 'Parent') {\r\n radioContainer.style.display = 'flex';\r\n selectedMemberData.parentOfMinor = isMinor ? 'Y' : 'N';\r\n parentOfMinorYesRadio.querySelector('input').checked = isMinor ? true : false;\r\n parentOfMinorNoRadio.querySelector('input').checked = isMinor ? false : true;\r\n } else {\r\n selectedMemberData.parentOfMinor = 'N';\r\n //parentOfMinorYesRadio.querySelector('input').checked = false;\r\n //parentOfMinorNoRadio.querySelector('input').checked = true;\r\n radioContainer.style.display = 'none';\r\n }\r\n }\r\n\r\n // inserting/removing the conditional fields based on teamMemberDropdown selection\r\n async function insertingConditionalFieldsintoPopup() {\r\n if (selectedMemberData.teamMember === '') {\r\n // team member has NOT been selected\r\n\r\n teamMemberDropdown.classList.add('error');\r\n // remove consent statements from DOM\r\n if (showConsentStatments) {\r\n changeMindQuestion.parentNode.removeChild(changeMindQuestion);\r\n complaintQuestion.parentNode.removeChild(complaintQuestion);\r\n showConsentStatments = false;\r\n }\r\n // remove guardians DDL from DOM\r\n if (showStateGuardians) {\r\n stateGuardianDropdown.parentNode.removeChild(stateGuardianDropdown);\r\n showStateGuardians = false;\r\n }\r\n\r\n // reset consent statement radios to default\r\n // selectedMemberData.csChangeMind = '';\r\n // selectedMemberData.csContact = '';\r\n } else {\r\n // team member has been selected\r\n\r\n teamMemberDropdown.classList.remove('error');\r\n\r\n const isSelectedTeamMemberConsentable = planConsentAndSign.isTeamMemberConsentable(\r\n selectedMemberData.teamMember,\r\n );\r\n\r\n insertingFieldsBasedonConsentable(isSelectedTeamMemberConsentable);\r\n\r\n const isSelectedTeamMemberGuardian = planConsentAndSign.isTeamMemberGuardian(selectedMemberData.teamMember);\r\n\r\n await insertingFieldsBasedonGuardian(isSelectedTeamMemberGuardian);\r\n } //end if -- team member has been selected\r\n } // end if -- function insertingConditionalFieldsintoPopup()\r\n\r\n async function insertingFieldsBasedonConsentable(isSelectedTeamMemberConsentable) {\r\n if (isSelectedTeamMemberConsentable) {\r\n // show consent statments only if they are not there\r\n if (!showConsentStatments) {\r\n showConsentStatments = true;\r\n // reset default values\r\n const globals = planConsentAndSign.getConsentGlobalValues();\r\n selectedMemberData.csChangeMindSSAPeopleId = globals.SSA;\r\n selectedMemberData.csContactProviderVendorId = globals.VENDOR;\r\n selectedMemberData.csContactInput = globals.CONTACT;\r\n // rebuild them\r\n changeMindQuestion = getChangeMindMarkup();\r\n complaintQuestion = await getContactMarkup();\r\n // show them\r\n teamMemberPopup.insertBefore(changeMindQuestion, participationRadios);\r\n teamMemberPopup.insertBefore(complaintQuestion, participationRadios);\r\n //\r\n // width them\r\n planConsentAndSign.setSSADropdownInitialWidth(teamMemberPopup, selectedMemberData.csChangeMindSSAPeopleId);\r\n planConsentAndSign.setVendorDropdownInitialWidth(\r\n teamMemberPopup,\r\n selectedMemberData.csContactProviderVendorId,\r\n );\r\n }\r\n } else {\r\n // if NOT isSelectedTeamMemberConsentable\r\n\r\n if (showConsentStatments) {\r\n changeMindQuestion.parentNode.removeChild(changeMindQuestion);\r\n complaintQuestion.parentNode.removeChild(complaintQuestion);\r\n // if (showStateGuardians) stateGuardianDropdown.parentNode.removeChild(stateGuardianDropdown);\r\n showConsentStatments = false;\r\n // selectedMemberData.csChangeMindSSAPeopleId = '';\r\n // selectedMemberData.csContactProviderVendorId = '';\r\n // selectedMemberData.csContactInput = '';\r\n }\r\n } // end if -- isSelectedTeamMemberConsentable///\r\n }\r\n\r\n async function insertingFieldsBasedonGuardian(isSelectedTeamMemberGuardian) {\r\n if (isSelectedTeamMemberGuardian && $.session.areInSalesForce === true) {\r\n // show guardan DDL only if it's not there\r\n if (!showStateGuardians) {\r\n showStateGuardians = true;\r\n await populateGuardiansDropDown();\r\n teamMemberPopup.insertBefore(stateGuardianDropdown, nameInput);\r\n if (selectedStateGuardian === '') stateGuardianDropdown.classList.add('error');\r\n }\r\n } else {\r\n // if NOT isSelectedTeamMemberGuardian\r\n\r\n if (showStateGuardians) {\r\n stateGuardianDropdown.parentNode.removeChild(stateGuardianDropdown);\r\n showStateGuardians = false;\r\n }\r\n } // end if -- isSelectedTeamMemberGuardian\r\n }\r\n\r\n\r\n // State Guradian\r\n stateGuardianDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_stateGuardian',\r\n label: '*State Guardian',\r\n readonly: isSigned || readOnly,\r\n callback: async event => {\r\n selectedStateGuardian = event.target.options[event.target.selectedIndex].innerHTML;\r\n selectedStateGuardianSalesForceId = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n stateGuardianDropdown.classList.add('error');\r\n } else {\r\n stateGuardianDropdown.classList.remove('error');\r\n }\r\n\r\n DBteamMemberswithStateSalesForceId = await consentAndSignAjax.getTeamMemberBySalesForceId({\r\n salesForceId: selectedStateGuardianSalesForceId,\r\n });\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n // Name ()\r\n nameInput = input.build({\r\n label: '*First Name',\r\n value: selectedMemberData.name,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.name = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n lNameInput = input.build({\r\n label: '*Last Name',\r\n value: selectedMemberData.lastName,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.lastName = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n lNameInput.classList.add('error');\r\n } else {\r\n lNameInput.classList.remove('error');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n // Date of Birth\r\n dateOfBirthInput = input.build({\r\n type: 'date',\r\n label: '*Date of Birth',\r\n //value: selectedMemberData.dateOfBirth,\r\n value: UTIL.formatDateToIso(dates.removeTimestamp(selectedMemberData.dateOfBirth)),\r\n readonly: isSigned || readOnly,\r\n callback: event => {\r\n selectedMemberData.dateOfBirth = event.target.value;\r\n\r\n const checkIfDateBefore1900 = isDateBefore1900(event.target.value);\r\n const teamMember = selectedMemberData.teamMember;\r\n const isRequired =\r\n teamMember !== 'Guardian' && teamMember !== 'Parent/Guardian' && teamMember !== 'Case Manager' && teamMember !== '';\r\n \r\n if (checkIfDateBefore1900 || (isRequired && selectedMemberData.dateOfBirth === '')) {\r\n dateOfBirthInput.classList.add('error'); \r\n } else {\r\n dateOfBirthInput.classList.remove('error'); \r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n // Building Number\r\n buildingNumberInput = input.build({\r\n label: 'Building Number',\r\n value: selectedMemberData.buildingNumber,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.buildingNumber = event.target.value;\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n //Email\r\n emailInput = input.build({\r\n label: 'Email',\r\n value: selectedMemberData.email ?? '',\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n let validEmail = validateEmail(event.target.value);\r\n\r\n if (validEmail) {\r\n selectedMemberData.email = event.target.value;\r\n emailInput.classList.remove('error');\r\n } else {\r\n // email input is not required currently\r\n // selectedMemberData.email = '';\r\n // emailInput.classList.add('error');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n // Relationship Type\r\n relationshipTypeInput = input.build({\r\n label: 'Relationship Type',\r\n value: selectedMemberData.relationship,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.relationship = event.target.value;\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n // Participate Yes/NO\r\n const participationRadios = buildParticipationRadios();\r\n const parentOfMinorRadios = buildParentOfMinorRadios();\r\n\r\n // Signature Type\r\n signatureTypeDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_signType',\r\n label: '*Signature Type',\r\n readonly: isSigned || readOnly,\r\n callback: event => {\r\n selectedMemberData.signatureType = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n //* GLOBAL CONSENT QUESTIONS\r\n //*------------------------------\r\n if (showConsentStatments) {\r\n changeMindQuestion = getChangeMindMarkup();\r\n complaintQuestion = await getContactMarkup();\r\n }\r\n\r\n function validateEmail(email) {\r\n const regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\r\n return regex.test(email);\r\n }\r\n\r\n //* BUTTONS\r\n //*------------------------------\r\n const btns = buildActionBtns();\r\n\r\n //* Date Signed Display\r\n //*------------------------------\r\n const dateSignedDisplay = buildDateSignedDisplay();\r\n\r\n //* Disabled Fields\r\n //*------------------------------\r\n if (selectedMemberData.dateOfBirth) {\r\n dateOfBirthInput.classList.add('disabled');\r\n }\r\n if (selectedMemberData.buildingNumber) {\r\n buildingNumberInput.classList.add('disabled');\r\n }\r\n if (!isNew) {\r\n if (selectedMemberData.name !== '') {\r\n nameInput.classList.add('disabled');\r\n }\r\n if (selectedMemberData.lastName !== '') {\r\n lNameInput.classList.add('disabled');\r\n }\r\n }\r\n\r\n // initial display of Form/popup before a teamMember designations is selected\r\n\r\n if (!$.session.planInsertNewTeamMember) {\r\n teamMemberDropdown.classList.add('disabled');\r\n nameInput.classList.add('disabled');\r\n lNameInput.classList.add('disabled');\r\n // nameInput.classList.remove('error');\r\n // lNameInput.classList.remove('error');\r\n dateOfBirthInput.classList.add('disabled');\r\n buildingNumberInput.classList.add('disabled');\r\n participatedYesRadio.classList.add('disabled');\r\n participatedNoRadio.classList.add('disabled');\r\n parentOfMinorYesRadio.classList.add('disabled');\r\n parentOfMinorNoRadio.classList.add('disabled');\r\n // radioDiv.classList.remove('error');\r\n // signatureTypeDropdown.classList.add('disabled');\r\n saveTeamMemberBtn.classList.add('disabled');\r\n emailInput.classList.add('disabled');\r\n }\r\n\r\n //* Required Fields\r\n //*------------------------------\r\n if ($.session.planInsertNewTeamMember) {\r\n const checkIfDateBefore1900 = isDateBefore1900(dateOfBirthInput.value);\r\n const teamMember = selectedMemberData.teamMember;\r\n const isRequired = teamMember !== 'Guardian' && teamMember !== 'Parent/Guardian' && teamMember !== 'Case Manager' && teamMember !== '';\r\n if (checkIfDateBefore1900 || (isRequired && selectedMemberData.dateOfBirth === '')) {\r\n dateOfBirthInput.classList.add('error');\r\n } else {\r\n dateOfBirthInput.classList.remove('error');\r\n }\r\n // email input is not currently required\r\n // if (selectedMemberData.email) {\r\n // emailInput.classList.remove('error');\r\n // } else {\r\n // emailInput.classList.add('error');\r\n // }\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.name === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n if (isNew) {\r\n if (selectedMemberData.lastName === '') {\r\n lNameInput.classList.add('error');\r\n }\r\n }\r\n\r\n if ($.session.planUpdate) {\r\n participatedYesRadio.classList.remove('disabled');\r\n participatedNoRadio.classList.remove('disabled');\r\n parentOfMinorYesRadio.classList.remove('disabled');\r\n parentOfMinorNoRadio.classList.remove('disabled');\r\n // signatureTypeDropdown.classList.remove('disabled');\r\n }\r\n\r\n if (!$.session.updateEmail) {\r\n emailInput.classList.add('disabled');\r\n }\r\n }\r\n\r\n if ($.session.planUpdate) {\r\n signatureTypeDropdown.classList.remove('disabled');\r\n } else {\r\n signatureTypeDropdown.classList.add('disabled');\r\n }\r\n\r\n //* Add elements to popup\r\n //*------------------------------\r\n\r\n if (isSigned) {\r\n teamMemberPopup.appendChild(dateSignedDisplay);\r\n }\r\n if (isNew) {\r\n teamMemberPopup.appendChild(linkToRelationshipBtn);\r\n } else {\r\n if (!selectedMemberData.contactId) {\r\n teamMemberPopup.appendChild(linkToRelationshipBtn);\r\n }\r\n if ($.session.areInSalesForce && !selectedMemberData.salesForceId && selectedMemberData.contactId) {\r\n teamMemberPopup.appendChild(linkToSalesforceBtn);\r\n }\r\n }\r\n teamMemberPopup.appendChild(teamMemberDropdown);\r\n teamMemberPopup.appendChild(nameInput);\r\n if (isNew) {\r\n teamMemberPopup.appendChild(lNameInput);\r\n } else {\r\n if (selectedMemberData.lastName !== '') teamMemberPopup.appendChild(lNameInput);\r\n }\r\n teamMemberPopup.appendChild(dateOfBirthInput);\r\n teamMemberPopup.appendChild(buildingNumberInput);\r\n teamMemberPopup.appendChild(emailInput);\r\n if (!isNew && selectedMemberData.relationship) {\r\n teamMemberPopup.appendChild(relationshipTypeInput);\r\n relationshipTypeInput.classList.add('disabled');\r\n }\r\n teamMemberPopup.appendChild(participationRadios);\r\n teamMemberPopup.appendChild(parentOfMinorRadios); //\r\n teamMemberPopup.appendChild(signatureTypeDropdown);\r\n\r\n if (showConsentStatments) {\r\n teamMemberPopup.appendChild(changeMindQuestion);\r\n teamMemberPopup.appendChild(complaintQuestion);\r\n\r\n planConsentAndSign.setSSADropdownInitialWidth(teamMemberPopup, selectedMemberData.csChangeMindSSAPeopleId);\r\n planConsentAndSign.setVendorDropdownInitialWidth(teamMemberPopup, selectedMemberData.csContactProviderVendorId);\r\n }\r\n\r\n teamMemberPopup.appendChild(btns);\r\n\r\n populateTeamMemberDropdown(teamMemberDropdown, selectedMemberData.teamMember);\r\n populateSignatureTypeDropdown(signatureTypeDropdown, selectedMemberData.signatureType);\r\n\r\n if (showStateGuardians) {\r\n populateGuardiansDropDown();\r\n }\r\n\r\n POPUP.show(teamMemberPopup);\r\n\r\n if ($.session.planInsertNewTeamMember) {\r\n checkTeamMemberPopupForErrors();\r\n }\r\n }\r\n\r\n return {\r\n showPopup,\r\n applySelectedRelationship,\r\n linkToSalesForce,\r\n getSignatureTypeByID,\r\n };\r\n})();\r\n","const csVendor = (() => {\r\n let selectedMemberData;\r\n let currentTeamMemberList;\r\n let isNew;\r\n let isSigned;\r\n let readOnly;\r\n let importedFromRelationship;\r\n let vendorData;\r\n\r\n // DOM\r\n let csVendorPopup; // main popup\r\n let vendorDropdown;\r\n let teamMemberDropdown;\r\n let buildingNumberInput;\r\n let signatureTypeDropdown;\r\n let radioDiv;\r\n let participatedYesRadio;\r\n let participatedNoRadio;\r\n let saveTeamMemberBtn;\r\n\r\n //*------------------------------------------------------\r\n //* UTIL\r\n //*------------------------------------------------------\r\n function checkcsVendorPopupForErrors() {\r\n const errors = csVendorPopup.querySelectorAll('.error');\r\n //const isConsentable = planConsentAndSign.isTeamMemberConsentable(selectedMemberData.teamMember);\r\n\r\n if (errors.length > 0) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n } else if (\r\n selectedMemberData.name === '' ||\r\n selectedMemberData.teamMember === '' ||\r\n selectedMemberData.signatureType === '' ||\r\n selectedMemberData.participated === ''\r\n ) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n } else {\r\n saveTeamMemberBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function getSelectedVendorRel(vendorData, vendorName) {\r\n const cleanedVendorName = vendorName.trim();\r\n let selectedVendorData = vendorData.find(function (vendor) {\r\n return vendor.vendorName === cleanedVendorName;\r\n });\r\n\r\n if (selectedVendorData) {\r\n return (selectedVendor = {\r\n vendorName: selectedVendorData.vendorName,\r\n vendorId: selectedVendorData.vendorId,\r\n vendorAddress: selectedVendorData.vendorAddress,\r\n });\r\n }\r\n }\r\n const removeDups = data => {\r\n const flag = {};\r\n const unique = [];\r\n data.forEach(id => {\r\n if (!flag[id]) {\r\n flag[id] = true;\r\n unique.push(id);\r\n }\r\n });\r\n return unique;\r\n };\r\n function removeV(ids) {\r\n return ids.map(id => id.replace('V', ''));\r\n }\r\n async function populateVendorDropdownData(vendorData, vendorDropdown, teamMember, clickSource) {\r\n // get vendors from the following\r\n // (Add Risk -> Who Is Responsible) on the Summary tab\r\n // (Add Experience -> Responsible Provider) on the Outcomes tab\r\n // (Add Paid Support -> Provider Name) on the Services tab\r\n const summaryVendors = planSummary.getSelectedVendors();\r\n const outcomesVendors = planOutcomes.getSelectedVendors();\r\n const servicesVendors = removeV(servicesSupports.getSelectedVendorIds());\r\n\r\n let selectedVendors = [...summaryVendors, ...outcomesVendors, ...servicesVendors];\r\n selectedVendors = removeDups(selectedVendors);\r\n \r\n // 'facilities' and 'location' are used interchangeably in vendor.js and outcomes.js \r\n const facilitiesGroup = {\r\n groupLabel: 'Facilities',\r\n groupId: 'facilitiesGroup',\r\n dropdownValues: [],\r\n };\r\n\r\n const vendorGroup = {\r\n groupLabel: 'Plan Vendor',\r\n groupId: 'vendorGroup',\r\n dropdownValues: [],\r\n };\r\n const nonVendorGroup = {\r\n groupLabel: 'Not a Vendor on this Plan',\r\n groupId: 'nonVendorGroup',\r\n dropdownValues: [],\r\n };\r\n\r\n vendorData.forEach(vendor => {\r\n let isSelected = selectedVendors.includes(vendor.vendorId);\r\n if (isSelected) {\r\n vendorGroup.dropdownValues.push({ text: vendor.vendorName, value: vendor.vendorName });\r\n } else {\r\n nonVendorGroup.dropdownValues.push({ text: vendor.vendorName, value: vendor.vendorName });\r\n }\r\n });\r\n\r\n \r\n const locationData = await consentAndSignAjax.getLocationswithSalesforceId();\r\n\r\n // remove the locations that are already selected and displayed on the teammember screen\r\n if (locationData) {\r\n currentTeamMemberList.forEach(member => {\r\n for (let i = 0; i < locationData.length; i++) {\r\n if (member.locationId === locationData[i].ID && clickSource === 'addVendor') {\r\n locationData.splice(i,1);\r\n }\r\n }\r\n });\r\n }\r\n \r\n\r\n const groupDropdownData = [];\r\n\r\n if ($.session.applicationName !== 'Gatekeeper') { \r\n //var theseLocations = locationData.filter(member => member.locationId !== '');\r\n facilitiesGroup.dropdownValues = locationData.map(ps => {\r\n return {\r\n value: `${ps.Name}LOCATIONID:${ps.ID}L`,\r\n text: ps.Name,\r\n };\r\n });\r\n\r\n // facilitiesGroup.dropdownValues = removeDups(facilitiesGroup.dropdownValues);\r\n facilitiesGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n groupDropdownData.push(facilitiesGroup);\r\n }\r\n\r\n //const groupDropdownData = [];\r\n // groupDropdownData.push(facilitiesGroup);\r\n groupDropdownData.push(vendorGroup);\r\n groupDropdownData.push(nonVendorGroup);\r\n\r\n if (facilitiesGroup.dropdownValues.length > 0) {\r\n for (let i = 0; i < facilitiesGroup.dropdownValues.length; i++) {\r\n if (facilitiesGroup.dropdownValues[i].text.trim() === teamMember.trim()){\r\n teamMember = facilitiesGroup.dropdownValues[i].value;\r\n }\r\n }\r\n }\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: vendorDropdown,\r\n data: groupDropdownData,\r\n nonGroupedData: [{ value: '', text: '' }],\r\n defaultVal: teamMember.trim(),\r\n });\r\n }\r\n\r\n function populateTeamMemberDropdown(teamMemberDropdown, teamMember) {\r\n const dropdownData = [\r\n { text: '', value: '' },\r\n { text: 'Home Provider', value: 'Home Provider Vendor' },\r\n { text: 'Day Provider', value: 'Day Provider Vendor' },\r\n { text: 'Other', value: 'Other Vendor' },\r\n ];\r\n\r\n dropdown.populate(teamMemberDropdown, dropdownData, teamMember);\r\n }\r\n\r\n function populateSignatureTypeDropdown(signatureTypeDropdown, type) {\r\n dropdown.populate(\r\n signatureTypeDropdown,\r\n [\r\n { text: '', value: '' },\r\n { text: 'Digital', value: '1' },\r\n { text: 'In-Person', value: '2' },\r\n { text: 'No Signature Required', value: '3' },\r\n { text: 'E-Digital', value: '4' },\r\n ],\r\n type,\r\n );\r\n }\r\n\r\n async function saveTeamMember() {\r\n csVendorPopup.style.display = 'none';\r\n pendingSave.show('Saving...');\r\n\r\n let res = null;\r\n let success;\r\n\r\n // Gather Data\r\n if (isNew) {\r\n if (importedFromRelationship) {\r\n selectedMemberData.relationshipImport = 'T';\r\n selectedMemberData.createRelationship = 'F';\r\n } else {\r\n selectedMemberData.relationshipImport = 'F';\r\n selectedMemberData.createRelationship = 'T';\r\n }\r\n await planConsentAndSign.insertNewTeamMember(selectedMemberData);\r\n success = true;\r\n const pendingSavePopup = document.querySelector('.pendingSavePopup');\r\n pendingSavePopup.style.display = 'none';\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(csVendorPopup);\r\n planConsentAndSign.refreshTable();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n csVendorPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n } else {\r\n await planConsentAndSign.updateTeamMember(selectedMemberData);\r\n success = true;\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(csVendorPopup);\r\n planConsentAndSign.refreshTable();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n csVendorPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n }\r\n }\r\n\r\n function getSignatureTypeByID(id) {\r\n switch (id) {\r\n case '1': {\r\n return 'Digital';\r\n }\r\n case '2': {\r\n return 'In-Person';\r\n }\r\n case '3': {\r\n return 'No Signature Required';\r\n }\r\n case '4': {\r\n return 'E-Digital';\r\n }\r\n default: {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n function buildParticipationRadios() {\r\n const radioContainer = document.createElement('div');\r\n radioContainer.classList.add('sig_radioContainer');\r\n\r\n const radioContainerTitle = document.createElement('p');\r\n radioContainerTitle.innerText = '*Participated in Planning?';\r\n\r\n participatedYesRadio = input.buildRadio({\r\n text: 'Yes',\r\n name: 'pipRadioSet',\r\n isChecked: selectedMemberData.participated === 'Y',\r\n isDisabled: isSigned || readOnly,\r\n callback: () => {\r\n selectedMemberData.participated = 'Y';\r\n radioDiv.classList.remove('error');\r\n checkcsVendorPopupForErrors();\r\n },\r\n });\r\n participatedNoRadio = input.buildRadio({\r\n text: 'No',\r\n name: 'pipRadioSet',\r\n isChecked: selectedMemberData.participated === 'N',\r\n isDisabled: isSigned || readOnly,\r\n callback: () => {\r\n selectedMemberData.participated = 'N';\r\n radioDiv.classList.remove('error');\r\n checkcsVendorPopupForErrors();\r\n },\r\n });\r\n\r\n radioDiv = document.createElement('div');\r\n radioDiv.classList.add('signatures_radioDiv');\r\n radioDiv.appendChild(participatedYesRadio);\r\n radioDiv.appendChild(participatedNoRadio);\r\n\r\n if (isNew && $.session.planInsertNewTeamMember) {\r\n radioDiv.classList.add('error');\r\n }\r\n\r\n radioContainer.appendChild(radioContainerTitle);\r\n radioContainer.appendChild(radioDiv);\r\n\r\n return radioContainer;\r\n }\r\n\r\n function buildDateSignedDisplay() {\r\n const dateSignedDisplay = document.createElement('p');\r\n dateSignedDisplay.classList.add('ispSignature_DateSigned');\r\n dateSignedDisplay.style.marginBottom = '15px';\r\n if (isSigned) {\r\n const dateSignedParsed = selectedMemberData.dateSigned.split(' ')[0];\r\n dateSignedDisplay.innerText = `Signed off by Team Member on: ${dateSignedParsed}`;\r\n }\r\n\r\n return dateSignedDisplay;\r\n }\r\n function buildActionBtns() {\r\n const mainWrap = document.createElement('div');\r\n\r\n saveTeamMemberBtn = button.build({\r\n id: 'sigPopup_save',\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n saveTeamMember();\r\n selectedStateGuardian = '';\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n id: 'sigPopup_cancel',\r\n text: isSigned || readOnly ? 'close' : 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(csVendorPopup);\r\n selectedStateGuardian = '';\r\n },\r\n });\r\n // Delete only visable if isNew = false\r\n const deleteBtn = button.build({\r\n id: 'sigPopup_delete',\r\n text: 'delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n planConsentAndSign.deleteTeamMember(selectedMemberData.signatureId, csVendorPopup);\r\n },\r\n });\r\n // Button Wrap 2\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n if (!isSigned && !readOnly) {\r\n btnWrap2.appendChild(saveTeamMemberBtn);\r\n }\r\n btnWrap2.appendChild(cancelBtn);\r\n // Button Wrap 3\r\n const btnWrap3 = document.createElement('div');\r\n btnWrap3.classList.add('btnWrap', 'deleteWrap');\r\n btnWrap3.appendChild(deleteBtn);\r\n\r\n if (isNew) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n }\r\n mainWrap.appendChild(btnWrap2);\r\n if (!isSigned && !isNew && !readOnly) {\r\n mainWrap.appendChild(btnWrap3);\r\n } else if (!isNew && !readOnly && selectedMemberData.signatureType === '3') {\r\n mainWrap.appendChild(btnWrap3);\r\n }\r\n\r\n return mainWrap;\r\n }\r\n\r\n //* link btn popups\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n async function showPopup({\r\n isNewMember,\r\n isReadOnly,\r\n memberData,\r\n currentTeamMemberData,\r\n vendorData,\r\n clickSource,\r\n }) {\r\n isNew = isNewMember;\r\n isSigned = memberData.dateSigned !== '';\r\n readOnly = isReadOnly;\r\n showConsentStatments = planConsentAndSign.isTeamMemberConsentable(memberData.teamMember);\r\n selectedMemberData = { ...memberData };\r\n currentTeamMemberList = currentTeamMemberData;\r\n\r\n // if (!isNew && $.session.applicationName === 'Advisor') {\r\n // selectedMemberData.csChangeMindSSAPeopleId = $.session.UserId;\r\n // }\r\n\r\n //*--------------------------------------\r\n //* POPUP\r\n //*--------------------------------------\r\n csVendorPopup = POPUP.build({\r\n id: 'sig_mainPopup',\r\n hideX: true,\r\n header: isNew ? 'Add Vendor' : 'Update Vendor',\r\n });\r\n\r\n //* INPUTS\r\n //*------------------------------\r\n // Vendor\r\n vendorDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_vendor',\r\n label: '*Vendor',\r\n readonly: isSigned || readOnly,\r\n callback: async event => {\r\n selectedMemberData.name = event.target.value;\r\n\r\n\r\n if (event.target.value === '') {\r\n vendorDropdown.classList.add('error');\r\n } else {\r\n vendorDropdown.classList.remove('error');\r\n }\r\n\r\n if (selectedMemberData.name.includes('LOCATIONID:')) {\r\n \r\n arr = event.target.value.split(\"LOCATIONID:\");\r\n selectedMemberData.name = arr[0];\r\n selectedMemberData.locationId = arr[1];\r\n selectedMemberData.vendorId = arr[1];\r\n \r\n } else {\r\n\r\n const vendorRel = getSelectedVendorRel(vendorData, selectedMemberData.name);\r\n if (selectedMemberData.name === '') {\r\n selectedMemberData.buildingNumber = '';\r\n selectedMemberData.vendorId = '';\r\n } else {\r\n selectedMemberData.buildingNumber = vendorRel.vendorAddress;\r\n selectedMemberData.vendorId = vendorRel.vendorId;\r\n }\r\n\r\n }\r\n \r\n\r\n buildingNumberInput.childNodes[0].value = selectedMemberData.buildingNumber.substring(0, 4);\r\n buildingNumberInput.classList.add('disabled');\r\n\r\n // Enabling/Disabling fields depending upon teamMemberDropdown selection -- Guardian or not\r\n setStateofPopupFields();\r\n\r\n checkcsVendorPopupForErrors();\r\n }, // end callback\r\n }); // end DROP DOWN BUILD\r\n\r\n // Team Member\r\n teamMemberDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_teamMember',\r\n label: '*Team Member',\r\n readonly: isSigned || readOnly,\r\n callback: async event => {\r\n selectedMemberData.teamMember = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n\r\n checkcsVendorPopupForErrors();\r\n }, // end callback\r\n }); // end DROP DOWN BUILD\r\n\r\n // Enabling/Disabling fields depending upon teamMemberDropdown selection -- Guardian or not\r\n function setStateofPopupFields() {\r\n //* Required Fields\r\n //*------------------------------\r\n if (selectedMemberData.name === '') {\r\n vendorDropdown.classList.add('error');\r\n } else {\r\n vendorDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.participated === '') {\r\n radioDiv.classList.add('error');\r\n } else {\r\n radioDiv.classList.remove('error');\r\n }\r\n }\r\n\r\n teamMemberDropdown.classList.add('teamMemberDropdown');\r\n\r\n // Building Number\r\n buildingNumberInput = input.build({\r\n label: 'Building Number',\r\n value: selectedMemberData.buildingNumber,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.buildingNumber = event.target.value;\r\n\r\n checkcsVendorPopupForErrors();\r\n a;\r\n },\r\n });\r\n buildingNumberInput.classList.add('disabled');\r\n\r\n input.disableInputField(buildingNumberInput);\r\n // Participate Yes/NO\r\n const participationRadios = buildParticipationRadios();\r\n\r\n // Signature Type\r\n signatureTypeDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_signType',\r\n label: '*Signature Type',\r\n readonly: isSigned || readOnly,\r\n callback: event => {\r\n selectedMemberData.signatureType = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n\r\n checkcsVendorPopupForErrors();\r\n },\r\n });\r\n\r\n //* BUTTONS\r\n //*------------------------------\r\n const btns = buildActionBtns();\r\n\r\n //* Date Signed Display\r\n //*------------------------------\r\n const dateSignedDisplay = buildDateSignedDisplay();\r\n\r\n //* Disabled Fields\r\n //*------------------------------\r\n if (selectedMemberData.buildingNumber) {\r\n buildingNumberInput.classList.add('disabled');\r\n }\r\n\r\n //* Required Fields\r\n //*------------------------------\r\n if (selectedMemberData.name === '') {\r\n vendorDropdown.classList.add('error');\r\n } else {\r\n vendorDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.participated === '') {\r\n radioDiv.classList.add('error');\r\n } else {\r\n radioDiv.classList.remove('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n\r\n //* Add elements to popup\r\n //*------------------------------\r\n if (isSigned) {\r\n csVendorPopup.appendChild(dateSignedDisplay);\r\n }\r\n\r\n csVendorPopup.appendChild(vendorDropdown);\r\n csVendorPopup.appendChild(teamMemberDropdown);\r\n csVendorPopup.appendChild(buildingNumberInput);\r\n csVendorPopup.appendChild(participationRadios);\r\n csVendorPopup.appendChild(signatureTypeDropdown);\r\n csVendorPopup.appendChild(btns);\r\n\r\n populateVendorDropdownData(vendorData, vendorDropdown, selectedMemberData.name, clickSource);\r\n populateTeamMemberDropdown(teamMemberDropdown, selectedMemberData.teamMember);\r\n populateSignatureTypeDropdown(signatureTypeDropdown, selectedMemberData.signatureType);\r\n\r\n const vendorRel = getSelectedVendorRel(vendorData, selectedMemberData.name);\r\n if (vendorRel !== undefined) {\r\n buildingNumberInputValue = vendorRel.vendorAddress.substring(0, 4);\r\n buildingNumberInput.childNodes[0].value = buildingNumberInputValue;\r\n }\r\n\r\n POPUP.show(csVendorPopup);\r\n\r\n // if ($.session.planInsertNewTeamMember) {\r\n // checkcsVendorPopupForErrors();\r\n // }\r\n }\r\n\r\n return {\r\n showPopup,\r\n getSignatureTypeByID,\r\n getSelectedVendorRel,\r\n };\r\n})();\r\n","const contactInformation = (() => {\r\n let mainCIData;\r\n let bestWayToConnectData;\r\n let peopleId;\r\n let contactId;\r\n let assessmentId;\r\n let readOnly;\r\n let uniqueFundingSources;\r\n let allFundingSources;\r\n let fundingSourceList;\r\n // Table Data\r\n let importantPeopleData, importantGroupsData, importantPlacesData, gkDemographicsData;\r\n let gkRelationships;\r\n let communicationType;\r\n //Inputs\r\n let nameInput;\r\n let prefNameInput;\r\n let addressInput;\r\n let cityStateZipInput;\r\n let countyInput;\r\n let emailInput;\r\n let phoneInput;\r\n let sexInput;\r\n let maritalStatusInput;\r\n let charLimits;\r\n\r\n function refreshDropdownData(newDropdownData) {\r\n dropdownData = newDropdownData;\r\n }\r\n\r\n function populateBestWayToConnectDropdown(dropdownEle, defaultValue) {\r\n const data = communicationType.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n\r\n function buildContactInputs() {\r\n const inputSection = document.createElement('div');\r\n\r\n const dateFundingSoureContainer = document.createElement('div');\r\n dateFundingSoureContainer.classList.add('isp_ci_dateFundingSourceContainer');\r\n\r\n const ispDatesSection = document.createElement('div');\r\n ispDatesSection.classList.add('ispSpanDateContainer');\r\n const ispDatesHeader = document.createElement('h4');\r\n ispDatesHeader.innerText = 'ISP Span Dates:';\r\n ispDatesSection.appendChild(ispDatesHeader);\r\n const effStartDate = UTIL.getFormattedDateFromDate(planDates.getEffectiveStartDate());\r\n const effEndDate = UTIL.getFormattedDateFromDate(planDates.getEffectiveEndDate());\r\n const dateDisplay = document.createElement('p');\r\n dateDisplay.innerText = `${effStartDate} - ${effEndDate}`;\r\n ispDatesSection.appendChild(dateDisplay);\r\n\r\n const ispFundingSuourcesSection = document.createElement('div');\r\n ispFundingSuourcesSection.classList.add('ispFSContainer');\r\n const ispFundingSuourcesHeader = document.createElement('h4');\r\n ispFundingSuourcesSection.appendChild(ispFundingSuourcesHeader);\r\n ispFundingSuourcesHeader.innerText = 'Funding Sources:';\r\n const fsContainer = document.createElement('div');\r\n ispFundingSuourcesSection.appendChild(fsContainer);\r\n fundingSourceList = document.createElement('p');\r\n fundingSourceList.id = 'isp_ci_fundingSourcesList';\r\n fundingSourceList.innerText = uniqueFundingSources.join(', ');\r\n fsContainer.appendChild(fundingSourceList);\r\n\r\n dateFundingSoureContainer.appendChild(ispDatesSection);\r\n dateFundingSoureContainer.appendChild(ispFundingSuourcesSection);\r\n\r\n nameInput = input.build({\r\n label: 'Name',\r\n readonly: true,\r\n });\r\n prefNameInput = input.build({\r\n label: 'Preferred Name',\r\n readonly: true,\r\n });\r\n\r\n addressInput = input.build({\r\n label: 'Address',\r\n readonly: true,\r\n });\r\n\r\n cityStateZipInput = input.build({\r\n label: 'City, State, Zip',\r\n readonly: true,\r\n });\r\n\r\n countyInput = input.build({\r\n label: 'County',\r\n readonly: true,\r\n });\r\n\r\n emailInput = input.build({\r\n label: 'Email',\r\n readonly: true,\r\n type: 'email',\r\n });\r\n\r\n phoneInput = input.build({\r\n label: 'Phone',\r\n readonly: true,\r\n type: 'tel',\r\n attributes: [\r\n { key: 'maxlength', value: '12' },\r\n { key: 'pattern', value: '[0-9]{3}-[0-9]{3}-[0-9]{4}' },\r\n ],\r\n });\r\n\r\n sexInput = input.build({\r\n label: 'Sex',\r\n readonly: true,\r\n type: '',\r\n attributes: [{ key: 'maxlength', value: '1' }],\r\n });\r\n\r\n maritalStatusInput = input.build({\r\n label: 'Marital Status',\r\n readonly: true,\r\n });\r\n // Name, Preferred Name, Address, City, State, Zip, County, Email, Phone, Sex, and Marital Status\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('isp_ci_inputContainer1');\r\n inputContainer1.appendChild(addressInput);\r\n inputContainer1.appendChild(cityStateZipInput);\r\n inputContainer1.appendChild(countyInput);\r\n\r\n const inputContainer2 = document.createElement('div');\r\n inputContainer2.classList.add('isp_ci_inputContainer2');\r\n inputContainer2.appendChild(emailInput);\r\n inputContainer2.appendChild(phoneInput);\r\n inputContainer2.appendChild(sexInput);\r\n inputContainer2.appendChild(maritalStatusInput);\r\n\r\n const bestWayToConnectDropdown = dropdown.build({\r\n dropdownId: 'connectDropdown',\r\n label: 'Best way to connect with the person',\r\n style: 'secondary',\r\n readonly: readOnly,\r\n callback: async (e, selectedOption) => {\r\n bestWayToConnectData.bestWayToConnect = selectedOption.value;\r\n\r\n if (bestWayToConnectData.bestWayToConnect === '7') {\r\n if (bestWayToConnectData.moreDetail === '') {\r\n otherTextInput.classList.add('error');\r\n }\r\n } else {\r\n otherTextInput.classList.remove('error');\r\n }\r\n // update dropdown value to DB\r\n await summaryAjax.updateBestWayToConnect({\r\n token: $.session.Token,\r\n anywAssessmentId: assessmentId,\r\n bestWayId: selectedOption.value,\r\n });\r\n\r\n await planValidation.contactsValidationCheck();\r\n },\r\n });\r\n populateBestWayToConnectDropdown(\r\n bestWayToConnectDropdown,\r\n bestWayToConnectData.bestWayToConnect,\r\n );\r\n const otherTextInput = input.build({\r\n label: 'More Detail',\r\n type: 'textarea',\r\n style: 'secondary',\r\n readonly: readOnly,\r\n classNames: 'autosize',\r\n value: bestWayToConnectData.moreDetail,\r\n charLimit: charLimits.moreDetail,\r\n forceCharLimit: true,\r\n callback: async e => {\r\n bestWayToConnectData.moreDetail = e.target.value;\r\n\r\n if (bestWayToConnectData.bestWayToConnect === '7') {\r\n if (bestWayToConnectData.moreDetail === '') {\r\n otherTextInput.classList.add('error');\r\n } else {\r\n otherTextInput.classList.remove('error');\r\n }\r\n }\r\n await summaryAjax.updateMoreDetail({\r\n token: $.session.Token,\r\n anywAssessmentId: assessmentId,\r\n detail: e.target.value,\r\n });\r\n },\r\n });\r\n\r\n // create wrapper div for button and alert\r\n const bestWayToConnectBtnAlertDiv = document.createElement('div');\r\n bestWayToConnectBtnAlertDiv.classList.add('connectBtnAlertContainer');\r\n\r\n // create div for the alert\r\n const bestWaytoConnectAlertDiv = document.createElement('div');\r\n bestWaytoConnectAlertDiv.innerHTML = `${icons.error}`;\r\n bestWaytoConnectAlertDiv.classList.add(`bestWaytoConnectAlert`);\r\n bestWaytoConnectAlertDiv.style.display = 'none';\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'This field cannot be empty. Please select an option from the dropdown menu',\r\n bestWaytoConnectAlertDiv,\r\n );\r\n\r\n bestWayToConnectBtnAlertDiv.appendChild(bestWaytoConnectAlertDiv);\r\n bestWayToConnectBtnAlertDiv.appendChild(bestWayToConnectDropdown);\r\n\r\n let contactsValidation = planValidation.getContactValidation();\r\n\r\n if (contactsValidation.bestWayToConnect === false) {\r\n bestWaytoConnectAlertDiv.style.display = 'flex';\r\n }\r\n\r\n inputSection.appendChild(nameInput);\r\n inputSection.appendChild(prefNameInput);\r\n inputSection.appendChild(inputContainer1);\r\n inputSection.appendChild(inputContainer2);\r\n inputSection.appendChild(bestWayToConnectBtnAlertDiv);\r\n inputSection.appendChild(otherTextInput);\r\n inputSection.appendChild(dateFundingSoureContainer);\r\n\r\n return inputSection;\r\n }\r\n\r\n function cleanName(val) {\r\n const fName = val.firstName ? val.firstName.trim() : '';\r\n const mName = val.middleName ? val.middleName.trim() : '';\r\n const lName = val.lastName ? val.lastName.trim() : '';\r\n\r\n let combinedName = '';\r\n\r\n if (mName === '') {\r\n combinedName = `${fName} ${lName}`;\r\n } else {\r\n combinedName = `${fName} ${mName} ${lName}`;\r\n }\r\n return combinedName;\r\n }\r\n\r\n function cleanAddress(val, addNewLine = false) {\r\n const address1 = val.address1.trim();\r\n const address2 = val.address2.trim();\r\n let combinedAddress = '';\r\n if (addNewLine) {\r\n combinedAddress = `${address1}${address2 !== '' ? '\\n' + address2 : ''}`;\r\n } else {\r\n combinedAddress = `${address1} ${address2}`;\r\n }\r\n return combinedAddress.trim();\r\n }\r\n\r\n function cleanCityStateZip(val) {\r\n const city = val.city.trim();\r\n const state = val.state.trim();\r\n const zip = val.zip.trim();\r\n\r\n let cityStateZip = '';\r\n\r\n if (city !== '') {\r\n cityStateZip = city;\r\n }\r\n if (state !== '') {\r\n cityStateZip += `, ${state}`;\r\n }\r\n if (zip !== '') {\r\n cityStateZip += ` ${zip}`;\r\n }\r\n\r\n return cityStateZip.trim();\r\n }\r\n\r\n function updateInputsWithDeomgraphicsData() {\r\n try {\r\n const name = cleanName(gkDemographicsData);\r\n const nickName = gkDemographicsData.nickName;\r\n const address = cleanAddress(gkDemographicsData);\r\n const cityStateZip = cleanCityStateZip(gkDemographicsData);\r\n const county = gkDemographicsData.county.trim();\r\n const phone = gkDemographicsData.phone.trim();\r\n const email = gkDemographicsData.email;\r\n const sex = gkDemographicsData.sex.trim();\r\n const status = gkDemographicsData.status.trim();\r\n\r\n const ph = formatPhone(phone);\r\n\r\n let statusName;\r\n switch (status) {\r\n case 'S':\r\n statusName = 'Single';\r\n break;\r\n case 'M':\r\n statusName = 'Married';\r\n break;\r\n case 'D':\r\n statusName = 'Divorced';\r\n break;\r\n case 'P':\r\n statusName = 'Separated';\r\n break;\r\n case 'W':\r\n statusName = 'Widowed';\r\n break;\r\n case 'U':\r\n statusName = 'Unknown';\r\n break;\r\n default:\r\n statusName = '';\r\n break;\r\n }\r\n\r\n // NAME\r\n nameInput.querySelector('input').value = name;\r\n // PREF NAME\r\n prefNameInput.querySelector('input').value = nickName;\r\n // ADDRESS\r\n addressInput.querySelector('input').value = address;\r\n // CITY STATE ZIP\r\n cityStateZipInput.querySelector('input').value = cityStateZip;\r\n // COUNTY\r\n countyInput.querySelector('input').value = county;\r\n // PHONE\r\n phoneInput.querySelector('input').value = ph.disp;\r\n // EMAIL\r\n emailInput.querySelector('input').value = email;\r\n // SEX\r\n sexInput.querySelector('input').value = sex;\r\n // MARITAL STATUS\r\n maritalStatusInput.querySelector('input').value = statusName;\r\n } catch (error) {\r\n console.warn('ERROR PARSING CONTACT INFORMATION FROM GK');\r\n console.error(error);\r\n }\r\n }\r\n\r\n function validatePhone(val) {\r\n if (val === '') return true;\r\n\r\n const genTelRegEx = new RegExp(/^\\d{3}[- ]?\\d{3}[- ]?\\d{4}( x\\d{4})?|x\\d{4}$/im);\r\n return genTelRegEx.test(val);\r\n }\r\n\r\n function formatPhone(phNum) {\r\n if (phNum === '' || !validatePhone(phNum)) return { val: '', disp: '' };\r\n const phoneDigits = new RegExp(/\\d+/g);\r\n rawNumber = phNum.match(phoneDigits).join('');\r\n const pos1 = rawNumber.substr(0, 3);\r\n const pos2 = rawNumber.substr(3, 3);\r\n const pos3 = rawNumber.substr(6, 4);\r\n const pos4 = rawNumber.substr(10, 4);\r\n return {\r\n val: rawNumber,\r\n disp: `${pos1}-${pos2}-${pos3} ${pos4}`,\r\n };\r\n }\r\n\r\n async function updateFundingSources() {\r\n const allFundingSources = await contactInformationAjax.getPlanContactFundingSources({\r\n assessmentId: assessmentId,\r\n });\r\n const fsSort = allFundingSources.map(fs => {\r\n if (isNaN(parseInt(fs.fundingSource))) {\r\n return fs.fundingSource;\r\n } else return servicesSupports.getFundingSourceById(fs.fundingSource);\r\n });\r\n uniqueFundingSources = fsSort.filter(onlyUnique);\r\n fundingSourceList.innerText = uniqueFundingSources.join(', ');\r\n }\r\n\r\n function onlyUnique(value, index, self) {\r\n return self.indexOf(value) === index;\r\n }\r\n\r\n function getSectionMarkup() {\r\n const fsSort = allFundingSources.map(fs => {\r\n if (isNaN(parseInt(fs.fundingSource))) {\r\n return fs.fundingSource;\r\n } else return servicesSupports.getFundingSourceById(fs.fundingSource);\r\n });\r\n uniqueFundingSources = fsSort.filter(onlyUnique);\r\n\r\n const contactSection = document.createElement('div');\r\n contactSection.classList.add('contactInformation');\r\n contactSection.id = 'isp_contactInformationSection';\r\n\r\n const headingWrap = document.createElement('div');\r\n headingWrap.classList.add('sectionHeading', 'contactInfo');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Contact Information';\r\n\r\n const refreshWrap = document.createElement('div');\r\n refreshWrap.classList.add('refreshWrap');\r\n const refreshBtn = button.build({\r\n text: '',\r\n icon: 'refresh',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n gkDemographicsData = await contactInformationAjax.importExistingContactInfo({\r\n token: $.session.Token,\r\n peopleId: peopleId,\r\n });\r\n updateInputsWithDeomgraphicsData();\r\n let now = new Date();\r\n now = now.toTimeString();\r\n now = now.split(' ');\r\n now = now[0];\r\n now = UTIL.convertFromMilitary(now);\r\n lastrefresh.innerText = `Updated: ${now}`;\r\n },\r\n });\r\n const lastrefresh = document.createElement('span');\r\n\r\n const inputSection = buildContactInputs();\r\n\r\n refreshWrap.appendChild(lastrefresh);\r\n refreshWrap.appendChild(refreshBtn);\r\n headingWrap.appendChild(heading);\r\n headingWrap.appendChild(refreshWrap);\r\n contactSection.appendChild(headingWrap);\r\n contactSection.appendChild(inputSection);\r\n\r\n updateInputsWithDeomgraphicsData();\r\n\r\n const importantPeopleSection = isp_ci_importantPeople.buildSection(\r\n importantPeopleData,\r\n contactId,\r\n readOnly,\r\n gkRelationships,\r\n );\r\n const importantGroupsSection = isp_ci_importantGroups.buildSection(\r\n importantGroupsData,\r\n contactId,\r\n readOnly,\r\n );\r\n const importantPlacesSection = isp_ci_importantPlaces.buildSection(\r\n importantPlacesData,\r\n contactId,\r\n readOnly,\r\n );\r\n\r\n contactSection.appendChild(importantPeopleSection);\r\n contactSection.appendChild(importantGroupsSection);\r\n contactSection.appendChild(importantPlacesSection);\r\n\r\n return contactSection;\r\n }\r\n\r\n function planStatusChange() {\r\n const planStatus = plan.getPlanStatus();\r\n const planActiveStatus = plan.getPlanActiveStatus();\r\n\r\n if (planActiveStatus && planStatus === 'D' && $.session.planUpdate) {\r\n readOnly = false;\r\n } else {\r\n readOnly = true;\r\n }\r\n\r\n const contactInformationSection = document.getElementById('isp_contactInformationSection');\r\n contactInformationSection.innerHTML = '';\r\n\r\n const contactSection = getSectionMarkup();\r\n contactInformationSection.appendChild(contactSection);\r\n }\r\n\r\n async function init(pID) {\r\n assessmentId = pID;\r\n const planStatus = plan.getPlanStatus();\r\n const planActiveStatus = plan.getPlanActiveStatus();\r\n const consumer = plan.getSelectedConsumer();\r\n peopleId = consumer.id;\r\n gkRelationships = planData.getDropdownData().relationships;\r\n communicationType = planData.getDropdownData().communicationType;\r\n charLimits = planData.getISPCharacterLimits('contactInfo');\r\n\r\n if (planActiveStatus && planStatus === 'D' && $.session.planUpdate) {\r\n readOnly = false;\r\n } else {\r\n readOnly = true;\r\n }\r\n\r\n mainCIData = await contactInformationAjax.getPlanContactInformation({\r\n token: $.session.Token,\r\n assessmentId: pID,\r\n });\r\n const AdditionalSummaryData = await summaryAjax.getAdditionalAssessmentSummaryQuestions({\r\n anywAssessmentId: assessmentId,\r\n });\r\n if (AdditionalSummaryData) {\r\n if (AdditionalSummaryData.length > 0) {\r\n bestWayToConnectData = { ...AdditionalSummaryData[0] };\r\n if (\r\n bestWayToConnectData.bestWayToConnect === '' ||\r\n bestWayToConnectData.bestWayToConnect === '0'\r\n ) {\r\n bestWayToConnectData.bestWayToConnect = '%';\r\n }\r\n }\r\n } else {\r\n bestWayToConnectData = {\r\n moreDetail: '',\r\n bestWayToConnect: '%',\r\n };\r\n }\r\n\r\n contactId = mainCIData.contactId;\r\n\r\n const gkDemographicsDataProm = contactInformationAjax\r\n .importExistingContactInfo({\r\n token: $.session.Token,\r\n peopleId: peopleId,\r\n })\r\n .then(res => (gkDemographicsData = res));\r\n\r\n const importantPeopleDataProm = contactInformationAjax\r\n .getPlanImportantPeople({\r\n token: $.session.Token,\r\n contactId: contactId,\r\n })\r\n .then(res => (importantPeopleData = res));\r\n const importantGroupsDataProm = contactInformationAjax\r\n .getPlanImportantGroups({\r\n token: $.session.Token,\r\n contactId: contactId,\r\n })\r\n .then(res => (importantGroupsData = res));\r\n const importantPlacesDataProm = contactInformationAjax\r\n .getPlanImportantPlaces({\r\n token: $.session.Token,\r\n contactId: contactId,\r\n })\r\n .then(res => (importantPlacesData = res));\r\n\r\n const fundingSourceProm = contactInformationAjax\r\n .getPlanContactFundingSources({\r\n assessmentId: pID,\r\n })\r\n .then(res => {\r\n allFundingSources = res;\r\n });\r\n\r\n await Promise.all([\r\n gkDemographicsDataProm,\r\n importantPeopleDataProm,\r\n importantGroupsDataProm,\r\n importantPlacesDataProm,\r\n fundingSourceProm,\r\n ]);\r\n\r\n planValidation.contactsValidationCheck();\r\n }\r\n\r\n return {\r\n init,\r\n getSectionMarkup,\r\n cleanName,\r\n cleanAddress,\r\n cleanCityStateZip,\r\n formatPhone,\r\n validatePhone,\r\n planStatusChange,\r\n updateFundingSources,\r\n refreshDropdownData,\r\n };\r\n})();\r\n","const contactInformationAjax = (() => {\r\n // GET\r\n // ===============================\r\n async function getPlanContactInformation(retrieveData) {\r\n // string token, stirng assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContact/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function importExistingContactInfo(retrieveData) {\r\n // string token, stirng peopleId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/importExistingContactInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.importExistingContactInfoResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumerRelationships(retrieveData) {\r\n //token, consumerId, effectiveStartDate, effectiveEndDate\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerRelationshipsCI/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getConsumerRelationshipsCIResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanImportantPeople(retrieveData) {\r\n // string token, stirng contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContactImportantPeople/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactImportantPeopleResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanImportantPlaces(retrieveData) {\r\n // string token, stirng contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContactImportantPlaces/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactImportantPlacesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanImportantGroups(retrieveData) {\r\n // string token, stirng contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContactImportantGroups/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactImportantGroupsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanContactFundingSources(retrieveData) {\r\n // string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContactFundingSources/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactFundingSourcesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // INSERT\r\n // ===============================\r\n async function insertPlanContactImportantPeople(retrieveData) {\r\n // token, contactId, type, name, relationship, address, phone\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanContactImportantPeople/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanContactImportantPeopleResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanContactImportantGroup(retrieveData) {\r\n // token, contactId, status, name, address, phone, meetingInfo, whoHelps\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanContactImportantGroup/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanContactImportantGroupResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanContactImportantPlaces(retrieveData) {\r\n // token, contactId, type, name, address, phone, schedule, acuity\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanContactImportantPlaces/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanContactImportantPlacesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n // UPDATE\r\n // ===============================\r\n async function updatePlanContactImportantPeople(retrieveData) {\r\n // token, importantPersonId, type, name, relationship, address, phone\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContactImportantPeople/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantPeopleResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanContactImportantGroup(retrieveData) {\r\n // token, importantGroupId, status, name, address, phone, meetingInfo, whoHelps\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContactImportantGroup/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantGroupResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanContactImportantPlaces(retrieveData) {\r\n // token, importantPlacesId, type, name, address, phone, schedule, acuity\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContactImportantPlaces/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantPlacesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanContactImportantOrder(retrieveData) {\r\n // contactId, importantId, newPos, oldPos, type\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContactImportantOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanContact(retrieveData) {\r\n // token, contactId, ohiInfo, ohiPhone, ohiPolicy\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContact/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n // DELETE\r\n // ===============================\r\n async function deletePlanContactImportant(retrieveData) {\r\n /* token, importantId, type\r\n type: \r\n 1 = Groups\r\n 2 = People\r\n 3 = Places\r\n */\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanContactImportant/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantPlacesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n return {\r\n importExistingContactInfo,\r\n getPlanContactInformation,\r\n getConsumerRelationships,\r\n getPlanImportantPeople,\r\n getPlanImportantPlaces,\r\n getPlanImportantGroups,\r\n getPlanContactFundingSources,\r\n insertPlanContactImportantPeople,\r\n insertPlanContactImportantGroup,\r\n insertPlanContactImportantPlaces,\r\n updatePlanContactImportantPeople,\r\n updatePlanContactImportantGroup,\r\n updatePlanContactImportantPlaces,\r\n updatePlanContactImportantOrder,\r\n updatePlanContact,\r\n deletePlanContactImportant,\r\n };\r\n})();\r\n","const isp_ci_importantPeople = (() => {\r\n let cID;\r\n let rawPeopleTableData;\r\n let gkRelationships;\r\n let readOnly;\r\n let nameInput;\r\n let relationshipInput;\r\n let addressInput;\r\n let phoneInput;\r\n let phoneInput2;\r\n let phoneExt;\r\n let phone2Ext;\r\n let emailInput;\r\n let typeDropdown;\r\n let typeOtherInput;\r\n let saveBtn;\r\n\r\n function popFromRelationships() {\r\n const mainPopup = document.getElementById('isp-ciip-mainPopup');\r\n mainPopup.style.display = 'none';\r\n\r\n const importPopup = POPUP.build({\r\n id: 'isp-ciip-importPopup',\r\n closeCallback: () => {\r\n overlay.show();\r\n mainPopup.style.removeProperty('display');\r\n },\r\n });\r\n const relationshipSection = document.createElement('div');\r\n\r\n gkRelationships.forEach(rel => {\r\n const name = contactInformation.cleanName(rel);\r\n const address = contactInformation.cleanAddress(rel, true);\r\n const cityStateZip = contactInformation.cleanCityStateZip(rel);\r\n\r\n const relationshipDisp = document.createElement('div');\r\n // relationshipDisp.innerHTML = `Name: ${name}
    Relationship: ${rel.relationship}`;\r\n relationshipDisp.innerHTML = `Name: ${name}`;\r\n relationshipDisp.classList.add('isp_ciip_gkRelationships');\r\n\r\n relationshipDisp.addEventListener('click', () =>\r\n applyGKRelationship({\r\n name: name,\r\n relationship: rel.relationship,\r\n address: address,\r\n cityStateZip: cityStateZip,\r\n phone: rel.phone,\r\n popup: importPopup,\r\n email: rel.email,\r\n }),\r\n );\r\n\r\n relationshipSection.appendChild(relationshipDisp);\r\n });\r\n\r\n importPopup.appendChild(relationshipSection);\r\n POPUP.show(importPopup);\r\n }\r\n function popFromSignatures() {\r\n const mainPopup = document.getElementById('isp-ciip-mainPopup');\r\n mainPopup.style.display = 'none';\r\n\r\n const importPopup = POPUP.build({\r\n id: 'isp-ciip-importPopup2',\r\n closeCallback: () => {\r\n overlay.show();\r\n mainPopup.style.removeProperty('display');\r\n },\r\n });\r\n const signaturesSection = document.createElement('div');\r\n\r\n const signatureNames = planConsentAndSign.getNames();\r\n signatureNames.forEach(name => {\r\n const sigDiv = document.createElement('div');\r\n sigDiv.innerHTML = `Name: ${name}`;\r\n sigDiv.classList.add('isp_ciip_gkSignautres');\r\n\r\n sigDiv.addEventListener('click', () => {\r\n POPUP.hide(importPopup);\r\n overlay.show();\r\n const mainPopup = document.getElementById('isp-ciip-mainPopup');\r\n mainPopup.style.removeProperty('display');\r\n\r\n nameInput.querySelector('input').value = name;\r\n if (name === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n\r\n checkForErrors();\r\n });\r\n\r\n signaturesSection.appendChild(sigDiv);\r\n });\r\n\r\n importPopup.appendChild(signaturesSection);\r\n POPUP.show(importPopup);\r\n }\r\n\r\n function applyGKRelationship(opts) {\r\n POPUP.hide(opts.popup);\r\n overlay.show();\r\n const mainPopup = document.getElementById('isp-ciip-mainPopup');\r\n mainPopup.style.removeProperty('display');\r\n\r\n let joinedAddress = '';\r\n\r\n if (opts.address !== '') {\r\n joinedAddress = opts.address;\r\n }\r\n if (opts.cityStateZip !== '') {\r\n joinedAddress += '\\n' + opts.cityStateZip;\r\n }\r\n\r\n const phoneDisp = contactInformation.formatPhone(opts.phone.trim()).disp;\r\n // NAME\r\n nameInput.querySelector('input').value = opts.name;\r\n if (opts.name === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n // RELATIONSHIP\r\n // relationshipInput.querySelector('input').value = opts.relationship;\r\n // if (opts.relationship === '') {\r\n // relationshipInput.classList.add('error');\r\n // } else {\r\n // relationshipInput.classList.remove('error');\r\n // }\r\n // ADDRESS\r\n addressInput.querySelector('textarea').value = joinedAddress.trim();\r\n if (joinedAddress.trim() === '') {\r\n addressInput.classList.add('error');\r\n } else {\r\n addressInput.classList.remove('error');\r\n }\r\n // PHONE\r\n phoneInput.querySelector('input').value = phoneDisp;\r\n if (phoneDisp === '') {\r\n phoneInput.classList.add('error');\r\n } else {\r\n phoneInput.classList.remove('error');\r\n }\r\n\r\n // EMAIL\r\n emailInput.querySelector('input').value = opts.email; \r\n\r\n checkForErrors();\r\n }\r\n\r\n function tablePopup(popupData, isNew) {\r\n const popup = POPUP.build({ id: 'isp-ciip-mainPopup' });\r\n\r\n async function saveData() {\r\n popup.style.display = 'none';\r\n pendingSave.show('Saving...');\r\n\r\n const typeDD = document.getElementById('isp-ciip-typeDropdown');\r\n const typeVal = typeDD.options[typeDD.selectedIndex].value;\r\n const nameVal = document.getElementById('isp-ciip-nameInput').value;\r\n const relationshipVal = '';\r\n const addressVal = document.getElementById('isp-ciip-addressInput').value;\r\n const phoneVal = contactInformation.formatPhone(\r\n document.getElementById('isp-ciip-phoneInput').value,\r\n ).val;\r\n const phoneVal2 = contactInformation.formatPhone(\r\n document.getElementById('isp-ciip-phoneInput2').value,\r\n ).val;\r\n const extVal = document.getElementById('isp-ciip-extinput').value;\r\n const extVal2 = document.getElementById('isp-ciip-extinput2').value;\r\n const emailVal = document.getElementById('isp-ciip-emailInput').value;\r\n const typeOtherVal = document.getElementById('isp-ciip-typeOther').value;\r\n\r\n\r\n let thisPhone = (extVal !== '') ? UTIL.formatPhoneNumber(phoneVal) + ' ext. ' + extVal : UTIL.formatPhoneNumber(phoneVal);\r\n let thisPhone2 = (phoneVal2 !== '') ? UTIL.formatPhoneNumber(phoneVal2) : '';\r\n thisPhone2 = (extVal2 !== '') ? UTIL.formatPhoneNumber(phoneVal2) + ' ext. ' + extVal2 : UTIL.formatPhoneNumber(phoneVal2);\r\n\r\n\r\n if (isNew) {\r\n //Insert\r\n // UNSAVABLE NOTE TEXT IS REMOVED IN BACKEND ON INSERTS\r\n const data = {\r\n token: $.session.Token,\r\n contactId: cID,\r\n type: typeVal,\r\n name: nameVal,\r\n relationship: relationshipVal,\r\n address: addressVal,\r\n phone: phoneVal,\r\n phone2: phoneVal2,\r\n phoneExt: extVal,\r\n phone2Ext: extVal2,\r\n email: emailVal,\r\n typeOther: typeOtherVal,\r\n };\r\n const importantPersonId = await contactInformationAjax.insertPlanContactImportantPeople(\r\n data,\r\n );\r\n data.importantPersonId = importantPersonId;\r\n data.token = null;\r\n\r\n let typeValueUpdate = typeVal;\r\n if (typeVal == 'Other' && typeOtherVal != '') {\r\n typeValueUpdate = typeVal + ' - ' + typeOtherVal;\r\n }\r\n\r\n table.addRows(\r\n 'isp_ci_importantPeopleTable',\r\n [\r\n {\r\n values: [typeValueUpdate, nameVal, addressVal, emailVal, thisPhone + '\\n' + thisPhone2],\r\n id: `ci-impPeople-${importantPersonId}`,\r\n onClick: () => {\r\n tablePopup(data, false);\r\n },\r\n },\r\n ],\r\n true,\r\n );\r\n } else {\r\n //Update\r\n\r\n // Validation check for rows with type other. places red '!' in row if no value is typeOther\r\n if (typeVal === 'Other' && typeOtherVal === '') {\r\n typeValValidated =\r\n `${icons.error} ${typeVal}`;\r\n } else {\r\n typeValValidated = typeVal;\r\n }\r\n\r\n const data = {\r\n token: $.session.Token,\r\n importantPersonId: popupData.importantPersonId,\r\n type: typeVal,\r\n name: UTIL.removeUnsavableNoteText(nameVal),\r\n relationship: UTIL.removeUnsavableNoteText(relationshipVal),\r\n address: UTIL.removeUnsavableNoteText(addressVal),\r\n phone: UTIL.removeUnsavableNoteText(phoneVal),\r\n phone2: UTIL.removeUnsavableNoteText(phoneVal2),\r\n phoneExt: extVal,\r\n phone2Ext: extVal2,\r\n email: emailVal,\r\n typeOther: UTIL.removeUnsavableNoteText(typeOtherVal),\r\n };\r\n await contactInformationAjax.updatePlanContactImportantPeople(data);\r\n data.token = null;\r\n\r\n let typeValueUpdate = typeValValidated;\r\n if (typeVal == 'Other' && typeOtherVal != '') {\r\n typeValueUpdate = typeValValidated + ' - ' + typeOtherVal;\r\n }\r\n\r\n table.updateRows(\r\n 'isp_ci_importantPeopleTable',\r\n [\r\n\r\n {\r\n\r\n values: [typeValueUpdate, nameVal, addressVal, emailVal, thisPhone + '\\n' + thisPhone2],\r\n id: `ci-impPeople-${popupData.importantPersonId}`,\r\n onClick: () => {\r\n tablePopup(data, false);\r\n },\r\n },\r\n ],\r\n true,\r\n );\r\n }\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(popup);\r\n }, 700);\r\n }\r\n\r\n async function deleteData() {\r\n const data = {\r\n token: $.session.Token,\r\n importantId: popupData.importantPersonId,\r\n type: 2,\r\n };\r\n const tableRow = document.getElementById(`ci-impPeople-${popupData.importantPersonId}`);\r\n tableRow.remove();\r\n await contactInformationAjax.deletePlanContactImportant(data);\r\n }\r\n\r\n if (isNew) {\r\n popupData = {\r\n type: '',\r\n typeOther: '',\r\n name: '',\r\n relationship: '',\r\n address: '',\r\n phone: '',\r\n email: '',\r\n };\r\n }\r\n typeDropdown = dropdown.build({\r\n dropdownId: 'isp-ciip-typeDropdown',\r\n label: '*Type',\r\n readonly: readOnly,\r\n });\r\n if (popupData.type === '') typeDropdown.classList.add('error');\r\n const typeDropdownValues = [\r\n { text: '', value: '' },\r\n { text: 'Case Manager', value: 'Case Manager' },\r\n { text: 'Emergency Contact', value: 'Emergency Contact' },\r\n { text: 'Family', value: 'Family' },\r\n { text: 'Friend', value: 'Friend' },\r\n { text: 'Guardian of Person', value: 'Guardian of Person' },\r\n { text: 'Guardian of Estate', value: 'Guardian of Estate' },\r\n { text: 'Guardian of Person AND Estate', value: 'Guardian of Person AND Estate' },\r\n { text: 'Home Provider', value: 'Home Provider' },\r\n { text: 'Medical Provider', value: 'Medical Provider' },\r\n { text: 'Other', value: 'Other' },\r\n { text: 'Partner', value: 'Partner' },\r\n { text: 'Payee', value: 'Payee' },\r\n { text: 'Primary Doctor', value: 'Primary Doctor' },\r\n { text: 'Support Broker', value: 'Support Broker' },\r\n ];\r\n\r\n if (popupData.type.includes('Other')) {\r\n popupData.type = 'Other';\r\n }\r\n dropdown.populate(typeDropdown, typeDropdownValues, popupData.type);\r\n\r\n typeOtherInput = input.build({\r\n label: '*Type Other',\r\n value: popupData.typeOther,\r\n id: `isp-ciip-typeOther`,\r\n readonly: readOnly,\r\n type: 'textarea',\r\n charLimit: 100,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n if (popupData.type !== 'Other') {\r\n typeOtherInput.classList.add('disabled');\r\n } else {\r\n if (popupData.typeOther === '') typeOtherInput.classList.add('error');\r\n }\r\n\r\n const importFromRelationshipsBtn = button.build({\r\n text: 'Import from Relationships',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n popFromRelationships();\r\n },\r\n });\r\n importFromRelationshipsBtn.style.width = '100%';\r\n const importFromSignaturesBtn = button.build({\r\n text: 'Import from Signatures',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n popFromSignatures();\r\n },\r\n });\r\n importFromSignaturesBtn.style.width = '100%';\r\n\r\n nameInput = input.build({\r\n label: '*Name',\r\n value: popupData.name,\r\n id: `isp-ciip-nameInput`,\r\n readonly: readOnly,\r\n });\r\n if (popupData.name === '') nameInput.classList.add('error');\r\n\r\n addressInput = input.build({\r\n label: '*Address',\r\n value: popupData.address,\r\n type: 'textarea',\r\n id: `isp-ciip-addressInput`,\r\n readonly: readOnly,\r\n classNames: 'autosize',\r\n });\r\n if (popupData.address === '') addressInput.classList.add('error');\r\n\r\n phoneInput = input.build({\r\n label: '*Phone',\r\n value: UTIL.formatPhoneNumber(popupData.phone),\r\n id: `isp-ciip-phoneInput`,\r\n readonly: readOnly,\r\n type: 'tel',\r\n attributes: [\r\n { key: 'maxlength', value: '12' },\r\n { key: 'pattern', value: '[0-9]{3}-[0-9]{3}-[0-9]{4}' },\r\n { key: 'placeholder', value: '888-888-8888' },\r\n ],\r\n });\r\n if (popupData.phone === '') phoneInput.classList.add('error');\r\n\r\n phoneInput2 = input.build({\r\n label: 'Phone 2',\r\n value: UTIL.formatPhoneNumber(popupData.phone2),\r\n id: `isp-ciip-phoneInput2`,\r\n readonly: readOnly,\r\n type: 'tel',\r\n attributes: [\r\n { key: 'maxlength', value: '12' },\r\n { key: 'pattern', value: '[0-9]{3}-[0-9]{3}-[0-9]{4}' },\r\n { key: 'placeholder', value: '888-888-8888' },\r\n ],\r\n });\r\n\r\n phoneExt = input.build({\r\n label: 'Ext.',\r\n value: popupData.phoneExt,\r\n readonly: readOnly,\r\n type: 'number',\r\n id: 'isp-ciip-extinput',\r\n attributes: [{ key: 'maxlength', value: '5' }],\r\n });\r\n\r\n phone2Ext = input.build({\r\n label: 'Ext.',\r\n value: popupData.phone2Ext,\r\n readonly: readOnly,\r\n type: 'number',\r\n id: 'isp-ciip-extinput2',\r\n attributes: [{ key: 'maxlength', value: '5' }],\r\n });\r\n\r\n emailInput = input.build({\r\n label: 'Email',\r\n value: popupData.email,\r\n id: `isp-ciip-emailInput`,\r\n readonly: readOnly,\r\n type: 'email',\r\n });\r\n\r\n // Wrap up Phones w/Ext.\r\n const phoneWrap = document.createElement('div');\r\n const phoneWrap2 = document.createElement('div');\r\n phoneWrap.classList.add('phoneWrap');\r\n phoneWrap2.classList.add('phoneWrap');\r\n phoneWrap.appendChild(phoneInput);\r\n phoneWrap.appendChild(phoneExt);\r\n phoneWrap2.appendChild(phoneInput2);\r\n phoneWrap2.appendChild(phone2Ext);\r\n\r\n // Action Buttons\r\n saveBtn = button.build({\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n await saveData();\r\n await planValidation.contactsValidationCheck();\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n popup.style.display = 'none';\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to delete this entry?',\r\n accept: {\r\n text: 'Yes',\r\n callback: async () => {\r\n await deleteData();\r\n POPUP.hide(popup);\r\n await planValidation.contactsValidationCheck();\r\n },\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n overlay.show();\r\n popup.style.removeProperty('display');\r\n },\r\n },\r\n });\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n\r\n if (isNew) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n } else if (readOnly) {\r\n btnWrap.appendChild(cancelBtn);\r\n } else if (!isNew) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n btnWrap2.appendChild(cancelBtn);\r\n }\r\n\r\n popup.appendChild(typeDropdown);\r\n popup.appendChild(typeOtherInput);\r\n if (!readOnly) popup.appendChild(importFromRelationshipsBtn);\r\n if (!readOnly) popup.appendChild(importFromSignaturesBtn);\r\n popup.appendChild(nameInput);\r\n // popup.appendChild(relationshipInput);\r\n popup.appendChild(addressInput);\r\n popup.appendChild(emailInput);\r\n popup.appendChild(phoneWrap);\r\n popup.appendChild(phoneWrap2);\r\n popup.appendChild(btnWrap);\r\n if (!isNew && !readOnly) popup.appendChild(btnWrap2);\r\n\r\n setupEvents();\r\n\r\n POPUP.show(popup);\r\n checkForErrors();\r\n DOM.autosizeTextarea();\r\n }\r\n\r\n function setupEvents() {\r\n phoneInput.addEventListener('input', event => {\r\n if (event.target.value !== '' && contactInformation.validatePhone(event.target.value)) {\r\n const phnDisp = contactInformation.formatPhone(event.target.value).disp;\r\n event.target.value = phnDisp;\r\n phoneInput.classList.remove('error');\r\n } else {\r\n phoneInput.classList.add('error');\r\n }\r\n checkForErrors();\r\n });\r\n\r\n phoneInput2.addEventListener('input', event => {\r\n if (event.target.value !== '' && contactInformation.validatePhone(event.target.value)) {\r\n const phnDisp = contactInformation.formatPhone(event.target.value).disp;\r\n event.target.value = phnDisp;\r\n }\r\n\r\n if (event.target.value === '' || contactInformation.validatePhone(event.target.value)) {\r\n phoneInput2.classList.remove('error');\r\n } else {\r\n phoneInput2.classList.add('error');\r\n }\r\n\r\n checkForErrors();\r\n });\r\n\r\n phoneExt.addEventListener('input', event => {\r\n if (event.target.value.length > 5) {\r\n const value = event.target.value;\r\n const slicedValue = value.slice(0, 5);\r\n event.target.value = slicedValue;\r\n }\r\n });\r\n phone2Ext.addEventListener('input', event => {\r\n if (event.target.value.length > 5) {\r\n const value = event.target.value;\r\n const slicedValue = value.slice(0, 5);\r\n event.target.value = slicedValue;\r\n }\r\n });\r\n typeDropdown.addEventListener('change', event => {\r\n if (event.target.value === '') {\r\n typeDropdown.classList.add('error');\r\n } else {\r\n typeDropdown.classList.remove('error');\r\n }\r\n\r\n if (event.target.value !== 'Other') {\r\n typeOtherInput.classList.remove('error');\r\n typeOtherInput.classList.add('disabled');\r\n typeOtherInput.querySelector('textarea').value = '';\r\n } else {\r\n typeOtherInput.classList.remove('disabled');\r\n typeOtherInput.classList.add('error');\r\n }\r\n checkForErrors();\r\n });\r\n typeOtherInput.addEventListener('input', event => {\r\n if (event.target.value.trim() === '') {\r\n typeOtherInput.classList.add('error');\r\n } else {\r\n typeOtherInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n nameInput.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n addressInput.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n addressInput.classList.add('error');\r\n } else {\r\n addressInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n }\r\n\r\n function checkForErrors() {\r\n const errors = document.getElementById('isp-ciip-mainPopup').querySelectorAll('.error');\r\n if (errors.length > 0) {\r\n saveBtn.classList.add('disabled');\r\n saveBtn.disabled = true;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveBtn.disabled = false;\r\n }\r\n }\r\n\r\n function buildTableMarkup() {\r\n const peopleTable = table.build({\r\n tableId: 'isp_ci_importantPeopleTable',\r\n headline: 'Important People',\r\n columnHeadings: ['Type', 'Name', 'Address', 'Email', 'Phone'],\r\n sortable: true,\r\n onSortCallback: res => {\r\n contactInformationAjax.updatePlanContactImportantOrder({\r\n contactId: cID,\r\n importantId: res.row.id.split('-')[2],\r\n newPos: res.newIndex,\r\n oldPos: res.oldIndex,\r\n type: 2,\r\n });\r\n },\r\n });\r\n\r\n // Set the data type for each header, for sorting purposes\r\n let number = 0;\r\n const headers = peopleTable.querySelectorAll('.header div');\r\n if (headers.length > 5)\r\n number = 1;\r\n headers[0 + number].setAttribute('data-type', 'string'); // Type\r\n headers[1 + number].setAttribute('data-type', 'string'); // Name\r\n headers[2 + number].setAttribute('data-type', 'string'); // Address\r\n headers[3 + number].setAttribute('data-type', 'string'); // Email\r\n headers[4 + number].setAttribute('data-type', 'number'); // Phone\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(peopleTable);\r\n\r\n\r\n if (readOnly) peopleTable.classList.add('disableDrag');\r\n\r\n if (rawPeopleTableData) {\r\n const tableData = rawPeopleTableData.map(d => {\r\n let thisPhone = (d.phoneExt !== '') ? UTIL.formatPhoneNumber(d.phone) + ' ext. ' + d.phoneExt : UTIL.formatPhoneNumber(d.phone);\r\n let thisPhone2 = (d.phone2 !== '') ? UTIL.formatPhoneNumber(d.phone2) : '';\r\n thisPhone2 = (d.phone2Ext !== '') ? UTIL.formatPhoneNumber(d.phone2) + ' ext. ' + d.phone2Ext : UTIL.formatPhoneNumber(d.phone2);\r\n\r\n // Validation check for rows with type other. places red '!' in row if no value is typeOther\r\n if (d.type === 'Other' && d.typeOther === '') {\r\n d.typeValidated =\r\n `${icons.error} ${d.type}`;\r\n } else {\r\n d.typeValidated = d.type;\r\n }\r\n return {\r\n values: [d.typeValidated, d.name, d.address, d.email, thisPhone + '\\n' + thisPhone2],\r\n id: `ci-impPeople-${d.importantPersonId}`,\r\n onClick: () => {\r\n tablePopup(d, false);\r\n },\r\n };\r\n });\r\n table.populate(peopleTable, tableData, true);\r\n }\r\n\r\n return peopleTable;\r\n }\r\n\r\n function buildSection(tableData, contactId, ro, relationships) {\r\n readOnly = ro;\r\n cID = contactId;\r\n rawPeopleTableData = tableData;\r\n gkRelationships = relationships;\r\n const ipSection = document.createElement('div');\r\n\r\n const addPersonBtn = button.build({\r\n text: 'Add Person',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => tablePopup(null, true),\r\n });\r\n\r\n if (readOnly) addPersonBtn.classList.add('disabled');\r\n\r\n const table = buildTableMarkup();\r\n ipSection.appendChild(table);\r\n ipSection.appendChild(addPersonBtn);\r\n\r\n return ipSection;\r\n }\r\n\r\n return {\r\n buildSection,\r\n };\r\n})();\r\n","const isp_ci_importantPlaces = (() => {\r\n let cID;\r\n let rawPlacesTableData;\r\n let readOnly;\r\n let typeDropdown;\r\n let typeOtherInput;\r\n let nameInput;\r\n let addressInput;\r\n let phoneInput;\r\n let saveBtn;\r\n\r\n function tablePopup(popupData, isNew) {\r\n const popup = POPUP.build({ id: 'isp-ciip-mainPopup' });\r\n\r\n async function saveData() {\r\n popup.style.display = 'none';\r\n pendingSave.show('Saving...');\r\n\r\n const typeDD = document.getElementById('isp-ciip-typeDropdown');\r\n const typeVal = typeDD.options[typeDD.selectedIndex].value;\r\n const nameVal = document.getElementById('isp-ciip-nameInput').value;\r\n const addressVal = document.getElementById('isp-ciip-addressInput').value;\r\n const phoneVal = contactInformation.formatPhone(\r\n document.getElementById('isp-ciip-phoneInput').value,\r\n ).val;\r\n const scheduleVal = document.getElementById('isp-ciip-scheduleInput').value;\r\n const acuityVal = document.getElementById('isp-ciip-acuityInput').value;\r\n const typeOtherVal = document.getElementById('isp-ciip-typeOther').value;\r\n\r\n if (isNew) {\r\n //Insert\r\n // UNSAVABLE NOTE TEXT IS REMOVED IN BACKEND ON INSERTS\r\n const data = {\r\n token: $.session.Token,\r\n contactId: cID,\r\n type: typeVal,\r\n name: nameVal,\r\n address: addressVal,\r\n phone: phoneVal,\r\n schedule: scheduleVal,\r\n acuity: acuityVal,\r\n typeOther: typeOtherVal,\r\n };\r\n const insertId = await contactInformationAjax.insertPlanContactImportantPlaces(data);\r\n data.importantPlacesId = insertId;\r\n data.token = null;\r\n let typeValueUpdate = typeVal;\r\n if (typeVal == 'Other' && typeOtherVal != '') {\r\n typeValueUpdate = typeVal + ' - ' + typeOtherVal;\r\n }\r\n\r\n table.addRows(\r\n 'isp_ci_importanPlacesTable',\r\n [\r\n {\r\n values: [\r\n typeValueUpdate,\r\n nameVal,\r\n addressVal,\r\n UTIL.formatPhoneNumber(phoneVal),\r\n scheduleVal,\r\n acuityVal,\r\n ],\r\n id: `ci-impPlace-${insertId}`,\r\n onClick: () => {\r\n tablePopup(data, false);\r\n },\r\n },\r\n ],\r\n true,\r\n );\r\n } else {\r\n //Update\r\n const data = {\r\n token: $.session.Token,\r\n importantPlacesId: popupData.importantPlacesId,\r\n type: typeVal,\r\n name: UTIL.removeUnsavableNoteText(nameVal),\r\n address: UTIL.removeUnsavableNoteText(addressVal),\r\n phone: UTIL.removeUnsavableNoteText(phoneVal),\r\n schedule: UTIL.removeUnsavableNoteText(scheduleVal),\r\n acuity: UTIL.removeUnsavableNoteText(acuityVal),\r\n typeOther: UTIL.removeUnsavableNoteText(typeOtherVal),\r\n };\r\n await contactInformationAjax.updatePlanContactImportantPlaces(data);\r\n\r\n // Validation check for rows with type other. places red '!' in row if no value is typeOther\r\n if (typeVal === 'Other' && typeOtherVal === '') {\r\n typeValValidated =\r\n `${icons.error} ${typeVal}`;\r\n } else {\r\n typeValValidated = typeVal;\r\n }\r\n\r\n data.token = null;\r\n let typeValueUpdate = typeValValidated;\r\n if (typeVal == 'Other' && typeOtherVal != '') {\r\n typeValueUpdate = typeValValidated + ' - ' + typeOtherVal;\r\n } \r\n\r\n table.updateRows(\r\n 'isp_ci_importanPlacesTable',\r\n [\r\n {\r\n values: [\r\n typeValueUpdate,\r\n nameVal,\r\n addressVal,\r\n UTIL.formatPhoneNumber(phoneVal),\r\n scheduleVal,\r\n acuityVal,\r\n ],\r\n id: `ci-impPlace-${popupData.importantPlacesId}`,\r\n onClick: () => {\r\n tablePopup(data, false);\r\n },\r\n },\r\n ],\r\n true,\r\n );\r\n }\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(popup);\r\n }, 700);\r\n }\r\n\r\n async function deleteData() {\r\n const data = {\r\n token: $.session.Token,\r\n importantId: popupData.importantPlacesId,\r\n type: 3,\r\n };\r\n const tableRow = document.getElementById(`ci-impPlace-${popupData.importantPlacesId}`);\r\n tableRow.remove();\r\n await contactInformationAjax.deletePlanContactImportant(data);\r\n }\r\n\r\n if (isNew) {\r\n popupData = {\r\n type: '',\r\n typeOther: '',\r\n name: '',\r\n address: '',\r\n phone: '',\r\n schedule: '',\r\n acuity: '',\r\n };\r\n }\r\n typeDropdown = dropdown.build({\r\n dropdownId: 'isp-ciip-typeDropdown',\r\n label: '*Type',\r\n readonly: readOnly,\r\n });\r\n if (popupData.type === '') typeDropdown.classList.add('error');\r\n\r\n const typeDropdownValues = [\r\n { text: '', value: '' },\r\n { text: 'ADS Provider', value: 'ADS Provider' },\r\n { text: 'Day Provider', value: 'Day Provider' },\r\n { text: 'Other', value: 'Other' },\r\n { text: 'Primary Hospital', value: 'Primary Hospital' },\r\n { text: 'School', value: 'School' },\r\n { text: 'Work', value: 'Work' },\r\n ];\r\n\r\n if (popupData.type.includes('Other')) {\r\n popupData.type = 'Other';\r\n }\r\n dropdown.populate(typeDropdown, typeDropdownValues, popupData.type);\r\n\r\n typeOtherInput = input.build({\r\n label: '*Type Other',\r\n value: popupData.typeOther,\r\n id: `isp-ciip-typeOther`,\r\n readonly: readOnly,\r\n type: 'textarea',\r\n charLimit: 100,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n if (popupData.type !== 'Other') {\r\n typeOtherInput.classList.add('disabled');\r\n } else {\r\n if (popupData.typeOther === '') typeOtherInput.classList.add('error');\r\n }\r\n\r\n nameInput = input.build({\r\n label: '*Name',\r\n value: popupData.name,\r\n id: `isp-ciip-nameInput`,\r\n readonly: readOnly,\r\n });\r\n if (popupData.name === '') nameInput.classList.add('error');\r\n\r\n addressInput = input.build({\r\n label: '*Address',\r\n value: popupData.address,\r\n id: `isp-ciip-addressInput`,\r\n type: 'textarea',\r\n readonly: readOnly,\r\n classNames: 'autosize',\r\n });\r\n if (popupData.address === '') addressInput.classList.add('error');\r\n\r\n phoneInput = input.build({\r\n label: '*Phone',\r\n value: UTIL.formatPhoneNumber(popupData.phone),\r\n id: `isp-ciip-phoneInput`,\r\n readonly: readOnly,\r\n attributes: [\r\n { key: 'maxlength', value: '12' },\r\n { key: 'pattern', value: '[0-9]{3}-[0-9]{3}-[0-9]{4}' },\r\n { key: 'placeholder', value: '888-888-8888' },\r\n ],\r\n });\r\n if (popupData.phone === '') phoneInput.classList.add('error');\r\n\r\n const scheduleInput = input.build({\r\n label: 'Schedule',\r\n value: popupData.schedule,\r\n id: `isp-ciip-scheduleInput`,\r\n readonly: readOnly,\r\n });\r\n const acuityInput = input.build({\r\n label: 'Acuity',\r\n value: popupData.acuity,\r\n id: `isp-ciip-acuityInput`,\r\n readonly: readOnly,\r\n });\r\n\r\n saveBtn = button.build({\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n await saveData();\r\n await planValidation.contactsValidationCheck();\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n popup.style.display = 'none';\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to delete this entry?',\r\n accept: {\r\n text: 'Yes',\r\n callback: async () => {\r\n await deleteData();\r\n POPUP.hide(popup);\r\n await planValidation.contactsValidationCheck();\r\n },\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n overlay.show();\r\n popup.style.removeProperty('display');\r\n },\r\n },\r\n });\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n\r\n if (isNew) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n } else if (readOnly) {\r\n btnWrap.appendChild(cancelBtn);\r\n } else if (!isNew) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n btnWrap2.appendChild(cancelBtn);\r\n }\r\n popup.appendChild(typeDropdown);\r\n popup.appendChild(typeOtherInput);\r\n popup.appendChild(nameInput);\r\n popup.appendChild(addressInput);\r\n popup.appendChild(phoneInput);\r\n popup.appendChild(scheduleInput);\r\n popup.appendChild(acuityInput);\r\n popup.appendChild(btnWrap);\r\n if (!isNew && !readOnly) popup.appendChild(btnWrap2);\r\n\r\n setupEvents();\r\n\r\n POPUP.show(popup);\r\n checkForErrors();\r\n DOM.autosizeTextarea();\r\n }\r\n\r\n function setupEvents() {\r\n phoneInput.addEventListener('input', event => {\r\n if (event.target.value !== '' && contactInformation.validatePhone(event.target.value)) {\r\n const phnDisp = contactInformation.formatPhone(event.target.value).disp;\r\n event.target.value = phnDisp;\r\n phoneInput.classList.remove('error');\r\n } else {\r\n phoneInput.classList.add('error');\r\n }\r\n checkForErrors();\r\n });\r\n typeDropdown.addEventListener('change', event => {\r\n if (event.target.value === '') {\r\n typeDropdown.classList.add('error');\r\n } else {\r\n typeDropdown.classList.remove('error');\r\n }\r\n\r\n if (event.target.value !== 'Other') {\r\n typeOtherInput.classList.remove('error');\r\n typeOtherInput.classList.add('disabled');\r\n typeOtherInput.querySelector('textarea').value = '';\r\n } else {\r\n typeOtherInput.classList.remove('disabled');\r\n typeOtherInput.classList.add('error');\r\n }\r\n checkForErrors();\r\n });\r\n typeOtherInput.addEventListener('input', event => {\r\n if (event.target.value.trim() === '') {\r\n typeOtherInput.classList.add('error');\r\n } else {\r\n typeOtherInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n nameInput.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n addressInput.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n addressInput.classList.add('error');\r\n } else {\r\n addressInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n }\r\n\r\n function checkForErrors() {\r\n const errors = document.getElementById('isp-ciip-mainPopup').querySelectorAll('.error');\r\n if (errors.length > 0) {\r\n saveBtn.classList.add('disabled');\r\n saveBtn.disabled = true;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveBtn.disabled = false;\r\n }\r\n }\r\n\r\n function buildTableMarkup() {\r\n const placesTable = table.build({\r\n tableId: 'isp_ci_importanPlacesTable',\r\n headline: 'Important Places',\r\n columnHeadings: ['Type', 'Name', 'Address', 'Phone', 'Schedule', 'Acuity'],\r\n sortable: true,\r\n onSortCallback: res => {\r\n contactInformationAjax.updatePlanContactImportantOrder({\r\n contactId: cID,\r\n importantId: res.row.id.split('-')[2],\r\n newPos: res.newIndex,\r\n oldPos: res.oldIndex,\r\n type: 3,\r\n });\r\n },\r\n });\r\n\r\n // Set the data type for each header, for sorting purposes\r\n let number = 0;\r\n const headers = placesTable.querySelectorAll('.header div');\r\n if (headers.length > 6)\r\n number = 1;\r\n headers[0 + number].setAttribute('data-type', 'string'); // Type\r\n headers[1 + number].setAttribute('data-type', 'string'); // Name\r\n headers[2 + number].setAttribute('data-type', 'string'); // Address\r\n headers[3 + number].setAttribute('data-type', 'number'); // Phone\r\n headers[4 + number].setAttribute('data-type', 'string'); // Schedule\r\n headers[5 + number].setAttribute('data-type', 'string'); // Acuity\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(placesTable);\r\n\r\n\r\n if (readOnly) placesTable.classList.add('disableDrag');\r\n\r\n if (rawPlacesTableData) {\r\n const tableData = rawPlacesTableData.map(d => {\r\n // Validation check for rows with type other. places red '!' in row if no value is typeOther\r\n if (d.type === 'Other' && d.typeOther === '') {\r\n d.typeValidated =\r\n `${icons.error} ${d.type}`;\r\n } else {\r\n d.typeValidated = d.type;\r\n }\r\n\r\n return {\r\n values: [\r\n d.typeValidated,\r\n d.name,\r\n d.address,\r\n UTIL.formatPhoneNumber(d.phone),\r\n d.schedule,\r\n d.acuity,\r\n ],\r\n id: `ci-impPlace-${d.importantPlacesId}`,\r\n onClick: () => {\r\n tablePopup(d, false);\r\n },\r\n };\r\n });\r\n table.populate(placesTable, tableData, true);\r\n }\r\n\r\n return placesTable;\r\n }\r\n\r\n function buildSection(tableData, contactId, ro) {\r\n readOnly = ro;\r\n cID = contactId;\r\n rawPlacesTableData = tableData;\r\n const ipSection = document.createElement('div');\r\n\r\n const addPlaceBtn = button.build({\r\n text: 'Add Place',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => tablePopup(null, true),\r\n });\r\n if (readOnly) addPlaceBtn.classList.add('disabled');\r\n\r\n const table = buildTableMarkup();\r\n ipSection.appendChild(table);\r\n ipSection.appendChild(addPlaceBtn)\r\n\r\n return ipSection;\r\n }\r\n\r\n return {\r\n buildSection,\r\n };\r\n})();\r\n","const isp_ci_importantGroups = (() => {\r\n let cID;\r\n let rawGroupsTableData;\r\n let readOnly;\r\n let statusDropdown\r\n let nameInput\r\n let addressInput\r\n let phoneInput\r\n let saveBtn\r\n\r\n function tablePopup(popupData, isNew) {\r\n const popup = POPUP.build({ id: 'isp-ciig-mainPopup' });\r\n\r\n async function saveData() {\r\n popup.style.display = 'none';\r\n pendingSave.show('Saving...');\r\n\r\n const statusDD = document.getElementById('isp-ciig-statusDropdown');\r\n const statusVal = statusDD.options[statusDD.selectedIndex].value;\r\n const nameVal = document.getElementById('isp-ciig-nameInput').value;\r\n const addressVal = document.getElementById('isp-ciig-addressInput').value;\r\n const phoneVal = contactInformation.formatPhone(document.getElementById('isp-ciig-phoneInput').value).val;\r\n const meetingInfoVal = document.getElementById('isp-ciig-meetingInfoInput').value;\r\n const whoHelpsVal = document.getElementById('isp-ciig-whoHelpsInput').value;\r\n\r\n if (isNew) {\r\n //Insert\r\n // UNSAVABLE NOTE TEXT IS REMOVED IN BACKEND ON INSERTS\r\n const data = {\r\n token: $.session.Token,\r\n contactId: cID,\r\n status: statusVal,\r\n name: nameVal,\r\n address: addressVal,\r\n phone: phoneVal,\r\n meetingInfo: meetingInfoVal,\r\n whoHelps: whoHelpsVal,\r\n }\r\n const importantGroupId = await contactInformationAjax.insertPlanContactImportantGroup(data);\r\n data.importantGroupId = importantGroupId;\r\n data.token = null;\r\n table.addRows('isp_ci_importantGroupsTable', [{\r\n values: [statusVal, nameVal, addressVal, UTIL.formatPhoneNumber(phoneVal), meetingInfoVal, whoHelpsVal],\r\n id: `ci-impGroups-${data.importantGroupId}`,\r\n onClick: () => {\r\n tablePopup(data, false);\r\n },\r\n }], true)\r\n } else {\r\n //Update\r\n const data = {\r\n token: $.session.Token,\r\n importantGroupId: popupData.importantGroupId,\r\n status: statusVal,\r\n name: UTIL.removeUnsavableNoteText(nameVal),\r\n address: UTIL.removeUnsavableNoteText(addressVal),\r\n phone: UTIL.removeUnsavableNoteText(phoneVal),\r\n meetingInfo: UTIL.removeUnsavableNoteText(meetingInfoVal),\r\n whoHelps: UTIL.removeUnsavableNoteText(whoHelpsVal),\r\n }\r\n await contactInformationAjax.updatePlanContactImportantGroup(data);\r\n data.token = null;\r\n table.updateRows('isp_ci_importantGroupsTable', [{\r\n values: [statusVal, nameVal, addressVal, UTIL.formatPhoneNumber(phoneVal), meetingInfoVal, whoHelpsVal],\r\n id: `ci-impGroups-${popupData.importantGroupId}`,\r\n onClick: () => {\r\n tablePopup(data, false);\r\n },\r\n }], true)\r\n }\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(popup);\r\n }, 700);\r\n }\r\n\r\n async function deleteData() {\r\n const data = {\r\n token: $.session.Token,\r\n importantId: popupData.importantGroupId,\r\n type: 1\r\n }\r\n const tableRow = document.getElementById(`ci-impGroups-${popupData.importantGroupId}`)\r\n tableRow.remove()\r\n await contactInformationAjax.deletePlanContactImportant(data)\r\n }\r\n\r\n if (isNew) {\r\n popupData = {\r\n status: '',\r\n name: '',\r\n address: '',\r\n phone: '',\r\n meetingInfo: '',\r\n whoHelps: '',\r\n }\r\n }\r\n statusDropdown = dropdown.build({\r\n dropdownId: 'isp-ciig-statusDropdown',\r\n label: '*Status',\r\n readonly: readOnly,\r\n });\r\n if (popupData.status === '') statusDropdown.classList.add('error');\r\n\r\n const statusDropdownValues = [\r\n { text: '', value: '' },\r\n { text: 'Current', value: 'Current' },\r\n { text: 'New/Interested In', value: 'New/Interested In' },\r\n ];\r\n\r\n dropdown.populate(statusDropdown, statusDropdownValues, popupData.status);\r\n\r\n nameInput = input.build({\r\n label: '*Name',\r\n value: popupData.name,\r\n id: `isp-ciig-nameInput`,\r\n readonly: readOnly,\r\n });\r\n if (popupData.name === '') nameInput.classList.add('error');\r\n\r\n addressInput = input.build({\r\n label: '*Address',\r\n value: popupData.address,\r\n id: `isp-ciig-addressInput`,\r\n type: 'textarea',\r\n readonly: readOnly,\r\n classNames: 'autosize',\r\n });\r\n if (popupData.address === '') addressInput.classList.add('error');\r\n\r\n phoneInput = input.build({\r\n label: '*Phone',\r\n value: UTIL.formatPhoneNumber(popupData.phone),\r\n id: `isp-ciig-phoneInput`,\r\n readonly: readOnly,\r\n attributes: [\r\n { key: 'maxlength', value: '12' },\r\n { key: 'pattern', value: '[0-9]{3}-[0-9]{3}-[0-9]{4}' },\r\n { key: 'placeholder', value: '888-888-8888' },\r\n ],\r\n });\r\n if (popupData.phone === '') phoneInput.classList.add('error');\r\n\r\n const meetingInfoInput = input.build({\r\n label: 'When / Meeting Info',\r\n value: popupData.meetingInfo,\r\n id: `isp-ciig-meetingInfoInput`,\r\n readonly: readOnly,\r\n });\r\n const whoHelpsInput = input.build({\r\n label: 'Who Helps',\r\n value: popupData.whoHelps,\r\n id: `isp-ciig-whoHelpsInput`,\r\n readonly: readOnly,\r\n });\r\n\r\n saveBtn = button.build({\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n saveData()\r\n }\r\n });\r\n const cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n }\r\n });\r\n const deleteBtn = button.build({\r\n text: 'delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n popup.style.display = 'none';\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to delete this entry?',\r\n accept: {\r\n text: 'Yes',\r\n callback: () => {\r\n deleteData()\r\n POPUP.hide(popup)\r\n },\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n overlay.show();\r\n popup.style.removeProperty('display');\r\n },\r\n },\r\n });\r\n }\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n\r\n\r\n if (isNew) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n } else if (readOnly) {\r\n btnWrap.appendChild(cancelBtn);\r\n } else if (!isNew) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n btnWrap2.appendChild(cancelBtn);\r\n }\r\n\r\n popup.appendChild(statusDropdown);\r\n popup.appendChild(nameInput);\r\n popup.appendChild(addressInput);\r\n popup.appendChild(phoneInput);\r\n popup.appendChild(meetingInfoInput);\r\n popup.appendChild(whoHelpsInput);\r\n popup.appendChild(btnWrap);\r\n if (!isNew && !readOnly) popup.appendChild(btnWrap2);\r\n\r\n setupEvents();\r\n\r\n POPUP.show(popup);\r\n checkForErrors()\r\n DOM.autosizeTextarea();\r\n\r\n }\r\n\r\n function setupEvents() {\r\n phoneInput.addEventListener('input', event => {\r\n if (event.target.value !== \"\" && contactInformation.validatePhone(event.target.value)) {\r\n const phnDisp = contactInformation.formatPhone(event.target.value).disp;\r\n event.target.value = phnDisp;\r\n phoneInput.classList.remove('error');\r\n } else {\r\n phoneInput.classList.add('error');\r\n }\r\n checkForErrors()\r\n });\r\n statusDropdown.addEventListener('change', event => {\r\n if (event.target.value === \"\") {\r\n statusDropdown.classList.add('error')\r\n } else {\r\n statusDropdown.classList.remove('error')\r\n }\r\n checkForErrors()\r\n });\r\n nameInput.addEventListener('input', event => {\r\n if (event.target.value === \"\") {\r\n nameInput.classList.add('error')\r\n } else {\r\n nameInput.classList.remove('error')\r\n }\r\n checkForErrors()\r\n });\r\n addressInput.addEventListener('input', event => {\r\n if (event.target.value === \"\") {\r\n addressInput.classList.add('error')\r\n } else {\r\n addressInput.classList.remove('error')\r\n }\r\n checkForErrors()\r\n });\r\n }\r\n\r\n function checkForErrors() {\r\n const errors = document.getElementById('isp-ciig-mainPopup').querySelectorAll('.error');\r\n if (errors.length > 0) {\r\n saveBtn.classList.add('disabled')\r\n } else saveBtn.classList.remove('disabled')\r\n }\r\n\r\n function buildTableMarkup() {\r\n const peopleTable = table.build({\r\n tableId: 'isp_ci_importantGroupsTable',\r\n headline: 'Important Clubs, Groups, and Organizations',\r\n columnHeadings: ['Status', 'Name', 'Address', 'Phone', 'Meeting info', 'Who helps'],\r\n sortable: true,\r\n onSortCallback: res => {\r\n contactInformationAjax.updatePlanContactImportantOrder({\r\n contactId: cID,\r\n importantId: res.row.id.split(\"-\")[2],\r\n newPos: res.newIndex,\r\n oldPos: res.oldIndex,\r\n type: 1\r\n })\r\n }\r\n });\r\n\r\n // Set the data type for each header, for sorting purposes\r\n let number = 0;\r\n const headers = peopleTable.querySelectorAll('.header div');\r\n if (headers.length > 6)\r\n number = 1;\r\n headers[0 + number].setAttribute('data-type', 'string'); // Status\r\n headers[1 + number].setAttribute('data-type', 'string'); // Name\r\n headers[2 + number].setAttribute('data-type', 'string'); // Address\r\n headers[3 + number].setAttribute('data-type', 'number'); // Phone\r\n headers[4 + number].setAttribute('data-type', 'string'); // Meeting info\r\n headers[5 + number].setAttribute('data-type', 'string'); // Who helps\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(peopleTable);\r\n\r\n\r\n if (readOnly) peopleTable.classList.add('disableDrag');\r\n\r\n if (rawGroupsTableData) {\r\n const tableData = rawGroupsTableData.map(d => {\r\n return {\r\n values: [d.status, d.name, d.address, UTIL.formatPhoneNumber(d.phone), d.meetingInfo, d.whoHelps],\r\n id: `ci-impGroups-${d.importantGroupId}`,\r\n onClick: () => {\r\n tablePopup(d, false)\r\n }\r\n }\r\n });\r\n table.populate(peopleTable, tableData, true)\r\n }\r\n\r\n return peopleTable\r\n }\r\n\r\n function buildSection(tableData, contactId, ro) {\r\n readOnly = ro;\r\n cID = contactId;\r\n rawGroupsTableData = tableData;\r\n\r\n const igSection = document.createElement('div');\r\n const addGroupBtn = button.build({\r\n text: 'Add Club/Group/Organization',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => tablePopup(null, true)\r\n })\r\n if (readOnly) addGroupBtn.classList.add('disabled');\r\n\r\n const table = buildTableMarkup()\r\n\r\n igSection.appendChild(table);\r\n igSection.appendChild(addGroupBtn);\r\n\r\n return igSection\r\n }\r\n\r\n return {\r\n buildSection\r\n }\r\n})();","const planIntroduction = (() => {\r\n let isReadOnly;\r\n let planId;\r\n let likeAdmire;\r\n let thingsImportantTo;\r\n let thingsImportantFor;\r\n let howToSupport;\r\n let usePlanImage;\r\n let consumerIdForPhoto;\r\n let selectedConsumerId;\r\n let consumerImage;\r\n let consumerImageURL;\r\n let charLimits;\r\n\r\n async function updateIntroduction() {\r\n await planIntroductionAjax.updatePlanIntroduction(\r\n $.session.Token,\r\n planId,\r\n selectedConsumerId,\r\n likeAdmire,\r\n thingsImportantTo,\r\n thingsImportantFor,\r\n howToSupport,\r\n usePlanImage,\r\n consumerImage,\r\n );\r\n }\r\n\r\n function buildIntroduction() {\r\n const introduction = document.createElement('div');\r\n introduction.classList.add('outcome');\r\n\r\n //photo display\r\n var img = document.createElement('img');\r\n img.classList.add('imageContainer');\r\n\r\n // No Photo radio button\r\n const noPhotoRadio = input.buildRadio({\r\n id: `noPhotoRadio`,\r\n text: 'No Photo',\r\n name: 'chkUseImage',\r\n isChecked:\r\n usePlanImage === '' || usePlanImage === null || usePlanImage === '2' ? true : false,\r\n // isDisabled: isReadOnly,\r\n callback: () => {\r\n // if (!isReadOnly) photoInput.classList.add('disabled');\r\n // Retrieve the demographics DEFAULT Picture from images folder and place it in img\r\n // var fullpath = `./images/portraits/default.png`;\r\n var fullpath = `./images/new-icons/default.jpg`;\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', fullpath);\r\n usePlanImage = 2;\r\n updateIntroduction();\r\n },\r\n });\r\n\r\n displayNoPhoto();\r\n\r\n // Demographics radio button\r\n const demoPhotoRadio = input.buildRadio({\r\n id: `chkUsePlanImage-no`,\r\n text: 'Use Demographics Photo',\r\n name: 'chkUseImage',\r\n isChecked: usePlanImage === '0' ? true : false,\r\n isDisabled: isReadOnly,\r\n callback: () => {\r\n if (!isReadOnly) photoInput.classList.add('disabled');\r\n // Retrieve the demographics Picture from images folder and place it in img\r\n var fullpath = `./images/portraits/${selectedConsumerId}.png`;\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', fullpath);\r\n usePlanImage = 0;\r\n updateIntroduction();\r\n\r\n displayDemographicsPhoto();\r\n },\r\n });\r\n\r\n displayDemographicsPhoto();\r\n\r\n // Custom Image (Plan) radio button\r\n const customPhotoRadio = input.buildRadio({\r\n id: `chkUsePlanImage-yes`,\r\n text: 'Use Custom Image',\r\n name: 'chkUseImage',\r\n isChecked: usePlanImage === '1' ? true : false,\r\n isDisabled: isReadOnly,\r\n callback: async () => {\r\n usePlanImage = 1;\r\n consumerImage = '';\r\n if (!isReadOnly) photoInput.classList.remove('disabled');\r\n await updateIntroduction();\r\n const planIntroductionData = await planIntroductionAjax.getPlanIntroduction({\r\n token: $.session.Token,\r\n planId: planId,\r\n consumerId: selectedConsumerId,\r\n });\r\n\r\n consumerImage = planIntroductionData.consumerImage;\r\n displayPlanIntroductionPhoto();\r\n },\r\n });\r\n\r\n displayPlanIntroductionPhoto();\r\n\r\n // File Selection Input\r\n var photoInput = input.build({\r\n id: `selectImage`,\r\n label: 'Choose Image',\r\n type: 'file',\r\n accept: 'image/*',\r\n style: 'secondary',\r\n attributes: [{ key: 'multiple', value: 'false' }],\r\n });\r\n\r\n photoInput.addEventListener('change', event => {\r\n const photoObj = {};\r\n\r\n const attPromise = new Promise(resolve => {\r\n const photoFile = event.target.files.item(0);\r\n const photoName = photoFile.name;\r\n const photoType = photoFile.name.split('.').pop();\r\n photoObj.description = photoName;\r\n photoObj.type = photoType;\r\n // new Response(file) was added for Safari compatibility\r\n new Response(photoFile).arrayBuffer().then(res => {\r\n photoObj.arrayBuffer = res;\r\n resolve();\r\n });\r\n });\r\n attPromise.then(async () => {\r\n try {\r\n consumerImage = photoObj.arrayBuffer;\r\n refreshPlanIntroductionPhoto(event);\r\n } catch (error) {\r\n throw error;\r\n }\r\n });\r\n });\r\n\r\n // build radio buttons and photo selector\r\n const imageTitle = document.createElement('h4');\r\n imageTitle.innerHTML = 'Photo';\r\n const imageContainer = document.createElement('div');\r\n const radioDiv1 = document.createElement('div');\r\n const radioDiv2 = document.createElement('div');\r\n const radioDiv3 = document.createElement('div');\r\n const imageframe = document.createElement('div');\r\n imageframe.classList.add('imageframe');\r\n const photoSelectDiv = document.createElement('div');\r\n radioDiv1.appendChild(noPhotoRadio);\r\n radioDiv2.appendChild(demoPhotoRadio);\r\n // TODOJOE: Position the image so that it is next to other elements (not so far to right)\r\n imageframe.appendChild(img);\r\n radioDiv3.appendChild(customPhotoRadio);\r\n photoSelectDiv.appendChild(photoInput);\r\n photoSelectDiv.classList.add('photoSelectorContainer');\r\n imageContainer.appendChild(imageTitle);\r\n imageContainer.appendChild(radioDiv1);\r\n imageContainer.appendChild(radioDiv2);\r\n imageContainer.appendChild(imageframe);\r\n imageContainer.appendChild(radioDiv3);\r\n imageContainer.appendChild(photoSelectDiv);\r\n imageContainer.classList.add('imageSelectionContainer');\r\n\r\n // likeAdmire textarea\r\n const likeAdmireInput = input.build({\r\n label: 'What People Like and Admire About Me',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: likeAdmire,\r\n charLimit: charLimits.likeAdmire,\r\n forceCharLimit: true,\r\n });\r\n likeAdmireInput.classList.add('introTextArea');\r\n likeAdmireInput.addEventListener('input', e => {\r\n likeAdmire = e.target.value;\r\n usePlanImage = usePlanImage == null || usePlanImage == '' || usePlanImage == 0 ? 0 : 1;\r\n updateIntroduction();\r\n });\r\n\r\n // thingsImportantTo textarea\r\n const thingsImportantToInput = input.build({\r\n label: 'A Few Things That Are Important to Me',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: thingsImportantTo,\r\n charLimit: charLimits.thingsImportantTo,\r\n forceCharLimit: true,\r\n });\r\n thingsImportantToInput.classList.add('introTextArea');\r\n thingsImportantToInput.addEventListener('input', e => {\r\n thingsImportantTo = e.target.value;\r\n usePlanImage = usePlanImage == null || usePlanImage == '' || usePlanImage == 0 ? 0 : 1;\r\n updateIntroduction();\r\n });\r\n\r\n // thingsImportantFor textarea\r\n const thingsImportantForInput = input.build({\r\n label: 'A Few Things That Are Important for Me',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: thingsImportantFor,\r\n charLimit: charLimits.thingsImportantFor,\r\n forceCharLimit: true,\r\n });\r\n thingsImportantForInput.classList.add('introTextArea');\r\n thingsImportantForInput.addEventListener('input', e => {\r\n thingsImportantFor = e.target.value;\r\n usePlanImage = usePlanImage == null || usePlanImage == '' || usePlanImage == 0 ? 0 : 1;\r\n updateIntroduction();\r\n });\r\n\r\n // howToSupport textarea\r\n const howToSupportInput = input.build({\r\n label: 'Here is How You Can Support Me',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: howToSupport,\r\n charLimit: charLimits.howToSupport,\r\n forceCharLimit: true,\r\n });\r\n howToSupportInput.classList.add('introTextArea');\r\n howToSupportInput.addEventListener('input', e => {\r\n howToSupport = e.target.value;\r\n usePlanImage = usePlanImage == null || usePlanImage == '' || usePlanImage == 0 ? 0 : 1;\r\n updateIntroduction();\r\n });\r\n\r\n introduction.appendChild(imageContainer);\r\n introduction.appendChild(likeAdmireInput);\r\n introduction.appendChild(thingsImportantToInput);\r\n introduction.appendChild(thingsImportantForInput);\r\n introduction.appendChild(howToSupportInput);\r\n\r\n DOM.ACTIONCENTER.appendChild(introduction);\r\n // if custom image radio button is selected, enable the file/photo select functionality\r\n let customPhotoRadio2 = document.getElementById('chkUsePlanImage-yes');\r\n if (customPhotoRadio2.checked == true) {\r\n photoInput.classList.remove('disabled');\r\n } else {\r\n photoInput.classList.add('disabled');\r\n }\r\n\r\n if (isReadOnly) {\r\n likeAdmireInput.classList.add('disabled');\r\n thingsImportantToInput.classList.add('disabled');\r\n thingsImportantForInput.classList.add('disabled');\r\n howToSupportInput.classList.add('disabled');\r\n // let demoPhotoRadio = document.getElementById('chkUsePlanImage-no');\r\n // let customPhotoRadio = document.getElementById('chkUsePlanImage-yes');\r\n // demoPhotoRadio.disabled = true;\r\n // customPhotoRadio.disabled = true;\r\n photoInput.classList.add('disabled');\r\n }\r\n\r\n return introduction;\r\n }\r\n\r\n function getMarkup() {\r\n const section = document.createElement('div');\r\n section.classList.add('ispIntroduction');\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Introduction';\r\n heading.classList.add('sectionHeading');\r\n heading.style.marginBottom = '24px';\r\n section.appendChild(heading);\r\n\r\n // let linebreak = document.createElement(\"br\");\r\n // section.appendChild(linebreak);\r\n const introduction = buildIntroduction();\r\n section.appendChild(introduction);\r\n\r\n return section;\r\n }\r\n\r\n function displayDemographicsPhoto() {\r\n // if portrait exists in image/portraits, then enable demoPhotoRadio; otherwise, disable it\r\n var id = consumerIdForPhoto;\r\n id = parseInt(id);\r\n var fullpath = `./images/portraits/${id}.png`;\r\n var myImage = new Image();\r\n myImage.src = fullpath;\r\n myImage.onload = function () {\r\n let demoPhotoRadio = document.getElementById('chkUsePlanImage-no');\r\n demoPhotoRadio.disabled = isReadOnly;\r\n // display Demographics photo\r\n if (demoPhotoRadio.checked == true) {\r\n var fullpath = `./images/portraits/${consumerIdForPhoto}.png`;\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', fullpath);\r\n }\r\n };\r\n myImage.onerror = function () {\r\n let demoPhotoRadio = document.getElementById('chkUsePlanImage-no');\r\n // display Silhouette photo\r\n if (demoPhotoRadio.checked == true) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', './images/new-icons/default.jpg');\r\n }\r\n demoPhotoRadio.disabled = true;\r\n demoPhotoRadio.checked = false;\r\n };\r\n }\r\n\r\n function displayNoPhoto() {\r\n var fullpath = `./images/new-icons/default.jpg`;\r\n var myImage = new Image();\r\n myImage.src = fullpath;\r\n myImage.onload = function () {\r\n let noPhotoRadio1 = document.getElementById('noPhotoRadio');\r\n // display default photo silhouette\r\n if (noPhotoRadio1.checked == true) {\r\n var fullpath = `./images/new-icons/default.jpg`;\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', fullpath);\r\n }\r\n };\r\n }\r\n\r\n function displayPlanIntroductionPhoto() {\r\n if (consumerImage) {\r\n const binaryString = window.atob(consumerImage);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n\r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n\r\n const blob = new Blob([bytes], { type: 'image/jpg' });\r\n var urlCreator = window.URL || window.webkitURL;\r\n consumerImageURL = urlCreator.createObjectURL(blob);\r\n\r\n var myImage2 = new Image();\r\n myImage2.src = consumerImageURL;\r\n\r\n myImage2.onload = function () {\r\n let customPhotoRadio = document.getElementById('chkUsePlanImage-yes');\r\n // display Plan (ie, Custom) photo\r\n if (customPhotoRadio.checked == true) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', consumerImageURL);\r\n }\r\n };\r\n\r\n myImage2.onerror = function (errorMsg) {\r\n let customPhotoRadio = document.getElementById('chkUsePlanImage-yes');\r\n // display Silhouette photo\r\n if (customPhotoRadio.checked == true) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', './images/new-icons/default.jpg');\r\n }\r\n };\r\n } else {\r\n var myImage3 = new Image();\r\n myImage3.src = '';\r\n myImage3.onerror = function (errorMsg) {\r\n let customPhotoRadio = document.getElementById('chkUsePlanImage-yes');\r\n // display Silhouette photo\r\n if (customPhotoRadio.checked == true) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', './images/new-icons/default.jpg');\r\n }\r\n };\r\n }\r\n }\r\n\r\n function refreshPlanIntroductionPhoto(event) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', URL.createObjectURL(event.target.files[0]));\r\n usePlanImage = 1;\r\n updateIntroduction();\r\n // }\r\n }\r\n\r\n async function init(data) {\r\n isReadOnly = data.readOnly;\r\n planId = data.planId;\r\n charLimits = planData.getISPCharacterLimits('introduction');\r\n\r\n // var activeConsumers = roster2.getActiveConsumers();\r\n // selectedConsumerId = activeConsumers[activeConsumers.length - 1].id;\r\n\r\n // const selectedConsumer = plan.getSelectedConsumer();\r\n // consumerIdForPhoto =\r\n // $.session.applicationName === 'Advisor' ? selectedConsumer.consumerId : selectedConsumer.id;\r\n\r\n const selectedConsumer = plan.getSelectedConsumer();\r\n selectedConsumerId = selectedConsumer.id;\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n consumerIdForPhoto = selectedConsumer.consumerId\r\n ? selectedConsumer.consumerId\r\n : selectedConsumer.id;\r\n }\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n consumerIdForPhoto = selectedConsumer.consumerId\r\n ? selectedConsumer.consumerId\r\n : selectedConsumer.id;\r\n }\r\n\r\n const planIntroductionData = await planIntroductionAjax.getPlanIntroduction({\r\n token: $.session.Token,\r\n planId: planId,\r\n consumerId: selectedConsumerId,\r\n });\r\n\r\n likeAdmire = planIntroductionData.likeAdmire;\r\n thingsImportantTo = planIntroductionData.thingsImportantTo;\r\n thingsImportantFor = planIntroductionData.thingsImportantFor;\r\n howToSupport = planIntroductionData.howToSupport;\r\n usePlanImage = planIntroductionData.usePlanImage;\r\n consumerImage = planIntroductionData.consumerImage;\r\n }\r\n\r\n return { init, getMarkup };\r\n})();\r\n","const planIntroductionAjax = (() => {\r\n\r\n // GET\r\n //------------------------------------\r\n async function getPlanIntroduction(retrieveData) {\r\n // string token, string planId, string consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanIntroduction/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanIntroductionResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // Update\r\n //------------------------------------\r\n async function updatePlanIntroduction(\r\n token,\r\n planId,\r\n consumerId, \r\n likeAdmire,\r\n thingsImportantTo,\r\n thingsImportantFor,\r\n howToSupport,\r\n usePlanImage,\r\n consumerImage\r\n ) {\r\n \r\n // retrieveData.usePlanImage = parseInt(retrieveData.usePlanImage);\r\n\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(consumerImage);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanIntroduction/',\r\n data: JSON.stringify({\r\n token: token,\r\n planId,\r\n consumerId, \r\n likeAdmire,\r\n thingsImportantTo,\r\n thingsImportantFor,\r\n howToSupport,\r\n usePlanImage,\r\n consumerImage: abString,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanIntroductionResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n \r\n return {\r\n getPlanIntroduction,\r\n updatePlanIntroduction,\r\n\r\n };\r\n \r\n })();\r\n","const planOutcomes = (() => {\r\n let isReadOnly;\r\n let isSortable;\r\n let planId; // aka: assessmentId\r\n let progressSummaryId;\r\n let progressSummary;\r\n let outcomesData;\r\n let dropdownData;\r\n let outcomesWrap;\r\n let outcomesProgressSummary;\r\n let addOutcomeBtn;\r\n let addExpTableBtn;\r\n let teamMembers;\r\n let hasPreviousPlan;\r\n let charLimits;\r\n let responseIdCache = {};\r\n // Selected Vendors => Experiences/WhoResponsible\r\n let selectedVendors = {};\r\n let validationCheck;\r\n let respProviderIdToNameMap;\r\n function getSelectedVendors() {\r\n return Object.values(selectedVendors);\r\n }\r\n //*------------------------------------------------------\r\n //* UTILS\r\n //*------------------------------------------------------\r\n function refreshDropdownData(newDropdownData) {\r\n dropdownData = newDropdownData;\r\n }\r\n function mapOutcomesDetails(data) {\r\n if (!data || data.planOutcome.length === 0) return {};\r\n\r\n const outcomes = {};\r\n\r\n data.planOutcome.forEach(o => {\r\n if (!outcomes[o.outcomeId]) {\r\n outcomes[o.outcomeId] = {\r\n sectionId: o.sectionId,\r\n outcomeId: o.outcomeId,\r\n outcomeOrder: o.outcomeOrder,\r\n outcome: o.outcome,\r\n details: o.details,\r\n history: o.history,\r\n status: o.status,\r\n carryOverReason: o.carryOverReason,\r\n experiences: {},\r\n reviews: {},\r\n };\r\n }\r\n });\r\n data.planOutcomeExperiences.forEach(o => {\r\n const oc = outcomes[o.outcomeId];\r\n if (!oc) return 'error: outcome or outcomeId is invalid or missing';\r\n\r\n if (!oc.experiences[o.experienceId]) {\r\n oc.experiences[o.experienceId] = {\r\n experienceIds: o.experienceId,\r\n experienceOrder: o.experienceOrder,\r\n outcomeId: o.outcomeId,\r\n whatHappened: o.whatHappened,\r\n howHappened: o.howHappened,\r\n responsibilities: {},\r\n };\r\n o.planExperienceResponsibilities.forEach((resp, index) => {\r\n if (!oc.experiences[o.experienceId].responsibilities[index]) {\r\n oc.experiences[o.experienceId].responsibilities[index] = {\r\n responsibilityIds: resp.responsibilityId,\r\n responsibleContact: !resp.responsibleContact ? '%' : resp.responsibleContact,\r\n responsibleProvider: !resp.responsibleProvider ? '%' : resp.responsibleProvider,\r\n responsibleProviderSalesforce: !resp.isSalesforceLocation ? '' : resp.isSalesforceLocation,\r\n whenHowOftenValue: resp.whenValue,\r\n whenHowOftenFrequency: resp.whenFrequency,\r\n whenHowOftenText: resp.whenOther,\r\n };\r\n }\r\n });\r\n }\r\n });\r\n data.planReviews.forEach(o => {\r\n const oc = outcomes[o.outcomeId];\r\n if (!oc) return 'error: outcome or outcomeId is invalid or missing';\r\n\r\n if (!oc.reviews[o.outcomeReviewId]) {\r\n oc.reviews[o.outcomeReviewId] = {\r\n whatWillHappen: o.whatWillHappen,\r\n whenToCheckIn: o.whenToCheckIn,\r\n whoReview: o.who,\r\n reviewIds: o.outcomeReviewId,\r\n whoResponsible: o.whoResponsible,\r\n contactId: o.contactId,\r\n reviewOrder: o.reviewOrder,\r\n outcomeId: o.outcomeId,\r\n };\r\n }\r\n });\r\n\r\n return outcomes;\r\n }\r\n function sortOutcomesByOrder(outcomeData) {\r\n return [...outcomeData].sort((objA, objB) => {\r\n if (objA.outcomeOrder === objB.outcomeOrder) return 0;\r\n\r\n return objA.outcomeOrder < objB.outcomeOrder ? -1 : 1;\r\n });\r\n }\r\n function checkIfSummaryRequired() {\r\n const outcomes = [...document.querySelectorAll('.outcome')];\r\n\r\n if (outcomes.length > 0 && progressSummary === '') {\r\n outcomesProgressSummary.classList.add('error');\r\n } else {\r\n outcomesProgressSummary.classList.remove('error');\r\n }\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* DROPDOWNS\r\n //*------------------------------------------------------\r\n //-- populate -------\r\n function populateAssessmentAreaDropdown(dropdownEle, defaultValue) {\r\n const a = assessment.getApplicableSections();\r\n\r\n const data = dropdownData.assessmentAreas\r\n .filter(dd => a[dd.assessmentAreaId])\r\n .map(dd => {\r\n return {\r\n value: dd.assessmentAreaId,\r\n text: dd.assessmentArea,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateStatusDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.outcomeStatus.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateExperiencesHowOftenDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.howOFtenExperiences.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateReviewsWhoDropdown(dropdownEle, defaultValue) {\r\n // teamMembers = planConsentAndSign.getTeamMembersHowTheyExistOnPlanNowWhileWeWaitOnDamnStateToMakeUpTheirMinds();\r\n\r\n teamMembers = planData.getDropdownData().relationships.map(dd => {\r\n return {\r\n peopleId: dd.peopleId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n };\r\n });\r\n\r\n let data;\r\n if (teamMembers) {\r\n data = teamMembers.map(dd => {\r\n return {\r\n value: dd.peopleId,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n } else {\r\n data = [{ value: '%', text: '' }];\r\n }\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n\r\n async function populateResponsibleProviderDropdown(dropdownEle, defaultValue, defaultValueSalesForce) {\r\n const data = dropdownData.serviceVendors.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n salesforce: dd.isSalesforceLocation,\r\n };\r\n });\r\n\r\n const vendorIds = new Map();\r\n const coflictingIds = {};\r\n data.forEach((d, index) => {\r\n if (vendorIds.has(d.value)) {\r\n const conflictIndex = vendorIds.get(d.value);\r\n\r\n coflictingIds[d.value] = true;\r\n\r\n data[conflictIndex].value = `${data[conflictIndex].value}|${data[conflictIndex].salesforce}`;\r\n data[index].value = `${d.value}|${d.salesforce}`;\r\n\r\n } else {\r\n vendorIds.set(d.value, index);\r\n }\r\n });\r\n\r\n const { getPlanOutcomesPaidSupportProvidersResult: selectedVendors } =\r\n await planOutcomesAjax.getPlanOutcomesPaidSupportProviders(planId);\r\n\r\n const selectedVendorIds = getSelectedVendorIds();\r\n\r\n // nonPaidSupportData, paidSupportData\r\n const nonPaidSupportData = [];\r\n const paidSupportData = [];\r\n data.forEach(d => {\r\n const provider = d.value.split('|');\r\n const isSelectedVendor = selectedVendorIds.includes(provider[0])\r\n\r\n if (provider[1]) {\r\n nonPaidSupportData.push(d);\r\n return;\r\n }\r\n\r\n if (isSelectedVendor) {\r\n paidSupportData.push(d);\r\n } else {\r\n nonPaidSupportData.push(d);\r\n }\r\n });\r\n // const nonPaidSupportData = data.filter(provider => {\r\n // return !selectedVendorIds.includes(provider.value.split('|')[0]);\r\n // });\r\n // const paidSupportData = data.filter(provider => {\r\n // return selectedVendorIds.includes(provider.value.split('|')[0]);\r\n // });\r\n\r\n const nonPaidSupportDropdownData = nonPaidSupportData.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n const paidSupportDropdownData = paidSupportData.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n nonPaidSupportDropdownData.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n paidSupportDropdownData.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n const nonGroupedDropdownData = [{ value: '', text: '[SELECT A PROVIDER]' }];\r\n const paidSupportGroup = {\r\n groupLabel: 'Paid Support Providers',\r\n groupId: 'isp_ss_providerDropdown_paidSupportProviders',\r\n dropdownValues: paidSupportDropdownData,\r\n };\r\n const nonPaidSupportGroup = {\r\n groupLabel: 'Other Providers',\r\n groupId: 'isp_ss_providerDropdown_nonPaidSupportProviders',\r\n dropdownValues: nonPaidSupportDropdownData,\r\n };\r\n\r\n const groupDropdownData = [];\r\n if (paidSupportDropdownData.length > 0) {\r\n groupDropdownData.push(paidSupportGroup);\r\n }\r\n\r\n //if there's no default value, and only one option, make that option the default\r\n if (!defaultValue) {\r\n const tempData = [...nonPaidSupportDropdownData, ...paidSupportDropdownData];\r\n if (tempData.length === 1) {\r\n defaultValue = tempData[0].value;\r\n saveUpdateProvider = defaultValue;\r\n dropdownEle.classList.remove('error');\r\n }\r\n } else {\r\n if (coflictingIds[defaultValue]) {\r\n defaultValue = `${defaultValue}|${defaultValueSalesForce}`;\r\n }\r\n }\r\n\r\n groupDropdownData.push(nonPaidSupportGroup);\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: dropdownEle,\r\n data: groupDropdownData,\r\n nonGroupedData: nonGroupedDropdownData,\r\n defaultVal: defaultValue,\r\n });\r\n\r\n function getSelectedVendorIds() {\r\n return selectedVendors.reduce((acc, vendor) => {\r\n acc.push(vendor.vendorId);\r\n return acc;\r\n }, []);\r\n }\r\n }\r\n function populateResponsibleContactDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.relationships.map(dd => {\r\n return {\r\n value: dd.contactId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n //-- map id to name -------\r\n function getWhenHowOFtenFrequencyById(id) {\r\n const filteredFrequency = dropdownData.howOFtenExperiences.filter(dd => dd.value === id);\r\n return filteredFrequency.length > 0 ? filteredFrequency[0].text : '';\r\n }\r\n function getWhoTypeById(id) {\r\n // teamMembers = planData.getDropdownData().relationships.map(dd => {\r\n // return {\r\n // peopleId: dd.peopleId,\r\n // text: `${dd.lastName}, ${dd.firstName}`,\r\n // };\r\n // });\r\n const filteredWho = dropdownData.relationships.filter(dd => dd.contactId === id);\r\n if (filteredWho && filteredWho.length > 0) {\r\n return filteredWho[0].teamMember === 'Case Manager' ? true : false;\r\n }\r\n }\r\n\r\n function isSalesforceLocationTrue(value, name) {\r\n let vendor = dropdownData.serviceVendors.filter(vendor => vendor.vendorId === value);\r\n\r\n if (!vendor.length) return 'False';\r\n\r\n if (vendor.length === 1) {\r\n return vendor[0].isSalesforceLocation;\r\n }\r\n\r\n vendor = vendor.filter(vendor => vendor.vendorName === name);\r\n\r\n return vendor[0].isSalesforceLocation;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* OUTCOME, DETAILS & HISTORY\r\n //*------------------------------------------------------\r\n async function insertOutcome(saveData, fromAssessment) {\r\n if (fromAssessment) {\r\n planId = plan.getCurrentPlanId();\r\n }\r\n\r\n const outcomeId = await planOutcomesAjax.insertPlanOutcome({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n outcome: saveData.outcome,\r\n details: saveData.details,\r\n history: saveData.history,\r\n sectionId: saveData.sectionId,\r\n outcomeOrder: saveData.outcomeOrder,\r\n status: saveData.status,\r\n carryOverReason: saveData.carryOverReason,\r\n });\r\n\r\n if (fromAssessment) return;\r\n\r\n outcomesData[outcomeId] = {};\r\n outcomesData[outcomeId].outcome = saveData.outcome;\r\n outcomesData[outcomeId].details = saveData.details;\r\n outcomesData[outcomeId].history = saveData.history;\r\n outcomesData[outcomeId].sectionId = saveData.sectionId;\r\n outcomesData[outcomeId].outcomeOrder = saveData.outcomeOrder;\r\n outcomesData[outcomeId].status = saveData.status;\r\n outcomesData[outcomeId].carryOverReason = saveData.carryOverReason;\r\n\r\n return outcomeId;\r\n }\r\n async function updateOutcome(updateData) {\r\n if ($.session.planUpdate) {\r\n await planOutcomesAjax.updatePlanOutcome({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n outcomeId: updateData.outcomeId,\r\n outcome: updateData.outcome,\r\n details: updateData.details,\r\n history: updateData.history,\r\n sectionId: updateData.sectionId,\r\n outcomeOrder: updateData.outcomeOrder,\r\n status: updateData.status,\r\n carryOverReason: updateData.carryOverReason,\r\n });\r\n\r\n outcomesData[updateData.outcomeId].outcome = updateData.outcome;\r\n outcomesData[updateData.outcomeId].details = updateData.details;\r\n outcomesData[updateData.outcomeId].history = updateData.history;\r\n outcomesData[updateData.outcomeId].sectionId = updateData.sectionId;\r\n outcomesData[updateData.outcomeId].outcomeOrder = updateData.outcomeOrder;\r\n outcomesData[updateData.outcomeId].status = updateData.status;\r\n outcomesData[updateData.outcomeId].carryOverReason = updateData.carryOverReason;\r\n }\r\n }\r\n async function deleteOutcome(outcomeId) {\r\n await planOutcomesAjax.deletePlanOutcome({\r\n token: $.session.Token,\r\n outcomeId,\r\n });\r\n\r\n if (outcomesData[outcomeId].experiences) {\r\n Object.values(outcomesData[outcomeId].experiences).forEach(exp => {\r\n Object.values(exp.responsibilities).forEach(resp => {\r\n delete selectedVendors[resp.responsibilityIds];\r\n });\r\n });\r\n }\r\n\r\n if (responseIdCache[outcomeId]) {\r\n responseIdCache[outcomeId].forEach(respId => {\r\n delete selectedVendors[respId];\r\n });\r\n }\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n //-- Markup ---------\r\n function toggleAddNewOutcomePopupDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.newOutcomePopup .error');\r\n const doneBtn = document.querySelector('.newOutcomePopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showAddNewOutcomePopup(sectionId, charLimits) {\r\n if (!dropdownData) {\r\n dropdownData = planData.getDropdownData();\r\n }\r\n // This is only for adding outcome from inside assessment\r\n let hasInitialErros;\r\n let outcomeText = '';\r\n let detailsText = '';\r\n let historyText = '';\r\n let status = '0';\r\n let carryOverReason = '';\r\n\r\n const newOutcomePopup = POPUP.build({\r\n header: 'Add Outcome',\r\n classNames: 'newOutcomePopup',\r\n hideX: true,\r\n });\r\n\r\n // Assessment Area *for display only!!!\r\n const assessmentAreaDropdown = dropdown.build({\r\n // dropdownId: 'assessmentAreaDropdown',\r\n label: 'Assessment Area',\r\n style: 'secondary',\r\n });\r\n assessmentAreaDropdown.classList.add('disabled');\r\n\r\n // Status\r\n const statusDropdown = dropdown.build({\r\n // dropdownId: 'statusDropdown',\r\n label: 'Status',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n status = selectedOption.value;\r\n\r\n // if (status === '' || status === '%') {\r\n // statusDropdown.classList.add('error');\r\n // } else {\r\n // statusDropdown.classList.remove('error');\r\n // }\r\n\r\n // toggleAddNewOutcomePopupDoneBtn();\r\n },\r\n });\r\n // Carryover\r\n const carryoverInput = input.build({\r\n label: 'Carryover Reason',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: '',\r\n charLimit: charLimits.carryOverReason,\r\n forceCharLimit: true,\r\n });\r\n carryoverInput.classList.add('carryoverTextInput');\r\n carryoverInput.addEventListener('input', e => {\r\n carryOverReason = e.target.value;\r\n if (hasPreviousPlan && status === '1' && carryOverReason === '') {\r\n carryoverInput.classList.add('error');\r\n } else {\r\n carryoverInput.classList.remove('error');\r\n }\r\n\r\n toggleAddNewOutcomePopupDoneBtn();\r\n });\r\n // Outcome\r\n const outcomeTextInput = input.build({\r\n label: '*Outcome',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: '',\r\n charLimit: charLimits.description,\r\n forceCharLimit: true,\r\n });\r\n outcomeTextInput.classList.add('outcomeTextInput');\r\n outcomeTextInput.addEventListener('input', e => {\r\n outcomeText = e.target.value;\r\n if (outcomeText === '') {\r\n outcomeTextInput.classList.add('error');\r\n } else {\r\n outcomeTextInput.classList.remove('error');\r\n }\r\n\r\n toggleAddNewOutcomePopupDoneBtn();\r\n });\r\n // Details\r\n const detailsTextInput = input.build({\r\n label: '*Details To Know',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: '',\r\n charLimit: charLimits.details,\r\n forceCharLimit: true,\r\n });\r\n detailsTextInput.classList.add('detailsTextInput');\r\n detailsTextInput.addEventListener('input', e => {\r\n detailsText = e.target.value;\r\n\r\n if (detailsText === '') {\r\n detailsTextInput.classList.add('error');\r\n } else {\r\n detailsTextInput.classList.remove('error');\r\n }\r\n\r\n toggleAddNewOutcomePopupDoneBtn();\r\n });\r\n // History\r\n const historyTextInput = input.build({\r\n label: 'Important and Relevant History',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: '',\r\n charLimit: charLimits.history,\r\n forceCharLimit: true,\r\n });\r\n historyTextInput.classList.add('historyTextInput');\r\n historyTextInput.addEventListener('input', e => {\r\n historyText = e.target.value;\r\n\r\n // if (historyText === '') {\r\n // historyTextInput.classList.add('error');\r\n // } else {\r\n // historyTextInput.classList.remove('error');\r\n // }\r\n\r\n toggleAddNewOutcomePopupDoneBtn();\r\n });\r\n\r\n const doneBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n\r\n if (!planId) {\r\n planId = plan.getCurrentPlanId();\r\n }\r\n\r\n await insertOutcome(\r\n {\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n outcome: outcomeText,\r\n details: detailsText,\r\n history: historyText,\r\n sectionId: sectionId,\r\n status: status,\r\n carryOverReason: carryOverReason,\r\n outcomeOrder: 0,\r\n },\r\n true,\r\n );\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n assessmentValidationCheck = await planValidation.getAssessmentValidation(planId);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentValidationCheck);\r\n planValidation.updatedAssessmenteValidation(assessmentValidationCheck);\r\n\r\n const ISPAlertDiv = document.getElementById('navAlertISP');\r\n\r\n if (validationCheck.complete === true) {\r\n ISPAlertDiv.style.display = 'none';\r\n } else {\r\n ISPAlertDiv.style.display = 'flex';\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(newOutcomePopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(newOutcomePopup);\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (outcomeText === '') {\r\n hasInitialErros = true;\r\n outcomeTextInput.classList.add('error');\r\n }\r\n if (detailsText === '') {\r\n hasInitialErros = true;\r\n detailsTextInput.classList.add('error');\r\n }\r\n // if (historyText === '') {\r\n // hasInitialErros = true;\r\n // historyTextInput.classList.add('error');\r\n // }\r\n if (hasPreviousPlan && status === '1' && carryOverReason === '') {\r\n hasInitialErros = true;\r\n carryoverInput.classList.add('error');\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n // end required fields\r\n\r\n newOutcomePopup.appendChild(assessmentAreaDropdown);\r\n newOutcomePopup.appendChild(statusDropdown);\r\n newOutcomePopup.appendChild(carryoverInput);\r\n newOutcomePopup.appendChild(outcomeTextInput);\r\n newOutcomePopup.appendChild(detailsTextInput);\r\n newOutcomePopup.appendChild(historyTextInput);\r\n newOutcomePopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, sectionId);\r\n populateStatusDropdown(statusDropdown, status);\r\n\r\n POPUP.show(newOutcomePopup);\r\n DOM.autosizeTextarea();\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* EXPERIENCES TABLE\r\n //*------------------------------------------------------\r\n async function insertOutcomeExperience(saveData, expTableWrap) {\r\n const newTableData = [];\r\n const outcomeId = saveData.outcomeId;\r\n const whatHappened = saveData.whatHappened;\r\n const howHappened = saveData.howHappened;\r\n const experienceOrder = `${saveData.experienceOrder + 1}`;\r\n\r\n //* Insert Experience\r\n //*---------------------------\r\n const experienceId = await planOutcomesAjax.insertPlanOutcomesExperience({\r\n token: $.session.Token,\r\n outcomeId: outcomeId,\r\n experienceOrder: [experienceOrder],\r\n whatHappened: [whatHappened],\r\n howHappened: [howHappened],\r\n });\r\n saveData.experienceIds = experienceId;\r\n\r\n //* Insert Responsibilites\r\n //*---------------------------\r\n const respData = {\r\n token: $.session.Token,\r\n experienceId: experienceId,\r\n responsibleContact: [],\r\n responsibleProvider: [],\r\n whenHowOftenValue: [],\r\n whenHowOftenFrequency: [],\r\n whenHowOftenText: [],\r\n isSalesforceLocation: [],\r\n };\r\n\r\n Object.values(saveData.responsibilities).forEach(resp => {\r\n if (resp.responsibleContact === '%') {\r\n respData.responsibleContact.push(0);\r\n } else {\r\n respData.responsibleContact.push(parseInt(resp.responsibleContact));\r\n }\r\n\r\n if (resp.responsibleProvider === '%') {\r\n respData.responsibleProvider.push(0);\r\n respData.isSalesforceLocation.push('False');\r\n } else {\r\n if ($.session.applicationName === 'Advisor') {\r\n resp.isSalesforceLocation = isSalesforceLocationTrue(resp.responsibleProvider, resp.responsibleProviderName);\r\n delete resp.responsibleProviderName;\r\n respData.isSalesforceLocation.push(resp.isSalesforceLocation);\r\n respData.responsibleProvider.push(resp.responsibleProvider);\r\n } else {\r\n respData.responsibleProvider.push(resp.responsibleProvider);\r\n respData.isSalesforceLocation.push('False');\r\n }\r\n }\r\n\r\n respData.whenHowOftenFrequency.push(parseInt(resp.whenHowOftenFrequency));\r\n respData.whenHowOftenValue.push(resp.whenHowOftenValue);\r\n respData.whenHowOftenText.push(resp.whenHowOftenText);\r\n });\r\n\r\n const respIds = await planOutcomesAjax.insertPlanOutcomeExperienceResponsibility(respData);\r\n respIds.forEach((id, index) => {\r\n saveData.responsibilities[index].responsibilityIds = id;\r\n\r\n const whoResponsible = getColTextForWhoResponsible(\r\n saveData.responsibilities[index].responsibleContact,\r\n saveData.responsibilities[index].responsibleProvider,\r\n saveData.responsibilities[index].isSalesforceLocation,\r\n );\r\n const whenHowOften = getColTextForWhenHowOften(\r\n saveData.responsibilities[index].whenHowOftenFrequency,\r\n saveData.responsibilities[index].whenHowOftenValue,\r\n saveData.responsibilities[index].whenHowOftenText,\r\n );\r\n\r\n const vendorID =\r\n saveData.responsibilities[index].responsibleContact === '%'\r\n ? saveData.responsibilities[index].responsibleProvider\r\n : saveData.responsibilities[index].responsibleContact;\r\n const respId = saveData.responsibilities[index].responsibilityIds;\r\n selectedVendors[respId] = vendorID;\r\n\r\n if (index === 0) {\r\n newTableData.push({\r\n // id: `resp${id}`,\r\n attributes: [{ key: 'data-mainrow', value: 'true' }],\r\n values: [whatHappened, howHappened, whoResponsible, whenHowOften],\r\n });\r\n } else {\r\n newTableData.push({\r\n // id: `resp${id}`,\r\n attributes: [{ key: 'data-mainrow', value: 'false' }],\r\n values: ['', '', whoResponsible, whenHowOften],\r\n });\r\n }\r\n });\r\n\r\n //* Cache responsIDs\r\n responseIdCache[outcomeId] = [...respIds];\r\n\r\n //* New Table\r\n //*---------------------------\r\n const tableOptions = {\r\n tableId: `experiencesTable${experienceId}`,\r\n headline: `Experiences: In order to accomplish the outcome, what experiences does the person need to have?`,\r\n columnHeadings: ['What needs to happen', 'How should it happen?', 'Who is responsible?', 'When / How Often?'],\r\n sortable: false,\r\n callback: () => showExperiencesPopup({ ...saveData }, false),\r\n };\r\n //* Build Table\r\n const experiencesTable = table.build(tableOptions);\r\n experiencesTable.classList.add(`experiencesTable`);\r\n experiencesTable.classList.add('sortableTable');\r\n //* Populate Table\r\n table.populate(experiencesTable, newTableData, isSortable);\r\n\r\n const experiencesDummyTable = document.querySelector(`#experiencesTableDummy${outcomeId}`);\r\n\r\n // Make tables sortable\r\n Sortable.create(experiencesDummyTable, {\r\n handle: '.experiencesTable', // Set the handle to the table class\r\n draggable: '.experiencesTable', // Set the draggable elements to the table class\r\n onEnd: async sortData => {\r\n const experienceId = sortData.item.id.replace('experiencesTable', '');\r\n await planOutcomesAjax.updatePlanOutcomesExperienceOrder({\r\n token: $.session.Token,\r\n outcomeId: parseInt(outcomeId),\r\n experienceId: parseInt(experienceId),\r\n newPos: parseInt(sortData.newDraggableIndex),\r\n oldPos: parseInt(sortData.oldDraggableIndex),\r\n });\r\n },\r\n });\r\n\r\n //* Append Table\r\n experiencesDummyTable.appendChild(experiencesTable);\r\n const addExpTableBtn = expTableWrap.querySelector('.btn');\r\n expTableWrap.insertBefore(experiencesTable, addExpTableBtn);\r\n }\r\n async function updateOutcomeExperience(updateData, respPartysToDelete) {\r\n const newTableData = [];\r\n const outcomeId = updateData.outcomeId;\r\n const experienceIds = updateData.experienceIds;\r\n const experienceOrder = updateData.experienceOrder;\r\n const howHappened = updateData.howHappened;\r\n const whatHappened = updateData.whatHappened;\r\n\r\n //* Update Experience\r\n //*--------------------------------------------\r\n await planOutcomesAjax.updatePlanOutcomesExperience({\r\n token: $.session.Token,\r\n outcomeId,\r\n experienceIds: [experienceIds],\r\n experienceOrder: [experienceOrder],\r\n howHappened: [howHappened],\r\n whatHappened: [whatHappened],\r\n });\r\n\r\n //* Update/Insert/Delete Responsibilites\r\n //*--------------------------------------------\r\n const respData = {\r\n responsibilityIds: [],\r\n responsibleContact: [],\r\n responsibleProvider: [],\r\n whenHowOftenValue: [],\r\n whenHowOftenFrequency: [],\r\n whenHowOftenText: [],\r\n isSalesforceLocation: [],\r\n };\r\n\r\n Object.entries(updateData.responsibilities).map(async ([key, resp]) => {\r\n const isRespPartyForDelete = respPartysToDelete.includes(key);\r\n if (isRespPartyForDelete) {\r\n delete updateData.responsibilities[key];\r\n\r\n if (resp.responsibilityIds) {\r\n await planOutcomesAjax.deletePlanOutcomeExperienceResponsibility({\r\n token: $.session.Token,\r\n responsibilityId: parseInt(resp.responsibilityIds),\r\n });\r\n\r\n const respId = resp.responsibilityIds;\r\n delete selectedVendors[respId];\r\n }\r\n }\r\n });\r\n Object.entries(updateData.responsibilities).map(async ([key, resp], index) => {\r\n const responsibleContact = resp.responsibleContact === '%' ? 0 : parseInt(resp.responsibleContact);\r\n const isSalesforceLocation = resp.responsibleProviderSalesforce;\r\n delete resp.responsibleProviderName;\r\n const responsibleProvider = resp.responsibleProvider === '%' ? 0 : resp.responsibleProvider;\r\n const whenHowOftenFrequency = parseInt(resp.whenHowOftenFrequency);\r\n const whenHowOftenValue = resp.whenHowOftenValue;\r\n const whenHowOftenText = resp.whenHowOftenText;\r\n\r\n //* push to new table data\r\n const whoResponsible = getColTextForWhoResponsible(`${responsibleContact}`, `${responsibleProvider}`, isSalesforceLocation);\r\n const whenHowOften = getColTextForWhenHowOften(`${whenHowOftenFrequency}`, whenHowOftenValue, whenHowOftenText);\r\n\r\n const vendorID = resp.responsibleContact === '%' ? resp.responsibleProvider : resp.responsibleContact;\r\n const respId = resp.responsibilityIds;\r\n selectedVendors[respId] = vendorID;\r\n\r\n if (index === 0) {\r\n newTableData.push({\r\n // id: `resp${id}`,\r\n attributes: [{ key: 'data-mainrow', value: 'true' }],\r\n values: [whatHappened, howHappened, whoResponsible, whenHowOften],\r\n });\r\n } else {\r\n newTableData.push({\r\n attributes: [{ key: 'data-mainrow', value: 'false' }],\r\n values: ['', '', whoResponsible, whenHowOften],\r\n });\r\n }\r\n //* end push\r\n\r\n // set respData *retrieve data\r\n if (resp.responsibilityIds) {\r\n const responsibilityIds = parseInt(resp.responsibilityIds);\r\n respData.responsibilityIds.push(responsibilityIds);\r\n respData.responsibleContact.push(responsibleContact);\r\n respData.responsibleProvider.push(responsibleProvider);\r\n respData.whenHowOftenFrequency.push(whenHowOftenFrequency);\r\n respData.whenHowOftenValue.push(whenHowOftenValue);\r\n respData.whenHowOftenText.push(whenHowOftenText);\r\n respData.isSalesforceLocation.push(isSalesforceLocation);\r\n } else {\r\n const respIds = await planOutcomesAjax.insertPlanOutcomeExperienceResponsibility({\r\n token: $.session.Token,\r\n experienceId: experienceIds,\r\n responsibleContact: [responsibleContact],\r\n responsibleProvider: [responsibleProvider],\r\n whenHowOftenValue: [whenHowOftenValue],\r\n whenHowOftenFrequency: [whenHowOftenFrequency],\r\n whenHowOftenText: [whenHowOftenText],\r\n isSalesforceLocation: [isSalesforceLocation],\r\n });\r\n updateData.responsibilities[key].responsibilityIds = respIds[0];\r\n }\r\n });\r\n\r\n //* Cache responsIDs\r\n responseIdCache[outcomeId] = [...respData.responsibilityIds];\r\n\r\n await planOutcomesAjax.updatePlanOutcomeExperienceResponsibility(respData);\r\n\r\n //* Build New Table\r\n //*---------------------------\r\n const tableOptions = {\r\n tableId: `experiencesTable${experienceIds}`,\r\n headline: `Experiences: In order to accomplish the outcome, what experiences does the person need to have?`,\r\n columnHeadings: ['What needs to happen', 'How should it happen?', 'Who is responsible?', 'When / How Often?'],\r\n sortable: false,\r\n callback: () => showExperiencesPopup({ ...updateData }, false),\r\n };\r\n //* Build Table\r\n const newExperiencesTable = table.build(tableOptions);\r\n newExperiencesTable.classList.add(`experiencesTable`);\r\n newExperiencesTable.classList.add('sortableTable');\r\n //* Populate Table\r\n table.populate(newExperiencesTable, newTableData, isSortable);\r\n //* Replace Old Table w/New Table\r\n const oldExperiencesTable = document.getElementById(`experiencesTable${experienceIds}`);\r\n oldExperiencesTable.parentNode.replaceChild(newExperiencesTable, oldExperiencesTable);\r\n }\r\n async function deleteOutcomeExperience(outcomeId, experienceId) {\r\n await planOutcomesAjax.deletePlanOutcomeExperience({\r\n token: $.session.Token,\r\n outcomeId: outcomeId,\r\n experienceId: experienceId,\r\n });\r\n\r\n if (outcomesData[outcomeId].experiences) {\r\n Object.values(outcomesData[outcomeId].experiences).forEach(exp => {\r\n Object.values(exp.responsibilities).forEach(resp => {\r\n delete selectedVendors[resp.responsibilityIds];\r\n });\r\n });\r\n }\r\n\r\n const outcomeDiv = document.querySelector(`.outcome${outcomeId}`);\r\n const expTableWrap = outcomeDiv.querySelector(`#experiencesTableDummy${outcomeId}`);\r\n const expTable = expTableWrap.querySelector(`#experiencesTable${experienceId}`);\r\n\r\n expTableWrap.removeChild(expTable);\r\n\r\n // grabs the review alert for this specific outcome\r\n const alertDiv = document.getElementById(`experienceAlert${outcomeId}`);\r\n\r\n // retrieves new data from database\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n // displays or removes alert for button depending on validationCheck\r\n planValidation.experiencesValidationCheck(validationCheck, outcomeId, alertDiv);\r\n\r\n // displays or removes alerts for tabs in the navs depending on validationCheck\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n //-- Helpers --------\r\n function getColTextForWhenHowOften(freq, value, text) {\r\n let whenHowOften = '';\r\n if (freq !== '3') {\r\n const frequency = getWhenHowOFtenFrequencyById(freq);\r\n whenHowOften = `${value} ${frequency}`;\r\n } else {\r\n whenHowOften = `${value} ${text}`;\r\n }\r\n\r\n return whenHowOften;\r\n }\r\n function getColTextForWhoResponsible(responsibleContact, responsibleProvider, responsibleProviderSalesforce) {\r\n if (responsibleProvider !== '%' && responsibleProvider !== '0') {\r\n const filteredVendor = dropdownData.serviceVendors.filter(dd => dd.vendorId === responsibleProvider);\r\n\r\n if (!filteredVendor.length) {\r\n return '';\r\n }\r\n\r\n if (filteredVendor.length === 1) {\r\n return filteredVendor[0].vendorName;\r\n }\r\n\r\n const vendor = filteredVendor.find(vendor => vendor.isSalesforceLocation.toUpperCase() === responsibleProviderSalesforce.toString().toUpperCase());\r\n return vendor.vendorName;\r\n } else {\r\n if (dropdownData.relationships) {\r\n const filteredRelationship = dropdownData.relationships.filter(dd => dd.contactId === responsibleContact);\r\n return filteredRelationship.length > 0\r\n ? `${filteredRelationship[0].lastName}, ${filteredRelationship[0].firstName}`\r\n : '';\r\n }\r\n\r\n return '';\r\n }\r\n }\r\n //-- Markup ---------\r\n function toggleExperiencesPopupDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.experiencesPopup .error');\r\n const doneBtn = document.querySelector('.experiencesPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showExperiencesPopup(data, isNew) {\r\n let hasInitialErros;\r\n const saveUpdateData = {\r\n outcomeId: data.outcomeId,\r\n experienceOrder: data.experienceOrder,\r\n howHappened: data.howHappened ? data.howHappened : '',\r\n whatHappened: data.whatHappened ? data.whatHappened : '',\r\n responsibilities: {},\r\n };\r\n const respPartysToDelete = [];\r\n\r\n const experiencesPopup = POPUP.build({\r\n header: isNew ? 'Add Experience' : 'Edit Experience',\r\n classNames: 'experiencesPopup',\r\n hideX: true,\r\n });\r\n\r\n if (!isNew) {\r\n saveUpdateData.experienceIds = data.experienceIds;\r\n saveUpdateData.responsibilities = { ...data.responsibilities };\r\n experiencesPopup.classList.add('update');\r\n }\r\n\r\n //*--------------------------------\r\n //* MAIN\r\n //*--------------------------------\r\n const mainWrap = document.createElement('div');\r\n mainWrap.classList.add('experiencesPopup__main');\r\n // What Needs To Happen\r\n const whatHappenedInput = input.build({\r\n label: '*What needs to happen',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.whatHappened,\r\n charLimit: charLimits.whatNeedsToHappen,\r\n forceCharLimit: true,\r\n });\r\n whatHappenedInput.classList.add('whatHappenedInput');\r\n whatHappenedInput.addEventListener('input', e => {\r\n saveUpdateData.whatHappened = e.target.value;\r\n if (saveUpdateData.whatHappened === '') {\r\n whatHappenedInput.classList.add('error');\r\n } else {\r\n whatHappenedInput.classList.remove('error');\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n });\r\n // How Should It Happen\r\n const howHappenedInput = input.build({\r\n label: '*How should it happen?',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.howHappened,\r\n charLimit: charLimits.howItShouldHappen,\r\n forceCharLimit: true,\r\n });\r\n howHappenedInput.classList.add('howHappenedInput');\r\n howHappenedInput.addEventListener('input', e => {\r\n saveUpdateData.howHappened = e.target.value;\r\n if (saveUpdateData.howHappened === '') {\r\n howHappenedInput.classList.add('error');\r\n } else {\r\n howHappenedInput.classList.remove('error');\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n });\r\n\r\n //*--------------------------------\r\n //* RESPONSIBLE PARTY\r\n //*--------------------------------\r\n function buildResponsiblePartyInputs(saveUpdateDataRef, dataRefKey) {\r\n const inputsWrap = document.createElement('div');\r\n\r\n if (saveUpdateDataRef.responsibilityIds) {\r\n inputsWrap.id = `resp${saveUpdateDataRef.responsibilityIds}`;\r\n }\r\n\r\n //* BUILD INPUTS\r\n //*--------------------------------\r\n // Who Is Responsible\r\n const whoReponsibleWrap = document.createElement('div');\r\n const wrapHeading = document.createElement('div');\r\n whoReponsibleWrap.classList.add('whoResponsibleWrap');\r\n wrapHeading.innerHTML = '

    *Who Is Responsible?

    Choose either a Responsible Person or Provider.

    ';\r\n\r\n const responsiblePersonDropdown = dropdown.build({\r\n dropdownId: 'responsiblePersonDropdown',\r\n label: 'Responsible Person',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateDataRef.responsibleContact = selectedOption.value;\r\n\r\n if (saveUpdateDataRef.responsibleContact !== '%') {\r\n whoReponsibleWrap.classList.remove('error');\r\n responsiblePersonDropdown.classList.remove('error');\r\n // if not empty clear error and value from other dropdown\r\n responsibleProviderDropdown.classList.remove('error');\r\n const respDropdown = responsibleProviderDropdown.querySelector('select');\r\n respDropdown.value = '%';\r\n saveUpdateDataRef.responsibleProvider = '%';\r\n } else {\r\n // if emtpy check if other dropdown is emtpy\r\n if (saveUpdateDataRef.responsibleProvider === '%') {\r\n responsiblePersonDropdown.classList.add('error');\r\n responsibleProviderDropdown.classList.add('error');\r\n whoReponsibleWrap.classList.add('error');\r\n }\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n },\r\n });\r\n const responsibleProviderDropdown = dropdown.build({\r\n dropdownId: 'responsibleProviderDropdown',\r\n label: 'Responsible Provider',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateDataRef.responsibleProvider = selectedOption.value.split('|')[0];\r\n saveUpdateDataRef.responsibleProviderSalesforce = selectedOption.value.split('|')[1] || '';\r\n saveUpdateDataRef.responsibleProviderName = selectedOption.text;\r\n\r\n if (saveUpdateDataRef.responsibleProvider !== '%') {\r\n whoReponsibleWrap.classList.remove('error');\r\n responsibleProviderDropdown.classList.remove('error');\r\n // if not empty clear error and value from other dropdown\r\n responsiblePersonDropdown.classList.remove('error');\r\n const respDropdown = responsiblePersonDropdown.querySelector('select');\r\n respDropdown.value = '%';\r\n saveUpdateDataRef.responsibleContact = '%';\r\n } else {\r\n // if emtpy check if other dropdown is emtpy\r\n if (saveUpdateDataRef.responsibleContact === '%') {\r\n responsibleProviderDropdown.classList.add('error');\r\n responsiblePersonDropdown.classList.add('error');\r\n whoReponsibleWrap.classList.add('error');\r\n }\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n },\r\n });\r\n whoReponsibleWrap.appendChild(wrapHeading);\r\n whoReponsibleWrap.appendChild(responsiblePersonDropdown);\r\n whoReponsibleWrap.appendChild(responsibleProviderDropdown);\r\n // When/How OFten\r\n const whenHowOftenValueInput = input.build({\r\n type: 'textarea',\r\n label: '*When/How Often',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateDataRef.whenHowOftenValue,\r\n charLimit: charLimits.whenHowOften,\r\n forceCharLimit: true,\r\n });\r\n whenHowOftenValueInput.classList.add('whenHowOftenValueInput');\r\n whenHowOftenValueInput.addEventListener('input', e => {\r\n saveUpdateDataRef.whenHowOftenValue = e.target.value;\r\n\r\n if (saveUpdateDataRef.whenHowOftenValue === '') {\r\n whenHowOftenValueInput.classList.add('error');\r\n } else {\r\n whenHowOftenValueInput.classList.remove('error');\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n });\r\n // When/How Often Freq\r\n const whenHowOftenFrequencyDropdown = dropdown.build({\r\n dropdownId: 'whenHowOFtenFrequencyExperiences',\r\n label: '*When/How Often Frequency',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateDataRef.whenHowOftenFrequency = selectedOption.value;\r\n\r\n const whenHowOftenTextInputField = whenHowOftenTextInput.querySelector('.input-field__input');\r\n\r\n if (saveUpdateDataRef.whenHowOftenFrequency === '' || saveUpdateDataRef.whenHowOftenFrequency === '%') {\r\n whenHowOftenFrequencyDropdown.classList.add('error');\r\n } else {\r\n whenHowOftenFrequencyDropdown.classList.remove('error');\r\n }\r\n\r\n if (saveUpdateDataRef.whenHowOftenFrequency === '3') {\r\n whenHowOftenTextInput.classList.remove('disabled');\r\n whenHowOftenTextInputField.removeAttribute('tabindex');\r\n\r\n if (saveUpdateDataRef.whenHowOftenText === '') {\r\n whenHowOftenTextInput.classList.add('error');\r\n } else {\r\n whenHowOftenTextInput.classList.remove('error');\r\n }\r\n } else {\r\n whenHowOftenTextInput.classList.remove('error');\r\n whenHowOftenTextInput.classList.add('disabled');\r\n whenHowOftenTextInputField.setAttribute('tabindex', '-1');\r\n saveUpdateDataRef.whenHowOftenText = '';\r\n const textInput = whenHowOftenTextInput.querySelector('.input-field__input');\r\n textInput.value = '';\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n },\r\n });\r\n // When/How Often Other\r\n const whenHowOftenTextInput = input.build({\r\n label: '*When/How Often Other',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateDataRef.whenHowOftenText,\r\n charLimit: charLimits.whenHowOftenOther,\r\n forceCharLimit: true,\r\n });\r\n whenHowOftenTextInput.classList.add('whenHowOftenTextInput');\r\n whenHowOftenTextInput.addEventListener('input', e => {\r\n saveUpdateDataRef.whenHowOftenText = e.target.value;\r\n\r\n if (saveUpdateDataRef.whenHowOftenFrequency === '3') {\r\n if (saveUpdateDataRef.whenHowOftenText === '') {\r\n whenHowOftenTextInput.classList.add('error');\r\n } else {\r\n whenHowOftenTextInput.classList.remove('error');\r\n }\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n });\r\n if (saveUpdateDataRef.whenHowOftenFrequency !== '3') {\r\n const whenHowOftenTextInputField = whenHowOftenTextInput.querySelector('.input-field__input');\r\n whenHowOftenTextInput.classList.add('disabled');\r\n whenHowOftenTextInputField.setAttribute('tabindex', '-1');\r\n }\r\n\r\n //* DELETE RESP PARTY\r\n //*--------------------------------\r\n const deleteBtn = button.build({\r\n text: 'Delete Above Party',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n if (isNew) {\r\n delete saveUpdateData.responsibilities[dataRefKey];\r\n } else {\r\n respPartysToDelete.push(dataRefKey);\r\n }\r\n\r\n respPartyWrap.removeChild(inputsWrap);\r\n toggleExperiencesPopupDoneBtn();\r\n },\r\n });\r\n\r\n //* INIT REQUIRED FIELDS\r\n //*--------------------------------\r\n if (saveUpdateDataRef.responsibleContact === '%' && saveUpdateDataRef.responsibleProvider === '%') {\r\n whoReponsibleWrap.classList.add('error');\r\n responsiblePersonDropdown.classList.add('error');\r\n responsibleProviderDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateDataRef.whenHowOftenValue === '') {\r\n hasInitialErros = true;\r\n whenHowOftenValueInput.classList.add('error');\r\n }\r\n if (saveUpdateDataRef.whenHowOftenFrequency === '' || saveUpdateDataRef.whenHowOftenFrequency === '%') {\r\n whenHowOftenFrequencyDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateDataRef.whenHowOftenFrequency === '3') {\r\n if (saveUpdateDataRef.whenHowOftenText === '') {\r\n whenHowOftenTextInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n }\r\n\r\n populateExperiencesHowOftenDropdown(whenHowOftenFrequencyDropdown, saveUpdateDataRef.whenHowOftenFrequency);\r\n populateResponsibleProviderDropdown(\r\n responsibleProviderDropdown,\r\n saveUpdateDataRef.responsibleProvider,\r\n saveUpdateDataRef.responsibleProviderSalesforce,\r\n );\r\n planData.populateRelationshipDropdown(responsiblePersonDropdown, saveUpdateDataRef.responsibleContact);\r\n\r\n //* ASSEMBLE\r\n //*--------------------------------\r\n inputsWrap.appendChild(whoReponsibleWrap);\r\n inputsWrap.appendChild(whenHowOftenValueInput);\r\n inputsWrap.appendChild(whenHowOftenFrequencyDropdown);\r\n inputsWrap.appendChild(whenHowOftenTextInput);\r\n inputsWrap.appendChild(deleteBtn);\r\n\r\n return inputsWrap;\r\n }\r\n\r\n // initial load\r\n const respPartyWrap = document.createElement('div');\r\n respPartyWrap.classList.add('experiencesPopup__respParty');\r\n if (!isNew) {\r\n // loop out and build them\r\n Object.keys(saveUpdateData.responsibilities).forEach(key => {\r\n // build & append it\r\n const respParty = buildResponsiblePartyInputs(saveUpdateData.responsibilities[key], key);\r\n respPartyWrap.appendChild(respParty);\r\n });\r\n } else {\r\n // setup default resp party\r\n // init data\r\n saveUpdateData.responsibilities[0] = {\r\n responsibleContact: '%',\r\n responsibleProvider: '%',\r\n whenHowOftenValue: '',\r\n whenHowOftenFrequency: '',\r\n whenHowOftenText: '',\r\n };\r\n // build & append it\r\n const respParty = buildResponsiblePartyInputs(saveUpdateData.responsibilities[0], 0);\r\n respPartyWrap.appendChild(respParty);\r\n }\r\n\r\n //*--------------------------------\r\n //* ACTION BUTTONS\r\n //*--------------------------------\r\n const addRespPartyBtn = button.build({\r\n text: 'Add Responsible Party',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'addRespPartyBtn',\r\n callback: () => {\r\n // init data\r\n const respLength = Object.keys(saveUpdateData.responsibilities).length;\r\n saveUpdateData.responsibilities[respLength] = {\r\n responsibleContact: '%',\r\n responsibleProvider: '%',\r\n whenHowOftenValue: '',\r\n whenHowOftenFrequency: '',\r\n whenHowOftenText: '',\r\n };\r\n // build & append it\r\n const respParty = buildResponsiblePartyInputs(saveUpdateData.responsibilities[respLength], respLength);\r\n respPartyWrap.appendChild(respParty);\r\n toggleExperiencesPopupDoneBtn();\r\n },\r\n });\r\n const doneBtn = button.build({\r\n text: isNew ? 'Save Experience' : 'Update Experience',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n\r\n if (isNew) {\r\n const outcome = document.querySelector(`.outcome${saveUpdateData.outcomeId}`);\r\n const expTableWrap = document.querySelector(`#experiencesTableDummy${saveUpdateData.outcomeId}`);\r\n const expTables = [...expTableWrap.querySelectorAll('.table')];\r\n saveUpdateData.experienceOrder = expTables.length;\r\n await insertOutcomeExperience({ ...saveUpdateData }, expTableWrap);\r\n } else {\r\n await updateOutcomeExperience({ ...saveUpdateData }, respPartysToDelete);\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(experiencesPopup);\r\n\r\n // grabs the experience alert for this specific outcome\r\n const alertDiv = document.getElementById(`experienceAlert${saveUpdateData.outcomeId}`);\r\n\r\n // checks for missing data\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n // displays or removes button alert depending on validationCheck\r\n planValidation.experiencesValidationCheck(validationCheck, saveUpdateData.outcomeId, alertDiv);\r\n\r\n // displays or removes alerts for tabs in the navs depending on validationCheck\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(experiencesPopup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete Experience',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n const message = 'Do you want to delete this Experience?';\r\n ISP.showDeleteWarning(experiencesPopup, message, () => {\r\n deleteOutcomeExperience(saveUpdateData.outcomeId, saveUpdateData.experienceIds);\r\n });\r\n },\r\n });\r\n // wrap done, cancel & delete btns\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(addRespPartyBtn);\r\n const mainBtns = document.createElement('div');\r\n mainBtns.classList.add('mainBtns');\r\n mainBtns.appendChild(doneBtn);\r\n if (!isNew) {\r\n mainBtns.appendChild(deleteBtn);\r\n }\r\n mainBtns.appendChild(cancelBtn);\r\n btnWrap.appendChild(mainBtns);\r\n\r\n //*--------------------------------\r\n //* INIT REQUIRED FIELDS\r\n //*--------------------------------\r\n if (saveUpdateData.whatHappened === '') {\r\n hasInitialErros = true;\r\n whatHappenedInput.classList.add('error');\r\n }\r\n if (saveUpdateData.howHappened === '') {\r\n hasInitialErros = true;\r\n howHappenedInput.classList.add('error');\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n\r\n //*--------------------------------\r\n //* ASSEMBLE\r\n //*--------------------------------\r\n mainWrap.appendChild(whatHappenedInput);\r\n mainWrap.appendChild(howHappenedInput);\r\n\r\n experiencesPopup.appendChild(mainWrap);\r\n experiencesPopup.appendChild(respPartyWrap);\r\n experiencesPopup.appendChild(btnWrap);\r\n\r\n if (isReadOnly) {\r\n whatHappenedInput.classList.add('disabled');\r\n howHappenedInput.classList.add('disabled');\r\n whoReponsibleInput.classList.add('disabled');\r\n whenHowOftenValueInput.classList.add('disabled');\r\n whenHowOftenFrequencyDropdown.classList.add('disabled');\r\n whenHowOftenTextInput.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n POPUP.show(experiencesPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function addExperienceTable(outcomeId) {\r\n showExperiencesPopup({ outcomeId }, true);\r\n }\r\n function buildExperiencesTables(outcomeId) {\r\n const experiencesDiv = document.createElement('div');\r\n experiencesDiv.classList.add('experiencesTablesWrap');\r\n\r\n const addExpTableBtn = button.build({\r\n text: 'Add Experience',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addExperienceTable(outcomeId),\r\n });\r\n if (isReadOnly) {\r\n addExpTableBtn.classList.add('disabled');\r\n }\r\n\r\n // adding dummy top table so col headings always show\r\n experiencesDummyTable = table.build({\r\n tableId: `experiencesTableDummy${outcomeId}`,\r\n headline: `Experiences: In order to accomplish the outcome, what experiences does the person need to have?`,\r\n columnHeadings: ['What needs to happen', 'How should it happen?', 'Who is responsible?', 'When / How Often?'],\r\n sortable: isSortable,\r\n });\r\n experiencesDummyTable.classList.add(`experiencesTable`);\r\n experiencesDiv.appendChild(experiencesDummyTable);\r\n // end dummy table\r\n\r\n if (outcomesData[outcomeId] && outcomesData[outcomeId].experiences) {\r\n Object.values(outcomesData[outcomeId].experiences)\r\n .sort((a, b) => {\r\n return a.experienceOrder < b.experienceOrder ? -1 : a.experienceOrder > b.experienceOrder ? 1 : 0;\r\n })\r\n .map((td, index) => {\r\n const tableData = [];\r\n const whatHappened = td.whatHappened;\r\n const howHappened = td.howHappened;\r\n const respObj = {};\r\n\r\n // checking for responsibilities\r\n Object.values(td.responsibilities).forEach((resp, index) => {\r\n const respId = resp.responsibilityIds;\r\n const responsibleContact = resp.responsibleContact;\r\n const responsibleProvider = resp.responsibleProvider;\r\n const responsibleProviderSalesforce = resp.responsibleProviderSalesforce;\r\n const whenHowOftenValue = resp.whenHowOftenValue;\r\n const whenHowOftenFrequency = resp.whenHowOftenFrequency;\r\n const whenHowOftenText = resp.whenHowOftenText;\r\n\r\n respObj[index] = {\r\n responsibilityIds: respId,\r\n responsibleContact: responsibleContact,\r\n responsibleProvider: responsibleProvider,\r\n responsibleProviderSalesforce: responsibleProviderSalesforce,\r\n whenHowOftenValue: whenHowOftenValue,\r\n whenHowOftenFrequency: whenHowOftenFrequency,\r\n whenHowOftenText: whenHowOftenText,\r\n };\r\n\r\n const vendorID = responsibleContact === '%' ? responsibleProvider : responsibleContact;\r\n selectedVendors[respId] = vendorID;\r\n\r\n const whoResponsible = getColTextForWhoResponsible(\r\n responsibleContact,\r\n responsibleProvider,\r\n responsibleProviderSalesforce,\r\n );\r\n const whenHowOften = getColTextForWhenHowOften(whenHowOftenFrequency, whenHowOftenValue, whenHowOftenText);\r\n\r\n if (index === 0) {\r\n tableData.push({\r\n // id: `resp${respId}`,\r\n attributes: [{ key: 'data-mainrow', value: 'true' }],\r\n values: [whatHappened, howHappened, whoResponsible, whenHowOften],\r\n });\r\n } else {\r\n tableData.push({\r\n // id: `resp${respId}`,\r\n attributes: [{ key: 'data-mainrow', value: 'false' }],\r\n values: ['', '', whoResponsible, whenHowOften],\r\n });\r\n }\r\n });\r\n\r\n //*--------------------------------\r\n //* Table\r\n //*--------------------------------\r\n const tableOptions = {\r\n tableId: `experiencesTable${td.experienceIds}`,\r\n headline: `Experiences: In order to accomplish the outcome, what experiences does the person need to have?`,\r\n columnHeadings: [\r\n '
    ',\r\n 'What needs to happen',\r\n 'How should it happen?',\r\n 'Who is responsible?',\r\n 'When / How Often?',\r\n ],\r\n sortable: false,\r\n callback: () =>\r\n showExperiencesPopup(\r\n {\r\n outcomeId: td.outcomeId,\r\n experienceIds: td.experienceIds,\r\n experienceOrder: td.experienceOrder,\r\n whatHappened: whatHappened,\r\n howHappened: howHappened,\r\n responsibilities: {\r\n ...respObj,\r\n },\r\n },\r\n false,\r\n ),\r\n };\r\n\r\n if (respObj[0]) {\r\n if (respObj[0].responsibleProvider) {\r\n validationCheck.selectedProviders.push(respObj[0].responsibleProvider);\r\n }\r\n }\r\n\r\n const experiencesTable = table.build(tableOptions);\r\n experiencesTable.classList.add('experiencesTable');\r\n experiencesTable.classList.add('sortableTable');\r\n\r\n // Populate Table\r\n table.populate(experiencesTable, tableData, isSortable);\r\n\r\n // Append experiencesTable to experiencesDummyTable\r\n experiencesDummyTable.appendChild(experiencesTable);\r\n\r\n // Make tables sortable\r\n Sortable.create(experiencesDummyTable, {\r\n handle: '.experiencesTable', // Set the handle to the table class\r\n draggable: '.experiencesTable', // Set the draggable elements to the table class\r\n onEnd: async sortData => {\r\n const experienceId = sortData.item.id.replace('experiencesTable', '');\r\n await planOutcomesAjax.updatePlanOutcomesExperienceOrder({\r\n token: $.session.Token,\r\n outcomeId: parseInt(outcomeId),\r\n experienceId: parseInt(experienceId),\r\n newPos: parseInt(sortData.newDraggableIndex) + 1,\r\n oldPos: parseInt(sortData.oldDraggableIndex) + 1,\r\n });\r\n },\r\n });\r\n\r\n experiencesDummyTable.appendChild(experiencesTable);\r\n });\r\n }\r\n\r\n // create wrapper div for button and alert\r\n const experienceBtnAlertDiv = document.createElement('div');\r\n experienceBtnAlertDiv.classList.add('btnAlertContainer');\r\n\r\n // create div for the alert\r\n const experienceAlertDiv = document.createElement('div');\r\n experienceAlertDiv.innerHTML = `${icons.error}`;\r\n experienceAlertDiv.id = `experienceAlert${outcomeId}`;\r\n experienceAlertDiv.classList.add(`experiencesAlert`);\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip('At least one experience must be entered for each outcome', experienceAlertDiv);\r\n\r\n experienceBtnAlertDiv.appendChild(addExpTableBtn);\r\n experienceBtnAlertDiv.appendChild(experienceAlertDiv);\r\n experiencesDiv.appendChild(experienceBtnAlertDiv);\r\n\r\n // checks if alert should be visible\r\n planValidation.experiencesValidationCheck(validationCheck, outcomeId, experienceAlertDiv);\r\n\r\n // checks if providers are in paid supports providers\r\n planValidation.checkExperienceProviders(validationCheck);\r\n\r\n return experiencesDiv;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* REVIEWS TABLE\r\n //*------------------------------------------------------\r\n async function insertOutcomeReview(saveData) {\r\n const outcomeId = saveData.outcomeId;\r\n const whatWillHappen = saveData.whatWillHappen;\r\n const whenToCheckIn = saveData.whenToCheckIn;\r\n const whoReview = saveData.whoReview;\r\n const reviewOrder = `${saveData.reviewOrder}`;\r\n // const contactId = parseInt(saveData.contactId);\r\n const contactId = saveData.contactId;\r\n\r\n const reviewId = await planOutcomesAjax.insertPlanOutcomesReview({\r\n token: $.session.Token,\r\n outcomeId: outcomeId,\r\n whatWillHappen: [whatWillHappen],\r\n whenToCheckIn: [whenToCheckIn],\r\n whoReview: [whoReview],\r\n reviewOrder: [reviewOrder],\r\n contactId: [contactId],\r\n });\r\n\r\n const tableID = `reviewsTable${outcomeId}`;\r\n const rowId = `reviews${reviewId}`;\r\n\r\n table.addRows(\r\n tableID,\r\n [\r\n {\r\n id: rowId,\r\n values: [whatWillHappen, whoReview, whenToCheckIn],\r\n onClick: () => {\r\n showReviewsPopup(\r\n {\r\n whatWillHappen,\r\n whenToCheckIn,\r\n whoReview,\r\n reviewOrder,\r\n reviewIds: reviewId,\r\n outcomeId,\r\n contactId,\r\n },\r\n false,\r\n );\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n // grabs the review alert for this specific outcome\r\n const alertDiv = document.getElementById(`reviewsAlert${outcomeId}`);\r\n\r\n // checks for missing data\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n // displays or removes button alert depending on validationCheck\r\n planValidation.reviewsValidationCheck(validationCheck, outcomeId, alertDiv);\r\n\r\n // displays or removes alerts for tabs in the navs depending on validationCheck\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n async function updateOutcomeReview(updateData) {\r\n const outcomeId = updateData.outcomeId;\r\n const reviewIds = updateData.reviewIds;\r\n const whatWillHappen = updateData.whatWillHappen;\r\n const whenToCheckIn = updateData.whenToCheckIn;\r\n const whoReview = updateData.whoReview;\r\n //const reviewOrder = updateData.reviewOrder;\r\n const contactId = updateData.contactId;\r\n\r\n await planOutcomesAjax.updatePlanOutcomesReview({\r\n token: $.session.Token,\r\n outcomeId,\r\n reviewIds: [reviewIds],\r\n whatWillHappen: [whatWillHappen],\r\n whenToCheckIn: [whenToCheckIn],\r\n whoReview: [whoReview],\r\n contactId: [contactId],\r\n // reviewOrder: [reviewOrder],\r\n });\r\n\r\n const rowId = `reviews${reviewIds}`;\r\n\r\n table.updateRows(\r\n `reviewsTable${outcomeId}`,\r\n [\r\n {\r\n id: rowId,\r\n values: [whatWillHappen, whoReview, whenToCheckIn],\r\n onClick: () => {\r\n showReviewsPopup(\r\n {\r\n outcomeId,\r\n reviewIds,\r\n whatWillHappen,\r\n whenToCheckIn,\r\n whoReview,\r\n contactId,\r\n //reviewOrder,\r\n },\r\n false,\r\n );\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n // grabs the review alert for this specific outcome\r\n const alertDiv = document.getElementById(`reviewsAlert${outcomeId}`);\r\n\r\n // checks for missing data\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n // displays or removes button alert depending on validationCheck\r\n planValidation.reviewsValidationCheck(validationCheck, outcomeId, alertDiv);\r\n\r\n // displays or removes alerts for tabs in the navs depending on validationCheck\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n async function deleteOutcomeReview(outcomeId, reviewId) {\r\n await planOutcomesAjax.deletePlanOutcomeReview({\r\n token: $.session.Token,\r\n outcomeId: outcomeId,\r\n reviewId: reviewId,\r\n });\r\n\r\n table.deleteRow(`reviews${reviewId}`);\r\n\r\n // grabs the review alert for this specific outcome\r\n const alertDiv = document.getElementById(`reviewsAlert${outcomeId}`);\r\n\r\n // checks for missing data\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n // displays or removes button alert depending on validationCheck\r\n planValidation.reviewsValidationCheck(validationCheck, outcomeId, alertDiv);\r\n\r\n // displays or removes alerts for tabs in the navs depending on validationCheck\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n //-- Markup ---------\r\n function toggleReviewsPopupDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.reviewsPopup .error');\r\n const doneBtn = document.querySelector('.reviewsPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n doneBtn.disabled = true;\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n doneBtn.disabled = false;\r\n }\r\n }\r\n function showReviewsPopup(popupData, isNew) {\r\n let hasInitialErros;\r\n\r\n const saveUpdateData = {\r\n outcomeId: popupData.outcomeId,\r\n whatWillHappen: popupData.whatWillHappen ? popupData.whatWillHappen : '',\r\n whenToCheckIn: popupData.whenToCheckIn ? popupData.whenToCheckIn : '',\r\n whoReview: popupData.whoReview ? popupData.whoReview : '',\r\n reviewOrder: popupData.reviewOrder ? popupData.reviewOrder : '',\r\n contactId: popupData.contactId ? popupData.contactId : '',\r\n };\r\n\r\n if (!isNew) {\r\n saveUpdateData.reviewIds = popupData.reviewIds;\r\n }\r\n\r\n const reviewsPopup = POPUP.build({\r\n header: isNew ? 'Add Review' : 'Edit Review',\r\n classNames: 'reviewsPopup',\r\n hideX: true,\r\n });\r\n\r\n // What Will Happen\r\n const whatWillHappenInput = input.build({\r\n label: `*What will progress look like?`,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.whatWillHappen,\r\n charLimit: charLimits.whatWillHappen,\r\n forceCharLimit: true,\r\n });\r\n whatWillHappenInput.classList.add('whatWillHappen');\r\n whatWillHappenInput.addEventListener('input', e => {\r\n saveUpdateData.whatWillHappen = e.target.value;\r\n\r\n if (saveUpdateData.whatWillHappen === '') {\r\n whatWillHappenInput.classList.add('error');\r\n } else {\r\n whatWillHappenInput.classList.remove('error');\r\n }\r\n\r\n toggleReviewsPopupDoneBtn();\r\n });\r\n // Who Review\r\n const whoReviewDropdown = dropdown.build({\r\n dropdownId: 'whoReviewDropdown',\r\n id: 'whoReviewDropdown',\r\n label: '*Who?',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.contactId = selectedOption.value;\r\n saveUpdateData.whoReview = selectedOption.text;\r\n\r\n const isCaseManager = getWhoTypeById(saveUpdateData.contactId);\r\n //const whenToCheckInInputField = whenToCheckInInput.querySelector('.input-field__input');\r\n // if (isCaseManager) {\r\n // whenToCheckInInputField.value = 'Monthly';\r\n // saveUpdateData.whenToCheckIn = 'Monthly';\r\n // } else {\r\n // whenToCheckInInputField.value = '';\r\n // saveUpdateData.whenToCheckIn = '';\r\n // }\r\n\r\n if (saveUpdateData.whoReview === '' || saveUpdateData.whoReview === '%') {\r\n whoReviewDropdown.classList.add('error');\r\n } else {\r\n whoReviewDropdown.classList.remove('error');\r\n }\r\n\r\n toggleReviewsPopupDoneBtn();\r\n },\r\n });\r\n // When To Check In\r\n const whenToCheckinDropdown = dropdown.build({\r\n label: '*When To Check In?',\r\n type: 'text',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.whenToCheckIn = selectedOption.text;\r\n\r\n if (saveUpdateData.whenToCheckIn === '' || saveUpdateData.whenToCheckIn === '%') {\r\n whenToCheckinDropdown.classList.add('error');\r\n } else {\r\n whenToCheckinDropdown.classList.remove('error');\r\n }\r\n\r\n toggleReviewsPopupDoneBtn();\r\n },\r\n });\r\n // whenToCheckInInput.classList.add('disabled');\r\n\r\n // whenToCheckinDropdown\r\n function populatewhenToCheckinDropdown(whenToCheckinDropdown, whenToCheckIn) {\r\n const dropdownData = [\r\n { text: '', value: '' },\r\n { text: 'Weekly', value: 'Weekly' },\r\n { text: 'Monthly', value: 'Monthly' },\r\n { text: 'Quarterly', value: 'Quarterly' },\r\n { text: 'Semi-Monthly', value: 'Semi-Monthly' },\r\n { text: 'Bi-Monthly', value: 'Bi-Monthly' },\r\n { text: 'N/A', value: 'N/A' },\r\n ];\r\n dropdown.populate(whenToCheckinDropdown, dropdownData, whenToCheckIn);\r\n }\r\n\r\n const doneBtn = button.build({\r\n text: isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n doneBtn.disabled = true;\r\n if (isNew) {\r\n const tableId = `reviewsTable${saveUpdateData.outcomeId}`;\r\n const rowOrder = table.getRowCount(tableId) + 1;\r\n saveUpdateData.reviewOrder = rowOrder;\r\n insertOutcomeReview(saveUpdateData);\r\n } else {\r\n updateOutcomeReview(saveUpdateData);\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n doneBtn.disabled = false;\r\n POPUP.hide(reviewsPopup);\r\n\r\n // grabs the review alert for this specific outcome\r\n const alertDiv = document.getElementById(`reviewsAlert${saveUpdateData.outcomeId}`);\r\n\r\n // checks for missing data\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n // displays or removes button alert depending on validationCheck\r\n planValidation.reviewsValidationCheck(validationCheck, saveUpdateData.outcomeId, alertDiv);\r\n\r\n // displays or removes alerts for tabs in the navs depending on validationCheck\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(reviewsPopup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n const message = 'Do you want to delete this Review?';\r\n ISP.showDeleteWarning(reviewsPopup, message, () => {\r\n deleteOutcomeReview(saveUpdateData.outcomeId, saveUpdateData.reviewIds);\r\n });\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (saveUpdateData.whatWillHappen === '') {\r\n whatWillHappenInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.whoReview === '' || saveUpdateData.whoReview === '%') {\r\n whoReviewDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.whenToCheckIn === '' || saveUpdateData.whenToCheckIn === '%') {\r\n whenToCheckinDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n doneBtn.disabled = true;\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n whatWillHappenInput.classList.add('disabled');\r\n whoReviewDropdown.classList.add('disabled');\r\n whenToCheckinDropdown.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n doneBtn.disabled = true;\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n reviewsPopup.appendChild(whatWillHappenInput);\r\n reviewsPopup.appendChild(whoReviewDropdown);\r\n reviewsPopup.appendChild(whenToCheckinDropdown);\r\n reviewsPopup.appendChild(btnWrap);\r\n\r\n //populateReviewsWhoDropdown(whoReviewDropdown, saveUpdateData.contactId);\r\n // planData.populateRelationshipDropdown(whoReviewDropdown, saveUpdateData.contactId);\r\n planData.populateOutcomesReviewWhoDropdown(whoReviewDropdown, saveUpdateData.contactId);\r\n\r\n populatewhenToCheckinDropdown(whenToCheckinDropdown, saveUpdateData.whenToCheckIn);\r\n\r\n POPUP.show(reviewsPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function addReviewRow(outcomeId) {\r\n showReviewsPopup({ outcomeId }, true);\r\n }\r\n function buildReviewsTable(outcomeId) {\r\n const reviewsDiv = document.createElement('div');\r\n\r\n const reviewsTable = table.build({\r\n tableId: `reviewsTable${outcomeId}`,\r\n headline: 'Reviews',\r\n columnHeadings: [`What will progress look like? How will we know it's happening?`, 'Who?', 'When to check In?'],\r\n sortable: isSortable,\r\n onSortCallback: async sortData => {\r\n const reviewId = sortData.row.id.replace('reviews', '');\r\n sortData.newIndex = sortData.newIndex + 1;\r\n sortData.oldIndex = sortData.oldIndex + 1;\r\n await planOutcomesAjax.updateOutcomesReviewOrder({\r\n token: $.session.Token,\r\n outcomeId: parseInt(outcomeId),\r\n reviewId: parseInt(reviewId),\r\n newPos: parseInt(sortData.newIndex),\r\n oldPos: parseInt(sortData.oldIndex),\r\n });\r\n },\r\n });\r\n reviewsTable.classList.add('reviewsTable');\r\n\r\n // Set the data type for each header, for sorting purposes\r\n let number = 0;\r\n const headers = reviewsTable.querySelectorAll('.header div');\r\n if (headers.length > 3) {\r\n number = 1;\r\n }\r\n headers[0 + number].setAttribute('data-type', 'string'); // What will progress look like\r\n headers[1 + number].setAttribute('data-type', 'string'); // Who ?\r\n headers[2 + number].setAttribute('data-type', 'string'); // When to check in?\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(reviewsTable);\r\n\r\n const addRowBtn = button.build({\r\n text: 'Add Review',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addReviewRow(outcomeId),\r\n });\r\n if (isReadOnly) {\r\n addRowBtn.classList.add('disabled');\r\n }\r\n\r\n if (outcomesData[outcomeId] && outcomesData[outcomeId].reviews) {\r\n const tableData = Object.values(outcomesData[outcomeId].reviews)\r\n .sort((a, b) => {\r\n return a.reviewOrder < b.reviewOrder ? -1 : a.reviewOrder > b.reviewOrder ? 1 : 0;\r\n })\r\n .map(td => {\r\n const whatWillHappen = td.whatWillHappen;\r\n const whoReview = td.whoReview;\r\n const whenToCheckIn = td.whenToCheckIn;\r\n const rowId = `reviews${td.reviewIds}`;\r\n\r\n return {\r\n id: rowId,\r\n values: [whatWillHappen, whoReview, whenToCheckIn],\r\n onClick: () =>\r\n showReviewsPopup(\r\n {\r\n whatWillHappen: whatWillHappen,\r\n whenToCheckIn: whenToCheckIn,\r\n whoReview: whoReview,\r\n reviewOrder: td.reviewOrder + 1,\r\n reviewIds: td.reviewIds,\r\n outcomeId: td.outcomeId,\r\n // contactId: td.contactId,\r\n contactId: td.whoResponsible,\r\n },\r\n false,\r\n ),\r\n };\r\n });\r\n\r\n table.populate(reviewsTable, tableData, isSortable);\r\n }\r\n\r\n reviewsDiv.appendChild(reviewsTable);\r\n\r\n const reviewsBtnAlertDiv = document.createElement('div');\r\n reviewsBtnAlertDiv.classList.add('btnAlertContainer');\r\n\r\n const reviewAlertDiv = document.createElement('div');\r\n reviewAlertDiv.innerHTML = `${icons.error}`;\r\n reviewAlertDiv.id = `reviewsAlert${outcomeId}`;\r\n reviewAlertDiv.classList.add('reviewsAlert');\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip('At least one review must be entered for each outcome', reviewAlertDiv);\r\n\r\n reviewsBtnAlertDiv.appendChild(addRowBtn);\r\n reviewsBtnAlertDiv.appendChild(reviewAlertDiv);\r\n reviewsDiv.appendChild(reviewsBtnAlertDiv);\r\n\r\n planValidation.reviewsValidationCheck(validationCheck, outcomeId, reviewAlertDiv);\r\n\r\n return reviewsDiv;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n function buildQuestion({ text, prompt, awnser, callback, maxChars }) {\r\n const question = document.createElement('div');\r\n question.classList.add('question');\r\n question.setAttribute('data-question-name', text.toLowerCase());\r\n\r\n question.innerHTML = `

    ${text}

    `;\r\n if (prompt) {\r\n question.innerHTML += `

    ${prompt}

    `;\r\n }\r\n\r\n const questionInput = input.build({\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: awnser,\r\n charLimit: maxChars,\r\n forceCharLimit: true,\r\n callback: e => {\r\n callback(e);\r\n },\r\n });\r\n question.appendChild(questionInput);\r\n\r\n if (isReadOnly) {\r\n questionInput.classList.add('disabled');\r\n }\r\n\r\n return question;\r\n }\r\n function buildOutcome({ outcomeId, ...outcomeData }) {\r\n const outcomesUpdateData = {\r\n outcome: outcomeData.outcome ? outcomeData.outcome : '',\r\n details: outcomeData.details ? outcomeData.details : '',\r\n history: outcomeData.history ? outcomeData.history : '',\r\n status: outcomeData.status ? outcomeData.status : '',\r\n carryOverReason: outcomeData.carryOverReason ? outcomeData.carryOverReason : '',\r\n sectionId: outcomeData.sectionId ? outcomeData.sectionId : '',\r\n outcomeOrder: outcomeData.outcomeOrder ? outcomeData.outcomeOrder : '',\r\n outcomeId,\r\n };\r\n\r\n const outcome = document.createElement('div');\r\n outcome.classList.add('outcome', `outcome${outcomeId}`);\r\n outcome.id = outcomeId;\r\n outcome.setAttribute('data-order', `${outcomesUpdateData.outcomeOrder}`);\r\n\r\n const deleteOutcomeBtn = button.build({\r\n text: 'Delete Outcome',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'deleteOutcomeBtn',\r\n callback: () => {\r\n const deleteWarningPopup = POPUP.build({\r\n header: 'Do you want to delete this Outcome and its Experiences and Reviews?',\r\n classNames: 'deleteWarningPopup',\r\n hideX: true,\r\n });\r\n\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n deleteOutcome(outcomeId);\r\n outcome.parentNode.removeChild(outcome);\r\n POPUP.hide(deleteWarningPopup);\r\n checkIfSummaryRequired();\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n\r\n assessmentPlanValidation = await planValidation.getAssessmentValidation(planId);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n const closeWarningBtn = button.build({\r\n type: 'text',\r\n style: 'secondary',\r\n icon: 'close',\r\n classNames: 'closeWarningBtn',\r\n callback: function () {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n\r\n deleteWarningPopup.appendChild(closeWarningBtn);\r\n deleteWarningPopup.appendChild(yesBtn);\r\n deleteWarningPopup.appendChild(noBtn);\r\n\r\n POPUP.show(deleteWarningPopup);\r\n },\r\n });\r\n\r\n // Outcome Order\r\n const orderDiv = document.createElement('div');\r\n orderDiv.classList.add('outcomeOrder');\r\n orderDiv.innerHTML = `

    ${outcomesUpdateData.outcomeOrder}

    `;\r\n // Assessment Area\r\n const assessmentAreaDropdown = dropdown.build({\r\n // dropdownId: 'assessmentAreaDropdown',\r\n label: 'Assessment Area',\r\n style: 'secondary',\r\n callback: async (e, selectedOption) => {\r\n outcomesUpdateData.sectionId = selectedOption.value;\r\n await updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n\r\n assessmentPlanValidation = await planValidation.getAssessmentValidation(planId);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n },\r\n });\r\n // Status\r\n const statusDropdown = dropdown.build({\r\n // dropdownId: 'statusDropdown',\r\n label: 'Status',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n outcomesUpdateData.status = selectedOption.value;\r\n\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n // Carryover\r\n const carryoverInput = buildQuestion({\r\n text: 'Carryover Reason',\r\n awnser: outcomesUpdateData.carryOverReason,\r\n maxChars: charLimits.carryOverReason,\r\n callback: e => {\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n carryoverInput.classList.add('carryoverTextInput');\r\n carryoverInput.addEventListener('input', e => {\r\n outcomesUpdateData.carryOverReason = e.target.value;\r\n if (hasPreviousPlan && outcomesUpdateData.status === '1' && outcomesUpdateData.carryOverReason === '') {\r\n carryoverInput.classList.add('error');\r\n } else {\r\n carryoverInput.classList.remove('error');\r\n }\r\n });\r\n // Outcome\r\n const outcomeInput = buildQuestion({\r\n text: '*Outcome',\r\n prompt: 'What does the person want to accomplish and why?',\r\n awnser: outcomesUpdateData.outcome,\r\n maxChars: charLimits.description,\r\n callback: e => {\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n outcomeInput.classList.add('outcomeTextInput');\r\n outcomeInput.addEventListener('input', e => {\r\n outcomesUpdateData.outcome = e.target.value;\r\n if (outcomesUpdateData.outcome === '') {\r\n outcomeInput.classList.add('error');\r\n planValidation.updateOutcome(outcomeId, validationCheck, true);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n } else {\r\n outcomeInput.classList.remove('error');\r\n planValidation.updateOutcome(outcomeId, validationCheck, false);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n });\r\n // Details\r\n const detailsInput = buildQuestion({\r\n text: '*Details to Know',\r\n awnser: outcomesUpdateData.details,\r\n maxChars: charLimits.details,\r\n callback: e => {\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n detailsInput.classList.add('detailsTextInput');\r\n detailsInput.addEventListener('input', e => {\r\n outcomesUpdateData.details = e.target.value;\r\n if (outcomesUpdateData.details === '') {\r\n detailsInput.classList.add('error');\r\n planValidation.updateOutcomeDetails(outcomeId, validationCheck, true);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n } else {\r\n detailsInput.classList.remove('error');\r\n planValidation.updateOutcomeDetails(outcomeId, validationCheck, false);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n });\r\n // History\r\n const historyInput = buildQuestion({\r\n text: 'Important and Relevant History', //\r\n prompt: 'Remember to only include history that may impact a persons life, support and achievement of outcomes.',\r\n awnser: outcomesUpdateData.history,\r\n maxChars: charLimits.history,\r\n callback: e => {\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n historyInput.classList.add('historyTextInput');\r\n historyInput.addEventListener('input', e => {\r\n outcomesUpdateData.history = e.target.value;\r\n\r\n // if (outcomesUpdateData.history === '') {\r\n // historyInput.classList.add('error');\r\n // } else {\r\n // historyInput.classList.remove('error');\r\n // }\r\n });\r\n\r\n // Tables\r\n const experiencesTable = buildExperiencesTables(outcomeId);\r\n const reviewTable = buildReviewsTable(outcomeId);\r\n\r\n // init required fields\r\n if (outcomesUpdateData.outcome === '') {\r\n outcomeInput.classList.add('error');\r\n }\r\n if (outcomesUpdateData.details === '') {\r\n detailsInput.classList.add('error');\r\n }\r\n // if (outcomesUpdateData.history === '') {\r\n // historyInput.classList.add('error');\r\n // }\r\n if (hasPreviousPlan && outcomesUpdateData.status === '1' && outcomesUpdateData.carryOverReason === '') {\r\n carryoverInput.classList.add('error');\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n deleteOutcomeBtn.classList.add('disabled');\r\n }\r\n\r\n // outcome assemble!\r\n const topRow = document.createElement('div');\r\n topRow.classList.add('outcomeToprow');\r\n topRow.appendChild(orderDiv);\r\n topRow.appendChild(assessmentAreaDropdown);\r\n topRow.appendChild(statusDropdown);\r\n outcome.appendChild(topRow);\r\n outcome.appendChild(carryoverInput);\r\n outcome.appendChild(outcomeInput);\r\n outcome.appendChild(detailsInput);\r\n outcome.appendChild(experiencesTable);\r\n outcome.appendChild(reviewTable);\r\n outcome.appendChild(historyInput);\r\n outcome.appendChild(deleteOutcomeBtn);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, outcomesUpdateData.sectionId);\r\n populateStatusDropdown(statusDropdown, outcomesUpdateData.status);\r\n\r\n return outcome;\r\n }\r\n function getMarkup() {\r\n const outcomesDataValues = Object.values(outcomesData);\r\n\r\n outcomesWrap = document.createElement('div');\r\n outcomesWrap.classList.add('planOutcomes');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Outcomes';\r\n heading.classList.add('sectionHeading');\r\n outcomesWrap.appendChild(heading);\r\n\r\n // outcome summary\r\n outcomesProgressSummary = buildQuestion({\r\n text: '*Summary of Progress Outcomes:',\r\n prompt: 'Share accomplishments, progress, how success is to be celebrated.',\r\n awnser: progressSummary,\r\n maxChars: 2500,\r\n callback: e => {\r\n progressSummary = e.target.value;\r\n checkIfSummaryRequired();\r\n const textForSave = e.target.value;\r\n planOutcomesAjax.updatePlanOutcomeProgressSummary({\r\n token: $.session.Token,\r\n progressSummary: textForSave,\r\n progressSummaryId: progressSummaryId,\r\n });\r\n\r\n if (e.target.value === '' && validationCheck.outcomesData.planOutcome.length > 0) {\r\n validationCheck.planProgressSummary = false;\r\n } else {\r\n validationCheck.planProgressSummary = true;\r\n }\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n },\r\n });\r\n outcomesProgressSummary.classList.add('summaryOutcomesTextInput');\r\n outcomesWrap.appendChild(outcomesProgressSummary);\r\n\r\n // add outcome\r\n addOutcomeBtn = button.build({\r\n text: 'Add Outcome',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'addRowBtn',\r\n callback: async () => {\r\n const outcomes = [...document.querySelectorAll('.outcome')];\r\n const outcomeOrder = outcomes.length + 1;\r\n\r\n const outcomeId = await insertOutcome({\r\n outcome: '',\r\n details: '',\r\n history: '',\r\n sectionId: '',\r\n status: '0',\r\n carryOverReason: '',\r\n assessmentId: planId,\r\n outcomeOrder: 0, //need this to keep from first one defaulting to 2\r\n });\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n\r\n const outcome = buildOutcome({ outcomeId, outcomeOrder, status: '0' });\r\n outcomesWrap.insertBefore(outcome, addOutcomeBtn);\r\n checkIfSummaryRequired();\r\n },\r\n });\r\n outcomesWrap.appendChild(addOutcomeBtn);\r\n if (isReadOnly) {\r\n addOutcomeBtn.classList.add('disabled');\r\n }\r\n\r\n // load existing outcomes\r\n if (outcomesDataValues.length > 0) {\r\n const sortedOutcomes = sortOutcomesByOrder(outcomesDataValues);\r\n sortedOutcomes.forEach(pyid => {\r\n const outcome = buildOutcome(pyid);\r\n outcomesWrap.insertBefore(outcome, addOutcomeBtn);\r\n });\r\n if (progressSummary === '') {\r\n outcomesProgressSummary.classList.add('error');\r\n }\r\n }\r\n\r\n return outcomesWrap;\r\n }\r\n\r\n async function init(data) {\r\n // data = { planId, readOnly }\r\n planId = data.planId;\r\n isReadOnly = data.readOnly;\r\n charLimits = planData.getISPCharacterLimits('outcomes');\r\n\r\n if (!$.session.planUpdate) {\r\n isSortable = false;\r\n } else {\r\n isSortable = isReadOnly ? false : true;\r\n }\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n const planOutcomesData = validationCheck.outcomesData;\r\n\r\n if (!planOutcomesData.planProgressSummary || planOutcomesData.planProgressSummary.length === 0) {\r\n let summaryId = await planOutcomesAjax.insertPlanOutcomeProgressSummary({\r\n token: $.session.Token,\r\n planId: parseInt(planId),\r\n progressSummary: '',\r\n });\r\n summaryId = summaryId.split(':');\r\n summaryId = summaryId[1];\r\n summaryId = summaryId.replace('}]', '').replace('\"', '');\r\n\r\n progressSummary = '';\r\n progressSummaryId = summaryId;\r\n } else {\r\n progressSummary = planOutcomesData.planProgressSummary[0].progressSummary;\r\n progressSummaryId = planOutcomesData.planProgressSummary[0].progressSummaryId;\r\n }\r\n\r\n dropdownData = planData.getDropdownData();\r\n outcomesData = mapOutcomesDetails(planOutcomesData);\r\n hasPreviousPlan = plan.getHasPreviousPlans();\r\n\r\n const ddData = dropdownData.serviceVendors.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n\r\n const { getPlanOutcomesPaidSupportProvidersResult: selectedVendors } =\r\n await planOutcomesAjax.getPlanOutcomesPaidSupportProviders(planId);\r\n\r\n function getSelectedVendorIds() {\r\n return selectedVendors.reduce((acc, vendor) => {\r\n acc.push(vendor.vendorId);\r\n return acc;\r\n }, []);\r\n }\r\n\r\n const selectedVendorIds = getSelectedVendorIds();\r\n\r\n const paidSupportData = ddData.filter(provider => selectedVendorIds.includes(provider.value));\r\n\r\n validationCheck.paidSupportsProviders = paidSupportData;\r\n\r\n return validationCheck;\r\n }\r\n\r\n return {\r\n init,\r\n getMarkup,\r\n showAddNewOutcomePopup,\r\n refreshDropdownData,\r\n getSelectedVendors,\r\n };\r\n})();\r\n","const planOutcomesAjax = (() => {\r\n // GET\r\n //------------------------------------\r\n async function getPlanSpecificOutcomes(retrieveData) {\r\n // string token, string assessmentId, integer targetAssessmentVersionId\r\n retrieveData.targetAssessmentVersionId = 0;\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanSpecificOutcomes/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanSpecificOutcomesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getPlanOutcomesPaidSupportProviders(assessmentId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanOutcomesPaidSupportProviders/',\r\n data: JSON.stringify({\r\n assessmentId: assessmentId,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // INSERT\r\n //------------------------------------\r\n async function insertPlanOutcomeProgressSummary(retrieveData) {\r\n // will return progress summary id\r\n // string token,\r\n // integer planId,\r\n // string progressSummary\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcomeProgressSummary/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomeProgressSummaryResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanOutcome(retrieveData) {\r\n // string token,\r\n // string assessmentId,\r\n // string outcome,\r\n // string details,\r\n // string history,\r\n // string sectionId,\r\n // string outcomeOrder\r\n // int status,\r\n // string carryOverReason\r\n\r\n retrieveData.status = parseInt(retrieveData.status);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcome/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomeResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanOutcomesExperience(retrieveData) {\r\n // string token,\r\n // string outcomeId,\r\n // string[] howHappened,\r\n // string[] whatHappened,\r\n // string[] experienceOrder\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcomesExperience/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomesExperienceResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanOutcomeExperienceResponsibility(retrieveData) {\r\n // string token,\r\n // string experienceId,\r\n // int[] responsibleContact,\r\n // int[] responsibleProvider,\r\n // int[] whenHowOftenFrequency,\r\n // string[] whenHowOftenValue,\r\n // string[] whenHowOftenText,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcomeExperienceResponsibility/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomeExperienceResponsibilityResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanOutcomesReview(retrieveData) {\r\n // long outcomeId,\r\n // string[] whatWillHappen,\r\n // string[] whenToCheckIn,\r\n // string[] whoReview,\r\n // string[] reviewOrder\r\n // integer[] contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcomesReview/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomesReviewResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // UPDATE\r\n //------------------------------------\r\n async function updatePlanOutcomeProgressSummary(retrieveData) {\r\n // string token,\r\n // integer progressSummaryId,\r\n // string progressSummary\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomeProgressSummary/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomeProgressSummaryResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcome(retrieveData) {\r\n // string token,\r\n // string assessmentId,\r\n // string outcomeId, (new)\r\n // string sectionId,\r\n // string outcome,\r\n // string details,\r\n // string history,\r\n // int status,\r\n // string carryOverReason\r\n\r\n retrieveData.status = parseInt(retrieveData.status);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcome/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomeResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcomesExperience(retrieveData) {\r\n // string token,\r\n // string outcomeId,\r\n // string[] experienceIds,\r\n // string[] howHappened,\r\n // string[] whatHappened,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesExperience/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesExperienceResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcomeExperienceResponsibility(retrieveData) {\r\n // int[] responsibilityIds,\r\n // int[] responsibleContact,\r\n // int[] responsibleProvider,\r\n // string[] whenHowOftenValue,\r\n // int[] whenHowOftenFrequency,\r\n // string[] whenHowOftenText,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomeExperienceResponsibility/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomeExperienceResponsibilityResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcomesReview(retrieveData) {\r\n // long outcomeId,\r\n // string[] reviewIds,\r\n // string[] whatWillHappen,\r\n // string[] whenToCheckIn,\r\n // string[] whoReview,\r\n // integer[] contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesReview/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesReviewResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // DELETE\r\n //------------------------------------\r\n async function deletePlanOutcomeProgressSummary(retrieveData) {\r\n // string token,\r\n // integer progressSummaryId,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcomeProgressSummary/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeProgressSummaryResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deletePlanOutcome(retrieveData) {\r\n // string token,\r\n // string outcomeId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcome/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deletePlanOutcomeExperience(retrieveData) {\r\n // string token,\r\n // string outcomeId,\r\n // string experienceId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcomeExperience/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeExperienceResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deletePlanOutcomeExperienceResponsibility(retrieveData) {\r\n // string token,\r\n // string responsibilityId,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcomeExperienceResponsibility/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeExperienceResponsibilityResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deletePlanOutcomeReview(retrieveData) {\r\n // string token,\r\n // string outcomeId,\r\n // string reviewId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcomeReview/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeReviewResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // row re-order\r\n //------------------\r\n async function updatePlanOutcomesOrder(retrieveData) {\r\n // string token,\r\n // integer planId,\r\n // integer outcomeId\r\n // integer newPos,\r\n // integer oldPos\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesReviewOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateOutcomesReviewOrder(retrieveData) {\r\n // string token,\r\n // integer outcomeId,\r\n // integer reviewId\r\n // integer newPos,\r\n // integer oldPos\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesReviewOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesReviewOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcomesExperienceOrder(retrieveData) {\r\n // string token,\r\n // integer outcomeId,\r\n // integer experienceId\r\n // integer newPos,\r\n // integer oldPos\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesExperienceOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesExperienceOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getPlanOutcomesPaidSupportProviders,\r\n getPlanSpecificOutcomes,\r\n insertPlanOutcome,\r\n insertPlanOutcomesExperience,\r\n insertPlanOutcomeExperienceResponsibility,\r\n insertPlanOutcomesReview,\r\n updatePlanOutcome,\r\n updatePlanOutcomesExperience,\r\n updatePlanOutcomeExperienceResponsibility,\r\n updatePlanOutcomesReview,\r\n deletePlanOutcome,\r\n deletePlanOutcomeExperience,\r\n deletePlanOutcomeReview,\r\n deletePlanOutcomeExperienceResponsibility,\r\n updateOutcomesReviewOrder,\r\n updatePlanOutcomesExperienceOrder,\r\n deletePlanOutcomeProgressSummary,\r\n updatePlanOutcomeProgressSummary,\r\n insertPlanOutcomeProgressSummary,\r\n updatePlanOutcomesOrder,\r\n };\r\n})();\r\n","const planRestrictiveMeasures = (() => {\r\n let readOnly;\r\n let planId; // aka: assessmentId\r\n let rmData;\r\n let rmDataArray;\r\n // DOM\r\n let rmMainWrap;\r\n let addSectionBtn;\r\n // OTHER\r\n let charLimits;\r\n\r\n //*------------------------------------------------------\r\n //* UTIL\r\n //*------------------------------------------------------\r\n async function updateRMResponse(sectionData) {\r\n // const data = {\r\n // token: $.session.Token,\r\n // informedConsentId: rmData.rmID,\r\n // rmIdentified: rmData.rmIdentified,\r\n // rmHRCDate: rmData.rmHRCDate,\r\n // rmKeepSelfSafe: rmData.rmKeepSelfSafe,\r\n // rmFadeRestriction: rmData.rmFadeRestriction,\r\n // rmOtherWayHelpGood: rmData.rmOtherWayHelpGood,\r\n // rmOtherWayHelpBad: rmData.rmOtherWayHelpBad,\r\n // rmWhatCouldHappenGood: rmData.rmWhatCouldHappenGood,\r\n // rmWhatCouldHappenBad: rmData.rmWhatCouldHappenBad,\r\n // };\r\n const res = await restrictiveMeasuresAjax.updatePlanRestrictiveMeasures(sectionData);\r\n }\r\n\r\nasync function deleteRMData(rmId) {\r\n const data = {\r\n token: $.session.Token,\r\n informedConsentId: rmId,\r\n };\r\n const res = await restrictiveMeasuresAjax.deletePlanRestrictiveMeasures(data);\r\n}\r\n\r\nasync function toggleRestrictiveMeasureQuestionsVisiblity(show) {\r\n //const add = document.querySelector('.addSectionBtn');\r\n \r\n if (show) {\r\n addSectionBtn.style.display = 'block';\r\n\r\n if (rmDataArray.length === 0) {\r\n restrictiveMeasuresSectionID = await restrictiveMeasuresAjax.insertPlanRestrictiveMeasures({\r\n token: $.session.Token,\r\n assessmentId: planId\r\n });\r\n\r\n const newSection = createNewSection(null, false, restrictiveMeasuresSectionID.informedConsentId);\r\n rmMainWrap.insertBefore(newSection, addSectionBtn);\r\n } else {\r\n rmDataArray.forEach((rmData, index) => {\r\n const isFirstSection = index === 0;\r\n const newSection = createNewSection(rmData, isFirstSection);\r\n rmMainWrap.insertBefore(newSection, addSectionBtn);\r\n });\r\n }\r\n } else {\r\n const rmSections = document.querySelectorAll('.restrictiveMeasureContainer');\r\n rmSections.forEach((section, index) => {\r\n if (index === 0) {\r\n section.style.display = 'none';\r\n } else {\r\n section.remove();\r\n }\r\n });\r\n rmDataArray.forEach((rmData) => {\r\n deleteRMData(rmData.informedConsentId);\r\n });\r\n addSectionBtn.style.display = 'none';\r\n }\r\n}\r\n\r\n //*------------------------------------------------------\r\n //* RESTRICTIVE MEASURE QUESTIONS\r\n //*------------------------------------------------------\r\n function buildRestrictiveMeasureQuestions(sectionData) {\r\n const rmQuestionSection = document.createElement('div');\r\n rmQuestionSection.classList.add('rmQuestionSection');\r\n\r\n //* HRC APPROVAL DATE\r\n //*------------------------------------\r\n const rmHrcApprovalDate = input.build({\r\n label: '*Date of HRC Approval',\r\n type: 'date',\r\n value: UTIL.formatDateToIso(sectionData.rmHRCDate.split(' ')[0]),\r\n readonly: readOnly,\r\n });\r\n rmHrcApprovalDate.style.maxWidth = '200px';\r\n //* RM_KEEP_SELF_SAFE\r\n //*------------------------------------\r\n const rmKeepSelfSafeQuestion = document.createElement('div');\r\n const rmKeepSelfSafeQuestionText = document.createElement('p');\r\n rmKeepSelfSafeQuestionText.style.marginBottom = '7px';\r\n rmKeepSelfSafeQuestionText.innerText =\r\n '*What help do I need to keep myself safe? (describe restrictive strategies and why they are needed)';\r\n const rmKeepSelfSafeQuestionResp = input.build({\r\n type: 'textarea',\r\n value: sectionData.rmKeepSelfSafe,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmKeepSelfSafe,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n rmKeepSelfSafeQuestion.appendChild(rmKeepSelfSafeQuestionText);\r\n rmKeepSelfSafeQuestion.appendChild(rmKeepSelfSafeQuestionResp);\r\n //* RM_FADE_RESTRICTION\r\n //*------------------------------------\r\n const rmFadeRestrictionQuestion = document.createElement('div');\r\n const rmFadeRestrictionQuestionText = document.createElement('p');\r\n rmFadeRestrictionQuestionText.style.marginBottom = '7px';\r\n rmFadeRestrictionQuestionText.innerText =\r\n '*What is the plan to ensure the restriction is temporary in nature?';\r\n const rmFadeRestrictionQuestionResp = input.build({\r\n type: 'textarea',\r\n value: sectionData.rmFadeRestriction,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmFadeRestriction,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n rmFadeRestrictionQuestion.appendChild(rmFadeRestrictionQuestionText);\r\n rmFadeRestrictionQuestion.appendChild(rmFadeRestrictionQuestionResp);\r\n //* RM_WHAT_COULD_HAPPEN(GOOD/BAD)\r\n //*------------------------------------\r\n const rmWhatCouldHappenQuestion = document.createElement('div');\r\n const rmWhatCouldHappenQuestionText = document.createElement('p');\r\n rmWhatCouldHappenQuestionText.style.marginBottom = '10px';\r\n rmWhatCouldHappenQuestionText.innerText = 'What could happen if I allow this help?';\r\n const rmWhatCouldHappenQuestionContainer = document.createElement('div');\r\n rmWhatCouldHappenQuestionContainer.classList.add('isp_ic_rmQuestionGroup');\r\n const rmWhatCouldHappenQuestionGoodResp = input.build({\r\n type: 'textarea',\r\n label: '*Good',\r\n value: sectionData.rmWhatCouldHappenGood,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmWhatCouldHappenGood,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n const rmWhatCouldHappenQuestionBadResp = input.build({\r\n type: 'textarea',\r\n label: '*Bad',\r\n value: sectionData.rmWhatCouldHappenBad,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmWhatCouldHappenBad,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n rmWhatCouldHappenQuestionContainer.appendChild(rmWhatCouldHappenQuestionGoodResp);\r\n rmWhatCouldHappenQuestionContainer.appendChild(rmWhatCouldHappenQuestionBadResp);\r\n rmWhatCouldHappenQuestion.appendChild(rmWhatCouldHappenQuestionText);\r\n rmWhatCouldHappenQuestion.appendChild(rmWhatCouldHappenQuestionContainer);\r\n //* RM_OTHER_WAY_HELP(GOOD/BAD)\r\n //*------------------------------------\r\n const rmOtherWayHelpQuestion = document.createElement('div');\r\n const rmOtherWayHelpQuestionText = document.createElement('p');\r\n rmOtherWayHelpQuestionText.style.marginBottom = '10px';\r\n rmOtherWayHelpQuestionText.innerText = `If I don't allow this help, what other ways help me be safe?`;\r\n const rmOtherWayHelpQuestionContainer = document.createElement('div');\r\n rmOtherWayHelpQuestionContainer.classList.add('isp_ic_rmQuestionGroup');\r\n const rmOtherWayHelpQuestionGoodResp = input.build({\r\n type: 'textarea',\r\n label: '*Good things about these other options',\r\n value: sectionData.rmOtherWayHelpGood,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmOtherWayHelpGood,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n const rmOtherWayHelpQuestionBadResp = input.build({\r\n type: 'textarea',\r\n label: '*Bad things about these other options',\r\n value: sectionData.rmOtherWayHelpBad,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmOtherWayHelpBad,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n rmOtherWayHelpQuestionContainer.appendChild(rmOtherWayHelpQuestionGoodResp);\r\n rmOtherWayHelpQuestionContainer.appendChild(rmOtherWayHelpQuestionBadResp);\r\n rmOtherWayHelpQuestion.appendChild(rmOtherWayHelpQuestionText);\r\n rmOtherWayHelpQuestion.appendChild(rmOtherWayHelpQuestionContainer);\r\n\r\n //* Required Fields\r\n //*------------------------------------\r\n if (sectionData.rmHRCDate === '') {\r\n rmHrcApprovalDate.classList.add('error');\r\n }\r\n if (sectionData.rmKeepSelfSafe === '') {\r\n rmKeepSelfSafeQuestionResp.classList.add('error');\r\n }\r\n if (sectionData.rmFadeRestriction === '') {\r\n rmFadeRestrictionQuestionResp.classList.add('error');\r\n }\r\n if (sectionData.rmWhatCouldHappenGood === '') {\r\n rmWhatCouldHappenQuestionGoodResp.classList.add('error');\r\n }\r\n if (sectionData.rmWhatCouldHappenBad === '') {\r\n rmWhatCouldHappenQuestionBadResp.classList.add('error');\r\n }\r\n if (sectionData.rmOtherWayHelpGood === '') {\r\n rmOtherWayHelpQuestionGoodResp.classList.add('error');\r\n }\r\n if (sectionData.rmOtherWayHelpBad === '') {\r\n rmOtherWayHelpQuestionBadResp.classList.add('error');\r\n }\r\n\r\n //* Event Setup\r\n //*------------------------------------\r\n // HRC APPROVAL DATE\r\n rmHrcApprovalDate.addEventListener('change', event => {\r\n sectionData.rmHRCDate = event.target.value;\r\n if (event.target.value !== '') {\r\n rmHrcApprovalDate.classList.remove('error');\r\n } else {\r\n rmHrcApprovalDate.classList.add('error');\r\n }\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_KEEP_SELF_SAFE\r\n rmKeepSelfSafeQuestionResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmKeepSelfSafeQuestionResp.classList.remove('error');\r\n } else {\r\n rmKeepSelfSafeQuestionResp.classList.add('error');\r\n }\r\n });\r\n rmKeepSelfSafeQuestionResp.addEventListener('focusout', event => {\r\n sectionData.rmKeepSelfSafe = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_FADE_RESTRICTION\r\n rmFadeRestrictionQuestionResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmFadeRestrictionQuestionResp.classList.remove('error');\r\n } else {\r\n rmFadeRestrictionQuestionResp.classList.add('error');\r\n }\r\n });\r\n rmFadeRestrictionQuestionResp.addEventListener('focusout', event => {\r\n sectionData.rmFadeRestriction = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_WHAT_COULD_HAPPEN GOOD\r\n rmWhatCouldHappenQuestionGoodResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmWhatCouldHappenQuestionGoodResp.classList.remove('error');\r\n } else {\r\n rmWhatCouldHappenQuestionGoodResp.classList.add('error');\r\n }\r\n });\r\n rmWhatCouldHappenQuestionGoodResp.addEventListener('focusout', event => {\r\n sectionData.rmWhatCouldHappenGood = event.target.value;\r\n const test = sectionData;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_WHAT_COULD_HAPPEN BAD\r\n rmWhatCouldHappenQuestionBadResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmWhatCouldHappenQuestionBadResp.classList.remove('error');\r\n } else {\r\n rmWhatCouldHappenQuestionBadResp.classList.add('error');\r\n }\r\n });\r\n rmWhatCouldHappenQuestionBadResp.addEventListener('focusout', event => {\r\n sectionData.rmWhatCouldHappenBad = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_OTHER_WAY_HELP GOOD\r\n rmOtherWayHelpQuestionGoodResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmOtherWayHelpQuestionGoodResp.classList.remove('error');\r\n } else {\r\n rmOtherWayHelpQuestionGoodResp.classList.add('error');\r\n }\r\n });\r\n rmOtherWayHelpQuestionGoodResp.addEventListener('focusout', event => {\r\n sectionData.rmOtherWayHelpGood = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_OTHER_WAY_HELP BAD\r\n rmOtherWayHelpQuestionBadResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmOtherWayHelpQuestionBadResp.classList.remove('error');\r\n } else {\r\n rmOtherWayHelpQuestionBadResp.classList.add('error');\r\n }\r\n });\r\n rmOtherWayHelpQuestionBadResp.addEventListener('focusout', event => {\r\n sectionData.rmOtherWayHelpBad = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n\r\n //* Build It\r\n //*------------------------------------\r\n rmQuestionSection.appendChild(rmHrcApprovalDate);\r\n rmQuestionSection.appendChild(rmKeepSelfSafeQuestion);\r\n rmQuestionSection.appendChild(rmFadeRestrictionQuestion);\r\n rmQuestionSection.appendChild(rmWhatCouldHappenQuestion);\r\n rmQuestionSection.appendChild(rmOtherWayHelpQuestion);\r\n\r\n return rmQuestionSection;\r\n}\r\n\r\n\r\n //*------------------------------------------------------\r\n //* TOGGLE QUESTION\r\n //*------------------------------------------------------\r\n //* question that decides if RM questions are visible\r\n //*------------------------------------------------------\r\n function buildToggleQuestions() {\r\n const rmSection = document.createElement('div');\r\n rmSection.classList.add('rmToggleSection');\r\n\r\n //Restriction Identified (YES SHOWS REST OF RM QUESTIONS)\r\n const rmRestrictionsIdentifiedQuestion = document.createElement('div');\r\n rmRestrictionsIdentifiedQuestion.classList.add('ic_questionContainer');\r\n\r\n const rmRestrictionsIdentifiedQuestionText = document.createElement('p');\r\n rmRestrictionsIdentifiedQuestionText.innerText =\r\n 'Were restrictions identified during the planning process?';\r\n rmRestrictionsIdentifiedQuestion.appendChild(rmRestrictionsIdentifiedQuestionText);\r\n\r\n //Radio Container\r\n const rmRestrictionsIdentifiedRadioContainer = document.createElement('div');\r\n rmRestrictionsIdentifiedRadioContainer.classList.add('ic_questionRadioContainer');\r\n //Radios\r\n const rmRestrictionsIdentifiedYesRadio = input.buildRadio({\r\n id: 'RM_Identified-yes',\r\n text: 'Yes',\r\n name: 'CS_Identified',\r\n isChecked: rmData.rmIdentified === 'Y',\r\n isDisabled: readOnly,\r\n callback: () => {\r\n rmData.rmIdentified = 'Y';\r\n updateRMResponse(rmData);\r\n toggleRestrictiveMeasureQuestionsVisiblity(true);\r\n rmRestrictionsIdentifiedRadioContainer.classList.remove('error');\r\n DOM.autosizeTextarea();\r\n },\r\n });\r\n const rmRestrictionsIdentifiedNoRadio = input.buildRadio({\r\n id: 'CS_Identified-no',\r\n text: 'No',\r\n name: 'CS_Identified',\r\n isChecked: rmData.rmIdentified === 'N',\r\n isDisabled: readOnly,\r\n callback: () => {\r\n if (rmData.rmIdentified === 'Y') {\r\n UTIL.warningPopup({\r\n message:\r\n 'Changing this question to NO will result in the restrictive measure question responses to be cleared. Do you want to proceed?',\r\n hideX: true,\r\n accept: {\r\n text: 'Yes',\r\n callback: () => {\r\n rmData.rmIdentified = 'N';\r\n rmData.rmHRCDate = '';\r\n rmData.rmKeepSelfSafe = '';\r\n rmData.rmFadeRestriction = '';\r\n rmData.rmOtherWayHelpGood = '';\r\n rmData.rmOtherWayHelpBad = '';\r\n rmData.rmWhatCouldHappenGood = '';\r\n rmData.rmWhatCouldHappenBad = '';\r\n updateRMResponse(rmData);\r\n toggleRestrictiveMeasureQuestionsVisiblity(false);\r\n\r\n // Delete data for all items in the rmDataArray\r\n rmDataArray.forEach(rmItem => {\r\n deleteRMData(rmItem.informedConsentId);\r\n });\r\n },\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n document.getElementById('RM_Identified-yes').checked = true;\r\n },\r\n },\r\n });\r\n } else {\r\n rmData.rmIdentified = 'N';\r\n updateRMResponse(sectionData);\r\n }\r\n\r\n rmRestrictionsIdentifiedRadioContainer.classList.remove('error');\r\n },\r\n });\r\n\r\n if (rmData.rmIdentified === '') {\r\n rmRestrictionsIdentifiedRadioContainer.classList.add('error');\r\n }\r\n rmRestrictionsIdentifiedRadioContainer.appendChild(rmRestrictionsIdentifiedYesRadio);\r\n rmRestrictionsIdentifiedRadioContainer.appendChild(rmRestrictionsIdentifiedNoRadio);\r\n\r\n rmRestrictionsIdentifiedQuestion.appendChild(rmRestrictionsIdentifiedRadioContainer);\r\n rmSection.appendChild(rmRestrictionsIdentifiedQuestion);\r\n\r\n return rmSection;\r\n }\r\n\r\n function createNewSection(rmData, isFirstSection, insertedRMID) {\r\n // Create a new section container\r\n const newSection = document.createElement('div');\r\n newSection.classList.add('restrictiveMeasureContainer');\r\n\r\n const sectionData = {\r\n token: $.session.Token,\r\n informedConsentId: rmData?.informedConsentId || insertedRMID.informedConsentId,\r\n rmIdentified: 'Y',\r\n rmHRCDate: rmData?.rmHRCDate || '',\r\n rmKeepSelfSafe: rmData?.rmKeepSelfSafe || '',\r\n rmFadeRestriction: rmData?.rmFadeRestriction || '',\r\n rmWhatCouldHappenGood: rmData?.rmWhatCouldHappenGood || '',\r\n rmWhatCouldHappenBad: rmData?.rmWhatCouldHappenBad || '',\r\n rmOtherWayHelpGood: rmData?.rmOtherWayHelpGood || '',\r\n rmOtherWayHelpBad: rmData?.rmOtherWayHelpBad || ''\r\n }; \r\n\r\n // Attach the section data to the section element\r\n newSection.sectionData = sectionData;\r\n\r\n // Create restrictive measure questions for the new section\r\n const rmQuestions = buildRestrictiveMeasureQuestions(sectionData);\r\n newSection.appendChild(rmQuestions);\r\n\r\n if (!isFirstSection) {\r\n const deleteButton = button.build({\r\n text: 'Delete Restrictive Measure',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'deleteSectionBtn',\r\n callback: () => {\r\n deleteRMData(newSection.sectionData.informedConsentId);\r\n newSection.remove();\r\n }\r\n });\r\n newSection.appendChild(deleteButton);\r\n }\r\n\r\n // Return the new section\r\n return newSection;\r\n }\r\n\r\nfunction createAddSectionButton() {\r\n return button.build({\r\n text: 'Add Restrictive Measure',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'addSectionBtn',\r\n callback: async () => {\r\n restrictiveMeasuresSectionID = await restrictiveMeasuresAjax.insertPlanRestrictiveMeasures({\r\n token: $.session.Token,\r\n assessmentId: planId\r\n });\r\n\r\n const newSection = createNewSection(null, false, restrictiveMeasuresSectionID);\r\n\r\n rmMainWrap.insertBefore(newSection, addSectionBtn);\r\n\r\n // Append the button to rmMainWrap if it doesn't exist\r\n if (!rmMainWrap.querySelector('.addSectionBtn')) {\r\n const addSectionBtn = createAddSectionButton();\r\n rmMainWrap.appendChild(addSectionBtn);\r\n }\r\n }\r\n });\r\n}\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n function getMarkup() {\r\n // Section\r\n rmMainWrap = document.createElement('div');\r\n rmMainWrap.classList.add('ispRestrictiveMeasures');\r\n\r\n // Heading\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Restrictive Measures';\r\n heading.classList.add('sectionHeading');\r\n heading.style.marginBottom = '6px';\r\n rmMainWrap.appendChild(heading);\r\n\r\n // Toggle Question\r\n const toggleQuestion = buildToggleQuestions();\r\n rmMainWrap.appendChild(toggleQuestion);\r\n\r\n addSectionBtn = createAddSectionButton();\r\n rmMainWrap.appendChild(addSectionBtn);\r\n addSectionBtn.style.display = 'none';\r\n\r\n if (rmData.rmIdentified === 'Y') {\r\n addSectionBtn.style.display = 'block';\r\n // Create sections for each data entry\r\n rmDataArray.forEach((rmData, index) => {\r\n const isFirstSection = index === 0;\r\n const newSection = createNewSection(rmData, isFirstSection);\r\n \r\n rmMainWrap.insertBefore(newSection, addSectionBtn);\r\n });\r\n }\r\n\r\n return rmMainWrap;\r\n}\r\n\r\n async function init(data) {\r\n planId = data.planId;\r\n readOnly = data.readOnly;\r\n charLimits = planData.getISPCharacterLimits('restrictiveMeasures');\r\n let stuff;\r\n\r\n rmDataArray = await restrictiveMeasuresAjax.getPlanRestrictiveMeasures({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n if (rmDataArray.length === 0) {\r\n stuff = await restrictiveMeasuresAjax.insertPlanRestrictiveMeasures({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n }\r\n\r\n if (!Array.isArray(rmDataArray) || rmDataArray.length === 0) {\r\n rmData = [{\r\n token: $.session.Token,\r\n informedConsentId: stuff ? stuff.informedConsentId : '',\r\n rmIdentified: '',\r\n rmHRCDate: '',\r\n rmKeepSelfSafe: '',\r\n rmFadeRestriction: '',\r\n rmOtherWayHelpGood: '',\r\n rmOtherWayHelpBad: '',\r\n rmWhatCouldHappenGood: '',\r\n rmWhatCouldHappenBad: '',\r\n }];\r\n } else {\r\n const firstElement = rmDataArray[0];\r\n rmData = {\r\n token: $.session.Token,\r\n informedConsentId: firstElement.informedConsentId,\r\n rmIdentified: firstElement.rmIdentified === '' || firstElement.rmIdentified === 'N' ? 'N' : 'Y',\r\n rmHRCDate: firstElement.rmHRCDate,\r\n rmKeepSelfSafe: firstElement.rmKeepSelfSafe,\r\n rmFadeRestriction: firstElement.rmFadeRestriction,\r\n rmOtherWayHelpGood: firstElement.rmOtherWayHelpGood,\r\n rmOtherWayHelpBad: firstElement.rmOtherWayHelpBad,\r\n rmWhatCouldHappenGood: firstElement.rmWhatCouldHappenGood,\r\n rmWhatCouldHappenBad: firstElement.rmWhatCouldHappenBad,\r\n };\r\n }\r\n}\r\n\r\n return {\r\n init,\r\n getMarkup,\r\n };\r\n})();\r\n","const restrictiveMeasuresAjax = (() => {\r\n // GET\r\n //------------------------------------\r\n async function getPlanRestrictiveMeasures(retrieveData) {\r\n // string token, string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanRestrictiveMeasures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanRestrictiveMeasuresResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // Insert\r\n //--------------------------------------\r\n async function insertPlanRestrictiveMeasures(retrieveData) {\r\n // string token, string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanRestrictiveMeasures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanRestrictiveMeasuresResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // Update\r\n //--------------------------------------\r\n async function updatePlanRestrictiveMeasures(retrieveData) {\r\n /* string token, string informedConsentId, string rmIdentified, \r\n string rmHRCDate, string rmKeepSelfSafe, string rmFadeRestriction, \r\n string rmOtherWayHelpGood, string rmOtherWayHelpBad, \r\n string rmWhatCouldHappenGood, string rmWhatCouldHappenBad\r\n */\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanRestrictiveMeasures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanRestrictiveMeasuresResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function deletePlanRestrictiveMeasures(retrieveData) {\r\n // string token, string informedConsentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanRestrictiveMeasures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanRestrictiveMeasuresResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getPlanRestrictiveMeasures,\r\n insertPlanRestrictiveMeasures,\r\n updatePlanRestrictiveMeasures,\r\n deletePlanRestrictiveMeasures\r\n };\r\n})();\r\n","const servicesSupports = (() => {\r\n let isReadOnly;\r\n let isSortable;\r\n let planID; // aka: assessmentId\r\n let modificationsId;\r\n let servicesSupportsData; // data\r\n let dropdownData;\r\n let selectedVendors = [];\r\n let selectedFundingSources = [];\r\n let hasPaidSupports;\r\n\r\n let paidSupportsTable;\r\n let additionalSupportsTable;\r\n let professionalReferralsTable;\r\n\r\n let enableMultiEdit = false;\r\n let selectedPaidSupportIds = [];\r\n let selectedPaidSupportRows = [];\r\n let multiEditBtn;\r\n let multiEditUpdateBtn;\r\n let multiEditCancelBtn;\r\n\r\n let fundingSourceDropdownSelectedText;\r\n let servicesDropdownSelectedText;\r\n let servicesOtherDropdownSelectedText;\r\n let providerDropdownSelectedText;\r\n\r\n let hcbsSelected;\r\n let saveUpdateProvider = '';\r\n\r\n let charLimits;\r\n\r\n // UTILS\r\n //------------------------------------------------------\r\n function refreshDropdownData(newDropdownData) {\r\n dropdownData = newDropdownData;\r\n }\r\n function mapPaidSupportDataForTable(ps) {\r\n let assessmentAreaId;\r\n let assessmentArea;\r\n\r\n const providerId = ps.providerId;\r\n const serviceNameId = ps.serviceNameId;\r\n const serviceNameOther = ps.serviceNameOther;\r\n const scopeOfService = ps.scopeOfService ? ps.scopeOfService : ps.scopeOfservice;\r\n const howOftenValue = ps.howOftenValue;\r\n const howOftenFrequency = ps.howOftenFrequency;\r\n const howOftenText = ps.howOftenText;\r\n const fundingSource = ps.fundingSource;\r\n const fundingSourceText = ps.fundingSourceText;\r\n const paidSupportsId = ps.paidSupportsId;\r\n let beginDate = ps.beginDate ? ps.beginDate.split(' ')[0] : '';\r\n let endDate = ps.endDate ? ps.endDate.split(' ')[0] : '';\r\n beginDate = beginDate ? UTIL.formatDateToIso(beginDate) : '';\r\n endDate = endDate ? UTIL.formatDateToIso(endDate) : '';\r\n let bDate = beginDate ? UTIL.formatDateFromIso(beginDate) : '';\r\n let eDate = endDate ? UTIL.formatDateFromIso(endDate) : '';\r\n if (bDate !== '') {\r\n const splitDate = bDate.split('/');\r\n bDate = `${splitDate[0]}/${splitDate[1]}/${splitDate[2].substring(2)}`;\r\n }\r\n if (eDate !== '') {\r\n const splitDate = eDate.split('/');\r\n eDate = `${splitDate[0]}/${splitDate[1]}/${splitDate[2].substring(2)}`;\r\n }\r\n\r\n const a = assessment.getApplicableSections();\r\n if (a[ps.assessmentAreaId]) {\r\n assessmentAreaId = ps.assessmentAreaId;\r\n assessmentArea = getAssessmentAreaById(assessmentAreaId);\r\n } else {\r\n assessmentAreaId = '';\r\n assessmentArea = '';\r\n }\r\n\r\n const rowOrder = ps.rowOrder;\r\n\r\n const providerName = getProviderNameById(providerId);\r\n const serviceName = getServiceNameById(serviceNameId);\r\n const serviceOtherName = getOtherServiceNameById(serviceNameOther);\r\n const fundingSourceDesc = fundingSource ? getFundingSourceById(fundingSource) : '';\r\n const howOftenFrequencyText = howOftenFrequency\r\n ? getHowOftenHowMuchFrequencyById(howOftenFrequency)\r\n : '';\r\n\r\n let howOften = '';\r\n if (howOftenValue) howOften += howOftenValue;\r\n // if (howOftenFrequency && howOftenFrequency !== '4') {\r\n // howOften += ` x `;\r\n // }\r\n if (howOftenFrequency && howOftenFrequency !== '5') {\r\n howOften += ` ${howOftenFrequencyText}`;\r\n }\r\n if (howOftenText) howOften += ` ${howOftenText}`;\r\n\r\n let funding = '';\r\n if (fundingSource && fundingSource !== '8') {\r\n funding = fundingSourceDesc;\r\n } else {\r\n if (fundingSourceText) {\r\n funding = fundingSourceText;\r\n }\r\n }\r\n let service = '';\r\n if (serviceNameId && serviceNameId !== '47') {\r\n service = serviceName;\r\n } else {\r\n if (serviceOtherName) {\r\n service = serviceOtherName;\r\n }\r\n }\r\n\r\n return {\r\n tableValues: [\r\n assessmentArea,\r\n funding,\r\n service,\r\n providerName,\r\n scopeOfService,\r\n howOften,\r\n bDate,\r\n eDate,\r\n ],\r\n psData: {\r\n assessmentAreaId,\r\n providerId,\r\n providerName,\r\n serviceNameId,\r\n serviceNameOther,\r\n scopeOfService,\r\n howOftenValue,\r\n howOftenFrequency,\r\n howOftenText,\r\n beginDate,\r\n endDate,\r\n fundingSource,\r\n fundingSourceText,\r\n paidSupportsId,\r\n rowOrder,\r\n },\r\n };\r\n }\r\n function mapAdditionalSupportDataForTable(as) {\r\n let assessmentAreaId;\r\n let assessmentArea;\r\n\r\n const whoSupports = as.whoSupports;\r\n const whoSupportsText = planData.getRelationshipNameById(whoSupports);\r\n const whatSupportLooksLike = as.whatSupportLooksLike\r\n ? as.whatSupportLooksLike\r\n : as.whatSupportsLookLike;\r\n const howOftenValue = as.howOftenValue;\r\n const howOftenFrequency = as.howOftenFrequency;\r\n const howOftenText = as.howOftenText;\r\n const additionalSupportsId = as.additionalSupportsId;\r\n const rowOrder = as.rowOrder;\r\n\r\n const a = assessment.getApplicableSections();\r\n if (a[as.assessmentAreaId]) {\r\n assessmentAreaId = as.assessmentAreaId;\r\n assessmentArea = getAssessmentAreaById(assessmentAreaId);\r\n } else {\r\n assessmentAreaId = '';\r\n assessmentArea = '';\r\n }\r\n\r\n const whenHowOftenDesc = howOftenFrequency\r\n ? getWhenHowOftenFrequencyById(howOftenFrequency)\r\n : '';\r\n let howOften = '';\r\n if (howOftenValue) howOften += howOftenValue;\r\n if (howOftenFrequency && howOftenFrequency !== '4') {\r\n howOften += ` ${whenHowOftenDesc}`;\r\n } else {\r\n if (howOftenText) howOften += ` ${howOftenText}`;\r\n }\r\n\r\n return {\r\n tableValues: [assessmentArea, whoSupportsText, whatSupportLooksLike, howOften],\r\n asData: {\r\n assessmentAreaId,\r\n whoSupports,\r\n whatSupportLooksLike,\r\n howOftenValue,\r\n howOftenFrequency,\r\n howOftenText,\r\n additionalSupportsId,\r\n rowOrder,\r\n },\r\n };\r\n }\r\n function mapProfessionalReferralDataForTable(pr) {\r\n let assessmentAreaId;\r\n let assessmentArea;\r\n\r\n const newOrExisting = pr.newOrExisting;\r\n const whoSupports = pr.whoSupports;\r\n const whoSupportsText = planData.getRelationshipNameById(whoSupports);\r\n const reasonForReferral = pr.reasonForReferral;\r\n const professionalReferralId = pr.professionalReferralId;\r\n const rowOrder = pr.rowOrder;\r\n\r\n const a = assessment.getApplicableSections();\r\n if (a[pr.assessmentAreaId]) {\r\n assessmentAreaId = pr.assessmentAreaId;\r\n assessmentArea = getAssessmentAreaById(assessmentAreaId);\r\n } else {\r\n assessmentAreaId = '';\r\n assessmentArea = '';\r\n }\r\n\r\n const newExisting = newOrExisting === '0' ? '' : newOrExisting === '1' ? 'New' : 'Existing';\r\n\r\n return {\r\n tableValues: [assessmentArea, newExisting, whoSupportsText, reasonForReferral],\r\n prData: {\r\n assessmentAreaId,\r\n newOrExisting,\r\n whoSupports,\r\n reasonForReferral,\r\n professionalReferralId,\r\n rowOrder,\r\n },\r\n };\r\n }\r\n // Counts\r\n function getNumberOfPaidSupports() {\r\n if (paidSupportsTable) {\r\n const tableBody = paidSupportsTable.querySelector('.table__body');\r\n const tableRows = [...tableBody.querySelectorAll('.table__row')];\r\n return tableRows.length;\r\n }\r\n }\r\n function getNumberOfAdditionalSupports(sectionId) {\r\n return additionalSupportsCount;\r\n }\r\n function getNumberOfProfessionalReferrals(sectionId) {\r\n return professionalReferralsCount;\r\n }\r\n function getHasPaidSupports() {\r\n return hasPaidSupports;\r\n }\r\n // VendorId\r\n function setInitialSelectedVendorIds() {\r\n selectedVendors = servicesSupportsData.paidSupport.reduce((acc, ps) => {\r\n if (ps.providerId && ps.providerId !== '') {\r\n acc.push({\r\n providerId: ps.providerId,\r\n providerName: ps.providerName ? ps.providerName : getProviderNameById(ps.providerId),\r\n row: ps.rowOrder,\r\n });\r\n }\r\n\r\n return acc;\r\n }, []);\r\n }\r\n function getSelectedVendors() {\r\n return selectedVendors;\r\n }\r\n function getSelectedVendorIds() {\r\n return selectedVendors.reduce((acc, vendor) => {\r\n acc.push(vendor.providerId);\r\n return acc;\r\n }, []);\r\n }\r\n // funding source names\r\n function setInitialFundingSourceNames() {\r\n selectedFundingSources = servicesSupportsData.paidSupport.reduce((acc, ps) => {\r\n if (ps.fundingSource && ps.fundingSource !== '') {\r\n acc.push({\r\n fundingSource: ps.fundingSource,\r\n row: ps.rowOrder,\r\n });\r\n }\r\n\r\n return acc;\r\n }, []);\r\n }\r\n function getSelectedFudningSourceNames() {\r\n return selectedFundingSources.reduce((acc, fs) => {\r\n if (getFundingSourceById(fs.fundingSource) == 'Other') {\r\n acc.push(servicesSupportsData.paidSupport[fs.row].fundingSourceText);\r\n } else {\r\n acc.push(getFundingSourceById(fs.fundingSource));\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n // DROPDOWNS\r\n //------------------------------------------------------\r\n //-- populate -------\r\n function populateAssessmentAreaDropdown(dropdownEle, defaultValue) {\r\n const a = assessment.getApplicableSections();\r\n\r\n const data = dropdownData.assessmentAreas\r\n .filter(dd => a[dd.assessmentAreaId])\r\n .map(dd => {\r\n return {\r\n value: dd.assessmentAreaId,\r\n text: dd.assessmentArea,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateFundingSourceDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.fundingSource.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n // if ($.session.applicationName === 'Advisor' && defaultValue === '') {\r\n // defaultValue = '4';\r\n // hcbsSelected = true;\r\n // }\r\n\r\n if (defaultValue && defaultValue !== '')\r\n fundingSourceDropdownSelectedText = data[defaultValue].text;\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n\r\n function populateServiceNameDropdown(dropdownEle, defaultValue, fundingSourceVal) {\r\n const data = [];\r\n dropdownData.serviceTypes.forEach(dd => {\r\n if (\r\n dd.showWith.includes(fundingSourceVal) ||\r\n (fundingSourceVal === '8' && dd.value === '47')\r\n ) {\r\n data.push({\r\n value: dd.value,\r\n text: dd.text,\r\n });\r\n }\r\n });\r\n\r\n data.sort((a, b) => a.text.localeCompare(b.text));\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n return defaultValue;\r\n }\r\n\r\n function populateOtherServiceTypesDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.serviceTypesOther.map(dd => {\r\n return {\r\n value: dd.serviceId,\r\n text: dd.serviceTypeDescription,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n\r\n async function populateMultiSelectServiceVendorsDropdown(dropdownEle, thisSelectedArray) {\r\n var test = dropdownEle;\r\n let thisfundingSourceSelectedText;\r\n let thisServiceNameSelectedText;\r\n\r\n let completeVendorList = [];\r\n\r\n for(let i = 0; i < thisSelectedArray.length; i++) {\r\n\r\n thisfundingSourceSelectedText = thisSelectedArray[i].fundingSourceName;\r\n thisServiceNameSelectedText = thisSelectedArray[i].serviceName;\r\n\r\n const { getPaidSupportsVendorsResult: vendorNumbers } =\r\n await servicesSupportsAjax.getPaidSupportsVendors(\r\n thisfundingSourceSelectedText,\r\n thisServiceNameSelectedText,\r\n );\r\n\r\n completeVendorList.push(...vendorNumbers);\r\n };\r\n\r\n var test6 = {vendorId: \"7500002\", vendorName: \"RMS of Ohio, Inc.\"};\r\n var test7 = {vendorId: \"7500001\", vendorName: \"IHS Services\"};\r\n var test8 = {vendorId: \"7500002\", vendorName: \"XX\"};\r\n var test9 = {vendorId: \"7500001\", vendorName: \"XXXX\"};\r\n // completeVendorList.push(test6);\r\n // completeVendorList.push(test6);\r\n // completeVendorList.push(test7);\r\n //completeVendorList.push(test7);\r\n // completeVendorList.push(test8);\r\n // completeVendorList.push(test9);\r\n\r\n // Filter original concat list to just the vendors that have more than one in the list\r\n const duplicateVendors = completeVendorList.filter((item, index, self) => {\r\n return self.findIndex(t => t.vendorId === item.vendorId) !== index;\r\n });\r\n\r\n // need to get duplicateVendors list down to just the vendors with the correct number of occurances\r\n let minOccurancePaidSupports;\r\n // thisSelectedArray.length = 3\r\n if (thisSelectedArray.length > 2) {\r\n minOccurancePaidSupports = removeDuplicatesBasedOnCount(duplicateVendors, 'vendorId', thisSelectedArray.length);\r\n } else {\r\n minOccurancePaidSupports = duplicateVendors;\r\n }\r\n\r\n let minOccurancePaidSupportsFiltered = removeDuplicateObjects(minOccurancePaidSupports, 'vendorId')\r\n\r\n let vendorArray = [];\r\n // vendorArray contains the duplicate vendors data in Dropdown data formnat\r\n minOccurancePaidSupportsFiltered.forEach(row => {\r\n let thisVendorObject = {value: row.vendorId, text: row.vendorName }\r\n vendorArray.push(thisVendorObject);\r\n });\r\n\r\n vendorArray.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n if (vendorArray.length > 0) {\r\n vendorArray.unshift({ value: '', text: '[SELECT A PROVIDER]' });\r\n } else {\r\n vendorArray.unshift({ value: '', text: 'No Common Provider' });\r\n }\r\n\r\n dropdown.populate(dropdownEle, vendorArray);\r\n\r\n return;\r\n }\r\n\r\n async function populateServiceVendorsDropdown(dropdownEle, defaultValue, ignoreGuardClauses) {\r\n // const data = dropdownData.serviceVendors.map(dd => {\r\n // return {\r\n // value: dd.vendorId,\r\n // text: dd.vendorName,\r\n // };\r\n // });\r\n // let data = vendorNumbers.map(vendorNumber => ({\r\n // value: vendorNumber.vendorId,\r\n // text: vendorNumber.vendorName,\r\n // }));\r\n\r\n if (!ignoreGuardClauses) {\r\n // handles populating provider DDL when: 1. a service has just been selected 2. a service already exists for an existing record\r\n // Guard clause -- if no fundingSource selected , therefore no data in serviceVEndorDropDown\r\n if (!fundingSourceDropdownSelectedText || fundingSourceDropdownSelectedText == '') {\r\n const thisVendorDropDownData = [].map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n\r\n //if there's no default value, and only one option, make that option the default\r\n if (!defaultValue) {\r\n if (thisVendorDropDownData.length === 1) {\r\n defaultValue = thisVendorDropDownData[0].value;\r\n saveUpdateProvider = defaultValue;\r\n dropdownEle.classList.remove('error');\r\n }\r\n }\r\n\r\n thisVendorDropDownData.unshift({ value: '%', text: '' });\r\n dropdown.populate(dropdownEle, thisVendorDropDownData, defaultValue);\r\n\r\n return;\r\n }\r\n\r\n // Guard clause --if HCBS/ICF fundingSource selected but no service selected, therefore no data in serviceVEndorDropDown\r\n if (\r\n (fundingSourceDropdownSelectedText.includes('HCBS') ||\r\n fundingSourceDropdownSelectedText.includes('ICF')) &&\r\n servicesDropdownSelectedText == '%'\r\n ) {\r\n const thisVendorDropDownData = [].map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n\r\n //if there's no default value, and only one option, make that option the default\r\n if (!defaultValue) {\r\n if (thisVendorDropDownData.length === 1) {\r\n defaultValue = thisVendorDropDownData[0].value;\r\n saveUpdateProvider = defaultValue;\r\n dropdownEle.classList.remove('error');\r\n }\r\n }\r\n\r\n thisVendorDropDownData.unshift({ value: '%', text: '' });\r\n dropdown.populate(dropdownEle, thisVendorDropDownData, defaultValue);\r\n\r\n return;\r\n }\r\n }\r\n\r\n // if guard clauses are not used (see above), then repopulate serviceVEndorDropDown\r\n const { getPaidSupportsVendorsResult: vendorNumbers } =\r\n await servicesSupportsAjax.getPaidSupportsVendors(\r\n fundingSourceDropdownSelectedText,\r\n servicesDropdownSelectedText,\r\n );\r\n\r\n const selectedVendorIds = getSelectedVendorIds();\r\n\r\n const nonPaidSupportData = vendorNumbers.filter(\r\n provider => selectedVendorIds.indexOf(provider.vendorId) < 0,\r\n );\r\n const paidSupportData = vendorNumbers.filter(\r\n provider => selectedVendorIds.indexOf(provider.vendorId) >= 0,\r\n );\r\n const nonPaidSupportDropdownData = nonPaidSupportData.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n const paidSupportDropdownData = paidSupportData.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n\r\n nonPaidSupportDropdownData.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n paidSupportDropdownData.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n const nonGroupedDropdownData = [{ value: '', text: '[SELECT A PROVIDER]' }];\r\n const paidSupportGroup = {\r\n groupLabel: 'Paid Support Providers',\r\n groupId: 'isp_ss_providerDropdown_paidSupportProviders',\r\n dropdownValues: paidSupportDropdownData,\r\n };\r\n const nonPaidSupportGroup = {\r\n groupLabel: 'Other Providers',\r\n groupId: 'isp_ss_providerDropdown_nonPaidSupportProviders',\r\n dropdownValues: nonPaidSupportDropdownData,\r\n };\r\n\r\n const groupDropdownData = [];\r\n if (paidSupportDropdownData.length > 0) {\r\n groupDropdownData.push(paidSupportGroup);\r\n }\r\n\r\n //if there's no default value, and only one option, make that option the default\r\n if (!defaultValue) {\r\n const tempData = [...nonPaidSupportDropdownData, ...paidSupportDropdownData];\r\n if (tempData.length === 1) {\r\n defaultValue = tempData[0].value;\r\n saveUpdateProvider = defaultValue;\r\n dropdownEle.classList.remove('error');\r\n }\r\n }\r\n\r\n groupDropdownData.push(nonPaidSupportGroup);\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: dropdownEle,\r\n data: groupDropdownData,\r\n nonGroupedData: nonGroupedDropdownData,\r\n defaultVal: defaultValue,\r\n });\r\n }\r\n\r\n function populateHowOftenHowMuchFrequencyDropdown(dropdownEle, defaultValue) {\r\n dropdown.populate(dropdownEle, dropdownData.howOftenHowMuchFrequency, defaultValue);\r\n }\r\n function populateWhenHowOftenFrequencyDropdown(dropdownEle, defaultValue) {\r\n dropdown.populate(dropdownEle, dropdownData.whenHowOftenFrequency, defaultValue);\r\n }\r\n function populateNewOrExistingDropdown(dropdownEle, defaultValue) {\r\n dropdown.populate(dropdownEle, dropdownData.newOrExisting, defaultValue);\r\n }\r\n\r\n function getAssessmentAreaById(id) {\r\n const filteredAssessment = dropdownData.assessmentAreas.filter(\r\n dd => dd.assessmentAreaId === id,\r\n );\r\n return filteredAssessment.length > 0 ? filteredAssessment[0].assessmentArea : '';\r\n }\r\n function getProviderNameById(id) {\r\n const filteredProvider = dropdownData.serviceVendors.filter(dd => dd.vendorId === id);\r\n return filteredProvider.length > 0 ? filteredProvider[0].vendorName : '';\r\n }\r\n function getServiceNameById(id) {\r\n const filteredService = dropdownData.serviceTypes.filter(dd => dd.value === id);\r\n return filteredService.length > 0 ? filteredService[0].text : '';\r\n }\r\n function getOtherServiceNameById(id) {\r\n const filteredService = dropdownData.serviceTypesOther.filter(dd => dd.serviceId === id);\r\n return filteredService.length > 0 ? filteredService[0].serviceTypeDescription : '';\r\n }\r\n function getFundingSourceById(id) {\r\n const filteredFunding = dropdownData.fundingSource.filter(dd => dd.value === id);\r\n return filteredFunding.length > 0 ? filteredFunding[0].text : '';\r\n }\r\n function getHowOftenHowMuchFrequencyById(id) {\r\n const filteredFrequency = dropdownData.howOftenHowMuchFrequency.filter(dd => dd.value === id);\r\n return filteredFrequency.length > 0 ? filteredFrequency[0].text : '';\r\n }\r\n function getWhenHowOftenFrequencyById(id) {\r\n const filteredFrequency = dropdownData.whenHowOftenFrequency.filter(dd => dd.value === id);\r\n return filteredFrequency.length > 0 ? filteredFrequency[0].text : '';\r\n }\r\n\r\n // PAID SUPPORTS\r\n //------------------------------------------------------\r\n async function insertPaidSupport(saveData, fromAssessment) {\r\n const { scopeOfService, fundingSourceText, howOftenText, ...rest } = saveData;\r\n\r\n if (!planID) {\r\n planID = plan.getCurrentPlanId();\r\n }\r\n\r\n const paidSupportId = await servicesSupportsAjax.insertPaidSupports({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n scopeOfService: scopeOfService,\r\n fundingSourceText: fundingSourceText,\r\n howOftenText: howOftenText,\r\n ...rest,\r\n });\r\n\r\n if (fromAssessment) return;\r\n\r\n const parsedId = JSON.parse(paidSupportId.replace('[', '').replace(']', ''));\r\n const { tableValues, psData } = mapPaidSupportDataForTable({\r\n paidSupportsId: parsedId.paidSupportsId,\r\n ...saveData,\r\n });\r\n const rowId = `ps${psData.paidSupportsId}`;\r\n\r\n table.addRows(\r\n paidSupportsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: () => {\r\n if (!enableMultiEdit) {\r\n showAddPaidSupportPopup({\r\n popupData: psData,\r\n isNew: false,\r\n fromAssessment: false,\r\n isCopy: false,\r\n charLimits,\r\n });\r\n return;\r\n }\r\n\r\n const isSelected = event.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n event.target.classList.remove('selected');\r\n selectedPaidSupportIds = selectedPaidSupportIds.filter(\r\n sr => sr !== psData.paidSupportsId,\r\n );\r\n selectedPaidSupportRows = selectedPaidSupportRows.filter(\r\n sr => sr.paidSupportsId !== psData.paidSupportsId,\r\n );\r\n } else {\r\n event.target.classList.add('selected');\r\n selectedPaidSupportIds.push(psData.paidSupportsId);\r\n selectedPaidSupportRows.push({ ...psData, rowNode: event.target });\r\n }\r\n\r\n if (selectedPaidSupportIds.length === 0) {\r\n multiEditUpdateBtn.classList.add('disabled');\r\n } else {\r\n multiEditUpdateBtn.classList.remove('disabled');\r\n }\r\n },\r\n onCopyClick: () => {\r\n if (isReadOnly) return;\r\n const copiedData = { ...psData, paidSupportsId: '' };\r\n showAddPaidSupportPopup({\r\n popupData: copiedData,\r\n isNew: true,\r\n fromAssessment: false,\r\n isCopy: true,\r\n charLimits,\r\n });\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n selectedVendors.push({\r\n providerId: psData.providerId,\r\n providerName: psData.providerName,\r\n row: psData.rowOrder,\r\n });\r\n selectedFundingSources.push({\r\n fundingSource: psData.fundingSource,\r\n row: psData.rowOrder,\r\n });\r\n\r\n //Update CI Funding Sources\r\n contactInformation.updateFundingSources();\r\n // Summary questions that require paid supports\r\n const numPaidSupports = getNumberOfPaidSupports();\r\n planSummary.checkForPaidSupports(numPaidSupports);\r\n }\r\n async function updatePaidSupport(updateData) {\r\n const { scopeOfService, fundingSourceText, howOftenText, ...rest } = updateData;\r\n\r\n await servicesSupportsAjax.updatePaidSupports({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n scopeOfService: scopeOfService,\r\n fundingSourceText: fundingSourceText,\r\n howOftenText: howOftenText,\r\n ...rest,\r\n });\r\n\r\n const { tableValues, psData } = mapPaidSupportDataForTable({\r\n ...updateData,\r\n });\r\n const rowId = `ps${psData.paidSupportsId}`;\r\n\r\n table.updateRows(\r\n paidSupportsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: () => {\r\n if (!enableMultiEdit) {\r\n showAddPaidSupportPopup({\r\n popupData: psData,\r\n isNew: false,\r\n fromAssessment: false,\r\n isCopy: false,\r\n charLimits,\r\n });\r\n return;\r\n }\r\n\r\n const isSelected = event.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n event.target.classList.remove('selected');\r\n selectedPaidSupportIds = selectedPaidSupportIds.filter(\r\n sr => sr !== psData.paidSupportsId,\r\n );\r\n selectedPaidSupportRows = selectedPaidSupportRows.filter(\r\n sr => sr.paidSupportsId !== psData.paidSupportsId,\r\n );\r\n } else {\r\n event.target.classList.add('selected');\r\n selectedPaidSupportIds.push(psData.paidSupportsId);\r\n selectedPaidSupportRows.push({ ...psData, rowNode: event.target });\r\n }\r\n\r\n if (selectedPaidSupportIds.length === 0) {\r\n multiEditUpdateBtn.classList.add('disabled');\r\n } else {\r\n multiEditUpdateBtn.classList.remove('disabled');\r\n }\r\n },\r\n onCopyClick: () => {\r\n if (isReadOnly) return;\r\n const copiedData = { ...psData, paidSupportsId: '' };\r\n showAddPaidSupportPopup({\r\n popupData: copiedData,\r\n isNew: true,\r\n fromAssessment: false,\r\n isCopy: true,\r\n charLimits,\r\n });\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n selectedVendors = selectedVendors.filter(vendor => vendor.rowOrder !== psData.rowOrder);\r\n selectedFundingSources = selectedFundingSources.filter(fs => fs.rowOrder !== psData.rowOrder);\r\n selectedVendors.push({\r\n providerId: psData.providerId,\r\n row: psData.rowOrder,\r\n });\r\n selectedFundingSources.push({\r\n fundingSource: psData.fundingSource,\r\n row: psData.rowOrder,\r\n });\r\n\r\n //Update CI Funding Sources\r\n contactInformation.updateFundingSources();\r\n }\r\n async function deletePaidSupport(paidSupportId) {\r\n await servicesSupportsAjax.deletePaidSupports({\r\n token: $.session.Token,\r\n paidSupportsId: paidSupportId,\r\n });\r\n\r\n table.deleteRow(`ps${paidSupportId}`);\r\n\r\n //Update CI Funding Sources\r\n contactInformation.updateFundingSources();\r\n // Summary questions that require paid supports\r\n const numPaidSupports = getNumberOfPaidSupports();\r\n planSummary.checkForPaidSupports(numPaidSupports);\r\n }\r\n function updatePaidSupportsRowFromMultiEdit(multiSaveUpdateData) {\r\n selectedPaidSupportRows.forEach(row => {\r\n const { rowNode, ...tableData } = row;\r\n\r\n if (multiSaveUpdateData.beginDate !== '') {\r\n tableData.beginDate = multiSaveUpdateData.beginDate;\r\n }\r\n if (multiSaveUpdateData.endDate !== '') {\r\n tableData.endDate = multiSaveUpdateData.endDate;\r\n }\r\n if (multiSaveUpdateData.providerId !== '0' && multiSaveUpdateData.providerId !== '') {\r\n tableData.providerId = multiSaveUpdateData.providerId;\r\n }\r\n\r\n const { tableValues, psData } = mapPaidSupportDataForTable({\r\n ...tableData,\r\n });\r\n const rowId = `ps${psData.paidSupportsId}`;\r\n\r\n if (multiSaveUpdateData.providerId !== '0' && multiSaveUpdateData.providerId !== '') {\r\n tableValues.providerName = multiSaveUpdateData.providerName;\r\n psData.providerName = multiSaveUpdateData.providerName;\r\n }\r\n\r\n table.updateRows(\r\n paidSupportsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: event => {\r\n if (!enableMultiEdit) {\r\n showAddPaidSupportPopup({\r\n popupData: psData,\r\n isNew: false,\r\n fromAssessment: false,\r\n isCopy: false,\r\n charLimits,\r\n });\r\n return;\r\n }\r\n\r\n const isSelected = event.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n event.target.classList.remove('selected');\r\n selectedPaidSupportIds = selectedPaidSupportIds.filter(\r\n sr => sr !== psData.paidSupportsId,\r\n );\r\n selectedPaidSupportRows = selectedPaidSupportRows.filter(\r\n sr => sr.paidSupportsId !== psData.paidSupportsId,\r\n );\r\n } else {\r\n event.target.classList.add('selected');\r\n selectedPaidSupportIds.push(psData.paidSupportsId);\r\n selectedPaidSupportRows.push({ ...psData, rowNode: event.target });\r\n }\r\n\r\n if (selectedPaidSupportIds.length === 0) {\r\n multiEditUpdateBtn.classList.add('disabled');\r\n } else {\r\n multiEditUpdateBtn.classList.remove('disabled');\r\n }\r\n },\r\n onCopyClick: () => {\r\n if (isReadOnly) return;\r\n const copiedData = { ...psData, paidSupportsId: '' };\r\n showAddPaidSupportPopup({\r\n popupData: copiedData,\r\n isNew: true,\r\n fromAssessment: false,\r\n isCopy: true,\r\n charLimits,\r\n });\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n selectedVendors = selectedVendors.filter(vendor => vendor.rowOrder !== psData.rowOrder);\r\n selectedVendors.push({\r\n providerId: psData.providerId,\r\n row: psData.rowOrder,\r\n });\r\n });\r\n }\r\n function checkForMatchingFundingSourceAndSeriviceNames(paidSupportRows) {\r\n // grab the first row to set values\r\n const fundingSource = paidSupportRows[0].fundingSource;\r\n const serviceNameId = paidSupportRows[0].serviceNameId;\r\n return paidSupportRows.every(psRow => {\r\n return psRow.fundingSource === fundingSource && psRow.serviceNameId === serviceNameId;\r\n });\r\n }\r\n //-- Markup ---------\r\n function toggleMultiEditUpdateBtn(multiSaveUpdateData, updateBtn) {\r\n if (\r\n multiSaveUpdateData.beginDate !== '' ||\r\n multiSaveUpdateData.endDate !== '' ||\r\n multiSaveUpdateData.providerId !== ''\r\n ) {\r\n updateBtn.classList.remove('disabled');\r\n return;\r\n } else {\r\n updateBtn.classList.add('disabled');\r\n return;\r\n }\r\n\r\n // updateBtn.classList.remove('disabled');\r\n }\r\n function showMultiEditPopup() {\r\n let multiSaveUpdateData = {\r\n beginDate: '',\r\n endDate: '',\r\n providerId: '',\r\n providerName: '',\r\n };\r\n\r\n const multiEditPopup = POPUP.build({\r\n header: 'Update Paid Supports',\r\n classNames: 'multiEditPopup',\r\n hideX: true,\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.classList.add('popupMessage');\r\n message.innerText = `Fields left blank will not be updated`;\r\n\r\n // set all multiselct data \r\n let thisSelectedPaidSupportItems = [];\r\n selectedPaidSupportRows.forEach(row => {\r\n let thisfundingSource = getFundingSourceById(row.fundingSource);\r\n let thisserviceName = getServiceNameById(row.serviceNameId);\r\n let thisSelectedObject = {fundingSourceName: thisfundingSource, serviceName: thisserviceName }\r\n thisSelectedPaidSupportItems.push(thisSelectedObject);\r\n });\r\n\r\n // set fundingSourceDropdownSelectedText & servicesDropdownSelectedText\r\n const fundingSource = getFundingSourceById(selectedPaidSupportRows[0].fundingSource);\r\n const serviceName = getServiceNameById(selectedPaidSupportRows[0].serviceNameId);\r\n fundingSourceDropdownSelectedText = fundingSource;\r\n servicesDropdownSelectedText = serviceName;\r\n\r\n // check for matching funding source and service names\r\n const matchingRows = checkForMatchingFundingSourceAndSeriviceNames(selectedPaidSupportRows);\r\n\r\n const providerNameDropdown = dropdown.build({\r\n dropdownId: 'providerNameDropdownPS',\r\n label: '*Provider Name',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n multiSaveUpdateData.providerId = selectedOption.value;\r\n multiSaveUpdateData.providerName = selectedOption.innerText;\r\n toggleMultiEditUpdateBtn(multiSaveUpdateData, updateBtn);\r\n },\r\n });\r\n // if (!matchingRows) {\r\n // input.disableInputField(providerNameDropdown);\r\n // }\r\n\r\n const beginDateInput = input.build({\r\n label: 'Begin Date',\r\n type: 'date',\r\n style: 'secondary',\r\n // value: multiSaveUpdateData.beginDate,\r\n callback: e => {\r\n multiSaveUpdateData.beginDate = e.target.value;\r\n toggleMultiEditUpdateBtn(multiSaveUpdateData, updateBtn);\r\n },\r\n });\r\n const endDateInput = input.build({\r\n label: 'End Date',\r\n type: 'date',\r\n style: 'secondary',\r\n // value: multiSaveUpdateData.endDate,\r\n callback: e => {\r\n multiSaveUpdateData.endDate = e.target.value;\r\n toggleMultiEditUpdateBtn(multiSaveUpdateData, updateBtn);\r\n },\r\n });\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('btnWrap');\r\n\r\n const updateBtn = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: async () => {\r\n await servicesSupportsAjax.updateMultiPaidSupports({\r\n token: $.session.Token,\r\n beginDate:\r\n multiSaveUpdateData.beginDate !== '' ? multiSaveUpdateData.beginDate : '1900-01-01',\r\n endDate: multiSaveUpdateData.endDate !== '' ? multiSaveUpdateData.endDate : '1900-01-01',\r\n providerId: multiSaveUpdateData.providerId !== '' ? multiSaveUpdateData.providerId : '0',\r\n paidSupportsId: selectedPaidSupportIds.join(','),\r\n });\r\n\r\n multiEditUpdateBtn.classList.add('disabled');\r\n multiEditUpdateBtn.classList.add('hidden');\r\n multiEditCancelBtn.classList.add('hidden');\r\n\r\n multiEditBtn.classList.toggle('enabled');\r\n\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n\r\n updatePaidSupportsRowFromMultiEdit(multiSaveUpdateData);\r\n selectedPaidSupportIds = [];\r\n selectedPaidSupportRows = [];\r\n\r\n POPUP.hide(multiEditPopup);\r\n\r\n enableMultiEdit = false;\r\n fundingSourceDropdownSelectedText = '';\r\n servicesDropdownSelectedText = '';\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(multiEditPopup);\r\n },\r\n });\r\n\r\n wrap.appendChild(updateBtn);\r\n wrap.appendChild(cancelBtn);\r\n\r\n multiEditPopup.appendChild(message);\r\n multiEditPopup.appendChild(beginDateInput);\r\n multiEditPopup.appendChild(endDateInput);\r\n multiEditPopup.appendChild(providerNameDropdown);\r\n multiEditPopup.appendChild(wrap);\r\n\r\n // populateServiceVendorsDropdown(providerNameDropdown, multiSaveUpdateData.providerId);\r\n populateMultiSelectServiceVendorsDropdown(providerNameDropdown, thisSelectedPaidSupportItems);\r\n\r\n POPUP.show(multiEditPopup);\r\n }\r\n function buildMultiRowEdit() {\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('mutliEditBtnWrap');\r\n\r\n multiEditBtn = button.build({\r\n text: 'Multi Select Supports',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiEditBtn',\r\n callback: () => {\r\n enableMultiEdit = !enableMultiEdit;\r\n\r\n multiEditBtn.classList.toggle('enabled');\r\n\r\n if (enableMultiEdit) {\r\n selectedPaidSupportIds = [];\r\n selectedPaidSupportRows = [];\r\n multiEditUpdateBtn.classList.remove('hidden');\r\n multiEditCancelBtn.classList.remove('hidden');\r\n } else {\r\n selectedPaidSupportIds = [];\r\n selectedPaidSupportRows = [];\r\n multiEditUpdateBtn.classList.add('disabled');\r\n multiEditUpdateBtn.classList.add('hidden');\r\n multiEditCancelBtn.classList.add('hidden');\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n },\r\n });\r\n\r\n multiEditUpdateBtn = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: () => {\r\n showMultiEditPopup();\r\n },\r\n });\r\n multiEditCancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n enableMultiEdit = false;\r\n multiEditBtn.classList.toggle('enabled');\r\n multiEditUpdateBtn.classList.add('disabled');\r\n multiEditUpdateBtn.classList.add('hidden');\r\n multiEditCancelBtn.classList.add('hidden');\r\n\r\n selectedPaidSupportIds = [];\r\n selectedPaidSupportRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n },\r\n });\r\n multiEditUpdateBtn.classList.add('hidden');\r\n multiEditCancelBtn.classList.add('hidden');\r\n\r\n wrap.appendChild(multiEditBtn);\r\n wrap.appendChild(multiEditUpdateBtn);\r\n wrap.appendChild(multiEditCancelBtn);\r\n\r\n return wrap;\r\n }\r\n function togglePaidSupportDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.paidSupportPopup .error');\r\n const doneBtn = document.querySelector('.paidSupportPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showAddPaidSupportPopup({ popupData, isNew, fromAssessment, isCopy, charLimits }) {\r\n if (!dropdownData) {\r\n dropdownData = planData.getDropdownData();\r\n }\r\n\r\n let hasInitialErros;\r\n\r\n const saveUpdateData = {\r\n assessmentAreaId: !popupData.assessmentAreaId ? '' : popupData.assessmentAreaId,\r\n providerId: !popupData.providerId ? '' : popupData.providerId,\r\n serviceNameId: !popupData.serviceNameId ? '' : popupData.serviceNameId,\r\n serviceNameOther: !popupData.serviceNameOther ? '' : popupData.serviceNameOther,\r\n scopeOfService: !popupData.scopeOfService ? '' : popupData.scopeOfService,\r\n howOftenValue: !popupData.howOftenValue ? '' : popupData.howOftenValue,\r\n howOftenFrequency: !popupData.howOftenFrequency ? '' : popupData.howOftenFrequency,\r\n howOftenText: !popupData.howOftenText ? '' : popupData.howOftenText,\r\n beginDate: !popupData.beginDate ? '' : popupData.beginDate,\r\n endDate: !popupData.endDate ? '' : popupData.endDate,\r\n fundingSource: !popupData.fundingSource ? '' : popupData.fundingSource,\r\n fundingSourceText: !popupData.fundingSourceText ? '' : popupData.fundingSourceText,\r\n rowOrder: !popupData.rowOrder ? '' : popupData.rowOrder,\r\n };\r\n\r\n if (!isNew) {\r\n saveUpdateData.paidSupportsId = popupData.paidSupportsId;\r\n } else {\r\n if (!isCopy) {\r\n saveUpdateData.beginDate = UTIL.formatDateFromDateObj(planDates.getEffectiveStartDate());\r\n saveUpdateData.endDate = UTIL.formatDateFromDateObj(planDates.getEffectiveEndDate());\r\n }\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor' && saveUpdateData.fundingSource === '') {\r\n hcbsSelected = true;\r\n saveUpdateData.fundingSource = '4';\r\n }\r\n\r\n const availableServiceTypes = [];\r\n const data = [];\r\n dropdownData.serviceTypes.forEach(dd => {\r\n if (dd.showWith.includes(saveUpdateData.fundingSource)) {\r\n availableServiceTypes.push(dd.value);\r\n data.push({\r\n value: dd.value,\r\n text: dd.text,\r\n });\r\n }\r\n });\r\n\r\n if (availableServiceTypes.includes(saveUpdateData.serviceNameId)) {\r\n let servicesDropdownSelected = data.find(e => e.value === saveUpdateData.serviceNameId);\r\n servicesDropdownSelectedText = servicesDropdownSelected.text;\r\n } else {\r\n if (saveUpdateData.fundingSource === '8') {\r\n servicesDropdownSelectedText = 'Other (please specify)';\r\n } else {\r\n saveUpdateData.serviceNameId = $.session.applicationName === 'Advisor' ? '24' : '%';\r\n }\r\n }\r\n\r\n // Popup\r\n const paidSupportPopup = POPUP.build({\r\n header: isNew ? 'Add Paid Support' : 'Edit Paid Support',\r\n classNames: 'paidSupportPopup',\r\n hideX: true,\r\n });\r\n\r\n // Asessment Area\r\n const assessmentAreaDropdown = dropdown.build({\r\n dropdownId: 'assessmentAreaDropdownPS',\r\n label: '*Assessment Area',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.assessmentAreaId = selectedOption.value;\r\n if (saveUpdateData.assessmentAreaId === '' || saveUpdateData.assessmentAreaId === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n } else {\r\n assessmentAreaDropdown.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n if (fromAssessment) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n }\r\n // Funding Source Drop Down\r\n const fundingSourceDropdown = dropdown.build({\r\n dropdownId: 'fundingSourceDropdownPS',\r\n label: '*Funding Source',\r\n style: 'secondary',\r\n callback: async (e, selectedOption) => {\r\n saveUpdateData.fundingSource = selectedOption.value;\r\n\r\n if (saveUpdateData.fundingSource === '8') {\r\n serviceNameDropdown.classList.add('disabled');\r\n serviceNameOtherDropdown.classList.remove('disabled');\r\n serviceNameOtherDropdown.classList.add('error');\r\n\r\n saveUpdateData.serviceNameId = populateServiceNameDropdown(\r\n serviceNameDropdown,\r\n '47',\r\n '5',\r\n );\r\n populateOtherServiceTypesDropdown(serviceNameOtherDropdown, '%');\r\n } else {\r\n serviceNameDropdown.classList.remove('disabled');\r\n\r\n saveUpdateData.serviceNameId = populateServiceNameDropdown(\r\n serviceNameDropdown,\r\n saveUpdateData.serviceNameId,\r\n selectedOption.value,\r\n );\r\n populateOtherServiceTypesDropdown(serviceNameOtherDropdown, '%');\r\n }\r\n\r\n // store currently selected fundingSource (fundingSourceDropdownSelectedText) for use when populating the vendor dropdown\r\n // store type of fundingSource (hcbsSelected) for use when populating service and vendor dropdowns\r\n fundingSourceDropdownSelectedText = selectedOption.innerText;\r\n if (selectedOption.innerText.includes('HCBS') || selectedOption.innerText.includes('ICF')) {\r\n hcbsSelected = true;\r\n } else {\r\n hcbsSelected = false;\r\n }\r\n\r\n if (hcbsSelected) {\r\n providerNameDropdown.classList.remove('disabled');\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n } else {\r\n // re-enable provider dropdown if it was disabled\r\n providerNameDropdown.classList.remove('disabled');\r\n providerNameDropdown.classList.add('error');\r\n\r\n // non-waver -- get all Active Providers\r\n servicesDropdownSelectedText = '%';\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n }\r\n\r\n if (saveUpdateData.fundingSource === '5') {\r\n // if 'State Plan Services' is selected, disable Provider Name Dropdown\r\n providerNameDropdown.querySelector('select').selectedIndex = -1;\r\n saveUpdateData.providerId = '';\r\n providerNameDropdown.classList.remove('error');\r\n providerNameDropdown.classList.add('disabled');\r\n }\r\n\r\n // validation of fundingSource DDL\r\n if (saveUpdateData.fundingSource === '' || saveUpdateData.fundingSource === '%') {\r\n fundingSourceDropdown.classList.add('error');\r\n } else {\r\n fundingSourceDropdown.classList.remove('error');\r\n }\r\n\r\n // validation of fundingSource Input\r\n const fundingSourceInputField = fundingSourceInput.querySelector('.input-field__input');\r\n\r\n // enable/disable funding source text input\r\n if (saveUpdateData.fundingSource === '8') {\r\n fundingSourceInput.classList.remove('disabled');\r\n fundingSourceInputField.removeAttribute('tabindex');\r\n\r\n if (saveUpdateData.fundingSourceText === '') {\r\n fundingSourceInput.classList.add('error');\r\n } else {\r\n fundingSourceInput.classList.remove('error');\r\n }\r\n } else {\r\n fundingSourceInput.classList.remove('error');\r\n fundingSourceInput.classList.add('disabled');\r\n fundingSourceInputField.setAttribute('tabindex', '-1');\r\n saveUpdateData.fundingSourceText = '';\r\n const textInput = fundingSourceInput.querySelector('.input-field__input');\r\n textInput.value = '';\r\n }\r\n\r\n await validateServicesDropdown();\r\n validateProviderDropdown();\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n\r\n async function validateServicesDropdown() {\r\n // Validation of Services DDL after selecting from fundingSource DDL\r\n const servicesDropdownSelect = document.querySelector('#serviceNameDropdownPS');\r\n const servicesOtherDropdownSelect = document.querySelector('#serviceNameOtherDropdownPS');\r\n\r\n if (hcbsSelected) {\r\n if (\r\n servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex] &&\r\n servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex].text !== ''\r\n ) {\r\n servicesDropdownSelectedText =\r\n servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex].text;\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n } else {\r\n servicesDropdownSelectedText = '';\r\n saveUpdateData.providerId = '';\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n }\r\n }\r\n\r\n if (servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex]) {\r\n servicesDropdownSelectedText =\r\n servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex].text;\r\n } else {\r\n servicesDropdownSelectedText = '';\r\n serviceNameOtherDropdown.classList.add('disabled');\r\n saveUpdateData.serviceNameOther = '';\r\n }\r\n\r\n // if (saveUpdateData.serviceNameId === '' || saveUpdateData.serviceNameId === '%' || servicesDropdownSelectedText === '') {\r\n if (servicesDropdownSelectedText === '') {\r\n serviceNameDropdown.classList.add('error');\r\n } else {\r\n serviceNameDropdown.classList.remove('error');\r\n }\r\n }\r\n\r\n function validateProviderDropdown() {\r\n // Validation of Provider DDL after selecting from fundingSource DDL\r\n const providerDropdown = document.querySelector('#providerNameDropdownPS');\r\n\r\n if (\r\n providerDropdown.options[providerDropdown.selectedIndex] &&\r\n !providerNameDropdown.classList.contains('disabled')\r\n ) {\r\n providerDropdownSelectedText =\r\n providerDropdown.options[providerDropdown.selectedIndex].text;\r\n } else {\r\n providerDropdownSelectedText = '';\r\n }\r\n\r\n // if (saveUpdateData.providerId === '' || saveUpdateData.providerId === '%' || saveUpdateData.providerId === '[SELECT A PROVIDER]') {\r\n if (\r\n (providerDropdownSelectedText === '' ||\r\n providerDropdownSelectedText === '[SELECT A PROVIDER]') &&\r\n !providerNameDropdown.classList.contains('disabled')\r\n ) {\r\n providerNameDropdown.classList.add('error');\r\n } else {\r\n providerNameDropdown.classList.remove('error');\r\n }\r\n }\r\n\r\n // Funding Source Other\r\n const fundingSourceInput = input.build({\r\n type: 'textarea',\r\n label: '*Funding Source Other',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.fundingSourceText,\r\n charLimit: charLimits.fundingSourceOther,\r\n forceCharLimit: true,\r\n callback: e => {\r\n if (!fundingSourceInput.classList.contains('disabled')) {\r\n saveUpdateData.fundingSourceText = e.target.value;\r\n\r\n if (saveUpdateData.fundingSource === '8') {\r\n if (saveUpdateData.fundingSourceText === '') {\r\n fundingSourceInput.classList.add('error');\r\n } else {\r\n fundingSourceInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n fundingSourceInput.classList.add('fundingSourceInput');\r\n fundingSourceInput.addEventListener('input', e => {\r\n if (!fundingSourceInput.classList.contains('disabled')) {\r\n saveUpdateData.fundingSourceText = e.target.value;\r\n\r\n if (saveUpdateData.fundingSource === '8') {\r\n if (saveUpdateData.fundingSourceText === '') {\r\n fundingSourceInput.classList.add('error');\r\n } else {\r\n fundingSourceInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n });\r\n if (saveUpdateData.fundingSource !== '8') {\r\n const fundingSourceInputField = fundingSourceInput.querySelector('.input-field__input');\r\n fundingSourceInputField.setAttribute('tabindex', '-1');\r\n fundingSourceInput.classList.add('disabled');\r\n }\r\n // Provider Name\r\n const providerNameDropdown = dropdown.build({\r\n dropdownId: 'providerNameDropdownPS',\r\n label: '*Provider Name',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.providerId = selectedOption.value;\r\n if (\r\n (saveUpdateData.providerId === '' || saveUpdateData.providerId === '%') &&\r\n !providerNameDropdown.classList.contains('disabled')\r\n ) {\r\n providerNameDropdown.classList.add('error');\r\n } else {\r\n providerNameDropdown.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // Service Name\r\n const serviceNameDropdown = dropdown.build({\r\n dropdownId: 'serviceNameDropdownPS',\r\n label: '*Service Name',\r\n style: 'secondary',\r\n callback: async (e, selectedOption) => {\r\n saveUpdateData.serviceNameId = selectedOption.value;\r\n servicesDropdownSelectedText = selectedOption.text;\r\n // saveUpdateData.providerId = '';\r\n\r\n // store currently selected fundingSource (fundingSourceDropdownSelectedText) for use when populating the vendor dropdown\r\n // store type of fundingSource (hcbsSelected) for use when populating service and vendor dropdowns\r\n const fundingSourceDropdown = document.querySelector('#fundingSourceDropdownPS');\r\n fundingSourceDropdownSelectedText =\r\n fundingSourceDropdown.options[fundingSourceDropdown.selectedIndex].text;\r\n if (\r\n fundingSourceDropdownSelectedText.includes('HCBS') ||\r\n fundingSourceDropdownSelectedText.includes('ICF')\r\n ) {\r\n hcbsSelected = true;\r\n } else {\r\n hcbsSelected = false;\r\n }\r\n\r\n if (hcbsSelected) {\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n }\r\n\r\n // Validation of Services DDL\r\n if (saveUpdateData.serviceNameId === '' || saveUpdateData.serviceNameId === '%') {\r\n serviceNameDropdown.classList.add('error');\r\n } else {\r\n serviceNameDropdown.classList.remove('error');\r\n }\r\n\r\n // validation of Service Name Other DDL\r\n if (saveUpdateData.serviceNameId === '47') {\r\n serviceNameOtherDropdown.classList.remove('disabled');\r\n serviceNameOtherDropdown.classList.add('error');\r\n } else {\r\n document.getElementById('serviceNameOtherDropdownPS').value = '%';\r\n saveUpdateData.serviceNameOther = '';\r\n serviceNameOtherDropdown.classList.add('disabled');\r\n serviceNameOtherDropdown.classList.remove('error');\r\n }\r\n\r\n validateProviderDropdown();\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n }); // End -- Service Drop Down Handling\r\n\r\n // Service Name Other\r\n const serviceNameOtherDropdown = dropdown.build({\r\n dropdownId: 'serviceNameOtherDropdownPS',\r\n label: '*Service Name Other',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.serviceNameOther = selectedOption.value === '%' ? '' : selectedOption.value;\r\n if (saveUpdateData.serviceNameOther === '' || saveUpdateData.serviceNameOther === '%') {\r\n serviceNameOtherDropdown.classList.add('error');\r\n } else {\r\n serviceNameOtherDropdown.classList.remove('error');\r\n }\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // Scope Of Service\r\n const scopeOfserviceInput = input.build({\r\n label: '*Scope of Service / What support looks like',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.scopeOfService,\r\n charLimit: charLimits.scopeOfService,\r\n forceCharLimit: true,\r\n callback: e => {\r\n saveUpdateData.scopeOfService = e.target.value;\r\n\r\n if (saveUpdateData.scopeOfService === '') {\r\n scopeOfserviceInput.classList.add('error');\r\n } else {\r\n scopeOfserviceInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n scopeOfserviceInput.classList.add('scopeOfService');\r\n scopeOfserviceInput.addEventListener('input', e => {\r\n saveUpdateData.scopeOfService = e.target.value;\r\n if (saveUpdateData.scopeOfService === '') {\r\n scopeOfserviceInput.classList.add('error');\r\n } else {\r\n scopeOfserviceInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n });\r\n // How Often/How Much Value\r\n const howOftenHowMuchValueInput = input.build({\r\n type: 'textarea',\r\n label: '*How Often/How Much',\r\n style: 'secondary',\r\n value: saveUpdateData.howOftenValue,\r\n classNames: 'autosize',\r\n charLimit: charLimits.howOftenHowMuch,\r\n forceCharLimit: true,\r\n callback: e => {\r\n saveUpdateData.howOftenValue = e.target.value;\r\n\r\n if (saveUpdateData.howOftenValue === '') {\r\n howOftenHowMuchValueInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchValueInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n howOftenHowMuchValueInput.classList.add('howOftenHowMuchValueInput');\r\n howOftenHowMuchValueInput.addEventListener('input', e => {\r\n saveUpdateData.howOftenValue = e.target.value;\r\n\r\n if (saveUpdateData.howOftenValue === '') {\r\n howOftenHowMuchValueInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchValueInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n });\r\n // How Often/How Much Freq\r\n const howOftenHowMuchFrequencyDropdown = dropdown.build({\r\n dropdownId: 'howOftenHowMuchDropdownPS',\r\n label: '*How Often/How Much Frequency',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.howOftenFrequency = selectedOption.value;\r\n\r\n const howOftenHowMuchTextInputField =\r\n howOftenHowMuchTextInput.querySelector('.input-field__input');\r\n\r\n if (saveUpdateData.howOftenFrequency === '' || saveUpdateData.howOftenFrequency === '%') {\r\n howOftenHowMuchFrequencyDropdown.classList.add('error');\r\n } else {\r\n howOftenHowMuchFrequencyDropdown.classList.remove('error');\r\n }\r\n\r\n if (saveUpdateData.howOftenFrequency === '5') {\r\n howOftenHowMuchTextInput.classList.remove('disabled');\r\n howOftenHowMuchTextInputField.removeAttribute('tabindex');\r\n\r\n if (saveUpdateData.howOftenText === '') {\r\n howOftenHowMuchTextInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchTextInput.classList.remove('error');\r\n }\r\n } else {\r\n howOftenHowMuchTextInput.classList.remove('error');\r\n howOftenHowMuchTextInput.classList.add('disabled');\r\n howOftenHowMuchTextInputField.setAttribute('tabindex', '-1');\r\n saveUpdateData.howOftenText = '';\r\n const textInput = howOftenHowMuchTextInput.querySelector('.input-field__input');\r\n textInput.value = '';\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // How Often/How Much Other\r\n const howOftenHowMuchTextInput = input.build({\r\n type: 'textarea',\r\n label: '*How Often/How Much Other',\r\n style: 'secondary',\r\n value: saveUpdateData.howOftenText,\r\n classNames: 'autosize',\r\n charLimit: charLimits.howOftenOther,\r\n forceCharLimit: true,\r\n callback: e => {\r\n if (!howOftenHowMuchTextInput.classList.contains('disabled')) {\r\n saveUpdateData.howOftenText = e.target.value;\r\n\r\n if (saveUpdateData.howOftenFrequency === '5') {\r\n if (saveUpdateData.howOftenText === '') {\r\n howOftenHowMuchTextInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchTextInput.classList.remove('error');\r\n }\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n }\r\n },\r\n });\r\n howOftenHowMuchTextInput.classList.add('howOftenHowMuchTextInput');\r\n howOftenHowMuchTextInput.addEventListener('input', e => {\r\n if (!howOftenHowMuchTextInput.classList.contains('disabled')) {\r\n saveUpdateData.howOftenText = e.target.value;\r\n\r\n if (saveUpdateData.howOftenFrequency === '5') {\r\n if (saveUpdateData.howOftenText === '') {\r\n howOftenHowMuchTextInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchTextInput.classList.remove('error');\r\n }\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n }\r\n });\r\n if (saveUpdateData.howOftenFrequency !== '5') {\r\n const howOftenHowMuchTextInputField =\r\n howOftenHowMuchTextInput.querySelector('.input-field__input');\r\n howOftenHowMuchTextInput.classList.add('disabled');\r\n howOftenHowMuchTextInputField.setAttribute('tabindex', '-1');\r\n }\r\n // Begin Date\r\n const beginDateInput = input.build({\r\n label: 'Begin Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: saveUpdateData.beginDate,\r\n callback: e => {\r\n saveUpdateData.beginDate = e.target.value;\r\n if (saveUpdateData.beginDate === '') {\r\n beginDateInput.classList.add('error');\r\n } else {\r\n beginDateInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // End Date\r\n const endDateInput = input.build({\r\n label: 'End Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: saveUpdateData.endDate,\r\n callback: e => {\r\n saveUpdateData.endDate = e.target.value;\r\n if (saveUpdateData.endDate === '') {\r\n endDateInput.classList.add('error');\r\n } else {\r\n endDateInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // Buttons\r\n const doneBtn = button.build({\r\n text: isCopy ? 'Save Copy' : isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n\r\n if (isNew) {\r\n if (fromAssessment) {\r\n saveUpdateData.rowOrder = 0;\r\n planID = plan.getCurrentPlanId();\r\n } else {\r\n const rowOrder = table.getRowCount('paidSupportsTable');\r\n saveUpdateData.rowOrder = rowOrder + 1;\r\n }\r\n await insertPaidSupport(saveUpdateData, fromAssessment);\r\n } else {\r\n await updatePaidSupport(saveUpdateData);\r\n }\r\n\r\n const vendorIds = getSelectedVendorIds();\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(paidSupportPopup);\r\n\r\n fundingSourceDropdownSelectedText = undefined;\r\n servicesDropdownSelectedText = undefined;\r\n servicesOtherDropdownSelectedText = undefined;\r\n providerDropdownSelectedText = undefined;\r\n\r\n hcbsSelected = undefined;\r\n saveUpdateProvider = '';\r\n\r\n let ISPValidation = await planValidation.ISPValidation(planID);\r\n planValidation.checkExperiencesAfterAddingNewPaidSupport(ISPValidation);\r\n planValidation.updatedIspOutcomesSetAlerts(ISPValidation);\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(paidSupportPopup);\r\n\r\n fundingSourceDropdownSelectedText = undefined;\r\n servicesDropdownSelectedText = undefined;\r\n servicesOtherDropdownSelectedText = undefined;\r\n providerDropdownSelectedText = undefined;\r\n\r\n hcbsSelected = undefined;\r\n saveUpdateProvider = '';\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n const message = 'Do you want to delete this Paid Support?';\r\n ISP.showDeleteWarning(paidSupportPopup, message, async () => {\r\n await deletePaidSupport(saveUpdateData.paidSupportsId);\r\n\r\n let ISPValidation = await planValidation.ISPValidation(planID);\r\n planValidation.checkExperiencesAfterAddingNewPaidSupport(ISPValidation);\r\n planValidation.updatedIspOutcomesSetAlerts(ISPValidation);\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n });\r\n\r\n fundingSourceDropdownSelectedText = undefined;\r\n servicesDropdownSelectedText = undefined;\r\n servicesOtherDropdownSelectedText = undefined;\r\n providerDropdownSelectedText = undefined;\r\n\r\n hcbsSelected = undefined;\r\n saveUpdateProvider = '';\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (saveUpdateData.assessmentAreaId === '' || saveUpdateData.assessmentAreaId === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (\r\n (saveUpdateData.providerId === '' || saveUpdateData.providerId === '%') &&\r\n !providerNameDropdown.classList.contains('disabled')\r\n ) {\r\n providerNameDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.serviceNameId === '' || saveUpdateData.serviceNameId === '%') {\r\n serviceNameDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.serviceNameId !== '47') {\r\n serviceNameOtherDropdown.classList.add('disabled');\r\n } else if (saveUpdateData.serviceNameOther === '' || saveUpdateData.serviceNameOther === '%') {\r\n serviceNameOtherDropdown.classList.add('error');\r\n }\r\n if (saveUpdateData.scopeOfService === '') {\r\n scopeOfserviceInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.howOftenValue === '') {\r\n howOftenHowMuchValueInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.howOftenFrequency === '' || saveUpdateData.howOftenFrequency === '%') {\r\n howOftenHowMuchFrequencyDropdown.classList.add('error');\r\n }\r\n if (saveUpdateData.howOftenFrequency === '5') {\r\n if (saveUpdateData.howOftenText === '') {\r\n howOftenHowMuchTextInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n }\r\n if (saveUpdateData.beginDate === '') {\r\n beginDateInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.endDate === '') {\r\n endDateInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.fundingSource === '' || saveUpdateData.fundingSource === '%') {\r\n fundingSourceDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.fundingSource === '8') {\r\n fundingSourceInput.classList.remove('disabled');\r\n if (saveUpdateData.fundingSourceText === '') {\r\n fundingSourceInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n providerNameDropdown.classList.add('disabled');\r\n serviceNameDropdown.classList.add('disabled');\r\n serviceNameOtherDropdown.classList.add('disabled');\r\n scopeOfserviceInput.classList.add('disabled');\r\n howOftenHowMuchValueInput.classList.add('disabled');\r\n howOftenHowMuchFrequencyDropdown.classList.add('disabled');\r\n howOftenHowMuchTextInput.classList.add('disabled');\r\n beginDateInput.classList.add('disabled');\r\n endDateInput.classList.add('disabled');\r\n fundingSourceDropdown.classList.add('disabled');\r\n fundingSourceInput.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n if (saveUpdateData.fundingSource === '8') {\r\n serviceNameDropdown.classList.add('disabled');\r\n }\r\n }\r\n\r\n // popup assemble!!\r\n const left = document.createElement('div');\r\n left.classList.add('left');\r\n left.appendChild(assessmentAreaDropdown);\r\n left.appendChild(fundingSourceDropdown);\r\n left.appendChild(fundingSourceInput);\r\n left.appendChild(serviceNameDropdown);\r\n left.appendChild(serviceNameOtherDropdown);\r\n left.appendChild(providerNameDropdown);\r\n const right = document.createElement('div');\r\n right.classList.add('right');\r\n right.appendChild(scopeOfserviceInput);\r\n right.appendChild(howOftenHowMuchValueInput);\r\n right.appendChild(howOftenHowMuchFrequencyDropdown);\r\n right.appendChild(howOftenHowMuchTextInput);\r\n right.appendChild(beginDateInput);\r\n right.appendChild(endDateInput);\r\n\r\n paidSupportPopup.appendChild(left);\r\n paidSupportPopup.appendChild(right);\r\n paidSupportPopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, saveUpdateData.assessmentAreaId);\r\n populateOtherServiceTypesDropdown(serviceNameOtherDropdown, saveUpdateData.serviceNameOther);\r\n populateHowOftenHowMuchFrequencyDropdown(\r\n howOftenHowMuchFrequencyDropdown,\r\n saveUpdateData.howOftenFrequency,\r\n );\r\n populateFundingSourceDropdown(fundingSourceDropdown, saveUpdateData.fundingSource);\r\n\r\n if (isNew && $.session.applicationName === 'Advisor') {\r\n populateServiceNameDropdown(serviceNameDropdown, '24', '4');\r\n\r\n fundingSourceDropdown.classList.remove('error');\r\n serviceNameDropdown.classList.remove('error');\r\n } else {\r\n populateServiceNameDropdown(\r\n serviceNameDropdown,\r\n saveUpdateData.serviceNameId,\r\n saveUpdateData.fundingSource,\r\n );\r\n }\r\n\r\n populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n\r\n // if fundingSourceDropdown is set to State Plan Services, then disable providerNameDropdown\r\n if (saveUpdateData.fundingSource === '5') {\r\n providerNameDropdown.querySelector('select').selectedIndex = -1;\r\n providerNameDropdown.classList.remove('error');\r\n providerNameDropdown.classList.add('disabled');\r\n }\r\n\r\n if (saveUpdateData && saveUpdateData.providerId === '') {\r\n fundingSourceDropdownSelectedText = '';\r\n servicesDropdownSelectedText = '';\r\n providerDropdownSelectedText = '';\r\n }\r\n\r\n POPUP.show(paidSupportPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function addPaidSupportRow() {\r\n showAddPaidSupportPopup({ popupData: {}, isNew: true, charLimits });\r\n }\r\n function getPaidSupportsMarkup() {\r\n const paidSupportsDiv = document.createElement('div');\r\n paidSupportsDiv.classList.add('ispPaidSupports');\r\n paidSupportsDiv.classList.add('ispServicesSection');\r\n\r\n paidSupportsTable = table.build({\r\n tableId: 'paidSupportsTable',\r\n headline: 'Paid Supports',\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'Funding Source',\r\n 'Service Name',\r\n 'Provider Name',\r\n 'Scope of Service/ What support looks like',\r\n 'How Often / How Much',\r\n 'Begin Date',\r\n 'End Date',\r\n ],\r\n sortable: isSortable,\r\n allowCopy: isReadOnly === true ? false : true,\r\n onSortCallback: async sortData => {\r\n const supportId = sortData.row.id.replace('ps', '');\r\n sortData.newIndex = sortData.newIndex + 1;\r\n sortData.oldIndex = sortData.oldIndex + 1;\r\n await servicesSupportsAjax.updatePaidSupportsRowOrder({\r\n token: $.session.Token,\r\n assessmentId: parseInt(planID),\r\n supportId: parseInt(supportId),\r\n newPos: parseInt(sortData.newIndex),\r\n oldPos: parseInt(sortData.oldIndex),\r\n });\r\n },\r\n });\r\n\r\n let number = 0;\r\n // Set the data type for each header, for sorting purposes\r\n const headers = paidSupportsTable.querySelectorAll('.header div');\r\n if (headers.length > 9) \r\n number = 1;\r\n\r\n headers[0 + number].setAttribute('data-type', 'string'); // Assessment Area\r\n headers[1 + number].setAttribute('data-type', 'string'); // Funding Source\r\n headers[2 + number].setAttribute('data-type', 'string'); // Service Name\r\n headers[3 + number].setAttribute('data-type', 'string'); // Provider Name\r\n headers[4 + number].setAttribute('data-type', 'string'); // Scope of Service/ What support looks like\r\n headers[5 + number].setAttribute('data-type', 'string'); // How Often / How Much\r\n headers[6 + number].setAttribute('data-type', 'date'); // Begin Date\r\n headers[7 + number].setAttribute(\"data-type\", \"date\"); // End Date \r\n\r\n table.sortTableByHeader(paidSupportsTable);\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const addRowBtn = button.build({\r\n text: 'Add Paid Support',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addPaidSupportRow(),\r\n });\r\n addRowBtn.classList.add('addRowBtnPaidSupports');\r\n\r\n // multi edit section\r\n mutliEditBtnWrap = buildMultiRowEdit();\r\n\r\n if (isReadOnly) {\r\n addRowBtn.classList.add('disabled');\r\n multiEditBtn.classList.add('disabled');\r\n }\r\n\r\n if (servicesSupportsData && servicesSupportsData.paidSupport) {\r\n const tableData = servicesSupportsData.paidSupport\r\n .sort((a, b) => {\r\n return parseInt(a.rowOrder) < parseInt(b.rowOrder)\r\n ? -1\r\n : parseInt(a.rowOrder) > parseInt(b.rowOrder)\r\n ? 1\r\n : 0;\r\n })\r\n .map(ps => {\r\n const { tableValues, psData } = mapPaidSupportDataForTable(ps);\r\n const rowId = `ps${psData.paidSupportsId}`;\r\n\r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: psData.assessmentAreaId }],\r\n onClick: event => {\r\n if (!enableMultiEdit) {\r\n showAddPaidSupportPopup({\r\n popupData: psData,\r\n isNew: false,\r\n fromAssessment: false,\r\n isCopy: false,\r\n charLimits,\r\n });\r\n return;\r\n }\r\n\r\n const isSelected = event.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n event.target.classList.remove('selected');\r\n selectedPaidSupportIds = selectedPaidSupportIds.filter(\r\n sr => sr !== psData.paidSupportsId,\r\n );\r\n selectedPaidSupportRows = selectedPaidSupportRows.filter(\r\n sr => sr.paidSupportsId !== psData.paidSupportsId,\r\n );\r\n } else {\r\n event.target.classList.add('selected');\r\n selectedPaidSupportIds.push(psData.paidSupportsId);\r\n selectedPaidSupportRows.push({ ...psData, rowNode: event.target });\r\n }\r\n\r\n if (selectedPaidSupportIds.length === 0) {\r\n multiEditUpdateBtn.classList.add('disabled');\r\n } else {\r\n multiEditUpdateBtn.classList.remove('disabled');\r\n }\r\n },\r\n onCopyClick: () => {\r\n if (isReadOnly || enableMultiEdit) return;\r\n\r\n const copiedData = { ...psData, paidSupportsId: '' };\r\n showAddPaidSupportPopup({\r\n popupData: copiedData,\r\n isNew: true,\r\n fromAssessment: false,\r\n isCopy: true,\r\n charLimits,\r\n });\r\n },\r\n };\r\n });\r\n\r\n table.populate(paidSupportsTable, tableData, isSortable, isReadOnly);\r\n }\r\n\r\n btnWrap.appendChild(addRowBtn);\r\n btnWrap.appendChild(mutliEditBtnWrap);\r\n\r\n paidSupportsDiv.appendChild(paidSupportsTable);\r\n paidSupportsDiv.appendChild(btnWrap);\r\n\r\n return paidSupportsDiv;\r\n }\r\n\r\n // ADDITIONAL SUPPORTS\r\n //------------------------------------------------------\r\n async function insertAdditionalSupport(saveData, fromAssessment) {\r\n const { whoSupports, whatSupportLooksLike, howOftenText, ...rest } = saveData;\r\n\r\n if (!planID) {\r\n planID = plan.getCurrentPlanId();\r\n }\r\n\r\n const additionalSupportId = await servicesSupportsAjax.insertAdditionalSupports({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n whoSupports: whoSupports,\r\n whatSupportLooksLike: whatSupportLooksLike,\r\n howOftenText: howOftenText,\r\n ...rest,\r\n });\r\n\r\n if (fromAssessment) return;\r\n\r\n const parsedId = JSON.parse(additionalSupportId.replace('[', '').replace(']', ''));\r\n const { tableValues, asData } = mapAdditionalSupportDataForTable({\r\n additionalSupportsId: parsedId.additionalSupportsId,\r\n ...saveData,\r\n });\r\n const rowId = `as${asData.additionalSupportsId}`;\r\n\r\n table.addRows(\r\n additionalSupportsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: () => {\r\n if (isReadOnly == true)\r\n return;\r\n else\r\n showAddAdditionalSupportPopup(asData, false, false, charLimits);\r\n },\r\n endIcon: isReadOnly == true ? '' : `${icons['copy']}`,\r\n endIconCallback: (e) => {\r\n if (isReadOnly == true)\r\n return;\r\n else\r\n showAddAdditionalSupportPopup(asData, true, false, charLimits);\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n }\r\n async function updateAdditionalSupport(updateData) {\r\n const { whoSupports, whatSupportLooksLike, howOftenText, ...rest } = updateData;\r\n\r\n await servicesSupportsAjax.updateAdditionalSupports({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n whoSupports: whoSupports,\r\n whatSupportLooksLike: whatSupportLooksLike,\r\n howOftenText: howOftenText,\r\n ...rest,\r\n });\r\n\r\n const { tableValues, asData } = mapAdditionalSupportDataForTable({\r\n ...updateData,\r\n });\r\n const rowId = `as${asData.additionalSupportsId}`;\r\n\r\n table.updateRows(\r\n additionalSupportsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: () => {\r\n if (isReadOnly == true)\r\n return;\r\n else\r\n showAddAdditionalSupportPopup(asData, false, false, charLimits);\r\n },\r\n endIcon: isReadOnly == true ? '' : `${icons['copy']}`,\r\n endIconCallback: (e) => {\r\n if (isReadOnly == true)\r\n return;\r\n else\r\n showAddAdditionalSupportPopup(asData, true, false, charLimits);\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n }\r\n async function deleteAdditionalSupport(additionalSupportData) {\r\n await servicesSupportsAjax.deleteAdditionalSupports({\r\n token: $.session.Token,\r\n additionalSupportsId: additionalSupportData.additionalSupportsId,\r\n });\r\n\r\n table.deleteRow(`as${additionalSupportData.additionalSupportsId}`);\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n }\r\n //-- Markup ---------\r\n function toggleAdditionalSupportDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.additionalSupportPopup .error');\r\n const doneBtn = document.querySelector('.additionalSupportPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showAddAdditionalSupportPopup(popupData, isNew, fromAssessment, charLimits) {\r\n if (!dropdownData) {\r\n dropdownData = planData.getDropdownData();\r\n }\r\n\r\n let hasInitialErros;\r\n\r\n const saveUpdateData = {\r\n assessmentAreaId: !popupData.assessmentAreaId ? '' : popupData.assessmentAreaId,\r\n whoSupports: !popupData.whoSupports ? '' : popupData.whoSupports,\r\n whatSupportLooksLike: !popupData.whatSupportLooksLike ? '' : popupData.whatSupportLooksLike,\r\n howOftenValue: !popupData.howOftenValue ? '' : popupData.howOftenValue,\r\n howOftenFrequency: !popupData.howOftenFrequency ? '' : popupData.howOftenFrequency,\r\n howOftenText: !popupData.howOftenText ? '' : popupData.howOftenText,\r\n rowOrder: !popupData.rowOrder ? '' : popupData.rowOrder,\r\n };\r\n\r\n if (!isNew) saveUpdateData.additionalSupportsId = popupData.additionalSupportsId;\r\n\r\n const additionalSupportPopup = POPUP.build({\r\n header: isNew ? 'Add Additional Support' : 'Edit Additional Support',\r\n classNames: 'additionalSupportPopup',\r\n hideX: true,\r\n });\r\n\r\n // Assessment Area\r\n const assessmentAreaDropdown = dropdown.build({\r\n dropdownId: 'assessmentAreaDropdownAS',\r\n label: '*Assessment Area',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.assessmentAreaId = selectedOption.value;\r\n if (saveUpdateData.assessmentAreaId === '' || saveUpdateData.assessmentAreaId === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n } else {\r\n assessmentAreaDropdown.classList.remove('error');\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n },\r\n });\r\n if (fromAssessment) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n }\r\n // Who Supports\r\n const whoSupportsDropdown = dropdown.build({\r\n label: '*Who Supports',\r\n dropdownId: 'whoSupportsDropdown',\r\n readonly: isReadOnly,\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.whoSupports = selectedOption.value;\r\n\r\n if (saveUpdateData.whoSupports === '') {\r\n whoSupportsDropdown.classList.add('error');\r\n } else {\r\n whoSupportsDropdown.classList.remove('error');\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n },\r\n });\r\n\r\n // What Support Looks LIke\r\n const whatSupportLooksLikeInput = input.build({\r\n label: '*What Support Looks Like',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.whatSupportLooksLike,\r\n charLimit: charLimits.whatSupportLooksLike,\r\n forceCharLimit: true,\r\n callback: e => {\r\n saveUpdateData.whatSupportLooksLike = e.target.value;\r\n if (saveUpdateData.whatSupportLooksLike === '') {\r\n whatSupportLooksLikeInput.classList.add('error');\r\n } else {\r\n whatSupportLooksLikeInput.classList.remove('error');\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n },\r\n });\r\n whatSupportLooksLikeInput.classList.add('whatSupportLooksLike');\r\n whatSupportLooksLikeInput.addEventListener('input', e => {\r\n saveUpdateData.whatSupportLooksLike = e.target.value;\r\n if (saveUpdateData.whatSupportLooksLike === '') {\r\n whatSupportLooksLikeInput.classList.add('error');\r\n } else {\r\n whatSupportLooksLikeInput.classList.remove('error');\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n });\r\n // When/How Often Value\r\n const whenHowOftenValueInput = input.build({\r\n type: 'textarea',\r\n label: '*When/How Often',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.howOftenValue,\r\n charLimit: charLimits.whenHowOften,\r\n forceCharLimit: true,\r\n callback: e => {\r\n saveUpdateData.howOftenValue = e.target.value;\r\n\r\n if (saveUpdateData.howOftenValue === '') {\r\n whenHowOftenValueInput.classList.add('error');\r\n } else {\r\n whenHowOftenValueInput.classList.remove('error');\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n },\r\n });\r\n whenHowOftenValueInput.classList.add('whenHowOftenValueInput');\r\n whenHowOftenValueInput.addEventListener('input', e => {\r\n saveUpdateData.howOftenValue = e.target.value;\r\n\r\n if (saveUpdateData.howOftenValue === '') {\r\n whenHowOftenValueInput.classList.add('error');\r\n } else {\r\n whenHowOftenValueInput.classList.remove('error');\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n });\r\n // When/How Often Freq\r\n const whenHowOftenFrequencyDropdown = dropdown.build({\r\n dropdownId: 'whenHowOftenDropdownPS',\r\n label: '*When/How Often Frequency',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.howOftenFrequency = selectedOption.value;\r\n\r\n const whenHowOftenTextInputField =\r\n whenHowOftenTextInput.querySelector('.input-field__input');\r\n\r\n if (saveUpdateData.howOftenFrequency === '' || saveUpdateData.howOftenFrequency === '%') {\r\n whenHowOftenFrequencyDropdown.classList.add('error');\r\n } else {\r\n whenHowOftenFrequencyDropdown.classList.remove('error');\r\n }\r\n\r\n if (saveUpdateData.howOftenFrequency === '4') {\r\n whenHowOftenTextInput.classList.remove('disabled');\r\n whenHowOftenTextInputField.removeAttribute('tabindex');\r\n\r\n if (saveUpdateData.howOftenText === '') {\r\n whenHowOftenTextInput.classList.add('error');\r\n } else {\r\n whenHowOftenTextInput.classList.remove('error');\r\n }\r\n } else {\r\n whenHowOftenTextInput.classList.remove('error');\r\n whenHowOftenTextInput.classList.add('disabled');\r\n whenHowOftenTextInputField.setAttribute('tabindex', '-1');\r\n saveUpdateData.howOftenText = '';\r\n const textInput = whenHowOftenTextInput.querySelector('.input-field__input');\r\n textInput.value = '';\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n },\r\n });\r\n // When/How Often Other\r\n const whenHowOftenTextInput = input.build({\r\n type: 'textarea',\r\n label: '*When/How Often Other',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.howOftenText,\r\n charLimit: charLimits.whenHowOftenOther,\r\n forceCharLimit: true,\r\n callback: e => {\r\n if (!whenHowOftenTextInput.classList.contains('disabled')) {\r\n saveUpdateData.howOftenText = e.target.value;\r\n\r\n if (saveUpdateData.howOftenFrequency === '4') {\r\n if (saveUpdateData.howOftenText === '') {\r\n whenHowOftenTextInput.classList.add('error');\r\n } else {\r\n whenHowOftenTextInput.classList.remove('error');\r\n }\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n }\r\n },\r\n });\r\n whenHowOftenTextInput.classList.add('whenHowOftenTextInput');\r\n whenHowOftenTextInput.addEventListener('input', e => {\r\n if (!whenHowOftenTextInput.classList.contains('disabled')) {\r\n saveUpdateData.howOftenText = e.target.value;\r\n\r\n if (saveUpdateData.howOftenFrequency === '4') {\r\n if (saveUpdateData.howOftenText === '') {\r\n whenHowOftenTextInput.classList.add('error');\r\n } else {\r\n whenHowOftenTextInput.classList.remove('error');\r\n }\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n }\r\n });\r\n if (saveUpdateData.howOftenFrequency !== '4') {\r\n const whenHowOftenTextInputField = whenHowOftenTextInput.querySelector('.input-field__input');\r\n whenHowOftenTextInput.classList.add('disabled');\r\n whenHowOftenTextInputField.setAttribute('tabindex', '-1');\r\n }\r\n // Buttons\r\n const doneBtn = button.build({\r\n text: isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n if (isNew) {\r\n if (fromAssessment) {\r\n planID = plan.getCurrentPlanId();\r\n saveUpdateData.rowOrder = 0;\r\n } else {\r\n const rowOrder = table.getRowCount('additionalSupportsTable');\r\n saveUpdateData.rowOrder = rowOrder + 1;\r\n }\r\n insertAdditionalSupport(saveUpdateData, fromAssessment);\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(\r\n assessmentPlanValidation,\r\n saveUpdateData.assessmentAreaId,\r\n );\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n } else {\r\n updateAdditionalSupport(saveUpdateData);\r\n }\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(additionalSupportPopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(additionalSupportPopup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n const message = 'Do you want to delete this Additional Support?';\r\n ISP.showDeleteWarning(additionalSupportPopup, message, () => {\r\n deleteAdditionalSupport(saveUpdateData);\r\n });\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (saveUpdateData.assessmentAreaId === '' || saveUpdateData.assessmentAreaId === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.whoSupports === '') {\r\n whoSupportsDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.whatSupportLooksLike === '') {\r\n whatSupportLooksLikeInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.howOftenValue === '') {\r\n whenHowOftenValueInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.howOftenFrequency === '' || saveUpdateData.howOftenFrequency === '%') {\r\n whenHowOftenFrequencyDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.howOftenFrequency === '4') {\r\n if (saveUpdateData.howOftenText === '') {\r\n whenHowOftenTextInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n whoSupportsDropdown.classList.add('disabled');\r\n whatSupportLooksLikeInput.classList.add('disabled');\r\n whenHowOftenValueInput.classList.add('disabled');\r\n whenHowOftenFrequencyDropdown.classList.add('disabled');\r\n whenHowOftenTextInput.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n additionalSupportPopup.appendChild(assessmentAreaDropdown);\r\n additionalSupportPopup.appendChild(whoSupportsDropdown);\r\n additionalSupportPopup.appendChild(whatSupportLooksLikeInput);\r\n additionalSupportPopup.appendChild(whenHowOftenValueInput);\r\n additionalSupportPopup.appendChild(whenHowOftenFrequencyDropdown);\r\n additionalSupportPopup.appendChild(whenHowOftenTextInput);\r\n additionalSupportPopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, saveUpdateData.assessmentAreaId);\r\n populateWhenHowOftenFrequencyDropdown(\r\n whenHowOftenFrequencyDropdown,\r\n saveUpdateData.howOftenFrequency,\r\n );\r\n planData.populateRelationshipDropdown(whoSupportsDropdown, saveUpdateData.whoSupports);\r\n\r\n POPUP.show(additionalSupportPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function addAdditionalSupportRow() {\r\n showAddAdditionalSupportPopup({}, true, false, charLimits);\r\n }\r\n function getAdditionalSupportsMarkup() {\r\n const additionalSupportsDiv = document.createElement('div');\r\n additionalSupportsDiv.classList.add('ispAdditionalSupports');\r\n additionalSupportsDiv.classList.add('ispServicesSection');\r\n\r\n additionalSupportsTable = table.build({\r\n tableId: 'additionalSupportsTable',\r\n headline: `Additional Supports: Family, friends, community resources, technology, etc.`,\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'Who Supports',\r\n 'What Support Looks Like',\r\n 'When/How Often',\r\n ],\r\n endIcon: isReadOnly ? false : true,\r\n sortable: isSortable,\r\n onSortCallback: async sortData => {\r\n const supportId = sortData.row.id.replace('as', '');\r\n sortData.newIndex = sortData.newIndex + 1;\r\n sortData.oldIndex = sortData.oldIndex + 1;\r\n await servicesSupportsAjax.updateAdditionalSupportsRowOrder({\r\n token: $.session.Token,\r\n assessmentId: parseInt(planID),\r\n addSupportId: parseInt(supportId),\r\n newPos: parseInt(sortData.newIndex),\r\n oldPos: parseInt(sortData.oldIndex),\r\n });\r\n },\r\n });\r\n\r\n let number = 0;\r\n // Set the data type for each header, for sorting purposes\r\n const headers = additionalSupportsTable.querySelectorAll('.header div');\r\n if (headers.length > 5) \r\n number = 1;\r\n\r\n headers[0 + number].setAttribute('data-type', 'string'); // Assessment Area\r\n headers[1 + number].setAttribute('data-type', 'string'); // Who Supports\r\n headers[2 + number].setAttribute('data-type', 'string'); // What Support Looks Like\r\n headers[3 + number].setAttribute('data-type', 'string'); // When/How Often\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(additionalSupportsTable);\r\n\r\n const addRowBtn = button.build({\r\n text: 'Add Additional Support',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addAdditionalSupportRow(),\r\n });\r\n if (isReadOnly) {\r\n addRowBtn.classList.add('disabled');\r\n }\r\n\r\n if (servicesSupportsData && servicesSupportsData.additionalSupport) {\r\n const tableData = servicesSupportsData.additionalSupport\r\n .sort((a, b) => {\r\n return parseInt(a.rowOrder) < parseInt(b.rowOrder)\r\n ? -1\r\n : parseInt(a.rowOrder) > parseInt(b.rowOrder)\r\n ? 1\r\n : 0;\r\n })\r\n .map(as => {\r\n const { tableValues, asData } = mapAdditionalSupportDataForTable(as);\r\n const rowId = `as${asData.additionalSupportsId}`;\r\n\r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: asData.assessmentAreaId }],\r\n onClick: () => {\r\n if (isReadOnly == true)\r\n return;\r\n else\r\n showAddAdditionalSupportPopup(asData, false, false, charLimits);\r\n },\r\n endIcon: isReadOnly == true ? '' : `${icons['copy']}`,\r\n endIconCallback: (e) => {\r\n if (isReadOnly == true)\r\n return;\r\n else\r\n showAddAdditionalSupportPopup(asData, true, false, charLimits);\r\n },\r\n };\r\n });\r\n\r\n table.populate(additionalSupportsTable, tableData, isSortable);\r\n }\r\n\r\n additionalSupportsDiv.appendChild(additionalSupportsTable);\r\n additionalSupportsDiv.appendChild(addRowBtn);\r\n\r\n return additionalSupportsDiv;\r\n }\r\n\r\n // PROFESSIONAL REFERRALS\r\n //------------------------------------------------------\r\n async function insertProfessionalReferral(saveData, fromAssessment) {\r\n const { whoSupports, reasonForReferral, ...rest } = saveData;\r\n\r\n if (!planID) {\r\n planID = plan.getCurrentPlanId();\r\n }\r\n\r\n const profRefId = await servicesSupportsAjax.insertProfessionalReferral({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n whoSupports: whoSupports,\r\n reasonForReferral: reasonForReferral,\r\n ...rest,\r\n });\r\n\r\n if (fromAssessment) return;\r\n\r\n const parsedId = JSON.parse(profRefId.replace('[', '').replace(']', ''));\r\n const { tableValues, prData } = mapProfessionalReferralDataForTable({\r\n professionalReferralId: parsedId.professionalReferralId,\r\n ...saveData,\r\n });\r\n const rowId = `pr${prData.professionalReferralId}`;\r\n\r\n table.addRows(\r\n professionalReferralsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: () => {\r\n showAddProfessionalReferralPopup(prData, false, false, charLimits);\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n }\r\n async function updateProfessionalReferral(updateData) {\r\n const { whoSupports, reasonForReferral, ...rest } = updateData;\r\n\r\n await servicesSupportsAjax.updateProfessionalReferral({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n whoSupports: whoSupports,\r\n reasonForReferral: reasonForReferral,\r\n ...rest,\r\n });\r\n\r\n const { tableValues, prData } = mapProfessionalReferralDataForTable({\r\n ...updateData,\r\n });\r\n const rowId = `pr${prData.professionalReferralId}`;\r\n\r\n table.updateRows(\r\n professionalReferralsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: () => {\r\n showAddProfessionalReferralPopup(prData, false, false, charLimits);\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n }\r\n async function deleteProfessionalReferral(saveUpdateData) {\r\n await servicesSupportsAjax.deleteProfessionalReferral({\r\n token: $.session.Token,\r\n professionalReferralId: saveUpdateData.professionalReferralId,\r\n });\r\n\r\n table.deleteRow(`pr${saveUpdateData.professionalReferralId}`);\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n }\r\n //-- Markup ---------\r\n function toggleProfessionalReferralDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.professionalReferralPopup .error');\r\n const doneBtn = document.querySelector('.professionalReferralPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showAddProfessionalReferralPopup(popupData, isNew, fromAssessment, charLimits) {\r\n if (!dropdownData) {\r\n dropdownData = planData.getDropdownData();\r\n }\r\n\r\n let hasInitialErros;\r\n\r\n const saveUpdateData = {\r\n assessmentAreaId: !popupData.assessmentAreaId ? '' : popupData.assessmentAreaId,\r\n newOrExisting: !popupData.newOrExisting ? '' : popupData.newOrExisting,\r\n whoSupports: !popupData.whoSupports ? '' : popupData.whoSupports,\r\n reasonForReferral: !popupData.reasonForReferral ? '' : popupData.reasonForReferral,\r\n rowOrder: !popupData.rowOrder ? '' : popupData.rowOrder,\r\n };\r\n\r\n if (!isNew) saveUpdateData.professionalReferralId = popupData.professionalReferralId;\r\n\r\n // Popup\r\n const professionalReferralPopup = POPUP.build({\r\n header: isNew ? 'Add Professional Referral' : 'Edit Professional Referral',\r\n classNames: 'professionalReferralPopup',\r\n hideX: true,\r\n });\r\n\r\n // Asessment Area\r\n const assessmentAreaDropdown = dropdown.build({\r\n dropdownId: 'assessmentAreaDropdownAS',\r\n label: '*Assessment Area',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.assessmentAreaId = selectedOption.value;\r\n if (saveUpdateData.assessmentAreaId === '' || saveUpdateData.assessmentAreaId === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n } else {\r\n assessmentAreaDropdown.classList.remove('error');\r\n }\r\n\r\n toggleProfessionalReferralDoneBtn();\r\n },\r\n });\r\n if (fromAssessment) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n }\r\n // New Or Existing\r\n const newOrExistingDropdown = dropdown.build({\r\n dropdownId: 'newOrExistingDropdown',\r\n label: '*New or Existing',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.newOrExisting = selectedOption.value;\r\n if (saveUpdateData.newOrExisting === '' || saveUpdateData.newOrExisting === '%') {\r\n newOrExistingDropdown.classList.add('error');\r\n } else {\r\n newOrExistingDropdown.classList.remove('error');\r\n }\r\n toggleProfessionalReferralDoneBtn();\r\n },\r\n });\r\n // Who Supports\r\n const whoSupportsDropdown = dropdown.build({\r\n label: '*Who Supports',\r\n dropdownId: 'whoSupportsDropdown',\r\n readonly: isReadOnly,\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.whoSupports = selectedOption.value;\r\n\r\n if (saveUpdateData.whoSupports === '') {\r\n whoSupportsDropdown.classList.add('error');\r\n } else {\r\n whoSupportsDropdown.classList.remove('error');\r\n }\r\n\r\n toggleProfessionalReferralDoneBtn();\r\n },\r\n });\r\n\r\n // Reason For Referral\r\n const reasonForReferralInput = input.build({\r\n label: '*Reason For Referral',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.reasonForReferral,\r\n charLimit: charLimits.reasonForReferral,\r\n forceCharLimit: true,\r\n callback: e => {\r\n saveUpdateData.reasonForReferral = e.target.value;\r\n if (saveUpdateData.reasonForReferral === '') {\r\n reasonForReferralInput.classList.add('error');\r\n } else {\r\n reasonForReferralInput.classList.remove('error');\r\n }\r\n\r\n toggleProfessionalReferralDoneBtn();\r\n },\r\n });\r\n reasonForReferralInput.classList.add('reasonForReferral');\r\n reasonForReferralInput.addEventListener('keyup', e => {\r\n saveUpdateData.reasonForReferral = e.target.value;\r\n if (saveUpdateData.reasonForReferral === '') {\r\n reasonForReferralInput.classList.add('error');\r\n } else {\r\n reasonForReferralInput.classList.remove('error');\r\n }\r\n\r\n toggleProfessionalReferralDoneBtn();\r\n });\r\n // Buttons\r\n const doneBtn = button.build({\r\n text: isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n\r\n if (isNew) {\r\n if (fromAssessment) {\r\n saveUpdateData.rowOrder = 0;\r\n planID = plan.getCurrentPlanId();\r\n } else {\r\n const rowOrder = table.getRowCount('professionalReferralsTable');\r\n saveUpdateData.rowOrder = rowOrder + 1;\r\n }\r\n\r\n insertProfessionalReferral(saveUpdateData, fromAssessment);\r\n } else {\r\n updateProfessionalReferral(saveUpdateData);\r\n }\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(professionalReferralPopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(professionalReferralPopup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n const message = 'Do you want to delete this Professional Referral?';\r\n ISP.showDeleteWarning(professionalReferralPopup, message, () => {\r\n deleteProfessionalReferral(saveUpdateData);\r\n });\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (saveUpdateData.assessmentAreaId === '' || saveUpdateData.assessmentAreaId === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.newOrExisting === '' || saveUpdateData.newOrExisting === '%') {\r\n newOrExistingDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.whoSupports === '') {\r\n whoSupportsDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.reasonForReferral === '') {\r\n reasonForReferralInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n newOrExistingDropdown.classList.add('disabled');\r\n whoSupportsDropdown.classList.add('disabled');\r\n reasonForReferralInput.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n professionalReferralPopup.appendChild(assessmentAreaDropdown);\r\n professionalReferralPopup.appendChild(newOrExistingDropdown);\r\n professionalReferralPopup.appendChild(whoSupportsDropdown);\r\n professionalReferralPopup.appendChild(reasonForReferralInput);\r\n professionalReferralPopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, saveUpdateData.assessmentAreaId);\r\n populateNewOrExistingDropdown(newOrExistingDropdown, saveUpdateData.newOrExisting);\r\n planData.populateRelationshipDropdown(whoSupportsDropdown, saveUpdateData.whoSupports);\r\n\r\n POPUP.show(professionalReferralPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function addProfessionalReferralRow() {\r\n showAddProfessionalReferralPopup({}, true, false, charLimits);\r\n }\r\n function getProfessionalReferralsMarkup() {\r\n const professionalReferralsDiv = document.createElement('div');\r\n professionalReferralsDiv.classList.add('ispProfessionalReferrals');\r\n professionalReferralsDiv.classList.add('ispServicesSection');\r\n\r\n professionalReferralsTable = table.build({\r\n tableId: 'professionalReferralsTable',\r\n headline: `Professional Referrals: Medical professionals, therapists, etc.`,\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'New or Existing',\r\n 'Who Supports',\r\n 'Reason for Referral',\r\n // 'When/How Often',\r\n ],\r\n sortable: isSortable,\r\n onSortCallback: async sortData => {\r\n const supportId = sortData.row.id.replace('pr', '');\r\n sortData.newIndex = sortData.newIndex + 1;\r\n sortData.oldIndex = sortData.oldIndex + 1;\r\n await servicesSupportsAjax.updateServiceReferralRowOrder({\r\n token: $.session.Token,\r\n assessmentId: parseInt(planID),\r\n referralId: parseInt(supportId),\r\n newPos: parseInt(sortData.newIndex),\r\n oldPos: parseInt(sortData.oldIndex),\r\n });\r\n },\r\n });\r\n\r\n\r\n // Set the data type for each header, for sorting purposes\r\n let number = 0;\r\n const headers = professionalReferralsTable.querySelectorAll('.header div');\r\n if (headers.length > 4)\r\n number = 1;\r\n headers[0 + number].setAttribute('data-type', 'string'); // Assessment Area\r\n headers[1 + number].setAttribute('data-type', 'string'); // New or Existing\r\n headers[2 + number].setAttribute('data-type', 'string'); // Who Supports \r\n headers[3 + number].setAttribute('data-type', 'string'); // Reason for Referral\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(professionalReferralsTable);\r\n\r\n const addRowBtn = button.build({\r\n text: 'Add Referral',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addProfessionalReferralRow(),\r\n });\r\n if (isReadOnly) {\r\n addRowBtn.classList.add('disabled');\r\n }\r\n\r\n if (servicesSupportsData && servicesSupportsData.professionalReferral) {\r\n const tableData = servicesSupportsData.professionalReferral\r\n .sort((a, b) => {\r\n return parseInt(a.rowOrder) < parseInt(b.rowOrder)\r\n ? -1\r\n : parseInt(a.rowOrder) > parseInt(b.rowOrder)\r\n ? 1\r\n : 0;\r\n })\r\n .map(pr => {\r\n const { tableValues, prData } = mapProfessionalReferralDataForTable(pr);\r\n const rowId = `pr${prData.professionalReferralId}`;\r\n\r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: prData.assessmentAreaId }],\r\n onClick: () => {\r\n showAddProfessionalReferralPopup(prData, false, false, charLimits);\r\n },\r\n };\r\n });\r\n\r\n table.populate(professionalReferralsTable, tableData, isSortable);\r\n }\r\n\r\n professionalReferralsDiv.appendChild(professionalReferralsTable);\r\n professionalReferralsDiv.appendChild(addRowBtn);\r\n\r\n return professionalReferralsDiv;\r\n }\r\n\r\n // SS MODIFICATIONS\r\n //------------------------------------------------------\r\n async function insertSSModification(saveData) {\r\n modificationsId = await servicesSupportsAjax.insertSSModifications({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n ...saveData,\r\n });\r\n }\r\n async function updateSSModification(updateData) {\r\n await servicesSupportsAjax.updateSSModifications({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n modificationsId,\r\n ...updateData,\r\n });\r\n }\r\n async function deleteSSModification(ssId) {\r\n await servicesSupportsAjax.deleteProfessionalReferral({\r\n token: $.session.Token,\r\n modificationsId: ssId,\r\n });\r\n }\r\n //-- Markup ---------\r\n function getSSModificationsMarkup() {\r\n const { supportModification } = servicesSupportsData;\r\n\r\n const saveUpdateData = {\r\n medicalRate: supportModification[0]\r\n ? supportModification[0].medicalRate === 't'\r\n ? 't'\r\n : 'f'\r\n : 'f',\r\n behaviorRate: supportModification[0]\r\n ? supportModification[0].behaviorRate === 't'\r\n ? 't'\r\n : 'f'\r\n : 'f',\r\n icfRate: supportModification[0] ? (supportModification[0].icfRate === 't' ? 't' : 'f') : 'f',\r\n complexRate: supportModification[0]\r\n ? supportModification[0].complexRate === 't'\r\n ? 't'\r\n : 'f'\r\n : 'f',\r\n developmentalRate: supportModification[0]\r\n ? supportModification[0].developmentalRate === 't'\r\n ? 't'\r\n : 'f'\r\n : 'f',\r\n childIntensiveRate: supportModification[0]\r\n ? supportModification[0].childIntensiveRate === 't'\r\n ? 't'\r\n : 'f'\r\n : 'f',\r\n };\r\n\r\n const modificationDiv = document.createElement('div');\r\n modificationDiv.classList.add('ispModification');\r\n modificationDiv.classList.add('ispServicesSection');\r\n\r\n const heading = document.createElement('h3');\r\n heading.classList.add('subSectionHeading');\r\n heading.innerHTML = 'Modifications';\r\n modificationDiv.appendChild(heading);\r\n\r\n const tagline = document.createElement('p');\r\n tagline.classList.add('subSectionHeadingTagline');\r\n tagline.innerHTML = 'Does this person meet criteria for any add-ons? Select all that apply.';\r\n modificationDiv.appendChild(tagline);\r\n\r\n const checkboxGroup = document.createElement('div');\r\n checkboxGroup.classList.add('checkboxGroup');\r\n\r\n const medicalRateCheckbox = input.buildCheckbox({\r\n text: 'Medical Assistance',\r\n isChecked: saveUpdateData.medicalRate === 't' ? true : false,\r\n callback: e => {\r\n saveUpdateData.medicalRate = e.target.checked ? 't' : 'f';\r\n updateSSModification(saveUpdateData);\r\n },\r\n });\r\n const behaviorRateCheckbox = input.buildCheckbox({\r\n text: 'Behavior Support',\r\n isChecked: saveUpdateData.behaviorRate === 't' ? true : false,\r\n callback: e => {\r\n saveUpdateData.behaviorRate = e.target.checked ? 't' : 'f';\r\n updateSSModification(saveUpdateData);\r\n },\r\n });\r\n const icfRateCheckbox = input.buildCheckbox({\r\n text: 'Intermediate Care Facility',\r\n isChecked: saveUpdateData.icfRate === 't' ? true : false,\r\n callback: e => {\r\n saveUpdateData.icfRate = e.target.checked ? 't' : 'f';\r\n updateSSModification(saveUpdateData);\r\n },\r\n });\r\n const complexRateCheckbox = input.buildCheckbox({\r\n text: 'Complex Care',\r\n isChecked: saveUpdateData.complexRate === 't' ? true : false,\r\n callback: e => {\r\n saveUpdateData.complexRate = e.target.checked ? 't' : 'f';\r\n updateSSModification(saveUpdateData);\r\n },\r\n });\r\n const developmentalRateCheckbox = input.buildCheckbox({\r\n text: 'Developmental Center',\r\n isChecked: saveUpdateData.developmentalRate === 't' ? true : false,\r\n callback: e => {\r\n saveUpdateData.developmentalRate = e.target.checked ? 't' : 'f';\r\n updateSSModification(saveUpdateData);\r\n },\r\n });\r\n const childIntensiveRateCheckbox = input.buildCheckbox({\r\n text: `Children's Intensive Behavioral Support`,\r\n isChecked: saveUpdateData.childIntensiveRate === 't' ? true : false,\r\n callback: e => {\r\n saveUpdateData.childIntensiveRate = e.target.checked ? 't' : 'f';\r\n updateSSModification(saveUpdateData);\r\n },\r\n });\r\n\r\n if (isReadOnly) {\r\n const checkboxes = [\r\n medicalRateCheckbox,\r\n behaviorRateCheckbox,\r\n icfRateCheckbox,\r\n complexRateCheckbox,\r\n developmentalRateCheckbox,\r\n childIntensiveRateCheckbox,\r\n ];\r\n\r\n checkboxes.forEach(cb => {\r\n const cbi = cb.querySelector('input');\r\n cbi.setAttribute('disabled', true);\r\n });\r\n }\r\n\r\n checkboxGroup.appendChild(medicalRateCheckbox);\r\n checkboxGroup.appendChild(behaviorRateCheckbox);\r\n checkboxGroup.appendChild(icfRateCheckbox);\r\n checkboxGroup.appendChild(complexRateCheckbox);\r\n checkboxGroup.appendChild(developmentalRateCheckbox);\r\n checkboxGroup.appendChild(childIntensiveRateCheckbox);\r\n\r\n modificationDiv.appendChild(checkboxGroup);\r\n\r\n return modificationDiv;\r\n }\r\n\r\n // -- Manipulate MULTI SELECT Provider DROP DOWN DATA to display Vendors shared by all Selected Paid Supports\r\n // Code below (1.,2.,3.) is used to find the intersection (SQL) of the Vendor Lists associated with each selected Paid Supports\r\n // 1. From the original data (arr), remove the elements that don't have the minimum number\r\n function removeDuplicatesBasedOnCount(arr, prop, count) {\r\n let occurrences = countOccurrences(arr, prop);\r\n return arr.filter(obj => {\r\n let key = JSON.stringify(obj[prop]);\r\n return occurrences[key] >= count-1;\r\n });\r\n }\r\n // 2. IN original data (arr), count number of occurances of a property value \r\n function countOccurrences(arr, prop) {\r\n return arr.reduce((a, obj) => {\r\n let key = JSON.stringify(obj[prop]);\r\n if (!a[key]) {\r\n a[key] = 0;\r\n }\r\n a[key]++;\r\n return a;\r\n }, {});\r\n }\r\n // 3. Now have list of elements with minimumn number of occurences, but you just need one occurance for final Vendor DropDown display\r\n function removeDuplicateObjects(array, property) {\r\n const uniqueIds = [];\r\n\r\n const unique = array.filter(element => {\r\n const isDuplicate = uniqueIds.includes(element[property]);\r\n\r\n if (!isDuplicate) {\r\n uniqueIds.push(element[property]);\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return unique;\r\n }\r\n\r\n // MAIN\r\n //------------------------------------------------------\r\n function getMarkup() {\r\n const servicesSupportsDiv = document.createElement('div');\r\n servicesSupportsDiv.classList.add('servicesSupports');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Services And Supports';\r\n heading.classList.add('sectionHeading');\r\n servicesSupportsDiv.appendChild(heading);\r\n\r\n const paidSec = getPaidSupportsMarkup();\r\n const additionalSec = getAdditionalSupportsMarkup();\r\n const profRefSec = getProfessionalReferralsMarkup();\r\n const modsSec = getSSModificationsMarkup();\r\n\r\n servicesSupportsDiv.appendChild(paidSec);\r\n servicesSupportsDiv.appendChild(modsSec);\r\n servicesSupportsDiv.appendChild(additionalSec);\r\n servicesSupportsDiv.appendChild(profRefSec);\r\n\r\n return servicesSupportsDiv;\r\n }\r\n\r\n async function init({ planId, readOnly, data }) {\r\n planID = planId;\r\n isReadOnly = readOnly;\r\n servicesSupportsData = data;\r\n dropdownData = planData.getDropdownData();\r\n charLimits = planData.getISPCharacterLimits('servicesSupports');\r\n enableMultiEdit = false;\r\n\r\n if (!$.session.planUpdate) {\r\n isSortable = false;\r\n } else {\r\n isSortable = isReadOnly ? false : true;\r\n }\r\n\r\n hasPaidSupports =\r\n servicesSupportsData && servicesSupportsData.paidSupport.length > 0 ? true : false;\r\n\r\n setInitialSelectedVendorIds();\r\n setInitialFundingSourceNames();\r\n\r\n if (\r\n !servicesSupportsData ||\r\n !servicesSupportsData.supportModification[0] ||\r\n !servicesSupportsData.supportModification[0].modificationsId\r\n ) {\r\n await insertSSModification({\r\n medicalRate: 'f',\r\n behaviorRate: 'f',\r\n icfRate: 'f',\r\n complexRate: 'f',\r\n developmentalRate: 'f',\r\n childIntensiveRate: 'f',\r\n });\r\n } else {\r\n modificationsId = servicesSupportsData.supportModification[0].modificationsId;\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n getMarkup,\r\n getNumberOfPaidSupports,\r\n getNumberOfAdditionalSupports,\r\n getNumberOfProfessionalReferrals,\r\n getHasPaidSupports,\r\n getSelectedVendors,\r\n getSelectedVendorIds,\r\n getSelectedFudningSourceNames,\r\n getFundingSourceById,\r\n showAddPaidSupportPopup,\r\n showAddAdditionalSupportPopup,\r\n showAddProfessionalReferralPopup,\r\n refreshDropdownData,\r\n };\r\n})();\r\n","const servicesSupportsAjax = (() => {\r\n // GET\r\n //------------------------------------\r\n async function getServicesAndSupports(retrieveData) {\r\n // string token, anywAssessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServicesAndSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getServicesAndSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // ADD PAID SUPPORT Popup -- Vendors/Providers DDL\r\n async function getPaidSupportsVendors(fundingSourceName, serviceName) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPaidSupportsVendors/',\r\n data: JSON.stringify({\r\n fundingSourceName: fundingSourceName,\r\n serviceName: serviceName,\r\n areInSalesForce: $.session.areInSalesForce,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // INSERT\r\n //------------------------------------\r\n async function insertSSModifications(retrieveData) {\r\n // token, anywAssessmentId, medicalRate, behaviorRate, icfRate,\r\n // complexRate, developmentalRate, childIntensiveRate\r\n\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertSSModifications/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertSSModificationsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertProfessionalReferral(retrieveData) {\r\n // string token, anywAssessmentId, assessmentAreaId,\r\n // newOrExisting, whoSupports, reasonForReferral, rowOrder\r\n\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n if (retrieveData.assessmentAreaId !== '') {\r\n retrieveData.assessmentAreaId = parseInt(retrieveData.assessmentAreaId);\r\n }\r\n if (retrieveData.rowOrder !== '') {\r\n retrieveData.rowOrder = parseInt(retrieveData.rowOrder);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertProfessionalReferral/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertProfessionalReferralResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertAdditionalSupports(retrieveData) {\r\n // string token, anywAssessmentId, assessmentAreaId, whoSupports,\r\n // whatSupportLooksLike, howOftenValue, howOftenFrequency, howOftenText, rowOrder\r\n\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n if (retrieveData.assessmentAreaId !== '') {\r\n retrieveData.assessmentAreaId = parseInt(retrieveData.assessmentAreaId);\r\n }\r\n if (retrieveData.howOftenFrequency !== '') {\r\n retrieveData.howOftenFrequency = parseInt(retrieveData.howOftenFrequency);\r\n }\r\n if (retrieveData.rowOrder !== '') {\r\n retrieveData.rowOrder = parseInt(retrieveData.rowOrder);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertAdditionalSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertAdditionalSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPaidSupports(retrieveData) {\r\n // token, anywAssessmentId, providerId, assessmentAreaId,\r\n // serviceNameId, scopeOfService, howOftenValue, howOftenFrequency,\r\n // howOftenText, beginDate, endDate, fundingSource, fundingSourceText, rowOrder\r\n // serviceNameOther\r\n\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n if (retrieveData.providerId !== '') {\r\n retrieveData.providerId = parseInt(retrieveData.providerId);\r\n }\r\n if (retrieveData.assessmentAreaId !== '') {\r\n retrieveData.assessmentAreaId = parseInt(retrieveData.assessmentAreaId);\r\n }\r\n if (retrieveData.serviceNameId !== '') {\r\n retrieveData.serviceNameId = parseInt(retrieveData.serviceNameId);\r\n }\r\n if (retrieveData.howOftenFrequency !== '') {\r\n retrieveData.howOftenFrequency = parseInt(retrieveData.howOftenFrequency);\r\n }\r\n if (retrieveData.fundingSource !== '') {\r\n retrieveData.fundingSource = parseInt(retrieveData.fundingSource);\r\n }\r\n if (retrieveData.rowOrder !== '') {\r\n retrieveData.rowOrder = parseInt(retrieveData.rowOrder);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPaidSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPaidSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // UPDATE\r\n //------------------------------------\r\n async function updateSSModifications(retrieveData) {\r\n // token, modificationsId, anywAssessmentId, medicalRate, behaviorRate, icfRate,\r\n // complexRate, developmentalRate, childIntensiveRate\r\n\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n if (retrieveData.modificationsId !== '') {\r\n retrieveData.modificationsId = parseInt(retrieveData.modificationsId);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateSSModifications/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateSSModificationsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateProfessionalReferral(retrieveData) {\r\n // string token, professionalReferralId, anywAssessmentId,\r\n // assessmentAreaId, newOrExisting, whoSupports, reasonForReferral\r\n\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n if (retrieveData.assessmentAreaId !== '') {\r\n retrieveData.assessmentAreaId = parseInt(retrieveData.assessmentAreaId);\r\n }\r\n if (retrieveData.professionalReferralId !== '') {\r\n retrieveData.professionalReferralId = parseInt(retrieveData.professionalReferralId);\r\n }\r\n if (retrieveData.rowOrder !== '') {\r\n retrieveData.rowOrder = parseInt(retrieveData.rowOrder);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateProfessionalReferral/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateProfessionalReferralResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateAdditionalSupports(retrieveData) {\r\n // token, additionalSupportsId, anywAssessmentId, assessmentAreaId,\r\n // whoSupports, whatSupportLooksLike, howOftenValue, howOftenFrequency, howOftenText\r\n\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n if (retrieveData.assessmentAreaId !== '') {\r\n retrieveData.assessmentAreaId = parseInt(retrieveData.assessmentAreaId);\r\n }\r\n if (retrieveData.additionalSupportsId !== '') {\r\n retrieveData.additionalSupportsId = parseInt(retrieveData.additionalSupportsId);\r\n }\r\n if (retrieveData.howOftenFrequency !== '') {\r\n retrieveData.howOftenFrequency = parseInt(retrieveData.howOftenFrequency);\r\n }\r\n if (retrieveData.rowOrder !== '') {\r\n retrieveData.rowOrder = parseInt(retrieveData.rowOrder);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAdditionalSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateAdditionalSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePaidSupports(retrieveData) {\r\n // token, paidSupportsId, anywAssessmentId, providerId,\r\n // assessmentAreaId, serviceNameId, scopeOfService, howOftenValue,\r\n // howOftenFrequency, howOftenText, beginDate, endDate,\r\n // fundingSource, fundingSourceText, serviceNameOther\r\n\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n if (retrieveData.paidSupportsId !== '') {\r\n retrieveData.paidSupportsId = parseInt(retrieveData.paidSupportsId);\r\n }\r\n if (retrieveData.assessmentAreaId !== '') {\r\n retrieveData.assessmentAreaId = parseInt(retrieveData.assessmentAreaId);\r\n }\r\n if (retrieveData.providerId !== '') {\r\n retrieveData.providerId = parseInt(retrieveData.providerId);\r\n }\r\n if (retrieveData.serviceNameId !== '') {\r\n retrieveData.serviceNameId = parseInt(retrieveData.serviceNameId);\r\n }\r\n if (retrieveData.howOftenFrequency !== '') {\r\n retrieveData.howOftenFrequency = parseInt(retrieveData.howOftenFrequency);\r\n }\r\n if (retrieveData.fundingSource !== '') {\r\n retrieveData.fundingSource = parseInt(retrieveData.fundingSource);\r\n }\r\n if (retrieveData.rowOrder !== '') {\r\n retrieveData.rowOrder = parseInt(retrieveData.rowOrder);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePaidSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePaidSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateMultiPaidSupports(retrieveData) {\r\n if (retrieveData.providerId !== '') {\r\n retrieveData.providerId = parseInt(retrieveData.providerId);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateMultiPaidSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateMultiPaidSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n // row re-order\r\n //------------------\r\n async function updatePaidSupportsRowOrder(retrieveData) {\r\n // string token, long assessmentId, long supportId, int newPos, int oldPos\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePaidSupportsRowOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePaidSupportsRowOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateAdditionalSupportsRowOrder(retrieveData) {\r\n // string token, long assessmentId, long addSupportId, int newPos, int oldPos\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAdditionalSupportsRowOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateAdditionalSupportsRowOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateServiceReferralRowOrder(retrieveData) {\r\n // string token, long assessmentId, long refrerralId, int newPos, int oldPos\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateServiceReferralRowOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateServiceReferralRowOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // DELETE\r\n //------------------------------------\r\n async function deleteSSModifications(retrieveData) {\r\n // string token, string modificationsId\r\n\r\n retrieveData.modificationsId = parseInt(retrieveData.modificationsId);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteSSModifications/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deleteSSModificationsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deleteProfessionalReferral(retrieveData) {\r\n // string token, string professionalReferralId\r\n\r\n retrieveData.professionalReferralId = parseInt(retrieveData.professionalReferralId);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteProfessionalReferral/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deleteProfessionalReferralResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deleteAdditionalSupports(retrieveData) {\r\n // string token, long additionalSupportsId\r\n\r\n retrieveData.additionalSupportsId = parseInt(retrieveData.additionalSupportsId);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteAdditionalSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deleteAdditionalSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deletePaidSupports(retrieveData) {\r\n // string token, long paidSupportsId\r\n\r\n retrieveData.paidSupportsId = parseInt(retrieveData.paidSupportsId);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePaidSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePaidSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getServicesAndSupports,\r\n getPaidSupportsVendors,\r\n insertSSModifications,\r\n insertAdditionalSupports,\r\n insertProfessionalReferral,\r\n insertPaidSupports,\r\n updatePaidSupports,\r\n updateProfessionalReferral,\r\n updateSSModifications,\r\n updateAdditionalSupports,\r\n updatePaidSupportsRowOrder,\r\n updateServiceReferralRowOrder,\r\n updateAdditionalSupportsRowOrder,\r\n updateMultiPaidSupports,\r\n deleteProfessionalReferral,\r\n deleteAdditionalSupports,\r\n deleteSSModifications,\r\n deletePaidSupports,\r\n };\r\n})();\r\n","const planSummary = (function () {\r\n let isReadOnly;\r\n let isSortable;\r\n let planId; // aka: assessmentId\r\n let charLimits;\r\n // data\r\n let summaryData;\r\n let dropdownData;\r\n let additionalSummaryData;\r\n // data map\r\n let sectionIdMap = {};\r\n let sectionOrderMap = {};\r\n let questionIdMap = {};\r\n let questionSetIdMap = {};\r\n let tablesToHide = {};\r\n // Summary additional questions\r\n let amountOfTimeQuestion;\r\n let backupPlanQuestion;\r\n let hasPaidSupports;\r\n // Selected Vendors => Risks/WhoResponsible\r\n let selectedVendors = {};\r\n\r\n // UTILS\r\n //----------------------------------\r\n function refreshDropdownData(newDropdownData) {\r\n dropdownData = newDropdownData;\r\n }\r\n function mapSummaryData(data) {\r\n if (!data) return [];\r\n\r\n return data.reduce(\r\n (acc, val) => {\r\n let dataName;\r\n const questionText = val.questionText;\r\n\r\n if (questionText.includes('Important')) {\r\n dataName = 'importantTableData';\r\n } else if (\r\n questionText.includes('Skills') ||\r\n questionText.includes('Best way to connect') ||\r\n questionText.includes('Place on path to')\r\n ) {\r\n dataName = 'skillsTableData';\r\n } else {\r\n dataName = 'risksTableData';\r\n }\r\n\r\n const sectionId = val.sectionId;\r\n const sectionTitle = val.sectionTitle;\r\n const sectionOrder = val.sectionOrder;\r\n const row = val.answerRow;\r\n const answer = val.answer;\r\n const answerId = val.answerId;\r\n const answerStyle = val.answerStyle;\r\n const questionId = val.questionId;\r\n const questionSetId = val.questionSetId;\r\n\r\n if (!acc[dataName][sectionTitle]) acc[dataName][sectionTitle] = {};\r\n if (!acc[dataName][sectionTitle][row]) acc[dataName][sectionTitle][row] = {};\r\n\r\n let questionCol;\r\n\r\n if (questionText.includes('Important')) {\r\n questionCol = questionText.includes('Important To') ? 'importantTo' : 'importantFor';\r\n } else {\r\n questionCol = questionText.includes('Best way to connect with the person')\r\n ? 'communication'\r\n : questionText.includes('Place on path to')\r\n ? 'dailyLife'\r\n : questionText.includes('Skills')\r\n ? 'skillAbility'\r\n : questionText.includes('What is the risk, what it looks like')\r\n ? 'whatIsRisk'\r\n : questionText.includes('What support must look like')\r\n ? 'whatSupportLooksLike'\r\n : questionText.includes('Does this risk require supervision')\r\n ? 'riskSupervision'\r\n : 'whoResponsible';\r\n }\r\n\r\n acc[dataName][sectionTitle][row][questionCol] = {\r\n answer,\r\n answerId,\r\n answerStyle,\r\n questionId,\r\n questionSetId,\r\n };\r\n\r\n // Section Order Map\r\n if (!sectionOrderMap[sectionOrder]) {\r\n sectionOrderMap[sectionOrder] = sectionTitle;\r\n }\r\n\r\n // Section Id Map\r\n if (!sectionIdMap[sectionTitle]) {\r\n sectionIdMap[sectionTitle] = sectionId;\r\n }\r\n\r\n // Question ID Map\r\n if (!questionIdMap[dataName]) {\r\n questionIdMap[dataName] = {};\r\n }\r\n if (!questionIdMap[dataName][sectionTitle]) {\r\n questionIdMap[dataName][sectionTitle] = {};\r\n }\r\n if (!questionIdMap[dataName][sectionTitle][questionCol]) {\r\n questionIdMap[dataName][sectionTitle][questionCol] = questionId;\r\n }\r\n // QuestionSet ID Map\r\n if (!questionSetIdMap[dataName]) {\r\n questionSetIdMap[dataName] = {};\r\n }\r\n if (!questionSetIdMap[dataName][sectionTitle]) {\r\n questionSetIdMap[dataName][sectionTitle] = questionSetId;\r\n }\r\n\r\n return acc;\r\n },\r\n {\r\n importantTableData: {},\r\n skillsTableData: {},\r\n risksTableData: {},\r\n },\r\n );\r\n }\r\n async function deleteTableRow(questionSetId, rowsToDelete, rowId, dataSection, section) {\r\n await assessmentAjax.deleteAssessmentGridRowAnswers({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n assessmentQuestionSetId: questionSetId,\r\n rowsToDelete: [rowsToDelete],\r\n });\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n summaryData = mapSummaryData(SummaryData);\r\n\r\n const rowToDelete = document.getElementById(rowId);\r\n const tableBody = rowToDelete.parentNode;\r\n\r\n table.deleteRow(rowId);\r\n\r\n //* FOR RE-ORDERING ROWS ON DELETE\r\n const rowsLeftOver = [...tableBody.querySelectorAll('.table__row')];\r\n rowsLeftOver.forEach(async (row, i) => {\r\n const rowIdText = row.id.replace(/[0-9]/g, '');\r\n const order = parseInt(row.id.replaceAll(/\\D+/g, ''));\r\n // check row for gap in order\r\n if (order !== i + 1) {\r\n row.id = `${rowIdText}${i + 1}`;\r\n }\r\n // if no gap do nothing\r\n });\r\n }\r\n function updateRowOrder(evt) {\r\n const newPos = evt.newIndex + 1;\r\n const oldPos = evt.oldIndex + 1;\r\n\r\n assessmentAjax.updateAssessmentAnswerRowOrder({\r\n token: $.session.Token,\r\n assessmentId: parseInt(planId),\r\n questionSetId: parseInt(evt.row.dataset.questionsetid),\r\n answerIds: evt.row.dataset.answerids,\r\n newPos: parseInt(newPos),\r\n oldPos: parseInt(oldPos),\r\n });\r\n\r\n const tableBody = evt.row.parentNode;\r\n const rowsLeftOver = [...tableBody.querySelectorAll('.table__row')];\r\n rowsLeftOver.forEach((row, i) => {\r\n const rowIdText = row.id.replace(/[0-9]/g, '');\r\n const order = parseInt(row.id.replaceAll(/\\D+/g, ''));\r\n // check row for gap in order\r\n if (order !== i + 1) {\r\n // update row id\r\n row.id = `${rowIdText}${i + 1}`; //\r\n }\r\n // if no gap do nothing\r\n });\r\n }\r\n function getSelectedVendors() {\r\n return Object.keys(selectedVendors);\r\n }\r\n\r\n // DROPDOWNS\r\n //----------------------------------\r\n //-- populate -------\r\n function populateAssessmentAreaDropdown(dropdownEle, defaultValue) {\r\n const a = assessment.getApplicableSections();\r\n\r\n const data = dropdownData.assessmentAreas\r\n .filter(dd => a[dd.assessmentAreaId])\r\n .map(dd => {\r\n return {\r\n value: dd.assessmentArea,\r\n text: dd.assessmentArea,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateBestWayToConnectDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.communicationType.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateDailyLifeDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.dailyLifeDropdownType.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateLevelsOfSupervisionDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.levelsOfSupervision.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n //-- map id to name -------\r\n function getLevelOfSupervisionById(id) {\r\n const filteredData = dropdownData.levelsOfSupervision.filter(dd => dd.value === id);\r\n return filteredData.length > 0 ? filteredData[0].text : '';\r\n }\r\n function getCommicationById(id) {\r\n const filteredData = dropdownData.communicationType.filter(dd => dd.value === id);\r\n return filteredData.length > 0 ? filteredData[0].text : '';\r\n }\r\n function getDailyLifeById(id) {\r\n const filteredData = dropdownData.dailyLifeDropdownType.filter(dd => dd.value === id);\r\n return filteredData.length > 0 ? filteredData[0].text : '';\r\n }\r\n\r\n // IMPORTANT TO/FOR TABLES\r\n //--------------------------------------------------------------------\r\n async function addImportantTableRow(data) {\r\n const sectionTitle = data.sectionTitle;\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const row = data.row;\r\n const importantTo = data.importantTo.answer;\r\n const importantFor = data.importantFor.answer;\r\n const questionSetId = data.questionSetId;\r\n const rowId = `planImportantTable${secTitle}${row}`;\r\n\r\n table.addRows(\r\n `planImportantTable${secTitle}`,\r\n [\r\n {\r\n id: rowId,\r\n values: [sectionTitle, importantTo, importantFor],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: `${data.importantTo.answerId}|${data.importantFor.answerId}`,\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planImportantTable${secTitle}`, '');\r\n showImportantTablePopup(\r\n {\r\n ...data,\r\n row: rowOrderFromID,\r\n },\r\n false,\r\n );\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n summaryData = mapSummaryData(SummaryData);\r\n }\r\n async function updateImportantTableRow(data) {\r\n const sectionTitle = data.sectionTitle;\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const row = data.row;\r\n const importantTo = data.importantTo.answer;\r\n const importantFor = data.importantFor.answer;\r\n const questionSetId = data.questionSetId;\r\n const rowId = `planImportantTable${secTitle}${row}`;\r\n\r\n table.updateRows(\r\n `planImportantTable${secTitle}`,\r\n [\r\n {\r\n id: rowId,\r\n values: [sectionTitle, importantTo, importantFor],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: `${data.importantTo.answerId}|${data.importantFor.answerId}`,\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planImportantTable${secTitle}`, '');\r\n showImportantTablePopup(\r\n {\r\n ...data,\r\n row: rowOrderFromID,\r\n },\r\n false,\r\n );\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n summaryData = mapSummaryData(SummaryData);\r\n }\r\n // markup\r\n //------------------\r\n function toggleImportantDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.importantPopup .error');\r\n const doneBtn = document.querySelector('.importantPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showImportantTablePopup(popupData, isNew) {\r\n let hasInitialErros;\r\n\r\n let sectionTitle = popupData.sectionTitle ? popupData.sectionTitle : '';\r\n let importantTo = popupData.importantTo ? popupData.importantTo.answer : '';\r\n let importantFor = popupData.importantFor ? popupData.importantFor.answer : '';\r\n let row = popupData.row;\r\n\r\n let importantToAnswerId, importantForAnswerId;\r\n\r\n if (!isNew) {\r\n importantToAnswerId = popupData.importantTo.answerId;\r\n importantForAnswerId = popupData.importantFor.answerId;\r\n }\r\n\r\n const importantPopup = POPUP.build({\r\n header: isNew ? 'Add Important To/For' : 'Edit Important To/For',\r\n classNames: 'importantPopup',\r\n hideX: true,\r\n });\r\n\r\n // Assessment Area\r\n const assessmentAreaDropdown = dropdown.build({\r\n dropdownId: 'assessmentAreaDropdownITF',\r\n label: '*Assessment Area',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n sectionTitle = selectedOption.value;\r\n\r\n if (sectionTitle === '' || sectionTitle === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n } else {\r\n assessmentAreaDropdown.classList.remove('error');\r\n }\r\n\r\n toggleImportantDoneBtn();\r\n },\r\n });\r\n if (!isNew) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n }\r\n // Important To\r\n const importantToTextarea = input.build({\r\n label: '*Important To',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: importantTo,\r\n charLimit: charLimits.importantTo,\r\n forceCharLimit: true,\r\n callback: e => {\r\n importantTo = e.target.value;\r\n\r\n if (importantTo === '' && importantFor === '') {\r\n importantToTextarea.classList.add('error');\r\n importantForTextarea.classList.add('error');\r\n } else {\r\n importantToTextarea.classList.remove('error');\r\n importantForTextarea.classList.remove('error');\r\n }\r\n\r\n toggleImportantDoneBtn();\r\n },\r\n });\r\n importantToTextarea.classList.add('importantTo');\r\n // Important For\r\n const importantForTextarea = input.build({\r\n label: '*Important For',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: importantFor,\r\n charLimit: charLimits.importantFor,\r\n forceCharLimit: true,\r\n callback: e => {\r\n importantFor = e.target.value;\r\n\r\n if (importantTo === '' && importantFor === '') {\r\n importantToTextarea.classList.add('error');\r\n importantForTextarea.classList.add('error');\r\n } else {\r\n importantToTextarea.classList.remove('error');\r\n importantForTextarea.classList.remove('error');\r\n }\r\n\r\n toggleImportantDoneBtn();\r\n },\r\n });\r\n importantForTextarea.classList.add('importantFor');\r\n\r\n const doneBtn = button.build({\r\n text: isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n let questionSetId = questionSetIdMap['importantTableData'][sectionTitle];\r\n let upateSingleEmptyRowInsteadOfAddingNew = false;\r\n\r\n const tableDataKeys = Object.keys(summaryData.importantTableData[sectionTitle]);\r\n if (isNew && tableDataKeys.length === 1) {\r\n const rowData = summaryData.importantTableData[sectionTitle]['1'];\r\n const impToAnswer = rowData['importantTo'].answer;\r\n const impForAnswer = rowData['importantFor'].answer;\r\n\r\n if (!impToAnswer && !impForAnswer) {\r\n upateSingleEmptyRowInsteadOfAddingNew = true;\r\n\r\n importantToAnswerId = rowData['importantTo'].answerId;\r\n importantForAnswerId = rowData['importantFor'].answerId;\r\n rowData['importantTo'].answer = importantTo;\r\n rowData['importantFor'].answer = importantFor;\r\n row = 1;\r\n }\r\n }\r\n\r\n if (isNew && !upateSingleEmptyRowInsteadOfAddingNew) {\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n let rowOrder = table.getRowCount(`planImportantTable${secTitle}`);\r\n const questionIds = questionIdMap['importantTableData'][sectionTitle];\r\n rowOrder = rowOrder + 1;\r\n const answerIds = await summaryAjax.insertAssessmentSummaryAnswers({\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [rowOrder, rowOrder],\r\n anywQuestionIds: [\r\n parseInt(questionIds.importantTo),\r\n parseInt(questionIds.importantFor),\r\n ],\r\n answers: [\r\n UTIL.removeUnsavableNoteText(importantTo),\r\n UTIL.removeUnsavableNoteText(importantFor),\r\n ],\r\n });\r\n\r\n await addImportantTableRow({\r\n sectionTitle,\r\n row: rowOrder,\r\n questionSetId,\r\n importantTo: {\r\n answer: importantTo,\r\n answerId: answerIds[questionIds.importantTo],\r\n },\r\n importantFor: {\r\n answer: importantFor,\r\n answerId: answerIds[questionIds.importantFor],\r\n },\r\n });\r\n } else {\r\n await summaryAjax.updateAssessmentSummaryAnswers({\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [row, row],\r\n anywAnswerIds: [parseInt(importantToAnswerId), parseInt(importantForAnswerId)],\r\n answers: [\r\n UTIL.removeUnsavableNoteText(importantTo),\r\n UTIL.removeUnsavableNoteText(importantFor),\r\n ],\r\n });\r\n\r\n await updateImportantTableRow({\r\n sectionTitle,\r\n row,\r\n questionSetId,\r\n importantTo: {\r\n answer: importantTo,\r\n answerId: importantToAnswerId,\r\n },\r\n importantFor: {\r\n answer: importantFor,\r\n answerId: importantForAnswerId,\r\n },\r\n });\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(importantPopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(importantPopup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n const message = 'Do you want to delete this entry?';\r\n ISP.showDeleteWarning(importantPopup, message, async () => {\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n let rowCount = table.getRowCount(`planImportantTable${secTitle}`);\r\n const setId = questionSetIdMap['importantTableData'][sectionTitle];\r\n\r\n if (rowCount > 1) {\r\n deleteTableRow(setId, row, `planImportantTable${secTitle}${row}`);\r\n } else {\r\n importantTo = '';\r\n importantFor = '';\r\n await summaryAjax.updateAssessmentSummaryAnswers({\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [row, row],\r\n anywAnswerIds: [parseInt(importantToAnswerId), parseInt(importantForAnswerId)],\r\n answers: [importantTo, importantFor],\r\n });\r\n\r\n updateImportantTableRow({\r\n sectionTitle,\r\n row,\r\n questionSetId: setId,\r\n importantTo: {\r\n answer: importantTo,\r\n answerId: importantToAnswerId,\r\n },\r\n importantFor: {\r\n answer: importantFor,\r\n answerId: importantForAnswerId,\r\n },\r\n });\r\n }\r\n });\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (sectionTitle === '' || sectionTitle === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (importantTo === '' && importantFor === '') {\r\n importantToTextarea.classList.add('error');\r\n importantForTextarea.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n importantToTextarea.classList.add('disabled');\r\n importantForTextarea.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n importantPopup.appendChild(assessmentAreaDropdown);\r\n importantPopup.appendChild(importantToTextarea);\r\n importantPopup.appendChild(importantForTextarea);\r\n importantPopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, sectionTitle);\r\n\r\n POPUP.show(importantPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function buildImportTableBySection(data) {\r\n let tableData = [];\r\n\r\n const secTitle = Object.keys(data)[0].replaceAll(' ', '');\r\n\r\n const importantTable = table.build({\r\n tableId: `planImportantTable${secTitle}`,\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'Important To: What makes the person feel satisfied, content',\r\n 'Important For: Health, safety, valued member / social role',\r\n ],\r\n sortable: isSortable,\r\n onSortCallback: evt => {\r\n updateRowOrder(evt);\r\n },\r\n });\r\n\r\n Object.entries(data).forEach(([sectionTitle, rowData]) => {\r\n Object.entries(rowData).forEach(([rowId, val]) => {\r\n const importantTo = val.importantTo.answer;\r\n const importantFor = val.importantFor.answer;\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const questionSetId = val.importantFor.questionSetId;\r\n\r\n tableData.push({\r\n id: `planImportantTable${secTitle}${rowId}`,\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: `${val.importantTo.answerId}|${val.importantFor.answerId}`,\r\n },\r\n ],\r\n values: [sectionTitle, importantTo, importantFor],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planImportantTable${secTitle}`, '');\r\n showImportantTablePopup(\r\n {\r\n sectionTitle,\r\n row: rowOrderFromID,\r\n questionSetId,\r\n importantTo: {\r\n answer: importantTo,\r\n answerId: val.importantTo.answerId,\r\n },\r\n importantFor: {\r\n answer: importantFor,\r\n answerId: val.importantFor.answerId,\r\n },\r\n },\r\n false,\r\n );\r\n },\r\n });\r\n });\r\n });\r\n\r\n table.populate(importantTable, tableData, isSortable);\r\n\r\n return importantTable;\r\n }\r\n function getImportantTablesMarkup(importantTableData) {\r\n const importantDiv = document.createElement('div');\r\n importantDiv.classList.add('importantTablesWrap');\r\n\r\n const heading = document.createElement('h3');\r\n heading.innerHTML = 'Important To / Important For';\r\n importantDiv.appendChild(heading);\r\n\r\n const a = assessment.getApplicableSections();\r\n\r\n if (importantTableData) {\r\n Object.entries(sectionOrderMap).forEach(([key, val], index) => {\r\n if (a[sectionIdMap[val]]) {\r\n const tableData = importantTableData[val];\r\n const importantTable = buildImportTableBySection({ [val]: tableData });\r\n if (index === 0) importantTable.classList.add('main');\r\n importantDiv.appendChild(importantTable);\r\n }\r\n });\r\n }\r\n\r\n const addRowBtn = button.build({\r\n text: 'Add Important To/For',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => showImportantTablePopup({}, true),\r\n });\r\n if (isReadOnly) addRowBtn.classList.add('disabled');\r\n importantDiv.appendChild(addRowBtn);\r\n\r\n return importantDiv;\r\n }\r\n\r\n // SKILLS & ABILITIES TABLES\r\n //--------------------------------------------------------------------\r\n async function addSkillsTableRow(data) {\r\n const sectionTitle = data.sectionTitle;\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const skillAbility = data.skillAbility.answer;\r\n const questionSetId = data.questionSetId;\r\n const row = data.row;\r\n const answerIds = [data.skillAbility.answerId];\r\n const rowId = `planSkillsTable${secTitle}${row}`;\r\n\r\n let colText;\r\n\r\n const popupData = {\r\n sectionTitle,\r\n questionSetId,\r\n row,\r\n skillAbility: {\r\n answer: skillAbility,\r\n answerId: data.skillAbility.answerId,\r\n },\r\n };\r\n\r\n colText = skillAbility;\r\n\r\n table.addRows(\r\n `planSkillsTable${secTitle}`,\r\n [\r\n {\r\n id: rowId,\r\n values: [sectionTitle, colText],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: answerIds.join('|'),\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planSkillsTable${secTitle}`, '');\r\n showSkillsTablePopup(\r\n {\r\n ...popupData,\r\n row: rowOrderFromID,\r\n },\r\n false,\r\n );\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n summaryData = mapSummaryData(SummaryData);\r\n }\r\n async function updateSkillsTableRow(data) {\r\n const sectionTitle = data.sectionTitle;\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const skillAbility = data.skillAbility.answer;\r\n const questionSetId = data.questionSetId;\r\n const row = data.row;\r\n const answerIds = [data.skillAbility.answerId];\r\n const rowId = `planSkillsTable${secTitle}${row}`;\r\n let colText;\r\n\r\n const popupData = {\r\n sectionTitle,\r\n questionSetId,\r\n row,\r\n skillAbility: {\r\n answer: skillAbility,\r\n answerId: data.skillAbility.answerId,\r\n },\r\n };\r\n\r\n colText = skillAbility;\r\n\r\n table.updateRows(\r\n `planSkillsTable${secTitle}`,\r\n [\r\n {\r\n id: rowId,\r\n values: [sectionTitle, colText],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: answerIds.join('|'),\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planSkillsTable${secTitle}`, '');\r\n showSkillsTablePopup(\r\n {\r\n ...popupData,\r\n row: rowOrderFromID,\r\n },\r\n false,\r\n );\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n summaryData = mapSummaryData(SummaryData);\r\n }\r\n // markup\r\n //------------------\r\n function toggleSkillsDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.skillsPopup .error');\r\n const doneBtn = document.querySelector('.skillsPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showSkillsTablePopup(popupData, isNew) {\r\n let hasInitialErros;\r\n\r\n let sectionTitle = popupData.sectionTitle ? popupData.sectionTitle : '';\r\n let skillAbility = popupData.skillAbility ? popupData.skillAbility.answer : '';\r\n let row = popupData.row;\r\n\r\n let skillAbilityId;\r\n\r\n if (!isNew) {\r\n skillAbilityId = popupData.skillAbility.answerId;\r\n communicationId = popupData.communication ? popupData.communication.answerId : '';\r\n dailyLifeId = popupData.dailyLife ? popupData.dailyLife.answerId : '';\r\n }\r\n\r\n const skillsPopup = POPUP.build({\r\n header: isNew ? 'Add Skill/Ability' : 'Edit Skill/Ability',\r\n classNames: 'skillsPopup',\r\n hideX: true,\r\n });\r\n\r\n // Assessment Area Dropdown\r\n const assessmentAreaDropdown = dropdown.build({\r\n dropdownId: 'assessmentAreaDropdownSA',\r\n label: '*Assessment Area',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n sectionTitle = selectedOption.value;\r\n\r\n if (sectionTitle === '' || sectionTitle === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n } else {\r\n assessmentAreaDropdown.classList.remove('error');\r\n }\r\n\r\n toggleSkillsDoneBtn();\r\n },\r\n });\r\n if (!isNew) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n }\r\n // Text Input\r\n const defaultTextInput = input.build({\r\n label: '*What is this person good at?',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: skillAbility,\r\n charLimit: charLimits.skillsAndAbilities,\r\n forceCharLimit: true,\r\n callback: e => {\r\n skillAbility = e.target.value;\r\n\r\n if (skillAbility === '') {\r\n defaultTextInput.classList.add('error');\r\n } else {\r\n defaultTextInput.classList.remove('error');\r\n }\r\n\r\n toggleSkillsDoneBtn();\r\n },\r\n });\r\n defaultTextInput.classList.add('skillAbility');\r\n defaultTextInput.addEventListener('keyup', e => {\r\n skillAbility = e.target.value;\r\n\r\n if (skillAbility === '') {\r\n defaultTextInput.classList.add('error');\r\n } else {\r\n defaultTextInput.classList.remove('error');\r\n }\r\n\r\n toggleSkillsDoneBtn();\r\n });\r\n\r\n const doneBtn = button.build({\r\n text: isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n let questionSetId = questionSetIdMap['skillsTableData'][sectionTitle];\r\n let upateSingleEmptyRowInsteadOfAddingNew = false;\r\n\r\n const tableDataKeys = Object.keys(summaryData.skillsTableData[sectionTitle]);\r\n if (isNew && tableDataKeys.length === 1) {\r\n const rowData = summaryData.skillsTableData[sectionTitle]['1'];\r\n const skillAbilityAnswer = rowData['skillAbility'].answer;\r\n\r\n if (!skillAbilityAnswer) {\r\n upateSingleEmptyRowInsteadOfAddingNew = true;\r\n\r\n skillAbilityId = rowData['skillAbility'].answerId;\r\n rowData['skillAbility'].answer = skillAbility;\r\n\r\n row = 1;\r\n }\r\n }\r\n\r\n if (isNew && !upateSingleEmptyRowInsteadOfAddingNew) {\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n let rowOrder = table.getRowCount(`planSkillsTable${secTitle}`);\r\n const questionIds = questionIdMap['skillsTableData'][sectionTitle];\r\n rowOrder = rowOrder + 1;\r\n\r\n const retrieveData = {\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [rowOrder],\r\n anywQuestionIds: [parseInt(questionIds.skillAbility)],\r\n answers: [UTIL.removeUnsavableNoteText(skillAbility)],\r\n };\r\n\r\n const answerIds = await summaryAjax.insertAssessmentSummaryAnswers({\r\n ...retrieveData,\r\n });\r\n\r\n const popupData = {\r\n sectionTitle,\r\n row: rowOrder,\r\n questionSetId,\r\n skillAbility: {\r\n answer: skillAbility,\r\n answerId: answerIds[questionIds.skillAbility],\r\n },\r\n };\r\n\r\n await addSkillsTableRow({\r\n ...popupData,\r\n });\r\n } else {\r\n const retrieveData = {\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [row],\r\n anywAnswerIds: [parseInt(skillAbilityId)],\r\n answers: [UTIL.removeUnsavableNoteText(skillAbility)],\r\n };\r\n const popupData = {\r\n sectionTitle,\r\n questionSetId,\r\n row,\r\n skillAbility: {\r\n answer: skillAbility,\r\n answerId: skillAbilityId,\r\n },\r\n };\r\n\r\n await summaryAjax.updateAssessmentSummaryAnswers({\r\n ...retrieveData,\r\n });\r\n\r\n await updateSkillsTableRow({\r\n ...popupData,\r\n });\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(skillsPopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(skillsPopup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n const message = 'Do you want to delete this entry?';\r\n ISP.showDeleteWarning(skillsPopup, message, async () => {\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n let rowCount = table.getRowCount(`planSkillsTable${secTitle}`);\r\n const setId = questionSetIdMap['skillsTableData'][sectionTitle];\r\n\r\n if (rowCount > 1) {\r\n deleteTableRow(setId, row, `planSkillsTable${secTitle}${row}`);\r\n } else {\r\n skillAbility = '';\r\n\r\n const retrieveData = {\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [row],\r\n anywAnswerIds: [parseInt(skillAbilityId)],\r\n answers: [skillAbility],\r\n };\r\n const popupData = {\r\n sectionTitle,\r\n questionSetId: setId,\r\n row,\r\n skillAbility: {\r\n answer: skillAbility,\r\n answerId: skillAbilityId,\r\n },\r\n };\r\n\r\n await summaryAjax.updateAssessmentSummaryAnswers({\r\n ...retrieveData,\r\n });\r\n\r\n updateSkillsTableRow({\r\n ...popupData,\r\n });\r\n }\r\n });\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (sectionTitle === '' || sectionTitle === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (skillAbility === '') {\r\n defaultTextInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n defaultTextInput.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n skillsPopup.appendChild(assessmentAreaDropdown);\r\n skillsPopup.appendChild(defaultTextInput);\r\n skillsPopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, popupData.sectionTitle);\r\n\r\n POPUP.show(skillsPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function buildSkillsTableBySection(data) {\r\n let tableData = [];\r\n\r\n const secTitle = Object.keys(data)[0].replaceAll(' ', '');\r\n\r\n const skillsTable = table.build({\r\n tableId: `planSkillsTable${secTitle}`,\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'What is the person good at, what can they do on their own, what do they have to contribute',\r\n ],\r\n sortable: isSortable,\r\n onSortCallback: evt => {\r\n updateRowOrder(evt);\r\n },\r\n });\r\n\r\n Object.entries(data).forEach(([sectionTitle, rowData]) => {\r\n Object.entries(rowData).forEach(([rowId, val]) => {\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const skillAbility = val.skillAbility.answer;\r\n const questionSetId = val.skillAbility.questionSetId;\r\n let colText;\r\n\r\n const popupData = {\r\n sectionTitle,\r\n row: rowId,\r\n questionSetId,\r\n skillAbility: {\r\n answer: skillAbility,\r\n answerId: val.skillAbility.answerId,\r\n },\r\n };\r\n\r\n const answerIds = [val.skillAbility.answerId];\r\n\r\n colText = skillAbility;\r\n\r\n tableData.push({\r\n id: `planSkillsTable${secTitle}${rowId}`,\r\n values: [sectionTitle, colText],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: answerIds.join('|'),\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planSkillsTable${secTitle}`, '');\r\n showSkillsTablePopup(\r\n {\r\n ...popupData,\r\n row: rowOrderFromID,\r\n },\r\n false,\r\n );\r\n },\r\n });\r\n });\r\n });\r\n\r\n table.populate(skillsTable, tableData, isSortable);\r\n\r\n return skillsTable;\r\n }\r\n function getSkillsTablesMarkup(skillsTableData) {\r\n const skillsDiv = document.createElement('div');\r\n skillsDiv.classList.add('skillsTablesWrap');\r\n\r\n const heading = document.createElement('h3');\r\n heading.innerHTML = 'Skills & Abilities';\r\n skillsDiv.appendChild(heading);\r\n\r\n const a = assessment.getApplicableSections();\r\n\r\n if (skillsTableData) {\r\n Object.entries(sectionOrderMap).forEach(([key, val], index) => {\r\n if (a[sectionIdMap[val]]) {\r\n const tableData = skillsTableData[val];\r\n const skillsTable = buildSkillsTableBySection({ [val]: tableData });\r\n if (index === 0) skillsTable.classList.add('main');\r\n skillsDiv.appendChild(skillsTable);\r\n }\r\n });\r\n }\r\n\r\n const addRowBtn = button.build({\r\n text: 'Add Skill/Ability',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => showSkillsTablePopup({}, true),\r\n });\r\n if (isReadOnly) addRowBtn.classList.add('disabled');\r\n skillsDiv.appendChild(addRowBtn);\r\n\r\n //* Added Questions\r\n if (additionalSummaryData.bestWayToConnect === '%') {\r\n //TODO: have backend set default\r\n additionalSummaryData.bestWayToConnect = '1';\r\n summaryAjax.updateBestWayToConnect({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n bestWayId: '1',\r\n });\r\n }\r\n\r\n const questionsWrap = document.createElement('div');\r\n questionsWrap.classList.add('additionalQuestionWrap');\r\n // const bestWayToConnectDropdown = dropdown.build({\r\n // dropdownId: 'connectDropdown',\r\n // label: 'Best way to connect with the person',\r\n // style: 'secondary',\r\n // callback: async (e, selectedOption) => {\r\n // additionalSummaryData.bestWayToConnect = selectedOption.value;\r\n\r\n // if (additionalSummaryData.bestWayToConnect === '7') {\r\n // if (additionalSummaryData.moreDetail === '') {\r\n // otherTextInput.classList.add('error');\r\n // }\r\n // } else {\r\n // otherTextInput.classList.remove('error');\r\n // }\r\n\r\n // // update dropdown value to DB\r\n // await summaryAjax.updateBestWayToConnect({\r\n // token: $.session.Token,\r\n // anywAssessmentId: planId,\r\n // bestWayId: selectedOption.value,\r\n // });\r\n // },\r\n // });\r\n // const otherTextInput = input.build({\r\n // label: 'More Detail',\r\n // type: 'textarea',\r\n // style: 'secondary',\r\n // classNames: 'autosize',\r\n // value: additionalSummaryData.moreDetail,\r\n // charLimit: '1000',\r\n // forceCharLimit: true,\r\n // callback: async e => {\r\n // additionalSummaryData.moreDetail = e.target.value;\r\n\r\n // if (additionalSummaryData.bestWayToConnect === '7') {\r\n // if (additionalSummaryData.moreDetail === '') {\r\n // otherTextInput.classList.add('error');\r\n // } else {\r\n // otherTextInput.classList.remove('error');\r\n // }\r\n // }\r\n\r\n // await summaryAjax.updateMoreDetail({\r\n // token: $.session.Token,\r\n // anywAssessmentId: planId,\r\n // detail: e.target.value,\r\n // });\r\n // },\r\n // });\r\n const placeOnPathDropdown = dropdown.build({\r\n dropdownId: 'pathDropdown',\r\n label: 'Place on path to community employment',\r\n style: 'secondary',\r\n callback: async (e, selectedOption) => {\r\n additionalSummaryData.placeOnPath = selectedOption.value;\r\n\r\n await summaryAjax.updatePlaceOnPath({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n placeId: selectedOption.value,\r\n });\r\n },\r\n });\r\n\r\n // questionsWrap.appendChild(bestWayToConnectDropdown);\r\n // questionsWrap.appendChild(otherTextInput);\r\n questionsWrap.appendChild(placeOnPathDropdown);\r\n skillsDiv.appendChild(questionsWrap);\r\n\r\n if (isReadOnly) {\r\n // bestWayToConnectDropdown.classList.add('disabled');\r\n // otherTextInput.classList.add('disabled');\r\n placeOnPathDropdown.classList.add('disabled');\r\n }\r\n\r\n //* Required fields for added questions\r\n // if (additionalSummaryData.bestWayToConnect === '7') {\r\n // if (additionalSummaryData.moreDetail === '') {\r\n // otherTextInput.classList.add('error');\r\n // }\r\n // }\r\n\r\n // populateBestWayToConnectDropdown(\r\n // bestWayToConnectDropdown,\r\n // additionalSummaryData.bestWayToConnect,\r\n // );\r\n populateDailyLifeDropdown(placeOnPathDropdown, additionalSummaryData.placeOnPath);\r\n\r\n return skillsDiv;\r\n }\r\n\r\n // KNOWN & LIKELY RISKS TABLES\r\n //--------------------------------------------------------------------\r\n async function addRisksTableRow(data) {\r\n // Extracting values from data\r\n const sectionTitle = data.sectionTitle;\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const row = data.row;\r\n const riskSupervision = data.riskSupervision.answer;\r\n const whatIsRisk = data.whatIsRisk.answer;\r\n const whatSupportLooksLike = data.whatSupportLooksLike.answer;\r\n const whoResponsible = data.whoResponsible.answer;\r\n const whoResponsibleText = planData.getRelationshipNameById(whoResponsible);\r\n const levelOfSupervision = getLevelOfSupervisionById(riskSupervision);\r\n const questionSetId = data.questionSetId;\r\n const rowId = `planRisksTable${secTitle}${row}`;\r\n\r\n // Checking for errors\r\n const hasError = whatIsRisk && (!whatSupportLooksLike || !levelOfSupervision || !whoResponsible);\r\n\r\n // Incrementing selected vendors\r\n if (whoResponsible) {\r\n if (selectedVendors[whoResponsible]) {\r\n selectedVendors[whoResponsible] = selectedVendors[whoResponsible] + 1;\r\n } else {\r\n selectedVendors[whoResponsible] = 1;\r\n }\r\n }\r\n\r\n // Adding the row to the table\r\n table.addRows(\r\n `planRisksTable${secTitle}`,\r\n [\r\n {\r\n id: rowId,\r\n values: [\r\n sectionTitle,\r\n whatIsRisk,\r\n whatSupportLooksLike,\r\n levelOfSupervision,\r\n whoResponsibleText,\r\n ],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: `${data.whatIsRisk.answerId}|${data.whatSupportLooksLike.answerId}|${data.riskSupervision.answerId}|${data.whoResponsible.answerId}`,\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planRisksTable${secTitle}`, '');\r\n showRisksTablePopup(\r\n {\r\n ...data,\r\n row: rowOrderFromID,\r\n },\r\n false,\r\n false,\r\n );\r\n },\r\n onCopyClick: e => {\r\n if (isReadOnly) return;\r\n showRisksTablePopup(\r\n {\r\n sectionTitle,\r\n row: '',\r\n questionSetId,\r\n whatIsRisk: {\r\n answer: whatIsRisk,\r\n },\r\n whatSupportLooksLike: {\r\n answer: whatSupportLooksLike,\r\n },\r\n riskSupervision: {\r\n answer: riskSupervision,\r\n },\r\n whoResponsible: {\r\n answer: whoResponsible,\r\n },\r\n },\r\n true,\r\n true,\r\n );\r\n },\r\n // Add the hasError property to the row object\r\n hasError: hasError,\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n if (hasError) {\r\n planValidation.setSummaryRiskValidation(false);\r\n planValidation.alertCheckSummaryRisksValidation();\r\n } else {\r\n planValidation.setSummaryRiskValidation(true);\r\n planValidation.alertCheckSummaryRisksValidation();\r\n }\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n summaryData = mapSummaryData(SummaryData);\r\n}\r\n async function updateRisksTableRow(data, oldData) {\r\n // Extracting values from data\r\n const sectionTitle = data.sectionTitle;\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const row = data.row;\r\n const riskSupervision = data.riskSupervision.answer;\r\n const whatIsRisk = data.whatIsRisk.answer;\r\n const whatSupportLooksLike = data.whatSupportLooksLike.answer;\r\n const whoResponsible = data.whoResponsible.answer;\r\n const whoResponsibleText = planData.getRelationshipNameById(whoResponsible);\r\n const levelOfSupervision = getLevelOfSupervisionById(riskSupervision);\r\n const questionSetId = data.questionSetId;\r\n const rowId = `planRisksTable${secTitle}${row}`;\r\n\r\n // Checking for errors\r\n const hasError = whatIsRisk && (!whatSupportLooksLike || !levelOfSupervision || !whoResponsible);\r\n\r\n // Update selected vendors if responsible party changed\r\n if (Object.keys(oldData).length) {\r\n if (oldData.whoResponsible.answer !== whoResponsible) {\r\n // remove old\r\n if (oldData.whoResponsible.answer !== '') {\r\n if (selectedVendors[oldData.whoResponsible.answer] === 1) {\r\n delete selectedVendors[oldData.whoResponsible.answer];\r\n } else {\r\n selectedVendors[oldData.whoResponsible.answer] = selectedVendors[whoResponsible] - 1;\r\n }\r\n }\r\n // add new\r\n if (whoResponsible) {\r\n if (selectedVendors[whoResponsible]) {\r\n selectedVendors[whoResponsible] = selectedVendors[whoResponsible] + 1;\r\n } else {\r\n selectedVendors[whoResponsible] = 1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Updating the row in the table\r\n table.updateRows(\r\n `planRisksTable${secTitle}`,\r\n [\r\n {\r\n id: rowId,\r\n values: [\r\n sectionTitle,\r\n whatIsRisk,\r\n whatSupportLooksLike,\r\n levelOfSupervision,\r\n whoResponsibleText,\r\n ],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: `${data.whatIsRisk.answerId}|${data.whatSupportLooksLike.answerId}|${data.riskSupervision.answerId}|${data.whoResponsible.answerId}`,\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planRisksTable${secTitle}`, '');\r\n showRisksTablePopup(\r\n {\r\n ...data,\r\n row: rowOrderFromID,\r\n },\r\n false,\r\n false,\r\n );\r\n },\r\n onCopyClick: e => {\r\n if (isReadOnly) return;\r\n showRisksTablePopup(\r\n {\r\n sectionTitle,\r\n row: '',\r\n questionSetId,\r\n whatIsRisk: {\r\n answer: whatIsRisk,\r\n },\r\n whatSupportLooksLike: {\r\n answer: whatSupportLooksLike,\r\n },\r\n riskSupervision: {\r\n answer: riskSupervision,\r\n },\r\n whoResponsible: {\r\n answer: whoResponsible,\r\n },\r\n },\r\n true,\r\n true,\r\n );\r\n },\r\n hasError: hasError,\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n if (hasError) {\r\n planValidation.setSummaryRiskValidation(false);\r\n planValidation.alertCheckSummaryRisksValidation();\r\n } else {\r\n planValidation.setSummaryRiskValidation(true);\r\n planValidation.alertCheckSummaryRisksValidation();\r\n }\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n summaryData = mapSummaryData(SummaryData);\r\n}\r\n // markup\r\n //------------------\r\n function toggleRisksDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.risksPopup .error');\r\n const doneBtn = document.querySelector('.risksPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n doneBtn.disabled = true;\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n doneBtn.disabled = false;\r\n }\r\n }\r\n function showRisksTablePopup(popupData, isNew, isCopy) {\r\n let hasInitialErros;\r\n\r\n let dataCache = popupData;\r\n\r\n let sectionTitle = popupData.sectionTitle ? popupData.sectionTitle : '';\r\n let whatIsRisk = popupData.whatIsRisk ? popupData.whatIsRisk.answer : '';\r\n let whatSupportLooksLike = popupData.whatSupportLooksLike\r\n ? popupData.whatSupportLooksLike.answer\r\n : '';\r\n let riskSupervision = popupData.riskSupervision ? popupData.riskSupervision.answer : '';\r\n let whoResponsible = popupData.whoResponsible ? popupData.whoResponsible.answer : '';\r\n let row = popupData.row;\r\n\r\n if (!isNew) {\r\n whatIsRiskId = popupData.whatIsRisk.answerId;\r\n whatSupportLooksLikeId = popupData.whatSupportLooksLike.answerId;\r\n riskSupervisionId = popupData.riskSupervision.answerId;\r\n whoResponsibleId = popupData.whoResponsible.answerId;\r\n }\r\n\r\n const risksPopup = POPUP.build({\r\n header: isNew ? 'Add Risk' : 'Edit Risk',\r\n classNames: 'risksPopup',\r\n hideX: true,\r\n });\r\n\r\n // Assessment Area\r\n const assessmentAreaDropdown = dropdown.build({\r\n dropdownId: 'assessmentAreaDropdownSA',\r\n label: '*Assessment Area',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n sectionTitle = selectedOption.value;\r\n\r\n if (sectionTitle === '' || sectionTitle === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n } else {\r\n assessmentAreaDropdown.classList.remove('error');\r\n }\r\n\r\n toggleRisksDoneBtn();\r\n },\r\n });\r\n if (!isNew) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n }\r\n // What is Risk\r\n const whatIsRiskTextarea = input.build({\r\n label: '*What is the risk, what it looks like, where it occurs',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: whatIsRisk,\r\n charLimit: charLimits.whatIsRisk,\r\n forceCharLimit: true,\r\n callback: e => {\r\n whatIsRisk = e.target.value;\r\n if (whatIsRisk === '') {\r\n whatIsRiskTextarea.classList.add('error');\r\n } else {\r\n whatIsRiskTextarea.classList.remove('error');\r\n }\r\n toggleRisksDoneBtn();\r\n },\r\n });\r\n whatIsRiskTextarea.classList.add('whatIsRiskTextarea');\r\n whatIsRiskTextarea.addEventListener('keyup', e => {\r\n whatIsRisk = e.target.value;\r\n if (whatIsRisk === '') {\r\n whatIsRiskTextarea.classList.add('error');\r\n } else {\r\n whatIsRiskTextarea.classList.remove('error');\r\n }\r\n toggleRisksDoneBtn();\r\n });\r\n // What Support Looks Like\r\n const whatSupportLooksLikeTextarea = input.build({\r\n label: '*What support must look like',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: whatSupportLooksLike,\r\n charLimit: charLimits.whatSupportLooksLike,\r\n forceCharLimit: true,\r\n callback: e => {\r\n whatSupportLooksLike = e.target.value;\r\n if (whatSupportLooksLike === '') {\r\n whatSupportLooksLikeTextarea.classList.add('error');\r\n } else {\r\n whatSupportLooksLikeTextarea.classList.remove('error');\r\n }\r\n toggleRisksDoneBtn();\r\n },\r\n });\r\n whatSupportLooksLikeTextarea.classList.add('whatSupportLooksLike');\r\n whatSupportLooksLikeTextarea.addEventListener('keyup', e => {\r\n whatSupportLooksLike = e.target.value;\r\n if (whatSupportLooksLike === '') {\r\n whatSupportLooksLikeTextarea.classList.add('error');\r\n } else {\r\n whatSupportLooksLikeTextarea.classList.remove('error');\r\n }\r\n toggleRisksDoneBtn();\r\n });\r\n // Levels of Supervision\r\n const levelsOfSupervisionDropdown = dropdown.build({\r\n dropdownId: 'levelsOfSupervisionDropdownSA',\r\n label: '*Levels Of Supervision',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n riskSupervision = selectedOption.value;\r\n if (riskSupervision === '%' || riskSupervision === '') {\r\n levelsOfSupervisionDropdown.classList.add('error');\r\n } else {\r\n levelsOfSupervisionDropdown.classList.remove('error');\r\n }\r\n toggleRisksDoneBtn();\r\n },\r\n });\r\n const whoResponsibleDropdown = dropdown.build({\r\n label: '*Who is Responsible',\r\n dropdownId: 'whoResponsibleDropdown',\r\n readonly: isReadOnly,\r\n callback: (e, selectedOption) => {\r\n whoResponsible = selectedOption.value;\r\n if (whoResponsible === '') {\r\n whoResponsibleDropdown.classList.add('error');\r\n } else {\r\n whoResponsibleDropdown.classList.remove('error');\r\n }\r\n toggleRisksDoneBtn();\r\n },\r\n });\r\n\r\n const doneBtn = button.build({\r\n text: isCopy ? 'Save Copy' : isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n let questionSetId = questionSetIdMap['risksTableData'][sectionTitle];\r\n let upateSingleEmptyRowInsteadOfAddingNew = false;\r\n\r\n const tableDataKeys = Object.keys(summaryData.risksTableData[sectionTitle]);\r\n if (isNew && tableDataKeys.length === 1) {\r\n const rowData = summaryData.risksTableData[sectionTitle]['1'];\r\n const riskAnswer = rowData['riskSupervision'].answer;\r\n const whatIsRiskAnswer = rowData['whatIsRisk'].answer;\r\n const supportAnswer = rowData['whatSupportLooksLike'].answer;\r\n const whoResponsibleAnswer = rowData['whoResponsible'].answer;\r\n\r\n if (!riskAnswer && !whatIsRiskAnswer && !supportAnswer && !whoResponsibleAnswer) {\r\n upateSingleEmptyRowInsteadOfAddingNew = true;\r\n\r\n riskSupervisionId = rowData['riskSupervision'].answerId;\r\n whatIsRiskId = rowData['whatIsRisk'].answerId;\r\n whatSupportLooksLikeId = rowData['whatSupportLooksLike'].answerId;\r\n whoResponsibleId = rowData['whoResponsible'].answerId;\r\n\r\n rowData['riskSupervision'].answer = riskSupervision;\r\n rowData['whatIsRisk'].answer = whatIsRisk;\r\n rowData['whatSupportLooksLike'].answer = whatSupportLooksLike;\r\n rowData['whoResponsible'].answer = whoResponsible;\r\n\r\n row = 1;\r\n }\r\n }\r\n\r\n if (isNew && !upateSingleEmptyRowInsteadOfAddingNew) {\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n let rowOrder = table.getRowCount(`planRisksTable${secTitle}`);\r\n const questionIds = questionIdMap['risksTableData'][sectionTitle];\r\n rowOrder = rowOrder + 1;\r\n const answerIds = await summaryAjax.insertAssessmentSummaryAnswers({\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [rowOrder, rowOrder, rowOrder, rowOrder],\r\n anywQuestionIds: [\r\n parseInt(questionIds.whatIsRisk),\r\n parseInt(questionIds.whatSupportLooksLike),\r\n parseInt(questionIds.riskSupervision),\r\n parseInt(questionIds.whoResponsible),\r\n ],\r\n answers: [\r\n UTIL.removeUnsavableNoteText(whatIsRisk),\r\n UTIL.removeUnsavableNoteText(whatSupportLooksLike),\r\n riskSupervision,\r\n UTIL.removeUnsavableNoteText(whoResponsible),\r\n ],\r\n });\r\n\r\n await addRisksTableRow({\r\n sectionTitle,\r\n row: rowOrder,\r\n questionSetId,\r\n whatIsRisk: {\r\n answer: whatIsRisk,\r\n answerId: answerIds[questionIds.whatIsRisk],\r\n },\r\n whatSupportLooksLike: {\r\n answer: whatSupportLooksLike,\r\n answerId: answerIds[questionIds.whatSupportLooksLike],\r\n },\r\n riskSupervision: {\r\n answer: riskSupervision,\r\n answerId: answerIds[questionIds.riskSupervision],\r\n },\r\n whoResponsible: {\r\n answer: whoResponsible,\r\n answerId: answerIds[questionIds.whoResponsible],\r\n },\r\n });\r\n } else {\r\n await summaryAjax.updateAssessmentSummaryAnswers({\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [row, row, row, row],\r\n anywAnswerIds: [\r\n parseInt(whatIsRiskId),\r\n parseInt(whatSupportLooksLikeId),\r\n parseInt(riskSupervisionId),\r\n parseInt(whoResponsibleId),\r\n ],\r\n answers: [\r\n UTIL.removeUnsavableNoteText(whatIsRisk),\r\n UTIL.removeUnsavableNoteText(whatSupportLooksLike),\r\n riskSupervision,\r\n UTIL.removeUnsavableNoteText(whoResponsible),\r\n ],\r\n });\r\n\r\n await updateRisksTableRow(\r\n {\r\n sectionTitle,\r\n row,\r\n questionSetId,\r\n whatIsRisk: {\r\n answer: whatIsRisk,\r\n answerId: whatIsRiskId,\r\n },\r\n whatSupportLooksLike: {\r\n answer: whatSupportLooksLike,\r\n answerId: whatSupportLooksLikeId,\r\n },\r\n riskSupervision: {\r\n answer: riskSupervision,\r\n answerId: riskSupervisionId,\r\n },\r\n whoResponsible: {\r\n answer: whoResponsible,\r\n answerId: whoResponsibleId,\r\n },\r\n },\r\n dataCache,\r\n );\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n doneBtn.disabled = false;\r\n POPUP.hide(risksPopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(risksPopup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n const message = 'Do you want to delete this entry?';\r\n ISP.showDeleteWarning(risksPopup, message, async () => {\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n let rowCount = table.getRowCount(`planRisksTable${secTitle}`);\r\n const setId = questionSetIdMap['risksTableData'][sectionTitle];\r\n\r\n if (rowCount > 1) {\r\n deleteTableRow(setId, row, `planRisksTable${secTitle}${row}`);\r\n } else {\r\n whatIsRisk = '';\r\n whatSupportLooksLike = '';\r\n riskSupervision = '';\r\n whoResponsible = '';\r\n\r\n await summaryAjax.updateAssessmentSummaryAnswers({\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [row, row, row, row],\r\n anywAnswerIds: [\r\n parseInt(whatIsRiskId),\r\n parseInt(whatSupportLooksLikeId),\r\n parseInt(riskSupervisionId),\r\n parseInt(whoResponsibleId),\r\n ],\r\n answers: [whatIsRisk, whatSupportLooksLike, riskSupervision, whoResponsible],\r\n });\r\n\r\n updateRisksTableRow(\r\n {\r\n sectionTitle,\r\n row,\r\n questionSetId: setId,\r\n whatIsRisk: {\r\n answer: whatIsRisk,\r\n answerId: whatIsRiskId,\r\n },\r\n whatSupportLooksLike: {\r\n answer: whatSupportLooksLike,\r\n answerId: whatSupportLooksLikeId,\r\n },\r\n riskSupervision: {\r\n answer: riskSupervision,\r\n answerId: riskSupervisionId,\r\n },\r\n whoResponsible: {\r\n answer: whoResponsible,\r\n answerId: whoResponsibleId,\r\n },\r\n },\r\n dataCache,\r\n );\r\n }\r\n });\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (sectionTitle === '' || sectionTitle === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (whatIsRisk === '') {\r\n whatIsRiskTextarea.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (whatSupportLooksLike === '') {\r\n whatSupportLooksLikeTextarea.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (whoResponsible === '') {\r\n whoResponsibleDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (riskSupervision === '') {\r\n levelsOfSupervisionDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n doneBtn.disabled = true;\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n whatIsRiskTextarea.classList.add('disabled');\r\n whatSupportLooksLikeTextarea.classList.add('disabled');\r\n levelsOfSupervisionDropdown.classList.add('disabled');\r\n whoResponsibleDropdown.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n doneBtn.disabled = true;\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n risksPopup.appendChild(assessmentAreaDropdown);\r\n risksPopup.appendChild(whatIsRiskTextarea);\r\n risksPopup.appendChild(whatSupportLooksLikeTextarea);\r\n risksPopup.appendChild(levelsOfSupervisionDropdown);\r\n risksPopup.appendChild(whoResponsibleDropdown);\r\n risksPopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, sectionTitle);\r\n populateLevelsOfSupervisionDropdown(levelsOfSupervisionDropdown, riskSupervision);\r\n planData.populateRelationshipDropdown(\r\n whoResponsibleDropdown,\r\n whoResponsible,\r\n (includeSupports = true),\r\n );\r\n\r\n POPUP.show(risksPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function buildRisksTableBySection(data) {\r\n let tableData = [];\r\n\r\n const secTitle = Object.keys(data)[0].replaceAll(' ', '');\r\n\r\n const risksTable = table.build({\r\n tableId: `planRisksTable${secTitle}`,\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'What is the risk, what it looks like, where it occurs',\r\n 'What support must look like, why the person needs this support',\r\n 'Does this risk require supervision?',\r\n 'Who is responsible',\r\n ],\r\n sortable: isSortable,\r\n onSortCallback: evt => {\r\n updateRowOrder(evt);\r\n },\r\n allowCopy: true,\r\n });\r\n\r\n Object.entries(data).forEach(([sectionTitle, rowData]) => {\r\n Object.entries(rowData).forEach(([rowId, val]) => {\r\n const riskSupervision = val.riskSupervision.answer;\r\n const whatIsRisk = val.whatIsRisk.answer;\r\n const whatSupportLooksLike = val.whatSupportLooksLike.answer;\r\n const whoResponsible = val.whoResponsible ? val.whoResponsible.answer : '';\r\n const whoResponsibleText = planData.getRelationshipNameById(whoResponsible);\r\n const levelOfSupervision = getLevelOfSupervisionById(riskSupervision);\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const questionSetId = val.whatIsRisk.questionSetId;\r\n\r\n const hasError = whatIsRisk && (!whatSupportLooksLike || !levelOfSupervision || !whoResponsible);\r\n\r\n if (whoResponsible) {\r\n if (selectedVendors[whoResponsible]) {\r\n selectedVendors[whoResponsible] = selectedVendors[whoResponsible] + 1;\r\n } else {\r\n selectedVendors[whoResponsible] = 1;\r\n }\r\n }\r\n\r\n const isRowEmpty = [\r\n whatIsRisk,\r\n whatSupportLooksLike,\r\n riskSupervision,\r\n whoResponsible,\r\n ].every(e => e === '');\r\n\r\n tableData.push({\r\n id: `planRisksTable${secTitle}${rowId}`,\r\n values: [\r\n sectionTitle,\r\n whatIsRisk,\r\n whatSupportLooksLike,\r\n levelOfSupervision,\r\n whoResponsibleText,\r\n ],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: `${val.whatIsRisk.answerId}|${val.whatSupportLooksLike.answerId}|${\r\n val.riskSupervision.answerId\r\n }|${whoResponsible ? whoResponsible : ''}`,\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planRisksTable${secTitle}`, '');\r\n showRisksTablePopup(\r\n {\r\n sectionTitle,\r\n row: rowOrderFromID,\r\n questionSetId,\r\n whatIsRisk: {\r\n answer: whatIsRisk,\r\n answerId: val.whatIsRisk.answerId,\r\n },\r\n whatSupportLooksLike: {\r\n answer: whatSupportLooksLike,\r\n answerId: val.whatSupportLooksLike.answerId,\r\n },\r\n riskSupervision: {\r\n answer: riskSupervision,\r\n answerId: val.riskSupervision.answerId,\r\n },\r\n whoResponsible: {\r\n answer: whoResponsible,\r\n answerId: val.whoResponsible ? val.whoResponsible.answerId : '',\r\n },\r\n },\r\n false,\r\n false,\r\n );\r\n },\r\n hasError: hasError,\r\n onCopyClick: isRowEmpty\r\n ? false\r\n : e => {\r\n if (isRowEmpty || isReadOnly) return;\r\n\r\n showRisksTablePopup(\r\n {\r\n sectionTitle,\r\n row: '',\r\n questionSetId,\r\n whatIsRisk: {\r\n answer: whatIsRisk,\r\n },\r\n whatSupportLooksLike: {\r\n answer: whatSupportLooksLike,\r\n },\r\n riskSupervision: {\r\n answer: riskSupervision,\r\n },\r\n whoResponsible: {\r\n answer: whoResponsible,\r\n },\r\n },\r\n true,\r\n true,\r\n );\r\n },\r\n });\r\n });\r\n });\r\n\r\n table.populate(risksTable, tableData, isSortable);\r\n\r\n const sectionHasErrors = tableData.some(row => row.hasError);\r\n if (sectionHasErrors) {\r\n planValidation.setSummaryRiskValidation(false);\r\n planValidation.alertCheckSummaryRisksValidation();\r\n } else {\r\n planValidation.setSummaryRiskValidation(true);\r\n planValidation.alertCheckSummaryRisksValidation();\r\n }\r\n\r\n return risksTable;\r\n }\r\n function buildDropdownLegend() {\r\n const legend = document.createElement('div');\r\n legend.classList.add('riskSupervisionDropdownLegend');\r\n\r\n legend.innerHTML = `\r\n

    Levels of Supervision and Definitions:

    \r\n
      \r\n
    • 1. No Paid Supports The person can be alone and does not require any paid/remote support to ensure safety.
    • \r\n
    • 2. General Staff must be able to hear/contact the person if they called for help, and respond within a few minutes.
    • \r\n
    • 3. Auditory Staff must be able to hear the person if they called for help and respond quickly.
    • \r\n
    • 4. Visual Staff must be able to see the person and be able to provide support or direction.
    • \r\n
    • 5. Close & Constant Staff may never leave the person, and must always be able to respond immediately.
    • \r\n
    • 6. Technology Describe technology solutions in conjunction with 1 - 5.
    • \r\n
    \r\n `;\r\n\r\n return legend;\r\n }\r\n function getRisksTablesMarkup(risksTableData) {\r\n const risksWrap = document.createElement('div');\r\n risksWrap.classList.add('risksWrap');\r\n\r\n const heading = document.createElement('h3');\r\n heading.innerHTML = `Known & Likely Risks: Include any MUI trends and preventative measures`;\r\n risksWrap.appendChild(heading);\r\n\r\n const dropdownLegend = buildDropdownLegend();\r\n risksWrap.appendChild(dropdownLegend);\r\n\r\n const risksDiv = document.createElement('div');\r\n risksDiv.classList.add('risksTablesWrap');\r\n\r\n const a = assessment.getApplicableSections();\r\n\r\n if (risksTableData) {\r\n Object.entries(sectionOrderMap).forEach(([key, val], index) => {\r\n if (a[sectionIdMap[val]]) {\r\n const tableData = risksTableData[val];\r\n const risksTable = buildRisksTableBySection({ [val]: tableData });\r\n if (index === 0) risksTable.classList.add('main');\r\n risksDiv.appendChild(risksTable);\r\n }\r\n });\r\n }\r\n\r\n const addRowBtn = button.build({\r\n text: 'Add Known & Likely Risk',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => showRisksTablePopup({}, true, false),\r\n });\r\n if (isReadOnly) addRowBtn.classList.add('disabled');\r\n\r\n risksDiv.appendChild(addRowBtn);\r\n risksWrap.appendChild(risksDiv);\r\n\r\n return risksWrap;\r\n }\r\n\r\n function checkForPaidSupports(numOfPaidSupports) {\r\n hasPaidSupports = numOfPaidSupports > 0;\r\n \r\n }\r\n function getAdditionalSummaryQuestionMarkup() {\r\n const additionalQuestionDiv = document.createElement('div');\r\n additionalQuestionDiv.classList.add('additionalQuestionWrap');\r\n\r\n hasPaidSupports = servicesSupports.getHasPaidSupports();\r\n\r\n // Amount of time person can be left alone\r\n const amountOfTimeWrap = document.createElement('div');\r\n const amountOfTimePrompt = document.createElement('p');\r\n amountOfTimePrompt.innerText = 'Amount of time the person can safely be alone';\r\n\r\n amountOfTimeQuestion = input.build({\r\n id: 'amountOfTime',\r\n value: additionalSummaryData.aloneTimeAmount,\r\n type: 'textarea',\r\n charLimit: charLimits.aloneTime,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n onBlurCallback: event => {\r\n additionalSummaryData.aloneTimeAmount = event.target.value;\r\n const submitData = {\r\n anywAssessmentId: planId,\r\n aloneTimeAmount: UTIL.removeUnsavableNoteText(additionalSummaryData.aloneTimeAmount),\r\n providerBackUp: UTIL.removeUnsavableNoteText(additionalSummaryData.providerBackUp),\r\n };\r\n summaryAjax.updateAdditionalAssessmentSummaryAnswers(submitData);\r\n },\r\n });\r\n amountOfTimeWrap.appendChild(amountOfTimePrompt);\r\n amountOfTimeWrap.appendChild(amountOfTimeQuestion);\r\n\r\n // Provide back-up plan\r\n const backupPlanWrap = document.createElement('div');\r\n const backupPlanPrompt = document.createElement('p');\r\n backupPlanPrompt.innerText = 'Provider Back-up Plan';\r\n\r\n backupPlanQuestion = input.build({\r\n id: 'backupPlan',\r\n type: 'textarea',\r\n value: additionalSummaryData.providerBackUp,\r\n charLimit: 10000,\r\n classNames: 'autosize',\r\n forceCharLimit: true,\r\n onBlurCallback: event => {\r\n additionalSummaryData.providerBackUp = event.target.value;\r\n const submitData = {\r\n anywAssessmentId: planId,\r\n aloneTimeAmount: UTIL.removeUnsavableNoteText(additionalSummaryData.aloneTimeAmount),\r\n providerBackUp: UTIL.removeUnsavableNoteText(additionalSummaryData.providerBackUp),\r\n };\r\n summaryAjax.updateAdditionalAssessmentSummaryAnswers(submitData);\r\n },\r\n });\r\n\r\n backupPlanWrap.appendChild(backupPlanPrompt);\r\n backupPlanWrap.appendChild(backupPlanQuestion);\r\n\r\n additionalQuestionDiv.appendChild(amountOfTimeWrap);\r\n additionalQuestionDiv.appendChild(backupPlanWrap);\r\n\r\n if (isReadOnly) {\r\n amountOfTimeQuestion.classList.add('disabled');\r\n backupPlanQuestion.classList.add('disabled');\r\n }\r\n\r\n return additionalQuestionDiv;\r\n }\r\n function getMarkup() {\r\n const summaryWrap = document.createElement('div');\r\n summaryWrap.classList.add('planSummary');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Discovery Assessment Summary';\r\n heading.classList.add('sectionHeading');\r\n\r\n const importantTables = getImportantTablesMarkup(summaryData.importantTableData);\r\n const skillsTables = getSkillsTablesMarkup(summaryData.skillsTableData);\r\n const risksTables = getRisksTablesMarkup(summaryData.risksTableData);\r\n const additionalSummaryMarkup = getAdditionalSummaryQuestionMarkup();\r\n\r\n summaryWrap.appendChild(heading);\r\n summaryWrap.appendChild(importantTables);\r\n summaryWrap.appendChild(skillsTables);\r\n summaryWrap.appendChild(risksTables);\r\n summaryWrap.appendChild(additionalSummaryMarkup);\r\n\r\n return summaryWrap;\r\n }\r\n\r\n async function init(data) {\r\n // data = { planId, readOnly }\r\n planId = data.planId;\r\n isReadOnly = data.readOnly;\r\n charLimits = planData.getISPCharacterLimits('summary');\r\n\r\n if (!$.session.planUpdate) {\r\n isSortable = false;\r\n } else {\r\n isSortable = isReadOnly ? false : true;\r\n }\r\n\r\n dropdownData = planData.getDropdownData();\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n\r\n const AdditionalSummaryData = await summaryAjax.getAdditionalAssessmentSummaryQuestions({\r\n anywAssessmentId: planId,\r\n });\r\n\r\n if (AdditionalSummaryData) {\r\n if (AdditionalSummaryData.length > 0) {\r\n additionalSummaryData = { ...AdditionalSummaryData[0] };\r\n\r\n if (additionalSummaryData.placeOnPath === '' || additionalSummaryData.placeOnPath === '0') {\r\n additionalSummaryData.placeOnPath = '%';\r\n }\r\n if (\r\n additionalSummaryData.bestWayToConnect === '' ||\r\n additionalSummaryData.bestWayToConnect === '0'\r\n ) {\r\n additionalSummaryData.bestWayToConnect = '%';\r\n }\r\n }\r\n } else {\r\n additionalSummaryData = {\r\n aloneTimeAmount: '',\r\n providerBackUp: '',\r\n moreDetail: '',\r\n placeOnPath: '%',\r\n bestWayToConnect: '%',\r\n };\r\n }\r\n\r\n const mappedSummaryData = mapSummaryData(SummaryData);\r\n summaryData = mappedSummaryData;\r\n }\r\n\r\n return {\r\n init,\r\n getMarkup,\r\n checkForPaidSupports,\r\n refreshDropdownData,\r\n getSelectedVendors,\r\n };\r\n})();\r\n","const summaryAjax = (function () {\r\n async function getAssessmentSummaryQuestions(retrieveData) {\r\n // string token, long anywAssessmentId\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAssessmentSummaryQuestions/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getAssessmentSummaryQuestionsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getAdditionalAssessmentSummaryQuestions(retrieveData) {\r\n // string token, long anywAssessmentId\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAdditionalAssessmentSummaryQuestions/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getAdditionalAssessmentSummaryQuestionsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function insertAssessmentSummaryAnswers(retrieveData) {\r\n // string token, long anywAssessmentId, long[] anywQuestionIds, int[] answerRow, string[] answers, string userId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertAssessmentSummaryAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return Object.values(\r\n Object.entries(data.insertAssessmentSummaryAnswersResult).reduce((acc, [key, val]) => {\r\n key = key.split('Id');\r\n const type = key[0];\r\n const num = key[1];\r\n\r\n if (!acc[num]) {\r\n acc[num] = {};\r\n }\r\n\r\n if (type === 'answer') {\r\n acc[num].answerId = val;\r\n } else {\r\n acc[num].questionId = val;\r\n }\r\n\r\n return acc;\r\n }, {}),\r\n ).reduce((acc, val) => {\r\n if (!acc[val.questionId]) {\r\n acc[val.questionId] = val.answerId;\r\n }\r\n return acc;\r\n }, {});\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function updateAssessmentSummaryAnswers(retrieveData) {\r\n // string token, long anywAssessmentId, long[] anywAnswerIds, string[] answers, string userId\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAssessmentSummaryAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateAssessmentSummaryAnswersResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function updateAdditionalAssessmentSummaryAnswers(retrieveData) {\r\n // long anywAssessmentId, string aloneTimeAmount, string providerBackUp\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAdditionalAssessmentSummaryAnswer/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateAdditionalAssessmentSummaryAnswerResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function updateBestWayToConnect(retrieveData) {\r\n // string token, long anywAssessmentId, int bestWayId\r\n\r\n if (retrieveData.bestWayId === '%') {\r\n retrieveData.bestWayId = 0;\r\n } else {\r\n retrieveData.bestWayId = parseInt(retrieveData.bestWayId);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateBestWayToConnect/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateBestWayToConnectResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function updatePlaceOnPath(retrieveData) {\r\n // string token, long anywAssessmentId, int placeId\r\n\r\n if (retrieveData.placeId === '%') {\r\n retrieveData.placeId = 0;\r\n } else {\r\n retrieveData.placeId = parseInt(retrieveData.placeId);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlaceOnPath/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlaceOnPathResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function updateMoreDetail(retrieveData) {\r\n // string token, long anywAssessmentId, string detail\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateMoreDetail/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateMoreDetailResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getAssessmentSummaryQuestions,\r\n getAdditionalAssessmentSummaryQuestions,\r\n updateAssessmentSummaryAnswers,\r\n updateAdditionalAssessmentSummaryAnswers,\r\n insertAssessmentSummaryAnswers,\r\n updateBestWayToConnect,\r\n updatePlaceOnPath,\r\n updateMoreDetail,\r\n };\r\n})();\r\n","const assessmentCard = (function () {\r\n // DOM\r\n let assessmentContainer;\r\n let assessmentMarkup;\r\n let assessmentNav;\r\n let tocMarkup;\r\n let tableOfContentsBtn;\r\n let unansweredQuestionToggleBtn;\r\n // DATA\r\n let sectionData;\r\n let subsectionData;\r\n let questionSetData;\r\n let planId;\r\n let planStatus;\r\n let readOnly;\r\n\r\n // Utils\r\n //------------------------------------\r\n function clearData() {\r\n assessmentContainer = undefined;\r\n assessmentMarkup = undefined;\r\n assessmentNav = undefined;\r\n tocMarkup = undefined;\r\n tableOfContentsBtn = undefined;\r\n unansweredQuestionToggleBtn = undefined;\r\n\r\n sectionData = undefined;\r\n subsectionData = undefined;\r\n questionSetData = undefined;\r\n planId = undefined;\r\n planStatus = undefined;\r\n\r\n mainAssessment.clearData();\r\n tableOfContents.clearData();\r\n }\r\n async function refreshAssessmentCard(assessmentGeneralInfo) {\r\n const assessmentWrap = document.getElementById('planAssessment');\r\n\r\n const loadingBar = PROGRESS.SPINNER.get('Refreshing Assessment...');\r\n assessmentWrap.innerHTML = '';\r\n assessmentWrap.appendChild(loadingBar);\r\n\r\n // * Assessment Data below... When coming from dash widget planId isn't set yet\r\n // * use 'assessmentGeneralInfo.planId' if there is no 'planId'\r\n const assessmentData = await assessment.getAssessmentData(\r\n planId || assessmentGeneralInfo.planId,\r\n );\r\n let newAssessmentMarkup;\r\n if (assessmentGeneralInfo) {\r\n newAssessmentMarkup = await build(assessmentData, {\r\n ...assessmentGeneralInfo,\r\n });\r\n }\r\n\r\n assessmentWrap.innerHTML = '';\r\n assessmentWrap.appendChild(newAssessmentMarkup);\r\n\r\n mainAssessment.markUnansweredQuestions();\r\n tableOfContents.showUnansweredQuestionCount();\r\n\r\n let assessmentValidationCheck = await planValidation.getAssessmentValidation(planId);\r\n planValidation.updatedAssessmenteValidation(assessmentValidationCheck);\r\n }\r\n\r\n // Navigation Bar\r\n //------------------------------------\r\n async function handleNavbarEvents(e) {\r\n switch (e.target) {\r\n case tableOfContentsBtn: {\r\n tableOfContents.toggleVisibility();\r\n break;\r\n }\r\n case unansweredQuestionToggleBtn: {\r\n const innerTextValue = unansweredQuestionToggleBtn.innerText.toLowerCase();\r\n if (innerTextValue === 'show unanswered') {\r\n unansweredQuestionToggleBtn.innerText = 'Show All';\r\n mainAssessment.toggleUnansweredQuestionFilter('hide');\r\n } else {\r\n unansweredQuestionToggleBtn.innerText = 'Show Unanswered';\r\n mainAssessment.toggleUnansweredQuestionFilter('show');\r\n }\r\n\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n }\r\n function buildTopNavBar() {\r\n tableOfContentsBtn = button.build({\r\n text: 'T.O.C.',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['tableOfContentsBtn', 'assessmentNavBtn'],\r\n callback: handleNavbarEvents,\r\n });\r\n unansweredQuestionToggleBtn = button.build({\r\n text: 'Show Unanswered',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['unansweredQuestionToggleBtn', 'assessmentNavBtn'],\r\n callback: handleNavbarEvents,\r\n });\r\n\r\n const tocAlertDiv = document.createElement('div');\r\n tocAlertDiv.classList.add('tocAlertDiv');\r\n tocAlertDiv.id = 'tocAlertMobile';\r\n tableOfContentsBtn.appendChild(tocAlertDiv);\r\n tocAlertDiv.innerHTML = `${icons.error}`;\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'At least one section of the Assessment must be selected',\r\n tocAlertDiv,\r\n );\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n // planValidation.createTooltip(\r\n // 'At least one section of the Assessment must be selected',\r\n // tocAlertDiv,\r\n // );\r\n\r\n // if (assessmentValidationCheck.hasASectionApplicable === true) {\r\n // tocAlertDiv.style.display = 'none';\r\n // }\r\n\r\n const navBar = document.createElement('div');\r\n navBar.classList.add('assessmentNavigation');\r\n\r\n navBar.appendChild(tableOfContentsBtn);\r\n navBar.appendChild(unansweredQuestionToggleBtn);\r\n\r\n return navBar;\r\n }\r\n\r\n // Main\r\n //------------------------------------\r\n function addSections() {\r\n const sectionIdKeys = Object.keys(sectionData);\r\n sectionIdKeys.forEach((id, index) => {\r\n const { order, title, applicable } = sectionData[id];\r\n mainAssessment.addSection({ ...sectionData[id], id });\r\n tableOfContents.addSection({ order, title, id, index, applicable });\r\n });\r\n }\r\n function addSubSections() {\r\n const subsectionIdKeys = Object.keys(subsectionData);\r\n subsectionIdKeys.forEach(subsectionId => {\r\n const { order, title, sectionId } = subsectionData[subsectionId];\r\n mainAssessment.addSubSection(order, title, subsectionId, sectionId);\r\n tableOfContents.addSubSection(order, title, subsectionId, sectionId);\r\n });\r\n }\r\n function addQuestions() {\r\n const questionSetIdKeys = Object.keys(questionSetData);\r\n questionSetIdKeys.forEach(async qsKey => {\r\n mainAssessment.addQuestionSet(questionSetData[qsKey], readOnly);\r\n });\r\n }\r\n function buildAssessment() {\r\n assessmentContainer = document.createElement('div');\r\n assessmentContainer.classList.add('assessmentContainer');\r\n\r\n tocMarkup = tableOfContents.build();\r\n // generalInfoBar = buildGeneralInfoBar();\r\n assessmentNav = buildTopNavBar();\r\n assessmentMarkup = mainAssessment.build();\r\n\r\n const assessmentNavMarkupWrap = document.createElement('div');\r\n assessmentNavMarkupWrap.classList.add('assessmentNavMarkupWrap');\r\n assessmentNavMarkupWrap.appendChild(assessmentNav);\r\n // assessmentNavMarkupWrap.appendChild(generalInfoBar);\r\n assessmentNavMarkupWrap.appendChild(assessmentMarkup);\r\n\r\n if (readOnly || !$.session.planUpdate) {\r\n assessmentNavMarkupWrap.classList.add('readOnly');\r\n } else {\r\n assessmentNavMarkupWrap.classList.remove('readOnly');\r\n }\r\n\r\n assessmentContainer.appendChild(tocMarkup);\r\n assessmentContainer.appendChild(assessmentNavMarkupWrap);\r\n\r\n return assessmentContainer;\r\n }\r\n async function build(assessmentData, generalInfo) {\r\n ({ sectionData, subsectionData, questionSetData } = assessmentData);\r\n\r\n ({ planId, planStatus, isActive } = generalInfo);\r\n\r\n readOnly = planStatus === 'C' || !isActive ? true : false;\r\n\r\n setActiveModuleSectionAttribute('plan-questionsAndAnswers');\r\n\r\n // init markup for toc and assessment\r\n await mainAssessment.init(planId, readOnly);\r\n tableOfContents.init();\r\n\r\n // add/sort data to assessment & toc\r\n addSections();\r\n addSubSections();\r\n addQuestions();\r\n\r\n // populate/build assessment\r\n const markup = buildAssessment();\r\n return markup;\r\n }\r\n\r\n return {\r\n build,\r\n clearData,\r\n refreshAssessmentCard,\r\n };\r\n})();\r\n","const mainAssessment = (function () {\r\n const customSectionIds = [];\r\n\r\n // DOM\r\n let assessmentWrap;\r\n // DATA\r\n let sections;\r\n let subSections;\r\n let questionSectionSets;\r\n let questionSubSectionSets;\r\n let sectionQuestionCount;\r\n let assessmentId;\r\n let subSectionsWithAttachments;\r\n let additionalSummaryData;\r\n // dropdowns\r\n let assessmentDropdownData;\r\n let colNameDropdownMap = {\r\n AssessmentArea: 'assessmentAreas',\r\n ProviderName: 'serviceVendors',\r\n ServiceName: 'serviceTypes',\r\n FundingSource: 'fundingSource',\r\n NewOrExisting: 'newOrExisting',\r\n 'WhoSaidIt?': 'relationships',\r\n };\r\n\r\n let charLimits = {};\r\n let deleteRowsActive = false;\r\n let selectedRow;\r\n let isSortable;\r\n let readonly;\r\n let hideOrShowStatus;\r\n\r\n const observerCallback = entries => {\r\n console.log(`Observer callback fired.`);\r\n entries.forEach(entry => {\r\n console.log(`Observing entry ${entry.target.id}`);\r\n if (entry.isIntersecting) {\r\n console.log(entry.intersectionRatio);\r\n\r\n if (!entry.target.classList.contains('nonApplicable')) {\r\n const sectionId = entry.target.id;\r\n console.log(`${sectionId} is in view`);\r\n tableOfContents.highlightLink(sectionId.replace('section', ''));\r\n }\r\n // if (entry.intersectionRatio >= 0.75) {\r\n \r\n // }\r\n }\r\n });\r\n };\r\n\r\n if (!('IntersectionObserver' in window)) {\r\n alert('Intersection Observer API is not available')\r\n }\r\n\r\n const observer = new IntersectionObserver(observerCallback, {\r\n root: DOM.ACTIONCENTER,\r\n rootMargin: '0px 0px 0px 0px',\r\n threshold: 0.08,\r\n });\r\n\r\n function checkArrayConsistency(arr) {\r\n if (arr.length === 0) {\r\n return 'noMatch'; // or you can return null or undefined based on your use case\r\n }\r\n\r\n const firstElement = arr[0];\r\n for (let i = 1; i < arr.length; i++) {\r\n if (arr[i] !== firstElement) {\r\n return 'noMatch';\r\n }\r\n }\r\n\r\n return firstElement;\r\n }\r\n function updateRowOrderAfterDelete(grid, questionSetId) {\r\n // grab all rows inside grid after delete\r\n const gridBody = grid.querySelector('.grid__body');\r\n const rows = [...gridBody.querySelectorAll('.grid__row')];\r\n rows.forEach((row, i) => {\r\n const order = parseInt(row.id.replaceAll('roworder', ''));\r\n // check row for gap in order\r\n if (order !== i + 1) {\r\n // grab inputs to gather answerIds\r\n const inputs = [...row.querySelectorAll('.input-field__input')];\r\n let answerIds = inputs.map(input => input.id);\r\n answerIds = answerIds.join('|');\r\n // update the row order in DB\r\n //assessmentAjax.updateAssessmentAnswerRowOrder({\r\n // ///\r\n // token: $.session.Token,\r\n // assessmentId: parseInt(assessmentId),\r\n // questionSetId: parseInt(questionSetId),\r\n // answerIds: answerIds,\r\n // newPos: parseInt(i + 1),\r\n // oldPos: parseInt(order),\r\n //});\r\n // update row id\r\n row.id = `roworder${i + 1}`;\r\n }\r\n // if no gap do nothing\r\n });\r\n }\r\n\r\n // Utils\r\n //------------------------------------\r\n async function addAnswer(id, answer, answerRow, skipped) {\r\n assessmentAjax.updateConsumerAssessmentAnswer({\r\n answerId: id,\r\n answerText: answer ? answer : '',\r\n answerRow: answerRow ? answerRow : '',\r\n skipped: skipped ? skipped : 'N',\r\n });\r\n }\r\n function clearData() {\r\n sections = {};\r\n subSections = {};\r\n questionSectionSets = {};\r\n questionSubSectionSets = {};\r\n sectionQuestionCount = {};\r\n subSectionsWithAttachments = [];\r\n }\r\n function getSectionQuestionCount() {\r\n return sectionQuestionCount;\r\n }\r\n function relationshipDropdownData() {\r\n const data = planData.getDropdownData().relationships.map(dd => {\r\n return {\r\n id: dd.contactId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n const removeDups = data => {\r\n const flag = {};\r\n const unique = [];\r\n data.forEach(el => {\r\n if (!flag[el.id]) {\r\n flag[el.id] = true;\r\n unique.push(el);\r\n }\r\n });\r\n return unique;\r\n };\r\n return removeDups(data);\r\n }\r\n function toggleIntentionallyBlankCheckbox(answerId, setID, disable) {\r\n let checkbox = document.getElementById(`intentionallyBlankCheckbox${answerId}`);\r\n checkbox = checkbox ? checkbox : document.getElementById(`intentionallyBlankCheckbox${setID}`);\r\n if (!checkbox) return;\r\n\r\n if (disable) {\r\n input.disableInputField(checkbox.parentElement);\r\n } else {\r\n input.enableInputField(checkbox.parentElement);\r\n }\r\n }\r\n // Conditional Questions\r\n function toggleConditionalQuestion(answer, type, conditionalQuestions) {\r\n if (conditionalQuestions.length === 1) {\r\n const questionId = conditionalQuestions[0].questionId;\r\n\r\n const question = document.getElementById(`question${questionId}`);\r\n const section = question.closest('.assessment__section');\r\n const questionSet = question.closest('.questionSet');\r\n const inputWrap = question.querySelector('.input-field');\r\n const inputEle = question.querySelector('.input-field__input');\r\n const questionText = question.querySelector('.question__text');\r\n\r\n // check for radios\r\n if (!inputWrap) inputWrap = question.querySelector('.radioWrap');\r\n if (!inputEle) inputEle = question.querySelector('input');\r\n\r\n const sectionId = section.id.replace('section', '');\r\n const setId = questionSet.id.replace('set', '');\r\n const answerId = inputEle.id;\r\n\r\n if (conditionalQuestions[0].conditionalAnswerText !== answer) {\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n inputWrap.classList.remove('error');\r\n input.disableInputField(inputWrap);\r\n if (type === 'checkbox') {\r\n inputEle.checked = false;\r\n } else {\r\n inputEle.value = '';\r\n const radios = [...inputWrap.querySelectorAll('input')];\r\n if (radios.length !== 0) {\r\n radios.forEach(radio => (radio.checked = false));\r\n }\r\n }\r\n addAnswer(answerId);\r\n } else {\r\n input.enableInputField(inputWrap);\r\n if (questionText.textContent === 'List other tools:') {\r\n inputWrap.classList.add('error');\r\n }\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n }\r\n } else {\r\n conditionalQuestions.forEach(q => {\r\n const { questionId, conditionalAnswerText } = q;\r\n\r\n const question = document.getElementById(`question${questionId}`);\r\n const section = question.closest('.assessment__section');\r\n const questionSet = question.closest('.questionSet');\r\n const questionText = question.querySelector('.question__text');\r\n let inputWrap = question.querySelector('.input-field');\r\n let inputEle = question.querySelector('.input-field__input');\r\n\r\n // check for radios\r\n if (!inputWrap) inputWrap = question.querySelector('.radioWrap');\r\n if (!inputEle) inputEle = question.querySelector('input');\r\n\r\n const sectionId = section.id.replace('section', '');\r\n const setId = questionSet.id.replace('set', '');\r\n const answerId = inputEle.id;\r\n\r\n if (conditionalAnswerText !== answer) {\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n //inputWrap.classList.remove('error');\r\n input.disableInputField(inputWrap);\r\n if (type === 'checkbox') {\r\n inputEle.checked = false;\r\n } else {\r\n inputEle.value = '';\r\n const radios = [...inputWrap.querySelectorAll('input')];\r\n if (radios.length !== 0) {\r\n radios.forEach(radio => (radio.checked = false));\r\n }\r\n }\r\n\r\n addAnswer(answerId);\r\n } else {\r\n input.enableInputField(inputWrap);\r\n // if (questionText.textContent === 'List other tools:') {\r\n // inputWrap.classList.add('error');\r\n // }\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n }\r\n });\r\n }\r\n\r\n markUnansweredQuestions();\r\n }\r\n // Unanswered Questions\r\n function markUnansweredQuestions() {\r\n const sectionKeys = Object.keys(sectionQuestionCount);\r\n\r\n sectionKeys.forEach(sectionKey => {\r\n const questionSetKeys = Object.keys(sectionQuestionCount[sectionKey]);\r\n let tableQuestionSets;\r\n\r\n questionSetKeys.forEach(questionSetKey => {\r\n const questionKeys = Object.keys(sectionQuestionCount[sectionKey][questionSetKey]);\r\n\r\n questionKeys.forEach(questionKey => {\r\n const { answered, required, rowOrder, leaveblank } =\r\n sectionQuestionCount[sectionKey][questionSetKey][questionKey];\r\n let questionDiv;\r\n\r\n if (!rowOrder) {\r\n // Text, Textarea, Checkbox, Radio Questions\r\n questionDiv = document.getElementById(`question${questionKey}`);\r\n if (!questionDiv) return;\r\n if (answered && required) questionDiv.classList.remove('unawnsered');\r\n if (!answered && required) questionDiv.classList.add('unawnsered');\r\n if (!answered && required && !leaveblank) questionDiv.classList.add('unawnsered');\r\n\r\n if (!required) questionDiv.classList.remove('unawnsered');\r\n } else {\r\n // Table Questions\r\n if (!tableQuestionSets) tableQuestionSets = {};\r\n if (!tableQuestionSets[questionSetKey]) tableQuestionSets[questionSetKey] = {};\r\n if (!tableQuestionSets[questionSetKey][rowOrder]) {\r\n questionDiv = document.getElementById(`question${questionKey}`);\r\n if (!questionDiv) return;\r\n const rowElement = questionDiv.closest('.grid__row');\r\n\r\n tableQuestionSets[questionSetKey][rowOrder] = {\r\n atLeastOneColumnAnswered: false,\r\n rowElement,\r\n };\r\n }\r\n if (answered || leaveblank) tableQuestionSets[questionSetKey][rowOrder].atLeastOneColumnAnswered = true;\r\n }\r\n });\r\n\r\n if (tableQuestionSets) {\r\n const tableQuestionSetsKeys = Object.keys(tableQuestionSets);\r\n if (tableQuestionSetsKeys.length > 0) {\r\n tableQuestionSetsKeys.forEach(setKey => {\r\n let tableHasAtLeastOneRowAnsered = false;\r\n let tableElement;\r\n\r\n const rowOrderKeys = Object.keys(tableQuestionSets[setKey]);\r\n rowOrderKeys.forEach((rowOrderKey, index) => {\r\n if (index === 0) {\r\n tableElement = tableQuestionSets[setKey][rowOrderKey].rowElement.closest('.grid');\r\n }\r\n\r\n if (tableQuestionSets[setKey][rowOrderKey].atLeastOneColumnAnswered) {\r\n tableQuestionSets[setKey][rowOrderKey].rowElement.classList.remove('unawnsered');\r\n tableHasAtLeastOneRowAnsered = true;\r\n } else {\r\n tableQuestionSets[setKey][rowOrderKey].rowElement.classList.add('unawnsered');\r\n }\r\n });\r\n\r\n if (!tableHasAtLeastOneRowAnsered) {\r\n tableElement.classList.add('unawnsered');\r\n tableElement.classList.remove('awnsered');\r\n } else {\r\n tableElement.classList.remove('unawnsered');\r\n tableElement.classList.add('awnsered');\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n\r\n tableOfContents.showUnansweredQuestionCount();\r\n }\r\n function toggleUnansweredQuestionFilter(hideOrShow) {\r\n hideOrShowStatus = hideOrShow;\r\n\r\n const awnseredQuestions = [...document.querySelectorAll('.question:not(.unawnsered)')];\r\n const leftBlankQuestions = [...document.querySelectorAll('.question.intentionallyDisabled')];\r\n [...awnseredQuestions, ...leftBlankQuestions].forEach(q => {\r\n if (hideOrShow === 'hide') {\r\n q.style.display = 'none';\r\n } else {\r\n q.removeAttribute('style');\r\n }\r\n });\r\n\r\n const awnseredTables = [...document.querySelectorAll('.grid.awnsered')];\r\n const leftBlankTables = [...document.querySelectorAll('.grid.intentionallyDisabled')];\r\n [...awnseredTables, ...leftBlankTables].forEach(t => {\r\n if (hideOrShow === 'hide') {\r\n t.style.display = 'none';\r\n } else {\r\n t.removeAttribute('style');\r\n }\r\n });\r\n }\r\n // Events\r\n async function handleAssessmentChangeEvents(e) {\r\n if (e.target.id.includes('applicable')) {\r\n let target = e.target.id;\r\n let sectionID = target.match(/\\d+/)[0];\r\n let applied = e.target.checked ? 'Y' : 'N';\r\n\r\n planValidation.updateSectionApplicability(sectionID, applied);\r\n\r\n return;\r\n }\r\n if (e.target.id.includes('intentionallyBlankCheckbox')) {\r\n const isChecked = e.target.checked;\r\n const skipped = isChecked ? 'Y' : 'N';\r\n const isForRow = e.target.dataset.isforrow;\r\n\r\n let answerId = e.target.dataset.answerid;\r\n let questionId = e.target.dataset.questionid;\r\n let setId = e.target.dataset.setid;\r\n let sectionID = e.target.dataset.sectionid;\r\n\r\n if (isForRow === 'false') {\r\n addAnswer(answerId, '', '', skipped);\r\n\r\n const textAreaInput = document.getElementById(answerId);\r\n if (isChecked) {\r\n textAreaInput.value = '';\r\n input.disableInputField(textAreaInput);\r\n textAreaInput.parentNode.closest('.question').classList.add('intentionallyDisabled');\r\n sectionQuestionCount[sectionID][setId][questionId].leaveblank = true;\r\n } else {\r\n input.enableInputField(textAreaInput);\r\n textAreaInput.parentNode.closest('.question').classList.remove('intentionallyDisabled');\r\n sectionQuestionCount[sectionID][setId][questionId].leaveblank = false;\r\n }\r\n } else {\r\n const questionSet = document.getElementById(`set${setId}`);\r\n let sectionID = questionSet.parentElement.parentElement.id;\r\n sectionID = sectionID.replace(/\\D/g, '');\r\n const questionSetGridRows = [...questionSet.querySelectorAll('.grid__row:not(.grid__rowHeader)')];\r\n const questionSetActionButtons = [...questionSet.querySelectorAll('.gridActionRow button')];\r\n let questionSetId = e.target.dataset.setid;\r\n\r\n const grid = questionSet.querySelector('.grid');\r\n if (isChecked) {\r\n grid.classList.add('intentionallyDisabled');\r\n } else {\r\n grid.classList.remove('intentionallyDisabled');\r\n }\r\n\r\n questionSetGridRows.forEach(row => {\r\n const rowCells = row.querySelectorAll('.grid__cell');\r\n\r\n rowCells.forEach(cell => {\r\n const cellInput = cell.querySelector('.input-field__input');\r\n let questionRowId = cell.id;\r\n questionRowId = questionRowId.replace(/\\D/g, '');\r\n\r\n addAnswer(cellInput.id, '', '', skipped);\r\n\r\n if (isChecked) {\r\n cellInput.value = '';\r\n input.disableInputField(cellInput);\r\n sectionQuestionCount[sectionID][questionSetId][questionRowId].leaveblank = true;\r\n } else {\r\n input.enableInputField(cellInput);\r\n sectionQuestionCount[sectionID][questionSetId][questionRowId].leaveblank = false;\r\n }\r\n });\r\n });\r\n questionSetActionButtons.forEach(btn => {\r\n if (e.target.checked) {\r\n btn.classList.add('disabled');\r\n } else {\r\n btn.classList.remove('disabled');\r\n }\r\n });\r\n }\r\n\r\n if (hideOrShowStatus === 'hide') {\r\n toggleUnansweredQuestionFilter(hideOrShowStatus);\r\n }\r\n\r\n tableOfContents.showUnansweredQuestionCount();\r\n\r\n return;\r\n }\r\n\r\n const tagName = e.target.tagName;\r\n const type = e.target.type;\r\n\r\n if (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') {\r\n let questionDiv = e.target.closest('.question');\r\n if (!questionDiv) questionDiv = e.target.closest('.grid__cell');\r\n\r\n let sectionDiv;\r\n let questionSetDiv;\r\n let sectionId;\r\n let setId;\r\n let questionId;\r\n let conditionalQuestions;\r\n\r\n if (questionDiv) {\r\n sectionDiv = e.target.closest('.assessment__section');\r\n sectionId = sectionDiv.id.replace('section', '');\r\n\r\n const isCustomSection = customSectionIds.includes(sectionId);\r\n if (isCustomSection) return;\r\n\r\n questionSetDiv = e.target.closest('.questionSet');\r\n setId = questionSetDiv.id.replace('set', '');\r\n questionId = questionDiv ? questionDiv.id.replace('question', '') : null;\r\n conditionalQuestions = questionId ? assessment.getConditionalQuestions(questionId) : null;\r\n }\r\n\r\n const answerId = e.target.id;\r\n\r\n let answer;\r\n\r\n if (type === 'checkbox') {\r\n answer = e.target.checked === true ? '1' : '0';\r\n addAnswer(answerId, answer);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = e.target.checked === true ? true : false;\r\n\r\n const questionIdCategory = planValidation.findQuestionIdCategory(questionId);\r\n\r\n let assessmentValidationCheck = planValidation.returnAssessmentValidationData();\r\n\r\n if (questionIdCategory !== 'Variable not found in the object' && questionIdCategory !== 'noSupport') {\r\n planValidation.updateAssessmentValidationProperty(sectionId, questionIdCategory, e.target.checked);\r\n }\r\n\r\n if (questionIdCategory === 'noSupport') {\r\n planValidation.updateAssessmentValidationProperty(sectionId, 'noSupport', true);\r\n\r\n for (const key in assessmentValidationCheck.servicesAndSupportsChecked[sectionId]) {\r\n if (key !== 'noSupport') {\r\n planValidation.updateAssessmentValidationProperty(sectionId, key, false);\r\n }\r\n }\r\n }\r\n\r\n // check attachments\r\n const attachmentBtn = e.target.parentElement.parentElement.querySelector('.attachmentBtn');\r\n if (attachmentBtn) {\r\n const text = attachmentBtn.textContent;\r\n const match = text.match(/\\((\\d+)\\)/);\r\n if (match) {\r\n const number = parseInt(match[1], 10);\r\n if (answer === '1' && number === 0) {\r\n attachmentBtn.classList.add('error');\r\n } else {\r\n attachmentBtn.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n // checks the status of the buttons and adds/removes error class if needed for specific section\r\n planValidation.servicesAndSupportsBtnCheck(sectionId);\r\n\r\n // checks entire assessments for validation errors\r\n planValidation.updatedAssessmenteValidation();\r\n }\r\n if (type === 'radio') {\r\n const radioLabelText = e.target.nextSibling.innerHTML;\r\n answer = radioLabelText === 'yes' ? '1' : '0';\r\n addAnswer(answerId, answer);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = true;\r\n }\r\n if (type === 'text' || type === 'textarea') {\r\n answer = e.target.value;\r\n\r\n const questionText = e.target.parentElement.parentElement.querySelector('.question__text');\r\n\r\n if (answer !== '') {\r\n await addAnswer(answerId, answer);\r\n\r\n if (!conditionalQuestions || conditionalQuestions.length === 0) {\r\n if (!sectionQuestionCount[sectionId][setId][questionId]) return;\r\n sectionQuestionCount[sectionId][setId][questionId].answered = true;\r\n }\r\n\r\n if (questionText.textContent === 'List other tools:') {\r\n e.target.parentElement.classList.remove('error');\r\n }\r\n } else {\r\n await addAnswer(answerId);\r\n\r\n if (!conditionalQuestions || conditionalQuestions.length === 0) {\r\n if (!sectionQuestionCount[sectionId][setId][questionId]) return;\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n }\r\n\r\n if (questionText.textContent === 'List other tools:') {\r\n e.target.parentElement.classList.add('error');\r\n }\r\n }\r\n\r\n if (sectionId === '41') {\r\n //await planValidation.updateAnswerWorkingSection(assessmentId);\r\n tableOfContents.showUnansweredQuestionCount();\r\n }\r\n }\r\n if (type === 'select-one') {\r\n if (e.target.id === 'pathDropdown') return;\r\n\r\n const selectedOption = e.target.options[e.target.selectedIndex];\r\n answer = selectedOption.value;\r\n\r\n if (answer !== '') {\r\n addAnswer(answerId, answer);\r\n if (!conditionalQuestions || conditionalQuestions.length === 0) {\r\n if (!sectionQuestionCount[sectionId][setId][questionId]) return;\r\n sectionQuestionCount[sectionId][setId][questionId].answered = true;\r\n }\r\n\r\n planValidation.updateAnswerWorkingSection(assessmentId);\r\n } else {\r\n addAnswer(answerId);\r\n if (!conditionalQuestions || conditionalQuestions.length === 0) {\r\n if (!sectionQuestionCount[sectionId][setId][questionId]) return;\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n }\r\n\r\n planValidation.updateAnswerWorkingSection(assessmentId);\r\n }\r\n }\r\n if (type === 'date') {\r\n answer = e.target.value;\r\n\r\n if (answer !== '') {\r\n addAnswer(answerId, answer);\r\n } else {\r\n addAnswer(answerId);\r\n }\r\n }\r\n\r\n if (conditionalQuestions && conditionalQuestions.length > 0) {\r\n toggleConditionalQuestion(answer, type, conditionalQuestions);\r\n return;\r\n }\r\n\r\n markUnansweredQuestions();\r\n\r\n if (type === 'textarea') {\r\n if (!questionSetDiv.classList.contains('questionSet__grid')) {\r\n const hideCheckbox = answer !== '' ? true : false;\r\n toggleIntentionallyBlankCheckbox(answerId, setId, hideCheckbox);\r\n } else {\r\n const setGrid = questionSetDiv.querySelector('.grid');\r\n if (setGrid.classList.contains('awnsered')) {\r\n toggleIntentionallyBlankCheckbox(answerId, setId, true);\r\n } else {\r\n toggleIntentionallyBlankCheckbox(answerId, setId, false);\r\n }\r\n }\r\n }\r\n\r\n tableOfContents.showUnansweredQuestionCount();\r\n\r\n return;\r\n }\r\n }\r\n\r\n // Sections\r\n //------------------------------------\r\n function addSection({ order, title, id, applicable, isAssessment }) {\r\n const isCustomSection = customSectionIds.includes(id);\r\n let markup;\r\n\r\n if (!isCustomSection) {\r\n markup = buildSectionMarkup({ title, id, applicable, isAssessment });\r\n }\r\n\r\n if (!sections[order]) sections[order] = { id, markup };\r\n }\r\n function buildSectionMarkup({ title, id, applicable, isAssessment }) {\r\n const section = document.createElement('div');\r\n section.classList.add('assessment__section');\r\n section.id = `section${id}`;\r\n\r\n const sectionHeading = document.createElement('div');\r\n sectionHeading.classList.add('sectionHeading');\r\n sectionHeading.id = `sec${id}`;\r\n\r\n const sectionHeadingInner = document.createElement('div');\r\n sectionHeadingInner.classList.add('sectionHeading__inner');\r\n\r\n const applicableCheckbox = input.buildNativeCheckbox({\r\n id: `applicable${id}`,\r\n isChecked: applicable,\r\n isDisabled: false,\r\n className: 'applicableCheckbox',\r\n callback: e => {\r\n if (e.target.checked) {\r\n section.classList.remove('nonApplicable');\r\n } else {\r\n section.classList.add('nonApplicable');\r\n }\r\n\r\n assessment.toggleIsSectionApplicable(id, e.target.checked);\r\n },\r\n });\r\n\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(applicableCheckbox);\r\n }\r\n\r\n const sectionTitle = document.createElement('h2');\r\n sectionTitle.innerText = title;\r\n\r\n if (isAssessment === 'Y') {\r\n sectionHeadingInner.appendChild(applicableCheckbox);\r\n if (!applicable) {\r\n section.classList.add('nonApplicable');\r\n }\r\n }\r\n\r\n sectionHeadingInner.appendChild(sectionTitle);\r\n sectionHeading.appendChild(sectionHeadingInner);\r\n section.appendChild(sectionHeading);\r\n\r\n if (title === 'WORKING/ NOT WORKING') {\r\n const sectionPrompt = document.createElement('p');\r\n sectionPrompt.classList.add('sectionPrompt');\r\n sectionPrompt.innerText = 'Be sure to include Working/Not Working technology solutions.';\r\n section.appendChild(sectionPrompt);\r\n }\r\n\r\n observer.observe(section);\r\n\r\n return section;\r\n }\r\n function buildSectionFooter(id) {\r\n const footer = document.createElement('div');\r\n footer.classList.add('sectionFooter');\r\n\r\n const planStatus = plan.getPlanStatus();\r\n const planActiveStatus = plan.getPlanActiveStatus();\r\n let readOnly;\r\n\r\n if (planActiveStatus && planStatus === 'D' && $.session.planUpdate) {\r\n readOnly = false;\r\n } else {\r\n readOnly = true;\r\n }\r\n\r\n //number of paid supports attached to this section\r\n let assessmentValidationCheck = planValidation.returnAssessmentValidationData();\r\n\r\n let paidSupportCount = assessmentValidationCheck.servicesAndSupports.paidSupportCounts[id] || 0;\r\n let additionalSupportCount = assessmentValidationCheck.servicesAndSupports.additionalSupportCounts[id] || 0;\r\n let professionalReferralCounts = assessmentValidationCheck.servicesAndSupports.professionalReferralCounts[id] || 0;\r\n let potentialOutcomeCount = assessmentValidationCheck.servicesAndSupports.potentialOutcomeCounts[id] || 0;\r\n\r\n // returns true if the section has been checked\r\n let paidSupportChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].paidSupport;\r\n let additionalSupportChecked =\r\n assessmentValidationCheck.servicesAndSupportsChecked[id].naturalSupport ||\r\n assessmentValidationCheck.servicesAndSupportsChecked[id].technology ||\r\n assessmentValidationCheck.servicesAndSupportsChecked[id].communityResource;\r\n let professionalReferralChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].professionalReferral;\r\n let potentialOutcomeChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].potentialOutcome;\r\n\r\n const outcomesBtn = button.build({\r\n //text: `Add Outcome (${potentialOutcomeCount})`,\r\n text: `Add Outcome`,\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `outcomesBtn${id}`,\r\n callback: () => {\r\n planOutcomes.showAddNewOutcomePopup(id, charLimits.outcomes);\r\n },\r\n });\r\n const paidSupportBtn = button.build({\r\n //text: `Add Paid Support (${paidSupportCount})`,\r\n text: 'Add Paid Support',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `paidSupportBtn${id}`,\r\n callback: () => {\r\n servicesSupports.showAddPaidSupportPopup({\r\n popupData: { assessmentAreaId: id },\r\n isNew: true,\r\n fromAssessment: true,\r\n charLimits: charLimits.servicesSupports,\r\n });\r\n },\r\n });\r\n const additionalSupportBtn = button.build({\r\n /*text: `Add Additional Support (${additionalSupportCount})`,*/\r\n text: 'Add Additional Support',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `additionalSupportBtn${id}`,\r\n callback: () => {\r\n servicesSupports.showAddAdditionalSupportPopup(\r\n { assessmentAreaId: id },\r\n true,\r\n true,\r\n charLimits.servicesSupports,\r\n );\r\n },\r\n });\r\n const profRefBtn = button.build({\r\n /*text: `Add Professional Referral (${professionalReferralCounts})`,*/\r\n text: 'Add Professional Referral',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `profRefBtn${id}`,\r\n callback: () => {\r\n servicesSupports.showAddProfessionalReferralPopup(\r\n { assessmentAreaId: id },\r\n true,\r\n true,\r\n charLimits.servicesSupports,\r\n );\r\n },\r\n });\r\n\r\n if (readOnly) {\r\n outcomesBtn.classList.add('disabled');\r\n paidSupportBtn.classList.add('disabled');\r\n additionalSupportBtn.classList.add('disabled');\r\n profRefBtn.classList.add('disabled');\r\n }\r\n\r\n //Add error class to buttons that are checked and have 0 outcomes attached to them\r\n if (paidSupportChecked && paidSupportCount === 0) {\r\n paidSupportBtn.classList.add('error');\r\n planValidation.updateAssessmentValidationSection('complete', false);\r\n }\r\n\r\n if (additionalSupportChecked && additionalSupportCount === 0) {\r\n additionalSupportBtn.classList.add('error');\r\n planValidation.updateAssessmentValidationSection('complete', false);\r\n }\r\n\r\n if (professionalReferralChecked && professionalReferralCounts === 0) {\r\n profRefBtn.classList.add('error');\r\n planValidation.updateAssessmentValidationSection('complete', false);\r\n }\r\n\r\n if (potentialOutcomeChecked && potentialOutcomeCount === 0) {\r\n outcomesBtn.classList.add('error');\r\n planValidation.updateAssessmentValidationSection('complete', false);\r\n }\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(outcomesBtn);\r\n btnWrap.appendChild(paidSupportBtn);\r\n btnWrap.appendChild(additionalSupportBtn);\r\n btnWrap.appendChild(profRefBtn);\r\n\r\n footer.appendChild(btnWrap);\r\n\r\n return footer;\r\n }\r\n\r\n // Sub Sections\r\n //------------------------------------\r\n function addSubSection(order, title, id, sectionId) {\r\n const markup = buildSubSectionMarkup(title, id);\r\n\r\n if (!subSections[sectionId]) subSections[sectionId] = {};\r\n if (!subSections[sectionId][order]) subSections[sectionId][order] = { id, markup };\r\n if (title.match(/Specialized tools*/g)) subSectionsWithAttachments.push(id);\r\n }\r\n function buildSubSectionMarkup(title, id) {\r\n const subSection = document.createElement('div');\r\n subSection.classList.add('assessment__subSection');\r\n\r\n const subSectionHeading = document.createElement('h2');\r\n // subSectionHeading.innerHTML = `${title}`;\r\n subSectionHeading.innerHTML = `${title}`;\r\n subSectionHeading.classList.add('subSectionHeading');\r\n subSectionHeading.id = `subsec${id}`;\r\n\r\n subSection.appendChild(subSectionHeading);\r\n\r\n return subSection;\r\n }\r\n\r\n // Question Sets & Grids\r\n //------------------------------------\r\n // Grids\r\n //---------\r\n async function deleteSelectedRows(grid, gridBody, questionSetId) {\r\n const planId = plan.getCurrentPlanId();\r\n const successfulDelete = await assessment.deleteGridRows(planId, questionSetId, [selectedRow.id]);\r\n gridBody.removeChild(selectedRow.target);\r\n addAnswer(selectedRow.id);\r\n\r\n //* TEMP -REMOVE THIS ONCE HANDELED IN BACKEND\r\n updateRowOrderAfterDelete(grid, questionSetId);\r\n //* END TEMP\r\n }\r\n function buildGridHeaderRow() {\r\n const gridHeaderRow = document.createElement('div');\r\n gridHeaderRow.classList.add('grid__row', 'grid__rowHeader');\r\n return gridHeaderRow;\r\n }\r\n function buildGridHeaderCell(text, prompt) {\r\n const gridHeaderCell = document.createElement('div');\r\n gridHeaderCell.classList.add('grid__cell');\r\n gridHeaderCell.innerHTML = `

    ${text}

    `;\r\n gridHeaderCell.innerHTML += `

    ${prompt}

    `;\r\n\r\n if (text.toLowerCase().includes('date')) {\r\n gridHeaderCell.setAttribute('data-cellType', 'date');\r\n }\r\n return gridHeaderCell;\r\n }\r\n function buildGridRow(rok) {\r\n const gridRow = document.createElement('div');\r\n gridRow.classList.add('grid__row');\r\n gridRow.id = `roworder${rok}`;\r\n return gridRow;\r\n }\r\n function buildGridRowCell(data) {\r\n const { answerStyle, answerId, answerText, questionRowId, colName } = data;\r\n\r\n const gridCell = document.createElement('div');\r\n gridCell.classList.add('grid__cell');\r\n gridCell.id = `question${questionRowId}`;\r\n\r\n let questionInput;\r\n let hasStaticText;\r\n\r\n let textAreaCharLimit = 10000;\r\n\r\n switch (answerStyle) {\r\n case 'TEXTAREA': {\r\n // For text areas with colName \"What’s Working\" and \"What's Not Working\"\r\n if (colName.trim().split(' ').pop() === 'Working') {\r\n textAreaCharLimit = 1000;\r\n } else if (colName === 'Who Said it?') {\r\n textAreaCharLimit = 250;\r\n }\r\n\r\n questionInput = input.build({\r\n type: 'textarea',\r\n style: 'secondary',\r\n id: answerId,\r\n value: answerText ? answerText : '',\r\n charLimit: textAreaCharLimit,\r\n forceCharLimit: true,\r\n classNames: ['autosize', `${data.questionId}`],\r\n });\r\n break;\r\n }\r\n case 'TEXT': {\r\n questionInput = input.build({\r\n type: 'text',\r\n style: 'secondary',\r\n id: answerId,\r\n value: answerText ? answerText : '',\r\n charLimit: 10000,\r\n forceCharLimit: true,\r\n });\r\n break;\r\n }\r\n case 'DROPDOWN': {\r\n questionInput = dropdown.build({\r\n dropdownId: answerId,\r\n style: 'secondary',\r\n });\r\n\r\n const colKey = UTIL.camelize(colName);\r\n const dataKey = colNameDropdownMap[colKey];\r\n\r\n if (!colKey || !dataKey) break;\r\n\r\n if (dataKey === 'relationships') {\r\n const includeSupports = false;\r\n planData.populateRelationshipDropdown(questionInput, answerText, includeSupports);\r\n break;\r\n }\r\n\r\n const data = assessmentDropdownData[dataKey].map(d => {\r\n let dID, dText;\r\n\r\n if (Object.keys(d)[0].toLowerCase().includes('id')) {\r\n dID = Object.keys(d)[0];\r\n dText = Object.keys(d)[1];\r\n } else {\r\n dID = Object.keys(d)[1];\r\n dText = Object.keys(d)[0];\r\n }\r\n\r\n return {\r\n value: d[dID],\r\n text: d[dText],\r\n };\r\n });\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(questionInput, data, answerText);\r\n break;\r\n }\r\n case 'DATE': {\r\n gridCell.setAttribute('data-cellType', 'date');\r\n questionInput = input.build({\r\n type: 'date',\r\n style: 'secondary',\r\n id: answerId,\r\n value: answerText,\r\n });\r\n break;\r\n }\r\n case 'STATICTEXT': {\r\n gridCell.classList.add('staticCell');\r\n gridCell.innerHTML = `

    ${answerText}

    `;\r\n hasStaticText = true;\r\n break;\r\n }\r\n }\r\n\r\n if (questionInput) gridCell.appendChild(questionInput);\r\n if (readonly || !$.session.planUpdate) {\r\n if (questionInput) input.disableInputField(questionInput);\r\n }\r\n\r\n return { markup: gridCell, hasStaticText };\r\n }\r\n function buildQuestionGridMarkup(questions, questionSetId, allowRowInsert, sectionId) {\r\n let addRowBtn, deleteRowsBtn, cancelDeleteRowsBtn;\r\n let hasStaticText = false;\r\n let areAllGridAnswersEmpty = true;\r\n let questionIds = [];\r\n\r\n const COL_NAME_MAP = {};\r\n sectionQuestionCount[sectionId][questionSetId] = {};\r\n\r\n const columnHeadings = [];\r\n const tableRowData = {};\r\n\r\n Object.entries(questions).forEach(([rowKey, rowQuestions], rowIndex) => {\r\n if (!tableRowData[rowKey]) {\r\n tableRowData[rowKey] = [];\r\n }\r\n\r\n Object.entries(rowQuestions).forEach(([questionKey, questionData], index) => {\r\n const { id: questionId, text, answerText, answerId, answerStyle, skipped } = questionData;\r\n const questionRowId = `${questionId}${rowKey}`;\r\n\r\n if (rowIndex === 0) {\r\n COL_NAME_MAP[index] = text;\r\n columnHeadings.push(text);\r\n }\r\n\r\n if (answerStyle !== 'STATICTEXT') {\r\n sectionQuestionCount[sectionId][questionSetId][questionRowId] = {\r\n answered: answerText && answerText !== '' ? true : false,\r\n required: false,\r\n rowOrder: rowKey,\r\n leaveblank: skipped === 'N' ? false : true,\r\n };\r\n }\r\n\r\n const cellData = {\r\n cellId: `question${questionRowId}`,\r\n inputId: answerId,\r\n inputValue: answerText,\r\n inputType: answerStyle,\r\n columnName: text,\r\n };\r\n\r\n if (answerStyle === 'DROPDOWN') {\r\n const colKey = UTIL.camelize(COL_NAME_MAP[index]);\r\n const dataKey = colNameDropdownMap[colKey];\r\n\r\n const data = assessmentDropdownData[dataKey].map(d => {\r\n let dID, dText;\r\n\r\n if (Object.keys(d)[0].toLowerCase().includes('id')) {\r\n dID = Object.keys(d)[0];\r\n dText = Object.keys(d)[1];\r\n } else {\r\n dID = Object.keys(d)[1];\r\n dText = Object.keys(d)[0];\r\n }\r\n\r\n return {\r\n value: d[dID],\r\n text: d[dText],\r\n };\r\n });\r\n\r\n cellData.inputData = data;\r\n }\r\n\r\n tableRowData[rowKey].push(cellData);\r\n });\r\n });\r\n\r\n const grid = document.createElement('div');\r\n grid.classList.add('grid');\r\n\r\n const gridBody = document.createElement('div');\r\n gridBody.classList.add('grid__body');\r\n\r\n if (isSortable) {\r\n new Sortable(gridBody, {\r\n handle: '.dragHandle',\r\n draggable: '>.grid__row',\r\n onSort: evt => {\r\n const gridCells = [...evt.item.querySelectorAll('.input-field__input')];\r\n\r\n let cellIds = gridCells.map(cell => cell.id);\r\n cellIds = cellIds.join(',');\r\n\r\n const oldPos = evt.oldIndex + 1;\r\n const newPos = evt.newIndex + 1;\r\n\r\n evt.item.id = `roworder${newPos}`;\r\n\r\n assessmentAjax.updateAssessmentAnswerRowOrder({\r\n token: $.session.Token,\r\n assessmentId: parseInt(assessmentId),\r\n questionSetId: parseInt(questionSetId),\r\n answerIds: cellIds,\r\n oldPos: parseInt(oldPos),\r\n newPos: parseInt(newPos),\r\n });\r\n\r\n const rows = [...gridBody.querySelectorAll('.grid__row')];\r\n rows.forEach((row, i) => {\r\n const order = parseInt(row.id.replaceAll('roworder', ''));\r\n // check row for gap in order\r\n if (order !== i + 1) {\r\n // update row id\r\n row.id = `roworder${i + 1}`;\r\n }\r\n // if no gap do nothing\r\n });\r\n },\r\n });\r\n\r\n grid.classList.add('sortableTable');\r\n }\r\n\r\n let isLeftBlankCheckboxChecked = [];\r\n const rowOrderKeys = Object.keys(questions);\r\n rowOrderKeys.forEach((rok, rowIndex) => {\r\n const gridHeaderRow = buildGridHeaderRow();\r\n const gridRow = buildGridRow(rok);\r\n\r\n const questionOrderKeys = Object.keys(questions[rok]);\r\n questionOrderKeys.forEach((qok, questionIndex) => {\r\n const { id: questionId, text, answerText, answerId, answerStyle, prompt, skipped } = questions[rok][qok];\r\n\r\n const questionRowId = `${questionId}${rok}`;\r\n\r\n isLeftBlankCheckboxChecked.push(skipped);\r\n\r\n if (answerStyle !== 'STATICTEXT') {\r\n sectionQuestionCount[sectionId][questionSetId][questionRowId] = {\r\n answered: false,\r\n required: false,\r\n rowOrder: rok,\r\n leaveblank: skipped === 'N' ? false : true,\r\n };\r\n\r\n if (answerText && answerText !== '') {\r\n sectionQuestionCount[sectionId][questionSetId][questionRowId].answered = true;\r\n areAllGridAnswersEmpty = false;\r\n }\r\n }\r\n\r\n if (rowIndex === 0) {\r\n questionIds.push(questionId);\r\n\r\n COL_NAME_MAP[questionIndex] = text;\r\n\r\n const gridHeaderCell = buildGridHeaderCell(text, prompt);\r\n gridHeaderCell.style.width = `${100 / questionOrderKeys.length}%`;\r\n\r\n if (questionIndex === 0 && isSortable) {\r\n var td = document.createElement('div');\r\n td.classList.add('dragHandle');\r\n gridHeaderRow.appendChild(td);\r\n }\r\n\r\n gridHeaderRow.appendChild(gridHeaderCell);\r\n }\r\n\r\n const gridCell = buildGridRowCell({\r\n questionId,\r\n answerStyle,\r\n answerId,\r\n answerText,\r\n questionRowId,\r\n colName: COL_NAME_MAP[questionIndex],\r\n });\r\n gridCell.markup.style.width = `${100 / questionOrderKeys.length}%`;\r\n\r\n hasStaticText = gridCell.hasStaticText;\r\n\r\n if (questionIndex === 0 && isSortable) {\r\n var cell = document.createElement('div');\r\n cell.classList.add('dragHandle');\r\n cell.innerHTML = icons.drag;\r\n\r\n gridRow.appendChild(cell);\r\n }\r\n\r\n gridRow.appendChild(gridCell.markup);\r\n });\r\n\r\n if (rowIndex === 0) {\r\n grid.appendChild(gridHeaderRow);\r\n }\r\n gridBody.appendChild(gridRow);\r\n });\r\n rowOrderKeys.forEach((rok, rowIndex) => {\r\n const questionOrderKeys = Object.keys(questions[rok]);\r\n questionOrderKeys.forEach((qok, questionIndex) => {\r\n const { id: questionId, text, answerText, answerId, answerStyle, prompt, skipped } = questions[rok][qok];\r\n const questionRowId = `${questionId}${rok}`;\r\n\r\n if (!areAllGridAnswersEmpty && skipped === 'Y') {\r\n addAnswer(answerId, answerText, rok, 'N');\r\n sectionQuestionCount[sectionId][questionSetId][questionRowId].leaveblank = false;\r\n }\r\n });\r\n });\r\n grid.appendChild(gridBody);\r\n\r\n if (allowRowInsert === 'True') {\r\n const gridActionRow = document.createElement('div');\r\n gridActionRow.classList.add('gridActionRow');\r\n\r\n addRowBtn = button.build({\r\n text: 'Add Row',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'addRowBtn',\r\n });\r\n deleteRowsBtn = button.build({\r\n text: 'Delete Row',\r\n type: 'contained',\r\n style: 'secondary',\r\n id: 'deleteRowBtn',\r\n classNames: 'deleteRowBtn',\r\n });\r\n cancelDeleteRowsBtn = button.build({\r\n text: 'Cancel Delete',\r\n type: 'contained',\r\n style: 'secondary',\r\n id: 'cancelDeleteRowsBtn',\r\n classNames: ['cancelDeleteRowsBtn', 'hidden'],\r\n });\r\n\r\n gridActionRow.appendChild(addRowBtn);\r\n gridActionRow.appendChild(deleteRowsBtn);\r\n gridActionRow.appendChild(cancelDeleteRowsBtn);\r\n grid.appendChild(gridActionRow);\r\n\r\n let currentRowOrder;\r\n\r\n grid.addEventListener('click', async e => {\r\n const gridRows = [...grid.querySelectorAll('.grid__body .grid__row')];\r\n\r\n const target = e.target;\r\n\r\n if (deleteRowsActive && target.classList.contains('grid__row')) {\r\n if (gridRows.length === 1) return;\r\n\r\n const isSeleted = target.classList.contains('selected');\r\n const rowId = target.id.replace('roworder', '');\r\n\r\n if (!isSeleted) {\r\n const prevSelectedRow = document.querySelector('.grid__row.selected');\r\n if (prevSelectedRow) prevSelectedRow.classList.remove('selected');\r\n // set new selecrted row\r\n selectedRow = {\r\n id: rowId,\r\n target,\r\n };\r\n target.classList.add('selected');\r\n } else {\r\n target.classList.remove('selected');\r\n selectedRow = undefined;\r\n }\r\n }\r\n\r\n if (target === addRowBtn) {\r\n const gridBody = target.closest('.grid').querySelector('.grid__body');\r\n const planId = plan.getCurrentPlanId();\r\n const newRowData = await assessment.insertAssessmentGridRowAnswers(planId, questionSetId);\r\n const gridRow = document.createElement('div');\r\n gridRow.classList.add('grid__row');\r\n currentRowOrder = gridBody.querySelectorAll('.grid__row').length + 1;\r\n gridRow.id = `roworder${currentRowOrder}`;\r\n\r\n if (isSortable) {\r\n var cell = document.createElement('div');\r\n cell.classList.add('dragHandle');\r\n cell.innerHTML = icons.drag;\r\n\r\n gridRow.appendChild(cell);\r\n }\r\n\r\n newRowData.forEach((nrd, index) => {\r\n let { answerId, answerRow, answerText, answerStyle, questionId, hideOnAssessment, skipped } = nrd;\r\n const isAnswered = answerText && answerText !== '' ? true : false;\r\n const questionRowId = `${questionId}${currentRowOrder}`;\r\n if (hideOnAssessment === '1') return;\r\n\r\n sectionQuestionCount[sectionId][questionSetId][questionRowId] = {\r\n answered: false,\r\n rowOrder: currentRowOrder,\r\n leaveblank: skipped === 'N' ? false : true,\r\n };\r\n\r\n const colName = COL_NAME_MAP[index];\r\n\r\n //if (index === 0) gridRow.id = `roworder${answerRow}`;\r\n\r\n const gridCell = document.createElement('div');\r\n gridCell.classList.add('grid__cell');\r\n gridCell.id = `question${questionRowId}`;\r\n\r\n let textAreaCharLimit = 10000;\r\n\r\n switch (answerStyle) {\r\n case 'TEXTAREA': {\r\n // Handle text limit for the working/not working section\r\n if (questionId === '605' || questionId === '606') {\r\n textAreaCharLimit = 1000;\r\n } else if (questionId === '607') {\r\n textAreaCharLimit = 250;\r\n }\r\n\r\n const questionInput = input.build({\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: isAnswered ? 'autosize' : ['autosize', 'unawnsered'],\r\n id: answerId,\r\n value: answerText ? answerText : '',\r\n charLimit: textAreaCharLimit,\r\n forceCharLimit: true,\r\n attributes: [{ key: 'data-answer-row', value: answerRow }],\r\n });\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInput);\r\n }\r\n\r\n gridCell.appendChild(questionInput);\r\n break;\r\n }\r\n case 'TEXT': {\r\n const questionInput = input.build({\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: isAnswered ? 'unawnsered' : '',\r\n id: answerId,\r\n value: answerText ? answerText : '',\r\n charLimit: 1000,\r\n forceCharLimit: true,\r\n attributes: [{ key: 'data-answer-row', value: answerRow }],\r\n });\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInput);\r\n }\r\n\r\n gridCell.appendChild(questionInput);\r\n break;\r\n }\r\n case 'DROPDOWN': {\r\n const questionInput = dropdown.build({\r\n dropdownId: answerId,\r\n style: 'secondary',\r\n });\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInput);\r\n }\r\n\r\n const colKey = UTIL.camelize(colName);\r\n const dataKey = colNameDropdownMap[colKey];\r\n\r\n if (dataKey === 'relationships') {\r\n const includeSupports = false;\r\n planData.populateRelationshipDropdown(questionInput, answerText, includeSupports);\r\n gridCell.appendChild(questionInput);\r\n break;\r\n }\r\n\r\n const data = assessmentDropdownData[dataKey].map(d => {\r\n let dID, dText;\r\n\r\n if (Object.keys(d)[0].toLowerCase().includes('id')) {\r\n dID = Object.keys(d)[0];\r\n dText = Object.keys(d)[1];\r\n } else {\r\n dID = Object.keys(d)[1];\r\n dText = Object.keys(d)[0];\r\n }\r\n\r\n return {\r\n value: d[dID],\r\n text: d[dText],\r\n };\r\n });\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(questionInput, data, answerText);\r\n\r\n gridCell.appendChild(questionInput);\r\n break;\r\n }\r\n case 'DATE': {\r\n return;\r\n }\r\n }\r\n\r\n addAnswer(answerId, answerText, answerRow);\r\n\r\n gridRow.appendChild(gridCell);\r\n });\r\n\r\n gridBody.appendChild(gridRow);\r\n DOM.autosizeTextarea();\r\n\r\n let firstCol;\r\n\r\n if (isSortable) {\r\n firstCol = gridRow.children[1];\r\n } else {\r\n firstCol = gridRow.children[0];\r\n }\r\n const colInput = firstCol.querySelector('.input-field__input');\r\n colInput.focus();\r\n\r\n if (sectionId === '41') {\r\n await planValidation.updateAnswerWorkingSection(assessmentId);\r\n tableOfContents.showUnansweredQuestionCount();\r\n }\r\n }\r\n if (target === deleteRowsBtn) {\r\n if (deleteRowsActive) {\r\n await deleteSelectedRows(grid, gridBody, questionSetId);\r\n\r\n questionIds.forEach(qId => {\r\n const key = `${qId}${selectedRow.id}`;\r\n delete sectionQuestionCount[sectionId][questionSetId][key];\r\n });\r\n\r\n let isGridEmptyNow = true;\r\n\r\n Object.values(sectionQuestionCount[sectionId][questionSetId]).forEach(q => {\r\n if (q.answered) {\r\n isGridEmptyNow = false;\r\n }\r\n });\r\n\r\n if (isGridEmptyNow) {\r\n grid.classList.add('unanswered');\r\n toggleIntentionallyBlankCheckbox('', questionSetId, false);\r\n }\r\n\r\n if (sectionId === '41') {\r\n await planValidation.updateAnswerWorkingSection(assessmentId);\r\n tableOfContents.showUnansweredQuestionCount();\r\n }\r\n }\r\n\r\n currentRowOrder = gridBody.querySelectorAll('.grid__row').length + 1;\r\n deleteRowsActive = !deleteRowsActive;\r\n\r\n if (deleteRowsActive) {\r\n grid.classList.add('delteActive');\r\n selectedRow = undefined;\r\n deleteRowsBtn.innerText = 'Delete Selected Row';\r\n deleteRowsBtn.classList.add('selected');\r\n cancelDeleteRowsBtn.classList.remove('hidden');\r\n } else {\r\n grid.classList.remove('delteActive');\r\n deleteRowsBtn.innerText = 'Delete Row';\r\n deleteRowsBtn.classList.remove('selected');\r\n cancelDeleteRowsBtn.classList.add('hidden');\r\n }\r\n }\r\n if (target === cancelDeleteRowsBtn) {\r\n selectedRow = undefined;\r\n deleteRowsActive = false;\r\n const row = grid.querySelector('.grid__row.selected');\r\n if (row) row.classList.remove('selected');\r\n grid.classList.remove('delteActive');\r\n deleteRowsBtn.innerText = 'Delete Row';\r\n deleteRowsBtn.classList.remove('selected');\r\n cancelDeleteRowsBtn.classList.add('hidden');\r\n }\r\n });\r\n }\r\n\r\n if (questionSetId !== '182') {\r\n // intentionally blank checkbox\r\n let isChecked = checkArrayConsistency(isLeftBlankCheckboxChecked);\r\n isChecked = !areAllGridAnswersEmpty ? 'N' : isChecked;\r\n\r\n const intentionallyBlankCheckbox = input.buildCheckbox({\r\n text: 'Intentionally left blank',\r\n id: `intentionallyBlankCheckbox${questionSetId}`,\r\n className: 'intentionallyBlankCheckbox',\r\n isChecked: isChecked === 'Y' ? true : false,\r\n isDisabled: readonly,\r\n attributes: [\r\n { key: 'data-setid', value: questionSetId },\r\n { key: 'data-isforrow', value: true },\r\n ],\r\n });\r\n\r\n grid.appendChild(intentionallyBlankCheckbox);\r\n\r\n if (!areAllGridAnswersEmpty) {\r\n input.disableInputField(intentionallyBlankCheckbox);\r\n }\r\n }\r\n\r\n if (hasStaticText) grid.classList.add('staticText');\r\n\r\n return grid;\r\n }\r\n // Text, checkboxes, radio\r\n //---------\r\n function buildTextInput(data) {\r\n const { answerId, answerText, conditionalQuestionId, conditionalAnswerText, sectionId, setId, questionId } = data;\r\n\r\n const questionInputMarkup = input.build({\r\n type: 'text',\r\n style: 'secondary',\r\n id: answerId,\r\n value: answerText,\r\n charLimit: 10000,\r\n forceCharLimit: true,\r\n });\r\n\r\n if (conditionalQuestionId !== '') {\r\n const parentQuestion = assessment.getQuestionDataById(conditionalQuestionId);\r\n const parentAnswerText = parentQuestion && parentQuestion.answerText;\r\n\r\n if (parentAnswerText !== conditionalAnswerText) {\r\n //questionInputMarkup.classList.add('disabled');\r\n input.disableInputField(questionInputMarkup);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n } else {\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInputMarkup);\r\n }\r\n sectionQuestionCount[sectionId][setId][questionId].answered = answerText === '' ? false : true;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n }\r\n } else {\r\n sectionQuestionCount[sectionId][setId][questionId].answered = answerText === '' ? false : true;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInputMarkup);\r\n }\r\n }\r\n\r\n return questionInputMarkup;\r\n }\r\n function buildTextareaInput(data) {\r\n const { answerId, answerText, conditionalQuestionId, conditionalAnswerText, sectionId, setId, questionId, text } =\r\n data;\r\n\r\n let charLimit = 10000;\r\n\r\n const questionInputMarkup = input.build({\r\n type: 'textarea',\r\n style: 'secondary',\r\n id: answerId,\r\n value: answerText,\r\n charLimit,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n\r\n if (conditionalQuestionId !== '') {\r\n const parentQuestion = assessment.getQuestionDataById(conditionalQuestionId);\r\n const parentAnswerText = parentQuestion && parentQuestion.answerText;\r\n\r\n if (parentAnswerText !== conditionalAnswerText) {\r\n input.disableInputField(questionInputMarkup);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n } else {\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInputMarkup);\r\n }\r\n sectionQuestionCount[sectionId][setId][questionId].answered = answerText === '' ? false : true;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n if (text === 'List other tools:') {\r\n if (answerText === '') {\r\n questionInputMarkup.classList.add('error');\r\n }\r\n }\r\n }\r\n } else {\r\n sectionQuestionCount[sectionId][setId][questionId].answered = answerText === '' ? false : true;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInputMarkup);\r\n }\r\n }\r\n\r\n return questionInputMarkup;\r\n }\r\n function buildCheckboxInput(data) {\r\n const {\r\n answerId,\r\n answerText,\r\n conditionalQuestionId,\r\n conditionalAnswerText,\r\n readOnly,\r\n sectionId,\r\n setId,\r\n questionId,\r\n } = data;\r\n\r\n const isChecked = answerText && answerText === '1' ? true : false;\r\n\r\n const questionIdCategory = planValidation.findQuestionIdCategory(questionId);\r\n\r\n if (questionIdCategory !== 'Variable not found in the object' && questionIdCategory !== 'noSupport') {\r\n planValidation.updateAssessmentValidationProperty(sectionId, questionIdCategory, isChecked);\r\n }\r\n\r\n const questionInputMarkup = input.buildNativeCheckbox({\r\n id: answerId,\r\n isChecked,\r\n isDisabled: readOnly,\r\n });\r\n\r\n if (conditionalQuestionId !== '') {\r\n const parentQuestion = assessment.getQuestionDataById(conditionalQuestionId);\r\n const parentAnswerText = parentQuestion && parentQuestion.answerText;\r\n\r\n if (parentAnswerText !== conditionalAnswerText) {\r\n //questionInputMarkup.classList.add('disabled');\r\n input.disableInputField(questionInputMarkup);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n } else {\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInputMarkup);\r\n }\r\n sectionQuestionCount[sectionId][setId][questionId].answered = isChecked;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n }\r\n } else {\r\n sectionQuestionCount[sectionId][setId][questionId].answered = isChecked;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInputMarkup);\r\n }\r\n }\r\n\r\n return questionInputMarkup;\r\n }\r\n function buildRadioInput(data) {\r\n const { sectionId, setId, questionId, answerOptions, answerId, answerText, readOnly } = data;\r\n\r\n const questionInputMarkup = document.createElement('div');\r\n questionInputMarkup.classList.add('radioWrap');\r\n\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n\r\n const options = answerOptions.split(',');\r\n options.forEach(option => {\r\n const btnOpts = {\r\n style: 'secondary',\r\n name: questionId,\r\n id: answerId,\r\n isDisabled: readOnly,\r\n };\r\n\r\n if (answerText === option) {\r\n btnOpts.isChecked = true;\r\n sectionQuestionCount[sectionId][setId][questionId].answered = true;\r\n }\r\n\r\n switch (option) {\r\n case '0': {\r\n btnOpts.text = 'no';\r\n break;\r\n }\r\n case '1': {\r\n btnOpts.text = 'yes';\r\n break;\r\n }\r\n case '2': {\r\n btnOpts.text = 'N/A';\r\n break;\r\n }\r\n default: {\r\n btnOpts.text = option;\r\n break;\r\n }\r\n }\r\n\r\n const radioInput = input.buildRadio(btnOpts);\r\n questionInputMarkup.appendChild(radioInput);\r\n });\r\n\r\n const eraser = document.createElement('div');\r\n eraser.innerHTML += icons.eraser;\r\n questionInputMarkup.appendChild(eraser);\r\n\r\n eraser.addEventListener('click', () => {\r\n // clear out answer\r\n addAnswer(answerId, '');\r\n // mark unanswered\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n // clear radios\r\n const radios = [...questionInputMarkup.querySelectorAll('input')];\r\n radios.forEach(radio => (radio.checked = false));\r\n // clear conditionals\r\n const conditionalQuestions = assessment.getConditionalQuestions(questionId);\r\n toggleConditionalQuestion('', 'radio', conditionalQuestions);\r\n });\r\n\r\n return questionInputMarkup;\r\n }\r\n function buildDateInput(data) {\r\n const { answerId, answerText, sectionId, setId, questionId } = data;\r\n\r\n const questionInputMarkup = input.build({\r\n type: 'date',\r\n style: 'secondary',\r\n id: answerId,\r\n value: answerText,\r\n });\r\n\r\n sectionQuestionCount[sectionId][setId][questionId].answered = answerText === '' ? false : true;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n\r\n return questionInputMarkup;\r\n }\r\n function buildQuestionMarkup(setId, questionData, sectionId, readOnly, subSectionId) {\r\n const {\r\n answerOptions,\r\n answerStyle,\r\n answerText,\r\n answerId,\r\n conditionalAnswerText,\r\n conditionalQuestionId,\r\n id: questionId,\r\n prompt,\r\n requiredAnswer,\r\n text,\r\n skipped,\r\n } = questionData;\r\n\r\n let addAttachmentButton = false;\r\n\r\n if (subSectionId && subSectionsWithAttachments.includes(subSectionId)) addAttachmentButton = true;\r\n\r\n sectionQuestionCount[sectionId][setId][questionId] = {\r\n answered: null,\r\n required: null,\r\n leaveblank: skipped === 'N' ? false : true,\r\n };\r\n\r\n const question = document.createElement('div');\r\n question.classList.add('question');\r\n question.id = `question${questionId}`;\r\n if (conditionalQuestionId !== '') {\r\n question.classList.add('conditional');\r\n }\r\n\r\n let questionInputMarkup;\r\n\r\n switch (answerStyle) {\r\n case 'TEXT': {\r\n questionInputMarkup = buildTextInput({\r\n answerId,\r\n answerText,\r\n conditionalQuestionId,\r\n conditionalAnswerText,\r\n sectionId,\r\n setId,\r\n questionId,\r\n });\r\n question.innerHTML = `

    ${text}

    `;\r\n if (prompt) question.innerHTML += `

    ${prompt}

    `;\r\n question.appendChild(questionInputMarkup);\r\n break;\r\n }\r\n case 'TEXTAREA': {\r\n questionInputMarkup = buildTextareaInput({\r\n answerId,\r\n answerText,\r\n conditionalQuestionId,\r\n conditionalAnswerText,\r\n sectionId,\r\n setId,\r\n questionId,\r\n text,\r\n });\r\n question.innerHTML = `

    ${text}

    `;\r\n if (prompt) question.innerHTML += `

    ${prompt}

    `;\r\n question.appendChild(questionInputMarkup);\r\n\r\n // intentionally blank checkbox\r\n if (text !== 'List other tools:') {\r\n const intentionallyBlankCheckbox = input.buildCheckbox({\r\n text: 'Intentionally left blank',\r\n id: `intentionallyBlankCheckbox${answerId}`,\r\n className: 'intentionallyBlankCheckbox',\r\n isChecked: skipped === 'Y' ? true : false,\r\n isDisabled: readOnly,\r\n attributes: [\r\n { key: 'data-setid', value: setId },\r\n { key: 'data-sectionid', value: sectionId },\r\n { key: 'data-questionid', value: questionId },\r\n { key: 'data-answerid', value: answerId },\r\n { key: 'data-isforrow', value: false },\r\n ],\r\n });\r\n question.appendChild(intentionallyBlankCheckbox);\r\n\r\n if (answerText) {\r\n input.disableInputField(intentionallyBlankCheckbox);\r\n }\r\n\r\n if (skipped === 'Y') {\r\n input.disableInputField(questionInputMarkup);\r\n question.classList.add('intentionallyDisabled');\r\n }\r\n }\r\n\r\n break;\r\n }\r\n case 'CHECKOPTION': {\r\n questionInputMarkup = buildCheckboxInput({\r\n answerId,\r\n answerText,\r\n conditionalQuestionId,\r\n conditionalAnswerText,\r\n readOnly,\r\n sectionId,\r\n setId,\r\n questionId,\r\n });\r\n question.appendChild(questionInputMarkup);\r\n question.innerHTML += `

    ${text}

    `;\r\n if (prompt) question.innerHTML += `

    ${prompt}

    `;\r\n\r\n if (addAttachmentButton) {\r\n const planId = plan.getCurrentPlanId();\r\n const questionAttachment = new planAttachment.PlanAttachment('', questionId, planId);\r\n const attachButton = questionAttachment.attachmentButton;\r\n question.appendChild(attachButton);\r\n\r\n const text = attachButton.textContent;\r\n const match = text.match(/\\((\\d+)\\)/);\r\n if (match) {\r\n const number = parseInt(match[1], 10);\r\n if (answerText === '1' && number === 0) {\r\n attachButton.classList.add('error');\r\n } else {\r\n attachButton.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n break;\r\n }\r\n case 'RADIO': {\r\n question.innerHTML += `

    ${text}

    `;\r\n if (prompt) question.innerHTML += `

    ${prompt}

    `;\r\n questionInputMarkup = buildRadioInput({\r\n sectionId,\r\n setId,\r\n questionId,\r\n answerOptions,\r\n answerId,\r\n answerText,\r\n readOnly,\r\n });\r\n question.appendChild(questionInputMarkup);\r\n break;\r\n }\r\n case 'DATE': {\r\n questionInputMarkup = buildDateInput({\r\n answerId,\r\n answerText,\r\n sectionId,\r\n setId,\r\n questionId,\r\n });\r\n question.innerHTML = `

    ${text}

    `;\r\n\r\n if (prompt) {\r\n question.innerHTML += `

    ${prompt}

    `;\r\n }\r\n\r\n question.appendChild(questionInputMarkup);\r\n }\r\n\r\n default: {\r\n break;\r\n }\r\n }\r\n\r\n return question;\r\n }\r\n // question\r\n function buildQuestionSetMarkup(setType, id) {\r\n const questionSet = document.createElement('div');\r\n questionSet.id = `set${id}`;\r\n questionSet.classList.add('questionSet', `questionSet__${setType.toLowerCase()}`);\r\n questionSet.setAttribute('data-set-type', setType.toLowerCase());\r\n return questionSet;\r\n }\r\n function addQuestionSet({ questions, ...setData }, readOnly) {\r\n const { id: setId, sectionId, subsectionId, order, setType, allowRowInsert } = setData;\r\n\r\n if (!sectionQuestionCount[sectionId]) sectionQuestionCount[sectionId] = {};\r\n sectionQuestionCount[sectionId][setId] = {};\r\n\r\n const questionSetWrap = buildQuestionSetMarkup(setType, setId);\r\n\r\n if (setType !== 'GRID') {\r\n const questionOrderKeys = Object.keys(questions);\r\n questionOrderKeys.forEach(qoKey => {\r\n const questionWrap = buildQuestionMarkup(setId, questions[qoKey], sectionId, readOnly, subsectionId);\r\n questionSetWrap.appendChild(questionWrap);\r\n });\r\n } else {\r\n const questionGrid = buildQuestionGridMarkup(questions, setId, allowRowInsert, sectionId);\r\n questionSetWrap.appendChild(questionGrid);\r\n }\r\n\r\n if (setId === '208' || setId === '141') {\r\n // build dropdown\r\n const placeOnPathDropdown = dropdown.build({\r\n dropdownId: 'pathDropdown',\r\n label: 'Place on path to community employment',\r\n style: 'secondary',\r\n callback: async (e, selectedOption) => {\r\n await summaryAjax.updatePlaceOnPath({\r\n token: $.session.Token,\r\n anywAssessmentId: assessmentId,\r\n placeId: selectedOption.value,\r\n });\r\n },\r\n });\r\n // handle dropdown data\r\n const { dailyLifeDropdownType } = planData.getDropdownData();\r\n const data = dailyLifeDropdownType.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n // populate dropdown\r\n dropdown.populate(placeOnPathDropdown, data, additionalSummaryData.placeOnPath);\r\n // append to assessment\r\n questionSetWrap.appendChild(placeOnPathDropdown);\r\n }\r\n\r\n const belongsToSection = subsectionId ? false : true;\r\n if (belongsToSection) {\r\n if (!questionSectionSets[sectionId]) questionSectionSets[sectionId] = {};\r\n if (!questionSectionSets[sectionId][order]) {\r\n questionSectionSets[sectionId][order] = {\r\n id: setId,\r\n markup: questionSetWrap,\r\n };\r\n }\r\n } else {\r\n if (!questionSubSectionSets[subsectionId]) questionSubSectionSets[subsectionId] = {};\r\n if (!questionSubSectionSets[subsectionId][order]) {\r\n questionSubSectionSets[subsectionId][order] = {\r\n id: setId,\r\n markup: questionSetWrap,\r\n };\r\n }\r\n }\r\n }\r\n\r\n // Main\r\n //------------------------------------\r\n function addSectionQuestions(sectionId, sectionMarkup) {\r\n const questionSectionSetsOrderKeys = questionSectionSets[sectionId]\r\n ? Object.keys(questionSectionSets[sectionId])\r\n : null;\r\n if (questionSectionSetsOrderKeys) {\r\n questionSectionSetsOrderKeys.forEach(qssoKey => {\r\n const { markup: questionSetMarkup } = questionSectionSets[sectionId][qssoKey];\r\n sectionMarkup.appendChild(questionSetMarkup);\r\n });\r\n }\r\n }\r\n function addSubSectionQuestions(sectionId, sectionMarkup) {\r\n const subSectionOrderKeys = subSections[sectionId] ? Object.keys(subSections[sectionId]) : null;\r\n\r\n if (subSectionOrderKeys) {\r\n subSectionOrderKeys.forEach(ssoKey => {\r\n const { markup: subSectionMarkup, id: subSectionId } = subSections[sectionId][ssoKey];\r\n\r\n const questionSubSectionSetsOrderKeys = questionSubSectionSets[subSectionId]\r\n ? Object.keys(questionSubSectionSets[subSectionId])\r\n : null;\r\n\r\n if (questionSubSectionSetsOrderKeys) {\r\n questionSubSectionSetsOrderKeys.forEach(qssoKey => {\r\n const { markup: questionSetMarkup } = questionSubSectionSets[subSectionId][qssoKey];\r\n\r\n subSectionMarkup.appendChild(questionSetMarkup);\r\n });\r\n }\r\n\r\n sectionMarkup.appendChild(subSectionMarkup);\r\n\r\n if (sectionId !== '33' && sectionId !== '2') {\r\n const subSectionHeading = subSectionMarkup.querySelector('.subSectionHeading');\r\n const subSectionTitle = subSectionHeading.innerText;\r\n if (subSectionTitle === 'Services, Supports, Outcomes') {\r\n const footerMarkup = buildSectionFooter(sectionId);\r\n sectionMarkup.appendChild(footerMarkup);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n function build() {\r\n const sectionOrderKeys = Object.keys(sections);\r\n sectionOrderKeys.forEach(soKey => {\r\n const { id: sectionId, markup: sectionMarkup } = sections[soKey];\r\n if (sectionMarkup) {\r\n assessmentWrap.appendChild(sectionMarkup);\r\n addSectionQuestions(sectionId, sectionMarkup);\r\n addSubSectionQuestions(sectionId, sectionMarkup);\r\n }\r\n });\r\n\r\n assessmentWrap.addEventListener('change', handleAssessmentChangeEvents);\r\n assessmentWrap.addEventListener('paste', e => {\r\n setTimeout(() => {\r\n handleAssessmentChangeEvents(e);\r\n }, 100);\r\n });\r\n\r\n return assessmentWrap;\r\n }\r\n\r\n async function init(planId, readOnly) {\r\n assessmentId = planId;\r\n sections = {};\r\n subSections = {};\r\n questionSectionSets = {};\r\n questionSubSectionSets = {};\r\n sectionQuestionCount = {};\r\n subSectionsWithAttachments = [];\r\n charLimits = planData.getAllISPcharacterLimts();\r\n readonly = readOnly;\r\n assessmentValidationCheck = await planValidation.returnAssessmentValidationData();\r\n\r\n if (!$.session.planUpdate) {\r\n isSortable = false;\r\n } else {\r\n isSortable = readonly ? false : true;\r\n }\r\n\r\n assessmentDropdownData = {};\r\n assessmentDropdownData.newOrExisting = [\r\n { id: 'n', text: 'New' },\r\n { id: 'e', text: 'Existing' },\r\n ];\r\n assessmentDropdownData.relationships = [...relationshipDropdownData()];\r\n\r\n assessmentWrap = document.createElement('div');\r\n assessmentWrap.classList.add('assessment');\r\n\r\n const AdditionalSummaryData = await summaryAjax.getAdditionalAssessmentSummaryQuestions({\r\n anywAssessmentId: assessmentId,\r\n });\r\n if (AdditionalSummaryData && AdditionalSummaryData.length > 0) {\r\n additionalSummaryData = AdditionalSummaryData[0];\r\n if (additionalSummaryData.placeOnPath === '' || additionalSummaryData.placeOnPath === '0') {\r\n additionalSummaryData.placeOnPath = '%';\r\n }\r\n } else {\r\n additionalSummaryData = {\r\n aloneTimeAmount: '',\r\n providerBackUp: '',\r\n moreDetail: '',\r\n placeOnPath: '%',\r\n bestWayToConnect: '%',\r\n };\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n addSection,\r\n addSubSection,\r\n addQuestionSet,\r\n build,\r\n clearData,\r\n getSectionQuestionCount,\r\n markUnansweredQuestions,\r\n toggleUnansweredQuestionFilter,\r\n };\r\n})();\r\n","const tableOfContents = (function () {\r\n let toc;\r\n let tocInner;\r\n let sections = {};\r\n let subSections = {};\r\n\r\n // Utils\r\n //------------------------------------\r\n function clearData() {\r\n sections = {};\r\n subSections = {};\r\n }\r\n function toggleVisibility() {\r\n if (toc.classList.contains('visible')) {\r\n toc.classList.remove('visible');\r\n // document.body.style.overflow = 'auto';\r\n } else {\r\n toc.classList.add('visible');\r\n // document.body.style.overflow = 'hidden';\r\n }\r\n }\r\n function toggleApplicability(sectionId, isApplicable) {\r\n const sectionGroup = document.getElementById(`toc-sectionGroup${sectionId}`);\r\n if (!isApplicable) {\r\n sectionGroup.classList.add('nonApplicable');\r\n } else {\r\n sectionGroup.classList.remove('nonApplicable');\r\n }\r\n }\r\n function highlightLink(sectionId) {\r\n for (const key in sections) {\r\n if (sections[key].id === sectionId) {\r\n console.log(`Link for section ${sections[key].id} is highlighted`);\r\n sections[key].markup.classList.add('inView');\r\n sections[key].markup.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n })\r\n } else {\r\n sections[key].markup.classList.remove('inView');\r\n }\r\n }\r\n }\r\n\r\n // Unanswered Questions\r\n //------------------------------------\r\n function validateTableHasAtLeastOneRowAnswered(tableQuestions) {\r\n let tableHasAtLeastOneRowAnsered = false;\r\n\r\n const rowOrderKeys = Object.keys(tableQuestions);\r\n rowOrderKeys.forEach(rowOrderKey => {\r\n if (tableQuestions[rowOrderKey].atLeastOneColumnAnswered) {\r\n tableHasAtLeastOneRowAnsered = true;\r\n }\r\n });\r\n\r\n return tableHasAtLeastOneRowAnsered;\r\n }\r\n function showUnansweredQuestionCount() {\r\n const questionCountObj = mainAssessment.getSectionQuestionCount();\r\n const sectionKeys = Object.keys(questionCountObj);\r\n const sectionUnawnseredQuestions = {};\r\n\r\n sectionKeys.forEach(sectionKey => {\r\n const questionSetKeys = Object.keys(questionCountObj[sectionKey]);\r\n const section = document.getElementById(`toc-section${sectionKey}`);\r\n const numOfQuestionsUnawnseredWrapDiv = section.querySelector('.numOfQuestionsUnawnseredWrap');\r\n const numOfQuestionsUnawnseredDiv = section.querySelector('.numOfQuestionsUnawnsered');\r\n let numOfQuestionsUnawnsered = 0;\r\n let tableQuestionSets;\r\n if (!sectionUnawnseredQuestions[sectionKey]) sectionUnawnseredQuestions[sectionKey] = 0;\r\n\r\n questionSetKeys.forEach(questionSetKey => {\r\n const questionKeys = Object.keys(questionCountObj[sectionKey][questionSetKey]);\r\n\r\n questionKeys.forEach(questionKey => {\r\n const { answered, required, rowOrder, leaveblank } =\r\n questionCountObj[sectionKey][questionSetKey][questionKey];\r\n if (!rowOrder) {\r\n if (!answered && required) {\r\n if (leaveblank !== null && !leaveblank) {\r\n numOfQuestionsUnawnsered++;\r\n sectionUnawnseredQuestions[sectionKey]++;\r\n }\r\n }\r\n } else {\r\n if (!tableQuestionSets) tableQuestionSets = {};\r\n if (!tableQuestionSets[questionSetKey]) tableQuestionSets[questionSetKey] = {};\r\n if (!tableQuestionSets[questionSetKey][rowOrder]) {\r\n tableQuestionSets[questionSetKey][rowOrder] = {\r\n atLeastOneColumnAnswered: false,\r\n };\r\n if (leaveblank !== null && !leaveblank && !answered) {\r\n sectionUnawnseredQuestions[sectionKey]++;\r\n }\r\n }\r\n if (answered || leaveblank) tableQuestionSets[questionSetKey][rowOrder].atLeastOneColumnAnswered = true;\r\n }\r\n });\r\n });\r\n\r\n if (tableQuestionSets) {\r\n const tableQuestionSetsKeys = Object.keys(tableQuestionSets);\r\n if (tableQuestionSetsKeys.length > 0) {\r\n tableQuestionSetsKeys.forEach(setKey => {\r\n const tableHasAtLeastOneRowAnsered = validateTableHasAtLeastOneRowAnswered(tableQuestionSets[setKey]);\r\n if (!tableHasAtLeastOneRowAnsered) numOfQuestionsUnawnsered++;\r\n });\r\n }\r\n }\r\n\r\n if (numOfQuestionsUnawnsered > 0) {\r\n numOfQuestionsUnawnseredDiv.innerText = numOfQuestionsUnawnsered;\r\n numOfQuestionsUnawnseredWrapDiv.classList.remove('hidden');\r\n } else {\r\n numOfQuestionsUnawnseredWrapDiv.classList.add('hidden');\r\n }\r\n\r\n const isWorkingSectionComplete = planValidation.returnAssessmentValidationData();\r\n if (sectionKey === '41') {\r\n numOfQuestionsUnawnsered = 0;\r\n numOfQuestionsUnawnseredWrapDiv.classList.add('hidden');\r\n }\r\n });\r\n }\r\n\r\n // Sections\r\n //------------------------------------\r\n function buildSectionMarkup(title, id, sectionNumber, applicable) {\r\n const section = document.createElement('div');\r\n section.id = `toc-sectionGroup${id}`;\r\n section.classList.add('tableOfContents__sectionGroup');\r\n if (!applicable) {\r\n section.classList.add('nonApplicable');\r\n }\r\n\r\n const sectionHeading = document.createElement('p');\r\n sectionHeading.id = `toc-section${id}`;\r\n sectionHeading.classList.add('tableOfContents__sectionHeading');\r\n sectionHeading.innerHTML = `\r\n \r\n
    ${title} \r\n ${title.substr(0, 5 - 1) + ' …'}\r\n

    \r\n `;\r\n\r\n const tocSectionAlertDiv = document.createElement('div');\r\n tocSectionAlertDiv.classList.add('workingAlertDiv');\r\n tocSectionAlertDiv.id = `${id}alert`;\r\n tocSectionAlertDiv.innerHTML = `${icons.error}`;\r\n sectionHeading.appendChild(tocSectionAlertDiv);\r\n\r\n planValidation.createTooltip('This section is missing an Outcome, Support, or Referral', tocSectionAlertDiv);\r\n\r\n tocSectionAlertDiv.style.display = 'none';\r\n\r\n // if (title === 'WORKING/ NOT WORKING') {\r\n // const workingAlertDivCase1 = document.createElement('div');\r\n // workingAlertDivCase1.classList.add('workingAlertDivCase1');\r\n // workingAlertDivCase1.id = `workingAlert1`;\r\n // workingAlertDivCase1.innerHTML = `${icons.error}`;\r\n // sectionHeading.appendChild(workingAlertDivCase1);\r\n\r\n // planValidation.createTooltip(\r\n // \"There must be at least one record for What's Working/What's Not Working\",\r\n // workingAlertDivCase1,\r\n // );\r\n\r\n // workingAlertDivCase1.style.display = 'none';\r\n\r\n // const workingAlertDivCase2 = document.createElement('div');\r\n // workingAlertDivCase2.classList.add('workingAlertDivCase2');\r\n // workingAlertDivCase2.id = `workingAlert2`;\r\n // workingAlertDivCase2.innerHTML = `${icons.error}`;\r\n // sectionHeading.appendChild(workingAlertDivCase2);\r\n\r\n // planValidation.createTooltip(\r\n // \"Each record must include at least one 'What's Working' or 'What's Not Working', along with a 'Who Said It?' entry\",\r\n // workingAlertDivCase2,\r\n // );\r\n\r\n // workingAlertDivCase2.style.display = 'none';\r\n\r\n // if (assessmentValidationCheck.workingSectionComplete === false) {\r\n // let workingSectionCaseValue = planValidation.returnWorkingSectionCaseValue();\r\n // if (workingSectionCaseValue === 1) {\r\n // workingAlertDivCase1.style.display = 'inline-block';\r\n // } else if (workingSectionCaseValue === 2) {\r\n // workingAlertDivCase2.style.display = 'inline-block';\r\n // }\r\n // }\r\n // }\r\n\r\n section.appendChild(sectionHeading);\r\n\r\n return section;\r\n }\r\n function addSection({ order, title, id, sectionNumber, applicable }) {\r\n const markup = buildSectionMarkup(title, id, sectionNumber, applicable);\r\n\r\n if (!sections[order]) sections[order] = { id, markup };\r\n }\r\n\r\n // Sub Sections\r\n //------------------------------------\r\n function buildSubSectionMarkup(title, id) {\r\n const subSection = document.createElement('div');\r\n subSection.classList.add('tableOfContents__subSectionGroup');\r\n\r\n const subSectionHeading = document.createElement('p');\r\n subSectionHeading.classList.add('tableOfContents__subSectionHeading');\r\n subSectionHeading.innerHTML = `${title}`;\r\n\r\n subSection.appendChild(subSectionHeading);\r\n\r\n return subSection;\r\n }\r\n function addSubSection(order, title, id, sectionId) {\r\n const markup = buildSubSectionMarkup(title, id);\r\n\r\n if (!subSections[sectionId]) subSections[sectionId] = {};\r\n if (!subSections[sectionId][order]) subSections[sectionId][order] = { id, markup };\r\n }\r\n\r\n function build() {\r\n const sectionOrderKeys = Object.keys(sections);\r\n sectionOrderKeys.forEach(soKey => {\r\n const { id: sectionId, markup: sectionMarkup } = sections[soKey];\r\n tocInner.appendChild(sectionMarkup);\r\n\r\n const subSectionOrderKeys = subSections[sectionId] ? Object.keys(subSections[sectionId]) : null;\r\n if (!subSectionOrderKeys) return;\r\n\r\n subSectionOrderKeys.forEach(ssoKey => {\r\n const { markup: subSectionMarkup } = subSections[sectionId][ssoKey];\r\n sectionMarkup.appendChild(subSectionMarkup);\r\n });\r\n });\r\n\r\n return toc;\r\n }\r\n\r\n function init() {\r\n toc = document.createElement('div');\r\n toc.classList.add('tableOfContents');\r\n toc.addEventListener('click', e => {\r\n if (e.target.tagName === 'A') {\r\n toc.classList.remove('visible');\r\n }\r\n });\r\n\r\n tocInner = document.createElement('div');\r\n tocInner.classList.add('tableOfContents__inner');\r\n\r\n let assessmentValidationCheck = planValidation.returnAssessmentValidationData();\r\n\r\n const tocHeader = document.createElement('h2');\r\n tocHeader.classList.add('tableOfContents__heading');\r\n tocHeader.innerHTML = `Table Of Contents`;\r\n\r\n const tocAlertDiv = document.createElement('div');\r\n tocAlertDiv.classList.add('tocAlertDiv');\r\n tocAlertDiv.id = 'tocAlert';\r\n tocHeader.appendChild(tocAlertDiv);\r\n tocAlertDiv.innerHTML = `${icons.error}`;\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip('At least one section of the Assessment must be selected', tocAlertDiv);\r\n\r\n if (assessmentValidationCheck.hasASectionApplicable === true) {\r\n tocAlertDiv.style.display = 'none';\r\n }\r\n\r\n const tocMain = document.createElement('div');\r\n tocMain.classList.add('tableOfContents__main');\r\n\r\n const tocToggle = document.createElement('div');\r\n tocToggle.classList.add('tableOfContents__toggle');\r\n tocToggle.setAttribute('data-toggle', 'open');\r\n tocToggle.innerHTML = icons.keyArrowLeft;\r\n tocToggle.addEventListener('click', e => {\r\n const assessmentNavMarkupWrap = document.querySelector('.assessmentNavMarkupWrap');\r\n const currToggleState = e.target.dataset.toggle === 'open' ? 'open' : 'closed';\r\n\r\n if (currToggleState === 'open') {\r\n e.target.dataset.toggle = 'closed';\r\n tocHeader.innerHTML = `TOC`;\r\n toc.classList.add('toggleClosed');\r\n assessmentNavMarkupWrap.classList.add('toggleClosed');\r\n tocToggle.innerHTML = icons.keyArrowRight;\r\n } else {\r\n e.target.dataset.toggle = 'open';\r\n tocHeader.innerHTML = `Table Of Contents`;\r\n toc.classList.remove('toggleClosed');\r\n assessmentNavMarkupWrap.classList.remove('toggleClosed');\r\n tocToggle.innerHTML = icons.keyArrowLeft;\r\n }\r\n });\r\n\r\n const tocClose = document.createElement('span');\r\n tocClose.classList.add('tableOfContents__close');\r\n tocClose.innerHTML = icons.close;\r\n\r\n tocClose.addEventListener('click', () => {\r\n toc.classList.remove('visible');\r\n });\r\n\r\n tocInner.appendChild(tocClose);\r\n\r\n tocMain.appendChild(tocInner);\r\n tocMain.appendChild(tocToggle);\r\n\r\n toc.appendChild(tocHeader);\r\n toc.appendChild(tocMain);\r\n\r\n // planValidation.tocAssessmentCheck(assessmentValidationCheck);\r\n }\r\n\r\n return {\r\n init,\r\n build,\r\n addSection,\r\n addSubSection,\r\n clearData,\r\n toggleVisibility,\r\n toggleApplicability,\r\n showUnansweredQuestionCount,\r\n highlightLink,\r\n };\r\n})();\r\n","//Widget ID = 2\r\n\r\nconst cnCaseLoadSettings = (function () {\r\n // Data\r\n let CN_CASELOAD_SETTINGS;\r\n let showHide;\r\n // HTML\r\n let showHideCheckBox,\r\n viewNotesEnteredByOtherUsersCheckBox,\r\n lastNoteDaysBackInput,\r\n reviewNotesDaysBackInput,\r\n saveBtn;\r\n\r\n //settings needed:\r\n // show hide - Y/N, default Y\r\n // view notes days back - min 1, max 60, default 30\r\n // last note entered days back - min 1, max 60, default 30\r\n // view notes entered by other users (permisison based) - Y/N, default N, forced N for case notes view entered === true\r\n\r\n function getSettings() {\r\n let widgetSettings = dashboard.getWidgetSettings('2');\r\n showHide = widgetSettings.showHide;\r\n if (widgetSettings.widgetConfig === null) {\r\n CN_CASELOAD_SETTINGS = {\r\n viewNotesDaysBack: 30,\r\n lastNoteEnteredDaysBack: 30,\r\n viewEnteredByOtherUsers: 'N',\r\n };\r\n } else {\r\n CN_CASELOAD_SETTINGS = widgetSettings.widgetConfig;\r\n }\r\n }\r\n\r\n function buildCNCaseLoadSettings() {\r\n getSettings();\r\n\r\n const section = document.getElementById('CN_CaseLoad');\r\n section.classList.add('cnCaseLoad');\r\n\r\n showHideCheckBox = input.buildCheckbox({\r\n text: 'Show',\r\n style: 'secondary',\r\n isChecked: showHide === 'Y' ? true : false,\r\n });\r\n showHideCheckBox.classList.add('settingsCheckBox');\r\n\r\n viewNotesEnteredByOtherUsersCheckBox = input.buildCheckbox({\r\n text: 'View Notes Entered by Other Users',\r\n style: 'secondary',\r\n isChecked: CN_CASELOAD_SETTINGS.viewEnteredByOtherUsers === 'Y' ? true : false,\r\n });\r\n viewNotesEnteredByOtherUsersCheckBox.classList.add('settingsCheckBox');\r\n lastNoteDaysBackInput = input.build({\r\n id: 'cnCaseLoadLastNoteDaysBack',\r\n label: 'Last Note Entered Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: CN_CASELOAD_SETTINGS.lastNoteEnteredDaysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '60' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n reviewNotesDaysBackInput = input.build({\r\n id: 'cnCaseLoadLastNoteDaysBack',\r\n label: 'Review Notes Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: CN_CASELOAD_SETTINGS.viewNotesDaysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '60' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n saveBtn = button.build({\r\n id: 'cnCaseLoadSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: setSettings,\r\n });\r\n\r\n if ($.session.CaseNotesView) section.appendChild(showHideCheckBox);\r\n section.appendChild(showHideCheckBox);\r\n section.appendChild(lastNoteDaysBackInput);\r\n section.appendChild(reviewNotesDaysBackInput);\r\n if ($.session.CaseNotesViewEntered) {\r\n section.appendChild(viewNotesEnteredByOtherUsersCheckBox);\r\n } else {\r\n CN_CASELOAD_SETTINGS.viewEnteredByOtherUsers = 'N';\r\n }\r\n section.appendChild(saveBtn);\r\n\r\n eventListeners();\r\n }\r\n\r\n async function setSettings() {\r\n getInputFieldValues();\r\n const configString = JSON.stringify(CN_CASELOAD_SETTINGS);\r\n styleSaveBtnOnSave();\r\n await widgetSettingsAjax.setWidgetSettingConfig(2, configString, showHide);\r\n dashboard.refreshWidgetSettings();\r\n }\r\n\r\n function getInputFieldValues() {\r\n const newViewNotesDaysBack = parseInt(reviewNotesDaysBackInput.firstElementChild.value);\r\n const newLastNoteEnteredDaysBack = parseInt(lastNoteDaysBackInput.firstElementChild.value);\r\n let newViewEnteredByOthers = 'N';\r\n if ($.session.CaseNotesViewEntered) {\r\n newViewEnteredByOthers = viewNotesEnteredByOtherUsersCheckBox.firstElementChild.checked\r\n ? 'Y'\r\n : 'N';\r\n }\r\n\r\n if (newViewNotesDaysBack >= 1 && newViewNotesDaysBack <= 60) {\r\n CN_CASELOAD_SETTINGS.viewNotesDaysBack = newViewNotesDaysBack;\r\n }\r\n if (newLastNoteEnteredDaysBack >= 1 && newLastNoteEnteredDaysBack <= 60) {\r\n CN_CASELOAD_SETTINGS.lastNoteEnteredDaysBack = newLastNoteEnteredDaysBack;\r\n }\r\n CN_CASELOAD_SETTINGS.viewEnteredByOtherUsers = newViewEnteredByOthers;\r\n }\r\n\r\n function styleSaveBtnOnSave() {\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n }\r\n\r\n function eventListeners() {\r\n showHideCheckBox.addEventListener('change', event => {\r\n if (event.target.checked) {\r\n showHide = 'Y';\r\n } else showHide = 'N';\r\n });\r\n viewNotesEnteredByOtherUsersCheckBox.addEventListener('change', event => {\r\n if (event.target.checked && $.session.CaseNotesViewEntered) {\r\n CN_CASELOAD_SETTINGS.viewEnteredByOtherUsers = 'Y';\r\n } else CN_CASELOAD_SETTINGS.viewEnteredByOtherUsers = 'N';\r\n });\r\n }\r\n\r\n return {\r\n buildCNCaseLoadSettings,\r\n };\r\n})();\r\n","const cnProductivitySettings = (function() {\r\n //DATA\r\n let CN_PRODUCTIVITY_SETTINGS = {};\r\n let showHide\r\n //HTML ELEMENTS\r\n let showHideCheckBox;\r\n let daysBackInput;\r\n let productivityThresholdPercentage;\r\n let workHoursPerDay;\r\n let saveBtn;\r\n\r\n function getSettings() {\r\n let widgetSettings = dashboard.getWidgetSettings('1')\r\n showHide = widgetSettings.showHide\r\n if (widgetSettings.widgetConfig === null) {\r\n CN_PRODUCTIVITY_SETTINGS = {\r\n productivityThreshold: 60,\r\n daysBack: 7,\r\n workHoursPerDay: 7\r\n };\r\n } else {\r\n CN_PRODUCTIVITY_SETTINGS = widgetSettings.widgetConfig\r\n }\r\n }\r\n\r\n async function setSettings() {\r\n getInputFieldValues()\r\n const configString = JSON.stringify(CN_PRODUCTIVITY_SETTINGS);\r\n styleSaveBtnOnSave();\r\n await widgetSettingsAjax.setWidgetSettingConfig(1, configString, showHide);\r\n dashboard.refreshWidgetSettings();\r\n }\r\n\r\n function getInputFieldValues() {\r\n const newDaysBack = parseInt(daysBackInput.firstElementChild.value);\r\n const newProductivity = parseInt(productivityThresholdPercentage.firstElementChild.value);\r\n const newWorkHours = parseFloat(workHoursPerDay.firstElementChild.value);\r\n if (newDaysBack >= 1 && newDaysBack <= 60) {\r\n CN_PRODUCTIVITY_SETTINGS.daysBack = newDaysBack\r\n }\r\n if (newProductivity >= 0 && newProductivity <= 100) {\r\n CN_PRODUCTIVITY_SETTINGS.productivityThreshold = newProductivity\r\n }\r\n if (newWorkHours >= 0.1 && newWorkHours <= 24) {\r\n CN_PRODUCTIVITY_SETTINGS.workHoursPerDay = newWorkHours\r\n }\r\n }\r\n\r\n function styleSaveBtnOnSave() {\r\n saveBtn.innerText = 'saved'\r\n saveBtn.classList.add('saved')\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved')\r\n saveBtn.innerText = 'save'\r\n }, 1600)\r\n }\r\n\r\n function buildCNProductivity() {\r\n getSettings()\r\n\r\n const section = document.getElementById(\"CN_Productivity\");\r\n section.classList.add(\"cnProductivity\");\r\n const group1 = document.createElement(\"div\");\r\n group1.classList.add(\"group1\");\r\n const group2 = document.createElement(\"div\");\r\n group2.classList.add(\"group2\");\r\n const percentSymb = document.createElement(\"p\");\r\n percentSymb.innerText = \"%\";\r\n percentSymb.style.color = \"black\";\r\n percentSymb.style.position = \"absolute\";\r\n percentSymb.style.marginLeft = \"252px\";\r\n percentSymb.style.marginTop = \"-99px\";\r\n\r\n showHideCheckBox = input.buildCheckbox({\r\n text: \"Show\",\r\n className: \"showHide\",\r\n style: \"secondary\",\r\n isChecked: showHide === \"Y\" ? true : false\r\n });\r\n daysBackInput = input.build({\r\n id: \"cnProductivityDaysBack\",\r\n label: \"Days Back\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: CN_PRODUCTIVITY_SETTINGS.daysBack,\r\n attributes: [\r\n { key: \"min\", value: \"1\" },\r\n { key: \"max\", value: \"60\" }, \r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n productivityThresholdPercentage = input.build({\r\n id: \"productivityThresholdPercentage\",\r\n label: \"Productivity Threshold\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: CN_PRODUCTIVITY_SETTINGS.productivityThreshold,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n workHoursPerDay = input.build({\r\n id: \"cnProductivityWorkHoursPerDay\",\r\n label: \"Work Hours/Day\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: CN_PRODUCTIVITY_SETTINGS.workHoursPerDay,\r\n attributes: [\r\n { key: \"min\", value: \"1\" },\r\n { key: \"max\", value: \"24\" }\r\n ]\r\n });\r\n saveBtn = button.build({\r\n id: 'cnProductivitySave',\r\n text: \"Save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: setSettings\r\n })\r\n\r\n // display min a max of each input?\r\n\r\n if ($.session.CaseNotesView) section.appendChild(showHideCheckBox);\r\n group1.appendChild(daysBackInput);\r\n group1.appendChild(workHoursPerDay);\r\n group2.appendChild(productivityThresholdPercentage);\r\n section.appendChild(group1);\r\n section.appendChild(group2);\r\n section.appendChild(saveBtn);\r\n section.appendChild(percentSymb);\r\n\r\n eventListeners();\r\n }\r\n\r\n function eventListeners() {\r\n showHideCheckBox.addEventListener(\"change\", event => {\r\n if (event.target.checked) {\r\n showHide = \"Y\"\r\n } else showHide = \"N\"\r\n });\r\n }\r\n\r\n return {\r\n buildCNProductivity,\r\n setSettings\r\n };\r\n})();\r\n","//Ajax call using ASYNC AWAIT\r\nconst cnProductivitySettingsAjax = (function() {\r\n //placeholder\r\n function getCaseNoteProductivitySettings() {\r\n data = {\r\n token: $.session.Token,\r\n daysBack: daysBack,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/ /',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json'\r\n });\r\n }\r\n \r\n return {\r\n getCaseNoteProductivitySettings\r\n };\r\n})()","//Widget ID = 3\r\n\r\nconst cnRejectedSettings = (function () {\r\n // Data\r\n let CN_REJECTED_SETTINGS;\r\n let showHide;\r\n // HTML\r\n let showHideCheckBox, daysBackInput, saveBtn;\r\n\r\n function getSettings() {\r\n let widgetSettings = dashboard.getWidgetSettings('3');\r\n showHide = widgetSettings.showHide;\r\n if (widgetSettings.widgetConfig === null) {\r\n CN_REJECTED_SETTINGS = {\r\n daysBack: 60,\r\n };\r\n } else {\r\n CN_REJECTED_SETTINGS = widgetSettings.widgetConfig;\r\n }\r\n }\r\n\r\n function buildCNRejectedSettings() {\r\n getSettings();\r\n\r\n const section = document.getElementById('CN_Rejected');\r\n section.classList.add('cnRejected');\r\n\r\n showHideCheckBox = input.buildCheckbox({\r\n text: 'Show',\r\n style: 'secondary',\r\n isChecked: showHide === 'Y' ? true : false,\r\n });\r\n showHideCheckBox.classList.add('settingsCheckBox');\r\n\r\n daysBackInput = input.build({\r\n id: 'cnRejectedDaysBack',\r\n label: 'Rejected Notes Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: CN_REJECTED_SETTINGS.daysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '60' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n saveBtn = button.build({\r\n id: 'cnRejectedSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: setSettings,\r\n });\r\n\r\n if ($.session.CaseNotesView) section.appendChild(showHideCheckBox);\r\n section.appendChild(showHideCheckBox);\r\n section.appendChild(daysBackInput);\r\n\r\n section.appendChild(saveBtn);\r\n\r\n eventListeners();\r\n }\r\n\r\n async function setSettings() {\r\n getInputFieldValues();\r\n const configString = JSON.stringify(CN_REJECTED_SETTINGS);\r\n styleSaveBtnOnSave();\r\n await widgetSettingsAjax.setWidgetSettingConfig(3, configString, showHide);\r\n dashboard.refreshWidgetSettings();\r\n }\r\n\r\n function getInputFieldValues() {\r\n const newDaysBack = parseInt(daysBackInput.firstElementChild.value);\r\n\r\n if (newDaysBack >= 1 && newDaysBack <= 60) {\r\n CN_REJECTED_SETTINGS.daysBack = newDaysBack;\r\n }\r\n }\r\n\r\n function styleSaveBtnOnSave() {\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n }\r\n\r\n function eventListeners() {\r\n showHideCheckBox.addEventListener('change', event => {\r\n if (event.target.checked) {\r\n showHide = 'Y';\r\n } else showHide = 'N';\r\n });\r\n }\r\n\r\n return {\r\n buildCNRejectedSettings,\r\n };\r\n})();\r\n","//Widget ID = 4\r\n\r\nconst wfPlanSettings = (function() {\r\n // Data\r\n let WF_PLAN_SETTINGS;\r\n let showHide;\r\n // HTML\r\n let showHideCheckBox, dueDateDropdown, saveBtn;\r\n\r\n //settings needed:\r\n // show hide - Y/N, default Y\r\n // due date - dropdown with values: today, next 7 days, next 30 days, prior 7 days, prior 30 days, default today\r\n\r\n function getSettings() {\r\n let widgetSettings = dashboard.getWidgetSettings('4')\r\n showHide = widgetSettings.showHide\r\n if (widgetSettings.widgetConfig === null) {\r\n WF_PLAN_SETTINGS = {\r\n dueDate: 'today', \r\n };\r\n } else {\r\n WF_PLAN_SETTINGS = widgetSettings.widgetConfig\r\n }\r\n }\r\n\r\n\r\n function buildWfPlanSettings() {\r\n getSettings()\r\n\r\n const section = document.getElementById(\"WF_Plan\");\r\n section.classList.add(\"wfPlan\");\r\n\r\n showHideCheckBox = input.buildCheckbox({\r\n text: \"Show\",\r\n style: \"secondary\",\r\n isChecked: showHide === \"Y\" ? true : false\r\n });\r\n showHideCheckBox.classList.add('settingsCheckBox') \r\n\r\n dueDateDropdown = dropdown.build({\r\n label: \"Due Date\",\r\n style: \"secondary\",\r\n dropdownId: \"dueDateDropdown\",\r\n });\r\n\r\n let data = [\r\n {id: 1, value: 'today', text: 'Today' }, \r\n {id: 2, value: 'next 7 days', text: 'Next 7 Days' },\r\n {id: 3, value: 'next 30 days', text: 'Next 30 Days' },\r\n {id: 4, value: 'prior 7 days', text: 'Prior 7 Days' },\r\n {id: 5, value: 'prior 30 days', text: 'Prior 30 Days' }\r\n ] \r\n dropdown.populate(dueDateDropdown, data, WF_PLAN_SETTINGS.dueDate); \r\n \r\n saveBtn = button.build({\r\n id: 'wfPlanSave',\r\n text: \"Save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: setSettings\r\n })\r\n\r\n if ($.session.CaseNotesView) section.appendChild(showHideCheckBox);\r\n section.appendChild(showHideCheckBox)\r\n section.appendChild(dueDateDropdown)\r\n\r\n section.appendChild(saveBtn)\r\n\r\n eventListeners()\r\n }\r\n\r\n async function setSettings() {\r\n const configString = JSON.stringify(WF_PLAN_SETTINGS);\r\n styleSaveBtnOnSave();\r\n await widgetSettingsAjax.setWidgetSettingConfig(4, configString, showHide);\r\n dashboard.refreshWidgetSettings();\r\n } \r\n \r\n function styleSaveBtnOnSave() {\r\n saveBtn.innerText = 'saved'\r\n saveBtn.classList.add('saved')\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved')\r\n saveBtn.innerText = 'save'\r\n }, 1600)\r\n }\r\n\r\n function eventListeners() {\r\n showHideCheckBox.addEventListener(\"change\", event => {\r\n if (event.target.checked) {\r\n showHide = \"Y\"\r\n } else showHide = \"N\"\r\n });\r\n\r\n dueDateDropdown.addEventListener(\"change\", (e)=> {\r\n WF_PLAN_SETTINGS.dueDate = e.target.value; \r\n });\r\n\r\n dueDateDropdown.addEventListener(\"click\", (e)=> {\r\n e.stopPropagation(); // stop nav.js from handling the click event for this\r\n });\r\n }\r\n\r\n return { \r\n buildWfPlanSettings,\r\n }\r\n})()","const TRANS_consumerDocCard = (function () {\r\n let scheduledTimeInput, travelMinInput, addressDropdown, directionsBtn, specialInstructionsBtn, noteInput, ro;\r\n\r\n /**\r\n * @param {string} consumerId Consumer Id\r\n * @param {object} cardData Data to populate the card\r\n * @param {boolean} [ro] Read Only\r\n */\r\n function createCard(consumerId, cardData, readOnly = false) {\r\n const {\r\n firstName,\r\n lastName,\r\n middleI,\r\n address1,\r\n address2,\r\n city,\r\n state,\r\n zip,\r\n notes,\r\n scheduledTime,\r\n totalTravelTime,\r\n pickupOrder,\r\n directions,\r\n specialInstructions,\r\n riderStatus,\r\n alternateAddress,\r\n batchId\r\n } = cardData;\r\n\r\n ro = readOnly;\r\n\r\n const hasDirections = directions ? true : false;\r\n const hasSpecialInstructions = specialInstructions ? true : false;\r\n const hasAltAddress = alternateAddress ? true : false;\r\n const section = DOM.ACTIONCENTER.getAttribute('data-active-section');\r\n\r\n //! Main Card //\r\n const cardContainer = document.createElement(\"div\");\r\n cardContainer.classList.add(\"consumerCardContainer\", \"collapsable\");\r\n // cardContainer.setAttribute(\"data-alternate-address\", hasAltAddress);\r\n cardContainer.setAttribute(\"data-rider-status\", riderStatus);\r\n cardContainer.setAttribute(\"data-expanded\", \"false\");\r\n cardContainer.setAttribute(\"id\", `${consumerId}-card`);\r\n\r\n //* Card Heading (Portrait, Name, Buttons, ALT ADDRESS WARNING) //\r\n const cardHeader = document.createElement(\"div\");\r\n cardHeader.classList.add(\"consumerCardHeader\");\r\n const portraitContainer = document.createElement(\"div\");\r\n portraitContainer.classList.add('portrait')\r\n portraitContainer.innerHTML = `\r\n `;\r\n // *\r\n\r\n const altAddressWarning = document.createElement('h5');\r\n altAddressWarning.innerText = 'Alternate Address!'\r\n altAddressWarning.classList.add('altAddressWarning')\r\n\r\n const nameContainer = document.createElement(\"div\");\r\n nameContainer.classList.add(\"consumerCardName\");\r\n nameContainer.innerText = `${lastName}, ${firstName} ${middleI}`;\r\n const expandBtn = button.build({\r\n classNames: \"expandIcon\",\r\n type: \"text\",\r\n icon: \"keyArrowDown\",\r\n callback: (event) => {\r\n expandCard(event, consumerId, cardContainer);\r\n },\r\n });\r\n const attendanceIcon = riderStatus === 'P' || riderStatus === 'N' ?\r\n 'thumbUp' : riderStatus === 'A' ?\r\n 'thumbDown' : 'thumbUpDown'\r\n const attendanceBtn = button.build({\r\n classNames: 'attendanceIcon',\r\n type: \"text\",\r\n icon: attendanceIcon,\r\n callback: (event) => {\r\n updateRiderStatus(event, consumerId, cardContainer) \r\n if ((section === 'editRoute' || section === 'routeDocumentation') && $.session.billableTransportation == 'Y' && cardContainer.getAttribute(\"data-rider-status\") == 'P' && (DOM.ACTIONCENTER.getAttribute('data-active-section') === 'routeDocumentation' || DOM.ACTIONCENTER.getAttribute('data-active-section') === 'editRoute')) {\r\n billableCheckbox.style.display = 'inline-flex'; \r\n billableCheckbox.querySelector('#billableCheckbox').checked = true;\r\n setDefaultCheckForBillable(consumerId, cardContainer); \r\n }\r\n else {\r\n billableCheckbox.style.display = 'none';\r\n }\r\n },\r\n });\r\n const billableCheckbox = input.buildCheckbox({\r\n id: 'billableCheckbox',\r\n text: 'Billable',\r\n isChecked: riderStatus == 'P' ? true : false,\r\n callback: () => setCheckForBillable(event.target, consumerId, cardContainer),\r\n });\r\n\r\n const headerButtons = document.createElement(\"div\");\r\n headerButtons.classList.add(\"btnWrap\");\r\n headerButtons.appendChild(billableCheckbox);\r\n headerButtons.appendChild(expandBtn);\r\n if (!ro && section !== 'addroute') headerButtons.appendChild(attendanceBtn);\r\n cardHeader.appendChild(portraitContainer);\r\n cardHeader.appendChild(nameContainer);\r\n if (hasAltAddress) cardHeader.appendChild(altAddressWarning);\r\n cardHeader.appendChild(headerButtons);\r\n cardContainer.appendChild(cardHeader);\r\n // !\r\n\r\n /*\r\n ! Collapsed Items\r\n * update/change address (Manage route Only)\r\n * Address\r\n * Directions BTN\r\n * Special Instructions BTN\r\n * Scheduled Time\r\n * Travel Min\r\n * Note\r\n * Delete Consumer BTN\r\n */\r\n\r\n // * Address\r\n // Google Maps Search Information: https://developers.google.com/maps/documentation/urls/get-started#top_of_page\r\n const googleAddress = createGoogleAddress(address1, address2, city, state, zip)\r\n const addressDiv = document.createElement(\"a\");\r\n if (googleAddress) {\r\n addressDiv.classList.add(\"address\", \"content\", \"hidden\");\r\n addressDiv.target = \"_blank\"; // < new tab\r\n addressDiv.href = `https://www.google.com/maps/dir/?api=1&destination=${googleAddress}`;\r\n addressDiv.innerText = `${address1} ${address2}, ${city} ${state}, ${zip}`;\r\n } else {\r\n addressDiv.innerText = `This consumer does not have an assoicated address`;\r\n addressDiv.style.color = '#DB162f';\r\n }\r\n addressDiv.tabIndex = -1;\r\n //\r\n // * Directions and Special Instructions\r\n directionsBtn = button.build({\r\n text: 'Directions',\r\n style: 'secondary',\r\n type: 'contained',\r\n tabindex: -1,\r\n callback: () => {dirSpecInsPopup({\r\n type: \"directions\",\r\n address: \"\",\r\n consumerId: consumerId,\r\n btn: directionsBtn\r\n })}\r\n });\r\n if (hasDirections) directionsBtn.classList.add('attention')\r\n specialInstructionsBtn = button.build({\r\n text: 'Special Instructions',\r\n style: 'secondary',\r\n type: 'contained',\r\n tabindex: -1,\r\n callback: () => {dirSpecInsPopup({\r\n type: \"specialInstructions\",\r\n consumerId: consumerId,\r\n btn: specialInstructionsBtn\r\n })}\r\n });\r\n if (hasSpecialInstructions) specialInstructionsBtn.classList.add('attention')\r\n const dirSpecBtnWrap = document.createElement('div');\r\n dirSpecBtnWrap.classList.add('btnWrap');\r\n dirSpecBtnWrap.classList.add('dirSpecWrap');\r\n dirSpecBtnWrap.appendChild(directionsBtn);\r\n dirSpecBtnWrap.appendChild(specialInstructionsBtn);\r\n //\r\n // * Address Dropdown (if needed)\r\n addressDropdown = dropdown.build({\r\n label: 'Change Address',\r\n className: 'consumerAddressDropdown'\r\n })\r\n //* Travel time and min //\r\n const travelContainer = document.createElement(\"div\");\r\n travelContainer.classList.add(\"content\", \"travelWrap\", \"hidden\");\r\n scheduledTimeInput = input.build({\r\n id: `${consumerId}-timeInput`,\r\n label: \"Scheduled Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n tabindex: -1,\r\n value: scheduledTime\r\n });\r\n travelMinInput = input.build({\r\n id: `${consumerId}-travelMin`,\r\n label: \"Travel(Min)\",\r\n tabindex: -1,\r\n value: totalTravelTime\r\n });\r\n\r\n travelContainer.appendChild(scheduledTimeInput);\r\n travelContainer.appendChild(travelMinInput);\r\n\r\n // * Pick-up Order\r\n pickupOrderInput = input.build({\r\n id: `${consumerId}-pickupOrder`,\r\n label: \"Pick-up Order\",\r\n tabindex: -1,\r\n value: pickupOrder\r\n });\r\n\r\n pickupOrderInput.classList.add('pickuporder');\r\n\r\n // * Note\r\n noteInput = input.build({\r\n label: 'Notes',\r\n type: 'textarea',\r\n tabindex: -1,\r\n value: notes\r\n })\r\n //\r\n // * Delete Consumer\r\n const deleteConsumerBtn = button.build({\r\n id: `${consumerId}-delConsumer`,\r\n text: 'Remove Consumer',\r\n style: 'secondary',\r\n type: 'contained',\r\n tabindex: -1,\r\n callback: event => removeConsumerCard(event, consumerId, cardContainer)\r\n });\r\n const deleteConsumerBtnWrap = document.createElement('div');\r\n deleteConsumerBtnWrap.classList.add('btnWrap');\r\n deleteConsumerBtnWrap.classList.add('delConsumerBtnWrap');\r\n deleteConsumerBtnWrap.appendChild(deleteConsumerBtn);\r\n //\r\n\r\n cardContainer.appendChild(addressDiv);\r\n cardContainer.appendChild(dirSpecBtnWrap);\r\n if (section === 'editRoute' && !ro) {\r\n cardContainer.appendChild(addressDropdown)\r\n populateAddressDropdown(consumerId, addressDropdown, alternateAddress)\r\n altAddressEventListener(consumerId)\r\n }\r\n cardContainer.appendChild(travelContainer);\r\n cardContainer.appendChild(pickupOrderInput)\r\n cardContainer.appendChild(noteInput);\r\n if (!ro) cardContainer.appendChild(deleteConsumerBtnWrap);\r\n\r\n\r\n if (section === 'routeDocumentation') {\r\n // scheduledTimeInput.classList.add('disabled')\r\n // travelMinInput.classList.add('disabled')\r\n // noteInput.classList.add('disabled')\r\n pickupOrderInput.classList.add('disabled') \r\n } \r\n \r\n if (section === 'editRoute' || section === 'routeDocumentation') {\r\n if ($.session.billableTransportation == 'Y' && (riderStatus === 'P' || riderStatus === 'N')) {\r\n billableCheckbox.style.display = 'inline-flex';\r\n if (batchId != '' && batchId > 0) {\r\n billableCheckbox.classList.add('disabled');\r\n billableCheckbox.firstChild.setAttribute('disabled', true);\r\n }\r\n else {\r\n billableCheckbox.classList.remove('disabled')\r\n }\r\n }\r\n else {\r\n billableCheckbox.style.display = 'none';\r\n }\r\n } else {\r\n billableCheckbox.style.display = 'none';\r\n } \r\n\r\n eventListeners(consumerId)\r\n\r\n return cardContainer;\r\n }\r\n\r\n function altAddressEventListener(consumerId) {\r\n addressDropdown.addEventListener('change', event => {\r\n const addressCode = event.target.value;\r\n let dir, specInstr;\r\n if (addressCode !== \"\") {\r\n const altAddress = TRANS_mainLanding.getAlternateAddress(consumerId);\r\n const altAddressInfo = altAddress.filter(address => address.code === addressCode)[0];\r\n dir = altAddressInfo.directions\r\n specInstr = altAddressInfo.specialInstructions\r\n } else {\r\n dir = getSectionConsumerData(consumerId, 'defaultDirections')\r\n specInstr = getSectionConsumerData(consumerId, 'defaultSpecialInstructions')\r\n }\r\n updateSectionConsumerData({consumerId: consumerId, key: 'directions', value: dir})\r\n updateSectionConsumerData({consumerId: consumerId, key: 'specialInstructions', value: specInstr})\r\n dir === \"\" ? directionsBtn.classList.remove('attention') : directionsBtn.classList.add('attention');\r\n specInstr === \"\" ? specialInstructionsBtn.classList.remove('attention') : specialInstructionsBtn.classList.add('attention');\r\n })\r\n }\r\n\r\n function eventListeners(consumerId) {\r\n scheduledTimeInput.addEventListener('change', event => {\r\n updateSectionConsumerData({consumerId: consumerId, key: 'scheduledTime', value: event.target.value})\r\n })\r\n travelMinInput.addEventListener('change', event => {\r\n updateSectionConsumerData({consumerId: consumerId, key: 'totalTravelTime', value: event.target.value})\r\n })\r\n pickupOrderInput.addEventListener('change', event => {\r\n updateSectionConsumerData({consumerId: consumerId, key: 'pickupOrder', value: event.target.value})\r\n });\r\n noteInput.addEventListener('change', event => {\r\n updateSectionConsumerData({consumerId: consumerId, key: 'notes', value: event.target.value})\r\n });\r\n\r\n }\r\n\r\n function dirSpecInsPopup(opts) {\r\n const { type, address, consumerId, btn } = opts;\r\n const popup = POPUP.build({});\r\n const textinput = input.build({\r\n label: type === 'directions' ? \"Directions\" : \"Special Instructions\",\r\n type: 'textarea',\r\n value: getSectionConsumerData(consumerId, type)\r\n });\r\n function saveCallback() {\r\n const newVal = textinput.querySelector('textarea').value;\r\n const updateData = {consumerId: consumerId, key: type, value: newVal}\r\n updateSectionConsumerData(updateData)\r\n if (newVal === \"\") {\r\n btn.classList.remove('attention')\r\n } else btn.classList.add('attention')\r\n }\r\n const saveBtn = button.build({\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n saveCallback()\r\n }\r\n });\r\n saveBtn.style.width = '100%';\r\n if (address) {\r\n const addressDiv = document.createElement(\"a\");\r\n addressDiv.classList.add(\"address\", \"content\", \"hidden\");\r\n addressDiv.target = \"_blank\"; // < new tab\r\n addressDiv.href = `https://www.google.com/maps/dir/?api=1&destination=1+Capitol+Square+columbus+oh+43215`;\r\n addressDiv.innerText = `1 Capitol Square, Columbus, OH 43215`\r\n popup.appendChild(addressDiv)\r\n }\r\n if (ro) textinput.classList.add('disabled')\r\n popup.appendChild(textinput)\r\n if (!ro) popup.appendChild(saveBtn)\r\n POPUP.show(popup)\r\n }\r\n\r\n function createGoogleAddress(address1, address2, city, state, zip) {\r\n if (address1 === \"\" && address2 === \"\" ) return null;\r\n address1 = address1.trim();\r\n address2 = address2.trim();\r\n city = city.trim();\r\n state = state.trim();\r\n zip = zip.trim();\r\n address1.replace(/\\s/g, '+');\r\n address2.replace(/\\s/g, '+');\r\n return `${address1}+${address2}+${city}+${state}+${zip}`\r\n }\r\n\r\n function populateAddressDropdown(consumerId, addressDropdown, altAddressCode) {\r\n const addresses = TRANS_mainLanding.getAlternateAddress(consumerId);\r\n const dropdownData = []\r\n if (addresses) {\r\n addresses.forEach(address => {\r\n dropdownData.push({\r\n value: address.code,\r\n text: `Alternate Address ${address.code} - ${address.address1}`\r\n })\r\n })\r\n }\r\n dropdownData.unshift({value: \"\", text: \"Default Address\"})\r\n dropdown.populate(addressDropdown, dropdownData, altAddressCode)\r\n function addressChangeAction(event) {\r\n updateSectionConsumerData({consumerId: consumerId, key: 'alternateAddress', value: event.target.value})\r\n }\r\n\r\n addressDropdown.addEventListener('change', event => addressChangeAction(event))\r\n }\r\n\r\n function expandCard(event, consumerId, cardContainer) {\r\n const expanded = cardContainer.getAttribute(\"data-expanded\");\r\n if (expanded === \"false\") {\r\n cardContainer.setAttribute(\"data-expanded\", \"true\");\r\n // cardContainer.querySelector(\"expandIcon\").style.transform = \"rotate(-180deg)\";\r\n } else {\r\n cardContainer.setAttribute(\"data-expanded\", \"false\");\r\n // cardContainer.querySelector(\"expandIcon\").style.transform = \"rotate(0deg)\";\r\n }\r\n\r\n const content = cardContainer.querySelectorAll(\".content\");\r\n content.forEach((element) => {\r\n if (element.classList.contains(\"hidden\")) {\r\n element.classList.remove(\"hidden\");\r\n } else {\r\n element.classList.add(\"hidden\");\r\n }\r\n });\r\n }\r\n\r\n function updateRiderStatus(event, consumerId, cardContainer) {\r\n let updateData\r\n const riderStatus = cardContainer.getAttribute(\"data-rider-status\");\r\n switch (riderStatus) {\r\n case 'P':\r\n // P updates to A\r\n updateData = {consumerId: consumerId, key: 'riderStatus', value: 'A'}\r\n cardContainer.setAttribute(\"data-rider-status\", 'A');\r\n cardContainer.querySelector('.attendanceIcon').innerHTML = icons.thumbDown\r\n break;\r\n case 'A':\r\n // A updates to blank\r\n updateData = {consumerId: consumerId, key: 'riderStatus', value: ''}\r\n cardContainer.setAttribute(\"data-rider-status\", '');\r\n cardContainer.querySelector('.attendanceIcon').innerHTML = icons.thumbUpDown\r\n\r\n break;\r\n default:\r\n //blank updates to P\r\n updateData = {consumerId: consumerId, key: 'riderStatus', value: 'P'}\r\n cardContainer.setAttribute(\"data-rider-status\", 'P');\r\n cardContainer.querySelector('.attendanceIcon').innerHTML = icons.thumbUp\r\n break;\r\n }\r\n updateSectionConsumerData(updateData);\r\n }\r\n\r\n function setCheckForBillable(event, consumerId, cardContainer) {\r\n if (event.checked) {\r\n updateData = { consumerId: consumerId, key: 'riderStatus', value: 'P' }\r\n cardContainer.setAttribute(\"data-rider-status\", 'P');\r\n }\r\n else {\r\n updateData = { consumerId: consumerId, key: 'riderStatus', value: 'N' }\r\n cardContainer.setAttribute(\"data-rider-status\", 'N');\r\n }\r\n updateSectionConsumerData(updateData);\r\n }\r\n\r\n function setDefaultCheckForBillable(consumerId, cardContainer) {\r\n updateData = { consumerId: consumerId, key: 'riderStatus', value: 'P' }\r\n cardContainer.setAttribute(\"data-rider-status\", 'P');\r\n updateSectionConsumerData(updateData);\r\n }\r\n\r\n function updateSectionConsumerData(updateData) {\r\n const section = DOM.ACTIONCENTER.getAttribute('data-active-section');\r\n switch (section) {\r\n case 'addroute':\r\n TRANS_addRoute.updateConsumerData(updateData)\r\n break;\r\n case 'routeDocumentation':\r\n TRANS_routeDocumentation.updateConsumerData(updateData)\r\n break;\r\n case 'editRoute':\r\n TRANS_manageEditRoute.updateConsumerData(updateData)\r\n break;\r\n default:\r\n console.error('warning, could not determine which section this consumer was removed from')\r\n break;\r\n }\r\n }\r\n function getSectionConsumerData(consumerId, key) {\r\n const section = DOM.ACTIONCENTER.getAttribute('data-active-section');\r\n switch (section) {\r\n case 'addroute':\r\n return TRANS_addRoute.retrieveConsumerData(consumerId, key)\r\n case 'routeDocumentation':\r\n return TRANS_routeDocumentation.retrieveConsumerData(consumerId, key)\r\n case 'editRoute':\r\n return TRANS_manageEditRoute.retrieveConsumerData(consumerId, key)\r\n default:\r\n console.error('warning, could not determine which section this consumer was removed from')\r\n break;\r\n }\r\n }\r\n\r\n function removeConsumerCard(event, consumerId, cardContainer) {\r\n function accpetCallback() {\r\n cardContainer.remove();\r\n roster2.removeConsumerFromActiveConsumers(consumerId)\r\n // Section specific actions\r\n const section = DOM.ACTIONCENTER.getAttribute('data-active-section');\r\n switch (section) {\r\n case 'addroute':\r\n TRANS_addRoute.consumerRemoveAction(consumerId)\r\n break;\r\n case 'routeDocumentation':\r\n TRANS_routeDocumentation.consumerRemoveAction(consumerId)\r\n break;\r\n case 'editRoute':\r\n TRANS_manageEditRoute.consumerRemoveAction(consumerId)\r\n break;\r\n default:\r\n console.error('warning, could not determine which section this consumer was removed from')\r\n break;\r\n }\r\n }\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to remove this consumer from the route?',\r\n accept: {text: 'Yes', callback: accpetCallback},\r\n reject: {text: 'No', callback: () =>{}}\r\n })\r\n }\r\n return {\r\n createCard,\r\n };\r\n})();\r\n","const TRANS_routeDocumentation = (function () {\r\n /* Page Components\r\n Route and Vehicle Display\r\n Route/Vehicle Start/End Time and Start/End ODO\r\n Consumer Section\r\n Consumer Card\r\n Pic\r\n full name\r\n Address/Alternate Address\r\n Scheduled Time\r\n Travel Min\r\n Status\r\n Notes\r\n Directions\r\n Special Instructions\r\n Save and Cancel btns\r\n */\r\n\r\n let routeStartInput, routeEndInput, routeStartOdo, routeEndOdo, ro;\r\n let consumerDocCardBody;\r\n\r\n // * Data storage\r\n let consumersOnRecord = new Map() //{consumerId: {consumer data}}\r\n let consumersToRemove\r\n let tripInfo, tripsCompletedId, dateOfService, routeVehicle;\r\n\r\n\r\n function buildPage(params) {\r\n const column1 = document.createElement('div');\r\n column1.classList.add('col-1')\r\n const column2 = document.createElement('div');\r\n column2.classList.add('col-2')\r\n\r\n const routeVehicleDisplay = document.createElement(\"div\");\r\n const vehicleOnRoute = TRANS_mainLanding.vehicleLookup(routeVehicle)\r\n // Convert date to readable date:\r\n const readableDate = UTIL.formatDateFromIso(params.date)\r\n const otherRider = tripInfo.otherRider !== \"\" ? TRANS_mainLanding.driverLookup(tripInfo.otherRider) : \"\"\r\n let otherRiderElement = '';\r\n if (otherRider) {\r\n otherRiderElement = `

    Other Rider: ${otherRider.Last_Name}, ${otherRider.First_Name}

    `;\r\n };\r\n routeVehicleDisplay.innerHTML = `\r\n

    Route: ${params.routeName}

    \r\n

    Vehicle: ${vehicleOnRoute.vehicleDescription}

    \r\n

    Date: ${readableDate}

    \r\n ${otherRider ? otherRiderElement : ''}\r\n `;\r\n column1.appendChild(routeVehicleDisplay);\r\n\r\n // Route Documentation Card//\r\n const routeDocCard = document.createElement(\"div\");\r\n routeDocCard.classList.add(\"card\");\r\n const routeDocCardBody = document.createElement(\"div\");\r\n routeDocCardBody.classList.add(\"card__body\");\r\n routeDocCard.innerHTML = `\r\n
    Route Documentation
    \r\n `;\r\n routeDocCard.appendChild(routeDocCardBody);\r\n // inputs for route doc card\r\n routeStartInput = input.build({\r\n id: \"routeStartTime\",\r\n label: \"Route Start Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n value: tripInfo.startTime\r\n });\r\n routeEndInput = input.build({\r\n id: \"routeEndTime\",\r\n label: \"Route End Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n value: tripInfo.endTime\r\n });\r\n routeStartOdo = input.build({\r\n id: \"routeStartOdo\",\r\n type: 'number',\r\n label: \"Starting Odometer\",\r\n style: \"secondary\",\r\n value: tripInfo.odometerStart\r\n });\r\n routeEndOdo = input.build({\r\n id: \"routeEndOdo\",\r\n type: 'number',\r\n label: \"Ending Odometer\",\r\n style: \"secondary\",\r\n value: tripInfo.odometerStop\r\n });\r\n if (ro) {\r\n routeStartInput.classList.add('disabled')\r\n routeEndInput.classList.add('disabled')\r\n routeStartOdo.classList.add('disabled')\r\n routeEndOdo.classList.add('disabled')\r\n }\r\n routeDocCardBody.appendChild(routeStartInput);\r\n routeDocCardBody.appendChild(routeStartOdo);\r\n routeDocCardBody.appendChild(routeEndInput);\r\n routeDocCardBody.appendChild(routeEndOdo);\r\n column1.appendChild(routeDocCard);\r\n // ! Consumer Section //\r\n const consumerDocCard = document.createElement(\"div\");\r\n consumerDocCard.classList.add(\"card\");\r\n consumerDocCardBody = document.createElement(\"div\");\r\n consumerDocCardBody.classList.add(\"card__body\");\r\n consumerDocCard.innerHTML = `\r\n
    Consumers
    \r\n `;\r\n consumerDocCard.appendChild(consumerDocCardBody);\r\n column2.appendChild(consumerDocCard);\r\n // Save Cancel Btn //\r\n const saveBtn = button.build({\r\n id: 'saveBtn',\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n callback: () => {saveData()}\r\n });\r\n const saveCloseBtn = button.build({\r\n id: 'saveCloseBtn',\r\n text: 'Save & Close',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n callback: () => {saveData(true)}\r\n });\r\n const cancelBtn = button.build({\r\n id: 'cancelBtn',\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: () => {\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn()\r\n TRANS_myRoute.init()\r\n }\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n if (!ro) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(saveCloseBtn);\r\n column2.appendChild(btnWrap);\r\n }\r\n column2.appendChild(cancelBtn)\r\n cancelBtn.style.width = '100%';\r\n /////////////////////\r\n DOM.ACTIONCENTER.appendChild(column1)\r\n DOM.ACTIONCENTER.appendChild(column2)\r\n buildConsumerCards()\r\n eventListeners()\r\n }\r\n\r\n function eventListeners() {\r\n function odoCheck() {\r\n const startVal = parseInt(routeStartOdo.querySelector('input').value)\r\n const endVal = parseInt(routeEndOdo.querySelector('input').value)\r\n //Odo can be null, check to see if they are numbers (NaN when they are null)\r\n if (typeof(startVal) !== 'number' && typeof(endVal) !== 'number') {\r\n routeStartOdo.classList.remove('error');\r\n routeEndOdo.classList.remove('error')\r\n return\r\n }\r\n\r\n const dif = endVal - startVal;\r\n if (dif < 0) {\r\n routeStartOdo.classList.add('error');\r\n routeEndOdo.classList.add('error')\r\n } else {\r\n routeStartOdo.classList.remove('error');\r\n routeEndOdo.classList.remove('error')\r\n }\r\n }\r\n\r\n routeStartInput.addEventListener('click', event => {\r\n event.target.value = UTIL.getCurrentTime();\r\n routeStartInput.dispatchEvent(new Event('change'))\r\n }, {once: true})\r\n routeEndInput.addEventListener('click', event => {\r\n event.target.value = UTIL.getCurrentTime();\r\n routeEndInput.dispatchEvent(new Event('change'))\r\n }, {once: true})\r\n\r\n routeStartInput.addEventListener('change', event => {\r\n const totalHours = UTIL.calculateTotalHours(routeStartInput.firstChild.value, routeEndInput.querySelector('input').value)\r\n if (totalHours < 0) {\r\n routeStartInput.classList.add('error')\r\n } else {\r\n routeStartInput.classList.remove('error')\r\n routeEndInput.classList.remove('error')\r\n }\r\n\r\n })\r\n routeEndInput.addEventListener('change', event => {\r\n const totalHours = UTIL.calculateTotalHours(routeStartInput.querySelector('input').value, routeEndInput.firstChild.value)\r\n if (totalHours < 0) {\r\n routeEndInput.classList.add('error')\r\n } else {\r\n routeStartInput.classList.remove('error')\r\n routeEndInput.classList.remove('error')\r\n }\r\n })\r\n routeStartOdo.addEventListener('change', () => odoCheck())\r\n routeEndOdo.addEventListener('change', () => odoCheck())\r\n }\r\n\r\n function buildConsumerCards() {\r\n consumersOnRecord.forEach((val,key, map) => {\r\n transportationCard = TRANS_consumerDocCard.createCard(key, val, ro);\r\n consumerDocCardBody.appendChild(transportationCard)\r\n })\r\n }\r\n\r\n function loadData(routeID, routeName, date) {\r\n function cleanData(getTripInformationResult, getTripConsumersResult) {\r\n tripInfo = getTripInformationResult[0];\r\n getTripConsumersResult.forEach(consumer => {\r\n consumer.batchId = tripInfo.batchId; \r\n consumersOnRecord.set(consumer.consumerId, consumer);\r\n // Roster Required Info:\r\n const consumerobj = roster2.buildConsumerCard({\r\n FN: consumer.firstName,\r\n LN: consumer.lastName,\r\n id: consumer.consumerId\r\n });\r\n roster2.addConsumerToActiveConsumers(consumerobj);\r\n })\r\n buildPage({routeName: routeName, date: date});\r\n }\r\n //Get data for the route\r\n const routeInfo = TRANS_routeDocumentationAjax.getRouteInformation(routeID)\r\n const consumerInfo = TRANS_routeDocumentationAjax.getRouteConsumers(routeID)\r\n Promise.all([routeInfo, consumerInfo]).then(val => {\r\n const getTripInformationResult = val[0].getTripInformationResult\r\n const getTripConsumersResult = val[1].getTripConsumersResult\r\n cleanData(getTripInformationResult, getTripConsumersResult);\r\n })\r\n }\r\n function consumerRemoveAction(consumerId) {\r\n consumersOnRecord.delete(consumerId);\r\n consumersToRemove.push(consumerId)\r\n }\r\n function updateConsumerData(data) {\r\n const { consumerId, key, value } = data\r\n consumersOnRecord.get(consumerId)[key] = value;\r\n }\r\n function retrieveConsumerData(consumerId, key) {\r\n return consumersOnRecord.get(consumerId)[key];\r\n }\r\n function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case \"miniRosterDone\": {\r\n const selectedConsumers = roster2.getSelectedConsumersMiniRoster()\r\n selectedConsumers.forEach(async consumer => {\r\n const consumerDetails = (await TRANS_routeDocumentationAjax.getConsumerDetails(consumer.id)).getConsumerDetailsResult[0];\r\n consumersOnRecord.set(consumer.id, consumerDetails);\r\n consumersOnRecord.get(consumer.id)['riderStatus'] = '';\r\n const transportationCard = TRANS_consumerDocCard.createCard(consumer.id, consumerDetails);\r\n consumerDocCardBody.appendChild(transportationCard)\r\n })\r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n DOM.toggleNavLayout();\r\n roster2.clearSelectedConsumers();\r\n break;\r\n }\r\n }\r\n }\r\n function saveData(closeTrip = false) {\r\n pendingSave.show('Saving Route...')\r\n // debugger\r\n try {\r\n // Check for errors first\r\n const errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) throw \"err exist\"\r\n\r\n const startTime = routeStartInput.querySelector('input').value\r\n const endTime = routeEndInput.querySelector('input').value\r\n const odoStart = routeStartOdo.querySelector('input').value\r\n const odoEnd = routeEndOdo.querySelector('input').value\r\n const dbCallArr = []\r\n const tripDetailSubmit = {\r\n token: $.session.Token,\r\n tripsCompletedId: tripsCompletedId,\r\n odometerStart: odoStart,\r\n odometerStop: odoEnd,\r\n startTime: startTime,\r\n endTime: endTime\r\n }\r\n dbCallArr.push(TRANS_routeDocumentationAjax.updateTripDetails(tripDetailSubmit))\r\n consumersOnRecord.forEach((val,key,map) => {\r\n const { alternateAddress, completedDetailId, directions, pickupOrder, notes, riderStatus, scheduledTime, specialInstructions, totalTravelTime } = val\r\n const consumerDetailSubmit = {\r\n token: $.session.Token,\r\n tripDetailId: completedDetailId ? completedDetailId : '',\r\n tripsCompletedId: tripsCompletedId,\r\n consumerId: key,\r\n alternateAddress: alternateAddress ? alternateAddress : '',\r\n scheduledTime: scheduledTime ? scheduledTime : '',\r\n totalTravelTime: totalTravelTime ? totalTravelTime : '',\r\n riderStatus: riderStatus,\r\n specialInstructions: specialInstructions ? specialInstructions : '',\r\n directions: directions ? directions : '',\r\n pickupOrder: pickupOrder ? pickupOrder : '',\r\n notes: notes ? notes: '',\r\n };\r\n dbCallArr.push(TRANS_routeDocumentationAjax.insertUpdateTripConsumers(consumerDetailSubmit))\r\n })\r\n consumersToRemove.forEach(consumer => {\r\n const data = {\r\n tripsCompletedId: tripsCompletedId,\r\n consumerId: consumer\r\n }\r\n dbCallArr.push(TRANS_routeDocumentationAjax.deleteConsumerFromTrip(data))\r\n })\r\n Promise.all(dbCallArr).then(() => {\r\n pendingSave.fulfill('Save Successful');\r\n setTimeout(() => {\r\n successfulSave.hide()\r\n if (closeTrip) {\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn()\r\n TRANS_myRoute.init()\r\n }\r\n }, 1000);\r\n })\r\n } catch (error) {\r\n if (error === 'err exist') {\r\n pendingSave.reject('Failed to save. Please correct any errors that exist on the route.')\r\n console.error('Failing due to odometer or time overlap. Check odometer and time overlaps.')\r\n } else {\r\n pendingSave.reject('Failed to save. Please try again.')\r\n }\r\n console.error(error)\r\n setTimeout(() => failSave.hide(), 3000)\r\n }\r\n\r\n }\r\n /**\r\n *\r\n * @param {object} opts Options\r\n * @param {string} opts.date Selected Date\r\n * @param {string} opts.routeID Selected Route ID\r\n * @param {string} opts.routeName Selected Route ID\r\n * @param {boolean} [opts.ro] Read Only. True when batched, future date is selected, or based on permissions?\r\n */\r\n function init(opts) {\r\n const { date, routeID, routeName, readOnly, vehicleInfoId} = opts\r\n ro = readOnly\r\n // No Update permission = read only\r\n if ($.session.transportationUpdate === false) {\r\n ro = true;\r\n }\r\n // Reset Values:\r\n consumersOnRecord.clear();\r\n consumersToRemove = [];\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(\"routeDocumentation\");\r\n tripsCompletedId = routeID;\r\n dateOfService = date;\r\n routeVehicle = vehicleInfoId;\r\n loadData(routeID, routeName, date)\r\n // Mini roster\r\n if (!ro) {\r\n roster2.miniRosterinit(null, {hideDate: true})\r\n roster2.updateSelectedDate(date)\r\n }\r\n }\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n consumerRemoveAction,\r\n updateConsumerData,\r\n retrieveConsumerData\r\n };\r\n})();\r\n","const TRANS_routeDocumentationAjax = (function() {\r\n\r\n function getRouteInformation(tripCompletedId) {\r\n const data = {\r\n token: $.session.Token,\r\n tripsCompletedId: tripCompletedId\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getTripInformation/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function getRouteConsumers(tripCompletedId) {\r\n const data = {\r\n token: $.session.Token,\r\n tripsCompletedId: tripCompletedId\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getTripConsumers/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function getConsumerDetails(consumerId) {\r\n const data = {\r\n token: $.session.Token,\r\n consumerId: consumerId\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getConsumerDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function updateTripDetails(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateTripDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function insertUpdateTripConsumers(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertUpdateTripConsumers/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n function deleteConsumerFromTrip(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteConsumerFromTrip/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n return {\r\n getRouteInformation,\r\n getRouteConsumers,\r\n getConsumerDetails,\r\n updateTripDetails,\r\n insertUpdateTripConsumers,\r\n deleteConsumerFromTrip\r\n }\r\n})();"]}